w-dispatch-ai 1.0.22 → 1.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +627 -581
  2. package/dist/w-dispatch-ai.umd.js +2 -2
  3. package/dist/w-dispatch-ai.umd.js.map +1 -1
  4. package/docs/WDispatchAi.mjs.html +10 -4
  5. package/docs/adapters.mjs.html +2 -2
  6. package/docs/budgetFor.mjs.html +2 -2
  7. package/docs/buildValidator.mjs.html +2 -2
  8. package/docs/castPintOr.mjs.html +2 -2
  9. package/docs/dfTimeoutMs.mjs.html +2 -2
  10. package/docs/dispatchAi.mjs.html +2 -2
  11. package/docs/dispatchAiFallback.mjs.html +2 -2
  12. package/docs/dispatchAiWkf.mjs.html +2 -2
  13. package/docs/dispatchAntigravity.mjs.html +2 -2
  14. package/docs/dispatchApiOpenaiCompat.mjs.html +2 -2
  15. package/docs/dispatchApiOpenaiResponses.mjs.html +2 -2
  16. package/docs/dispatchClaude.mjs.html +2 -2
  17. package/docs/dispatchCodex.mjs.html +2 -2
  18. package/docs/dispatchOpencode.mjs.html +2 -2
  19. package/docs/getCliArgs.mjs.html +2 -2
  20. package/docs/getErrorResult.mjs.html +2 -2
  21. package/docs/getErrorType.mjs.html +2 -2
  22. package/docs/global.html +10615 -3368
  23. package/docs/index.html +2 -2
  24. package/docs/quota_dfQuotaTimeoutMs.mjs.html +99 -0
  25. package/docs/quota_fetchQuotaJson.mjs.html +348 -0
  26. package/docs/quota_fromCodexUsageHttp.mjs.html +335 -0
  27. package/docs/quota_getQuotaAntigravity.mjs.html +463 -0
  28. package/docs/quota_getQuotaClaude.mjs.html +457 -0
  29. package/docs/quota_getQuotaCodex.mjs.html +515 -0
  30. package/docs/quota_readJsonOrNull.mjs.html +113 -0
  31. package/docs/quota_toQuotaLabel.mjs.html +146 -0
  32. package/docs/quota_toQuotaResult.mjs.html +214 -0
  33. package/docs/quota_toQuotaScopedLabel.mjs.html +117 -0
  34. package/docs/quota_toQuotaWindow.mjs.html +239 -0
  35. package/docs/readEnvFile.mjs.html +2 -2
  36. package/docs/resolveProviders.mjs.html +2 -2
  37. package/docs/wkf_callAiWithFallback.mjs.html +2 -2
  38. package/docs/wkf_createFileStore.mjs.html +2 -2
  39. package/docs/wkf_createUsageCounter.mjs.html +2 -2
  40. package/docs/wkf_extractJsonLoose.mjs.html +2 -2
  41. package/docs/wkf_noSideEffectPrefix.mjs.html +2 -2
  42. package/docs/wkf_runFanout.mjs.html +2 -2
  43. package/docs/wkf_runFanoutPipeline.mjs.html +2 -2
  44. package/docs/wkf_runRolePipeline.mjs.html +2 -2
  45. package/docs/wkf_salvageTruncatedArray.mjs.html +2 -2
  46. package/package.json +2 -2
  47. package/src/WDispatchAi.mjs +8 -2
  48. package/src/quota/dfQuotaTimeoutMs.mjs +27 -0
  49. package/src/quota/fetchQuotaJson.mjs +276 -0
  50. package/src/quota/fromCodexUsageHttp.mjs +263 -0
  51. package/src/quota/getQuotaAntigravity.mjs +391 -0
  52. package/src/quota/getQuotaClaude.mjs +385 -0
  53. package/src/quota/getQuotaCodex.mjs +443 -0
  54. package/src/quota/readJsonOrNull.mjs +41 -0
  55. package/src/quota/toQuotaLabel.mjs +74 -0
  56. package/src/quota/toQuotaResult.mjs +142 -0
  57. package/src/quota/toQuotaScopedLabel.mjs +45 -0
  58. package/src/quota/toQuotaWindow.mjs +167 -0
  59. package/test/tools/fakeCliForTest.mjs +4 -3
  60. package/test/tools/fakeServerForQuotaTest.mjs +171 -0
  61. package/test/unit-WDispatchAi.test.mjs +11 -2
  62. package/test/unit-fetchQuotaJson.test.mjs +70 -0
  63. package/test/unit-fromCodexUsageHttp.test.mjs +76 -0
  64. package/test/unit-getQuotaAntigravity.test.mjs +123 -0
  65. package/test/unit-getQuotaClaude.test.mjs +137 -0
  66. package/test/unit-getQuotaCodex.test.mjs +191 -0
  67. package/test/unit-readJsonOrNull.test.mjs +44 -0
  68. package/test/unit-toQuotaLabel.test.mjs +43 -0
  69. package/test/unit-toQuotaResult.test.mjs +53 -0
  70. package/test/unit-toQuotaWindow.test.mjs +73 -0
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * w-dispatch-ai v1.0.22
2
+ * w-dispatch-ai v1.0.23
3
3
  * (c) 2018-2021 yuda-lyu(semisphere)
4
4
  * Released under the MIT License.
5
5
  */
6
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("child_process"),require("path"),require("fs")):"function"==typeof define&&define.amd?define(["child_process","path","fs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["w-dispatch-ai"]=t(e.child_process,e.path,e.fs)}(this,function(e,t,r){"use strict";var n="object"==typeof global&&global&&global.Object===Object&&global,o="object"==typeof self&&self&&self.Object===Object&&self,i=n||o||Function("return this")(),u=i.Symbol,l=Object.prototype,a=l.hasOwnProperty,s=l.toString,c=u?u.toStringTag:void 0;var f=Object.prototype.toString;var d=u?u.toStringTag:void 0;function p(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":d&&d in Object(e)?function(e){var t=a.call(e,c),r=e[c];try{e[c]=void 0;var n=!0}catch(e){}var o=s.call(e);return n&&(t?e[c]=r:delete e[c]),o}(e):function(e){return f.call(e)}(e)}function y(e){return null!=e&&"object"==typeof e}function h(e){return y(e)&&"[object Arguments]"==p(e)}var g=Object.prototype,v=g.hasOwnProperty,m=g.propertyIsEnumerable,b=h(function(){return arguments}())?h:function(e){return y(e)&&v.call(e,"callee")&&!m.call(e,"callee")},k=b,j=Array.isArray;var O="object"==typeof exports&&exports&&!exports.nodeType&&exports,_=O&&"object"==typeof module&&module&&!module.nodeType&&module,w=_&&_.exports===O?i.Buffer:void 0,S=(w?w.isBuffer:void 0)||function(){return!1},x=/^(?:0|[1-9]\d*)$/;function E(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&x.test(e))&&e>-1&&e%1==0&&e<t}function A(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var T={};function I(e){return function(t){return e(t)}}T["[object Float32Array]"]=T["[object Float64Array]"]=T["[object Int8Array]"]=T["[object Int16Array]"]=T["[object Int32Array]"]=T["[object Uint8Array]"]=T["[object Uint8ClampedArray]"]=T["[object Uint16Array]"]=T["[object Uint32Array]"]=!0,T["[object Arguments]"]=T["[object Array]"]=T["[object ArrayBuffer]"]=T["[object Boolean]"]=T["[object DataView]"]=T["[object Date]"]=T["[object Error]"]=T["[object Function]"]=T["[object Map]"]=T["[object Number]"]=T["[object Object]"]=T["[object RegExp]"]=T["[object Set]"]=T["[object String]"]=T["[object WeakMap]"]=!1;var M="object"==typeof exports&&exports&&!exports.nodeType&&exports,N=M&&"object"==typeof module&&module&&!module.nodeType&&module,D=N&&N.exports===M&&n.process,$=function(){try{var e=N&&N.require&&N.require("util").types;return e||D&&D.binding&&D.binding("util")}catch(e){}}(),P=$&&$.isTypedArray,U=P?I(P):function(e){return y(e)&&A(e.length)&&!!T[p(e)]},L=Object.prototype.hasOwnProperty;function R(e,t){var r=j(e),n=!r&&k(e),o=!r&&!n&&S(e),i=!r&&!n&&!o&&U(e),u=r||n||o||i,l=u?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],a=l.length;for(var s in e)!t&&!L.call(e,s)||u&&("length"==s||o&&("offset"==s||"parent"==s)||i&&("buffer"==s||"byteLength"==s||"byteOffset"==s)||E(s,a))||l.push(s);return l}var C=Object.prototype;function F(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||C)}function z(e,t){return function(r){return e(t(r))}}var V=z(Object.keys,Object),B=Object.prototype.hasOwnProperty;function J(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function K(e){if(!J(e))return!1;var t=p(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Y(e){return null!=e&&A(e.length)&&!K(e)}function W(e){return Y(e)?R(e):function(e){if(!F(e))return V(e);var t=[];for(var r in Object(e))B.call(e,r)&&"constructor"!=r&&t.push(r);return t}(e)}function H(e){return"symbol"==typeof e||y(e)&&"[object Symbol]"==p(e)}var q=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,G=/^\w*$/;function Z(e,t){if(j(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!H(e))||(G.test(e)||!q.test(e)||null!=t&&e in Object(t))}var Q,X=i["__core-js_shared__"],ee=(Q=/[^.]+$/.exec(X&&X.keys&&X.keys.IE_PROTO||""))?"Symbol(src)_1."+Q:"";var te=Function.prototype.toString;function re(e){if(null!=e){try{return te.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var ne=/^\[object .+?Constructor\]$/,oe=Function.prototype,ie=Object.prototype,ue=oe.toString,le=ie.hasOwnProperty,ae=RegExp("^"+ue.call(le).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function se(e){return!(!J(e)||(t=e,ee&&ee in t))&&(K(e)?ae:ne).test(re(e));var t}function ce(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return se(r)?r:void 0}var fe=ce(Object,"create");var de=Object.prototype.hasOwnProperty;var pe=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 he(e,t){return e===t||e!=e&&t!=t}function ge(e,t){for(var r=e.length;r--;)if(he(e[r][0],t))return r;return-1}ye.prototype.clear=function(){this.__data__=fe?fe(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(fe){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return de.call(t,e)?t[e]:void 0},ye.prototype.has=function(e){var t=this.__data__;return fe?void 0!==t[e]:pe.call(t,e)},ye.prototype.set=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=fe&&void 0===t?"__lodash_hash_undefined__":t,this};var ve=Array.prototype.splice;function me(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])}}me.prototype.clear=function(){this.__data__=[],this.size=0},me.prototype.delete=function(e){var t=this.__data__,r=ge(t,e);return!(r<0)&&(r==t.length-1?t.pop():ve.call(t,r,1),--this.size,!0)},me.prototype.get=function(e){var t=this.__data__,r=ge(t,e);return r<0?void 0:t[r][1]},me.prototype.has=function(e){return ge(this.__data__,e)>-1},me.prototype.set=function(e,t){var r=this.__data__,n=ge(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this};var be=ce(i,"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 je(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}je.prototype.clear=function(){this.size=0,this.__data__={hash:new ye,map:new(be||me),string:new ye}},je.prototype.delete=function(e){var t=ke(this,e).delete(e);return this.size-=t?1:0,t},je.prototype.get=function(e){return ke(this,e).get(e)},je.prototype.has=function(e){return ke(this,e).has(e)},je.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 Oe(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var r=function(){var n=arguments,o=t?t.apply(this,n):n[0],i=r.cache;if(i.has(o))return i.get(o);var u=e.apply(this,n);return r.cache=i.set(o,u)||i,u};return r.cache=new(Oe.Cache||je),r}Oe.Cache=je;var _e,we,Se,xe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ee=/\\(\\)?/g,Ae=(_e=function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(xe,function(e,r,n,o){t.push(n?o.replace(Ee,"$1"):r||e)}),t},we=Oe(_e,function(e){return 500===Se.size&&Se.clear(),e}),Se=we.cache,we),Te=Ae;function Ie(e,t){for(var r=-1,n=null==e?0:e.length,o=Array(n);++r<n;)o[r]=t(e[r],r,e);return o}var Me=u?u.prototype:void 0,Ne=Me?Me.toString:void 0;function De(e){if("string"==typeof e)return e;if(j(e))return Ie(e,De)+"";if(H(e))return Ne?Ne.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function $e(e){return null==e?"":De(e)}function Pe(e,t){return j(e)?e:Z(e,t)?[e]:Te($e(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 Le(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 Re(e,t,r){var n=null==e?void 0:Le(e,t);return void 0===n?r:n}function Ce(e){var t=this.__data__=new me(e);this.size=t.size}Ce.prototype.clear=function(){this.__data__=new me,this.size=0},Ce.prototype.delete=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r},Ce.prototype.get=function(e){return this.__data__.get(e)},Ce.prototype.has=function(e){return this.__data__.has(e)},Ce.prototype.set=function(e,t){var r=this.__data__;if(r instanceof me){var n=r.__data__;if(!be||n.length<199)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new je(n)}return r.set(e,t),this.size=r.size,this};var Fe=function(){try{var e=ce(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),ze=Fe;function Ve(e,t,r){"__proto__"==t&&ze?ze(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}var Be=Object.prototype.hasOwnProperty;function Je(e,t,r){var n=e[t];Be.call(e,t)&&he(n,r)&&(void 0!==r||t in e)||Ve(e,t,r)}function Ke(e,t,r,n){var o=!r;r||(r={});for(var i=-1,u=t.length;++i<u;){var l=t[i],a=n?n(r[l],e[l],l,r,e):void 0;void 0===a&&(a=e[l]),o?Ve(r,l,a):Je(r,l,a)}return r}var Ye=Object.prototype.hasOwnProperty;function We(e){if(!J(e))return function(e){var t=[];if(null!=e)for(var r in Object(e))t.push(r);return t}(e);var t=F(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)?R(e,!0):We(e)}var qe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ge=qe&&"object"==typeof module&&module&&!module.nodeType&&module,Ze=Ge&&Ge.exports===qe?i.Buffer:void 0,Qe=Ze?Ze.allocUnsafe:void 0;function Xe(){return[]}var et=Object.prototype.propertyIsEnumerable,tt=Object.getOwnPropertySymbols,rt=tt?function(e){return null==e?[]:(e=Object(e),function(e,t){for(var r=-1,n=null==e?0:e.length,o=0,i=[];++r<n;){var u=e[r];t(u,r,e)&&(i[o++]=u)}return i}(tt(e),function(t){return et.call(e,t)}))}:Xe,nt=rt;function ot(e,t){for(var r=-1,n=t.length,o=e.length;++r<n;)e[o+r]=t[r];return e}var it=z(Object.getPrototypeOf,Object),ut=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)ot(t,nt(e)),e=it(e);return t}:Xe,lt=ut;function at(e,t,r){var n=t(e);return j(e)?n:ot(n,r(e))}function st(e){return at(e,W,nt)}function ct(e){return at(e,He,lt)}var ft=ce(i,"DataView"),dt=ce(i,"Promise"),pt=ce(i,"Set"),yt=ce(i,"WeakMap"),ht="[object Map]",gt="[object Promise]",vt="[object Set]",mt="[object WeakMap]",bt="[object DataView]",kt=re(ft),jt=re(be),Ot=re(dt),_t=re(pt),wt=re(yt),St=p;(ft&&St(new ft(new ArrayBuffer(1)))!=bt||be&&St(new be)!=ht||dt&&St(dt.resolve())!=gt||pt&&St(new pt)!=vt||yt&&St(new yt)!=mt)&&(St=function(e){var t=p(e),r="[object Object]"==t?e.constructor:void 0,n=r?re(r):"";if(n)switch(n){case kt:return bt;case jt:return ht;case Ot:return gt;case _t:return vt;case wt:return mt}return t});var xt=St,Et=Object.prototype.hasOwnProperty;var At=i.Uint8Array;function Tt(e){var t=new e.constructor(e.byteLength);return new At(t).set(new At(e)),t}var It=/\w*$/;var Mt=u?u.prototype:void 0,Nt=Mt?Mt.valueOf:void 0;function Dt(e,t,r){var n,o=e.constructor;switch(t){case"[object ArrayBuffer]":return Tt(e);case"[object Boolean]":case"[object Date]":return new o(+e);case"[object DataView]":return function(e,t){var r=t?Tt(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?Tt(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}(e,r);case"[object Map]":case"[object Set]":return new o;case"[object Number]":case"[object String]":return new o(e);case"[object RegExp]":return function(e){var t=new e.constructor(e.source,It.exec(e));return t.lastIndex=e.lastIndex,t}(e);case"[object Symbol]":return n=e,Nt?Object(Nt.call(n)):{}}}var $t=Object.create,Pt=function(){function e(){}return function(t){if(!J(t))return{};if($t)return $t(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}(),Ut=Pt;var Lt=$&&$.isMap,Rt=Lt?I(Lt):function(e){return y(e)&&"[object Map]"==xt(e)};var Ct=$&&$.isSet,Ft=Ct?I(Ct):function(e){return y(e)&&"[object Set]"==xt(e)},zt="[object Arguments]",Vt="[object Function]",Bt="[object Object]",Jt={};function Kt(e,t,r,n,o,i){var u,l=1&t,a=2&t,s=4&t;if(r&&(u=o?r(e,n,o,i):r(e)),void 0!==u)return u;if(!J(e))return e;var c=j(e);if(c){if(u=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),!l)return function(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}(e,u)}else{var f=xt(e),d=f==Vt||"[object GeneratorFunction]"==f;if(S(e))return function(e,t){if(t)return e.slice();var r=e.length,n=Qe?Qe(r):new e.constructor(r);return e.copy(n),n}(e,l);if(f==Bt||f==zt||d&&!o){if(u=a||d?{}:function(e){return"function"!=typeof e.constructor||F(e)?{}:Ut(it(e))}(e),!l)return a?function(e,t){return Ke(e,lt(e),t)}(e,function(e,t){return e&&Ke(t,He(t),e)}(u,e)):function(e,t){return Ke(e,nt(e),t)}(e,function(e,t){return e&&Ke(t,W(t),e)}(u,e))}else{if(!Jt[f])return o?e:{};u=Dt(e,f,l)}}i||(i=new Ce);var p=i.get(e);if(p)return p;i.set(e,u),Ft(e)?e.forEach(function(n){u.add(Kt(n,t,r,n,e,i))}):Rt(e)&&e.forEach(function(n,o){u.set(o,Kt(n,t,r,o,e,i))});var y=c?void 0:(s?a?ct:st:a?He:W)(e);return function(e,t){for(var r=-1,n=null==e?0:e.length;++r<n&&!1!==t(e[r],r,e););}(y||e,function(n,o){y&&(n=e[o=n]),Je(u,o,Kt(n,t,r,o,e,i))}),u}function Yt(e,t){return t.length<2?e:Le(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))}Jt[zt]=Jt["[object Array]"]=Jt["[object ArrayBuffer]"]=Jt["[object DataView]"]=Jt["[object Boolean]"]=Jt["[object Date]"]=Jt["[object Float32Array]"]=Jt["[object Float64Array]"]=Jt["[object Int8Array]"]=Jt["[object Int16Array]"]=Jt["[object Int32Array]"]=Jt["[object Map]"]=Jt["[object Number]"]=Jt[Bt]=Jt["[object RegExp]"]=Jt["[object Set]"]=Jt["[object String]"]=Jt["[object Symbol]"]=Jt["[object Uint8Array]"]=Jt["[object Uint8ClampedArray]"]=Jt["[object Uint16Array]"]=Jt["[object Uint32Array]"]=!0,Jt["[object Error]"]=Jt[Vt]=Jt["[object WeakMap]"]=!1;var Wt=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&&!Wt.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 qt=Function.prototype,Gt=Object.prototype,Zt=qt.toString,Qt=Gt.hasOwnProperty,Xt=Zt.call(Object);function er(e){return function(e){if(!y(e)||"[object Object]"!=p(e))return!1;var t=it(e);if(null===t)return!0;var r=Qt.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&Zt.call(r)==Xt}(e)?void 0:e}var tr=u?u.isConcatSpreadable:void 0;function rr(e){return j(e)||k(e)||!!(tr&&e&&e[tr])}function nr(e,t,r,n,o){var i=-1,u=e.length;for(r||(r=rr),o||(o=[]);++i<u;){var l=e[i];t>0&&r(l)?t>1?nr(l,t-1,r,n,o):ot(o,l):n||(o[o.length]=l)}return o}function or(e){return(null==e?0:e.length)?nr(e,1):[]}var ir=Math.max;function ur(e){return e}var lr=ze?function(e,t){return ze(e,"toString",{configurable:!0,enumerable:!1,value:(r=t,function(){return r}),writable:!0});var r}:ur,ar=lr,sr=Date.now;var cr=function(e){var t=0,r=0;return function(){var n=sr(),o=16-(n-r);if(r=n,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(ar),fr=cr;var dr=function(e){return fr(function(e,t,r){return t=ir(void 0===t?e.length-1:t,0),function(){for(var n=arguments,o=-1,i=ir(n.length-t,0),u=Array(i);++o<i;)u[o]=n[t+o];o=-1;for(var l=Array(t+1);++o<t;)l[o]=n[o];return l[t]=r(u),function(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}(e,this,l)}}(e,void 0,or),e+"")}(function(e,t){var r={};if(null==e)return r;var n=!1;t=Ie(t,function(t){return t=Pe(t,e),n||(n=t.length>1),t}),Ke(e,ct(e),r),n&&(r=Kt(r,7,er));for(var o=t.length;o--;)Ht(r,t[o]);return r}),pr=dr;function yr(e){return"[object Object]"===Object.prototype.toString.call(e)}function hr(e){return"[object String]"===Object.prototype.toString.call(e)}function gr(e){return!(!hr(e)||""===e)}function vr(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}function mr(e){return e!=e}function br(e){let t=!1;if(gr(e))t=!isNaN(Number(e));else if(function(e){return"[object Number]"===Object.prototype.toString.call(e)}(e)){if(mr(e))return!1;t=!0}return t}function kr(e=10){br(e)||(e=10);let t=vr();return setTimeout(function(){t.resolve()},e),t}var jr=/\s/;var Or=/^\s+/;function _r(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&jr.test(e.charAt(t)););return t}(e)+1).replace(Or,""):e}var wr=/^[-+]0x[0-9a-f]+$/i,Sr=/^0b[01]+$/i,xr=/^0o[0-7]+$/i,Er=parseInt;function Ar(e){if("number"==typeof e)return e;if(H(e))return NaN;if(J(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=J(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=_r(e);var r=Sr.test(e);return r||xr.test(e)?Er(e.slice(2),r?2:8):wr.test(e)?NaN:+e}var Tr=1/0;function Ir(e){return e?(e=Ar(e))===Tr||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function Mr(e){var t=Ir(e),r=t%1;return t==t?r?t-r:t:0}var Nr=i.isFinite,Dr=Math.min;var $r=function(e){var t=Math[e];return function(e,r){if(e=Ar(e),(r=null==r?0:Dr(Mr(r),292))&&Nr(e)){var n=($e(e)+"e").split("e");return+((n=($e(t(n[0]+"e"+(+n[1]+r)))+"e").split("e"))[0]+"e"+(+n[1]-r))}return t(e)}}("round"),Pr=$r;function Ur(e){if(!br(e))return 0;return Ir(e)}function Lr(e){if(!br(e))return 0;e=Ur(e);let t=Pr(e);return"0"===String(t)?0:t}function Rr(e){return"[object Array]"===Object.prototype.toString.call(e)}function Cr(e){let t=Object.prototype.toString.call(e);return"[object Function]"===t||"[object AsyncFunction]"===t}function Fr(e){return!!br(e)&&(e=Ur(e),"number"==typeof(t=e)&&t==Mr(t));var t}function zr(e){if(!Fr(e))return!1;return Lr(e)>0}function Vr(e){if(!Fr(e))return!1;return Lr(e)>=0}function Br(e,t){return gr(e)&&Vr(t)?0===(t=Lr(t))?"":e.substring(0,t):""}function Jr(e,t){if(!gr(e))return"";if(!Vr(t))return"";if(0===(t=Lr(t)))return"";let r=e.length-t;return r<0&&(r=0),e.substring(r,r+t)}function Kr(e,t){return gr(e)&&Vr(t)?0===(t=Lr(t))?e:Jr(e,e.length-t):""}function Yr(e,t,r={}){if(!gr(e))return"";if(!Vr(t))return e;if(t=Lr(t),e.length<=t)return e;let n=Re(r,"funWithMsg"),o="";if(Cr(n)){let r=n(e,t);gr(r)&&(o=r)}return Br(e,t)+`...${o}`}function Wr(e,t={}){let r=Re(t,"fs"),n=!1;try{r.statSync(e),n=!0}catch{n=!1}return n}function Hr(e){return function(e,t={}){let r=Re(t,"fs");return!!Wr(e,{fs:r})&&!r.lstatSync(e).isDirectory()&&!r.lstatSync(e).isSymbolicLink()}(e,{fs:r})}function qr(e,t={}){let r=null,n=Re(t,"fs"),o="";try{o=n.readFileSync(e,"utf8")}catch(e){r=e}return null!==r?{error:r}:{success:o}}function Gr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Zr=e,Qr=Zr.spawn,Xr=Zr.exec;function en(e,t,r){var n={};try{Object.keys(e).forEach(function(r){e[r].forEach(function(e){n[e]||(tn(e,t),n[e]=1)}),n[r]||(tn(r,t),n[r]=1)})}catch(e){if(r)return r(e);throw e}if(r)return r()}function tn(e,t){try{process.kill(parseInt(e,10),t)}catch(e){if("ESRCH"!==e.code)throw e}}function rn(e,t,r,n,o){var i=n(e),u="";i.stdout.on("data",function(e){e=e.toString("ascii");u+=e});i.on("close",function(i){delete r[e],0==i?u.match(/\d+/g).forEach(function(i){i=parseInt(i,10),t[e].push(i),t[i]=[],r[i]=1,rn(i,t,r,n,o)}):0==Object.keys(r).length&&o()})}var nn=Gr(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":Xr("taskkill /pid "+e+" /T /F",r);break;case"darwin":rn(e,n,o,function(e){return Qr("pgrep",["-P",e])},function(){en(n,t,r)});break;default:rn(e,n,o,function(e){return Qr("ps",["-o","pid","--no-headers","--ppid",e])},function(){en(n,t,r)})}});function on(e){let n=Re(qr(e,{fs:r}),"success","");if(!gr(n))return null;let o=n.match(/%dp0%\\(node_modules\\[^"]+)"/i);if(!o)return null;let i=t.dirname(e),u=t.join(i,o[1]);return Hr(u)?u:null}function un(r,n){if("win32"!==process.platform)return{file:r,args:n};let o=function(r){if("win32"!==process.platform)return r;if(/\.(cmd|exe|bat|ps1)$/i.test(r))return r;if(t.isAbsolute(r))return r;try{let t=e.execFileSync("where",[r],{encoding:"utf8",timeout:5e3,windowsHide:!0,shell:!1,stdio:["ignore","pipe","ignore"]}).trim().split(/\r?\n/),n=t.find(e=>/\.cmd$/i.test(e));return n||(t.find(e=>/\.exe$/i.test(e))||t[0]||r)}catch{return r}}(r);if(/\.exe$/i.test(o))return{file:o,args:n};if(/\.(cmd|bat)$/i.test(o)){let e=on(o);if(e)return/\.exe$/i.test(e)?{file:e,args:n}:{file:process.execPath,args:[e,...n]};let t=n.map(e=>`"${e.replace(/(\\*)"/g,'$1$1\\"').replace(/(\\*)$/,"$1$1")}"`.replace(/[()%!^"<>&|]/g,"^$&")),r=`${i=o,i.replace(/[()%!^"<>&|;, ]/g,"^$&")} ${t.join(" ")}`;return{file:process.env.comspec||process.env.COMSPEC||"cmd.exe",args:["/d","/s","/c",`"${r}"`],opt:{windowsVerbatimArguments:!0}}}var i;return{file:o,args:n}}let ln={funWithMsg:e=>`(truncated, total ${e.length} chars)`};function an(t,r=[],n={}){let{timeoutMs:o=12e4,cwd:i=process.cwd(),input:u,validate:l,maxBuffer:a=10485760,onStdout:s,onStderr:c,env:f}=n,d=function(e){if(Cr(e))return e;if(!gr(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(!gr(e)||""===e.trim())return!1}else if("json"===r)try{JSON.parse(e)}catch{return!1}else if("min:"===Br(r,4)){let t=Kr(r,4);if(!br(t))return!1;let n=Lr(t);if(!gr(e)||e.length<n)return!1}return!0}}(l),p=Date.now(),y=vr(),h={...process.env,PYTHONIOENCODING:"utf-8"};if(void 0!==f){if("win32"===process.platform){let e=Object.keys(f).map(e=>e.toLowerCase());for(let t of Object.keys(h))e.includes(t.toLowerCase())&&delete h[t]}h={...h,...f}}let g=un(t,r),v=e.spawn(g.file,g.args,{cwd:i,stdio:["pipe","pipe","pipe"],windowsHide:!0,env:h,...g.opt}),m="",b="",k=new TextDecoder("utf-8"),j=new TextDecoder("utf-8"),O=!1,_=!1;v.stdout.on("data",e=>{let t=k.decode(e,{stream:!0});t&&(Cr(s)&&s(t),m.length<a&&(m+=t))}),v.stderr.on("data",e=>{let t=j.decode(e,{stream:!0});t&&(Cr(c)&&c(t),b.length<a&&(b+=t))}),v.stdin.on("error",()=>{}),void 0!==u&&v.stdin.write(u,"utf8"),v.stdin.end();let w=setTimeout(()=>{O||(_=!0,function(e){let t=vr();return nn(Number(e),"SIGKILL",r=>{r?t.reject(r):t.resolve(`pid[${e}] killed`)}),t}(v.pid).catch(()=>{}),setTimeout(()=>{O||(O=!0,y.resolve({ok:!1,stdout:Yr(m,500,ln),stderr:Yr(b,500,ln),code:null,error:`TIMEOUT after ${o/1e3}s(子進程未能結束)`,durationMs:Date.now()-p,pid:v.pid}))},3e3).unref())},o);return v.on("error",e=>{O||(O=!0,clearTimeout(w),y.resolve({ok:!1,stdout:"",stderr:"",code:null,error:`${e.code||"UNKNOWN"}: ${e.message}`,durationMs:Date.now()-p,pid:v.pid}))}),v.on("close",(e,t)=>{if(O)return;O=!0,clearTimeout(w);let r=k.decode();r&&m.length<a&&(m+=r);let n=j.decode();n&&b.length<a&&(b+=n);let i=Date.now()-p;_?y.resolve({ok:!1,stdout:Yr(m,500,ln),stderr:Yr(b,500,ln),code:e,error:`TIMEOUT after ${o/1e3}s`,durationMs:i,pid:v.pid}):0===e?!d||d(m)?y.resolve({ok:!0,stdout:m,stderr:b,code:0,error:"",durationMs:i,pid:v.pid}):y.resolve({ok:!1,stdout:Yr(m,500,ln),stderr:Yr(b,500,ln),code:0,error:"OUTPUT_VALIDATION_FAILED",durationMs:i,pid:v.pid}):y.resolve({ok:!1,stdout:Yr(m,500,ln),stderr:Yr(b,1e3,ln),code:e,error:t?`Signal: ${t}`:`Exit code ${e}`,durationMs:i,pid:v.pid})}),y}async function sn(e,t=[],r={}){if(!gr(e))return{ok:!1,stdout:"",stderr:"",code:null,error:"command 須為非空字串",durationMs:0,attempts:0};Rr(t)||(t=[]),yr(r)||(r={});let{maxRetries:n=0,retryDelayMs:o=5e3,...i}=r,u=Re(i,"cwd",null);gr(u)?i.cwd=u:i.cwd=process.cwd();let l=Re(i,"input",null);gr(l)?i.input=l:i.input=void 0;let a=Re(i,"env",null);yr(a)?i.env=a:i.env=void 0;let s=Re(i,"validate",null);Cr(s)||gr(s)?i.validate=s:i.validate=void 0;let c=Re(i,"onStdout",null);Cr(c)?i.onStdout=c:i.onStdout=void 0;let f=Re(i,"onStderr",null);Cr(f)?i.onStderr=f:i.onStderr=void 0,n=Vr(n)?Lr(n):0,o=zr(o)?Lr(o):5e3;let d=Re(i,"timeoutMs",null);zr(d)?i.timeoutMs=Lr(d):i.timeoutMs=12e4;let p,y=Re(i,"maxBuffer",null);zr(y)?i.maxBuffer=Lr(y):i.maxBuffer=10485760;let h=0;for(let r=0;r<=n;r++){if(r>0){let e=Math.min(o*r,15e3);await kr(e)}if(p=await an(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 cn(...e){let t=[];for(let r of e)if(Rr(r))for(let e of r)gr(e)&&t.push(e);else gr(r)&&t.push(r);return t}function fn(e,t="params"){return gr(e)||(e="unknown error"),gr(t)||(t="params"),{ok:!1,stdout:"",stderr:"",code:null,error:e,errorType:t,durationMs:0,attempts:0}}function dn(e){let t=Re(e,"error","");return gr(t)?0===t.indexOf("TIMEOUT")?"timeout":t.includes("ENOENT")||t.includes("ENAMETOOLONG")?"spawn":"OUTPUT_VALIDATION_FAILED"===t?"validation":"exec":"exec"}function pn(e){return!0===Re(e,"ok",!1)||gr(Re(e,"errorType",null))?e:{...e,errorType:dn(e)}}function yn(e,t){return zr(e)?Lr(e):t}let hn=3e5,gn=["exe","model","key","provider","agent","config","extraArgs","input","env"];async function vn(e,t={}){if(!gr(e))return fn("prompt must be a non-empty string");let r=Re(t,"exe",null);gr(r)||(r="opencode");let n=Re(t,"model",null),o=Re(t,"agent",null);gr(o)||(o="build");let i=Re(t,"extraArgs",null),u=cn("run",["--agent",o],gr(n)?["-m",n]:[],i),l=Re(t,"env",null);yr(l)||(l=void 0);let a=Re(t,"config",null);yr(a)&&(a=JSON.stringify(a)),gr(a)&&(l={...l,OPENCODE_CONFIG_CONTENT:a});let s=Re(t,"key",null),c=Re(t,"provider",null);gr(s)&&gr(c)&&(l={...l,OPENCODE_AUTH_CONTENT:JSON.stringify({[c]:{type:"api",key:s}})});let f=yn(Re(t,"timeoutMs",null),hn),d=pr(t,gn);return pn(await sn(r,u,{...d,input:e,env:l,timeoutMs:f}))}function mn(e){return!0===(t=e)||!1===t||y(t)&&"[object Boolean]"==p(t);var t}let bn=["exe","model","skipPermissions","extraArgs","input"];async function kn(e,t={}){if(!gr(e))return fn("prompt must be a non-empty string");let r=Re(t,"exe",null);gr(r)||(r="claude");let n=Re(t,"model",null),o=Re(t,"skipPermissions",null);mn(o)||(o=!0);let i=Re(t,"extraArgs",null),u=cn("-p",o?"--dangerously-skip-permissions":[],gr(n)?["--model",n]:[],i),l=yn(Re(t,"timeoutMs",null),hn),a=pr(t,bn);return pn(await sn(r,u,{...a,input:e,timeoutMs:l}))}let jn=["exe","model","sandbox","extraArgs","input"];async function On(e,t={}){if(!gr(e))return fn("prompt must be a non-empty string");let r=Re(t,"exe",null);gr(r)||(r="codex");let n=Re(t,"model",null),o=Re(t,"sandbox",null);gr(o)||(o="workspace-write");let i=Re(t,"extraArgs",null),u=cn("exec",["--sandbox",o],"--skip-git-repo-check",gr(n)?["-m",n]:[],i),l=yn(Re(t,"timeoutMs",null),hn),a=pr(t,jn);return pn(await sn(r,u,{...a,input:e,timeoutMs:l}))}let _n=hn,wn=["exe","model","effort","skipPermissions","printTimeout","addDirs","extraArgs","input"];async function Sn(e,t={}){if(!gr(e))return fn("prompt must be a non-empty string");if(e.length>3e4)return fn(`prompt too long (${e.length} chars > 30000), agy passes prompt via --print flag and Windows command line is capped at 32767 chars`);let r=Re(t,"exe",null);gr(r)||(r="agy");let n=Re(t,"model",null),o=Re(t,"effort",null),i=Re(t,"skipPermissions",null);mn(i)||(i=!0);let u=yn(Re(t,"timeoutMs",null),_n),l=Re(t,"printTimeout",null);gr(l)||(l=`${Math.max(30,Math.floor(u/1e3)-30)}s`);let a=Re(t,"addDirs",null);if(!Rr(a)){let e=Re(t,"cwd",null);gr(e)||(e=process.cwd()),a=[e]}let s=[];for(let e of a)gr(e)&&s.push("--add-dir",e);let c=Re(t,"extraArgs",null),f=cn(i?"--dangerously-skip-permissions":[],["--print-timeout",l],gr(n)?["--model",n]:[],gr(o)?["--effort",o]:[],s,c,["--print",e]),d=pr(t,wn);try{return pn(await sn(r,f,{...d,timeoutMs:u}))}catch(e){return fn(`${e.code||"UNKNOWN"}: ${e.message}`,"spawn")}}function xn(e){if(Cr(e))return e;if(!gr(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(!gr(e)||""===e.trim())return!1}else if("json"===r)try{JSON.parse(e)}catch{return!1}else if("min:"===Br(r,4)){let t=Kr(r,4);if(!br(t))return!1;let n=Lr(t);if(!gr(e)||e.length<n)return!1}return!0}}let En=hn,An={funWithMsg:e=>`(truncated, total ${e.length} chars)`};async function Tn(e,t,r,n,o){let i=Date.now(),u=e=>({ok:!1,stdout:"",stderr:"",code:null,error:"",durationMs:Date.now()-i,usage:null,...e}),l=new AbortController,a=setTimeout(()=>{l.abort()},n),s=null,c="";try{s=await fetch(e,{method:"POST",headers:t,body:JSON.stringify(r),signal:l.signal}),c=await s.text()}catch(e){if(clearTimeout(a),"AbortError"===e.name)return u({error:`TIMEOUT after ${n/1e3}s`,errorType:"timeout"});return u({error:`FETCH_ERROR: ${Re(e,"cause.code","")||e.message}`,errorType:"fetch"})}if(clearTimeout(a),!s.ok)return u({stderr:Yr(c,1e3,An),code:s.status,error:`HTTP ${s.status}`,errorType:"http"});let f=null,d="",p=null,y=null;try{let e=JSON.parse(c);f=Re(e,"choices.0.message.content",null),d=Re(e,"choices.0.finish_reason",""),p=Re(e,"choices.0.message.tool_calls",null),y=Re(e,"usage",null),yr(y)||(y=null)}catch{}return"tool_calls"===d||null!=p?u({stderr:Yr(c,1e3,An),code:s.status,error:"TOOL_CALLS_UNSUPPORTED: use a cli kind (opencode/claude/codex/antigravity) when tools are needed",errorType:"tool-unsupported",usage:y}):null==f?u({stderr:Yr(c,500,An),code:s.status,error:"INVALID_RESPONSE: missing choices[0].message.content",errorType:"invalid-response",usage:y}):("string"!=typeof f&&(f=JSON.stringify(f)),o&&!o(f)?u({stdout:Yr(f,500,An),code:s.status,error:"OUTPUT_VALIDATION_FAILED",errorType:"validation",usage:y}):u({ok:!0,stdout:f,code:s.status,usage:y}))}async function In(e,t={}){if(!gr(e))return fn("prompt must be a non-empty string");let r=Re(t,"baseURL",null);if(!gr(r))return fn("baseURL must be a non-empty string");let n=Re(t,"model",null);if(!gr(n))return fn("model must be a non-empty string");let o=Re(t,"key",null),i=Re(t,"system",null),u=Re(t,"body",null);yr(u)||(u={});let l=Re(t,"headers",null);yr(l)||(l={});let a=yn(Re(t,"timeoutMs",null),En),s=Re(t,"maxRetries",null);s=Vr(s)?Lr(s):0;let c=yn(Re(t,"retryDelayMs",null),5e3),f=xn(Re(t,"validate",null)),d=r.replace(/\/+$/,"")+"/chat/completions",p=[];gr(i)&&p.push({role:"system",content:i}),p.push({role:"user",content:e});let y={model:n,messages:p,...u},h={"Content-Type":"application/json",...l};gr(o)&&(h.Authorization=`Bearer ${o}`);let g=null,v=0;for(let e=0;e<=s;e++){if(e>0&&await kr(Math.min(c*e,15e3)),g=await Tn(d,h,y,a,f),v=e+1,g.ok)return g.attempts=v,g;let t=g.code;if(br(t)&&t>=400&&t<500&&429!==t)break}return g.attempts=v,g}let Mn=hn,Nn={funWithMsg:e=>`(truncated, total ${e.length} chars)`};function Dn(e){if(!Rr(e))return"";let t=[];for(let r of e){if("message"!==Re(r,"type",""))continue;let e=Re(r,"content",null);if(Rr(e))for(let r of e){let e=Re(r,"text",null);gr(e)&&t.push(e)}}return t.join("")}async function $n(e,t,r,n,o){let i=Date.now(),u=e=>({ok:!1,stdout:"",stderr:"",code:null,error:"",durationMs:Date.now()-i,usage:null,...e}),l=new AbortController,a=setTimeout(()=>{l.abort()},n),s=null,c="";try{s=await fetch(e,{method:"POST",headers:t,body:JSON.stringify(r),signal:l.signal}),c=await s.text()}catch(e){if(clearTimeout(a),"AbortError"===e.name)return u({error:`TIMEOUT after ${n/1e3}s`,errorType:"timeout"});return u({error:`FETCH_ERROR: ${Re(e,"cause.code","")||e.message}`,errorType:"fetch"})}if(clearTimeout(a),!s.ok)return u({stderr:Yr(c,1e3,Nn),code:s.status,error:`HTTP ${s.status}`,errorType:"http"});let f=null,d="",p="",y="",h=null,g=!0;try{let e=JSON.parse(c);f=Re(e,"output",null),d=Re(e,"status",""),p=Re(e,"incomplete_details.reason",""),y=Re(e,"error.message","")||Re(e,"error.code",""),h=Re(e,"usage",null),yr(h)||(h=null)}catch{g=!1}if(!g||!Rr(f))return u({stderr:Yr(c,500,Nn),code:s.status,error:"INVALID_RESPONSE: missing output array",errorType:"invalid-response",usage:h});if(f.some(e=>"function_call"===Re(e,"type","")))return u({stderr:Yr(c,1e3,Nn),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"!==d){let e=p||y||d||"unknown";return u({stdout:Yr(Dn(f),500,Nn),stderr:Yr(c,500,Nn),code:s.status,error:`INCOMPLETE_RESPONSE: status=${d||"missing"} (${e})`,errorType:"incomplete",usage:h})}let v=Dn(f);return""===v?u({stderr:Yr(c,500,Nn),code:s.status,error:"INVALID_RESPONSE: no output_text in output messages",errorType:"invalid-response",usage:h}):o&&!o(v)?u({stdout:Yr(v,500,Nn),code:s.status,error:"OUTPUT_VALIDATION_FAILED",errorType:"validation",usage:h}):u({ok:!0,stdout:v,code:s.status,usage:h})}async function Pn(e,t={}){if(!gr(e))return fn("prompt must be a non-empty string");let r=Re(t,"baseURL",null);if(!gr(r))return fn("baseURL must be a non-empty string");let n=Re(t,"model",null);if(!gr(n))return fn("model must be a non-empty string");let o=Re(t,"key",null),i=Re(t,"system",null),u=Re(t,"body",null);yr(u)||(u={});let l=Re(t,"headers",null);yr(l)||(l={});let a=yn(Re(t,"timeoutMs",null),Mn),s=Re(t,"maxRetries",null);s=Vr(s)?Lr(s):0;let c=yn(Re(t,"retryDelayMs",null),5e3),f=xn(Re(t,"validate",null)),d=r.replace(/\/+$/,"")+"/responses",p={model:n,input:e};gr(i)&&(p.instructions=i),p={...p,...u};let y={"Content-Type":"application/json",...l};gr(o)&&(y.Authorization=`Bearer ${o}`);let h=null,g=0;for(let e=0;e<=s;e++){if(e>0&&await kr(Math.min(c*e,15e3)),h=await $n(d,y,p,a,f),g=e+1,h.ok)return h.attempts=g,h;let t=h.code;if(br(t)&&t>=400&&t<500&&429!==t)break}return h.attempts=g,h}let Un={opencode:vn,claude:kn,codex:On,antigravity:Sn,"api-openai-compat":In,"api-openai-responses":Pn};function Ln(e){return e!=e}function Rn(e){return null==e?[]:function(e,t){return Ie(t,function(t){return e[t]})}(e,W(e))}var Cn=Math.max;function Fn(e,t,r,n){e=Y(e)?e:Rn(e),r=r&&!n?Mr(r):0;var o=e.length;return r<0&&(r=Cn(o+r,0)),function(e){return"string"==typeof e||!j(e)&&y(e)&&"[object String]"==p(e)}(e)?r<=o&&e.indexOf(t,r)>-1:!!o&&function(e,t,r){return t==t?function(e,t,r){for(var n=r-1,o=e.length;++n<o;)if(e[n]===t)return n;return-1}(e,t,r):function(e,t,r,n){for(var o=e.length,i=r+(n?1:-1);n?i--:++i<o;)if(t(e[i],i,e))return i;return-1}(e,Ln,r)}(e,t,r)>-1}async function zn(e,t,r={}){let n=W(Un);return gr(e)&&Fn(n,e)?(0,Un[e])(t,r):fn(`unknown ai kind: "${e}" (available: ${n.join(", ")})`)}let Vn=["providers","budgetMs","minAttemptMs","cooldownMs","shouldStop","coolDetect","store","onEvent","meta"],Bn=["id","keys","meta"],Jn=hn,Kn={cursors:{}};function Yn(e){let t=Re(e,"error","");gr(t)||(t="");let r=Re(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 Wn(e,t={}){if(!gr(e))return{...fn("prompt must be a non-empty string"),tried:[]};let r=Re(t,"providers",null),n=Rr(r)?r.filter(yr):[];if(0===n.length)return{...fn("providers must be a non-empty array"),tried:[]};let o=yn(Re(t,"budgetMs",null),null),i=null===o?null:Date.now()+o,u=yn(Re(t,"minAttemptMs",null),2e4),{state:l,saveState:a}=function(e){let t=yr(e)&&Cr(e.get)&&Cr(e.set),r=null;if(t)try{r=e.get()}catch{}return yr(r)||(r=t?{cursors:{}}:Kn),yr(r.cursors)||(r.cursors={}),yr(r.cooling)||(r.cooling={}),{state:r,saveState:()=>{if(t)try{e.set(r)}catch{}}}}(Re(t,"store",null)),s=yn(Re(t,"cooldownMs",null),0),c=Re(t,"coolDetect",null);Cr(c)||(c=null);let f=Re(t,"shouldStop",null);Cr(f)||(f=null);let d=()=>{if(null===f)return!1;try{return!0===f()}catch{return!1}};s>0&&(n=function(e,t,r,n){let o=Date.now(),i=[],u=[],l=!1;for(let n of e){let e=Re(n,"id",null),a=gr(e)?Re(t.cooling,e,null):null;zr(a)&&o-a<r?u.push(n):(gr(e)&&void 0!==t.cooling[e]&&(delete t.cooling[e],l=!0),i.push(n))}return l&&n(),[...i,...u]}(n,l,s,a));let p=Re(t,"onEvent",null),y=e=>{if(Cr(p))try{p(e)}catch{}},h=pr(t,Vn),g=[],v=null,m=null;for(let t=0;t<n.length;t++){let r=n[t],o=Re(r,"id",null),f=gr(o);f||(o=String(t));let p=Re(r,"kind",null),b=Re(r,"model",null),k=Re(r,"keys",null),j=Rr(k)?k.filter(gr):[],O=j.length,_=pr(r,Bn),w=0;if(O>0){let e=Re(l.cursors,o,0);w=zr(e)?Lr(e)%O:0}let S=O>0?O:1,x=!1;for(let t=0;t<S&&!x;t++){if(d())return y({type:"aborted",providerId:o,keyIndex:null,keyId:o}),g.push({providerId:o,keyIndex:null,keyId:o,outcome:"aborted"}),{...fn("ABORTED","aborted"),tried:g};let r=O>0?(w+t)%O:null,n=null===r?o:`${o}#${r}`,k={...h,..._};O>0&&(k.key=j[r]);let S=yn(Re(k,"timeoutMs",null),Jn);if(null!==i){let e=i-Date.now();if(e<u)return y({type:"budget-out",providerId:o,keyIndex:r,keyId:n,remainingMs:e}),g.push({providerId:o,keyIndex:r,keyId:n,outcome:"budget-out"}),{...fn("budget exhausted","budget"),tried:g};S=Math.min(S,e)}k.timeoutMs=S,y({type:"try",providerId:o,keyIndex:r,keyId:n,kind:p,model:b});let E=await zn(p,e,k);if(E.ok)return s>0&&f&&void 0!==l.cooling[o]&&(delete l.cooling[o],a()),O>0&&(l.cursors[o]=(r+1)%O,a()),y({type:"ok",providerId:o,keyIndex:r,keyId:n,durationMs:E.durationMs}),g.push({providerId:o,keyIndex:r,keyId:n,outcome:"ok",durationMs:E.durationMs,...void 0!==E.usage?{usage:E.usage}:{}}),{...E,providerId:o,keyIndex:r,kind:p,model:b,tried:g};if(v=E,m={providerId:o,keyIndex:r,kind:p,model:b},s>0&&f){let e=429===E.code||gr(E.error)&&0===E.error.indexOf("TIMEOUT");if(!e&&null!==c)try{e=!0===c(E)}catch{}e&&(l.cooling[o]=Date.now(),a(),y({type:"cooled",providerId:o,keyIndex:r,keyId:n,error:E.error,cooldownMs:s}))}Yn(E)?(y({type:"skip-group",providerId:o,keyIndex:r,keyId:n,error:E.error,errorType:E.errorType,stdout:E.stdout,stderr:E.stderr}),g.push({providerId:o,keyIndex:r,keyId:n,outcome:"skip-group",error:E.error,errorType:E.errorType,stdout:E.stdout,stderr:E.stderr,durationMs:E.durationMs,...void 0!==E.usage?{usage:E.usage}:{}}),x=!0):(y({type:"next-key",providerId:o,keyIndex:r,keyId:n,error:E.error,errorType:E.errorType,stdout:E.stdout,stderr:E.stderr}),g.push({providerId:o,keyIndex:r,keyId:n,outcome:"next-key",error:E.error,errorType:E.errorType,stdout:E.stdout,stderr:E.stderr,durationMs:E.durationMs,...void 0!==E.usage?{usage:E.usage}:{}}))}}return{...v||fn("all providers failed","exec"),...m||{},tried:g}}function Hn(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!(!hr(e)||""!==e)}(e)||(!!function(e){return!!Rr(e)&&0===e.length}(e)||!!mr(e)))))}function qn(e){return!!Rr(e)&&(0!==e.length&&(1!==e.length||!Hn(e[0])))}function Gn(e){let t=String(e||"");if(t=t.replace(new RegExp(String.fromCharCode(27)+"\\[[0-9;]*m","g"),""),t=t.replace(/```(?:json)?/g,""),t=t.trim(),""===t)return null;try{let e=JSON.parse(t);if(null!==e&&"object"==typeof e)return e}catch(e){}let r=-1;for(let e=0;e<t.length;e++)if("{"===t[e]||"["===t[e]){r=e;break}if(r<0)return null;let n=0,o=!1,i=!1;for(let e=r;e<t.length;e++){let u=t[e];if(o)i?i=!1:"\\"===u?i=!0:'"'===u&&(o=!1);else if('"'===u)o=!0;else if("{"===u||"["===u)n++;else if(("}"===u||"]"===u)&&(n--,0===n)){try{let n=JSON.parse(t.slice(r,e+1));if(null!==n&&"object"==typeof n)return n}catch(e){}return null}}return null}let Zn=["【執行約束】你只需把結果輸出在回覆內容中。","禁止建立、修改或刪除任何檔案,也不要執行任何會改動磁碟或系統狀態的指令——","呼叫端只讀取你的回覆文字,任何寫入磁碟的動作都不會被採用,只會製造無人讀取的垃圾檔。","唯讀查閱(讀取檔案、搜尋內容、列出目錄)不在此限,需要時請照常使用。","",""].join("\n"),Qn=["providers","spec","check","parse","rawText","promptPrefix","meta"];async function Xn(e,t={}){let r=Date.now();if(!gr(e))return{ok:!1,json:null,error:"prompt must be a non-empty string",errorType:"params",ms:0,tried:[]};let n=Re(t,"providers",null),o=Re(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:u}=function(e,t){let r=[Re(t,"use","")],n=Re(t,"fallback",null);qn(n)&&(r=[...r,...n]);let o=[],i=[];for(let t of r){let r=Re(e,t,null);yr(r)?o.push({id:t,...r}):i.push(String(t))}return{chain:o,missing:i}}(n,o);if(u.length>0)return{ok:!1,json:null,error:`unknown provider name(s): ${u.join(", ")}`,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 l=!0===Re(t,"rawText",!1),a=Re(t,"parse",null);Cr(a)||(a=Gn);let s=Re(t,"check",null);Cr(s)||(s=null);let c=Re(t,"promptPrefix",null);gr(c)||(c=""===c?"":Zn);let f=await Wn(c+e,{...pr(t,Qn),providers:i,validate:e=>{if(l){let t=String(e||"").trim();return""!==t&&(!s||!0===s(t))}let t=a(e);return null!==t&&(!s||!0===s(t))},timeoutMs:Re(t,"timeoutMs",null)||hn}),d=null;f.ok&&(d=l?String(f.stdout||"").trim():a(f.stdout));let p=Re(f,"providerId",null),y=Re(f,"keyIndex",null);return{ok:f.ok&&null!==d,json:d,providerId:p,keyIndex:y,keyId:null===y?p:`${p}#${y}`,ms:Date.now()-r,tried:Re(f,"tried",[]),usage:Re(f,"usage",null),error:f.ok?"":Re(f,"error","unknown error"),...f.ok?{}:{errorType:Re(f,"errorType","exec")}}}async function eo(e={}){let t=Date.now(),r=Re(e,"providers",null),n=Re(e,"task",""),o=Re(e,"agents",null),i=Re(e,"integrate",null),u=Re(e,"check",null),l=Re(e,"callOpt",{});if(!gr(n))return{ok:!1,result:null,integrated:!1,agents:[],candidates:[],totalMs:0,error:"task must be a non-empty string"};if(!qn(o))return{ok:!1,result:null,integrated:!1,agents:[],candidates:[],totalMs:0,error:"agents must be a non-empty array"};let a=Re(e,"minCandidates",null);a=zr(a)?Lr(a):2;let s=await Promise.all(o.map(e=>{let{use:t,fallback:o,check:i,meta:a,...s}=e;return Xn(n,{...l,...s,providers:r,spec:{use:t,fallback:o},check:Cr(i)?i:u})})),c=s.filter(e=>e.ok).map(e=>e.json);if(0===c.length)return{ok:!1,result:null,integrated:!1,agents:s,candidates:c,totalMs:Date.now()-t,error:"all agents failed"};if(1===c.length||c.length<a)return{ok:!0,result:c[0],integrated:!1,agents:s,candidates:c,totalMs:Date.now()-t,error:""};if(!i||!gr(Re(i,"use","")))return{ok:!1,result:null,integrated:!1,agents:s,candidates:c,totalMs:Date.now()-t,error:"integrate spec (with use) is required"};let{use:f,fallback:d,prompt:p,check:y,meta:h,...g}=i,v=Cr(p)?p(c):function(e,t={}){let r=Re(t,"schema",""),n=gr(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),m=await Xn(v,{...l,...g,providers:r,spec:{use:f,fallback:d},check:Cr(y)?y:u});return{ok:m.ok,result:m.ok?m.json:null,integrated:m.ok,agents:s,candidates:c,integrateDetail:m,totalMs:Date.now()-t,error:m.ok?"":`integrate failed: ${m.error}`}}let to=["id","use","fallback","prompt","check","meta"];async function ro(e={}){let t=Date.now(),r=Re(e,"providers",null),n=Re(e,"input",null),o=Re(e,"stages",null),i=Re(e,"callOpt",{});if(!qn(o))return{ok:!1,result:null,stages:{},results:{},order:[],failedStage:null,totalMs:0,error:"stages must be a non-empty array"};let u={},l={},a=[],s=null;for(let e=0;e<o.length;e++){let c=o[e],f=gr(Re(c,"id",""))?c.id:`stage${e+1}`;a.push(f);let d=Re(c,"prompt",null);if(!Cr(d))return l[f]={ok:!1,error:`stage[${f}].prompt must be a function`},{ok:!1,result:null,stages:l,results:u,order:a,failedStage:f,totalMs:Date.now()-t,error:l[f].error};let p=d({input:n,prev:s,results:u,index:e});if(!gr(p))return l[f]={ok:!1,error:`stage[${f}].prompt returned empty`},{ok:!1,result:null,stages:l,results:u,order:a,failedStage:f,totalMs:Date.now()-t,error:l[f].error};let y=pr(c,to),h=await Xn(p,{...i,...y,providers:r,spec:{use:Re(c,"use",""),fallback:Re(c,"fallback",null)},check:Re(c,"check",null)});if(l[f]=h,!h.ok)return{ok:!1,result:null,stages:l,results:u,order:a,failedStage:f,totalMs:Date.now()-t,error:`stage[${f}] failed: ${h.error}`};u[f]=h.json,s=h.json}return{ok:!0,result:s,stages:l,results:u,order:a,failedStage:null,totalMs:Date.now()-t,error:""}}let no=["stages","input"],oo=["task","agents","integrate","check","schema","minCandidates"];var io=Array.prototype.join;function uo(e){var t=-1,r=null==e?0:e.length;for(this.__data__=new je;++t<r;)this.add(e[t])}function lo(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 ao(e,t){return e.has(t)}uo.prototype.add=uo.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},uo.prototype.has=function(e){return this.__data__.has(e)};function so(e,t,r,n,o,i){var u=1&r,l=e.length,a=t.length;if(l!=a&&!(u&&a>l))return!1;var s=i.get(e),c=i.get(t);if(s&&c)return s==t&&c==e;var f=-1,d=!0,p=2&r?new uo:void 0;for(i.set(e,t),i.set(t,e);++f<l;){var y=e[f],h=t[f];if(n)var g=u?n(h,y,f,t,e,i):n(y,h,f,e,t,i);if(void 0!==g){if(g)continue;d=!1;break}if(p){if(!lo(t,function(e,t){if(!ao(p,t)&&(y===e||o(y,e,r,n,i)))return p.push(t)})){d=!1;break}}else if(y!==h&&!o(y,h,r,n,i)){d=!1;break}}return i.delete(e),i.delete(t),d}function co(e){var t=-1,r=Array(e.size);return e.forEach(function(e,n){r[++t]=[n,e]}),r}function fo(e){var t=-1,r=Array(e.size);return e.forEach(function(e){r[++t]=e}),r}var po=u?u.prototype:void 0,yo=po?po.valueOf:void 0;var ho=Object.prototype.hasOwnProperty;var go="[object Arguments]",vo="[object Array]",mo="[object Object]",bo=Object.prototype.hasOwnProperty;function ko(e,t,r,n,o,i){var u=j(e),l=j(t),a=u?vo:xt(e),s=l?vo:xt(t),c=(a=a==go?mo:a)==mo,f=(s=s==go?mo:s)==mo,d=a==s;if(d&&S(e)){if(!S(t))return!1;u=!0,c=!1}if(d&&!c)return i||(i=new Ce),u||U(e)?so(e,t,r,n,o,i):function(e,t,r,n,o,i,u){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 At(e),new At(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return he(+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 l=co;case"[object Set]":var a=1&n;if(l||(l=fo),e.size!=t.size&&!a)return!1;var s=u.get(e);if(s)return s==t;n|=2,u.set(e,t);var c=so(l(e),l(t),n,o,i,u);return u.delete(e),c;case"[object Symbol]":if(yo)return yo.call(e)==yo.call(t)}return!1}(e,t,a,r,n,o,i);if(!(1&r)){var p=c&&bo.call(e,"__wrapped__"),y=f&&bo.call(t,"__wrapped__");if(p||y){var h=p?e.value():e,g=y?t.value():t;return i||(i=new Ce),o(h,g,r,n,i)}}return!!d&&(i||(i=new Ce),function(e,t,r,n,o,i){var u=1&r,l=st(e),a=l.length;if(a!=st(t).length&&!u)return!1;for(var s=a;s--;){var c=l[s];if(!(u?c in t:ho.call(t,c)))return!1}var f=i.get(e),d=i.get(t);if(f&&d)return f==t&&d==e;var p=!0;i.set(e,t),i.set(t,e);for(var y=u;++s<a;){var h=e[c=l[s]],g=t[c];if(n)var v=u?n(g,h,c,t,e,i):n(h,g,c,e,t,i);if(!(void 0===v?h===g||o(h,g,r,n,i):v)){p=!1;break}y||(y="constructor"==c)}if(p&&!y){var m=e.constructor,b=t.constructor;m==b||!("constructor"in e)||!("constructor"in t)||"function"==typeof m&&m instanceof m&&"function"==typeof b&&b instanceof b||(p=!1)}return i.delete(e),i.delete(t),p}(e,t,r,n,o,i))}function jo(e,t,r,n,o){return e===t||(null==e||null==t||!y(e)&&!y(t)?e!=e&&t!=t:ko(e,t,r,n,jo,o))}function Oo(e){return e==e&&!J(e)}function _o(e,t){return function(r){return null!=r&&(r[e]===t&&(void 0!==t||e in Object(r)))}}function wo(e){var t=function(e){for(var t=W(e),r=t.length;r--;){var n=t[r],o=e[n];t[r]=[n,o,Oo(o)]}return t}(e);return 1==t.length&&t[0][2]?_o(t[0][0],t[0][1]):function(r){return r===e||function(e,t,r,n){var o=r.length,i=o,u=!n;if(null==e)return!i;for(e=Object(e);o--;){var l=r[o];if(u&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++o<i;){var a=(l=r[o])[0],s=e[a],c=l[1];if(u&&l[2]){if(void 0===s&&!(a in e))return!1}else{var f=new Ce;if(n)var d=n(s,c,a,e,t,f);if(!(void 0===d?jo(c,s,3,n,f):d))return!1}}return!0}(r,e,t)}}function So(e,t){return null!=e&&t in Object(e)}function xo(e,t){return null!=e&&function(e,t,r){for(var n=-1,o=(t=Pe(t,e)).length,i=!1;++n<o;){var u=Ue(t[n]);if(!(i=null!=e&&r(e,u)))break;e=e[u]}return i||++n!=o?i:!!(o=null==e?0:e.length)&&A(o)&&E(u,o)&&(j(e)||k(e))}(e,t,So)}function Eo(e){return Z(e)?(t=Ue(e),function(e){return null==e?void 0:e[t]}):function(e){return function(t){return Le(t,e)}}(e);var t}function Ao(e){return"function"==typeof e?e:null==e?ur:"object"==typeof e?j(e)?function(e,t){return Z(e)&&Oo(t)?_o(Ue(e),t):function(r){var n=Re(r,e);return void 0===n&&n===t?xo(r,e):jo(t,n,3)}}(e[0],e[1]):wo(e):Eo(e)}var To,Io=function(e,t,r){for(var n=-1,o=Object(e),i=r(e),u=i.length;u--;){var l=i[To?u:++n];if(!1===t(o[l],l,o))break}return e};var Mo=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,u=Object(r);(t?i--:++i<o)&&!1!==n(u[i],i,u););return r}}(function(e,t){return e&&Io(e,t,W)}),No=Mo;function Do(e,t){var r=-1,n=Y(e)?Array(e.length):[];return No(e,function(e,o,i){n[++r]=t(e,o,i)}),n}function $o(e,t){return gr(e)&&gr(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 Po(e){if(!(gr(e)||br(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 Uo(e,t){let r="";if(gr(e)||br(e))r=Po(e);else{if(!qn(e))return{};o="",r=null==(n=e)?"":io.call(n,o)}var n,o,i,u;return br(t)&&(t=Po(t)),gr(t)&&(t=[t]),qn(t)?(u=function(e){return Po(e)},function(e,t){let r=[],n=0;for(let o=0;o<t.length;o++){let i=t[o],u=$o(e,i);r.push({target:i,rating:u}),u>r[n].rating&&(n=o)}return{ratings:r,bestMatch:r[n],bestMatchIndex:n}}(r,t=(j(i=t)?Ie:Do)(i,Ao(u)))):{}}function Lo(e){let t=null,n=qr(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 Ro(e,t){return gr(e)&&Vr(t)?0===(t=Lr(t))?e:Br(e,e.length-t):""}function Co(e){if(!gr(e))return{path:"",isRoot:!1};for(;e.indexOf("\\\\")>=0;)e=e.replace("\\\\","\\");for(;e.indexOf("//")>=0;)e=e.replace("//","/");if(":"===Jr(e,1))return{path:`${e}\\`,isRoot:!0};if("\\"===Jr(e,1)){let t=Ro(e,1);return":"===Jr(t,1)?{path:e,isRoot:!0}:{path:t,isRoot:!1}}if("/"===Jr(e,1)){let t=Ro(e,1);return 0===t.length?{path:e,isRoot:!0}:{path:t,isRoot:!1}}return{path:e,isRoot:!1}}function Fo(e){if(!gr(e))return"";let t=Co(e);if(t.isRoot)return t.path;let r=function(e){if(!gr(e))return"";let t=Co(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(!gr(r))return e;let n=Co(e=Ro(e,r.length));return n.isRoot,n.path}function zo(e,t={}){let r=Re(t,"fs");if(!Wr(e,{fs:r}))return!1;let n=r.lstatSync(e);return!n.isFile()&&!n.isSymbolicLink()}function Vo(e,t,r={}){let n=null,o=Re(r,"fs"),i=Fo(e);zo(i,{fs:o})||function(e,t={}){let r=Re(t,"fs");if(zo(e,{fs:r}))return{success:"input folder is already exists: "+e};if(Wr(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 Bo(e,t,n={}){let o=null;if(!yr(t)&&!Rr(t))return{error:"inp is not an object or array"};let i=Re(n,"useFormat",null);mn(i)||(i=!1);let u="";try{u=i?JSON.stringify(t,null,2):JSON.stringify(t)}catch(e){o=e}return null!==o?{error:o}:Vo(e,u,{fs:r})}let Jo={KINDS:W(Un),NO_SIDE_EFFECT:Zn,dispatchAi:zn,dispatchAiFallback:Wn,dispatchAiWkf:function(e={}){let t=Re(e,"providers",null);if(!yr(t))throw new Error("dispatchAiWkf: opt.providers must be an object (name → provider entry)");let r=Re(e,"defaults",null);return yr(r)||(r={}),{providers:t,callAi:(e,n={})=>Xn(e,{...r,...n,providers:t}),runFanout:(e={})=>eo({...e,providers:t,callOpt:{...r,...Re(e,"callOpt",{})}}),runRolePipeline:(e={})=>ro({...e,providers:t,callOpt:{...r,...Re(e,"callOpt",{})}}),runFanoutPipeline:(e={})=>async function(e={}){let t=Date.now(),r=await eo(pr(e,no));if(!r.ok)return{ok:!1,result:null,A:r,B:null,totalMs:Date.now()-t,error:`A failed: ${r.error}`};let n=await ro({...pr(e,oo),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,...Re(e,"callOpt",{})}})}},dispatchOpencode:vn,dispatchClaude:kn,dispatchCodex:On,dispatchAntigravity:Sn,dispatchApiOpenaiCompat:In,dispatchApiOpenaiResponses:Pn,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=Re(t,"env",null);yr(r)||(r="undefined"!=typeof process&&process&&yr(process.env)?process.env:{});let n=Rr(e)?e.filter(yr):[],o=Re(t,"pick",null),i=[],u=n;if(qn(o)){u=[];for(let e of o){let t=n.find(t=>Re(t,"id",null)===e);t?u.push(t):i.push(String(e))}}let l={};if(i.length>0){let e=n.map(e=>Re(e,"id",null)).filter(gr);for(let t of i)l[t]=e.length>0?Re(Uo(t,e),"bestMatch.target",null):null}let a=[],s=[];for(let e of u){let t=Re(e,"envVar",null);if(!gr(t)||qn(Re(e,"keys",null))){a.push(pr(e,["envVar"]));continue}let n=String(Re(r,t,"")||"").split(",").map(e=>e.trim()).filter(Boolean);0!==n.length?a.push({...pr(e,["envVar"]),keys:n}):s.push({id:Re(e,"id",""),envVar:t})}let c=Re(t,"exes",null),f=Re(t,"patch",null);(yr(c)||yr(f))&&(a=a.map(e=>{let t=e,r=yr(c)?Re(c,Re(t,"kind",""),null):null;gr(r)&&!gr(Re(t,"exe",null))&&(t={...t,exe:r});let n=yr(f)?Re(f,Re(t,"id",""),null):null;return yr(n)&&(t={...t,...n}),t}));let d={};for(let e of a)d[e.id]=e;return{providers:a,table:d,skipped:s,missing:i,hints:l}},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(!Rr(e))return 0;let t=0;for(let r of e)t+=yn(Re(r,"timeoutMs",null),hn);return t},createFileStore:function(e={}){let r=Re(e,"file",null);if(!gr(r)){let n=Re(e,"dir",null);if(!gr(n))throw new Error("createFileStore: file or dir is required");let o=Re(e,"name",null);r=t.join(n,gr(o)?o:"ai-cursor.json")}let n=Re(e,"ownKeys",null);qn(n)||(n=["at"]);let o=Re(e,"stamp",null);return Cr(o)||(o=()=>(new Date).toISOString()),{file:r,get:()=>{let e=Lo(r),t=void 0!==Re(e,"error",void 0)?null:Re(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()};Bo(r,t,{useFormat:!0})}}},createUsageCounter:function(e={}){let r=Re(e,"file",null);if(!gr(r)){let n=Re(e,"dir",null);if(!gr(n))throw new Error("createUsageCounter: file or dir is required");let o=Re(e,"name",null);r=t.join(n,gr(o)?o:"ai-usage.json")}let n=Re(e,"getDate",null);Cr(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=Re(e,"keepDays",null);zr(o)||(o=14);let i=Re(e,"keyOf",null);Cr(i)||(i=e=>Re(e,"keyId",null)||Re(e,"providerId",""));let u=()=>{let e=Lo(r),t=void 0!==Re(e,"error",void 0)?null:Re(e,"success",null);return yr(t)?t:{}},l=(e,t=1)=>{if(!gr(e))return;let i=u(),l=n(),a=yr(i[l])?i[l]:{};a[e]=(Number(a[e])||0)+t,i[l]=a;let s=Object.keys(i).sort().slice(-o),c={};for(let e of s)c[e]=i[e];Bo(r,c,{useFormat:!0})};return{file:r,onEvent:e=>{"try"===Re(e,"type",null)&&l(i(e))},bump:l,today:()=>{let e=u(),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,u=-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&&(u=e),0===n))return null}else o=!0}if(u<0)return null;try{let e=JSON.parse(t.slice(r,u+1)+"]");return Array.isArray(e)&&e.length>0?e:null}catch(e){return null}}};return Jo});
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,p=u?u.toStringTag:void 0;var f=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,p),r=e[p];try{e[p]=void 0;var n=!0}catch(e){}var o=d.call(e);return n&&(t?e[p]=r:delete e[p]),o}(e):function(e){return f.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,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(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var M={};function D(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,N=I&&"object"==typeof module&&module&&!module.nodeType&&module,C=N&&N.exports===I&&i.process,P=function(){try{var e=N&&N.require&&N.require("util").types;return e||C&&C.binding&&C.binding("util")}catch(e){}}(),L=P&&P.isTypedArray,U=L?D(L):function(e){return y(e)&&E(e.length)&&!!M[h(e)]},R=Object.prototype.hasOwnProperty;function z(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)||$(s,u))||a.push(s);return a}var F=Object.prototype;function B(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||F)}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(e.length)&&!W(e)}function H(e){return Y(e)?z(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 G(e){return"symbol"==typeof e||y(e)&&"[object Symbol]"==h(e)}var Q=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,X=/^\w*$/;function Z(e,t){if(O(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!G(e))||(X.test(e)||!Q.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 pe(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return de(r)?r:void 0}var fe=pe(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__=fe?fe(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(fe){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 fe?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]=fe&&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=pe(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,$e=/\\(\\)?/g,Ee=(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($e,"$1"):r||e)}),t},xe=je(Se,function(e){return 500===Te.size&&Te.clear(),e}),Te=xe.cache,xe),Me=Ee;function De(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,Ne=Ie?Ie.toString:void 0;function Ce(e){if("string"==typeof e)return e;if(O(e))return De(e,Ce)+"";if(G(e))return Ne?Ne.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Pe(e){return null==e?"":Ce(e)}function Le(e,t){return O(e)?e:Z(e,t)?[e]:Me(Pe(e))}function Ue(e){if("string"==typeof e||G(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=Le(t,e)).length;null!=e&&r<n;)e=e[Ue(t[r++])];return r&&r==n?e:void 0}function ze(e,t,r){var n=null==e?void 0:Re(e,t);return void 0===n?r:n}function Fe(e){var t=this.__data__=new we(e);this.size=t.size}Fe.prototype.clear=function(){this.__data__=new we,this.size=0},Fe.prototype.delete=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r},Fe.prototype.get=function(e){return this.__data__.get(e)},Fe.prototype.has=function(e){return this.__data__.has(e)},Fe.prototype.set=function(e,t){var r=this.__data__;if(r instanceof 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=pe(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 He(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 Ge(e){return Y(e)?z(e,!0):He(e)}var Qe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Xe=Qe&&"object"==typeof module&&module&&!module.nodeType&&module,Ze=Xe&&Xe.exports===Qe?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,H,it)}function pt(e){return ct(e,Ge,st)}var ft=pe(a,"DataView"),mt=pe(a,"Promise"),ht=pe(a,"Set"),yt=pe(a,"WeakMap"),gt="[object Map]",vt="[object Promise]",bt="[object Set]",wt="[object WeakMap]",_t="[object DataView]",kt=oe(ft),Ot=oe(_e),jt=oe(mt),St=oe(ht),xt=oe(yt),Tt=h;(ft&&Tt(new ft(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,$t=Object.prototype.hasOwnProperty;var Et=a.Uint8Array;function Mt(e){var t=new e.constructor(e.byteLength);return new Et(t).set(new Et(e)),t}var Dt=/\w*$/;var It=u?u.prototype:void 0,Nt=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,Dt.exec(e));return t.lastIndex=e.lastIndex,t}(e);case"[object Symbol]":return n=e,Nt?Object(Nt.call(n)):{}}}var Pt=Object.create,Lt=function(){function e(){}return function(t){if(!q(t))return{};if(Pt)return Pt(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}(),Ut=Lt;var Rt=P&&P.isMap,zt=Rt?D(Rt):function(e){return y(e)&&"[object Map]"==At(e)};var Ft=P&&P.isSet,Bt=Ft?D(Ft):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]&&$t.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),p=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||p&&!o){if(l=u||p?{}: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,Ge(t),e)}(l,e)):function(e,t){return We(e,it(e),t)}(e,function(e,t){return e&&We(t,H(t),e)}(l,e))}else{if(!qt[d])return o?e:{};l=Ct(e,d,a)}}i||(i=new Fe);var f=i.get(e);if(f)return f;i.set(e,l),Bt(e)?e.forEach(function(n){l.add(Wt(n,t,r,n,e,i))}):zt(e)&&e.forEach(function(n,o){l.set(o,Wt(n,t,r,o,e,i))});var m=c?void 0:(s?u?pt:dt:u?Ge:H)(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 Ht=Object.prototype.hasOwnProperty;function Gt(e,t){var r=-1,n=(t=Le(t,e)).length;if(!n)return!0;for(;++r<n;){var o=Ue(t[r]);if("__proto__"===o&&!Ht.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 Qt=Function.prototype,Xt=Object.prototype,Zt=Qt.toString,er=Xt.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 pr=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),fr=pr;var mr=function(e){return fr(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=De(t,function(t){return t=Le(t,e),n||(n=t.length>1),t}),We(e,pt(e),r),n&&(r=Wt(r,7,rr));for(var o=t.length;o--;)Gt(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)}function br(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}function wr(e){return e!=e}function _r(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(wr(e))return!1;t=!0}return t}function kr(e=10){_r(e)||(e=10);let t=br();return setTimeout(function(){t.resolve()},e),t}var Or=/\s/;var jr=/^\s+/;function Sr(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&Or.test(e.charAt(t)););return t}(e)+1).replace(jr,""):e}var xr=/^[-+]0x[0-9a-f]+$/i,Tr=/^0b[01]+$/i,Ar=/^0o[0-7]+$/i,$r=parseInt;function Er(e){if("number"==typeof e)return e;if(G(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=Sr(e);var r=Tr.test(e);return r||Ar.test(e)?$r(e.slice(2),r?2:8):xr.test(e)?NaN:+e}var Mr=1/0;function Dr(e){return e?(e=Er(e))===Mr||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function Ir(e){var t=Dr(e),r=t%1;return t==t?r?t-r:t:0}var Nr=a.isFinite,Cr=Math.min;var Pr=function(e){var t=Math[e];return function(e,r){if(e=Er(e),(r=null==r?0:Cr(Ir(r),292))&&Nr(e)){var n=(Pe(e)+"e").split("e");return+((n=(Pe(t(n[0]+"e"+(+n[1]+r)))+"e").split("e"))[0]+"e"+(+n[1]-r))}return t(e)}}("round"),Lr=Pr;function Ur(e){if(!_r(e))return 0;return Dr(e)}function Rr(e){if(!_r(e))return 0;e=Ur(e);let t=Lr(e);return"0"===String(t)?0:t}function zr(e){return"[object Array]"===Object.prototype.toString.call(e)}function Fr(e){let t=Object.prototype.toString.call(e);return"[object Function]"===t||"[object AsyncFunction]"===t}function Br(e){return!!_r(e)&&(e=Ur(e),"number"==typeof(t=e)&&t==Ir(t));var t}function Vr(e){if(!Br(e))return!1;return Rr(e)>0}function Kr(e){if(!Br(e))return!1;return Rr(e)>=0}function Jr(e,t){return vr(e)&&Kr(t)?0===(t=Rr(t))?"":e.substring(0,t):""}function qr(e,t){if(!vr(e))return"";if(!Kr(t))return"";if(0===(t=Rr(t)))return"";let r=e.length-t;return r<0&&(r=0),e.substring(r,r+t)}function Wr(e,t){return vr(e)&&Kr(t)?0===(t=Rr(t))?e:qr(e,e.length-t):""}function Yr(e,t,r={}){if(!vr(e))return"";if(!Kr(t))return e;if(t=Rr(t),e.length<=t)return e;let n=ze(r,"funWithMsg"),o="";if(Fr(n)){let r=n(e,t);vr(r)&&(o=r)}return Jr(e,t)+`...${o}`}function Hr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Gr=e,Qr=Gr.spawn,Xr=Gr.exec;function Zr(e,t,r){var n={};try{Object.keys(e).forEach(function(r){e[r].forEach(function(e){n[e]||(en(e,t),n[e]=1)}),n[r]||(en(r,t),n[r]=1)})}catch(e){if(r)return r(e);throw e}if(r)return r()}function en(e,t){try{process.kill(parseInt(e,10),t)}catch(e){if("ESRCH"!==e.code)throw e}}function tn(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,tn(i,t,r,n,o)}):0==Object.keys(r).length&&o()})}var rn=Hr(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":Xr("taskkill /pid "+e+" /T /F",r);break;case"darwin":tn(e,n,o,function(e){return Qr("pgrep",["-P",e])},function(){Zr(n,t,r)});break;default:tn(e,n,o,function(e){return Qr("ps",["-o","pid","--no-headers","--ppid",e])},function(){Zr(n,t,r)})}});function nn(e){let t=br();return rn(Number(e),"SIGKILL",r=>{r?t.reject(r):t.resolve(`pid[${e}] killed`)}),t}function on(e,t={}){let r=ze(t,"fs"),n=!1;try{r.statSync(e),n=!0}catch{n=!1}return n}function ln(e){return function(e,t={}){let r=ze(t,"fs");return!!on(e,{fs:r})&&!r.lstatSync(e).isDirectory()&&!r.lstatSync(e).isSymbolicLink()}(e,{fs:r})}function an(e,t={}){let r=null,n=ze(t,"fs"),o="";try{o=n.readFileSync(e,"utf8")}catch(e){r=e}return null!==r?{error:r}:{success:o}}function un(e){let n=ze(an(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 ln(l)?l:null}let sn={buildSpawnArgs:function(r,n=[]){if(zr(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=un(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:cn,buildSpawnEnv:dn}=sn,pn={funWithMsg:e=>`(truncated, total ${e.length} chars)`};function fn(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,p=function(e){if(Fr(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:"===Jr(r,4)){let t=Wr(r,4);if(!_r(t))return!1;let n=Rr(t);if(!vr(e)||e.length<n)return!1}return!0}}(a),f=Date.now(),m=br(),h=dn(d),y=cn(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&&(Fr(s)&&s(t),v.length<u&&(v+=t))}),g.stderr.on("data",e=>{let t=_.decode(e,{stream:!0});t&&(Fr(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,nn(g.pid).catch(()=>{}),setTimeout(()=>{k||(k=!0,m.resolve({ok:!1,stdout:Yr(v,500,pn),stderr:Yr(b,500,pn),code:null,error:`TIMEOUT after ${o/1e3}s(子進程未能結束)`,durationMs:Date.now()-f,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()-f,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()-f;O?m.resolve({ok:!1,stdout:Yr(v,500,pn),stderr:Yr(b,500,pn),code:e,error:`TIMEOUT after ${o/1e3}s`,durationMs:i,pid:g.pid}):0===e?!p||p(v)?m.resolve({ok:!0,stdout:v,stderr:b,code:0,error:"",durationMs:i,pid:g.pid}):m.resolve({ok:!1,stdout:Yr(v,500,pn),stderr:Yr(b,500,pn),code:0,error:"OUTPUT_VALIDATION_FAILED",durationMs:i,pid:g.pid}):m.resolve({ok:!1,stdout:Yr(v,500,pn),stderr:Yr(b,1e3,pn),code:e,error:t?`Signal: ${t}`:`Exit code ${e}`,durationMs:i,pid:g.pid})}),m}async function mn(e,t=[],r={}){if(!vr(e))return{ok:!1,stdout:"",stderr:"",code:null,error:"command 須為非空字串",durationMs:0,attempts:0};zr(t)||(t=[]),yr(r)||(r={});let{maxRetries:n=0,retryDelayMs:o=5e3,...i}=r,l=ze(i,"cwd",null);vr(l)?i.cwd=l:i.cwd=process.cwd();let a=ze(i,"input",null);vr(a)?i.input=a:i.input=void 0;let u=ze(i,"env",null);yr(u)?i.env=u:i.env=void 0;let s=ze(i,"validate",null);Fr(s)||vr(s)?i.validate=s:i.validate=void 0;let c=ze(i,"onStdout",null);Fr(c)?i.onStdout=c:i.onStdout=void 0;let d=ze(i,"onStderr",null);Fr(d)?i.onStderr=d:i.onStderr=void 0,n=Kr(n)?Rr(n):0,o=Vr(o)?Rr(o):5e3;let p=ze(i,"timeoutMs",null);Vr(p)?i.timeoutMs=Rr(p):i.timeoutMs=12e4;let f,m=ze(i,"maxBuffer",null);Vr(m)?i.maxBuffer=Rr(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 kr(e)}if(f=await fn(e,t,i),h=r+1,f.ok)return f.attempts=h,f;if(f.error.includes("ENOENT"))break;if(2===f.code)break}return f.attempts=h,f}function hn(...e){let t=[];for(let r of e)if(zr(r))for(let e of r)vr(e)&&t.push(e);else vr(r)&&t.push(r);return t}function yn(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 gn(e){let t=ze(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 vn(e){return!0===ze(e,"ok",!1)||vr(ze(e,"errorType",null))?e:{...e,errorType:gn(e)}}function bn(e,t){return Vr(e)?Rr(e):t}let wn=3e5,_n=["exe","model","key","provider","agent","config","extraArgs","input","env"];async function kn(e,t={}){if(!vr(e))return yn("prompt must be a non-empty string");let r=ze(t,"exe",null);vr(r)||(r="opencode");let n=ze(t,"model",null),o=ze(t,"agent",null);vr(o)||(o="build");let i=ze(t,"extraArgs",null),l=hn("run",["--agent",o],vr(n)?["-m",n]:[],i),a=ze(t,"env",null);yr(a)||(a=void 0);let u=ze(t,"config",null);yr(u)&&(u=JSON.stringify(u)),vr(u)&&(a={...a,OPENCODE_CONFIG_CONTENT:u});let s=ze(t,"key",null),c=ze(t,"provider",null);vr(s)&&vr(c)&&(a={...a,OPENCODE_AUTH_CONTENT:JSON.stringify({[c]:{type:"api",key:s}})});let d=bn(ze(t,"timeoutMs",null),wn),p=hr(t,_n);return vn(await mn(r,l,{...p,input:e,env:a,timeoutMs:d}))}function On(e){return!0===(t=e)||!1===t||y(t)&&"[object Boolean]"==h(t);var t}let jn=["exe","model","skipPermissions","extraArgs","input"];async function Sn(e,t={}){if(!vr(e))return yn("prompt must be a non-empty string");let r=ze(t,"exe",null);vr(r)||(r="claude");let n=ze(t,"model",null),o=ze(t,"skipPermissions",null);On(o)||(o=!0);let i=ze(t,"extraArgs",null),l=hn("-p",o?"--dangerously-skip-permissions":[],vr(n)?["--model",n]:[],i),a=bn(ze(t,"timeoutMs",null),wn),u=hr(t,jn);return vn(await mn(r,l,{...u,input:e,timeoutMs:a}))}let xn=["exe","model","sandbox","extraArgs","input"];async function Tn(e,t={}){if(!vr(e))return yn("prompt must be a non-empty string");let r=ze(t,"exe",null);vr(r)||(r="codex");let n=ze(t,"model",null),o=ze(t,"sandbox",null);vr(o)||(o="workspace-write");let i=ze(t,"extraArgs",null),l=hn("exec",["--sandbox",o],"--skip-git-repo-check",vr(n)?["-m",n]:[],i),a=bn(ze(t,"timeoutMs",null),wn),u=hr(t,xn);return vn(await mn(r,l,{...u,input:e,timeoutMs:a}))}let An=wn,$n=["exe","model","effort","skipPermissions","printTimeout","addDirs","extraArgs","input"];async function En(e,t={}){if(!vr(e))return yn("prompt must be a non-empty string");if(e.length>3e4)return yn(`prompt too long (${e.length} chars > 30000), agy passes prompt via --print flag and Windows command line is capped at 32767 chars`);let r=ze(t,"exe",null);vr(r)||(r="agy");let n=ze(t,"model",null),o=ze(t,"effort",null),i=ze(t,"skipPermissions",null);On(i)||(i=!0);let l=bn(ze(t,"timeoutMs",null),An),a=ze(t,"printTimeout",null);vr(a)||(a=`${Math.max(30,Math.floor(l/1e3)-30)}s`);let u=ze(t,"addDirs",null);if(!zr(u)){let e=ze(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=ze(t,"extraArgs",null),d=hn(i?"--dangerously-skip-permissions":[],["--print-timeout",a],vr(n)?["--model",n]:[],vr(o)?["--effort",o]:[],s,c,["--print",e]),p=hr(t,$n);try{return vn(await mn(r,d,{...p,timeoutMs:l}))}catch(e){return yn(`${e.code||"UNKNOWN"}: ${e.message}`,"spawn")}}function Mn(e){if(Fr(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:"===Jr(r,4)){let t=Wr(r,4);if(!_r(t))return!1;let n=Rr(t);if(!vr(e)||e.length<n)return!1}return!0}}let Dn=wn,In={funWithMsg:e=>`(truncated, total ${e.length} chars)`};async function Nn(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: ${ze(e,"cause.code","")||e.message}`,errorType:"fetch"})}if(clearTimeout(u),!s.ok)return l({stderr:Yr(c,1e3,In),code:s.status,error:`HTTP ${s.status}`,errorType:"http"});let d=null,p="",f=null,m=null;try{let e=JSON.parse(c);d=ze(e,"choices.0.message.content",null),p=ze(e,"choices.0.finish_reason",""),f=ze(e,"choices.0.message.tool_calls",null),m=ze(e,"usage",null),yr(m)||(m=null)}catch{}return"tool_calls"===p||null!=f?l({stderr:Yr(c,1e3,In),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:Yr(c,500,In),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:Yr(d,500,In),code:s.status,error:"OUTPUT_VALIDATION_FAILED",errorType:"validation",usage:m}):l({ok:!0,stdout:d,code:s.status,usage:m}))}async function Cn(e,t={}){if(!vr(e))return yn("prompt must be a non-empty string");let r=ze(t,"baseURL",null);if(!vr(r))return yn("baseURL must be a non-empty string");let n=ze(t,"model",null);if(!vr(n))return yn("model must be a non-empty string");let o=ze(t,"key",null),i=ze(t,"system",null),l=ze(t,"body",null);yr(l)||(l={});let a=ze(t,"headers",null);yr(a)||(a={});let u=bn(ze(t,"timeoutMs",null),Dn),s=ze(t,"maxRetries",null);s=Kr(s)?Rr(s):0;let c=bn(ze(t,"retryDelayMs",null),5e3),d=Mn(ze(t,"validate",null)),p=r.replace(/\/+$/,"")+"/chat/completions",f=[];vr(i)&&f.push({role:"system",content:i}),f.push({role:"user",content:e});let m={model:n,messages:f,...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 kr(Math.min(c*e,15e3)),y=await Nn(p,h,m,u,d),g=e+1,y.ok)return y.attempts=g,y;let t=y.code;if(_r(t)&&t>=400&&t<500&&429!==t)break}return y.attempts=g,y}let Pn=wn,Ln={funWithMsg:e=>`(truncated, total ${e.length} chars)`};function Un(e){if(!zr(e))return"";let t=[];for(let r of e){if("message"!==ze(r,"type",""))continue;let e=ze(r,"content",null);if(zr(e))for(let r of e){let e=ze(r,"text",null);vr(e)&&t.push(e)}}return t.join("")}async function Rn(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: ${ze(e,"cause.code","")||e.message}`,errorType:"fetch"})}if(clearTimeout(u),!s.ok)return l({stderr:Yr(c,1e3,Ln),code:s.status,error:`HTTP ${s.status}`,errorType:"http"});let d=null,p="",f="",m="",h=null,y=!0;try{let e=JSON.parse(c);d=ze(e,"output",null),p=ze(e,"status",""),f=ze(e,"incomplete_details.reason",""),m=ze(e,"error.message","")||ze(e,"error.code",""),h=ze(e,"usage",null),yr(h)||(h=null)}catch{y=!1}if(!y||!zr(d))return l({stderr:Yr(c,500,Ln),code:s.status,error:"INVALID_RESPONSE: missing output array",errorType:"invalid-response",usage:h});if(d.some(e=>"function_call"===ze(e,"type","")))return l({stderr:Yr(c,1e3,Ln),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"!==p){let e=f||m||p||"unknown";return l({stdout:Yr(Un(d),500,Ln),stderr:Yr(c,500,Ln),code:s.status,error:`INCOMPLETE_RESPONSE: status=${p||"missing"} (${e})`,errorType:"incomplete",usage:h})}let g=Un(d);return""===g?l({stderr:Yr(c,500,Ln),code:s.status,error:"INVALID_RESPONSE: no output_text in output messages",errorType:"invalid-response",usage:h}):o&&!o(g)?l({stdout:Yr(g,500,Ln),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 yn("prompt must be a non-empty string");let r=ze(t,"baseURL",null);if(!vr(r))return yn("baseURL must be a non-empty string");let n=ze(t,"model",null);if(!vr(n))return yn("model must be a non-empty string");let o=ze(t,"key",null),i=ze(t,"system",null),l=ze(t,"body",null);yr(l)||(l={});let a=ze(t,"headers",null);yr(a)||(a={});let u=bn(ze(t,"timeoutMs",null),Pn),s=ze(t,"maxRetries",null);s=Kr(s)?Rr(s):0;let c=bn(ze(t,"retryDelayMs",null),5e3),d=Mn(ze(t,"validate",null)),p=r.replace(/\/+$/,"")+"/responses",f={model:n,input:e};vr(i)&&(f.instructions=i),f={...f,...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 kr(Math.min(c*e,15e3)),h=await Rn(p,m,f,u,d),y=e+1,h.ok)return h.attempts=y,h;let t=h.code;if(_r(t)&&t>=400&&t<500&&429!==t)break}return h.attempts=y,h}let Fn={opencode:kn,claude:Sn,codex:Tn,antigravity:En,"api-openai-compat":Cn,"api-openai-responses":zn};function Bn(e){return e!=e}function Vn(e){return null==e?[]:function(e,t){return De(t,function(t){return e[t]})}(e,H(e))}var Kn=Math.max;function Jn(e,t,r,n){e=Y(e)?e:Vn(e),r=r&&!n?Ir(r):0;var o=e.length;return r<0&&(r=Kn(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,Bn,r)}(e,t,r)>-1}async function qn(e,t,r={}){let n=H(Fn);return vr(e)&&Jn(n,e)?(0,Fn[e])(t,r):yn(`unknown ai kind: "${e}" (available: ${n.join(", ")})`)}let Wn=["providers","budgetMs","minAttemptMs","cooldownMs","shouldStop","coolDetect","store","onEvent","meta"],Yn=["id","keys","meta"],Hn=wn,Gn={cursors:{}};function Qn(e){let t=ze(e,"error","");vr(t)||(t="");let r=ze(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 Xn(e,t={}){if(!vr(e))return{...yn("prompt must be a non-empty string"),tried:[]};let r=ze(t,"providers",null),n=zr(r)?r.filter(yr):[];if(0===n.length)return{...yn("providers must be a non-empty array"),tried:[]};let o=bn(ze(t,"budgetMs",null),null),i=null===o?null:Date.now()+o,l=bn(ze(t,"minAttemptMs",null),2e4),{state:a,saveState:u}=function(e){let t=yr(e)&&Fr(e.get)&&Fr(e.set),r=null;if(t)try{r=e.get()}catch{}return yr(r)||(r=t?{cursors:{}}:Gn),yr(r.cursors)||(r.cursors={}),yr(r.cooling)||(r.cooling={}),{state:r,saveState:()=>{if(t)try{e.set(r)}catch{}}}}(ze(t,"store",null)),s=bn(ze(t,"cooldownMs",null),0),c=ze(t,"coolDetect",null);Fr(c)||(c=null);let d=ze(t,"shouldStop",null);Fr(d)||(d=null);let p=()=>{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=ze(n,"id",null),u=vr(e)?ze(t.cooling,e,null):null;Vr(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 f=ze(t,"onEvent",null),m=e=>{if(Fr(f))try{f(e)}catch{}},h=hr(t,Wn),y=[],g=null,v=null;for(let t=0;t<n.length;t++){let r=n[t],o=ze(r,"id",null),d=vr(o);d||(o=String(t));let f=ze(r,"kind",null),b=ze(r,"model",null),w=ze(r,"keys",null),_=zr(w)?w.filter(vr):[],k=_.length,O=hr(r,Yn),j=0;if(k>0){let e=ze(a.cursors,o,0);j=Vr(e)?Rr(e)%k:0}let S=k>0?k:1,x=!1;for(let t=0;t<S&&!x;t++){if(p())return m({type:"aborted",providerId:o,keyIndex:null,keyId:o}),y.push({providerId:o,keyIndex:null,keyId:o,outcome:"aborted"}),{...yn("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=bn(ze(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"}),{...yn("budget exhausted","budget"),tried:y};S=Math.min(S,e)}w.timeoutMs=S,m({type:"try",providerId:o,keyIndex:r,keyId:n,kind:f,model:b});let T=await qn(f,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:f,model:b,tried:y};if(g=T,v={providerId:o,keyIndex:r,kind:f,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||yn("all providers failed","exec"),...v||{},tried:y}}function Zn(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!!zr(e)&&0===e.length}(e)||!!wr(e)))))}function eo(e){return!!zr(e)&&(0!==e.length&&(1!==e.length||!Zn(e[0])))}function to(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 ro=["【執行約束】你只需把結果輸出在回覆內容中。","禁止建立、修改或刪除任何檔案,也不要執行任何會改動磁碟或系統狀態的指令——","呼叫端只讀取你的回覆文字,任何寫入磁碟的動作都不會被採用,只會製造無人讀取的垃圾檔。","唯讀查閱(讀取檔案、搜尋內容、列出目錄)不在此限,需要時請照常使用。","",""].join("\n"),no=["providers","spec","check","parse","rawText","promptPrefix","meta"];async function oo(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=ze(t,"providers",null),o=ze(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=[ze(t,"use","")],n=ze(t,"fallback",null);eo(n)&&(r=[...r,...n]);let o=[],i=[];for(let t of r){let r=ze(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===ze(t,"rawText",!1),u=ze(t,"parse",null);Fr(u)||(u=to);let s=ze(t,"check",null);Fr(s)||(s=null);let c=ze(t,"promptPrefix",null);vr(c)||(c=""===c?"":ro);let d=await Xn(c+e,{...hr(t,no),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:ze(t,"timeoutMs",null)||wn}),p=null;d.ok&&(p=a?String(d.stdout||"").trim():u(d.stdout));let f=ze(d,"providerId",null),m=ze(d,"keyIndex",null);return{ok:d.ok&&null!==p,json:p,providerId:f,keyIndex:m,keyId:null===m?f:`${f}#${m}`,ms:Date.now()-r,tried:ze(d,"tried",[]),usage:ze(d,"usage",null),error:d.ok?"":ze(d,"error","unknown error"),...d.ok?{}:{errorType:ze(d,"errorType","exec")}}}async function io(e={}){let t=Date.now(),r=ze(e,"providers",null),n=ze(e,"task",""),o=ze(e,"agents",null),i=ze(e,"integrate",null),l=ze(e,"check",null),a=ze(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(!eo(o))return{ok:!1,result:null,integrated:!1,agents:[],candidates:[],totalMs:0,error:"agents must be a non-empty array"};let u=ze(e,"minCandidates",null);u=Vr(u)?Rr(u):2;let s=await Promise.all(o.map(e=>{let{use:t,fallback:o,check:i,meta:u,...s}=e;return oo(n,{...a,...s,providers:r,spec:{use:t,fallback:o},check:Fr(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(ze(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:p,prompt:f,check:m,meta:h,...y}=i,g=Fr(f)?f(c):function(e,t={}){let r=ze(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 oo(g,{...a,...y,providers:r,spec:{use:d,fallback:p},check:Fr(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 lo=["id","use","fallback","prompt","check","meta"];async function ao(e={}){let t=Date.now(),r=ze(e,"providers",null),n=ze(e,"input",null),o=ze(e,"stages",null),i=ze(e,"callOpt",{});if(!eo(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(ze(c,"id",""))?c.id:`stage${e+1}`;u.push(d);let p=ze(c,"prompt",null);if(!Fr(p))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 f=p({input:n,prev:s,results:l,index:e});if(!vr(f))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,lo),h=await oo(f,{...i,...m,providers:r,spec:{use:ze(c,"use",""),fallback:ze(c,"fallback",null)},check:ze(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 uo=["stages","input"],so=["task","agents","integrate","check","schema","minCandidates"];var co=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 fo(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 mo(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 ho(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,p=!0,f=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;p=!1;break}if(f){if(!fo(t,function(e,t){if(!mo(f,t)&&(m===e||o(m,e,r,n,i)))return f.push(t)})){p=!1;break}}else if(m!==h&&!o(m,h,r,n,i)){p=!1;break}}return i.delete(e),i.delete(t),p}function yo(e){var t=-1,r=Array(e.size);return e.forEach(function(e,n){r[++t]=[n,e]}),r}function go(e){var t=-1,r=Array(e.size);return e.forEach(function(e){r[++t]=e}),r}var vo=u?u.prototype:void 0,bo=vo?vo.valueOf:void 0;var wo=Object.prototype.hasOwnProperty;var _o="[object Arguments]",ko="[object Array]",Oo="[object Object]",jo=Object.prototype.hasOwnProperty;function So(e,t,r,n,o,i){var l=O(e),a=O(t),u=l?ko:At(e),s=a?ko:At(t),c=(u=u==_o?Oo:u)==Oo,d=(s=s==_o?Oo:s)==Oo,p=u==s;if(p&&T(e)){if(!T(t))return!1;l=!0,c=!1}if(p&&!c)return i||(i=new Fe),l||U(e)?ho(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 Et(e),new Et(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=yo;case"[object Set]":var u=1&n;if(a||(a=go),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=ho(a(e),a(t),n,o,i,l);return l.delete(e),c;case"[object Symbol]":if(bo)return bo.call(e)==bo.call(t)}return!1}(e,t,u,r,n,o,i);if(!(1&r)){var f=c&&jo.call(e,"__wrapped__"),m=d&&jo.call(t,"__wrapped__");if(f||m){var h=f?e.value():e,y=m?t.value():t;return i||(i=new Fe),o(h,y,r,n,i)}}return!!p&&(i||(i=new Fe),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:wo.call(t,c)))return!1}var d=i.get(e),p=i.get(t);if(d&&p)return d==t&&p==e;var f=!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)){f=!1;break}m||(m="constructor"==c)}if(f&&!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||(f=!1)}return i.delete(e),i.delete(t),f}(e,t,r,n,o,i))}function xo(e,t,r,n,o){return e===t||(null==e||null==t||!y(e)&&!y(t)?e!=e&&t!=t:So(e,t,r,n,xo,o))}function To(e){return e==e&&!q(e)}function Ao(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=H(e),r=t.length;r--;){var n=t[r],o=e[n];t[r]=[n,o,To(o)]}return t}(e);return 1==t.length&&t[0][2]?Ao(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 Fe;if(n)var p=n(s,c,u,e,t,d);if(!(void 0===p?xo(c,s,3,n,d):p))return!1}}return!0}(r,e,t)}}function Eo(e,t){return null!=e&&t in Object(e)}function Mo(e,t){return null!=e&&function(e,t,r){for(var n=-1,o=(t=Le(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)&&E(o)&&$(l,o)&&(O(e)||k(e))}(e,t,Eo)}function Do(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 Io(e){return"function"==typeof e?e:null==e?ur:"object"==typeof e?O(e)?function(e,t){return Z(e)&&To(t)?Ao(Ue(e),t):function(r){var n=ze(r,e);return void 0===n&&n===t?Mo(r,e):xo(t,n,3)}}(e[0],e[1]):$o(e):Do(e)}var No,Co=function(e,t,r){for(var n=-1,o=Object(e),i=r(e),l=i.length;l--;){var a=i[No?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&&Co(e,t,H)}),Lo=Po;function Uo(e,t){var r=-1,n=Y(e)?Array(e.length):[];return Lo(e,function(e,o,i){n[++r]=t(e,o,i)}),n}function Ro(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)||_r(e)||G(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 Fo(e,t){let r="";if(vr(e)||_r(e))r=zo(e);else{if(!eo(e))return{};o="",r=null==(n=e)?"":co.call(n,o)}var n,o,i,l;return _r(t)&&(t=zo(t)),vr(t)&&(t=[t]),eo(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=Ro(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)?De:Uo)(i,Io(l)))):{}}function Bo(e){let t=null,n=an(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 Vo(e,t){return vr(e)&&Kr(t)?0===(t=Rr(t))?e:Jr(e,e.length-t):""}function Ko(e){if(!vr(e))return{path:"",isRoot:!1};for(;e.indexOf("\\\\")>=0;)e=e.replace("\\\\","\\");for(;e.indexOf("//")>=0;)e=e.replace("//","/");if(":"===qr(e,1))return{path:`${e}\\`,isRoot:!0};if("\\"===qr(e,1)){let t=Vo(e,1);return":"===qr(t,1)?{path:e,isRoot:!0}:{path:t,isRoot:!1}}if("/"===qr(e,1)){let t=Vo(e,1);return 0===t.length?{path:e,isRoot:!0}:{path:t,isRoot:!1}}return{path:e,isRoot:!1}}function Jo(e){if(!vr(e))return"";let t=Ko(e);if(t.isRoot)return t.path;let r=function(e){if(!vr(e))return"";let t=Ko(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=Ko(e=Vo(e,r.length));return n.isRoot,n.path}function qo(e,t={}){let r=ze(t,"fs");if(!on(e,{fs:r}))return!1;let n=r.lstatSync(e);return!n.isFile()&&!n.isSymbolicLink()}function Wo(e,t,r={}){let n=null,o=ze(r,"fs"),i=Jo(e);qo(i,{fs:o})||function(e,t={}){let r=ze(t,"fs");if(qo(e,{fs:r}))return{success:"input folder is already exists: "+e};if(on(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 Yo(e,t,n={}){let o=null;if(!yr(t)&&!zr(t))return{error:"inp is not an object or array"};let i=ze(n,"useFormat",null);On(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}:Wo(e,l,{fs:r})}let Ho=2e4;function Go(e){return ze(Bo(e),"success",null)}function Qo(e){if(yr(e)){for(let t in e)return!0;return!1}return!1}function Xo(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 Zo(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=ze(t,"headers",null);Qo(o)||(o={});let i=ze(t,"method",null);vr(i)||(i="GET");let l=ze(t,"body",null);Qo(l)?(l=JSON.stringify(l),vr(ze(o,"Content-Type",null))||(o={...o,"Content-Type":"application/json"})):vr(l)||(l=null);let a=bn(ze(t,"timeoutMs",null),Ho),u=bn(ze(t,"maxBodyBytes",null),1048576),s=ze(t,"redact",null);eo(s)||(s=[]);let c=e=>Xo(e,s).slice(0,300),d=new AbortController,p=setTimeout(()=>{d.abort()},a),f=null,m="";try{try{f=await fetch(e,{method:i,headers:o,body:l,signal:d.signal})}catch(e){return"AbortError"===ze(e,"name","")?n(!1,0,null,`request timeout over ${a}ms`,"timeout"):n(!1,0,null,`network error: ${Xo(ze(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}}(f,u);if(!e.ok)return d.abort(),n(!1,f.status,null,`response body too large: ${e.bytes} bytes over limit ${u}`,"toolarge");m=e.text}catch(e){return"AbortError"===ze(e,"name","")?n(!1,f.status,null,`request timeout over ${a}ms while reading body`,"timeout"):n(!1,f.status,null,`read body error: ${Xo(ze(e,"message","unknown"),s)}`,"network")}}finally{clearTimeout(p)}if(401===f.status)return n(!1,f.status,null,`unauthorized(401), credential rejected (expired or revoked): ${c(m)}`,"auth");if(403===f.status)return n(!1,f.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===f.status)return n(!1,f.status,null,`rate limited(429) by usage endpoint: ${c(m)}`,"ratelimit");if(!f.ok)return n(!1,f.status,null,`http error(${f.status}): ${c(m)}`,"http");let h=null;try{h=JSON.parse(m)}catch(e){return n(!1,f.status,null,`invalid json: ${c(m)}`,"parse")}return n(!0,f.status,h,"","")}function ei(e){return!_r(e)||Ur(e)<=0?"":(e=Ur(e))%86400==0?e/86400+"天":e%3600==0?e/3600+"小時":e%60==0?e/60+"分鐘":`${e}秒`}function ti(e,t){if(!vr(t))return"";let r=ei(e);return""===r?t:`${r}(${t})`}function ri(e={}){let t=ze(e,"key","");vr(t)||(t="");let r=ze(e,"windowSeconds",null);r=_r(r)?Ur(r):null;let n=ze(e,"label","");vr(n)||(n=ei(r));let o=ze(e,"usedPercent",null);o=_r(o)?Math.min(100,Math.max(0,Ur(o))):null;let i=null;null!==o&&(i=Math.round(100*(100-o))/100);let l=ze(e,"resetAt","");if(_r(l)&&Ur(l)>0)l=new Date(1e3*Ur(l)).toISOString();else if(vr(l)){let e=new Date(l);l=isNaN(e.getTime())?"":e.toISOString()}else l="";let a=ze(e,"resetAfterSeconds",null);if(_r(a))a=Math.max(0,Math.round(Ur(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=ze(e,"scope","");vr(u)||(u="");let s=ze(e,"active",null);On(s)||(s=!1);let c=ze(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 ni(e,t={}){vr(e)||(e="");let r=ze(t,"email","");vr(r)||(r="");let n=ze(t,"emailWant","");vr(n)||(n="");let o=ze(t,"error","");vr(o)||(o="");let i=ze(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=ze(t,"windows",null);eo(a)||(a=[]);let u=ze(t,"plan","");vr(u)||(u="");let s=ze(t,"planTier","");vr(s)||(s="");let c=ze(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:ze(t,"credits",null),raw:ze(t,"raw",null),error:o,errorType:i,durationMs:ze(t,"durationMs",0)}}let oi=604800,ii=[["five_hour",18e3,""],["seven_day",oi,""],["seven_day_opus",oi,"Opus"],["seven_day_sonnet",oi,"Sonnet"],["seven_day_cowork",oi,"Cowork"],["seven_day_oauth_apps",oi,"OAuth apps"]],li=["ANTHROPIC_API_KEY","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX"];function ai(e){let t=ze(e,"group",""),r=null;"session"===t?r=18e3:"weekly"===t&&(r=oi);let n=[],o=ze(e,"scope.model.display_name","");vr(o)&&n.push(o);let i=ze(e,"scope.surface","");vr(i)&&n.push(i);let l=n.join("/");return ri({key:ze(e,"kind",""),label:ti(r,l),windowSeconds:r,usedPercent:ze(e,"percent",null),resetAt:ze(e,"resets_at",""),scope:l,active:ze(e,"is_active",!1),severity:ze(e,"severity","")})}let{buildSpawnArgs:ui,buildSpawnEnv:si}=sn;async function ci(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(zr(r)||(r=[]),!zr(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=ze(o,"timeoutMs");Vr(a)||(a=12e4);let u=ze(o,"jsonrpc");!0===u&&(u="2.0"),vr(u)||(u=null);let s=ze(o,"continueOnError");On(s)||(s=!1);let c=ze(o,"onNotify"),d=ze(o,"onServerRequest"),p=new Map,f=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={}){zr(r)||(r=[]),yr(n)||(n={});let o=ze(n,"cwd");vr(o)||(o=process.cwd());let i=ze(n,"env");yr(i)||(i=void 0);let l=ze(n,"timeoutMs");Vr(l)||(l=null);let a=ze(n,"exitGraceMs");Kr(a)||(a=2e3);let u=ze(n,"killWaitMs");Kr(u)||(u=3e3);let s=ze(n,"stderrKeep");Kr(s)||(s=4e3);let c=ze(n,"onLine"),d=ze(n,"onStdout"),p=ze(n,"onStderr"),f=ze(n,"onExit"),m=Date.now(),h=!1,y=null,g=!1,v=!1,b=!1,w="",_="",k=null,O=null,j=null,S=br(),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,Fr(f)&&f(y),S.resolve(y))},$=()=>x||(x=br(),S.then(e=>{x.resolve(e)}),x);if(!vr(t))return T.write=async()=>!1,T.writeLine=async()=>!1,T.stop=$,setTimeout(()=>{A({error:"command 須為非空字串"})},1),T;let E,M=ui(t,r);try{E=e.spawn(M.file,M.args,{cwd:o,stdio:["pipe","pipe","pipe"],windowsHide:!0,env:si(i),...M.opt})}catch(e){return T.write=async()=>!1,T.writeLine=async()=>!1,T.stop=$,setTimeout(()=>{A({error:`${e.code||"UNKNOWN"}: ${e.message}`})},1),T}T.pid=E.pid||null;let D=new TextDecoder("utf-8"),I=new TextDecoder("utf-8"),N=(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)),Fr(c)&&c(e),r=_.indexOf("\n")}if(t&&""!==_){let e=_;_="",e.endsWith("\r")&&(e=e.slice(0,-1)),Fr(c)&&c(e)}},C=e=>{w=0!==s?(w+e).slice(-s):""};E.stdout.on("data",e=>{let t=D.decode(e,{stream:!0});t&&(Fr(d)&&d(t),N(t,!1))}),E.stderr.on("data",e=>{let t=I.decode(e,{stream:!0});t&&(Fr(p)&&p(t),C(t))}),E.stdin.on("error",()=>{});let P=e=>{v=!0,nn(E.pid).catch(()=>{}),j=setTimeout(()=>{h||A({code:null,exited:!1,error:e})},u)};return null!==l&&(k=setTimeout(()=>{h||(g=!0,P(`TIMEOUT after ${l/1e3}s(子進程未能結束)`))},l)),E.on("error",e=>{A({error:`${e.code||"UNKNOWN"}: ${e.message}`})}),E.on("close",(e,t)=>{if(h)return;let r=D.decode();r&&(Fr(d)&&d(r),N(r,!1)),N("",!0);let n=I.decode();n&&(Fr(p)&&p(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=br();if(h||b||E.stdin.destroyed||!E.stdin.writable)return t.resolve(!1),t;try{E.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=br(),h)return x.resolve(y),x;b=!0;try{E.stdin.end()}catch{}return O=setTimeout(()=>{h||P("STOP_TIMEOUT(子進程未能結束)")},a),S.then(e=>{x.resolve(e)}),x},T}(t,r,{cwd:ze(o,"cwd"),env:ze(o,"env"),timeoutMs:a,exitGraceMs:ze(o,"exitGraceMs"),onStderr:ze(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=p.get(t.id);return void(e&&(p.delete(t.id),e.pm.resolve({msg:t})))}r&&vr(t.method)?Fr(d)&&d(t,v):Fr(c)&&c(t)},onExit:e=>{f=e;for(let[t,r]of p)r.pm.resolve({exit:e});p.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(f||await v.stop(),e.notify);break}continue}let t=m;m+=1;let r=br();if(p.set(t,{method:e.method,pm:r}),!await v.writeLine(JSON.stringify(g(t,e.method,e.params)))){p.delete(t),w=b(f||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=ze(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=ze(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 di(e,t){for(let r of t){let t=ze(e,r,"");if(vr(t))return t}return""}function pi(e,t,r){if(!Qo(e))return null;let n=ze(e,"limit_window_seconds",null),o=_r(n)?Ur(n):null;return ri({key:t,label:ti(o,r),windowSeconds:o,usedPercent:ze(e,"used_percent",null),resetAt:ze(e,"reset_at",""),resetAfterSeconds:ze(e,"reset_after_seconds",null),scope:r})}function fi(e,t,r){for(let n of[e,ze(e,"rate_limit",null),ze(e,"rateLimit",null)]){if(!Qo(n))continue;let e=ze(n,t,null);if(Qo(e)||(e=ze(n,r,null)),Qo(e))return e}return null}function mi(e){if(!Qo(e))return null;if(void 0!==ze(e,"used_percent",void 0))return e;let t=ze(e,"window",null);if(Qo(t))return t;let r=ze(e,"rate_limit",null);return Qo(r)&&void 0!==ze(r,"used_percent",void 0)?r:null}function hi(e){let t=di(e,["email"]),r=di(e,["plan_type"]),n=[];for(let t of["primary","secondary"]){let r=pi(ze(e,`rate_limit.${t}_window`,null),t,"");null!==r&&n.push(r)}for(let t of["primary","secondary"]){let r=pi(ze(e,`code_review_rate_limit.${t}_window`,null),`code_review:${t}`,"code review");null!==r&&n.push(r)}let o=function(e){let t=[ze(e,"additional_rate_limits",null),ze(e,"rate_limit.additional_rate_limits",null)];for(let e of t){if(eo(e))return e;if(Qo(e))return Object.keys(e).map(t=>{let r=e[t];if(!Qo(r))return r;let n=di(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=di(t,["limit_name","metered_limit_name","name","id"]);""===r&&(r=`additional_${e+1}`);let i=di(t,["display_name","title","name","limit_name","metered_limit_name"]),l=""===i?r:i,a=`${r} ${i}`.toLowerCase(),u=fi(t,"primary_window","primaryWindow"),s=fi(t,"secondary_window","secondaryWindow");if(null===u&&null===s){let e=mi(t);if(null!==e){let t=ze(e,"limit_window_seconds",null);/weekly|secondary|reserve/.test(a)||_r(t)&&Ur(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:ze(e,"credits.has_credits",!1),unlimited:ze(e,"credits.unlimited",!1),balance:ze(e,"credits.balance",""),resetCreditsAvailable:ze(e,"rate_limit_reset_credits.available_count",null),spendControlReached:ze(e,"spend_control.reached",!1),rateLimitReachedType:ze(e,"rate_limit_reached_type",null),individualLimit:ze(e,"spend_control.individual_limit",null)}}}let yi=[{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 gi(e,t,r){if(!Qo(e))return null;let n=ze(e,"windowDurationMins",null),o=_r(n)?60*Ur(n):null;return ri({key:t,label:ti(o,r),windowSeconds:o,usedPercent:ze(e,"usedPercent",null),resetAt:ze(e,"resetsAt",""),scope:r})}async function vi(e,r,n){let o=ze(e,"env",null);yr(o)||(o=process.env);let i=t.join(r,"auth.json"),l=Go(i),a=ze(l,"tokens.access_token",""),u=ze(l,"tokens.account_id",""),s="",c="",d=ze(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=ze(e,"email","");vr(t)&&(s=t);let r=ze(e,["https://api.openai.com/auth","chatgpt_plan_type"],"");vr(r)&&(c=r)}if(!vr(a)){return vr(ze(l,"OPENAI_API_KEY",""))||vr(ze(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 p=ze(e,"userAgent",null);vr(p)||(p="codex-cli/0.153.0");let f=ze(e,"originator",null);vr(f)||(f="codex_cli_rs");let m={Authorization:`Bearer ${a}`,"User-Agent":p,originator:f};vr(u)&&(m["ChatGPT-Account-ID"]=u);let h=ze(e,"usageUrl",null);vr(h)||(h="https://chatgpt.com/backend-api/wham/usage");let y=await Zo(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=hi(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 bi(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 wi="1.1.11",_i={"5h":18e3,five_hour:18e3,"five-hour":18e3,weekly:604800,week:604800,daily:86400,day:86400};function ki(e,t){let r=ze(t,"id","");if(!vr(r))return null;let n=ze(t,"remaining_fraction",null),o=null;_r(n)&&(o=Math.round(100*(1-Ur(n))*100)/100);let i=ze(e,"name","");vr(i)||(i="");let l=function(e){if(!vr(e))return null;let t=e.trim().toLowerCase();if(void 0!==_i[t])return _i[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}(ze(t,"window","")),a=ei(l);""===a&&(a=ze(t,"name",""),vr(a)||(a=r));let u=""===i?a:`${a}(${i})`,s="normal";return!0===ze(t,"disabled",!1)?s="disabled":null!==o&&o>=100&&(s="exhausted"),ri({key:r,label:u,windowSeconds:l,usedPercent:o,resetAt:ze(t,"reset_time",""),scope:i,active:!1,severity:s})}async function Oi(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 mn(e,n,{timeoutMs:r.timeoutMs,cwd:r.cwd}),i=String(ze(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(ze(o,"stderr","")).trim().slice(-300),r=/timeout/i.test(ze(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: ${ze(o,"error","")}${e?` | stderr: ${e}`:""}`,errorType:r,code:ze(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=ze(l,"num_turns",0);return!vr(ze(l,"command.name",""))||_r(a)&&Ur(a)>0?{ok:!1,data:null,response:ze(l,"response",""),stderr:"",error:`agy did not handle ${t} as a slash command (num_turns=${a}); version may be below ${wi} or --disable-slash-commands is set; this call may have consumed quota`,errorType:"unsupported",code:o.code}:"SUCCESS"!==ze(l,"status","")?{ok:!1,data:ze(l,"command.data",null),response:ze(l,"response",""),stderr:"",error:`agy ${t} reported status=${ze(l,"status","")}: ${String(ze(l,"response","")).slice(0,200)}`,errorType:"exit",code:o.code}:{ok:!0,data:ze(l,"command.data",null),response:ze(l,"response",""),stderr:"",error:"",errorType:"",code:o.code,raw:l}}let ji={KINDS:H(Fn),NO_SIDE_EFFECT:ro,dispatchAi:qn,dispatchAiFallback:Xn,dispatchAiWkf:function(e={}){let t=ze(e,"providers",null);if(!yr(t))throw new Error("dispatchAiWkf: opt.providers must be an object (name → provider entry)");let r=ze(e,"defaults",null);return yr(r)||(r={}),{providers:t,callAi:(e,n={})=>oo(e,{...r,...n,providers:t}),runFanout:(e={})=>io({...e,providers:t,callOpt:{...r,...ze(e,"callOpt",{})}}),runRolePipeline:(e={})=>ao({...e,providers:t,callOpt:{...r,...ze(e,"callOpt",{})}}),runFanoutPipeline:(e={})=>async function(e={}){let t=Date.now(),r=await io(hr(e,uo));if(!r.ok)return{ok:!1,result:null,A:r,B:null,totalMs:Date.now()-t,error:`A failed: ${r.error}`};let n=await ao({...hr(e,so),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,...ze(e,"callOpt",{})}})}},dispatchOpencode:kn,dispatchClaude:Sn,dispatchCodex:Tn,dispatchAntigravity:En,dispatchApiOpenaiCompat:Cn,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=ze(t,"env",null);yr(r)||(r="undefined"!=typeof process&&process&&yr(process.env)?process.env:{});let n=zr(e)?e.filter(yr):[],o=ze(t,"pick",null),i=[],l=n;if(eo(o)){l=[];for(let e of o){let t=n.find(t=>ze(t,"id",null)===e);t?l.push(t):i.push(String(e))}}let a={};if(i.length>0){let e=n.map(e=>ze(e,"id",null)).filter(vr);for(let t of i)a[t]=e.length>0?ze(Fo(t,e),"bestMatch.target",null):null}let u=[],s=[];for(let e of l){let t=ze(e,"envVar",null);if(!vr(t)||eo(ze(e,"keys",null))){u.push(hr(e,["envVar"]));continue}let n=String(ze(r,t,"")||"").split(",").map(e=>e.trim()).filter(Boolean);0!==n.length?u.push({...hr(e,["envVar"]),keys:n}):s.push({id:ze(e,"id",""),envVar:t})}let c=ze(t,"exes",null),d=ze(t,"patch",null);(yr(c)||yr(d))&&(u=u.map(e=>{let t=e,r=yr(c)?ze(c,ze(t,"kind",""),null):null;vr(r)&&!vr(ze(t,"exe",null))&&(t={...t,exe:r});let n=yr(d)?ze(d,ze(t,"id",""),null):null;return yr(n)&&(t={...t,...n}),t}));let p={};for(let e of u)p[e.id]=e;return{providers:u,table:p,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(!zr(e))return 0;let t=0;for(let r of e)t+=bn(ze(r,"timeoutMs",null),wn);return t},createFileStore:function(e={}){let r=ze(e,"file",null);if(!vr(r)){let n=ze(e,"dir",null);if(!vr(n))throw new Error("createFileStore: file or dir is required");let o=ze(e,"name",null);r=t.join(n,vr(o)?o:"ai-cursor.json")}let n=ze(e,"ownKeys",null);eo(n)||(n=["at"]);let o=ze(e,"stamp",null);return Fr(o)||(o=()=>(new Date).toISOString()),{file:r,get:()=>{let e=Bo(r),t=void 0!==ze(e,"error",void 0)?null:ze(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()};Yo(r,t,{useFormat:!0})}}},createUsageCounter:function(e={}){let r=ze(e,"file",null);if(!vr(r)){let n=ze(e,"dir",null);if(!vr(n))throw new Error("createUsageCounter: file or dir is required");let o=ze(e,"name",null);r=t.join(n,vr(o)?o:"ai-usage.json")}let n=ze(e,"getDate",null);Fr(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=ze(e,"keepDays",null);Vr(o)||(o=14);let i=ze(e,"keyOf",null);Fr(i)||(i=e=>ze(e,"keyId",null)||ze(e,"providerId",""));let l=()=>{let e=Bo(r),t=void 0!==ze(e,"error",void 0)?null:ze(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];Yo(r,c,{useFormat:!0})};return{file:r,onEvent:e=>{"try"===ze(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=ze(r,"env",null);yr(l)||(l=process.env);let a=ze(r,"homeDir",null);vr(a)||(a=n.homedir());let u=ze(r,"configDir",null),s=!0;vr(u)||(u=ze(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"),p=bn(ze(r,"timeoutMs",null),Ho),f=ze(r,"userAgent",null);vr(f)||(f="claude-code/2.1.259");let m=!1!==ze(r,"profileFallback",!0),h=ze(r,"usageUrl",null);vr(h)||(h="https://api.anthropic.com/api/oauth/usage");let y=ze(r,"profileUrl",null);vr(y)||(y="https://api.anthropic.com/api/oauth/profile");let g=Go(c),v=Go(d),b=ze(g,"claudeAiOauth.accessToken",""),w=ze(v,"oauthAccount.emailAddress","");vr(w)||(w="");let _=ze(g,"claudeAiOauth.subscriptionType","");vr(_)||(_=ze(v,"oauthAccount.organizationType",""),vr(_)||(_=""));let k=ze(g,"claudeAiOauth.rateLimitTier","");vr(k)||(k=ze(v,"oauthAccount.organizationRateLimitTier",""),vr(k)||(k=""));let O=e=>ni("claude",{email:w,emailWant:i,plan:_,planTier:k,source:"anthropic-oauth-usage-api",durationMs:Date.now()-o,...e});if(!vr(b)){let e=li.filter(e=>vr(ze(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(ze(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":f,"Content-Type":"application/json"},S=await Zo(h,{headers:j,timeoutMs:p,redact:[b]});if(!S.ok){let e=S.error;if("auth"===S.errorType){let t=ze(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} ${_r(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 Zo(y,{headers:j,timeoutMs:p,redact:[b]});if(e.ok)for(let t of["account.email","account.email_address","email","email_address"]){let r=ze(e.data,t,"");if(vr(r)){w=r;break}}}let T=[],A=ze(x,"limits",null);return T=eo(A)?A.map(ai):ii.map(([e,t,r])=>function(e,t,r,n){let o=ze(e,t,null);return null==o?null:ri({key:t,label:ti(r,n),windowSeconds:r,usedPercent:ze(o,"utilization",null),resetAt:ze(o,"resets_at",""),scope:n})}(x,e,t,r)).filter(e=>null!==e),O({windows:T,credits:{extraUsageEnabled:ze(x,"extra_usage.is_enabled",!1),monthlyLimit:ze(x,"extra_usage.monthly_limit",null),usedCredits:ze(x,"extra_usage.used_credits",null),utilization:ze(x,"extra_usage.utilization",null),spendUsedMinor:ze(x,"spend.used.amount_minor",null),spendCurrency:ze(x,"spend.used.currency",""),spendPercent:ze(x,"spend.percent",null)},raw:{configDir:u,usage:x}})},getQuotaCodex:async function(e="",r={}){let o=Date.now(),i=vr(e)?e:"",l=ze(r,"env",null);yr(l)||(l=process.env);let a=ze(r,"homeDir",null);vr(a)||(a=n.homedir());let u=ze(r,"codexHome",null);vr(u)||(u=ze(l,"CODEX_HOME",""),vr(u)||(u=t.join(a,".codex")));let s=bn(ze(r,"timeoutMs",null),Ho),c=!1!==ze(r,"useAppServer",!0),d=!1!==ze(r,"fallbackHttp",!0),p=(e,t)=>ni("codex",{emailWant:i,source:e,durationMs:Date.now()-o,...t}),f=null;if(c){let e=await async function(e){let t=ze(e,"exe",null);vr(t)||(t="codex");let r=await ci(t,["app-server","--stdio"],yi,{timeoutMs:ze(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=ze(r.results,["account/read","account"],null),o=ze(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=ze(n,"email",""),l=ze(n,"planType",""),a=ze(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=ze(o,"rateLimits",null),c=ze(s,"limitId","codex"),d=gi(ze(s,"primary",null),"primary","");null!==d&&u.push(d);let p=gi(ze(s,"secondary",null),"secondary","");null!==p&&u.push(p);let f=ze(o,"rateLimitsByLimitId",null);if(Qo(f))for(let e of Object.keys(f)){if(e===c)continue;let t=f[e],r=ze(t,"limitName","");vr(r)||(r=e);for(let n of["primary","secondary"]){let o=gi(ze(t,n,null),`${e}:${n}`,r);null!==o&&u.push(o)}}let m={hasCredits:ze(s,"credits.hasCredits",!1),unlimited:ze(s,"credits.unlimited",!1),balance:ze(s,"credits.balance",""),resetCreditsAvailable:ze(o,"rateLimitResetCredits.availableCount",null),resetCredits:ze(o,"rateLimitResetCredits.credits",null),spendControlReached:ze(s,"spendControlReached",!1),rateLimitReachedType:ze(s,"rateLimitReachedType",null),individualLimit:ze(s,"individualLimit",null)};return vr(l)||(l=ze(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 p("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 p("codex-app-server",{email:e.email,plan:e.plan,error:e.error,errorType:e.errorType,raw:e.raw});if(f=e,!d)return p("codex-app-server",{error:e.error,errorType:e.errorType,raw:e.raw})}let m=await vi(r,u,s),h=null!==f?` (app-server path failed: ${f.error})`:"";return m.ok?p("chatgpt-wham-usage-api",{email:m.email,plan:m.plan,windows:m.windows,credits:m.credits,raw:{codexHome:u,appServerError:null!==f?f.error:"",...m.raw}}):p("chatgpt-wham-usage-api",{email:m.email,plan:m.plan,error:`${m.error}${h}`,errorType:m.errorType,raw:null!==f?f.raw:null})},getQuotaAntigravity:async function(e="",i={}){let l=Date.now(),a=vr(e)?e:"",u=ze(i,"exe",null);vr(u)||(u="agy");let s=bn(ze(i,"timeoutMs",null),6e4),c=ze(i,"cwd",null);vr(c)||(c=n.tmpdir());let d=!1!==ze(i,"checkVersion",!0),p=ze(i,"withCredits",null);On(p)||(p=!1);let f=e=>ni("antigravity",{emailWant:a,source:"agy-print-usage",durationMs:Date.now()-l,...e}),m="";if(d){let e=await mn(u,["--version"],{timeoutMs:Math.min(s,15e3),cwd:c});if(!e.ok)return f({error:`agy not found or not executable (${u}): ${ze(e,"error","")}${String(ze(e,"stderr","")).trim()?` | ${String(e.stderr).trim().slice(-200)}`:""}; see https://antigravity.google/docs/cli/ for install and login`,errorType:"notfound"});m=String(ze(e,"stdout","")).trim().split("\n")[0];let t=function(e,t){let r=bi(e),n=bi(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,wi);if(null===t||t<0)return f({error:`agy version [${m||"unknown"}] is below ${wi}; 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 Oi(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&&p&&(g=await Oi(u,"/credits",{timeoutMs:s,cwd:c,logFile:""}))}finally{try{r.unlinkSync(h)}catch(e){}}if(!y.ok)return f({email:v,error:y.error,errorType:y.errorType,raw:{version:m,authMethod:b,response:y.response,stderr:y.stderr}});let w=[],_=ze(y.data,"groups",null);if(eo(_))for(let e of _){let t=ze(e,"buckets",null);if(eo(t))for(let r of t){let t=ki(e,r);null!==t&&w.push(t)}}let k=null;return null!==g&&(k=g.ok?{remainingCredits:ze(g.data,"remaining_credits",null),upgradeUri:ze(g.data,"upgrade_uri","")}:{error:g.error}),f({email:v,windows:w,credits:k,raw:{version:m,authMethod:b,description:ze(y.data,"description",""),usage:y.raw,credits:null!==g?ze(g,"raw",null):null}})}};return ji});
7
7
  //# sourceMappingURL=w-dispatch-ai.umd.js.map