@wengine-ai/llms 2.3.23 → 2.3.232
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -4
- package/dist/api/middleware.d.ts +9 -0
- package/dist/api/routes.d.ts +24 -0
- package/dist/ccr/admin-routes.d.ts +6 -0
- package/dist/ccr/agents/image.agent.d.ts +10 -0
- package/dist/ccr/agents/index.d.ts +28 -0
- package/dist/ccr/agents/type.d.ts +13 -0
- package/dist/ccr/auth.d.ts +8 -0
- package/dist/ccr/claude-config-init.d.ts +1 -0
- package/dist/ccr/codex-accounts.d.ts +9 -0
- package/dist/ccr/codex-usage-cache.d.ts +2 -0
- package/dist/ccr/config.d.ts +6 -0
- package/dist/ccr/create-server.d.ts +6 -0
- package/dist/ccr/health-reconcile.d.ts +22 -0
- package/dist/ccr/models.d.ts +26 -0
- package/dist/ccr/pino-retention.d.ts +1 -0
- package/dist/ccr/plugin-registration.d.ts +6 -0
- package/dist/ccr/request-pipeline.d.ts +37 -0
- package/dist/ccr/usage-merge.d.ts +32 -0
- package/dist/ccr/usage-store.d.ts +109 -0
- package/dist/cjs/server.cjs +337 -350
- package/dist/cjs/server.cjs.map +4 -4
- package/dist/clients/adapters.d.ts +22 -0
- package/dist/esm/server.mjs +338 -350
- package/dist/esm/server.mjs.map +4 -4
- package/dist/index.html +227 -0
- package/dist/plugins/index.d.ts +4 -0
- package/dist/plugins/output/console-handler.d.ts +23 -0
- package/dist/plugins/output/index.d.ts +29 -0
- package/dist/plugins/output/output-manager.d.ts +108 -0
- package/dist/plugins/output/temp-file-handler.d.ts +48 -0
- package/dist/plugins/output/types.d.ts +157 -0
- package/dist/plugins/output/webhook-handler.d.ts +35 -0
- package/dist/plugins/plugin-manager.d.ts +62 -0
- package/dist/plugins/token-speed.d.ts +5 -0
- package/dist/plugins/types.d.ts +25 -0
- package/dist/server.d.ts +110 -0
- package/dist/services/active-probe.d.ts +96 -0
- package/dist/services/config.d.ts +30 -0
- package/dist/services/provider-health.d.ts +135 -0
- package/dist/services/provider.d.ts +32 -0
- package/dist/services/proxy.d.ts +58 -0
- package/dist/services/quota-adapters.d.ts +16 -0
- package/dist/services/quota-store.d.ts +12 -0
- package/dist/services/rate-limit.d.ts +26 -0
- package/dist/services/tokenizer.d.ts +45 -0
- package/dist/services/transformer.d.ts +28 -0
- package/dist/tiktoken_bg.wasm +0 -0
- package/dist/tokenizer/api-tokenizer.d.ts +46 -0
- package/dist/tokenizer/huggingface-tokenizer.d.ts +52 -0
- package/dist/tokenizer/tiktoken-tokenizer.d.ts +20 -0
- package/dist/transformer/anthropic.transformer.d.ts +18 -0
- package/dist/transformer/cerebras.transformer.d.ts +16 -0
- package/dist/transformer/cleancache.transformer.d.ts +6 -0
- package/dist/transformer/customparams.transformer.d.ts +30 -0
- package/dist/transformer/deepseek.transformer.d.ts +7 -0
- package/dist/transformer/enhancetool.transformer.d.ts +5 -0
- package/dist/transformer/forcereasoning.transformer.d.ts +7 -0
- package/dist/transformer/gemini.transformer.d.ts +10 -0
- package/dist/transformer/groq.transformer.d.ts +7 -0
- package/dist/transformer/index.d.ts +49 -0
- package/dist/transformer/kimi.transformer.d.ts +17 -0
- package/dist/transformer/maxcompletiontokens.transformer.d.ts +6 -0
- package/dist/transformer/maxtoken.transformer.d.ts +9 -0
- package/dist/transformer/openai.responses.transformer.d.ts +28 -0
- package/dist/transformer/openai.transformer.d.ts +5 -0
- package/dist/transformer/opencode.transformer.d.ts +29 -0
- package/dist/transformer/openrouter.transformer.d.ts +9 -0
- package/dist/transformer/reasoning.transformer.d.ts +10 -0
- package/dist/transformer/sampling.transformer.d.ts +13 -0
- package/dist/transformer/streamoptions.transformer.d.ts +6 -0
- package/dist/transformer/tooluse.transformer.d.ts +7 -0
- package/dist/transformer/vercel.transformer.d.ts +10 -0
- package/dist/transformer/vertex-claude.transformer.d.ts +8 -0
- package/dist/transformer/vertex-gemini.transformer.d.ts +8 -0
- package/dist/types/llm.d.ts +233 -0
- package/dist/types/transformer.d.ts +23 -0
- package/dist/utils/cache.d.ts +17 -0
- package/dist/utils/converter.d.ts +12 -0
- package/dist/utils/debug-log.d.ts +24 -0
- package/dist/utils/fallback-promotion.d.ts +65 -0
- package/dist/utils/gemini.util.d.ts +11 -0
- package/dist/utils/image.d.ts +1 -0
- package/dist/utils/request.d.ts +2 -0
- package/dist/utils/router.d.ts +84 -0
- package/dist/utils/session-id.d.ts +2 -0
- package/dist/utils/sse/SSEParser.transform.d.ts +6 -0
- package/dist/utils/sse/SSESerializer.transform.d.ts +3 -0
- package/dist/utils/sse/index.d.ts +3 -0
- package/dist/utils/sse/rewriteStream.d.ts +9 -0
- package/dist/utils/thinking.d.ts +2 -0
- package/dist/utils/toolArgumentsParser.d.ts +8 -0
- package/dist/utils/vertex-claude.util.d.ts +42 -0
- package/package.json +13 -6
- package/vitest.config.ts +1 -0
- package/dist/index.d.ts +0 -175
- package/dist/plugins.d.ts +0 -42
- package/dist/provider-health.d.ts +0 -39
package/dist/esm/server.mjs
CHANGED
|
@@ -1,415 +1,403 @@
|
|
|
1
|
-
var rC=Object.create;var Qs=Object.defineProperty;var oC=Object.getOwnPropertyDescriptor;var sC=Object.getOwnPropertyNames;var iC=Object.getPrototypeOf,aC=Object.prototype.hasOwnProperty;var re=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var Le=(t,e)=>()=>(t&&(e=t(t=0)),e);var X=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Lu=(t,e)=>{for(var n in e)Qs(t,n,{get:e[n],enumerable:!0})},Ah=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of sC(e))!aC.call(t,o)&&o!==n&&Qs(t,o,{get:()=>e[o],enumerable:!(r=oC(e,o))||r.enumerable});return t};var Ln=(t,e,n)=>(n=t!=null?rC(iC(t)):{},Ah(e||!t||!t.__esModule?Qs(n,"default",{value:t,enumerable:!0}):n,t)),uC=t=>Ah(Qs({},"__esModule",{value:!0}),t);var Sh=X((nx,Xs)=>{Xs.exports.Space_Separator=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/;Xs.exports.ID_Start=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/;Xs.exports.ID_Continue=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/});var Uu=X((rx,vh)=>{var ju=Sh();vh.exports={isSpaceSeparator(t){return typeof t=="string"&&ju.Space_Separator.test(t)},isIdStartChar(t){return typeof t=="string"&&(t>="a"&&t<="z"||t>="A"&&t<="Z"||t==="$"||t==="_"||ju.ID_Start.test(t))},isIdContinueChar(t){return typeof t=="string"&&(t>="a"&&t<="z"||t>="A"&&t<="Z"||t>="0"&&t<="9"||t==="$"||t==="_"||t==="\u200C"||t==="\u200D"||ju.ID_Continue.test(t))},isDigit(t){return typeof t=="string"&&/[0-9]/.test(t)},isHexDigit(t){return typeof t=="string"&&/[0-9A-Fa-f]/.test(t)}}});var Oh=X((ox,xh)=>{var We=Uu(),qu,ot,Cn,ei,jn,jt,Ge,Wu,Fo;xh.exports=function(e,n){qu=String(e),ot="start",Cn=[],ei=0,jn=1,jt=0,Ge=void 0,Wu=void 0,Fo=void 0;do Ge=cC(),fC[ot]();while(Ge.type!=="eof");return typeof n=="function"?zu({"":Fo},"",n):Fo};function zu(t,e,n){let r=t[e];if(r!=null&&typeof r=="object")if(Array.isArray(r))for(let o=0;o<r.length;o++){let s=String(o),a=zu(r,s,n);a===void 0?delete r[s]:Object.defineProperty(r,s,{value:a,writable:!0,enumerable:!0,configurable:!0})}else for(let o in r){let s=zu(r,o,n);s===void 0?delete r[o]:Object.defineProperty(r,o,{value:s,writable:!0,enumerable:!0,configurable:!0})}return n.call(t,e,r)}var be,ye,Po,bn,ke;function cC(){for(be="default",ye="",Po=!1,bn=1;;){ke=wn();let t=Dh[be]();if(t)return t}}function wn(){if(qu[ei])return String.fromCodePoint(qu.codePointAt(ei))}function G(){let t=wn();return t===`
|
|
2
|
-
|
|
3
|
-
`:case"\r":case"\u2028":case"\u2029":G();return;case"/":G(),be="comment";return;case void 0:return G(),Ne("eof")}if(We.isSpaceSeparator(ke)){G();return}return Dh[ot]()},comment(){switch(ke){case"*":G(),be="multiLineComment";return;case"/":G(),be="singleLineComment";return}throw Be(G())},multiLineComment(){switch(ke){case"*":G(),be="multiLineCommentAsterisk";return;case void 0:throw Be(G())}G()},multiLineCommentAsterisk(){switch(ke){case"*":G();return;case"/":G(),be="default";return;case void 0:throw Be(G())}G(),be="multiLineComment"},singleLineComment(){switch(ke){case`
|
|
4
|
-
`:case"\r":case"\u2028":case"\u2029":G(),be="default";return;case void 0:return G(),Ne("eof")}G()},value(){switch(ke){case"{":case"[":return Ne("punctuator",G());case"n":return G(),ar("ull"),Ne("null",null);case"t":return G(),ar("rue"),Ne("boolean",!0);case"f":return G(),ar("alse"),Ne("boolean",!1);case"-":case"+":G()==="-"&&(bn=-1),be="sign";return;case".":ye=G(),be="decimalPointLeading";return;case"0":ye=G(),be="zero";return;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":ye=G(),be="decimalInteger";return;case"I":return G(),ar("nfinity"),Ne("numeric",1/0);case"N":return G(),ar("aN"),Ne("numeric",NaN);case'"':case"'":Po=G()==='"',ye="",be="string";return}throw Be(G())},identifierNameStartEscape(){if(ke!=="u")throw Be(G());G();let t=Hu();switch(t){case"$":case"_":break;default:if(!We.isIdStartChar(t))throw Th();break}ye+=t,be="identifierName"},identifierName(){switch(ke){case"$":case"_":case"\u200C":case"\u200D":ye+=G();return;case"\\":G(),be="identifierNameEscape";return}if(We.isIdContinueChar(ke)){ye+=G();return}return Ne("identifier",ye)},identifierNameEscape(){if(ke!=="u")throw Be(G());G();let t=Hu();switch(t){case"$":case"_":case"\u200C":case"\u200D":break;default:if(!We.isIdContinueChar(t))throw Th();break}ye+=t,be="identifierName"},sign(){switch(ke){case".":ye=G(),be="decimalPointLeading";return;case"0":ye=G(),be="zero";return;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":ye=G(),be="decimalInteger";return;case"I":return G(),ar("nfinity"),Ne("numeric",bn*(1/0));case"N":return G(),ar("aN"),Ne("numeric",NaN)}throw Be(G())},zero(){switch(ke){case".":ye+=G(),be="decimalPoint";return;case"e":case"E":ye+=G(),be="decimalExponent";return;case"x":case"X":ye+=G(),be="hexadecimal";return}return Ne("numeric",bn*0)},decimalInteger(){switch(ke){case".":ye+=G(),be="decimalPoint";return;case"e":case"E":ye+=G(),be="decimalExponent";return}if(We.isDigit(ke)){ye+=G();return}return Ne("numeric",bn*Number(ye))},decimalPointLeading(){if(We.isDigit(ke)){ye+=G(),be="decimalFraction";return}throw Be(G())},decimalPoint(){switch(ke){case"e":case"E":ye+=G(),be="decimalExponent";return}if(We.isDigit(ke)){ye+=G(),be="decimalFraction";return}return Ne("numeric",bn*Number(ye))},decimalFraction(){switch(ke){case"e":case"E":ye+=G(),be="decimalExponent";return}if(We.isDigit(ke)){ye+=G();return}return Ne("numeric",bn*Number(ye))},decimalExponent(){switch(ke){case"+":case"-":ye+=G(),be="decimalExponentSign";return}if(We.isDigit(ke)){ye+=G(),be="decimalExponentInteger";return}throw Be(G())},decimalExponentSign(){if(We.isDigit(ke)){ye+=G(),be="decimalExponentInteger";return}throw Be(G())},decimalExponentInteger(){if(We.isDigit(ke)){ye+=G();return}return Ne("numeric",bn*Number(ye))},hexadecimal(){if(We.isHexDigit(ke)){ye+=G(),be="hexadecimalInteger";return}throw Be(G())},hexadecimalInteger(){if(We.isHexDigit(ke)){ye+=G();return}return Ne("numeric",bn*Number(ye))},string(){switch(ke){case"\\":G(),ye+=lC();return;case'"':if(Po)return G(),Ne("string",ye);ye+=G();return;case"'":if(!Po)return G(),Ne("string",ye);ye+=G();return;case`
|
|
5
|
-
`:case"\r":throw Be(G());case"\u2028":case"\u2029":hC(ke);break;case void 0:throw Be(G())}ye+=G()},start(){switch(ke){case"{":case"[":return Ne("punctuator",G())}be="value"},beforePropertyName(){switch(ke){case"$":case"_":ye=G(),be="identifierName";return;case"\\":G(),be="identifierNameStartEscape";return;case"}":return Ne("punctuator",G());case'"':case"'":Po=G()==='"',be="string";return}if(We.isIdStartChar(ke)){ye+=G(),be="identifierName";return}throw Be(G())},afterPropertyName(){if(ke===":")return Ne("punctuator",G());throw Be(G())},beforePropertyValue(){be="value"},afterPropertyValue(){switch(ke){case",":case"}":return Ne("punctuator",G())}throw Be(G())},beforeArrayValue(){if(ke==="]")return Ne("punctuator",G());be="value"},afterArrayValue(){switch(ke){case",":case"]":return Ne("punctuator",G())}throw Be(G())},end(){throw Be(G())}};function Ne(t,e){return{type:t,value:e,line:jn,column:jt}}function ar(t){for(let e of t){if(wn()!==e)throw Be(G());G()}}function lC(){switch(wn()){case"b":return G(),"\b";case"f":return G(),"\f";case"n":return G(),`
|
|
6
|
-
`;case"r":return G(),"\r";case"t":return G()," ";case"v":return G(),"\v";case"0":if(G(),We.isDigit(wn()))throw Be(G());return"\0";case"x":return G(),dC();case"u":return G(),Hu();case`
|
|
7
|
-
`:case"\u2028":case"\u2029":return G(),"";case"\r":return G(),wn()===`
|
|
8
|
-
`&&G(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":throw Be(G());case void 0:throw Be(G())}return G()}function dC(){let t="",e=wn();if(!We.isHexDigit(e)||(t+=G(),e=wn(),!We.isHexDigit(e)))throw Be(G());return t+=G(),String.fromCodePoint(parseInt(t,16))}function Hu(){let t="",e=4;for(;e-- >0;){let n=wn();if(!We.isHexDigit(n))throw Be(G());t+=G()}return String.fromCodePoint(parseInt(t,16))}var fC={start(){if(Ge.type==="eof")throw ur();$u()},beforePropertyName(){switch(Ge.type){case"identifier":case"string":Wu=Ge.value,ot="afterPropertyName";return;case"punctuator":Zs();return;case"eof":throw ur()}},afterPropertyName(){if(Ge.type==="eof")throw ur();ot="beforePropertyValue"},beforePropertyValue(){if(Ge.type==="eof")throw ur();$u()},beforeArrayValue(){if(Ge.type==="eof")throw ur();if(Ge.type==="punctuator"&&Ge.value==="]"){Zs();return}$u()},afterPropertyValue(){if(Ge.type==="eof")throw ur();switch(Ge.value){case",":ot="beforePropertyName";return;case"}":Zs()}},afterArrayValue(){if(Ge.type==="eof")throw ur();switch(Ge.value){case",":ot="beforeArrayValue";return;case"]":Zs()}},end(){}};function $u(){let t;switch(Ge.type){case"punctuator":switch(Ge.value){case"{":t={};break;case"[":t=[];break}break;case"null":case"boolean":case"numeric":case"string":t=Ge.value;break}if(Fo===void 0)Fo=t;else{let e=Cn[Cn.length-1];Array.isArray(e)?e.push(t):Object.defineProperty(e,Wu,{value:t,writable:!0,enumerable:!0,configurable:!0})}if(t!==null&&typeof t=="object")Cn.push(t),Array.isArray(t)?ot="beforeArrayValue":ot="beforePropertyName";else{let e=Cn[Cn.length-1];e==null?ot="end":Array.isArray(e)?ot="afterArrayValue":ot="afterPropertyValue"}}function Zs(){Cn.pop();let t=Cn[Cn.length-1];t==null?ot="end":Array.isArray(t)?ot="afterArrayValue":ot="afterPropertyValue"}function Be(t){return ti(t===void 0?`JSON5: invalid end of input at ${jn}:${jt}`:`JSON5: invalid character '${Rh(t)}' at ${jn}:${jt}`)}function ur(){return ti(`JSON5: invalid end of input at ${jn}:${jt}`)}function Th(){return jt-=5,ti(`JSON5: invalid identifier character at ${jn}:${jt}`)}function hC(t){console.warn(`JSON5: '${Rh(t)}' in strings is not valid ECMAScript; consider escaping`)}function Rh(t){let e={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(e[t])return e[t];if(t<" "){let n=t.charCodeAt(0).toString(16);return"\\x"+("00"+n).substring(n.length)}return t}function ti(t){let e=new SyntaxError(t);return e.lineNumber=jn,e.columnNumber=jt,e}});var Fh=X((sx,Ph)=>{var Gu=Uu();Ph.exports=function(e,n,r){let o=[],s="",a,u,l="",f;if(n!=null&&typeof n=="object"&&!Array.isArray(n)&&(r=n.space,f=n.quote,n=n.replacer),typeof n=="function")u=n;else if(Array.isArray(n)){a=[];for(let y of n){let g;typeof y=="string"?g=y:(typeof y=="number"||y instanceof String||y instanceof Number)&&(g=String(y)),g!==void 0&&a.indexOf(g)<0&&a.push(g)}}return r instanceof Number?r=Number(r):r instanceof String&&(r=String(r)),typeof r=="number"?r>0&&(r=Math.min(10,Math.floor(r)),l=" ".substr(0,r)):typeof r=="string"&&(l=r.substr(0,10)),d("",{"":e});function d(y,g){let _=g[y];switch(_!=null&&(typeof _.toJSON5=="function"?_=_.toJSON5(y):typeof _.toJSON=="function"&&(_=_.toJSON(y))),u&&(_=u.call(g,y,_)),_ instanceof Number?_=Number(_):_ instanceof String?_=String(_):_ instanceof Boolean&&(_=_.valueOf()),_){case null:return"null";case!0:return"true";case!1:return"false"}if(typeof _=="string")return h(_,!1);if(typeof _=="number")return String(_);if(typeof _=="object")return Array.isArray(_)?w(_):m(_)}function h(y){let g={"'":.1,'"':.2},_={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"},E="";for(let S=0;S<y.length;S++){let T=y[S];switch(T){case"'":case'"':g[T]++,E+=T;continue;case"\0":if(Gu.isDigit(y[S+1])){E+="\\x00";continue}}if(_[T]){E+=_[T];continue}if(T<" "){let R=T.charCodeAt(0).toString(16);E+="\\x"+("00"+R).substring(R.length);continue}E+=T}let b=f||Object.keys(g).reduce((S,T)=>g[S]<g[T]?S:T);return E=E.replace(new RegExp(b,"g"),_[b]),b+E+b}function m(y){if(o.indexOf(y)>=0)throw TypeError("Converting circular structure to JSON5");o.push(y);let g=s;s=s+l;let _=a||Object.keys(y),E=[];for(let S of _){let T=d(S,y);if(T!==void 0){let R=C(S)+":";l!==""&&(R+=" "),R+=T,E.push(R)}}let b;if(E.length===0)b="{}";else{let S;if(l==="")S=E.join(","),b="{"+S+"}";else{let T=`,
|
|
9
|
-
`+s;S=E.join(T),b=`{
|
|
10
|
-
`+s+S+`,
|
|
11
|
-
`+g+"}"}}return o.pop(),s=g,b}function C(y){if(y.length===0)return h(y,!0);let g=String.fromCodePoint(y.codePointAt(0));if(!Gu.isIdStartChar(g))return h(y,!0);for(let _=g.length;_<y.length;_++)if(!Gu.isIdContinueChar(String.fromCodePoint(y.codePointAt(_))))return h(y,!0);return y}function w(y){if(o.indexOf(y)>=0)throw TypeError("Converting circular structure to JSON5");o.push(y);let g=s;s=s+l;let _=[];for(let b=0;b<y.length;b++){let S=d(String(b),y);_.push(S!==void 0?S:"null")}let E;if(_.length===0)E="[]";else if(l==="")E="["+_.join(",")+"]";else{let b=`,
|
|
12
|
-
`+s,S=_.join(b);E=`[
|
|
13
|
-
`+s+S+`,
|
|
14
|
-
`+g+"]"}return o.pop(),s=g,E}}});var Ju=X((ix,Ih)=>{var pC=Oh(),mC=Fh(),gC={parse:pC,stringify:mC};Ih.exports=gC});var Jh={};Lu(Jh,{getFallbackPromotionStore:()=>Br,resetFallbackPromotionStore:()=>vC});function Br(t){return cr||(cr=new Ku,t&&cr.configure(t)),cr}function vC(){cr&&(cr.clearAll(),cr=null)}var SC,Ku,cr,si=Le(()=>{"use strict";Un();SC=600*1e3,Ku=class{promotions=new Map;enabled=!0;ttlMs=SC;configure(e){e?.enabled!==void 0&&(this.enabled=e.enabled),e?.ttlMinutes!==void 0&&(this.ttlMs=e.ttlMinutes*60*1e3)}getKey(e,n,r){return`${e},${n}:${r}`}promote(e,n,r,o,s,a){if(!this.enabled)return;let u=this.getKey(e,n,r),l=`${o},${s}`;this.promotions.set(u,{promotedModel:l,timestamp:Date.now(),ttlMs:a??this.ttlMs})}getPromotion(e,n,r,o){if(!this.enabled)return null;let s=this.getKey(e,n,r),a=this.promotions.get(s);if(!a)return null;if(Date.now()-a.timestamp>=a.ttlMs)return this.promotions.delete(s),null;let[l,...f]=a.promotedModel.split(","),d=f.join(",");if(!Ye().isAvailable(l,d))return this.promotions.delete(s),null;let m=o.find(w=>w.name.toLowerCase()===l.toLowerCase()),C=m?.models?.find(w=>String(w).toLowerCase()===d.toLowerCase());return!m||!C||m.enabled===!1?(this.promotions.delete(s),null):`${m.name},${C}`}clear(e,n,r){let o=this.getKey(e,n,r);this.promotions.delete(o)}clearByPrimary(e,n){let r=`${e},${n}:`,o=0;for(let s of this.promotions.keys())s.startsWith(r)&&(this.promotions.delete(s),o++);return o}clearAll(){this.promotions.clear()}clearExpired(){let e=Date.now();for(let[n,r]of this.promotions)e-r.timestamp>=r.ttlMs&&this.promotions.delete(n)}getAllPromotions(){let e=Date.now(),n=[];for(let[r,o]of this.promotions){let s=o.ttlMs-(e-o.timestamp);s>0&&n.push({key:r,promotedModel:o.promotedModel,remainingMs:s})}return n}},cr=null});import{existsSync as Yh,mkdirSync as TC,readFileSync as DC,writeFileSync as RC}from"fs";import{join as Qh}from"path";import{HOME_DIR as xC}from"@wengine-ai/claude-code-router-shared";function IC(t){try{if(!Yh(Xu))return;let e=JSON.parse(DC(Xu,"utf-8"));if(!Array.isArray(e))return;let n=Date.now();for(let r of e){if(!r||!r.provider||!r.model)continue;let o=r.updatedAt||r.lastFailureTime||0;o&&n-o>1440*60*1e3||t.restore({provider:r.provider,model:r.model,status:r.status,failureCount:r.failureCount??0,successCount:r.successCount??0,lastFailureTime:r.lastFailureTime??0,lastProbeTime:r.lastProbeTime??0,lastError:r.lastError,rateLimitUntil:r.rateLimitUntil})}}catch{}}function Kh(t){try{let e=t.getAllStates();if(e.length===0)return;Yh(Qu)||TC(Qu,{recursive:!0});let n=e.map(r=>({...r,updatedAt:Date.now()}));RC(Xu,JSON.stringify(n,null,2),"utf-8")}catch{}}function Zu(){if(Vh)return;Vh=!0;let t=Ye();IC(t),FC=setInterval(()=>Kh(t),6e4),process.on("exit",()=>Kh(t))}function Ye(t){return Yu||(Yu=new ii(t)),Yu}var OC,PC,ii,Qu,Xu,Vh,FC,Yu,Un=Le(()=>{"use strict";OC=120,PC={enabled:!0,failureThreshold:3,probeIntervalMinutes:5,halfOpenSuccessThreshold:2},ii=class{states=new Map;config;probeTimer;constructor(e){this.config={...PC,...e}}getKey(e,n){return!e||!n?null:`${e},${n}`}recordSuccess(e,n){if(!this.config.enabled)return;let r=this.getKey(e,n);if(!r)return;let o=this.states.get(r);o&&(o.successCount++,!o.rateLimitUntil&&(o.status==="half-open"?o.successCount>=this.config.halfOpenSuccessThreshold&&(this.clearPromotionsForPrimary(e,n),this.states.delete(r)):o.status==="open"&&(o.status="half-open",o.successCount=1,o.failureCount=0)))}clearPromotionsForPrimary(e,n){try{let{getFallbackPromotionStore:r}=(si(),uC(Jh));r().clearByPrimary(e,n)}catch{}}recordFailure(e,n,r){if(!this.config.enabled)return;let o=this.getKey(e,n);if(!o)return;let s=this.states.get(o);s||(s={provider:e,model:n,status:"closed",failureCount:0,successCount:0,lastFailureTime:0,lastProbeTime:0},this.states.set(o,s)),s.failureCount++,s.lastFailureTime=Date.now(),s.lastError=r,s.status==="half-open"?(s.status="open",s.successCount=0,s.lastProbeTime=0):s.status==="closed"&&s.failureCount>=this.config.failureThreshold&&(s.status="open",s.lastProbeTime=0)}getState(e,n){let r=this.getKey(e,n);if(r)return this.states.get(r)}isAvailable(e,n){if(!this.config.enabled)return!0;if(!this.getKey(e,n))return!1;let o=this.getState(e,n);return o?o.status==="open"&&o.rateLimitUntil?!(Date.now()<o.rateLimitUntil):o.status!=="open":!0}getPriority(e,n){if(!this.config.enabled)return 0;if(!this.getKey(e,n))return 2;let o=this.getState(e,n);if(!o)return 0;switch(o.status){case"closed":return 0;case"half-open":return 1;case"open":return 2}}getHealthyModels(){return[]}getFailPoolModels(){let e=[];for(let[n,r]of this.states)r.status==="open"&&e.push(n);return e}getHalfOpenModels(){let e=[];for(let[n,r]of this.states)r.status==="half-open"&&e.push(n);return e}forceOpen(e,n,r){if(!this.config.enabled)return;let o=this.getKey(e,n);if(!o)return;let s=this.states.get(o);s?(s.status="open",s.failureCount=Math.max(s.failureCount,this.config.failureThreshold),s.lastFailureTime=Date.now(),s.lastError=r,s.lastProbeTime=0):(s={provider:e,model:n,status:"open",failureCount:this.config.failureThreshold,successCount:0,lastFailureTime:Date.now(),lastProbeTime:0,lastError:r},this.states.set(o,s))}markRateLimited(e,n,r,o){if(!this.config.enabled)return;let s=this.getKey(e,n);if(!s)return;let a=this.states.get(s);a?(a.status="open",a.lastFailureTime=Date.now(),a.lastError=o||"rate-limited",a.lastProbeTime=0):(a={provider:e,model:n,status:"open",failureCount:0,successCount:0,lastFailureTime:Date.now(),lastProbeTime:0,lastError:o||"rate-limited"},this.states.set(s,a));let u=(r??OC)*1e3;a.rateLimitUntil=Date.now()+u}getRateLimitedModels(){let e=[];for(let[n,r]of this.states)r.status==="open"&&r.rateLimitUntil&&e.push(n);return e}needsProbe(e){return Date.now()-e.lastProbeTime>=this.config.probeIntervalMinutes*60*1e3}markProbeAttempt(e,n){let r=this.getKey(e,n);if(!r)return;let o=this.states.get(r);o&&o.status==="open"&&(o.lastProbeTime=Date.now())}clear(){this.states.clear()}recover(e,n){let r=this.getKey(e,n);r&&this.states.delete(r)}getAllStates(){return Array.from(this.states.values())}restore(e){let n=this.getKey(e.provider,e.model);n&&this.states.set(n,{...e})}stopProbeTimer(){this.probeTimer&&(clearInterval(this.probeTimer),this.probeTimer=void 0)}},Qu=Qh(xC,"runtime"),Xu=Qh(Qu,"provider-health.json"),Vh=!1,FC=null;Yu=null});var yc=X((S1,Np)=>{"use strict";var gi=Object.prototype.hasOwnProperty,Ip=Object.prototype.toString,Dp=Object.defineProperty,Rp=Object.getOwnPropertyDescriptor,xp=function(e){return typeof Array.isArray=="function"?Array.isArray(e):Ip.call(e)==="[object Array]"},Op=function(e){if(!e||Ip.call(e)!=="[object Object]")return!1;var n=gi.call(e,"constructor"),r=e.constructor&&e.constructor.prototype&&gi.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!n&&!r)return!1;var o;for(o in e);return typeof o>"u"||gi.call(e,o)},Pp=function(e,n){Dp&&n.name==="__proto__"?Dp(e,n.name,{enumerable:!0,configurable:!0,value:n.newValue,writable:!0}):e[n.name]=n.newValue},Fp=function(e,n){if(n==="__proto__")if(gi.call(e,n)){if(Rp)return Rp(e,n).value}else return;return e[n]};Np.exports=function t(){var e,n,r,o,s,a,u=arguments[0],l=1,f=arguments.length,d=!1;for(typeof u=="boolean"&&(d=u,u=arguments[1]||{},l=2),(u==null||typeof u!="object"&&typeof u!="function")&&(u={});l<f;++l)if(e=arguments[l],e!=null)for(n in e)r=Fp(u,n),o=Fp(e,n),u!==o&&(d&&o&&(Op(o)||(s=xp(o)))?(s?(s=!1,a=r&&xp(r)?r:[]):a=r&&Op(r)?r:{},Pp(u,{name:n,newValue:t(d,a,o)})):typeof o<"u"&&Pp(u,{name:n,newValue:o}));return u}});var Bp=X((v1,vw)=>{vw.exports={name:"gaxios",version:"7.1.2",description:"A simple common HTTP client specifically for Google APIs and services.",main:"build/cjs/src/index.js",types:"build/cjs/src/index.d.ts",files:["build/"],exports:{".":{import:{types:"./build/esm/src/index.d.ts",default:"./build/esm/src/index.js"},require:{types:"./build/cjs/src/index.d.ts",default:"./build/cjs/src/index.js"}}},scripts:{lint:"gts check --no-inline-config",test:"c8 mocha build/esm/test","presystem-test":"npm run compile","system-test":"mocha build/esm/system-test --timeout 80000",compile:"tsc -b ./tsconfig.json ./tsconfig.cjs.json && node utils/enable-esm.mjs",fix:"gts fix",prepare:"npm run compile",pretest:"npm run compile",webpack:"webpack","prebrowser-test":"npm run compile","browser-test":"node build/browser-test/browser-test-runner.js",docs:"jsdoc -c .jsdoc.js","docs-test":"linkinator docs","predocs-test":"npm run docs","samples-test":"cd samples/ && npm link ../ && npm test && cd ../",prelint:"cd samples; npm link ../; npm install",clean:"gts clean"},repository:"googleapis/gaxios",keywords:["google"],engines:{node:">=18"},author:"Google, LLC",license:"Apache-2.0",devDependencies:{"@babel/plugin-proposal-private-methods":"^7.18.6","@types/cors":"^2.8.6","@types/express":"^5.0.0","@types/extend":"^3.0.1","@types/mocha":"^10.0.10","@types/multiparty":"4.2.1","@types/mv":"^2.1.0","@types/ncp":"^2.0.1","@types/node":"^22.0.0","@types/sinon":"^17.0.0","@types/tmp":"0.2.6",assert:"^2.0.0",browserify:"^17.0.0",c8:"^10.0.0",cors:"^2.8.5",express:"^5.0.0",gts:"^6.0.0","is-docker":"^3.0.0",jsdoc:"^4.0.0","jsdoc-fresh":"^4.0.0","jsdoc-region-tag":"^3.0.0",karma:"^6.0.0","karma-chrome-launcher":"^3.0.0","karma-coverage":"^2.0.0","karma-firefox-launcher":"^2.0.0","karma-mocha":"^2.0.0","karma-remap-coverage":"^0.1.5","karma-sourcemap-loader":"^0.4.0","karma-webpack":"^5.0.1",linkinator:"^6.1.2",mocha:"^11.1.0",multiparty:"^4.2.1",mv:"^2.1.1",ncp:"^2.0.0",nock:"^14.0.0-beta.13","null-loader":"^4.0.0","pack-n-play":"^3.0.0",puppeteer:"^24.0.0",sinon:"^21.0.0","stream-browserify":"^3.0.0",tmp:"0.2.5","ts-loader":"^9.5.2",typescript:"^5.8.3",webpack:"^5.35.0","webpack-cli":"^6.0.1"},dependencies:{extend:"^3.0.2","https-proxy-agent":"^7.0.1","node-fetch":"^3.3.2"}}});var Lp=X((T1,Mp)=>{"use strict";var Tw=Bp();Mp.exports={pkg:Tw}});var Cc=X(vt=>{"use strict";var Up=vt&&vt.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(vt,"__esModule",{value:!0});vt.GaxiosError=vt.GAXIOS_ERROR_SYMBOL=void 0;vt.defaultErrorRedactor=$p;var jp=Up(yc()),Dw=Up(Lp()),_c=Dw.default.pkg;vt.GAXIOS_ERROR_SYMBOL=Symbol.for(`${_c.name}-gaxios-error`);var bc=class t extends Error{config;response;code;status;error;[vt.GAXIOS_ERROR_SYMBOL]=_c.version;static[Symbol.hasInstance](e){return e&&typeof e=="object"&&vt.GAXIOS_ERROR_SYMBOL in e&&e[vt.GAXIOS_ERROR_SYMBOL]===_c.version?!0:Function.prototype[Symbol.hasInstance].call(t,e)}constructor(e,n,r,o){if(super(e,{cause:o}),this.config=n,this.response=r,this.error=o instanceof Error?o:void 0,this.config=(0,jp.default)(!0,{},n),this.response&&(this.response.config=(0,jp.default)(!0,{},this.response.config)),this.response){try{this.response.data=Rw(this.config.responseType,this.response?.bodyUsed?this.response?.data:void 0)}catch{}this.status=this.response.status}o instanceof DOMException?this.code=o.name:o&&typeof o=="object"&&"code"in o&&(typeof o.code=="string"||typeof o.code=="number")&&(this.code=o.code)}static extractAPIErrorFromResponse(e,n="The request failed"){let r=n;if(typeof e.data=="string"&&(r=e.data),e.data&&typeof e.data=="object"&&"error"in e.data&&e.data.error&&!e.ok){if(typeof e.data.error=="string")return{message:e.data.error,code:e.status,status:e.statusText};if(typeof e.data.error=="object"){r="message"in e.data.error&&typeof e.data.error.message=="string"?e.data.error.message:r;let o="status"in e.data.error&&typeof e.data.error.status=="string"?e.data.error.status:e.statusText,s="code"in e.data.error&&typeof e.data.error.code=="number"?e.data.error.code:e.status;if("errors"in e.data.error&&Array.isArray(e.data.error.errors)){let a=[];for(let u of e.data.error.errors)typeof u=="object"&&"message"in u&&typeof u.message=="string"&&a.push(u.message);return Object.assign({message:a.join(`
|
|
15
|
-
`)||r,code:s,status:o},e.data.error)}return Object.assign({message:r,code:s,status:o},e.data.error)}}return{message:r,code:e.status,status:e.statusText}}};vt.GaxiosError=bc;function Rw(t,e){switch(t){case"stream":return e;case"json":return JSON.parse(JSON.stringify(e));case"arraybuffer":return JSON.parse(Buffer.from(e).toString("utf8"));case"blob":return JSON.parse(e.text());default:return e}}function $p(t){let e="<<REDACTED> - See `errorRedactor` option in `gaxios` for configuration>.";function n(s){s&&s.forEach((a,u)=>{(/^authentication$/i.test(u)||/^authorization$/i.test(u)||/secret/i.test(u))&&s.set(u,e)})}function r(s,a){if(typeof s=="object"&&s!==null&&typeof s[a]=="string"){let u=s[a];(/grant_type=/i.test(u)||/assertion=/i.test(u)||/secret/i.test(u))&&(s[a]=e)}}function o(s){!s||typeof s!="object"||(s instanceof FormData||s instanceof URLSearchParams||"forEach"in s&&"set"in s?s.forEach((a,u)=>{(["grant_type","assertion"].includes(u)||/secret/.test(u))&&s.set(u,e)}):("grant_type"in s&&(s.grant_type=e),"assertion"in s&&(s.assertion=e),"client_secret"in s&&(s.client_secret=e)))}return t.config&&(n(t.config.headers),r(t.config,"data"),o(t.config.data),r(t.config,"body"),o(t.config.body),t.config.url.searchParams.has("token")&&t.config.url.searchParams.set("token",e),t.config.url.searchParams.has("client_secret")&&t.config.url.searchParams.set("client_secret",e)),t.response&&($p({config:t.response.config}),n(t.response.headers),t.response.bodyUsed&&(r(t.response,"data"),o(t.response.data))),t}});var zp=X(wc=>{"use strict";Object.defineProperty(wc,"__esModule",{value:!0});wc.getRetryConfig=xw;async function xw(t){let e=qp(t);if(!t||!t.config||!e&&!t.config.retry)return{shouldRetry:!1};e=e||{},e.currentRetryAttempt=e.currentRetryAttempt||0,e.retry=e.retry===void 0||e.retry===null?3:e.retry,e.httpMethodsToRetry=e.httpMethodsToRetry||["GET","HEAD","PUT","OPTIONS","DELETE"],e.noResponseRetries=e.noResponseRetries===void 0||e.noResponseRetries===null?2:e.noResponseRetries,e.retryDelayMultiplier=e.retryDelayMultiplier?e.retryDelayMultiplier:2,e.timeOfFirstRequest=e.timeOfFirstRequest?e.timeOfFirstRequest:Date.now(),e.totalTimeout=e.totalTimeout?e.totalTimeout:Number.MAX_SAFE_INTEGER,e.maxRetryDelay=e.maxRetryDelay?e.maxRetryDelay:Number.MAX_SAFE_INTEGER;let n=[[100,199],[408,408],[429,429],[500,599]];if(e.statusCodesToRetry=e.statusCodesToRetry||n,t.config.retryConfig=e,!await(e.shouldRetry||Ow)(t))return{shouldRetry:!1,config:t.config};let o=Pw(e);t.config.retryConfig.currentRetryAttempt+=1;let s=e.retryBackoff?e.retryBackoff(t,o):new Promise(a=>{setTimeout(a,o)});return e.onRetryAttempt&&await e.onRetryAttempt(t),await s,{shouldRetry:!0,config:t.config}}function Ow(t){let e=qp(t);if(t.config.signal?.aborted&&t.code!=="TimeoutError"||t.code==="AbortError"||!e||e.retry===0||!t.response&&(e.currentRetryAttempt||0)>=e.noResponseRetries||!e.httpMethodsToRetry||!e.httpMethodsToRetry.includes(t.config.method?.toUpperCase()||"GET"))return!1;if(t.response&&t.response.status){let n=!1;for(let[r,o]of e.statusCodesToRetry){let s=t.response.status;if(s>=r&&s<=o){n=!0;break}}if(!n)return!1}return e.currentRetryAttempt=e.currentRetryAttempt||0,!(e.currentRetryAttempt>=e.retry)}function qp(t){if(t&&t.config&&t.config.retryConfig)return t.config.retryConfig}function Pw(t){let n=(t.currentRetryAttempt?0:t.retryDelay??100)+(Math.pow(t.retryDelayMultiplier,t.currentRetryAttempt)-1)/2*1e3,r=t.totalTimeout-(Date.now()-t.timeOfFirstRequest);return Math.min(n,r,t.maxRetryDelay)}});var kc=X(yi=>{"use strict";Object.defineProperty(yi,"__esModule",{value:!0});yi.GaxiosInterceptorManager=void 0;var Ec=class extends Set{};yi.GaxiosInterceptorManager=Ec});var Wp=X((O1,Hp)=>{var Hr=1e3,Wr=Hr*60,Gr=Wr*60,dr=Gr*24,Fw=dr*7,Iw=dr*365.25;Hp.exports=function(t,e){e=e||{};var n=typeof t;if(n==="string"&&t.length>0)return Nw(t);if(n==="number"&&isFinite(t))return e.long?Mw(t):Bw(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function Nw(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var n=parseFloat(e[1]),r=(e[2]||"ms").toLowerCase();switch(r){case"years":case"year":case"yrs":case"yr":case"y":return n*Iw;case"weeks":case"week":case"w":return n*Fw;case"days":case"day":case"d":return n*dr;case"hours":case"hour":case"hrs":case"hr":case"h":return n*Gr;case"minutes":case"minute":case"mins":case"min":case"m":return n*Wr;case"seconds":case"second":case"secs":case"sec":case"s":return n*Hr;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function Bw(t){var e=Math.abs(t);return e>=dr?Math.round(t/dr)+"d":e>=Gr?Math.round(t/Gr)+"h":e>=Wr?Math.round(t/Wr)+"m":e>=Hr?Math.round(t/Hr)+"s":t+"ms"}function Mw(t){var e=Math.abs(t);return e>=dr?_i(t,e,dr,"day"):e>=Gr?_i(t,e,Gr,"hour"):e>=Wr?_i(t,e,Wr,"minute"):e>=Hr?_i(t,e,Hr,"second"):t+" ms"}function _i(t,e,n,r){var o=e>=n*1.5;return Math.round(t/n)+" "+r+(o?"s":"")}});var Ac=X((P1,Gp)=>{function Lw(t){n.debug=n,n.default=n,n.coerce=l,n.disable=a,n.enable=o,n.enabled=u,n.humanize=Wp(),n.destroy=f,Object.keys(t).forEach(d=>{n[d]=t[d]}),n.names=[],n.skips=[],n.formatters={};function e(d){let h=0;for(let m=0;m<d.length;m++)h=(h<<5)-h+d.charCodeAt(m),h|=0;return n.colors[Math.abs(h)%n.colors.length]}n.selectColor=e;function n(d){let h,m=null,C,w;function y(...g){if(!y.enabled)return;let _=y,E=Number(new Date),b=E-(h||E);_.diff=b,_.prev=h,_.curr=E,h=E,g[0]=n.coerce(g[0]),typeof g[0]!="string"&&g.unshift("%O");let S=0;g[0]=g[0].replace(/%([a-zA-Z%])/g,(R,$)=>{if(R==="%%")return"%";S++;let H=n.formatters[$];if(typeof H=="function"){let P=g[S];R=H.call(_,P),g.splice(S,1),S--}return R}),n.formatArgs.call(_,g),(_.log||n.log).apply(_,g)}return y.namespace=d,y.useColors=n.useColors(),y.color=n.selectColor(d),y.extend=r,y.destroy=n.destroy,Object.defineProperty(y,"enabled",{enumerable:!0,configurable:!1,get:()=>m!==null?m:(C!==n.namespaces&&(C=n.namespaces,w=n.enabled(d)),w),set:g=>{m=g}}),typeof n.init=="function"&&n.init(y),y}function r(d,h){let m=n(this.namespace+(typeof h>"u"?":":h)+d);return m.log=this.log,m}function o(d){n.save(d),n.namespaces=d,n.names=[],n.skips=[];let h=(typeof d=="string"?d:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let m of h)m[0]==="-"?n.skips.push(m.slice(1)):n.names.push(m)}function s(d,h){let m=0,C=0,w=-1,y=0;for(;m<d.length;)if(C<h.length&&(h[C]===d[m]||h[C]==="*"))h[C]==="*"?(w=C,y=m,C++):(m++,C++);else if(w!==-1)C=w+1,y++,m=y;else return!1;for(;C<h.length&&h[C]==="*";)C++;return C===h.length}function a(){let d=[...n.names,...n.skips.map(h=>"-"+h)].join(",");return n.enable(""),d}function u(d){for(let h of n.skips)if(s(d,h))return!1;for(let h of n.names)if(s(d,h))return!0;return!1}function l(d){return d instanceof Error?d.stack||d.message:d}function f(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return n.enable(n.load()),n}Gp.exports=Lw});var Jp=X((ut,bi)=>{ut.formatArgs=Uw;ut.save=$w;ut.load=qw;ut.useColors=jw;ut.storage=zw();ut.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();ut.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function jw(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let t;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(t[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function Uw(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+bi.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(n++,o==="%c"&&(r=n))}),t.splice(r,0,e)}ut.log=console.debug||console.log||(()=>{});function $w(t){try{t?ut.storage.setItem("debug",t):ut.storage.removeItem("debug")}catch{}}function qw(){let t;try{t=ut.storage.getItem("debug")||ut.storage.getItem("DEBUG")}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}function zw(){try{return localStorage}catch{}}bi.exports=Ac()(ut);var{formatters:Hw}=bi.exports;Hw.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var Kp=X((F1,Vp)=>{"use strict";Vp.exports=(t,e=process.argv)=>{let n=t.startsWith("-")?"":t.length===1?"-":"--",r=e.indexOf(n+t),o=e.indexOf("--");return r!==-1&&(o===-1||r<o)}});var Xp=X((I1,Qp)=>{"use strict";var Ww=re("os"),Yp=re("tty"),Tt=Kp(),{env:Je}=process,$n;Tt("no-color")||Tt("no-colors")||Tt("color=false")||Tt("color=never")?$n=0:(Tt("color")||Tt("colors")||Tt("color=true")||Tt("color=always"))&&($n=1);"FORCE_COLOR"in Je&&(Je.FORCE_COLOR==="true"?$n=1:Je.FORCE_COLOR==="false"?$n=0:$n=Je.FORCE_COLOR.length===0?1:Math.min(parseInt(Je.FORCE_COLOR,10),3));function Sc(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function vc(t,e){if($n===0)return 0;if(Tt("color=16m")||Tt("color=full")||Tt("color=truecolor"))return 3;if(Tt("color=256"))return 2;if(t&&!e&&$n===void 0)return 0;let n=$n||0;if(Je.TERM==="dumb")return n;if(process.platform==="win32"){let r=Ww.release().split(".");return Number(r[0])>=10&&Number(r[2])>=10586?Number(r[2])>=14931?3:2:1}if("CI"in Je)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(r=>r in Je)||Je.CI_NAME==="codeship"?1:n;if("TEAMCITY_VERSION"in Je)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Je.TEAMCITY_VERSION)?1:0;if(Je.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Je){let r=parseInt((Je.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Je.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Je.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Je.TERM)||"COLORTERM"in Je?1:n}function Gw(t){let e=vc(t,t&&t.isTTY);return Sc(e)}Qp.exports={supportsColor:Gw,stdout:Sc(vc(!0,Yp.isatty(1))),stderr:Sc(vc(!0,Yp.isatty(2)))}});var em=X((Ve,wi)=>{var Jw=re("tty"),Ci=re("util");Ve.init=eE;Ve.log=Qw;Ve.formatArgs=Kw;Ve.save=Xw;Ve.load=Zw;Ve.useColors=Vw;Ve.destroy=Ci.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");Ve.colors=[6,2,3,4,5,1];try{let t=Xp();t&&(t.stderr||t).level>=2&&(Ve.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}Ve.inspectOpts=Object.keys(process.env).filter(t=>/^debug_/i.test(t)).reduce((t,e)=>{let n=e.substring(6).toLowerCase().replace(/_([a-z])/g,(o,s)=>s.toUpperCase()),r=process.env[e];return/^(yes|on|true|enabled)$/i.test(r)?r=!0:/^(no|off|false|disabled)$/i.test(r)?r=!1:r==="null"?r=null:r=Number(r),t[n]=r,t},{});function Vw(){return"colors"in Ve.inspectOpts?!!Ve.inspectOpts.colors:Jw.isatty(process.stderr.fd)}function Kw(t){let{namespace:e,useColors:n}=this;if(n){let r=this.color,o="\x1B[3"+(r<8?r:"8;5;"+r),s=` ${o};1m${e} \x1B[0m`;t[0]=s+t[0].split(`
|
|
16
|
-
`).join(`
|
|
17
|
-
`+s),t.push(o+"m+"+wi.exports.humanize(this.diff)+"\x1B[0m")}else t[0]=Yw()+e+" "+t[0]}function Yw(){return Ve.inspectOpts.hideDate?"":new Date().toISOString()+" "}function Qw(...t){return process.stderr.write(Ci.formatWithOptions(Ve.inspectOpts,...t)+`
|
|
18
|
-
`)}function Xw(t){t?process.env.DEBUG=t:delete process.env.DEBUG}function Zw(){return process.env.DEBUG}function eE(t){t.inspectOpts={};let e=Object.keys(Ve.inspectOpts);for(let n=0;n<e.length;n++)t.inspectOpts[e[n]]=Ve.inspectOpts[e[n]]}wi.exports=Ac()(Ve);var{formatters:Zp}=wi.exports;Zp.o=function(t){return this.inspectOpts.colors=this.useColors,Ci.inspect(t,this.inspectOpts).split(`
|
|
19
|
-
`).map(e=>e.trim()).join(" ")};Zp.O=function(t){return this.inspectOpts.colors=this.useColors,Ci.inspect(t,this.inspectOpts)}});var Dc=X((N1,Tc)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?Tc.exports=Jp():Tc.exports=em()});var rm=X(ct=>{"use strict";var tE=ct&&ct.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var o=Object.getOwnPropertyDescriptor(e,n);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,o)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),nE=ct&&ct.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),tm=ct&&ct.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&tE(e,t,n);return nE(e,t),e};Object.defineProperty(ct,"__esModule",{value:!0});ct.req=ct.json=ct.toBuffer=void 0;var rE=tm(re("http")),oE=tm(re("https"));async function nm(t){let e=0,n=[];for await(let r of t)e+=r.length,n.push(r);return Buffer.concat(n,e)}ct.toBuffer=nm;async function sE(t){let n=(await nm(t)).toString("utf8");try{return JSON.parse(n)}catch(r){let o=r;throw o.message+=` (input: ${n})`,o}}ct.json=sE;function iE(t,e={}){let r=((typeof t=="string"?t:t.href).startsWith("https:")?oE:rE).request(t,e),o=new Promise((s,a)=>{r.once("response",s).once("error",a).end()});return r.then=o.then.bind(o),r}ct.req=iE});var am=X(mt=>{"use strict";var sm=mt&&mt.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var o=Object.getOwnPropertyDescriptor(e,n);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,o)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),aE=mt&&mt.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),im=mt&&mt.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&sm(e,t,n);return aE(e,t),e},uE=mt&&mt.__exportStar||function(t,e){for(var n in t)n!=="default"&&!Object.prototype.hasOwnProperty.call(e,n)&&sm(e,t,n)};Object.defineProperty(mt,"__esModule",{value:!0});mt.Agent=void 0;var cE=im(re("net")),om=im(re("http")),lE=re("https");uE(rm(),mt);var Qt=Symbol("AgentBaseInternalState"),Rc=class extends om.Agent{constructor(e){super(e),this[Qt]={}}isSecureEndpoint(e){if(e){if(typeof e.secureEndpoint=="boolean")return e.secureEndpoint;if(typeof e.protocol=="string")return e.protocol==="https:"}let{stack:n}=new Error;return typeof n!="string"?!1:n.split(`
|
|
20
|
-
`).some(r=>r.indexOf("(https.js:")!==-1||r.indexOf("node:https:")!==-1)}incrementSockets(e){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;this.sockets[e]||(this.sockets[e]=[]);let n=new cE.Socket({writable:!1});return this.sockets[e].push(n),this.totalSocketCount++,n}decrementSockets(e,n){if(!this.sockets[e]||n===null)return;let r=this.sockets[e],o=r.indexOf(n);o!==-1&&(r.splice(o,1),this.totalSocketCount--,r.length===0&&delete this.sockets[e])}getName(e){return this.isSecureEndpoint(e)?lE.Agent.prototype.getName.call(this,e):super.getName(e)}createSocket(e,n,r){let o={...n,secureEndpoint:this.isSecureEndpoint(n)},s=this.getName(o),a=this.incrementSockets(s);Promise.resolve().then(()=>this.connect(e,o)).then(u=>{if(this.decrementSockets(s,a),u instanceof om.Agent)try{return u.addRequest(e,o)}catch(l){return r(l)}this[Qt].currentSocket=u,super.createSocket(e,n,r)},u=>{this.decrementSockets(s,a),r(u)})}createConnection(){let e=this[Qt].currentSocket;if(this[Qt].currentSocket=void 0,!e)throw new Error("No socket was returned in the `connect()` function");return e}get defaultPort(){return this[Qt].defaultPort??(this.protocol==="https:"?443:80)}set defaultPort(e){this[Qt]&&(this[Qt].defaultPort=e)}get protocol(){return this[Qt].protocol??(this.isSecureEndpoint()?"https:":"http:")}set protocol(e){this[Qt]&&(this[Qt].protocol=e)}};mt.Agent=Rc});var um=X(Jr=>{"use strict";var dE=Jr&&Jr.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Jr,"__esModule",{value:!0});Jr.parseProxyResponse=void 0;var fE=dE(Dc()),Ei=(0,fE.default)("https-proxy-agent:parse-proxy-response");function hE(t){return new Promise((e,n)=>{let r=0,o=[];function s(){let d=t.read();d?f(d):t.once("readable",s)}function a(){t.removeListener("end",u),t.removeListener("error",l),t.removeListener("readable",s)}function u(){a(),Ei("onend"),n(new Error("Proxy connection ended before receiving CONNECT response"))}function l(d){a(),Ei("onerror %o",d),n(d)}function f(d){o.push(d),r+=d.length;let h=Buffer.concat(o,r),m=h.indexOf(`\r
|
|
21
|
-
\r
|
|
22
|
-
`);if(m===-1){Ei("have not received end of HTTP headers yet..."),s();return}let C=h.slice(0,m).toString("ascii").split(`\r
|
|
23
|
-
`),w=C.shift();if(!w)return t.destroy(),n(new Error("No header received from proxy CONNECT response"));let y=w.split(" "),g=+y[1],_=y.slice(2).join(" "),E={};for(let b of C){if(!b)continue;let S=b.indexOf(":");if(S===-1)return t.destroy(),n(new Error(`Invalid header from proxy CONNECT response: "${b}"`));let T=b.slice(0,S).toLowerCase(),R=b.slice(S+1).trimStart(),$=E[T];typeof $=="string"?E[T]=[$,R]:Array.isArray($)?$.push(R):E[T]=R}Ei("got proxy server response: %o %o",w,E),a(),e({connect:{statusCode:g,statusText:_,headers:E},buffered:h})}t.on("error",l),t.on("end",u),s()})}Jr.parseProxyResponse=hE});var pm=X(Dt=>{"use strict";var pE=Dt&&Dt.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var o=Object.getOwnPropertyDescriptor(e,n);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,o)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),mE=Dt&&Dt.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),fm=Dt&&Dt.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&pE(e,t,n);return mE(e,t),e},hm=Dt&&Dt.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Dt,"__esModule",{value:!0});Dt.HttpsProxyAgent=void 0;var ki=fm(re("net")),cm=fm(re("tls")),gE=hm(re("assert")),yE=hm(Dc()),_E=am(),bE=re("url"),CE=um(),jo=(0,yE.default)("https-proxy-agent"),lm=t=>t.servername===void 0&&t.host&&!ki.isIP(t.host)?{...t,servername:t.host}:t,Ai=class extends _E.Agent{constructor(e,n){super(n),this.options={path:void 0},this.proxy=typeof e=="string"?new bE.URL(e):e,this.proxyHeaders=n?.headers??{},jo("Creating new HttpsProxyAgent instance: %o",this.proxy.href);let r=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),o=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...n?dm(n,"headers"):null,host:r,port:o}}async connect(e,n){let{proxy:r}=this;if(!n.host)throw new TypeError('No "host" provided');let o;r.protocol==="https:"?(jo("Creating `tls.Socket`: %o",this.connectOpts),o=cm.connect(lm(this.connectOpts))):(jo("Creating `net.Socket`: %o",this.connectOpts),o=ki.connect(this.connectOpts));let s=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders},a=ki.isIPv6(n.host)?`[${n.host}]`:n.host,u=`CONNECT ${a}:${n.port} HTTP/1.1\r
|
|
24
|
-
`;if(r.username||r.password){let m=`${decodeURIComponent(r.username)}:${decodeURIComponent(r.password)}`;s["Proxy-Authorization"]=`Basic ${Buffer.from(m).toString("base64")}`}s.Host=`${a}:${n.port}`,s["Proxy-Connection"]||(s["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(let m of Object.keys(s))u+=`${m}: ${s[m]}\r
|
|
25
|
-
`;let l=(0,CE.parseProxyResponse)(o);o.write(`${u}\r
|
|
26
|
-
`);let{connect:f,buffered:d}=await l;if(e.emit("proxyConnect",f),this.emit("proxyConnect",f,e),f.statusCode===200)return e.once("socket",wE),n.secureEndpoint?(jo("Upgrading socket connection to TLS"),cm.connect({...dm(lm(n),"host","path","port"),socket:o})):o;o.destroy();let h=new ki.Socket({writable:!1});return h.readable=!0,e.once("socket",m=>{jo("Replaying proxy buffer for failed request"),(0,gE.default)(m.listenerCount("data")>0),m.push(d),m.push(null)}),h}};Ai.protocols=["http","https"];Dt.HttpsProxyAgent=Ai;function wE(t){t.resume()}function dm(t,...e){let n={},r;for(r in t)e.includes(r)||(n[r]=t[r]);return n}});function EE(t){if(!/^data:/i.test(t))throw new TypeError('`uri` does not appear to be a Data URI (must begin with "data:")');t=t.replace(/\r?\n/g,"");let e=t.indexOf(",");if(e===-1||e<=4)throw new TypeError("malformed data: URI");let n=t.substring(5,e).split(";"),r="",o=!1,s=n[0]||"text/plain",a=s;for(let d=1;d<n.length;d++)n[d]==="base64"?o=!0:n[d]&&(a+=`;${n[d]}`,n[d].indexOf("charset=")===0&&(r=n[d].substring(8)));!n[0]&&!r.length&&(a+=";charset=US-ASCII",r="US-ASCII");let u=o?"base64":"ascii",l=unescape(t.substring(e+1)),f=Buffer.from(l,u);return f.type=s,f.typeFull=a,f.charset=r,f}var mm,gm=Le(()=>{mm=EE});var _m=X((Si,ym)=>{(function(t,e){typeof Si=="object"&&typeof ym<"u"?e(Si):typeof define=="function"&&define.amd?define(["exports"],e):(t=typeof globalThis<"u"?globalThis:t||self,e(t.WebStreamsPolyfill={}))})(Si,(function(t){"use strict";function e(){}function n(i){return typeof i=="object"&&i!==null||typeof i=="function"}let r=e;function o(i,c){try{Object.defineProperty(i,"name",{value:c,configurable:!0})}catch{}}let s=Promise,a=Promise.prototype.then,u=Promise.reject.bind(s);function l(i){return new s(i)}function f(i){return l(c=>c(i))}function d(i){return u(i)}function h(i,c,p){return a.call(i,c,p)}function m(i,c,p){h(h(i,c,p),void 0,r)}function C(i,c){m(i,c)}function w(i,c){m(i,void 0,c)}function y(i,c,p){return h(i,c,p)}function g(i){h(i,void 0,r)}let _=i=>{if(typeof queueMicrotask=="function")_=queueMicrotask;else{let c=f(void 0);_=p=>h(c,p)}return _(i)};function E(i,c,p){if(typeof i!="function")throw new TypeError("Argument is not a function");return Function.prototype.apply.call(i,c,p)}function b(i,c,p){try{return f(E(i,c,p))}catch(A){return d(A)}}let S=16384;class T{constructor(){this._cursor=0,this._size=0,this._front={_elements:[],_next:void 0},this._back=this._front,this._cursor=0,this._size=0}get length(){return this._size}push(c){let p=this._back,A=p;p._elements.length===S-1&&(A={_elements:[],_next:void 0}),p._elements.push(c),A!==p&&(this._back=A,p._next=A),++this._size}shift(){let c=this._front,p=c,A=this._cursor,x=A+1,j=c._elements,z=j[A];return x===S&&(p=c._next,x=0),--this._size,this._cursor=x,c!==p&&(this._front=p),j[A]=void 0,z}forEach(c){let p=this._cursor,A=this._front,x=A._elements;for(;(p!==x.length||A._next!==void 0)&&!(p===x.length&&(A=A._next,x=A._elements,p=0,x.length===0));)c(x[p]),++p}peek(){let c=this._front,p=this._cursor;return c._elements[p]}}let R=Symbol("[[AbortSteps]]"),$=Symbol("[[ErrorSteps]]"),H=Symbol("[[CancelSteps]]"),P=Symbol("[[PullSteps]]"),K=Symbol("[[ReleaseSteps]]");function q(i,c){i._ownerReadableStream=c,c._reader=i,c._state==="readable"?se(i):c._state==="closed"?pe(i):ue(i,c._storedError)}function Y(i,c){let p=i._ownerReadableStream;return Mt(p,c)}function Q(i){let c=i._ownerReadableStream;c._state==="readable"?J(i,new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")):Z(i,new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")),c._readableStreamController[K](),c._reader=void 0,i._ownerReadableStream=void 0}function ee(i){return new TypeError("Cannot "+i+" a stream using a released reader")}function se(i){i._closedPromise=l((c,p)=>{i._closedPromise_resolve=c,i._closedPromise_reject=p})}function ue(i,c){se(i),J(i,c)}function pe(i){se(i),ce(i)}function J(i,c){i._closedPromise_reject!==void 0&&(g(i._closedPromise),i._closedPromise_reject(c),i._closedPromise_resolve=void 0,i._closedPromise_reject=void 0)}function Z(i,c){ue(i,c)}function ce(i){i._closedPromise_resolve!==void 0&&(i._closedPromise_resolve(void 0),i._closedPromise_resolve=void 0,i._closedPromise_reject=void 0)}let je=Number.isFinite||function(i){return typeof i=="number"&&isFinite(i)},we=Math.trunc||function(i){return i<0?Math.ceil(i):Math.floor(i)};function V(i){return typeof i=="object"||typeof i=="function"}function ae(i,c){if(i!==void 0&&!V(i))throw new TypeError(`${c} is not an object.`)}function te(i,c){if(typeof i!="function")throw new TypeError(`${c} is not a function.`)}function Te(i){return typeof i=="object"&&i!==null||typeof i=="function"}function Oe(i,c){if(!Te(i))throw new TypeError(`${c} is not an object.`)}function Ue(i,c,p){if(i===void 0)throw new TypeError(`Parameter ${c} is required in '${p}'.`)}function k(i,c,p){if(i===void 0)throw new TypeError(`${c} is required in '${p}'.`)}function v(i){return Number(i)}function D(i){return i===0?0:i}function M(i){return D(we(i))}function F(i,c){let A=Number.MAX_SAFE_INTEGER,x=Number(i);if(x=D(x),!je(x))throw new TypeError(`${c} is not a finite number`);if(x=M(x),x<0||x>A)throw new TypeError(`${c} is outside the accepted range of 0 to ${A}, inclusive`);return!je(x)||x===0?0:x}function N(i,c){if(!In(i))throw new TypeError(`${c} is not a ReadableStream.`)}function U(i){return new W(i)}function O(i,c){i._reader._readRequests.push(c)}function I(i,c,p){let x=i._reader._readRequests.shift();p?x._closeSteps():x._chunkSteps(c)}function L(i){return i._reader._readRequests.length}function B(i){let c=i._reader;return!(c===void 0||!oe(c))}class W{constructor(c){if(Ue(c,1,"ReadableStreamDefaultReader"),N(c,"First parameter"),Nn(c))throw new TypeError("This stream has already been locked for exclusive reading by another reader");q(this,c),this._readRequests=new T}get closed(){return oe(this)?this._closedPromise:d(Me("closed"))}cancel(c=void 0){return oe(this)?this._ownerReadableStream===void 0?d(ee("cancel")):Y(this,c):d(Me("cancel"))}read(){if(!oe(this))return d(Me("read"));if(this._ownerReadableStream===void 0)return d(ee("read from"));let c,p,A=l((j,z)=>{c=j,p=z});return ie(this,{_chunkSteps:j=>c({value:j,done:!1}),_closeSteps:()=>c({value:void 0,done:!0}),_errorSteps:j=>p(j)}),A}releaseLock(){if(!oe(this))throw Me("releaseLock");this._ownerReadableStream!==void 0&&Se(this)}}Object.defineProperties(W.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),o(W.prototype.cancel,"cancel"),o(W.prototype.read,"read"),o(W.prototype.releaseLock,"releaseLock"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(W.prototype,Symbol.toStringTag,{value:"ReadableStreamDefaultReader",configurable:!0});function oe(i){return!n(i)||!Object.prototype.hasOwnProperty.call(i,"_readRequests")?!1:i instanceof W}function ie(i,c){let p=i._ownerReadableStream;p._disturbed=!0,p._state==="closed"?c._closeSteps():p._state==="errored"?c._errorSteps(p._storedError):p._readableStreamController[P](c)}function Se(i){Q(i);let c=new TypeError("Reader was released");Ie(i,c)}function Ie(i,c){let p=i._readRequests;i._readRequests=new T,p.forEach(A=>{A._errorSteps(c)})}function Me(i){return new TypeError(`ReadableStreamDefaultReader.prototype.${i} can only be used on a ReadableStreamDefaultReader`)}let Ae=Object.getPrototypeOf(Object.getPrototypeOf(async function*(){}).prototype);class ve{constructor(c,p){this._ongoingPromise=void 0,this._isFinished=!1,this._reader=c,this._preventCancel=p}next(){let c=()=>this._nextSteps();return this._ongoingPromise=this._ongoingPromise?y(this._ongoingPromise,c,c):c(),this._ongoingPromise}return(c){let p=()=>this._returnSteps(c);return this._ongoingPromise?y(this._ongoingPromise,p,p):p()}_nextSteps(){if(this._isFinished)return Promise.resolve({value:void 0,done:!0});let c=this._reader,p,A,x=l((z,ne)=>{p=z,A=ne});return ie(c,{_chunkSteps:z=>{this._ongoingPromise=void 0,_(()=>p({value:z,done:!1}))},_closeSteps:()=>{this._ongoingPromise=void 0,this._isFinished=!0,Q(c),p({value:void 0,done:!0})},_errorSteps:z=>{this._ongoingPromise=void 0,this._isFinished=!0,Q(c),A(z)}}),x}_returnSteps(c){if(this._isFinished)return Promise.resolve({value:c,done:!0});this._isFinished=!0;let p=this._reader;if(!this._preventCancel){let A=Y(p,c);return Q(p),y(A,()=>({value:c,done:!0}))}return Q(p),f({value:c,done:!0})}}let qe={next(){return wr(this)?this._asyncIteratorImpl.next():d(Er("next"))},return(i){return wr(this)?this._asyncIteratorImpl.return(i):d(Er("return"))}};Object.setPrototypeOf(qe,Ae);function Cr(i,c){let p=U(i),A=new ve(p,c),x=Object.create(qe);return x._asyncIteratorImpl=A,x}function wr(i){if(!n(i)||!Object.prototype.hasOwnProperty.call(i,"_asyncIteratorImpl"))return!1;try{return i._asyncIteratorImpl instanceof ve}catch{return!1}}function Er(i){return new TypeError(`ReadableStreamAsyncIterator.${i} can only be used on a ReadableSteamAsyncIterator`)}let ft=Number.isNaN||function(i){return i!==i};var fn,Ze,ze;function De(i){return i.slice()}function Ef(i,c,p,A,x){new Uint8Array(i).set(new Uint8Array(p,A,x),c)}let hn=i=>(typeof i.transfer=="function"?hn=c=>c.transfer():typeof structuredClone=="function"?hn=c=>structuredClone(c,{transfer:[c]}):hn=c=>c,hn(i)),xn=i=>(typeof i.detached=="boolean"?xn=c=>c.detached:xn=c=>c.byteLength===0,xn(i));function kf(i,c,p){if(i.slice)return i.slice(c,p);let A=p-c,x=new ArrayBuffer(A);return Ef(x,0,i,c,A),x}function As(i,c){let p=i[c];if(p!=null){if(typeof p!="function")throw new TypeError(`${String(c)} is not a function`);return p}}function E_(i){let c={[Symbol.iterator]:()=>i.iterator},p=(async function*(){return yield*c})(),A=p.next;return{iterator:p,nextMethod:A,done:!1}}let du=(ze=(fn=Symbol.asyncIterator)!==null&&fn!==void 0?fn:(Ze=Symbol.for)===null||Ze===void 0?void 0:Ze.call(Symbol,"Symbol.asyncIterator"))!==null&&ze!==void 0?ze:"@@asyncIterator";function Af(i,c="sync",p){if(p===void 0)if(c==="async"){if(p=As(i,du),p===void 0){let j=As(i,Symbol.iterator),z=Af(i,"sync",j);return E_(z)}}else p=As(i,Symbol.iterator);if(p===void 0)throw new TypeError("The object is not iterable");let A=E(p,i,[]);if(!n(A))throw new TypeError("The iterator method must return an object");let x=A.next;return{iterator:A,nextMethod:x,done:!1}}function k_(i){let c=E(i.nextMethod,i.iterator,[]);if(!n(c))throw new TypeError("The iterator.next() method must return an object");return c}function A_(i){return!!i.done}function S_(i){return i.value}function v_(i){return!(typeof i!="number"||ft(i)||i<0)}function Sf(i){let c=kf(i.buffer,i.byteOffset,i.byteOffset+i.byteLength);return new Uint8Array(c)}function fu(i){let c=i._queue.shift();return i._queueTotalSize-=c.size,i._queueTotalSize<0&&(i._queueTotalSize=0),c.value}function hu(i,c,p){if(!v_(p)||p===1/0)throw new RangeError("Size must be a finite, non-NaN, non-negative number.");i._queue.push({value:c,size:p}),i._queueTotalSize+=p}function T_(i){return i._queue.peek().value}function On(i){i._queue=new T,i._queueTotalSize=0}function vf(i){return i===DataView}function D_(i){return vf(i.constructor)}function R_(i){return vf(i)?1:i.BYTES_PER_ELEMENT}class Zn{constructor(){throw new TypeError("Illegal constructor")}get view(){if(!pu(this))throw bu("view");return this._view}respond(c){if(!pu(this))throw bu("respond");if(Ue(c,1,"respond"),c=F(c,"First parameter"),this._associatedReadableByteStreamController===void 0)throw new TypeError("This BYOB request has been invalidated");if(xn(this._view.buffer))throw new TypeError("The BYOB request's buffer has been detached and so cannot be used as a response");Ds(this._associatedReadableByteStreamController,c)}respondWithNewView(c){if(!pu(this))throw bu("respondWithNewView");if(Ue(c,1,"respondWithNewView"),!ArrayBuffer.isView(c))throw new TypeError("You can only respond with array buffer views");if(this._associatedReadableByteStreamController===void 0)throw new TypeError("This BYOB request has been invalidated");if(xn(c.buffer))throw new TypeError("The given view's buffer has been detached and so cannot be used as a response");Rs(this._associatedReadableByteStreamController,c)}}Object.defineProperties(Zn.prototype,{respond:{enumerable:!0},respondWithNewView:{enumerable:!0},view:{enumerable:!0}}),o(Zn.prototype.respond,"respond"),o(Zn.prototype.respondWithNewView,"respondWithNewView"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(Zn.prototype,Symbol.toStringTag,{value:"ReadableStreamBYOBRequest",configurable:!0});class pn{constructor(){throw new TypeError("Illegal constructor")}get byobRequest(){if(!er(this))throw So("byobRequest");return _u(this)}get desiredSize(){if(!er(this))throw So("desiredSize");return Bf(this)}close(){if(!er(this))throw So("close");if(this._closeRequested)throw new TypeError("The stream has already been closed; do not close it again!");let c=this._controlledReadableByteStream._state;if(c!=="readable")throw new TypeError(`The stream (in ${c} state) is not in the readable state and cannot be closed`);Ao(this)}enqueue(c){if(!er(this))throw So("enqueue");if(Ue(c,1,"enqueue"),!ArrayBuffer.isView(c))throw new TypeError("chunk must be an array buffer view");if(c.byteLength===0)throw new TypeError("chunk must have non-zero byteLength");if(c.buffer.byteLength===0)throw new TypeError("chunk's buffer must have non-zero byteLength");if(this._closeRequested)throw new TypeError("stream is closed or draining");let p=this._controlledReadableByteStream._state;if(p!=="readable")throw new TypeError(`The stream (in ${p} state) is not in the readable state and cannot be enqueued to`);Ts(this,c)}error(c=void 0){if(!er(this))throw So("error");At(this,c)}[H](c){Tf(this),On(this);let p=this._cancelAlgorithm(c);return vs(this),p}[P](c){let p=this._controlledReadableByteStream;if(this._queueTotalSize>0){Nf(this,c);return}let A=this._autoAllocateChunkSize;if(A!==void 0){let x;try{x=new ArrayBuffer(A)}catch(z){c._errorSteps(z);return}let j={buffer:x,bufferByteLength:A,byteOffset:0,byteLength:A,bytesFilled:0,minimumFill:1,elementSize:1,viewConstructor:Uint8Array,readerType:"default"};this._pendingPullIntos.push(j)}O(p,c),tr(this)}[K](){if(this._pendingPullIntos.length>0){let c=this._pendingPullIntos.peek();c.readerType="none",this._pendingPullIntos=new T,this._pendingPullIntos.push(c)}}}Object.defineProperties(pn.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},byobRequest:{enumerable:!0},desiredSize:{enumerable:!0}}),o(pn.prototype.close,"close"),o(pn.prototype.enqueue,"enqueue"),o(pn.prototype.error,"error"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(pn.prototype,Symbol.toStringTag,{value:"ReadableByteStreamController",configurable:!0});function er(i){return!n(i)||!Object.prototype.hasOwnProperty.call(i,"_controlledReadableByteStream")?!1:i instanceof pn}function pu(i){return!n(i)||!Object.prototype.hasOwnProperty.call(i,"_associatedReadableByteStreamController")?!1:i instanceof Zn}function tr(i){if(!I_(i))return;if(i._pulling){i._pullAgain=!0;return}i._pulling=!0;let p=i._pullAlgorithm();m(p,()=>(i._pulling=!1,i._pullAgain&&(i._pullAgain=!1,tr(i)),null),A=>(At(i,A),null))}function Tf(i){gu(i),i._pendingPullIntos=new T}function mu(i,c){let p=!1;i._state==="closed"&&(p=!0);let A=Df(c);c.readerType==="default"?I(i,A,p):U_(i,A,p)}function Df(i){let c=i.bytesFilled,p=i.elementSize;return new i.viewConstructor(i.buffer,i.byteOffset,c/p)}function Ss(i,c,p,A){i._queue.push({buffer:c,byteOffset:p,byteLength:A}),i._queueTotalSize+=A}function Rf(i,c,p,A){let x;try{x=kf(c,p,p+A)}catch(j){throw At(i,j),j}Ss(i,x,0,A)}function xf(i,c){c.bytesFilled>0&&Rf(i,c.buffer,c.byteOffset,c.bytesFilled),kr(i)}function Of(i,c){let p=Math.min(i._queueTotalSize,c.byteLength-c.bytesFilled),A=c.bytesFilled+p,x=p,j=!1,z=A%c.elementSize,ne=A-z;ne>=c.minimumFill&&(x=ne-c.bytesFilled,j=!0);let me=i._queue;for(;x>0;){let de=me.peek(),ge=Math.min(x,de.byteLength),Ce=c.byteOffset+c.bytesFilled;Ef(c.buffer,Ce,de.buffer,de.byteOffset,ge),de.byteLength===ge?me.shift():(de.byteOffset+=ge,de.byteLength-=ge),i._queueTotalSize-=ge,Pf(i,ge,c),x-=ge}return j}function Pf(i,c,p){p.bytesFilled+=c}function Ff(i){i._queueTotalSize===0&&i._closeRequested?(vs(i),Oo(i._controlledReadableByteStream)):tr(i)}function gu(i){i._byobRequest!==null&&(i._byobRequest._associatedReadableByteStreamController=void 0,i._byobRequest._view=null,i._byobRequest=null)}function yu(i){for(;i._pendingPullIntos.length>0;){if(i._queueTotalSize===0)return;let c=i._pendingPullIntos.peek();Of(i,c)&&(kr(i),mu(i._controlledReadableByteStream,c))}}function x_(i){let c=i._controlledReadableByteStream._reader;for(;c._readRequests.length>0;){if(i._queueTotalSize===0)return;let p=c._readRequests.shift();Nf(i,p)}}function O_(i,c,p,A){let x=i._controlledReadableByteStream,j=c.constructor,z=R_(j),{byteOffset:ne,byteLength:me}=c,de=p*z,ge;try{ge=hn(c.buffer)}catch(xe){A._errorSteps(xe);return}let Ce={buffer:ge,bufferByteLength:ge.byteLength,byteOffset:ne,byteLength:me,bytesFilled:0,minimumFill:de,elementSize:z,viewConstructor:j,readerType:"byob"};if(i._pendingPullIntos.length>0){i._pendingPullIntos.push(Ce),jf(x,A);return}if(x._state==="closed"){let xe=new j(Ce.buffer,Ce.byteOffset,0);A._closeSteps(xe);return}if(i._queueTotalSize>0){if(Of(i,Ce)){let xe=Df(Ce);Ff(i),A._chunkSteps(xe);return}if(i._closeRequested){let xe=new TypeError("Insufficient bytes to fill elements in the given buffer");At(i,xe),A._errorSteps(xe);return}}i._pendingPullIntos.push(Ce),jf(x,A),tr(i)}function P_(i,c){c.readerType==="none"&&kr(i);let p=i._controlledReadableByteStream;if(Cu(p))for(;Uf(p)>0;){let A=kr(i);mu(p,A)}}function F_(i,c,p){if(Pf(i,c,p),p.readerType==="none"){xf(i,p),yu(i);return}if(p.bytesFilled<p.minimumFill)return;kr(i);let A=p.bytesFilled%p.elementSize;if(A>0){let x=p.byteOffset+p.bytesFilled;Rf(i,p.buffer,x-A,A)}p.bytesFilled-=A,mu(i._controlledReadableByteStream,p),yu(i)}function If(i,c){let p=i._pendingPullIntos.peek();gu(i),i._controlledReadableByteStream._state==="closed"?P_(i,p):F_(i,c,p),tr(i)}function kr(i){return i._pendingPullIntos.shift()}function I_(i){let c=i._controlledReadableByteStream;return c._state!=="readable"||i._closeRequested||!i._started?!1:!!(B(c)&&L(c)>0||Cu(c)&&Uf(c)>0||Bf(i)>0)}function vs(i){i._pullAlgorithm=void 0,i._cancelAlgorithm=void 0}function Ao(i){let c=i._controlledReadableByteStream;if(!(i._closeRequested||c._state!=="readable")){if(i._queueTotalSize>0){i._closeRequested=!0;return}if(i._pendingPullIntos.length>0){let p=i._pendingPullIntos.peek();if(p.bytesFilled%p.elementSize!==0){let A=new TypeError("Insufficient bytes to fill elements in the given buffer");throw At(i,A),A}}vs(i),Oo(c)}}function Ts(i,c){let p=i._controlledReadableByteStream;if(i._closeRequested||p._state!=="readable")return;let{buffer:A,byteOffset:x,byteLength:j}=c;if(xn(A))throw new TypeError("chunk's buffer is detached and so cannot be enqueued");let z=hn(A);if(i._pendingPullIntos.length>0){let ne=i._pendingPullIntos.peek();if(xn(ne.buffer))throw new TypeError("The BYOB request's buffer has been detached and so cannot be filled with an enqueued chunk");gu(i),ne.buffer=hn(ne.buffer),ne.readerType==="none"&&xf(i,ne)}if(B(p))if(x_(i),L(p)===0)Ss(i,z,x,j);else{i._pendingPullIntos.length>0&&kr(i);let ne=new Uint8Array(z,x,j);I(p,ne,!1)}else Cu(p)?(Ss(i,z,x,j),yu(i)):Ss(i,z,x,j);tr(i)}function At(i,c){let p=i._controlledReadableByteStream;p._state==="readable"&&(Tf(i),On(i),vs(i),lh(p,c))}function Nf(i,c){let p=i._queue.shift();i._queueTotalSize-=p.byteLength,Ff(i);let A=new Uint8Array(p.buffer,p.byteOffset,p.byteLength);c._chunkSteps(A)}function _u(i){if(i._byobRequest===null&&i._pendingPullIntos.length>0){let c=i._pendingPullIntos.peek(),p=new Uint8Array(c.buffer,c.byteOffset+c.bytesFilled,c.byteLength-c.bytesFilled),A=Object.create(Zn.prototype);B_(A,i,p),i._byobRequest=A}return i._byobRequest}function Bf(i){let c=i._controlledReadableByteStream._state;return c==="errored"?null:c==="closed"?0:i._strategyHWM-i._queueTotalSize}function Ds(i,c){let p=i._pendingPullIntos.peek();if(i._controlledReadableByteStream._state==="closed"){if(c!==0)throw new TypeError("bytesWritten must be 0 when calling respond() on a closed stream")}else{if(c===0)throw new TypeError("bytesWritten must be greater than 0 when calling respond() on a readable stream");if(p.bytesFilled+c>p.byteLength)throw new RangeError("bytesWritten out of range")}p.buffer=hn(p.buffer),If(i,c)}function Rs(i,c){let p=i._pendingPullIntos.peek();if(i._controlledReadableByteStream._state==="closed"){if(c.byteLength!==0)throw new TypeError("The view's length must be 0 when calling respondWithNewView() on a closed stream")}else if(c.byteLength===0)throw new TypeError("The view's length must be greater than 0 when calling respondWithNewView() on a readable stream");if(p.byteOffset+p.bytesFilled!==c.byteOffset)throw new RangeError("The region specified by view does not match byobRequest");if(p.bufferByteLength!==c.buffer.byteLength)throw new RangeError("The buffer of view has different capacity than byobRequest");if(p.bytesFilled+c.byteLength>p.byteLength)throw new RangeError("The region specified by view is larger than byobRequest");let x=c.byteLength;p.buffer=hn(c.buffer),If(i,x)}function Mf(i,c,p,A,x,j,z){c._controlledReadableByteStream=i,c._pullAgain=!1,c._pulling=!1,c._byobRequest=null,c._queue=c._queueTotalSize=void 0,On(c),c._closeRequested=!1,c._started=!1,c._strategyHWM=j,c._pullAlgorithm=A,c._cancelAlgorithm=x,c._autoAllocateChunkSize=z,c._pendingPullIntos=new T,i._readableStreamController=c;let ne=p();m(f(ne),()=>(c._started=!0,tr(c),null),me=>(At(c,me),null))}function N_(i,c,p){let A=Object.create(pn.prototype),x,j,z;c.start!==void 0?x=()=>c.start(A):x=()=>{},c.pull!==void 0?j=()=>c.pull(A):j=()=>f(void 0),c.cancel!==void 0?z=me=>c.cancel(me):z=()=>f(void 0);let ne=c.autoAllocateChunkSize;if(ne===0)throw new TypeError("autoAllocateChunkSize must be greater than 0");Mf(i,A,x,j,z,p,ne)}function B_(i,c,p){i._associatedReadableByteStreamController=c,i._view=p}function bu(i){return new TypeError(`ReadableStreamBYOBRequest.prototype.${i} can only be used on a ReadableStreamBYOBRequest`)}function So(i){return new TypeError(`ReadableByteStreamController.prototype.${i} can only be used on a ReadableByteStreamController`)}function M_(i,c){ae(i,c);let p=i?.mode;return{mode:p===void 0?void 0:L_(p,`${c} has member 'mode' that`)}}function L_(i,c){if(i=`${i}`,i!=="byob")throw new TypeError(`${c} '${i}' is not a valid enumeration value for ReadableStreamReaderMode`);return i}function j_(i,c){var p;ae(i,c);let A=(p=i?.min)!==null&&p!==void 0?p:1;return{min:F(A,`${c} has member 'min' that`)}}function Lf(i){return new Pn(i)}function jf(i,c){i._reader._readIntoRequests.push(c)}function U_(i,c,p){let x=i._reader._readIntoRequests.shift();p?x._closeSteps(c):x._chunkSteps(c)}function Uf(i){return i._reader._readIntoRequests.length}function Cu(i){let c=i._reader;return!(c===void 0||!nr(c))}class Pn{constructor(c){if(Ue(c,1,"ReadableStreamBYOBReader"),N(c,"First parameter"),Nn(c))throw new TypeError("This stream has already been locked for exclusive reading by another reader");if(!er(c._readableStreamController))throw new TypeError("Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source");q(this,c),this._readIntoRequests=new T}get closed(){return nr(this)?this._closedPromise:d(xs("closed"))}cancel(c=void 0){return nr(this)?this._ownerReadableStream===void 0?d(ee("cancel")):Y(this,c):d(xs("cancel"))}read(c,p={}){if(!nr(this))return d(xs("read"));if(!ArrayBuffer.isView(c))return d(new TypeError("view must be an array buffer view"));if(c.byteLength===0)return d(new TypeError("view must have non-zero byteLength"));if(c.buffer.byteLength===0)return d(new TypeError("view's buffer must have non-zero byteLength"));if(xn(c.buffer))return d(new TypeError("view's buffer has been detached"));let A;try{A=j_(p,"options")}catch(de){return d(de)}let x=A.min;if(x===0)return d(new TypeError("options.min must be greater than 0"));if(D_(c)){if(x>c.byteLength)return d(new RangeError("options.min must be less than or equal to view's byteLength"))}else if(x>c.length)return d(new RangeError("options.min must be less than or equal to view's length"));if(this._ownerReadableStream===void 0)return d(ee("read from"));let j,z,ne=l((de,ge)=>{j=de,z=ge});return $f(this,c,x,{_chunkSteps:de=>j({value:de,done:!1}),_closeSteps:de=>j({value:de,done:!0}),_errorSteps:de=>z(de)}),ne}releaseLock(){if(!nr(this))throw xs("releaseLock");this._ownerReadableStream!==void 0&&$_(this)}}Object.defineProperties(Pn.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),o(Pn.prototype.cancel,"cancel"),o(Pn.prototype.read,"read"),o(Pn.prototype.releaseLock,"releaseLock"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(Pn.prototype,Symbol.toStringTag,{value:"ReadableStreamBYOBReader",configurable:!0});function nr(i){return!n(i)||!Object.prototype.hasOwnProperty.call(i,"_readIntoRequests")?!1:i instanceof Pn}function $f(i,c,p,A){let x=i._ownerReadableStream;x._disturbed=!0,x._state==="errored"?A._errorSteps(x._storedError):O_(x._readableStreamController,c,p,A)}function $_(i){Q(i);let c=new TypeError("Reader was released");qf(i,c)}function qf(i,c){let p=i._readIntoRequests;i._readIntoRequests=new T,p.forEach(A=>{A._errorSteps(c)})}function xs(i){return new TypeError(`ReadableStreamBYOBReader.prototype.${i} can only be used on a ReadableStreamBYOBReader`)}function vo(i,c){let{highWaterMark:p}=i;if(p===void 0)return c;if(ft(p)||p<0)throw new RangeError("Invalid highWaterMark");return p}function Os(i){let{size:c}=i;return c||(()=>1)}function Ps(i,c){ae(i,c);let p=i?.highWaterMark,A=i?.size;return{highWaterMark:p===void 0?void 0:v(p),size:A===void 0?void 0:q_(A,`${c} has member 'size' that`)}}function q_(i,c){return te(i,c),p=>v(i(p))}function z_(i,c){ae(i,c);let p=i?.abort,A=i?.close,x=i?.start,j=i?.type,z=i?.write;return{abort:p===void 0?void 0:H_(p,i,`${c} has member 'abort' that`),close:A===void 0?void 0:W_(A,i,`${c} has member 'close' that`),start:x===void 0?void 0:G_(x,i,`${c} has member 'start' that`),write:z===void 0?void 0:J_(z,i,`${c} has member 'write' that`),type:j}}function H_(i,c,p){return te(i,p),A=>b(i,c,[A])}function W_(i,c,p){return te(i,p),()=>b(i,c,[])}function G_(i,c,p){return te(i,p),A=>E(i,c,[A])}function J_(i,c,p){return te(i,p),(A,x)=>b(i,c,[A,x])}function zf(i,c){if(!Ar(i))throw new TypeError(`${c} is not a WritableStream.`)}function V_(i){if(typeof i!="object"||i===null)return!1;try{return typeof i.aborted=="boolean"}catch{return!1}}let K_=typeof AbortController=="function";function Y_(){if(K_)return new AbortController}class Fn{constructor(c={},p={}){c===void 0?c=null:Oe(c,"First parameter");let A=Ps(p,"Second parameter"),x=z_(c,"First parameter");if(Wf(this),x.type!==void 0)throw new RangeError("Invalid type is specified");let z=Os(A),ne=vo(A,1);lb(this,x,ne,z)}get locked(){if(!Ar(this))throw Ms("locked");return Sr(this)}abort(c=void 0){return Ar(this)?Sr(this)?d(new TypeError("Cannot abort a stream that already has a writer")):Fs(this,c):d(Ms("abort"))}close(){return Ar(this)?Sr(this)?d(new TypeError("Cannot close a stream that already has a writer")):Yt(this)?d(new TypeError("Cannot close an already-closing stream")):Gf(this):d(Ms("close"))}getWriter(){if(!Ar(this))throw Ms("getWriter");return Hf(this)}}Object.defineProperties(Fn.prototype,{abort:{enumerable:!0},close:{enumerable:!0},getWriter:{enumerable:!0},locked:{enumerable:!0}}),o(Fn.prototype.abort,"abort"),o(Fn.prototype.close,"close"),o(Fn.prototype.getWriter,"getWriter"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(Fn.prototype,Symbol.toStringTag,{value:"WritableStream",configurable:!0});function Hf(i){return new mn(i)}function Q_(i,c,p,A,x=1,j=()=>1){let z=Object.create(Fn.prototype);Wf(z);let ne=Object.create(vr.prototype);return Xf(z,ne,i,c,p,A,x,j),z}function Wf(i){i._state="writable",i._storedError=void 0,i._writer=void 0,i._writableStreamController=void 0,i._writeRequests=new T,i._inFlightWriteRequest=void 0,i._closeRequest=void 0,i._inFlightCloseRequest=void 0,i._pendingAbortRequest=void 0,i._backpressure=!1}function Ar(i){return!n(i)||!Object.prototype.hasOwnProperty.call(i,"_writableStreamController")?!1:i instanceof Fn}function Sr(i){return i._writer!==void 0}function Fs(i,c){var p;if(i._state==="closed"||i._state==="errored")return f(void 0);i._writableStreamController._abortReason=c,(p=i._writableStreamController._abortController)===null||p===void 0||p.abort(c);let A=i._state;if(A==="closed"||A==="errored")return f(void 0);if(i._pendingAbortRequest!==void 0)return i._pendingAbortRequest._promise;let x=!1;A==="erroring"&&(x=!0,c=void 0);let j=l((z,ne)=>{i._pendingAbortRequest={_promise:void 0,_resolve:z,_reject:ne,_reason:c,_wasAlreadyErroring:x}});return i._pendingAbortRequest._promise=j,x||Eu(i,c),j}function Gf(i){let c=i._state;if(c==="closed"||c==="errored")return d(new TypeError(`The stream (in ${c} state) is not in the writable state and cannot be closed`));let p=l((x,j)=>{let z={_resolve:x,_reject:j};i._closeRequest=z}),A=i._writer;return A!==void 0&&i._backpressure&&c==="writable"&&xu(A),db(i._writableStreamController),p}function X_(i){return l((p,A)=>{let x={_resolve:p,_reject:A};i._writeRequests.push(x)})}function wu(i,c){if(i._state==="writable"){Eu(i,c);return}ku(i)}function Eu(i,c){let p=i._writableStreamController;i._state="erroring",i._storedError=c;let A=i._writer;A!==void 0&&Vf(A,c),!rb(i)&&p._started&&ku(i)}function ku(i){i._state="errored",i._writableStreamController[$]();let c=i._storedError;if(i._writeRequests.forEach(x=>{x._reject(c)}),i._writeRequests=new T,i._pendingAbortRequest===void 0){Is(i);return}let p=i._pendingAbortRequest;if(i._pendingAbortRequest=void 0,p._wasAlreadyErroring){p._reject(c),Is(i);return}let A=i._writableStreamController[R](p._reason);m(A,()=>(p._resolve(),Is(i),null),x=>(p._reject(x),Is(i),null))}function Z_(i){i._inFlightWriteRequest._resolve(void 0),i._inFlightWriteRequest=void 0}function eb(i,c){i._inFlightWriteRequest._reject(c),i._inFlightWriteRequest=void 0,wu(i,c)}function tb(i){i._inFlightCloseRequest._resolve(void 0),i._inFlightCloseRequest=void 0,i._state==="erroring"&&(i._storedError=void 0,i._pendingAbortRequest!==void 0&&(i._pendingAbortRequest._resolve(),i._pendingAbortRequest=void 0)),i._state="closed";let p=i._writer;p!==void 0&&nh(p)}function nb(i,c){i._inFlightCloseRequest._reject(c),i._inFlightCloseRequest=void 0,i._pendingAbortRequest!==void 0&&(i._pendingAbortRequest._reject(c),i._pendingAbortRequest=void 0),wu(i,c)}function Yt(i){return!(i._closeRequest===void 0&&i._inFlightCloseRequest===void 0)}function rb(i){return!(i._inFlightWriteRequest===void 0&&i._inFlightCloseRequest===void 0)}function ob(i){i._inFlightCloseRequest=i._closeRequest,i._closeRequest=void 0}function sb(i){i._inFlightWriteRequest=i._writeRequests.shift()}function Is(i){i._closeRequest!==void 0&&(i._closeRequest._reject(i._storedError),i._closeRequest=void 0);let c=i._writer;c!==void 0&&Du(c,i._storedError)}function Au(i,c){let p=i._writer;p!==void 0&&c!==i._backpressure&&(c?_b(p):xu(p)),i._backpressure=c}class mn{constructor(c){if(Ue(c,1,"WritableStreamDefaultWriter"),zf(c,"First parameter"),Sr(c))throw new TypeError("This stream has already been locked for exclusive writing by another writer");this._ownerWritableStream=c,c._writer=this;let p=c._state;if(p==="writable")!Yt(c)&&c._backpressure?js(this):rh(this),Ls(this);else if(p==="erroring")Ru(this,c._storedError),Ls(this);else if(p==="closed")rh(this),gb(this);else{let A=c._storedError;Ru(this,A),th(this,A)}}get closed(){return rr(this)?this._closedPromise:d(or("closed"))}get desiredSize(){if(!rr(this))throw or("desiredSize");if(this._ownerWritableStream===void 0)throw Do("desiredSize");return cb(this)}get ready(){return rr(this)?this._readyPromise:d(or("ready"))}abort(c=void 0){return rr(this)?this._ownerWritableStream===void 0?d(Do("abort")):ib(this,c):d(or("abort"))}close(){if(!rr(this))return d(or("close"));let c=this._ownerWritableStream;return c===void 0?d(Do("close")):Yt(c)?d(new TypeError("Cannot close an already-closing stream")):Jf(this)}releaseLock(){if(!rr(this))throw or("releaseLock");this._ownerWritableStream!==void 0&&Kf(this)}write(c=void 0){return rr(this)?this._ownerWritableStream===void 0?d(Do("write to")):Yf(this,c):d(or("write"))}}Object.defineProperties(mn.prototype,{abort:{enumerable:!0},close:{enumerable:!0},releaseLock:{enumerable:!0},write:{enumerable:!0},closed:{enumerable:!0},desiredSize:{enumerable:!0},ready:{enumerable:!0}}),o(mn.prototype.abort,"abort"),o(mn.prototype.close,"close"),o(mn.prototype.releaseLock,"releaseLock"),o(mn.prototype.write,"write"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(mn.prototype,Symbol.toStringTag,{value:"WritableStreamDefaultWriter",configurable:!0});function rr(i){return!n(i)||!Object.prototype.hasOwnProperty.call(i,"_ownerWritableStream")?!1:i instanceof mn}function ib(i,c){let p=i._ownerWritableStream;return Fs(p,c)}function Jf(i){let c=i._ownerWritableStream;return Gf(c)}function ab(i){let c=i._ownerWritableStream,p=c._state;return Yt(c)||p==="closed"?f(void 0):p==="errored"?d(c._storedError):Jf(i)}function ub(i,c){i._closedPromiseState==="pending"?Du(i,c):yb(i,c)}function Vf(i,c){i._readyPromiseState==="pending"?oh(i,c):bb(i,c)}function cb(i){let c=i._ownerWritableStream,p=c._state;return p==="errored"||p==="erroring"?null:p==="closed"?0:Zf(c._writableStreamController)}function Kf(i){let c=i._ownerWritableStream,p=new TypeError("Writer was released and can no longer be used to monitor the stream's closedness");Vf(i,p),ub(i,p),c._writer=void 0,i._ownerWritableStream=void 0}function Yf(i,c){let p=i._ownerWritableStream,A=p._writableStreamController,x=fb(A,c);if(p!==i._ownerWritableStream)return d(Do("write to"));let j=p._state;if(j==="errored")return d(p._storedError);if(Yt(p)||j==="closed")return d(new TypeError("The stream is closing or closed and cannot be written to"));if(j==="erroring")return d(p._storedError);let z=X_(p);return hb(A,c,x),z}let Qf={};class vr{constructor(){throw new TypeError("Illegal constructor")}get abortReason(){if(!Su(this))throw Tu("abortReason");return this._abortReason}get signal(){if(!Su(this))throw Tu("signal");if(this._abortController===void 0)throw new TypeError("WritableStreamDefaultController.prototype.signal is not supported");return this._abortController.signal}error(c=void 0){if(!Su(this))throw Tu("error");this._controlledWritableStream._state==="writable"&&eh(this,c)}[R](c){let p=this._abortAlgorithm(c);return Ns(this),p}[$](){On(this)}}Object.defineProperties(vr.prototype,{abortReason:{enumerable:!0},signal:{enumerable:!0},error:{enumerable:!0}}),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(vr.prototype,Symbol.toStringTag,{value:"WritableStreamDefaultController",configurable:!0});function Su(i){return!n(i)||!Object.prototype.hasOwnProperty.call(i,"_controlledWritableStream")?!1:i instanceof vr}function Xf(i,c,p,A,x,j,z,ne){c._controlledWritableStream=i,i._writableStreamController=c,c._queue=void 0,c._queueTotalSize=void 0,On(c),c._abortReason=void 0,c._abortController=Y_(),c._started=!1,c._strategySizeAlgorithm=ne,c._strategyHWM=z,c._writeAlgorithm=A,c._closeAlgorithm=x,c._abortAlgorithm=j;let me=vu(c);Au(i,me);let de=p(),ge=f(de);m(ge,()=>(c._started=!0,Bs(c),null),Ce=>(c._started=!0,wu(i,Ce),null))}function lb(i,c,p,A){let x=Object.create(vr.prototype),j,z,ne,me;c.start!==void 0?j=()=>c.start(x):j=()=>{},c.write!==void 0?z=de=>c.write(de,x):z=()=>f(void 0),c.close!==void 0?ne=()=>c.close():ne=()=>f(void 0),c.abort!==void 0?me=de=>c.abort(de):me=()=>f(void 0),Xf(i,x,j,z,ne,me,p,A)}function Ns(i){i._writeAlgorithm=void 0,i._closeAlgorithm=void 0,i._abortAlgorithm=void 0,i._strategySizeAlgorithm=void 0}function db(i){hu(i,Qf,0),Bs(i)}function fb(i,c){try{return i._strategySizeAlgorithm(c)}catch(p){return To(i,p),1}}function Zf(i){return i._strategyHWM-i._queueTotalSize}function hb(i,c,p){try{hu(i,c,p)}catch(x){To(i,x);return}let A=i._controlledWritableStream;if(!Yt(A)&&A._state==="writable"){let x=vu(i);Au(A,x)}Bs(i)}function Bs(i){let c=i._controlledWritableStream;if(!i._started||c._inFlightWriteRequest!==void 0)return;if(c._state==="erroring"){ku(c);return}if(i._queue.length===0)return;let A=T_(i);A===Qf?pb(i):mb(i,A)}function To(i,c){i._controlledWritableStream._state==="writable"&&eh(i,c)}function pb(i){let c=i._controlledWritableStream;ob(c),fu(i);let p=i._closeAlgorithm();Ns(i),m(p,()=>(tb(c),null),A=>(nb(c,A),null))}function mb(i,c){let p=i._controlledWritableStream;sb(p);let A=i._writeAlgorithm(c);m(A,()=>{Z_(p);let x=p._state;if(fu(i),!Yt(p)&&x==="writable"){let j=vu(i);Au(p,j)}return Bs(i),null},x=>(p._state==="writable"&&Ns(i),eb(p,x),null))}function vu(i){return Zf(i)<=0}function eh(i,c){let p=i._controlledWritableStream;Ns(i),Eu(p,c)}function Ms(i){return new TypeError(`WritableStream.prototype.${i} can only be used on a WritableStream`)}function Tu(i){return new TypeError(`WritableStreamDefaultController.prototype.${i} can only be used on a WritableStreamDefaultController`)}function or(i){return new TypeError(`WritableStreamDefaultWriter.prototype.${i} can only be used on a WritableStreamDefaultWriter`)}function Do(i){return new TypeError("Cannot "+i+" a stream using a released writer")}function Ls(i){i._closedPromise=l((c,p)=>{i._closedPromise_resolve=c,i._closedPromise_reject=p,i._closedPromiseState="pending"})}function th(i,c){Ls(i),Du(i,c)}function gb(i){Ls(i),nh(i)}function Du(i,c){i._closedPromise_reject!==void 0&&(g(i._closedPromise),i._closedPromise_reject(c),i._closedPromise_resolve=void 0,i._closedPromise_reject=void 0,i._closedPromiseState="rejected")}function yb(i,c){th(i,c)}function nh(i){i._closedPromise_resolve!==void 0&&(i._closedPromise_resolve(void 0),i._closedPromise_resolve=void 0,i._closedPromise_reject=void 0,i._closedPromiseState="resolved")}function js(i){i._readyPromise=l((c,p)=>{i._readyPromise_resolve=c,i._readyPromise_reject=p}),i._readyPromiseState="pending"}function Ru(i,c){js(i),oh(i,c)}function rh(i){js(i),xu(i)}function oh(i,c){i._readyPromise_reject!==void 0&&(g(i._readyPromise),i._readyPromise_reject(c),i._readyPromise_resolve=void 0,i._readyPromise_reject=void 0,i._readyPromiseState="rejected")}function _b(i){js(i)}function bb(i,c){Ru(i,c)}function xu(i){i._readyPromise_resolve!==void 0&&(i._readyPromise_resolve(void 0),i._readyPromise_resolve=void 0,i._readyPromise_reject=void 0,i._readyPromiseState="fulfilled")}function Cb(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof global<"u")return global}let Ou=Cb();function wb(i){if(!(typeof i=="function"||typeof i=="object")||i.name!=="DOMException")return!1;try{return new i,!0}catch{return!1}}function Eb(){let i=Ou?.DOMException;return wb(i)?i:void 0}function kb(){let i=function(p,A){this.message=p||"",this.name=A||"Error",Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)};return o(i,"DOMException"),i.prototype=Object.create(Error.prototype),Object.defineProperty(i.prototype,"constructor",{value:i,writable:!0,configurable:!0}),i}let Ab=Eb()||kb();function sh(i,c,p,A,x,j){let z=U(i),ne=Hf(c);i._disturbed=!0;let me=!1,de=f(void 0);return l((ge,Ce)=>{let xe;if(j!==void 0){if(xe=()=>{let fe=j.reason!==void 0?j.reason:new Ab("Aborted","AbortError"),Ee=[];A||Ee.push(()=>c._state==="writable"?Fs(c,fe):f(void 0)),x||Ee.push(()=>i._state==="readable"?Mt(i,fe):f(void 0)),at(()=>Promise.all(Ee.map(Pe=>Pe())),!0,fe)},j.aborted){xe();return}j.addEventListener("abort",xe)}function Lt(){return l((fe,Ee)=>{function Pe(ht){ht?fe():h(xr(),Pe,Ee)}Pe(!1)})}function xr(){return me?f(!0):h(ne._readyPromise,()=>l((fe,Ee)=>{ie(z,{_chunkSteps:Pe=>{de=h(Yf(ne,Pe),void 0,e),fe(!1)},_closeSteps:()=>fe(!0),_errorSteps:Ee})}))}if(yn(i,z._closedPromise,fe=>(A?St(!0,fe):at(()=>Fs(c,fe),!0,fe),null)),yn(c,ne._closedPromise,fe=>(x?St(!0,fe):at(()=>Mt(i,fe),!0,fe),null)),rt(i,z._closedPromise,()=>(p?St():at(()=>ab(ne)),null)),Yt(c)||c._state==="closed"){let fe=new TypeError("the destination writable stream closed before all data could be piped to it");x?St(!0,fe):at(()=>Mt(i,fe),!0,fe)}g(Lt());function Mn(){let fe=de;return h(de,()=>fe!==de?Mn():void 0)}function yn(fe,Ee,Pe){fe._state==="errored"?Pe(fe._storedError):w(Ee,Pe)}function rt(fe,Ee,Pe){fe._state==="closed"?Pe():C(Ee,Pe)}function at(fe,Ee,Pe){if(me)return;me=!0,c._state==="writable"&&!Yt(c)?C(Mn(),ht):ht();function ht(){return m(fe(),()=>_n(Ee,Pe),Or=>_n(!0,Or)),null}}function St(fe,Ee){me||(me=!0,c._state==="writable"&&!Yt(c)?C(Mn(),()=>_n(fe,Ee)):_n(fe,Ee))}function _n(fe,Ee){return Kf(ne),Q(z),j!==void 0&&j.removeEventListener("abort",xe),fe?Ce(Ee):ge(void 0),null}})}class gn{constructor(){throw new TypeError("Illegal constructor")}get desiredSize(){if(!Us(this))throw qs("desiredSize");return Pu(this)}close(){if(!Us(this))throw qs("close");if(!Dr(this))throw new TypeError("The stream is not in a state that permits close");sr(this)}enqueue(c=void 0){if(!Us(this))throw qs("enqueue");if(!Dr(this))throw new TypeError("The stream is not in a state that permits enqueue");return Tr(this,c)}error(c=void 0){if(!Us(this))throw qs("error");Bt(this,c)}[H](c){On(this);let p=this._cancelAlgorithm(c);return $s(this),p}[P](c){let p=this._controlledReadableStream;if(this._queue.length>0){let A=fu(this);this._closeRequested&&this._queue.length===0?($s(this),Oo(p)):Ro(this),c._chunkSteps(A)}else O(p,c),Ro(this)}[K](){}}Object.defineProperties(gn.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},desiredSize:{enumerable:!0}}),o(gn.prototype.close,"close"),o(gn.prototype.enqueue,"enqueue"),o(gn.prototype.error,"error"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(gn.prototype,Symbol.toStringTag,{value:"ReadableStreamDefaultController",configurable:!0});function Us(i){return!n(i)||!Object.prototype.hasOwnProperty.call(i,"_controlledReadableStream")?!1:i instanceof gn}function Ro(i){if(!ih(i))return;if(i._pulling){i._pullAgain=!0;return}i._pulling=!0;let p=i._pullAlgorithm();m(p,()=>(i._pulling=!1,i._pullAgain&&(i._pullAgain=!1,Ro(i)),null),A=>(Bt(i,A),null))}function ih(i){let c=i._controlledReadableStream;return!Dr(i)||!i._started?!1:!!(Nn(c)&&L(c)>0||Pu(i)>0)}function $s(i){i._pullAlgorithm=void 0,i._cancelAlgorithm=void 0,i._strategySizeAlgorithm=void 0}function sr(i){if(!Dr(i))return;let c=i._controlledReadableStream;i._closeRequested=!0,i._queue.length===0&&($s(i),Oo(c))}function Tr(i,c){if(!Dr(i))return;let p=i._controlledReadableStream;if(Nn(p)&&L(p)>0)I(p,c,!1);else{let A;try{A=i._strategySizeAlgorithm(c)}catch(x){throw Bt(i,x),x}try{hu(i,c,A)}catch(x){throw Bt(i,x),x}}Ro(i)}function Bt(i,c){let p=i._controlledReadableStream;p._state==="readable"&&(On(i),$s(i),lh(p,c))}function Pu(i){let c=i._controlledReadableStream._state;return c==="errored"?null:c==="closed"?0:i._strategyHWM-i._queueTotalSize}function Sb(i){return!ih(i)}function Dr(i){let c=i._controlledReadableStream._state;return!i._closeRequested&&c==="readable"}function ah(i,c,p,A,x,j,z){c._controlledReadableStream=i,c._queue=void 0,c._queueTotalSize=void 0,On(c),c._started=!1,c._closeRequested=!1,c._pullAgain=!1,c._pulling=!1,c._strategySizeAlgorithm=z,c._strategyHWM=j,c._pullAlgorithm=A,c._cancelAlgorithm=x,i._readableStreamController=c;let ne=p();m(f(ne),()=>(c._started=!0,Ro(c),null),me=>(Bt(c,me),null))}function vb(i,c,p,A){let x=Object.create(gn.prototype),j,z,ne;c.start!==void 0?j=()=>c.start(x):j=()=>{},c.pull!==void 0?z=()=>c.pull(x):z=()=>f(void 0),c.cancel!==void 0?ne=me=>c.cancel(me):ne=()=>f(void 0),ah(i,x,j,z,ne,p,A)}function qs(i){return new TypeError(`ReadableStreamDefaultController.prototype.${i} can only be used on a ReadableStreamDefaultController`)}function Tb(i,c){return er(i._readableStreamController)?Rb(i):Db(i)}function Db(i,c){let p=U(i),A=!1,x=!1,j=!1,z=!1,ne,me,de,ge,Ce,xe=l(rt=>{Ce=rt});function Lt(){return A?(x=!0,f(void 0)):(A=!0,ie(p,{_chunkSteps:at=>{_(()=>{x=!1;let St=at,_n=at;j||Tr(de._readableStreamController,St),z||Tr(ge._readableStreamController,_n),A=!1,x&&Lt()})},_closeSteps:()=>{A=!1,j||sr(de._readableStreamController),z||sr(ge._readableStreamController),(!j||!z)&&Ce(void 0)},_errorSteps:()=>{A=!1}}),f(void 0))}function xr(rt){if(j=!0,ne=rt,z){let at=De([ne,me]),St=Mt(i,at);Ce(St)}return xe}function Mn(rt){if(z=!0,me=rt,j){let at=De([ne,me]),St=Mt(i,at);Ce(St)}return xe}function yn(){}return de=xo(yn,Lt,xr),ge=xo(yn,Lt,Mn),w(p._closedPromise,rt=>(Bt(de._readableStreamController,rt),Bt(ge._readableStreamController,rt),(!j||!z)&&Ce(void 0),null)),[de,ge]}function Rb(i){let c=U(i),p=!1,A=!1,x=!1,j=!1,z=!1,ne,me,de,ge,Ce,xe=l(fe=>{Ce=fe});function Lt(fe){w(fe._closedPromise,Ee=>(fe!==c||(At(de._readableStreamController,Ee),At(ge._readableStreamController,Ee),(!j||!z)&&Ce(void 0)),null))}function xr(){nr(c)&&(Q(c),c=U(i),Lt(c)),ie(c,{_chunkSteps:Ee=>{_(()=>{A=!1,x=!1;let Pe=Ee,ht=Ee;if(!j&&!z)try{ht=Sf(Ee)}catch(Or){At(de._readableStreamController,Or),At(ge._readableStreamController,Or),Ce(Mt(i,Or));return}j||Ts(de._readableStreamController,Pe),z||Ts(ge._readableStreamController,ht),p=!1,A?yn():x&&rt()})},_closeSteps:()=>{p=!1,j||Ao(de._readableStreamController),z||Ao(ge._readableStreamController),de._readableStreamController._pendingPullIntos.length>0&&Ds(de._readableStreamController,0),ge._readableStreamController._pendingPullIntos.length>0&&Ds(ge._readableStreamController,0),(!j||!z)&&Ce(void 0)},_errorSteps:()=>{p=!1}})}function Mn(fe,Ee){oe(c)&&(Q(c),c=Lf(i),Lt(c));let Pe=Ee?ge:de,ht=Ee?de:ge;$f(c,fe,1,{_chunkSteps:Pr=>{_(()=>{A=!1,x=!1;let Fr=Ee?z:j;if(Ee?j:z)Fr||Rs(Pe._readableStreamController,Pr);else{let kh;try{kh=Sf(Pr)}catch(Mu){At(Pe._readableStreamController,Mu),At(ht._readableStreamController,Mu),Ce(Mt(i,Mu));return}Fr||Rs(Pe._readableStreamController,Pr),Ts(ht._readableStreamController,kh)}p=!1,A?yn():x&&rt()})},_closeSteps:Pr=>{p=!1;let Fr=Ee?z:j,Ys=Ee?j:z;Fr||Ao(Pe._readableStreamController),Ys||Ao(ht._readableStreamController),Pr!==void 0&&(Fr||Rs(Pe._readableStreamController,Pr),!Ys&&ht._readableStreamController._pendingPullIntos.length>0&&Ds(ht._readableStreamController,0)),(!Fr||!Ys)&&Ce(void 0)},_errorSteps:()=>{p=!1}})}function yn(){if(p)return A=!0,f(void 0);p=!0;let fe=_u(de._readableStreamController);return fe===null?xr():Mn(fe._view,!1),f(void 0)}function rt(){if(p)return x=!0,f(void 0);p=!0;let fe=_u(ge._readableStreamController);return fe===null?xr():Mn(fe._view,!0),f(void 0)}function at(fe){if(j=!0,ne=fe,z){let Ee=De([ne,me]),Pe=Mt(i,Ee);Ce(Pe)}return xe}function St(fe){if(z=!0,me=fe,j){let Ee=De([ne,me]),Pe=Mt(i,Ee);Ce(Pe)}return xe}function _n(){}return de=ch(_n,yn,at),ge=ch(_n,rt,St),Lt(c),[de,ge]}function xb(i){return n(i)&&typeof i.getReader<"u"}function Ob(i){return xb(i)?Fb(i.getReader()):Pb(i)}function Pb(i){let c,p=Af(i,"async"),A=e;function x(){let z;try{z=k_(p)}catch(me){return d(me)}let ne=f(z);return y(ne,me=>{if(!n(me))throw new TypeError("The promise returned by the iterator.next() method must fulfill with an object");if(A_(me))sr(c._readableStreamController);else{let ge=S_(me);Tr(c._readableStreamController,ge)}})}function j(z){let ne=p.iterator,me;try{me=As(ne,"return")}catch(Ce){return d(Ce)}if(me===void 0)return f(void 0);let de;try{de=E(me,ne,[z])}catch(Ce){return d(Ce)}let ge=f(de);return y(ge,Ce=>{if(!n(Ce))throw new TypeError("The promise returned by the iterator.return() method must fulfill with an object")})}return c=xo(A,x,j,0),c}function Fb(i){let c,p=e;function A(){let j;try{j=i.read()}catch(z){return d(z)}return y(j,z=>{if(!n(z))throw new TypeError("The promise returned by the reader.read() method must fulfill with an object");if(z.done)sr(c._readableStreamController);else{let ne=z.value;Tr(c._readableStreamController,ne)}})}function x(j){try{return f(i.cancel(j))}catch(z){return d(z)}}return c=xo(p,A,x,0),c}function Ib(i,c){ae(i,c);let p=i,A=p?.autoAllocateChunkSize,x=p?.cancel,j=p?.pull,z=p?.start,ne=p?.type;return{autoAllocateChunkSize:A===void 0?void 0:F(A,`${c} has member 'autoAllocateChunkSize' that`),cancel:x===void 0?void 0:Nb(x,p,`${c} has member 'cancel' that`),pull:j===void 0?void 0:Bb(j,p,`${c} has member 'pull' that`),start:z===void 0?void 0:Mb(z,p,`${c} has member 'start' that`),type:ne===void 0?void 0:Lb(ne,`${c} has member 'type' that`)}}function Nb(i,c,p){return te(i,p),A=>b(i,c,[A])}function Bb(i,c,p){return te(i,p),A=>b(i,c,[A])}function Mb(i,c,p){return te(i,p),A=>E(i,c,[A])}function Lb(i,c){if(i=`${i}`,i!=="bytes")throw new TypeError(`${c} '${i}' is not a valid enumeration value for ReadableStreamType`);return i}function jb(i,c){return ae(i,c),{preventCancel:!!i?.preventCancel}}function uh(i,c){ae(i,c);let p=i?.preventAbort,A=i?.preventCancel,x=i?.preventClose,j=i?.signal;return j!==void 0&&Ub(j,`${c} has member 'signal' that`),{preventAbort:!!p,preventCancel:!!A,preventClose:!!x,signal:j}}function Ub(i,c){if(!V_(i))throw new TypeError(`${c} is not an AbortSignal.`)}function $b(i,c){ae(i,c);let p=i?.readable;k(p,"readable","ReadableWritablePair"),N(p,`${c} has member 'readable' that`);let A=i?.writable;return k(A,"writable","ReadableWritablePair"),zf(A,`${c} has member 'writable' that`),{readable:p,writable:A}}class et{constructor(c={},p={}){c===void 0?c=null:Oe(c,"First parameter");let A=Ps(p,"Second parameter"),x=Ib(c,"First parameter");if(Fu(this),x.type==="bytes"){if(A.size!==void 0)throw new RangeError("The strategy for a byte stream cannot have a size function");let j=vo(A,0);N_(this,x,j)}else{let j=Os(A),z=vo(A,1);vb(this,x,z,j)}}get locked(){if(!In(this))throw ir("locked");return Nn(this)}cancel(c=void 0){return In(this)?Nn(this)?d(new TypeError("Cannot cancel a stream that already has a reader")):Mt(this,c):d(ir("cancel"))}getReader(c=void 0){if(!In(this))throw ir("getReader");return M_(c,"First parameter").mode===void 0?U(this):Lf(this)}pipeThrough(c,p={}){if(!In(this))throw ir("pipeThrough");Ue(c,1,"pipeThrough");let A=$b(c,"First parameter"),x=uh(p,"Second parameter");if(Nn(this))throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream");if(Sr(A.writable))throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream");let j=sh(this,A.writable,x.preventClose,x.preventAbort,x.preventCancel,x.signal);return g(j),A.readable}pipeTo(c,p={}){if(!In(this))return d(ir("pipeTo"));if(c===void 0)return d("Parameter 1 is required in 'pipeTo'.");if(!Ar(c))return d(new TypeError("ReadableStream.prototype.pipeTo's first argument must be a WritableStream"));let A;try{A=uh(p,"Second parameter")}catch(x){return d(x)}return Nn(this)?d(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream")):Sr(c)?d(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream")):sh(this,c,A.preventClose,A.preventAbort,A.preventCancel,A.signal)}tee(){if(!In(this))throw ir("tee");let c=Tb(this);return De(c)}values(c=void 0){if(!In(this))throw ir("values");let p=jb(c,"First parameter");return Cr(this,p.preventCancel)}[du](c){return this.values(c)}static from(c){return Ob(c)}}Object.defineProperties(et,{from:{enumerable:!0}}),Object.defineProperties(et.prototype,{cancel:{enumerable:!0},getReader:{enumerable:!0},pipeThrough:{enumerable:!0},pipeTo:{enumerable:!0},tee:{enumerable:!0},values:{enumerable:!0},locked:{enumerable:!0}}),o(et.from,"from"),o(et.prototype.cancel,"cancel"),o(et.prototype.getReader,"getReader"),o(et.prototype.pipeThrough,"pipeThrough"),o(et.prototype.pipeTo,"pipeTo"),o(et.prototype.tee,"tee"),o(et.prototype.values,"values"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(et.prototype,Symbol.toStringTag,{value:"ReadableStream",configurable:!0}),Object.defineProperty(et.prototype,du,{value:et.prototype.values,writable:!0,configurable:!0});function xo(i,c,p,A=1,x=()=>1){let j=Object.create(et.prototype);Fu(j);let z=Object.create(gn.prototype);return ah(j,z,i,c,p,A,x),j}function ch(i,c,p){let A=Object.create(et.prototype);Fu(A);let x=Object.create(pn.prototype);return Mf(A,x,i,c,p,0,void 0),A}function Fu(i){i._state="readable",i._reader=void 0,i._storedError=void 0,i._disturbed=!1}function In(i){return!n(i)||!Object.prototype.hasOwnProperty.call(i,"_readableStreamController")?!1:i instanceof et}function Nn(i){return i._reader!==void 0}function Mt(i,c){if(i._disturbed=!0,i._state==="closed")return f(void 0);if(i._state==="errored")return d(i._storedError);Oo(i);let p=i._reader;if(p!==void 0&&nr(p)){let x=p._readIntoRequests;p._readIntoRequests=new T,x.forEach(j=>{j._closeSteps(void 0)})}let A=i._readableStreamController[H](c);return y(A,e)}function Oo(i){i._state="closed";let c=i._reader;if(c!==void 0&&(ce(c),oe(c))){let p=c._readRequests;c._readRequests=new T,p.forEach(A=>{A._closeSteps()})}}function lh(i,c){i._state="errored",i._storedError=c;let p=i._reader;p!==void 0&&(J(p,c),oe(p)?Ie(p,c):qf(p,c))}function ir(i){return new TypeError(`ReadableStream.prototype.${i} can only be used on a ReadableStream`)}function dh(i,c){ae(i,c);let p=i?.highWaterMark;return k(p,"highWaterMark","QueuingStrategyInit"),{highWaterMark:v(p)}}let fh=i=>i.byteLength;o(fh,"size");class zs{constructor(c){Ue(c,1,"ByteLengthQueuingStrategy"),c=dh(c,"First parameter"),this._byteLengthQueuingStrategyHighWaterMark=c.highWaterMark}get highWaterMark(){if(!ph(this))throw hh("highWaterMark");return this._byteLengthQueuingStrategyHighWaterMark}get size(){if(!ph(this))throw hh("size");return fh}}Object.defineProperties(zs.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(zs.prototype,Symbol.toStringTag,{value:"ByteLengthQueuingStrategy",configurable:!0});function hh(i){return new TypeError(`ByteLengthQueuingStrategy.prototype.${i} can only be used on a ByteLengthQueuingStrategy`)}function ph(i){return!n(i)||!Object.prototype.hasOwnProperty.call(i,"_byteLengthQueuingStrategyHighWaterMark")?!1:i instanceof zs}let mh=()=>1;o(mh,"size");class Hs{constructor(c){Ue(c,1,"CountQueuingStrategy"),c=dh(c,"First parameter"),this._countQueuingStrategyHighWaterMark=c.highWaterMark}get highWaterMark(){if(!yh(this))throw gh("highWaterMark");return this._countQueuingStrategyHighWaterMark}get size(){if(!yh(this))throw gh("size");return mh}}Object.defineProperties(Hs.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(Hs.prototype,Symbol.toStringTag,{value:"CountQueuingStrategy",configurable:!0});function gh(i){return new TypeError(`CountQueuingStrategy.prototype.${i} can only be used on a CountQueuingStrategy`)}function yh(i){return!n(i)||!Object.prototype.hasOwnProperty.call(i,"_countQueuingStrategyHighWaterMark")?!1:i instanceof Hs}function qb(i,c){ae(i,c);let p=i?.cancel,A=i?.flush,x=i?.readableType,j=i?.start,z=i?.transform,ne=i?.writableType;return{cancel:p===void 0?void 0:Gb(p,i,`${c} has member 'cancel' that`),flush:A===void 0?void 0:zb(A,i,`${c} has member 'flush' that`),readableType:x,start:j===void 0?void 0:Hb(j,i,`${c} has member 'start' that`),transform:z===void 0?void 0:Wb(z,i,`${c} has member 'transform' that`),writableType:ne}}function zb(i,c,p){return te(i,p),A=>b(i,c,[A])}function Hb(i,c,p){return te(i,p),A=>E(i,c,[A])}function Wb(i,c,p){return te(i,p),(A,x)=>b(i,c,[A,x])}function Gb(i,c,p){return te(i,p),A=>b(i,c,[A])}class Ws{constructor(c={},p={},A={}){c===void 0&&(c=null);let x=Ps(p,"Second parameter"),j=Ps(A,"Third parameter"),z=qb(c,"First parameter");if(z.readableType!==void 0)throw new RangeError("Invalid readableType specified");if(z.writableType!==void 0)throw new RangeError("Invalid writableType specified");let ne=vo(j,0),me=Os(j),de=vo(x,1),ge=Os(x),Ce,xe=l(Lt=>{Ce=Lt});Jb(this,xe,de,ge,ne,me),Kb(this,z),z.start!==void 0?Ce(z.start(this._transformStreamController)):Ce(void 0)}get readable(){if(!_h(this))throw Eh("readable");return this._readable}get writable(){if(!_h(this))throw Eh("writable");return this._writable}}Object.defineProperties(Ws.prototype,{readable:{enumerable:!0},writable:{enumerable:!0}}),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(Ws.prototype,Symbol.toStringTag,{value:"TransformStream",configurable:!0});function Jb(i,c,p,A,x,j){function z(){return c}function ne(xe){return Xb(i,xe)}function me(xe){return Zb(i,xe)}function de(){return eC(i)}i._writable=Q_(z,ne,de,me,p,A);function ge(){return tC(i)}function Ce(xe){return nC(i,xe)}i._readable=xo(z,ge,Ce,x,j),i._backpressure=void 0,i._backpressureChangePromise=void 0,i._backpressureChangePromise_resolve=void 0,Gs(i,!0),i._transformStreamController=void 0}function _h(i){return!n(i)||!Object.prototype.hasOwnProperty.call(i,"_transformStreamController")?!1:i instanceof Ws}function bh(i,c){Bt(i._readable._readableStreamController,c),Iu(i,c)}function Iu(i,c){Vs(i._transformStreamController),To(i._writable._writableStreamController,c),Nu(i)}function Nu(i){i._backpressure&&Gs(i,!1)}function Gs(i,c){i._backpressureChangePromise!==void 0&&i._backpressureChangePromise_resolve(),i._backpressureChangePromise=l(p=>{i._backpressureChangePromise_resolve=p}),i._backpressure=c}class Bn{constructor(){throw new TypeError("Illegal constructor")}get desiredSize(){if(!Js(this))throw Ks("desiredSize");let c=this._controlledTransformStream._readable._readableStreamController;return Pu(c)}enqueue(c=void 0){if(!Js(this))throw Ks("enqueue");Ch(this,c)}error(c=void 0){if(!Js(this))throw Ks("error");Yb(this,c)}terminate(){if(!Js(this))throw Ks("terminate");Qb(this)}}Object.defineProperties(Bn.prototype,{enqueue:{enumerable:!0},error:{enumerable:!0},terminate:{enumerable:!0},desiredSize:{enumerable:!0}}),o(Bn.prototype.enqueue,"enqueue"),o(Bn.prototype.error,"error"),o(Bn.prototype.terminate,"terminate"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(Bn.prototype,Symbol.toStringTag,{value:"TransformStreamDefaultController",configurable:!0});function Js(i){return!n(i)||!Object.prototype.hasOwnProperty.call(i,"_controlledTransformStream")?!1:i instanceof Bn}function Vb(i,c,p,A,x){c._controlledTransformStream=i,i._transformStreamController=c,c._transformAlgorithm=p,c._flushAlgorithm=A,c._cancelAlgorithm=x,c._finishPromise=void 0,c._finishPromise_resolve=void 0,c._finishPromise_reject=void 0}function Kb(i,c){let p=Object.create(Bn.prototype),A,x,j;c.transform!==void 0?A=z=>c.transform(z,p):A=z=>{try{return Ch(p,z),f(void 0)}catch(ne){return d(ne)}},c.flush!==void 0?x=()=>c.flush(p):x=()=>f(void 0),c.cancel!==void 0?j=z=>c.cancel(z):j=()=>f(void 0),Vb(i,p,A,x,j)}function Vs(i){i._transformAlgorithm=void 0,i._flushAlgorithm=void 0,i._cancelAlgorithm=void 0}function Ch(i,c){let p=i._controlledTransformStream,A=p._readable._readableStreamController;if(!Dr(A))throw new TypeError("Readable side is not in a state that permits enqueue");try{Tr(A,c)}catch(j){throw Iu(p,j),p._readable._storedError}Sb(A)!==p._backpressure&&Gs(p,!0)}function Yb(i,c){bh(i._controlledTransformStream,c)}function wh(i,c){let p=i._transformAlgorithm(c);return y(p,void 0,A=>{throw bh(i._controlledTransformStream,A),A})}function Qb(i){let c=i._controlledTransformStream,p=c._readable._readableStreamController;sr(p);let A=new TypeError("TransformStream terminated");Iu(c,A)}function Xb(i,c){let p=i._transformStreamController;if(i._backpressure){let A=i._backpressureChangePromise;return y(A,()=>{let x=i._writable;if(x._state==="erroring")throw x._storedError;return wh(p,c)})}return wh(p,c)}function Zb(i,c){let p=i._transformStreamController;if(p._finishPromise!==void 0)return p._finishPromise;let A=i._readable;p._finishPromise=l((j,z)=>{p._finishPromise_resolve=j,p._finishPromise_reject=z});let x=p._cancelAlgorithm(c);return Vs(p),m(x,()=>(A._state==="errored"?Rr(p,A._storedError):(Bt(A._readableStreamController,c),Bu(p)),null),j=>(Bt(A._readableStreamController,j),Rr(p,j),null)),p._finishPromise}function eC(i){let c=i._transformStreamController;if(c._finishPromise!==void 0)return c._finishPromise;let p=i._readable;c._finishPromise=l((x,j)=>{c._finishPromise_resolve=x,c._finishPromise_reject=j});let A=c._flushAlgorithm();return Vs(c),m(A,()=>(p._state==="errored"?Rr(c,p._storedError):(sr(p._readableStreamController),Bu(c)),null),x=>(Bt(p._readableStreamController,x),Rr(c,x),null)),c._finishPromise}function tC(i){return Gs(i,!1),i._backpressureChangePromise}function nC(i,c){let p=i._transformStreamController;if(p._finishPromise!==void 0)return p._finishPromise;let A=i._writable;p._finishPromise=l((j,z)=>{p._finishPromise_resolve=j,p._finishPromise_reject=z});let x=p._cancelAlgorithm(c);return Vs(p),m(x,()=>(A._state==="errored"?Rr(p,A._storedError):(To(A._writableStreamController,c),Nu(i),Bu(p)),null),j=>(To(A._writableStreamController,j),Nu(i),Rr(p,j),null)),p._finishPromise}function Ks(i){return new TypeError(`TransformStreamDefaultController.prototype.${i} can only be used on a TransformStreamDefaultController`)}function Bu(i){i._finishPromise_resolve!==void 0&&(i._finishPromise_resolve(),i._finishPromise_resolve=void 0,i._finishPromise_reject=void 0)}function Rr(i,c){i._finishPromise_reject!==void 0&&(g(i._finishPromise),i._finishPromise_reject(c),i._finishPromise_resolve=void 0,i._finishPromise_reject=void 0)}function Eh(i){return new TypeError(`TransformStream.prototype.${i} can only be used on a TransformStream`)}t.ByteLengthQueuingStrategy=zs,t.CountQueuingStrategy=Hs,t.ReadableByteStreamController=pn,t.ReadableStream=et,t.ReadableStreamBYOBReader=Pn,t.ReadableStreamBYOBRequest=Zn,t.ReadableStreamDefaultController=gn,t.ReadableStreamDefaultReader=W,t.TransformStream=Ws,t.TransformStreamDefaultController=Bn,t.WritableStream=Fn,t.WritableStreamDefaultController=vr,t.WritableStreamDefaultWriter=mn}))});var bm=X(()=>{if(!globalThis.ReadableStream)try{let t=re("node:process"),{emitWarning:e}=t;try{t.emitWarning=()=>{},Object.assign(globalThis,re("node:stream/web")),t.emitWarning=e}catch(n){throw t.emitWarning=e,n}}catch{Object.assign(globalThis,_m())}try{let{Blob:t}=re("buffer");t&&!t.prototype.stream&&(t.prototype.stream=function(n){let r=0,o=this;return new ReadableStream({type:"bytes",async pull(s){let u=await o.slice(r,Math.min(o.size,r+65536)).arrayBuffer();r+=u.byteLength,s.enqueue(new Uint8Array(u)),r===o.size&&s.close()}})})}catch{}});async function*xc(t,e=!0){for(let n of t)if("stream"in n)yield*n.stream();else if(ArrayBuffer.isView(n))if(e){let r=n.byteOffset,o=n.byteOffset+n.byteLength;for(;r!==o;){let s=Math.min(o-r,Cm),a=n.buffer.slice(r,r+s);r+=a.byteLength,yield new Uint8Array(a)}}else yield n;else{let r=0,o=n;for(;r!==o.size;){let a=await o.slice(r,Math.min(o.size,r+Cm)).arrayBuffer();r+=a.byteLength,yield new Uint8Array(a)}}}var z1,Cm,wm,kE,$t,Uo=Le(()=>{z1=Ln(bm(),1);Cm=65536;wm=class Oc{#e=[];#t="";#n=0;#r="transparent";constructor(e=[],n={}){if(typeof e!="object"||e===null)throw new TypeError("Failed to construct 'Blob': The provided value cannot be converted to a sequence.");if(typeof e[Symbol.iterator]!="function")throw new TypeError("Failed to construct 'Blob': The object must have a callable @@iterator property.");if(typeof n!="object"&&typeof n!="function")throw new TypeError("Failed to construct 'Blob': parameter 2 cannot convert to dictionary.");n===null&&(n={});let r=new TextEncoder;for(let s of e){let a;ArrayBuffer.isView(s)?a=new Uint8Array(s.buffer.slice(s.byteOffset,s.byteOffset+s.byteLength)):s instanceof ArrayBuffer?a=new Uint8Array(s.slice(0)):s instanceof Oc?a=s:a=r.encode(`${s}`),this.#n+=ArrayBuffer.isView(a)?a.byteLength:a.size,this.#e.push(a)}this.#r=`${n.endings===void 0?"transparent":n.endings}`;let o=n.type===void 0?"":String(n.type);this.#t=/^[\x20-\x7E]*$/.test(o)?o:""}get size(){return this.#n}get type(){return this.#t}async text(){let e=new TextDecoder,n="";for await(let r of xc(this.#e,!1))n+=e.decode(r,{stream:!0});return n+=e.decode(),n}async arrayBuffer(){let e=new Uint8Array(this.size),n=0;for await(let r of xc(this.#e,!1))e.set(r,n),n+=r.length;return e.buffer}stream(){let e=xc(this.#e,!0);return new globalThis.ReadableStream({type:"bytes",async pull(n){let r=await e.next();r.done?n.close():n.enqueue(r.value)},async cancel(){await e.return()}})}slice(e=0,n=this.size,r=""){let{size:o}=this,s=e<0?Math.max(o+e,0):Math.min(e,o),a=n<0?Math.max(o+n,0):Math.min(n,o),u=Math.max(a-s,0),l=this.#e,f=[],d=0;for(let m of l){if(d>=u)break;let C=ArrayBuffer.isView(m)?m.byteLength:m.size;if(s&&C<=s)s-=C,a-=C;else{let w;ArrayBuffer.isView(m)?(w=m.subarray(s,Math.min(C,a)),d+=w.byteLength):(w=m.slice(s,Math.min(C,a)),d+=w.size),a-=C,f.push(w),s=0}}let h=new Oc([],{type:String(r).toLowerCase()});return h.#n=u,h.#e=f,h}get[Symbol.toStringTag](){return"Blob"}static[Symbol.hasInstance](e){return e&&typeof e=="object"&&typeof e.constructor=="function"&&(typeof e.stream=="function"||typeof e.arrayBuffer=="function")&&/^(Blob|File)$/.test(e[Symbol.toStringTag])}};Object.defineProperties(wm.prototype,{size:{enumerable:!0},type:{enumerable:!0},slice:{enumerable:!0}});kE=wm,$t=kE});var AE,SE,qn,Pc=Le(()=>{Uo();AE=class extends $t{#e=0;#t="";constructor(e,n,r={}){if(arguments.length<2)throw new TypeError(`Failed to construct 'File': 2 arguments required, but only ${arguments.length} present.`);super(e,r),r===null&&(r={});let o=r.lastModified===void 0?Date.now():Number(r.lastModified);Number.isNaN(o)||(this.#e=o),this.#t=String(n)}get name(){return this.#t}get lastModified(){return this.#e}get[Symbol.toStringTag](){return"File"}static[Symbol.hasInstance](e){return!!e&&e instanceof $t&&/^(File)$/.test(e[Symbol.toStringTag])}},SE=AE,qn=SE});function Am(t,e=$t){var n=`${Em()}${Em()}`.replace(/\./g,"").slice(-28).padStart(32,"-"),r=[],o=`--${n}\r
|
|
27
|
-
Content-Disposition: form-data; name="`;return t.forEach((s,a)=>typeof s=="string"?r.push(o+Fc(a)+`"\r
|
|
28
|
-
\r
|
|
29
|
-
${s.replace(/\r(?!\n)|(?<!\r)\n/g,`\r
|
|
30
|
-
`)}\r
|
|
31
|
-
`):r.push(o+Fc(a)+`"; filename="${Fc(s.name,1)}"\r
|
|
32
|
-
Content-Type: ${s.type||"application/octet-stream"}\r
|
|
33
|
-
\r
|
|
34
|
-
`,s,`\r
|
|
35
|
-
`)),r.push(`--${n}--`),new e(r,{type:"multipart/form-data; boundary="+n})}var $o,vE,TE,Em,DE,km,Fc,fr,zn,vi=Le(()=>{Uo();Pc();({toStringTag:$o,iterator:vE,hasInstance:TE}=Symbol),Em=Math.random,DE="append,set,get,getAll,delete,keys,values,entries,forEach,constructor".split(","),km=(t,e,n)=>(t+="",/^(Blob|File)$/.test(e&&e[$o])?[(n=n!==void 0?n+"":e[$o]=="File"?e.name:"blob",t),e.name!==n||e[$o]=="blob"?new qn([e],n,e):e]:[t,e+""]),Fc=(t,e)=>(e?t:t.replace(/\r?\n|\r/g,`\r
|
|
36
|
-
`)).replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),fr=(t,e,n)=>{if(e.length<n)throw new TypeError(`Failed to execute '${t}' on 'FormData': ${n} arguments required, but only ${e.length} present.`)},zn=class{#e=[];constructor(...e){if(e.length)throw new TypeError("Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'.")}get[$o](){return"FormData"}[vE](){return this.entries()}static[TE](e){return e&&typeof e=="object"&&e[$o]==="FormData"&&!DE.some(n=>typeof e[n]!="function")}append(...e){fr("append",arguments,2),this.#e.push(km(...e))}delete(e){fr("delete",arguments,1),e+="",this.#e=this.#e.filter(([n])=>n!==e)}get(e){fr("get",arguments,1),e+="";for(var n=this.#e,r=n.length,o=0;o<r;o++)if(n[o][0]===e)return n[o][1];return null}getAll(e,n){return fr("getAll",arguments,1),n=[],e+="",this.#e.forEach(r=>r[0]===e&&n.push(r[1])),n}has(e){return fr("has",arguments,1),e+="",this.#e.some(n=>n[0]===e)}forEach(e,n){fr("forEach",arguments,1);for(var[r,o]of this)e.call(n,o,r,this)}set(...e){fr("set",arguments,2);var n=[],r=!0;e=km(...e),this.#e.forEach(o=>{o[0]===e[0]?r&&(r=!n.push(e)):n.push(o)}),r&&n.push(e),this.#e=n}*entries(){yield*this.#e}*keys(){for(var[e]of this)yield e}*values(){for(var[,e]of this)yield e}}});var kn,Ti=Le(()=>{kn=class extends Error{constructor(e,n){super(e),Error.captureStackTrace(this,this.constructor),this.type=n}get name(){return this.constructor.name}get[Symbol.toStringTag](){return this.constructor.name}}});var st,Ic=Le(()=>{Ti();st=class extends kn{constructor(e,n,r){super(e,n),r&&(this.code=this.errno=r.code,this.erroredSysCall=r.syscall)}}});var Di,Nc,qo,Sm,vm,Tm,Ri=Le(()=>{Di=Symbol.toStringTag,Nc=t=>typeof t=="object"&&typeof t.append=="function"&&typeof t.delete=="function"&&typeof t.get=="function"&&typeof t.getAll=="function"&&typeof t.has=="function"&&typeof t.set=="function"&&typeof t.sort=="function"&&t[Di]==="URLSearchParams",qo=t=>t&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&typeof t.constructor=="function"&&/^(Blob|File)$/.test(t[Di]),Sm=t=>typeof t=="object"&&(t[Di]==="AbortSignal"||t[Di]==="EventTarget"),vm=(t,e)=>{let n=new URL(e).hostname,r=new URL(t).hostname;return n===r||n.endsWith(`.${r}`)},Tm=(t,e)=>{let n=new URL(e).protocol,r=new URL(t).protocol;return n===r}});var Rm=X((nO,Dm)=>{if(!globalThis.DOMException)try{let{MessageChannel:t}=re("worker_threads"),e=new t().port1,n=new ArrayBuffer;e.postMessage(n,[n,n])}catch(t){t.constructor.name==="DOMException"&&(globalThis.DOMException=t.constructor)}Dm.exports=globalThis.DOMException});import{statSync as xm,createReadStream as RE,promises as xE}from"node:fs";import{basename as OE}from"node:path";var Om,Bc,Pm,Fm,Im,Nm,Bm,Mm,xi,Mc=Le(()=>{Om=Ln(Rm(),1);Pc();Uo();({stat:Bc}=xE),Pm=(t,e)=>Bm(xm(t),t,e),Fm=(t,e)=>Bc(t).then(n=>Bm(n,t,e)),Im=(t,e)=>Bc(t).then(n=>Mm(n,t,e)),Nm=(t,e)=>Mm(xm(t),t,e),Bm=(t,e,n="")=>new $t([new xi({path:e,size:t.size,lastModified:t.mtimeMs,start:0})],{type:n}),Mm=(t,e,n="")=>new qn([new xi({path:e,size:t.size,lastModified:t.mtimeMs,start:0})],OE(e),{type:n,lastModified:t.mtimeMs}),xi=class t{#e;#t;constructor(e){this.#e=e.path,this.#t=e.start,this.size=e.size,this.lastModified=e.lastModified}slice(e,n){return new t({path:this.#e,lastModified:this.lastModified,size:n-e,start:this.#t+e})}async*stream(){let{mtimeMs:e}=await Bc(this.#e);if(e>this.lastModified)throw new Om.default("The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.","NotReadableError");yield*RE(this.#e,{start:this.#t,end:this.#t+this.size-1})}get[Symbol.toStringTag](){return"Blob"}}});var jm={};Lu(jm,{toFormData:()=>LE});function ME(t){let e=t.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);if(!e)return;let n=e[2]||e[3]||"",r=n.slice(n.lastIndexOf("\\")+1);return r=r.replace(/%22/g,'"'),r=r.replace(/&#(\d{4});/g,(o,s)=>String.fromCharCode(s)),r}async function LE(t,e){if(!/multipart/i.test(e))throw new TypeError("Failed to fetch");let n=e.match(/boundary=(?:"([^"]+)"|([^;]+))/i);if(!n)throw new TypeError("no or bad content-type header, no multipart boundary");let r=new Lc(n[1]||n[2]),o,s,a,u,l,f,d=[],h=new zn,m=_=>{a+=g.decode(_,{stream:!0})},C=_=>{d.push(_)},w=()=>{let _=new qn(d,f,{type:l});h.append(u,_)},y=()=>{h.append(u,a)},g=new TextDecoder("utf-8");g.decode(),r.onPartBegin=function(){r.onPartData=m,r.onPartEnd=y,o="",s="",a="",u="",l="",f=null,d.length=0},r.onHeaderField=function(_){o+=g.decode(_,{stream:!0})},r.onHeaderValue=function(_){s+=g.decode(_,{stream:!0})},r.onHeaderEnd=function(){if(s+=g.decode(),o=o.toLowerCase(),o==="content-disposition"){let _=s.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i);_&&(u=_[2]||_[3]||""),f=ME(s),f&&(r.onPartData=C,r.onPartEnd=w)}else o==="content-type"&&(l=s);s="",o=""};for await(let _ of t)r.write(_);return r.end(),h}var Xt,Fe,Lm,Hn,Oi,Pi,PE,zo,FE,IE,NE,BE,hr,Lc,Um=Le(()=>{Mc();vi();Xt=0,Fe={START_BOUNDARY:Xt++,HEADER_FIELD_START:Xt++,HEADER_FIELD:Xt++,HEADER_VALUE_START:Xt++,HEADER_VALUE:Xt++,HEADER_VALUE_ALMOST_DONE:Xt++,HEADERS_ALMOST_DONE:Xt++,PART_DATA_START:Xt++,PART_DATA:Xt++,END:Xt++},Lm=1,Hn={PART_BOUNDARY:Lm,LAST_BOUNDARY:Lm*=2},Oi=10,Pi=13,PE=32,zo=45,FE=58,IE=97,NE=122,BE=t=>t|32,hr=()=>{},Lc=class{constructor(e){this.index=0,this.flags=0,this.onHeaderEnd=hr,this.onHeaderField=hr,this.onHeadersEnd=hr,this.onHeaderValue=hr,this.onPartBegin=hr,this.onPartData=hr,this.onPartEnd=hr,this.boundaryChars={},e=`\r
|
|
37
|
-
--`+e;let n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r),this.boundaryChars[n[r]]=!0;this.boundary=n,this.lookbehind=new Uint8Array(this.boundary.length+8),this.state=Fe.START_BOUNDARY}write(e){let n=0,r=e.length,o=this.index,{lookbehind:s,boundary:a,boundaryChars:u,index:l,state:f,flags:d}=this,h=this.boundary.length,m=h-1,C=e.length,w,y,g=S=>{this[S+"Mark"]=n},_=S=>{delete this[S+"Mark"]},E=(S,T,R,$)=>{(T===void 0||T!==R)&&this[S]($&&$.subarray(T,R))},b=(S,T)=>{let R=S+"Mark";R in this&&(T?(E(S,this[R],n,e),delete this[R]):(E(S,this[R],e.length,e),this[R]=0))};for(n=0;n<r;n++)switch(w=e[n],f){case Fe.START_BOUNDARY:if(l===a.length-2){if(w===zo)d|=Hn.LAST_BOUNDARY;else if(w!==Pi)return;l++;break}else if(l-1===a.length-2){if(d&Hn.LAST_BOUNDARY&&w===zo)f=Fe.END,d=0;else if(!(d&Hn.LAST_BOUNDARY)&&w===Oi)l=0,E("onPartBegin"),f=Fe.HEADER_FIELD_START;else return;break}w!==a[l+2]&&(l=-2),w===a[l+2]&&l++;break;case Fe.HEADER_FIELD_START:f=Fe.HEADER_FIELD,g("onHeaderField"),l=0;case Fe.HEADER_FIELD:if(w===Pi){_("onHeaderField"),f=Fe.HEADERS_ALMOST_DONE;break}if(l++,w===zo)break;if(w===FE){if(l===1)return;b("onHeaderField",!0),f=Fe.HEADER_VALUE_START;break}if(y=BE(w),y<IE||y>NE)return;break;case Fe.HEADER_VALUE_START:if(w===PE)break;g("onHeaderValue"),f=Fe.HEADER_VALUE;case Fe.HEADER_VALUE:w===Pi&&(b("onHeaderValue",!0),E("onHeaderEnd"),f=Fe.HEADER_VALUE_ALMOST_DONE);break;case Fe.HEADER_VALUE_ALMOST_DONE:if(w!==Oi)return;f=Fe.HEADER_FIELD_START;break;case Fe.HEADERS_ALMOST_DONE:if(w!==Oi)return;E("onHeadersEnd"),f=Fe.PART_DATA_START;break;case Fe.PART_DATA_START:f=Fe.PART_DATA,g("onPartData");case Fe.PART_DATA:if(o=l,l===0){for(n+=m;n<C&&!(e[n]in u);)n+=h;n-=m,w=e[n]}if(l<a.length)a[l]===w?(l===0&&b("onPartData",!0),l++):l=0;else if(l===a.length)l++,w===Pi?d|=Hn.PART_BOUNDARY:w===zo?d|=Hn.LAST_BOUNDARY:l=0;else if(l-1===a.length)if(d&Hn.PART_BOUNDARY){if(l=0,w===Oi){d&=~Hn.PART_BOUNDARY,E("onPartEnd"),E("onPartBegin"),f=Fe.HEADER_FIELD_START;break}}else d&Hn.LAST_BOUNDARY&&w===zo?(E("onPartEnd"),f=Fe.END,d=0):l=0;if(l>0)s[l-1]=w;else if(o>0){let S=new Uint8Array(s.buffer,s.byteOffset,s.byteLength);E("onPartData",0,o,S),o=0,g("onPartData"),n--}break;case Fe.END:break;default:throw new Error(`Unexpected state entered: ${f}`)}b("onHeaderField"),b("onHeaderValue"),b("onPartData"),this.index=l,this.state=f,this.flags=d}end(){if(this.state===Fe.HEADER_FIELD_START&&this.index===0||this.state===Fe.PART_DATA&&this.index===this.boundary.length)this.onPartEnd();else if(this.state!==Fe.END)throw new Error("MultipartParser.end(): stream ended unexpectedly")}}});import Wn,{PassThrough as $m}from"node:stream";import{types as qm,deprecate as Uc,promisify as jE}from"node:util";import{Buffer as Rt}from"node:buffer";async function jc(t){if(t[lt].disturbed)throw new TypeError(`body used already for: ${t.url}`);if(t[lt].disturbed=!0,t[lt].error)throw t[lt].error;let{body:e}=t;if(e===null)return Rt.alloc(0);if(!(e instanceof Wn))return Rt.alloc(0);let n=[],r=0;try{for await(let o of e){if(t.size>0&&r+o.length>t.size){let s=new st(`content size at ${t.url} over limit: ${t.size}`,"max-size");throw e.destroy(s),s}r+=o.length,n.push(o)}}catch(o){throw o instanceof kn?o:new st(`Invalid response body while trying to fetch ${t.url}: ${o.message}`,"system",o)}if(e.readableEnded===!0||e._readableState.ended===!0)try{return n.every(o=>typeof o=="string")?Rt.from(n.join("")):Rt.concat(n,r)}catch(o){throw new st(`Could not create Buffer from response body for ${t.url}: ${o.message}`,"system",o)}else throw new st(`Premature close of server response while trying to fetch ${t.url}`)}var UE,lt,Zt,Vr,$E,Fi,zm,Hm,Ii=Le(()=>{Uo();vi();Ic();Ti();Ri();UE=jE(Wn.pipeline),lt=Symbol("Body internals"),Zt=class{constructor(e,{size:n=0}={}){let r=null;e===null?e=null:Nc(e)?e=Rt.from(e.toString()):qo(e)||Rt.isBuffer(e)||(qm.isAnyArrayBuffer(e)?e=Rt.from(e):ArrayBuffer.isView(e)?e=Rt.from(e.buffer,e.byteOffset,e.byteLength):e instanceof Wn||(e instanceof zn?(e=Am(e),r=e.type.split("=")[1]):e=Rt.from(String(e))));let o=e;Rt.isBuffer(e)?o=Wn.Readable.from(e):qo(e)&&(o=Wn.Readable.from(e.stream())),this[lt]={body:e,stream:o,boundary:r,disturbed:!1,error:null},this.size=n,e instanceof Wn&&e.on("error",s=>{let a=s instanceof kn?s:new st(`Invalid response body while trying to fetch ${this.url}: ${s.message}`,"system",s);this[lt].error=a})}get body(){return this[lt].stream}get bodyUsed(){return this[lt].disturbed}async arrayBuffer(){let{buffer:e,byteOffset:n,byteLength:r}=await jc(this);return e.slice(n,n+r)}async formData(){let e=this.headers.get("content-type");if(e.startsWith("application/x-www-form-urlencoded")){let r=new zn,o=new URLSearchParams(await this.text());for(let[s,a]of o)r.append(s,a);return r}let{toFormData:n}=await Promise.resolve().then(()=>(Um(),jm));return n(this.body,e)}async blob(){let e=this.headers&&this.headers.get("content-type")||this[lt].body&&this[lt].body.type||"",n=await this.arrayBuffer();return new $t([n],{type:e})}async json(){let e=await this.text();return JSON.parse(e)}async text(){let e=await jc(this);return new TextDecoder().decode(e)}buffer(){return jc(this)}};Zt.prototype.buffer=Uc(Zt.prototype.buffer,"Please use 'response.arrayBuffer()' instead of 'response.buffer()'","node-fetch#buffer");Object.defineProperties(Zt.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0},data:{get:Uc(()=>{},"data doesn't exist, use json(), text(), arrayBuffer(), or body instead","https://github.com/node-fetch/node-fetch/issues/1000 (response)")}});Vr=(t,e)=>{let n,r,{body:o}=t[lt];if(t.bodyUsed)throw new Error("cannot clone body after it is used");return o instanceof Wn&&typeof o.getBoundary!="function"&&(n=new $m({highWaterMark:e}),r=new $m({highWaterMark:e}),o.pipe(n),o.pipe(r),t[lt].stream=n,o=r),o},$E=Uc(t=>t.getBoundary(),"form-data doesn't follow the spec and requires special treatment. Use alternative package","https://github.com/node-fetch/node-fetch/issues/1167"),Fi=(t,e)=>t===null?null:typeof t=="string"?"text/plain;charset=UTF-8":Nc(t)?"application/x-www-form-urlencoded;charset=UTF-8":qo(t)?t.type||null:Rt.isBuffer(t)||qm.isAnyArrayBuffer(t)||ArrayBuffer.isView(t)?null:t instanceof zn?`multipart/form-data; boundary=${e[lt].boundary}`:t&&typeof t.getBoundary=="function"?`multipart/form-data;boundary=${$E(t)}`:t instanceof Wn?null:"text/plain;charset=UTF-8",zm=t=>{let{body:e}=t[lt];return e===null?0:qo(e)?e.size:Rt.isBuffer(e)?e.length:e&&typeof e.getLengthSync=="function"&&e.hasKnownLength&&e.hasKnownLength()?e.getLengthSync():null},Hm=async(t,{body:e})=>{e===null?t.end():await UE(e,t)}});import{types as Wm}from"node:util";import Bi from"node:http";function Gm(t=[]){return new dt(t.reduce((e,n,r,o)=>(r%2===0&&e.push(o.slice(r,r+2)),e),[]).filter(([e,n])=>{try{return Ni(e),$c(e,String(n)),!0}catch{return!1}}))}var Ni,$c,dt,Mi=Le(()=>{Ni=typeof Bi.validateHeaderName=="function"?Bi.validateHeaderName:t=>{if(!/^[\^`\-\w!#$%&'*+.|~]+$/.test(t)){let e=new TypeError(`Header name must be a valid HTTP token [${t}]`);throw Object.defineProperty(e,"code",{value:"ERR_INVALID_HTTP_TOKEN"}),e}},$c=typeof Bi.validateHeaderValue=="function"?Bi.validateHeaderValue:(t,e)=>{if(/[^\t\u0020-\u007E\u0080-\u00FF]/.test(e)){let n=new TypeError(`Invalid character in header content ["${t}"]`);throw Object.defineProperty(n,"code",{value:"ERR_INVALID_CHAR"}),n}},dt=class t extends URLSearchParams{constructor(e){let n=[];if(e instanceof t){let r=e.raw();for(let[o,s]of Object.entries(r))n.push(...s.map(a=>[o,a]))}else if(e!=null)if(typeof e=="object"&&!Wm.isBoxedPrimitive(e)){let r=e[Symbol.iterator];if(r==null)n.push(...Object.entries(e));else{if(typeof r!="function")throw new TypeError("Header pairs must be iterable");n=[...e].map(o=>{if(typeof o!="object"||Wm.isBoxedPrimitive(o))throw new TypeError("Each header pair must be an iterable object");return[...o]}).map(o=>{if(o.length!==2)throw new TypeError("Each header pair must be a name/value tuple");return[...o]})}}else throw new TypeError("Failed to construct 'Headers': The provided value is not of type '(sequence<sequence<ByteString>> or record<ByteString, ByteString>)");return n=n.length>0?n.map(([r,o])=>(Ni(r),$c(r,String(o)),[String(r).toLowerCase(),String(o)])):void 0,super(n),new Proxy(this,{get(r,o,s){switch(o){case"append":case"set":return(a,u)=>(Ni(a),$c(a,String(u)),URLSearchParams.prototype[o].call(r,String(a).toLowerCase(),String(u)));case"delete":case"has":case"getAll":return a=>(Ni(a),URLSearchParams.prototype[o].call(r,String(a).toLowerCase()));case"keys":return()=>(r.sort(),new Set(URLSearchParams.prototype.keys.call(r)).keys());default:return Reflect.get(r,o,s)}}})}get[Symbol.toStringTag](){return this.constructor.name}toString(){return Object.prototype.toString.call(this)}get(e){let n=this.getAll(e);if(n.length===0)return null;let r=n.join(", ");return/^content-encoding$/i.test(e)&&(r=r.toLowerCase()),r}forEach(e,n=void 0){for(let r of this.keys())Reflect.apply(e,n,[this.get(r),r,this])}*values(){for(let e of this.keys())yield this.get(e)}*entries(){for(let e of this.keys())yield[e,this.get(e)]}[Symbol.iterator](){return this.entries()}raw(){return[...this.keys()].reduce((e,n)=>(e[n]=this.getAll(n),e),{})}[Symbol.for("nodejs.util.inspect.custom")](){return[...this.keys()].reduce((e,n)=>{let r=this.getAll(n);return n==="host"?e[n]=r[0]:e[n]=r.length>1?r:r[0],e},{})}};Object.defineProperties(dt.prototype,["get","entries","forEach","values"].reduce((t,e)=>(t[e]={enumerable:!0},t),{}))});var qE,Ho,qc=Le(()=>{qE=new Set([301,302,303,307,308]),Ho=t=>qE.has(t)});var qt,gt,Jm=Le(()=>{Mi();Ii();qc();qt=Symbol("Response internals"),gt=class t extends Zt{constructor(e=null,n={}){super(e,n);let r=n.status!=null?n.status:200,o=new dt(n.headers);if(e!==null&&!o.has("Content-Type")){let s=Fi(e,this);s&&o.append("Content-Type",s)}this[qt]={type:"default",url:n.url,status:r,statusText:n.statusText||"",headers:o,counter:n.counter,highWaterMark:n.highWaterMark}}get type(){return this[qt].type}get url(){return this[qt].url||""}get status(){return this[qt].status}get ok(){return this[qt].status>=200&&this[qt].status<300}get redirected(){return this[qt].counter>0}get statusText(){return this[qt].statusText}get headers(){return this[qt].headers}get highWaterMark(){return this[qt].highWaterMark}clone(){return new t(Vr(this,this.highWaterMark),{type:this.type,url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected,size:this.size,highWaterMark:this.highWaterMark})}static redirect(e,n=302){if(!Ho(n))throw new RangeError('Failed to execute "redirect" on "response": Invalid status code');return new t(null,{headers:{location:new URL(e).toString()},status:n})}static error(){let e=new t(null,{status:0,statusText:""});return e[qt].type="error",e}static json(e=void 0,n={}){let r=JSON.stringify(e);if(r===void 0)throw new TypeError("data is not JSON serializable");let o=new dt(n&&n.headers);return o.has("content-type")||o.set("content-type","application/json"),new t(r,{...n,headers:o})}get[Symbol.toStringTag](){return"Response"}};Object.defineProperties(gt.prototype,{type:{enumerable:!0},url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}})});var Vm,Km=Le(()=>{Vm=t=>{if(t.search)return t.search;let e=t.href.length-1,n=t.hash||(t.href[e]==="#"?"#":"");return t.href[e-n.length]==="?"?"?":""}});import{isIP as zE}from"node:net";function Ym(t,e=!1){return t==null||(t=new URL(t),/^(about|blob|data):$/.test(t.protocol))?"no-referrer":(t.username="",t.password="",t.hash="",e&&(t.pathname="",t.search=""),t)}function Zm(t){if(!Qm.has(t))throw new TypeError(`Invalid referrerPolicy: ${t}`);return t}function HE(t){if(/^(http|ws)s:$/.test(t.protocol))return!0;let e=t.host.replace(/(^\[)|(]$)/g,""),n=zE(e);return n===4&&/^127\./.test(e)||n===6&&/^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(e)?!0:t.host==="localhost"||t.host.endsWith(".localhost")?!1:t.protocol==="file:"}function Kr(t){return/^about:(blank|srcdoc)$/.test(t)||t.protocol==="data:"||/^(blob|filesystem):$/.test(t.protocol)?!0:HE(t)}function eg(t,{referrerURLCallback:e,referrerOriginCallback:n}={}){if(t.referrer==="no-referrer"||t.referrerPolicy==="")return null;let r=t.referrerPolicy;if(t.referrer==="about:client")return"no-referrer";let o=t.referrer,s=Ym(o),a=Ym(o,!0);s.toString().length>4096&&(s=a),e&&(s=e(s)),n&&(a=n(a));let u=new URL(t.url);switch(r){case"no-referrer":return"no-referrer";case"origin":return a;case"unsafe-url":return s;case"strict-origin":return Kr(s)&&!Kr(u)?"no-referrer":a.toString();case"strict-origin-when-cross-origin":return s.origin===u.origin?s:Kr(s)&&!Kr(u)?"no-referrer":a;case"same-origin":return s.origin===u.origin?s:"no-referrer";case"origin-when-cross-origin":return s.origin===u.origin?s:a;case"no-referrer-when-downgrade":return Kr(s)&&!Kr(u)?"no-referrer":s;default:throw new TypeError(`Invalid referrerPolicy: ${r}`)}}function tg(t){let e=(t.get("referrer-policy")||"").split(/[,\s]+/),n="";for(let r of e)r&&Qm.has(r)&&(n=r);return n}var Qm,Xm,zc=Le(()=>{Qm=new Set(["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"]),Xm="strict-origin-when-cross-origin"});import{format as WE}from"node:url";import{deprecate as GE}from"node:util";var Ke,Wo,JE,Gn,ng,rg=Le(()=>{Mi();Ii();Ri();Km();zc();Ke=Symbol("Request internals"),Wo=t=>typeof t=="object"&&typeof t[Ke]=="object",JE=GE(()=>{},".data is not a valid RequestInit property, use .body instead","https://github.com/node-fetch/node-fetch/issues/1000 (request)"),Gn=class t extends Zt{constructor(e,n={}){let r;if(Wo(e)?r=new URL(e.url):(r=new URL(e),e={}),r.username!==""||r.password!=="")throw new TypeError(`${r} is an url with embedded credentials.`);let o=n.method||e.method||"GET";if(/^(delete|get|head|options|post|put)$/i.test(o)&&(o=o.toUpperCase()),!Wo(n)&&"data"in n&&JE(),(n.body!=null||Wo(e)&&e.body!==null)&&(o==="GET"||o==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let s=n.body?n.body:Wo(e)&&e.body!==null?Vr(e):null;super(s,{size:n.size||e.size||0});let a=new dt(n.headers||e.headers||{});if(s!==null&&!a.has("Content-Type")){let f=Fi(s,this);f&&a.set("Content-Type",f)}let u=Wo(e)?e.signal:null;if("signal"in n&&(u=n.signal),u!=null&&!Sm(u))throw new TypeError("Expected signal to be an instanceof AbortSignal or EventTarget");let l=n.referrer==null?e.referrer:n.referrer;if(l==="")l="no-referrer";else if(l){let f=new URL(l);l=/^about:(\/\/)?client$/.test(f)?"client":f}else l=void 0;this[Ke]={method:o,redirect:n.redirect||e.redirect||"follow",headers:a,parsedURL:r,signal:u,referrer:l},this.follow=n.follow===void 0?e.follow===void 0?20:e.follow:n.follow,this.compress=n.compress===void 0?e.compress===void 0?!0:e.compress:n.compress,this.counter=n.counter||e.counter||0,this.agent=n.agent||e.agent,this.highWaterMark=n.highWaterMark||e.highWaterMark||16384,this.insecureHTTPParser=n.insecureHTTPParser||e.insecureHTTPParser||!1,this.referrerPolicy=n.referrerPolicy||e.referrerPolicy||""}get method(){return this[Ke].method}get url(){return WE(this[Ke].parsedURL)}get headers(){return this[Ke].headers}get redirect(){return this[Ke].redirect}get signal(){return this[Ke].signal}get referrer(){if(this[Ke].referrer==="no-referrer")return"";if(this[Ke].referrer==="client")return"about:client";if(this[Ke].referrer)return this[Ke].referrer.toString()}get referrerPolicy(){return this[Ke].referrerPolicy}set referrerPolicy(e){this[Ke].referrerPolicy=Zm(e)}clone(){return new t(this)}get[Symbol.toStringTag](){return"Request"}};Object.defineProperties(Gn.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0},referrer:{enumerable:!0},referrerPolicy:{enumerable:!0}});ng=t=>{let{parsedURL:e}=t[Ke],n=new dt(t[Ke].headers);n.has("Accept")||n.set("Accept","*/*");let r=null;if(t.body===null&&/^(post|put)$/i.test(t.method)&&(r="0"),t.body!==null){let u=zm(t);typeof u=="number"&&!Number.isNaN(u)&&(r=String(u))}r&&n.set("Content-Length",r),t.referrerPolicy===""&&(t.referrerPolicy=Xm),t.referrer&&t.referrer!=="no-referrer"?t[Ke].referrer=eg(t):t[Ke].referrer="no-referrer",t[Ke].referrer instanceof URL&&n.set("Referer",t.referrer),n.has("User-Agent")||n.set("User-Agent","node-fetch"),t.compress&&!n.has("Accept-Encoding")&&n.set("Accept-Encoding","gzip, deflate, br");let{agent:o}=t;typeof o=="function"&&(o=o(e));let s=Vm(e),a={path:e.pathname+s,method:t.method,headers:n[Symbol.for("nodejs.util.inspect.custom")](),insecureHTTPParser:t.insecureHTTPParser,agent:o};return{parsedURL:e,options:a}}});var Go,og=Le(()=>{Ti();Go=class extends kn{constructor(e,n="aborted"){super(e,n)}}});var ag={};Lu(ag,{AbortError:()=>Go,Blob:()=>$t,FetchError:()=>st,File:()=>qn,FormData:()=>zn,Headers:()=>dt,Request:()=>Gn,Response:()=>gt,blobFrom:()=>Fm,blobFromSync:()=>Pm,default:()=>Hc,fileFrom:()=>Im,fileFromSync:()=>Nm,isRedirect:()=>Ho});import VE from"node:http";import KE from"node:https";import Yr from"node:zlib";import sg,{PassThrough as ig,pipeline as Qr}from"node:stream";import{Buffer as Li}from"node:buffer";async function Hc(t,e){return new Promise((n,r)=>{let o=new Gn(t,e),{parsedURL:s,options:a}=ng(o);if(!YE.has(s.protocol))throw new TypeError(`node-fetch cannot load ${t}. URL scheme "${s.protocol.replace(/:$/,"")}" is not supported.`);if(s.protocol==="data:"){let w=mm(o.url),y=new gt(w,{headers:{"Content-Type":w.typeFull}});n(y);return}let u=(s.protocol==="https:"?KE:VE).request,{signal:l}=o,f=null,d=()=>{let w=new Go("The operation was aborted.");r(w),o.body&&o.body instanceof sg.Readable&&o.body.destroy(w),!(!f||!f.body)&&f.body.emit("error",w)};if(l&&l.aborted){d();return}let h=()=>{d(),C()},m=u(s.toString(),a);l&&l.addEventListener("abort",h);let C=()=>{m.abort(),l&&l.removeEventListener("abort",h)};m.on("error",w=>{r(new st(`request to ${o.url} failed, reason: ${w.message}`,"system",w)),C()}),QE(m,w=>{f&&f.body&&f.body.destroy(w)}),process.version<"v14"&&m.on("socket",w=>{let y;w.prependListener("end",()=>{y=w._eventsCount}),w.prependListener("close",g=>{if(f&&y<w._eventsCount&&!g){let _=new Error("Premature close");_.code="ERR_STREAM_PREMATURE_CLOSE",f.body.emit("error",_)}})}),m.on("response",w=>{m.setTimeout(0);let y=Gm(w.rawHeaders);if(Ho(w.statusCode)){let S=y.get("Location"),T=null;try{T=S===null?null:new URL(S,o.url)}catch{if(o.redirect!=="manual"){r(new st(`uri requested responds with an invalid redirect URL: ${S}`,"invalid-redirect")),C();return}}switch(o.redirect){case"error":r(new st(`uri requested responds with a redirect, redirect mode is set to error: ${o.url}`,"no-redirect")),C();return;case"manual":break;case"follow":{if(T===null)break;if(o.counter>=o.follow){r(new st(`maximum redirect reached at: ${o.url}`,"max-redirect")),C();return}let R={headers:new dt(o.headers),follow:o.follow,counter:o.counter+1,agent:o.agent,compress:o.compress,method:o.method,body:Vr(o),signal:o.signal,size:o.size,referrer:o.referrer,referrerPolicy:o.referrerPolicy};if(!vm(o.url,T)||!Tm(o.url,T))for(let H of["authorization","www-authenticate","cookie","cookie2"])R.headers.delete(H);if(w.statusCode!==303&&o.body&&e.body instanceof sg.Readable){r(new st("Cannot follow redirect with body being a readable stream","unsupported-redirect")),C();return}(w.statusCode===303||(w.statusCode===301||w.statusCode===302)&&o.method==="POST")&&(R.method="GET",R.body=void 0,R.headers.delete("content-length"));let $=tg(y);$&&(R.referrerPolicy=$),n(Hc(new Gn(T,R))),C();return}default:return r(new TypeError(`Redirect option '${o.redirect}' is not a valid value of RequestRedirect`))}}l&&w.once("end",()=>{l.removeEventListener("abort",h)});let g=Qr(w,new ig,S=>{S&&r(S)});process.version<"v12.10"&&w.on("aborted",h);let _={url:o.url,status:w.statusCode,statusText:w.statusMessage,headers:y,size:o.size,counter:o.counter,highWaterMark:o.highWaterMark},E=y.get("Content-Encoding");if(!o.compress||o.method==="HEAD"||E===null||w.statusCode===204||w.statusCode===304){f=new gt(g,_),n(f);return}let b={flush:Yr.Z_SYNC_FLUSH,finishFlush:Yr.Z_SYNC_FLUSH};if(E==="gzip"||E==="x-gzip"){g=Qr(g,Yr.createGunzip(b),S=>{S&&r(S)}),f=new gt(g,_),n(f);return}if(E==="deflate"||E==="x-deflate"){let S=Qr(w,new ig,T=>{T&&r(T)});S.once("data",T=>{(T[0]&15)===8?g=Qr(g,Yr.createInflate(),R=>{R&&r(R)}):g=Qr(g,Yr.createInflateRaw(),R=>{R&&r(R)}),f=new gt(g,_),n(f)}),S.once("end",()=>{f||(f=new gt(g,_),n(f))});return}if(E==="br"){g=Qr(g,Yr.createBrotliDecompress(),S=>{S&&r(S)}),f=new gt(g,_),n(f);return}f=new gt(g,_),n(f)}),Hm(m,o).catch(r)})}function QE(t,e){let n=Li.from(`0\r
|
|
38
|
-
\r
|
|
39
|
-
`),r=!1,o=!1,s;t.on("response",a=>{let{headers:u}=a;r=u["transfer-encoding"]==="chunked"&&!u["content-length"]}),t.on("socket",a=>{let u=()=>{if(r&&!o){let f=new Error("Premature close");f.code="ERR_STREAM_PREMATURE_CLOSE",e(f)}},l=f=>{o=Li.compare(f.slice(-5),n)===0,!o&&s&&(o=Li.compare(s.slice(-3),n.slice(0,3))===0&&Li.compare(f.slice(-2),n.slice(3))===0),s=f};a.prependListener("close",u),a.on("data",l),t.on("close",()=>{a.removeListener("close",u),a.removeListener("data",l)})})}var YE,ug=Le(()=>{gm();Ii();Jm();Mi();rg();Ic();og();qc();vi();Ri();zc();Mc();YE=new Set(["data:","http:","https:"])});var dg=X(Zr=>{"use strict";var XE=Zr&&Zr.__importDefault||function(t){return t&&t.__esModule?t:{default:t}},Xr;Object.defineProperty(Zr,"__esModule",{value:!0});Zr.Gaxios=void 0;var ZE=XE(yc()),ek=re("https"),pr=Cc(),tk=zp(),cg=re("stream"),lg=kc(),nk=async()=>globalThis.crypto?.randomUUID()||(await import("crypto")).randomUUID(),ji=class{agentCache=new Map;defaults;interceptors;constructor(e){this.defaults=e||{},this.interceptors={request:new lg.GaxiosInterceptorManager,response:new lg.GaxiosInterceptorManager}}fetch(...e){let n=e[0],r=e[1],o,s=new Headers;return typeof n=="string"?o=new URL(n):n instanceof URL?o=n:n&&n.url&&(o=new URL(n.url)),n&&typeof n=="object"&&"headers"in n&&Xr.mergeHeaders(s,n.headers),r&&Xr.mergeHeaders(s,new Headers(r.headers)),typeof n=="object"&&!(n instanceof URL)?this.request({...r,...n,headers:s,url:o}):this.request({...r,headers:s,url:o})}async request(e={}){let n=await this.#r(e);return n=await this.#t(n),this.#n(this._request(n))}async _defaultAdapter(e){let n=e.fetchImplementation||this.defaults.fetchImplementation||await Xr.#u(),r={...e};delete r.data;let o=await n(e.url,r),s=await this.getResponseData(e,o);return Object.getOwnPropertyDescriptor(o,"data")?.configurable||Object.defineProperties(o,{data:{configurable:!0,writable:!0,enumerable:!0,value:s}}),Object.assign(o,{config:e,data:s})}async _request(e){try{let n;if(e.adapter?n=await e.adapter(e,this._defaultAdapter.bind(this)):n=await this._defaultAdapter(e),!e.validateStatus(n.status)){if(e.responseType==="stream"){let o=[];for await(let s of n.data)o.push(s);n.data=o.toString()}let r=pr.GaxiosError.extractAPIErrorFromResponse(n,`Request failed with status code ${n.status}`);throw new pr.GaxiosError(r?.message,e,n,r)}return n}catch(n){let r;n instanceof pr.GaxiosError?r=n:n instanceof Error?r=new pr.GaxiosError(n.message,e,void 0,n):r=new pr.GaxiosError("Unexpected Gaxios Error",e,void 0,n);let{shouldRetry:o,config:s}=await(0,tk.getRetryConfig)(r);if(o&&s)return r.config.retryConfig.currentRetryAttempt=s.retryConfig.currentRetryAttempt,e.retryConfig=r.config?.retryConfig,this.#o(e),this._request(e);throw e.errorRedactor&&e.errorRedactor(r),r}}async getResponseData(e,n){if(e.maxContentLength&&n.headers.has("content-length")&&e.maxContentLength<Number.parseInt(n.headers?.get("content-length")||""))throw new pr.GaxiosError("Response's `Content-Length` is over the limit.",e,Object.assign(n,{config:e}));switch(e.responseType){case"stream":return n.body;case"json":return n.json();case"arraybuffer":return n.arrayBuffer();case"blob":return n.blob();case"text":return n.text();default:return this.getResponseDataFromContentType(n)}}#e(e,n=[]){let r=new URL(e),o=[...n],s=(process.env.NO_PROXY??process.env.no_proxy)?.split(",")||[];for(let a of s)o.push(a.trim());for(let a of o)if(a instanceof RegExp){if(a.test(r.toString()))return!1}else if(a instanceof URL){if(a.origin===r.origin)return!1}else if(a.startsWith("*.")||a.startsWith(".")){let u=a.replace(/^\*\./,".");if(r.hostname.endsWith(u))return!1}else if(a===r.origin||a===r.hostname||a===r.href)return!1;return!0}async#t(e){let n=Promise.resolve(e);for(let r of this.interceptors.request.values())r&&(n=n.then(r.resolved,r.rejected));return n}async#n(e){let n=Promise.resolve(e);for(let r of this.interceptors.response.values())r&&(n=n.then(r.resolved,r.rejected));return n}async#r(e){let n=new Headers(this.defaults.headers);Xr.mergeHeaders(n,e.headers);let r=(0,ZE.default)(!0,{},this.defaults,e);if(!r.url)throw new Error("URL is required.");if(r.baseURL&&(r.url=new URL(r.url,r.baseURL)),r.url=new URL(r.url),r.params)if(r.paramsSerializer){let a=r.paramsSerializer(r.params);a.startsWith("?")&&(a=a.slice(1));let u=r.url.toString().includes("?")?"&":"?";r.url=r.url+u+a}else{let a=r.url instanceof URL?r.url:new URL(r.url);for(let[u,l]of new URLSearchParams(r.params))a.searchParams.append(u,l);r.url=a}typeof e.maxContentLength=="number"&&(r.size=e.maxContentLength),typeof e.maxRedirects=="number"&&(r.follow=e.maxRedirects);let o=typeof r.data=="string"||r.data instanceof ArrayBuffer||r.data instanceof Blob||globalThis.File&&r.data instanceof File||r.data instanceof FormData||r.data instanceof cg.Readable||r.data instanceof ReadableStream||r.data instanceof String||r.data instanceof URLSearchParams||ArrayBuffer.isView(r.data)||["Blob","File","FormData"].includes(r.data?.constructor?.name||"");if(r.multipart?.length){let a=await nk();n.set("content-type",`multipart/related; boundary=${a}`),r.body=cg.Readable.from(this.getMultipartRequest(r.multipart,a))}else o?r.body=r.data:typeof r.data=="object"?n.get("Content-Type")==="application/x-www-form-urlencoded"?r.body=r.paramsSerializer?r.paramsSerializer(r.data):new URLSearchParams(r.data):(n.has("content-type")||n.set("content-type","application/json"),r.body=JSON.stringify(r.data)):r.data&&(r.body=r.data);r.validateStatus=r.validateStatus||this.validateStatus,r.responseType=r.responseType||"unknown",!n.has("accept")&&r.responseType==="json"&&n.set("accept","application/json");let s=r.proxy||process?.env?.HTTPS_PROXY||process?.env?.https_proxy||process?.env?.HTTP_PROXY||process?.env?.http_proxy;if(!r.agent)if(s&&this.#e(r.url,r.noProxy)){let a=await Xr.#a();this.agentCache.has(s)?r.agent=this.agentCache.get(s):(r.agent=new a(s,{cert:r.cert,key:r.key}),this.agentCache.set(s,r.agent))}else r.cert&&r.key&&(this.agentCache.has(r.key)?r.agent=this.agentCache.get(r.key):(r.agent=new ek.Agent({cert:r.cert,key:r.key}),this.agentCache.set(r.key,r.agent)));return typeof r.errorRedactor!="function"&&r.errorRedactor!==!1&&(r.errorRedactor=pr.defaultErrorRedactor),r.body&&!("duplex"in r)&&(r.duplex="half"),this.#o(r),Object.assign(r,{headers:n,url:r.url instanceof URL?r.url:new URL(r.url)})}#o(e){if(e.timeout){let n=AbortSignal.timeout(e.timeout);e.signal&&!e.signal.aborted?e.signal=AbortSignal.any([e.signal,n]):e.signal=n}}validateStatus(e){return e>=200&&e<300}async getResponseDataFromContentType(e){let n=e.headers.get("Content-Type");if(n===null)return e.text();if(n=n.toLowerCase(),n.includes("application/json")){let r=await e.text();try{r=JSON.parse(r)}catch{}return r}else return n.match(/^text\//)?e.text():e.blob()}async*getMultipartRequest(e,n){let r=`--${n}--`;for(let o of e){let s=o.headers.get("Content-Type")||"application/octet-stream";yield`--${n}\r
|
|
40
|
-
Content-Type: ${s}\r
|
|
41
|
-
\r
|
|
42
|
-
`,typeof o.content=="string"?yield o.content:yield*o.content,yield`\r
|
|
43
|
-
`}yield r}static#s;static#i;static async#a(){return this.#s||=(await Promise.resolve().then(()=>Ln(pm()))).HttpsProxyAgent,this.#s}static async#u(){let e=typeof window<"u"&&!!window;return this.#i||=e?window.fetch:(await Promise.resolve().then(()=>(ug(),ag))).default,this.#i}static mergeHeaders(e,...n){e=e instanceof Headers?e:new Headers(e);for(let r of n)(r instanceof Headers?r:new Headers(r)).forEach((s,a)=>{a==="set-cookie"?e.append(a,s):e.set(a,s)});return e}};Zr.Gaxios=ji;Xr=ji});var Xe=X(it=>{"use strict";var rk=it&&it.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var o=Object.getOwnPropertyDescriptor(e,n);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,o)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),ok=it&&it.__exportStar||function(t,e){for(var n in t)n!=="default"&&!Object.prototype.hasOwnProperty.call(e,n)&&rk(e,t,n)};Object.defineProperty(it,"__esModule",{value:!0});it.instance=it.Gaxios=it.GaxiosError=void 0;it.request=ik;var fg=dg();Object.defineProperty(it,"Gaxios",{enumerable:!0,get:function(){return fg.Gaxios}});var sk=Cc();Object.defineProperty(it,"GaxiosError",{enumerable:!0,get:function(){return sk.GaxiosError}});ok(kc(),it);it.instance=new fg.Gaxios;async function ik(t){return it.instance.request(t)}});var Wc=X((hg,Ui)=>{(function(t){"use strict";var e,n=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,r=Math.ceil,o=Math.floor,s="[BigNumber Error] ",a=s+"Number primitive has more than 15 significant digits: ",u=1e14,l=14,f=9007199254740991,d=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],h=1e7,m=1e9;function C(T){var R,$,H,P=V.prototype={constructor:V,toString:null,valueOf:null},K=new V(1),q=20,Y=4,Q=-7,ee=21,se=-1e7,ue=1e7,pe=!1,J=1,Z=0,ce={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},je="0123456789abcdefghijklmnopqrstuvwxyz",we=!0;function V(k,v){var D,M,F,N,U,O,I,L,B=this;if(!(B instanceof V))return new V(k,v);if(v==null){if(k&&k._isBigNumber===!0){B.s=k.s,!k.c||k.e>ue?B.c=B.e=null:k.e<se?B.c=[B.e=0]:(B.e=k.e,B.c=k.c.slice());return}if((O=typeof k=="number")&&k*0==0){if(B.s=1/k<0?(k=-k,-1):1,k===~~k){for(N=0,U=k;U>=10;U/=10,N++);N>ue?B.c=B.e=null:(B.e=N,B.c=[k]);return}L=String(k)}else{if(!n.test(L=String(k)))return H(B,L,O);B.s=L.charCodeAt(0)==45?(L=L.slice(1),-1):1}(N=L.indexOf("."))>-1&&(L=L.replace(".","")),(U=L.search(/e/i))>0?(N<0&&(N=U),N+=+L.slice(U+1),L=L.substring(0,U)):N<0&&(N=L.length)}else{if(_(v,2,je.length,"Base"),v==10&&we)return B=new V(k),Oe(B,q+B.e+1,Y);if(L=String(k),O=typeof k=="number"){if(k*0!=0)return H(B,L,O,v);if(B.s=1/k<0?(L=L.slice(1),-1):1,V.DEBUG&&L.replace(/^0\.0*|\./,"").length>15)throw Error(a+k)}else B.s=L.charCodeAt(0)===45?(L=L.slice(1),-1):1;for(D=je.slice(0,v),N=U=0,I=L.length;U<I;U++)if(D.indexOf(M=L.charAt(U))<0){if(M=="."){if(U>N){N=I;continue}}else if(!F&&(L==L.toUpperCase()&&(L=L.toLowerCase())||L==L.toLowerCase()&&(L=L.toUpperCase()))){F=!0,U=-1,N=0;continue}return H(B,String(k),O,v)}O=!1,L=$(L,v,10,B.s),(N=L.indexOf("."))>-1?L=L.replace(".",""):N=L.length}for(U=0;L.charCodeAt(U)===48;U++);for(I=L.length;L.charCodeAt(--I)===48;);if(L=L.slice(U,++I)){if(I-=U,O&&V.DEBUG&&I>15&&(k>f||k!==o(k)))throw Error(a+B.s*k);if((N=N-U-1)>ue)B.c=B.e=null;else if(N<se)B.c=[B.e=0];else{if(B.e=N,B.c=[],U=(N+1)%l,N<0&&(U+=l),U<I){for(U&&B.c.push(+L.slice(0,U)),I-=l;U<I;)B.c.push(+L.slice(U,U+=l));U=l-(L=L.slice(U)).length}else U-=I;for(;U--;L+="0");B.c.push(+L)}}else B.c=[B.e=0]}V.clone=C,V.ROUND_UP=0,V.ROUND_DOWN=1,V.ROUND_CEIL=2,V.ROUND_FLOOR=3,V.ROUND_HALF_UP=4,V.ROUND_HALF_DOWN=5,V.ROUND_HALF_EVEN=6,V.ROUND_HALF_CEIL=7,V.ROUND_HALF_FLOOR=8,V.EUCLID=9,V.config=V.set=function(k){var v,D;if(k!=null)if(typeof k=="object"){if(k.hasOwnProperty(v="DECIMAL_PLACES")&&(D=k[v],_(D,0,m,v),q=D),k.hasOwnProperty(v="ROUNDING_MODE")&&(D=k[v],_(D,0,8,v),Y=D),k.hasOwnProperty(v="EXPONENTIAL_AT")&&(D=k[v],D&&D.pop?(_(D[0],-m,0,v),_(D[1],0,m,v),Q=D[0],ee=D[1]):(_(D,-m,m,v),Q=-(ee=D<0?-D:D))),k.hasOwnProperty(v="RANGE"))if(D=k[v],D&&D.pop)_(D[0],-m,-1,v),_(D[1],1,m,v),se=D[0],ue=D[1];else if(_(D,-m,m,v),D)se=-(ue=D<0?-D:D);else throw Error(s+v+" cannot be zero: "+D);if(k.hasOwnProperty(v="CRYPTO"))if(D=k[v],D===!!D)if(D)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))pe=D;else throw pe=!D,Error(s+"crypto unavailable");else pe=D;else throw Error(s+v+" not true or false: "+D);if(k.hasOwnProperty(v="MODULO_MODE")&&(D=k[v],_(D,0,9,v),J=D),k.hasOwnProperty(v="POW_PRECISION")&&(D=k[v],_(D,0,m,v),Z=D),k.hasOwnProperty(v="FORMAT"))if(D=k[v],typeof D=="object")ce=D;else throw Error(s+v+" not an object: "+D);if(k.hasOwnProperty(v="ALPHABET"))if(D=k[v],typeof D=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(D))we=D.slice(0,10)=="0123456789",je=D;else throw Error(s+v+" invalid: "+D)}else throw Error(s+"Object expected: "+k);return{DECIMAL_PLACES:q,ROUNDING_MODE:Y,EXPONENTIAL_AT:[Q,ee],RANGE:[se,ue],CRYPTO:pe,MODULO_MODE:J,POW_PRECISION:Z,FORMAT:ce,ALPHABET:je}},V.isBigNumber=function(k){if(!k||k._isBigNumber!==!0)return!1;if(!V.DEBUG)return!0;var v,D,M=k.c,F=k.e,N=k.s;e:if({}.toString.call(M)=="[object Array]"){if((N===1||N===-1)&&F>=-m&&F<=m&&F===o(F)){if(M[0]===0){if(F===0&&M.length===1)return!0;break e}if(v=(F+1)%l,v<1&&(v+=l),String(M[0]).length==v){for(v=0;v<M.length;v++)if(D=M[v],D<0||D>=u||D!==o(D))break e;if(D!==0)return!0}}}else if(M===null&&F===null&&(N===null||N===1||N===-1))return!0;throw Error(s+"Invalid BigNumber: "+k)},V.maximum=V.max=function(){return te(arguments,-1)},V.minimum=V.min=function(){return te(arguments,1)},V.random=(function(){var k=9007199254740992,v=Math.random()*k&2097151?function(){return o(Math.random()*k)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(D){var M,F,N,U,O,I=0,L=[],B=new V(K);if(D==null?D=q:_(D,0,m),U=r(D/l),pe)if(crypto.getRandomValues){for(M=crypto.getRandomValues(new Uint32Array(U*=2));I<U;)O=M[I]*131072+(M[I+1]>>>11),O>=9e15?(F=crypto.getRandomValues(new Uint32Array(2)),M[I]=F[0],M[I+1]=F[1]):(L.push(O%1e14),I+=2);I=U/2}else if(crypto.randomBytes){for(M=crypto.randomBytes(U*=7);I<U;)O=(M[I]&31)*281474976710656+M[I+1]*1099511627776+M[I+2]*4294967296+M[I+3]*16777216+(M[I+4]<<16)+(M[I+5]<<8)+M[I+6],O>=9e15?crypto.randomBytes(7).copy(M,I):(L.push(O%1e14),I+=7);I=U/7}else throw pe=!1,Error(s+"crypto unavailable");if(!pe)for(;I<U;)O=v(),O<9e15&&(L[I++]=O%1e14);for(U=L[--I],D%=l,U&&D&&(O=d[l-D],L[I]=o(U/O)*O);L[I]===0;L.pop(),I--);if(I<0)L=[N=0];else{for(N=-1;L[0]===0;L.splice(0,1),N-=l);for(I=1,O=L[0];O>=10;O/=10,I++);I<l&&(N-=l-I)}return B.e=N,B.c=L,B}})(),V.sum=function(){for(var k=1,v=arguments,D=new V(v[0]);k<v.length;)D=D.plus(v[k++]);return D},$=(function(){var k="0123456789";function v(D,M,F,N){for(var U,O=[0],I,L=0,B=D.length;L<B;){for(I=O.length;I--;O[I]*=M);for(O[0]+=N.indexOf(D.charAt(L++)),U=0;U<O.length;U++)O[U]>F-1&&(O[U+1]==null&&(O[U+1]=0),O[U+1]+=O[U]/F|0,O[U]%=F)}return O.reverse()}return function(D,M,F,N,U){var O,I,L,B,W,oe,ie,Se,Ie=D.indexOf("."),Me=q,Ae=Y;for(Ie>=0&&(B=Z,Z=0,D=D.replace(".",""),Se=new V(M),oe=Se.pow(D.length-Ie),Z=B,Se.c=v(S(y(oe.c),oe.e,"0"),10,F,k),Se.e=Se.c.length),ie=v(D,M,F,U?(O=je,k):(O=k,je)),L=B=ie.length;ie[--B]==0;ie.pop());if(!ie[0])return O.charAt(0);if(Ie<0?--L:(oe.c=ie,oe.e=L,oe.s=N,oe=R(oe,Se,Me,Ae,F),ie=oe.c,W=oe.r,L=oe.e),I=L+Me+1,Ie=ie[I],B=F/2,W=W||I<0||ie[I+1]!=null,W=Ae<4?(Ie!=null||W)&&(Ae==0||Ae==(oe.s<0?3:2)):Ie>B||Ie==B&&(Ae==4||W||Ae==6&&ie[I-1]&1||Ae==(oe.s<0?8:7)),I<1||!ie[0])D=W?S(O.charAt(1),-Me,O.charAt(0)):O.charAt(0);else{if(ie.length=I,W)for(--F;++ie[--I]>F;)ie[I]=0,I||(++L,ie=[1].concat(ie));for(B=ie.length;!ie[--B];);for(Ie=0,D="";Ie<=B;D+=O.charAt(ie[Ie++]));D=S(D,L,O.charAt(0))}return D}})(),R=(function(){function k(M,F,N){var U,O,I,L,B=0,W=M.length,oe=F%h,ie=F/h|0;for(M=M.slice();W--;)I=M[W]%h,L=M[W]/h|0,U=ie*I+L*oe,O=oe*I+U%h*h+B,B=(O/N|0)+(U/h|0)+ie*L,M[W]=O%N;return B&&(M=[B].concat(M)),M}function v(M,F,N,U){var O,I;if(N!=U)I=N>U?1:-1;else for(O=I=0;O<N;O++)if(M[O]!=F[O]){I=M[O]>F[O]?1:-1;break}return I}function D(M,F,N,U){for(var O=0;N--;)M[N]-=O,O=M[N]<F[N]?1:0,M[N]=O*U+M[N]-F[N];for(;!M[0]&&M.length>1;M.splice(0,1));}return function(M,F,N,U,O){var I,L,B,W,oe,ie,Se,Ie,Me,Ae,ve,qe,Cr,wr,Er,ft,fn,Ze=M.s==F.s?1:-1,ze=M.c,De=F.c;if(!ze||!ze[0]||!De||!De[0])return new V(!M.s||!F.s||(ze?De&&ze[0]==De[0]:!De)?NaN:ze&&ze[0]==0||!De?Ze*0:Ze/0);for(Ie=new V(Ze),Me=Ie.c=[],L=M.e-F.e,Ze=N+L+1,O||(O=u,L=w(M.e/l)-w(F.e/l),Ze=Ze/l|0),B=0;De[B]==(ze[B]||0);B++);if(De[B]>(ze[B]||0)&&L--,Ze<0)Me.push(1),W=!0;else{for(wr=ze.length,ft=De.length,B=0,Ze+=2,oe=o(O/(De[0]+1)),oe>1&&(De=k(De,oe,O),ze=k(ze,oe,O),ft=De.length,wr=ze.length),Cr=ft,Ae=ze.slice(0,ft),ve=Ae.length;ve<ft;Ae[ve++]=0);fn=De.slice(),fn=[0].concat(fn),Er=De[0],De[1]>=O/2&&Er++;do{if(oe=0,I=v(De,Ae,ft,ve),I<0){if(qe=Ae[0],ft!=ve&&(qe=qe*O+(Ae[1]||0)),oe=o(qe/Er),oe>1)for(oe>=O&&(oe=O-1),ie=k(De,oe,O),Se=ie.length,ve=Ae.length;v(ie,Ae,Se,ve)==1;)oe--,D(ie,ft<Se?fn:De,Se,O),Se=ie.length,I=1;else oe==0&&(I=oe=1),ie=De.slice(),Se=ie.length;if(Se<ve&&(ie=[0].concat(ie)),D(Ae,ie,ve,O),ve=Ae.length,I==-1)for(;v(De,Ae,ft,ve)<1;)oe++,D(Ae,ft<ve?fn:De,ve,O),ve=Ae.length}else I===0&&(oe++,Ae=[0]);Me[B++]=oe,Ae[0]?Ae[ve++]=ze[Cr]||0:(Ae=[ze[Cr]],ve=1)}while((Cr++<wr||Ae[0]!=null)&&Ze--);W=Ae[0]!=null,Me[0]||Me.splice(0,1)}if(O==u){for(B=1,Ze=Me[0];Ze>=10;Ze/=10,B++);Oe(Ie,N+(Ie.e=B+L*l-1)+1,U,W)}else Ie.e=L,Ie.r=+W;return Ie}})();function ae(k,v,D,M){var F,N,U,O,I;if(D==null?D=Y:_(D,0,8),!k.c)return k.toString();if(F=k.c[0],U=k.e,v==null)I=y(k.c),I=M==1||M==2&&(U<=Q||U>=ee)?b(I,U):S(I,U,"0");else if(k=Oe(new V(k),v,D),N=k.e,I=y(k.c),O=I.length,M==1||M==2&&(v<=N||N<=Q)){for(;O<v;I+="0",O++);I=b(I,N)}else if(v-=U+(M===2&&N>U),I=S(I,N,"0"),N+1>O){if(--v>0)for(I+=".";v--;I+="0");}else if(v+=N-O,v>0)for(N+1==O&&(I+=".");v--;I+="0");return k.s<0&&F?"-"+I:I}function te(k,v){for(var D,M,F=1,N=new V(k[0]);F<k.length;F++)M=new V(k[F]),(!M.s||(D=g(N,M))===v||D===0&&N.s===v)&&(N=M);return N}function Te(k,v,D){for(var M=1,F=v.length;!v[--F];v.pop());for(F=v[0];F>=10;F/=10,M++);return(D=M+D*l-1)>ue?k.c=k.e=null:D<se?k.c=[k.e=0]:(k.e=D,k.c=v),k}H=(function(){var k=/^(-?)0([xbo])(?=\w[\w.]*$)/i,v=/^([^.]+)\.$/,D=/^\.([^.]+)$/,M=/^-?(Infinity|NaN)$/,F=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(N,U,O,I){var L,B=O?U:U.replace(F,"");if(M.test(B))N.s=isNaN(B)?null:B<0?-1:1;else{if(!O&&(B=B.replace(k,function(W,oe,ie){return L=(ie=ie.toLowerCase())=="x"?16:ie=="b"?2:8,!I||I==L?oe:W}),I&&(L=I,B=B.replace(v,"$1").replace(D,"0.$1")),U!=B))return new V(B,L);if(V.DEBUG)throw Error(s+"Not a"+(I?" base "+I:"")+" number: "+U);N.s=null}N.c=N.e=null}})();function Oe(k,v,D,M){var F,N,U,O,I,L,B,W=k.c,oe=d;if(W){e:{for(F=1,O=W[0];O>=10;O/=10,F++);if(N=v-F,N<0)N+=l,U=v,I=W[L=0],B=o(I/oe[F-U-1]%10);else if(L=r((N+1)/l),L>=W.length)if(M){for(;W.length<=L;W.push(0));I=B=0,F=1,N%=l,U=N-l+1}else break e;else{for(I=O=W[L],F=1;O>=10;O/=10,F++);N%=l,U=N-l+F,B=U<0?0:o(I/oe[F-U-1]%10)}if(M=M||v<0||W[L+1]!=null||(U<0?I:I%oe[F-U-1]),M=D<4?(B||M)&&(D==0||D==(k.s<0?3:2)):B>5||B==5&&(D==4||M||D==6&&(N>0?U>0?I/oe[F-U]:0:W[L-1])%10&1||D==(k.s<0?8:7)),v<1||!W[0])return W.length=0,M?(v-=k.e+1,W[0]=oe[(l-v%l)%l],k.e=-v||0):W[0]=k.e=0,k;if(N==0?(W.length=L,O=1,L--):(W.length=L+1,O=oe[l-N],W[L]=U>0?o(I/oe[F-U]%oe[U])*O:0),M)for(;;)if(L==0){for(N=1,U=W[0];U>=10;U/=10,N++);for(U=W[0]+=O,O=1;U>=10;U/=10,O++);N!=O&&(k.e++,W[0]==u&&(W[0]=1));break}else{if(W[L]+=O,W[L]!=u)break;W[L--]=0,O=1}for(N=W.length;W[--N]===0;W.pop());}k.e>ue?k.c=k.e=null:k.e<se&&(k.c=[k.e=0])}return k}function Ue(k){var v,D=k.e;return D===null?k.toString():(v=y(k.c),v=D<=Q||D>=ee?b(v,D):S(v,D,"0"),k.s<0?"-"+v:v)}return P.absoluteValue=P.abs=function(){var k=new V(this);return k.s<0&&(k.s=1),k},P.comparedTo=function(k,v){return g(this,new V(k,v))},P.decimalPlaces=P.dp=function(k,v){var D,M,F,N=this;if(k!=null)return _(k,0,m),v==null?v=Y:_(v,0,8),Oe(new V(N),k+N.e+1,v);if(!(D=N.c))return null;if(M=((F=D.length-1)-w(this.e/l))*l,F=D[F])for(;F%10==0;F/=10,M--);return M<0&&(M=0),M},P.dividedBy=P.div=function(k,v){return R(this,new V(k,v),q,Y)},P.dividedToIntegerBy=P.idiv=function(k,v){return R(this,new V(k,v),0,1)},P.exponentiatedBy=P.pow=function(k,v){var D,M,F,N,U,O,I,L,B,W=this;if(k=new V(k),k.c&&!k.isInteger())throw Error(s+"Exponent not an integer: "+Ue(k));if(v!=null&&(v=new V(v)),O=k.e>14,!W.c||!W.c[0]||W.c[0]==1&&!W.e&&W.c.length==1||!k.c||!k.c[0])return B=new V(Math.pow(+Ue(W),O?k.s*(2-E(k)):+Ue(k))),v?B.mod(v):B;if(I=k.s<0,v){if(v.c?!v.c[0]:!v.s)return new V(NaN);M=!I&&W.isInteger()&&v.isInteger(),M&&(W=W.mod(v))}else{if(k.e>9&&(W.e>0||W.e<-1||(W.e==0?W.c[0]>1||O&&W.c[1]>=24e7:W.c[0]<8e13||O&&W.c[0]<=9999975e7)))return N=W.s<0&&E(k)?-0:0,W.e>-1&&(N=1/N),new V(I?1/N:N);Z&&(N=r(Z/l+2))}for(O?(D=new V(.5),I&&(k.s=1),L=E(k)):(F=Math.abs(+Ue(k)),L=F%2),B=new V(K);;){if(L){if(B=B.times(W),!B.c)break;N?B.c.length>N&&(B.c.length=N):M&&(B=B.mod(v))}if(F){if(F=o(F/2),F===0)break;L=F%2}else if(k=k.times(D),Oe(k,k.e+1,1),k.e>14)L=E(k);else{if(F=+Ue(k),F===0)break;L=F%2}W=W.times(W),N?W.c&&W.c.length>N&&(W.c.length=N):M&&(W=W.mod(v))}return M?B:(I&&(B=K.div(B)),v?B.mod(v):N?Oe(B,Z,Y,U):B)},P.integerValue=function(k){var v=new V(this);return k==null?k=Y:_(k,0,8),Oe(v,v.e+1,k)},P.isEqualTo=P.eq=function(k,v){return g(this,new V(k,v))===0},P.isFinite=function(){return!!this.c},P.isGreaterThan=P.gt=function(k,v){return g(this,new V(k,v))>0},P.isGreaterThanOrEqualTo=P.gte=function(k,v){return(v=g(this,new V(k,v)))===1||v===0},P.isInteger=function(){return!!this.c&&w(this.e/l)>this.c.length-2},P.isLessThan=P.lt=function(k,v){return g(this,new V(k,v))<0},P.isLessThanOrEqualTo=P.lte=function(k,v){return(v=g(this,new V(k,v)))===-1||v===0},P.isNaN=function(){return!this.s},P.isNegative=function(){return this.s<0},P.isPositive=function(){return this.s>0},P.isZero=function(){return!!this.c&&this.c[0]==0},P.minus=function(k,v){var D,M,F,N,U=this,O=U.s;if(k=new V(k,v),v=k.s,!O||!v)return new V(NaN);if(O!=v)return k.s=-v,U.plus(k);var I=U.e/l,L=k.e/l,B=U.c,W=k.c;if(!I||!L){if(!B||!W)return B?(k.s=-v,k):new V(W?U:NaN);if(!B[0]||!W[0])return W[0]?(k.s=-v,k):new V(B[0]?U:Y==3?-0:0)}if(I=w(I),L=w(L),B=B.slice(),O=I-L){for((N=O<0)?(O=-O,F=B):(L=I,F=W),F.reverse(),v=O;v--;F.push(0));F.reverse()}else for(M=(N=(O=B.length)<(v=W.length))?O:v,O=v=0;v<M;v++)if(B[v]!=W[v]){N=B[v]<W[v];break}if(N&&(F=B,B=W,W=F,k.s=-k.s),v=(M=W.length)-(D=B.length),v>0)for(;v--;B[D++]=0);for(v=u-1;M>O;){if(B[--M]<W[M]){for(D=M;D&&!B[--D];B[D]=v);--B[D],B[M]+=u}B[M]-=W[M]}for(;B[0]==0;B.splice(0,1),--L);return B[0]?Te(k,B,L):(k.s=Y==3?-1:1,k.c=[k.e=0],k)},P.modulo=P.mod=function(k,v){var D,M,F=this;return k=new V(k,v),!F.c||!k.s||k.c&&!k.c[0]?new V(NaN):!k.c||F.c&&!F.c[0]?new V(F):(J==9?(M=k.s,k.s=1,D=R(F,k,0,3),k.s=M,D.s*=M):D=R(F,k,0,J),k=F.minus(D.times(k)),!k.c[0]&&J==1&&(k.s=F.s),k)},P.multipliedBy=P.times=function(k,v){var D,M,F,N,U,O,I,L,B,W,oe,ie,Se,Ie,Me,Ae=this,ve=Ae.c,qe=(k=new V(k,v)).c;if(!ve||!qe||!ve[0]||!qe[0])return!Ae.s||!k.s||ve&&!ve[0]&&!qe||qe&&!qe[0]&&!ve?k.c=k.e=k.s=null:(k.s*=Ae.s,!ve||!qe?k.c=k.e=null:(k.c=[0],k.e=0)),k;for(M=w(Ae.e/l)+w(k.e/l),k.s*=Ae.s,I=ve.length,W=qe.length,I<W&&(Se=ve,ve=qe,qe=Se,F=I,I=W,W=F),F=I+W,Se=[];F--;Se.push(0));for(Ie=u,Me=h,F=W;--F>=0;){for(D=0,oe=qe[F]%Me,ie=qe[F]/Me|0,U=I,N=F+U;N>F;)L=ve[--U]%Me,B=ve[U]/Me|0,O=ie*L+B*oe,L=oe*L+O%Me*Me+Se[N]+D,D=(L/Ie|0)+(O/Me|0)+ie*B,Se[N--]=L%Ie;Se[N]=D}return D?++M:Se.splice(0,1),Te(k,Se,M)},P.negated=function(){var k=new V(this);return k.s=-k.s||null,k},P.plus=function(k,v){var D,M=this,F=M.s;if(k=new V(k,v),v=k.s,!F||!v)return new V(NaN);if(F!=v)return k.s=-v,M.minus(k);var N=M.e/l,U=k.e/l,O=M.c,I=k.c;if(!N||!U){if(!O||!I)return new V(F/0);if(!O[0]||!I[0])return I[0]?k:new V(O[0]?M:F*0)}if(N=w(N),U=w(U),O=O.slice(),F=N-U){for(F>0?(U=N,D=I):(F=-F,D=O),D.reverse();F--;D.push(0));D.reverse()}for(F=O.length,v=I.length,F-v<0&&(D=I,I=O,O=D,v=F),F=0;v;)F=(O[--v]=O[v]+I[v]+F)/u|0,O[v]=u===O[v]?0:O[v]%u;return F&&(O=[F].concat(O),++U),Te(k,O,U)},P.precision=P.sd=function(k,v){var D,M,F,N=this;if(k!=null&&k!==!!k)return _(k,1,m),v==null?v=Y:_(v,0,8),Oe(new V(N),k,v);if(!(D=N.c))return null;if(F=D.length-1,M=F*l+1,F=D[F]){for(;F%10==0;F/=10,M--);for(F=D[0];F>=10;F/=10,M++);}return k&&N.e+1>M&&(M=N.e+1),M},P.shiftedBy=function(k){return _(k,-f,f),this.times("1e"+k)},P.squareRoot=P.sqrt=function(){var k,v,D,M,F,N=this,U=N.c,O=N.s,I=N.e,L=q+4,B=new V("0.5");if(O!==1||!U||!U[0])return new V(!O||O<0&&(!U||U[0])?NaN:U?N:1/0);if(O=Math.sqrt(+Ue(N)),O==0||O==1/0?(v=y(U),(v.length+I)%2==0&&(v+="0"),O=Math.sqrt(+v),I=w((I+1)/2)-(I<0||I%2),O==1/0?v="5e"+I:(v=O.toExponential(),v=v.slice(0,v.indexOf("e")+1)+I),D=new V(v)):D=new V(O+""),D.c[0]){for(I=D.e,O=I+L,O<3&&(O=0);;)if(F=D,D=B.times(F.plus(R(N,F,L,1))),y(F.c).slice(0,O)===(v=y(D.c)).slice(0,O))if(D.e<I&&--O,v=v.slice(O-3,O+1),v=="9999"||!M&&v=="4999"){if(!M&&(Oe(F,F.e+q+2,0),F.times(F).eq(N))){D=F;break}L+=4,O+=4,M=1}else{(!+v||!+v.slice(1)&&v.charAt(0)=="5")&&(Oe(D,D.e+q+2,1),k=!D.times(D).eq(N));break}}return Oe(D,D.e+q+1,Y,k)},P.toExponential=function(k,v){return k!=null&&(_(k,0,m),k++),ae(this,k,v,1)},P.toFixed=function(k,v){return k!=null&&(_(k,0,m),k=k+this.e+1),ae(this,k,v)},P.toFormat=function(k,v,D){var M,F=this;if(D==null)k!=null&&v&&typeof v=="object"?(D=v,v=null):k&&typeof k=="object"?(D=k,k=v=null):D=ce;else if(typeof D!="object")throw Error(s+"Argument not an object: "+D);if(M=F.toFixed(k,v),F.c){var N,U=M.split("."),O=+D.groupSize,I=+D.secondaryGroupSize,L=D.groupSeparator||"",B=U[0],W=U[1],oe=F.s<0,ie=oe?B.slice(1):B,Se=ie.length;if(I&&(N=O,O=I,I=N,Se-=N),O>0&&Se>0){for(N=Se%O||O,B=ie.substr(0,N);N<Se;N+=O)B+=L+ie.substr(N,O);I>0&&(B+=L+ie.slice(N)),oe&&(B="-"+B)}M=W?B+(D.decimalSeparator||"")+((I=+D.fractionGroupSize)?W.replace(new RegExp("\\d{"+I+"}\\B","g"),"$&"+(D.fractionGroupSeparator||"")):W):B}return(D.prefix||"")+M+(D.suffix||"")},P.toFraction=function(k){var v,D,M,F,N,U,O,I,L,B,W,oe,ie=this,Se=ie.c;if(k!=null&&(O=new V(k),!O.isInteger()&&(O.c||O.s!==1)||O.lt(K)))throw Error(s+"Argument "+(O.isInteger()?"out of range: ":"not an integer: ")+Ue(O));if(!Se)return new V(ie);for(v=new V(K),L=D=new V(K),M=I=new V(K),oe=y(Se),N=v.e=oe.length-ie.e-1,v.c[0]=d[(U=N%l)<0?l+U:U],k=!k||O.comparedTo(v)>0?N>0?v:L:O,U=ue,ue=1/0,O=new V(oe),I.c[0]=0;B=R(O,v,0,1),F=D.plus(B.times(M)),F.comparedTo(k)!=1;)D=M,M=F,L=I.plus(B.times(F=L)),I=F,v=O.minus(B.times(F=v)),O=F;return F=R(k.minus(D),M,0,1),I=I.plus(F.times(L)),D=D.plus(F.times(M)),I.s=L.s=ie.s,N=N*2,W=R(L,M,N,Y).minus(ie).abs().comparedTo(R(I,D,N,Y).minus(ie).abs())<1?[L,M]:[I,D],ue=U,W},P.toNumber=function(){return+Ue(this)},P.toPrecision=function(k,v){return k!=null&&_(k,1,m),ae(this,k,v,2)},P.toString=function(k){var v,D=this,M=D.s,F=D.e;return F===null?M?(v="Infinity",M<0&&(v="-"+v)):v="NaN":(k==null?v=F<=Q||F>=ee?b(y(D.c),F):S(y(D.c),F,"0"):k===10&&we?(D=Oe(new V(D),q+F+1,Y),v=S(y(D.c),D.e,"0")):(_(k,2,je.length,"Base"),v=$(S(y(D.c),F,"0"),10,k,M,!0)),M<0&&D.c[0]&&(v="-"+v)),v},P.valueOf=P.toJSON=function(){return Ue(this)},P._isBigNumber=!0,T!=null&&V.set(T),V}function w(T){var R=T|0;return T>0||T===R?R:R-1}function y(T){for(var R,$,H=1,P=T.length,K=T[0]+"";H<P;){for(R=T[H++]+"",$=l-R.length;$--;R="0"+R);K+=R}for(P=K.length;K.charCodeAt(--P)===48;);return K.slice(0,P+1||1)}function g(T,R){var $,H,P=T.c,K=R.c,q=T.s,Y=R.s,Q=T.e,ee=R.e;if(!q||!Y)return null;if($=P&&!P[0],H=K&&!K[0],$||H)return $?H?0:-Y:q;if(q!=Y)return q;if($=q<0,H=Q==ee,!P||!K)return H?0:!P^$?1:-1;if(!H)return Q>ee^$?1:-1;for(Y=(Q=P.length)<(ee=K.length)?Q:ee,q=0;q<Y;q++)if(P[q]!=K[q])return P[q]>K[q]^$?1:-1;return Q==ee?0:Q>ee^$?1:-1}function _(T,R,$,H){if(T<R||T>$||T!==o(T))throw Error(s+(H||"Argument")+(typeof T=="number"?T<R||T>$?" out of range: ":" not an integer: ":" not a primitive number: ")+String(T))}function E(T){var R=T.c.length-1;return w(T.e/l)==R&&T.c[R]%2!=0}function b(T,R){return(T.length>1?T.charAt(0)+"."+T.slice(1):T)+(R<0?"e":"e+")+R}function S(T,R,$){var H,P;if(R<0){for(P=$+".";++R;P+=$);T=P+T}else if(H=T.length,++R>H){for(P=$,R-=H;--R;P+=$);T+=P}else R<H&&(T=T.slice(0,R)+"."+T.slice(R));return T}e=C(),e.default=e.BigNumber=e,typeof define=="function"&&define.amd?define(function(){return e}):typeof Ui<"u"&&Ui.exports?Ui.exports=e:(t||(t=typeof self<"u"&&self?self:window),t.BigNumber=e)})(hg)});var yg=X((sP,gg)=>{var pg=Wc(),mg=gg.exports;(function(){"use strict";function t(f){return f<10?"0"+f:f}var e=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,n=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,r,o,s={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},a;function u(f){return n.lastIndex=0,n.test(f)?'"'+f.replace(n,function(d){var h=s[d];return typeof h=="string"?h:"\\u"+("0000"+d.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+f+'"'}function l(f,d){var h,m,C,w,y=r,g,_=d[f],E=_!=null&&(_ instanceof pg||pg.isBigNumber(_));switch(_&&typeof _=="object"&&typeof _.toJSON=="function"&&(_=_.toJSON(f)),typeof a=="function"&&(_=a.call(d,f,_)),typeof _){case"string":return E?_:u(_);case"number":return isFinite(_)?String(_):"null";case"boolean":case"null":case"bigint":return String(_);case"object":if(!_)return"null";if(r+=o,g=[],Object.prototype.toString.apply(_)==="[object Array]"){for(w=_.length,h=0;h<w;h+=1)g[h]=l(h,_)||"null";return C=g.length===0?"[]":r?`[
|
|
44
|
-
`+r+g.join(`,
|
|
45
|
-
`+r)+`
|
|
46
|
-
`+y+"]":"["+g.join(",")+"]",r=y,C}if(a&&typeof a=="object")for(w=a.length,h=0;h<w;h+=1)typeof a[h]=="string"&&(m=a[h],C=l(m,_),C&&g.push(u(m)+(r?": ":":")+C));else Object.keys(_).forEach(function(b){var S=l(b,_);S&&g.push(u(b)+(r?": ":":")+S)});return C=g.length===0?"{}":r?`{
|
|
47
|
-
`+r+g.join(`,
|
|
48
|
-
`+r)+`
|
|
49
|
-
`+y+"}":"{"+g.join(",")+"}",r=y,C}}typeof mg.stringify!="function"&&(mg.stringify=function(f,d,h){var m;if(r="",o="",typeof h=="number")for(m=0;m<h;m+=1)o+=" ";else typeof h=="string"&&(o=h);if(a=d,d&&typeof d!="function"&&(typeof d!="object"||typeof d.length!="number"))throw new Error("JSON.stringify");return l("",{"":f})})})()});var bg=X((iP,_g)=>{var $i=null,ak=/(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])/,uk=/(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)/,ck=function(t){"use strict";var e={strict:!1,storeAsString:!1,alwaysParseAsBig:!1,useNativeBigInt:!1,protoAction:"error",constructorAction:"error"};if(t!=null){if(t.strict===!0&&(e.strict=!0),t.storeAsString===!0&&(e.storeAsString=!0),e.alwaysParseAsBig=t.alwaysParseAsBig===!0?t.alwaysParseAsBig:!1,e.useNativeBigInt=t.useNativeBigInt===!0?t.useNativeBigInt:!1,typeof t.constructorAction<"u")if(t.constructorAction==="error"||t.constructorAction==="ignore"||t.constructorAction==="preserve")e.constructorAction=t.constructorAction;else throw new Error(`Incorrect value for constructorAction option, must be "error", "ignore" or undefined but passed ${t.constructorAction}`);if(typeof t.protoAction<"u")if(t.protoAction==="error"||t.protoAction==="ignore"||t.protoAction==="preserve")e.protoAction=t.protoAction;else throw new Error(`Incorrect value for protoAction option, must be "error", "ignore" or undefined but passed ${t.protoAction}`)}var n,r,o={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
|
|
50
|
-
`,r:"\r",t:" "},s,a=function(y){throw{name:"SyntaxError",message:y,at:n,text:s}},u=function(y){return y&&y!==r&&a("Expected '"+y+"' instead of '"+r+"'"),r=s.charAt(n),n+=1,r},l=function(){var y,g="";for(r==="-"&&(g="-",u("-"));r>="0"&&r<="9";)g+=r,u();if(r===".")for(g+=".";u()&&r>="0"&&r<="9";)g+=r;if(r==="e"||r==="E")for(g+=r,u(),(r==="-"||r==="+")&&(g+=r,u());r>="0"&&r<="9";)g+=r,u();if(y=+g,!isFinite(y))a("Bad number");else return $i==null&&($i=Wc()),g.length>15?e.storeAsString?g:e.useNativeBigInt?BigInt(g):new $i(g):e.alwaysParseAsBig?e.useNativeBigInt?BigInt(y):new $i(y):y},f=function(){var y,g,_="",E;if(r==='"')for(var b=n;u();){if(r==='"')return n-1>b&&(_+=s.substring(b,n-1)),u(),_;if(r==="\\"){if(n-1>b&&(_+=s.substring(b,n-1)),u(),r==="u"){for(E=0,g=0;g<4&&(y=parseInt(u(),16),!!isFinite(y));g+=1)E=E*16+y;_+=String.fromCharCode(E)}else if(typeof o[r]=="string")_+=o[r];else break;b=n}}a("Bad string")},d=function(){for(;r&&r<=" ";)u()},h=function(){switch(r){case"t":return u("t"),u("r"),u("u"),u("e"),!0;case"f":return u("f"),u("a"),u("l"),u("s"),u("e"),!1;case"n":return u("n"),u("u"),u("l"),u("l"),null}a("Unexpected '"+r+"'")},m,C=function(){var y=[];if(r==="["){if(u("["),d(),r==="]")return u("]"),y;for(;r;){if(y.push(m()),d(),r==="]")return u("]"),y;u(","),d()}}a("Bad array")},w=function(){var y,g=Object.create(null);if(r==="{"){if(u("{"),d(),r==="}")return u("}"),g;for(;r;){if(y=f(),d(),u(":"),e.strict===!0&&Object.hasOwnProperty.call(g,y)&&a('Duplicate key "'+y+'"'),ak.test(y)===!0?e.protoAction==="error"?a("Object contains forbidden prototype property"):e.protoAction==="ignore"?m():g[y]=m():uk.test(y)===!0?e.constructorAction==="error"?a("Object contains forbidden constructor property"):e.constructorAction==="ignore"?m():g[y]=m():g[y]=m(),d(),r==="}")return u("}"),g;u(","),d()}}a("Bad object")};return m=function(){switch(d(),r){case"{":return w();case"[":return C();case'"':return f();case"-":return l();default:return r>="0"&&r<="9"?l():h()}},function(y,g){var _;return s=y+"",n=0,r=" ",_=m(),d(),r&&a("Syntax error"),typeof g=="function"?(function E(b,S){var T,R,$=b[S];return $&&typeof $=="object"&&Object.keys($).forEach(function(H){R=E($,H),R!==void 0?$[H]=R:delete $[H]}),g.call(b,S,$)})({"":_},""):_}};_g.exports=ck});var Eg=X((aP,qi)=>{var Cg=yg().stringify,wg=bg();qi.exports=function(t){return{parse:wg(t),stringify:Cg}};qi.exports.parse=wg();qi.exports.stringify=Cg});var Gc=X(zt=>{"use strict";Object.defineProperty(zt,"__esModule",{value:!0});zt.GCE_LINUX_BIOS_PATHS=void 0;zt.isGoogleCloudServerless=Sg;zt.isGoogleComputeEngineLinux=vg;zt.isGoogleComputeEngineMACAddress=Tg;zt.isGoogleComputeEngine=Dg;zt.detectGCPResidency=dk;var kg=re("fs"),Ag=re("os");zt.GCE_LINUX_BIOS_PATHS={BIOS_DATE:"/sys/class/dmi/id/bios_date",BIOS_VENDOR:"/sys/class/dmi/id/bios_vendor"};var lk=/^42:01/;function Sg(){return!!(process.env.CLOUD_RUN_JOB||process.env.FUNCTION_NAME||process.env.K_SERVICE)}function vg(){if((0,Ag.platform)()!=="linux")return!1;try{(0,kg.statSync)(zt.GCE_LINUX_BIOS_PATHS.BIOS_DATE);let t=(0,kg.readFileSync)(zt.GCE_LINUX_BIOS_PATHS.BIOS_VENDOR,"utf8");return/Google/.test(t)}catch{return!1}}function Tg(){let t=(0,Ag.networkInterfaces)();for(let e of Object.values(t))if(e){for(let{mac:n}of e)if(lk.test(n))return!0}return!1}function Dg(){return vg()||Tg()}function dk(){return Sg()||Dg()}});var Rg=X(zi=>{"use strict";Object.defineProperty(zi,"__esModule",{value:!0});zi.Colours=void 0;var nt=class t{static isEnabled(e){return e&&e.isTTY&&(typeof e.getColorDepth=="function"?e.getColorDepth()>2:!0)}static refresh(){t.enabled=t.isEnabled(process==null?void 0:process.stderr),this.enabled?(t.reset="\x1B[0m",t.bright="\x1B[1m",t.dim="\x1B[2m",t.red="\x1B[31m",t.green="\x1B[32m",t.yellow="\x1B[33m",t.blue="\x1B[34m",t.magenta="\x1B[35m",t.cyan="\x1B[36m",t.white="\x1B[37m",t.grey="\x1B[90m"):(t.reset="",t.bright="",t.dim="",t.red="",t.green="",t.yellow="",t.blue="",t.magenta="",t.cyan="",t.white="",t.grey="")}};zi.Colours=nt;nt.enabled=!1;nt.reset="";nt.bright="";nt.dim="";nt.red="";nt.green="";nt.yellow="";nt.blue="";nt.magenta="";nt.cyan="";nt.white="";nt.grey="";nt.refresh()});var Fg=X(Re=>{"use strict";var fk=Re&&Re.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var o=Object.getOwnPropertyDescriptor(e,n);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,o)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),hk=Re&&Re.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),xg=Re&&Re.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[r.length]=o);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),o=0;o<r.length;o++)r[o]!=="default"&&fk(n,e,r[o]);return hk(n,e),n}})();Object.defineProperty(Re,"__esModule",{value:!0});Re.env=Re.DebugLogBackendBase=Re.placeholder=Re.AdhocDebugLogger=Re.LogSeverity=void 0;Re.getNodeBackend=Vc;Re.getDebugBackend=mk;Re.getStructuredBackend=gk;Re.setBackend=yk;Re.log=Pg;var pk=re("events"),Jo=xg(re("process")),Og=xg(re("util")),yt=Rg(),Ht;(function(t){t.DEFAULT="DEFAULT",t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR"})(Ht||(Re.LogSeverity=Ht={}));var Vo=class extends pk.EventEmitter{constructor(e,n){super(),this.namespace=e,this.upstream=n,this.func=Object.assign(this.invoke.bind(this),{instance:this,on:(r,o)=>this.on(r,o)}),this.func.debug=(...r)=>this.invokeSeverity(Ht.DEBUG,...r),this.func.info=(...r)=>this.invokeSeverity(Ht.INFO,...r),this.func.warn=(...r)=>this.invokeSeverity(Ht.WARNING,...r),this.func.error=(...r)=>this.invokeSeverity(Ht.ERROR,...r),this.func.sublog=r=>Pg(r,this.func)}invoke(e,...n){if(this.upstream)try{this.upstream(e,...n)}catch{}try{this.emit("log",e,n)}catch{}}invokeSeverity(e,...n){this.invoke({severity:e},...n)}};Re.AdhocDebugLogger=Vo;Re.placeholder=new Vo("",()=>{}).func;var eo=class{constructor(){var e;this.cached=new Map,this.filters=[],this.filtersSet=!1;let n=(e=Jo.env[Re.env.nodeEnables])!==null&&e!==void 0?e:"*";n==="all"&&(n="*"),this.filters=n.split(",")}log(e,n,...r){try{this.filtersSet||(this.setFilters(),this.filtersSet=!0);let o=this.cached.get(e);o||(o=this.makeLogger(e),this.cached.set(e,o)),o(n,...r)}catch(o){console.error(o)}}};Re.DebugLogBackendBase=eo;var Jc=class extends eo{constructor(){super(...arguments),this.enabledRegexp=/.*/g}isEnabled(e){return this.enabledRegexp.test(e)}makeLogger(e){return this.enabledRegexp.test(e)?(n,...r)=>{var o;let s=`${yt.Colours.green}${e}${yt.Colours.reset}`,a=`${yt.Colours.yellow}${Jo.pid}${yt.Colours.reset}`,u;switch(n.severity){case Ht.ERROR:u=`${yt.Colours.red}${n.severity}${yt.Colours.reset}`;break;case Ht.INFO:u=`${yt.Colours.magenta}${n.severity}${yt.Colours.reset}`;break;case Ht.WARNING:u=`${yt.Colours.yellow}${n.severity}${yt.Colours.reset}`;break;default:u=(o=n.severity)!==null&&o!==void 0?o:Ht.DEFAULT;break}let l=Og.formatWithOptions({colors:yt.Colours.enabled},...r),f=Object.assign({},n);delete f.severity;let d=Object.getOwnPropertyNames(f).length?JSON.stringify(f):"",h=d?`${yt.Colours.grey}${d}${yt.Colours.reset}`:"";console.error("%s [%s|%s] %s%s",a,s,u,l,d?` ${h}`:"")}:()=>{}}setFilters(){let n=this.filters.join(",").replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".*").replace(/,/g,"$|^");this.enabledRegexp=new RegExp(`^${n}$`,"i")}};function Vc(){return new Jc}var Kc=class extends eo{constructor(e){super(),this.debugPkg=e}makeLogger(e){let n=this.debugPkg(e);return(r,...o)=>{n(o[0],...o.slice(1))}}setFilters(){var e;let n=(e=Jo.env.NODE_DEBUG)!==null&&e!==void 0?e:"";Jo.env.NODE_DEBUG=`${n}${n?",":""}${this.filters.join(",")}`}};function mk(t){return new Kc(t)}var Yc=class extends eo{constructor(e){var n;super(),this.upstream=(n=e)!==null&&n!==void 0?n:void 0}makeLogger(e){var n;let r=(n=this.upstream)===null||n===void 0?void 0:n.makeLogger(e);return(o,...s)=>{var a;let u=(a=o.severity)!==null&&a!==void 0?a:Ht.INFO,l=Object.assign({severity:u,message:Og.format(...s)},o),f=JSON.stringify(l);r?r(o,f):console.log("%s",f)}}setFilters(){var e;(e=this.upstream)===null||e===void 0||e.setFilters()}};function gk(t){return new Yc(t)}Re.env={nodeEnables:"GOOGLE_SDK_NODE_LOGGING"};var Qc=new Map,_t;function yk(t){_t=t,Qc.clear()}function Pg(t,e){if(!_t&&!Jo.env[Re.env.nodeEnables]||!t)return Re.placeholder;e&&(t=`${e.instance.namespace}:${t}`);let n=Qc.get(t);if(n)return n.func;if(_t===null)return Re.placeholder;_t===void 0&&(_t=Vc());let r=(()=>{let o;return new Vo(t,(a,...u)=>{if(o!==_t){if(_t===null)return;_t===void 0&&(_t=Vc()),o=_t}_t?.log(t,a,...u)})})();return Qc.set(t,r),r.func}});var Xc=X(mr=>{"use strict";var _k=mr&&mr.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var o=Object.getOwnPropertyDescriptor(e,n);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,o)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),bk=mr&&mr.__exportStar||function(t,e){for(var n in t)n!=="default"&&!Object.prototype.hasOwnProperty.call(e,n)&&_k(e,t,n)};Object.defineProperty(mr,"__esModule",{value:!0});bk(Fg(),mr)});var Yo=X(he=>{"use strict";var Ng=he&&he.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var o=Object.getOwnPropertyDescriptor(e,n);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,o)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),Ck=he&&he.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),wk=he&&he.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[r.length]=o);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),o=0;o<r.length;o++)r[o]!=="default"&&Ng(n,e,r[o]);return Ck(n,e),n}})(),Ek=he&&he.__exportStar||function(t,e){for(var n in t)n!=="default"&&!Object.prototype.hasOwnProperty.call(e,n)&&Ng(e,t,n)};Object.defineProperty(he,"__esModule",{value:!0});he.gcpResidencyCache=he.METADATA_SERVER_DETECTION=he.HEADERS=he.HEADER_VALUE=he.HEADER_NAME=he.SECONDARY_HOST_ADDRESS=he.HOST_ADDRESS=he.BASE_PATH=void 0;he.instance=Dk;he.project=Rk;he.universe=xk;he.bulk=Ok;he.isAvailable=Fk;he.resetIsAvailableCache=Ik;he.getGCPResidency=tl;he.setGCPResidency=Bg;he.requestTimeout=Mg;var Zc=Xe(),kk=Eg(),Ak=Gc(),Sk=wk(Xc());he.BASE_PATH="/computeMetadata/v1";he.HOST_ADDRESS="http://169.254.169.254";he.SECONDARY_HOST_ADDRESS="http://metadata.google.internal.";he.HEADER_NAME="Metadata-Flavor";he.HEADER_VALUE="Google";he.HEADERS=Object.freeze({[he.HEADER_NAME]:he.HEADER_VALUE});var Ig=Sk.log("gcp-metadata");he.METADATA_SERVER_DETECTION=Object.freeze({"assume-present":"don't try to ping the metadata server, but assume it's present",none:"don't try to ping the metadata server, but don't try to use it either","bios-only":"treat the result of a BIOS probe as canonical (don't fall back to pinging)","ping-only":"skip the BIOS probe, and go straight to pinging"});function el(t){return t||(t=process.env.GCE_METADATA_IP||process.env.GCE_METADATA_HOST||he.HOST_ADDRESS),/^https?:\/\//.test(t)||(t=`http://${t}`),new URL(he.BASE_PATH,t).href}function vk(t){Object.keys(t).forEach(e=>{switch(e){case"params":case"property":case"headers":break;case"qs":throw new Error("'qs' is not a valid configuration option. Please use 'params' instead.");default:throw new Error(`'${e}' is not a valid configuration option.`)}})}async function Ko(t,e={},n=3,r=!1){let o=new Headers(he.HEADERS),s="",a={};if(typeof t=="object"){let h=t;new Headers(h.headers).forEach((m,C)=>o.set(C,m)),s=h.metadataKey,a=h.params||a,n=h.noResponseRetries||n,r=h.fastFail||r}else s=t;typeof e=="string"?s+=`/${e}`:(vk(e),e.property&&(s+=`/${e.property}`),new Headers(e.headers).forEach((h,m)=>o.set(m,h)),a=e.params||a);let u=r?Tk:Zc.request,l={url:`${el()}/${s}`,headers:o,retryConfig:{noResponseRetries:n},params:a,responseType:"text",timeout:Mg()};Ig.info("instance request %j",l);let f=await u(l);Ig.info("instance metadata is %s",f.data);let d=f.headers.get(he.HEADER_NAME);if(d!==he.HEADER_VALUE)throw new RangeError(`Invalid response from metadata service: incorrect ${he.HEADER_NAME} header. Expected '${he.HEADER_VALUE}', got ${d?`'${d}'`:"no header"}`);if(typeof f.data=="string")try{return kk.parse(f.data)}catch{}return f.data}async function Tk(t){let e={...t,url:t.url?.toString().replace(el(),el(he.SECONDARY_HOST_ADDRESS))},n=(0,Zc.request)(t),r=(0,Zc.request)(e);return Promise.any([n,r])}function Dk(t){return Ko("instance",t)}function Rk(t){return Ko("project",t)}function xk(t){return Ko("universe",t)}async function Ok(t){let e={};return await Promise.all(t.map(n=>(async()=>{let r=await Ko(n),o=n.metadataKey;e[o]=r})())),e}function Pk(){return process.env.DETECT_GCP_RETRIES?Number(process.env.DETECT_GCP_RETRIES):0}var Hi;async function Fk(){if(process.env.METADATA_SERVER_DETECTION){let t=process.env.METADATA_SERVER_DETECTION.trim().toLocaleLowerCase();if(!(t in he.METADATA_SERVER_DETECTION))throw new RangeError(`Unknown \`METADATA_SERVER_DETECTION\` env variable. Got \`${t}\`, but it should be \`${Object.keys(he.METADATA_SERVER_DETECTION).join("`, `")}\`, or unset`);switch(t){case"assume-present":return!0;case"none":return!1;case"bios-only":return tl();case"ping-only":}}try{return Hi===void 0&&(Hi=Ko("instance",void 0,Pk(),!(process.env.GCE_METADATA_IP||process.env.GCE_METADATA_HOST))),await Hi,!0}catch(t){let e=t;if(process.env.DEBUG_AUTH&&console.info(e),e.type==="request-timeout"||e.response&&e.response.status===404)return!1;if(!(e.response&&e.response.status===404)&&(!e.code||!["EHOSTDOWN","EHOSTUNREACH","ENETUNREACH","ENOENT","ENOTFOUND","ECONNREFUSED"].includes(e.code.toString()))){let n="UNKNOWN";e.code&&(n=e.code.toString()),process.emitWarning(`received unexpected error = ${e.message} code = ${n}`,"MetadataLookupWarning")}return!1}}function Ik(){Hi=void 0}he.gcpResidencyCache=null;function tl(){return he.gcpResidencyCache===null&&Bg(),he.gcpResidencyCache}function Bg(t=null){he.gcpResidencyCache=t!==null?t:(0,Ak.detectGCPResidency)()}function Mg(){return tl()?0:3e3}Ek(Gc(),he)});var Ug=X(Wi=>{"use strict";Wi.byteLength=Bk;Wi.toByteArray=Lk;Wi.fromByteArray=$k;var en=[],xt=[],Nk=typeof Uint8Array<"u"?Uint8Array:Array,nl="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(gr=0,Lg=nl.length;gr<Lg;++gr)en[gr]=nl[gr],xt[nl.charCodeAt(gr)]=gr;var gr,Lg;xt[45]=62;xt[95]=63;function jg(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=t.indexOf("=");n===-1&&(n=e);var r=n===e?0:4-n%4;return[n,r]}function Bk(t){var e=jg(t),n=e[0],r=e[1];return(n+r)*3/4-r}function Mk(t,e,n){return(e+n)*3/4-n}function Lk(t){var e,n=jg(t),r=n[0],o=n[1],s=new Nk(Mk(t,r,o)),a=0,u=o>0?r-4:r,l;for(l=0;l<u;l+=4)e=xt[t.charCodeAt(l)]<<18|xt[t.charCodeAt(l+1)]<<12|xt[t.charCodeAt(l+2)]<<6|xt[t.charCodeAt(l+3)],s[a++]=e>>16&255,s[a++]=e>>8&255,s[a++]=e&255;return o===2&&(e=xt[t.charCodeAt(l)]<<2|xt[t.charCodeAt(l+1)]>>4,s[a++]=e&255),o===1&&(e=xt[t.charCodeAt(l)]<<10|xt[t.charCodeAt(l+1)]<<4|xt[t.charCodeAt(l+2)]>>2,s[a++]=e>>8&255,s[a++]=e&255),s}function jk(t){return en[t>>18&63]+en[t>>12&63]+en[t>>6&63]+en[t&63]}function Uk(t,e,n){for(var r,o=[],s=e;s<n;s+=3)r=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(t[s+2]&255),o.push(jk(r));return o.join("")}function $k(t){for(var e,n=t.length,r=n%3,o=[],s=16383,a=0,u=n-r;a<u;a+=s)o.push(Uk(t,a,a+s>u?u:a+s));return r===1?(e=t[n-1],o.push(en[e>>2]+en[e<<4&63]+"==")):r===2&&(e=(t[n-2]<<8)+t[n-1],o.push(en[e>>10]+en[e>>4&63]+en[e<<2&63]+"=")),o.join("")}});var ol=X(rl=>{"use strict";Object.defineProperty(rl,"__esModule",{value:!0});rl.fromArrayBufferToHex=qk;function qk(t){return Array.from(new Uint8Array(t)).map(n=>n.toString(16).padStart(2,"0")).join("")}});var $g=X(Gi=>{"use strict";Object.defineProperty(Gi,"__esModule",{value:!0});Gi.BrowserCrypto=void 0;var to=Ug(),zk=ol(),sl=class t{constructor(){if(typeof window>"u"||window.crypto===void 0||window.crypto.subtle===void 0)throw new Error("SubtleCrypto not found. Make sure it's an https:// website.")}async sha256DigestBase64(e){let n=new TextEncoder().encode(e),r=await window.crypto.subtle.digest("SHA-256",n);return to.fromByteArray(new Uint8Array(r))}randomBytesBase64(e){let n=new Uint8Array(e);return window.crypto.getRandomValues(n),to.fromByteArray(n)}static padBase64(e){for(;e.length%4!==0;)e+="=";return e}async verify(e,n,r){let o={name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},s=new TextEncoder().encode(n),a=to.toByteArray(t.padBase64(r)),u=await window.crypto.subtle.importKey("jwk",e,o,!0,["verify"]);return await window.crypto.subtle.verify(o,u,a,s)}async sign(e,n){let r={name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},o=new TextEncoder().encode(n),s=await window.crypto.subtle.importKey("jwk",e,r,!0,["sign"]),a=await window.crypto.subtle.sign(r,s,o);return to.fromByteArray(new Uint8Array(a))}decodeBase64StringUtf8(e){let n=to.toByteArray(t.padBase64(e));return new TextDecoder().decode(n)}encodeBase64StringUtf8(e){let n=new TextEncoder().encode(e);return to.fromByteArray(n)}async sha256DigestHex(e){let n=new TextEncoder().encode(e),r=await window.crypto.subtle.digest("SHA-256",n);return(0,zk.fromArrayBufferToHex)(r)}async signWithHmacSha256(e,n){let r=typeof e=="string"?e:String.fromCharCode(...new Uint16Array(e)),o=new TextEncoder,s=await window.crypto.subtle.importKey("raw",o.encode(r),{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]);return window.crypto.subtle.sign("HMAC",s,o.encode(n))}};Gi.BrowserCrypto=sl});var qg=X(Ji=>{"use strict";Object.defineProperty(Ji,"__esModule",{value:!0});Ji.NodeCrypto=void 0;var no=re("crypto"),il=class{async sha256DigestBase64(e){return no.createHash("sha256").update(e).digest("base64")}randomBytesBase64(e){return no.randomBytes(e).toString("base64")}async verify(e,n,r){let o=no.createVerify("RSA-SHA256");return o.update(n),o.end(),o.verify(e,r,"base64")}async sign(e,n){let r=no.createSign("RSA-SHA256");return r.update(n),r.end(),r.sign(e,"base64")}decodeBase64StringUtf8(e){return Buffer.from(e,"base64").toString("utf-8")}encodeBase64StringUtf8(e){return Buffer.from(e,"utf-8").toString("base64")}async sha256DigestHex(e){return no.createHash("sha256").update(e).digest("hex")}async signWithHmacSha256(e,n){let r=typeof e=="string"?e:Wk(e);return Hk(no.createHmac("sha256",r).update(n).digest())}};Ji.NodeCrypto=il;function Hk(t){return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}function Wk(t){return Buffer.from(t)}});var Qo=X(An=>{"use strict";var Gk=An&&An.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var o=Object.getOwnPropertyDescriptor(e,n);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,o)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),Jk=An&&An.__exportStar||function(t,e){for(var n in t)n!=="default"&&!Object.prototype.hasOwnProperty.call(e,n)&&Gk(e,t,n)};Object.defineProperty(An,"__esModule",{value:!0});An.createCrypto=Yk;An.hasBrowserCrypto=zg;var Vk=$g(),Kk=qg();Jk(ol(),An);function Yk(){return zg()?new Vk.BrowserCrypto:new Kk.NodeCrypto}function zg(){return typeof window<"u"&&typeof window.crypto<"u"&&typeof window.crypto.subtle<"u"}});var ro=X((al,Wg)=>{var Vi=re("buffer"),tn=Vi.Buffer;function Hg(t,e){for(var n in t)e[n]=t[n]}tn.from&&tn.alloc&&tn.allocUnsafe&&tn.allocUnsafeSlow?Wg.exports=Vi:(Hg(Vi,al),al.Buffer=yr);function yr(t,e,n){return tn(t,e,n)}yr.prototype=Object.create(tn.prototype);Hg(tn,yr);yr.from=function(t,e,n){if(typeof t=="number")throw new TypeError("Argument must not be a number");return tn(t,e,n)};yr.alloc=function(t,e,n){if(typeof t!="number")throw new TypeError("Argument must be a number");var r=tn(t);return e!==void 0?typeof n=="string"?r.fill(e,n):r.fill(e):r.fill(0),r};yr.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return tn(t)};yr.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return Vi.SlowBuffer(t)}});var Jg=X((_P,Gg)=>{"use strict";function ul(t){var e=(t/8|0)+(t%8===0?0:1);return e}var Qk={ES256:ul(256),ES384:ul(384),ES512:ul(521)};function Xk(t){var e=Qk[t];if(e)return e;throw new Error('Unknown algorithm "'+t+'"')}Gg.exports=Xk});var cl=X((bP,Zg)=>{"use strict";var Ki=ro().Buffer,Kg=Jg(),Yi=128,Yg=0,Zk=32,eA=16,tA=2,Qg=eA|Zk|Yg<<6,Qi=tA|Yg<<6;function nA(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function Xg(t){if(Ki.isBuffer(t))return t;if(typeof t=="string")return Ki.from(t,"base64");throw new TypeError("ECDSA signature must be a Base64 string or a Buffer")}function rA(t,e){t=Xg(t);var n=Kg(e),r=n+1,o=t.length,s=0;if(t[s++]!==Qg)throw new Error('Could not find expected "seq"');var a=t[s++];if(a===(Yi|1)&&(a=t[s++]),o-s<a)throw new Error('"seq" specified length of "'+a+'", only "'+(o-s)+'" remaining');if(t[s++]!==Qi)throw new Error('Could not find expected "int" for "r"');var u=t[s++];if(o-s-2<u)throw new Error('"r" specified length of "'+u+'", only "'+(o-s-2)+'" available');if(r<u)throw new Error('"r" specified length of "'+u+'", max of "'+r+'" is acceptable');var l=s;if(s+=u,t[s++]!==Qi)throw new Error('Could not find expected "int" for "s"');var f=t[s++];if(o-s!==f)throw new Error('"s" specified length of "'+f+'", expected "'+(o-s)+'"');if(r<f)throw new Error('"s" specified length of "'+f+'", max of "'+r+'" is acceptable');var d=s;if(s+=f,s!==o)throw new Error('Expected to consume entire buffer, but "'+(o-s)+'" bytes remain');var h=n-u,m=n-f,C=Ki.allocUnsafe(h+u+m+f);for(s=0;s<h;++s)C[s]=0;t.copy(C,s,l+Math.max(-h,0),l+u),s=n;for(var w=s;s<w+m;++s)C[s]=0;return t.copy(C,s,d+Math.max(-m,0),d+f),C=C.toString("base64"),C=nA(C),C}function Vg(t,e,n){for(var r=0;e+r<n&&t[e+r]===0;)++r;var o=t[e+r]>=Yi;return o&&--r,r}function oA(t,e){t=Xg(t);var n=Kg(e),r=t.length;if(r!==n*2)throw new TypeError('"'+e+'" signatures must be "'+n*2+'" bytes, saw "'+r+'"');var o=Vg(t,0,n),s=Vg(t,n,t.length),a=n-o,u=n-s,l=2+a+1+1+u,f=l<Yi,d=Ki.allocUnsafe((f?2:3)+l),h=0;return d[h++]=Qg,f?d[h++]=l:(d[h++]=Yi|1,d[h++]=l&255),d[h++]=Qi,d[h++]=a,o<0?(d[h++]=0,h+=t.copy(d,h,0,n)):h+=t.copy(d,h,o,n),d[h++]=Qi,d[h++]=u,s<0?(d[h++]=0,t.copy(d,h,n)):t.copy(d,h,n+s),d}Zg.exports={derToJose:rA,joseToDer:oA}});var Wt=X(Sn=>{"use strict";Object.defineProperty(Sn,"__esModule",{value:!0});Sn.LRUCache=void 0;Sn.snakeToCamel=ty;Sn.originalOrCamelOptions=uA;Sn.removeUndefinedValuesInObject=cA;Sn.isValidFile=lA;Sn.getWellKnownCertificateConfigFileLocation=dA;var sA=re("fs"),iA=re("os"),ll=re("path"),aA="certificate_config.json",ey="gcloud";function ty(t){return t.replace(/([_][^_])/g,e=>e.slice(1).toUpperCase())}function uA(t){function e(n){let r=t||{};return r[n]??r[ty(n)]}return{get:e}}var dl=class{capacity;#e=new Map;maxAge;constructor(e){this.capacity=e.capacity,this.maxAge=e.maxAge}#t(e,n){this.#e.delete(e),this.#e.set(e,{value:n,lastAccessed:Date.now()})}set(e,n){this.#t(e,n),this.#n()}get(e){let n=this.#e.get(e);if(n)return this.#t(e,n.value),this.#n(),n.value}#n(){let e=this.maxAge?Date.now()-this.maxAge:0,n=this.#e.entries().next();for(;!n.done&&(this.#e.size>this.capacity||n.value[1].lastAccessed<e);)this.#e.delete(n.value[0]),n=this.#e.entries().next()}};Sn.LRUCache=dl;function cA(t){return Object.entries(t).forEach(([e,n])=>{(n===void 0||n==="undefined")&&delete t[e]}),t}async function lA(t){try{return(await sA.promises.lstat(t)).isFile()}catch{return!1}}function dA(){let t=process.env.CLOUDSDK_CONFIG||(fA()?ll.join(process.env.APPDATA||"",ey):ll.join(process.env.HOME||"",".config",ey));return ll.join(t,aA)}function fA(){return iA.platform().startsWith("win")}});var ny=X((wP,hA)=>{hA.exports={name:"google-auth-library",version:"10.4.0",author:"Google Inc.",description:"Google APIs Authentication Client Library for Node.js",engines:{node:">=18"},main:"./build/src/index.js",types:"./build/src/index.d.ts",repository:"googleapis/google-auth-library-nodejs.git",keywords:["google","api","google apis","client","client library"],dependencies:{"base64-js":"^1.3.0","ecdsa-sig-formatter":"^1.0.11",gaxios:"^7.0.0","gcp-metadata":"^7.0.0","google-logging-utils":"^1.0.0",gtoken:"^8.0.0",jws:"^4.0.0"},devDependencies:{"@types/base64-js":"^1.2.5","@types/jws":"^3.1.0","@types/mocha":"^10.0.10","@types/mv":"^2.1.0","@types/ncp":"^2.0.1","@types/node":"^22.0.0","@types/sinon":"^17.0.0","assert-rejects":"^1.0.0",c8:"^10.0.0",codecov:"^3.0.2",gts:"^6.0.0","is-docker":"^3.0.0",jsdoc:"^4.0.0","jsdoc-fresh":"^4.0.0","jsdoc-region-tag":"^3.0.0",karma:"^6.0.0","karma-chrome-launcher":"^3.0.0","karma-coverage":"^2.0.0","karma-firefox-launcher":"^2.0.0","karma-mocha":"^2.0.0","karma-sourcemap-loader":"^0.4.0","karma-webpack":"^5.0.1",keypair:"^1.0.4",linkinator:"^6.1.2",mocha:"^11.1.0",mv:"^2.1.1",ncp:"^2.0.0",nock:"^14.0.5","null-loader":"^4.0.0",puppeteer:"^24.0.0",sinon:"^21.0.0","ts-loader":"^8.0.0",typescript:"5.8.2",webpack:"^5.21.2","webpack-cli":"^4.0.0"},files:["build/src","!build/src/**/*.map"],scripts:{test:"c8 mocha build/test",clean:"gts clean",prepare:"npm run compile",lint:"gts check --no-inline-config",compile:"tsc -p .",fix:"gts fix",pretest:"npm run compile -- --sourceMap",docs:"jsdoc -c .jsdoc.js","samples-setup":"cd samples/ && npm link ../ && npm run setup && cd ../","samples-test":"cd samples/ && npm link ../ && npm test && cd ../","system-test":"mocha build/system-test --timeout 60000","presystem-test":"npm run compile -- --sourceMap",webpack:"webpack","browser-test":"karma start","docs-test":"linkinator docs","predocs-test":"npm run docs",prelint:"cd samples; npm link ../; npm install"},license:"Apache-2.0"}});var fl=X(Jn=>{"use strict";Object.defineProperty(Jn,"__esModule",{value:!0});Jn.USER_AGENT=Jn.PRODUCT_NAME=Jn.pkg=void 0;var ry=ny();Jn.pkg=ry;var oy="google-api-nodejs-client";Jn.PRODUCT_NAME=oy;var pA=`${oy}/${ry.version}`;Jn.USER_AGENT=pA});var bt=X(Gt=>{"use strict";Object.defineProperty(Gt,"__esModule",{value:!0});Gt.AuthClient=Gt.DEFAULT_EAGER_REFRESH_THRESHOLD_MILLIS=Gt.DEFAULT_UNIVERSE=void 0;var mA=re("events"),hl=Xe(),gA=Wt(),yA=Xc(),pl=fl();Gt.DEFAULT_UNIVERSE="googleapis.com";Gt.DEFAULT_EAGER_REFRESH_THRESHOLD_MILLIS=300*1e3;var ml=class t extends mA.EventEmitter{apiKey;projectId;quotaProjectId;transporter;credentials={};eagerRefreshThresholdMillis=Gt.DEFAULT_EAGER_REFRESH_THRESHOLD_MILLIS;forceRefreshOnFailure=!1;universeDomain=Gt.DEFAULT_UNIVERSE;static RequestMethodNameSymbol=Symbol("request method name");static RequestLogIdSymbol=Symbol("request log id");constructor(e={}){super();let n=(0,gA.originalOrCamelOptions)(e);this.apiKey=e.apiKey,this.projectId=n.get("project_id")??null,this.quotaProjectId=n.get("quota_project_id"),this.credentials=n.get("credentials")??{},this.universeDomain=n.get("universe_domain")??Gt.DEFAULT_UNIVERSE,this.transporter=e.transporter??new hl.Gaxios(e.transporterOptions),n.get("useAuthRequestParameters")!==!1&&(this.transporter.interceptors.request.add(t.DEFAULT_REQUEST_INTERCEPTOR),this.transporter.interceptors.response.add(t.DEFAULT_RESPONSE_INTERCEPTOR)),e.eagerRefreshThresholdMillis&&(this.eagerRefreshThresholdMillis=e.eagerRefreshThresholdMillis),this.forceRefreshOnFailure=e.forceRefreshOnFailure??!1}fetch(...e){let n=e[0],r=e[1],o,s=new Headers;return typeof n=="string"?o=new URL(n):n instanceof URL?o=n:n&&n.url&&(o=new URL(n.url)),n&&typeof n=="object"&&"headers"in n&&hl.Gaxios.mergeHeaders(s,n.headers),r&&hl.Gaxios.mergeHeaders(s,new Headers(r.headers)),typeof n=="object"&&!(n instanceof URL)?this.request({...r,...n,headers:s,url:o}):this.request({...r,headers:s,url:o})}setCredentials(e){this.credentials=e}addSharedMetadataHeaders(e){return!e.has("x-goog-user-project")&&this.quotaProjectId&&e.set("x-goog-user-project",this.quotaProjectId),e}addUserProjectAndAuthHeaders(e,n){let r=n.get("x-goog-user-project"),o=n.get("authorization");return r&&e.set("x-goog-user-project",r),o&&e.set("authorization",o),e}static log=(0,yA.log)("auth");static DEFAULT_REQUEST_INTERCEPTOR={resolved:async e=>{if(!e.headers.has("x-goog-api-client")){let r=process.version.replace(/^v/,"");e.headers.set("x-goog-api-client",`gl-node/${r}`)}let n=e.headers.get("User-Agent");n?n.includes(`${pl.PRODUCT_NAME}/`)||e.headers.set("User-Agent",`${n} ${pl.USER_AGENT}`):e.headers.set("User-Agent",pl.USER_AGENT);try{let r=e,o=r[t.RequestMethodNameSymbol],s=`${Math.floor(Math.random()*1e3)}`;r[t.RequestLogIdSymbol]=s;let a={url:e.url,headers:e.headers};o?t.log.info("%s [%s] request %j",o,s,a):t.log.info("[%s] request %j",s,a)}catch{}return e}};static DEFAULT_RESPONSE_INTERCEPTOR={resolved:async e=>{try{let n=e.config,r=n[t.RequestMethodNameSymbol],o=n[t.RequestLogIdSymbol];r?t.log.info("%s [%s] response %j",r,o,e.data):t.log.info("[%s] response %j",o,e.data)}catch{}return e},rejected:async e=>{try{let n=e.config,r=n[t.RequestMethodNameSymbol],o=n[t.RequestLogIdSymbol];r?t.log.info("%s [%s] error %j",r,o,e.response?.data):t.log.error("[%s] error %j",o,e.response?.data)}catch{}throw e}};static setMethodName(e,n){try{let r=e;r[t.RequestMethodNameSymbol]=n}catch{}}static get RETRY_CONFIG(){return{retry:!0,retryConfig:{httpMethodsToRetry:["GET","PUT","POST","HEAD","OPTIONS","DELETE"]}}}};Gt.AuthClient=ml});var yl=X(Xi=>{"use strict";Object.defineProperty(Xi,"__esModule",{value:!0});Xi.LoginTicket=void 0;var gl=class{envelope;payload;constructor(e,n){this.envelope=e,this.payload=n}getEnvelope(){return this.envelope}getPayload(){return this.payload}getUserId(){let e=this.getPayload();return e&&e.sub?e.sub:null}getAttributes(){return{envelope:this.getEnvelope(),payload:this.getPayload()}}};Xi.LoginTicket=gl});var _r=X(nn=>{"use strict";Object.defineProperty(nn,"__esModule",{value:!0});nn.OAuth2Client=nn.ClientAuthentication=nn.CertificateFormat=nn.CodeChallengeMethod=void 0;var sy=Xe(),_A=re("querystring"),bA=re("stream"),CA=cl(),iy=Wt(),_l=Qo(),oo=bt(),wA=yl(),ay;(function(t){t.Plain="plain",t.S256="S256"})(ay||(nn.CodeChallengeMethod=ay={}));var vn;(function(t){t.PEM="PEM",t.JWK="JWK"})(vn||(nn.CertificateFormat=vn={}));var Xo;(function(t){t.ClientSecretPost="ClientSecretPost",t.ClientSecretBasic="ClientSecretBasic",t.None="None"})(Xo||(nn.ClientAuthentication=Xo={}));var bl=class t extends oo.AuthClient{redirectUri;certificateCache={};certificateExpiry=null;certificateCacheFormat=vn.PEM;refreshTokenPromises=new Map;endpoints;issuers;clientAuthentication;_clientId;_clientSecret;refreshHandler;constructor(e={},n,r){super(typeof e=="object"?e:{}),typeof e!="object"&&(e={clientId:e,clientSecret:n,redirectUri:r}),this._clientId=e.clientId||e.client_id,this._clientSecret=e.clientSecret||e.client_secret,this.redirectUri=e.redirectUri||e.redirect_uris?.[0],this.endpoints={tokenInfoUrl:"https://oauth2.googleapis.com/tokeninfo",oauth2AuthBaseUrl:"https://accounts.google.com/o/oauth2/v2/auth",oauth2TokenUrl:"https://oauth2.googleapis.com/token",oauth2RevokeUrl:"https://oauth2.googleapis.com/revoke",oauth2FederatedSignonPemCertsUrl:"https://www.googleapis.com/oauth2/v1/certs",oauth2FederatedSignonJwkCertsUrl:"https://www.googleapis.com/oauth2/v3/certs",oauth2IapPublicKeyUrl:"https://www.gstatic.com/iap/verify/public_key",...e.endpoints},this.clientAuthentication=e.clientAuthentication||Xo.ClientSecretPost,this.issuers=e.issuers||["accounts.google.com","https://accounts.google.com",this.universeDomain]}static GOOGLE_TOKEN_INFO_URL="https://oauth2.googleapis.com/tokeninfo";static CLOCK_SKEW_SECS_=300;static DEFAULT_MAX_TOKEN_LIFETIME_SECS_=86400;generateAuthUrl(e={}){if(e.code_challenge_method&&!e.code_challenge)throw new Error("If a code_challenge_method is provided, code_challenge must be included.");return e.response_type=e.response_type||"code",e.client_id=e.client_id||this._clientId,e.redirect_uri=e.redirect_uri||this.redirectUri,Array.isArray(e.scope)&&(e.scope=e.scope.join(" ")),this.endpoints.oauth2AuthBaseUrl.toString()+"?"+_A.stringify(e)}generateCodeVerifier(){throw new Error("generateCodeVerifier is removed, please use generateCodeVerifierAsync instead.")}async generateCodeVerifierAsync(){let e=(0,_l.createCrypto)(),r=e.randomBytesBase64(96).replace(/\+/g,"~").replace(/=/g,"_").replace(/\//g,"-"),s=(await e.sha256DigestBase64(r)).split("=")[0].replace(/\+/g,"-").replace(/\//g,"_");return{codeVerifier:r,codeChallenge:s}}getToken(e,n){let r=typeof e=="string"?{code:e}:e;if(n)this.getTokenAsync(r).then(o=>n(null,o.tokens,o.res),o=>n(o,null,o.response));else return this.getTokenAsync(r)}async getTokenAsync(e){let n=this.endpoints.oauth2TokenUrl.toString(),r=new Headers,o={client_id:e.client_id||this._clientId,code_verifier:e.codeVerifier,code:e.code,grant_type:"authorization_code",redirect_uri:e.redirect_uri||this.redirectUri};if(this.clientAuthentication===Xo.ClientSecretBasic){let l=Buffer.from(`${this._clientId}:${this._clientSecret}`);r.set("authorization",`Basic ${l.toString("base64")}`)}this.clientAuthentication===Xo.ClientSecretPost&&(o.client_secret=this._clientSecret);let s={...t.RETRY_CONFIG,method:"POST",url:n,data:new URLSearchParams((0,iy.removeUndefinedValuesInObject)(o)),headers:r};oo.AuthClient.setMethodName(s,"getTokenAsync");let a=await this.transporter.request(s),u=a.data;return a.data&&a.data.expires_in&&(u.expiry_date=new Date().getTime()+a.data.expires_in*1e3,delete u.expires_in),this.emit("tokens",u),{tokens:u,res:a}}async refreshToken(e){if(!e)return this.refreshTokenNoCache(e);if(this.refreshTokenPromises.has(e))return this.refreshTokenPromises.get(e);let n=this.refreshTokenNoCache(e).then(r=>(this.refreshTokenPromises.delete(e),r),r=>{throw this.refreshTokenPromises.delete(e),r});return this.refreshTokenPromises.set(e,n),n}async refreshTokenNoCache(e){if(!e)throw new Error("No refresh token is set.");let n=this.endpoints.oauth2TokenUrl.toString(),r={refresh_token:e,client_id:this._clientId,client_secret:this._clientSecret,grant_type:"refresh_token"},o;try{let a={...t.RETRY_CONFIG,method:"POST",url:n,data:new URLSearchParams((0,iy.removeUndefinedValuesInObject)(r))};oo.AuthClient.setMethodName(a,"refreshTokenNoCache"),o=await this.transporter.request(a)}catch(a){throw a instanceof sy.GaxiosError&&a.message==="invalid_grant"&&a.response?.data&&/ReAuth/i.test(a.response.data.error_description)&&(a.message=JSON.stringify(a.response.data)),a}let s=o.data;return o.data&&o.data.expires_in&&(s.expiry_date=new Date().getTime()+o.data.expires_in*1e3,delete s.expires_in),this.emit("tokens",s),{tokens:s,res:o}}refreshAccessToken(e){if(e)this.refreshAccessTokenAsync().then(n=>e(null,n.credentials,n.res),e);else return this.refreshAccessTokenAsync()}async refreshAccessTokenAsync(){let e=await this.refreshToken(this.credentials.refresh_token),n=e.tokens;return n.refresh_token=this.credentials.refresh_token,this.credentials=n,{credentials:this.credentials,res:e.res}}getAccessToken(e){if(e)this.getAccessTokenAsync().then(n=>e(null,n.token,n.res),e);else return this.getAccessTokenAsync()}async getAccessTokenAsync(){if(!this.credentials.access_token||this.isTokenExpiring()){if(!this.credentials.refresh_token)if(this.refreshHandler){let r=await this.processAndValidateRefreshHandler();if(r?.access_token)return this.setCredentials(r),{token:this.credentials.access_token}}else throw new Error("No refresh token or refresh handler callback is set.");let n=await this.refreshAccessTokenAsync();if(!n.credentials||n.credentials&&!n.credentials.access_token)throw new Error("Could not refresh access token.");return{token:n.credentials.access_token,res:n.res}}else return{token:this.credentials.access_token}}async getRequestHeaders(e){return(await this.getRequestMetadataAsync(e)).headers}async getRequestMetadataAsync(e){let n=this.credentials;if(!n.access_token&&!n.refresh_token&&!this.apiKey&&!this.refreshHandler)throw new Error("No access, refresh token, API key or refresh handler callback is set.");if(n.access_token&&!this.isTokenExpiring()){n.token_type=n.token_type||"Bearer";let u=new Headers({authorization:n.token_type+" "+n.access_token});return{headers:this.addSharedMetadataHeaders(u)}}if(this.refreshHandler){let u=await this.processAndValidateRefreshHandler();if(u?.access_token){this.setCredentials(u);let l=new Headers({authorization:"Bearer "+this.credentials.access_token});return{headers:this.addSharedMetadataHeaders(l)}}}if(this.apiKey)return{headers:new Headers({"X-Goog-Api-Key":this.apiKey})};let r=null,o=null;try{r=await this.refreshToken(n.refresh_token),o=r.tokens}catch(u){let l=u;throw l.response&&(l.response.status===403||l.response.status===404)&&(l.message=`Could not refresh access token: ${l.message}`),l}let s=this.credentials;s.token_type=s.token_type||"Bearer",o.refresh_token=s.refresh_token,this.credentials=o;let a=new Headers({authorization:s.token_type+" "+o.access_token});return{headers:this.addSharedMetadataHeaders(a),res:r.res}}static getRevokeTokenUrl(e){return new t().getRevokeTokenURL(e).toString()}getRevokeTokenURL(e){let n=new URL(this.endpoints.oauth2RevokeUrl);return n.searchParams.append("token",e),n}revokeToken(e,n){let r={...t.RETRY_CONFIG,url:this.getRevokeTokenURL(e).toString(),method:"POST"};if(oo.AuthClient.setMethodName(r,"revokeToken"),n)this.transporter.request(r).then(o=>n(null,o),n);else return this.transporter.request(r)}revokeCredentials(e){if(e)this.revokeCredentialsAsync().then(n=>e(null,n),e);else return this.revokeCredentialsAsync()}async revokeCredentialsAsync(){let e=this.credentials.access_token;if(this.credentials={},e)return this.revokeToken(e);throw new Error("No access token to revoke.")}request(e,n){if(n)this.requestAsync(e).then(r=>n(null,r),r=>n(r,r.response));else return this.requestAsync(e)}async requestAsync(e,n=!1){try{let r=await this.getRequestMetadataAsync();return e.headers=sy.Gaxios.mergeHeaders(e.headers),this.addUserProjectAndAuthHeaders(e.headers,r.headers),this.apiKey&&e.headers.set("X-Goog-Api-Key",this.apiKey),await this.transporter.request(e)}catch(r){let o=r.response;if(o){let s=o.status,a=this.credentials&&this.credentials.access_token&&this.credentials.refresh_token&&(!this.credentials.expiry_date||this.forceRefreshOnFailure),u=this.credentials&&this.credentials.access_token&&!this.credentials.refresh_token&&(!this.credentials.expiry_date||this.forceRefreshOnFailure)&&this.refreshHandler,l=o.config.data instanceof bA.Readable,f=s===401||s===403;if(!n&&f&&!l&&a)return await this.refreshAccessTokenAsync(),this.requestAsync(e,!0);if(!n&&f&&!l&&u){let d=await this.processAndValidateRefreshHandler();return d?.access_token&&this.setCredentials(d),this.requestAsync(e,!0)}}throw r}}verifyIdToken(e,n){if(n&&typeof n!="function")throw new Error("This method accepts an options object as the first parameter, which includes the idToken, audience, and maxExpiry.");if(n)this.verifyIdTokenAsync(e).then(r=>n(null,r),n);else return this.verifyIdTokenAsync(e)}async verifyIdTokenAsync(e){if(!e.idToken)throw new Error("The verifyIdToken method requires an ID Token");let n=await this.getFederatedSignonCertsAsync();return await this.verifySignedJwtWithCertsAsync(e.idToken,n.certs,e.audience,this.issuers,e.maxExpiry)}async getTokenInfo(e){let{data:n}=await this.transporter.request({...t.RETRY_CONFIG,method:"POST",headers:{"content-type":"application/x-www-form-urlencoded;charset=UTF-8",authorization:`Bearer ${e}`},url:this.endpoints.tokenInfoUrl.toString()}),r=Object.assign({expiry_date:new Date().getTime()+n.expires_in*1e3,scopes:n.scope.split(" ")},n);return delete r.expires_in,delete r.scope,r}getFederatedSignonCerts(e){if(e)this.getFederatedSignonCertsAsync().then(n=>e(null,n.certs,n.res),e);else return this.getFederatedSignonCertsAsync()}async getFederatedSignonCertsAsync(){let e=new Date().getTime(),n=(0,_l.hasBrowserCrypto)()?vn.JWK:vn.PEM;if(this.certificateExpiry&&e<this.certificateExpiry.getTime()&&this.certificateCacheFormat===n)return{certs:this.certificateCache,format:n};let r,o;switch(n){case vn.PEM:o=this.endpoints.oauth2FederatedSignonPemCertsUrl.toString();break;case vn.JWK:o=this.endpoints.oauth2FederatedSignonJwkCertsUrl.toString();break;default:throw new Error(`Unsupported certificate format ${n}`)}try{let f={...t.RETRY_CONFIG,url:o};oo.AuthClient.setMethodName(f,"getFederatedSignonCertsAsync"),r=await this.transporter.request(f)}catch(f){throw f instanceof Error&&(f.message=`Failed to retrieve verification certificates: ${f.message}`),f}let s=r?.headers.get("cache-control"),a=-1;if(s){let f=/max-age=(?<maxAge>[0-9]+)/.exec(s)?.groups?.maxAge;f&&(a=Number(f)*1e3)}let u={};switch(n){case vn.PEM:u=r.data;break;case vn.JWK:for(let f of r.data.keys)u[f.kid]=f;break;default:throw new Error(`Unsupported certificate format ${n}`)}let l=new Date;return this.certificateExpiry=a===-1?null:new Date(l.getTime()+a),this.certificateCache=u,this.certificateCacheFormat=n,{certs:u,format:n,res:r}}getIapPublicKeys(e){if(e)this.getIapPublicKeysAsync().then(n=>e(null,n.pubkeys,n.res),e);else return this.getIapPublicKeysAsync()}async getIapPublicKeysAsync(){let e,n=this.endpoints.oauth2IapPublicKeyUrl.toString();try{let r={...t.RETRY_CONFIG,url:n};oo.AuthClient.setMethodName(r,"getIapPublicKeysAsync"),e=await this.transporter.request(r)}catch(r){throw r instanceof Error&&(r.message=`Failed to retrieve verification certificates: ${r.message}`),r}return{pubkeys:e.data,res:e}}verifySignedJwtWithCerts(){throw new Error("verifySignedJwtWithCerts is removed, please use verifySignedJwtWithCertsAsync instead.")}async verifySignedJwtWithCertsAsync(e,n,r,o,s){let a=(0,_l.createCrypto)();s||(s=t.DEFAULT_MAX_TOKEN_LIFETIME_SECS_);let u=e.split(".");if(u.length!==3)throw new Error("Wrong number of segments in token: "+e);let l=u[0]+"."+u[1],f=u[2],d,h;try{d=JSON.parse(a.decodeBase64StringUtf8(u[0]))}catch(b){throw b instanceof Error&&(b.message=`Can't parse token envelope: ${u[0]}': ${b.message}`),b}if(!d)throw new Error("Can't parse token envelope: "+u[0]);try{h=JSON.parse(a.decodeBase64StringUtf8(u[1]))}catch(b){throw b instanceof Error&&(b.message=`Can't parse token payload '${u[0]}`),b}if(!h)throw new Error("Can't parse token payload: "+u[1]);if(!Object.prototype.hasOwnProperty.call(n,d.kid))throw new Error("No pem found for envelope: "+JSON.stringify(d));let m=n[d.kid];if(d.alg==="ES256"&&(f=CA.joseToDer(f,"ES256").toString("base64")),!await a.verify(m,l,f))throw new Error("Invalid token signature: "+e);if(!h.iat)throw new Error("No issue time in token: "+JSON.stringify(h));if(!h.exp)throw new Error("No expiration time in token: "+JSON.stringify(h));let w=Number(h.iat);if(isNaN(w))throw new Error("iat field using invalid format");let y=Number(h.exp);if(isNaN(y))throw new Error("exp field using invalid format");let g=new Date().getTime()/1e3;if(y>=g+s)throw new Error("Expiration time too far in future: "+JSON.stringify(h));let _=w-t.CLOCK_SKEW_SECS_,E=y+t.CLOCK_SKEW_SECS_;if(g<_)throw new Error("Token used too early, "+g+" < "+_+": "+JSON.stringify(h));if(g>E)throw new Error("Token used too late, "+g+" > "+E+": "+JSON.stringify(h));if(o&&o.indexOf(h.iss)<0)throw new Error("Invalid issuer, expected one of ["+o+"], but got "+h.iss);if(typeof r<"u"&&r!==null){let b=h.aud,S=!1;if(r.constructor===Array?S=r.indexOf(b)>-1:S=b===r,!S)throw new Error("Wrong recipient, payload audience != requiredAudience")}return new wA.LoginTicket(d,h)}async processAndValidateRefreshHandler(){if(this.refreshHandler){let e=await this.refreshHandler();if(!e.access_token)throw new Error("No access token is returned by the refreshHandler callback.");return e}}isTokenExpiring(){let e=this.credentials.expiry_date;return e?e<=new Date().getTime()+this.eagerRefreshThresholdMillis:!1}};nn.OAuth2Client=bl});var wl=X(Zi=>{"use strict";Object.defineProperty(Zi,"__esModule",{value:!0});Zi.Compute=void 0;var EA=Xe(),uy=Yo(),kA=_r(),Cl=class extends kA.OAuth2Client{serviceAccountEmail;scopes;constructor(e={}){super(e),this.credentials={expiry_date:1,refresh_token:"compute-placeholder"},this.serviceAccountEmail=e.serviceAccountEmail||"default",this.scopes=Array.isArray(e.scopes)?e.scopes:e.scopes?[e.scopes]:[]}async refreshTokenNoCache(){let e=`service-accounts/${this.serviceAccountEmail}/token`,n;try{let o={property:e};this.scopes.length>0&&(o.params={scopes:this.scopes.join(",")}),n=await uy.instance(o)}catch(o){throw o instanceof EA.GaxiosError&&(o.message=`Could not refresh access token: ${o.message}`,this.wrapError(o)),o}let r=n;return n&&n.expires_in&&(r.expiry_date=new Date().getTime()+n.expires_in*1e3,delete r.expires_in),this.emit("tokens",r),{tokens:r,res:null}}async fetchIdToken(e){let n=`service-accounts/${this.serviceAccountEmail}/identity?format=full&audience=${e}`,r;try{let o={property:n};r=await uy.instance(o)}catch(o){throw o instanceof Error&&(o.message=`Could not fetch ID token: ${o.message}`),o}return r}wrapError(e){let n=e.response;n&&n.status&&(e.status=n.status,n.status===403?e.message="A Forbidden error was returned while attempting to retrieve an access token for the Compute Engine built-in service account. This may be because the Compute Engine instance does not have the correct permission scopes specified: "+e.message:n.status===404&&(e.message="A Not Found error was returned while attempting to retrieve an accesstoken for the Compute Engine built-in service account. This may be because the Compute Engine instance does not have any permission scopes specified: "+e.message))}};Zi.Compute=Cl});var kl=X(ea=>{"use strict";Object.defineProperty(ea,"__esModule",{value:!0});ea.IdTokenClient=void 0;var AA=_r(),El=class extends AA.OAuth2Client{targetAudience;idTokenProvider;constructor(e){super(e),this.targetAudience=e.targetAudience,this.idTokenProvider=e.idTokenProvider}async getRequestMetadataAsync(){if(!this.credentials.id_token||!this.credentials.expiry_date||this.isTokenExpiring()){let n=await this.idTokenProvider.fetchIdToken(this.targetAudience);this.credentials={id_token:n,expiry_date:this.getIdTokenExpiryDate(n)}}return{headers:new Headers({authorization:"Bearer "+this.credentials.id_token})}}getIdTokenExpiryDate(e){let n=e.split(".")[1];if(n)return JSON.parse(Buffer.from(n,"base64").toString("ascii")).exp*1e3}};ea.IdTokenClient=El});var Al=X(so=>{"use strict";Object.defineProperty(so,"__esModule",{value:!0});so.GCPEnv=void 0;so.clear=SA;so.getEnv=vA;var cy=Yo(),rn;(function(t){t.APP_ENGINE="APP_ENGINE",t.KUBERNETES_ENGINE="KUBERNETES_ENGINE",t.CLOUD_FUNCTIONS="CLOUD_FUNCTIONS",t.COMPUTE_ENGINE="COMPUTE_ENGINE",t.CLOUD_RUN="CLOUD_RUN",t.CLOUD_RUN_JOBS="CLOUD_RUN_JOBS",t.NONE="NONE"})(rn||(so.GCPEnv=rn={}));var Zo;function SA(){Zo=void 0}async function vA(){return Zo||(Zo=TA(),Zo)}async function TA(){let t=rn.NONE;return DA()?t=rn.APP_ENGINE:RA()?t=rn.CLOUD_FUNCTIONS:await FA()?await PA()?t=rn.KUBERNETES_ENGINE:xA()?t=rn.CLOUD_RUN:OA()?t=rn.CLOUD_RUN_JOBS:t=rn.COMPUTE_ENGINE:t=rn.NONE,t}function DA(){return!!(process.env.GAE_SERVICE||process.env.GAE_MODULE_NAME)}function RA(){return!!(process.env.FUNCTION_NAME||process.env.FUNCTION_TARGET)}function xA(){return!!process.env.K_CONFIGURATION}function OA(){return!!process.env.CLOUD_RUN_JOB}async function PA(){try{return await cy.instance("attributes/cluster-name"),!0}catch{return!1}}async function FA(){return cy.isAvailable()}});var Sl=X((RP,ly)=>{var ta=ro().Buffer,IA=re("stream"),NA=re("util");function na(t){if(this.buffer=null,this.writable=!0,this.readable=!0,!t)return this.buffer=ta.alloc(0),this;if(typeof t.pipe=="function")return this.buffer=ta.alloc(0),t.pipe(this),this;if(t.length||typeof t=="object")return this.buffer=t,this.writable=!1,process.nextTick(function(){this.emit("end",t),this.readable=!1,this.emit("close")}.bind(this)),this;throw new TypeError("Unexpected data type ("+typeof t+")")}NA.inherits(na,IA);na.prototype.write=function(e){this.buffer=ta.concat([this.buffer,ta.from(e)]),this.emit("data",e)};na.prototype.end=function(e){e&&this.write(e),this.emit("end",e),this.emit("close"),this.writable=!1,this.readable=!1};ly.exports=na});var fy=X((xP,dy)=>{"use strict";var es=re("buffer").Buffer,vl=re("buffer").SlowBuffer;dy.exports=ra;function ra(t,e){if(!es.isBuffer(t)||!es.isBuffer(e)||t.length!==e.length)return!1;for(var n=0,r=0;r<t.length;r++)n|=t[r]^e[r];return n===0}ra.install=function(){es.prototype.equal=vl.prototype.equal=function(e){return ra(this,e)}};var BA=es.prototype.equal,MA=vl.prototype.equal;ra.restore=function(){es.prototype.equal=BA,vl.prototype.equal=MA}});var xl=X((OP,wy)=>{var ao=ro().Buffer,Ot=re("crypto"),py=cl(),hy=re("util"),LA=`"%s" is not a valid algorithm.
|
|
51
|
-
Supported algorithms are:
|
|
52
|
-
"HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512" and "none".`,ts="secret must be a string or buffer",io="key must be a string or a buffer",jA="key must be a string, a buffer or an object",Dl=typeof Ot.createPublicKey=="function";Dl&&(io+=" or a KeyObject",ts+="or a KeyObject");function my(t){if(!ao.isBuffer(t)&&typeof t!="string"&&(!Dl||typeof t!="object"||typeof t.type!="string"||typeof t.asymmetricKeyType!="string"||typeof t.export!="function"))throw Jt(io)}function gy(t){if(!ao.isBuffer(t)&&typeof t!="string"&&typeof t!="object")throw Jt(jA)}function UA(t){if(!ao.isBuffer(t)){if(typeof t=="string")return t;if(!Dl||typeof t!="object"||t.type!=="secret"||typeof t.export!="function")throw Jt(ts)}}function Rl(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function yy(t){t=t.toString();var e=4-t.length%4;if(e!==4)for(var n=0;n<e;++n)t+="=";return t.replace(/\-/g,"+").replace(/_/g,"/")}function Jt(t){var e=[].slice.call(arguments,1),n=hy.format.bind(hy,t).apply(null,e);return new TypeError(n)}function $A(t){return ao.isBuffer(t)||typeof t=="string"}function ns(t){return $A(t)||(t=JSON.stringify(t)),t}function _y(t){return function(n,r){UA(r),n=ns(n);var o=Ot.createHmac("sha"+t,r),s=(o.update(n),o.digest("base64"));return Rl(s)}}var Tl,qA="timingSafeEqual"in Ot?function(e,n){return e.byteLength!==n.byteLength?!1:Ot.timingSafeEqual(e,n)}:function(e,n){return Tl||(Tl=fy()),Tl(e,n)};function zA(t){return function(n,r,o){var s=_y(t)(n,o);return qA(ao.from(r),ao.from(s))}}function by(t){return function(n,r){gy(r),n=ns(n);var o=Ot.createSign("RSA-SHA"+t),s=(o.update(n),o.sign(r,"base64"));return Rl(s)}}function Cy(t){return function(n,r,o){my(o),n=ns(n),r=yy(r);var s=Ot.createVerify("RSA-SHA"+t);return s.update(n),s.verify(o,r,"base64")}}function HA(t){return function(n,r){gy(r),n=ns(n);var o=Ot.createSign("RSA-SHA"+t),s=(o.update(n),o.sign({key:r,padding:Ot.constants.RSA_PKCS1_PSS_PADDING,saltLength:Ot.constants.RSA_PSS_SALTLEN_DIGEST},"base64"));return Rl(s)}}function WA(t){return function(n,r,o){my(o),n=ns(n),r=yy(r);var s=Ot.createVerify("RSA-SHA"+t);return s.update(n),s.verify({key:o,padding:Ot.constants.RSA_PKCS1_PSS_PADDING,saltLength:Ot.constants.RSA_PSS_SALTLEN_DIGEST},r,"base64")}}function GA(t){var e=by(t);return function(){var r=e.apply(null,arguments);return r=py.derToJose(r,"ES"+t),r}}function JA(t){var e=Cy(t);return function(r,o,s){o=py.joseToDer(o,"ES"+t).toString("base64");var a=e(r,o,s);return a}}function VA(){return function(){return""}}function KA(){return function(e,n){return n===""}}wy.exports=function(e){var n={hs:_y,rs:by,ps:HA,es:GA,none:VA},r={hs:zA,rs:Cy,ps:WA,es:JA,none:KA},o=e.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/);if(!o)throw Jt(LA,e);var s=(o[1]||o[3]).toLowerCase(),a=o[2];return{sign:n[s](a),verify:r[s](a)}}});var Ol=X((PP,Ey)=>{var YA=re("buffer").Buffer;Ey.exports=function(e){return typeof e=="string"?e:typeof e=="number"||YA.isBuffer(e)?e.toString():JSON.stringify(e)}});var Dy=X((FP,Ty)=>{var QA=ro().Buffer,ky=Sl(),XA=xl(),ZA=re("stream"),Ay=Ol(),Pl=re("util");function Sy(t,e){return QA.from(t,e).toString("base64").replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function eS(t,e,n){n=n||"utf8";var r=Sy(Ay(t),"binary"),o=Sy(Ay(e),n);return Pl.format("%s.%s",r,o)}function vy(t){var e=t.header,n=t.payload,r=t.secret||t.privateKey,o=t.encoding,s=XA(e.alg),a=eS(e,n,o),u=s.sign(a,r);return Pl.format("%s.%s",a,u)}function oa(t){var e=t.secret||t.privateKey||t.key,n=new ky(e);this.readable=!0,this.header=t.header,this.encoding=t.encoding,this.secret=this.privateKey=this.key=n,this.payload=new ky(t.payload),this.secret.once("close",function(){!this.payload.writable&&this.readable&&this.sign()}.bind(this)),this.payload.once("close",function(){!this.secret.writable&&this.readable&&this.sign()}.bind(this))}Pl.inherits(oa,ZA);oa.prototype.sign=function(){try{var e=vy({header:this.header,payload:this.payload.buffer,secret:this.secret.buffer,encoding:this.encoding});return this.emit("done",e),this.emit("data",e),this.emit("end"),this.readable=!1,e}catch(n){this.readable=!1,this.emit("error",n),this.emit("close")}};oa.sign=vy;Ty.exports=oa});var Ly=X((IP,My)=>{var xy=ro().Buffer,Ry=Sl(),tS=xl(),nS=re("stream"),Oy=Ol(),rS=re("util"),oS=/^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/;function sS(t){return Object.prototype.toString.call(t)==="[object Object]"}function iS(t){if(sS(t))return t;try{return JSON.parse(t)}catch{return}}function Py(t){var e=t.split(".",1)[0];return iS(xy.from(e,"base64").toString("binary"))}function aS(t){return t.split(".",2).join(".")}function Fy(t){return t.split(".")[2]}function uS(t,e){e=e||"utf8";var n=t.split(".")[1];return xy.from(n,"base64").toString(e)}function Iy(t){return oS.test(t)&&!!Py(t)}function Ny(t,e,n){if(!e){var r=new Error("Missing algorithm parameter for jws.verify");throw r.code="MISSING_ALGORITHM",r}t=Oy(t);var o=Fy(t),s=aS(t),a=tS(e);return a.verify(s,o,n)}function By(t,e){if(e=e||{},t=Oy(t),!Iy(t))return null;var n=Py(t);if(!n)return null;var r=uS(t);return(n.typ==="JWT"||e.json)&&(r=JSON.parse(r,e.encoding)),{header:n,payload:r,signature:Fy(t)}}function uo(t){t=t||{};var e=t.secret||t.publicKey||t.key,n=new Ry(e);this.readable=!0,this.algorithm=t.algorithm,this.encoding=t.encoding,this.secret=this.publicKey=this.key=n,this.signature=new Ry(t.signature),this.secret.once("close",function(){!this.signature.writable&&this.readable&&this.verify()}.bind(this)),this.signature.once("close",function(){!this.secret.writable&&this.readable&&this.verify()}.bind(this))}rS.inherits(uo,nS);uo.prototype.verify=function(){try{var e=Ny(this.signature.buffer,this.algorithm,this.key.buffer),n=By(this.signature.buffer,this.encoding);return this.emit("done",e,n),this.emit("data",e),this.emit("end"),this.readable=!1,e}catch(r){this.readable=!1,this.emit("error",r),this.emit("close")}};uo.decode=By;uo.isValid=Iy;uo.verify=Ny;My.exports=uo});var Fl=X(Vn=>{var jy=Dy(),sa=Ly(),cS=["HS256","HS384","HS512","RS256","RS384","RS512","PS256","PS384","PS512","ES256","ES384","ES512"];Vn.ALGORITHMS=cS;Vn.sign=jy.sign;Vn.verify=sa.verify;Vn.decode=sa.decode;Vn.isValid=sa.isValid;Vn.createSign=function(e){return new jy(e)};Vn.createVerify=function(e){return new sa(e)}});var e0=X(aa=>{"use strict";Object.defineProperty(aa,"__esModule",{value:!0});aa.GoogleToken=void 0;var Uy=ia(re("fs")),lS=Xe(),dS=ia(Fl()),fS=ia(re("path")),hS=re("util");function ia(t,e){if(typeof WeakMap=="function")var n=new WeakMap,r=new WeakMap;return(ia=function(s,a){if(!a&&s&&s.__esModule)return s;var u,l,f={__proto__:null,default:s};if(s===null||Tn(s)!="object"&&typeof s!="function")return f;if(u=a?r:n){if(u.has(s))return u.get(s);u.set(s,f)}for(var d in s)d!=="default"&&{}.hasOwnProperty.call(s,d)&&((l=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,d))&&(l.get||l.set)?u(f,d,l):f[d]=s[d]);return f})(t,e)}function Tn(t){"@babel/helpers - typeof";return Tn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Tn(t)}function pS(t,e){Ky(t,e),e.add(t)}function mS(t,e,n){Ky(t,e),e.set(t,n)}function Ky(t,e){if(e.has(t))throw new TypeError("Cannot initialize the same private elements twice on an object")}function $y(t,e,n){return t.set(Vt(t,e),n),n}function qy(t,e){return t.get(Vt(t,e))}function Vt(t,e,n){if(typeof t=="function"?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function zy(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,Xy(r.key),r)}}function Yy(t,e,n){return e&&zy(t.prototype,e),n&&zy(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function Qy(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function gS(t,e,n){return e=is(e),yS(t,jl()?Reflect.construct(e,n||[],is(t).constructor):e.apply(t,n))}function yS(t,e){if(e&&(Tn(e)=="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return _S(t)}function _S(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function bS(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&ss(t,e)}function Il(t){var e=typeof Map=="function"?new Map:void 0;return Il=function(r){if(r===null||!wS(r))return r;if(typeof r!="function")throw new TypeError("Super expression must either be null or a function");if(e!==void 0){if(e.has(r))return e.get(r);e.set(r,o)}function o(){return CS(r,arguments,is(this).constructor)}return o.prototype=Object.create(r.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),ss(o,r)},Il(t)}function CS(t,e,n){if(jl())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var o=new(t.bind.apply(t,r));return n&&ss(o,n.prototype),o}function jl(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(jl=function(){return!!t})()}function wS(t){try{return Function.toString.call(t).indexOf("[native code]")!==-1}catch{return typeof t=="function"}}function ss(t,e){return ss=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(n,r){return n.__proto__=r,n},ss(t,e)}function is(t){return is=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},is(t)}function Ct(t,e,n){return(e=Xy(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Xy(t){var e=ES(t,"string");return Tn(e)=="symbol"?e:e+""}function ES(t,e){if(Tn(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e||"default");if(Tn(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function Et(){var t,e,n=typeof Symbol=="function"?Symbol:{},r=n.iterator||"@@iterator",o=n.toStringTag||"@@toStringTag";function s(C,w,y,g){var _=w&&w.prototype instanceof u?w:u,E=Object.create(_.prototype);return wt(E,"_invoke",(function(b,S,T){var R,$,H,P=0,K=T||[],q=!1,Y={p:0,n:0,v:t,a:Q,f:Q.bind(t,4),d:function(se,ue){return R=se,$=0,H=t,Y.n=ue,a}};function Q(ee,se){for($=ee,H=se,e=0;!q&&P&&!ue&&e<K.length;e++){var ue,pe=K[e],J=Y.p,Z=pe[2];ee>3?(ue=Z===se)&&(H=pe[($=pe[4])?5:($=3,3)],pe[4]=pe[5]=t):pe[0]<=J&&((ue=ee<2&&J<pe[1])?($=0,Y.v=se,Y.n=pe[1]):J<Z&&(ue=ee<3||pe[0]>se||se>Z)&&(pe[4]=ee,pe[5]=se,Y.n=Z,$=0))}if(ue||ee>1)return a;throw q=!0,se}return function(ee,se,ue){if(P>1)throw TypeError("Generator is already running");for(q&&se===1&&Q(se,ue),$=se,H=ue;(e=$<2?t:H)||!q;){R||($?$<3?($>1&&(Y.n=-1),Q($,H)):Y.n=H:Y.v=H);try{if(P=2,R){if($||(ee="next"),e=R[ee]){if(!(e=e.call(R,H)))throw TypeError("iterator result is not an object");if(!e.done)return e;H=e.value,$<2&&($=0)}else $===1&&(e=R.return)&&e.call(R),$<2&&(H=TypeError("The iterator does not provide a '"+ee+"' method"),$=1);R=t}else if((e=(q=Y.n<0)?H:b.call(S,Y))!==a)break}catch(pe){R=t,$=1,H=pe}finally{P=1}}return{value:e,done:q}}})(C,y,g),!0),E}var a={};function u(){}function l(){}function f(){}e=Object.getPrototypeOf;var d=[][r]?e(e([][r]())):(wt(e={},r,function(){return this}),e),h=f.prototype=u.prototype=Object.create(d);function m(C){return Object.setPrototypeOf?Object.setPrototypeOf(C,f):(C.__proto__=f,wt(C,o,"GeneratorFunction")),C.prototype=Object.create(h),C}return l.prototype=f,wt(h,"constructor",f),wt(f,"constructor",l),l.displayName="GeneratorFunction",wt(f,o,"GeneratorFunction"),wt(h),wt(h,o,"Generator"),wt(h,r,function(){return this}),wt(h,"toString",function(){return"[object Generator]"}),(Et=function(){return{w:s,m}})()}function wt(t,e,n,r){var o=Object.defineProperty;try{o({},"",{})}catch{o=0}wt=function(a,u,l,f){if(u)o?o(a,u,{value:l,enumerable:!f,configurable:!f,writable:!f}):a[u]=l;else{var d=function(m,C){wt(a,m,function(w){return this._invoke(m,C,w)})};d("next",0),d("throw",1),d("return",2)}},wt(t,e,n,r)}function Hy(t,e,n,r,o,s,a){try{var u=t[s](a),l=u.value}catch(f){return void n(f)}u.done?e(l):Promise.resolve(l).then(r,o)}function co(t){return function(){var e=this,n=arguments;return new Promise(function(r,o){var s=t.apply(e,n);function a(l){Hy(s,r,o,a,u,"next",l)}function u(l){Hy(s,r,o,a,u,"throw",l)}a(void 0)})}}var Wy=Uy.readFile?(0,hS.promisify)(Uy.readFile):co(Et().m(function t(){return Et().w(function(e){for(;;)switch(e.n){case 0:throw new os("use key rather than keyFile.","MISSING_CREDENTIALS");case 1:return e.a(2)}},t)})),Gy="https://oauth2.googleapis.com/token",kS="https://oauth2.googleapis.com/revoke?token=",os=(function(t){function e(n,r){var o;return Qy(this,e),o=gS(this,e,[n]),Ct(o,"code",void 0),o.code=r,o}return bS(e,t),Yy(e)})(Il(Error)),rs=new WeakMap,on=new WeakSet,BP=aa.GoogleToken=(function(){function t(e){Qy(this,t),pS(this,on),Ct(this,"expiresAt",void 0),Ct(this,"key",void 0),Ct(this,"keyFile",void 0),Ct(this,"iss",void 0),Ct(this,"sub",void 0),Ct(this,"scope",void 0),Ct(this,"rawToken",void 0),Ct(this,"tokenExpires",void 0),Ct(this,"email",void 0),Ct(this,"additionalClaims",void 0),Ct(this,"eagerRefreshThresholdMillis",void 0),Ct(this,"transporter",{request:function(r){return(0,lS.request)(r)}}),mS(this,rs,void 0),Vt(on,this,Zy).call(this,e)}return Yy(t,[{key:"accessToken",get:function(){return this.rawToken?this.rawToken.access_token:void 0}},{key:"idToken",get:function(){return this.rawToken?this.rawToken.id_token:void 0}},{key:"tokenType",get:function(){return this.rawToken?this.rawToken.token_type:void 0}},{key:"refreshToken",get:function(){return this.rawToken?this.rawToken.refresh_token:void 0}},{key:"hasExpired",value:function(){var n=new Date().getTime();return this.rawToken&&this.expiresAt?n>=this.expiresAt:!0}},{key:"isTokenExpiring",value:function(){var n,r=new Date().getTime(),o=(n=this.eagerRefreshThresholdMillis)!==null&&n!==void 0?n:0;return this.rawToken&&this.expiresAt?this.expiresAt<=r+o:!0}},{key:"getToken",value:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(Tn(n)==="object"&&(r=n,n=void 0),r=Object.assign({forceRefresh:!1},r),n){var o=n;Vt(on,this,Jy).call(this,r).then(function(s){return o(null,s)},n);return}return Vt(on,this,Jy).call(this,r)}},{key:"getCredentials",value:(function(){var e=co(Et().m(function r(o){var s,a,u,l,f,d,h;return Et().w(function(m){for(;;)switch(m.n){case 0:s=fS.extname(o),h=s,m.n=h===".json"?1:h===".der"||h===".crt"||h===".pem"?4:h===".p12"||h===".pfx"?6:7;break;case 1:return m.n=2,Wy(o,"utf8");case 2:if(a=m.v,u=JSON.parse(a),l=u.private_key,f=u.client_email,!(!l||!f)){m.n=3;break}throw new os("private_key and client_email are required.","MISSING_CREDENTIALS");case 3:return m.a(2,{privateKey:l,clientEmail:f});case 4:return m.n=5,Wy(o,"utf8");case 5:return d=m.v,m.a(2,{privateKey:d});case 6:throw new os("*.p12 certificates are not supported after v6.1.2. Consider utilizing *.json format or converting *.p12 to *.pem using the OpenSSL CLI.","UNKNOWN_CERTIFICATE_TYPE");case 7:throw new os("Unknown certificate type. Type is determined based on file extension. Current supported extensions are *.json, and *.pem.","UNKNOWN_CERTIFICATE_TYPE");case 8:return m.a(2)}},r)}));function n(r){return e.apply(this,arguments)}return n})()},{key:"revokeToken",value:function(n){if(n){Vt(on,this,Vy).call(this).then(function(){return n()},n);return}return Vt(on,this,Vy).call(this)}}])})();function Jy(t){return Nl.apply(this,arguments)}function Nl(){return Nl=co(Et().m(function t(e){return Et().w(function(n){for(;;)switch(n.n){case 0:if(!(qy(rs,this)&&!e.forceRefresh)){n.n=1;break}return n.a(2,qy(rs,this));case 1:return n.p=1,n.n=2,$y(rs,this,Vt(on,this,AS).call(this,e));case 2:return n.a(2,n.v);case 3:return n.p=3,$y(rs,this,void 0),n.f(3);case 4:return n.a(2)}},t,this,[[1,,3,4]])})),Nl.apply(this,arguments)}function AS(t){return Bl.apply(this,arguments)}function Bl(){return Bl=co(Et().m(function t(e){var n;return Et().w(function(r){for(;;)switch(r.n){case 0:if(!(this.isTokenExpiring()===!1&&e.forceRefresh===!1)){r.n=1;break}return r.a(2,Promise.resolve(this.rawToken));case 1:if(!(!this.key&&!this.keyFile)){r.n=2;break}throw new Error("No key or keyFile set.");case 2:if(!(!this.key&&this.keyFile)){r.n=4;break}return r.n=3,this.getCredentials(this.keyFile);case 3:n=r.v,this.key=n.privateKey,this.iss=n.clientEmail||this.iss,n.clientEmail||Vt(on,this,SS).call(this);case 4:return r.a(2,Vt(on,this,vS).call(this))}},t,this)})),Bl.apply(this,arguments)}function SS(){if(!this.iss)throw new os("email is required.","MISSING_CREDENTIALS")}function Vy(){return Ml.apply(this,arguments)}function Ml(){return Ml=co(Et().m(function t(){var e;return Et().w(function(n){for(;;)switch(n.n){case 0:if(this.accessToken){n.n=1;break}throw new Error("No token to revoke.");case 1:return e=kS+this.accessToken,n.n=2,this.transporter.request({url:e,retry:!0});case 2:Vt(on,this,Zy).call(this,{email:this.iss,sub:this.sub,key:this.key,keyFile:this.keyFile,scope:this.scope,additionalClaims:this.additionalClaims});case 3:return n.a(2)}},t,this)})),Ml.apply(this,arguments)}function Zy(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.keyFile=t.keyFile,this.key=t.key,this.rawToken=void 0,this.iss=t.email||t.iss,this.sub=t.sub,this.additionalClaims=t.additionalClaims,Tn(t.scope)==="object"?this.scope=t.scope.join(" "):this.scope=t.scope,this.eagerRefreshThresholdMillis=t.eagerRefreshThresholdMillis,t.transporter&&(this.transporter=t.transporter)}function vS(){return Ll.apply(this,arguments)}function Ll(){return Ll=co(Et().m(function t(){var e,n,r,o,s,a,u,l,f,d;return Et().w(function(h){for(;;)switch(h.n){case 0:return e=Math.floor(new Date().getTime()/1e3),n=this.additionalClaims||{},r=Object.assign({iss:this.iss,scope:this.scope,aud:Gy,exp:e+3600,iat:e,sub:this.sub},n),o=dS.sign({header:{alg:"RS256"},payload:r,secret:this.key}),h.p=1,h.n=2,this.transporter.request({method:"POST",url:Gy,data:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:jwt-bearer",assertion:o}),responseType:"json",retryConfig:{httpMethodsToRetry:["POST"]}});case 2:return s=h.v,this.rawToken=s.data,this.expiresAt=s.data.expires_in===null||s.data.expires_in===void 0?void 0:(e+s.data.expires_in)*1e3,h.a(2,this.rawToken);case 3:throw h.p=3,d=h.v,this.rawToken=void 0,this.tokenExpires=void 0,l=d.response&&(a=d.response)!==null&&a!==void 0&&a.data?(u=d.response)===null||u===void 0?void 0:u.data:{},l.error&&(f=l.error_description?": ".concat(l.error_description):"",d.message="".concat(l.error).concat(f)),d;case 4:return h.a(2)}},t,this,[[1,3]])})),Ll.apply(this,arguments)}});var $l=X(ua=>{"use strict";Object.defineProperty(ua,"__esModule",{value:!0});ua.JWTAccess=void 0;var TS=Fl(),DS=Wt(),t0={alg:"RS256",typ:"JWT"},Ul=class t{email;key;keyId;projectId;eagerRefreshThresholdMillis;cache=new DS.LRUCache({capacity:500,maxAge:3600*1e3});constructor(e,n,r,o){this.email=e,this.key=n,this.keyId=r,this.eagerRefreshThresholdMillis=o??300*1e3}getCachedKey(e,n){let r=e;if(n&&Array.isArray(n)&&n.length?r=e?`${e}_${n.join("_")}`:`${n.join("_")}`:typeof n=="string"&&(r=e?`${e}_${n}`:n),!r)throw Error("Scopes or url must be provided");return r}getRequestHeaders(e,n,r){let o=this.getCachedKey(e,r),s=this.cache.get(o),a=Date.now();if(s&&s.expiration-a>this.eagerRefreshThresholdMillis)return new Headers(s.headers);let u=Math.floor(Date.now()/1e3),l=t.getExpirationTime(u),f;if(Array.isArray(r)&&(r=r.join(" ")),r?f={iss:this.email,sub:this.email,scope:r,exp:l,iat:u}:f={iss:this.email,sub:this.email,aud:e,exp:l,iat:u},n){for(let w in f)if(n[w])throw new Error(`The '${w}' property is not allowed when passing additionalClaims. This claim is included in the JWT by default.`)}let d=this.keyId?{...t0,kid:this.keyId}:t0,h=Object.assign(f,n),m=TS.sign({header:d,payload:h,secret:this.key}),C=new Headers({authorization:`Bearer ${m}`});return this.cache.set(o,{expiration:l*1e3,headers:C}),C}static getExpirationTime(e){return e+3600}fromJSON(e){if(!e)throw new Error("Must pass in a JSON object containing the service account auth settings.");if(!e.client_email)throw new Error("The incoming JSON object does not contain a client_email field");if(!e.private_key)throw new Error("The incoming JSON object does not contain a private_key field");this.email=e.client_email,this.key=e.private_key,this.keyId=e.private_key_id,this.projectId=e.project_id}fromStream(e,n){if(n)this.fromStreamAsync(e).then(()=>n(),n);else return this.fromStreamAsync(e)}fromStreamAsync(e){return new Promise((n,r)=>{e||r(new Error("Must pass in a stream containing the service account auth settings."));let o="";e.setEncoding("utf8").on("data",s=>o+=s).on("error",r).on("end",()=>{try{let s=JSON.parse(o);this.fromJSON(s),n()}catch(s){r(s)}})})}};ua.JWTAccess=Ul});var zl=X(la=>{"use strict";Object.defineProperty(la,"__esModule",{value:!0});la.JWT=void 0;var n0=e0(),RS=$l(),xS=_r(),ca=bt(),ql=class t extends xS.OAuth2Client{email;keyFile;key;keyId;defaultScopes;scopes;scope;subject;gtoken;additionalClaims;useJWTAccessWithScope;defaultServicePath;access;constructor(e={}){super(e),this.email=e.email,this.keyFile=e.keyFile,this.key=e.key,this.keyId=e.keyId,this.scopes=e.scopes,this.subject=e.subject,this.additionalClaims=e.additionalClaims,this.credentials={refresh_token:"jwt-placeholder",expiry_date:1}}createScoped(e){let n=new t(this);return n.scopes=e,n}async getRequestMetadataAsync(e){e=this.defaultServicePath?`https://${this.defaultServicePath}/`:e;let n=!this.hasUserScopes()&&e||this.useJWTAccessWithScope&&this.hasAnyScopes()||this.universeDomain!==ca.DEFAULT_UNIVERSE;if(this.subject&&this.universeDomain!==ca.DEFAULT_UNIVERSE)throw new RangeError(`Service Account user is configured for the credential. Domain-wide delegation is not supported in universes other than ${ca.DEFAULT_UNIVERSE}`);if(!this.apiKey&&n)if(this.additionalClaims&&this.additionalClaims.target_audience){let{tokens:r}=await this.refreshToken();return{headers:this.addSharedMetadataHeaders(new Headers({authorization:`Bearer ${r.id_token}`}))}}else{this.access||(this.access=new RS.JWTAccess(this.email,this.key,this.keyId,this.eagerRefreshThresholdMillis));let r;this.hasUserScopes()?r=this.scopes:e||(r=this.defaultScopes);let o=this.useJWTAccessWithScope||this.universeDomain!==ca.DEFAULT_UNIVERSE,s=await this.access.getRequestHeaders(e??void 0,this.additionalClaims,o?r:void 0);return{headers:this.addSharedMetadataHeaders(s)}}else return this.hasAnyScopes()||this.apiKey?super.getRequestMetadataAsync(e):{headers:new Headers}}async fetchIdToken(e){let n=new n0.GoogleToken({iss:this.email,sub:this.subject,scope:this.scopes||this.defaultScopes,keyFile:this.keyFile,key:this.key,additionalClaims:{target_audience:e},transporter:this.transporter});if(await n.getToken({forceRefresh:!0}),!n.idToken)throw new Error("Unknown error: Failed to fetch ID token");return n.idToken}hasUserScopes(){return this.scopes?this.scopes.length>0:!1}hasAnyScopes(){return!!(this.scopes&&this.scopes.length>0||this.defaultScopes&&this.defaultScopes.length>0)}authorize(e){if(e)this.authorizeAsync().then(n=>e(null,n),e);else return this.authorizeAsync()}async authorizeAsync(){let e=await this.refreshToken();if(!e)throw new Error("No result returned");return this.credentials=e.tokens,this.credentials.refresh_token="jwt-placeholder",this.key=this.gtoken.key,this.email=this.gtoken.iss,e.tokens}async refreshTokenNoCache(){let e=this.createGToken(),r={access_token:(await e.getToken({forceRefresh:this.isTokenExpiring()})).access_token,token_type:"Bearer",expiry_date:e.expiresAt,id_token:e.idToken};return this.emit("tokens",r),{res:null,tokens:r}}createGToken(){return this.gtoken||(this.gtoken=new n0.GoogleToken({iss:this.email,sub:this.subject,scope:this.scopes||this.defaultScopes,keyFile:this.keyFile,key:this.key,additionalClaims:this.additionalClaims,transporter:this.transporter})),this.gtoken}fromJSON(e){if(!e)throw new Error("Must pass in a JSON object containing the service account auth settings.");if(!e.client_email)throw new Error("The incoming JSON object does not contain a client_email field");if(!e.private_key)throw new Error("The incoming JSON object does not contain a private_key field");this.email=e.client_email,this.key=e.private_key,this.keyId=e.private_key_id,this.projectId=e.project_id,this.quotaProjectId=e.quota_project_id,this.universeDomain=e.universe_domain||this.universeDomain}fromStream(e,n){if(n)this.fromStreamAsync(e).then(()=>n(),n);else return this.fromStreamAsync(e)}fromStreamAsync(e){return new Promise((n,r)=>{if(!e)throw new Error("Must pass in a stream containing the service account auth settings.");let o="";e.setEncoding("utf8").on("error",r).on("data",s=>o+=s).on("end",()=>{try{let s=JSON.parse(o);this.fromJSON(s),n()}catch(s){r(s)}})})}fromAPIKey(e){if(typeof e!="string")throw new Error("Must provide an API Key string.");this.apiKey=e}async getCredentials(){if(this.key)return{private_key:this.key,client_email:this.email};if(this.keyFile){let n=await this.createGToken().getCredentials(this.keyFile);return{private_key:n.privateKey,client_email:n.clientEmail}}throw new Error("A key or a keyFile must be provided to getCredentials.")}};la.JWT=ql});var Wl=X(lo=>{"use strict";Object.defineProperty(lo,"__esModule",{value:!0});lo.UserRefreshClient=lo.USER_REFRESH_ACCOUNT_TYPE=void 0;var OS=_r(),PS=bt();lo.USER_REFRESH_ACCOUNT_TYPE="authorized_user";var Hl=class t extends OS.OAuth2Client{_refreshToken;constructor(e,n,r,o,s){let a=e&&typeof e=="object"?e:{clientId:e,clientSecret:n,refreshToken:r,eagerRefreshThresholdMillis:o,forceRefreshOnFailure:s};super(a),this._refreshToken=a.refreshToken,this.credentials.refresh_token=a.refreshToken}async refreshTokenNoCache(){return super.refreshTokenNoCache(this._refreshToken)}async fetchIdToken(e){let n={...t.RETRY_CONFIG,url:this.endpoints.oauth2TokenUrl,method:"POST",data:new URLSearchParams({client_id:this._clientId,client_secret:this._clientSecret,grant_type:"refresh_token",refresh_token:this._refreshToken,target_audience:e})};return PS.AuthClient.setMethodName(n,"fetchIdToken"),(await this.transporter.request(n)).data.id_token}fromJSON(e){if(!e)throw new Error("Must pass in a JSON object containing the user refresh token");if(e.type!=="authorized_user")throw new Error('The incoming JSON object does not have the "authorized_user" type');if(!e.client_id)throw new Error("The incoming JSON object does not contain a client_id field");if(!e.client_secret)throw new Error("The incoming JSON object does not contain a client_secret field");if(!e.refresh_token)throw new Error("The incoming JSON object does not contain a refresh_token field");this._clientId=e.client_id,this._clientSecret=e.client_secret,this._refreshToken=e.refresh_token,this.credentials.refresh_token=e.refresh_token,this.quotaProjectId=e.quota_project_id,this.universeDomain=e.universe_domain||this.universeDomain}fromStream(e,n){if(n)this.fromStreamAsync(e).then(()=>n(),n);else return this.fromStreamAsync(e)}async fromStreamAsync(e){return new Promise((n,r)=>{if(!e)return r(new Error("Must pass in a stream containing the user refresh token."));let o="";e.setEncoding("utf8").on("error",r).on("data",s=>o+=s).on("end",()=>{try{let s=JSON.parse(o);return this.fromJSON(s),n()}catch(s){return r(s)}})})}static fromJSON(e){let n=new t;return n.fromJSON(e),n}};lo.UserRefreshClient=Hl});var Jl=X(fo=>{"use strict";Object.defineProperty(fo,"__esModule",{value:!0});fo.Impersonated=fo.IMPERSONATED_ACCOUNT_TYPE=void 0;var r0=_r(),FS=Xe(),IS=Wt();fo.IMPERSONATED_ACCOUNT_TYPE="impersonated_service_account";var Gl=class t extends r0.OAuth2Client{sourceClient;targetPrincipal;targetScopes;delegates;lifetime;endpoint;constructor(e={}){if(super(e),console.warn("The `Impersonated` constructor does not validate the credential configuration. A security risk occurs when a credential configuration configured with malicious URLs is used. When the credential configuration is accepted from an untrusted source, you should validate it before using it with this method. For more details, see https://cloud.google.com/docs/authentication/external/externally-sourced-credentials."),this.credentials={expiry_date:1,refresh_token:"impersonated-placeholder"},this.sourceClient=e.sourceClient??new r0.OAuth2Client,this.targetPrincipal=e.targetPrincipal??"",this.delegates=e.delegates??[],this.targetScopes=e.targetScopes??[],this.lifetime=e.lifetime??3600,!!!(0,IS.originalOrCamelOptions)(e).get("universe_domain"))this.universeDomain=this.sourceClient.universeDomain;else if(this.sourceClient.universeDomain!==this.universeDomain)throw new RangeError(`Universe domain ${this.sourceClient.universeDomain} in source credentials does not match ${this.universeDomain} universe domain set for impersonated credentials.`);this.endpoint=e.endpoint??`https://iamcredentials.${this.universeDomain}`}async sign(e){await this.sourceClient.getAccessToken();let n=`projects/-/serviceAccounts/${this.targetPrincipal}`,r=`${this.endpoint}/v1/${n}:signBlob`,o={delegates:this.delegates,payload:Buffer.from(e).toString("base64")};return(await this.sourceClient.request({...t.RETRY_CONFIG,url:r,data:o,method:"POST"})).data}getTargetPrincipal(){return this.targetPrincipal}async refreshToken(){try{await this.sourceClient.getAccessToken();let e="projects/-/serviceAccounts/"+this.targetPrincipal,n=`${this.endpoint}/v1/${e}:generateAccessToken`,r={delegates:this.delegates,scope:this.targetScopes,lifetime:this.lifetime+"s"},o=await this.sourceClient.request({...t.RETRY_CONFIG,url:n,data:r,method:"POST"}),s=o.data;return this.credentials.access_token=s.accessToken,this.credentials.expiry_date=Date.parse(s.expireTime),{tokens:this.credentials,res:o}}catch(e){if(!(e instanceof Error))throw e;let n=0,r="";throw e instanceof FS.GaxiosError&&(n=e?.response?.data?.error?.status,r=e?.response?.data?.error?.message),n&&r?(e.message=`${n}: unable to impersonate: ${r}`,e):(e.message=`unable to impersonate: ${e}`,e)}}async fetchIdToken(e,n){await this.sourceClient.getAccessToken();let r=`projects/-/serviceAccounts/${this.targetPrincipal}`,o=`${this.endpoint}/v1/${r}:generateIdToken`,s={delegates:this.delegates,audience:e,includeEmail:n?.includeEmail??!0,useEmailAzp:n?.includeEmail??!0};return(await this.sourceClient.request({...t.RETRY_CONFIG,url:o,data:s,method:"POST"})).data.token}};fo.Impersonated=Gl});var Kl=X(as=>{"use strict";Object.defineProperty(as,"__esModule",{value:!0});as.OAuthClientAuthHandler=void 0;as.getErrorFromOAuthErrorResponse=MS;var ho=Xe(),NS=Qo(),BS=["PUT","POST","PATCH"],Vl=class{#e=(0,NS.createCrypto)();#t;transporter;constructor(e){e&&"clientId"in e?(this.#t=e,this.transporter=new ho.Gaxios):(this.#t=e?.clientAuthentication,this.transporter=e?.transporter||new ho.Gaxios)}applyClientAuthenticationOptions(e,n){e.headers=ho.Gaxios.mergeHeaders(e.headers),this.injectAuthenticatedHeaders(e,n),n||this.injectAuthenticatedRequestBody(e)}injectAuthenticatedHeaders(e,n){if(n)e.headers=ho.Gaxios.mergeHeaders(e.headers,{authorization:`Bearer ${n}`});else if(this.#t?.confidentialClientType==="basic"){e.headers=ho.Gaxios.mergeHeaders(e.headers);let r=this.#t.clientId,o=this.#t.clientSecret||"",s=this.#e.encodeBase64StringUtf8(`${r}:${o}`);ho.Gaxios.mergeHeaders(e.headers,{authorization:`Basic ${s}`})}}injectAuthenticatedRequestBody(e){if(this.#t?.confidentialClientType==="request-body"){let n=(e.method||"GET").toUpperCase();if(!BS.includes(n))throw new Error(`${n} HTTP method does not support ${this.#t.confidentialClientType} client authentication`);let o=new Headers(e.headers).get("content-type");if(o?.startsWith("application/x-www-form-urlencoded")||e.data instanceof URLSearchParams){let s=new URLSearchParams(e.data??"");s.append("client_id",this.#t.clientId),s.append("client_secret",this.#t.clientSecret||""),e.data=s}else if(o?.startsWith("application/json"))e.data=e.data||{},Object.assign(e.data,{client_id:this.#t.clientId,client_secret:this.#t.clientSecret||""});else throw new Error(`${o} content-types are not supported with ${this.#t.confidentialClientType} client authentication`)}}static get RETRY_CONFIG(){return{retry:!0,retryConfig:{httpMethodsToRetry:["GET","PUT","POST","HEAD","OPTIONS","DELETE"]}}}};as.OAuthClientAuthHandler=Vl;function MS(t,e){let n=t.error,r=t.error_description,o=t.error_uri,s=`Error code ${n}`;typeof r<"u"&&(s+=`: ${r}`),typeof o<"u"&&(s+=` - ${o}`);let a=new Error(s);if(e){let u=Object.keys(e);e.stack&&u.push("stack"),u.forEach(l=>{l!=="message"&&Object.defineProperty(a,l,{value:e[l],writable:!1,enumerable:!0})})}return a}});var fa=X(da=>{"use strict";Object.defineProperty(da,"__esModule",{value:!0});da.StsCredentials=void 0;var LS=Xe(),jS=bt(),o0=Kl(),US=Wt(),Yl=class t extends o0.OAuthClientAuthHandler{#e;constructor(e={tokenExchangeEndpoint:""},n){(typeof e!="object"||e instanceof URL)&&(e={tokenExchangeEndpoint:e,clientAuthentication:n}),super(e),this.#e=e.tokenExchangeEndpoint}async exchangeToken(e,n,r){let o={grant_type:e.grantType,resource:e.resource,audience:e.audience,scope:e.scope?.join(" "),requested_token_type:e.requestedTokenType,subject_token:e.subjectToken,subject_token_type:e.subjectTokenType,actor_token:e.actingParty?.actorToken,actor_token_type:e.actingParty?.actorTokenType,options:r&&JSON.stringify(r)},s={...t.RETRY_CONFIG,url:this.#e.toString(),method:"POST",headers:n,data:new URLSearchParams((0,US.removeUndefinedValuesInObject)(o))};jS.AuthClient.setMethodName(s,"exchangeToken"),this.applyClientAuthenticationOptions(s);try{let a=await this.transporter.request(s),u=a.data;return u.res=a,u}catch(a){throw a instanceof LS.GaxiosError&&a.response?(0,o0.getErrorFromOAuthErrorResponse)(a.response.data,a):a}}};da.StsCredentials=Yl});var Kn=X(Pt=>{"use strict";Object.defineProperty(Pt,"__esModule",{value:!0});Pt.BaseExternalAccountClient=Pt.CLOUD_RESOURCE_MANAGER=Pt.EXTERNAL_ACCOUNT_TYPE=Pt.EXPIRATION_TIME_OFFSET=void 0;var $S=Xe(),qS=re("stream"),Ql=bt(),zS=fa(),s0=Wt(),HS=fl(),WS="urn:ietf:params:oauth:grant-type:token-exchange",GS="urn:ietf:params:oauth:token-type:access_token",Xl="https://www.googleapis.com/auth/cloud-platform",JS=3600;Pt.EXPIRATION_TIME_OFFSET=300*1e3;Pt.EXTERNAL_ACCOUNT_TYPE="external_account";Pt.CLOUD_RESOURCE_MANAGER="https://cloudresourcemanager.googleapis.com/v1/projects/";var VS="//iam\\.googleapis\\.com/locations/[^/]+/workforcePools/[^/]+/providers/.+",KS="https://sts.{universeDomain}/v1/token",Zl=class t extends Ql.AuthClient{scopes;projectNumber;audience;subjectTokenType;stsCredential;clientAuth;credentialSourceType;cachedAccessToken;serviceAccountImpersonationUrl;serviceAccountImpersonationLifetime;workforcePoolUserProject;configLifetimeRequested;tokenUrl;cloudResourceManagerURL;supplierContext;#e=null;constructor(e){super(e);let n=(0,s0.originalOrCamelOptions)(e),r=n.get("type");if(r&&r!==Pt.EXTERNAL_ACCOUNT_TYPE)throw new Error(`Expected "${Pt.EXTERNAL_ACCOUNT_TYPE}" type but received "${e.type}"`);let o=n.get("client_id"),s=n.get("client_secret");this.tokenUrl=n.get("token_url")??KS.replace("{universeDomain}",this.universeDomain);let a=n.get("subject_token_type"),u=n.get("workforce_pool_user_project"),l=n.get("service_account_impersonation_url"),f=n.get("service_account_impersonation"),d=(0,s0.originalOrCamelOptions)(f).get("token_lifetime_seconds");this.cloudResourceManagerURL=new URL(n.get("cloud_resource_manager_url")||`https://cloudresourcemanager.${this.universeDomain}/v1/projects/`),o&&(this.clientAuth={confidentialClientType:"basic",clientId:o,clientSecret:s}),this.stsCredential=new zS.StsCredentials({tokenExchangeEndpoint:this.tokenUrl,clientAuthentication:this.clientAuth}),this.scopes=n.get("scopes")||[Xl],this.cachedAccessToken=null,this.audience=n.get("audience"),this.subjectTokenType=a,this.workforcePoolUserProject=u;let h=new RegExp(VS);if(this.workforcePoolUserProject&&!this.audience.match(h))throw new Error("workforcePoolUserProject should not be set for non-workforce pool credentials.");this.serviceAccountImpersonationUrl=l,this.serviceAccountImpersonationLifetime=d,this.serviceAccountImpersonationLifetime?this.configLifetimeRequested=!0:(this.configLifetimeRequested=!1,this.serviceAccountImpersonationLifetime=JS),this.projectNumber=this.getProjectNumber(this.audience),this.supplierContext={audience:this.audience,subjectTokenType:this.subjectTokenType,transporter:this.transporter}}getServiceAccountEmail(){if(this.serviceAccountImpersonationUrl){if(this.serviceAccountImpersonationUrl.length>256)throw new RangeError(`URL is too long: ${this.serviceAccountImpersonationUrl}`);return/serviceAccounts\/(?<email>[^:]+):generateAccessToken$/.exec(this.serviceAccountImpersonationUrl)?.groups?.email||null}return null}setCredentials(e){super.setCredentials(e),this.cachedAccessToken=e}async getAccessToken(){return(!this.cachedAccessToken||this.isExpired(this.cachedAccessToken))&&await this.refreshAccessTokenAsync(),{token:this.cachedAccessToken.access_token,res:this.cachedAccessToken.res}}async getRequestHeaders(){let e=await this.getAccessToken(),n=new Headers({authorization:`Bearer ${e.token}`});return this.addSharedMetadataHeaders(n)}request(e,n){if(n)this.requestAsync(e).then(r=>n(null,r),r=>n(r,r.response));else return this.requestAsync(e)}async getProjectId(){let e=this.projectNumber||this.workforcePoolUserProject;if(this.projectId)return this.projectId;if(e){let n=await this.getRequestHeaders(),r={...t.RETRY_CONFIG,headers:n,url:`${this.cloudResourceManagerURL.toString()}${e}`};Ql.AuthClient.setMethodName(r,"getProjectId");let o=await this.transporter.request(r);return this.projectId=o.data.projectId,this.projectId}return null}async requestAsync(e,n=!1){let r;try{let o=await this.getRequestHeaders();e.headers=$S.Gaxios.mergeHeaders(e.headers),this.addUserProjectAndAuthHeaders(e.headers,o),r=await this.transporter.request(e)}catch(o){let s=o.response;if(s){let a=s.status,u=s.config.data instanceof qS.Readable;if(!n&&(a===401||a===403)&&!u&&this.forceRefreshOnFailure)return await this.refreshAccessTokenAsync(),await this.requestAsync(e,!0)}throw o}return r}async refreshAccessTokenAsync(){this.#e=this.#e||this.#t();try{return await this.#e}finally{this.#e=null}}async#t(){let e=await this.retrieveSubjectToken(),n={grantType:WS,audience:this.audience,requestedTokenType:GS,subjectToken:e,subjectTokenType:this.subjectTokenType,scope:this.serviceAccountImpersonationUrl?[Xl]:this.getScopesArray()},r=!this.clientAuth&&this.workforcePoolUserProject?{userProject:this.workforcePoolUserProject}:void 0,o=new Headers({"x-goog-api-client":this.getMetricsHeaderValue()}),s=await this.stsCredential.exchangeToken(n,o,r);return this.serviceAccountImpersonationUrl?this.cachedAccessToken=await this.getImpersonatedAccessToken(s.access_token):s.expires_in?this.cachedAccessToken={access_token:s.access_token,expiry_date:new Date().getTime()+s.expires_in*1e3,res:s.res}:this.cachedAccessToken={access_token:s.access_token,res:s.res},this.credentials={},Object.assign(this.credentials,this.cachedAccessToken),delete this.credentials.res,this.emit("tokens",{refresh_token:null,expiry_date:this.cachedAccessToken.expiry_date,access_token:this.cachedAccessToken.access_token,token_type:"Bearer",id_token:null}),this.cachedAccessToken}getProjectNumber(e){let n=e.match(/\/projects\/([^/]+)/);return n?n[1]:null}async getImpersonatedAccessToken(e){let n={...t.RETRY_CONFIG,url:this.serviceAccountImpersonationUrl,method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${e}`},data:{scope:this.getScopesArray(),lifetime:this.serviceAccountImpersonationLifetime+"s"}};Ql.AuthClient.setMethodName(n,"getImpersonatedAccessToken");let r=await this.transporter.request(n),o=r.data;return{access_token:o.accessToken,expiry_date:new Date(o.expireTime).getTime(),res:r}}isExpired(e){let n=new Date().getTime();return e.expiry_date?n>=e.expiry_date-this.eagerRefreshThresholdMillis:!1}getScopesArray(){return typeof this.scopes=="string"?[this.scopes]:this.scopes||[Xl]}getMetricsHeaderValue(){let e=process.version.replace(/^v/,""),n=this.serviceAccountImpersonationUrl!==void 0,r=this.credentialSourceType?this.credentialSourceType:"unknown";return`gl-node/${e} auth/${HS.pkg.version} google-byoid-sdk source/${r} sa-impersonation/${n} config-lifetime/${this.configLifetimeRequested}`}getTokenUrl(){return this.tokenUrl}};Pt.BaseExternalAccountClient=Zl});var i0=X(ha=>{"use strict";Object.defineProperty(ha,"__esModule",{value:!0});ha.FileSubjectTokenSupplier=void 0;var td=re("util"),nd=re("fs"),YS=(0,td.promisify)(nd.readFile??(()=>{})),QS=(0,td.promisify)(nd.realpath??(()=>{})),XS=(0,td.promisify)(nd.lstat??(()=>{})),ed=class{filePath;formatType;subjectTokenFieldName;constructor(e){this.filePath=e.filePath,this.formatType=e.formatType,this.subjectTokenFieldName=e.subjectTokenFieldName}async getSubjectToken(){let e=this.filePath;try{if(e=await QS(e),!(await XS(e)).isFile())throw new Error}catch(o){throw o instanceof Error&&(o.message=`The file at ${e} does not exist, or it is not a file. ${o.message}`),o}let n,r=await YS(e,{encoding:"utf8"});if(this.formatType==="text"?n=r:this.formatType==="json"&&this.subjectTokenFieldName&&(n=JSON.parse(r)[this.subjectTokenFieldName]),!n)throw new Error("Unable to parse the subject_token from the credential_source file");return n}};ha.FileSubjectTokenSupplier=ed});var a0=X(pa=>{"use strict";Object.defineProperty(pa,"__esModule",{value:!0});pa.UrlSubjectTokenSupplier=void 0;var ZS=bt(),rd=class{url;headers;formatType;subjectTokenFieldName;additionalGaxiosOptions;constructor(e){this.url=e.url,this.formatType=e.formatType,this.subjectTokenFieldName=e.subjectTokenFieldName,this.headers=e.headers,this.additionalGaxiosOptions=e.additionalGaxiosOptions}async getSubjectToken(e){let n={...this.additionalGaxiosOptions,url:this.url,method:"GET",headers:this.headers};ZS.AuthClient.setMethodName(n,"getSubjectToken");let r;if(this.formatType==="text"?r=(await e.transporter.request(n)).data:this.formatType==="json"&&this.subjectTokenFieldName&&(r=(await e.transporter.request(n)).data[this.subjectTokenFieldName]),!r)throw new Error("Unable to parse the subject_token from the credential_source URL");return r}};pa.UrlSubjectTokenSupplier=rd});var u0=X(kt=>{"use strict";Object.defineProperty(kt,"__esModule",{value:!0});kt.CertificateSubjectTokenSupplier=kt.InvalidConfigurationError=kt.CertificateSourceUnavailableError=kt.CERTIFICATE_CONFIGURATION_ENV_VARIABLE=void 0;var ma=Wt(),ga=re("fs"),ya=re("crypto"),ev=re("https");kt.CERTIFICATE_CONFIGURATION_ENV_VARIABLE="GOOGLE_API_CERTIFICATE_CONFIG";var sn=class extends Error{constructor(e){super(e),this.name="CertificateSourceUnavailableError"}};kt.CertificateSourceUnavailableError=sn;var Ft=class extends Error{constructor(e){super(e),this.name="InvalidConfigurationError"}};kt.InvalidConfigurationError=Ft;var od=class{certificateConfigPath;trustChainPath;cert;key;constructor(e){if(!e.useDefaultCertificateConfig&&!e.certificateConfigLocation)throw new Ft("Either `useDefaultCertificateConfig` must be true or a `certificateConfigLocation` must be provided.");if(e.useDefaultCertificateConfig&&e.certificateConfigLocation)throw new Ft("Both `useDefaultCertificateConfig` and `certificateConfigLocation` cannot be provided.");this.trustChainPath=e.trustChainPath,this.certificateConfigPath=e.certificateConfigLocation??""}async createMtlsHttpsAgent(){if(!this.key||!this.cert)throw new Ft("Cannot create mTLS Agent with missing certificate or key");return new ev.Agent({key:this.key,cert:this.cert})}async getSubjectToken(){this.certificateConfigPath=await this.#e();let{certPath:e,keyPath:n}=await this.#t();return{cert:this.cert,key:this.key}=await this.#n(e,n),await this.#r(this.cert)}async#e(){let e=this.certificateConfigPath;if(e){if(await(0,ma.isValidFile)(e))return e;throw new sn(`Provided certificate config path is invalid: ${e}`)}let n=process.env[kt.CERTIFICATE_CONFIGURATION_ENV_VARIABLE];if(n){if(await(0,ma.isValidFile)(n))return n;throw new sn(`Path from environment variable "${kt.CERTIFICATE_CONFIGURATION_ENV_VARIABLE}" is invalid: ${n}`)}let r=(0,ma.getWellKnownCertificateConfigFileLocation)();if(await(0,ma.isValidFile)(r))return r;throw new sn(`Could not find certificate configuration file. Searched override path, the "${kt.CERTIFICATE_CONFIGURATION_ENV_VARIABLE}" env var, and the gcloud path (${r}).`)}async#t(){let e=this.certificateConfigPath,n;try{n=await ga.promises.readFile(e,"utf8")}catch{throw new sn(`Failed to read certificate config file at: ${e}`)}try{let r=JSON.parse(n),o=r?.cert_configs?.workload?.cert_path,s=r?.cert_configs?.workload?.key_path;if(!o||!s)throw new Ft(`Certificate config file (${e}) is missing required "cert_path" or "key_path" in the workload config.`);return{certPath:o,keyPath:s}}catch(r){throw r instanceof Ft?r:new Ft(`Failed to parse certificate config from ${e}: ${r.message}`)}}async#n(e,n){let r,o;try{r=await ga.promises.readFile(e),new ya.X509Certificate(r)}catch(s){let a=s instanceof Error?s.message:String(s);throw new sn(`Failed to read certificate file at ${e}: ${a}`)}try{o=await ga.promises.readFile(n),(0,ya.createPrivateKey)(o)}catch(s){let a=s instanceof Error?s.message:String(s);throw new sn(`Failed to read private key file at ${n}: ${a}`)}return{cert:r,key:o}}async#r(e){let n=new ya.X509Certificate(e);if(!this.trustChainPath)return JSON.stringify([n.raw.toString("base64")]);try{let s=((await ga.promises.readFile(this.trustChainPath,"utf8")).match(/-----BEGIN CERTIFICATE-----[^-]+-----END CERTIFICATE-----/g)??[]).map((l,f)=>{try{return new ya.X509Certificate(l)}catch(d){let h=d instanceof Error?d.message:String(d);throw new Ft(`Failed to parse certificate at index ${f} in trust chain file ${this.trustChainPath}: ${h}`)}}),a=s.findIndex(l=>n.raw.equals(l.raw)),u;if(a===-1)u=[n,...s];else if(a===0)u=s;else throw new Ft(`Leaf certificate exists in the trust chain but is not the first entry (found at index ${a}).`);return JSON.stringify(u.map(l=>l.raw.toString("base64")))}catch(r){if(r instanceof Ft)throw r;let o=r instanceof Error?r.message:String(r);throw new sn(`Failed to process certificate chain from ${this.trustChainPath}: ${o}`)}}};kt.CertificateSubjectTokenSupplier=od});var ad=X(_a=>{"use strict";Object.defineProperty(_a,"__esModule",{value:!0});_a.IdentityPoolClient=void 0;var tv=Kn(),sd=Wt(),nv=i0(),rv=a0(),c0=u0(),ov=fa(),l0=Xe(),id=class t extends tv.BaseExternalAccountClient{subjectTokenSupplier;constructor(e){super(e);let n=(0,sd.originalOrCamelOptions)(e),r=n.get("credential_source"),o=n.get("subject_token_supplier");if(!r&&!o)throw new Error("A credential source or subject token supplier must be specified.");if(r&&o)throw new Error("Only one of credential source or subject token supplier can be specified.");if(o)this.subjectTokenSupplier=o,this.credentialSourceType="programmatic";else{let s=(0,sd.originalOrCamelOptions)(r),a=(0,sd.originalOrCamelOptions)(s.get("format")),u=a.get("type")||"text",l=a.get("subject_token_field_name");if(u!=="json"&&u!=="text")throw new Error(`Invalid credential_source format "${u}"`);if(u==="json"&&!l)throw new Error("Missing subject_token_field_name for JSON credential_source format");let f=s.get("file"),d=s.get("url"),h=s.get("certificate"),m=s.get("headers");if(f&&d||d&&h||f&&h)throw new Error('No valid Identity Pool "credential_source" provided, must be either file, url, or certificate.');if(f)this.credentialSourceType="file",this.subjectTokenSupplier=new nv.FileSubjectTokenSupplier({filePath:f,formatType:u,subjectTokenFieldName:l});else if(d)this.credentialSourceType="url",this.subjectTokenSupplier=new rv.UrlSubjectTokenSupplier({url:d,formatType:u,subjectTokenFieldName:l,headers:m,additionalGaxiosOptions:t.RETRY_CONFIG});else if(h){this.credentialSourceType="certificate";let C=new c0.CertificateSubjectTokenSupplier({useDefaultCertificateConfig:h.use_default_certificate_config,certificateConfigLocation:h.certificate_config_location,trustChainPath:h.trust_chain_path});this.subjectTokenSupplier=C}else throw new Error('No valid Identity Pool "credential_source" provided, must be either file, url, or certificate.')}}async retrieveSubjectToken(){let e=await this.subjectTokenSupplier.getSubjectToken(this.supplierContext);if(this.subjectTokenSupplier instanceof c0.CertificateSubjectTokenSupplier){let n=await this.subjectTokenSupplier.createMtlsHttpsAgent();this.stsCredential=new ov.StsCredentials({tokenExchangeEndpoint:this.getTokenUrl(),clientAuthentication:this.clientAuth,transporter:new l0.Gaxios({agent:n})}),this.transporter=new l0.Gaxios({...this.transporter.defaults||{},agent:n})}return e}};_a.IdentityPoolClient=id});var cd=X(Ca=>{"use strict";Object.defineProperty(Ca,"__esModule",{value:!0});Ca.AwsRequestSigner=void 0;var ba=Xe(),f0=Qo(),d0="AWS4-HMAC-SHA256",sv="aws4_request",ud=class{getCredentials;region;crypto;constructor(e,n){this.getCredentials=e,this.region=n,this.crypto=(0,f0.createCrypto)()}async getRequestOptions(e){if(!e.url)throw new RangeError('"url" is required in "amzOptions"');let n=typeof e.data=="object"?JSON.stringify(e.data):e.data,r=e.url,o=e.method||"GET",s=e.body||n,a=e.headers,u=await this.getCredentials(),l=new URL(r);if(typeof s!="string"&&s!==void 0)throw new TypeError(`'requestPayload' is expected to be a string if provided. Got: ${s}`);let f=await av({crypto:this.crypto,host:l.host,canonicalUri:l.pathname,canonicalQuerystring:l.search.slice(1),method:o,region:this.region,securityCredentials:u,requestPayload:s,additionalAmzHeaders:a}),d=ba.Gaxios.mergeHeaders(f.amzDate?{"x-amz-date":f.amzDate}:{},{authorization:f.authorizationHeader,host:l.host},a||{});u.token&&ba.Gaxios.mergeHeaders(d,{"x-amz-security-token":u.token});let h={url:r,method:o,headers:d};return s!==void 0&&(h.body=s),h}};Ca.AwsRequestSigner=ud;async function us(t,e,n){return await t.signWithHmacSha256(e,n)}async function iv(t,e,n,r,o){let s=await us(t,`AWS4${e}`,n),a=await us(t,s,r),u=await us(t,a,o);return await us(t,u,"aws4_request")}async function av(t){let e=ba.Gaxios.mergeHeaders(t.additionalAmzHeaders),n=t.requestPayload||"",r=t.host.split(".")[0],o=new Date,s=o.toISOString().replace(/[-:]/g,"").replace(/\.[0-9]+/,""),a=o.toISOString().replace(/[-]/g,"").replace(/T.*/,"");t.securityCredentials.token&&e.set("x-amz-security-token",t.securityCredentials.token);let u=ba.Gaxios.mergeHeaders({host:t.host},e.has("date")?{}:{"x-amz-date":s},e),l="",f=[...u.keys()].sort();f.forEach(E=>{l+=`${E}:${u.get(E)}
|
|
53
|
-
`});let d=f.join(";"),h=await t.crypto.sha256DigestHex(n),m=`${t.method.toUpperCase()}
|
|
54
|
-
${t.canonicalUri}
|
|
55
|
-
${t.canonicalQuerystring}
|
|
56
|
-
${l}
|
|
57
|
-
${d}
|
|
58
|
-
${h}`,C=`${a}/${t.region}/${r}/${sv}`,w=`${d0}
|
|
59
|
-
${s}
|
|
60
|
-
${C}
|
|
61
|
-
`+await t.crypto.sha256DigestHex(m),y=await iv(t.crypto,t.securityCredentials.secretAccessKey,a,t.region,r),g=await us(t.crypto,y,w),_=`${d0} Credential=${t.securityCredentials.accessKeyId}/${C}, SignedHeaders=${d}, Signature=${(0,f0.fromArrayBufferToHex)(g)}`;return{amzDate:e.has("date")?void 0:s,authorizationHeader:_,canonicalQuerystring:t.canonicalQuerystring}}});var h0=X(Ea=>{"use strict";Object.defineProperty(Ea,"__esModule",{value:!0});Ea.DefaultAwsSecurityCredentialsSupplier=void 0;var wa=bt(),ld=class{regionUrl;securityCredentialsUrl;imdsV2SessionTokenUrl;additionalGaxiosOptions;constructor(e){this.regionUrl=e.regionUrl,this.securityCredentialsUrl=e.securityCredentialsUrl,this.imdsV2SessionTokenUrl=e.imdsV2SessionTokenUrl,this.additionalGaxiosOptions=e.additionalGaxiosOptions}async getAwsRegion(e){if(this.#r)return this.#r;let n=new Headers;if(!this.#r&&this.imdsV2SessionTokenUrl&&n.set("x-aws-ec2-metadata-token",await this.#e(e.transporter)),!this.regionUrl)throw new RangeError('Unable to determine AWS region due to missing "options.credential_source.region_url"');let r={...this.additionalGaxiosOptions,url:this.regionUrl,method:"GET",headers:n};wa.AuthClient.setMethodName(r,"getAwsRegion");let o=await e.transporter.request(r);return o.data.substr(0,o.data.length-1)}async getAwsSecurityCredentials(e){if(this.#o)return this.#o;let n=new Headers;this.imdsV2SessionTokenUrl&&n.set("x-aws-ec2-metadata-token",await this.#e(e.transporter));let r=await this.#t(n,e.transporter),o=await this.#n(r,n,e.transporter);return{accessKeyId:o.AccessKeyId,secretAccessKey:o.SecretAccessKey,token:o.Token}}async#e(e){let n={...this.additionalGaxiosOptions,url:this.imdsV2SessionTokenUrl,method:"PUT",headers:{"x-aws-ec2-metadata-token-ttl-seconds":"300"}};return wa.AuthClient.setMethodName(n,"#getImdsV2SessionToken"),(await e.request(n)).data}async#t(e,n){if(!this.securityCredentialsUrl)throw new Error('Unable to determine AWS role name due to missing "options.credential_source.url"');let r={...this.additionalGaxiosOptions,url:this.securityCredentialsUrl,method:"GET",headers:e};return wa.AuthClient.setMethodName(r,"#getAwsRoleName"),(await n.request(r)).data}async#n(e,n,r){let o={...this.additionalGaxiosOptions,url:`${this.securityCredentialsUrl}/${e}`,headers:n};return wa.AuthClient.setMethodName(o,"#retrieveAwsSecurityCredentials"),(await r.request(o)).data}get#r(){return process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION||null}get#o(){return process.env.AWS_ACCESS_KEY_ID&&process.env.AWS_SECRET_ACCESS_KEY?{accessKeyId:process.env.AWS_ACCESS_KEY_ID,secretAccessKey:process.env.AWS_SECRET_ACCESS_KEY,token:process.env.AWS_SESSION_TOKEN}:null}};Ea.DefaultAwsSecurityCredentialsSupplier=ld});var fd=X(ka=>{"use strict";Object.defineProperty(ka,"__esModule",{value:!0});ka.AwsClient=void 0;var uv=cd(),cv=Kn(),lv=h0(),p0=Wt(),dv=Xe(),dd=class t extends cv.BaseExternalAccountClient{environmentId;awsSecurityCredentialsSupplier;regionalCredVerificationUrl;awsRequestSigner;region;static#e="https://sts.{region}.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15";static AWS_EC2_METADATA_IPV4_ADDRESS="169.254.169.254";static AWS_EC2_METADATA_IPV6_ADDRESS="fd00:ec2::254";constructor(e){super(e);let n=(0,p0.originalOrCamelOptions)(e),r=n.get("credential_source"),o=n.get("aws_security_credentials_supplier");if(!r&&!o)throw new Error("A credential source or AWS security credentials supplier must be specified.");if(r&&o)throw new Error("Only one of credential source or AWS security credentials supplier can be specified.");if(o)this.awsSecurityCredentialsSupplier=o,this.regionalCredVerificationUrl=t.#e,this.credentialSourceType="programmatic";else{let s=(0,p0.originalOrCamelOptions)(r);this.environmentId=s.get("environment_id");let a=s.get("region_url"),u=s.get("url"),l=s.get("imdsv2_session_token_url");this.awsSecurityCredentialsSupplier=new lv.DefaultAwsSecurityCredentialsSupplier({regionUrl:a,securityCredentialsUrl:u,imdsV2SessionTokenUrl:l}),this.regionalCredVerificationUrl=s.get("regional_cred_verification_url"),this.credentialSourceType="aws",this.validateEnvironmentId()}this.awsRequestSigner=null,this.region=""}validateEnvironmentId(){let e=this.environmentId?.match(/^(aws)(\d+)$/);if(!e||!this.regionalCredVerificationUrl)throw new Error('No valid AWS "credential_source" provided');if(parseInt(e[2],10)!==1)throw new Error(`aws version "${e[2]}" is not supported in the current build.`)}async retrieveSubjectToken(){this.awsRequestSigner||(this.region=await this.awsSecurityCredentialsSupplier.getAwsRegion(this.supplierContext),this.awsRequestSigner=new uv.AwsRequestSigner(async()=>this.awsSecurityCredentialsSupplier.getAwsSecurityCredentials(this.supplierContext),this.region));let e=await this.awsRequestSigner.getRequestOptions({...t.RETRY_CONFIG,url:this.regionalCredVerificationUrl.replace("{region}",this.region),method:"POST"}),n=[];return dv.Gaxios.mergeHeaders({"x-goog-cloud-target-resource":this.audience},e.headers).forEach((o,s)=>n.push({key:s,value:o})),encodeURIComponent(JSON.stringify({url:e.url,method:e.method,headers:n}))}};ka.AwsClient=dd});var yd=X($e=>{"use strict";Object.defineProperty($e,"__esModule",{value:!0});$e.InvalidSubjectTokenError=$e.InvalidMessageFieldError=$e.InvalidCodeFieldError=$e.InvalidTokenTypeFieldError=$e.InvalidExpirationTimeFieldError=$e.InvalidSuccessFieldError=$e.InvalidVersionFieldError=$e.ExecutableResponseError=$e.ExecutableResponse=void 0;var Aa="urn:ietf:params:oauth:token-type:saml2",hd="urn:ietf:params:oauth:token-type:id_token",pd="urn:ietf:params:oauth:token-type:jwt",md=class{version;success;expirationTime;tokenType;errorCode;errorMessage;subjectToken;constructor(e){if(!e.version)throw new Sa("Executable response must contain a 'version' field.");if(e.success===void 0)throw new va("Executable response must contain a 'success' field.");if(this.version=e.version,this.success=e.success,this.success){if(this.expirationTime=e.expiration_time,this.tokenType=e.token_type,this.tokenType!==Aa&&this.tokenType!==hd&&this.tokenType!==pd)throw new Ta(`Executable response must contain a 'token_type' field when successful and it must be one of ${hd}, ${pd}, or ${Aa}.`);if(this.tokenType===Aa){if(!e.saml_response)throw new cs(`Executable response must contain a 'saml_response' field when token_type=${Aa}.`);this.subjectToken=e.saml_response}else{if(!e.id_token)throw new cs(`Executable response must contain a 'id_token' field when token_type=${hd} or ${pd}.`);this.subjectToken=e.id_token}}else{if(!e.code)throw new Da("Executable response must contain a 'code' field when unsuccessful.");if(!e.message)throw new Ra("Executable response must contain a 'message' field when unsuccessful.");this.errorCode=e.code,this.errorMessage=e.message}}isValid(){return!this.isExpired()&&this.success}isExpired(){return this.expirationTime!==void 0&&this.expirationTime<Math.round(Date.now()/1e3)}};$e.ExecutableResponse=md;var an=class extends Error{constructor(e){super(e),Object.setPrototypeOf(this,new.target.prototype)}};$e.ExecutableResponseError=an;var Sa=class extends an{};$e.InvalidVersionFieldError=Sa;var va=class extends an{};$e.InvalidSuccessFieldError=va;var gd=class extends an{};$e.InvalidExpirationTimeFieldError=gd;var Ta=class extends an{};$e.InvalidTokenTypeFieldError=Ta;var Da=class extends an{};$e.InvalidCodeFieldError=Da;var Ra=class extends an{};$e.InvalidMessageFieldError=Ra;var cs=class extends an{};$e.InvalidSubjectTokenError=cs});var Cd=X(po=>{"use strict";Object.defineProperty(po,"__esModule",{value:!0});po.PluggableAuthHandler=po.ExecutableError=void 0;var br=yd(),fv=re("child_process"),_d=re("fs"),xa=class extends Error{code;constructor(e,n){super(`The executable failed with exit code: ${n} and error message: ${e}.`),this.code=n,Object.setPrototypeOf(this,new.target.prototype)}};po.ExecutableError=xa;var bd=class t{commandComponents;timeoutMillis;outputFile;constructor(e){if(!e.command)throw new Error("No command provided.");if(this.commandComponents=t.parseCommand(e.command),this.timeoutMillis=e.timeoutMillis,!this.timeoutMillis)throw new Error("No timeoutMillis provided.");this.outputFile=e.outputFile}retrieveResponseFromExecutable(e){return new Promise((n,r)=>{let o=fv.spawn(this.commandComponents[0],this.commandComponents.slice(1),{env:{...process.env,...Object.fromEntries(e)}}),s="";o.stdout.on("data",u=>{s+=u}),o.stderr.on("data",u=>{s+=u});let a=setTimeout(()=>(o.removeAllListeners(),o.kill(),r(new Error("The executable failed to finish within the timeout specified."))),this.timeoutMillis);o.on("close",u=>{if(clearTimeout(a),u===0)try{let l=JSON.parse(s),f=new br.ExecutableResponse(l);return n(f)}catch(l){return l instanceof br.ExecutableResponseError?r(l):r(new br.ExecutableResponseError(`The executable returned an invalid response: ${s}`))}else return r(new xa(s,u.toString()))})})}async retrieveCachedResponse(){if(!this.outputFile||this.outputFile.length===0)return;let e;try{e=await _d.promises.realpath(this.outputFile)}catch{return}if(!(await _d.promises.lstat(e)).isFile())return;let n=await _d.promises.readFile(e,{encoding:"utf8"});if(n!=="")try{let r=JSON.parse(n);return new br.ExecutableResponse(r).isValid()?new br.ExecutableResponse(r):void 0}catch(r){throw r instanceof br.ExecutableResponseError?r:new br.ExecutableResponseError(`The output file contained an invalid response: ${n}`)}}static parseCommand(e){let n=e.match(/(?:[^\s"]+|"[^"]*")+/g);if(!n)throw new Error(`Provided command: "${e}" could not be parsed.`);for(let r=0;r<n.length;r++)n[r][0]==='"'&&n[r].slice(-1)==='"'&&(n[r]=n[r].slice(1,-1));return n}};po.PluggableAuthHandler=bd});var Ed=X(mo=>{"use strict";Object.defineProperty(mo,"__esModule",{value:!0});mo.PluggableAuthClient=mo.ExecutableError=void 0;var hv=Kn(),pv=yd(),m0=Cd(),mv=Cd();Object.defineProperty(mo,"ExecutableError",{enumerable:!0,get:function(){return mv.ExecutableError}});var gv=30*1e3,g0=5*1e3,y0=120*1e3,yv="GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES",_0=1,wd=class extends hv.BaseExternalAccountClient{command;timeoutMillis;outputFile;handler;constructor(e){if(super(e),!e.credential_source.executable)throw new Error('No valid Pluggable Auth "credential_source" provided.');if(this.command=e.credential_source.executable.command,!this.command)throw new Error('No valid Pluggable Auth "credential_source" provided.');if(e.credential_source.executable.timeout_millis===void 0)this.timeoutMillis=gv;else if(this.timeoutMillis=e.credential_source.executable.timeout_millis,this.timeoutMillis<g0||this.timeoutMillis>y0)throw new Error(`Timeout must be between ${g0} and ${y0} milliseconds.`);this.outputFile=e.credential_source.executable.output_file,this.handler=new m0.PluggableAuthHandler({command:this.command,timeoutMillis:this.timeoutMillis,outputFile:this.outputFile}),this.credentialSourceType="executable"}async retrieveSubjectToken(){if(process.env[yv]!=="1")throw new Error("Pluggable Auth executables need to be explicitly allowed to run by setting the GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES environment Variable to 1.");let e;if(this.outputFile&&(e=await this.handler.retrieveCachedResponse()),!e){let n=new Map;n.set("GOOGLE_EXTERNAL_ACCOUNT_AUDIENCE",this.audience),n.set("GOOGLE_EXTERNAL_ACCOUNT_TOKEN_TYPE",this.subjectTokenType),n.set("GOOGLE_EXTERNAL_ACCOUNT_INTERACTIVE","0"),this.outputFile&&n.set("GOOGLE_EXTERNAL_ACCOUNT_OUTPUT_FILE",this.outputFile);let r=this.getServiceAccountEmail();r&&n.set("GOOGLE_EXTERNAL_ACCOUNT_IMPERSONATED_EMAIL",r),e=await this.handler.retrieveResponseFromExecutable(n)}if(e.version>_0)throw new Error(`Version of executable is not currently supported, maximum supported version is ${_0}.`);if(!e.success)throw new m0.ExecutableError(e.errorMessage,e.errorCode);if(this.outputFile&&!e.expirationTime)throw new pv.InvalidExpirationTimeFieldError("The executable response must contain the `expiration_time` field for successful responses when an output_file has been specified in the configuration.");if(e.isExpired())throw new Error("Executable response is expired.");return e.subjectToken}};mo.PluggableAuthClient=wd});var Ad=X(Oa=>{"use strict";Object.defineProperty(Oa,"__esModule",{value:!0});Oa.ExternalAccountClient=void 0;var _v=Kn(),bv=ad(),Cv=fd(),wv=Ed(),kd=class{constructor(){throw new Error("ExternalAccountClients should be initialized via: ExternalAccountClient.fromJSON(), directly via explicit constructors, eg. new AwsClient(options), new IdentityPoolClient(options), newPluggableAuthClientOptions, or via new GoogleAuth(options).getClient()")}static fromJSON(e){return console.warn("The `fromJSON` method does not validate the credential configuration. A security risk occurs when a credential configuration configured with malicious URLs is used. When the credential configuration is accepted from an untrusted source, you should validate it before using it with this method. For more details, see https://cloud.google.com/docs/authentication/external/externally-sourced-credentials."),e&&e.type===_v.EXTERNAL_ACCOUNT_TYPE?e.credential_source?.environment_id?new Cv.AwsClient(e):e.credential_source?.executable?new wv.PluggableAuthClient(e):new bv.IdentityPoolClient(e):null}};Oa.ExternalAccountClient=kd});var E0=X(go=>{"use strict";Object.defineProperty(go,"__esModule",{value:!0});go.ExternalAccountAuthorizedUserClient=go.EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE=void 0;var C0=bt(),b0=Kl(),w0=Xe(),Ev=re("stream"),kv=Kn();go.EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE="external_account_authorized_user";var Av="https://sts.{universeDomain}/v1/oauthtoken",Sd=class t extends b0.OAuthClientAuthHandler{#e;constructor(e){super(e),this.#e=e.tokenRefreshEndpoint}async refreshToken(e,n){let r={...t.RETRY_CONFIG,url:this.#e,method:"POST",headers:n,data:new URLSearchParams({grant_type:"refresh_token",refresh_token:e})};C0.AuthClient.setMethodName(r,"refreshToken"),this.applyClientAuthenticationOptions(r);try{let o=await this.transporter.request(r),s=o.data;return s.res=o,s}catch(o){throw o instanceof w0.GaxiosError&&o.response?(0,b0.getErrorFromOAuthErrorResponse)(o.response.data,o):o}}},vd=class extends C0.AuthClient{cachedAccessToken;externalAccountAuthorizedUserHandler;refreshToken;constructor(e){super(e),e.universe_domain&&(this.universeDomain=e.universe_domain),this.refreshToken=e.refresh_token;let n={confidentialClientType:"basic",clientId:e.client_id,clientSecret:e.client_secret};this.externalAccountAuthorizedUserHandler=new Sd({tokenRefreshEndpoint:e.token_url??Av.replace("{universeDomain}",this.universeDomain),transporter:this.transporter,clientAuthentication:n}),this.cachedAccessToken=null,this.quotaProjectId=e.quota_project_id,typeof e?.eagerRefreshThresholdMillis!="number"?this.eagerRefreshThresholdMillis=kv.EXPIRATION_TIME_OFFSET:this.eagerRefreshThresholdMillis=e.eagerRefreshThresholdMillis,this.forceRefreshOnFailure=!!e?.forceRefreshOnFailure}async getAccessToken(){return(!this.cachedAccessToken||this.isExpired(this.cachedAccessToken))&&await this.refreshAccessTokenAsync(),{token:this.cachedAccessToken.access_token,res:this.cachedAccessToken.res}}async getRequestHeaders(){let e=await this.getAccessToken(),n=new Headers({authorization:`Bearer ${e.token}`});return this.addSharedMetadataHeaders(n)}request(e,n){if(n)this.requestAsync(e).then(r=>n(null,r),r=>n(r,r.response));else return this.requestAsync(e)}async requestAsync(e,n=!1){let r;try{let o=await this.getRequestHeaders();e.headers=w0.Gaxios.mergeHeaders(e.headers),this.addUserProjectAndAuthHeaders(e.headers,o),r=await this.transporter.request(e)}catch(o){let s=o.response;if(s){let a=s.status,u=s.config.data instanceof Ev.Readable;if(!n&&(a===401||a===403)&&!u&&this.forceRefreshOnFailure)return await this.refreshAccessTokenAsync(),await this.requestAsync(e,!0)}throw o}return r}async refreshAccessTokenAsync(){let e=await this.externalAccountAuthorizedUserHandler.refreshToken(this.refreshToken);return this.cachedAccessToken={access_token:e.access_token,expiry_date:new Date().getTime()+e.expires_in*1e3,res:e.res},e.refresh_token!==void 0&&(this.refreshToken=e.refresh_token),this.cachedAccessToken}isExpired(e){let n=new Date().getTime();return e.expiry_date?n>=e.expiry_date-this.eagerRefreshThresholdMillis:!1}};go.ExternalAccountAuthorizedUserClient=vd});var v0=X(Kt=>{"use strict";Object.defineProperty(Kt,"__esModule",{value:!0});Kt.GoogleAuth=Kt.GoogleAuthExceptionMessages=void 0;var Sv=re("child_process"),ls=re("fs"),vv=Xe(),ds=Yo(),Tv=re("os"),Td=re("path"),Dv=Qo(),Rv=wl(),xv=kl(),Ov=Al(),yo=zl(),k0=Wl(),_o=Jl(),Pv=Ad(),fs=Kn(),Dd=bt(),A0=E0(),S0=Wt();Kt.GoogleAuthExceptionMessages={API_KEY_WITH_CREDENTIALS:"API Keys and Credentials are mutually exclusive authentication methods and cannot be used together.",NO_PROJECT_ID_FOUND:`Unable to detect a Project Id in the current environment.
|
|
62
|
-
To learn more about authentication and Google APIs, visit:
|
|
63
|
-
https://cloud.google.com/docs/authentication/getting-started`,NO_CREDENTIALS_FOUND:`Unable to find credentials in current environment.
|
|
64
|
-
To learn more about authentication and Google APIs, visit:
|
|
65
|
-
https://cloud.google.com/docs/authentication/getting-started`,NO_ADC_FOUND:"Could not load the default credentials. Browse to https://cloud.google.com/docs/authentication/getting-started for more information.",NO_UNIVERSE_DOMAIN_FOUND:`Unable to detect a Universe Domain in the current environment.
|
|
66
|
-
To learn more about Universe Domain retrieval, visit:
|
|
67
|
-
https://cloud.google.com/compute/docs/metadata/predefined-metadata-keys`};var Rd=class{checkIsGCE=void 0;useJWTAccessWithScope;defaultServicePath;get isGCE(){return this.checkIsGCE}_findProjectIdPromise;_cachedProjectId;jsonContent=null;apiKey;cachedCredential=null;#e=null;defaultScopes;keyFilename;scopes;clientOptions={};constructor(e={}){if(this._cachedProjectId=e.projectId||null,this.cachedCredential=e.authClient||null,this.keyFilename=e.keyFilename||e.keyFile,this.keyFilename&&console.warn("The `keyFilename` option is deprecated. Please use the `credentials` option instead. For more details, see https://cloud.google.com/docs/authentication/external/externally-sourced-credentials."),this.scopes=e.scopes,this.clientOptions=e.clientOptions||{},this.jsonContent=e.credentials||null,this.jsonContent&&console.warn("The `credentials` option is deprecated. Please use the `auth` object constructor instead. For more details, see https://cloud.google.com/docs/authentication/external/externally-sourced-credentials."),this.apiKey=e.apiKey||this.clientOptions.apiKey||null,this.apiKey&&(this.jsonContent||this.clientOptions.credentials))throw new RangeError(Kt.GoogleAuthExceptionMessages.API_KEY_WITH_CREDENTIALS);e.universeDomain&&(this.clientOptions.universeDomain=e.universeDomain)}setGapicJWTValues(e){e.defaultServicePath=this.defaultServicePath,e.useJWTAccessWithScope=this.useJWTAccessWithScope,e.defaultScopes=this.defaultScopes}getProjectId(e){if(e)this.getProjectIdAsync().then(n=>e(null,n),e);else return this.getProjectIdAsync()}async getProjectIdOptional(){try{return await this.getProjectId()}catch(e){if(e instanceof Error&&e.message===Kt.GoogleAuthExceptionMessages.NO_PROJECT_ID_FOUND)return null;throw e}}async findAndCacheProjectId(){let e=null;if(e||=await this.getProductionProjectId(),e||=await this.getFileProjectId(),e||=await this.getDefaultServiceProjectId(),e||=await this.getGCEProjectId(),e||=await this.getExternalAccountClientProjectId(),e)return this._cachedProjectId=e,e;throw new Error(Kt.GoogleAuthExceptionMessages.NO_PROJECT_ID_FOUND)}async getProjectIdAsync(){return this._cachedProjectId?this._cachedProjectId:(this._findProjectIdPromise||(this._findProjectIdPromise=this.findAndCacheProjectId()),this._findProjectIdPromise)}async getUniverseDomainFromMetadataServer(){let e;try{e=await ds.universe("universe-domain"),e||=Dd.DEFAULT_UNIVERSE}catch(n){if(n&&n?.response?.status===404)e=Dd.DEFAULT_UNIVERSE;else throw n}return e}async getUniverseDomain(){let e=(0,S0.originalOrCamelOptions)(this.clientOptions).get("universe_domain");try{e??=(await this.getClient()).universeDomain}catch{e??=Dd.DEFAULT_UNIVERSE}return e}getAnyScopes(){return this.scopes||this.defaultScopes}getApplicationDefault(e={},n){let r;if(typeof e=="function"?n=e:r=e,n)this.getApplicationDefaultAsync(r).then(o=>n(null,o.credential,o.projectId),n);else return this.getApplicationDefaultAsync(r)}async getApplicationDefaultAsync(e={}){if(this.cachedCredential)return await this.#t(this.cachedCredential,null);let n;if(n=await this._tryGetApplicationCredentialsFromEnvironmentVariable(e),n)return n instanceof yo.JWT?n.scopes=this.scopes:n instanceof fs.BaseExternalAccountClient&&(n.scopes=this.getAnyScopes()),await this.#t(n);if(n=await this._tryGetApplicationCredentialsFromWellKnownFile(e),n)return n instanceof yo.JWT?n.scopes=this.scopes:n instanceof fs.BaseExternalAccountClient&&(n.scopes=this.getAnyScopes()),await this.#t(n);if(await this._checkIsGCE())return e.scopes=this.getAnyScopes(),await this.#t(new Rv.Compute(e));throw new Error(Kt.GoogleAuthExceptionMessages.NO_ADC_FOUND)}async#t(e,n=process.env.GOOGLE_CLOUD_QUOTA_PROJECT||null){let r=await this.getProjectIdOptional();return n&&(e.quotaProjectId=n),this.cachedCredential=e,{credential:e,projectId:r}}async _checkIsGCE(){return this.checkIsGCE===void 0&&(this.checkIsGCE=ds.getGCPResidency()||await ds.isAvailable()),this.checkIsGCE}async _tryGetApplicationCredentialsFromEnvironmentVariable(e){let n=process.env.GOOGLE_APPLICATION_CREDENTIALS||process.env.google_application_credentials;if(!n||n.length===0)return null;try{return this._getApplicationCredentialsFromFilePath(n,e)}catch(r){throw r instanceof Error&&(r.message=`Unable to read the credential file specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable: ${r.message}`),r}}async _tryGetApplicationCredentialsFromWellKnownFile(e){let n=null;if(this._isWindows())n=process.env.APPDATA;else{let o=process.env.HOME;o&&(n=Td.join(o,".config"))}return n&&(n=Td.join(n,"gcloud","application_default_credentials.json"),ls.existsSync(n)||(n=null)),n?await this._getApplicationCredentialsFromFilePath(n,e):null}async _getApplicationCredentialsFromFilePath(e,n={}){if(!e||e.length===0)throw new Error("The file path is invalid.");try{if(e=ls.realpathSync(e),!ls.lstatSync(e).isFile())throw new Error}catch(o){throw o instanceof Error&&(o.message=`The file at ${e} does not exist, or it is not a file. ${o.message}`),o}let r=ls.createReadStream(e);return this.fromStream(r,n)}fromImpersonatedJSON(e){if(!e)throw new Error("Must pass in a JSON object containing an impersonated refresh token");if(e.type!==_o.IMPERSONATED_ACCOUNT_TYPE)throw new Error(`The incoming JSON object does not have the "${_o.IMPERSONATED_ACCOUNT_TYPE}" type`);if(!e.source_credentials)throw new Error("The incoming JSON object does not contain a source_credentials field");if(!e.service_account_impersonation_url)throw new Error("The incoming JSON object does not contain a service_account_impersonation_url field");let n=this.fromJSON(e.source_credentials);if(e.service_account_impersonation_url?.length>256)throw new RangeError(`Target principal is too long: ${e.service_account_impersonation_url}`);let r=/(?<target>[^/]+):(generateAccessToken|generateIdToken)$/.exec(e.service_account_impersonation_url)?.groups?.target;if(!r)throw new RangeError(`Cannot extract target principal from ${e.service_account_impersonation_url}`);let o=this.getAnyScopes()??[];return new _o.Impersonated({...e,sourceClient:n,targetPrincipal:r,targetScopes:Array.isArray(o)?o:[o]})}fromJSON(e,n={}){console.warn("The `fromJSON` method is deprecated. Please use the `JWT` constructor instead. For more details, see https://cloud.google.com/docs/authentication/external/externally-sourced-credentials.");let r,o=(0,S0.originalOrCamelOptions)(n).get("universe_domain");return e.type===k0.USER_REFRESH_ACCOUNT_TYPE?(r=new k0.UserRefreshClient(n),r.fromJSON(e)):e.type===_o.IMPERSONATED_ACCOUNT_TYPE?r=this.fromImpersonatedJSON(e):e.type===fs.EXTERNAL_ACCOUNT_TYPE?(r=Pv.ExternalAccountClient.fromJSON({...e,...n}),r.scopes=this.getAnyScopes()):e.type===A0.EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE?r=new A0.ExternalAccountAuthorizedUserClient({...e,...n}):(n.scopes=this.scopes,r=new yo.JWT(n),this.setGapicJWTValues(r),r.fromJSON(e)),o&&(r.universeDomain=o),r}_cacheClientFromJSON(e,n){let r=this.fromJSON(e,n);return this.jsonContent=e,this.cachedCredential=r,r}fromStream(e,n={},r){console.warn("The `fromStream` method is deprecated. Please use the `JWT` constructor with a parsed stream instead. For more details, see https://cloud.google.com/docs/authentication/external/externally-sourced-credentials.");let o={};if(typeof n=="function"?r=n:o=n,r)this.fromStreamAsync(e,o).then(s=>r(null,s),r);else return this.fromStreamAsync(e,o)}fromStreamAsync(e,n){return new Promise((r,o)=>{if(!e)throw new Error("Must pass in a stream containing the Google auth settings.");let s=[];e.setEncoding("utf8").on("error",o).on("data",a=>s.push(a)).on("end",()=>{try{try{let a=JSON.parse(s.join("")),u=this._cacheClientFromJSON(a,n);return r(u)}catch(a){if(!this.keyFilename)throw a;let u=new yo.JWT({...this.clientOptions,keyFile:this.keyFilename});return this.cachedCredential=u,this.setGapicJWTValues(u),r(u)}}catch(a){return o(a)}})})}fromAPIKey(e,n={}){return new yo.JWT({...n,apiKey:e})}_isWindows(){let e=Tv.platform();return!!(e&&e.length>=3&&e.substring(0,3).toLowerCase()==="win")}async getDefaultServiceProjectId(){return new Promise(e=>{(0,Sv.exec)("gcloud config config-helper --format json",(n,r)=>{if(!n&&r)try{let o=JSON.parse(r).configuration.properties.core.project;e(o);return}catch{}e(null)})})}getProductionProjectId(){return process.env.GCLOUD_PROJECT||process.env.GOOGLE_CLOUD_PROJECT||process.env.gcloud_project||process.env.google_cloud_project}async getFileProjectId(){if(this.cachedCredential)return this.cachedCredential.projectId;if(this.keyFilename){let n=await this.getClient();if(n&&n.projectId)return n.projectId}let e=await this._tryGetApplicationCredentialsFromEnvironmentVariable();return e?e.projectId:null}async getExternalAccountClientProjectId(){return!this.jsonContent||this.jsonContent.type!==fs.EXTERNAL_ACCOUNT_TYPE?null:await(await this.getClient()).getProjectId()}async getGCEProjectId(){try{return await ds.project("project-id")}catch{return null}}getCredentials(e){if(e)this.getCredentialsAsync().then(n=>e(null,n),e);else return this.getCredentialsAsync()}async getCredentialsAsync(){let e=await this.getClient();if(e instanceof _o.Impersonated)return{client_email:e.getTargetPrincipal()};if(e instanceof fs.BaseExternalAccountClient){let n=e.getServiceAccountEmail();if(n)return{client_email:n,universe_domain:e.universeDomain}}if(this.jsonContent)return{client_email:this.jsonContent.client_email,private_key:this.jsonContent.private_key,universe_domain:this.jsonContent.universe_domain};if(await this._checkIsGCE()){let[n,r]=await Promise.all([ds.instance("service-accounts/default/email"),this.getUniverseDomain()]);return{client_email:n,universe_domain:r}}throw new Error(Kt.GoogleAuthExceptionMessages.NO_CREDENTIALS_FOUND)}async getClient(){if(this.cachedCredential)return this.cachedCredential;this.#e=this.#e||this.#n();try{return await this.#e}finally{this.#e=null}}async#n(){if(this.jsonContent)return this._cacheClientFromJSON(this.jsonContent,this.clientOptions);if(this.keyFilename){let e=Td.resolve(this.keyFilename),n=ls.createReadStream(e);return await this.fromStreamAsync(n,this.clientOptions)}else if(this.apiKey){let e=await this.fromAPIKey(this.apiKey,this.clientOptions);e.scopes=this.scopes;let{credential:n}=await this.#t(e);return n}else{let{credential:e}=await this.getApplicationDefaultAsync(this.clientOptions);return e}}async getIdTokenClient(e){let n=await this.getClient();if(!("fetchIdToken"in n))throw new Error("Cannot fetch ID token in this environment, use GCE or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to a service account credentials JSON file.");return new xv.IdTokenClient({targetAudience:e,idTokenProvider:n})}async getAccessToken(){return(await(await this.getClient()).getAccessToken()).token}async getRequestHeaders(e){return(await this.getClient()).getRequestHeaders(e)}async authorizeRequest(e={}){let n=e.url,o=await(await this.getClient()).getRequestHeaders(n);return e.headers=vv.Gaxios.mergeHeaders(e.headers,o),e}async fetch(...e){return(await this.getClient()).fetch(...e)}async request(e){return(await this.getClient()).request(e)}getEnv(){return(0,Ov.getEnv)()}async sign(e,n){let r=await this.getClient(),o=await this.getUniverseDomain();if(n=n||`https://iamcredentials.${o}/v1/projects/-/serviceAccounts/`,r instanceof _o.Impersonated)return(await r.sign(e)).signedBlob;let s=(0,Dv.createCrypto)();if(r instanceof yo.JWT&&r.key)return await s.sign(r.key,e);let a=await this.getCredentials();if(!a.client_email)throw new Error("Cannot sign data without `client_email`.");return this.signBlob(s,a.client_email,e,n)}async signBlob(e,n,r,o){let s=new URL(o+`${n}:signBlob`);return(await this.request({method:"POST",url:s.href,data:{payload:e.encodeBase64StringUtf8(r)},retry:!0,retryConfig:{httpMethodsToRetry:["POST"]}})).data.signedBlob}};Kt.GoogleAuth=Rd});var T0=X(Pa=>{"use strict";Object.defineProperty(Pa,"__esModule",{value:!0});Pa.IAMAuth=void 0;var xd=class{selector;token;constructor(e,n){this.selector=e,this.token=n,this.selector=e,this.token=n}getRequestHeaders(){return{"x-goog-iam-authority-selector":this.selector,"x-goog-iam-authorization-token":this.token}}};Pa.IAMAuth=xd});var D0=X(un=>{"use strict";Object.defineProperty(un,"__esModule",{value:!0});un.DownscopedClient=un.EXPIRATION_TIME_OFFSET=un.MAX_ACCESS_BOUNDARY_RULES_COUNT=void 0;var Fv=Xe(),Iv=re("stream"),Od=bt(),Nv=fa(),Bv="urn:ietf:params:oauth:grant-type:token-exchange",Mv="urn:ietf:params:oauth:token-type:access_token",Lv="urn:ietf:params:oauth:token-type:access_token";un.MAX_ACCESS_BOUNDARY_RULES_COUNT=10;un.EXPIRATION_TIME_OFFSET=300*1e3;var Pd=class extends Od.AuthClient{authClient;credentialAccessBoundary;cachedDownscopedAccessToken;stsCredential;constructor(e,n={accessBoundary:{accessBoundaryRules:[]}}){if(super(e instanceof Od.AuthClient?{}:e),e instanceof Od.AuthClient?(this.authClient=e,this.credentialAccessBoundary=n):(this.authClient=e.authClient,this.credentialAccessBoundary=e.credentialAccessBoundary),this.credentialAccessBoundary.accessBoundary.accessBoundaryRules.length===0)throw new Error("At least one access boundary rule needs to be defined.");if(this.credentialAccessBoundary.accessBoundary.accessBoundaryRules.length>un.MAX_ACCESS_BOUNDARY_RULES_COUNT)throw new Error(`The provided access boundary has more than ${un.MAX_ACCESS_BOUNDARY_RULES_COUNT} access boundary rules.`);for(let r of this.credentialAccessBoundary.accessBoundary.accessBoundaryRules)if(r.availablePermissions.length===0)throw new Error("At least one permission should be defined in access boundary rules.");this.stsCredential=new Nv.StsCredentials({tokenExchangeEndpoint:`https://sts.${this.universeDomain}/v1/token`}),this.cachedDownscopedAccessToken=null}setCredentials(e){if(!e.expiry_date)throw new Error("The access token expiry_date field is missing in the provided credentials.");super.setCredentials(e),this.cachedDownscopedAccessToken=e}async getAccessToken(){return(!this.cachedDownscopedAccessToken||this.isExpired(this.cachedDownscopedAccessToken))&&await this.refreshAccessTokenAsync(),{token:this.cachedDownscopedAccessToken.access_token,expirationTime:this.cachedDownscopedAccessToken.expiry_date,res:this.cachedDownscopedAccessToken.res}}async getRequestHeaders(){let e=await this.getAccessToken(),n=new Headers({authorization:`Bearer ${e.token}`});return this.addSharedMetadataHeaders(n)}request(e,n){if(n)this.requestAsync(e).then(r=>n(null,r),r=>n(r,r.response));else return this.requestAsync(e)}async requestAsync(e,n=!1){let r;try{let o=await this.getRequestHeaders();e.headers=Fv.Gaxios.mergeHeaders(e.headers),this.addUserProjectAndAuthHeaders(e.headers,o),r=await this.transporter.request(e)}catch(o){let s=o.response;if(s){let a=s.status,u=s.config.data instanceof Iv.Readable;if(!n&&(a===401||a===403)&&!u&&this.forceRefreshOnFailure)return await this.refreshAccessTokenAsync(),await this.requestAsync(e,!0)}throw o}return r}async refreshAccessTokenAsync(){let e=(await this.authClient.getAccessToken()).token,n={grantType:Bv,requestedTokenType:Mv,subjectToken:e,subjectTokenType:Lv},r=await this.stsCredential.exchangeToken(n,void 0,this.credentialAccessBoundary),o=this.authClient.credentials?.expiry_date||null,s=r.expires_in?new Date().getTime()+r.expires_in*1e3:o;return this.cachedDownscopedAccessToken={access_token:r.access_token,expiry_date:s,res:r.res},this.credentials={},Object.assign(this.credentials,this.cachedDownscopedAccessToken),delete this.credentials.res,this.emit("tokens",{refresh_token:null,expiry_date:this.cachedDownscopedAccessToken.expiry_date,access_token:this.cachedDownscopedAccessToken.access_token,token_type:"Bearer",id_token:null}),this.cachedDownscopedAccessToken}isExpired(e){let n=new Date().getTime();return e.expiry_date?n>=e.expiry_date-this.eagerRefreshThresholdMillis:!1}};un.DownscopedClient=Pd});var R0=X(Fa=>{"use strict";Object.defineProperty(Fa,"__esModule",{value:!0});Fa.PassThroughClient=void 0;var jv=bt(),Fd=class extends jv.AuthClient{async request(e){return this.transporter.request(e)}async getAccessToken(){return{}}async getRequestHeaders(){return new Headers}};Fa.PassThroughClient=Fd});var Nd=X(le=>{"use strict";Object.defineProperty(le,"__esModule",{value:!0});le.GoogleAuth=le.auth=le.PassThroughClient=le.ExecutableError=le.PluggableAuthClient=le.DownscopedClient=le.BaseExternalAccountClient=le.ExternalAccountClient=le.IdentityPoolClient=le.AwsRequestSigner=le.AwsClient=le.UserRefreshClient=le.LoginTicket=le.ClientAuthentication=le.OAuth2Client=le.CodeChallengeMethod=le.Impersonated=le.JWT=le.JWTAccess=le.IdTokenClient=le.IAMAuth=le.GCPEnv=le.Compute=le.DEFAULT_UNIVERSE=le.AuthClient=le.gaxios=le.gcpMetadata=void 0;var x0=v0();Object.defineProperty(le,"GoogleAuth",{enumerable:!0,get:function(){return x0.GoogleAuth}});le.gcpMetadata=Yo();le.gaxios=Xe();var O0=bt();Object.defineProperty(le,"AuthClient",{enumerable:!0,get:function(){return O0.AuthClient}});Object.defineProperty(le,"DEFAULT_UNIVERSE",{enumerable:!0,get:function(){return O0.DEFAULT_UNIVERSE}});var Uv=wl();Object.defineProperty(le,"Compute",{enumerable:!0,get:function(){return Uv.Compute}});var $v=Al();Object.defineProperty(le,"GCPEnv",{enumerable:!0,get:function(){return $v.GCPEnv}});var qv=T0();Object.defineProperty(le,"IAMAuth",{enumerable:!0,get:function(){return qv.IAMAuth}});var zv=kl();Object.defineProperty(le,"IdTokenClient",{enumerable:!0,get:function(){return zv.IdTokenClient}});var Hv=$l();Object.defineProperty(le,"JWTAccess",{enumerable:!0,get:function(){return Hv.JWTAccess}});var Wv=zl();Object.defineProperty(le,"JWT",{enumerable:!0,get:function(){return Wv.JWT}});var Gv=Jl();Object.defineProperty(le,"Impersonated",{enumerable:!0,get:function(){return Gv.Impersonated}});var Id=_r();Object.defineProperty(le,"CodeChallengeMethod",{enumerable:!0,get:function(){return Id.CodeChallengeMethod}});Object.defineProperty(le,"OAuth2Client",{enumerable:!0,get:function(){return Id.OAuth2Client}});Object.defineProperty(le,"ClientAuthentication",{enumerable:!0,get:function(){return Id.ClientAuthentication}});var Jv=yl();Object.defineProperty(le,"LoginTicket",{enumerable:!0,get:function(){return Jv.LoginTicket}});var Vv=Wl();Object.defineProperty(le,"UserRefreshClient",{enumerable:!0,get:function(){return Vv.UserRefreshClient}});var Kv=fd();Object.defineProperty(le,"AwsClient",{enumerable:!0,get:function(){return Kv.AwsClient}});var Yv=cd();Object.defineProperty(le,"AwsRequestSigner",{enumerable:!0,get:function(){return Yv.AwsRequestSigner}});var Qv=ad();Object.defineProperty(le,"IdentityPoolClient",{enumerable:!0,get:function(){return Qv.IdentityPoolClient}});var Xv=Ad();Object.defineProperty(le,"ExternalAccountClient",{enumerable:!0,get:function(){return Xv.ExternalAccountClient}});var Zv=Kn();Object.defineProperty(le,"BaseExternalAccountClient",{enumerable:!0,get:function(){return Zv.BaseExternalAccountClient}});var eT=D0();Object.defineProperty(le,"DownscopedClient",{enumerable:!0,get:function(){return eT.DownscopedClient}});var P0=Ed();Object.defineProperty(le,"PluggableAuthClient",{enumerable:!0,get:function(){return P0.PluggableAuthClient}});Object.defineProperty(le,"ExecutableError",{enumerable:!0,get:function(){return P0.ExecutableError}});var tT=R0();Object.defineProperty(le,"PassThroughClient",{enumerable:!0,get:function(){return tT.PassThroughClient}});var nT=new x0.GoogleAuth;le.auth=nT});var d_=X((WN,pf)=>{"use strict";var qR=/at\s(?:.*\.)?plugin\s.*\n\s*(.*)/,zR=/(\w*(\.\w*)*)\..*/;pf.exports=function(e){if(e.name.length>0)return e.name;let n=Error.stackTraceLimit;Error.stackTraceLimit=10;try{throw new Error("anonymous function")}catch(r){return Error.stackTraceLimit=n,l_(r.stack)}};function l_(t){let e=t.match(qR);return e?e[1].split(/[/\\]/).slice(-1)[0].match(zR)[1]:"anonymous"}pf.exports.extractPluginName=l_});var h_=X((GN,f_)=>{"use strict";f_.exports=function(e){return e[0]==="@"&&(e=e.slice(1).replace("/","-")),e.replace(/-(.)/g,function(n,r){return r.toUpperCase()})}});var p_=X((JN,cu)=>{"use strict";var HR=d_(),WR=h_(),GR=0;function mf(t,e={}){let n=!1;if(t.default!==void 0&&(t=t.default),typeof t!="function")throw new TypeError(`fastify-plugin expects a function, instead got a '${typeof t}'`);if(typeof e=="string"&&(e={fastify:e}),typeof e!="object"||Array.isArray(e)||e===null)throw new TypeError("The options object should be an object");if(e.fastify!==void 0&&typeof e.fastify!="string")throw new TypeError(`fastify-plugin expects a version string, instead got '${typeof e.fastify}'`);e.name||(n=!0,e.name=HR(t)+"-auto-"+GR++),t[Symbol.for("skip-override")]=e.encapsulate!==!0,t[Symbol.for("fastify.display-name")]=e.name,t[Symbol.for("plugin-meta")]=e,t.default||(t.default=t);let r=WR(e.name);return!n&&!t[r]&&(t[r]=t),t}cu.exports=mf;cu.exports.default=mf;cu.exports.fastifyPlugin=mf});var bs,gf=Le(()=>{"use strict";bs=class{type="console";config;colors={reset:"\x1B[0m",bright:"\x1B[1m",dim:"\x1B[2m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m"};constructor(e={}){this.config={colors:!0,level:"log",...e}}formatData(e,n){let{format:r="text",timestamp:o=!0,prefix:s,metadata:a}=n||{},u="";if(o){let l=new Date().toISOString();u+=this.config.colors?`${this.colors.cyan}[${l}]${this.colors.reset} `:`[${l}] `}switch(s&&(u+=this.config.colors?`${this.colors.bright}${s}${this.colors.reset} `:`${s} `),r){case"json":u+=JSON.stringify(e,null,2);break;case"markdown":typeof e=="object"?u+=this.toMarkdown(e):u+=String(e);break;case"text":default:typeof e=="object"?u+=JSON.stringify(e,null,2):u+=String(e);break}return a&&Object.keys(a).length>0&&(u+=`
|
|
68
|
-
`+(this.config.colors?`${this.colors.dim}`:""),u+="Metadata: "+JSON.stringify(a,null,2),this.config.colors&&(u+=this.colors.reset)),u}toMarkdown(e,n=0){let r=" ".repeat(n);return Array.isArray(e)?e.map(o=>typeof o=="object"?`${r}-
|
|
69
|
-
${this.toMarkdown(o,n+1)}`:`${r}- ${o}`).join(`
|
|
70
|
-
`):typeof e=="object"&&e!==null?Object.entries(e).map(([o,s])=>typeof s=="object"&&s!==null?`${r}${o}:
|
|
71
|
-
${this.toMarkdown(s,n+1)}`:`${r}${o}: ${s}`).join(`
|
|
72
|
-
`):`${r}${e}`}async output(e,n={}){try{let r=this.formatData(e,n);switch(this.config.level||"log"){case"info":console.info(r);break;case"warn":console.warn(r);break;case"error":console.error(r);break;case"debug":console.debug(r);break;case"log":default:console.log(r);break}return!0}catch(r){return console.error("[ConsoleOutputHandler] Output failed:",r),!1}}}});var Cs,yf=Le(()=>{"use strict";Cs=class{type="webhook";config;defaultTimeout=3e4;constructor(e){if(!e.url)throw new Error("Webhook URL is required");this.config={method:"POST",retry:{maxAttempts:3,backoffMs:1e3},silent:!1,...e}}buildHeaders(){let e={"Content-Type":"application/json",...this.config.headers||{}};if(this.config.auth)switch(this.config.auth.type){case"bearer":this.config.auth.token&&(e.Authorization=`Bearer ${this.config.auth.token}`);break;case"basic":if(this.config.auth.username&&this.config.auth.password){let n=Buffer.from(`${this.config.auth.username}:${this.config.auth.password}`).toString("base64");e.Authorization=`Basic ${n}`}break;case"custom":this.config.auth.custom&&(e[this.config.auth.custom.header]=this.config.auth.custom.value);break}return e}buildBody(e,n){let{format:r="json",timestamp:o=!0,prefix:s,metadata:a}=n||{},u={data:e};return o&&(u.timestamp=new Date().toISOString()),s&&(u.prefix=s),a&&Object.keys(a).length>0&&(u.metadata=a),u}async sendRequest(e,n,r,o,s){let a=new AbortController,u=setTimeout(()=>a.abort(),s);try{let l=await fetch(e,{method:n,headers:r,body:JSON.stringify(o),signal:a.signal});if(clearTimeout(u),!l.ok)throw new Error(`HTTP ${l.status}: ${l.statusText}`);return l}catch(l){throw clearTimeout(u),l}}delay(e){return new Promise(n=>setTimeout(n,e))}async sendWithRetry(e,n,r,o,s,a){let u=null;for(let l=1;l<=a.maxAttempts;l++)try{return await this.sendRequest(e,n,r,o,s)}catch(f){if(u=f,l===a.maxAttempts)break;let d=a.backoffMs*Math.pow(2,l-1);console.warn(`[WebhookOutputHandler] Request failed (attempt ${l}/${a.maxAttempts}), retrying in ${d}ms...`,f.message),await this.delay(d)}throw u}async output(e,n={}){let r=n.timeout||this.defaultTimeout;try{let o=this.buildHeaders(),s=this.buildBody(e,n),a=await this.sendWithRetry(this.config.url,this.config.method,o,s,r,this.config.retry);return!0}catch(o){let s=o instanceof Error?o.message:String(o);if(this.config.silent)return console.error(`[WebhookOutputHandler] Failed to send data: ${s}`),!1;throw new Error(`Webhook output failed: ${s}`)}}}});import{writeFileSync as JR,existsSync as VR,mkdirSync as KR}from"fs";import{join as g_}from"path";import{tmpdir as YR}from"os";var ws,_f=Le(()=>{"use strict";ws=class{type="temp-file";config;baseDir;constructor(e={}){this.config={subdirectory:"claude-code-router",extension:"json",includeTimestamp:!1,prefix:"session",...e};let n=YR();this.baseDir=g_(n,this.config.subdirectory),this.ensureDir()}ensureDir(){try{VR(this.baseDir)||KR(this.baseDir,{recursive:!0})}catch{}}getFilePath(e){let n=this.config.prefix||"session",r=this.config.extension?`.${this.config.extension}`:"",o;if(this.config.includeTimestamp){let s=Date.now();o=`${n}-${e}-${s}${r}`}else o=`${n}-${e}${r}`;return g_(this.baseDir,o)}async output(e,n={}){try{let r=n.metadata?.sessionId;if(!r)return!1;let o={...e,timestamp:Date.now(),sessionId:r},s=this.getFilePath(r);return JR(s,JSON.stringify(o,null,2),"utf-8"),!0}catch{return!1}}getBaseDir(){return this.baseDir}}});var bf,ko,y_=Le(()=>{"use strict";gf();yf();_f();bf=class{handlers=new Map;defaultOptions={};registerHandler(e,n){this.handlers.set(e,n)}registerHandlers(e){for(let n of e)if(n.enabled!==!1)try{let r=this.createHandler(n),o=n.type+"_"+Date.now();this.registerHandler(o,r)}catch(r){console.error(`[OutputManager] Failed to register ${n.type} handler:`,r)}}createHandler(e){switch(e.type){case"console":return new bs(e.config);case"webhook":return new Cs(e.config);case"temp-file":return new ws(e.config);default:throw new Error(`Unknown output handler type: ${e.type}`)}}unregisterHandler(e){return this.handlers.delete(e)}getHandler(e){return this.handlers.get(e)}getAllHandlers(){return new Map(this.handlers)}clearHandlers(){this.handlers.clear()}setDefaultOptions(e){this.defaultOptions={...this.defaultOptions,...e}}getDefaultOptions(){return{...this.defaultOptions}}async output(e,n){let r={...this.defaultOptions,...n},o={success:[],failed:[]},s=Array.from(this.handlers.entries()).map(async([a,u])=>{try{await u.output(e,r)?o.success.push(a):o.failed.push(a)}catch(l){console.error(`[OutputManager] Handler ${a} failed:`,l),o.failed.push(a)}});return await Promise.all(s),o}async outputTo(e,n,r){let o={...this.defaultOptions,...r},s={success:[],failed:[]},a=e.map(async u=>{let l=this.handlers.get(u);if(!l){console.warn(`[OutputManager] Handler ${u} not found`),s.failed.push(u);return}try{await l.output(n,o)?s.success.push(u):s.failed.push(u)}catch(f){console.error(`[OutputManager] Handler ${u} failed:`,f),s.failed.push(u)}});return await Promise.all(a),s}async outputToType(e,n,r){let o=Array.from(this.handlers.entries()).filter(([s,a])=>a.type===e).map(([s])=>s);return this.outputTo(o,n,r)}},ko=new bf});import XR from"fastify";import ZR from"@fastify/cors";var Mh=Ln(Ju(),1);import{readFileSync as yC,existsSync as Nh}from"fs";import{join as Bh}from"path";import{config as _C}from"dotenv";var Ir=class{config={};options;constructor(e={jsonPath:"./config.json"}){this.options={envPath:e.envPath||".env",jsonPath:e.jsonPath,useEnvFile:!1,useJsonFile:e.useJsonFile!==!1,useEnvironmentVariables:e.useEnvironmentVariables!==!1,...e},this.loadConfig()}loadConfig(){this.options.useJsonFile&&this.options.jsonPath&&this.loadJsonConfig(),this.options.initialConfig&&(this.config={...this.config,...this.options.initialConfig}),this.options.useEnvFile&&this.loadEnvConfig(),this.config.LOG_FILE&&(process.env.LOG_FILE=this.config.LOG_FILE),this.config.LOG&&(process.env.LOG=this.config.LOG)}loadJsonConfig(){if(!this.options.jsonPath)return;let e=this.isAbsolutePath(this.options.jsonPath)?this.options.jsonPath:Bh(process.cwd(),this.options.jsonPath);if(Nh(e))try{let n=yC(e,"utf-8"),r=Mh.default.parse(n);this.config={...this.config,...r},console.log(`Loaded JSON config from: ${e}`)}catch(n){console.warn(`Failed to load JSON config from ${e}:`,n)}else console.warn(`JSON config file not found: ${e}`)}loadEnvConfig(){let e=this.isAbsolutePath(this.options.envPath)?this.options.envPath:Bh(process.cwd(),this.options.envPath);if(Nh(e))try{let n=_C({path:e});n.parsed&&(this.config={...this.config,...this.parseEnvConfig(n.parsed)})}catch(n){console.warn(`Failed to load .env config from ${e}:`,n)}}loadEnvironmentVariables(){let e=this.parseEnvConfig(process.env);this.config={...this.config,...e}}parseEnvConfig(e){let n={};return Object.assign(n,e),n}isAbsolutePath(e){return e.startsWith("/")||e.includes(":")}get(e,n){let r=this.config[e];return r!==void 0?r:n}getAll(){return{...this.config}}getHttpsProxy(){return this.get("HTTPS_PROXY")||this.get("https_proxy")||this.get("httpsProxy")||this.get("PROXY_URL")}has(e){return this.config[e]!==void 0}set(e,n){this.config[e]=n}reload(){this.config={},this.loadConfig()}getConfigSummary(){let e=[];return this.options.initialConfig&&e.push("Initial Config"),this.options.useJsonFile&&this.options.jsonPath&&e.push(`JSON: ${this.options.jsonPath}`),this.options.useEnvFile&&e.push(`ENV: ${this.options.envPath}`),this.options.useEnvironmentVariables&&e.push("Environment Variables"),`Config sources: ${e.join(", ")}`}};function He(t,e=500,n="internal_error",r="api_error"){let o=new Error(t);return o.statusCode=e,o.code=n,o.type=r,o}async function Lh(t,e,n){e.log.error(t);let r=t.statusCode||500;if(t.rawBody)try{let s=JSON.parse(t.rawBody);return n.code(r).send(s)}catch{return n.code(r).send(t.rawBody)}let o={error:{message:t.message+(t.stack||"Internal Server Error"),type:t.type||"api_error",code:t.code||"internal_error"}};return n.code(r).send(o)}import{ProxyAgent as bC}from"undici";function jh(t,e,n,r,o){let s=new Headers({"Content-Type":"application/json"});n.headers&&Object.entries(n.headers).forEach(([f,d])=>{d&&s.set(f,d)});let a,u=AbortSignal.timeout(n.TIMEOUT??60*1e3*60);if(n.signal){let f=new AbortController,d=()=>f.abort();n.signal.addEventListener("abort",d),u.addEventListener("abort",d),a=f.signal}else a=u;let l={method:"POST",headers:s,body:JSON.stringify(e),signal:a};return n.httpsProxy&&(l.dispatcher=new bC(new URL(n.httpsProxy).toString())),o?.debug({reqId:r.req.id,request:l,headers:Object.fromEntries(s.entries()),requestUrl:typeof t=="string"?t:t.toString(),useProxy:n.httpsProxy},"final request"),fetch(typeof t=="string"?t:t.toString(),l)}var CC=new Set(["authorization","x-api-key","x-goog-api-key","cookie","set-cookie"]),Nr={maxBodyLength:4096,maxStreamChunks:100},Vu=!1;function wC(t){Vu=t}function EC(){return Vu}function ni(t){return Vu||t.get("DEBUG_LOG")===!0}function qh(t){let e=t.get("DEBUG_LOG_OPTIONS");return!e||typeof e!="object"?Nr:{maxBodyLength:e.maxBodyLength??Nr.maxBodyLength,maxStreamChunks:e.maxStreamChunks??Nr.maxStreamChunks}}function zh(t){let e={};for(let[n,r]of Object.entries(t))CC.has(n.toLowerCase())?e[n]="***MASKED***":e[n]=r;return e}function ri(t,e){return t.length<=e?t:t.slice(0,e)+`...[truncated, total ${t.length} bytes]`}function Hh(t,e,n){let r=typeof n.body=="string"?n.body:JSON.stringify(n.body);t.info({debug_log:!0,reqId:e,phase:"provider_request",url:n.url,headers:zh(n.headers),body:ri(r,Nr.maxBodyLength)})}function Wh(t,e,n){t.info({debug_log:!0,reqId:e,phase:"provider_response",status:n.status,headers:zh(n.headers),...n.body!==void 0?{body:ri(n.body,Nr.maxBodyLength)}:{}})}function Uh(t,e,n,r){let o=kC(r);t.info({debug_log:!0,reqId:e,phase:"provider_stream_chunk",chunkIndex:n,...o?{usage_monitor:o}:{},data:ri(r,Nr.maxBodyLength)})}function kC(t){let e=[];for(let n of t.split(/\r?\n/)){if(!n.startsWith("data:"))continue;let r=n.slice(5).trim();if(!(!r||r==="[DONE]"))try{let o=JSON.parse(r),s=o?.usage||o?.response?.usage;s&&e.push({path:o?.usage?"usage":"response.usage",usage:s,choicesLength:Array.isArray(o?.choices)?o.choices.length:void 0,finishReason:o?.choices?.[0]?.finish_reason})}catch{e.push({parseError:!0,data:ri(r,512)})}}if(e.length)return e.length===1?e[0]:e}function $h(t,e,n){t.info({debug_log:!0,reqId:e,phase:"provider_stream_end",totalChunks:n})}function Gh(t,e,n,r){(async()=>{let o=t.pipeThrough(new TextDecoderStream).getReader(),s=0;try{let a="";for(;;){let{done:u,value:l}=await o.read();if(u)break;a+=l;let f=a.split(`
|
|
73
|
-
|
|
74
|
-
`);a=f.pop()||"";for(let d of f)d.trim()&&(s<r.maxStreamChunks?Uh(e,n,s,d):s===r.maxStreamChunks&&e.info({debug_log:!0,reqId:n,phase:"provider_stream_chunk_omitted",message:`[chunks after #${s} omitted, maxStreamChunks=${r.maxStreamChunks}]`}),s++)}a.trim()&&(s<r.maxStreamChunks&&Uh(e,n,s,a.trim()),s++),$h(e,n,s)}catch(a){console.error(`[debug_log] Error reading debug stream for reqId=${n}:`,a),$h(e,n,s)}finally{o.releaseLock()}})()}var oi="2.3.23";Un();import{existsSync as tp,mkdirSync as NC,readFileSync as BC,writeFileSync as MC}from"fs";import{join as np}from"path";import{HOME_DIR as LC}from"@wengine-ai/claude-code-router-shared";var tc=np(LC,"runtime"),nc=np(tc,"rate-limit.json"),Mr=new Map,Xh=!1,jC=null,UC=["x-ratelimit-remaining-tokens","x-ratelimit-remaining-requests","x-ratelimit-remaining"],$C=["x-ratelimit-limit-tokens","x-ratelimit-limit-requests","x-ratelimit-limit"],qC=["x-ratelimit-reset-tokens","x-ratelimit-reset-requests","x-ratelimit-reset"];function Io(t,e,n){let r=u=>{if(n instanceof Headers)return n.get(u);let l=Object.keys(n).find(f=>f.toLowerCase()===u);return l?n[l]:null},o=ec(r,UC),s=ec(r,$C),a=ec(r,qC);(o||s||a)&&Mr.set(t,{provider:t,remaining:Zh(o),limit:Zh(s),reset:WC(a),capturedAt:Date.now()})}function zC(t){return Mr.get(t)}function HC(){return Array.from(Mr.values())}function ec(t,e){for(let n of e){let r=t(n);if(r)return r}return null}function Zh(t){if(!t)return null;let e=Number(t.trim().replace(/,/g,""));return Number.isFinite(e)?e:null}function WC(t){if(!t)return null;let e=t.trim();if(!e)return null;let n=Number(e);if(Number.isFinite(n))return n>1e12?Math.floor(n/1e3):n>1e9?Math.floor(n):Math.floor(Date.now()/1e3+n);let r=Date.parse(e);if(Number.isFinite(r))return Math.floor(r/1e3);let o=GC(e);return o===null?null:Math.floor((Date.now()+o)/1e3)}function GC(t){let e=/(\d+(?:\.\d+)?)(ms|s|m|h|d)/gi,n=0,r=!1;for(let o of t.matchAll(e)){r=!0;let s=Number(o[1]),a=o[2].toLowerCase();if(Number.isFinite(s))switch(a){case"ms":n+=s;break;case"s":n+=s*1e3;break;case"m":n+=s*60*1e3;break;case"h":n+=s*60*60*1e3;break;case"d":n+=s*24*60*60*1e3;break}}return r?n:null}function JC(){try{if(!tp(nc))return;let t=JSON.parse(BC(nc,"utf-8"));if(!Array.isArray(t))return;let e=Date.now();for(let n of t)if(n&&n.provider){if(n.capturedAt&&e-n.capturedAt>3600*1e3)continue;Mr.set(n.provider,n)}}catch{}}function ep(){try{if(Mr.size===0)return;tp(tc)||NC(tc,{recursive:!0}),MC(nc,JSON.stringify(Array.from(Mr.values()),null,2),"utf-8")}catch{}}function rc(){Xh||(Xh=!0,JC(),jC=setInterval(ep,6e4),process.on("exit",ep))}si();var Lr=class{name="openai-responses";endPoint="/v1/responses";getCacheReadInputTokens(e){return e?.cache_read_input_tokens??e?.input_tokens_details?.cached_tokens??e?.prompt_tokens_details?.cached_tokens??0}getCacheCreationInputTokens(e){return e?.cache_creation_input_tokens??e?.input_tokens_details?.cache_creation_tokens??e?.input_tokens_details?.cache_write_tokens??e?.prompt_tokens_details?.cache_creation_tokens??e?.prompt_tokens_details?.cache_write_tokens??0}buildResponsesUsage(e){let n=e?.input_tokens??e?.prompt_tokens??0,r=e?.output_tokens??e?.completion_tokens??0,o=this.getCacheReadInputTokens(e),s=this.getCacheCreationInputTokens(e);return{input_tokens:n,output_tokens:r,total_tokens:e?.total_tokens??n+r,input_tokens_details:{cached_tokens:o,cache_creation_tokens:s},output_tokens_details:{reasoning_tokens:e?.output_tokens_details?.reasoning_tokens??0},cache_read_input_tokens:o,cache_creation_input_tokens:s}}async transformRequestIn(e){delete e.temperature,delete e.max_tokens,e.reasoning&&(e.reasoning={effort:e.reasoning.effort,summary:e.reasoning.summary||"auto"});let n=[],r=e.messages.filter(o=>o.role==="system");if(r.length>0){let o=r[0];Array.isArray(o.content)?o.content.forEach(s=>{let a="";typeof s=="string"?a=s:s&&typeof s=="object"&&"text"in s&&(a=s.text),n.push({role:"system",content:a})}):e.instructions=o.content}if(e.messages.forEach(o=>{if(o.role!=="system"){if(Array.isArray(o.content)){let s=o.content.map(a=>this.normalizeRequestContent(a,o.role)).filter(a=>a!==null);s.length>0?o.content=s:delete o.content}if(o.role==="tool"){let s={...o};s.type="function_call_output",s.call_id=o.tool_call_id,s.output=o.content,delete s.cache_control,delete s.role,delete s.tool_call_id,delete s.content,n.push(s);return}if(o.role==="assistant"&&Array.isArray(o.tool_calls)){o.tool_calls.forEach(s=>{n.push({type:"function_call",arguments:s.function.arguments,name:s.function.name,call_id:s.id})});return}n.push(o)}}),e.input=n,delete e.messages,Array.isArray(e.tools)){let o=e.tools.find(s=>s.function.name==="web_search");e.tools=e.tools.filter(s=>s.function.name!=="web_search").map(s=>(s.function.name==="WebSearch"&&delete s.function.parameters.properties.allowed_domains,s.function.name==="Edit"?{type:s.type,name:s.function.name,description:s.function.description,parameters:{...s.function.parameters,required:["file_path","old_string","new_string","replace_all"]},strict:!0}:{type:s.type,name:s.function.name,description:s.function.description,parameters:s.function.parameters})),o&&e.tools.push({type:"web_search"})}return e.parallel_tool_calls=!1,e}async transformResponseOut(e){let n=e.headers.get("Content-Type")||"";if(n.includes("application/json")){let r=await e.json();if(r.object==="response"&&r.output){let o=this.convertResponseToChat(r);return new Response(JSON.stringify(o),{status:e.status,statusText:e.statusText,headers:e.headers})}return r.type==="message"&&Array.isArray(r.content)?new Response(JSON.stringify(r),{status:e.status,statusText:e.statusText,headers:e.headers}):new Response(JSON.stringify(r),{status:e.status,statusText:e.statusText,headers:e.headers})}else if(n.includes("text/event-stream")){if(!e.body)return e;let[r,o]=e.body.tee(),s=r.getReader(),a="";try{let{value:g,done:_}=await s.read();!_&&g&&(a=new TextDecoder().decode(g))}finally{s.releaseLock()}if(r.cancel().catch(()=>{}),a.includes("message_start")||a.includes("content_block_start")){let g=this.prependToStream(a,o);return new Response(g,{status:e.status,statusText:e.statusText,headers:e.headers})}if(a.includes("response.created")||a.includes("response.output_text.delta")||a.includes("response.in_progress")||a.includes("response.output_item.added")){let g=this.prependToStream(a,o);return new Response(g,{status:e.status,statusText:e.statusText,headers:e.headers})}let f=this.prependToStream(a,o),d=new TextDecoder,h=new TextEncoder,m="",C=!1,w=this,y=new ReadableStream({async start(g){let _=f.getReader(),E=-1,b="",S=T=>(T!==b&&(E++,b=T),E);try{for(;;){let{done:T,value:R}=await _.read();if(T){C||g.enqueue(h.encode(`data: [DONE]
|
|
75
|
-
|
|
76
|
-
`));break}let $=d.decode(R,{stream:!0});m+=$;let H=m.split(/\r?\n/);m=H.pop()||"";for(let P of H)if(P.trim())try{if(P.startsWith("event: "))continue;if(P.startsWith("data: ")){let K=P.slice(5).trim();if(K==="[DONE]"){C=!0,g.enqueue(h.encode(`data: [DONE]
|
|
77
|
-
|
|
78
|
-
`));continue}try{let q=JSON.parse(K);if(q.type==="response.output_text.delta"){let Y={id:q.item_id||"chatcmpl-"+Date.now(),object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:q.response?.model,choices:[{index:S(q.type),delta:{content:q.delta||""},finish_reason:null}]};g.enqueue(h.encode(`data: ${JSON.stringify(Y)}
|
|
79
|
-
|
|
80
|
-
`))}else if(q.type==="response.output_item.added"&&q.item?.type==="function_call"){let Y={id:q.item.call_id||q.item.id||"chatcmpl-"+Date.now(),object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:q.response?.model||"gpt-5-codex-",choices:[{index:S(q.type),delta:{role:"assistant",tool_calls:[{index:0,id:q.item.call_id||q.item.id,function:{name:q.item.name||"",arguments:""},type:"function"}]},finish_reason:null}]};g.enqueue(h.encode(`data: ${JSON.stringify(Y)}
|
|
81
|
-
|
|
82
|
-
`))}else if(q.type==="response.output_item.added"&&q.item?.type==="message"){let Y=[];(q.item.content||[]).forEach(ee=>{ee.type==="output_text"&&Y.push({type:"text",text:ee.text||""})});let Q={role:"assistant"};if(Y.length===1&&Y[0].type==="text"?Q.content=Y[0].text:Y.length>0&&(Q.content=Y),Q.content){let ee={id:q.item.id||"chatcmpl-"+Date.now(),object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:q.response?.model,choices:[{index:S(q.type),delta:Q,finish_reason:null}]};g.enqueue(h.encode(`data: ${JSON.stringify(ee)}
|
|
83
|
-
|
|
84
|
-
`))}}else if(q.type==="response.output_text.annotation.added"){let Y={id:q.item_id||"chatcmpl-"+Date.now(),object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:q.response?.model||"gpt-5-codex",choices:[{index:S(q.type),delta:{annotations:[{type:"url_citation",url_citation:{url:q.annotation?.url||"",title:q.annotation?.title||"",content:"",start_index:q.annotation?.start_index||0,end_index:q.annotation?.end_index||0}}]},finish_reason:null}]};g.enqueue(h.encode(`data: ${JSON.stringify(Y)}
|
|
85
|
-
|
|
86
|
-
`))}else if(q.type==="response.function_call_arguments.delta"){let Y={id:q.item_id||"chatcmpl-"+Date.now(),object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:q.response?.model||"gpt-5-codex-",choices:[{index:S(q.type),delta:{tool_calls:[{index:0,function:{arguments:q.delta||""}}]},finish_reason:null}]};g.enqueue(h.encode(`data: ${JSON.stringify(Y)}
|
|
87
|
-
|
|
88
|
-
`))}else if(q.type==="response.completed"){let Y=q.response?.output?.some(ee=>ee.type==="function_call")?"tool_calls":"stop",Q={id:q.response?.id||"chatcmpl-"+Date.now(),object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:q.response?.model||"gpt-5-codex-",choices:[{index:0,delta:{},finish_reason:Y}]};g.enqueue(h.encode(`data: ${JSON.stringify(Q)}
|
|
89
|
-
|
|
90
|
-
`)),C=!0}else if(q.type==="response.reasoning_summary_text.delta"){let Y={id:q.item_id||"chatcmpl-"+Date.now(),object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:q.response?.model,choices:[{index:S(q.type),delta:{thinking:{content:q.delta||""}},finish_reason:null}]};g.enqueue(h.encode(`data: ${JSON.stringify(Y)}
|
|
91
|
-
|
|
92
|
-
`))}else if(q.type==="response.reasoning_summary_part.done"&&q.part){let Y={id:q.item_id||"chatcmpl-"+Date.now(),object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:q.response?.model,choices:[{index:E,delta:{thinking:{signature:q.item_id}},finish_reason:null}]};g.enqueue(h.encode(`data: ${JSON.stringify(Y)}
|
|
93
|
-
|
|
94
|
-
`))}}catch{g.enqueue(h.encode(P+`
|
|
95
|
-
`))}}else g.enqueue(h.encode(P+`
|
|
96
|
-
`))}catch(K){console.error("Error processing line:",P,K),g.enqueue(h.encode(P+`
|
|
97
|
-
`))}}m.trim()&&g.enqueue(h.encode(m+`
|
|
98
|
-
`)),C||g.enqueue(h.encode(`data: [DONE]
|
|
99
|
-
|
|
100
|
-
`))}catch(T){console.error("Stream error:",T),g.error(T)}finally{try{_.releaseLock()}catch(T){console.error("Error releasing reader lock:",T)}g.close()}}});return new Response(y,{status:e.status,statusText:e.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":"*"}})}return e}normalizeRequestContent(e,n){let r={...e};if(delete r.cache_control,e.type==="text")return{type:n==="assistant"?"output_text":"input_text",text:e.text};if(e.type==="image_url"){console.log(e);let o={type:n==="assistant"?"output_image":"input_image"};return typeof e.image_url?.url=="string"&&(o.image_url=e.image_url.url),o}return null}async transformResponseIn(e,n){if(e.headers.get("Content-Type")?.includes("text/event-stream")&&e.body){let[o,s]=e.body.tee(),a=o.getReader(),u="";try{let{value:m,done:C}=await a.read();!C&&m&&(u=new TextDecoder().decode(m))}finally{a.releaseLock()}o.cancel().catch(()=>{});let l=u.includes("message_start")||u.includes("content_block_start"),f=u.includes("chat.completion.chunk");if(u.includes("response.created")||u.includes("response.output_text.delta")||u.includes("response.in_progress")||u.includes("response.output_item.added"))return new Response(s,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}});if(f&&!l){let m=this.convertOpenAIChatStreamToResponsesAPI(s,n);return new Response(m,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}let h=this.convertAnthropicStreamToResponsesAPI(s,n);return new Response(h,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}try{let o=await e.json();return new Response(JSON.stringify(this.wrapChatInResponses(o)),{headers:{"Content-Type":"application/json"}})}catch{return e}}prependToStream(e,n){let o=new TextEncoder().encode(e),s=n.getReader(),a=!1;return new ReadableStream({async pull(u){a||(a=!0,u.enqueue(o));try{let{done:l,value:f}=await s.read();l?u.close():u.enqueue(f)}catch(l){u.error(l)}},cancel(){s.cancel().catch(()=>{})}})}convertOpenAIChatStreamToResponsesAPI(e,n){let r=new TextDecoder,o=new TextEncoder,s=n?.provider?.models?.[0]||"gpt-5.4",a=`resp_${Date.now()}`,u=0,l=!1,f=!1,d="",h=-1,m=[],C=(y,g)=>o.encode(`event: ${y}
|
|
101
|
-
data: ${JSON.stringify(g)}
|
|
102
|
-
|
|
103
|
-
`),w=(y,g=[])=>({id:a,object:"response",created_at:Math.floor(Date.now()/1e3),status:y,model:s,output:g,usage:this.buildResponsesUsage()});return new ReadableStream({async start(y){try{let g=e.getReader(),_="",E=!1,b=S=>{if(!E){E=!0;for(let T of m)if(T.type==="function_call"){let R=m.indexOf(T);y.enqueue(C("response.function_call_arguments.done",{type:"response.function_call_arguments.done",item_id:T.call_id||T.id,output_index:R,arguments:T.arguments||""})),T.status="completed",y.enqueue(C("response.output_item.done",{type:"response.output_item.done",output_index:R,item:T}))}for(let T of m)if(T.type==="message"){let R=m.indexOf(T);T.status="completed",y.enqueue(C("response.output_item.done",{type:"response.output_item.done",output_index:R,item:T}))}y.enqueue(C("response.completed",{type:"response.completed",response:{id:a,object:"response",created_at:Math.floor(Date.now()/1e3),status:"completed",model:S?.model||s,output:m.slice(),usage:S?.usage?{...this.buildResponsesUsage(S.usage)}:this.buildResponsesUsage()}}))}};for(;;){let{done:S,value:T}=await g.read();if(S)break;_+=r.decode(T,{stream:!0});let R=_.split(`
|
|
104
|
-
`);_=R.pop()||"";for(let $ of R){let H=$.trim();if(!H||H.startsWith("event:")||!H.startsWith("data:"))continue;let P=H.slice(5).trim();if(P==="[DONE]"){b({}),y.enqueue(o.encode(`data: [DONE]
|
|
105
|
-
|
|
106
|
-
`));continue}let K;try{K=JSON.parse(P)}catch{continue}l||(l=!0,y.enqueue(C("response.created",{type:"response.created",response:w("in_progress")})),y.enqueue(C("response.in_progress",{type:"response.in_progress",response:w("in_progress")})));let q=K.choices?.[0];if(!q)continue;let Y=q.delta;if(Y?.content){if(!f){f=!0;let Q=u++,ee={id:`${a}_msg`,type:"message",status:"in_progress",role:"assistant",content:[]};m.push(ee),y.enqueue(C("response.output_item.added",{type:"response.output_item.added",output_index:Q,item:ee}))}y.enqueue(C("response.output_text.delta",{type:"response.output_text.delta",item_id:`${a}_msg`,output_index:u-1,content_index:0,delta:Y.content}))}if(Array.isArray(Y?.tool_calls))for(let Q of Y.tool_calls){if(Q.id){d=Q.id,h=u++;let ee={id:Q.id,type:"function_call",status:"in_progress",call_id:Q.id,name:Q.function?.name||"",arguments:""};m.push(ee),y.enqueue(C("response.output_item.added",{type:"response.output_item.added",output_index:h,item:ee}))}if(Q.function?.arguments){y.enqueue(C("response.function_call_arguments.delta",{type:"response.function_call_arguments.delta",item_id:d,output_index:h,delta:Q.function.arguments}));let ee=m.find(se=>se.call_id===d);ee&&(ee.arguments+=Q.function.arguments)}}q.finish_reason&&b(K)}}E||b({}),y.close()}catch(g){y.error(g)}}})}convertAnthropicStreamToResponsesAPI(e,n){let r=new TextDecoder,o=new TextEncoder,s=n?.provider?.models?.[0]||"gpt-5.4",a=`resp_${Date.now()}`,u="",l="",f=-1,d="",h="",m="",C=-1,w="",y="",g=-1,_=0,E=!1,b=!1,S=!1,T=!1,R=null,$=[],H=(ee,se)=>o.encode(`event: ${ee}
|
|
107
|
-
data: ${JSON.stringify(se)}
|
|
108
|
-
|
|
109
|
-
`),P=(ee,se=[])=>({id:a,object:"response",created_at:Math.floor(Date.now()/1e3),status:ee,model:s,output:se,usage:this.buildResponsesUsage()}),K=()=>{E||(E=!0,Q.enqueue(H("response.created",{type:"response.created",response:P("in_progress")})),Q.enqueue(H("response.in_progress",{type:"response.in_progress",response:P("in_progress")})))},q=(ee,se)=>{Q.enqueue(H("response.output_item.done",{type:"response.output_item.done",output_index:ee,item:{...se,status:"completed"}}))},Y=ee=>{if(!T){if(T=!0,b){let se=$.find(ue=>ue.type==="message");se&&(se.content=[{type:"output_text",text:u}],se.status="completed")}for(let se of $)se.type==="function_call"&&(se.status="completed");return H("response.completed",{type:"response.completed",response:{id:a,object:"response",created_at:Math.floor(Date.now()/1e3),status:"completed",model:s,output:$,usage:ee?{...this.buildResponsesUsage(ee)}:this.buildResponsesUsage()}})}},Q;return new ReadableStream({async start(ee){Q=ee;try{let se=e.getReader(),ue="";for(;;){let{done:J,value:Z}=await se.read();if(J)break;ue+=r.decode(Z,{stream:!0});let ce=ue.split(`
|
|
110
|
-
`);ue=ce.pop()||"";for(let je of ce){let we=je.trim();if(!we||we.startsWith("event:")||!we.startsWith("data:"))continue;let V=we.slice(5).trim();if(V==="[DONE]")continue;let ae;try{ae=JSON.parse(V)}catch{continue}if(ae.type==="message_start"&&(a=ae.message?.id||a,K()),ae.type==="content_block_start"){let te=ae.content_block;if(R=te?.type||null,te?.type==="tool_use"){d=te.id||"",h=te.name||"",m="",C=_++;let Te={id:d,type:"function_call",status:"in_progress",call_id:d,name:h,arguments:""};$.push(Te),Q.enqueue(H("response.output_item.added",{type:"response.output_item.added",output_index:C,item:Te}))}if(te?.type==="thinking"&&(w=te.thinking||"",!S)){S=!0,g=_++,y=`rs_${a}`;let Te={id:y,type:"reasoning",status:"in_progress",summary:[]};$.push(Te),Q.enqueue(H("response.output_item.added",{type:"response.output_item.added",output_index:g,item:Te}))}if(te?.type==="text"&&(u=te?.text||"",!b)){b=!0,f=_++,l=`${a}_msg`;let Te={id:l,type:"message",status:"in_progress",role:"assistant",content:[]};$.push(Te),Q.enqueue(H("response.output_item.added",{type:"response.output_item.added",output_index:f,item:Te}))}}if(ae.type==="content_block_delta"){let te=ae.delta;if(te?.type==="text_delta"){if(!b){b=!0,f=_++,l=`${a}_msg`;let Te={id:l,type:"message",status:"in_progress",role:"assistant",content:[]};$.push(Te),Q.enqueue(H("response.output_item.added",{type:"response.output_item.added",output_index:f,item:Te}))}u+=te.text||"",Q.enqueue(H("response.output_text.delta",{type:"response.output_text.delta",item_id:l,output_index:f,content_index:0,delta:te.text||""}))}te?.type==="thinking_delta"&&(w+=te.thinking||"",Q.enqueue(H("response.reasoning_summary_text.delta",{type:"response.reasoning_summary_text.delta",item_id:y||`rs_${a}`,output_index:g>=0?g:0,summary_index:0,delta:te.thinking||""}))),te?.type==="input_json_delta"&&(m+=te.partial_json||"",Q.enqueue(H("response.function_call_arguments.delta",{type:"response.function_call_arguments.delta",item_id:d||"call_0",output_index:C>=0?C:0,delta:te.partial_json||""})))}if(ae.type==="content_block_stop"){if(R==="tool_use"&&d){Q.enqueue(H("response.function_call_arguments.done",{type:"response.function_call_arguments.done",item_id:d,output_index:C,arguments:m}));let te=$.find(Te=>Te.call_id===d);te&&(te.arguments=m,te.status="completed"),te&&q(C,te)}if(R==="text"&&b){Q.enqueue(H("response.output_text.done",{type:"response.output_text.done",item_id:l,output_index:f,content_index:0,text:u}));let te=$.find(Te=>Te.type==="message");te&&(te.content=[{type:"output_text",text:u}],q(f,te))}if(R==="thinking"&&S){let te=$.find(Te=>Te.type==="reasoning");te&&(te.summary=[{type:"summary_text",text:w}],q(g,te))}R=null}if(ae.type==="message_delta"){let te=Y(ae.usage);te&&Q.enqueue(te)}if(ae.type==="message_stop"){let te=Y();te&&Q.enqueue(te),Q.enqueue(o.encode(`data: [DONE]
|
|
111
|
-
|
|
112
|
-
`))}}}K();let pe=Y();pe&&Q.enqueue(pe),ue="",Q.close()}catch(se){Q.error(se)}}})}wrapChatInResponses(e){let n=e?.choices?.[0],r=[],o=[];if(n?.message?.content&&o.push({type:"output_text",text:n.message.content}),r.push({type:"message",role:"assistant",content:o}),Array.isArray(n?.message?.tool_calls))for(let s of n.message.tool_calls)r.push({type:"function_call",id:s.id,call_id:s.id,name:s.function?.name||"",arguments:s.function?.arguments||"{}"});return{id:e.id||`resp_${Date.now()}`,object:"response",model:e.model,output:r,usage:e.usage?{...this.buildResponsesUsage(e.usage)}:void 0}}convertResponseToChat(e){let n=e.output?.find(f=>f.type==="message"),r=e.output?.find(f=>f.type==="function_call"),o;n?.content?.length&&n?.content[0].annotations&&(o=n.content[0].annotations.map(f=>({type:"url_citation",url_citation:{url:f.url||"",title:f.title||"",content:"",start_index:f.start_index||0,end_index:f.end_index||0}}))),this.logger.debug({data:o,type:"url_citation"});let s=null,a=null,u=null;if(n&&n.reasoning&&(u={content:n.reasoning}),n&&n.content){let f=[],d=[];if(n.content.forEach(h=>{if(h.type==="output_text")f.push(h.text||"");else if(h.type==="output_image"){let m=this.buildImageContent({url:h.image_url,mime_type:h.mime_type});m&&d.push(m)}else if(h.type==="output_image_base64"){let m=this.buildImageContent({b64_json:h.image_base64,mime_type:h.mime_type});m&&d.push(m)}}),d.length>0){let h=[];f.length>0&&h.push({type:"text",text:f.join("")}),h.push(...d),s=h}else s=f.join("")}return r&&(a=[{id:r.call_id||r.id,function:{name:r.name,arguments:r.arguments},type:"function"}]),{id:e.id||"chatcmpl-"+Date.now(),object:"chat.completion",created:e.created_at,model:e.model,choices:[{index:0,message:{role:"assistant",content:s||null,tool_calls:a,thinking:u,annotations:o},logprobs:null,finish_reason:a?"tool_calls":"stop"}],usage:e.usage?{prompt_tokens:e.usage.input_tokens||0,completion_tokens:e.usage.output_tokens||0,total_tokens:e.usage.total_tokens||0,prompt_tokens_details:{cached_tokens:this.getCacheReadInputTokens(e.usage),cache_creation_tokens:this.getCacheCreationInputTokens(e.usage)},cache_read_input_tokens:this.getCacheReadInputTokens(e.usage),cache_creation_input_tokens:this.getCacheCreationInputTokens(e.usage)}:null}}buildImageContent(e){return e&&(e.url||e.b64_json)?{type:"image_url",image_url:{url:e.url||"",b64_json:e.b64_json},media_type:e.mime_type}:null}};import{get_encoding as nw}from"tiktoken";var oc=class{capacity;cache;constructor(e){this.capacity=e,this.cache=new Map}get(e){if(!this.cache.has(e))return;let n=this.cache.get(e);return this.cache.delete(e),this.cache.set(e,n),n}put(e,n){if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this.capacity){let r=this.cache.keys().next().value;r!==void 0&&this.cache.delete(r)}this.cache.set(e,n)}values(){return Array.from(this.cache.values())}},sc=new oc(100);Un();import{readFile as fc}from"fs/promises";import{opendir as rw,stat as ow}from"fs/promises";import{join as hc}from"path";import{CLAUDE_PROJECTS_DIR as ap,HOME_DIR as up}from"@wengine-ai/claude-code-router-shared";import{existsSync as sp,mkdirSync as VC,readFileSync as KC,writeFileSync as YC}from"fs";import{join as ip}from"path";import{HOME_DIR as QC}from"@wengine-ai/claude-code-router-shared";var ic=ip(QC,"runtime"),ac=ip(ic,"quota-store.json"),jr=new Map,rp=!1,XC=null;function uc(t,e){t&&jr.set(t,{...e,provider:t,capturedAt:Date.now()})}function cc(t){let e=jr.get(t);return e?{...e}:void 0}function ZC(){return Array.from(jr.values()).map(t=>({...t}))}function ew(){try{if(!sp(ac))return;let t=JSON.parse(KC(ac,"utf-8"));if(!Array.isArray(t))return;let e=Date.now();for(let n of t)if(n&&n.provider){if(n.capturedAt&&e-n.capturedAt>1440*60*1e3)continue;jr.set(n.provider,n)}}catch{}}function op(){try{if(jr.size===0)return;sp(ic)||VC(ic,{recursive:!0}),YC(ac,JSON.stringify(Array.from(jr.values()),null,2),"utf-8")}catch{}}function lc(){rp||(rp=!0,ew(),XC=setInterval(op,6e4),process.on("exit",op))}si();var tw=/^[A-Za-z0-9_-]+$/;function Ur(t){if(typeof t!="string")return;let e=t.trim();if(!(!e||!tw.test(e)))return e}function No(t){if(!t)return;if(typeof t=="object")return Ur(t.session_id??t.sessionId);if(typeof t!="string")return;let e=t.trim();if(!e)return;try{let o=JSON.parse(e),s=Ur(o?.session_id??o?.sessionId);if(s)return s}catch{}let n="_session_",r=e.lastIndexOf(n);if(r!==-1)return Ur(e.slice(r+n.length))}var En=nw("cl100k_base"),fp=(t,e,n)=>{let r=0;return Array.isArray(t)&&t.forEach(o=>{typeof o.content=="string"?r+=En.encode(o.content).length:Array.isArray(o.content)&&o.content.forEach(s=>{s.type==="text"?r+=En.encode(s.text).length:s.type==="tool_use"?r+=En.encode(JSON.stringify(s.input)).length:s.type==="tool_result"&&(r+=En.encode(typeof s.content=="string"?s.content:JSON.stringify(s.content)).length)})}),typeof e=="string"?r+=En.encode(e).length:Array.isArray(e)&&e.forEach(o=>{o.type==="text"&&(typeof o.text=="string"?r+=En.encode(o.text).length:Array.isArray(o.text)&&o.text.forEach(s=>{r+=En.encode(s||"").length}))}),n&&n.forEach(o=>{o.description&&(r+=En.encode(o.name+o.description).length),o.input_schema&&(r+=En.encode(JSON.stringify(o.input_schema)).length)}),r},hp=async(t,e)=>{if(t.sessionId){let n=await gp(t.sessionId);if(n){let r=hc(up,n,"config.json"),o=hc(up,n,`${t.sessionId}.json`);try{let s=JSON.parse(await fc(o,"utf8"));if(s&&s.Router&&Object.keys(s.Router).length>0)return s.Router}catch{}try{let s=JSON.parse(await fc(r,"utf8"));if(s&&s.Router&&Object.keys(s.Router).length>0)return s.Router}catch{}}}};function ai(t){let e=t||"";return e.includes(",")&&(e=e.split(",").pop()||e),e.includes("/")&&(e=e.split("/").pop()||e),e.includes(":")&&(e=e.split(":")[0]),e.trim().toLowerCase()}function pp(t){let e=ai(t),n=e.includes("[1m]")||e.endsWith("[1m"),r=e.replace(/\[1m\]|\[1m$/g,""),o=r.match(/^ccr-(opus|sonnet|haiku)$/i);if(o)return{family:o[1].toLowerCase(),extended:n,isCcrAlias:!0};let s=r.match(/claude-(?:\d+-\d+-|\d+-)?(sonnet|opus|haiku)(?:-|$)/i)||r.match(/claude-(sonnet|opus|haiku)(?:-|$)/i);return s?{family:s[1].toLowerCase(),extended:n,isCcrAlias:!1}:{family:null,extended:n,isCcrAlias:!1}}function sw(t,e){if(!e||!t)return null;let n=ai(t);if(e[t])return e[t];if(e[n])return e[n];let{family:r}=pp(t);if(r&&e[r])return e[r];for(let[o,s]of Object.entries(e)){let a=ai(o);if(a&&n.includes(a))return s}return null}function mp(t){return t?(t.input_tokens||0)+(t.cache_read_input_tokens||0)+(t.cache_creation_input_tokens||0):0}function dc(t){if(!t?.includes(","))return null;let[e,...n]=t.split(","),r=e.trim(),o=n.join(",").trim();return!r||!o?null:{providerName:r,routeModel:o}}function Bo(t,e,n){let r=t.find(s=>s.name.toLowerCase()===e.toLowerCase());if(!r||r.enabled===!1)return null;let o=r.models?.find(s=>String(s).toLowerCase()===n.toLowerCase());return o?{provider:r,model:String(o)}:null}function tt(t,e,n,r,o){let s=dc(t);if(!s)return t;let{providerName:a,routeModel:u}=s,l=Bo(e,a,u);if(!l){if(o===!0&&r&&!n){let d=Br(),h=d.getPromotion(a,u,r,e);if(h){let m=dc(h);if(m){let C=Bo(e,m.providerName,m.routeModel);if(C)return`${C.provider.name},${C.model}`}d.clear(a,u,r)}}return null}if(o===!0&&r&&!n){let d=Br(),h=d.getPromotion(a,u,r,e);if(h){let m=dc(h);if(m){let C=Bo(e,m.providerName,m.routeModel);if(C)return`${C.provider.name},${C.model}`}d.clear(a,u,r)}}if(!n&&!Ye().isAvailable(l.provider.name,l.model))return null;let f=cc(l.provider.name);if(f){let d=f.limitDaily!==void 0&&f.usedDailyBalance!==void 0&&f.usedDailyBalance>=f.limitDaily,h=f.totalBalance!==void 0&&f.usedBalance!==void 0&&f.usedBalance>=f.totalBalance;if(d||h)return null}return`${l.provider.name},${l.model}`}function Ut(t,e,n,r,o){let s=Ye(),a=[n?.[t],r?.[t]];for(let u of a)if(!(!Array.isArray(u)||u.length===0))for(let l of u){let f=tt(l,e);if(f)return f}return null}function iw(t){return t.body.messages?.some(e=>e.role==="user"&&Array.isArray(e.content)&&e.content.some(n=>n.type==="image"||n.type==="image_url"||Array.isArray(n?.content)&&n.content.some(r=>r.type==="image"||r.type==="image_url")))}function aw(t){let e=ai(t);return[/claude/i,/gemini/i,/gpt-4o/i,/gpt-4\.1/i,/gpt-4-vision/i,/qwen.*vl/i,/glm-4v/i,/grok.*vision/i,/pixtral/i,/llava/i].some(r=>r.test(e))}function uw(t,e,n,r,o,s,a,u,l){let f=n.longContextThreshold??l??6e4,d=Math.max(e,mp(o)),h=t.modelFamily;if((s||d>2e5)&&n.extendedContext){let y=tt(n.extendedContext,r,!1,"extendedContext",u);if(y)return t.log.info(`Family: using extended context model (1M+), tokens: ${d}, estimated: ${e}, explicit: ${s}`),{model:y,scenarioType:"extendedContext",isFallback:!1};let g=u?Ut("extendedContext",r,n.fallback,a,h):null;if(g)return t.log.info(`Family: using extended context fallback model (1M+), tokens: ${d}, estimated: ${e}, explicit: ${s}`),{model:g,scenarioType:"extendedContext",isFallback:!0};t.log.warn("Family: extendedContext model unavailable (fail pool), skipping")}if(d>f&&(n.longContext||n.fallback?.longContext?.length||a?.longContext?.length)){let y=n.longContext?tt(n.longContext,r,!1,"longContext",u):null;if(y)return t.log.info(`Family: using long context model, tokens: ${d}, estimated: ${e}`),{model:y,scenarioType:"longContext",isFallback:!1};let g=u?Ut("longContext",r,n.fallback,a,h):null;if(g)return t.log.info(`Family: using long context fallback model, tokens: ${d}, estimated: ${e}`),{model:g,scenarioType:"longContext",isFallback:!0};t.log.warn("Family: no healthy longContext model available, falling through to other scenarios")}if(Array.isArray(t.body.tools)&&t.body.tools.some(y=>y.type?.startsWith("web_search"))&&n.webSearch){let y=tt(n.webSearch,r,!1,"webSearch",u);if(y)return{model:y,scenarioType:"webSearch",isFallback:!1};let g=u?Ut("webSearch",r,n.fallback,a,h):null;if(g)return t.log.info("Family: using webSearch fallback model"),{model:g,scenarioType:"webSearch",isFallback:!0};t.log.warn("Family: webSearch model unavailable (fail pool), skipping")}if(t.body.thinking?.type==="enabled"&&n.think){let y=tt(n.think,r,!1,"think",u);if(y)return{model:y,scenarioType:"think",isFallback:!1};let g=u?Ut("think",r,n.fallback,a,h):null;if(g)return t.log.info("Family: using think fallback model"),{model:g,scenarioType:"think",isFallback:!0};t.log.warn("Family: think model unavailable (fail pool), skipping")}if(n.default){let y=tt(n.default,r,!1,"default",u);if(y)return{model:y,scenarioType:"default",isFallback:!1};let g=u?Ut("default",r,n.fallback,a,h):null;if(g)return t.log.info("Family: using default fallback model"),{model:g,scenarioType:"default",isFallback:!0};t.log.warn("Family: default model unavailable (fail pool), skipping")}return null}var cw=async(t,e,n,r)=>{let o=await hp(t,n),s=n.get("providers")||[],a=o||n.get("Router"),u=a?.enableFallback===!0,l=u?a?.fallback||n.get("fallback"):void 0;if(t.body.model.includes(",")){let E=tt(t.body.model,s,!1,"default",u);if(E)return{model:E,scenarioType:"default"};t.log.warn(`Explicit model ${t.body.model} unavailable (fail pool), trying fallback`);let b=u?Ut("default",s,void 0,l):null;if(b)return t.log.info(`Using fallback for explicit model: ${b}`),{model:b,scenarioType:"default"};t.log.warn(`No fallback available for explicit model ${t.body.model}, continuing through routing logic`)}let{family:f,extended:d,isCcrAlias:h}=pp(t.body.model),m=a?.families?.[f||""];if(m&&a?.enableFamilyRouting){t.log.info(`Using model family routing for: ${f}${d?" (1M)":""}`),t.modelFamily=f,t.familyFallback=m.fallback;let E=uw(t,e,m,s,r,d,l,u,a?.longContextThreshold);if(E)return{model:E.model,scenarioType:E.scenarioType}}let C=h&&!a?.enableFamilyRouting?null:sw(t.body.model,a?.models);if(C){let E=tt(C,s,!1,"modelMapping",u);if(E)return t.log.info(`Using mapped model for ${t.body.model}: ${C}`),{model:E,scenarioType:"modelMapping"};t.log.warn(`Mapped model ${C} unavailable (fail pool), skipping`)}let w=Math.max(e,mp(r)),y=a?.extendedContextThreshold||2e5;if(w>y&&a?.extendedContext){t.log.info(`Using extended context (1M) model due to token count: ${w}, estimated: ${e}, threshold: ${y}`);let E=tt(a.extendedContext,s,!1,"extendedContext",u);if(E)return{model:E,scenarioType:"extendedContext"};t.log.warn(`Extended context model ${a.extendedContext} unavailable (fail pool), trying fallback`);let b=u?Ut("extendedContext",s,void 0,l):null;if(b)return{model:b,scenarioType:"extendedContext"}}let g=a?.longContextThreshold||6e4;if(w>g&&a?.longContext){t.log.info(`Using long context model due to token count: ${w}, estimated: ${e}, threshold: ${g}`);let E=tt(a.longContext,s,!1,"longContext",u);if(E)return{model:E,scenarioType:"longContext"};t.log.warn(`Long context model ${a.longContext} unavailable (fail pool), trying fallback`);let b=u?Ut("longContext",s,void 0,l):null;if(b)return{model:b,scenarioType:"longContext"}}if(t.body?.system?.length>1&&t.body?.system[1]?.text?.startsWith("<CCR-SUBAGENT-MODEL>")){let E=t.body?.system[1].text.match(/<CCR-SUBAGENT-MODEL>(.*?)<\/CCR-SUBAGENT-MODEL>/s);if(E)return t.body.system[1].text=t.body.system[1].text.replace(`<CCR-SUBAGENT-MODEL>${E[1]}</CCR-SUBAGENT-MODEL>`,""),{model:E[1],scenarioType:"default"}}if(t.body.model?.includes("claude")&&t.body.model?.includes("haiku")&&a?.background){t.log.info(`Using background model for ${t.body.model}`);let E=tt(a.background,s,!1,"background",u);if(E)return{model:E,scenarioType:"background"};t.log.warn(`Background model ${a.background} unavailable (fail pool), falling through`)}if(Array.isArray(t.body.tools)&&t.body.tools.some(E=>E.type?.startsWith("web_search"))&&a?.webSearch){let E=tt(a.webSearch,s,!1,"webSearch",u);if(E)return{model:E,scenarioType:"webSearch"};t.log.warn(`WebSearch model ${a.webSearch} unavailable (fail pool), trying fallback`);let b=u?Ut("webSearch",s,void 0,l):null;if(b)return{model:b,scenarioType:"webSearch"}}if(t.body.thinking?.type==="enabled"&&a?.think){t.log.info(`Using think model for ${t.body.thinking}`);let E=tt(a.think,s,!1,"think",u);if(E)return{model:E,scenarioType:"think"};t.log.warn(`Think model ${a.think} unavailable (fail pool), trying fallback`);let b=u?Ut("think",s,void 0,l):null;if(b)return{model:b,scenarioType:"think"}}if(a?.default){let E=tt(a.default,s,!1,"default",u);if(E)return{model:E,scenarioType:"default"};t.log.warn(`Default model ${a.default} unavailable (fail pool), trying fallback`);let b=u?Ut("default",s,void 0,l):null;if(b)return{model:b,scenarioType:"default"};let S=tt(a.default,s,!0,"default",u);if(S)return t.log.warn(`No fallback available; retrying default model ${a.default} despite fail-pool state`),{model:S,scenarioType:"default"}}return{model:void 0,scenarioType:"default"}},Mo=async(t,e,n)=>{let{configService:r,event:o}=n;t.originalModel=t.body.model;let s=No(t.body.metadata?.user_id);s&&(t.sessionId=s);let u=await hp(t,r)||r.get("Router"),l=u?.enableFallback===!0,f=r.get("providers")||[];t.enableFallback=l,t.fallbackConfig=u?.fallback||r.get("fallback");let d=sc.get(t.sessionId),{messages:h,system:m=[],tools:C}=t.body,w=r.get("REWRITE_SYSTEM_PROMPT");if(w&&m.length>1&&m[1]?.text?.includes("<env>")){let y=await fc(w,"utf-8");m[1].text=`${y}<env>${m[1].text.split("<env>").pop()}`}try{let[y,g]=t.body.model.split(","),_=n.tokenizerService?.getTokenizerConfigForModel(y,g),E;n.tokenizerService?E=(await n.tokenizerService.countTokens({messages:h,system:m,tools:C},_)).tokenCount:E=fp(h,m,C),t.tokenCount=E;let b,S=r.get("CUSTOM_ROUTER_PATH");if(S)try{b=await re(S)(t,r.getAll(),{event:o})}catch(T){t.log.error(`failed to load custom router: ${T.message}`)}if(b)t.scenarioType="default";else{let T=await cw(t,E,r,d);b=T.model,t.scenarioType=T.scenarioType}if(u?.image&&b!==u.image&&iw(t)&&!aw(b)){let T=tt(u.image,f,!1,"image",l);T?(t.log.info(`Using image model fallback for ${b}`),b=T,t.scenarioType="image"):(t.log.warn(`Image model ${u.image} unavailable (fail pool), keeping ${b}`),t.scenarioType="image")}typeof b=="string"&&b.trim()?t.body.model=b:(t.log.warn(`Router could not resolve a valid model for ${t.originalModel||t.body.model}; keeping original request model`),t.scenarioType=t.scenarioType||"default")}catch(y){t.log.error(`Error in router middleware: ${y.message}`),t.body.model=u?.default,t.scenarioType="default"}},lr=new Map,cp=1e3,$r=new Set,lp=1e3,lw=3,dw=50,fw=t=>new Promise(e=>setTimeout(e,t));function hw(){if(lr.size<=cp)return;let t=[...lr.keys()].slice(0,lr.size-cp);for(let e of t)lr.delete(e)}function pw(){if($r.size<=lp)return;let t=[...$r].slice(0,$r.size-lp);for(let e of t)$r.delete(e)}var dp=async t=>{let e=await rw(ap),n=[];for await(let s of e)s.isDirectory()&&n.push(s.name);let r=n.map(async s=>{let a=hc(ap,s,`${t}.jsonl`);try{return(await ow(a)).isFile()?s:null}catch{return null}}),o=await Promise.all(r);for(let s of o)if(s)return s;return null},gp=async t=>{let e=Ur(t);if(!e)return null;if(lr.has(e))return lr.get(e)||null;try{let n=await dp(e);if(!n&&!$r.has(e)){$r.add(e),pw();for(let r=0;r<lw&&!n;r++)await fw(dw),n=await dp(e)}return n?(lr.set(e,n),hw(),n):null}catch(n){return console.error("Error searching for project by session:",n),null}};var mw=/^ccr-(opus|sonnet|haiku)(\[1m\])?$/i;function yp(t){let e=[],n=Array.isArray(t.input)?t.input:[t.input];for(let r of n)if(r.type==="function_call")e.push({role:"assistant",tool_calls:[{id:r.call_id,type:"function",function:{name:r.name,arguments:r.arguments||"{}"}}]});else if(r.type==="function_call_output")e.push({role:"tool",tool_call_id:r.call_id,content:typeof r.output=="string"?r.output:JSON.stringify(r.output)});else if(r.type==="reasoning"){let o=Array.isArray(r.summary)?r.summary.filter(s=>s.type==="summary_text"&&s.text).map(s=>s.text).join(`
|
|
113
|
-
`):"";o&&e.push({role:"assistant",content:[{type:"text",text:`[reasoning]
|
|
114
|
-
${o}`}],_reasoningItem:!0})}else if(r.role){let o=r.content;Array.isArray(o)&&(o=o.map(s=>s.type==="input_text"?{type:"text",text:s.text}:s.type==="output_text"?{type:"text",text:s.text}:s.type==="input_image"?{type:"image_url",image_url:{url:s.image_url},media_type:s.mime_type}:s)),e.push({role:r.role,content:o})}t.messages=e,delete t.input,t.instructions&&typeof t.instructions=="string"&&(t.system=t.instructions,delete t.instructions),Array.isArray(t.tools)&&(t.tools=t.tools.filter(r=>r&&typeof r=="object").map(r=>r.type==="function"&&r.name&&!r.function?{type:"function",function:{name:r.name,description:r.description||"",parameters:r.parameters||{type:"object",properties:{}}}}:r.function?.name?r:r.type==="web_search"?{type:"function",function:{name:"web_search",description:"Search the web",parameters:{type:"object",properties:{query:{type:"string"}}}}}:null).filter(Boolean)),t.reasoning&&typeof t.reasoning=="object"&&(t.reasoning={enabled:!0,effort:t.reasoning.effort}),delete t.store,delete t.previous_response_id,delete t.include}async function _p(t,e,n,r){let o=t.body;r.endPoint==="/v1/responses"&&o?.input&&!o?.messages&&yp(o),r.endPoint==="/v1/responses"&&!t.provider&&typeof o?.model=="string"&&mw.test(o.model)&&await Mo(t,e,{configService:n.configService,tokenizerService:n.tokenizerService});let s=t.provider;if(!s&&o?.model){let f=o.model.split(",");f.length>1&&(s=f[0],o.model=f.slice(1).join(","))}let a=s?n.providerService.getProvider(s):void 0;if(!a&&o?.model){let f=n.providerService.resolveModelRoute(o.model);f&&(a=f.provider,o.model=f.targetModel)}if(!a&&o?.model){let d=n.configService.get("Router")?.default;if(d&&d.includes(",")){let[h,...m]=d.split(","),C=n.providerService.getProvider(h);C&&(a=C,o.model=m.join(","))}}if(t.originalModel||(t.originalModel=o?.model),!a)throw He(`Provider '${s}' not found`,404,"provider_not_found");t.provider=a.name||s;let u=_w(t),l=r.endPoint==="/v1/messages"&&u;u&&e.header("X-Codex-Detected","true"),l&&e.header("X-Codex-On-Messages","true"),t.isCodexOnMessagesEndpoint=l,t.codexDetected=u;try{r.endPoint==="/v1/responses"&&o.input&&!o.messages&&yp(o);let{requestBody:f,config:d,bypass:h}=await Cp(o,a,r,t.headers,{req:t});if(f?.messages&&!h&&!t.isTargetAnthropic){let y=f.messages,g=new Set,_=[],E=[];for(let b of y){if(b?.role!=="system"){E.push(b);continue}let S=JSON.stringify(b.content??"");g.has(S)||(g.add(S),_.push(b))}_.length>0&&E.length>0&&(f.messages=[..._,...E])}let m=await wp(f,d,a,n,h,r,{req:t});try{a?.baseUrl&&m?.headers&&Io(s,a.baseUrl,m.headers)}catch{}let C=await Ep(f,m,a,r,h,{req:t,isCodexOnMessagesEndpoint:l});C=await bp(o,C,a.name||s);let w=kp(C,e,o,n);try{let y=o.model||t.originalModel;s&&y&&Ye().recordSuccess(s,y)}catch{}return w}catch(f){if(!t.__retryAttempted){t.__retryAttempted=!0;try{return await _p(t,e,n,r)}catch(h){if(t.__fallbackExhausted)throw h;f=h}}let d=await gw(t,e,n,r,f);if(d)return d;throw t.__fallbackExhausted=!0,f}}async function bp(t,e,n){if(!t?.stream||!e?.body)return e;let r=e.body.getReader(),o=await r.read();if(o.done)throw r.releaseLock(),He(`Provider returned empty streaming response from ${n}`,400,"provider_response_error");let s=new TextDecoder().decode(o.value);if(s.includes("event: error")){r.releaseLock();let l=s.length<500?s:s.slice(0,500);throw He(`Provider ${n} returned error in SSE stream: ${l}`,400,"provider_response_error")}if(s.split(`
|
|
115
|
-
`).filter(l=>l.startsWith("data:")&&l.trim().length>5).length===0){r.releaseLock();let l=s.length<500?s:s.slice(0,500);throw He(`Provider ${n} returned streaming response with no SSE data lines: ${l}`,400,"provider_response_error")}let u=new ReadableStream({start:l=>{l.enqueue(o.value);let f=()=>{r.read().then(({done:d,value:h})=>{d?l.close():(l.enqueue(h),f())}).catch(d=>l.error(d))};f()},cancel:()=>{r.cancel()}});return new Response(u,{headers:e.headers,status:e.status,statusText:e.statusText})}async function gw(t,e,n,r,o){let s=t.scenarioType||"default",a=t.familyFallback,u=t.modelFamily,l=t.fallbackConfig??n.configService.get("fallback"),f=Ye(),d=t.provider||"",h=t.body.model||"",m=new Set,C=o?.statusCode===429||o?.isRateLimit===!0||o?.rawBody&&ui(o.rawBody)||o?.message&&ui(o.message);if(d&&h&&(C?(f.markRateLimited(d,h,120,o?.message),t.log.warn(`Primary model ${d},${h} rate-limited, will try fallbacks`)):f.recordFailure(d,h,o?.message),m.add(`${d},${h}`),n.recordUsage?.({provider:d,model:h,originalModel:t.originalModel||h,scenarioType:s,modelFamily:t.modelFamily,errorMessage:o?.message||String(o),sessionId:t.usageSessionId||t.id,stream:t.body.stream,inputTokens:t.tokenCount||0,req:t})),!(t.enableFallback??n.configService.get("Router")?.enableFallback===!0))return t.log.info("Fallback disabled by configuration, skipping fallback attempts"),null;let y=E=>{let[b,...S]=E.split(","),T=b?.trim(),R=S.join(",").trim();return!T||!R?null:{provider:T,model:R,key:`${T},${R}`}},g=[];if(u){let E=a?.[s];Array.isArray(E)&&E.length>0?g.push({name:`${u}/${s}`,models:E}):t.log.warn(`No ${u} fallback configured for ${s}; will try global ${s} fallback`)}if(Array.isArray(l?.[s])&&l[s].length>0&&g.push({name:`global/${s}`,models:l[s]}),g.length===0&&s!=="image"&&t.body?.messages?.some(S=>S.role==="user"&&Array.isArray(S.content)&&S.content.some(T=>T.type==="image"||T.type==="image_url"||Array.isArray(T?.content)&&T.content.some(R=>R.type==="image"||R.type==="image_url")))&&Array.isArray(l?.image)&&l.image.length>0&&(t.log.info(`No fallback for scenario '${s}', but request has images \u2014 trying fallback.image`),g.push({name:"global/image (auto-detected)",models:l.image})),g.length===0)return null;let _=g.reduce((E,b)=>E+b.models.length,0);t.log.warn(`Request failed for ${s}, trying ${_} fallback models across ${g.length} fallback stage(s)`);for(let E of g){t.log.info(`Trying ${E.name} fallback stage with ${E.models.length} models`);for(let b of E.models){let S=y(b);if(!S){t.log.warn(`Fallback model '${b}' is invalid, skipping`);continue}if(m.has(S.key))continue;m.add(S.key);let T=n.providerService.getProviders(),R=Bo(T,S.provider,S.model);if(!R){t.log.warn(`Fallback model ${b} is not configured or provider is disabled, skipping`);continue}let $=R.provider.name,H=R.model;if(!f.isAvailable($,H)){t.log.warn(`Fallback model ${b} unavailable (fail pool), skipping`);continue}let P;for(let K=1;K<=2;K++)try{t.log.info(`Trying fallback model: ${$},${H}${K>1?" (retry)":""}`);let q={...t.body};q.model=H;let Y={...t,provider:$,body:q},Q=R.provider,{requestBody:ee,config:se,bypass:ue}=await Cp(q,Q,r,t.headers,{req:Y}),pe=await wp(ee,se,Q,n,ue,r,{req:Y});try{Q?.baseUrl&&pe?.headers&&Io($,Q.baseUrl,pe.headers)}catch{}let J=await Ep(ee,pe,Q,r,ue,{req:Y,isCodexOnMessagesEndpoint:t.isCodexOnMessagesEndpoint||!1});return J=await bp(q,J,$),t.log.info(`Fallback model ${$},${H} succeeded`),f.recordSuccess($,H),d&&h&&(Br().promote(d,h,s,$,H),t.log.info(`Promoted fallback model ${$},${H} for ${d},${h}:${s}`),C?t.log.info(`Rate-limited original model ${d},${h} already marked unavailable with cooldown`):(f.forceOpen(d,h,o?.message),t.log.info(`Marked original model ${d},${h} as unavailable`))),t.provider=$,t.body=q,kp(J,e,q,n)}catch(q){if(P=q,K===1){t.log.warn(`Fallback model ${$},${H} failed, retrying once: ${q.message}`);continue}}f.recordFailure($,H,P?.message),t.log.warn(`Fallback model ${$},${H} failed after retry: ${P?.message}`),n.recordUsage?.({provider:$,model:H,originalModel:t.originalModel||h||t.body.model,scenarioType:s,modelFamily:t.modelFamily,errorMessage:P?.message||String(P),sessionId:t.usageSessionId||t.id,stream:t.body.stream,inputTokens:t.tokenCount||0,req:t})}}return t.log.error(`All fallback models failed for ${s}`),null}async function Cp(t,e,n,r,o){let s=JSON.parse(JSON.stringify(t)),a=s?.system;if(typeof a=="string"&&a.includes("cch="))s.system=a.replace(/cch=[^;]+;?/g,"cch=ccr-stable;");else if(Array.isArray(a))for(let f=0;f<a.length;f++){let d=a[f],h=typeof d=="string"?d:d?.text??"";if(h.includes("cch=")){let m=h.replace(/cch=[^;]+;?/g,"cch=ccr-stable;");typeof d=="string"?a[f]=m:typeof d?.text=="string"&&(d.text=m)}}let u={},l=!1;if(l=yw(e,n,t),l&&(r instanceof Headers?r.delete("content-length"):delete r["content-length"],u.headers=r),!l&&typeof n.transformRequestOut=="function"){let f=await n.transformRequestOut(s);f.body?(s=f.body,u=f.config||{}):s=f}if(!l&&e.transformer?.use?.length)for(let f of e.transformer.use){if(!f||typeof f.transformRequestIn!="function")continue;let d=await f.transformRequestIn(s,e,o);d.body?(s=d.body,u={...u,...d.config}):s=d}if(!l&&e.transformer?.[t.model]?.use?.length)for(let f of e.transformer[t.model].use)!f||typeof f.transformRequestIn!="function"||(s=await f.transformRequestIn(s,e,o));return{requestBody:s,config:u,bypass:l}}function yw(t,e,n){return e.endPoint==="/v1/chat/completions"&&Array.isArray(n?.system)?!1:t.transformer?.use?.length===1&&t.transformer.use[0].name===e.name&&(!t.transformer?.[n.model]?.use.length||t.transformer?.[n.model]?.use.length===1&&t.transformer?.[n.model]?.use[0].name===e.name)}function _w(t){let e=t.headers||{},n=e["x-anthropic-billing-header"]||"";if(typeof n=="string"&&n.includes("cc_version="))return!1;let r=e["user-agent"]||"";if(typeof r=="string"&&/codex/i.test(r))return!0;let o=t.pathname||t.url||"";if(typeof o=="string"&&o.split("?",1)[0].endsWith("/v1/responses"))return!0;let s=t.originalModel||t.body?.model||"";return typeof s=="string"&&s.toLowerCase()==="ccr-codex"}async function wp(t,e,n,r,o,s,a){let u=e.url||new URL(n.baseUrl);if(!e.TIMEOUT){let d=r.configService.get("API_TIMEOUT_MS");d&&(e.TIMEOUT=typeof d=="string"?parseInt(d,10):d)}if(o&&typeof s.auth=="function"){let d=await s.auth(t,n);if(d.body){t=d.body;let h=e.headers||{};d.config?.headers&&(h={...h,...d.config.headers},delete h.host,delete d.config.headers),e={...e,...d.config,headers:h}}else t=d}let l={Authorization:`Bearer ${n.apiKey}`,...e?.headers||{}};for(let d in l)(l[d]==="undefined"||["authorization","Authorization"].includes(d)&&l[d]?.includes("undefined"))&&delete l[d];ni(r.configService)&&Hh(r.log,a.req.id,{url:String(u),headers:l,body:t});let f=await jh(u,t,{httpsProxy:r.configService.getHttpsProxy(),...e,headers:JSON.parse(JSON.stringify(l))},a,r.log);if(!f.ok){let d=await f.text();r.log.error(`[provider_response_error] Error from provider(${n.name},${t.model}: ${f.status}): ${d}`);let h=He(`Error from provider(${n.name},${t.model}: ${f.status}): ${d}`,f.status,"provider_response_error");throw h.isRateLimit=f.status===429||ui(d),h.rawBody=d,h}if(f.ok){let d=f.headers.get("content-type")||"",h=t.stream===!0;if(r.log.info(`[hidden-error-check] provider=${n.name} model=${t.model} stream=${t.stream} isStreamRequest=${h} contentType=${d} ok=${f.ok} status=${f.status} hasBody=${!!f.body}`),!h||d.includes("application/json")){let m=f.clone(),C="";try{if(C=await m.text(),!C||C.trim()==="")throw new SyntaxError("Empty JSON body");let w=JSON.parse(C);if(w&&typeof w=="object"&&w.error&&(typeof w.error=="string"||typeof w.error=="object"&&Object.keys(w.error).length>0)){r.log.error(`[provider_response_error] Hidden error from provider(${n.name},${t.model}: ${f.status}): ${C}`);let g=ui(C),_=He(`Error from provider(${n.name},${t.model}: ${f.status}): ${C}`,400,"provider_response_error");throw _.isRateLimit=g,_.rawBody=C,_}}catch(w){if(w instanceof SyntaxError){r.log.warn(`[provider_response_error] Empty or malformed JSON response from provider(${n.name},${t.model}: 200): "${C}"`);let y=He(`API returned an empty or malformed response (HTTP 200) from ${n.name} \u2014 check for a proxy or gateway intercepting the request`,400,"provider_response_error");throw y.rawBody=C,y}throw w}}}if(!t.stream&&ni(r.configService)){let h=await f.clone().text();Wh(r.log,a.req.id,{status:f.status,headers:Object.fromEntries(f.headers.entries()),body:h})}return f}async function Ep(t,e,n,r,o,s){let a=e;if(!o&&n.transformer?.use?.length)for(let u of Array.from(n.transformer.use).reverse())!u||typeof u.transformResponseOut!="function"||(a=await u.transformResponseOut(a,s));if(!o&&n.transformer?.[t.model]?.use?.length)for(let u of Array.from(n.transformer[t.model].use).reverse())!u||typeof u.transformResponseOut!="function"||(a=await u.transformResponseOut(a,s));if(!o&&r.transformResponseIn&&(s.provider||(s.provider=n),a=await r.transformResponseIn(a,s)),s?.isCodexOnMessagesEndpoint)try{a=await new Lr().transformResponseIn(a,{...s,provider:n})}catch(u){console.error("Failed to apply Responses API conversion for codex client:",u)}return a}function kp(t,e,n,r){if(t.ok||e.code(t.status),n.stream===!0){if(e.header("Content-Type","text/event-stream"),e.header("Cache-Control","no-cache"),e.header("Connection","keep-alive"),r&&ni(r.configService)){let[s,a]=t.body.tee(),u=qh(r.configService);return Gh(s,r.log,e.request.id,u),e.send(a)}return e.send(t.body)}else return t.json()}var pc=async t=>{t.get("/",async()=>({message:"LLMs API",version:oi})),t.get("/health",async()=>({status:"ok",timestamp:new Date().toISOString()})),t.get("/providers/health",async()=>({states:Ye().getAllStates().map(o=>({provider:o.provider,model:o.model,status:o.status,failureCount:o.failureCount,successCount:o.successCount,lastFailureTime:o.lastFailureTime,lastError:o.lastError,rateLimitUntil:o.rateLimitUntil??null})),timestamp:new Date().toISOString()}));let e=t.transformerService.getTransformersWithEndpoint();for(let{transformer:n}of e)n.endPoint&&t.post(n.endPoint,async(r,o)=>_p(r,o,t,n));t.post("/providers",{schema:{body:{type:"object",properties:{id:{type:"string"},name:{type:"string"},type:{type:"string",enum:["openai","anthropic"]},baseUrl:{type:"string"},apiKey:{type:"string"},models:{type:"array",items:{type:"string"}}},required:["id","name","type","baseUrl","apiKey","models"]}}},async(n,r)=>{let{name:o,baseUrl:s,apiKey:a,models:u}=n.body;if(!o?.trim())throw He("Provider name is required",400,"invalid_request");if(!s||!bw(s))throw He("Valid base URL is required",400,"invalid_request");if(!a?.trim())throw He("API key is required",400,"invalid_request");if(!u||!Array.isArray(u)||u.length===0)throw He("At least one model is required",400,"invalid_request");if(t.providerService.getProvider(n.body.name))throw He(`Provider with name '${n.body.name}' already exists`,400,"provider_exists");return t.providerService.registerProvider(n.body)}),t.get("/providers",async()=>t.providerService.getProviders()),t.get("/providers/:id",{schema:{params:{type:"object",properties:{id:{type:"string"}},required:["id"]}}},async n=>{let r=t.providerService.getProvider(n.params.id);if(!r)throw He("Provider not found",404,"provider_not_found");return r}),t.put("/providers/:id",{schema:{params:{type:"object",properties:{id:{type:"string"}},required:["id"]},body:{type:"object",properties:{name:{type:"string"},type:{type:"string",enum:["openai","anthropic"]},baseUrl:{type:"string"},apiKey:{type:"string"},models:{type:"array",items:{type:"string"}},enabled:{type:"boolean"}}}}},async(n,r)=>{let o=t.providerService.updateProvider(n.params.id,n.body);if(!o)throw He("Provider not found",404,"provider_not_found");return o}),t.delete("/providers/:id",{schema:{params:{type:"object",properties:{id:{type:"string"}},required:["id"]}}},async n=>{if(!t.providerService.deleteProvider(n.params.id))throw He("Provider not found",404,"provider_not_found");return{message:"Provider deleted successfully"}}),t.patch("/providers/:id/toggle",{schema:{params:{type:"object",properties:{id:{type:"string"}},required:["id"]},body:{type:"object",properties:{enabled:{type:"boolean"}},required:["enabled"]}}},async(n,r)=>{if(!t.providerService.toggleProvider(n.params.id,n.body.enabled))throw He("Provider not found",404,"provider_not_found");return{message:`Provider ${n.body.enabled?"enabled":"disabled"} successfully`}})};function ui(t){let e=t.toLowerCase();return e.includes("rate limit")||e.includes("rate_limit")||e.includes("rate_limit_error")||e.includes("too many requests")||e.includes("too many")||e.includes("quota exhausted")||e.includes("qps_limit")||e.includes("token_limit")||e.includes("\u9650\u6D41")||e.includes("\u9891\u7387\u9650\u5236")}function bw(t){try{return new URL(t),!0}catch{return!1}}var qr=class{constructor(e,n,r){this.configService=e;this.transformerService=n;this.logger=r;this.initializeCustomProviders()}providers=new Map;modelRoutes=new Map;initializeCustomProviders(){let e=this.configService.get("providers");if(e&&Array.isArray(e)){this.initializeFromProvidersArray(e);return}}initializeFromProvidersArray(e){e.forEach(n=>{try{if(!n.name||!n.api_base_url||!n.api_key)return;let r={};n.transformer&&Object.keys(n.transformer).forEach(o=>{o==="use"?Array.isArray(n.transformer.use)&&(r.use=n.transformer.use.map(s=>{if(Array.isArray(s)&&typeof s[0]=="string"){let a=this.transformerService.getTransformer(s[0]);if(a)return new a(s[1])}if(typeof s=="string"){let a=this.transformerService.getTransformer(s);return typeof a=="function"?new a:a}}).filter(s=>typeof s<"u")):Array.isArray(n.transformer[o]?.use)&&(r[o]={use:n.transformer[o].use.map(s=>{if(Array.isArray(s)&&typeof s[0]=="string"){let a=this.transformerService.getTransformer(s[0]);if(a)return new a(s[1])}if(typeof s=="string"){let a=this.transformerService.getTransformer(s);return typeof a=="function"?new a:a}}).filter(s=>typeof s<"u")})}),this.registerProvider({name:n.name,baseUrl:n.api_base_url,apiKey:n.api_key,models:n.models||[],quotaToken:n.quota_token,transformer:n.transformer?r:void 0,cacheMode:n.cache_mode||"exclusive",enabled:n.enabled!==!1,wakeupEnabled:n.wakeup_enabled===!0,wakeupTime:n.wakeup_time||"06:00",wakeupModel:n.wakeup_model||""}),this.logger.info(`${n.name} provider registered`)}catch(r){this.logger.error(`${n.name} provider registered error: ${r}`)}})}registerProvider(e){let n={...e,enabled:e.enabled!==!1,wakeupEnabled:e.wakeupEnabled===!0,wakeupTime:e.wakeupTime||"06:00",wakeupModel:e.wakeupModel||""};return this.providers.set(n.name,n),e.models.forEach(r=>{let o=`${n.name},${r}`,s={provider:n.name,model:r,fullModel:o};this.modelRoutes.set(o,s),this.modelRoutes.has(r)||this.modelRoutes.set(r,s)}),n}getProviders(){return Array.from(this.providers.values())}getProvider(e){return this.providers.get(e)}updateProvider(e,n){let r=this.providers.get(e);if(!r)return null;let o={...r,...n,updatedAt:new Date};return this.providers.set(e,o),n.models&&(r.models.forEach(s=>{let a=`${r.name},${s}`;this.modelRoutes.delete(a),this.modelRoutes.delete(s)}),n.models.forEach(s=>{let a=`${r.name},${s}`,u={provider:r.name,model:s,fullModel:a};this.modelRoutes.set(a,u),this.modelRoutes.has(s)||this.modelRoutes.set(s,u)})),o}deleteProvider(e){let n=this.providers.get(e);return n?(n.models.forEach(r=>{let o=`${n.name},${r}`;this.modelRoutes.delete(o),this.modelRoutes.delete(r)}),this.providers.delete(e),!0):!1}toggleProvider(e,n){let r=this.providers.get(e);if(!r)return!1;r.enabled=n;let o=this.configService.get("providers");if(o&&Array.isArray(o)){let s=o.find(a=>a.name===e);s&&(s.enabled=n)}return!0}resolveModelRoute(e){let n=this.modelRoutes.get(e);if(!n)return null;let r=this.providers.get(n.provider);return r?{provider:r,originalModel:e,targetModel:n.model}:null}getAvailableModelNames(){let e=[];return this.providers.forEach(n=>{n.enabled!==!1&&n.models.forEach(r=>{e.push(r),e.push(`${n.name},${r}`)})}),e}getModelRoutes(){return Array.from(this.modelRoutes.values())}parseTransformerConfig(e){return e?Array.isArray(e)?e.reduce((n,r)=>{if(Array.isArray(r)){let[o,s={}]=r;n[o]=s}else n[r]={};return n},{}):e:{}}async getAvailableModels(){let e=[];return this.providers.forEach(n=>{n.enabled!==!1&&n.models.forEach(r=>{e.push({id:r,object:"model",owned_by:n.name,provider:n.name}),e.push({id:`${n.name},${r}`,object:"model",owned_by:n.name,provider:n.name})})}),{object:"list",data:e}}};var Qe=[];for(let t=0;t<256;++t)Qe.push((t+256).toString(16).slice(1));function Ap(t,e=0){return(Qe[t[e+0]]+Qe[t[e+1]]+Qe[t[e+2]]+Qe[t[e+3]]+"-"+Qe[t[e+4]]+Qe[t[e+5]]+"-"+Qe[t[e+6]]+Qe[t[e+7]]+"-"+Qe[t[e+8]]+Qe[t[e+9]]+"-"+Qe[t[e+10]]+Qe[t[e+11]]+Qe[t[e+12]]+Qe[t[e+13]]+Qe[t[e+14]]+Qe[t[e+15]]).toLowerCase()}import{randomFillSync as Cw}from"crypto";var li=new Uint8Array(256),ci=li.length;function mc(){return ci>li.length-16&&(Cw(li),ci=0),li.slice(ci,ci+=16)}import{randomUUID as ww}from"crypto";var gc={randomUUID:ww};function Ew(t,e,n){if(gc.randomUUID&&!e&&!t)return gc.randomUUID();t=t||{};let r=t.random??t.rng?.()??mc();if(r.length<16)throw new Error("Random bytes length must be >= 16");if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,e){if(n=n||0,n<0||n+16>e.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let o=0;o<16;++o)e[n+o]=r[o];return e}return Ap(r)}var pt=Ew;var Sp=t=>t<=0?"none":t<=1024?"low":t<=8192?"medium":"high";var vp=(t,e)=>(t.includes("base64")&&(t=t.split("base64").pop(),t.startsWith(",")&&(t=t.slice(1))),`data:${e};base64,${t}`);function kw(t){return t.filter(e=>!!e?.function?.name).map(e=>({name:e.function.name,description:e.function.description,input_schema:e.function.parameters}))}function Tp(t){let e=[],n=[],r=m=>{if(typeof m=="string"){n.push({type:"text",text:m});return}Array.isArray(m)&&m.forEach(C=>{if(typeof C=="string"){n.push({type:"text",text:C});return}C&&typeof C=="object"&&C.type==="text"&&C.text&&n.push({...C})})},o=()=>{let m=new Map;for(let C=0;C<n.length;C++){let w=n[C],y=w?.text??JSON.stringify(w),g=m.get(y);if(g===void 0){m.set(y,C);continue}!n[g]?.cache_control&&w?.cache_control&&(n[g]=w),n.splice(C,1),C--}};t.messages.forEach(m=>{m.role==="system"?r(m.content):e.push(m)}),o();let s=[];for(let m=0;m<e.length;m++){let C=e[m];if(C.role==="tool"){let w=C.content;try{typeof C.content=="string"&&(w=JSON.parse(C.content))}catch{}w!=null&&typeof w!="object"&&typeof w!="string"&&(w=String(w));let y={type:"tool_result",tool_use_id:C.tool_call_id,content:w};C.cache_control&&(y.cache_control=C.cache_control);let g=s[s.length-1];g&&g.role==="user"&&Array.isArray(g.content)?g.content.push(y):s.push({role:"user",content:[y]})}else if(C.role==="user"){let w=[];typeof C.content=="string"?w.push({type:"text",text:C.content}):Array.isArray(C.content)&&C.content.forEach(g=>{g&&typeof g=="object"&&g.type==="image_url"&&g.image_url?.url?w.push({type:"image",source:{type:"base64",media_type:g.media_type||"image/jpeg",data:g.image_url.url.split(",")[1]||g.image_url.url}}):w.push(g)});let y=s[s.length-1];y&&y.role==="user"&&Array.isArray(y.content)?y.content.push(...w):s.push({role:"user",content:w.length>0?w:[{type:"text",text:" "}]})}else if(C.role==="assistant"){let w=[];C.content&&(typeof C.content=="string"?w.push({type:"text",text:C.content}):Array.isArray(C.content)&&w.push(...C.content)),C.tool_calls&&C.tool_calls.length>0&&C.tool_calls.forEach(g=>{let _={};try{_=JSON.parse(g.function.arguments)}catch{_=g.function.arguments}w.push({type:"tool_use",id:g.id,name:g.function.name,input:_})}),C.thinking&&w.unshift({type:"thinking",thinking:C.thinking.content,signature:C.thinking.signature});let y=s[s.length-1];y&&y.role==="assistant"&&Array.isArray(y.content)?y.content.push(...w):s.push({role:"assistant",content:w.length>0?w:[{type:"text",text:" "}]})}}let a=()=>{let m=n.filter(C=>C?.cache_control).length;for(let C of s)Array.isArray(C.content)&&(m+=C.content.filter(w=>w?.cache_control).length);return m},u=m=>m&&typeof m=="object"?{...m}:{type:"ephemeral"},l=()=>{for(let m=s.length-1;m>=0;m--){let C=s[m]?.content;if(!Array.isArray(C))continue;let w=C.find(y=>y?.cache_control);if(w?.cache_control)return w.cache_control}for(let m=n.length-1;m>=0;m--)if(n[m]?.cache_control)return n[m].cache_control;return{type:"ephemeral"}},f=(m,C)=>{if(!Array.isArray(m?.content)||m.content.some(y=>y?.cache_control))return!1;let w=m.content.find(y=>y&&typeof y=="object"&&!y.cache_control);return w?(w.cache_control=u(C),!0):!1};(()=>{let m=4-a();if(m<=0||s.length===0)return;let C=s,w=l(),y=[];for(let g=C.length-1;g>=0;g--)C[g]?.role!=="user"||!Array.isArray(C[g].content)||y.push(g);for(let g of y){if(m<=0)break;f(C[g],w)&&m--}})();let h={messages:s,model:t.model,max_tokens:t.max_tokens||4096,temperature:t.temperature,stream:t.stream};if(n.length>0){let m=n.some(C=>C?.cache_control);h.system=m?n:n.map(C=>C.text||"").join(`
|
|
1
|
+
import { createRequire as __createRequire } from "node:module"; import { fileURLToPath as __fileURLToPath } from "node:url"; import { dirname as __pathDirname } from "node:path"; const require = __createRequire(import.meta.url); const __filename = __fileURLToPath(import.meta.url); const __dirname = __pathDirname(__filename);
|
|
2
|
+
var Ln=Object.defineProperty;var xa=Object.getOwnPropertyDescriptor;var Ca=Object.getOwnPropertyNames;var Ta=Object.prototype.hasOwnProperty;var Be=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var S=(n,e)=>()=>(n&&(e=n(n=0)),e);var Fn=(n,e)=>{for(var t in e)Ln(n,t,{get:e[t],enumerable:!0})},va=(n,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Ca(e))!Ta.call(n,r)&&r!==t&&Ln(n,r,{get:()=>e[r],enumerable:!(o=xa(e,r))||o.enumerable});return n};var Ra=n=>va(Ln({},"__esModule",{value:!0}),n);import{ProxyAgent as wa}from"undici";function Pa(n){if(n==null)return{ok:!0};let e=String(n).trim();if(!e)return{ok:!0};if(Sa.test(e))return{ok:!0};try{let t=new URL(e);return t.protocol!=="http:"&&t.protocol!=="https:"?{ok:!1,error:`Unsupported proxy protocol: ${t.protocol}. Only http:// and https:// are allowed.`}:{ok:!0}}catch{return{ok:!1,error:`Invalid proxy URL: ${e}`}}}function yr(n){let e=[];for(let t of hr){let o=n[t];if(o==null)continue;let r=Pa(o);r.ok||e.push({key:t,error:r.error})}return e}function kt(n){for(let e of hr){let t=n.get(e);if(t==null)continue;let o=String(t).trim();if(o)return o}}function _r(n){if(n==null||n==="")return!0;if(typeof n=="string"){let e=n.trim().toLowerCase();return e==="false"||e==="0"?!1:e==="true"||e==="1"?!0:!!e}return n===!1||n===0?!1:n===!0||n===1?!0:!!n}function se(n,e){let t=kt(n);if(t)return _r(n.get("PROXY_GLOBAL_ENABLED"))||e?.proxyEnabled===!0||e?.proxy_enabled===!0?t:void 0}function V(n){let e=Aa(n),t=_t.get(e);if(t)return t;let o=new wa(e);return _t.set(e,o),o}async function Un(){let n=Array.from(_t.values());_t.clear(),await Promise.allSettled(n.map(e=>e.close()))}function Aa(n){let e=n.trim();if(!e)throw new TypeError("Proxy URL must not be empty");let t=new URL(e);if(t.protocol!=="http:"&&t.protocol!=="https:")throw new TypeError(`Unsupported proxy protocol: ${t.protocol}`);return t.toString()}var hr,Sa,_t,Z=S(()=>{"use strict";hr=["HTTPS_PROXY","https_proxy","httpsProxy","PROXY_URL"],Sa=/\$\{[^}]+\}|\$[A-Z_][A-Z0-9_]*/;_t=new Map});import{readFileSync as Oa,existsSync as kr}from"fs";import{join as br}from"path";import{config as Ea}from"dotenv";import Ia from"json5";var be,Dn=S(()=>{"use strict";Z();be=class{config={};options;constructor(e={jsonPath:"./config.json"}){this.options={envPath:e.envPath||".env",jsonPath:e.jsonPath,useEnvFile:!1,useJsonFile:e.useJsonFile!==!1,useEnvironmentVariables:e.useEnvironmentVariables!==!1,...e},this.loadConfig()}loadConfig(){this.options.useJsonFile&&this.options.jsonPath&&this.loadJsonConfig(),this.options.initialConfig&&(this.config={...this.config,...this.options.initialConfig}),this.options.useEnvFile&&this.loadEnvConfig(),this.config.LOG_FILE&&(process.env.LOG_FILE=this.config.LOG_FILE),this.config.LOG&&(process.env.LOG=this.config.LOG)}loadJsonConfig(){if(!this.options.jsonPath)return;let e=this.isAbsolutePath(this.options.jsonPath)?this.options.jsonPath:br(process.cwd(),this.options.jsonPath);if(kr(e))try{let t=Oa(e,"utf-8"),o=Ia.parse(t);this.config={...this.config,...o},console.log(`Loaded JSON config from: ${e}`)}catch(t){console.warn(`Failed to load JSON config from ${e}:`,t)}else console.warn(`JSON config file not found: ${e}`)}loadEnvConfig(){let e=this.isAbsolutePath(this.options.envPath)?this.options.envPath:br(process.cwd(),this.options.envPath);if(kr(e))try{let t=Ea({path:e});t.parsed&&(this.config={...this.config,...this.parseEnvConfig(t.parsed)})}catch(t){console.warn(`Failed to load .env config from ${e}:`,t)}}loadEnvironmentVariables(){let e=this.parseEnvConfig(process.env);this.config={...this.config,...e}}parseEnvConfig(e){let t={};return Object.assign(t,e),t}isAbsolutePath(e){return e.startsWith("/")||e.includes(":")}get(e,t){let o=this.config[e];return o!==void 0?o:t}getAll(){return{...this.config}}getHttpsProxy(){return kt(this)}has(e){return this.config[e]!==void 0}set(e,t){this.config[e]=t}reload(){this.config={},this.loadConfig()}getConfigSummary(){let e=[];return this.options.initialConfig&&e.push("Initial Config"),this.options.useJsonFile&&this.options.jsonPath&&e.push(`JSON: ${this.options.jsonPath}`),this.options.useEnvFile&&e.push(`ENV: ${this.options.envPath}`),this.options.useEnvironmentVariables&&e.push("Environment Variables"),`Config sources: ${e.join(", ")}`}}});function B(n,e=500,t="internal_error",o="api_error"){let r=new Error(n);return r.statusCode=e,r.code=t,r.type=o,r}async function xr(n,e,t){e.log.error(n);let o=n.statusCode||500;if(n.rawBody)try{let s=JSON.parse(n.rawBody);return t.code(o).send(s)}catch{return t.code(o).send(n.rawBody)}let r={error:{message:n.message||"Internal Server Error",type:n.type||"api_error",code:n.code||"internal_error"}};return t.code(o).send(r)}var bt=S(()=>{"use strict"});function zn(n){jn=n}function xt(){return jn}function Ct(n){return jn||n.get("DEBUG_LOG")===!0}function vr(n){let e=n.get("DEBUG_LOG_OPTIONS");return!e||typeof e!="object"?xe:{maxBodyLength:e.maxBodyLength??xe.maxBodyLength,maxStreamChunks:e.maxStreamChunks??xe.maxStreamChunks}}function Tt(n){let e={};for(let[t,o]of Object.entries(n))Ma.has(t.toLowerCase())?e[t]="***MASKED***":e[t]=o;return e}function vt(n,e){return n.length<=e?n:n.slice(0,e)+`...[truncated, total ${n.length} bytes]`}function Rr(n,e,t){let o=typeof t.body=="string"?t.body:JSON.stringify(t.body);n.info({debug_log:!0,reqId:e,phase:"provider_request",url:t.url,headers:Tt(t.headers),body:vt(o,xe.maxBodyLength)})}function wr(n,e,t){n.info({debug_log:!0,reqId:e,phase:"provider_response",status:t.status,headers:Tt(t.headers),...t.body!==void 0?{body:vt(t.body,xe.maxBodyLength)}:{}})}function Cr(n,e,t,o){let r=$a(o);n.info({debug_log:!0,reqId:e,phase:"provider_stream_chunk",chunkIndex:t,...r?{usage_monitor:r}:{},data:vt(o,xe.maxBodyLength)})}function $a(n){let e=[];for(let t of n.split(/\r?\n/)){if(!t.startsWith("data:"))continue;let o=t.slice(5).trim();if(!(!o||o==="[DONE]"))try{let r=JSON.parse(o),s=r?.usage||r?.response?.usage;s&&e.push({path:r?.usage?"usage":"response.usage",usage:s,choicesLength:Array.isArray(r?.choices)?r.choices.length:void 0,finishReason:r?.choices?.[0]?.finish_reason})}catch{e.push({parseError:!0,data:vt(o,512)})}}if(e.length)return e.length===1?e[0]:e}function Tr(n,e,t){n.info({debug_log:!0,reqId:e,phase:"provider_stream_end",totalChunks:t})}function Sr(n,e,t,o){(async()=>{let r=n.pipeThrough(new TextDecoderStream).getReader(),s=0;try{let a="";for(;;){let{done:l,value:c}=await r.read();if(l)break;a+=c;let i=a.split(`
|
|
116
3
|
|
|
117
|
-
`)}return t.tools&&t.tools.length>0&&(h.tools=kw(t.tools),t.tool_choice&&(t.tool_choice==="auto"?h.tool_choice={type:"auto"}:t.tool_choice==="any"||t.tool_choice==="required"?h.tool_choice={type:"any"}:typeof t.tool_choice=="string"?h.tool_choice={type:"tool",name:t.tool_choice}:typeof t.tool_choice=="object"&&t.tool_choice.type==="function"&&(h.tool_choice={type:"tool",name:t.tool_choice.function.name}))),h}var di=class{constructor(e){this.options=e;this.useBearer=this.options?.UseBearer??!1}name="Anthropic";endPoint="/v1/messages";useBearer;logger;async auth(e,n){let r={};return this.useBearer?(r.authorization=`Bearer ${n.apiKey}`,r["x-api-key"]=void 0):(r["x-api-key"]=n.apiKey,r.authorization=void 0),{body:e,config:{headers:r}}}async transformRequestOut(e){let n=[];if(e.system){if(typeof e.system=="string")n.push({role:"system",content:e.system});else if(Array.isArray(e.system)&&e.system.length){let s=e.system.filter(a=>a.type==="text"&&a.text).map(a=>({type:"text",text:a.text,cache_control:a.cache_control}));n.push({role:"system",content:s})}}let r=JSON.parse(JSON.stringify(e.messages||[]));r?.forEach(s=>{s.role==="system"&&n.push({role:"system",content:s.content})}),r?.forEach(s=>{if(s.role!=="system"&&(s.role==="user"||s.role==="assistant")){if(typeof s.content=="string"){n.push({role:s.role,content:s.content});return}if(Array.isArray(s.content)){if(s.role==="user"){let a=s.content.filter(l=>l.type==="tool_result"&&l.tool_use_id);a.length&&a.forEach(l=>{let f={role:"tool",content:typeof l.content=="string"?l.content:JSON.stringify(l.content),tool_call_id:l.tool_use_id,cache_control:l.cache_control};n.push(f)});let u=s.content.filter(l=>l.type==="text"&&l.text||l.type==="image"&&l.source);u.length&&n.push({role:"user",content:u.map(l=>l?.type==="image"?{type:"image_url",image_url:{url:l.source?.type==="base64"?vp(l.source.data,l.source.media_type):l.source.url},media_type:l.source.media_type}:l)})}else if(s.role==="assistant"){let a={role:"assistant",content:""},u=s.content.filter(d=>d.type==="text"&&d.text);u.length&&(a.content=u.map(d=>d.text).join(`
|
|
118
|
-
`));let l=s.content.filter(d=>d.type==="tool_use"&&d.id);l.length&&(a.tool_calls=l.map(d=>({id:d.id,type:"function",function:{name:d.name,arguments:JSON.stringify(d.input||{})}})));let f=s.content.find(d=>d.type==="thinking");f&&(a.thinking={content:f.thinking,signature:f.signature}),n.push(a)}return}}});let o={messages:n,model:e.model,max_tokens:e.max_tokens,temperature:e.temperature,stream:e.stream,tools:e.tools?.length?this.convertAnthropicToolsToUnified(e.tools):void 0,tool_choice:e.tool_choice};return e.thinking&&(o.reasoning={effort:Sp(e.thinking.budget_tokens),enabled:e.thinking.type==="enabled"}),e.tool_choice&&(e.tool_choice.type==="tool"?o.tool_choice={type:"function",function:{name:e.tool_choice.name}}:o.tool_choice=e.tool_choice.type),o}async transformRequestIn(e,n,r){if(!this.isAnthropicMessagesEndpoint(n.baseUrl))return e;r&&r.req&&(r.req.isTargetAnthropic=!0);let o=Tp(e),s={};return this.useBearer?(s.authorization=`Bearer ${n.apiKey}`,s["x-api-key"]=void 0):(s["x-api-key"]=n.apiKey,s.authorization=void 0),s["anthropic-version"]="2023-06-01",s["content-type"]="application/json",{body:o,config:{headers:s}}}isAnthropicMessagesEndpoint(e){try{return new URL(e.trim()).pathname.replace(/\/+$/,"").endsWith("/messages")}catch{return!1}}async transformResponseIn(e,n){if(n?.req?.isTargetAnthropic)return e;if(e.headers.get("Content-Type")?.includes("text/event-stream")){if(!e.body)throw new Error("Stream response body is null");let o=await this.convertOpenAIStreamToAnthropic(e.body,n);return new Response(o,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}else{let o=await e.json(),s=this.convertOpenAIResponseToAnthropic(o,n);return new Response(JSON.stringify(s),{headers:{"Content-Type":"application/json"}})}}convertAnthropicToolsToUnified(e){return e.map(n=>({type:"function",function:{name:n.name,description:n.description||"",parameters:n.input_schema}}))}async convertOpenAIStreamToAnthropic(e,n){return new ReadableStream({start:async o=>{let s=new TextEncoder,a=`msg_${Date.now()}`,u=null,l="unknown",f=!1,d=!1,h=!1,m=new Map,C=new Map,w=0,y=0,g=0,_=!1,E=!1,b=0,S=-1,T=()=>{let P=b;return b++,P},R=P=>{if(!_)try{o.enqueue(P);let K=new TextDecoder().decode(P);this.logger.debug({reqId:n.req.id,data:K,type:"send data"})}catch(K){if(K instanceof TypeError&&K.message.includes("Controller is already closed"))_=!0;else throw this.logger.debug({reqId:n.req.id,error:K instanceof Error?K.message:String(K),type:"send data error"}),K}},$=()=>{if(!_)try{if(!f){this.logger?.warn("[empty_stream] Upstream produced no data, closing silently"),o.close(),_=!0;return}if(S>=0){let K={type:"content_block_stop",index:S};R(s.encode(`event: content_block_stop
|
|
119
|
-
data: ${JSON.stringify(K)}
|
|
4
|
+
`);a=i.pop()||"";for(let u of i)u.trim()&&(s<o.maxStreamChunks?Cr(e,t,s,u):s===o.maxStreamChunks&&e.info({debug_log:!0,reqId:t,phase:"provider_stream_chunk_omitted",message:`[chunks after #${s} omitted, maxStreamChunks=${o.maxStreamChunks}]`}),s++)}a.trim()&&(s<o.maxStreamChunks&&Cr(e,t,s,a.trim()),s++),Tr(e,t,s)}catch(a){console.error(`[debug_log] Error reading debug stream for reqId=${t}:`,a),Tr(e,t,s)}finally{r.releaseLock()}})()}var Ma,xe,jn,We=S(()=>{"use strict";Ma=new Set(["authorization","x-api-key","x-goog-api-key","cookie","set-cookie"]),xe={maxBodyLength:4096,maxStreamChunks:100},jn=!1});function Pr(n,e,t,o,r){let s=new Headers({"Content-Type":"application/json"});t.headers&&Object.entries(t.headers).forEach(([i,u])=>{u&&s.set(i,u)});let a,l=AbortSignal.timeout(t.TIMEOUT??60*1e3*60);if(t.signal){let i=new AbortController,u=()=>i.abort();t.signal.addEventListener("abort",u),l.addEventListener("abort",u),a=i.signal}else a=l;let c={method:"POST",headers:s,body:JSON.stringify(e),signal:a};return t.httpsProxy&&(c.dispatcher=V(t.httpsProxy)),r?.debug({reqId:o.req.id,method:"POST",headers:Tt(Object.fromEntries(s.entries())),requestUrl:typeof n=="string"?n:n.toString(),useProxy:Na(t.httpsProxy)},"final request"),fetch(typeof n=="string"?n:n.toString(),c)}function Na(n){if(!(typeof n!="string"||!n.trim()))try{let e=new URL(n);return e.username||e.password?(e.username="",e.password="",`${e.toString()} (credentials redacted)`):e.toString()}catch{return"[invalid proxy URL]"}}var Ar=S(()=>{Z();We()});var Rt,Hn=S(()=>{Rt="2.3.232"});var Or={};Fn(Or,{getFallbackPromotionStore:()=>Ce,resetFallbackPromotionStore:()=>Ua});function Ce(n){return ge||(ge=new Jn,n&&ge.configure(n)),ge}function Ua(){ge&&(ge.clearAll(),ge=null)}var Fa,Jn,ge,wt=S(()=>{"use strict";ee();Fa=600*1e3,Jn=class{promotions=new Map;enabled=!0;ttlMs=Fa;configure(e){e?.enabled!==void 0&&(this.enabled=e.enabled),e?.ttlMinutes!==void 0&&(this.ttlMs=e.ttlMinutes*60*1e3)}getKey(e,t,o){return`${e},${t}:${o}`}promote(e,t,o,r,s,a){if(!this.enabled)return;let l=this.getKey(e,t,o),c=`${r},${s}`;this.promotions.set(l,{promotedModel:c,timestamp:Date.now(),ttlMs:a??this.ttlMs})}getPromotion(e,t,o,r){if(!this.enabled)return null;let s=this.getKey(e,t,o),a=this.promotions.get(s);if(!a)return null;if(Date.now()-a.timestamp>=a.ttlMs)return this.promotions.delete(s),null;let[c,...i]=a.promotedModel.split(","),u=i.join(",");if(!U().isAvailable(c,u))return this.promotions.delete(s),null;let m=r.find(y=>y.name.toLowerCase()===c.toLowerCase()),g=m?.models?.find(y=>String(y).toLowerCase()===u.toLowerCase());return!m||!g||m.enabled===!1?(this.promotions.delete(s),null):`${m.name},${g}`}clear(e,t,o){let r=this.getKey(e,t,o);this.promotions.delete(r)}clearByPrimary(e,t){let o=`${e},${t}:`,r=0;for(let s of this.promotions.keys())s.startsWith(o)&&(this.promotions.delete(s),r++);return r}clearAll(){this.promotions.clear()}clearExpired(){let e=Date.now();for(let[t,o]of this.promotions)e-o.timestamp>=o.ttlMs&&this.promotions.delete(t)}getAllPromotions(){let e=Date.now(),t=[];for(let[o,r]of this.promotions){let s=r.ttlMs-(e-r.timestamp);s>0&&t.push({key:o,promotedModel:r.promotedModel,remainingMs:s})}return t}},ge=null});import{existsSync as Mr,mkdirSync as Da,readFileSync as ja,writeFileSync as za}from"fs";import{join as $r}from"path";import{HOME_DIR as Ha}from"@wengine-ai/claude-code-router-shared";function Ga(n){try{if(!Mr(Gn))return;let e=JSON.parse(ja(Gn,"utf-8"));if(!Array.isArray(e))return;let t=Date.now();for(let o of e){if(!o||!o.provider||!o.model)continue;let r=o.updatedAt||o.lastFailureTime||0;r&&t-r>1440*60*1e3||n.restore({provider:o.provider,model:o.model,status:o.status,failureCount:o.failureCount??0,successCount:o.successCount??0,lastFailureTime:o.lastFailureTime??0,lastProbeTime:o.lastProbeTime??0,lastError:o.lastError,rateLimitUntil:o.rateLimitUntil})}}catch{}}function Ir(n){try{let e=n.getAllStates();if(e.length===0)return;Mr(Wn)||Da(Wn,{recursive:!0});let t=e.map(o=>({...o,updatedAt:Date.now()}));za(Gn,JSON.stringify(t,null,2),"utf-8")}catch{}}function Vn(){if(Er)return;Er=!0;let n=U();Ga(n),Wa=setInterval(()=>Ir(n),6e4),process.on("exit",()=>Ir(n))}function U(n){return Bn||(Bn=new St(n)),Bn}var Ja,Ba,St,Wn,Gn,Er,Wa,Bn,ee=S(()=>{"use strict";Ja=120,Ba={enabled:!0,failureThreshold:3,probeIntervalMinutes:5,halfOpenSuccessThreshold:2},St=class{states=new Map;config;probeTimer;constructor(e){this.config={...Ba,...e}}getKey(e,t){return!e||!t?null:`${e},${t}`}recordSuccess(e,t){if(!this.config.enabled)return;let o=this.getKey(e,t);if(!o)return;let r=this.states.get(o);r&&(r.successCount++,!r.rateLimitUntil&&(r.status==="half-open"?r.successCount>=this.config.halfOpenSuccessThreshold&&(this.clearPromotionsForPrimary(e,t),this.states.delete(o)):r.status==="open"&&(r.status="half-open",r.successCount=1,r.failureCount=0)))}clearPromotionsForPrimary(e,t){try{let{getFallbackPromotionStore:o}=(wt(),Ra(Or));o().clearByPrimary(e,t)}catch{}}recordFailure(e,t,o){if(!this.config.enabled)return;let r=this.getKey(e,t);if(!r)return;let s=this.states.get(r);s||(s={provider:e,model:t,status:"closed",failureCount:0,successCount:0,lastFailureTime:0,lastProbeTime:0},this.states.set(r,s)),s.failureCount++,s.lastFailureTime=Date.now(),s.lastError=o,s.status==="half-open"?(s.status="open",s.successCount=0,s.lastProbeTime=0):s.status==="closed"&&s.failureCount>=this.config.failureThreshold&&(s.status="open",s.lastProbeTime=0)}getState(e,t){let o=this.getKey(e,t);if(o)return this.states.get(o)}isAvailable(e,t){if(!this.config.enabled)return!0;if(!this.getKey(e,t))return!1;let r=this.getState(e,t);return r?r.status==="open"&&r.rateLimitUntil?!(Date.now()<r.rateLimitUntil):r.status!=="open":!0}getPriority(e,t){if(!this.config.enabled)return 0;if(!this.getKey(e,t))return 2;let r=this.getState(e,t);if(!r)return 0;switch(r.status){case"closed":return 0;case"half-open":return 1;case"open":return 2}}getHealthyModels(){return[]}getFailPoolModels(){let e=[];for(let[t,o]of this.states)o.status==="open"&&e.push(t);return e}getHalfOpenModels(){let e=[];for(let[t,o]of this.states)o.status==="half-open"&&e.push(t);return e}forceOpen(e,t,o){if(!this.config.enabled)return;let r=this.getKey(e,t);if(!r)return;let s=this.states.get(r);s?(s.status="open",s.failureCount=Math.max(s.failureCount,this.config.failureThreshold),s.lastFailureTime=Date.now(),s.lastError=o,s.lastProbeTime=0):(s={provider:e,model:t,status:"open",failureCount:this.config.failureThreshold,successCount:0,lastFailureTime:Date.now(),lastProbeTime:0,lastError:o},this.states.set(r,s))}markRateLimited(e,t,o,r){if(!this.config.enabled)return;let s=this.getKey(e,t);if(!s)return;let a=this.states.get(s);a?(a.status="open",a.lastFailureTime=Date.now(),a.lastError=r||"rate-limited",a.lastProbeTime=0):(a={provider:e,model:t,status:"open",failureCount:0,successCount:0,lastFailureTime:Date.now(),lastProbeTime:0,lastError:r||"rate-limited"},this.states.set(s,a));let l=(o??Ja)*1e3;a.rateLimitUntil=Date.now()+l}getRateLimitedModels(){let e=[];for(let[t,o]of this.states)o.status==="open"&&o.rateLimitUntil&&e.push(t);return e}needsProbe(e){return Date.now()-e.lastProbeTime>=this.config.probeIntervalMinutes*60*1e3}markProbeAttempt(e,t){let o=this.getKey(e,t);if(!o)return;let r=this.states.get(o);r&&r.status==="open"&&(r.lastProbeTime=Date.now())}clear(){this.states.clear()}recover(e,t){let o=this.getKey(e,t);o&&this.states.delete(o)}getAllStates(){return Array.from(this.states.values())}restore(e){let t=this.getKey(e.provider,e.model);t&&this.states.set(t,{...e})}stopProbeTimer(){this.probeTimer&&(clearInterval(this.probeTimer),this.probeTimer=void 0)}},Wn=$r(Ha,"runtime"),Gn=$r(Wn,"provider-health.json"),Er=!1,Wa=null;Bn=null});import{existsSync as Dr,mkdirSync as Va,readFileSync as Qa,writeFileSync as Ka}from"fs";import{join as jr}from"path";import{HOME_DIR as Xa}from"@wengine-ai/claude-code-router-shared";function Ge(n,e,t){let o=l=>{if(t instanceof Headers)return t.get(l);let c=Object.keys(t).find(i=>i.toLowerCase()===l);return c?t[c]:null},r=Qn(o,Ya),s=Qn(o,qa),a=Qn(o,Za);(r||s||a)&&Te.set(n,{provider:n,remaining:Fr(r),limit:Fr(s),reset:tc(a),capturedAt:Date.now()})}function ec(n){return Te.get(n)}function Yn(){return Array.from(Te.values())}function Qn(n,e){for(let t of e){let o=n(t);if(o)return o}return null}function Fr(n){if(!n)return null;let e=Number(n.trim().replace(/,/g,""));return Number.isFinite(e)?e:null}function tc(n){if(!n)return null;let e=n.trim();if(!e)return null;let t=Number(e);if(Number.isFinite(t))return t>1e12?Math.floor(t/1e3):t>1e9?Math.floor(t):Math.floor(Date.now()/1e3+t);let o=Date.parse(e);if(Number.isFinite(o))return Math.floor(o/1e3);let r=nc(e);return r===null?null:Math.floor((Date.now()+r)/1e3)}function nc(n){let e=/(\d+(?:\.\d+)?)(ms|s|m|h|d)/gi,t=0,o=!1;for(let r of n.matchAll(e)){o=!0;let s=Number(r[1]),a=r[2].toLowerCase();if(Number.isFinite(s))switch(a){case"ms":t+=s;break;case"s":t+=s*1e3;break;case"m":t+=s*60*1e3;break;case"h":t+=s*60*60*1e3;break;case"d":t+=s*24*60*60*1e3;break}}return o?t:null}function oc(){try{if(!Dr(Xn))return;let n=JSON.parse(Qa(Xn,"utf-8"));if(!Array.isArray(n))return;let e=Date.now();for(let t of n)if(t&&t.provider){if(t.capturedAt&&e-t.capturedAt>3600*1e3)continue;Te.set(t.provider,t)}}catch{}}function Ur(){try{if(Te.size===0)return;Dr(Kn)||Va(Kn,{recursive:!0}),Ka(Xn,JSON.stringify(Array.from(Te.values()),null,2),"utf-8")}catch{}}function Ve(){Nr||(Nr=!0,oc(),Lr=setInterval(Ur,6e4),Lr.unref?.(),process.on("exit",Ur))}var Kn,Xn,Te,Nr,Lr,Ya,qa,Za,ve=S(()=>{"use strict";Kn=jr(Xa,"runtime"),Xn=jr(Kn,"rate-limit.json"),Te=new Map,Nr=!1,Lr=null,Ya=["x-ratelimit-remaining-tokens","x-ratelimit-remaining-requests","x-ratelimit-remaining"],qa=["x-ratelimit-limit-tokens","x-ratelimit-limit-requests","x-ratelimit-limit"],Za=["x-ratelimit-reset-tokens","x-ratelimit-reset-requests","x-ratelimit-reset"]});var Re,qn=S(()=>{"use strict";Re=class{name="openai-responses";endPoint="/v1/responses";getCacheReadInputTokens(e){return e?.cache_read_input_tokens??e?.input_tokens_details?.cached_tokens??e?.prompt_tokens_details?.cached_tokens??0}getCacheCreationInputTokens(e){return e?.cache_creation_input_tokens??e?.input_tokens_details?.cache_creation_tokens??e?.input_tokens_details?.cache_write_tokens??e?.prompt_tokens_details?.cache_creation_tokens??e?.prompt_tokens_details?.cache_write_tokens??0}buildResponsesUsage(e){let t=e?.input_tokens??e?.prompt_tokens??0,o=e?.output_tokens??e?.completion_tokens??0,r=this.getCacheReadInputTokens(e),s=this.getCacheCreationInputTokens(e);return{input_tokens:t,output_tokens:o,total_tokens:e?.total_tokens??t+o,input_tokens_details:{cached_tokens:r,cache_creation_tokens:s},output_tokens_details:{reasoning_tokens:e?.output_tokens_details?.reasoning_tokens??0},cache_read_input_tokens:r,cache_creation_input_tokens:s}}async transformRequestIn(e){delete e.temperature,delete e.max_tokens,e.reasoning&&(e.reasoning={effort:e.reasoning.effort,summary:e.reasoning.summary||"auto"});let t=[],o=e.messages.filter(r=>r.role==="system");if(o.length>0){let r=o[0];Array.isArray(r.content)?r.content.forEach(s=>{let a="";typeof s=="string"?a=s:s&&typeof s=="object"&&"text"in s&&(a=s.text),t.push({role:"system",content:a})}):e.instructions=r.content}if(e.messages.forEach(r=>{if(r.role!=="system"){if(Array.isArray(r.content)){let s=r.content.map(a=>this.normalizeRequestContent(a,r.role)).filter(a=>a!==null);s.length>0?r.content=s:delete r.content}if(r.role==="tool"){let s={...r};s.type="function_call_output",s.call_id=r.tool_call_id,s.output=r.content,delete s.cache_control,delete s.role,delete s.tool_call_id,delete s.content,t.push(s);return}if(r.role==="assistant"&&Array.isArray(r.tool_calls)){r.tool_calls.forEach(s=>{t.push({type:"function_call",arguments:s.function.arguments,name:s.function.name,call_id:s.id})});return}t.push(r)}}),e.input=t,delete e.messages,Array.isArray(e.tools)){let r=e.tools.find(s=>s.function.name==="web_search");e.tools=e.tools.filter(s=>s.function.name!=="web_search").map(s=>(s.function.name==="WebSearch"&&delete s.function.parameters.properties.allowed_domains,s.function.name==="Edit"?{type:s.type,name:s.function.name,description:s.function.description,parameters:{...s.function.parameters,required:["file_path","old_string","new_string","replace_all"]},strict:!0}:{type:s.type,name:s.function.name,description:s.function.description,parameters:s.function.parameters})),r&&e.tools.push({type:"web_search"})}return e.parallel_tool_calls=!1,e}async transformResponseOut(e){let t=e.headers.get("Content-Type")||"";if(t.includes("application/json")){let o=await e.json();if(o.object==="response"&&o.output){let r=this.convertResponseToChat(o);return new Response(JSON.stringify(r),{status:e.status,statusText:e.statusText,headers:e.headers})}return o.type==="message"&&Array.isArray(o.content)?new Response(JSON.stringify(o),{status:e.status,statusText:e.statusText,headers:e.headers}):new Response(JSON.stringify(o),{status:e.status,statusText:e.statusText,headers:e.headers})}else if(t.includes("text/event-stream")){if(!e.body)return e;let[o,r]=e.body.tee(),s=o.getReader(),a="";try{let{value:f,done:_}=await s.read();!_&&f&&(a=new TextDecoder().decode(f))}finally{s.releaseLock()}if(o.cancel().catch(()=>{}),a.includes("message_start")||a.includes("content_block_start")){let f=this.prependToStream(a,r);return new Response(f,{status:e.status,statusText:e.statusText,headers:e.headers})}if(a.includes("response.created")||a.includes("response.output_text.delta")||a.includes("response.in_progress")||a.includes("response.output_item.added")){let f=this.prependToStream(a,r);return new Response(f,{status:e.status,statusText:e.statusText,headers:e.headers})}let i=this.prependToStream(a,r),u=new TextDecoder,d=new TextEncoder,m="",g=!1,y=this,p=new ReadableStream({async start(f){let _=i.getReader(),k=-1,h="",b=x=>(x!==h&&(k++,h=x),k);try{for(;;){let{done:x,value:v}=await _.read();if(x){g||f.enqueue(d.encode(`data: [DONE]
|
|
120
5
|
|
|
121
|
-
`)),
|
|
122
|
-
data: ${JSON.stringify(u)}
|
|
6
|
+
`));break}let C=u.decode(v,{stream:!0});m+=C;let R=m.split(/\r?\n/);m=R.pop()||"";for(let T of R)if(T.trim())try{if(T.startsWith("event: "))continue;if(T.startsWith("data: ")){let A=T.slice(5).trim();if(A==="[DONE]"){g=!0,f.enqueue(d.encode(`data: [DONE]
|
|
123
7
|
|
|
124
|
-
`))
|
|
125
|
-
data: ${JSON.stringify({type:"message_delta",delta:{stop_reason:"end_turn",stop_sequence:null},usage:{input_tokens:K,output_tokens:0,cache_read_input_tokens:0}})}
|
|
8
|
+
`));continue}try{let w=JSON.parse(A);if(w.type==="response.output_text.delta"){let O={id:w.item_id||"chatcmpl-"+Date.now(),object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:w.response?.model,choices:[{index:b(w.type),delta:{content:w.delta||""},finish_reason:null}]};f.enqueue(d.encode(`data: ${JSON.stringify(O)}
|
|
126
9
|
|
|
127
|
-
`))}let
|
|
128
|
-
data: ${JSON.stringify(P)}
|
|
10
|
+
`))}else if(w.type==="response.output_item.added"&&w.item?.type==="function_call"){let O={id:w.item.call_id||w.item.id||"chatcmpl-"+Date.now(),object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:w.response?.model||"gpt-5-codex-",choices:[{index:b(w.type),delta:{role:"assistant",tool_calls:[{index:0,id:w.item.call_id||w.item.id,function:{name:w.item.name||"",arguments:""},type:"function"}]},finish_reason:null}]};f.enqueue(d.encode(`data: ${JSON.stringify(O)}
|
|
129
11
|
|
|
130
|
-
`))
|
|
131
|
-
`);K=Q.pop()||"";for(let ee of Q){if(_)break;if(!ee.startsWith("data:"))continue;let se=ee.slice(5).trim();if(this.logger.debug({reqId:n.req.id,type:"recieved data",data:se}),se!=="[DONE]")try{let ue=JSON.parse(se);if(w++,this.logger.debug({reqId:n.req.id,response:ue,tppe:"Original Response"}),ue.error){n?.req&&(n.req.sseError=ue.error);let J={type:"error",message:{type:"api_error",message:JSON.stringify(ue.error)}};R(s.encode(`event: error
|
|
132
|
-
data: ${JSON.stringify(J)}
|
|
12
|
+
`))}else if(w.type==="response.output_item.added"&&w.item?.type==="message"){let O=[];(w.item.content||[]).forEach(E=>{E.type==="output_text"&&O.push({type:"text",text:E.text||""})});let P={role:"assistant"};if(O.length===1&&O[0].type==="text"?P.content=O[0].text:O.length>0&&(P.content=O),P.content){let E={id:w.item.id||"chatcmpl-"+Date.now(),object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:w.response?.model,choices:[{index:b(w.type),delta:P,finish_reason:null}]};f.enqueue(d.encode(`data: ${JSON.stringify(E)}
|
|
133
13
|
|
|
134
|
-
`))
|
|
135
|
-
data: ${JSON.stringify(Z)}
|
|
14
|
+
`))}}else if(w.type==="response.output_text.annotation.added"){let O={id:w.item_id||"chatcmpl-"+Date.now(),object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:w.response?.model||"gpt-5-codex",choices:[{index:b(w.type),delta:{annotations:[{type:"url_citation",url_citation:{url:w.annotation?.url||"",title:w.annotation?.title||"",content:"",start_index:w.annotation?.start_index||0,end_index:w.annotation?.end_index||0}}]},finish_reason:null}]};f.enqueue(d.encode(`data: ${JSON.stringify(O)}
|
|
136
15
|
|
|
137
|
-
`))}
|
|
138
|
-
data: ${JSON.stringify(Z)}
|
|
16
|
+
`))}else if(w.type==="response.function_call_arguments.delta"){let O={id:w.item_id||"chatcmpl-"+Date.now(),object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:w.response?.model||"gpt-5-codex-",choices:[{index:b(w.type),delta:{tool_calls:[{index:0,function:{arguments:w.delta||""}}]},finish_reason:null}]};f.enqueue(d.encode(`data: ${JSON.stringify(O)}
|
|
139
17
|
|
|
140
|
-
`))
|
|
141
|
-
data: ${JSON.stringify(J)}
|
|
18
|
+
`))}else if(w.type==="response.completed"){let O=w.response?.output?.some(E=>E.type==="function_call")?"tool_calls":"stop",P={id:w.response?.id||"chatcmpl-"+Date.now(),object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:w.response?.model||"gpt-5-codex-",choices:[{index:0,delta:{},finish_reason:O}]};f.enqueue(d.encode(`data: ${JSON.stringify(P)}
|
|
142
19
|
|
|
143
|
-
`))
|
|
144
|
-
data: ${JSON.stringify(Z)}
|
|
20
|
+
`)),g=!0}else if(w.type==="response.reasoning_summary_text.delta"){let O={id:w.item_id||"chatcmpl-"+Date.now(),object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:w.response?.model,choices:[{index:b(w.type),delta:{thinking:{content:w.delta||""}},finish_reason:null}]};f.enqueue(d.encode(`data: ${JSON.stringify(O)}
|
|
145
21
|
|
|
146
|
-
`))
|
|
147
|
-
data: ${JSON.stringify(J)}
|
|
22
|
+
`))}else if(w.type==="response.reasoning_summary_part.done"&&w.part){let O={id:w.item_id||"chatcmpl-"+Date.now(),object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:w.response?.model,choices:[{index:k,delta:{thinking:{signature:w.item_id}},finish_reason:null}]};f.enqueue(d.encode(`data: ${JSON.stringify(O)}
|
|
148
23
|
|
|
149
|
-
`))}}
|
|
150
|
-
|
|
24
|
+
`))}}catch{f.enqueue(d.encode(T+`
|
|
25
|
+
`))}}else f.enqueue(d.encode(T+`
|
|
26
|
+
`))}catch(A){console.error("Error processing line:",T,A),f.enqueue(d.encode(T+`
|
|
27
|
+
`))}}m.trim()&&f.enqueue(d.encode(m+`
|
|
28
|
+
`)),g||f.enqueue(d.encode(`data: [DONE]
|
|
151
29
|
|
|
152
|
-
`)),
|
|
153
|
-
data: ${JSON.stringify(
|
|
30
|
+
`))}catch(x){console.error("Stream error:",x),f.error(x)}finally{try{_.releaseLock()}catch(x){console.error("Error releasing reader lock:",x)}f.close()}}});return new Response(p,{status:e.status,statusText:e.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":"*"}})}return e}normalizeRequestContent(e,t){let o={...e};if(delete o.cache_control,e.type==="text")return{type:t==="assistant"?"output_text":"input_text",text:e.text};if(e.type==="image_url"){console.log(e);let r={type:t==="assistant"?"output_image":"input_image"};return typeof e.image_url?.url=="string"&&(r.image_url=e.image_url.url),r}return null}async transformResponseIn(e,t){if(e.headers.get("Content-Type")?.includes("text/event-stream")&&e.body){let[r,s]=e.body.tee(),a=r.getReader(),l="";try{let{value:m,done:g}=await a.read();!g&&m&&(l=new TextDecoder().decode(m))}finally{a.releaseLock()}r.cancel().catch(()=>{});let c=l.includes("message_start")||l.includes("content_block_start"),i=l.includes("chat.completion.chunk");if(l.includes("response.created")||l.includes("response.output_text.delta")||l.includes("response.in_progress")||l.includes("response.output_item.added"))return new Response(s,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}});if(i&&!c){let m=this.convertOpenAIChatStreamToResponsesAPI(s,t);return new Response(m,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}let d=this.convertAnthropicStreamToResponsesAPI(s,t);return new Response(d,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}try{let r=await e.json();return new Response(JSON.stringify(this.wrapChatInResponses(r)),{headers:{"Content-Type":"application/json"}})}catch{return e}}prependToStream(e,t){let r=new TextEncoder().encode(e),s=t.getReader(),a=!1;return new ReadableStream({async pull(l){a||(a=!0,l.enqueue(r));try{let{done:c,value:i}=await s.read();c?l.close():l.enqueue(i)}catch(c){l.error(c)}},cancel(){s.cancel().catch(()=>{})}})}convertOpenAIChatStreamToResponsesAPI(e,t){let o=new TextDecoder,r=new TextEncoder,s=t?.provider?.models?.[0]||"gpt-5.4",a=`resp_${Date.now()}`,l=0,c=!1,i=!1,u="",d=-1,m=[],g=(p,f)=>r.encode(`event: ${p}
|
|
31
|
+
data: ${JSON.stringify(f)}
|
|
154
32
|
|
|
155
|
-
`)),
|
|
156
|
-
data:
|
|
33
|
+
`),y=(p,f=[])=>({id:a,object:"response",created_at:Math.floor(Date.now()/1e3),status:p,model:s,output:f,usage:this.buildResponsesUsage()});return new ReadableStream({async start(p){try{let f=e.getReader(),_="",k=!1,h=b=>{if(!k){k=!0;for(let x of m)if(x.type==="function_call"){let v=m.indexOf(x);p.enqueue(g("response.function_call_arguments.done",{type:"response.function_call_arguments.done",item_id:x.call_id||x.id,output_index:v,arguments:x.arguments||""})),x.status="completed",p.enqueue(g("response.output_item.done",{type:"response.output_item.done",output_index:v,item:x}))}for(let x of m)if(x.type==="message"){let v=m.indexOf(x);x.status="completed",p.enqueue(g("response.output_item.done",{type:"response.output_item.done",output_index:v,item:x}))}p.enqueue(g("response.completed",{type:"response.completed",response:{id:a,object:"response",created_at:Math.floor(Date.now()/1e3),status:"completed",model:b?.model||s,output:m.slice(),usage:b?.usage?{...this.buildResponsesUsage(b.usage)}:this.buildResponsesUsage()}}))}};for(;;){let{done:b,value:x}=await f.read();if(b)break;_+=o.decode(x,{stream:!0});let v=_.split(`
|
|
34
|
+
`);_=v.pop()||"";for(let C of v){let R=C.trim();if(!R||R.startsWith("event:")||!R.startsWith("data:"))continue;let T=R.slice(5).trim();if(T==="[DONE]"){h({}),p.enqueue(r.encode(`data: [DONE]
|
|
157
35
|
|
|
158
|
-
`))}}if(
|
|
159
|
-
data: ${JSON.stringify(
|
|
36
|
+
`));continue}let A;try{A=JSON.parse(T)}catch{continue}c||(c=!0,p.enqueue(g("response.created",{type:"response.created",response:y("in_progress")})),p.enqueue(g("response.in_progress",{type:"response.in_progress",response:y("in_progress")})));let w=A.choices?.[0];if(!w)continue;let O=w.delta;if(O?.content){if(!i){i=!0;let P=l++,E={id:`${a}_msg`,type:"message",status:"in_progress",role:"assistant",content:[]};m.push(E),p.enqueue(g("response.output_item.added",{type:"response.output_item.added",output_index:P,item:E}))}p.enqueue(g("response.output_text.delta",{type:"response.output_text.delta",item_id:`${a}_msg`,output_index:l-1,content_index:0,delta:O.content}))}if(Array.isArray(O?.tool_calls))for(let P of O.tool_calls){if(P.id){u=P.id,d=l++;let E={id:P.id,type:"function_call",status:"in_progress",call_id:P.id,name:P.function?.name||"",arguments:""};m.push(E),p.enqueue(g("response.output_item.added",{type:"response.output_item.added",output_index:d,item:E}))}if(P.function?.arguments){p.enqueue(g("response.function_call_arguments.delta",{type:"response.function_call_arguments.delta",item_id:u,output_index:d,delta:P.function.arguments}));let E=m.find(N=>N.call_id===u);E&&(E.arguments+=P.function.arguments)}}w.finish_reason&&h(A)}}k||h({}),p.close()}catch(f){p.error(f)}}})}convertAnthropicStreamToResponsesAPI(e,t){let o=new TextDecoder,r=new TextEncoder,s=t?.provider?.models?.[0]||"gpt-5.4",a=`resp_${Date.now()}`,l="",c="",i=-1,u="",d="",m="",g=-1,y="",p="",f=-1,_=0,k=!1,h=!1,b=!1,x=!1,v=null,C=[],R=(E,N)=>r.encode(`event: ${E}
|
|
37
|
+
data: ${JSON.stringify(N)}
|
|
160
38
|
|
|
161
|
-
`)),
|
|
162
|
-
data:
|
|
39
|
+
`),T=(E,N=[])=>({id:a,object:"response",created_at:Math.floor(Date.now()/1e3),status:E,model:s,output:N,usage:this.buildResponsesUsage()}),A=()=>{k||(k=!0,P.enqueue(R("response.created",{type:"response.created",response:T("in_progress")})),P.enqueue(R("response.in_progress",{type:"response.in_progress",response:T("in_progress")})))},w=(E,N)=>{P.enqueue(R("response.output_item.done",{type:"response.output_item.done",output_index:E,item:{...N,status:"completed"}}))},O=E=>{if(!x){if(x=!0,h){let N=C.find(F=>F.type==="message");N&&(N.content=[{type:"output_text",text:l}],N.status="completed")}for(let N of C)N.type==="function_call"&&(N.status="completed");return R("response.completed",{type:"response.completed",response:{id:a,object:"response",created_at:Math.floor(Date.now()/1e3),status:"completed",model:s,output:C,usage:E?{...this.buildResponsesUsage(E)}:this.buildResponsesUsage()}})}},P;return new ReadableStream({async start(E){P=E;try{let N=e.getReader(),F="";for(;;){let{done:$,value:L}=await N.read();if($)break;F+=o.decode(L,{stream:!0});let W=F.split(`
|
|
40
|
+
`);F=W.pop()||"";for(let me of W){let D=me.trim();if(!D||D.startsWith("event:")||!D.startsWith("data:"))continue;let K=D.slice(5).trim();if(K==="[DONE]")continue;let H;try{H=JSON.parse(K)}catch{continue}if(H.type==="message_start"&&(a=H.message?.id||a,A()),H.type==="content_block_start"){let I=H.content_block;if(v=I?.type||null,I?.type==="tool_use"){u=I.id||"",d=I.name||"",m="",g=_++;let J={id:u,type:"function_call",status:"in_progress",call_id:u,name:d,arguments:""};C.push(J),P.enqueue(R("response.output_item.added",{type:"response.output_item.added",output_index:g,item:J}))}if(I?.type==="thinking"&&(y=I.thinking||"",!b)){b=!0,f=_++,p=`rs_${a}`;let J={id:p,type:"reasoning",status:"in_progress",summary:[]};C.push(J),P.enqueue(R("response.output_item.added",{type:"response.output_item.added",output_index:f,item:J}))}if(I?.type==="text"&&(l=I?.text||"",!h)){h=!0,i=_++,c=`${a}_msg`;let J={id:c,type:"message",status:"in_progress",role:"assistant",content:[]};C.push(J),P.enqueue(R("response.output_item.added",{type:"response.output_item.added",output_index:i,item:J}))}}if(H.type==="content_block_delta"){let I=H.delta;if(I?.type==="text_delta"){if(!h){h=!0,i=_++,c=`${a}_msg`;let J={id:c,type:"message",status:"in_progress",role:"assistant",content:[]};C.push(J),P.enqueue(R("response.output_item.added",{type:"response.output_item.added",output_index:i,item:J}))}l+=I.text||"",P.enqueue(R("response.output_text.delta",{type:"response.output_text.delta",item_id:c,output_index:i,content_index:0,delta:I.text||""}))}I?.type==="thinking_delta"&&(y+=I.thinking||"",P.enqueue(R("response.reasoning_summary_text.delta",{type:"response.reasoning_summary_text.delta",item_id:p||`rs_${a}`,output_index:f>=0?f:0,summary_index:0,delta:I.thinking||""}))),I?.type==="input_json_delta"&&(m+=I.partial_json||"",P.enqueue(R("response.function_call_arguments.delta",{type:"response.function_call_arguments.delta",item_id:u||"call_0",output_index:g>=0?g:0,delta:I.partial_json||""})))}if(H.type==="content_block_stop"){if(v==="tool_use"&&u){P.enqueue(R("response.function_call_arguments.done",{type:"response.function_call_arguments.done",item_id:u,output_index:g,arguments:m}));let I=C.find(J=>J.call_id===u);I&&(I.arguments=m,I.status="completed"),I&&w(g,I)}if(v==="text"&&h){P.enqueue(R("response.output_text.done",{type:"response.output_text.done",item_id:c,output_index:i,content_index:0,text:l}));let I=C.find(J=>J.type==="message");I&&(I.content=[{type:"output_text",text:l}],w(i,I))}if(v==="thinking"&&b){let I=C.find(J=>J.type==="reasoning");I&&(I.summary=[{type:"summary_text",text:y}],w(f,I))}v=null}if(H.type==="message_delta"){let I=O(H.usage);I&&P.enqueue(I)}if(H.type==="message_stop"){let I=O();I&&P.enqueue(I),P.enqueue(r.encode(`data: [DONE]
|
|
163
41
|
|
|
164
|
-
`));let je={type:"content_block_stop",index:Z};R(s.encode(`event: content_block_stop
|
|
165
|
-
|
|
42
|
+
`))}}}A();let z=O();z&&P.enqueue(z),F="",P.close()}catch(N){P.error(N)}}})}wrapChatInResponses(e){let t=e?.choices?.[0],o=[],r=[];if(t?.message?.content&&r.push({type:"output_text",text:t.message.content}),o.push({type:"message",role:"assistant",content:r}),Array.isArray(t?.message?.tool_calls))for(let s of t.message.tool_calls)o.push({type:"function_call",id:s.id,call_id:s.id,name:s.function?.name||"",arguments:s.function?.arguments||"{}"});return{id:e.id||`resp_${Date.now()}`,object:"response",model:e.model,output:o,usage:e.usage?{...this.buildResponsesUsage(e.usage)}:void 0}}convertResponseToChat(e){let t=e.output?.find(i=>i.type==="message"),o=e.output?.find(i=>i.type==="function_call"),r;t?.content?.length&&t?.content[0].annotations&&(r=t.content[0].annotations.map(i=>({type:"url_citation",url_citation:{url:i.url||"",title:i.title||"",content:"",start_index:i.start_index||0,end_index:i.end_index||0}}))),this.logger.debug({data:r,type:"url_citation"});let s=null,a=null,l=null;if(t&&t.reasoning&&(l={content:t.reasoning}),t&&t.content){let i=[],u=[];if(t.content.forEach(d=>{if(d.type==="output_text")i.push(d.text||"");else if(d.type==="output_image"){let m=this.buildImageContent({url:d.image_url,mime_type:d.mime_type});m&&u.push(m)}else if(d.type==="output_image_base64"){let m=this.buildImageContent({b64_json:d.image_base64,mime_type:d.mime_type});m&&u.push(m)}}),u.length>0){let d=[];i.length>0&&d.push({type:"text",text:i.join("")}),d.push(...u),s=d}else s=i.join("")}return o&&(a=[{id:o.call_id||o.id,function:{name:o.name,arguments:o.arguments},type:"function"}]),{id:e.id||"chatcmpl-"+Date.now(),object:"chat.completion",created:e.created_at,model:e.model,choices:[{index:0,message:{role:"assistant",content:s||null,tool_calls:a,thinking:l,annotations:r},logprobs:null,finish_reason:a?"tool_calls":"stop"}],usage:e.usage?{prompt_tokens:e.usage.input_tokens||0,completion_tokens:e.usage.output_tokens||0,total_tokens:e.usage.total_tokens||0,prompt_tokens_details:{cached_tokens:this.getCacheReadInputTokens(e.usage),cache_creation_tokens:this.getCacheCreationInputTokens(e.usage)},cache_read_input_tokens:this.getCacheReadInputTokens(e.usage),cache_creation_input_tokens:this.getCacheCreationInputTokens(e.usage)}:null}}buildImageContent(e){return e&&(e.url||e.b64_json)?{type:"image_url",image_url:{url:e.url||"",b64_json:e.b64_json},media_type:e.mime_type}:null}}});var Zn,X,Pt=S(()=>{"use strict";Zn=class{capacity;cache;constructor(e){this.capacity=e,this.cache=new Map}get(e){if(!this.cache.has(e))return;let t=this.cache.get(e);return this.cache.delete(e),this.cache.set(e,t),t}put(e,t){if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this.capacity){let o=this.cache.keys().next().value;o!==void 0&&this.cache.delete(o)}this.cache.set(e,t)}values(){return Array.from(this.cache.values())}delete(e){return this.cache.delete(e)}},X=new Zn(100)});import{existsSync as Br,mkdirSync as rc,readFileSync as sc,writeFileSync as ic}from"fs";import{join as Wr}from"path";import{HOME_DIR as ac}from"@wengine-ai/claude-code-router-shared";function no(n,e){n&&we.set(n,{...e,provider:n,capturedAt:Date.now()})}function At(n){let e=we.get(n);return e?{...e}:void 0}function oo(){return Array.from(we.values()).map(n=>({...n}))}function cc(){try{if(!Br(to))return;let n=JSON.parse(sc(to,"utf-8"));if(!Array.isArray(n))return;let e=Date.now();for(let t of n)if(t&&t.provider){if(t.capturedAt&&e-t.capturedAt>1440*60*1e3)continue;we.set(t.provider,t)}}catch{}}function Jr(){try{if(we.size===0)return;Br(eo)||rc(eo,{recursive:!0}),ic(to,JSON.stringify(Array.from(we.values()),null,2),"utf-8")}catch{}}function Qe(){zr||(zr=!0,cc(),Hr=setInterval(Jr,6e4),Hr.unref?.(),process.on("exit",Jr))}var eo,to,we,zr,Hr,Se=S(()=>{"use strict";eo=Wr(ac,"runtime"),to=Wr(eo,"quota-store.json"),we=new Map,zr=!1,Hr=null});function Pe(n){if(typeof n!="string")return;let e=n.trim();if(!(!e||!lc.test(e)))return e}function Ke(n){if(!n)return;if(typeof n=="object")return Pe(n.session_id??n.sessionId);if(typeof n!="string")return;let e=n.trim();if(!e)return;try{let r=JSON.parse(e),s=Pe(r?.session_id??r?.sessionId);if(s)return s}catch{}let t="_session_",o=e.lastIndexOf(t);if(o!==-1)return Pe(e.slice(o+t.length))}var lc,Xe=S(()=>{"use strict";lc=/^[A-Za-z0-9_-]+$/});import{randomUUID as uc}from"node:crypto";import{readFileSync as dc,statSync as pc}from"node:fs";import{homedir as Gr}from"node:os";import{join as Qr}from"node:path";import{getContextWindow as fc}from"@wengine-ai/claude-code-router-shared";function Ae(n){return!!n&&typeof n=="object"&&!Array.isArray(n)}function hc(n){if(typeof n=="string")return n.slice(0,1e3);if(Array.isArray(n)){let e=n.find(t=>t&&typeof t.text=="string");return e?String(e.text).slice(0,1e3):""}return""}function yc(n){if(typeof n?.pathname=="string")return n.pathname;if(typeof n?.url!="string")return"";try{return new URL(n.url,"http://127.0.0.1").pathname}catch{return n.url}}function ro(n){return typeof n!="string"?"":(n.includes(",")&&n.split(",").pop()||n).trim().replace(/\[1m\]$/i,"").toLowerCase()}function _c(n){if(typeof n=="number"&&Number.isFinite(n)&&n>0)return Math.floor(n);if(typeof n=="string"&&/^\d+$/.test(n.trim())){let e=Number.parseInt(n.trim(),10);return e>0?e:void 0}}function kc(n){return n==="~"?Gr():n.startsWith("~/")?Qr(Gr(),n.slice(2)):n}function Kr(n,e){let t=Ae(n?.Clients)?n.Clients:{};return Ae(t[e])?t[e]:{}}function bc(n){let e;try{e=pc(n)}catch{Ye.delete(n);return}let t=Ye.get(n);if(t&&t.mtimeMs===e.mtimeMs&&t.size===e.size)return t;try{let o=JSON.parse(dc(n,"utf8")),r=Ae(o?.providers)&&Ae(o.providers.ccr)?o.providers.ccr:void 0,s=Array.isArray(r?.models)?r.models:[],a=new Map,l;for(let i of s){if(!Ae(i))continue;let u=_c(i.contextWindow);u&&(l||(l=u),typeof i.id=="string"&&i.id.trim()&&a.set(ro(i.id),u))}let c={mtimeMs:e.mtimeMs,size:e.size,contextWindows:a,firstContextWindow:l};return Ye.set(n,c),c}catch{Ye.delete(n);return}}function xc(n,e){let t=Kr(e,"pi"),o=kc(t.configPath||"~/.pi/agent"),r=bc(Qr(o,"models.json")),s=ro(n?.originalModel||n?.body?.model),a=ro(t.modelAlias||"ccr-opus");return(s?r?.contextWindows.get(s):void 0)||(a?r?.contextWindows.get(a):void 0)||r?.firstContextWindow||fc(e)}function Cc(n){let e=Kr(n,"pi").routing;if(e===void 0)return{extendedContextRatio:Vr};if(!Ae(e))throw new Error("Clients.pi.routing must be an object");for(let r of Object.keys(e))if(!gc.has(r))throw new Error(`Clients.pi.routing contains unsupported field: ${r}`);return{extendedContextRatio:((r,s)=>{let a=e[r];if(a===void 0)return s;if(typeof a!="number"||!Number.isFinite(a)||a<=0||a>1)throw new Error(`Clients.pi.routing.${r} must be a finite number greater than 0 and at most 1`);return a})("extendedContextRatio",Vr)}}function qe(n,e=!0){return{clientType:n,usageScope:"request",supportsExplicitExtendedContext:e}}function Xr(n,e,t=!0){let o=Ke(n?.body?.metadata?.user_id);return{clientType:e,usageScope:o?"session":"request",stableSessionId:o,supportsExplicitExtendedContext:t}}function qr(n){return typeof n=="string"&&mc.includes(n)}function he(n){if(qr(n?.clientType))return n.clientType;let e=yc(n),t=n?.headers||{},o=typeof t["user-agent"]=="string"?t["user-agent"]:"",r=n?.body||{},s=hc(r.system);if(/\bYou are Qwen Code\b/i.test(s)||/Qwen Code, an interactive CLI agent/i.test(s))return"qwen-code";if(/operating inside pi\b/i.test(s)||/a coding agent harness/i.test(s))return"pi";if(/\bYou are opencode\b/i.test(s))return"opencode";let a=t["x-anthropic-billing-header"];if(typeof a=="string"&&a.includes("cc_version="))return"claude-code";if(o.includes("codex")||o.includes("Codex")||e.endsWith("/v1/responses"))return"codex";if(r.metadata&&typeof r.metadata=="object"&&typeof r.metadata.user_id=="string")return"claude-code";if(o.includes("opencode"))return"opencode";if(o.includes("pi-coding-agent"))return"pi";if(o.includes("QwenCode"))return"qwen-code";let l=n?.originalModel||r.model||"";return/^ccr-(opus|sonnet|haiku)(\[1m\])?$/i.test(l)?o.includes("Anthropic/")?"pi":o.includes("claude-cli")||o.includes("Claude-CLI")?"qwen-code":typeof t["x-stainless-package-version"]=="string"?"pi":"claude-code":o.includes("claude-cli")||o.includes("Claude-CLI")?"claude-code":String(l).toLowerCase()==="ccr-codex"?"codex":e.endsWith("/v1/messages")?"api":"unknown"}function Zr(n){return Yr[n]}function Oc(n){if(typeof n?.__ccrRequestScopeId=="string"&&n.__ccrRequestScopeId)return n.__ccrRequestScopeId;let e=typeof n?.id=="string"&&n.id||uc();return n.__ccrRequestScopeId=e,e}function ye(n,e={}){let t=he(n),o=Zr(t).createContext(n,e),r=o.stableSessionId||Oc(n),s=o.usageScope==="session"?"session":"request";return n.clientType=t,n.clientContext=o,o.stableSessionId?n.sessionId=o.stableSessionId:delete n.sessionId,n.usageSessionId=r,n.usageCacheKey=`${t}:${s}:${r}`,o}function Ec(){Ye.clear()}var mc,Vr,gc,Ye,Tc,vc,Rc,wc,Sc,Pc,Ac,Yr,Oe=S(()=>{"use strict";Xe();mc=["claude-code","pi","qwen-code","opencode","codex","api","unknown"],Vr=.8,gc=new Set(["extendedContextRatio"]),Ye=new Map;Tc={type:"claude-code",createContext(n){return Xr(n,"claude-code")}},vc={type:"pi",createContext(n,e){let t=xc(n,e),o=Cc(e);return{...qe("pi",!1),contextWindow:t,extendedContextThreshold:Math.max(1,Math.floor(t*o.extendedContextRatio))}}},Rc={type:"qwen-code",createContext(n){return Xr(n,"qwen-code")}},wc={type:"opencode",createContext(){return qe("opencode")}},Sc={type:"codex",createContext(){return qe("codex")}},Pc={type:"api",createContext(){return qe("api")}},Ac={type:"unknown",createContext(){return qe("unknown")}},Yr={"claude-code":Tc,pi:vc,"qwen-code":Rc,opencode:wc,codex:Sc,api:Pc,unknown:Ac}});import{get_encoding as Ic}from"tiktoken";import{readFile as so}from"fs/promises";import{opendir as Mc,stat as $c}from"fs/promises";import{join as io}from"path";import{CLAUDE_PROJECTS_DIR as es,HOME_DIR as ts}from"@wengine-ai/claude-code-router-shared";function Y(n,e,t,o){let r=as(e,t),s=n.sessionId||n.clientContext?.stableSessionId,a=ss[r.code]||502;throw new ae(`Project routing error (${o}): ${r.reason}. Project-level Router target: "${e}". Session: "${s||"unknown"}".`,{sessionId:s,configuredTarget:e,code:r.code,statusCode:a})}function Et(n){let e=n||"";return e.includes(",")&&(e=e.split(",").pop()||e),e.includes("/")&&(e=e.split("/").pop()||e),e.includes(":")&&(e=e.split(":")[0]),e.trim().toLowerCase()}function is(n){let e=Et(n),t=e.includes("[1m]")||e.endsWith("[1m"),o=e.replace(/\[1m\]|\[1m$/g,""),r=o.match(/^ccr-(opus|sonnet|haiku)$/i);if(r)return{family:r[1].toLowerCase(),extended:t,isCcrAlias:!0};let s=o.match(/claude-(?:\d+-\d+-|\d+-)?(sonnet|opus|haiku)(?:-|$)/i)||o.match(/claude-(sonnet|opus|haiku)(?:-|$)/i);return s?{family:s[1].toLowerCase(),extended:t,isCcrAlias:!1}:{family:null,extended:t,isCcrAlias:!1}}function Lc(n,e){if(!e||!n)return null;let t=Et(n);if(e[n])return e[n];if(e[t])return e[t];let{family:o}=is(n);if(o&&e[o])return e[o];for(let[r,s]of Object.entries(e)){let a=Et(r);if(a&&t.includes(a))return s}return null}function Fc(n){return n?(n.input_tokens||0)+(n.cache_read_input_tokens||0)+(n.cache_creation_input_tokens||0):0}function Ot(n){if(!n?.includes(","))return null;let[e,...t]=n.split(","),o=e.trim(),r=t.join(",").trim();return!o||!r?null:{providerName:o,routeModel:r}}function Ze(n,e,t){let o=n.find(s=>s.name.toLowerCase()===e.toLowerCase());if(!o||o.enabled===!1)return null;let r=o.models?.find(s=>String(s).toLowerCase()===t.toLowerCase());return r?{provider:o,model:String(r)}:null}function as(n,e){let t=Ot(n);if(!t)return{reason:`invalid model format "${n}" (expected "provider,model")`,code:"invalid_model_format"};let{providerName:o,routeModel:r}=t,s=e.find(i=>i.name?.toLowerCase()===o.toLowerCase());if(!s)return{reason:`provider "${o}" not found`,code:"provider_not_found"};if(s.enabled===!1)return{reason:`provider "${o}" is disabled`,code:"provider_disabled"};let a=s.models?.find(i=>String(i).toLowerCase()===r.toLowerCase());if(!a)return{reason:`model "${r}" not found in provider "${o}"`,code:"model_not_found"};if(!U().isAvailable(s.name,String(a)))return{reason:`model "${r}" in provider "${o}" is temporarily unavailable (health fail-pool)`,code:"model_unhealthy"};let c=At(s.name);if(c){let i=c.limitDaily!==void 0&&c.usedDailyBalance!==void 0&&c.usedDailyBalance>=c.limitDaily,u=c.totalBalance!==void 0&&c.usedBalance!==void 0&&c.usedBalance>=c.totalBalance;if(i||u)return{reason:`provider "${o}" quota is exhausted`,code:"quota_exhausted"}}return{reason:`unable to resolve model "${n}"`,code:"resolution_failed"}}function G(n,e,t,o,r,s,a){let l=Ot(n);if(!l)return a?null:n;let{providerName:c,routeModel:i}=l,u=Ze(e,c,i);if(!u){if(r===!0&&o&&!t&&s!==!1){let m=Ce(),g=m.getPromotion(c,i,o,e);if(g){let y=Ot(g);if(y){let p=Ze(e,y.providerName,y.routeModel);if(p)return`${p.provider.name},${p.model}`}m.clear(c,i,o)}}return null}if(r===!0&&o&&!t&&s!==!1){let m=Ce(),g=m.getPromotion(c,i,o,e);if(g){let y=Ot(g);if(y){let p=Ze(e,y.providerName,y.routeModel);if(p)return`${p.provider.name},${p.model}`}m.clear(c,i,o)}}if(!t&&!U().isAvailable(u.provider.name,u.model))return null;let d=At(u.provider.name);if(d){let m=d.limitDaily!==void 0&&d.usedDailyBalance!==void 0&&d.usedDailyBalance>=d.limitDaily,g=d.totalBalance!==void 0&&d.usedBalance!==void 0&&d.usedBalance>=d.totalBalance;if(m||g)return null}return`${u.provider.name},${u.model}`}function Q(n,e,t,o,r,s){let a=U(),l=[t?.[n],o?.[n]];for(let c of l)if(!(!Array.isArray(c)||c.length===0))for(let i of c){let u=G(i,e,!1,n,void 0,void 0,s);if(u)return u}return null}function Uc(n){return n.body.messages?.some(e=>e.role==="user"&&Array.isArray(e.content)&&e.content.some(t=>t.type==="image"||t.type==="image_url"||Array.isArray(t?.content)&&t.content.some(o=>o.type==="image"||o.type==="image_url")))}function Dc(n){let e=Et(n);return[/claude/i,/gemini/i,/gpt-4o/i,/gpt-4\.1/i,/gpt-4-vision/i,/qwen.*vl/i,/glm-4v/i,/grok.*vision/i,/pixtral/i,/llava/i].some(o=>o.test(e))}function cs(n,e,t){return t?.usageScope!=="session"?n:Math.max(n,Fc(e))}function ls(n,e,t){return n?.extendedContextThreshold??e?.extendedContextThreshold??t??2e5}function jc(n,e,t,o,r,s,a,l,c,i,u,d){let m=n.clientContext,g=m?.longContextThreshold??t.longContextThreshold??c??6e4,y=cs(e,r,m),p=n.modelFamily,f=ls(m,t,i),_=m?.supportsExplicitExtendedContext!==!1&&s===!0;if((_||y>f)&&t.extendedContext){let b=G(t.extendedContext,o,!1,"extendedContext",l,d,u);if(b)return n.log.info(`Family: using extended context model (1M+), tokens: ${y}, estimated: ${e}, explicit: ${_}, threshold: ${f}`),{model:b,scenarioType:"extendedContext",isFallback:!1};let x=l?Q("extendedContext",o,t.fallback,a,p,u):null;if(x)return n.log.info(`Family: using extended context fallback model (1M+), tokens: ${y}, estimated: ${e}, explicit: ${_}, threshold: ${f}`),{model:x,scenarioType:"extendedContext",isFallback:!0};u&&Y(n,t.extendedContext,o,"extendedContext"),n.log.warn("Family: extendedContext model unavailable (fail pool), skipping")}if(y>g&&(t.longContext||t.fallback?.longContext?.length||a?.longContext?.length)){let b=t.longContext?G(t.longContext,o,!1,"longContext",l,d,u):null;if(b)return n.log.info(`Family: using long context model, tokens: ${y}, estimated: ${e}`),{model:b,scenarioType:"longContext",isFallback:!1};let x=l?Q("longContext",o,t.fallback,a,p,u):null;if(x)return n.log.info(`Family: using long context fallback model, tokens: ${y}, estimated: ${e}`),{model:x,scenarioType:"longContext",isFallback:!0};u&&t.longContext&&Y(n,t.longContext,o,"longContext"),n.log.warn("Family: no healthy longContext model available, falling through to other scenarios")}if(Array.isArray(n.body.tools)&&n.body.tools.some(b=>b.type?.startsWith("web_search"))&&t.webSearch){let b=G(t.webSearch,o,!1,"webSearch",l,d,u);if(b)return{model:b,scenarioType:"webSearch",isFallback:!1};let x=l?Q("webSearch",o,t.fallback,a,p,u):null;if(x)return n.log.info("Family: using webSearch fallback model"),{model:x,scenarioType:"webSearch",isFallback:!0};u&&Y(n,t.webSearch,o,"webSearch"),n.log.warn("Family: webSearch model unavailable (fail pool), skipping")}if(n.body.thinking?.type==="enabled"&&t.think){let b=G(t.think,o,!1,"think",l,d,u);if(b)return{model:b,scenarioType:"think",isFallback:!1};let x=l?Q("think",o,t.fallback,a,p,u):null;if(x)return n.log.info("Family: using think fallback model"),{model:x,scenarioType:"think",isFallback:!0};u&&Y(n,t.think,o,"think"),n.log.warn("Family: think model unavailable (fail pool), skipping")}if(t.default){let b=G(t.default,o,!1,"default",l,d,u);if(b)return{model:b,scenarioType:"default",isFallback:!1};let x=l?Q("default",o,t.fallback,a,p,u):null;if(x)return n.log.info("Family: using default fallback model"),{model:x,scenarioType:"default",isFallback:!0};u&&Y(n,t.default,o,"default"),n.log.warn("Family: default model unavailable (fail pool), skipping")}return null}function Wc(){if(_e.size<=ns)return;let n=[..._e.keys()].slice(0,_e.size-ns);for(let e of n)_e.delete(e)}function Gc(){if(Ee.size<=os)return;let n=[...Ee].slice(0,Ee.size-os);for(let e of n)Ee.delete(e)}var ss,ae,ie,It,Nc,zc,Mt,_e,ns,Ee,os,Hc,Jc,Bc,rs,us,et=S(()=>{"use strict";Pt();ee();Se();wt();Xe();Oe();ss={provider_not_found:404,model_not_found:404,invalid_model_format:400,provider_disabled:503,model_unhealthy:503,quota_exhausted:503,resolution_failed:502,project_config_error:500},ae=class extends Error{statusCode;code;type;sessionId;configuredTarget;constructor(e,t){super(e),this.name="ProjectRoutingError",this.statusCode=t?.statusCode||ss[t?.code||""]||502,this.code=t?.code||"project_routing_error",this.type="api_error",this.sessionId=t?.sessionId,this.configuredTarget=t?.configuredTarget}};ie=Ic("cl100k_base"),It=(n,e,t)=>{let o=0;return Array.isArray(n)&&n.forEach(r=>{typeof r.content=="string"?o+=ie.encode(r.content).length:Array.isArray(r.content)&&r.content.forEach(s=>{s.type==="text"?o+=ie.encode(s.text).length:s.type==="tool_use"?o+=ie.encode(JSON.stringify(s.input)).length:s.type==="tool_result"&&(o+=ie.encode(typeof s.content=="string"?s.content:JSON.stringify(s.content)).length)})}),typeof e=="string"?o+=ie.encode(e).length:Array.isArray(e)&&e.forEach(r=>{r.type==="text"&&(typeof r.text=="string"?o+=ie.encode(r.text).length:Array.isArray(r.text)&&r.text.forEach(s=>{o+=ie.encode(s||"").length}))}),t&&t.forEach(r=>{r.description&&(o+=ie.encode(r.name+r.description).length),r.input_schema&&(o+=ie.encode(JSON.stringify(r.input_schema)).length)}),o},Nc=async(n,e)=>{if(n.sessionId){let t=await us(n.sessionId);if(t){let o=io(ts,t,"config.json"),r=io(ts,t,`${n.sessionId}.json`);try{let s=JSON.parse(await so(r,"utf8"));if(s&&s.Router&&Object.keys(s.Router).length>0)return s.Router}catch{}try{let s=JSON.parse(await so(o,"utf8"));if(s&&s.Router&&Object.keys(s.Router).length>0)return s.Router}catch(s){if(s&&s.code!=="ENOENT"){let a=n.sessionId||n.clientContext?.stableSessionId;throw new ae(`Project routing error: project config.json is malformed or unreadable in project "${t}". ${s.message}. Session: "${a||"unknown"}".`,{sessionId:a,configuredTarget:o,code:"project_config_error",statusCode:500})}}}}};zc=async(n,e,t,o,r,s)=>{let a=t.get("providers")||[],l=r||t.get("Router"),c=l?.enableFallback===!0,i=c?l?.fallback:void 0,u=c&&!s?i||t.get("fallback"):i,d=!s,m=null;if(n.body?.system?.length>1&&n.body?.system[1]?.text?.includes("<CCR-SUBAGENT-MODEL>")){let C=n.body?.system[1].text.match(/<CCR-SUBAGENT-MODEL>(.*?)<\/CCR-SUBAGENT-MODEL>/s);C&&(n.body.system[1].text=n.body.system[1].text.replace(`<CCR-SUBAGENT-MODEL>${C[1]}</CCR-SUBAGENT-MODEL>`,""),m=C[1])}if(n.body.model.includes(",")&&!s){let C=G(n.body.model,a,!1,"default",c,d,s);if(C)return{model:C,scenarioType:"default"};n.log.warn(`Explicit model ${n.body.model} unavailable (fail pool), trying fallback`);let R=c?Q("default",a,void 0,u,void 0,s):null;if(R)return n.log.info(`Using fallback for explicit model: ${R}`),{model:R,scenarioType:"default"};n.log.warn(`No fallback available for explicit model ${n.body.model}, continuing through routing logic`)}let{family:g,extended:y,isCcrAlias:p}=is(n.body.model),f=l?.families?.[g||""];if(f&&l?.enableFamilyRouting){n.log.info(`Using model family routing for: ${g}${y?" (1M)":""}`),n.modelFamily=g,n.familyFallback=f.fallback;let C=jc(n,e,f,a,o,y,u,c,l?.longContextThreshold,l?.extendedContextThreshold,s,d);if(C)return{model:C.model,scenarioType:C.scenarioType}}let _=p&&!l?.enableFamilyRouting?null:Lc(n.body.model,l?.models);if(_){let C=G(_,a,!1,"modelMapping",c,d,s);if(C)return n.log.info(`Using mapped model for ${n.body.model}: ${_}`),{model:C,scenarioType:"modelMapping"};let R=c?Q("modelMapping",a,void 0,u,void 0,s):null;if(R)return{model:R,scenarioType:"modelMapping"};s&&Y(n,_,a,"modelMapping"),n.log.warn(`Mapped model ${_} unavailable (fail pool), skipping`)}let k=n.clientContext,h=cs(e,o,k),b=ls(k,void 0,l?.extendedContextThreshold);if(h>b&&l?.extendedContext){n.log.info(`Using extended context (1M) model due to token count: ${h}, estimated: ${e}, threshold: ${b}`);let C=G(l.extendedContext,a,!1,"extendedContext",c,d,s);if(C)return{model:C,scenarioType:"extendedContext"};n.log.warn(`Extended context model ${l.extendedContext} unavailable (fail pool), trying fallback`);let R=c?Q("extendedContext",a,void 0,u,void 0,s):null;if(R)return{model:R,scenarioType:"extendedContext"};s&&Y(n,l.extendedContext,a,"extendedContext")}let x=k?.longContextThreshold??l?.longContextThreshold??6e4;if(h>x&&l?.longContext){n.log.info(`Using long context model due to token count: ${h}, estimated: ${e}, threshold: ${x}`);let C=G(l.longContext,a,!1,"longContext",c,d,s);if(C)return{model:C,scenarioType:"longContext"};n.log.warn(`Long context model ${l.longContext} unavailable (fail pool), trying fallback`);let R=c?Q("longContext",a,void 0,u,void 0,s):null;if(R)return{model:R,scenarioType:"longContext"};s&&Y(n,l.longContext,a,"longContext")}if(!s&&m)return{model:m,scenarioType:"default"};if(n.body.model?.includes("claude")&&n.body.model?.includes("haiku")&&l?.background){n.log.info(`Using background model for ${n.body.model}`);let C=G(l.background,a,!1,"background",c,d,s);if(C)return{model:C,scenarioType:"background"};let R=c?Q("background",a,void 0,u,void 0,s):null;if(R)return{model:R,scenarioType:"background"};s&&Y(n,l.background,a,"background"),n.log.warn(`Background model ${l.background} unavailable (fail pool), falling through`)}if(Array.isArray(n.body.tools)&&n.body.tools.some(C=>C.type?.startsWith("web_search"))&&l?.webSearch){let C=G(l.webSearch,a,!1,"webSearch",c,d,s);if(C)return{model:C,scenarioType:"webSearch"};n.log.warn(`WebSearch model ${l.webSearch} unavailable (fail pool), trying fallback`);let R=c?Q("webSearch",a,void 0,u,void 0,s):null;if(R)return{model:R,scenarioType:"webSearch"};s&&Y(n,l.webSearch,a,"webSearch")}if(n.body.thinking?.type==="enabled"&&l?.think){n.log.info(`Using think model for ${n.body.thinking}`);let C=G(l.think,a,!1,"think",c,d,s);if(C)return{model:C,scenarioType:"think"};n.log.warn(`Think model ${l.think} unavailable (fail pool), trying fallback`);let R=c?Q("think",a,void 0,u,void 0,s):null;if(R)return{model:R,scenarioType:"think"};s&&Y(n,l.think,a,"think")}if(l?.default){let C=G(l.default,a,!1,"default",c,d,s);if(C)return{model:C,scenarioType:"default"};n.log.warn(`Default model ${l.default} unavailable (fail pool), trying fallback`);let R=c?Q("default",a,void 0,u,void 0,s):null;if(R)return{model:R,scenarioType:"default"};if(!s){let T=G(l.default,a,!0,"default",c,d,s);if(T)return n.log.warn(`No fallback available; retrying default model ${l.default} despite fail-pool state`),{model:T,scenarioType:"default"}}}return s&&Y(n,l?.default||n.body.model,a,"default"),{model:void 0,scenarioType:"default"}},Mt=async(n,e,t)=>{let{configService:o,event:r}=t;n.originalModel=n.body.model,ye(n,o.getAll());let s=await Nc(n,o),a=s||o.get("Router"),l=a?.enableFallback===!0,c=o.get("providers")||[],i=!!s;n.enableFallback=l,n.strictProjectRouting=i,n.fallbackConfig=i?a?.fallback:a?.fallback||o.get("fallback");let u=n.clientContext?.usageScope==="session"?n.previousUsage??X.get(n.usageCacheKey):void 0,{messages:d,system:m=[],tools:g}=n.body,y=o.get("REWRITE_SYSTEM_PROMPT");if(y&&m.length>1&&m[1]?.text?.includes("<env>")){let p=await so(y,"utf-8");m[1].text=`${p}<env>${m[1].text.split("<env>").pop()}`}try{let[p,f]=n.body.model.split(","),_=t.tokenizerService?.getTokenizerConfigForModel(p,f),k;t.tokenizerService?k=(await t.tokenizerService.countTokens({messages:d,system:m,tools:g},_,p)).tokenCount:k=It(d,m,g),n.tokenCount=k;let h,b=i?void 0:o.get("CUSTOM_ROUTER_PATH");if(b)try{h=await Be(b)(n,o.getAll(),{event:r})}catch(x){n.log.error(`failed to load custom router: ${x.message}`)}if(h)n.scenarioType="default";else{let x=await zc(n,k,o,u,s,!!s);h=x.model,n.scenarioType=x.scenarioType}if(a?.image&&h!==a.image&&Uc(n)&&!Dc(h)){let x=G(a.image,c,!1,"image",l,!i,i);if(x)n.log.info(`Using image model fallback for ${h}`),h=x,n.scenarioType="image";else{let v=l?Q("image",c,void 0,n.fallbackConfig,void 0,i):null;v?(n.log.info(`Using image fallback model: ${v}`),h=v,n.scenarioType="image"):i?Y(n,a.image,c,"image"):(n.log.warn(`Image model ${a.image} unavailable (fail pool), keeping ${h}`),n.scenarioType="image")}}typeof h=="string"&&h.trim()?n.body.model=h:(n.log.warn(`Router could not resolve a valid model for ${n.originalModel||n.body.model}; keeping original request model`),n.scenarioType=n.scenarioType||"default")}catch(p){if(p instanceof ae)throw p;if(n.log.error(`Error in router middleware: ${p.message}`),i){let f=n.sessionId||n.clientContext?.stableSessionId;throw new ae(`Project routing error: router failure in project mode. ${p.message}. Session: "${f||"unknown"}".`,{sessionId:f,configuredTarget:a?.default,code:"project_router_failure",statusCode:502})}n.body.model=a?.default,n.scenarioType="default"}},_e=new Map,ns=1e3,Ee=new Set,os=1e3,Hc=3,Jc=50,Bc=n=>new Promise(e=>setTimeout(e,n));rs=async n=>{let e=await Mc(es),t=[];for await(let s of e)s.isDirectory()&&t.push(s.name);let o=t.map(async s=>{let a=io(es,s,`${n}.jsonl`);try{return(await $c(a)).isFile()?s:null}catch{return null}}),r=await Promise.all(o);for(let s of r)if(s)return s;return null},us=async n=>{let e=Pe(n);if(!e)return null;if(_e.has(e))return _e.get(e)||null;try{let t=await rs(e);if(!t&&!Ee.has(e)){Ee.add(e),Gc();for(let o=0;o<Hc&&!t;o++)await Bc(Jc),t=await rs(e)}return t?(_e.set(e,t),Wc(),t):null}catch(t){return console.error("Error searching for project by session:",t),null}}});function tt(n){let e=[],t=Array.isArray(n.input)?n.input:[n.input];for(let o of t)if(o.type==="function_call")e.push({role:"assistant",tool_calls:[{id:o.call_id,type:"function",function:{name:o.name,arguments:o.arguments||"{}"}}]});else if(o.type==="function_call_output")e.push({role:"tool",tool_call_id:o.call_id,content:typeof o.output=="string"?o.output:JSON.stringify(o.output)});else if(o.type==="reasoning"){let r=Array.isArray(o.summary)?o.summary.filter(s=>s.type==="summary_text"&&s.text).map(s=>s.text).join(`
|
|
43
|
+
`):"";r&&e.push({role:"assistant",content:[{type:"text",text:`[reasoning]
|
|
44
|
+
${r}`}],_reasoningItem:!0})}else if(o.role){let r=o.content;Array.isArray(r)&&(r=r.map(s=>s.type==="input_text"?{type:"text",text:s.text}:s.type==="output_text"?{type:"text",text:s.text}:s.type==="input_image"?{type:"image_url",image_url:{url:s.image_url},media_type:s.mime_type}:s)),e.push({role:o.role,content:r})}n.messages=e,delete n.input,n.instructions&&typeof n.instructions=="string"&&(n.system=n.instructions,delete n.instructions),Array.isArray(n.tools)&&(n.tools=n.tools.filter(o=>o&&typeof o=="object").map(o=>o.type==="function"&&o.name&&!o.function?{type:"function",function:{name:o.name,description:o.description||"",parameters:o.parameters||{type:"object",properties:{}}}}:o.function?.name?o:o.type==="web_search"?{type:"function",function:{name:"web_search",description:"Search the web",parameters:{type:"object",properties:{query:{type:"string"}}}}}:null).filter(Boolean)),n.reasoning&&typeof n.reasoning=="object"&&(n.reasoning={enabled:!0,effort:n.reasoning.effort}),delete n.store,delete n.previous_response_id,delete n.include}async function ds(n,e,t,o){let r=n.body;(n.ccrHookOrder||=[]).push("handler"),o.endPoint==="/v1/responses"&&r?.input&&!r?.messages&&tt(r),o.endPoint==="/v1/responses"&&!n.provider&&typeof r?.model=="string"&&Vc.test(r.model)&&await Mt(n,e,{configService:t.configService,tokenizerService:t.tokenizerService});let s=n.provider;if(!s&&r?.model){let i=r.model.split(",");i.length>1&&(s=i[0],r.model=i.slice(1).join(","))}let a=s?t.providerService.getProvider(s):void 0;if(!a&&r?.model){let i=t.providerService.resolveModelRoute(r.model);i&&(a=i.provider,r.model=i.targetModel)}if(!a&&r?.model){let u=t.configService.get("Router")?.default;if(u&&u.includes(",")){let[d,...m]=u.split(","),g=t.providerService.getProvider(d);g&&(a=g,r.model=m.join(","))}}if(n.originalModel||(n.originalModel=r?.model),!a)throw B(`Provider '${s}' not found`,404,"provider_not_found");n.provider=a.name||s;let l=Xc(n),c=o.endPoint==="/v1/messages"&&l;l&&e.header("X-Codex-Detected","true"),c&&e.header("X-Codex-On-Messages","true"),n.isCodexOnMessagesEndpoint=c,n.codexDetected=l;try{o.endPoint==="/v1/responses"&&r.input&&!r.messages&&tt(r);let{requestBody:i,config:u,bypass:d}=await fs(r,a,o,n.headers,{req:n});if(i?.messages&&!d&&!n.isTargetAnthropic){let p=i.messages,f=new Set,_=[],k=[];for(let h of p){if(h?.role!=="system"){k.push(h);continue}let b=JSON.stringify(h.content??"");f.has(b)||(f.add(b),_.push(h))}_.length>0&&k.length>0&&(i.messages=[..._,...k])}let m=await ms(i,u,a,t,d,o,{req:n});try{a?.baseUrl&&m?.headers&&Ge(s,a.baseUrl,m.headers)}catch{}let g=await gs(i,m,a,o,d,{req:n,isCodexOnMessagesEndpoint:c});g=await ps(r,g,a.name||s);let y=hs(g,e,r,t);try{let p=r.model||n.originalModel;s&&p&&U().recordSuccess(s,p)}catch{}return y}catch(i){if(i instanceof ae)throw i;if(!n.__retryAttempted){n.__retryAttempted=!0;try{return await ds(n,e,t,o)}catch(d){if(n.__fallbackExhausted)throw d;i=d}}let u=await Qc(n,e,t,o,i);if(u)return u;throw n.__fallbackExhausted=!0,i}}async function ps(n,e,t){if(!n?.stream||!e?.body)return e;let o=e.body.getReader(),r=await o.read();if(r.done)throw o.releaseLock(),B(`Provider returned empty streaming response from ${t}`,400,"provider_response_error");let s=new TextDecoder().decode(r.value);if(s.includes("event: error")){o.releaseLock();let c=s.length<500?s:s.slice(0,500);throw B(`Provider ${t} returned error in SSE stream: ${c}`,400,"provider_response_error")}if(s.split(`
|
|
45
|
+
`).filter(c=>c.startsWith("data:")&&c.trim().length>5).length===0){o.releaseLock();let c=s.length<500?s:s.slice(0,500);throw B(`Provider ${t} returned streaming response with no SSE data lines: ${c}`,400,"provider_response_error")}let l=new ReadableStream({start:c=>{c.enqueue(r.value);let i=()=>{o.read().then(({done:u,value:d})=>{u?c.close():(c.enqueue(d),i())}).catch(u=>c.error(u))};i()},cancel:()=>{o.cancel()}});return new Response(l,{headers:e.headers,status:e.status,statusText:e.statusText})}async function Qc(n,e,t,o,r){let s=n.scenarioType||"default",a=n.familyFallback,l=n.modelFamily,c=n.strictProjectRouting?n.fallbackConfig:n.fallbackConfig??t.configService.get("fallback"),i=U(),u=n.provider||"",d=n.body.model||"",m=new Set,g=r?.statusCode===429||r?.isRateLimit===!0||r?.rawBody&&$t(r.rawBody)||r?.message&&$t(r.message);if(u&&d&&(g?(i.markRateLimited(u,d,120,r?.message),n.log.warn(`Primary model ${u},${d} rate-limited, will try fallbacks`)):i.recordFailure(u,d,r?.message),m.add(`${u},${d}`),t.recordUsage?.({provider:u,model:d,originalModel:n.originalModel||d,scenarioType:s,modelFamily:n.modelFamily,errorMessage:r?.message||String(r),sessionId:n.usageSessionId||n.id,stream:n.body.stream,inputTokens:n.tokenCount||0,req:n})),!(n.enableFallback??t.configService.get("Router")?.enableFallback===!0))return n.log.info("Fallback disabled by configuration, skipping fallback attempts"),null;let p=k=>{let[h,...b]=k.split(","),x=h?.trim(),v=b.join(",").trim();return!x||!v?null:{provider:x,model:v,key:`${x},${v}`}},f=[];if(l){let k=a?.[s];if(Array.isArray(k)&&k.length>0)f.push({name:`${l}/${s}`,models:k});else{let h=n.strictProjectRouting;n.log.warn(`No ${l} fallback configured for ${s}; ${h?"no project fallback available":"will try global fallback"}`)}}if(Array.isArray(c?.[s])&&c[s].length>0&&f.push({name:`global/${s}`,models:c[s]}),f.length===0&&s!=="image"&&n.body?.messages?.some(b=>b.role==="user"&&Array.isArray(b.content)&&b.content.some(x=>x.type==="image"||x.type==="image_url"||Array.isArray(x?.content)&&x.content.some(v=>v.type==="image"||v.type==="image_url")))&&Array.isArray(c?.image)&&c.image.length>0&&(n.log.info(`No fallback for scenario '${s}', but request has images \u2014 trying fallback.image`),f.push({name:"global/image (auto-detected)",models:c.image})),f.length===0)return null;let _=f.reduce((k,h)=>k+h.models.length,0);n.log.warn(`Request failed for ${s}, trying ${_} fallback models across ${f.length} fallback stage(s)`);for(let k of f){n.log.info(`Trying ${k.name} fallback stage with ${k.models.length} models`);for(let h of k.models){let b=p(h);if(!b){n.log.warn(`Fallback model '${h}' is invalid, skipping`);continue}if(m.has(b.key))continue;m.add(b.key);let x=t.providerService.getProviders(),v=Ze(x,b.provider,b.model);if(!v){n.log.warn(`Fallback model ${h} is not configured or provider is disabled, skipping`);continue}let C=v.provider.name,R=v.model;if(!i.isAvailable(C,R)){n.log.warn(`Fallback model ${h} unavailable (fail pool), skipping`);continue}let T;for(let A=1;A<=2;A++)try{n.log.info(`Trying fallback model: ${C},${R}${A>1?" (retry)":""}`);let w={...n.body};w.model=R;let O={...n,provider:C,body:w},P=v.provider,{requestBody:E,config:N,bypass:F}=await fs(w,P,o,n.headers,{req:O}),z=await ms(E,N,P,t,F,o,{req:O});try{P?.baseUrl&&z?.headers&&Ge(C,P.baseUrl,z.headers)}catch{}let $=await gs(E,z,P,o,F,{req:O,isCodexOnMessagesEndpoint:n.isCodexOnMessagesEndpoint||!1});return $=await ps(w,$,C),n.log.info(`Fallback model ${C},${R} succeeded`),i.recordSuccess(C,R),u&&d&&!n.strictProjectRouting&&(Ce().promote(u,d,s,C,R),n.log.info(`Promoted fallback model ${C},${R} for ${u},${d}:${s}`),g?n.log.info(`Rate-limited original model ${u},${d} already marked unavailable with cooldown`):(i.forceOpen(u,d,r?.message),n.log.info(`Marked original model ${u},${d} as unavailable`))),n.provider=C,n.body=w,hs($,e,w,t)}catch(w){if(T=w,A===1){n.log.warn(`Fallback model ${C},${R} failed, retrying once: ${w.message}`);continue}}i.recordFailure(C,R,T?.message),n.log.warn(`Fallback model ${C},${R} failed after retry: ${T?.message}`),t.recordUsage?.({provider:C,model:R,originalModel:n.originalModel||d||n.body.model,scenarioType:s,modelFamily:n.modelFamily,errorMessage:T?.message||String(T),sessionId:n.usageSessionId||n.id,stream:n.body.stream,inputTokens:n.tokenCount||0,req:n})}}return n.log.error(`All fallback models failed for ${s}`),null}async function fs(n,e,t,o,r){let s=JSON.parse(JSON.stringify(n)),a=s?.system;if(typeof a=="string"&&a.includes("cch="))s.system=a.replace(/cch=[^;]+;?/g,"cch=ccr-stable;");else if(Array.isArray(a))for(let i=0;i<a.length;i++){let u=a[i],d=typeof u=="string"?u:u?.text??"";if(d.includes("cch=")){let m=d.replace(/cch=[^;]+;?/g,"cch=ccr-stable;");typeof u=="string"?a[i]=m:typeof u?.text=="string"&&(u.text=m)}}let l={},c=!1;if(c=Kc(e,t,n),c&&(o instanceof Headers?o.delete("content-length"):delete o["content-length"],l.headers=o),!c&&typeof t.transformRequestOut=="function"){let i=await t.transformRequestOut(s);i.body?(s=i.body,l=i.config||{}):s=i}if(!c&&e.transformer?.use?.length)for(let i of e.transformer.use){if(!i||typeof i.transformRequestIn!="function")continue;let u=await i.transformRequestIn(s,e,r);u.body?(s=u.body,l={...l,...u.config}):s=u}if(!c&&e.transformer?.[n.model]?.use?.length)for(let i of e.transformer[n.model].use)!i||typeof i.transformRequestIn!="function"||(s=await i.transformRequestIn(s,e,r));return{requestBody:s,config:l,bypass:c}}function Kc(n,e,t){return e.endPoint==="/v1/chat/completions"&&Array.isArray(t?.system)?!1:n.transformer?.use?.length===1&&n.transformer.use[0].name===e.name&&(!n.transformer?.[t.model]?.use.length||n.transformer?.[t.model]?.use.length===1&&n.transformer?.[t.model]?.use[0].name===e.name)}function Xc(n){if(n.clientType)return n.clientType==="codex";let e=n.headers||{},t=e["x-anthropic-billing-header"]||"";if(typeof t=="string"&&t.includes("cc_version="))return!1;let o=e["user-agent"]||"";if(typeof o=="string"&&/codex/i.test(o))return!0;let r=n.pathname||n.url||"";if(typeof r=="string"&&r.split("?",1)[0].endsWith("/v1/responses"))return!0;let s=n.originalModel||n.body?.model||"";return typeof s=="string"&&s.toLowerCase()==="ccr-codex"}async function ms(n,e,t,o,r,s,a){let l=e.url||new URL(t.baseUrl);if(!e.TIMEOUT){let u=o.configService.get("API_TIMEOUT_MS");u&&(e.TIMEOUT=typeof u=="string"?parseInt(u,10):u)}if(r&&typeof s.auth=="function"){let u=await s.auth(n,t);if(u.body){n=u.body;let d=e.headers||{};u.config?.headers&&(d={...d,...u.config.headers},delete d.host,delete u.config.headers),e={...e,...u.config,headers:d}}else n=u}let c={Authorization:`Bearer ${t.apiKey}`,...e?.headers||{}};for(let u in c)(c[u]==="undefined"||["authorization","Authorization"].includes(u)&&c[u]?.includes("undefined"))&&delete c[u];Ct(o.configService)&&Rr(o.log,a.req.id,{url:String(l),headers:c,body:n});let i=await Pr(l,n,{...e,headers:JSON.parse(JSON.stringify(c)),httpsProxy:se(o.configService,t)},a,o.log);if(!i.ok){let u=await i.text();o.log.error(`[provider_response_error] Error from provider(${t.name},${n.model}: ${i.status}): ${u}`);let d=B(`Error from provider(${t.name},${n.model}: ${i.status}): ${u}`,i.status,"provider_response_error");throw d.isRateLimit=i.status===429||$t(u),d.rawBody=u,d}if(i.ok){let u=i.headers.get("content-type")||"",d=n.stream===!0;if(o.log.info(`[hidden-error-check] provider=${t.name} model=${n.model} stream=${n.stream} isStreamRequest=${d} contentType=${u} ok=${i.ok} status=${i.status} hasBody=${!!i.body}`),!d||u.includes("application/json")){let m=i.clone(),g="";try{if(g=await m.text(),!g||g.trim()==="")throw new SyntaxError("Empty JSON body");let y=JSON.parse(g);if(y&&typeof y=="object"&&y.error&&(typeof y.error=="string"||typeof y.error=="object"&&Object.keys(y.error).length>0)){o.log.error(`[provider_response_error] Hidden error from provider(${t.name},${n.model}: ${i.status}): ${g}`);let f=$t(g),_=B(`Error from provider(${t.name},${n.model}: ${i.status}): ${g}`,400,"provider_response_error");throw _.isRateLimit=f,_.rawBody=g,_}}catch(y){if(y instanceof SyntaxError){o.log.warn(`[provider_response_error] Empty or malformed JSON response from provider(${t.name},${n.model}: 200): "${g}"`);let p=B(`API returned an empty or malformed response (HTTP 200) from ${t.name} \u2014 check for a proxy or gateway intercepting the request`,400,"provider_response_error");throw p.rawBody=g,p}throw y}}}if(!n.stream&&Ct(o.configService)){let d=await i.clone().text();wr(o.log,a.req.id,{status:i.status,headers:Object.fromEntries(i.headers.entries()),body:d})}return i}async function gs(n,e,t,o,r,s){let a=e;if(!r&&t.transformer?.use?.length)for(let l of Array.from(t.transformer.use).reverse())!l||typeof l.transformResponseOut!="function"||(a=await l.transformResponseOut(a,s));if(!r&&t.transformer?.[n.model]?.use?.length)for(let l of Array.from(t.transformer[n.model].use).reverse())!l||typeof l.transformResponseOut!="function"||(a=await l.transformResponseOut(a,s));if(!r&&o.transformResponseIn&&(s.provider||(s.provider=t),a=await o.transformResponseIn(a,s)),s?.isCodexOnMessagesEndpoint)try{a=await new Re().transformResponseIn(a,{...s,provider:t})}catch(l){console.error("Failed to apply Responses API conversion for codex client:",l)}return a}function hs(n,e,t,o){if(n.ok||e.code(n.status),t.stream===!0){if(e.header("Content-Type","text/event-stream"),e.header("Cache-Control","no-cache"),e.header("Connection","keep-alive"),o&&Ct(o.configService)){let[s,a]=n.body.tee(),l=vr(o.configService);return Sr(s,o.log,e.request.id,l),e.send(a)}return e.send(n.body)}else return n.json()}function $t(n){let e=n.toLowerCase();return e.includes("rate limit")||e.includes("rate_limit")||e.includes("rate_limit_error")||e.includes("too many requests")||e.includes("too many")||e.includes("quota exhausted")||e.includes("qps_limit")||e.includes("token_limit")||e.includes("\u9650\u6D41")||e.includes("\u9891\u7387\u9650\u5236")}function Yc(n){try{return new URL(n),!0}catch{return!1}}var Vc,ys,Nt=S(()=>{"use strict";Ar();bt();We();Hn();ee();ve();wt();qn();et();Z();Vc=/^ccr-(opus|sonnet|haiku)(\[1m\])?$/i;ys=async n=>{n.get("/",async()=>({message:"LLMs API",version:Rt})),n.get("/health",async()=>({status:"ok",timestamp:new Date().toISOString()})),n.get("/providers/health",async()=>({states:U().getAllStates().map(r=>({provider:r.provider,model:r.model,status:r.status,failureCount:r.failureCount,successCount:r.successCount,lastFailureTime:r.lastFailureTime,lastError:r.lastError,rateLimitUntil:r.rateLimitUntil??null})),timestamp:new Date().toISOString()}));let e=n.transformerService.getTransformersWithEndpoint();for(let{transformer:t}of e)t.endPoint&&n.post(t.endPoint,async(o,r)=>ds(o,r,n,t));n.post("/providers",{schema:{body:{type:"object",properties:{id:{type:"string"},name:{type:"string"},type:{type:"string",enum:["openai","anthropic"]},baseUrl:{type:"string"},apiKey:{type:"string"},models:{type:"array",items:{type:"string"}},proxyEnabled:{type:"boolean"}},required:["id","name","type","baseUrl","apiKey","models"]}}},async(t,o)=>{let{name:r,baseUrl:s,apiKey:a,models:l}=t.body;if(!r?.trim())throw B("Provider name is required",400,"invalid_request");if(!s||!Yc(s))throw B("Valid base URL is required",400,"invalid_request");if(!a?.trim())throw B("API key is required",400,"invalid_request");if(!l||!Array.isArray(l)||l.length===0)throw B("At least one model is required",400,"invalid_request");if(n.providerService.getProvider(t.body.name))throw B(`Provider with name '${t.body.name}' already exists`,400,"provider_exists");return n.providerService.registerProvider(t.body)}),n.get("/providers",async()=>n.providerService.getProviders()),n.get("/providers/:id",{schema:{params:{type:"object",properties:{id:{type:"string"}},required:["id"]}}},async t=>{let o=n.providerService.getProvider(t.params.id);if(!o)throw B("Provider not found",404,"provider_not_found");return o}),n.put("/providers/:id",{schema:{params:{type:"object",properties:{id:{type:"string"}},required:["id"]},body:{type:"object",properties:{name:{type:"string"},type:{type:"string",enum:["openai","anthropic"]},baseUrl:{type:"string"},apiKey:{type:"string"},models:{type:"array",items:{type:"string"}},proxyEnabled:{type:"boolean"},enabled:{type:"boolean"}}}}},async(t,o)=>{let r=n.providerService.updateProvider(t.params.id,t.body);if(!r)throw B("Provider not found",404,"provider_not_found");return r}),n.delete("/providers/:id",{schema:{params:{type:"object",properties:{id:{type:"string"}},required:["id"]}}},async t=>{if(!n.providerService.deleteProvider(t.params.id))throw B("Provider not found",404,"provider_not_found");return{message:"Provider deleted successfully"}}),n.patch("/providers/:id/toggle",{schema:{params:{type:"object",properties:{id:{type:"string"}},required:["id"]},body:{type:"object",properties:{enabled:{type:"boolean"}},required:["enabled"]}}},async(t,o)=>{if(!n.providerService.toggleProvider(t.params.id,t.body.enabled))throw B("Provider not found",404,"provider_not_found");return{message:`Provider ${t.body.enabled?"enabled":"disabled"} successfully`}})}});var ce,Lt=S(()=>{"use strict";ce=class{constructor(e,t,o){this.configService=e;this.transformerService=t;this.logger=o;this.initializeCustomProviders()}providers=new Map;modelRoutes=new Map;initializeCustomProviders(){let e=this.configService.get("providers");if(e&&Array.isArray(e)){this.initializeFromProvidersArray(e);return}}initializeFromProvidersArray(e){e.forEach(t=>{try{if(!t.name||!t.api_base_url||!t.api_key)return;let o={};t.transformer&&Object.keys(t.transformer).forEach(r=>{r==="use"?Array.isArray(t.transformer.use)&&(o.use=t.transformer.use.map(s=>{if(Array.isArray(s)&&typeof s[0]=="string"){let a=this.transformerService.getTransformer(s[0]);if(a)return new a(s[1])}if(typeof s=="string"){let a=this.transformerService.getTransformer(s);return typeof a=="function"?new a:a}}).filter(s=>typeof s<"u")):Array.isArray(t.transformer[r]?.use)&&(o[r]={use:t.transformer[r].use.map(s=>{if(Array.isArray(s)&&typeof s[0]=="string"){let a=this.transformerService.getTransformer(s[0]);if(a)return new a(s[1])}if(typeof s=="string"){let a=this.transformerService.getTransformer(s);return typeof a=="function"?new a:a}}).filter(s=>typeof s<"u")})}),this.registerProvider({name:t.name,baseUrl:t.api_base_url,apiKey:t.api_key,models:t.models||[],quotaToken:t.quota_token,transformer:t.transformer?o:void 0,cacheMode:t.cache_mode||"exclusive",enabled:t.enabled!==!1,proxyEnabled:t.proxy_enabled===!0,wakeupEnabled:t.wakeup_enabled===!0,wakeupTime:t.wakeup_time||"06:00",wakeupModel:t.wakeup_model||""}),this.logger.info(`${t.name} provider registered`)}catch(o){this.logger.error(`${t.name} provider registered error: ${o}`)}})}registerProvider(e){let t={...e,enabled:e.enabled!==!1,proxyEnabled:e.proxyEnabled===!0,wakeupEnabled:e.wakeupEnabled===!0,wakeupTime:e.wakeupTime||"06:00",wakeupModel:e.wakeupModel||""};return this.providers.set(t.name,t),e.models.forEach(o=>{let r=`${t.name},${o}`,s={provider:t.name,model:o,fullModel:r};this.modelRoutes.set(r,s),this.modelRoutes.has(o)||this.modelRoutes.set(o,s)}),t}getProviders(){return Array.from(this.providers.values())}getProvider(e){return this.providers.get(e)}updateProvider(e,t){let o=this.providers.get(e);if(!o)return null;let r={...o,...t,updatedAt:new Date};return this.providers.set(e,r),t.models&&(o.models.forEach(s=>{let a=`${o.name},${s}`;this.modelRoutes.delete(a),this.modelRoutes.delete(s)}),t.models.forEach(s=>{let a=`${o.name},${s}`,l={provider:o.name,model:s,fullModel:a};this.modelRoutes.set(a,l),this.modelRoutes.has(s)||this.modelRoutes.set(s,l)})),r}deleteProvider(e){let t=this.providers.get(e);return t?(t.models.forEach(o=>{let r=`${t.name},${o}`;this.modelRoutes.delete(r),this.modelRoutes.delete(o)}),this.providers.delete(e),!0):!1}toggleProvider(e,t){let o=this.providers.get(e);if(!o)return!1;o.enabled=t;let r=this.configService.get("providers");if(r&&Array.isArray(r)){let s=r.find(a=>a.name===e);s&&(s.enabled=t)}return!0}resolveModelRoute(e){let t=this.modelRoutes.get(e);if(!t)return null;let o=this.providers.get(t.provider);return o?{provider:o,originalModel:e,targetModel:t.model}:null}getAvailableModelNames(){let e=[];return this.providers.forEach(t=>{t.enabled!==!1&&t.models.forEach(o=>{e.push(o),e.push(`${t.name},${o}`)})}),e}getModelRoutes(){return Array.from(this.modelRoutes.values())}parseTransformerConfig(e){return e?Array.isArray(e)?e.reduce((t,o)=>{if(Array.isArray(o)){let[r,s={}]=o;t[r]=s}else t[o]={};return t},{}):e:{}}async getAvailableModels(){let e=[];return this.providers.forEach(t=>{t.enabled!==!1&&t.models.forEach(o=>{e.push({id:o,object:"model",owned_by:t.name,provider:t.name}),e.push({id:`${t.name},${o}`,object:"model",owned_by:t.name,provider:t.name})})}),{object:"list",data:e}}}});var _s,ks=S(()=>{_s=n=>n<=0?"none":n<=1024?"low":n<=8192?"medium":"high"});var bs,xs=S(()=>{bs=(n,e)=>(n.includes("base64")&&(n=n.split("base64").pop(),n.startsWith(",")&&(n=n.slice(1))),`data:${e};base64,${n}`)});function qc(n){return n.filter(e=>!!e?.function?.name).map(e=>({name:e.function.name,description:e.function.description,input_schema:e.function.parameters}))}function Cs(n){let e=[],t=[],o=m=>{if(typeof m=="string"){t.push({type:"text",text:m});return}Array.isArray(m)&&m.forEach(g=>{if(typeof g=="string"){t.push({type:"text",text:g});return}g&&typeof g=="object"&&g.type==="text"&&g.text&&t.push({...g})})},r=()=>{let m=new Map;for(let g=0;g<t.length;g++){let y=t[g],p=y?.text??JSON.stringify(y),f=m.get(p);if(f===void 0){m.set(p,g);continue}!t[f]?.cache_control&&y?.cache_control&&(t[f]=y),t.splice(g,1),g--}};n.messages.forEach(m=>{m.role==="system"?o(m.content):e.push(m)}),r();let s=[];for(let m=0;m<e.length;m++){let g=e[m];if(g.role==="tool"){let y=g.content;try{typeof g.content=="string"&&(y=JSON.parse(g.content))}catch{}y!=null&&typeof y!="object"&&typeof y!="string"&&(y=String(y));let p={type:"tool_result",tool_use_id:g.tool_call_id,content:y};g.cache_control&&(p.cache_control=g.cache_control);let f=s[s.length-1];f&&f.role==="user"&&Array.isArray(f.content)?f.content.push(p):s.push({role:"user",content:[p]})}else if(g.role==="user"){let y=[];typeof g.content=="string"?y.push({type:"text",text:g.content}):Array.isArray(g.content)&&g.content.forEach(f=>{f&&typeof f=="object"&&f.type==="image_url"&&f.image_url?.url?y.push({type:"image",source:{type:"base64",media_type:f.media_type||"image/jpeg",data:f.image_url.url.split(",")[1]||f.image_url.url}}):y.push(f)});let p=s[s.length-1];p&&p.role==="user"&&Array.isArray(p.content)?p.content.push(...y):s.push({role:"user",content:y.length>0?y:[{type:"text",text:" "}]})}else if(g.role==="assistant"){let y=[];g.content&&(typeof g.content=="string"?y.push({type:"text",text:g.content}):Array.isArray(g.content)&&y.push(...g.content)),g.tool_calls&&g.tool_calls.length>0&&g.tool_calls.forEach(f=>{let _={};try{_=JSON.parse(f.function.arguments)}catch{_=f.function.arguments}y.push({type:"tool_use",id:f.id,name:f.function.name,input:_})}),g.thinking&&y.unshift({type:"thinking",thinking:g.thinking.content,signature:g.thinking.signature});let p=s[s.length-1];p&&p.role==="assistant"&&Array.isArray(p.content)?p.content.push(...y):s.push({role:"assistant",content:y.length>0?y:[{type:"text",text:" "}]})}}let a=()=>{let m=t.filter(g=>g?.cache_control).length;for(let g of s)Array.isArray(g.content)&&(m+=g.content.filter(y=>y?.cache_control).length);return m},l=m=>m&&typeof m=="object"?{...m}:{type:"ephemeral"},c=()=>{for(let m=s.length-1;m>=0;m--){let g=s[m]?.content;if(!Array.isArray(g))continue;let y=g.find(p=>p?.cache_control);if(y?.cache_control)return y.cache_control}for(let m=t.length-1;m>=0;m--)if(t[m]?.cache_control)return t[m].cache_control;return{type:"ephemeral"}},i=(m,g)=>{if(!Array.isArray(m?.content)||m.content.some(p=>p?.cache_control))return!1;let y=m.content.find(p=>p&&typeof p=="object"&&!p.cache_control);return y?(y.cache_control=l(g),!0):!1};(()=>{let m=4-a();if(m<=0||s.length===0)return;let g=s,y=c(),p=[];for(let f=g.length-1;f>=0;f--)g[f]?.role!=="user"||!Array.isArray(g[f].content)||p.push(f);for(let f of p){if(m<=0)break;i(g[f],y)&&m--}})();let d={messages:s,model:n.model,max_tokens:n.max_tokens||4096,temperature:n.temperature,stream:n.stream};if(t.length>0){let m=t.some(g=>g?.cache_control);d.system=m?t:t.map(g=>g.text||"").join(`
|
|
166
46
|
|
|
167
|
-
`)),S
|
|
168
|
-
|
|
47
|
+
`)}return n.tools&&n.tools.length>0&&(d.tools=qc(n.tools),n.tool_choice&&(n.tool_choice==="auto"?d.tool_choice={type:"auto"}:n.tool_choice==="any"||n.tool_choice==="required"?d.tool_choice={type:"any"}:typeof n.tool_choice=="string"?d.tool_choice={type:"tool",name:n.tool_choice}:typeof n.tool_choice=="object"&&n.tool_choice.type==="function"&&(d.tool_choice={type:"tool",name:n.tool_choice.function.name}))),d}var Ts=S(()=>{});import{v4 as ao}from"uuid";var Ft,vs=S(()=>{"use strict";ks();bt();xs();Ts();Ft=class{constructor(e){this.options=e;this.useBearer=this.options?.UseBearer??!1}name="Anthropic";endPoint="/v1/messages";useBearer;logger;async auth(e,t){let o={};return this.useBearer?(o.authorization=`Bearer ${t.apiKey}`,o["x-api-key"]=void 0):(o["x-api-key"]=t.apiKey,o.authorization=void 0),{body:e,config:{headers:o}}}async transformRequestOut(e){let t=[];if(e.system){if(typeof e.system=="string")t.push({role:"system",content:e.system});else if(Array.isArray(e.system)&&e.system.length){let s=e.system.filter(a=>a.type==="text"&&a.text).map(a=>({type:"text",text:a.text,cache_control:a.cache_control}));t.push({role:"system",content:s})}}let o=JSON.parse(JSON.stringify(e.messages||[]));o?.forEach(s=>{s.role==="system"&&t.push({role:"system",content:s.content})}),o?.forEach(s=>{if(s.role!=="system"&&(s.role==="user"||s.role==="assistant")){if(typeof s.content=="string"){t.push({role:s.role,content:s.content});return}if(Array.isArray(s.content)){if(s.role==="user"){let a=s.content.filter(c=>c.type==="tool_result"&&c.tool_use_id);a.length&&a.forEach(c=>{let i={role:"tool",content:typeof c.content=="string"?c.content:JSON.stringify(c.content),tool_call_id:c.tool_use_id,cache_control:c.cache_control};t.push(i)});let l=s.content.filter(c=>c.type==="text"&&c.text||c.type==="image"&&c.source);l.length&&t.push({role:"user",content:l.map(c=>c?.type==="image"?{type:"image_url",image_url:{url:c.source?.type==="base64"?bs(c.source.data,c.source.media_type):c.source.url},media_type:c.source.media_type}:c)})}else if(s.role==="assistant"){let a={role:"assistant",content:""},l=s.content.filter(u=>u.type==="text"&&u.text);l.length&&(a.content=l.map(u=>u.text).join(`
|
|
48
|
+
`));let c=s.content.filter(u=>u.type==="tool_use"&&u.id);c.length&&(a.tool_calls=c.map(u=>({id:u.id,type:"function",function:{name:u.name,arguments:JSON.stringify(u.input||{})}})));let i=s.content.find(u=>u.type==="thinking");i&&(a.thinking={content:i.thinking,signature:i.signature}),t.push(a)}return}}});let r={messages:t,model:e.model,max_tokens:e.max_tokens,temperature:e.temperature,stream:e.stream,tools:e.tools?.length?this.convertAnthropicToolsToUnified(e.tools):void 0,tool_choice:e.tool_choice};return e.thinking&&(r.reasoning={effort:_s(e.thinking.budget_tokens),enabled:e.thinking.type==="enabled"}),e.tool_choice&&(e.tool_choice.type==="tool"?r.tool_choice={type:"function",function:{name:e.tool_choice.name}}:r.tool_choice=e.tool_choice.type),r}async transformRequestIn(e,t,o){if(!this.isAnthropicMessagesEndpoint(t.baseUrl))return e;o&&o.req&&(o.req.isTargetAnthropic=!0);let r=Cs(e),s={};return this.useBearer?(s.authorization=`Bearer ${t.apiKey}`,s["x-api-key"]=void 0):(s["x-api-key"]=t.apiKey,s.authorization=void 0),s["anthropic-version"]="2023-06-01",s["content-type"]="application/json",{body:r,config:{headers:s}}}isAnthropicMessagesEndpoint(e){try{return new URL(e.trim()).pathname.replace(/\/+$/,"").endsWith("/messages")}catch{return!1}}async transformResponseIn(e,t){if(t?.req?.isTargetAnthropic)return e;if(e.headers.get("Content-Type")?.includes("text/event-stream")){if(!e.body)throw new Error("Stream response body is null");let r=await this.convertOpenAIStreamToAnthropic(e.body,t);return new Response(r,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}else{let r=await e.json(),s=this.convertOpenAIResponseToAnthropic(r,t);return new Response(JSON.stringify(s),{headers:{"Content-Type":"application/json"}})}}convertAnthropicToolsToUnified(e){return e.map(t=>({type:"function",function:{name:t.name,description:t.description||"",parameters:t.input_schema}}))}async convertOpenAIStreamToAnthropic(e,t){return new ReadableStream({start:async r=>{let s=new TextEncoder,a=`msg_${Date.now()}`,l=null,c="unknown",i=!1,u=!1,d=!1,m=new Map,g=new Map,y=0,p=0,f=0,_=!1,k=!1,h=0,b=-1,x=()=>{let T=h;return h++,T},v=T=>{if(!_)try{r.enqueue(T);let A=new TextDecoder().decode(T);this.logger.debug({reqId:t.req.id,data:A,type:"send data"})}catch(A){if(A instanceof TypeError&&A.message.includes("Controller is already closed"))_=!0;else throw this.logger.debug({reqId:t.req.id,error:A instanceof Error?A.message:String(A),type:"send data error"}),A}},C=()=>{if(!_)try{if(!i){this.logger?.warn("[empty_stream] Upstream produced no data, closing silently"),r.close(),_=!0;return}if(b>=0){let A={type:"content_block_stop",index:b};v(s.encode(`event: content_block_stop
|
|
49
|
+
data: ${JSON.stringify(A)}
|
|
169
50
|
|
|
170
|
-
`)),
|
|
171
|
-
data: ${JSON.stringify(
|
|
51
|
+
`)),b=-1}if(l)v(s.encode(`event: message_delta
|
|
52
|
+
data: ${JSON.stringify(l)}
|
|
172
53
|
|
|
173
|
-
`)),
|
|
174
|
-
data: ${JSON.stringify(
|
|
54
|
+
`)),l=null;else{let A=t?.req?.tokenCount||0;v(s.encode(`event: message_delta
|
|
55
|
+
data: ${JSON.stringify({type:"message_delta",delta:{stop_reason:"end_turn",stop_sequence:null},usage:{input_tokens:A,output_tokens:0,cache_read_input_tokens:0}})}
|
|
175
56
|
|
|
176
|
-
`))}
|
|
177
|
-
data: ${JSON.stringify(
|
|
57
|
+
`))}let T={type:"message_stop"};v(s.encode(`event: message_stop
|
|
58
|
+
data: ${JSON.stringify(T)}
|
|
178
59
|
|
|
179
|
-
`))
|
|
180
|
-
data:
|
|
60
|
+
`)),r.close(),_=!0}catch(T){if(T instanceof TypeError&&T.message.includes("Controller is already closed"))_=!0;else throw T}},R=null;try{R=e.getReader();let T=new TextDecoder,A="";for(;!_;){let{done:w,value:O}=await R.read();if(w)break;A+=T.decode(O,{stream:!0});let P=A.split(`
|
|
61
|
+
`);A=P.pop()||"";for(let E of P){if(_)break;if(!E.startsWith("data:"))continue;let N=E.slice(5).trim();if(this.logger.debug({reqId:t.req.id,type:"recieved data",data:N}),N!=="[DONE]")try{let F=JSON.parse(N);if(y++,this.logger.debug({reqId:t.req.id,response:F,tppe:"Original Response"}),F.error){t?.req&&(t.req.sseError=F.error);let $={type:"error",message:{type:"api_error",message:JSON.stringify(F.error)}};v(s.encode(`event: error
|
|
62
|
+
data: ${JSON.stringify($)}
|
|
181
63
|
|
|
182
|
-
`))
|
|
183
|
-
|
|
64
|
+
`));continue}if(c=F.model||c,!i&&!_&&!d){i=!0;let $=t?.req?.tokenCount||0,L={type:"message_start",message:{id:a,type:"message",role:"assistant",content:[],model:c,stop_reason:null,stop_sequence:null,usage:{input_tokens:$,output_tokens:0}}};v(s.encode(`event: message_start
|
|
65
|
+
data: ${JSON.stringify(L)}
|
|
184
66
|
|
|
185
|
-
`))}
|
|
67
|
+
`))}let z=F.choices?.[0];if(F.usage){let $=F.usage?.prompt_tokens_details?.cached_tokens||0,W=(F.usage?.prompt_tokens||0)-$,me=F.usage?.completion_tokens||0;this.logger?.info({debug_log:!0,reqId:t.req.id,phase:"anthropic_transformer_usage",providerUsage:F.usage,mappedUsage:{input_tokens:W,output_tokens:me,cache_read_input_tokens:$},choicesLength:Array.isArray(F.choices)?F.choices.length:void 0,finishReason:z?.finish_reason});let D={input_tokens:W,output_tokens:me,cache_read_input_tokens:$};if(!l)l={type:"message_delta",delta:{stop_reason:"end_turn",stop_sequence:null},usage:{...D}};else{let K=l.usage||{};l.usage={input_tokens:D.input_tokens||K.input_tokens||0,output_tokens:D.output_tokens||K.output_tokens||0,cache_read_input_tokens:D.cache_read_input_tokens||K.cache_read_input_tokens||0}}}if(!z)continue;if(z?.delta?.thinking&&!_&&!d&&!u){if(!k){let $=x(),L={type:"content_block_start",index:$,content_block:{type:"thinking",thinking:""}};v(s.encode(`event: content_block_start
|
|
68
|
+
data: ${JSON.stringify(L)}
|
|
186
69
|
|
|
187
|
-
`))}let
|
|
70
|
+
`)),b=$,k=!0}if(z.delta.thinking.signature){let $={type:"content_block_delta",index:b,delta:{type:"signature_delta",signature:z.delta.thinking.signature}};v(s.encode(`event: content_block_delta
|
|
71
|
+
data: ${JSON.stringify($)}
|
|
188
72
|
|
|
189
|
-
`))
|
|
73
|
+
`));let L={type:"content_block_stop",index:b};v(s.encode(`event: content_block_stop
|
|
74
|
+
data: ${JSON.stringify(L)}
|
|
190
75
|
|
|
191
|
-
`)),
|
|
192
|
-
|
|
76
|
+
`)),b=-1}else if(z.delta.thinking.content){let $={type:"content_block_delta",index:b,delta:{type:"thinking_delta",thinking:z.delta.thinking.content||""}};v(s.encode(`event: content_block_delta
|
|
77
|
+
data: ${JSON.stringify($)}
|
|
193
78
|
|
|
194
|
-
`))
|
|
79
|
+
`))}}if(z?.delta?.content&&!_&&!d){if(p++,b>=0&&!u){let L={type:"content_block_stop",index:b};v(s.encode(`event: content_block_stop
|
|
80
|
+
data: ${JSON.stringify(L)}
|
|
195
81
|
|
|
196
|
-
`)),
|
|
82
|
+
`)),b=-1}if(!u&&!d){u=!0;let $=x(),L={type:"content_block_start",index:$,content_block:{type:"text",text:""}};v(s.encode(`event: content_block_start
|
|
83
|
+
data: ${JSON.stringify(L)}
|
|
197
84
|
|
|
198
|
-
`))
|
|
85
|
+
`)),b=$}if(!_&&!d){let $={type:"content_block_delta",index:b,delta:{type:"text_delta",text:z.delta.content}};v(s.encode(`event: content_block_delta
|
|
86
|
+
data: ${JSON.stringify($)}
|
|
199
87
|
|
|
200
|
-
`))}
|
|
201
|
-
|
|
88
|
+
`))}}if(z?.delta?.annotations?.length&&!_&&!d){if(b>=0&&u){let $={type:"content_block_stop",index:b};v(s.encode(`event: content_block_stop
|
|
89
|
+
data: ${JSON.stringify($)}
|
|
90
|
+
|
|
91
|
+
`)),b=-1,u=!1}z?.delta?.annotations.forEach($=>{let L=x(),W={type:"content_block_start",index:L,content_block:{type:"web_search_tool_result",tool_use_id:`srvtoolu_${ao()}`,content:[{type:"web_search_result",title:$.url_citation.title,url:$.url_citation.url}]}};v(s.encode(`event: content_block_start
|
|
92
|
+
data: ${JSON.stringify(W)}
|
|
93
|
+
|
|
94
|
+
`));let me={type:"content_block_stop",index:L};v(s.encode(`event: content_block_stop
|
|
95
|
+
data: ${JSON.stringify(me)}
|
|
96
|
+
|
|
97
|
+
`)),b=-1})}if(z?.delta?.tool_calls&&!_&&!d){f++;let $=new Set;for(let L of z.delta.tool_calls){if(_)break;let W=L.index??0;if($.has(W))continue;if($.add(W),!g.has(W)){if(b>=0){let ba={type:"content_block_stop",index:b};v(s.encode(`event: content_block_stop
|
|
98
|
+
data: ${JSON.stringify(ba)}
|
|
99
|
+
|
|
100
|
+
`)),b=-1}let D=x();g.set(W,D);let K=L.id||`call_ccr_${W}`,H=L.function?.name||`tool_${W}`,I={type:"content_block_start",index:D,content_block:{type:"tool_use",id:K,name:H,input:{}}};v(s.encode(`event: content_block_start
|
|
101
|
+
data: ${JSON.stringify(I)}
|
|
102
|
+
|
|
103
|
+
`)),b=D;let J={id:K,name:H,arguments:"",contentBlockIndex:D};m.set(W,J)}else if(L.id&&L.function?.name){let D=m.get(W);D.id.startsWith("call_")&&D.name.startsWith("tool_")&&(D.id=L.id,D.name=L.function.name)}if(L.function?.arguments&&!_&&!d){let D=g.get(W);if(D===void 0)continue;let K=m.get(W);K&&(K.arguments+=L.function.arguments);try{let H={type:"content_block_delta",index:D,delta:{type:"input_json_delta",partial_json:L.function.arguments}};v(s.encode(`event: content_block_delta
|
|
104
|
+
data: ${JSON.stringify(H)}
|
|
105
|
+
|
|
106
|
+
`))}catch{try{let H=L.function.arguments.replace(/[\x00-\x1F\x7F-\x9F]/g,"").replace(/\\/g,"\\\\").replace(/"/g,'\\"'),I={type:"content_block_delta",index:D,delta:{type:"input_json_delta",partial_json:H}};v(s.encode(`event: content_block_delta
|
|
107
|
+
data: ${JSON.stringify(I)}
|
|
108
|
+
|
|
109
|
+
`))}catch(H){console.error(H)}}}}}if(z?.finish_reason&&!_&&!d){if(p===0&&f===0&&console.error("Warning: No content in the stream response!"),b>=0){let $={type:"content_block_stop",index:b};v(s.encode(`event: content_block_stop
|
|
110
|
+
data: ${JSON.stringify($)}
|
|
111
|
+
|
|
112
|
+
`)),b=-1}if(!_){let L={stop:"end_turn",length:"max_tokens",tool_calls:"tool_use",content_filter:"stop_sequence"}[z.finish_reason]||"end_turn";l?l.delta={...l.delta,stop_reason:L,stop_sequence:null}:l={type:"message_delta",delta:{stop_reason:L,stop_sequence:null},usage:{input_tokens:0,output_tokens:0,cache_read_input_tokens:0}}}d=!0}}catch(F){this.logger?.error(`parseError: ${F.name} message: ${F.message} stack: ${F.stack} data: ${N}`)}}}C()}catch(T){if(!_)try{r.error(T)}catch(A){console.error(A)}}finally{if(R)try{R.releaseLock()}catch(T){console.error(T)}}},cancel:r=>{this.logger.debug({reqId:t.req.id},`cancle stream: ${r}`)}})}convertOpenAIResponseToAnthropic(e,t){this.logger.debug({reqId:t.req.id,response:e},"Original OpenAI response");try{let o=e.choices[0];if(!o)throw new Error("No choices found in OpenAI response");let r=[];if(o.message.annotations){let c=`srvtoolu_${ao()}`;r.push({type:"server_tool_use",id:c,name:"web_search",input:{query:""}}),r.push({type:"web_search_tool_result",tool_use_id:c,content:o.message.annotations.map(i=>({type:"web_search_result",url:i.url_citation.url,title:i.url_citation.title}))})}o.message.content&&r.push({type:"text",text:o.message.content}),o.message.tool_calls&&o.message.tool_calls.length>0&&o.message.tool_calls.forEach(c=>{let i={};try{let u=c.function.arguments||"{}";typeof u=="object"?i=u:typeof u=="string"&&(i=JSON.parse(u))}catch{i={text:c.function.arguments||""}}r.push({type:"tool_use",id:c.id,name:c.function.name,input:i})}),o.message?.thinking?.content&&r.push({type:"thinking",thinking:o.message.thinking.content,signature:o.message.thinking.signature});let s=e.usage?.prompt_tokens_details?.cached_tokens||0,a=(e.usage?.prompt_tokens||0)-s,l={id:e.id?.startsWith("msg_")?e.id:`msg_${ao().replace(/-/g,"")}`,type:"message",role:"assistant",model:e.model,content:r,stop_reason:o.finish_reason==="stop"?"end_turn":o.finish_reason==="length"?"max_tokens":o.finish_reason==="tool_calls"?"tool_use":o.finish_reason==="content_filter"?"stop_sequence":"end_turn",stop_sequence:null,usage:{input_tokens:a,cache_creation_input_tokens:0,cache_read_input_tokens:s,output_tokens:e.usage?.completion_tokens||0,server_tool_use:{web_search_requests:0,web_fetch_requests:0},service_tier:"standard",cache_creation:{ephemeral_1h_input_tokens:0,ephemeral_5m_input_tokens:0},inference_geo:"",iterations:[],speed:"standard"},stop_details:null,context_management:null};return this.logger.debug({reqId:t.req.id,result:l},"Conversion complete, final Anthropic response"),l}catch{throw B(`Provider error: ${JSON.stringify(e)}`,500,"provider_error")}}}});function Zc(n,e){n.includes("null")&&(e.nullable=!0);let t=n.filter(o=>o!=="null");if(t.length===1){let o=t[0].toUpperCase();e.type=Object.values(Ie).includes(o)?o:Ie.TYPE_UNSPECIFIED}else{e.anyOf=[];for(let o of t){let r=o.toUpperCase();e.anyOf.push({type:Object.values(Ie).includes(r)?r:Ie.TYPE_UNSPECIFIED})}}}function nt(n){let e={},t=["items"],o=["anyOf"],r=["properties"];if(n.type&&n.anyOf)throw new Error("type and anyOf cannot be both populated.");let s=n.anyOf;s!=null&&Array.isArray(s)&&s.length==2&&(s[0]&&s[0].type==="null"?(e.nullable=!0,n=s[1]):s[1]&&s[1].type==="null"&&(e.nullable=!0,n=s[0])),n.type&&Array.isArray(n.type)&&Zc(n.type,e);for(let[a,l]of Object.entries(n))if(l!=null)if(a=="type"){if(l==="null")throw new Error("type: null can not be the only possible type for the field.");if(Array.isArray(l))continue;let c=l.toUpperCase();e.type=Object.values(Ie).includes(c)?c:Ie.TYPE_UNSPECIFIED}else if(t.includes(a))e[a]=nt(l);else if(o.includes(a)){let c=[];for(let i of l){if(i.type=="null"){e.nullable=!0;continue}c.push(nt(i))}e[a]=c}else if(r.includes(a)){let c={};for(let[i,u]of Object.entries(l))c[i]=nt(u);e[a]=c}else{if(a==="additionalProperties")continue;e[a]=l}return e}function el(n){if(n.functionDeclarations)for(let e of n.functionDeclarations)e.parameters&&(Object.keys(e.parameters).includes("$schema")?e.parametersJsonSchema||(e.parametersJsonSchema=e.parameters,delete e.parameters):e.parameters=nt(e.parameters)),e.response&&(Object.keys(e.response).includes("$schema")?e.responseJsonSchema||(e.responseJsonSchema=e.response,delete e.response):e.response=nt(e.response));return n}function Ut(n){let e=[],t=n.tools?.filter(c=>c.function.name!=="web_search")?.map(c=>({name:c.function.name,description:c.function.description,parametersJsonSchema:c.function.parameters}));t?.length&&e.push(el({functionDeclarations:t})),n.tools?.find(c=>c.function.name==="web_search")&&e.push({googleSearch:{}});let r=[],s=n.messages.filter(c=>c.role==="tool");n.messages.filter(c=>c.role!=="tool").forEach(c=>{let i;c.role==="assistant"?i="model":(["user","system"].includes(c.role),i="user");let u=[];if(typeof c.content=="string"){let d={text:c.content};c.thinking?.signature&&(d.thoughtSignature=c.thinking.signature),u.push(d)}else Array.isArray(c.content)?u.push(...c.content.map(d=>{if(d.type==="text")return{text:d.text||""};if(d.type==="image_url")return d.image_url.url.startsWith("http")?{file_data:{mime_type:d.media_type,file_uri:d.image_url.url}}:{inlineData:{mime_type:d.media_type,data:d.image_url.url?.split(",")?.pop()||d.image_url.url}}})):c.content&&typeof c.content=="object"&&(c.content.text?u.push({text:c.content.text}):u.push({text:JSON.stringify(c.content)}));if(Array.isArray(c.tool_calls)&&u.push(...c.tool_calls.map(d=>{let m={functionCall:{id:d.id||`tool_${Math.random().toString(36).substring(2,15)}`,name:d.function.name,args:JSON.parse(d.function.arguments||"{}")}};return c.thinking?.signature&&(m.thoughtSignature=c.thinking.signature),m})),u.length===0&&u.push({text:""}),r.push({role:i,parts:u}),i==="model"&&c.tool_calls){let d=c.tool_calls.map(m=>{let g=s.find(y=>y.tool_call_id===m.id);return{functionResponse:{name:m?.function?.name,response:{result:g?.content}}}});r.push({role:"user",parts:d})}});let a={};if(n.reasoning&&n.reasoning.effort&&n.reasoning.effort!=="none")if(a.thinkingConfig={includeThoughts:!0},n.model.includes("gemini-3"))a.thinkingConfig.thinkingLevel=n.reasoning.effort;else{let c=n.model.includes("pro")?[128,32768]:[0,24576],i,u=n.reasoning.max_tokens;typeof u<"u"&&(u>=c[0]&&u<=c[1]?i=u:u<c[0]?i=c[0]:u>c[1]&&(i=c[1]),a.thinkingConfig.thinkingBudget=i)}let l={contents:r,tools:e.length?e:void 0,generationConfig:a};if(n.tool_choice){let c={functionCallingConfig:{}};n.tool_choice==="auto"?c.functionCallingConfig.mode="auto":n.tool_choice==="none"?c.functionCallingConfig.mode="none":n.tool_choice==="required"?c.functionCallingConfig.mode="any":n.tool_choice?.function?.name&&(c.functionCallingConfig.mode="any",c.functionCallingConfig.allowedFunctionNames=[n.tool_choice?.function?.name]),l.toolConfig=c}return l}function Dt(n){let e=n.contents,t=n.tools,o=n.model,r=n.max_tokens,s=n.temperature,a=n.stream,l=n.tool_choice,c={messages:[],model:o,max_tokens:r,temperature:s,stream:a,tool_choice:l};return Array.isArray(e)&&e.forEach(i=>{typeof i=="string"?c.messages.push({role:"user",content:i}):typeof i.text=="string"?c.messages.push({role:"user",content:i.text||null}):i.role==="user"?c.messages.push({role:"user",content:i?.parts?.map(u=>({type:"text",text:u.text||""}))||[]}):i.role==="model"&&c.messages.push({role:"assistant",content:i?.parts?.map(u=>({type:"text",text:u.text||""}))||[]})}),Array.isArray(t)&&(c.tools=[],t.forEach(i=>{Array.isArray(i.functionDeclarations)&&i.functionDeclarations.forEach(u=>{c.tools.push({type:"function",function:{name:u.name,description:u.description,parameters:u.parameters}})})})),c}async function jt(n,e,t){if(n.headers.get("Content-Type")?.includes("application/json")){let o=await n.json();t?.debug({response:o},`${e} response:`);let r="",s="",a=o.candidates[0]?.content?.parts||[],l=[];for(let d of a)d.text&&d.thought===!0?r+=d.text:l.push(d);s=a.find(d=>d.thoughtSignature)?.thoughtSignature;let c=l?.filter(d=>d.functionCall)?.map(d=>({id:d.functionCall?.id||`tool_${Math.random().toString(36).substring(2,15)}`,type:"function",function:{name:d.functionCall?.name,arguments:JSON.stringify(d.functionCall?.args||{})}}))||[],i=l?.filter(d=>d.text)?.map(d=>d.text)?.join(`
|
|
113
|
+
`)||"",u={id:o.responseId,choices:[{finish_reason:o.candidates[0].finishReason?.toLowerCase()||null,index:0,message:{content:i,role:"assistant",tool_calls:c.length>0?c:void 0,...s&&{thinking:{content:r||"(no content)",signature:s}}}}],created:parseInt(new Date().getTime()/1e3+"",10),model:o.modelVersion,object:"chat.completion",usage:{completion_tokens:o.usageMetadata?.candidatesTokenCount||0,prompt_tokens:o.usageMetadata?.promptTokenCount||0,prompt_tokens_details:{cached_tokens:o.usageMetadata?.cachedContentTokenCount||0},total_tokens:o.usageMetadata?.totalTokenCount||0,output_tokens_details:{reasoning_tokens:o.usageMetadata?.thoughtsTokenCount||0}}};return new Response(JSON.stringify(u),{status:n.status,statusText:n.statusText,headers:n.headers})}else if(n.headers.get("Content-Type")?.includes("stream")){if(!n.body)return n;let o=new TextDecoder,r=new TextEncoder,s=!1,a=!1,l=!1,c="",i=0,u=-1,d=new ReadableStream({async start(m){let g=async(f,_)=>{if(f.startsWith("data: ")){let k=f.slice(6).trim();if(k){t?.debug({chunkStr:k},`${e} chunk:`);try{let h=JSON.parse(k);if(!h.candidates||!h.candidates[0]){t?.debug({chunkStr:k},"Invalid chunk structure");return}let b=h.candidates[0],x=b.content?.parts||[];x.filter(T=>T.text&&T.thought===!0).forEach(T=>{l||(l=!0);let A={choices:[{delta:{role:"assistant",content:null,thinking:{content:T.text}},finish_reason:null,index:i,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:h.responseId||"",model:h.modelVersion||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1"};_.enqueue(r.encode(`data: ${JSON.stringify(A)}
|
|
114
|
+
|
|
115
|
+
`))});let v=x.find(T=>T.thoughtSignature)?.thoughtSignature;if(v&&!s){if(!l){let A={choices:[{delta:{role:"assistant",content:null,thinking:{content:"(no content)"}},finish_reason:null,index:i,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:h.responseId||"",model:h.modelVersion||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1"};_.enqueue(r.encode(`data: ${JSON.stringify(A)}
|
|
116
|
+
|
|
117
|
+
`))}let T={choices:[{delta:{role:"assistant",content:null,thinking:{signature:v}},finish_reason:null,index:i,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:h.responseId||"",model:h.modelVersion||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1"};if(_.enqueue(r.encode(`data: ${JSON.stringify(T)}
|
|
118
|
+
|
|
119
|
+
`)),s=!0,i++,c){let A={choices:[{delta:{role:"assistant",content:c},finish_reason:null,index:i,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:h.responseId||"",model:h.modelVersion||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1"};_.enqueue(r.encode(`data: ${JSON.stringify(A)}
|
|
120
|
+
|
|
121
|
+
`)),c="",a||(a=!0)}}let C=x.filter(T=>T.functionCall).map(T=>({id:T.functionCall?.id||`ccr_tool_${Math.random().toString(36).substring(2,15)}`,type:"function",function:{name:T.functionCall?.name,arguments:JSON.stringify(T.functionCall?.args||{})}})),R=x.filter(T=>T.text&&T.thought!==!0).map(T=>T.text).join(`
|
|
122
|
+
`);if(!R&&s&&!a){let T={choices:[{delta:{role:"assistant",content:"(no content)"},index:i,finish_reason:null,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:h.responseId||"",model:h.modelVersion||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1"};_.enqueue(r.encode(`data: ${JSON.stringify(T)}
|
|
123
|
+
|
|
124
|
+
`)),a||(a=!0)}if(l&&R&&!s)if(h.modelVersion.includes("3")){c+=R;return}else{let T={choices:[{delta:{role:"assistant",content:null,thinking:{signature:`ccr_${+new Date}`}},finish_reason:null,index:i,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:h.responseId||"",model:h.modelVersion||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1"};_.enqueue(r.encode(`data: ${JSON.stringify(T)}
|
|
125
|
+
|
|
126
|
+
`)),s=!0}if(R){c||i++;let T={choices:[{delta:{role:"assistant",content:R},finish_reason:b.finishReason?.toLowerCase()||null,index:i,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:h.responseId||"",model:h.modelVersion||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1",usage:{completion_tokens:h.usageMetadata?.candidatesTokenCount||0,prompt_tokens:h.usageMetadata?.promptTokenCount||0,prompt_tokens_details:{cached_tokens:h.usageMetadata?.cachedContentTokenCount||0},total_tokens:h.usageMetadata?.totalTokenCount||0,output_tokens_details:{reasoning_tokens:h.usageMetadata?.thoughtsTokenCount||0}}};b?.groundingMetadata?.groundingChunks?.length&&(T.choices[0].delta.annotations=b.groundingMetadata.groundingChunks.map((A,w)=>{let O=b?.groundingMetadata?.groundingSupports?.filter(P=>P.groundingChunkIndices?.includes(w));return{type:"url_citation",url_citation:{url:A?.web?.uri||"",title:A?.web?.title||"",content:O?.[0]?.segment?.text||"",start_index:O?.[0]?.segment?.startIndex||0,end_index:O?.[0]?.segment?.endIndex||0}}})),_.enqueue(r.encode(`data: ${JSON.stringify(T)}
|
|
127
|
+
|
|
128
|
+
`)),!a&&R&&(a=!0)}C.length>0&&(C.forEach(T=>{i++,u++;let A={choices:[{delta:{role:"assistant",tool_calls:[{...T,index:u}]},finish_reason:b.finishReason?.toLowerCase()||null,index:i,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:h.responseId||"",model:h.modelVersion||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1",usage:{completion_tokens:h.usageMetadata?.candidatesTokenCount||0,prompt_tokens:h.usageMetadata?.promptTokenCount||0,prompt_tokens_details:{cached_tokens:h.usageMetadata?.cachedContentTokenCount||0},total_tokens:h.usageMetadata?.totalTokenCount||0,output_tokens_details:{reasoning_tokens:h.usageMetadata?.thoughtsTokenCount||0}}};b?.groundingMetadata?.groundingChunks?.length&&(A.choices[0].delta.annotations=b.groundingMetadata.groundingChunks.map((w,O)=>{let P=b?.groundingMetadata?.groundingSupports?.filter(E=>E.groundingChunkIndices?.includes(O));return{type:"url_citation",url_citation:{url:w?.web?.uri||"",title:w?.web?.title||"",content:P?.[0]?.segment?.text||"",start_index:P?.[0]?.segment?.startIndex||0,end_index:P?.[0]?.segment?.endIndex||0}}})),_.enqueue(r.encode(`data: ${JSON.stringify(A)}
|
|
129
|
+
|
|
130
|
+
`))}),!a&&R&&(a=!0))}catch(h){t?.error(`Error parsing ${e} stream chunk`,k,h.message)}}}},y=n.body.getReader(),p="";try{for(;;){let{done:f,value:_}=await y.read();if(f){p&&await g(p,m);break}p+=o.decode(_,{stream:!0});let k=p.split(`
|
|
131
|
+
`);p=k.pop()||"";for(let h of k)await g(h,m)}}catch(f){m.error(f)}finally{m.close()}}});return new Response(d,{status:n.status,statusText:n.statusText,headers:n.headers})}}var Ie,co=S(()=>{"use strict";Ie={TYPE_UNSPECIFIED:"TYPE_UNSPECIFIED",STRING:"STRING",NUMBER:"NUMBER",INTEGER:"INTEGER",BOOLEAN:"BOOLEAN",ARRAY:"ARRAY",OBJECT:"OBJECT",NULL:"NULL"}});var zt,Rs=S(()=>{"use strict";co();zt=class{name="gemini";endPoint="/v1beta/models/:modelAndAction";async transformRequestIn(e,t){return{body:Ut(e),config:{url:new URL(`./${e.model}:${e.stream?"streamGenerateContent?alt=sse":"generateContent"}`,t.baseUrl),headers:{"x-goog-api-key":t.apiKey,Authorization:void 0}}}}transformRequestOut=Dt;async transformResponseOut(e){return jt(e,this.name,this.logger)}}});async function tl(){try{let{GoogleAuth:n}=await import("google-auth-library");return(await(await new n({scopes:["https://www.googleapis.com/auth/cloud-platform"]}).getClient()).getAccessToken()).token||""}catch(n){throw console.error("Error getting access token:",n),new Error(`Failed to get access token for Vertex AI. Please ensure you have set up authentication using one of these methods:
|
|
202
132
|
1. Set GOOGLE_APPLICATION_CREDENTIALS to point to service account key file
|
|
203
133
|
2. Run "gcloud auth application-default login"
|
|
204
|
-
3. Use Google Cloud environment with default service account`)}}var
|
|
205
|
-
`);for(let
|
|
206
|
-
`))},
|
|
134
|
+
3. Use Google Cloud environment with default service account`)}}var Ht,ws=S(()=>{"use strict";co();Ht=class{name="vertex-gemini";async transformRequestIn(e,t){let o=process.env.GOOGLE_CLOUD_PROJECT,r=process.env.GOOGLE_CLOUD_LOCATION||"us-central1";if(!o&&process.env.GOOGLE_APPLICATION_CREDENTIALS)try{let l=(await import("fs")).readFileSync(process.env.GOOGLE_APPLICATION_CREDENTIALS,"utf8"),c=JSON.parse(l);c&&c.project_id&&(o=c.project_id)}catch(a){console.error("Error extracting project_id from GOOGLE_APPLICATION_CREDENTIALS:",a)}if(!o)throw new Error("Project ID is required for Vertex AI. Set GOOGLE_CLOUD_PROJECT environment variable or ensure project_id is in GOOGLE_APPLICATION_CREDENTIALS file.");let s=await tl();return{body:Ut(e),config:{url:new URL(`./v1beta1/projects/${o}/locations/${r}/publishers/google/models/${e.model}:${e.stream?"streamGenerateContent":"generateContent"}`,t.baseUrl.endsWith("/")?t.baseUrl:t.baseUrl+"/"||`https://${r}-aiplatform.googleapis.com`),headers:{Authorization:`Bearer ${s}`,"x-goog-api-key":void 0}}}}async transformRequestOut(e){return Dt(e)}async transformResponseOut(e){return jt(e,this.name)}}});var Jt,Ss=S(()=>{"use strict";Jt=class{name="deepseek";async transformRequestIn(e){e.max_tokens&&e.max_tokens>8192&&(e.max_tokens=8192);let t=e.model?.includes("reasoner")||e.model?.includes("v4")||e.model?.includes("pro")||e.model?.includes("think"),o=e.thinking||e.reasoning?.enabled||e.messages.some(r=>r.thinking?.content)||t;return o&&e.tool_choice&&delete e.tool_choice,e.messages.forEach(r=>{if(r.role==="assistant"){let s=r.thinking?.content,a=r.thinking?.signature,l="";if(typeof r.content=="string"){let i=/<thinking>([\s\S]*?)<\/thinking>/g.exec(r.content);i&&(l=i[1].trim(),r.content=r.content.replace(i[0],"").trim())}s&&typeof s=="string"&&s.trim()?(r.reasoning_content=s,a&&(r.reasoning_content_signature=a)):l&&(r.reasoning_content=l),o&&!r.reasoning_content&&(r.reasoning_content=" "),r.thinking&&delete r.thinking}}),e}async transformResponseOut(e){if(e.headers.get("Content-Type")?.includes("application/json")){let t=await e.json();return new Response(JSON.stringify(t),{status:e.status,statusText:e.statusText,headers:e.headers})}else if(e.headers.get("Content-Type")?.includes("stream")){if(!e.body)return e;let t=new TextDecoder,o=new TextEncoder,r="",s=!1,a="",l=new ReadableStream({async start(c){let i=e.body.getReader(),u=(m,g,y)=>{let p=m.split(`
|
|
135
|
+
`);for(let f of p)f.trim()&&g.enqueue(y.encode(f+`
|
|
136
|
+
`))},d=(m,g)=>{let{controller:y,encoder:p}=g;if(m.startsWith("data: ")&&m.trim()!=="data: [DONE]")try{let f=JSON.parse(m.slice(6));if(f.choices?.[0]?.delta?.reasoning_content){g.appendReasoningContent(f.choices[0].delta.reasoning_content);let _={...f,choices:[{...f.choices[0],delta:{...f.choices[0].delta,thinking:{content:f.choices[0].delta.reasoning_content}}}]};delete _.choices[0].delta.reasoning_content;let k=`data: ${JSON.stringify(_)}
|
|
207
137
|
|
|
208
|
-
`;
|
|
138
|
+
`;y.enqueue(p.encode(k));return}if(f.choices?.[0]?.delta?.content&&g.reasoningContent()&&!g.isReasoningComplete()){g.setReasoningComplete(!0);let _="ccr_think_signature",k=f.choices[0].delta.content,h={...f,choices:[{...f.choices[0],delta:{...f.choices[0].delta,content:null,thinking:{content:g.reasoningContent(),signature:_}}}]};delete h.choices[0].delta.reasoning_content;let b=`data: ${JSON.stringify(h)}
|
|
209
139
|
|
|
210
|
-
`;
|
|
140
|
+
`;y.enqueue(p.encode(b));let x={...f,choices:[{...f.choices[0],delta:{...f.choices[0].delta,content:k}}]};delete x.choices[0].delta.reasoning_content;let v=`data: ${JSON.stringify(x)}
|
|
211
141
|
|
|
212
|
-
`;
|
|
142
|
+
`;y.enqueue(p.encode(v));return}if(f.choices[0]?.delta?.reasoning_content&&delete f.choices[0].delta.reasoning_content,f.choices?.[0]?.delta&&Object.keys(f.choices[0].delta).length>0){let _=`data: ${JSON.stringify(f)}
|
|
213
143
|
|
|
214
|
-
`;
|
|
215
|
-
`))}else
|
|
216
|
-
`))};try{for(;;){let{done:m,value:
|
|
217
|
-
`);a=
|
|
218
|
-
`))}}}catch(m){console.error("Stream error:",m),
|
|
144
|
+
`;y.enqueue(p.encode(_))}}catch{y.enqueue(p.encode(m+`
|
|
145
|
+
`))}else y.enqueue(p.encode(m+`
|
|
146
|
+
`))};try{for(;;){let{done:m,value:g}=await i.read();if(m){a.trim()&&u(a,c,o);break}let y=t.decode(g,{stream:!0});a+=y;let p=a.split(`
|
|
147
|
+
`);a=p.pop()||"";for(let f of p)if(f.trim())try{d(f,{controller:c,encoder:o,reasoningContent:()=>r,appendReasoningContent:_=>r+=_,isReasoningComplete:()=>s,setReasoningComplete:_=>s=_})}catch(_){console.error("Error processing line:",f,_),c.enqueue(o.encode(f+`
|
|
148
|
+
`))}}}catch(m){console.error("Stream error:",m),c.error(m)}finally{try{i.releaseLock()}catch(m){console.error("Error releasing reader lock:",m)}c.close()}}});return new Response(l,{status:e.status,statusText:e.statusText,headers:{"Content-Type":e.headers.get("Content-Type")||"text/plain","Cache-Control":"no-cache",Connection:"keep-alive"}})}return e}}});var Bt,Ps=S(()=>{"use strict";Bt=class{name="tooluse";transformRequestIn(e){return e.messages.push({role:"system",content:"<system-reminder>Tool mode is active. The user expects you to proactively execute the most suitable tool to help complete the task. \nBefore invoking a tool, you must carefully evaluate whether it matches the current task. If no available tool is appropriate for the task, you MUST call the `ExitTool` to exit tool mode \u2014 this is the only valid way to terminate tool mode.\nAlways prioritize completing the user's task effectively and efficiently by using tools whenever appropriate.</system-reminder>"}),e.tools?.length&&(e.tool_choice="required",e.tools.push({type:"function",function:{name:"ExitTool",description:`Use this tool when you are in tool mode and have completed the task. This is the only valid way to exit tool mode.
|
|
219
149
|
IMPORTANT: Before using this tool, ensure that none of the available tools are applicable to the current task. You must evaluate all available options \u2014 only if no suitable tool can help you complete the task should you use ExitTool to terminate tool mode.
|
|
220
150
|
Examples:
|
|
221
151
|
1. Task: "Use a tool to summarize this document" \u2014 Do not use ExitTool if a summarization tool is available.
|
|
222
|
-
2. Task: "What\u2019s the weather today?" \u2014 If no tool is available to answer, use ExitTool after reasoning that none can fulfill the task.`,parameters:{type:"object",properties:{response:{type:"string",description:"Your response will be forwarded to the user exactly as returned \u2014 the tool will not modify or post-process it in any way."}},required:["response"]}}})),e}async transformResponseOut(e){if(e.headers.get("Content-Type")?.includes("application/json")){let
|
|
223
|
-
`);for(let
|
|
224
|
-
`))},
|
|
225
|
-
|
|
226
|
-
`;w.enqueue(y.encode(R))}catch{}return}}if(b.choices?.[0]?.delta&&Object.keys(b.choices[0].delta).length>0){let S=`data: ${JSON.stringify(b)}
|
|
227
|
-
|
|
228
|
-
`;w.enqueue(y.encode(S))}}catch{w.enqueue(y.encode(m+`
|
|
229
|
-
`))}else w.enqueue(y.encode(m+`
|
|
230
|
-
`))};try{for(;;){let{done:m,value:C}=await f.read();if(m){a.trim()&&d(a,l,r);break}let w=n.decode(C,{stream:!0});a+=w;let y=a.split(`
|
|
231
|
-
`);a=y.pop()||"";for(let g of y)if(g.trim())try{h(g,{controller:l,encoder:r,exitToolIndex:()=>o,setExitToolIndex:_=>o=_,exitToolResponse:()=>s,appendExitToolResponse:_=>s+=_})}catch(_){console.error("Error processing line:",g,_),l.enqueue(r.encode(g+`
|
|
232
|
-
`))}}}catch(m){console.error("Stream error:",m),l.error(m)}finally{try{f.releaseLock()}catch(m){console.error("Error releasing reader lock:",m)}l.close()}}});return new Response(u,{status:e.status,statusText:e.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}return e}};var Ma=class{constructor(e){this.options=e}static TransformerName="openrouter";async transformRequestIn(e){return e.model.includes("claude")?e.messages.forEach(n=>{Array.isArray(n.content)&&n.content.forEach(r=>{r.type==="image_url"&&(r.image_url.url.startsWith("http")||(r.image_url.url=`data:${r.media_type};base64,${r.image_url.url}`),delete r.media_type)})}):e.messages.forEach(n=>{Array.isArray(n.content)?n.content.forEach(r=>{r.cache_control&&delete r.cache_control,r.type==="image_url"&&(r.image_url.url.startsWith("http")||(r.image_url.url=`${r.image_url.url}`),delete r.media_type)}):n.cache_control&&delete n.cache_control}),Object.assign(e,this.options||{}),e}async transformResponseOut(e){if(e.headers.get("Content-Type")?.includes("application/json")){let n=await e.json();return new Response(JSON.stringify(n),{status:e.status,statusText:e.statusText,headers:e.headers})}else if(e.headers.get("Content-Type")?.includes("stream")){if(!e.body)return e;let n=new TextDecoder,r=new TextEncoder,o=!1,s="",a=!1,u=!1,l="",f=new ReadableStream({async start(d){let h=e.body.getReader(),m=(w,y,g)=>{let _=w.split(`
|
|
233
|
-
`);for(let E of _)E.trim()&&y.enqueue(g.encode(E+`
|
|
234
|
-
`))},C=(w,y)=>{let{controller:g,encoder:_}=y;if(w.startsWith("data: ")&&w.trim()!=="data: [DONE]"){let E=w.slice(6);try{let b=JSON.parse(E);if(b.usage&&(this.logger?.debug({usage:b.usage,hasToolCall:u},"usage"),b.choices[0].finish_reason=u?"tool_calls":"stop"),b.choices?.[0]?.finish_reason==="error"){g.enqueue(_.encode(`data: ${JSON.stringify({error:b.choices?.[0].error})}
|
|
235
|
-
|
|
236
|
-
`));return}b.choices?.[0]?.delta?.content&&!y.hasTextContent()&&y.setHasTextContent(!0);let S=b.choices?.[0]?.delta?.reasoning||b.choices?.[0]?.delta?.reasoning_content;if(S){y.appendReasoningContent(S);let P={...b,choices:[{...b.choices?.[0],delta:{...b.choices[0].delta,thinking:{content:S}}}]};P.choices?.[0]?.delta&&(delete P.choices[0].delta.reasoning,delete P.choices[0].delta.reasoning_content);let K=`data: ${JSON.stringify(P)}
|
|
237
|
-
|
|
238
|
-
`;g.enqueue(_.encode(K));return}if(b.choices?.[0]?.delta?.content&&y.reasoningContent()&&!y.isReasoningComplete()){y.setReasoningComplete(!0);let P="ccr_think_signature",K=b.choices[0].delta.content,q={...b,choices:[{...b.choices?.[0],delta:{...b.choices[0].delta,content:null,thinking:{content:y.reasoningContent(),signature:P}}}]};q.choices?.[0]?.delta&&delete q.choices[0].delta.reasoning;let Y=`data: ${JSON.stringify(q)}
|
|
239
|
-
|
|
240
|
-
`;g.enqueue(_.encode(Y));let Q={...b,choices:[{...b.choices?.[0],delta:{...b.choices[0].delta,content:K}}]};Q.choices?.[0]?.delta&&(delete Q.choices[0].delta.reasoning,delete Q.choices[0].delta.reasoning_content);let ee=`data: ${JSON.stringify(Q)}
|
|
241
|
-
|
|
242
|
-
`;g.enqueue(_.encode(ee));return}b.choices?.[0]?.delta?.reasoning&&delete b.choices[0].delta.reasoning,b.choices?.[0]?.delta?.reasoning_content&&delete b.choices[0].delta.reasoning_content,b.choices?.[0]?.delta?.tool_calls?.length&&!Number.isNaN(parseInt(b.choices?.[0]?.delta?.tool_calls[0].id,10))&&b.choices?.[0]?.delta?.tool_calls.forEach(P=>{P.id=`call_${pt()}`}),b.choices?.[0]?.delta?.tool_calls?.length&&!u&&(u=!0);let T=b.choices?.[0]?.delta,R=T&&Object.keys(T).length>0,$=b.choices?.[0]?.finish_reason,H=b.usage;if(R||$||H){let P=`data: ${JSON.stringify(b)}
|
|
243
|
-
|
|
244
|
-
`;g.enqueue(_.encode(P))}}catch{g.enqueue(_.encode(w+`
|
|
245
|
-
`))}}else g.enqueue(_.encode(w+`
|
|
246
|
-
`))};try{for(;;){let{done:w,value:y}=await h.read();if(w){l.trim()&&m(l,d,r);break}if(!y||y.length===0)continue;let g;try{g=n.decode(y,{stream:!0})}catch(E){console.warn("Failed to decode chunk",E);continue}if(g.length===0)continue;if(l+=g,l.length>1e6){console.warn("Buffer size exceeds limit, processing partial data");let E=l.split(`
|
|
247
|
-
`);l=E.pop()||"";for(let b of E)if(b.trim())try{C(b,{controller:d,encoder:r,hasTextContent:()=>o,setHasTextContent:S=>o=S,reasoningContent:()=>s,appendReasoningContent:S=>s+=S,isReasoningComplete:()=>a,setReasoningComplete:S=>a=S})}catch(S){console.error("Error processing line:",b,S),d.enqueue(r.encode(b+`
|
|
248
|
-
`))}continue}let _=l.split(`
|
|
249
|
-
`);l=_.pop()||"";for(let E of _)if(E.trim())try{C(E,{controller:d,encoder:r,hasTextContent:()=>o,setHasTextContent:b=>o=b,reasoningContent:()=>s,appendReasoningContent:b=>s+=b,isReasoningComplete:()=>a,setReasoningComplete:b=>a=b})}catch(b){console.error("Error processing line:",E,b),d.enqueue(r.encode(E+`
|
|
250
|
-
`))}}}catch(w){console.error("Stream error:",w),d.error(w)}finally{try{h.releaseLock()}catch(w){console.error("Error releasing reader lock:",w)}d.close()}}});return new Response(f,{status:e.status,statusText:e.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}return e}};var La=class{constructor(e){this.options=e;this.max_tokens=this.options?.max_tokens}static TransformerName="maxtoken";max_tokens;async transformRequestIn(e){return e.max_tokens&&e.max_tokens>this.max_tokens&&(e.max_tokens=this.max_tokens),e}};var ja=class{name="groq";async transformRequestIn(e){return e.messages.forEach(n=>{Array.isArray(n.content)?n.content.forEach(r=>{r.cache_control&&delete r.cache_control}):n.cache_control&&delete n.cache_control}),Array.isArray(e.tools)&&e.tools.forEach(n=>{delete n.function.parameters.$schema}),e}async transformResponseOut(e){if(e.headers.get("Content-Type")?.includes("application/json")){let n=await e.json();return new Response(JSON.stringify(n),{status:e.status,statusText:e.statusText,headers:e.headers})}else if(e.headers.get("Content-Type")?.includes("stream")){if(!e.body)return e;let n=new TextDecoder,r=new TextEncoder,o=!1,s="",a=!1,u="",l=new ReadableStream({async start(f){let d=e.body.getReader(),h=(C,w,y)=>{let g=C.split(`
|
|
251
|
-
`);for(let _ of g)_.trim()&&w.enqueue(y.encode(_+`
|
|
252
|
-
`))},m=(C,w)=>{let{controller:y,encoder:g}=w;if(C.startsWith("data: ")&&C.trim()!=="data: [DONE]"){let _=C.slice(6);try{let E=JSON.parse(_);if(E.error)throw new Error(JSON.stringify(E));E.choices?.[0]?.delta?.content&&!w.hasTextContent()&&w.setHasTextContent(!0),E.choices?.[0]?.delta?.tool_calls?.length&&E.choices?.[0]?.delta?.tool_calls.forEach(S=>{S.id=`call_${pt()}`}),E.choices?.[0]?.delta?.tool_calls?.length&&w.hasTextContent()&&(typeof E.choices[0].index=="number"?E.choices[0].index+=1:E.choices[0].index=1);let b=`data: ${JSON.stringify(E)}
|
|
253
|
-
|
|
254
|
-
`;y.enqueue(g.encode(b))}catch{y.enqueue(g.encode(C+`
|
|
255
|
-
`))}}else y.enqueue(g.encode(C+`
|
|
256
|
-
`))};try{for(;;){let{done:C,value:w}=await d.read();if(C){u.trim()&&h(u,f,r);break}if(!w||w.length===0)continue;let y;try{y=n.decode(w,{stream:!0})}catch(_){console.warn("Failed to decode chunk",_);continue}if(y.length===0)continue;if(u+=y,u.length>1e6){console.warn("Buffer size exceeds limit, processing partial data");let _=u.split(`
|
|
257
|
-
`);u=_.pop()||"";for(let E of _)if(E.trim())try{m(E,{controller:f,encoder:r,hasTextContent:()=>o,setHasTextContent:b=>o=b,reasoningContent:()=>s,appendReasoningContent:b=>s+=b,isReasoningComplete:()=>a,setReasoningComplete:b=>a=b})}catch(b){console.error("Error processing line:",E,b),f.enqueue(r.encode(E+`
|
|
258
|
-
`))}continue}let g=u.split(`
|
|
259
|
-
`);u=g.pop()||"";for(let _ of g)if(_.trim())try{m(_,{controller:f,encoder:r,hasTextContent:()=>o,setHasTextContent:E=>o=E,reasoningContent:()=>s,appendReasoningContent:E=>s+=E,isReasoningComplete:()=>a,setReasoningComplete:E=>a=E})}catch(E){console.error("Error processing line:",_,E),f.enqueue(r.encode(_+`
|
|
260
|
-
`))}}}catch(C){console.error("Stream error:",C),f.error(C)}finally{try{d.releaseLock()}catch(C){console.error("Error releasing reader lock:",C)}f.close()}}});return new Response(l,{status:e.status,statusText:e.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}return e}};var Ua=class{name="cleancache";async transformRequestIn(e){return Array.isArray(e.messages)&&e.messages.forEach(n=>{Array.isArray(n.content)?n.content.forEach(r=>{r.cache_control&&delete r.cache_control}):n.cache_control&&delete n.cache_control}),e}};var U0=Ln(Ju());var Dn=class extends Error{constructor(e,n){super(`${e} at position ${n}`),this.position=n}};function F0(t){return/^[0-9A-Fa-f]$/.test(t)}function Qn(t){return t>="0"&&t<="9"}function I0(t){return t>=" "}function hs(t){return`,:[]/{}()
|
|
261
|
-
+`.includes(t)}function Bd(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"||t==="_"||t==="$"}function Md(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"||t==="_"||t==="$"||t>="0"&&t<="9"}var Ld=/^(http|https|ftp|mailto|file|data|irc):\/\/$/,jd=/^[A-Za-z0-9-._~:/?#@!$&'()*+;=]$/;function Ud(t){return`,[]/{}
|
|
262
|
-
+`.includes(t)}function $d(t){return ps(t)||oT.test(t)}var oT=/^[[{\w-]$/;function N0(t){return t===`
|
|
263
|
-
`||t==="\r"||t===" "||t==="\b"||t==="\f"}function Yn(t,e){let n=t.charCodeAt(e);return n===32||n===10||n===9||n===13}function B0(t,e){let n=t.charCodeAt(e);return n===32||n===9||n===13}function M0(t,e){let n=t.charCodeAt(e);return n===160||n>=8192&&n<=8202||n===8239||n===8287||n===12288}function ps(t){return qd(t)||$a(t)}function qd(t){return t==='"'||t==="\u201C"||t==="\u201D"}function zd(t){return t==='"'}function $a(t){return t==="'"||t==="\u2018"||t==="\u2019"||t==="`"||t==="\xB4"}function Hd(t){return t==="'"}function bo(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=t.lastIndexOf(e);return r!==-1?t.substring(0,r)+(n?"":t.substring(r+1)):t}function It(t,e){let n=t.length;if(!Yn(t,n-1))return t+e;for(;Yn(t,n-1);)n--;return t.substring(0,n)+e+t.substring(n)}function L0(t,e,n){return t.substring(0,e)+t.substring(e+n)}function j0(t){return/[,\n][ \t\r]*$/.test(t)}var sT={"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"},iT={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
|
|
264
|
-
`,r:"\r",t:" "};function Wd(t){let e=0,n="";f(["```","[```","{```"]),s()||ee(),f(["```","```]","```}"]);let o=h(",");for(o&&a(),$d(t[e])&&j0(n)?(o||(n=It(n,",")),_()):o&&(n=bo(n,","));t[e]==="}"||t[e]==="]";)e++,a();if(e>=t.length)return n;Q();function s(){a();let J=y()||g()||E()||S()||T()||$(!1)||H();return a(),J}function a(){let J=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,Z=e,ce=u(J);do ce=l(),ce&&(ce=u(J));while(ce);return e>Z}function u(J){let Z=J?Yn:B0,ce="";for(;;)if(Z(t,e))ce+=t[e],e++;else if(M0(t,e))ce+=" ",e++;else break;return ce.length>0?(n+=ce,!0):!1}function l(){if(t[e]==="/"&&t[e+1]==="*"){for(;e<t.length&&!aT(t,e);)e++;return e+=2,!0}if(t[e]==="/"&&t[e+1]==="/"){for(;e<t.length&&t[e]!==`
|
|
265
|
-
`;)e++;return!0}return!1}function f(J){if(d(J)){if(Bd(t[e]))for(;e<t.length&&Md(t[e]);)e++;return a(),!0}return!1}function d(J){u(!0);for(let Z of J){let ce=e+Z.length;if(t.slice(e,ce)===Z)return e=ce,!0}return!1}function h(J){return t[e]===J?(n+=t[e],e++,!0):!1}function m(J){return t[e]===J?(e++,!0):!1}function C(){return m("\\")}function w(){return a(),t[e]==="."&&t[e+1]==="."&&t[e+2]==="."?(e+=3,a(),m(","),!0):!1}function y(){if(t[e]==="{"){n+="{",e++,a(),m(",")&&a();let J=!0;for(;e<t.length&&t[e]!=="}";){let Z;if(J?(Z=!0,J=!1):(Z=h(","),Z||(n=It(n,",")),a()),w(),!(E()||$(!0))){t[e]==="}"||t[e]==="{"||t[e]==="]"||t[e]==="["||t[e]===void 0?n=bo(n,","):se();break}a();let je=h(":"),we=e>=t.length;je||($d(t[e])||we?n=It(n,":"):ue()),s()||(je||we?n+="null":ue())}return t[e]==="}"?(n+="}",e++):n=It(n,"}"),!0}return!1}function g(){if(t[e]==="["){n+="[",e++,a(),m(",")&&a();let J=!0;for(;e<t.length&&t[e]!=="]";)if(J?J=!1:h(",")||(n=It(n,",")),w(),!s()){n=bo(n,",");break}return t[e]==="]"?(n+="]",e++):n=It(n,"]"),!0}return!1}function _(){let J=!0,Z=!0;for(;Z;)J?J=!1:h(",")||(n=It(n,",")),Z=s();Z||(n=bo(n,",")),n=`[
|
|
266
|
-
${n}
|
|
267
|
-
]`}function E(){let J=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,Z=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,ce=t[e]==="\\";if(ce&&(e++,ce=!0),ps(t[e])){let je=zd(t[e])?zd:Hd(t[e])?Hd:$a(t[e])?$a:qd,we=e,V=n.length,ae='"';for(e++;;){if(e>=t.length){let te=P(e-1);return!J&&hs(t.charAt(te))?(e=we,n=n.substring(0,V),E(!0)):(ae=It(ae,'"'),n+=ae,!0)}if(e===Z)return ae=It(ae,'"'),n+=ae,!0;if(je(t[e])){let te=e,Te=ae.length;if(ae+='"',e++,n+=ae,a(!1),J||e>=t.length||hs(t[e])||ps(t[e])||Qn(t[e]))return b(),!0;let Oe=P(te-1),Ue=t.charAt(Oe);if(Ue===",")return e=we,n=n.substring(0,V),E(!1,Oe);if(hs(Ue))return e=we,n=n.substring(0,V),E(!0);n=n.substring(0,V),e=te+1,ae=`${ae.substring(0,Te)}\\${ae.substring(Te)}`}else if(J&&Ud(t[e])){if(t[e-1]===":"&&Ld.test(t.substring(we+1,e+2)))for(;e<t.length&&jd.test(t[e]);)ae+=t[e],e++;return ae=It(ae,'"'),n+=ae,b(),!0}else if(t[e]==="\\"){let te=t.charAt(e+1);if(iT[te]!==void 0)ae+=t.slice(e,e+2),e+=2;else if(te==="u"){let Oe=2;for(;Oe<6&&F0(t[e+Oe]);)Oe++;Oe===6?(ae+=t.slice(e,e+6),e+=6):e+Oe>=t.length?e=t.length:pe()}else ae+=te,e+=2}else{let te=t.charAt(e);te==='"'&&t[e-1]!=="\\"?(ae+=`\\${te}`,e++):N0(te)?(ae+=sT[te],e++):(I0(te)||Y(te),ae+=te,e++)}ce&&C()}}return!1}function b(){let J=!1;for(a();t[e]==="+";){J=!0,e++,a(),n=bo(n,'"',!0);let Z=n.length;E()?n=L0(n,Z,1):n=It(n,'"')}return J}function S(){let J=e;if(t[e]==="-"){if(e++,K())return q(J),!0;if(!Qn(t[e]))return e=J,!1}for(;Qn(t[e]);)e++;if(t[e]==="."){if(e++,K())return q(J),!0;if(!Qn(t[e]))return e=J,!1;for(;Qn(t[e]);)e++}if(t[e]==="e"||t[e]==="E"){if(e++,(t[e]==="-"||t[e]==="+")&&e++,K())return q(J),!0;if(!Qn(t[e]))return e=J,!1;for(;Qn(t[e]);)e++}if(!K())return e=J,!1;if(e>J){let Z=t.slice(J,e),ce=/^0\d/.test(Z);return n+=ce?`"${Z}"`:Z,!0}return!1}function T(){return R("true","true")||R("false","false")||R("null","null")||R("True","true")||R("False","false")||R("None","null")}function R(J,Z){return t.slice(e,e+J.length)===J?(n+=Z,e+=J.length,!0):!1}function $(J){let Z=e;if(Bd(t[e])){for(;e<t.length&&Md(t[e]);)e++;let ce=e;for(;Yn(t,ce);)ce++;if(t[ce]==="(")return e=ce+1,s(),t[e]===")"&&(e++,t[e]===";"&&e++),!0}for(;e<t.length&&!Ud(t[e])&&!ps(t[e])&&(!J||t[e]!==":");)e++;if(t[e-1]===":"&&Ld.test(t.substring(Z,e+2)))for(;e<t.length&&jd.test(t[e]);)e++;if(e>Z){for(;Yn(t,e-1)&&e>0;)e--;let ce=t.slice(Z,e);return n+=ce==="undefined"?"null":JSON.stringify(ce),t[e]==='"'&&e++,!0}}function H(){if(t[e]==="/"){let J=e;for(e++;e<t.length&&(t[e]!=="/"||t[e-1]==="\\");)e++;return e++,n+=`"${t.substring(J,e)}"`,!0}}function P(J){let Z=J;for(;Z>0&&Yn(t,Z);)Z--;return Z}function K(){return e>=t.length||hs(t[e])||Yn(t,e)}function q(J){n+=`${t.slice(J,e)}0`}function Y(J){throw new Dn(`Invalid character ${JSON.stringify(J)}`,e)}function Q(){throw new Dn(`Unexpected character ${JSON.stringify(t[e])}`,e)}function ee(){throw new Dn("Unexpected end of json string",t.length)}function se(){throw new Dn("Object key expected",e)}function ue(){throw new Dn("Colon expected",e)}function pe(){let J=t.slice(e,e+6);throw new Dn(`Invalid unicode character "${J}"`,e)}}function aT(t,e){return t[e]==="*"&&t[e+1]==="/"}function Gd(t,e){if(!t||t.trim()===""||t==="{}")return"{}";try{return JSON.parse(t),e?.debug("\u5DE5\u5177\u8C03\u7528\u53C2\u6570\u6807\u51C6JSON\u89E3\u6790\u6210\u529F / Tool arguments standard JSON parsing successful"),t}catch(n){try{let r=U0.default.parse(t);return e?.debug("Tool arguments JSON5 parsing successful"),JSON.stringify(r)}catch(r){try{let o=Wd(t);return e?.debug("Tool arguments safely repaired"),o}catch(o){return e?.error(`JSON parsing failed: ${n.message}. JSON5 parsing failed: ${r.message}. JSON repair failed: ${o.message}. Input data: ${JSON.stringify(t)}`),e?.debug("Returning safe empty object as fallback"),"{}"}}}}var qa=class{name="enhancetool";async transformResponseOut(e){if(e.headers.get("Content-Type")?.includes("application/json")){let n=await e.json();if(n?.choices?.[0]?.message?.tool_calls?.length)for(let r of n.choices[0].message.tool_calls)r.function?.arguments&&(r.function.arguments=Gd(r.function.arguments,this.logger));return new Response(JSON.stringify(n),{status:e.status,statusText:e.statusText,headers:e.headers})}else if(e.headers.get("Content-Type")?.includes("stream")){if(!e.body)return e;let n=new TextDecoder,r=new TextEncoder,o={},s=!1,a="",u=!1,l=!1,f="",d=new ReadableStream({async start(h){let m=e.body.getReader(),C=(g,_,E)=>{let b=g.split(`
|
|
268
|
-
`);for(let S of b)S.trim()&&_.enqueue(E.encode(S+`
|
|
269
|
-
`))},w=(g,_,E)=>{let b="";try{b=Gd(o.arguments||"",this.logger)}catch($){console.error(`${$.message} ${$.stack} \u5DE5\u5177\u8C03\u7528\u53C2\u6570\u89E3\u6790\u5931\u8D25: ${JSON.stringify(o)}`),b=o.arguments||""}let S={role:"assistant",tool_calls:[{function:{name:o.name,arguments:b},id:o.id,index:o.index,type:"function"}]},T={...g,choices:[{...g.choices[0],delta:S}]};T.choices[0].delta.content!==void 0&&delete T.choices[0].delta.content;let R=`data: ${JSON.stringify(T)}
|
|
270
|
-
|
|
271
|
-
`;_.enqueue(E.encode(R))},y=(g,_)=>{let{controller:E,encoder:b}=_;if(g.startsWith("data: ")&&g.trim()!=="data: [DONE]"){let S=g.slice(6);try{let T=JSON.parse(S);if(T.choices?.[0]?.delta?.tool_calls?.length){let $=T.choices[0].delta.tool_calls[0];if(typeof o.index>"u"){o={index:$.index,name:$.function?.name||"",id:$.id||"",arguments:$.function?.arguments||""},$.function?.arguments&&($.function.arguments="");let H=`data: ${JSON.stringify(T)}
|
|
272
|
-
|
|
273
|
-
`;E.enqueue(b.encode(H));return}else if(o.index===$.index){$.function?.arguments&&(o.arguments+=$.function.arguments);return}else{w(T,E,b),o={index:$.index,name:$.function?.name||"",id:$.id||"",arguments:$.function?.arguments||""};return}}if(T.choices?.[0]?.finish_reason==="tool_calls"&&o.index!==void 0){w(T,E,b),o={};return}T.choices?.[0]?.delta?.tool_calls?.length&&_.hasTextContent()&&(typeof T.choices[0].index=="number"?T.choices[0].index+=1:T.choices[0].index=1);let R=`data: ${JSON.stringify(T)}
|
|
274
|
-
|
|
275
|
-
`;E.enqueue(b.encode(R))}catch{E.enqueue(b.encode(g+`
|
|
276
|
-
`))}}else E.enqueue(b.encode(g+`
|
|
277
|
-
`))};try{for(;;){let{done:g,value:_}=await m.read();if(g){f.trim()&&C(f,h,r);break}if(!_||_.length===0)continue;let E;try{E=n.decode(_,{stream:!0})}catch(S){console.warn("Failed to decode chunk",S);continue}if(E.length===0)continue;if(f+=E,f.length>1e6){console.warn("Buffer size exceeds limit, processing partial data");let S=f.split(`
|
|
278
|
-
`);f=S.pop()||"";for(let T of S)if(T.trim())try{y(T,{controller:h,encoder:r,hasTextContent:()=>s,setHasTextContent:R=>s=R,reasoningContent:()=>a,appendReasoningContent:R=>a+=R,isReasoningComplete:()=>u,setReasoningComplete:R=>u=R})}catch(R){console.error("Error processing line:",T,R),h.enqueue(r.encode(T+`
|
|
279
|
-
`))}continue}let b=f.split(`
|
|
280
|
-
`);f=b.pop()||"";for(let S of b)if(S.trim())try{y(S,{controller:h,encoder:r,hasTextContent:()=>s,setHasTextContent:T=>s=T,reasoningContent:()=>a,appendReasoningContent:T=>a+=T,isReasoningComplete:()=>u,setReasoningComplete:T=>u=T})}catch(T){console.error("Error processing line:",S,T),h.enqueue(r.encode(S+`
|
|
281
|
-
`))}}}catch(g){console.error("Stream error:",g),h.error(g)}finally{try{m.releaseLock()}catch(g){console.error("Error releasing reader lock:",g)}h.close()}}});return new Response(d,{status:e.status,statusText:e.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}return e}};var za=class{constructor(e){this.options=e;this.enable=this.options?.enable??!0}static TransformerName="reasoning";enable;async transformRequestIn(e){return this.enable?(e.reasoning&&(e.thinking={type:"enabled",budget_tokens:e.reasoning.max_tokens},e.enable_thinking=!0),e):(e.thinking={type:"disabled",budget_tokens:-1},e.enable_thinking=!1,e)}async transformResponseOut(e){if(!this.enable)return e;if(e.headers.get("Content-Type")?.includes("application/json")){let n=await e.json();return n.choices[0]?.message.reasoning_content&&(n.thinking={content:n.choices[0]?.message.reasoning_content}),new Response(JSON.stringify(n),{status:e.status,statusText:e.statusText,headers:e.headers})}else if(e.headers.get("Content-Type")?.includes("stream")){if(!e.body)return e;let n=new TextDecoder,r=new TextEncoder,o="",s=!1,a="",u=new ReadableStream({async start(l){let f=e.body.getReader(),d=(m,C,w)=>{let y=m.split(`
|
|
282
|
-
`);for(let g of y)g.trim()&&C.enqueue(w.encode(g+`
|
|
283
|
-
`))},h=(m,C)=>{let{controller:w,encoder:y}=C;if(this.logger?.debug({line:m},"Processing reason line"),m.startsWith("data: ")&&m.trim()!=="data: [DONE]")try{let g=JSON.parse(m.slice(6));if(console.log(JSON.stringify(g)),g.choices?.[0]?.delta?.reasoning_content){C.appendReasoningContent(g.choices[0].delta.reasoning_content);let _={...g,choices:[{...g.choices[0],delta:{...g.choices[0].delta,thinking:{content:g.choices[0].delta.reasoning_content}}}]};delete _.choices[0].delta.reasoning_content;let E=`data: ${JSON.stringify(_)}
|
|
284
|
-
|
|
285
|
-
`;w.enqueue(y.encode(E));return}if(g.choices?.[0]?.delta?.content&&C.reasoningContent()&&!C.isReasoningComplete()){C.setReasoningComplete(!0);let _="ccr_think_signature",E=g.choices[0].delta.content,b={...g,choices:[{...g.choices[0],delta:{...g.choices[0].delta,content:null,thinking:{content:C.reasoningContent(),signature:_}}}]};delete b.choices[0].delta.reasoning_content;let S=`data: ${JSON.stringify(b)}
|
|
286
|
-
|
|
287
|
-
`;w.enqueue(y.encode(S))}if(g.choices?.[0]?.delta?.reasoning_content&&delete g.choices[0].delta.reasoning_content,g.choices?.[0]?.delta&&Object.keys(g.choices[0].delta).length>0){C.isReasoningComplete()&&g.choices[0].index++;let _=`data: ${JSON.stringify(g)}
|
|
288
|
-
|
|
289
|
-
`;w.enqueue(y.encode(_))}}catch{w.enqueue(y.encode(m+`
|
|
290
|
-
`))}else w.enqueue(y.encode(m+`
|
|
291
|
-
`))};try{for(;;){let{done:m,value:C}=await f.read();if(m){a.trim()&&d(a,l,r);break}let w=n.decode(C,{stream:!0});a+=w;let y=a.split(`
|
|
292
|
-
`);a=y.pop()||"";for(let g of y)if(g.trim())try{h(g,{controller:l,encoder:r,reasoningContent:()=>o,appendReasoningContent:_=>o+=_,isReasoningComplete:()=>s,setReasoningComplete:_=>s=_})}catch(_){console.error("Error processing line:",g,_),l.enqueue(r.encode(g+`
|
|
293
|
-
`))}}}catch(m){console.error("Stream error:",m),l.error(m)}finally{try{f.releaseLock()}catch(m){console.error("Error releasing reader lock:",m)}l.close()}}});return new Response(u,{status:e.status,statusText:e.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}return e}};var Ha=class{constructor(e){this.options=e;this.max_tokens=this.options?.max_tokens,this.temperature=this.options?.temperature,this.top_p=this.options?.top_p,this.top_k=this.options?.top_k,this.repetition_penalty=this.options?.repetition_penalty}static TransformerName="sampling";max_tokens;temperature;top_p;top_k;repetition_penalty;async transformRequestIn(e){return e.max_tokens&&e.max_tokens>this.max_tokens&&(e.max_tokens=this.max_tokens),typeof this.temperature<"u"&&(e.temperature=this.temperature),typeof this.top_p<"u"&&(e.top_p=this.top_p),typeof this.top_k<"u"&&(e.top_k=this.top_k),typeof this.repetition_penalty<"u"&&(e.repetition_penalty=this.repetition_penalty),e}};var Wa=class{static TransformerName="maxcompletiontokens";async transformRequestIn(e){return e.max_tokens&&(e.max_completion_tokens=e.max_tokens,delete e.max_tokens),e}};function $0(t){let e=[];for(let r=0;r<t.messages.length;r++){let o=t.messages[r],s=r===t.messages.length-1,a=o.role==="assistant",u=[];typeof o.content=="string"?u.push({type:"text",text:o.content}):Array.isArray(o.content)&&o.content.forEach(l=>{l.type==="text"?u.push({type:"text",text:l.text||""}):l.type==="image_url"&&u.push({type:"image",source:{type:"base64",media_type:l.media_type||"image/jpeg",data:l.image_url.url}})}),!(!s&&u.length===0&&!o.tool_calls&&!o.content)&&(s&&a&&u.length===0&&o.tool_calls&&u.push({type:"text",text:""}),e.push({role:o.role==="assistant"?"assistant":"user",content:u}))}let n={anthropic_version:"vertex-2023-10-16",messages:e,max_tokens:t.max_tokens||1e3,stream:t.stream||!1,...t.temperature&&{temperature:t.temperature}};return t.tools&&t.tools.length>0&&(n.tools=t.tools.map(r=>({name:r.function.name,description:r.function.description,input_schema:r.function.parameters}))),t.tool_choice&&(t.tool_choice==="auto"||t.tool_choice==="none"?n.tool_choice=t.tool_choice:typeof t.tool_choice=="string"&&(n.tool_choice={type:"tool",name:t.tool_choice})),n}function q0(t){let e=t,r={messages:e.messages.map(o=>{let s=o.content.map(a=>a.type==="text"?{type:"text",text:a.text||""}:a.type==="image"&&a.source?{type:"image_url",image_url:{url:a.source.data},media_type:a.source.media_type}:{type:"text",text:""});return{role:o.role,content:s}}),model:t.model||"claude-sonnet-4@20250514",max_tokens:e.max_tokens,temperature:e.temperature,stream:e.stream};return e.tools&&e.tools.length>0&&(r.tools=e.tools.map(o=>({type:"function",function:{name:o.name,description:o.description,parameters:{type:"object",properties:o.input_schema.properties,required:o.input_schema.required,additionalProperties:o.input_schema.additionalProperties,$schema:o.input_schema.$schema}}}))),e.tool_choice&&(typeof e.tool_choice=="string"?r.tool_choice=e.tool_choice:e.tool_choice.type==="tool"&&(r.tool_choice=e.tool_choice.name)),r}async function z0(t,e,n){if(t.headers.get("Content-Type")?.includes("application/json")){let r=await t.json(),o;r.tool_use&&r.tool_use.length>0&&(o=r.tool_use.map(a=>({id:a.id,type:"function",function:{name:a.name,arguments:JSON.stringify(a.input)}})));let s={id:r.id,choices:[{finish_reason:r.stop_reason||null,index:0,message:{content:r.content[0]?.text||"",role:"assistant",...o&&{tool_calls:o}}}],created:parseInt(new Date().getTime()/1e3+"",10),model:r.model,object:"chat.completion",usage:{completion_tokens:r.usage.output_tokens,prompt_tokens:r.usage.input_tokens,total_tokens:r.usage.input_tokens+r.usage.output_tokens}};return new Response(JSON.stringify(s),{status:t.status,statusText:t.statusText,headers:t.headers})}else if(t.headers.get("Content-Type")?.includes("stream")){if(!t.body)return t;let r=new TextDecoder,o=new TextEncoder,s=(u,l)=>{if(u.startsWith("data: ")){let f=u.slice(6).trim();if(f){n?.debug({chunkStr:f},`${e} chunk:`);try{let d=JSON.parse(f);if(d.type==="content_block_delta"&&d.delta?.type==="text_delta"){let h={choices:[{delta:{role:"assistant",content:d.delta.text||""},finish_reason:null,index:0,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:d.id||"",model:d.model||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1",usage:{completion_tokens:d.usage?.output_tokens||0,prompt_tokens:d.usage?.input_tokens||0,total_tokens:(d.usage?.input_tokens||0)+(d.usage?.output_tokens||0)}};l.enqueue(o.encode(`data: ${JSON.stringify(h)}
|
|
294
|
-
|
|
295
|
-
`))}else if(d.type==="content_block_delta"&&d.delta?.type==="input_json_delta"){let h={choices:[{delta:{tool_calls:[{index:d.index||0,function:{arguments:d.delta.partial_json||""}}]},finish_reason:null,index:0,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:d.id||"",model:d.model||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1",usage:{completion_tokens:d.usage?.output_tokens||0,prompt_tokens:d.usage?.input_tokens||0,total_tokens:(d.usage?.input_tokens||0)+(d.usage?.output_tokens||0)}};l.enqueue(o.encode(`data: ${JSON.stringify(h)}
|
|
296
|
-
|
|
297
|
-
`))}else if(d.type==="content_block_start"&&d.content_block?.type==="tool_use"){let h={choices:[{delta:{tool_calls:[{index:d.index||0,id:d.content_block.id,type:"function",function:{name:d.content_block.name,arguments:""}}]},finish_reason:null,index:0,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:d.id||"",model:d.model||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1",usage:{completion_tokens:d.usage?.output_tokens||0,prompt_tokens:d.usage?.input_tokens||0,total_tokens:(d.usage?.input_tokens||0)+(d.usage?.output_tokens||0)}};l.enqueue(o.encode(`data: ${JSON.stringify(h)}
|
|
298
|
-
|
|
299
|
-
`))}else if(d.type==="message_delta"){let h={choices:[{delta:{},finish_reason:d.delta?.stop_reason==="tool_use"?"tool_calls":d.delta?.stop_reason==="max_tokens"?"length":d.delta?.stop_reason==="stop_sequence"?"content_filter":"stop",index:0,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:d.id||"",model:d.model||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1",usage:{completion_tokens:d.usage?.output_tokens||0,prompt_tokens:d.usage?.input_tokens||0,total_tokens:(d.usage?.input_tokens||0)+(d.usage?.output_tokens||0)}};l.enqueue(o.encode(`data: ${JSON.stringify(h)}
|
|
300
|
-
|
|
301
|
-
`))}else if(d.type==="message_stop")l.enqueue(o.encode(`data: [DONE]
|
|
302
|
-
|
|
303
|
-
`));else{let h={choices:[{delta:{role:"assistant",content:d.content?.[0]?.text||""},finish_reason:d.stop_reason?.toLowerCase()||null,index:0,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:d.id||"",model:d.model||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1",usage:{completion_tokens:d.usage?.output_tokens||0,prompt_tokens:d.usage?.input_tokens||0,total_tokens:(d.usage?.input_tokens||0)+(d.usage?.output_tokens||0)}};l.enqueue(o.encode(`data: ${JSON.stringify(h)}
|
|
304
|
-
|
|
305
|
-
`))}}catch(d){n?.error(`Error parsing ${e} stream chunk`,f,d.message)}}}},a=new ReadableStream({async start(u){let l=t.body.getReader(),f="";try{for(;;){let{done:d,value:h}=await l.read();if(d){f&&s(f,u);break}f+=r.decode(h,{stream:!0});let m=f.split(`
|
|
306
|
-
`);f=m.pop()||"";for(let C of m)s(C,u)}}catch(d){u.error(d)}finally{u.close()}}});return new Response(a,{status:t.status,statusText:t.statusText,headers:t.headers})}return t}async function uT(){try{let{GoogleAuth:t}=await Promise.resolve().then(()=>Ln(Nd(),1));return(await(await new t({scopes:["https://www.googleapis.com/auth/cloud-platform"]}).getClient()).getAccessToken()).token||""}catch(t){throw console.error("Error getting access token:",t),new Error(`Failed to get access token for Vertex AI. Please ensure you have set up authentication using one of these methods:
|
|
307
|
-
1. Set GOOGLE_APPLICATION_CREDENTIALS to point to service account key file
|
|
308
|
-
2. Run "gcloud auth application-default login"
|
|
309
|
-
3. Use Google Cloud environment with default service account`)}}var Ga=class{name="vertex-claude";async transformRequestIn(e,n){let r=process.env.GOOGLE_CLOUD_PROJECT,o=process.env.GOOGLE_CLOUD_LOCATION||"us-east5";if(!r&&process.env.GOOGLE_APPLICATION_CREDENTIALS)try{let u=(await import("fs")).readFileSync(process.env.GOOGLE_APPLICATION_CREDENTIALS,"utf8"),l=JSON.parse(u);l&&l.project_id&&(r=l.project_id)}catch(a){console.error("Error extracting project_id from GOOGLE_APPLICATION_CREDENTIALS:",a)}if(!r)throw new Error("Project ID is required for Vertex AI. Set GOOGLE_CLOUD_PROJECT environment variable or ensure project_id is in GOOGLE_APPLICATION_CREDENTIALS file.");let s=await uT();return{body:$0(e),config:{url:new URL(`/v1/projects/${r}/locations/${o}/publishers/anthropic/models/${e.model}:${e.stream?"streamRawPredict":"rawPredict"}`,`https://${o}-aiplatform.googleapis.com`).toString(),headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}}}async transformRequestOut(e){return q0(e)}async transformResponseOut(e){return z0(e,this.name,this.logger)}};var Ja=class{name="cerebras";async transformRequestIn(e,n){let r=JSON.parse(JSON.stringify(e));return r.reasoning?delete r.reasoning:r.disable_reasoning=!1,{body:r,config:{headers:{Authorization:`Bearer ${n.apiKey}`,"Content-Type":"application/json"}}}}async transformResponseOut(e){return e}};var Va=class{name="streamoptions";async transformRequestIn(e){return e.stream&&(e.stream_options={include_usage:!0}),e}};var Ka=class{name="OpenAI";endPoint="/v1/chat/completions"};var Ya=class{static TransformerName="customparams";options;constructor(e={}){this.options=e}async transformRequestIn(e){let n={...e},r=Object.entries(this.options);for(let[o,s]of r)if(o in n)if(typeof n[o]=="object"&&typeof s=="object"&&!Array.isArray(n[o])&&!Array.isArray(s)&&n[o]!==null&&s!==null)n[o]=this.deepMergeObjects(n[o],s);else continue;else n[o]=this.cloneValue(s);return n}async transformResponseOut(e){return e}deepMergeObjects(e,n){let r={...e};for(let[o,s]of Object.entries(n))o in r&&typeof r[o]=="object"&&typeof s=="object"&&!Array.isArray(r[o])&&!Array.isArray(s)&&r[o]!==null&&s!==null?r[o]=this.deepMergeObjects(r[o],s):r[o]=this.cloneValue(s);return r}cloneValue(e){if(e===null||typeof e!="object")return e;if(Array.isArray(e))return e.map(r=>this.cloneValue(r));let n={};for(let[r,o]of Object.entries(e))n[r]=this.cloneValue(o);return n}};var Qa=class{constructor(e){this.options=e}static TransformerName="vercel";endPoint="/v1/chat/completions";async transformRequestIn(e){return e.model.includes("claude")?e.messages.forEach(n=>{Array.isArray(n.content)&&n.content.forEach(r=>{r.type==="image_url"&&(r.image_url.url.startsWith("http")||(r.image_url.url=`data:${r.media_type};base64,${r.image_url.url}`),delete r.media_type)})}):e.messages.forEach(n=>{Array.isArray(n.content)?n.content.forEach(r=>{r.cache_control&&delete r.cache_control,r.type==="image_url"&&(r.image_url.url.startsWith("http")||(r.image_url.url=`data:${r.media_type};base64,${r.image_url.url}`),delete r.media_type)}):n.cache_control&&delete n.cache_control}),Object.assign(e,this.options||{}),e}async transformResponseOut(e){if(e.headers.get("Content-Type")?.includes("application/json")){let n=await e.json();return new Response(JSON.stringify(n),{status:e.status,statusText:e.statusText,headers:e.headers})}else if(e.headers.get("Content-Type")?.includes("stream")){if(!e.body)return e;let n=new TextDecoder,r=new TextEncoder,o=!1,s="",a=!1,u=!1,l="",f=new ReadableStream({async start(d){let h=e.body.getReader(),m=(w,y,g)=>{let _=w.split(`
|
|
310
|
-
`);for(let E of _)E.trim()&&y.enqueue(g.encode(E+`
|
|
311
|
-
`))},C=(w,y)=>{let{controller:g,encoder:_}=y;if(w.startsWith("data: ")&&w.trim()!=="data: [DONE]"){let E=w.slice(6);try{let b=JSON.parse(E);if(b.usage&&(this.logger?.debug({usage:b.usage,hasToolCall:u},"usage"),b.choices[0].finish_reason=u?"tool_calls":"stop"),b.choices?.[0]?.finish_reason==="error"&&g.enqueue(_.encode(`data: ${JSON.stringify({error:b.choices?.[0].error})}
|
|
312
|
-
|
|
313
|
-
`)),b.choices?.[0]?.delta?.content&&!y.hasTextContent()&&y.setHasTextContent(!0),b.choices?.[0]?.delta?.reasoning){y.appendReasoningContent(b.choices[0].delta.reasoning);let T={...b,choices:[{...b.choices?.[0],delta:{...b.choices[0].delta,thinking:{content:b.choices[0].delta.reasoning}}}]};T.choices?.[0]?.delta&&delete T.choices[0].delta.reasoning;let R=`data: ${JSON.stringify(T)}
|
|
152
|
+
2. Task: "What\u2019s the weather today?" \u2014 If no tool is available to answer, use ExitTool after reasoning that none can fulfill the task.`,parameters:{type:"object",properties:{response:{type:"string",description:"Your response will be forwarded to the user exactly as returned \u2014 the tool will not modify or post-process it in any way."}},required:["response"]}}})),e}async transformResponseOut(e){if(e.headers.get("Content-Type")?.includes("application/json")){let t=await e.json();if(t?.choices?.[0]?.message.tool_calls?.length&&t?.choices?.[0]?.message.tool_calls[0]?.function?.name==="ExitTool"){let o=t?.choices[0]?.message.tool_calls[0],r=JSON.parse(o.function.arguments||"{}");t.choices[0].message.content=r.response||"",delete t.choices[0].message.tool_calls}return new Response(JSON.stringify(t),{status:e.status,statusText:e.statusText,headers:e.headers})}else if(e.headers.get("Content-Type")?.includes("stream")){if(!e.body)return e;let t=new TextDecoder,o=new TextEncoder,r=-1,s="",a="",l=new ReadableStream({async start(c){let i=e.body.getReader(),u=(m,g,y)=>{let p=m.split(`
|
|
153
|
+
`);for(let f of p)f.trim()&&g.enqueue(y.encode(f+`
|
|
154
|
+
`))},d=(m,g)=>{let{controller:y,encoder:p,exitToolIndex:f,setExitToolIndex:_,appendExitToolResponse:k}=g;if(m.startsWith("data: ")&&m.trim()!=="data: [DONE]")try{let h=JSON.parse(m.slice(6));if(h.choices[0]?.delta?.tool_calls?.length){let b=h.choices[0].delta.tool_calls[0];if(b.function?.name==="ExitTool"){_(b.index);return}else if(f()>-1&&b.index===f()&&b.function.arguments){k(b.function.arguments);try{let x=JSON.parse(g.exitToolResponse());h.choices=[{delta:{role:"assistant",content:x.response||""}}];let v=`data: ${JSON.stringify(h)}
|
|
314
155
|
|
|
315
|
-
`;
|
|
156
|
+
`;y.enqueue(p.encode(v))}catch{}return}}if(h.choices?.[0]?.delta&&Object.keys(h.choices[0].delta).length>0){let b=`data: ${JSON.stringify(h)}
|
|
316
157
|
|
|
317
|
-
`;
|
|
158
|
+
`;y.enqueue(p.encode(b))}}catch{y.enqueue(p.encode(m+`
|
|
159
|
+
`))}else y.enqueue(p.encode(m+`
|
|
160
|
+
`))};try{for(;;){let{done:m,value:g}=await i.read();if(m){a.trim()&&u(a,c,o);break}let y=t.decode(g,{stream:!0});a+=y;let p=a.split(`
|
|
161
|
+
`);a=p.pop()||"";for(let f of p)if(f.trim())try{d(f,{controller:c,encoder:o,exitToolIndex:()=>r,setExitToolIndex:_=>r=_,exitToolResponse:()=>s,appendExitToolResponse:_=>s+=_})}catch(_){console.error("Error processing line:",f,_),c.enqueue(o.encode(f+`
|
|
162
|
+
`))}}}catch(m){console.error("Stream error:",m),c.error(m)}finally{try{i.releaseLock()}catch(m){console.error("Error releasing reader lock:",m)}c.close()}}});return new Response(l,{status:e.status,statusText:e.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}return e}}});import{v4 as nl}from"uuid";var Wt,As=S(()=>{"use strict";Wt=class{constructor(e){this.options=e}static TransformerName="openrouter";async transformRequestIn(e){return e.model.includes("claude")?e.messages.forEach(t=>{Array.isArray(t.content)&&t.content.forEach(o=>{o.type==="image_url"&&(o.image_url.url.startsWith("http")||(o.image_url.url=`data:${o.media_type};base64,${o.image_url.url}`),delete o.media_type)})}):e.messages.forEach(t=>{Array.isArray(t.content)?t.content.forEach(o=>{o.cache_control&&delete o.cache_control,o.type==="image_url"&&(o.image_url.url.startsWith("http")||(o.image_url.url=`${o.image_url.url}`),delete o.media_type)}):t.cache_control&&delete t.cache_control}),Object.assign(e,this.options||{}),e}async transformResponseOut(e){if(e.headers.get("Content-Type")?.includes("application/json")){let t=await e.json();return new Response(JSON.stringify(t),{status:e.status,statusText:e.statusText,headers:e.headers})}else if(e.headers.get("Content-Type")?.includes("stream")){if(!e.body)return e;let t=new TextDecoder,o=new TextEncoder,r=!1,s="",a=!1,l=!1,c="",i=new ReadableStream({async start(u){let d=e.body.getReader(),m=(y,p,f)=>{let _=y.split(`
|
|
163
|
+
`);for(let k of _)k.trim()&&p.enqueue(f.encode(k+`
|
|
164
|
+
`))},g=(y,p)=>{let{controller:f,encoder:_}=p;if(y.startsWith("data: ")&&y.trim()!=="data: [DONE]"){let k=y.slice(6);try{let h=JSON.parse(k);if(h.usage&&(this.logger?.debug({usage:h.usage,hasToolCall:l},"usage"),h.choices[0].finish_reason=l?"tool_calls":"stop"),h.choices?.[0]?.finish_reason==="error"){f.enqueue(_.encode(`data: ${JSON.stringify({error:h.choices?.[0].error})}
|
|
318
165
|
|
|
319
|
-
|
|
320
|
-
`))}}else g.enqueue(_.encode(w+`
|
|
321
|
-
`))};try{for(;;){let{done:w,value:y}=await h.read();if(w){l.trim()&&m(l,d,r);break}if(!y||y.length===0)continue;let g;try{g=n.decode(y,{stream:!0})}catch(E){console.warn("Failed to decode chunk",E);continue}if(g.length===0)continue;if(l+=g,l.length>1e6){console.warn("Buffer size exceeds limit, processing partial data");let E=l.split(`
|
|
322
|
-
`);l=E.pop()||"";for(let b of E)if(b.trim())try{C(b,{controller:d,encoder:r,hasTextContent:()=>o,setHasTextContent:S=>o=S,reasoningContent:()=>s,appendReasoningContent:S=>s+=S,isReasoningComplete:()=>a,setReasoningComplete:S=>a=S})}catch(S){console.error("Error processing line:",b,S),d.enqueue(r.encode(b+`
|
|
323
|
-
`))}continue}let _=l.split(`
|
|
324
|
-
`);l=_.pop()||"";for(let E of _)if(E.trim())try{C(E,{controller:d,encoder:r,hasTextContent:()=>o,setHasTextContent:b=>o=b,reasoningContent:()=>s,appendReasoningContent:b=>s+=b,isReasoningComplete:()=>a,setReasoningComplete:b=>a=b})}catch(b){console.error("Error processing line:",E,b),d.enqueue(r.encode(E+`
|
|
325
|
-
`))}}}catch(w){console.error("Stream error:",w),d.error(w)}finally{try{h.releaseLock()}catch(w){console.error("Error releasing reader lock:",w)}d.close()}}});return new Response(f,{status:e.status,statusText:e.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}return e}};var Jd=`Always think before answering. Even if the problem seems simple, always write down your reasoning process explicitly.
|
|
166
|
+
`));return}h.choices?.[0]?.delta?.content&&!p.hasTextContent()&&p.setHasTextContent(!0);let b=h.choices?.[0]?.delta?.reasoning||h.choices?.[0]?.delta?.reasoning_content;if(b){p.appendReasoningContent(b);let T={...h,choices:[{...h.choices?.[0],delta:{...h.choices[0].delta,thinking:{content:b}}}]};T.choices?.[0]?.delta&&(delete T.choices[0].delta.reasoning,delete T.choices[0].delta.reasoning_content);let A=`data: ${JSON.stringify(T)}
|
|
326
167
|
|
|
327
|
-
|
|
328
|
-
<reasoning_content>
|
|
329
|
-
Your detailed thinking process goes here
|
|
330
|
-
</reasoning_content>
|
|
331
|
-
Your final answer must follow after the closing tag above.`,cT=10,Xa=class{name="forcereasoning";async transformRequestIn(e){let n=0;e.messages.filter(o=>o.role==="assistant").reverse().forEach(o=>{o.thinking&&(o.thinking.content&&(!o.content||n<cT)&&(n++,o.content=`<reasoning_content>${o.thinking.content}</reasoning_content>
|
|
332
|
-
${o.content}`),delete o.thinking)});let r=e.messages[e.messages.length-1];return r.role==="user"&&(Array.isArray(r.content)?r.content.push({type:"text",text:Jd}):r.content=[{type:"text",text:Jd},{type:"text",text:r.content||""}]),r.role==="tool"&&e.messages.push({role:"user",content:[{type:"text",text:Jd}]}),e}async transformResponseOut(e){let n="<reasoning_content>",r="</reasoning_content>";if(e.headers.get("Content-Type")?.includes("application/json")){let o=await e.json();if(o.choices[0]?.message.content){let s=/<reasoning_content>(.*?)<\/reasoning_content>/s,a=o.choices[0]?.message.content.match(s);a&&a[1]&&(o.thinking={content:a[1]})}return new Response(JSON.stringify(o),{status:e.status,statusText:e.statusText,headers:e.headers})}else if(e.headers.get("Content-Type")?.includes("stream")){if(!e.body)return e;let o=0,s=new TextDecoder,a=new TextEncoder,u=new ReadableStream({async start(l){let f=e.body.getReader(),d="",h="SEARCHING",m="",C="",w=(y,g)=>{if(typeof g!="string"){y.choices?.[0]?.delta&&Object.keys(y.choices[0].delta).length>0&&!y.choices[0].delta.content&&(y.choices[0].index=o,l.enqueue(a.encode(`data: ${JSON.stringify(y)}
|
|
168
|
+
`;f.enqueue(_.encode(A));return}if(h.choices?.[0]?.delta?.content&&p.reasoningContent()&&!p.isReasoningComplete()){p.setReasoningComplete(!0);let T="ccr_think_signature",A=h.choices[0].delta.content,w={...h,choices:[{...h.choices?.[0],delta:{...h.choices[0].delta,content:null,thinking:{content:p.reasoningContent(),signature:T}}}]};w.choices?.[0]?.delta&&delete w.choices[0].delta.reasoning;let O=`data: ${JSON.stringify(w)}
|
|
333
169
|
|
|
334
|
-
|
|
170
|
+
`;f.enqueue(_.encode(O));let P={...h,choices:[{...h.choices?.[0],delta:{...h.choices[0].delta,content:A}}]};P.choices?.[0]?.delta&&(delete P.choices[0].delta.reasoning,delete P.choices[0].delta.reasoning_content);let E=`data: ${JSON.stringify(P)}
|
|
335
171
|
|
|
336
|
-
|
|
172
|
+
`;f.enqueue(_.encode(E));return}h.choices?.[0]?.delta?.reasoning&&delete h.choices[0].delta.reasoning,h.choices?.[0]?.delta?.reasoning_content&&delete h.choices[0].delta.reasoning_content,h.choices?.[0]?.delta?.tool_calls?.length&&!Number.isNaN(parseInt(h.choices?.[0]?.delta?.tool_calls[0].id,10))&&h.choices?.[0]?.delta?.tool_calls.forEach(T=>{T.id=`call_${nl()}`}),h.choices?.[0]?.delta?.tool_calls?.length&&!l&&(l=!0);let x=h.choices?.[0]?.delta,v=x&&Object.keys(x).length>0,C=h.choices?.[0]?.finish_reason,R=h.usage;if(v||C||R){let T=`data: ${JSON.stringify(h)}
|
|
337
173
|
|
|
338
|
-
|
|
174
|
+
`;f.enqueue(_.encode(T))}}catch{f.enqueue(_.encode(y+`
|
|
175
|
+
`))}}else f.enqueue(_.encode(y+`
|
|
176
|
+
`))};try{for(;;){let{done:y,value:p}=await d.read();if(y){c.trim()&&m(c,u,o);break}if(!p||p.length===0)continue;let f;try{f=t.decode(p,{stream:!0})}catch(k){console.warn("Failed to decode chunk",k);continue}if(f.length===0)continue;if(c+=f,c.length>1e6){console.warn("Buffer size exceeds limit, processing partial data");let k=c.split(`
|
|
177
|
+
`);c=k.pop()||"";for(let h of k)if(h.trim())try{g(h,{controller:u,encoder:o,hasTextContent:()=>r,setHasTextContent:b=>r=b,reasoningContent:()=>s,appendReasoningContent:b=>s+=b,isReasoningComplete:()=>a,setReasoningComplete:b=>a=b})}catch(b){console.error("Error processing line:",h,b),u.enqueue(o.encode(h+`
|
|
178
|
+
`))}continue}let _=c.split(`
|
|
179
|
+
`);c=_.pop()||"";for(let k of _)if(k.trim())try{g(k,{controller:u,encoder:o,hasTextContent:()=>r,setHasTextContent:h=>r=h,reasoningContent:()=>s,appendReasoningContent:h=>s+=h,isReasoningComplete:()=>a,setReasoningComplete:h=>a=h})}catch(h){console.error("Error processing line:",k,h),u.enqueue(o.encode(k+`
|
|
180
|
+
`))}}}catch(y){console.error("Stream error:",y),u.error(y)}finally{try{d.releaseLock()}catch(y){console.error("Error releasing reader lock:",y)}u.close()}}});return new Response(i,{status:e.status,statusText:e.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}return e}}});var Gt,Os=S(()=>{"use strict";Gt=class{constructor(e){this.options=e;this.max_tokens=this.options?.max_tokens}static TransformerName="maxtoken";max_tokens;async transformRequestIn(e){return e.max_tokens&&e.max_tokens>this.max_tokens&&(e.max_tokens=this.max_tokens),e}}});import{v4 as ol}from"uuid";var Vt,Es=S(()=>{"use strict";Vt=class{name="groq";async transformRequestIn(e){return e.messages.forEach(t=>{Array.isArray(t.content)?t.content.forEach(o=>{o.cache_control&&delete o.cache_control}):t.cache_control&&delete t.cache_control}),Array.isArray(e.tools)&&e.tools.forEach(t=>{delete t.function.parameters.$schema}),e}async transformResponseOut(e){if(e.headers.get("Content-Type")?.includes("application/json")){let t=await e.json();return new Response(JSON.stringify(t),{status:e.status,statusText:e.statusText,headers:e.headers})}else if(e.headers.get("Content-Type")?.includes("stream")){if(!e.body)return e;let t=new TextDecoder,o=new TextEncoder,r=!1,s="",a=!1,l="",c=new ReadableStream({async start(i){let u=e.body.getReader(),d=(g,y,p)=>{let f=g.split(`
|
|
181
|
+
`);for(let _ of f)_.trim()&&y.enqueue(p.encode(_+`
|
|
182
|
+
`))},m=(g,y)=>{let{controller:p,encoder:f}=y;if(g.startsWith("data: ")&&g.trim()!=="data: [DONE]"){let _=g.slice(6);try{let k=JSON.parse(_);if(k.error)throw new Error(JSON.stringify(k));k.choices?.[0]?.delta?.content&&!y.hasTextContent()&&y.setHasTextContent(!0),k.choices?.[0]?.delta?.tool_calls?.length&&k.choices?.[0]?.delta?.tool_calls.forEach(b=>{b.id=`call_${ol()}`}),k.choices?.[0]?.delta?.tool_calls?.length&&y.hasTextContent()&&(typeof k.choices[0].index=="number"?k.choices[0].index+=1:k.choices[0].index=1);let h=`data: ${JSON.stringify(k)}
|
|
339
183
|
|
|
340
|
-
|
|
184
|
+
`;p.enqueue(f.encode(h))}catch{p.enqueue(f.encode(g+`
|
|
185
|
+
`))}}else p.enqueue(f.encode(g+`
|
|
186
|
+
`))};try{for(;;){let{done:g,value:y}=await u.read();if(g){l.trim()&&d(l,i,o);break}if(!y||y.length===0)continue;let p;try{p=t.decode(y,{stream:!0})}catch(_){console.warn("Failed to decode chunk",_);continue}if(p.length===0)continue;if(l+=p,l.length>1e6){console.warn("Buffer size exceeds limit, processing partial data");let _=l.split(`
|
|
187
|
+
`);l=_.pop()||"";for(let k of _)if(k.trim())try{m(k,{controller:i,encoder:o,hasTextContent:()=>r,setHasTextContent:h=>r=h,reasoningContent:()=>s,appendReasoningContent:h=>s+=h,isReasoningComplete:()=>a,setReasoningComplete:h=>a=h})}catch(h){console.error("Error processing line:",k,h),i.enqueue(o.encode(k+`
|
|
188
|
+
`))}continue}let f=l.split(`
|
|
189
|
+
`);l=f.pop()||"";for(let _ of f)if(_.trim())try{m(_,{controller:i,encoder:o,hasTextContent:()=>r,setHasTextContent:k=>r=k,reasoningContent:()=>s,appendReasoningContent:k=>s+=k,isReasoningComplete:()=>a,setReasoningComplete:k=>a=k})}catch(k){console.error("Error processing line:",_,k),i.enqueue(o.encode(_+`
|
|
190
|
+
`))}}}catch(g){console.error("Stream error:",g),i.error(g)}finally{try{u.releaseLock()}catch(g){console.error("Error releasing reader lock:",g)}i.close()}}});return new Response(c,{status:e.status,statusText:e.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}return e}}});var Qt,Is=S(()=>{"use strict";Qt=class{name="cleancache";async transformRequestIn(e){return Array.isArray(e.messages)&&e.messages.forEach(t=>{Array.isArray(t.content)?t.content.forEach(o=>{o.cache_control&&delete o.cache_control}):t.cache_control&&delete t.cache_control}),e}}});import rl from"json5";import{jsonrepair as sl}from"jsonrepair";function lo(n,e){if(!n||n.trim()===""||n==="{}")return"{}";try{return JSON.parse(n),e?.debug("\u5DE5\u5177\u8C03\u7528\u53C2\u6570\u6807\u51C6JSON\u89E3\u6790\u6210\u529F / Tool arguments standard JSON parsing successful"),n}catch(t){try{let o=rl.parse(n);return e?.debug("Tool arguments JSON5 parsing successful"),JSON.stringify(o)}catch(o){try{let r=sl(n);return e?.debug("Tool arguments safely repaired"),r}catch(r){return e?.error(`JSON parsing failed: ${t.message}. JSON5 parsing failed: ${o.message}. JSON repair failed: ${r.message}. Input data: ${JSON.stringify(n)}`),e?.debug("Returning safe empty object as fallback"),"{}"}}}}var Ms=S(()=>{});var Kt,$s=S(()=>{"use strict";Ms();Kt=class{name="enhancetool";async transformResponseOut(e){if(e.headers.get("Content-Type")?.includes("application/json")){let t=await e.json();if(t?.choices?.[0]?.message?.tool_calls?.length)for(let o of t.choices[0].message.tool_calls)o.function?.arguments&&(o.function.arguments=lo(o.function.arguments,this.logger));return new Response(JSON.stringify(t),{status:e.status,statusText:e.statusText,headers:e.headers})}else if(e.headers.get("Content-Type")?.includes("stream")){if(!e.body)return e;let t=new TextDecoder,o=new TextEncoder,r={},s=!1,a="",l=!1,c=!1,i="",u=new ReadableStream({async start(d){let m=e.body.getReader(),g=(f,_,k)=>{let h=f.split(`
|
|
191
|
+
`);for(let b of h)b.trim()&&_.enqueue(k.encode(b+`
|
|
192
|
+
`))},y=(f,_,k)=>{let h="";try{h=lo(r.arguments||"",this.logger)}catch(C){console.error(`${C.message} ${C.stack} \u5DE5\u5177\u8C03\u7528\u53C2\u6570\u89E3\u6790\u5931\u8D25: ${JSON.stringify(r)}`),h=r.arguments||""}let b={role:"assistant",tool_calls:[{function:{name:r.name,arguments:h},id:r.id,index:r.index,type:"function"}]},x={...f,choices:[{...f.choices[0],delta:b}]};x.choices[0].delta.content!==void 0&&delete x.choices[0].delta.content;let v=`data: ${JSON.stringify(x)}
|
|
341
193
|
|
|
342
|
-
|
|
343
|
-
`);d=E.pop()||"";for(let b of E)if(b.trim()){if(b.trim()==="data: [DONE]"){l.enqueue(a.encode(b+`
|
|
194
|
+
`;_.enqueue(k.encode(v))},p=(f,_)=>{let{controller:k,encoder:h}=_;if(f.startsWith("data: ")&&f.trim()!=="data: [DONE]"){let b=f.slice(6);try{let x=JSON.parse(b);if(x.choices?.[0]?.delta?.tool_calls?.length){let C=x.choices[0].delta.tool_calls[0];if(typeof r.index>"u"){r={index:C.index,name:C.function?.name||"",id:C.id||"",arguments:C.function?.arguments||""},C.function?.arguments&&(C.function.arguments="");let R=`data: ${JSON.stringify(x)}
|
|
344
195
|
|
|
345
|
-
|
|
346
|
-
`))}else l.enqueue(a.encode(b+`
|
|
347
|
-
`))}}}catch(y){console.error("Stream error:",y),l.error(y)}finally{try{f.releaseLock()}catch(y){console.error("Error releasing reader lock:",y)}if(h==="REASONING"){let g={choices:[{delta:{thinking:{signature:"ccr_think_signature"}}}]};l.enqueue(a.encode(`data: ${JSON.stringify(g)}
|
|
196
|
+
`;k.enqueue(h.encode(R));return}else if(r.index===C.index){C.function?.arguments&&(r.arguments+=C.function.arguments);return}else{y(x,k,h),r={index:C.index,name:C.function?.name||"",id:C.id||"",arguments:C.function?.arguments||""};return}}if(x.choices?.[0]?.finish_reason==="tool_calls"&&r.index!==void 0){y(x,k,h),r={};return}x.choices?.[0]?.delta?.tool_calls?.length&&_.hasTextContent()&&(typeof x.choices[0].index=="number"?x.choices[0].index+=1:x.choices[0].index=1);let v=`data: ${JSON.stringify(x)}
|
|
348
197
|
|
|
349
|
-
|
|
350
|
-
`))
|
|
351
|
-
`)
|
|
198
|
+
`;k.enqueue(h.encode(v))}catch{k.enqueue(h.encode(f+`
|
|
199
|
+
`))}}else k.enqueue(h.encode(f+`
|
|
200
|
+
`))};try{for(;;){let{done:f,value:_}=await m.read();if(f){i.trim()&&g(i,d,o);break}if(!_||_.length===0)continue;let k;try{k=t.decode(_,{stream:!0})}catch(b){console.warn("Failed to decode chunk",b);continue}if(k.length===0)continue;if(i+=k,i.length>1e6){console.warn("Buffer size exceeds limit, processing partial data");let b=i.split(`
|
|
201
|
+
`);i=b.pop()||"";for(let x of b)if(x.trim())try{p(x,{controller:d,encoder:o,hasTextContent:()=>s,setHasTextContent:v=>s=v,reasoningContent:()=>a,appendReasoningContent:v=>a+=v,isReasoningComplete:()=>l,setReasoningComplete:v=>l=v})}catch(v){console.error("Error processing line:",x,v),d.enqueue(o.encode(x+`
|
|
202
|
+
`))}continue}let h=i.split(`
|
|
203
|
+
`);i=h.pop()||"";for(let b of h)if(b.trim())try{p(b,{controller:d,encoder:o,hasTextContent:()=>s,setHasTextContent:x=>s=x,reasoningContent:()=>a,appendReasoningContent:x=>a+=x,isReasoningComplete:()=>l,setReasoningComplete:x=>l=x})}catch(x){console.error("Error processing line:",b,x),d.enqueue(o.encode(b+`
|
|
204
|
+
`))}}}catch(f){console.error("Stream error:",f),d.error(f)}finally{try{m.releaseLock()}catch(f){console.error("Error releasing reader lock:",f)}d.close()}}});return new Response(u,{status:e.status,statusText:e.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}return e}}});var Xt,Ns=S(()=>{"use strict";Xt=class{constructor(e){this.options=e;this.enable=this.options?.enable??!0}static TransformerName="reasoning";enable;async transformRequestIn(e){return this.enable?(e.reasoning&&(e.thinking={type:"enabled",budget_tokens:e.reasoning.max_tokens},e.enable_thinking=!0),e):(e.thinking={type:"disabled",budget_tokens:-1},e.enable_thinking=!1,e)}async transformResponseOut(e){if(!this.enable)return e;if(e.headers.get("Content-Type")?.includes("application/json")){let t=await e.json();return t.choices[0]?.message.reasoning_content&&(t.thinking={content:t.choices[0]?.message.reasoning_content}),new Response(JSON.stringify(t),{status:e.status,statusText:e.statusText,headers:e.headers})}else if(e.headers.get("Content-Type")?.includes("stream")){if(!e.body)return e;let t=new TextDecoder,o=new TextEncoder,r="",s=!1,a="",l=new ReadableStream({async start(c){let i=e.body.getReader(),u=(m,g,y)=>{let p=m.split(`
|
|
205
|
+
`);for(let f of p)f.trim()&&g.enqueue(y.encode(f+`
|
|
206
|
+
`))},d=(m,g)=>{let{controller:y,encoder:p}=g;if(this.logger?.debug({line:m},"Processing reason line"),m.startsWith("data: ")&&m.trim()!=="data: [DONE]")try{let f=JSON.parse(m.slice(6));if(console.log(JSON.stringify(f)),f.choices?.[0]?.delta?.reasoning_content){g.appendReasoningContent(f.choices[0].delta.reasoning_content);let _={...f,choices:[{...f.choices[0],delta:{...f.choices[0].delta,thinking:{content:f.choices[0].delta.reasoning_content}}}]};delete _.choices[0].delta.reasoning_content;let k=`data: ${JSON.stringify(_)}
|
|
352
207
|
|
|
353
|
-
|
|
208
|
+
`;y.enqueue(p.encode(k));return}if(f.choices?.[0]?.delta?.content&&g.reasoningContent()&&!g.isReasoningComplete()){g.setReasoningComplete(!0);let _="ccr_think_signature",k=f.choices[0].delta.content,h={...f,choices:[{...f.choices[0],delta:{...f.choices[0].delta,content:null,thinking:{content:g.reasoningContent(),signature:_}}}]};delete h.choices[0].delta.reasoning_content;let b=`data: ${JSON.stringify(h)}
|
|
354
209
|
|
|
355
|
-
|
|
210
|
+
`;y.enqueue(p.encode(b))}if(f.choices?.[0]?.delta?.reasoning_content&&delete f.choices[0].delta.reasoning_content,f.choices?.[0]?.delta&&Object.keys(f.choices[0].delta).length>0){g.isReasoningComplete()&&f.choices[0].index++;let _=`data: ${JSON.stringify(f)}
|
|
356
211
|
|
|
357
|
-
|
|
358
|
-
`))}else
|
|
359
|
-
`))}
|
|
360
|
-
`);for(let
|
|
361
|
-
`))},
|
|
212
|
+
`;y.enqueue(p.encode(_))}}catch{y.enqueue(p.encode(m+`
|
|
213
|
+
`))}else y.enqueue(p.encode(m+`
|
|
214
|
+
`))};try{for(;;){let{done:m,value:g}=await i.read();if(m){a.trim()&&u(a,c,o);break}let y=t.decode(g,{stream:!0});a+=y;let p=a.split(`
|
|
215
|
+
`);a=p.pop()||"";for(let f of p)if(f.trim())try{d(f,{controller:c,encoder:o,reasoningContent:()=>r,appendReasoningContent:_=>r+=_,isReasoningComplete:()=>s,setReasoningComplete:_=>s=_})}catch(_){console.error("Error processing line:",f,_),c.enqueue(o.encode(f+`
|
|
216
|
+
`))}}}catch(m){console.error("Stream error:",m),c.error(m)}finally{try{i.releaseLock()}catch(m){console.error("Error releasing reader lock:",m)}c.close()}}});return new Response(l,{status:e.status,statusText:e.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}return e}}});var Yt,Ls=S(()=>{"use strict";Yt=class{constructor(e){this.options=e;this.max_tokens=this.options?.max_tokens,this.temperature=this.options?.temperature,this.top_p=this.options?.top_p,this.top_k=this.options?.top_k,this.repetition_penalty=this.options?.repetition_penalty}static TransformerName="sampling";max_tokens;temperature;top_p;top_k;repetition_penalty;async transformRequestIn(e){return e.max_tokens&&e.max_tokens>this.max_tokens&&(e.max_tokens=this.max_tokens),typeof this.temperature<"u"&&(e.temperature=this.temperature),typeof this.top_p<"u"&&(e.top_p=this.top_p),typeof this.top_k<"u"&&(e.top_k=this.top_k),typeof this.repetition_penalty<"u"&&(e.repetition_penalty=this.repetition_penalty),e}}});var qt,Fs=S(()=>{"use strict";qt=class{static TransformerName="maxcompletiontokens";async transformRequestIn(e){return e.max_tokens&&(e.max_completion_tokens=e.max_tokens,delete e.max_tokens),e}}});function Us(n){let e=[];for(let o=0;o<n.messages.length;o++){let r=n.messages[o],s=o===n.messages.length-1,a=r.role==="assistant",l=[];typeof r.content=="string"?l.push({type:"text",text:r.content}):Array.isArray(r.content)&&r.content.forEach(c=>{c.type==="text"?l.push({type:"text",text:c.text||""}):c.type==="image_url"&&l.push({type:"image",source:{type:"base64",media_type:c.media_type||"image/jpeg",data:c.image_url.url}})}),!(!s&&l.length===0&&!r.tool_calls&&!r.content)&&(s&&a&&l.length===0&&r.tool_calls&&l.push({type:"text",text:""}),e.push({role:r.role==="assistant"?"assistant":"user",content:l}))}let t={anthropic_version:"vertex-2023-10-16",messages:e,max_tokens:n.max_tokens||1e3,stream:n.stream||!1,...n.temperature&&{temperature:n.temperature}};return n.tools&&n.tools.length>0&&(t.tools=n.tools.map(o=>({name:o.function.name,description:o.function.description,input_schema:o.function.parameters}))),n.tool_choice&&(n.tool_choice==="auto"||n.tool_choice==="none"?t.tool_choice=n.tool_choice:typeof n.tool_choice=="string"&&(t.tool_choice={type:"tool",name:n.tool_choice})),t}function Ds(n){let e=n,o={messages:e.messages.map(r=>{let s=r.content.map(a=>a.type==="text"?{type:"text",text:a.text||""}:a.type==="image"&&a.source?{type:"image_url",image_url:{url:a.source.data},media_type:a.source.media_type}:{type:"text",text:""});return{role:r.role,content:s}}),model:n.model||"claude-sonnet-4@20250514",max_tokens:e.max_tokens,temperature:e.temperature,stream:e.stream};return e.tools&&e.tools.length>0&&(o.tools=e.tools.map(r=>({type:"function",function:{name:r.name,description:r.description,parameters:{type:"object",properties:r.input_schema.properties,required:r.input_schema.required,additionalProperties:r.input_schema.additionalProperties,$schema:r.input_schema.$schema}}}))),e.tool_choice&&(typeof e.tool_choice=="string"?o.tool_choice=e.tool_choice:e.tool_choice.type==="tool"&&(o.tool_choice=e.tool_choice.name)),o}async function js(n,e,t){if(n.headers.get("Content-Type")?.includes("application/json")){let o=await n.json(),r;o.tool_use&&o.tool_use.length>0&&(r=o.tool_use.map(a=>({id:a.id,type:"function",function:{name:a.name,arguments:JSON.stringify(a.input)}})));let s={id:o.id,choices:[{finish_reason:o.stop_reason||null,index:0,message:{content:o.content[0]?.text||"",role:"assistant",...r&&{tool_calls:r}}}],created:parseInt(new Date().getTime()/1e3+"",10),model:o.model,object:"chat.completion",usage:{completion_tokens:o.usage.output_tokens,prompt_tokens:o.usage.input_tokens,total_tokens:o.usage.input_tokens+o.usage.output_tokens}};return new Response(JSON.stringify(s),{status:n.status,statusText:n.statusText,headers:n.headers})}else if(n.headers.get("Content-Type")?.includes("stream")){if(!n.body)return n;let o=new TextDecoder,r=new TextEncoder,s=(l,c)=>{if(l.startsWith("data: ")){let i=l.slice(6).trim();if(i){t?.debug({chunkStr:i},`${e} chunk:`);try{let u=JSON.parse(i);if(u.type==="content_block_delta"&&u.delta?.type==="text_delta"){let d={choices:[{delta:{role:"assistant",content:u.delta.text||""},finish_reason:null,index:0,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:u.id||"",model:u.model||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1",usage:{completion_tokens:u.usage?.output_tokens||0,prompt_tokens:u.usage?.input_tokens||0,total_tokens:(u.usage?.input_tokens||0)+(u.usage?.output_tokens||0)}};c.enqueue(r.encode(`data: ${JSON.stringify(d)}
|
|
362
217
|
|
|
363
|
-
`))
|
|
218
|
+
`))}else if(u.type==="content_block_delta"&&u.delta?.type==="input_json_delta"){let d={choices:[{delta:{tool_calls:[{index:u.index||0,function:{arguments:u.delta.partial_json||""}}]},finish_reason:null,index:0,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:u.id||"",model:u.model||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1",usage:{completion_tokens:u.usage?.output_tokens||0,prompt_tokens:u.usage?.input_tokens||0,total_tokens:(u.usage?.input_tokens||0)+(u.usage?.output_tokens||0)}};c.enqueue(r.encode(`data: ${JSON.stringify(d)}
|
|
364
219
|
|
|
365
|
-
`))
|
|
220
|
+
`))}else if(u.type==="content_block_start"&&u.content_block?.type==="tool_use"){let d={choices:[{delta:{tool_calls:[{index:u.index||0,id:u.content_block.id,type:"function",function:{name:u.content_block.name,arguments:""}}]},finish_reason:null,index:0,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:u.id||"",model:u.model||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1",usage:{completion_tokens:u.usage?.output_tokens||0,prompt_tokens:u.usage?.input_tokens||0,total_tokens:(u.usage?.input_tokens||0)+(u.usage?.output_tokens||0)}};c.enqueue(r.encode(`data: ${JSON.stringify(d)}
|
|
366
221
|
|
|
367
|
-
`))
|
|
222
|
+
`))}else if(u.type==="message_delta"){let d={choices:[{delta:{},finish_reason:u.delta?.stop_reason==="tool_use"?"tool_calls":u.delta?.stop_reason==="max_tokens"?"length":u.delta?.stop_reason==="stop_sequence"?"content_filter":"stop",index:0,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:u.id||"",model:u.model||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1",usage:{completion_tokens:u.usage?.output_tokens||0,prompt_tokens:u.usage?.input_tokens||0,total_tokens:(u.usage?.input_tokens||0)+(u.usage?.output_tokens||0)}};c.enqueue(r.encode(`data: ${JSON.stringify(d)}
|
|
368
223
|
|
|
369
|
-
`))
|
|
224
|
+
`))}else if(u.type==="message_stop")c.enqueue(r.encode(`data: [DONE]
|
|
370
225
|
|
|
371
|
-
`))}
|
|
372
|
-
`))}else g.enqueue(_.encode(w+`
|
|
373
|
-
`))};try{for(;;){let{done:w,value:y}=await h.read();if(w){l.trim()&&m(l,d,r);break}if(!y||y.length===0)continue;let g;try{g=n.decode(y,{stream:!0})}catch(E){console.warn("Failed to decode chunk",E);continue}if(g.length===0)continue;if(l+=g,l.length>1e6){console.warn("Buffer size exceeds limit, processing partial data");let E=l.split(`
|
|
374
|
-
`);l=E.pop()||"";for(let b of E)if(b.trim())try{C(b,{controller:d,encoder:r,hasTextContent:()=>o,setHasTextContent:S=>o=S,reasoningContent:()=>s,appendReasoningContent:S=>s+=S,isReasoningComplete:()=>a,setReasoningComplete:S=>a=S})}catch(S){console.error("Error processing line:",b,S),d.enqueue(r.encode(b+`
|
|
375
|
-
`))}continue}let _=l.split(`
|
|
376
|
-
`);l=_.pop()||"";for(let E of _)if(E.trim())try{C(E,{controller:d,encoder:r,hasTextContent:()=>o,setHasTextContent:b=>o=b,reasoningContent:()=>s,appendReasoningContent:b=>s+=b,isReasoningComplete:()=>a,setReasoningComplete:b=>a=b})}catch(b){console.error("Error processing line:",E,b),d.enqueue(r.encode(E+`
|
|
377
|
-
`))}}}catch(w){console.error("Stream error:",w),d.error(w)}finally{try{h.releaseLock()}catch(w){console.error("Error releasing reader lock:",w)}d.close()}}});return new Response(f,{status:e.status,statusText:e.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}return e}};var H0={AnthropicTransformer:di,GeminiTransformer:mi,VertexGeminiTransformer:Ia,VertexClaudeTransformer:Ga,DeepseekTransformer:Na,TooluseTransformer:Ba,OpenrouterTransformer:Ma,OpenAITransformer:Ka,MaxTokenTransformer:La,GroqTransformer:ja,CleancacheTransformer:Ua,EnhanceToolTransformer:qa,ReasoningTransformer:za,SamplingTransformer:Ha,MaxCompletionTokens:Wa,CerebrasTransformer:Ja,StreamOptionsTransformer:Va,CustomParamsTransformer:Ya,VercelTransformer:Qa,OpenAIResponsesTransformer:Lr,ForceReasoningTransformer:Xa,KimiTransformer:Za,OpenCodeTransformer:eu};var Co=class{constructor(e,n){this.configService=e;this.logger=n}transformers=new Map;registerTransformer(e,n){this.transformers.set(e,n),this.logger.info(`register transformer: ${e}${n.endPoint?` (endpoint: ${n.endPoint})`:" (no endpoint)"}`)}getTransformer(e){return this.transformers.get(e)}getAllTransformers(){return new Map(this.transformers)}getTransformersWithEndpoint(){let e=[];return this.transformers.forEach((n,r)=>{typeof n=="object"&&n.endPoint&&e.push({name:r,transformer:n})}),e}getTransformersWithoutEndpoint(){let e=[];return this.transformers.forEach((n,r)=>{typeof n=="object"&&!n.endPoint&&e.push({name:r,transformer:n})}),e}removeTransformer(e){return this.transformers.delete(e)}hasTransformer(e){return this.transformers.has(e)}async registerTransformerFromConfig(e){try{if(e.path){let n=re(re.resolve(e.path));if(n){let r=new n(e.options);if(r&&typeof r=="object"&&(r.logger=this.logger),!r.name)throw new Error(`Transformer instance from ${e.path} does not have a name property.`);return this.registerTransformer(r.name,r),!0}}return!1}catch(n){return this.logger.error(`load transformer (${e.path})
|
|
378
|
-
error: ${n.message}
|
|
379
|
-
stack: ${n.stack}`),!1}}async initialize(){try{await this.registerDefaultTransformersInternal(),await this.loadFromConfig()}catch(e){this.logger.error(`TransformerService init error: ${e.message}
|
|
380
|
-
Stack: ${e.stack}`)}}async registerDefaultTransformersInternal(){try{Object.values(H0).forEach(e=>{if("TransformerName"in e&&typeof e.TransformerName=="string")this.registerTransformer(e.TransformerName,e);else{let n=new e;n&&typeof n=="object"&&(n.logger=this.logger),this.registerTransformer(n.name,n)}})}catch(e){this.logger.error({error:e},"transformer regist error:")}}async loadFromConfig(){let e=this.configService.get("transformers",[]);for(let n of e)await this.registerTransformerFromConfig(n)}};import{get_encoding as lT}from"tiktoken";var ms=class{type="tiktoken";name;encoding;constructor(e="cl100k_base"){this.name=`tiktoken-${e}`;try{this.encoding=lT(e)}catch{throw new Error(`Failed to initialize tiktoken encoding: ${e}`)}}async initialize(){if(!this.encoding)throw new Error("Tiktoken encoding not initialized")}async countTokens(e){let n=this.encoding;if(!n)throw new Error("Encoding not initialized");let r=0,{messages:o,system:s,tools:a}=e;return Array.isArray(o)&&o.forEach(u=>{typeof u.content=="string"?r+=n.encode(u.content).length:Array.isArray(u.content)&&u.content.forEach(l=>{if(l.type==="text")r+=n.encode(l.text).length;else if(l.type==="tool_use")r+=n.encode(JSON.stringify(l.input)).length;else if(l.type==="tool_result"){let f=typeof l.content=="string"?l.content:JSON.stringify(l.content);r+=n.encode(f).length}})}),typeof s=="string"?r+=n.encode(s).length:Array.isArray(s)&&s.forEach(u=>{u.type==="text"&&(typeof u.text=="string"?r+=n.encode(u.text).length:Array.isArray(u.text)&&u.text.forEach(l=>{r+=n.encode(l||"").length}))}),a&&a.forEach(u=>{u.description&&(r+=n.encode(u.name+u.description).length),u.input_schema&&(r+=n.encode(JSON.stringify(u.input_schema)).length)}),r}isInitialized(){return this.encoding!==void 0}encodeText(e){let n=this.encoding;if(!n)throw new Error("Encoding not initialized");return Array.from(n.encode(e))}dispose(){this.encoding&&(this.encoding.free(),this.encoding=void 0)}};import{join as ou}from"path";import{homedir as CR}from"os";import{existsSync as Qd,mkdirSync as wR}from"fs";import{promises as su}from"fs";var dT=class{constructor(t){this.trie=this._build_trie(t)}_build_trie(t){let e=Object.create(null);for(let n of t){let r=e;for(let o=0;o<n.length;++o){let s=n[o];r=r[s]??=Object.create(null)}r.end=n}return e}split(t){let e=[],n=t.length,r=0,o=0;for(;o<n;){let s=this.trie,a=null,u=o;for(;u<n&&(s=s[t[u]]);)s.end&&(a=s.end),++u;a?(o>r&&e.push(t.slice(r,o)),e.push(a),o+=a.length,r=o):++o}return r<n&&e.push(t.slice(r)),e}},fT=dT,hT=class{constructor(t){this.content=t.content,this.id=t.id,this.single_word=t.single_word??!1,this.lstrip=t.lstrip??!1,this.rstrip=t.rstrip??!1,this.special=t.special??!1,this.normalized=t.normalized??null}},pT=hT,Q0=(()=>{let t=[...Array.from({length:94},(o,s)=>s+33),...Array.from({length:12},(o,s)=>s+161),...Array.from({length:82},(o,s)=>s+174)],e=t.slice(),n=0;for(let o=0;o<256;++o)t.includes(o)||(t.push(o),e.push(256+n),n+=1);let r=e.map(o=>String.fromCharCode(o));return Object.fromEntries(t.map((o,s)=>[o,r[s]]))})(),mT=t=>Object.fromEntries(Object.entries(t).map(([e,n])=>[n,e])),gT=mT(Q0),W0=".,!?\u2026\u3002\uFF0C\u3001\u0964\u06D4\u060C",yT=new Map([["(?i:'s|'t|'re|'ve|'m|'ll|'d)","(?:'([sS]|[tT]|[rR][eE]|[vV][eE]|[mM]|[lL][lL]|[dD]))"],["(?i:[sdmt]|ll|ve|re)","(?:[sS]|[dD]|[mM]|[tT]|[lL][lL]|[vV][eE]|[rR][eE])"],["[^\\r\\n\\p{L}\\p{N}]?+","[^\\r\\n\\p{L}\\p{N}]?"],["[^\\s\\p{L}\\p{N}]++","[^\\s\\p{L}\\p{N}]+"],[` ?[^(\\s|[${W0}])]+`,` ?[^\\s${W0}]+`]]),gs="\\p{P}\\u0021-\\u002F\\u003A-\\u0040\\u005B-\\u0060\\u007B-\\u007E",EI=new RegExp(`^[${gs}]+$`,"gu"),Kd=t=>t.replace(/ \./g,".").replace(/ \?/g,"?").replace(/ \!/g,"!").replace(/ ,/g,",").replace(/ \' /g,"'").replace(/ n't/g,"n't").replace(/ 'm/g,"'m").replace(/ 's/g,"'s").replace(/ 've/g,"'ve").replace(/ 're/g,"'re"),tu=(t,e=!0)=>{if(t.Regex!==void 0){let n=t.Regex.replace(/\\([#&~])/g,"$1");for(let[r,o]of yT)n=n.replaceAll(r,o);return new RegExp(n,"gu")}else if(t.String!==void 0){let n=_T(t.String);return new RegExp(e?n:`(${n})`,"gu")}else return console.warn("Unknown pattern type:",t),null},_T=t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),bT=(t,e,n)=>{let r=[],o=0;for(;o<t.length;){if(r.push(t[o]),(e.get(t[o])??n)!==n){++o;continue}for(;++o<t.length&&(e.get(t[o])??n)===n;)e.get(r.at(-1))!==n&&(r[r.length-1]+=t[o])}return r},CT=t=>t>=19968&&t<=40959||t>=13312&&t<=19903||t>=131072&&t<=173791||t>=173824&&t<=177983||t>=177984&&t<=178207||t>=178208&&t<=183983||t>=63744&&t<=64255||t>=194560&&t<=195103,wT=t=>Number.isInteger(t)||typeof t=="bigint",ET=t=>{let e=0;for(let n of t)++e;return e},kT=t=>X0(t.toLowerCase()),Nt=(...t)=>Array.prototype.concat.apply([],t),Yd=t=>new Map(Object.entries(t)),AT=(t,e)=>{let n=[],r=0;for(let o of t.matchAll(e)){let s=o[0];r<o.index&&n.push(t.slice(r,o.index)),s.length>0&&n.push(s),r=o.index+s.length}return r<t.length&&n.push(t.slice(r)),n},X0=t=>t.replace(new RegExp("\\p{M}","gu"),""),G0=(t,e,n=[])=>{if(!t||Array.isArray(t)||typeof t!="object")return`${e} must be a valid object`;for(let r of n)if(!(r in t))return`${e} must contain a "${r}" property`;return null},ST=t=>t.match(/\S+/g)||[],vT=class{constructor(){let t=function(...e){return t._call(...e)};return Object.setPrototypeOf(t,new.target.prototype)}},ys=vT,TT=class extends ys{constructor(t){super(),this.config=t}_call(t){return this.normalize(t)}},Rn=TT,DT=class extends Rn{tokenize_chinese_chars(t){let e=[];for(let n=0;n<t.length;++n){let r=t[n],o=r.charCodeAt(0);CT(o)?(e.push(" "),e.push(r),e.push(" ")):e.push(r)}return e.join("")}strip_accents(t){return t.normalize("NFD").replace(new RegExp("\\p{Mn}","gu"),"")}is_control(t){switch(t){case" ":case`
|
|
381
|
-
`:case"\r":return!1;default:return new RegExp("^\\p{Cc}|\\p{Cf}|\\p{Co}|\\p{Cs}$","u").test(t)}}clean_text(t){let e=[];for(let n of t){let r=n.charCodeAt(0);r===0||r===65533||this.is_control(n)||(/^\s$/.test(n)?e.push(" "):e.push(n))}return e.join("")}normalize(t){return this.config.clean_text&&(t=this.clean_text(t)),this.config.handle_chinese_chars&&(t=this.tokenize_chinese_chars(t)),this.config.lowercase?(t=t.toLowerCase(),this.config.strip_accents!==!1&&(t=this.strip_accents(t))):this.config.strip_accents&&(t=this.strip_accents(t)),t}},RT=DT,xT=class extends Rn{constructor(t){super(t),this.charsmap=t.precompiled_charsmap??null}normalize(t){return t=t.replace(/[\u0001-\u0008\u000B\u000E-\u001F\u007F\u008F\u009F]/gm,""),t=t.replace(/[\u0009\u000A\u000C\u000D\u00A0\u1680\u2000-\u200F\u2028\u2029\u202F\u205F\u2581\u3000\uFEFF\uFFFD]/gm," "),t.includes("\uFF5E")?t=t.split("\uFF5E").map(e=>e.normalize("NFKC")).join("\uFF5E"):t=t.normalize("NFKC"),t}},OT=xT,PT=class extends Rn{constructor(t){super(t),this.normalizers=(t.normalizers??[]).map(e=>Z0(e))}normalize(t){return this.normalizers.reduce((e,n)=>n?n.normalize(e):e,t)}},FT=PT,IT=class extends Rn{normalize(t){let e=tu(this.config.pattern??{});return e===null?t:t.replaceAll(e,this.config.content??"")}},NT=IT,BT=class extends Rn{constructor(){super(...arguments),this.form="NFC"}normalize(t){return t=t.normalize(this.form),t}},nu=BT,MT=class extends nu{constructor(){super(...arguments),this.form="NFC"}},LT=MT,jT=class extends nu{constructor(){super(...arguments),this.form="NFD"}},UT=jT,$T=class extends nu{constructor(){super(...arguments),this.form="NFKC"}},qT=$T,zT=class extends nu{constructor(){super(...arguments),this.form="NFKD"}},HT=zT,WT=class extends Rn{normalize(t){return this.config.strip_left&&this.config.strip_right?t=t.trim():(this.config.strip_left&&(t=t.trimStart()),this.config.strip_right&&(t=t.trimEnd())),t}},GT=WT,JT=class extends Rn{normalize(t){return X0(t)}},VT=JT,KT=class extends Rn{normalize(t){return t.toLowerCase()}},YT=KT,QT=class extends Rn{normalize(t){return t=this.config.prepend+t,t}},XT=QT;function ZT(t){if(t===null)return null;switch(t.type){case"BertNormalizer":return new RT(t);case"Precompiled":return new OT(t);case"Sequence":return new FT(t);case"Replace":return new NT(t);case"NFC":return new LT(t);case"NFD":return new UT(t);case"NFKC":return new qT(t);case"NFKD":return new HT(t);case"Strip":return new GT(t);case"StripAccents":return new VT(t);case"Lowercase":return new YT(t);case"Prepend":return new XT(t);default:throw new Error(`Unknown Normalizer type: ${t.type}`)}}var Z0=ZT,eD=class extends ys{pre_tokenize(t,e){return(Array.isArray(t)?t.map(n=>this.pre_tokenize_text(n,e)):this.pre_tokenize_text(t,e)).flat()}_call(t,e){return this.pre_tokenize(t,e)}},cn=eD,tD=class extends cn{constructor(t){super(),this.config=t,this.add_prefix_space=this.config.add_prefix_space??!1,this.trim_offsets=this.config.trim_offsets??!1,this.use_regex=this.config.use_regex??!0,this.pattern=new RegExp("'s|'t|'re|'ve|'m|'ll|'d| ?\\p{L}+| ?\\p{N}+| ?[^\\s\\p{L}\\p{N}]+|\\s+(?!\\S)|\\s+","gu"),this.byte_encoder=Q0,this.text_encoder=new TextEncoder}pre_tokenize_text(t,e){return this.add_prefix_space&&!t.startsWith(" ")&&(t=" "+t),(this.use_regex?t.match(this.pattern)||[]:[t]).map(n=>Array.from(this.text_encoder.encode(n),r=>this.byte_encoder[r]).join(""))}},nD=tD,rD=class extends cn{pre_tokenize_text(t,e){return t.match(/\w+|[^\w\s]+/g)||[]}},oD=rD,sD=class extends cn{constructor(t){super(),this.replacement=t.replacement??"\u2581",this.str_rep=t.str_rep||this.replacement,this.prepend_scheme=t.prepend_scheme??"always"}pre_tokenize_text(t,e){let{section_index:n=void 0}=e??{},r=t.replaceAll(" ",this.str_rep);return!r.startsWith(this.replacement)&&(this.prepend_scheme==="always"||this.prepend_scheme==="first"&&n===0)&&(r=this.str_rep+r),[r]}},iD=sD,aD=class extends cn{constructor(t){super(),this.config=t,this.pattern=tu(this.config.pattern??{},this.config.invert??!0)}pre_tokenize_text(t){return this.pattern===null?[]:this.config.invert?t.match(this.pattern)||[]:this.config.behavior?.toLowerCase()==="removed"?t.split(this.pattern).filter(e=>e):AT(t,this.pattern)}},uD=aD,cD=class extends cn{constructor(t){super(),this.config=t,this.pattern=new RegExp(`[^${gs}]+|[${gs}]+`,"gu")}pre_tokenize_text(t){return t.match(this.pattern)||[]}},lD=cD,dD=class extends cn{constructor(t){super(),this.config=t;let e=`[^\\d]+|\\d${this.config.individual_digits?"":"+"}`;this.pattern=new RegExp(e,"gu")}pre_tokenize_text(t){return t.match(this.pattern)||[]}},fD=dD,hD=class extends cn{constructor(){super(),this.pattern=new RegExp(`[^\\s${gs}]+|[${gs}]`,"gu")}pre_tokenize_text(t,e){return t.trim().match(this.pattern)||[]}},pD=hD,mD=class extends cn{constructor(t){super(),this.config=t,this.pattern=tu(this.config.pattern??{}),this.content=this.config.content??""}pre_tokenize_text(t){return this.pattern===null?[t]:[t.replaceAll(this.pattern,this.config.content??"")]}},gD=mD,yD=class extends cn{constructor(t){super(),this.tokenizers=(t.pretokenizers??[]).map(e=>e_(e))}pre_tokenize_text(t,e){return this.tokenizers.reduce((n,r)=>r?r.pre_tokenize(n,e):n,[t])}},_D=yD,bD=class extends cn{pre_tokenize_text(t){return ST(t)}},CD=bD;function wD(t){if(t===null)return null;switch(t.type){case"BertPreTokenizer":return new pD;case"Sequence":return new _D(t);case"Whitespace":return new oD;case"WhitespaceSplit":return new CD;case"Metaspace":return new iD(t);case"ByteLevel":return new nD(t);case"Split":return new uD(t);case"Punctuation":return new lD(t);case"Digits":return new fD(t);case"Replace":return new gD(t);default:throw new Error(`Unknown PreTokenizer type: ${t.type}`)}}var e_=wD,ED=class extends ys{constructor(t){super(),this.config=t,this.vocab=[],this.tokens_to_ids=new Map,this.unk_token_id=void 0,this.unk_token=void 0,this.end_of_word_suffix=void 0,this.fuse_unk=this.config.fuse_unk??!1}_call(t){let e=this.encode(t);return this.fuse_unk&&(e=bT(e,this.tokens_to_ids,this.unk_token_id)),e}convert_tokens_to_ids(t){return t.map(e=>this.tokens_to_ids.get(e)??this.unk_token_id)}convert_ids_to_tokens(t){return t.map(e=>this.vocab[Number(e)]??this.unk_token)}},ru=ED,kD=class extends ru{constructor(t){super(t),this.max_input_chars_per_word=100,this.tokens_to_ids=Yd(t.vocab),this.unk_token_id=this.tokens_to_ids.get(t.unk_token),this.unk_token=t.unk_token,this.max_input_chars_per_word=t.max_input_chars_per_word??100,this.vocab=new Array(this.tokens_to_ids.size);for(let[e,n]of this.tokens_to_ids)this.vocab[n]=e}encode(t){let e=[];for(let n of t){let r=[...n];if(r.length>this.max_input_chars_per_word){e.push(this.unk_token);continue}let o=!1,s=0,a=[];for(;s<r.length;){let u=r.length,l=null;for(;s<u;){let f=r.slice(s,u).join("");if(s>0&&(f=this.config.continuing_subword_prefix+f),this.tokens_to_ids.has(f)){l=f;break}--u}if(l===null){o=!0;break}a.push(l),s=u}o?e.push(this.unk_token):e.push(...a)}return e}},J0=kD,V0=class t_{constructor(e,n){this.is_leaf=e,this.children=n}static default(){return new t_(!1,new Map)}},AD=class{constructor(){this.root=V0.default()}extend(t){for(let e of t)this.push(e)}push(t){let e=this.root;for(let n of t){let r=e.children.get(n);r===void 0&&(r=V0.default(),e.children.set(n,r)),e=r}e.is_leaf=!0}*common_prefix_search(t){let e=this.root;if(e===void 0)return;let n="";for(let r of t){if(n+=r,e=e.children.get(r),e===void 0)return;e.is_leaf&&(yield n)}}},SD=AD,Vd=class n_{constructor(e,n,r,o,s){this.token_id=e,this.node_id=n,this.pos=r,this.length=o,this.score=s,this.prev=null,this.backtrace_score=0}clone(){let e=new n_(this.token_id,this.node_id,this.pos,this.length,this.score);return e.prev=this.prev,e.backtrace_score=this.backtrace_score,e}},vD=class{constructor(t,e,n){this.chars=Array.from(t),this.len=this.chars.length,this.bos_token_id=e,this.eos_token_id=n,this.nodes=[],this.begin_nodes=Array.from({length:this.len+1},()=>[]),this.end_nodes=Array.from({length:this.len+1},()=>[]);let r=new Vd(this.bos_token_id??0,0,0,0,0),o=new Vd(this.eos_token_id??0,1,this.len,0,0);this.nodes.push(r.clone()),this.nodes.push(o.clone()),this.begin_nodes[this.len].push(o),this.end_nodes[0].push(r)}insert(t,e,n,r){let o=this.nodes.length,s=new Vd(r,o,t,e,n);this.begin_nodes[t].push(s),this.end_nodes[t+e].push(s),this.nodes.push(s)}viterbi(){let t=this.len,e=0;for(;e<=t;){if(this.begin_nodes[e].length==0)return[];for(let s of this.begin_nodes[e]){s.prev=null;let a=0,u=null;for(let l of this.end_nodes[e]){let f=l.backtrace_score+s.score;(u===null||f>a)&&(u=l.clone(),a=f)}if(u!==null)s.prev=u,s.backtrace_score=a;else return[]}++e}let n=[],r=this.begin_nodes[t][0].prev;if(r===null)return[];let o=r.clone();for(;o.prev!==null;)n.push(o.clone()),o=o.clone().prev.clone();return n.reverse(),n}piece(t){return this.chars.slice(t.pos,t.pos+t.length).join("")}tokens(){return this.viterbi().map(t=>this.piece(t))}token_ids(){return this.viterbi().map(t=>t.token_id)}},TD=vD;function DD(t){if(t.length===0)throw new Error("Array must not be empty");let e=t[0],n=0;for(let r=1;r<t.length;++r)t[r]<e&&(e=t[r],n=r);return[e,n]}var RD=class extends ru{constructor(t,e){super(t);let n=t.vocab.length;this.vocab=new Array(n),this.scores=new Array(n);for(let r=0;r<n;++r)[this.vocab[r],this.scores[r]]=t.vocab[r];this.unk_token_id=t.unk_id,this.unk_token=this.vocab[t.unk_id],this.tokens_to_ids=new Map(this.vocab.map((r,o)=>[r,o])),this.bos_token=" ",this.bos_token_id=this.tokens_to_ids.get(this.bos_token),this.eos_token=e,this.eos_token_id=this.tokens_to_ids.get(this.eos_token),this.unk_token=this.vocab[this.unk_token_id],this.min_score=DD(this.scores)[0],this.unk_score=this.min_score-10,this.scores[this.unk_token_id]=this.unk_score,this.trie=new SD,this.trie.extend(this.vocab),this.fuse_unk=!0}populate_nodes(t){let e=t.chars,n=1,r=0;for(;r<e.length;){let o=!1,s=[],a=e.slice(r).join(""),u=this.trie.common_prefix_search(a);for(let l of u){s.push(l);let f=this.tokens_to_ids.get(l),d=this.scores[f],h=ET(l);t.insert(r,h,d,f),!o&&h===n&&(o=!0)}o||t.insert(r,n,this.unk_score,this.unk_token_id),r+=n}}tokenize(t){let e=new TD(t,this.bos_token_id,this.eos_token_id);return this.populate_nodes(e),e.tokens()}encode(t){let e=[];for(let n of t){let r=this.tokenize(n);e.push(...r)}return e}},K0=RD,xD=class{constructor(t=(n,r)=>n>r,e=1/0){this._heap=[],this._comparator=t,this._max_size=e}get size(){return this._heap.length}is_empty(){return this.size===0}peek(){return this._heap[0]}push(...t){return this.extend(t)}extend(t){for(let e of t)if(this.size<this._max_size)this._heap.push(e),this._sift_up();else{let n=this._smallest();this._comparator(e,this._heap[n])&&(this._heap[n]=e,this._sift_up_from(n))}return this.size}pop(){let t=this.peek(),e=this.size-1;return e>0&&this._swap(0,e),this._heap.pop(),this._sift_down(),t}replace(t){let e=this.peek();return this._heap[0]=t,this._sift_down(),e}_parent(t){return(t+1>>>1)-1}_left(t){return(t<<1)+1}_right(t){return t+1<<1}_greater(t,e){return this._comparator(this._heap[t],this._heap[e])}_swap(t,e){let n=this._heap[t];this._heap[t]=this._heap[e],this._heap[e]=n}_sift_up(){this._sift_up_from(this.size-1)}_sift_up_from(t){for(;t>0&&this._greater(t,this._parent(t));)this._swap(t,this._parent(t)),t=this._parent(t)}_sift_down(){let t=0;for(;this._left(t)<this.size&&this._greater(this._left(t),t)||this._right(t)<this.size&&this._greater(this._right(t),t);){let e=this._right(t)<this.size&&this._greater(this._right(t),this._left(t))?this._right(t):this._left(t);this._swap(t,e),t=e}}_smallest(){return 2**Math.floor(Math.log2(this.size))-1}},OD=xD,PD=class{constructor(t){this.capacity=t,this.cache=new Map}get(t){if(!this.cache.has(t))return;let e=this.cache.get(t);return this.cache.delete(t),this.cache.set(t,e),e}put(t,e){this.cache.has(t)&&this.cache.delete(t),this.cache.set(t,e),this.cache.size>this.capacity&&this.cache.delete(this.cache.keys().next().value)}clear(){this.cache.clear()}},FD=PD,ID=class extends ru{constructor(t){super(t),this.tokens_to_ids=Yd(t.vocab),this.unk_token_id=this.tokens_to_ids.get(t.unk_token),this.unk_token=t.unk_token,this.vocab=new Array(this.tokens_to_ids.size);for(let[n,r]of this.tokens_to_ids)this.vocab[r]=n;let e=Array.isArray(t.merges[0]);this.merges=e?t.merges:t.merges.map(n=>n.split(" ",2)),this.bpe_ranks=new Map(this.merges.map((n,r)=>[JSON.stringify(n),r])),this.end_of_word_suffix=t.end_of_word_suffix,this.continuing_subword_suffix=t.continuing_subword_suffix??null,this.byte_fallback=this.config.byte_fallback??!1,this.byte_fallback&&(this.text_encoder=new TextEncoder),this.ignore_merges=this.config.ignore_merges??!1,this.max_length_to_cache=256,this.cache_capacity=1e4,this.cache=new FD(this.cache_capacity)}clear_cache(){this.cache.clear()}bpe(t){if(t.length===0)return[];let e=this.cache.get(t);if(e!==void 0)return e;let n=Array.from(t);this.end_of_word_suffix&&(n[n.length-1]+=this.end_of_word_suffix);let r=[];if(n.length>1){let o=new OD((u,l)=>u.score<l.score),s={token:n[0],bias:0,prev:null,next:null},a=s;for(let u=1;u<n.length;++u){let l={bias:u/n.length,token:n[u],prev:a,next:null};a.next=l,this.add_node(o,a),a=l}for(;!o.is_empty();){let u=o.pop();if(u.deleted||!u.next||u.next.deleted)continue;if(u.deleted=!0,u.next.deleted=!0,u.prev){let f={...u.prev};u.prev.deleted=!0,u.prev=f,f.prev?f.prev.next=f:s=f}let l={token:u.token+u.next.token,bias:u.bias,prev:u.prev,next:u.next.next};l.prev?(l.prev.next=l,this.add_node(o,l.prev)):s=l,l.next&&(l.next.prev=l,this.add_node(o,l))}for(let u=s;u!==null;u=u.next)r.push(u.token)}else r=n;if(this.continuing_subword_suffix)for(let o=0;o<r.length-1;++o)r[o]+=this.continuing_subword_suffix;return t.length<this.max_length_to_cache&&this.cache.put(t,r),r}add_node(t,e){let n=this.bpe_ranks.get(JSON.stringify([e.token,e.next.token]));n!==void 0&&(e.score=n+e.bias,t.push(e))}encode(t){let e=[];for(let n of t){if(this.ignore_merges&&this.tokens_to_ids.has(n)){e.push(n);continue}let r=this.bpe(n);for(let o of r)if(this.tokens_to_ids.has(o))e.push(o);else if(this.byte_fallback){let s=Array.from(this.text_encoder.encode(o)).map(a=>`<0x${a.toString(16).toUpperCase().padStart(2,"0")}>`);s.every(a=>this.tokens_to_ids.has(a))?e.push(...s):e.push(this.unk_token)}else e.push(this.unk_token)}return e}},Y0=ID,ND=class extends ru{constructor(t,e){super(t);let n=t.vocab;this.tokens_to_ids=Yd(e.target_lang?n[e.target_lang]:n),this.bos_token=e.bos_token,this.bos_token_id=this.tokens_to_ids.get(this.bos_token),this.eos_token=e.eos_token,this.eos_token_id=this.tokens_to_ids.get(this.eos_token),this.pad_token=e.pad_token,this.pad_token_id=this.tokens_to_ids.get(this.pad_token),this.unk_token=e.unk_token,this.unk_token_id=this.tokens_to_ids.get(this.unk_token),this.vocab=new Array(this.tokens_to_ids.size);for(let[r,o]of this.tokens_to_ids)this.vocab[o]=r}encode(t){return t}},BD=ND;function MD(t,e){switch(t.type){case"WordPiece":return new J0(t);case"Unigram":return new K0(t,e.eos_token);case"BPE":return new Y0(t);default:if(t.vocab)return Array.isArray(t.vocab)?new K0(t,e.eos_token):Object.hasOwn(t,"continuing_subword_prefix")&&Object.hasOwn(t,"unk_token")?Object.hasOwn(t,"merges")?new Y0(t):new J0(t):new BD(t,{target_lang:e.target_lang,bos_token:e.bos_token,eos_token:e.eos_token,pad_token:e.pad_token,unk_token:e.unk_token});throw new Error(`Unknown TokenizerModel type: ${t?.type}`)}}var LD=MD,jD=class extends ys{constructor(t){super(),this.config=t}_call(t,...e){return this.post_process(t,...e)}},_s=jD,UD=class extends _s{post_process(t,e=null,n=!0){let r=e===null?this.config.single:this.config.pair,o=[],s=[];for(let a of r)"SpecialToken"in a?n&&(o.push(a.SpecialToken.id),s.push(a.SpecialToken.type_id)):"Sequence"in a&&(a.Sequence.id==="A"?(o=Nt(o,t),s=Nt(s,new Array(t.length).fill(a.Sequence.type_id))):a.Sequence.id==="B"&&(o=Nt(o,e),s=Nt(s,new Array(e.length).fill(a.Sequence.type_id))));return{tokens:o,token_type_ids:s}}},$D=UD,qD=class extends _s{post_process(t,e=null){return{tokens:e?Nt(t,e):t}}},zD=qD,HD=class extends _s{constructor(t){super(t),this.sep=t.sep,this.cls=t.cls}post_process(t,e=null,n=!0){n&&(t=Nt([this.cls[0]],t,[this.sep[0]]));let r=new Array(t.length).fill(0);if(e){let o=[],s=n?[this.sep[0]]:[];t=Nt(t,o,e,s),r=Nt(r,new Array(e.length+o.length+s.length).fill(1))}return{tokens:t,token_type_ids:r}}},WD=HD,GD=class extends _s{constructor(t){super(t),this.sep=t.sep,this.cls=t.cls}post_process(t,e,n=!0){n&&(t=Nt([this.cls[0]],t,[this.sep[0]]));let r=new Array(t.length).fill(0);if(e){let o=n?[this.sep[0]]:[],s=n?[this.sep[0]]:[];t=Nt(t,o,e,s),r=Nt(r,new Array(e.length+o.length+s.length).fill(1))}return{tokens:t,token_type_ids:r}}},JD=GD,VD=class extends _s{constructor(t){super(t),this.processors=(t.processors??[]).map(e=>r_(e))}post_process(t,e=null,n=!0){let r={tokens:t};for(let o of this.processors)r=o.post_process(r.tokens,e,n);return r}},KD=VD;function YD(t){if(t===null)return null;switch(t.type){case"TemplateProcessing":return new $D(t);case"ByteLevel":return new zD(t);case"BertProcessing":return new WD(t);case"RobertaProcessing":return new JD(t);case"Sequence":return new KD(t);default:throw new Error(`Unknown PostProcessor type: ${t.type}`)}}var r_=YD,QD=class extends ys{constructor(t){super(),this.config=t,this.added_tokens=[],this.end_of_word_suffix=null,this.trim_offsets="trim_offsets"in t?t.trim_offsets:!1}_call(t){return this.decode(t)}decode(t){return this.decode_chain(t).join("")}},ln=QD,XD=class extends ln{constructor(t){super(t),this.byte_decoder=gT,this.text_decoder=new TextDecoder("utf-8",{fatal:!1,ignoreBOM:!0}),this.end_of_word_suffix=null}convert_tokens_to_string(t){let e=t.join(""),n=new Uint8Array([...e].map(r=>this.byte_decoder[r]));return this.text_decoder.decode(n)}decode_chain(t){let e=[],n=[];for(let r of t)this.added_tokens.find(o=>o.content===r)!==void 0?(n.length>0&&(e.push(this.convert_tokens_to_string(n)),n=[]),e.push(r)):n.push(r);return n.length>0&&e.push(this.convert_tokens_to_string(n)),e}},ZD=XD,eR=class extends ln{constructor(t){super(t),this.cleanup=t.cleanup}decode_chain(t){return t.map((e,n)=>{if(n!==0){let r=this.config.prefix;r&&e.startsWith(r)?e=e.replace(r,""):e=" "+e}return this.cleanup&&(e=Kd(e)),e})}},tR=eR,nR=class extends ln{constructor(t){super(t),this.replacement=t.replacement??"\u2581"}decode_chain(t){let e=[];for(let n=0;n<t.length;++n){let r=t[n].replaceAll(this.replacement," ");n==0&&r.startsWith(" ")&&(r=r.substring(1)),e.push(r)}return e}},rR=nR,oR=class extends ln{constructor(t){super(t),this.suffix=t.suffix??""}decode_chain(t){return t.map((e,n)=>e.replaceAll(this.suffix,n===t.length-1?"":" "))}},sR=oR,iR=class extends ln{constructor(t){super(t),this.pad_token=t.pad_token??"",this.word_delimiter_token=t.word_delimiter_token??"",this.cleanup=t.cleanup}convert_tokens_to_string(t){if(t.length===0)return"";let e=[t[0]];for(let r=1;r<t.length;++r)t[r]!==e.at(-1)&&e.push(t[r]);let n=e.filter(r=>r!==this.pad_token).join("");return this.cleanup&&(n=Kd(n).replaceAll(this.word_delimiter_token," ").trim()),n}decode_chain(t){return[this.convert_tokens_to_string(t)]}},aR=iR,uR=class extends ln{constructor(t){super(t),this.decoders=(t.decoders??[]).map(e=>o_(e))}decode_chain(t){return this.decoders.reduce((e,n)=>n.decode_chain(e),t)}},cR=uR,lR=class extends ln{decode_chain(t){let e=tu(this.config.pattern),n=this.config.content??"";return e===null?t:t.map(r=>r.replaceAll(e,n))}},dR=lR,fR=class extends ln{decode_chain(t){return[t.join("")]}},hR=fR,pR=class extends ln{constructor(t){super(t),this.content=t.content??"",this.start=t.start??0,this.stop=t.stop??0}decode_chain(t){return t.map(e=>{let n=0;for(let o=0;o<this.start&&e[o]===this.content;++o)n=o+1;let r=e.length;for(let o=0;o<this.stop;++o){let s=e.length-o-1;if(e[s]===this.content){r=s;continue}else break}return e.slice(n,r)})}},mR=pR,gR=class extends ln{constructor(t){super(t),this.text_decoder=new TextDecoder}decode_chain(t){let e=[],n=[];for(let r of t){let o=null;if(r.length===6&&r.startsWith("<0x")&&r.endsWith(">")){let s=parseInt(r.slice(3,5),16);isNaN(s)||(o=s)}if(o!==null)n.push(o);else{if(n.length>0){let s=this.text_decoder.decode(Uint8Array.from(n));e.push(s),n=[]}e.push(r)}}if(n.length>0){let r=this.text_decoder.decode(Uint8Array.from(n));e.push(r),n=[]}return e}},yR=gR;function _R(t){if(t===null)return null;switch(t.type){case"ByteLevel":return new ZD(t);case"WordPiece":return new tR(t);case"Metaspace":return new rR(t);case"BPEDecoder":return new sR(t);case"CTC":return new aR(t);case"Sequence":return new cR(t);case"Replace":return new dR(t);case"Fuse":return new hR(t);case"Strip":return new mR(t);case"ByteFallback":return new yR(t);default:throw new Error(`Unknown Decoder type: ${t.type}`)}}var o_=_R,bR=class{constructor(t,e){let n=G0(t,"Tokenizer",["model","decoder","post_processor","pre_tokenizer","normalizer"]);if(n)throw new Error(n);let r=G0(e,"Config");if(r)throw new Error(r);this.tokenizer=t,this.config=e,this.normalizer=Z0(this.tokenizer.normalizer),this.pre_tokenizer=e_(this.tokenizer.pre_tokenizer),this.model=LD(this.tokenizer.model,this.config),this.post_processor=r_(this.tokenizer.post_processor),this.decoder=o_(this.tokenizer.decoder),this.special_tokens=[],this.all_special_ids=[],this.added_tokens=[],this.tokenizer.added_tokens.forEach(o=>{let s=new pT(o);this.added_tokens.push(s),this.model.tokens_to_ids.set(s.content,s.id),this.model.vocab[s.id]=s.content,s.special&&(this.special_tokens.push(s.content),this.all_special_ids.push(s.id))}),(this.config.additional_special_tokens??[]).forEach(o=>{this.special_tokens.includes(o)||this.special_tokens.push(o)}),this.decoder&&(this.decoder.added_tokens=this.added_tokens,this.decoder.end_of_word_suffix=this.model.end_of_word_suffix),this.added_tokens_splitter=new fT(this.added_tokens.map(o=>o.content)),this.added_tokens_map=new Map(this.added_tokens.map(o=>[o.content,o])),this.remove_space=this.config.remove_space,this.clean_up_tokenization_spaces=this.config.clean_up_tokenization_spaces??!0,this.do_lowercase_and_remove_accent=this.config.do_lowercase_and_remove_accent??!1}encode(t,{text_pair:e=null,add_special_tokens:n=!0,return_token_type_ids:r=null}={}){let{tokens:o,token_type_ids:s}=this.tokenize_helper(t,{text_pair:e,add_special_tokens:n}),a=this.model.convert_tokens_to_ids(o),u={ids:a,tokens:o,attention_mask:new Array(a.length).fill(1)};return r&&s&&(u.token_type_ids=s),u}decode(t,e={}){if(!Array.isArray(t)||t.length===0||!wT(t[0]))throw Error("token_ids must be a non-empty array of integers.");let n=this.model.convert_ids_to_tokens(t);e.skip_special_tokens&&(n=n.filter(o=>!this.special_tokens.includes(o)));let r=this.decoder?this.decoder(n):n.join(" ");return this.decoder&&this.decoder.end_of_word_suffix&&(r=r.replaceAll(this.decoder.end_of_word_suffix," "),e.skip_special_tokens&&(r=r.trim())),(e.clean_up_tokenization_spaces??this.clean_up_tokenization_spaces)&&(r=Kd(r)),r}tokenize(t,{text_pair:e=null,add_special_tokens:n=!1}={}){return this.tokenize_helper(t,{text_pair:e,add_special_tokens:n}).tokens}encode_text(t){if(t===null)return null;let e=this.added_tokens_splitter.split(t);return e.forEach((n,r)=>{let o=this.added_tokens_map.get(n);o&&(o.lstrip&&r>0&&(e[r-1]=e[r-1].trimEnd()),o.rstrip&&r<e.length-1&&(e[r+1]=e[r+1].trimStart()))}),e.flatMap((n,r)=>{if(n.length===0)return[];if(this.added_tokens_map.has(n))return[n];if(this.remove_space===!0&&(n=n.trim().split(/\s+/).join(" ")),this.do_lowercase_and_remove_accent&&(n=kT(n)),this.normalizer!==null&&(n=this.normalizer(n)),n.length===0)return[];let o=this.pre_tokenizer!==null?this.pre_tokenizer(n,{section_index:r}):[n];return this.model(o)})}tokenize_helper(t,{text_pair:e=null,add_special_tokens:n=!0}){let r=this.encode_text(t),o=this.encode_text(e||null);return this.post_processor?this.post_processor(r,o,n):{tokens:Nt(r??[],o??[])}}token_to_id(t){return this.model.tokens_to_ids.get(t)}id_to_token(t){return this.model.vocab[t]}get_added_tokens_decoder(){let t=new Map;for(let e of this.added_tokens)t.set(e.id,e);return t}},s_=bR;var iu=class{type="huggingface";name;modelId;logger;options;tokenizer=null;cacheDir;safeModelName;constructor(e,n,r={}){this.modelId=e,this.logger=n,this.options=r,this.cacheDir=r.cacheDir||ou(CR(),".claude-code-router",".huggingface"),this.safeModelName=e.replace(/\//g,"_").replace(/[^a-zA-Z0-9_-]/g,"_"),this.name=`huggingface-${e.split("/").pop()}`}getCachePaths(){let e=ou(this.cacheDir,this.safeModelName);return{modelDir:e,tokenizerJson:ou(e,"tokenizer.json"),tokenizerConfig:ou(e,"tokenizer_config.json")}}ensureDir(e){Qd(e)||wR(e,{recursive:!0})}async loadFromCache(){try{let e=this.getCachePaths();if(!Qd(e.tokenizerJson)||!Qd(e.tokenizerConfig))return null;let[n,r]=await Promise.all([su.readFile(e.tokenizerJson,"utf-8"),su.readFile(e.tokenizerConfig,"utf-8")]);return{tokenizerJson:JSON.parse(n),tokenizerConfig:JSON.parse(r)}}catch(e){return this.logger?.warn(`Failed to load from cache: ${e.message}`),null}}async downloadAndCache(){let e=this.getCachePaths(),n={json:`https://huggingface.co/${this.modelId}/resolve/main/tokenizer.json`,config:`https://huggingface.co/${this.modelId}/resolve/main/tokenizer_config.json`};this.logger?.info(`Downloading tokenizer files for ${this.modelId}`);let r=new AbortController,o=setTimeout(()=>r.abort(),this.options.timeout||3e4);try{let[s,a]=await Promise.all([fetch(n.json,{signal:r.signal}),fetch(n.config,{signal:r.signal})]);if(!s.ok)throw new Error(`Failed to fetch tokenizer.json: ${s.statusText}`);let[u,l]=await Promise.all([s.json(),a.ok?a.json():Promise.resolve({})]);return this.ensureDir(e.modelDir),await Promise.all([su.writeFile(e.tokenizerJson,JSON.stringify(u,null,2)),su.writeFile(e.tokenizerConfig,JSON.stringify(l,null,2))]),{tokenizerJson:u,tokenizerConfig:l}}finally{clearTimeout(o)}}async initialize(){try{this.logger?.info(`Initializing HuggingFace tokenizer: ${this.modelId}`);let e=this.getCachePaths();this.ensureDir(this.cacheDir);let n=await this.loadFromCache()||await this.downloadAndCache();this.tokenizer=new s_(n.tokenizerJson,n.tokenizerConfig),this.logger?.info(`Tokenizer initialized: ${this.name}`)}catch(e){throw this.logger?.error(`Failed to initialize tokenizer: ${e.message}`),new Error(`Failed to initialize HuggingFace tokenizer for ${this.modelId}: ${e.message}`)}}async countTokens(e){if(!this.tokenizer)throw new Error("Tokenizer not initialized");try{let n=this.extractTextFromRequest(e);return this.tokenizer.encode(n).ids.length}catch(n){throw this.logger?.error(`Error counting tokens: ${n.message}`),n}}isInitialized(){return this.tokenizer!==null}encodeText(e){if(!this.tokenizer)throw new Error("Tokenizer not initialized");return this.tokenizer.encode(e).ids}dispose(){this.tokenizer=null}extractTextFromRequest(e){let n=[],{messages:r,system:o,tools:s}=e;if(Array.isArray(r)){for(let a of r)if(typeof a.content=="string")n.push(a.content);else if(Array.isArray(a.content))for(let u of a.content)u.type==="text"&&u.text?n.push(u.text):u.type==="tool_use"&&u.input?n.push(JSON.stringify(u.input)):u.type==="tool_result"&&n.push(typeof u.content=="string"?u.content:JSON.stringify(u.content))}if(typeof o=="string")n.push(o);else if(Array.isArray(o)){for(let a of o)if(a.type==="text"){if(typeof a.text=="string")n.push(a.text);else if(Array.isArray(a.text))for(let u of a.text)u&&n.push(u)}}if(s)for(let a of s)a.name&&n.push(a.name),a.description&&n.push(a.description),a.input_schema&&n.push(JSON.stringify(a.input_schema));return n.join(" ")}};var au=class{type="api";name;config;logger;options;constructor(e,n,r={}){if(!e.url||!e.apiKey)throw new Error("API tokenizer requires url and apiKey");this.config={url:e.url,apiKey:e.apiKey,requestFormat:e.requestFormat||"standard",responseField:e.responseField||"token_count",headers:e.headers||{}},this.logger=n,this.options=r;try{let o=new URL(e.url);this.name=`api-${o.hostname}`}catch{this.name=`api-${e.url}`}}async initialize(){try{new URL(this.config.url)}catch{throw new Error(`Invalid API URL: ${this.config.url}`)}}async countTokens(e){try{let n=this.formatRequestBody(e),r={"Content-Type":"application/json",Authorization:`Bearer ${this.config.apiKey}`,...this.config.headers},o=new AbortController,s=setTimeout(()=>o.abort(),this.options.timeout||3e4),a=await fetch(this.config.url,{method:"POST",headers:r,body:JSON.stringify(n),signal:o.signal});if(clearTimeout(s),!a.ok)throw new Error(`API tokenizer request failed: ${a.status} ${a.statusText}`);let u=await a.json();return this.extractTokenCount(u)}catch(n){throw n.name==="AbortError"?new Error("API tokenizer request timed out"):n}}isInitialized(){return!0}dispose(){}formatRequestBody(e){switch(this.config.requestFormat){case"standard":return e;case"openai":return{model:"gpt-3.5-turbo",messages:this.extractMessagesAsOpenAIFormat(e)};case"anthropic":return{messages:e.messages||[],system:e.system,tools:e.tools};case"custom":return{text:this.extractConcatenatedText(e)};default:return e}}extractMessagesAsOpenAIFormat(e){return e.messages?e.messages.map(n=>({role:n.role,content:this.extractTextFromMessage(n)})):[]}extractTextFromMessage(e){return typeof e.content=="string"?e.content:Array.isArray(e.content)?e.content.map(n=>n.type==="text"&&n.text?n.text:n.type==="tool_use"&&n.input?JSON.stringify(n.input):n.type==="tool_result"?typeof n.content=="string"?n.content:JSON.stringify(n.content):"").join(" "):""}extractConcatenatedText(e){let n=[];return e.messages&&e.messages.forEach(r=>{n.push(this.extractTextFromMessage(r))}),typeof e.system=="string"?n.push(e.system):Array.isArray(e.system)&&e.system.forEach(r=>{r.type==="text"&&(typeof r.text=="string"?n.push(r.text):Array.isArray(r.text)&&r.text.forEach(o=>{o&&n.push(o)}))}),e.tools&&e.tools.forEach(r=>{r.name&&n.push(r.name),r.description&&n.push(r.description),r.input_schema&&n.push(JSON.stringify(r.input_schema))}),n.join(" ")}extractTokenCount(e){try{let n=this.config.responseField,r=n.split("."),o=e;for(let s of r){if(o==null)throw new Error(`Field path '${n}' not found in response`);o=o[s]}if(typeof o!="number")throw new Error(`Expected number at field path '${n}', got ${typeof o}`);return o}catch(n){throw this.logger?.error(`Failed to extract token count from API response: ${n.message}. Response: ${JSON.stringify(e)}`),new Error(`Invalid response from API tokenizer: ${n.message}`)}}};var wo=class{tokenizers=new Map;configService;logger;options;fallbackTokenizer;constructor(e,n,r={}){this.configService=e,this.logger=n,this.options={timeout:r.timeout??3e4,...r}}async initialize(){try{this.fallbackTokenizer=new ms("cl100k_base"),await this.fallbackTokenizer.initialize(),this.tokenizers.set("fallback",this.fallbackTokenizer),this.logger?.info("TokenizerService initialized successfully")}catch(e){throw this.logger?.error(`TokenizerService initialization error: ${e.message}`),e}}async getTokenizer(e){let n=this.getCacheKey(e);if(this.tokenizers.has(n))return this.tokenizers.get(n);let r;try{switch(e.type){case"tiktoken":r=new ms(e.encoding||"cl100k_base");break;case"huggingface":this.logger?.info(`Initializing HuggingFace tokenizer for model: ${e.model}`),r=new iu(e.model,this.logger,{timeout:this.options.timeout});break;case"api":r=new au(e,this.logger,{timeout:this.options.timeout});break;default:throw new Error(`Unknown tokenizer type: ${e.type}`)}return this.logger?.info(`Calling initialize() on ${e.type} tokenizer...`),await r.initialize(),this.tokenizers.set(n,r),this.logger?.info(`Tokenizer initialized successfully: ${e.type} (${n})`),r}catch(o){return this.logger?.error(`Failed to initialize ${e.type} tokenizer: ${o.message}`),this.logger?.error(`Error stack: ${o.stack}`),this.fallbackTokenizer||await this.initialize(),this.fallbackTokenizer}}async countTokens(e,n){let r=n?await this.getTokenizer(n):this.fallbackTokenizer;return{tokenCount:await r.countTokens(e),tokenizerUsed:r.name,cached:!1}}getTokenizerConfigForModel(e,n){let o=(this.configService.get("providers")||[]).find(s=>s.name===e);if(o?.tokenizer)return o.tokenizer.models?.[n]?o.tokenizer.models[n]:o.tokenizer.default}dispose(){this.tokenizers.forEach(e=>{try{e.dispose()}catch(n){this.logger?.error(`Error disposing tokenizer: ${n}`)}}),this.tokenizers.clear()}getCacheKey(e){switch(e.type){case"tiktoken":return`tiktoken:${e.encoding||"cl100k_base"}`;case"huggingface":return`hf:${e.model}`;case"api":return`api:${e.url}`;default:return`unknown:${JSON.stringify(e)}`}}};Un();var dn=class{async fetchJson(e,n,r,o,s){let a=s||n.apiKey;if(!a)return null;let u={method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${a}`},signal:AbortSignal.timeout(r)};if(o)try{let{ProxyAgent:l}=await import("undici");u.dispatcher=new l(new URL(o).toString())}catch{}try{let l=await fetch(e,u);return l.ok?await l.json():null}catch{return null}}hasQuotaData(e){return e.totalBalance!==void 0||e.usedBalance!==void 0||e.remainingBalance!==void 0||e.usedDailyBalance!==void 0||e.limitDaily!==void 0||e.resetTime!==void 0}},Xd=class extends dn{async queryQuota(e,n,r){let o=await this.fetchJson("https://api.deepseek.com/user/balance",e,n,r),a=(Array.isArray(o?.balance_infos)?o.balance_infos:[]).find(l=>_e(l?.total_balance)!==void 0);if(!a)return null;let u=_e(a.total_balance);return u===void 0?null:{totalBalance:u,currency:typeof a.currency=="string"?a.currency:void 0}}},Zd=class extends dn{async queryQuota(e,n,r){let s=(await this.fetchJson("https://openrouter.ai/api/v1/key",e,n,r))?.data;if(!s||typeof s!="object")return null;let a={},u=_e(s.limit),l=_e(s.limit_remaining),f=_e(s.usage),d=_e(s.usage_daily);return u!==void 0&&(a.totalBalance=u),l!==void 0&&(a.remainingBalance=l),f!==void 0&&(a.usedBalance=f),d!==void 0&&(a.usedDailyBalance=d),this.hasQuotaData(a)?a:null}},ef=class extends dn{async queryQuota(e,n,r){let o=xR(e.baseUrl),a=(await this.fetchJson(o,e,n,r))?.data;if(!a||typeof a!="object")return null;let u={},l=_e(a.totalBalance),f=_e(a.balance);return l!==void 0&&(u.totalBalance=l),f!==void 0&&(u.remainingBalance=f),l!==void 0&&f!==void 0&&(u.usedBalance=Math.max(0,l-f)),this.hasQuotaData(u)?u:null}},tf=class extends dn{async queryQuota(e,n,r){if(!e.apiKey)return null;let s={method:"GET",headers:{Accept:"application/json",Authorization:e.apiKey.trim()},signal:AbortSignal.timeout(n)};if(r)try{let{ProxyAgent:a}=await import("undici");s.dispatcher=new a(new URL(r).toString())}catch{}try{let a=await fetch("https://api.z.ai/api/monitor/usage/quota/limit",s);if(!a.ok)return null;let u=await a.json(),l=Array.isArray(u?.data?.limits)?u.data.limits:[],f=null,d=null,h=null;for(let C of l)C.type==="TOKENS_LIMIT"?C.unit===3?f=C:C.unit===6?d=C:f||(f=C):C.type==="TIME_LIMIT"&&(h=C);let m={};if(f){let C=_e(f.currentValue),w=_e(f.usage),y=_e(f.remaining),g=_e(f.percentage);C!==void 0?m.usedDailyBalance=C:g!==void 0&&(m.usedDailyBalance=g,m.limitDaily=100),w!==void 0?m.limitDaily=w:C!==void 0&&y!==void 0&&(m.limitDaily=C+y),f.nextResetTime&&(m.resetTime=new Date(f.nextResetTime).toISOString())}if(d){let C=_e(d.currentValue),w=_e(d.usage),y=_e(d.remaining),g=_e(d.percentage);C!==void 0?m.usedBalance=C:g!==void 0&&(m.usedBalance=g,m.totalBalance=100),w!==void 0?m.totalBalance=w:C!==void 0&&y!==void 0&&(m.totalBalance=C+y),d.nextResetTime&&!m.resetTime&&(m.resetTime=new Date(d.nextResetTime).toISOString())}if(h){if(m.usedDailyBalance===void 0){let C=_e(h.currentValue);C!==void 0&&(m.usedDailyBalance=C)}if(m.limitDaily===void 0){let C=_e(h.usage),w=_e(h.currentValue),y=_e(h.remaining);C!==void 0?m.limitDaily=C:w!==void 0&&y!==void 0&&(m.limitDaily=w+y)}h.nextResetTime&&!m.resetTime&&(m.resetTime=new Date(h.nextResetTime).toISOString())}return this.hasQuotaData(m)?m:null}catch{return null}}},nf=class extends dn{async queryQuota(e,n,r){if(!e.quotaToken)return null;let o={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",Origin:"https://bailian.console.aliyun.com",Referer:"https://bailian.console.aliyun.com/cn-beijing",Cookie:e.quotaToken},signal:AbortSignal.timeout(n)};if(r)try{let{ProxyAgent:u}=await import("undici");o.dispatcher=new u(new URL(r).toString())}catch{}let s=JSON.stringify({Api:"zeldaEasy.broadscope-bailian.codingPlan.queryCodingPlanInstanceInfoV2",V:"1.0",Data:{queryCodingPlanInstanceInfoRequest:{commodityCode:"sfm_codingplan_public_cn",onlyLatestOne:!0},cornerstoneParam:{feTraceId:`ccr-${Date.now()}`,feURL:"https://bailian.console.aliyun.com/cn-beijing",protocol:"V2",console:"ONE_CONSOLE",productCode:"p_efm",switchAgent:10736808,switchUserType:3,domain:"bailian.console.aliyun.com",consoleSite:"BAILIAN_ALIYUN",userNickName:"",userPrincipalName:"",xsp_lang:"zh-CN"}}}),a=new URLSearchParams({params:s,region:"cn-beijing"}).toString();try{let u=await fetch("https://bailian-cs.console.aliyun.com/data/api.json?action=BroadScopeAspnGateway&product=sfm_bailian&api=zeldaEasy.broadscope-bailian.codingPlan.queryCodingPlanInstanceInfoV2",{...o,body:a});if(!u.ok)return null;let f=(await u.json())?.data?.DataV2?.data?.data?.codingPlanInstanceInfos;if(!Array.isArray(f)||f.length===0)return null;let d=f[0]?.codingPlanQuotaInfo;if(!d)return null;let h={},m=_e(d.per5HourUsedQuota),C=_e(d.per5HourTotalQuota);m!==void 0&&(h.usedDailyBalance=m),C!==void 0&&(h.limitDaily=C);let w=_e(d.perWeekUsedQuota),y=_e(d.perWeekTotalQuota);return w!==void 0&&(h.usedBalance=w),y!==void 0&&(h.totalBalance=y),this.hasQuotaData(h)?h:null}catch{return null}}},rf=class extends dn{async queryQuota(e,n,r){if(!e.quotaToken)return null;let s={method:"GET",headers:{Accept:"application/json","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",Origin:"https://maas.xfyun.cn",Referer:"https://maas.xfyun.cn/packageSubscription",Authorization:(i_(e.quotaToken,"atp-auth-token")||i_(e.quotaToken,"tenantToken")||e.quotaToken).trim(),Cookie:e.quotaToken},signal:AbortSignal.timeout(n)};if(r)try{let{ProxyAgent:a}=await import("undici");s.dispatcher=new a(new URL(r).toString())}catch{}try{let a=await fetch("https://maas.xfyun.cn/api/v1/gpt-finetune/coding-plan/list?page=1&size=10",s);if(!a.ok)return null;let u=await a.json();if(u?.succeed===!1||u?.failed===!0)return null;let l=OR(u,e.apiKey),f=l?.codingPlanUsageDTO||l?.usage||l;if(!f||typeof f!="object")return null;let d={},h=_e(f.rp5hUsage),m=_e(f.rp5hLimit);h!==void 0&&(d.usedDailyBalance=h),m!==void 0&&(d.limitDaily=m);let C=_e(f.rpwUsage),w=_e(f.rpwLimit);return C!==void 0&&(d.usedBalance=C),w!==void 0&&(d.totalBalance=w),d.remainingBalance===void 0&&w!==void 0&&C!==void 0&&(d.remainingBalance=Math.max(0,w-C)),this.hasQuotaData(d)?d:null}catch{return null}}},of=class extends dn{async queryQuota(e,n,r){let o=e.quotaToken||e.apiKey;if(!o)return null;let s={method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${o.trim()}`},signal:AbortSignal.timeout(n)};if(r)try{let{ProxyAgent:a}=await import("undici");s.dispatcher=new a(new URL(r).toString())}catch{}try{let a=await fetch("https://api.kimi.com/coding/v1/usages",s);if(!a.ok)return null;let u=await a.json(),l={},f=Array.isArray(u?.limits)?u.limits:[];if(f.length>0&&f[0]?.detail){let h=f[0].detail,m=_e(h.limit),C=_e(h.remaining),w=h.resetTime;m!==void 0&&C!==void 0&&(l.usedDailyBalance=Math.max(0,m-C),l.limitDaily=m),w&&(l.resetTime=new Date(w).toISOString())}let d=u?.usage;if(d){let h=_e(d.limit),m=_e(d.remaining),C=_e(d.used),w=d.resetTime;h!==void 0&&(l.totalBalance=h,C!==void 0?l.usedBalance=C:m!==void 0&&(l.usedBalance=Math.max(0,h-m),l.remainingBalance=m)),w&&(l.resetTime7d=new Date(w).toISOString(),l.resetTime||(l.resetTime=l.resetTime7d))}return this.hasQuotaData(l)?l:null}catch{return null}}},sf=class extends dn{async queryQuota(e,n,r){let o=e.quotaToken||e.apiKey;if(!o)return null;let s=cf(e.baseUrl)||"api.minimaxi.com",a=s.endsWith(".minimax.io")||s==="minimax.io"?"api.minimax.io":"api.minimaxi.com";try{let u=[`https://${a}/v1/token_plan/remains`,`https://${a}/v1/api/openplatform/coding_plan/remains`],l=null;for(let S of u)if(l=await this.fetchJson(S,e,n,r,o.trim()),l)break;if(!l)return null;if(l?.base_resp){let S=l.base_resp.status_code;if(S!==void 0&&S!==0)return null}let f=Array.isArray(l?.model_remains)?l.model_remains:[];if(f.length===0)return null;let d=f[0],h={},m=_e(d.current_interval_total_count),C=_e(d.current_interval_usage_count),w=_e(d.current_interval_remaining_percent),y=_e(d.end_time);m!==void 0&&C!==void 0&&m>0?(h.usedDailyBalance=Math.max(0,m-C),h.limitDaily=m):w!==void 0&&(h.limitDaily=100,h.usedDailyBalance=Math.max(0,100-w)),y&&(h.resetTime=new Date(y).toISOString());let g=_e(d.current_weekly_total_count),_=_e(d.current_weekly_usage_count),E=_e(d.current_weekly_remaining_percent),b=_e(d.weekly_end_time);return g!==void 0&&_!==void 0&&g>0?(h.usedBalance=Math.max(0,g-_),h.remainingBalance=_,h.totalBalance=g):E!==void 0&&(h.totalBalance=100,h.usedBalance=Math.max(0,100-E),h.remainingBalance=E),b&&!h.resetTime&&(h.resetTime=new Date(b).toISOString()),this.hasQuotaData(h)?h:null}catch{return null}}},ER=new Xd,kR=new Zd,AR=new ef,SR=new tf,vR=new nf,TR=new rf,DR=new of,RR=new sf;function uf(t){let e=cf(t);return e?e==="kimi.com"||e.endsWith(".kimi.com")||e==="moonshot.cn"||e.endsWith(".moonshot.cn")?DR:e==="minimaxi.com"||e.endsWith(".minimaxi.com")||e==="minimax.io"||e.endsWith(".minimax.io")?RR:e==="deepseek.com"||e.endsWith(".deepseek.com")?ER:e==="openrouter.ai"||e.endsWith(".openrouter.ai")?kR:e==="siliconflow.com"||e.endsWith(".siliconflow.com")||e==="siliconflow.cn"||e.endsWith(".siliconflow.cn")?AR:e==="bigmodel.cn"||e.endsWith(".bigmodel.cn")?SR:e==="dashscope.aliyuncs.com"||e.endsWith(".dashscope.aliyuncs.com")?vR:e==="xf-yun.com"||e.endsWith(".xf-yun.com")||e==="xfyun.cn"||e.endsWith(".xfyun.cn")||e==="xfyun.com"||e.endsWith(".xfyun.com")?TR:null:null}function xR(t){let e=cf(t);return e?.endsWith(".siliconflow.cn")||e==="siliconflow.cn"?"https://api.siliconflow.cn/v1/user/info":"https://api.siliconflow.com/v1/user/info"}function OR(t,e){let n=af(t);if(n.length===0)return null;let r=String(e||"").split(":").map(s=>s.trim()).filter(Boolean);return n.find(s=>{let a=s?.codingPlanAppCredentialDTO||s?.appCredential||s,u=String(a?.apiKey||a?.api_key||"").trim();return u&&r.some(l=>l.includes(u)||u.includes(l))})||n[0]}function af(t){return!t||typeof t!="object"?[]:!Array.isArray(t)&&t.codingPlanUsageDTO?[t]:Array.isArray(t)?t.flatMap(e=>af(e)):Object.values(t).flatMap(e=>af(e))}function i_(t,e){let n=t.match(new RegExp(`(?:^|;\\s*)${e}=([^;]+)`));return n?decodeURIComponent(n[1]):void 0}function cf(t){try{return new URL(t).hostname.toLowerCase()}catch{return null}}function _e(t){if(typeof t=="number")return Number.isFinite(t)?t:void 0;if(typeof t!="string")return;let e=t.trim().replace(/,/g,"");if(!e)return;let n=Number(e);return Number.isFinite(n)?n:void 0}var PR="x-claude-code-router-source",FR="x-claude-code-router-version";function a_(t){return{[PR]:t,[FR]:oi}}var IR={enabled:!0,quotaProbeIntervalMinutes:10,probeTimeoutMs:15e3,initialDelayMs:5e3,excludeProviders:[]};function NR(t){return t===!0||t==="true"||t===1||t==="1"}function BR(t){let e=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0");return`${e}-${n}-${r}`}function MR(t){try{let e=new URL(t),n=e.pathname;return n.endsWith("/v1/messages")?n=n.slice(0,-12):n.endsWith("/messages")?n=n.slice(0,-9):n.endsWith("/v1/chat/completions")?n=n.slice(0,-20):n.endsWith("/chat/completions")&&(n=n.slice(0,-17)),n.endsWith("/v1")||(n=n.endsWith("/")?`${n}v1`:`${n}/v1`),e.pathname=`${n}/models`,e.toString()}catch{return null}}function LR(t){try{let e=new URL(t).hostname.toLowerCase();return e.includes("moonshot")||e.includes("kimi")}catch{return!1}}async function lf(t,e,n){let r=MR(t.baseUrl);if(!r)return{success:!1,error:"Cannot derive models endpoint from baseUrl"};try{let o={method:"GET",headers:{Authorization:`Bearer ${t.apiKey}`},signal:AbortSignal.timeout(e)};if(n)try{let{ProxyAgent:u}=await import("undici");o.dispatcher=new u(new URL(n).toString())}catch{}let s=await fetch(r,o);if(s.headers&&Io(t.name,t.baseUrl,s.headers),s.ok)return{success:!0,headers:s.headers};if(s.status===429)return{success:!1,error:`HTTP 429: ${(await s.text().catch(()=>"")).slice(0,100)||"Rate limited"}`,headers:s.headers};if(s.status>=400&&s.status<500)return{success:!0,headers:s.headers};let a=await s.text().catch(()=>"");return{success:!1,error:`HTTP ${s.status}: ${a.slice(0,100)}`,headers:s.headers}}catch(o){return{success:!1,error:o?.message||o?.toString()||"Unknown probe error"}}}async function jR(t,e,n,r){let o=t.wakeupModel||(Array.isArray(t.models)?t.models[0]:void 0);if(!o)return{success:!1,error:"No models configured for provider"};let s=t.baseUrl,a=t.baseUrl.includes("/messages")||o.includes("claude");try{let u={"Content-Type":"application/json",...a_("scheduled-wakeup")};a?(u["x-api-key"]=t.apiKey,u["anthropic-version"]="2023-06-01"):u.Authorization=`Bearer ${t.apiKey}`;let l={method:"POST",headers:u,body:JSON.stringify({model:o,messages:[{role:"user",content:"Wake up and acknowledge with a short greeting."}],max_tokens:10}),signal:AbortSignal.timeout(e)};if(n)try{let{ProxyAgent:h}=await import("undici");l.dispatcher=new h(new URL(n).toString())}catch{}r?.info(`Sending scheduled wake-up call to provider ${t.name} using model ${o}...`);let f=await fetch(s,l);if(f.ok)return{success:!0};let d=await f.text().catch(()=>"");return{success:!1,error:`HTTP ${f.status}: ${d.slice(0,200)||"Unknown error"}`}}catch(u){return{success:!1,error:u?.message||u?.toString()||"Unknown wake-up error"}}}async function UR(t,e,n,r,o){let s=t.baseUrl,a=t.baseUrl.includes("/messages")||e.includes("claude");try{let u={"Content-Type":"application/json",...a_("rate-limit-probe")};a?(u["x-api-key"]=t.apiKey,u["anthropic-version"]="2023-06-01"):u.Authorization=`Bearer ${t.apiKey}`;let l={method:"POST",headers:u,body:JSON.stringify({model:e,messages:[{role:"user",content:"Hello, please reply briefly."}],max_tokens:10}),signal:AbortSignal.timeout(n)};if(r)try{let{ProxyAgent:h}=await import("undici");l.dispatcher=new h(new URL(r).toString())}catch{}o?.debug?.(`Sending independent ping to rate-limited model ${t.name} (${e})...`);let f=await fetch(s,l);if(f.ok)return{success:!0};let d=await f.text().catch(()=>"");return{success:!1,error:`HTTP ${f.status}: ${d.slice(0,200)||"Unknown error"}`}}catch(u){return{success:!1,error:u?.message||u?.toString()||"Unknown ping error"}}}var uu=class{config;quotaProbeTimer;healthProbeTimer;wakeupTimer;rateLimitProbeTimer;lastWakeupDate=new Map;getProviders;getHttpsProxy;logger;getConfig;running=!1;constructor(e,n,r,o,s){this.config={...IR,...n},this.getProviders=e,this.getHttpsProxy=r,this.logger=o,this.getConfig=s}start(){if(this.running)return;let e=this.isWakeupGloballyEnabled();!this.config.enabled&&!e||(this.running=!0,setTimeout(()=>{this.running&&(this.config.enabled&&(this.runQuotaProbe(),this.runHealthProbe(),this.runRateLimitProbe()),this.runScheduledWakeup())},this.config.initialDelayMs),this.config.enabled&&(this.quotaProbeTimer=setInterval(()=>this.runQuotaProbe(),this.config.quotaProbeIntervalMinutes*60*1e3),this.healthProbeTimer=setInterval(()=>this.runHealthProbe(),300*1e3),this.rateLimitProbeTimer=setInterval(()=>this.runRateLimitProbe(),120*1e3)),this.wakeupTimer=setInterval(()=>this.runScheduledWakeup(),60*1e3),this.logger?.info("Active probe service started"))}stop(){this.running=!1,this.quotaProbeTimer&&(clearInterval(this.quotaProbeTimer),this.quotaProbeTimer=void 0),this.healthProbeTimer&&(clearInterval(this.healthProbeTimer),this.healthProbeTimer=void 0),this.rateLimitProbeTimer&&(clearInterval(this.rateLimitProbeTimer),this.rateLimitProbeTimer=void 0),this.wakeupTimer&&(clearInterval(this.wakeupTimer),this.wakeupTimer=void 0),this.logger?.info("Active probe service stopped")}async runQuotaProbe(){let e=this.getProviders().filter(a=>a?.name&&a.enabled!==!1&&!this.config.excludeProviders.includes(a.name)),n=this.getHttpsProxy?.(),r=Ye();if(e.length===0)return;let o=[];for(let a of e){let u=uf(a.baseUrl),l=Array.isArray(a.models)?a.models:[];u&&o.push({provider:a.name,models:l,type:"quota-adapter",promise:u.queryQuota(a,this.config.probeTimeoutMs,n).then(f=>{if(f){uc(a.name,f),this.logger?.debug?.(`Stored quota probe result for ${a.name}`);let d=f.limitDaily!==void 0&&f.usedDailyBalance!==void 0&&f.usedDailyBalance>=f.limitDaily,h=f.totalBalance!==void 0&&f.usedBalance!==void 0&&f.usedBalance>=f.totalBalance;if(d||h){let m=d?`Quota exhausted: 5h limit reached (${f.usedDailyBalance}/${f.limitDaily})`:`Quota exhausted: 7d balance depleted (${f.usedBalance}/${f.totalBalance})`;for(let C of l){if(r.getState(a.name,C)?.rateLimitUntil){this.logger?.debug?.(`Skip forceOpen for ${a.name} (${C}): already rate-limited with active cooldown`);continue}r.forceOpen(a.name,C,m)}this.logger?.warn?.(`${m} for ${a.name}, marked as unhealthy`)}else for(let m of l){let C=r.getState(a.name,m);C&&C.status==="open"&&C.lastError?.includes("Quota exhausted")&&(r.recover(a.name,m),this.logger?.info?.(`Quota recovered for ${a.name} (${m}), marked as healthy`))}}})}),LR(a.baseUrl)&&o.push({provider:a.name,models:l,type:"rate-limit-headers",promise:lf(a,this.config.probeTimeoutMs,n).then(()=>{})})}if(o.length===0)return;this.logger?.debug?.(`Running quota probe with ${o.length} tasks for ${e.length} providers`);let s=await Promise.allSettled(o.map(a=>a.promise));for(let a=0;a<o.length;a++){let u=s[a];if(u.status==="rejected"){let l=o[a];this.logger?.warn?.(`Quota probe failed for ${l.provider} (${l.type}): ${u.reason}`)}}}async runHealthProbe(){let e=Ye(),n=this.getProviders().filter(s=>s?.name&&s.enabled!==!1&&!this.config.excludeProviders.includes(s.name)),r=this.getHttpsProxy?.();if(n.length===0)return;this.logger?.debug?.(`Running health probe for ${n.length} providers`);let o=await Promise.allSettled(n.map(s=>lf(s,this.config.probeTimeoutMs,r)));for(let s=0;s<n.length;s++){let a=n[s],u=o[s],l=Array.isArray(a.models)?a.models:[];if(u.status==="fulfilled"){let f=u.value;if(f.success){let d=0;for(let h of l){let m=e.getState(a.name,h);if(m&&m.status==="open"){let C=m.lastError?.includes("Quota exhausted"),w=m.rateLimitUntil||m.lastError&&(m.lastError.includes("429")||m.lastError.toLowerCase().includes("rate limit")||m.lastError.toLowerCase().includes("rate_limit")||m.lastError.toLowerCase().includes("too many requests")||m.lastError.toLowerCase().includes("\u9650\u6D41"));if(C){this.logger?.debug?.(`Skipping health probe recovery for ${a.name} (${h}) because quota is exhausted`);continue}if(w||m.rateLimitUntil){this.logger?.debug?.(`Skipping health probe recovery for rate-limited ${a.name} (${h})`);continue}}e.recordSuccess(a.name,h),d++}d>0&&this.logger?.info?.(`Health probe succeeded for ${a.name}`)}else{for(let d of l)e.recordFailure(a.name,d,f.error);this.logger?.warn?.(`Health probe failed for ${a.name}: ${f.error}`)}}else{for(let f of l)e.recordFailure(a.name,f,u.reason?.message||"Probe error");this.logger?.warn?.(`Health probe error for ${a.name}: ${u.reason}`)}}}async runRateLimitProbe(){let e=Ye(),n=e.getRateLimitedModels();if(n.length===0)return;let r=this.getProviders(),o=this.getHttpsProxy?.(),s=this.config.probeTimeoutMs;this.logger?.debug?.(`Running rate-limit recovery probe for ${n.length} model(s)`);for(let a of n){let[u,...l]=a.split(","),f=l.join(",");if(!u||!f)continue;let d=e.getState(u,f);if(!d||!d.rateLimitUntil)continue;if(Date.now()>=d.rateLimitUntil){e.recover(u,f),this.logger?.info?.(`Rate-limit cooldown expired, auto-recovered ${a}`);continue}let h=r.find(m=>m?.name===u&&m.enabled!==!1);if(!h){this.logger?.warn?.(`Provider ${u} not found or disabled for rate-limit probe`);continue}try{let m=await UR(h,f,s,o,this.logger);if(m.success)this.logger?.info?.(`Rate-limit probe succeeded for ${a}, recovering model`),e.recover(u,f);else if(m.error&&(m.error.includes("429")||m.error.toLowerCase().includes("rate limit")||m.error.toLowerCase().includes("rate_limit")||m.error.toLowerCase().includes("too many requests")||m.error.toLowerCase().includes("\u9650\u6D41"))){let C=Date.now();d.rateLimitUntil&&d.rateLimitUntil>C?d.rateLimitUntil+=120*1e3:d.rateLimitUntil=C+120*1e3,this.logger?.debug?.(`Rate-limit probe for ${a} confirmed still limited, extending cooldown`)}else this.logger?.debug?.(`Rate-limit probe for ${a} returned non-rate-limit error: ${m.error?.slice(0,100)}`)}catch(m){this.logger?.warn?.(`Rate-limit probe exception for ${a}: ${m?.message||m}`)}}}async runScheduledWakeup(){if(!this.isWakeupGloballyEnabled())return;let e=this.getProviders().filter(l=>l?.name&&l.enabled!==!1&&l.wakeupEnabled===!0);if(e.length===0)return;let n=new Date,r=n.getHours(),o=n.getMinutes(),s=BR(n),a=this.getHttpsProxy?.(),u=this.getConfig&&this.getConfig("WAKEUP_TIME")||"06:00";for(let l of e){let f=l.wakeupTime||u,[d,h]=f.split(":"),m=parseInt(d,10),C=parseInt(h,10);if(isNaN(m)||isNaN(C))continue;let w=r>m||r===m&&o>=C,y=(m*60+C)*6e4-(r*60+o)*6e4,g=y>0&&y<=300*1e3;(w||g)&&!this.hasWakeupFiredToday(l.name,s)&&(this.logger?.info?.(`Scheduled wake-up triggered for provider ${l.name} at ${f}`),jR(l,3e4,a,this.logger).then(_=>{_.success?this.logger?.info?.(`Successfully woke up provider ${l.name}`):this.logger?.error?.(`Failed to wake up provider ${l.name}: ${_.error}`)}).catch(_=>{this.logger?.error?.(`Error in wake-up task for ${l.name}: ${_}`)}))}}isWakeupGloballyEnabled(){return this.getConfig?NR(this.getConfig("WAKEUP_ENABLED")):!1}hasWakeupFiredToday(e,n){return this.lastWakeupDate.get(e)===n?!0:(this.lastWakeupDate.set(e,n),!1)}async probeProviderManually(e){let r=this.getProviders().find(u=>u.name===e);if(!r)return this.logger?.warn?.(`Provider ${e} not found for manual probe`),!1;if(r.enabled===!1)return this.logger?.warn?.(`Provider ${e} is disabled, skipping manual probe`),!1;let o=this.getHttpsProxy?.(),s=await lf(r,this.config.probeTimeoutMs,o),a=Array.isArray(r.models)?r.models:[];if(s.success)for(let u of a)Ye().recordSuccess(r.name,u);else for(let u of a)Ye().recordFailure(r.name,u,s.error);return s.success}},Xn=null;function u_(t,e,n,r,o){return Xn||(Xn=new uu(t,e,n,r,o)),Xn}function df(t,e,n,r,o){let s=u_(t,e,n,r,o);return s.start(),s}function ff(){Xn&&Xn.stop()}function $R(){Xn&&(Xn.stop(),Xn=null)}Un();var hf=class{plugins=new Map;pluginInstances=new Map;registerPlugin(e,n={}){this.pluginInstances.set(e.name,e),this.plugins.set(e.name,{name:e.name,enabled:n.enabled!==!1,options:n})}async enablePlugin(e,n){let r=this.plugins.get(e),o=this.pluginInstances.get(e);if(!r||!o)throw new Error(`Plugin ${e} not found`);r.enabled&&await n.register(o.register,r.options)}async enablePlugins(e){for(let[n,r]of this.plugins)if(r.enabled)try{await this.enablePlugin(n,e)}catch(o){let s=o instanceof Error?o.message:String(o);e.log?.error(`Failed to enable plugin ${n}: ${s}`)}}getPlugins(){return Array.from(this.plugins.values())}getPlugin(e){return this.pluginInstances.get(e)}hasPlugin(e){return this.pluginInstances.has(e)}isPluginEnabled(e){return this.plugins.get(e)?.enabled||!1}setPluginEnabled(e,n){let r=this.plugins.get(e);r&&(r.enabled=n)}removePlugin(e){this.plugins.delete(e),this.pluginInstances.delete(e)}clear(){this.plugins.clear(),this.pluginInstances.clear()}},c_=new hf;var C_=Ln(p_(),1);var Eo=class extends TransformStream{buffer="";currentEvent={};constructor(){super({transform:(e,n)=>{this.buffer+=e;let r=this.buffer.split(`
|
|
382
|
-
`);this.buffer=r.pop()||"";for(let o of r){let s=this.processLine(o);s&&n.enqueue(s)}},flush:e=>{if(this.buffer.trim()){let n=[];this.processLine(this.buffer.trim(),n),n.forEach(r=>e.enqueue(r))}Object.keys(this.currentEvent).length>0&&e.enqueue(this.currentEvent)}})}processLine(e,n){if(!e.trim()){if(Object.keys(this.currentEvent).length>0){let r={...this.currentEvent};return this.currentEvent={},n?(n.push(r),null):r}return null}if(e.startsWith("event:"))this.currentEvent.event=e.slice(6).trim();else if(e.startsWith("data:")){let r=e.slice(5).trim();if(r==="[DONE]")this.currentEvent.data={type:"done"};else try{this.currentEvent.data=JSON.parse(r)}catch{this.currentEvent.data={raw:r,error:"JSON parse failed"}}}else e.startsWith("id:")?this.currentEvent.id=e.slice(3).trim():e.startsWith("retry:")&&(this.currentEvent.retry=parseInt(e.slice(6).trim()));return null}};var lu=class extends TransformStream{constructor(){super({transform:(e,n)=>{let r="";e.event&&(r+=`event: ${e.event}
|
|
383
|
-
`),e.id&&(r+=`id: ${e.id}
|
|
384
|
-
`),e.retry&&(r+=`retry: ${e.retry}
|
|
385
|
-
`),e.data&&(e.data.type==="done"?r+=`data: [DONE]
|
|
386
|
-
`:r+=`data: ${JSON.stringify(e.data)}
|
|
387
|
-
`),r+=`
|
|
388
|
-
`,n.enqueue(r)}})}};var m_=(t,e)=>{let n=t.getReader();return new ReadableStream({async start(r){try{for(;;){let{done:o,value:s}=await n.read();if(o){r.close();break}let a=await e(s,r);a!==void 0&&r.enqueue(a)}}catch(o){r.error(o)}finally{n.releaseLock()}}})};gf();yf();_f();y_();var Es=new Map,Cf=new Map,QR=1,w_={name:"token-speed",version:"1.0.0",description:"Statistics for streaming response token generation speed",register:(0,C_.default)(async(t,e)=>{let n={reporter:["console","temp-file"],...e},r=Array.isArray(n.reporter)?n.reporter:[n.reporter];if(n.outputHandlers&&n.outputHandlers.length>0)ko.registerHandlers(n.outputHandlers);else{let a=[];for(let u of r)u==="console"?a.push({type:"console",enabled:!0,config:{colors:!0,level:"log"}}):u==="temp-file"?a.push({type:"temp-file",enabled:!0,config:{subdirectory:"claude-code-router",extension:"json",includeTimestamp:!0,prefix:"session"}}):u==="webhook"&&console.warn("[TokenSpeedPlugin] Webhook reporter requires explicit configuration in outputHandlers");a.length>0&&ko.registerHandlers(a)}n.outputOptions&&ko.setDefaultOptions(n.outputOptions);let o=async a=>{let u=t.tokenizerService;if(!u)return t.log?.warn("TokenizerService not available"),null;if(!a.provider||!a.model)return null;let l=a.provider,f=a.model,d=`${l}:${f}`;if(Cf.has(d))return Cf.get(d);let h=u.getTokenizerConfigForModel(l,f);if(!h)return t.log?.debug(`No tokenizer config for ${l}:${f}, using fallback`),null;try{let m=await u.getTokenizer(h);return Cf.set(d,m),t.log?.info(`Created tokenizer for ${l}:${f} - ${m.name}`),m}catch(m){return t.log?.warn(`Failed to create tokenizer for ${l}:${f}: ${m.message}`),null}},s=a=>{let u=new URL(`http://127.0.0.1${a}`).pathname;return u.endsWith("/v1/messages")||u.endsWith("/v1/responses")};t.addHook("onRequest",async a=>{s(a.url)&&(a.requestStartTime=performance.now())}),t.addHook("onSend",async(a,u,l)=>{let f=a.requestStartTime;if(!f)return;let d=a.id||Date.now().toString(),h;try{h=No(a.body?.metadata?.user_id)}catch{}if(!h){let g=a.headers?.["x-request-id"],_=Array.isArray(g)?g[0]:g;h=a.sessionId||(typeof _=="string"?_:void 0)||d}let m=await o(a);if(l instanceof ReadableStream){Es.set(d,{requestId:d,sessionId:h,startTime:f,lastTokenTime:f,tokenCount:0,tokensPerSecond:0,stream:!0});let[g,_]=l.tee();return(async()=>{let b=null,S=async T=>{let R=Es.get(d);if(!R)return;let $=R.firstTokenTime?R.firstTokenTime-R.startTime:0,P=(T?R.lastTokenTime:performance.now())-R.startTime;R.tokensPerSecond=__(R.tokenCount,P,$),await b_(R,r,n.outputOptions,T).catch(K=>{t.log?.warn(`Failed to output streaming stats: ${K.message}`)})};try{let R=_.pipeThrough(new TextDecoderStream).pipeThrough(new Eo).getReader();for(b=setInterval(async()=>{Es.get(d)&&await S(!1)},1e3);;){let{done:$,value:H}=await R.read();if($)break;let P=H,K=Es.get(d);if(!K)continue;let q=performance.now(),Y=P.event||P.data?.type,Q=P.event==="content_block_start"||P.event==="content_block_delta"||P.event==="text_block"||P.event==="content_block"||Y==="response.output_text.delta"||Y==="response.function_call_arguments.delta"||Y==="response.reasoning_summary_text.delta";!K.firstTokenTime&&Q&&(K.firstTokenTime=q,K.timeToFirstToken=Math.round(q-K.startTime));let ee="";if(P.event==="content_block_delta"&&P.data?.delta){let se=P.data.delta.type;se==="text_delta"?ee=P.data.delta.text||"":se==="input_json_delta"?ee=P.data.delta.partial_json||"":se==="thinking_delta"&&(ee=P.data.delta.thinking||"")}if((Y==="response.output_text.delta"||Y==="response.function_call_arguments.delta"||Y==="response.reasoning_summary_text.delta")&&(ee=typeof P.data?.delta=="string"?P.data.delta:""),ee){let se=m&&m.encodeText?m.encodeText(ee).length:ks(ee);K.tokenCount+=se,K.lastTokenTime=q}(P.event==="message_stop"||Y==="response.completed"||Y==="response.failed")&&(b&&(clearInterval(b),b=null),await S(!0),Es.delete(d))}}catch(T){b&&clearInterval(b),T.name!=="AbortError"&&T.code!=="ERR_STREAM_PREMATURE_CLOSE"&&t.log?.warn(`Error processing token stats: ${T.message}`)}})().catch(b=>{console.log(b),t.log?.warn(`Background stats processing failed: ${b.message}`)}),g}let C=performance.now(),w=0,y=!1;if(l&&typeof l=="string")try{let g=JSON.parse(l);if(typeof g.usage?.output_tokens=="number")w=g.usage.output_tokens,y=!0;else{let _=g.content??g.message?.content;if(_!==void 0)if(y=!0,m)Array.isArray(_)?w=_.reduce((E,b)=>{if(b.type==="text"){let S=b.text||"";return E+(m.encodeText?m.encodeText(S).length:ks(S))}return E},0):typeof _=="string"&&(w=m.encodeText?m.encodeText(_).length:ks(_));else{let E=Array.isArray(_)?_.map(b=>b.text).join(""):typeof _=="string"?_:"";w=ks(E)}}}catch{}if(y){let g=Math.round(C-f),_=C-f,E={requestId:d,sessionId:h,startTime:f,lastTokenTime:C,tokenCount:w,tokensPerSecond:__(w,_),timeToFirstToken:g,stream:!1};await b_(E,r,n.outputOptions,!0)}return l})})};function __(t,e,n=0){if(t<=0)return 0;let r=Math.max((e-n)/1e3,QR);return Math.round(t/r)}function ks(t){let e=(t.match(/[\u4e00-\u9fa5]/g)||[]).length,n=t.length-e;return Math.ceil(e/1.5+n/4)}async function b_(t,e,n,r=!1){let o=r?"[Token Speed Final]":"[Token Speed]",s={requestId:t.requestId.substring(0,8),sessionId:t.sessionId,stream:t.stream,tokenCount:t.tokenCount,tokensPerSecond:t.tokensPerSecond,timeToFirstToken:t.timeToFirstToken?`${t.timeToFirstToken}ms`:"N/A",duration:`${((t.lastTokenTime-t.startTime)/1e3).toFixed(2)}s`,timestamp:Date.now()},a={prefix:o,metadata:{sessionId:t.sessionId},...n};for(let u of e)try{await ko.outputToType(u,s,a)}catch(l){console.error(`[TokenSpeedPlugin] Failed to output to ${u}:`,l)}}Un();Un();function ex(t={}){let e=XR({bodyLimit:52428800,...t});return e.setErrorHandler(Lh),e.register(ZR),e}var wf=class{app;configService;providerService;transformerService;tokenizerService;activeProbeService;recordUsage;constructor(e={}){let{initialConfig:n,...r}=e;this.app=ex({...r,logger:r.logger??!0}),this.configService=new Ir(e),this.transformerService=new Co(this.configService,this.app.log),this.tokenizerService=new wo(this.configService,this.app.log),this.transformerService.initialize().finally(()=>{this.providerService=new qr(this.configService,this.transformerService,this.app.log)}),this.tokenizerService.initialize().catch(o=>{this.app.log.error(`Failed to initialize TokenizerService: ${o}`)})}async register(e,n){await this.app.register(e,n)}addHook(e,n){this.app.addHook(e,n)}async registerNamespace(e,n){if(!e)throw new Error("name is required");if(e==="/"){await this.app.register(async u=>{u.decorate("configService",this.configService),u.decorate("transformerService",this.transformerService),u.decorate("providerService",this.providerService),u.decorate("tokenizerService",this.tokenizerService),u.decorate("recordUsage",this.recordUsage||(()=>{})),u.addHook("preHandler",async(l,f)=>{new URL(`http://127.0.0.1${l.url}`).pathname.endsWith("/v1/messages")&&await Mo(l,f,{configService:this.configService,tokenizerService:this.tokenizerService})}),await pc(u)});return}if(!n)throw new Error("options is required");let r=new Ir({initialConfig:{providers:n.Providers,Router:n.Router}}),o=new Co(r,this.app.log);await o.initialize();let s=new qr(r,o,this.app.log),a=new wo(r,this.app.log);await a.initialize(),await this.app.register(async u=>{u.decorate("configService",r),u.decorate("transformerService",o),u.decorate("providerService",s),u.decorate("tokenizerService",a),u.decorate("recordUsage",this.recordUsage||(()=>{})),u.addHook("preHandler",async(l,f)=>{new URL(`http://127.0.0.1${l.url}`).pathname.endsWith("/v1/messages")&&await Mo(l,f,{configService:r,tokenizerService:a})}),await pc(u)},{prefix:e})}async start(){try{this.app._server=this,this.app.addHook("preHandler",(r,o,s)=>{if(new URL(`http://127.0.0.1${r.url}`).pathname.endsWith("/v1/messages")&&r.body){let u=r.body;r.log.info({data:u,type:"request body"}),u.stream||(u.stream=!1)}s()}),await this.registerNamespace("/"),this.app.addHook("preHandler",async(r,o)=>{if(new URL(`http://127.0.0.1${r.url}`).pathname.endsWith("/v1/messages")&&r.body)try{let a=r.body;if(!a||!a.model)return o.code(400).send({error:"Missing model in request body"});let u=a.model.split(","),l=a.model;if(u.length>1){let[f,...d]=u;l=d.join(","),a.model=l,r.provider=f}r.model=l;return}catch(a){return r.log.error({error:a},"Error in modelProviderMiddleware:"),o.code(500).send({error:"Internal server error"})}});let e=await this.app.listen({port:parseInt(this.configService.get("PORT")||"3000",10),host:this.configService.get("HOST")||"127.0.0.1"});this.app.log.info(`\u{1F680} LLMs API server listening on ${e}`);try{rc()}catch{}try{lc()}catch{}try{Zu()}catch{}try{let r={enabled:this.configService.get("ACTIVE_PROBE_ENABLED")??!0,quotaProbeIntervalMinutes:this.configService.get("QUOTA_PROBE_INTERVAL_MINUTES")??10,probeTimeoutMs:this.configService.get("PROBE_TIMEOUT_MS")??15e3,initialDelayMs:this.configService.get("PROBE_INITIAL_DELAY_MS")??5e3,excludeProviders:this.configService.get("EXCLUDE_PROBE_PROVIDERS")??[]};this.activeProbeService=df(()=>this.providerService.getProviders(),r,()=>this.configService.getHttpsProxy(),this.app.log,o=>this.configService.get(o))}catch(r){this.app.log.warn?.(`Failed to start active probe service: ${r.message}`)}let n=async r=>{this.app.log.info(`Received ${r}, shutting down gracefully...`);try{ff()}catch{}await this.app.close(),process.exit(0)};process.on("SIGINT",()=>n("SIGINT")),process.on("SIGTERM",()=>n("SIGTERM"))}catch(e){this.app.log.error(`Error starting server: ${e}`),process.exit(1)}}},wM=wf;export{uu as ActiveProbeService,Ir as ConfigService,ii as ProviderHealthStore,qr as ProviderService,Eo as SSEParserTransform,lu as SSESerializerTransform,wo as TokenizerService,Co as TransformerService,fp as calculateTokenCount,wM as default,No as extractSessionIdFromUserId,u_ as getActiveProbeService,ZC as getAllQuotaResults,HC as getAllRateLimitInfo,Ye as getHealthStore,uf as getQuotaAdapter,cc as getQuotaResult,zC as getRateLimitInfo,EC as getRuntimeDebugLog,Zu as initProviderHealthPersistence,lc as initQuotaStorePersistence,rc as initRateLimitPersistence,Ur as normalizeSessionId,c_ as pluginManager,$R as resetActiveProbeService,m_ as rewriteStream,Mo as router,gp as searchProjectBySession,sc as sessionUsageCache,wC as setRuntimeDebugLog,df as startActiveProbe,ff as stopActiveProbe,uc as storeQuotaResult,w_ as tokenSpeedPlugin};
|
|
389
|
-
/*! Bundled license information:
|
|
226
|
+
`));else{let d={choices:[{delta:{role:"assistant",content:u.content?.[0]?.text||""},finish_reason:u.stop_reason?.toLowerCase()||null,index:0,logprobs:null}],created:parseInt(new Date().getTime()/1e3+"",10),id:u.id||"",model:u.model||"",object:"chat.completion.chunk",system_fingerprint:"fp_a49d71b8a1",usage:{completion_tokens:u.usage?.output_tokens||0,prompt_tokens:u.usage?.input_tokens||0,total_tokens:(u.usage?.input_tokens||0)+(u.usage?.output_tokens||0)}};c.enqueue(r.encode(`data: ${JSON.stringify(d)}
|
|
390
227
|
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
*)
|
|
228
|
+
`))}}catch(u){t?.error(`Error parsing ${e} stream chunk`,i,u.message)}}}},a=new ReadableStream({async start(l){let c=n.body.getReader(),i="";try{for(;;){let{done:u,value:d}=await c.read();if(u){i&&s(i,l);break}i+=o.decode(d,{stream:!0});let m=i.split(`
|
|
229
|
+
`);i=m.pop()||"";for(let g of m)s(g,l)}}catch(u){l.error(u)}finally{l.close()}}});return new Response(a,{status:n.status,statusText:n.statusText,headers:n.headers})}return n}var zs=S(()=>{"use strict"});async function il(){try{let{GoogleAuth:n}=await import("google-auth-library");return(await(await new n({scopes:["https://www.googleapis.com/auth/cloud-platform"]}).getClient()).getAccessToken()).token||""}catch(n){throw console.error("Error getting access token:",n),new Error(`Failed to get access token for Vertex AI. Please ensure you have set up authentication using one of these methods:
|
|
230
|
+
1. Set GOOGLE_APPLICATION_CREDENTIALS to point to service account key file
|
|
231
|
+
2. Run "gcloud auth application-default login"
|
|
232
|
+
3. Use Google Cloud environment with default service account`)}}var Zt,Hs=S(()=>{"use strict";zs();Zt=class{name="vertex-claude";async transformRequestIn(e,t){let o=process.env.GOOGLE_CLOUD_PROJECT,r=process.env.GOOGLE_CLOUD_LOCATION||"us-east5";if(!o&&process.env.GOOGLE_APPLICATION_CREDENTIALS)try{let l=(await import("fs")).readFileSync(process.env.GOOGLE_APPLICATION_CREDENTIALS,"utf8"),c=JSON.parse(l);c&&c.project_id&&(o=c.project_id)}catch(a){console.error("Error extracting project_id from GOOGLE_APPLICATION_CREDENTIALS:",a)}if(!o)throw new Error("Project ID is required for Vertex AI. Set GOOGLE_CLOUD_PROJECT environment variable or ensure project_id is in GOOGLE_APPLICATION_CREDENTIALS file.");let s=await il();return{body:Us(e),config:{url:new URL(`/v1/projects/${o}/locations/${r}/publishers/anthropic/models/${e.model}:${e.stream?"streamRawPredict":"rawPredict"}`,`https://${r}-aiplatform.googleapis.com`).toString(),headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}}}async transformRequestOut(e){return Ds(e)}async transformResponseOut(e){return js(e,this.name,this.logger)}}});var en,Js=S(()=>{"use strict";en=class{name="cerebras";async transformRequestIn(e,t){let o=JSON.parse(JSON.stringify(e));return o.reasoning?delete o.reasoning:o.disable_reasoning=!1,{body:o,config:{headers:{Authorization:`Bearer ${t.apiKey}`,"Content-Type":"application/json"}}}}async transformResponseOut(e){return e}}});var tn,Bs=S(()=>{"use strict";tn=class{name="streamoptions";async transformRequestIn(e){return e.stream&&(e.stream_options={include_usage:!0}),e}}});var nn,Ws=S(()=>{"use strict";nn=class{name="OpenAI";endPoint="/v1/chat/completions"}});var on,Gs=S(()=>{"use strict";on=class{static TransformerName="customparams";options;constructor(e={}){this.options=e}async transformRequestIn(e){let t={...e},o=Object.entries(this.options);for(let[r,s]of o)if(r in t)if(typeof t[r]=="object"&&typeof s=="object"&&!Array.isArray(t[r])&&!Array.isArray(s)&&t[r]!==null&&s!==null)t[r]=this.deepMergeObjects(t[r],s);else continue;else t[r]=this.cloneValue(s);return t}async transformResponseOut(e){return e}deepMergeObjects(e,t){let o={...e};for(let[r,s]of Object.entries(t))r in o&&typeof o[r]=="object"&&typeof s=="object"&&!Array.isArray(o[r])&&!Array.isArray(s)&&o[r]!==null&&s!==null?o[r]=this.deepMergeObjects(o[r],s):o[r]=this.cloneValue(s);return o}cloneValue(e){if(e===null||typeof e!="object")return e;if(Array.isArray(e))return e.map(o=>this.cloneValue(o));let t={};for(let[o,r]of Object.entries(e))t[o]=this.cloneValue(r);return t}}});import{v4 as al}from"uuid";var rn,Vs=S(()=>{"use strict";rn=class{constructor(e){this.options=e}static TransformerName="vercel";endPoint="/v1/chat/completions";async transformRequestIn(e){return e.model.includes("claude")?e.messages.forEach(t=>{Array.isArray(t.content)&&t.content.forEach(o=>{o.type==="image_url"&&(o.image_url.url.startsWith("http")||(o.image_url.url=`data:${o.media_type};base64,${o.image_url.url}`),delete o.media_type)})}):e.messages.forEach(t=>{Array.isArray(t.content)?t.content.forEach(o=>{o.cache_control&&delete o.cache_control,o.type==="image_url"&&(o.image_url.url.startsWith("http")||(o.image_url.url=`data:${o.media_type};base64,${o.image_url.url}`),delete o.media_type)}):t.cache_control&&delete t.cache_control}),Object.assign(e,this.options||{}),e}async transformResponseOut(e){if(e.headers.get("Content-Type")?.includes("application/json")){let t=await e.json();return new Response(JSON.stringify(t),{status:e.status,statusText:e.statusText,headers:e.headers})}else if(e.headers.get("Content-Type")?.includes("stream")){if(!e.body)return e;let t=new TextDecoder,o=new TextEncoder,r=!1,s="",a=!1,l=!1,c="",i=new ReadableStream({async start(u){let d=e.body.getReader(),m=(y,p,f)=>{let _=y.split(`
|
|
233
|
+
`);for(let k of _)k.trim()&&p.enqueue(f.encode(k+`
|
|
234
|
+
`))},g=(y,p)=>{let{controller:f,encoder:_}=p;if(y.startsWith("data: ")&&y.trim()!=="data: [DONE]"){let k=y.slice(6);try{let h=JSON.parse(k);if(h.usage&&(this.logger?.debug({usage:h.usage,hasToolCall:l},"usage"),h.choices[0].finish_reason=l?"tool_calls":"stop"),h.choices?.[0]?.finish_reason==="error"&&f.enqueue(_.encode(`data: ${JSON.stringify({error:h.choices?.[0].error})}
|
|
399
235
|
|
|
400
|
-
|
|
401
|
-
(*! fetch-blob. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> *)
|
|
236
|
+
`)),h.choices?.[0]?.delta?.content&&!p.hasTextContent()&&p.setHasTextContent(!0),h.choices?.[0]?.delta?.reasoning){p.appendReasoningContent(h.choices[0].delta.reasoning);let x={...h,choices:[{...h.choices?.[0],delta:{...h.choices[0].delta,thinking:{content:h.choices[0].delta.reasoning}}}]};x.choices?.[0]?.delta&&delete x.choices[0].delta.reasoning;let v=`data: ${JSON.stringify(x)}
|
|
402
237
|
|
|
403
|
-
|
|
404
|
-
(*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> *)
|
|
238
|
+
`;f.enqueue(_.encode(v));return}if(h.choices?.[0]?.delta?.content&&p.reasoningContent()&&!p.isReasoningComplete()){p.setReasoningComplete(!0);let v={...h,choices:[{...h.choices?.[0],delta:{...h.choices[0].delta,content:null,thinking:{content:p.reasoningContent(),signature:"ccr_think_signature"}}}]};v.choices?.[0]?.delta&&delete v.choices[0].delta.reasoning;let C=`data: ${JSON.stringify(v)}
|
|
405
239
|
|
|
406
|
-
|
|
407
|
-
(*! node-domexception. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> *)
|
|
240
|
+
`;f.enqueue(_.encode(C))}h.choices?.[0]?.delta?.reasoning&&delete h.choices[0].delta.reasoning,h.choices?.[0]?.delta?.tool_calls?.length&&!Number.isNaN(parseInt(h.choices?.[0]?.delta?.tool_calls[0].id,10))&&h.choices?.[0]?.delta?.tool_calls.forEach(x=>{x.id=`call_${al()}`}),h.choices?.[0]?.delta?.tool_calls?.length&&!l&&(l=!0),h.choices?.[0]?.delta?.tool_calls?.length&&p.hasTextContent()&&(typeof h.choices[0].index=="number"?h.choices[0].index+=1:h.choices[0].index=1);let b=`data: ${JSON.stringify(h)}
|
|
408
241
|
|
|
409
|
-
|
|
410
|
-
|
|
242
|
+
`;f.enqueue(_.encode(b))}catch{f.enqueue(_.encode(y+`
|
|
243
|
+
`))}}else f.enqueue(_.encode(y+`
|
|
244
|
+
`))};try{for(;;){let{done:y,value:p}=await d.read();if(y){c.trim()&&m(c,u,o);break}if(!p||p.length===0)continue;let f;try{f=t.decode(p,{stream:!0})}catch(k){console.warn("Failed to decode chunk",k);continue}if(f.length===0)continue;if(c+=f,c.length>1e6){console.warn("Buffer size exceeds limit, processing partial data");let k=c.split(`
|
|
245
|
+
`);c=k.pop()||"";for(let h of k)if(h.trim())try{g(h,{controller:u,encoder:o,hasTextContent:()=>r,setHasTextContent:b=>r=b,reasoningContent:()=>s,appendReasoningContent:b=>s+=b,isReasoningComplete:()=>a,setReasoningComplete:b=>a=b})}catch(b){console.error("Error processing line:",h,b),u.enqueue(o.encode(h+`
|
|
246
|
+
`))}continue}let _=c.split(`
|
|
247
|
+
`);c=_.pop()||"";for(let k of _)if(k.trim())try{g(k,{controller:u,encoder:o,hasTextContent:()=>r,setHasTextContent:h=>r=h,reasoningContent:()=>s,appendReasoningContent:h=>s+=h,isReasoningComplete:()=>a,setReasoningComplete:h=>a=h})}catch(h){console.error("Error processing line:",k,h),u.enqueue(o.encode(k+`
|
|
248
|
+
`))}}}catch(y){console.error("Stream error:",y),u.error(y)}finally{try{d.releaseLock()}catch(y){console.error("Error releasing reader lock:",y)}u.close()}}});return new Response(i,{status:e.status,statusText:e.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}return e}}});var uo,cl,sn,Qs=S(()=>{"use strict";uo=`Always think before answering. Even if the problem seems simple, always write down your reasoning process explicitly.
|
|
411
249
|
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
250
|
+
Output format:
|
|
251
|
+
<reasoning_content>
|
|
252
|
+
Your detailed thinking process goes here
|
|
253
|
+
</reasoning_content>
|
|
254
|
+
Your final answer must follow after the closing tag above.`,cl=10,sn=class{name="forcereasoning";async transformRequestIn(e){let t=0;e.messages.filter(r=>r.role==="assistant").reverse().forEach(r=>{r.thinking&&(r.thinking.content&&(!r.content||t<cl)&&(t++,r.content=`<reasoning_content>${r.thinking.content}</reasoning_content>
|
|
255
|
+
${r.content}`),delete r.thinking)});let o=e.messages[e.messages.length-1];return o.role==="user"&&(Array.isArray(o.content)?o.content.push({type:"text",text:uo}):o.content=[{type:"text",text:uo},{type:"text",text:o.content||""}]),o.role==="tool"&&e.messages.push({role:"user",content:[{type:"text",text:uo}]}),e}async transformResponseOut(e){let t="<reasoning_content>",o="</reasoning_content>";if(e.headers.get("Content-Type")?.includes("application/json")){let r=await e.json();if(r.choices[0]?.message.content){let s=/<reasoning_content>(.*?)<\/reasoning_content>/s,a=r.choices[0]?.message.content.match(s);a&&a[1]&&(r.thinking={content:a[1]})}return new Response(JSON.stringify(r),{status:e.status,statusText:e.statusText,headers:e.headers})}else if(e.headers.get("Content-Type")?.includes("stream")){if(!e.body)return e;let r=0,s=new TextDecoder,a=new TextEncoder,l=new ReadableStream({async start(c){let i=e.body.getReader(),u="",d="SEARCHING",m="",g="",y=(p,f)=>{if(typeof f!="string"){p.choices?.[0]?.delta&&Object.keys(p.choices[0].delta).length>0&&!p.choices[0].delta.content&&(p.choices[0].index=r,c.enqueue(a.encode(`data: ${JSON.stringify(p)}
|
|
256
|
+
|
|
257
|
+
`)));return}let _=m+f;for(m="";_.length>0;)if(d==="SEARCHING"){let k=_.indexOf(t);if(k!==-1)_=_.substring(k+t.length),d="REASONING";else{for(let h=t.length-1;h>0;h--)if(_.endsWith(t.substring(0,h))){m=_.substring(_.length-h);break}_=""}}else if(d==="REASONING"){let k=_.indexOf(o);if(k!==-1){let h=_.substring(0,k);if(h.length>0){let v={...p.choices[0].delta,thinking:{content:h}};delete v.content;let C={...p,choices:[{...p.choices[0],delta:v,index:r}]};c.enqueue(a.encode(`data: ${JSON.stringify(C)}
|
|
258
|
+
|
|
259
|
+
`))}let b={...p.choices[0].delta,thinking:{signature:"ccr_think_signature"}};delete b.content;let x={...p,choices:[{...p.choices[0],delta:b,index:r}]};c.enqueue(a.encode(`data: ${JSON.stringify(x)}
|
|
260
|
+
|
|
261
|
+
`)),r++,_=_.substring(k+o.length),d="FINAL"}else{let h=_;for(let b=o.length-1;b>0;b--)if(_.endsWith(o.substring(0,b))){m=_.substring(_.length-b),h=_.substring(0,_.length-b);break}if(h.length>0){let b={...p.choices[0].delta,thinking:{content:h}};delete b.content;let x={...p,choices:[{...p.choices[0],delta:b,index:r}]};c.enqueue(a.encode(`data: ${JSON.stringify(x)}
|
|
262
|
+
|
|
263
|
+
`))}_=""}}else if(d==="FINAL"){if(_.length>0)if(/^\s*$/.test(_))g+=_;else{let h=g+_,b={...p.choices[0].delta,content:h};b.thinking&&delete b.thinking;let x={...p,choices:[{...p.choices[0],delta:b}]};c.enqueue(a.encode(`data: ${JSON.stringify(x)}
|
|
264
|
+
|
|
265
|
+
`)),g=""}r++,_=""}};try{for(;;){let{done:p,value:f}=await i.read();if(p)break;let _=s.decode(f,{stream:!0});u+=_;let k=u.split(`
|
|
266
|
+
`);u=k.pop()||"";for(let h of k)if(h.trim()){if(h.trim()==="data: [DONE]"){c.enqueue(a.encode(h+`
|
|
267
|
+
|
|
268
|
+
`));break}if(h.startsWith("data:"))try{let b=JSON.parse(h.slice(5));y(b,b.choices?.[0]?.delta?.content)}catch{c.enqueue(a.encode(h+`
|
|
269
|
+
`))}else c.enqueue(a.encode(h+`
|
|
270
|
+
`))}}}catch(p){console.error("Stream error:",p),c.error(p)}finally{try{i.releaseLock()}catch(p){console.error("Error releasing reader lock:",p)}if(d==="REASONING"){let f={choices:[{delta:{thinking:{signature:"ccr_think_signature"}}}]};c.enqueue(a.encode(`data: ${JSON.stringify(f)}
|
|
271
|
+
|
|
272
|
+
`))}c.close()}}});return new Response(l,{status:e.status,statusText:e.statusText,headers:{"Content-Type":e.headers.get("Content-Type")||"text/plain","Cache-Control":"no-cache",Connection:"keep-alive"}})}return e}}});var an,Ks=S(()=>{"use strict";an=class{name="kimi";async transformRequestIn(e){return(e.thinking||e.reasoning?.enabled||e.messages.some(o=>o.thinking?.content))&&e.messages.forEach(o=>{if(o.role==="assistant"){let r=o.thinking?.content,s=o.thinking?.signature;r&&typeof r=="string"&&r.trim()&&(o.reasoning_content=r,s&&(o.reasoning_content_signature=s)),o.tool_calls&&o.tool_calls.length>0&&(o.reasoning_content||(o.reasoning_content="")),o.thinking&&delete o.thinking}}),e}async transformResponseOut(e){let t=e.headers.get("Content-Type");if(t?.includes("stream")){if(!e.body)return e;let o=new TextDecoder,r=new TextEncoder,s="",a="",l=new ReadableStream({async start(c){let i=e.body.getReader();try{for(;;){let{done:u,value:d}=await i.read();if(u){a.trim()&&c.enqueue(r.encode(a+`
|
|
273
|
+
`));break}let m=o.decode(d,{stream:!0});a+=m;let g=a.split(`
|
|
274
|
+
`);a=g.pop()||"";for(let y of g)if(y.trim())if(y.startsWith("data: ")&&y.trim()!=="data: [DONE]")try{let p=JSON.parse(y.slice(6));if(p.choices?.[0]?.delta?.reasoning_content){s+=p.choices[0].delta.reasoning_content;let f={...p,choices:[{...p.choices[0],delta:{thinking:{content:p.choices[0].delta.reasoning_content}}}]};delete f.choices[0].delta.reasoning_content,c.enqueue(r.encode(`data: ${JSON.stringify(f)}
|
|
275
|
+
|
|
276
|
+
`));continue}if(p.choices?.[0]?.delta?.content&&s&&!p.choices[0]?.delta?.reasoning_content){let f=Date.now().toString(),_={...p,choices:[{...p.choices[0],delta:{content:null,thinking:{content:s,signature:f}}}]};c.enqueue(r.encode(`data: ${JSON.stringify(_)}
|
|
277
|
+
|
|
278
|
+
`)),s=""}p.choices?.[0]?.delta?.reasoning_content&&delete p.choices[0].delta.reasoning_content,p.choices?.[0]?.delta&&Object.keys(p.choices[0].delta).length>0&&c.enqueue(r.encode(`data: ${JSON.stringify(p)}
|
|
279
|
+
|
|
280
|
+
`))}catch{c.enqueue(r.encode(y+`
|
|
281
|
+
`))}else c.enqueue(r.encode(y+`
|
|
282
|
+
`))}}catch(u){c.error(u)}finally{try{i.releaseLock()}catch{}c.close()}}});return new Response(l,{status:e.status,statusText:e.statusText,headers:{"Content-Type":t||"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}if(t?.includes("application/json")){let o=await e.json();return o.choices?.[0]?.message?.reasoning_content&&(o.choices[0].message.thinking={content:o.choices[0].message.reasoning_content},delete o.choices[0].message.reasoning_content),new Response(JSON.stringify(o),{status:e.status,statusText:e.statusText,headers:e.headers})}return e}}});import{v4 as ll}from"uuid";var cn,Xs=S(()=>{"use strict";cn=class{constructor(e){this.options=e}static TransformerName="opencode";endPoint="/v1/chat/completions";async transformRequestIn(e){return e.messages.forEach(t=>{Array.isArray(t.content)?t.content.forEach(o=>{o.cache_control&&delete o.cache_control,o.type==="image_url"&&(o.image_url.url.startsWith("http")||(o.image_url.url=`data:${o.media_type};base64,${o.image_url.url}`),delete o.media_type)}):t.cache_control&&delete t.cache_control}),Object.assign(e,this.options||{}),e}async transformResponseOut(e){if(e.headers.get("Content-Type")?.includes("application/json")){let t=await e.json();return t.choices?.[0]?.message?.reasoning_content&&(t.choices[0].message.thinking={content:t.choices[0].message.reasoning_content},delete t.choices[0].message.reasoning_content),new Response(JSON.stringify(t),{status:e.status,statusText:e.statusText,headers:e.headers})}if(e.headers.get("Content-Type")?.includes("stream")){if(!e.body)return e;let t=new TextDecoder,o=new TextEncoder,r=!1,s="",a=!1,l=!1,c="",i=new ReadableStream({async start(u){let d=e.body.getReader(),m=(y,p,f)=>{let _=y.split(`
|
|
283
|
+
`);for(let k of _)k.trim()&&p.enqueue(f.encode(k+`
|
|
284
|
+
`))},g=(y,p)=>{let{controller:f,encoder:_}=p;if(y.startsWith("data: ")&&y.trim()!=="data: [DONE]")try{let k=JSON.parse(y.slice(6));if(k.usage&&(k.choices[0].finish_reason=l?"tool_calls":"stop"),k.choices?.[0]?.finish_reason==="error"){f.enqueue(_.encode(`data: ${JSON.stringify({error:k.choices?.[0]?.error})}
|
|
285
|
+
|
|
286
|
+
`));return}k.choices?.[0]?.delta?.content&&!p.hasTextContent()&&p.setHasTextContent(!0);let h=k.choices?.[0]?.delta?.reasoning||k.choices?.[0]?.delta?.reasoning_content;if(h){p.appendReasoningContent(h);let R={...k,choices:[{...k.choices?.[0],delta:{...k.choices[0].delta,thinking:{content:h}}}]};R.choices?.[0]?.delta&&(delete R.choices[0].delta.reasoning,delete R.choices[0].delta.reasoning_content),f.enqueue(_.encode(`data: ${JSON.stringify(R)}
|
|
287
|
+
|
|
288
|
+
`));return}if(k.choices?.[0]?.delta?.content&&p.reasoningContent()&&!p.isReasoningComplete()){p.setReasoningComplete(!0);let R="ccr_think_signature",T=k.choices[0].delta.content,A={...k,choices:[{...k.choices?.[0],delta:{...k.choices[0].delta,content:null,thinking:{content:p.reasoningContent(),signature:R}}}]};A.choices?.[0]?.delta&&(delete A.choices[0].delta.reasoning,delete A.choices[0].delta.reasoning_content),f.enqueue(_.encode(`data: ${JSON.stringify(A)}
|
|
289
|
+
|
|
290
|
+
`));let w={...k,choices:[{...k.choices?.[0],delta:{...k.choices[0].delta,content:T}}]};w.choices?.[0]?.delta&&(delete w.choices[0].delta.reasoning,delete w.choices[0].delta.reasoning_content),f.enqueue(_.encode(`data: ${JSON.stringify(w)}
|
|
291
|
+
|
|
292
|
+
`));return}k.choices?.[0]?.delta?.reasoning&&delete k.choices[0].delta.reasoning,k.choices?.[0]?.delta?.reasoning_content&&delete k.choices[0].delta.reasoning_content,k.choices?.[0]?.delta?.tool_calls?.length&&!Number.isNaN(parseInt(k.choices?.[0]?.delta?.tool_calls[0].id,10))&&k.choices?.[0]?.delta?.tool_calls.forEach(R=>{R.id=`call_${ll()}`}),k.choices?.[0]?.delta?.tool_calls?.length&&!l&&(l=!0);let b=k.choices?.[0]?.delta,x=b&&Object.keys(b).length>0,v=k.choices?.[0]?.finish_reason,C=k.usage;(x||v||C)&&f.enqueue(_.encode(`data: ${JSON.stringify(k)}
|
|
293
|
+
|
|
294
|
+
`))}catch{f.enqueue(_.encode(y+`
|
|
295
|
+
`))}else f.enqueue(_.encode(y+`
|
|
296
|
+
`))};try{for(;;){let{done:y,value:p}=await d.read();if(y){c.trim()&&m(c,u,o);break}if(!p||p.length===0)continue;let f;try{f=t.decode(p,{stream:!0})}catch(k){console.warn("Failed to decode chunk",k);continue}if(f.length===0)continue;if(c+=f,c.length>1e6){console.warn("Buffer size exceeds limit, processing partial data");let k=c.split(`
|
|
297
|
+
`);c=k.pop()||"";for(let h of k)if(h.trim())try{g(h,{controller:u,encoder:o,hasTextContent:()=>r,setHasTextContent:b=>r=b,reasoningContent:()=>s,appendReasoningContent:b=>s+=b,isReasoningComplete:()=>a,setReasoningComplete:b=>a=b})}catch(b){console.error("Error processing line:",h,b),u.enqueue(o.encode(h+`
|
|
298
|
+
`))}continue}let _=c.split(`
|
|
299
|
+
`);c=_.pop()||"";for(let k of _)if(k.trim())try{g(k,{controller:u,encoder:o,hasTextContent:()=>r,setHasTextContent:h=>r=h,reasoningContent:()=>s,appendReasoningContent:h=>s+=h,isReasoningComplete:()=>a,setReasoningComplete:h=>a=h})}catch(h){console.error("Error processing line:",k,h),u.enqueue(o.encode(k+`
|
|
300
|
+
`))}}}catch(y){console.error("Stream error:",y),u.error(y)}finally{try{d.releaseLock()}catch(y){console.error("Error releasing reader lock:",y)}u.close()}}});return new Response(i,{status:e.status,statusText:e.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}return e}}});var Ys,qs=S(()=>{vs();Rs();ws();Ss();Ps();As();Os();Es();Is();$s();Ns();Ls();Fs();Hs();Js();Bs();Ws();Gs();Vs();qn();Qs();Ks();Xs();Ys={AnthropicTransformer:Ft,GeminiTransformer:zt,VertexGeminiTransformer:Ht,VertexClaudeTransformer:Zt,DeepseekTransformer:Jt,TooluseTransformer:Bt,OpenrouterTransformer:Wt,OpenAITransformer:nn,MaxTokenTransformer:Gt,GroqTransformer:Vt,CleancacheTransformer:Qt,EnhanceToolTransformer:Kt,ReasoningTransformer:Xt,SamplingTransformer:Yt,MaxCompletionTokens:qt,CerebrasTransformer:en,StreamOptionsTransformer:tn,CustomParamsTransformer:on,VercelTransformer:rn,OpenAIResponsesTransformer:Re,ForceReasoningTransformer:sn,KimiTransformer:an,OpenCodeTransformer:cn}});var Me,po=S(()=>{"use strict";qs();Me=class{constructor(e,t){this.configService=e;this.logger=t}transformers=new Map;registerTransformer(e,t){this.transformers.set(e,t),this.logger.info(`register transformer: ${e}${t.endPoint?` (endpoint: ${t.endPoint})`:" (no endpoint)"}`)}getTransformer(e){return this.transformers.get(e)}getAllTransformers(){return new Map(this.transformers)}getTransformersWithEndpoint(){let e=[];return this.transformers.forEach((t,o)=>{typeof t=="object"&&t.endPoint&&e.push({name:o,transformer:t})}),e}getTransformersWithoutEndpoint(){let e=[];return this.transformers.forEach((t,o)=>{typeof t=="object"&&!t.endPoint&&e.push({name:o,transformer:t})}),e}removeTransformer(e){return this.transformers.delete(e)}hasTransformer(e){return this.transformers.has(e)}async registerTransformerFromConfig(e){try{if(e.path){let t=Be(Be.resolve(e.path));if(t){let o=new t(e.options);if(o&&typeof o=="object"&&(o.logger=this.logger),!o.name)throw new Error(`Transformer instance from ${e.path} does not have a name property.`);return this.registerTransformer(o.name,o),!0}}return!1}catch(t){return this.logger.error(`load transformer (${e.path})
|
|
301
|
+
error: ${t.message}
|
|
302
|
+
stack: ${t.stack}`),!1}}async initialize(){try{await this.registerDefaultTransformersInternal(),await this.loadFromConfig()}catch(e){this.logger.error(`TransformerService init error: ${e.message}
|
|
303
|
+
Stack: ${e.stack}`)}}async registerDefaultTransformersInternal(){try{Object.values(Ys).forEach(e=>{if("TransformerName"in e&&typeof e.TransformerName=="string")this.registerTransformer(e.TransformerName,e);else{let t=new e;t&&typeof t=="object"&&(t.logger=this.logger),this.registerTransformer(t.name,t)}})}catch(e){this.logger.error({error:e},"transformer regist error:")}}async loadFromConfig(){let e=this.configService.get("transformers",[]);for(let t of e)await this.registerTransformerFromConfig(t)}}});import{get_encoding as ul}from"tiktoken";var ot,Zs=S(()=>{"use strict";ot=class{type="tiktoken";name;encoding;constructor(e="cl100k_base"){this.name=`tiktoken-${e}`;try{this.encoding=ul(e)}catch{throw new Error(`Failed to initialize tiktoken encoding: ${e}`)}}async initialize(){if(!this.encoding)throw new Error("Tiktoken encoding not initialized")}async countTokens(e){let t=this.encoding;if(!t)throw new Error("Encoding not initialized");let o=0,{messages:r,system:s,tools:a}=e;return Array.isArray(r)&&r.forEach(l=>{typeof l.content=="string"?o+=t.encode(l.content).length:Array.isArray(l.content)&&l.content.forEach(c=>{if(c.type==="text")o+=t.encode(c.text).length;else if(c.type==="tool_use")o+=t.encode(JSON.stringify(c.input)).length;else if(c.type==="tool_result"){let i=typeof c.content=="string"?c.content:JSON.stringify(c.content);o+=t.encode(i).length}})}),typeof s=="string"?o+=t.encode(s).length:Array.isArray(s)&&s.forEach(l=>{l.type==="text"&&(typeof l.text=="string"?o+=t.encode(l.text).length:Array.isArray(l.text)&&l.text.forEach(c=>{o+=t.encode(c||"").length}))}),a&&a.forEach(l=>{l.description&&(o+=t.encode(l.name+l.description).length),l.input_schema&&(o+=t.encode(JSON.stringify(l.input_schema)).length)}),o}isInitialized(){return this.encoding!==void 0}encodeText(e){let t=this.encoding;if(!t)throw new Error("Encoding not initialized");return Array.from(t.encode(e))}dispose(){this.encoding&&(this.encoding.free(),this.encoding=void 0)}}});import{join as ln}from"path";import{homedir as dl}from"os";import{existsSync as fo,mkdirSync as pl}from"fs";import{promises as un}from"fs";import{Tokenizer as fl}from"@huggingface/tokenizers";var dn,ei=S(()=>{"use strict";dn=class{type="huggingface";name;modelId;logger;options;tokenizer=null;cacheDir;safeModelName;constructor(e,t,o={}){this.modelId=e,this.logger=t,this.options=o,this.cacheDir=o.cacheDir||ln(dl(),".claude-code-router",".huggingface"),this.safeModelName=e.replace(/\//g,"_").replace(/[^a-zA-Z0-9_-]/g,"_"),this.name=`huggingface-${e.split("/").pop()}`}getCachePaths(){let e=ln(this.cacheDir,this.safeModelName);return{modelDir:e,tokenizerJson:ln(e,"tokenizer.json"),tokenizerConfig:ln(e,"tokenizer_config.json")}}ensureDir(e){fo(e)||pl(e,{recursive:!0})}async loadFromCache(){try{let e=this.getCachePaths();if(!fo(e.tokenizerJson)||!fo(e.tokenizerConfig))return null;let[t,o]=await Promise.all([un.readFile(e.tokenizerJson,"utf-8"),un.readFile(e.tokenizerConfig,"utf-8")]);return{tokenizerJson:JSON.parse(t),tokenizerConfig:JSON.parse(o)}}catch(e){return this.logger?.warn(`Failed to load from cache: ${e.message}`),null}}async downloadAndCache(){let e=this.getCachePaths(),t={json:`https://huggingface.co/${this.modelId}/resolve/main/tokenizer.json`,config:`https://huggingface.co/${this.modelId}/resolve/main/tokenizer_config.json`};this.logger?.info(`Downloading tokenizer files for ${this.modelId}`);let o=new AbortController,r=setTimeout(()=>o.abort(),this.options.timeout||3e4);try{let[s,a]=await Promise.all([fetch(t.json,{signal:o.signal}),fetch(t.config,{signal:o.signal})]);if(!s.ok)throw new Error(`Failed to fetch tokenizer.json: ${s.statusText}`);let[l,c]=await Promise.all([s.json(),a.ok?a.json():Promise.resolve({})]);return this.ensureDir(e.modelDir),await Promise.all([un.writeFile(e.tokenizerJson,JSON.stringify(l,null,2)),un.writeFile(e.tokenizerConfig,JSON.stringify(c,null,2))]),{tokenizerJson:l,tokenizerConfig:c}}finally{clearTimeout(r)}}async initialize(){try{this.logger?.info(`Initializing HuggingFace tokenizer: ${this.modelId}`);let e=this.getCachePaths();this.ensureDir(this.cacheDir);let t=await this.loadFromCache()||await this.downloadAndCache();this.tokenizer=new fl(t.tokenizerJson,t.tokenizerConfig),this.logger?.info(`Tokenizer initialized: ${this.name}`)}catch(e){throw this.logger?.error(`Failed to initialize tokenizer: ${e.message}`),new Error(`Failed to initialize HuggingFace tokenizer for ${this.modelId}: ${e.message}`)}}async countTokens(e){if(!this.tokenizer)throw new Error("Tokenizer not initialized");try{let t=this.extractTextFromRequest(e);return this.tokenizer.encode(t).ids.length}catch(t){throw this.logger?.error(`Error counting tokens: ${t.message}`),t}}isInitialized(){return this.tokenizer!==null}encodeText(e){if(!this.tokenizer)throw new Error("Tokenizer not initialized");return this.tokenizer.encode(e).ids}dispose(){this.tokenizer=null}extractTextFromRequest(e){let t=[],{messages:o,system:r,tools:s}=e;if(Array.isArray(o)){for(let a of o)if(typeof a.content=="string")t.push(a.content);else if(Array.isArray(a.content))for(let l of a.content)l.type==="text"&&l.text?t.push(l.text):l.type==="tool_use"&&l.input?t.push(JSON.stringify(l.input)):l.type==="tool_result"&&t.push(typeof l.content=="string"?l.content:JSON.stringify(l.content))}if(typeof r=="string")t.push(r);else if(Array.isArray(r)){for(let a of r)if(a.type==="text"){if(typeof a.text=="string")t.push(a.text);else if(Array.isArray(a.text))for(let l of a.text)l&&t.push(l)}}if(s)for(let a of s)a.name&&t.push(a.name),a.description&&t.push(a.description),a.input_schema&&t.push(JSON.stringify(a.input_schema));return t.join(" ")}}});var pn,ti=S(()=>{"use strict";Z();pn=class{type="api";name;config;logger;options;constructor(e,t,o={}){if(!e.url||!e.apiKey)throw new Error("API tokenizer requires url and apiKey");this.config={url:e.url,apiKey:e.apiKey,requestFormat:e.requestFormat||"standard",responseField:e.responseField||"token_count",headers:e.headers||{}},this.logger=t,this.options=o;try{let r=new URL(e.url);this.name=`api-${r.hostname}`}catch{this.name=`api-${e.url}`}}async initialize(){try{new URL(this.config.url)}catch{throw new Error(`Invalid API URL: ${this.config.url}`)}}async countTokens(e){try{let t=this.formatRequestBody(e),o={"Content-Type":"application/json",Authorization:`Bearer ${this.config.apiKey}`,...this.config.headers},r=new AbortController,s=setTimeout(()=>r.abort(),this.options.timeout||3e4),a={method:"POST",headers:o,body:JSON.stringify(t),signal:r.signal},l=this.options.resolveProxyUrl?.();l&&(a.dispatcher=V(l));let c=await fetch(this.config.url,a);if(clearTimeout(s),!c.ok)throw new Error(`API tokenizer request failed: ${c.status} ${c.statusText}`);let i=await c.json();return this.extractTokenCount(i)}catch(t){throw t.name==="AbortError"?new Error("API tokenizer request timed out"):t}}isInitialized(){return!0}dispose(){}formatRequestBody(e){switch(this.config.requestFormat){case"standard":return e;case"openai":return{model:"gpt-3.5-turbo",messages:this.extractMessagesAsOpenAIFormat(e)};case"anthropic":return{messages:e.messages||[],system:e.system,tools:e.tools};case"custom":return{text:this.extractConcatenatedText(e)};default:return e}}extractMessagesAsOpenAIFormat(e){return e.messages?e.messages.map(t=>({role:t.role,content:this.extractTextFromMessage(t)})):[]}extractTextFromMessage(e){return typeof e.content=="string"?e.content:Array.isArray(e.content)?e.content.map(t=>t.type==="text"&&t.text?t.text:t.type==="tool_use"&&t.input?JSON.stringify(t.input):t.type==="tool_result"?typeof t.content=="string"?t.content:JSON.stringify(t.content):"").join(" "):""}extractConcatenatedText(e){let t=[];return e.messages&&e.messages.forEach(o=>{t.push(this.extractTextFromMessage(o))}),typeof e.system=="string"?t.push(e.system):Array.isArray(e.system)&&e.system.forEach(o=>{o.type==="text"&&(typeof o.text=="string"?t.push(o.text):Array.isArray(o.text)&&o.text.forEach(r=>{r&&t.push(r)}))}),e.tools&&e.tools.forEach(o=>{o.name&&t.push(o.name),o.description&&t.push(o.description),o.input_schema&&t.push(JSON.stringify(o.input_schema))}),t.join(" ")}extractTokenCount(e){try{let t=this.config.responseField,o=t.split("."),r=e;for(let s of o){if(r==null)throw new Error(`Field path '${t}' not found in response`);r=r[s]}if(typeof r!="number")throw new Error(`Expected number at field path '${t}', got ${typeof r}`);return r}catch(t){throw this.logger?.error(`Failed to extract token count from API response: ${t.message}. Response: ${JSON.stringify(e)}`),new Error(`Invalid response from API tokenizer: ${t.message}`)}}}});var $e,mo=S(()=>{"use strict";Zs();ei();ti();Z();$e=class{tokenizers=new Map;configService;logger;options;fallbackTokenizer;constructor(e,t,o={}){this.configService=e,this.logger=t,this.options={timeout:o.timeout??3e4,...o}}async initialize(){try{this.fallbackTokenizer=new ot("cl100k_base"),await this.fallbackTokenizer.initialize(),this.tokenizers.set("fallback",this.fallbackTokenizer),this.logger?.info("TokenizerService initialized successfully")}catch(e){throw this.logger?.error(`TokenizerService initialization error: ${e.message}`),e}}async getTokenizer(e,t){let o=this.getCacheKey(e,t);if(this.tokenizers.has(o))return this.tokenizers.get(o);let r;try{switch(e.type){case"tiktoken":r=new ot(e.encoding||"cl100k_base");break;case"huggingface":this.logger?.info(`Initializing HuggingFace tokenizer for model: ${e.model}`),r=new dn(e.model,this.logger,{timeout:this.options.timeout});break;case"api":r=new pn(e,this.logger,{timeout:this.options.timeout,resolveProxyUrl:()=>{let s=t?this.getRawProvider(t):void 0;return se(this.configService,s)}});break;default:throw new Error(`Unknown tokenizer type: ${e.type}`)}return this.logger?.info(`Calling initialize() on ${e.type} tokenizer...`),await r.initialize(),this.tokenizers.set(o,r),this.logger?.info(`Tokenizer initialized successfully: ${e.type} (${o})`),r}catch(s){return this.logger?.error(`Failed to initialize ${e.type} tokenizer: ${s.message}`),this.logger?.error(`Error stack: ${s.stack}`),this.fallbackTokenizer||await this.initialize(),this.fallbackTokenizer}}async countTokens(e,t,o){let r=t?await this.getTokenizer(t,o):this.fallbackTokenizer;return{tokenCount:await r.countTokens(e),tokenizerUsed:r.name,cached:!1}}getTokenizerConfigForModel(e,t){let r=(this.configService.get("providers")||[]).find(s=>s.name===e);if(r?.tokenizer)return r.tokenizer.models?.[t]?r.tokenizer.models[t]:r.tokenizer.default}dispose(){this.tokenizers.forEach(e=>{try{e.dispose()}catch(t){this.logger?.error(`Error disposing tokenizer: ${t}`)}}),this.tokenizers.clear()}getCacheKey(e,t){switch(e.type){case"tiktoken":return`tiktoken:${e.encoding||"cl100k_base"}`;case"huggingface":return`hf:${e.model}`;case"api":return`api:${t||"unscoped"}:${e.url}`;default:return`unknown:${JSON.stringify(e)}`}}getRawProvider(e){return(this.configService.get("providers")||[]).find(o=>o?.name===e)}}});function vo(n){let e=Ro(n);return e?e==="kimi.com"||e.endsWith(".kimi.com")||e==="moonshot.cn"||e.endsWith(".moonshot.cn")?bl:e==="minimaxi.com"||e.endsWith(".minimaxi.com")||e==="minimax.io"||e.endsWith(".minimax.io")?xl:e==="deepseek.com"||e.endsWith(".deepseek.com")?ml:e==="openrouter.ai"||e.endsWith(".openrouter.ai")?gl:e==="siliconflow.com"||e.endsWith(".siliconflow.com")||e==="siliconflow.cn"||e.endsWith(".siliconflow.cn")?hl:e==="bigmodel.cn"||e.endsWith(".bigmodel.cn")?yl:e==="dashscope.aliyuncs.com"||e.endsWith(".dashscope.aliyuncs.com")?_l:e==="xf-yun.com"||e.endsWith(".xf-yun.com")||e==="xfyun.cn"||e.endsWith(".xfyun.cn")||e==="xfyun.com"||e.endsWith(".xfyun.com")?kl:null:null}function Cl(n){let e=Ro(n);return e?.endsWith(".siliconflow.cn")||e==="siliconflow.cn"?"https://api.siliconflow.cn/v1/user/info":"https://api.siliconflow.com/v1/user/info"}function Tl(n,e){let t=To(n);if(t.length===0)return null;let o=String(e||"").split(":").map(s=>s.trim()).filter(Boolean);return t.find(s=>{let a=s?.codingPlanAppCredentialDTO||s?.appCredential||s,l=String(a?.apiKey||a?.api_key||"").trim();return l&&o.some(c=>c.includes(l)||l.includes(c))})||t[0]}function To(n){return!n||typeof n!="object"?[]:!Array.isArray(n)&&n.codingPlanUsageDTO?[n]:Array.isArray(n)?n.flatMap(e=>To(e)):Object.values(n).flatMap(e=>To(e))}function ni(n,e){let t=n.match(new RegExp(`(?:^|;\\s*)${e}=([^;]+)`));return t?decodeURIComponent(t[1]):void 0}function Ro(n){try{return new URL(n).hostname.toLowerCase()}catch{return null}}function M(n){if(typeof n=="number")return Number.isFinite(n)?n:void 0;if(typeof n!="string")return;let e=n.trim().replace(/,/g,"");if(!e)return;let t=Number(e);return Number.isFinite(t)?t:void 0}var ne,go,ho,yo,_o,ko,bo,xo,Co,ml,gl,hl,yl,_l,kl,bl,xl,wo=S(()=>{"use strict";Z();ne=class{async fetchJson(e,t,o,r,s){let a=s||t.apiKey;if(!a)return null;let l={method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${a}`},signal:AbortSignal.timeout(o)};try{r&&(l.dispatcher=V(r));let c=await fetch(e,l);return c.ok?await c.json():null}catch{return null}}hasQuotaData(e){return e.totalBalance!==void 0||e.usedBalance!==void 0||e.remainingBalance!==void 0||e.usedDailyBalance!==void 0||e.limitDaily!==void 0||e.resetTime!==void 0}},go=class extends ne{async queryQuota(e,t,o){let r=await this.fetchJson("https://api.deepseek.com/user/balance",e,t,o),a=(Array.isArray(r?.balance_infos)?r.balance_infos:[]).find(c=>M(c?.total_balance)!==void 0);if(!a)return null;let l=M(a.total_balance);return l===void 0?null:{totalBalance:l,currency:typeof a.currency=="string"?a.currency:void 0}}},ho=class extends ne{async queryQuota(e,t,o){let s=(await this.fetchJson("https://openrouter.ai/api/v1/key",e,t,o))?.data;if(!s||typeof s!="object")return null;let a={},l=M(s.limit),c=M(s.limit_remaining),i=M(s.usage),u=M(s.usage_daily);return l!==void 0&&(a.totalBalance=l),c!==void 0&&(a.remainingBalance=c),i!==void 0&&(a.usedBalance=i),u!==void 0&&(a.usedDailyBalance=u),this.hasQuotaData(a)?a:null}},yo=class extends ne{async queryQuota(e,t,o){let r=Cl(e.baseUrl),a=(await this.fetchJson(r,e,t,o))?.data;if(!a||typeof a!="object")return null;let l={},c=M(a.totalBalance),i=M(a.balance);return c!==void 0&&(l.totalBalance=c),i!==void 0&&(l.remainingBalance=i),c!==void 0&&i!==void 0&&(l.usedBalance=Math.max(0,c-i)),this.hasQuotaData(l)?l:null}},_o=class extends ne{async queryQuota(e,t,o){if(!e.apiKey)return null;let s={method:"GET",headers:{Accept:"application/json",Authorization:e.apiKey.trim()},signal:AbortSignal.timeout(t)};try{o&&(s.dispatcher=V(o));let a=await fetch("https://api.z.ai/api/monitor/usage/quota/limit",s);if(!a.ok)return null;let l=await a.json(),c=Array.isArray(l?.data?.limits)?l.data.limits:[],i=null,u=null,d=null;for(let g of c)g.type==="TOKENS_LIMIT"?g.unit===3?i=g:g.unit===6?u=g:i||(i=g):g.type==="TIME_LIMIT"&&(d=g);let m={};if(i){let g=M(i.currentValue),y=M(i.usage),p=M(i.remaining),f=M(i.percentage);g!==void 0?m.usedDailyBalance=g:f!==void 0&&(m.usedDailyBalance=f,m.limitDaily=100),y!==void 0?m.limitDaily=y:g!==void 0&&p!==void 0&&(m.limitDaily=g+p),i.nextResetTime&&(m.resetTime=new Date(i.nextResetTime).toISOString())}if(u){let g=M(u.currentValue),y=M(u.usage),p=M(u.remaining),f=M(u.percentage);g!==void 0?m.usedBalance=g:f!==void 0&&(m.usedBalance=f,m.totalBalance=100),y!==void 0?m.totalBalance=y:g!==void 0&&p!==void 0&&(m.totalBalance=g+p),u.nextResetTime&&!m.resetTime&&(m.resetTime=new Date(u.nextResetTime).toISOString())}if(d){if(m.usedDailyBalance===void 0){let g=M(d.currentValue);g!==void 0&&(m.usedDailyBalance=g)}if(m.limitDaily===void 0){let g=M(d.usage),y=M(d.currentValue),p=M(d.remaining);g!==void 0?m.limitDaily=g:y!==void 0&&p!==void 0&&(m.limitDaily=y+p)}d.nextResetTime&&!m.resetTime&&(m.resetTime=new Date(d.nextResetTime).toISOString())}return this.hasQuotaData(m)?m:null}catch{return null}}},ko=class extends ne{async queryQuota(e,t,o){if(!e.quotaToken)return null;let r={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",Origin:"https://bailian.console.aliyun.com",Referer:"https://bailian.console.aliyun.com/cn-beijing",Cookie:e.quotaToken},signal:AbortSignal.timeout(t)},s=JSON.stringify({Api:"zeldaEasy.broadscope-bailian.codingPlan.queryCodingPlanInstanceInfoV2",V:"1.0",Data:{queryCodingPlanInstanceInfoRequest:{commodityCode:"sfm_codingplan_public_cn",onlyLatestOne:!0},cornerstoneParam:{feTraceId:`ccr-${Date.now()}`,feURL:"https://bailian.console.aliyun.com/cn-beijing",protocol:"V2",console:"ONE_CONSOLE",productCode:"p_efm",switchAgent:10736808,switchUserType:3,domain:"bailian.console.aliyun.com",consoleSite:"BAILIAN_ALIYUN",userNickName:"",userPrincipalName:"",xsp_lang:"zh-CN"}}}),a=new URLSearchParams({params:s,region:"cn-beijing"}).toString();try{o&&(r.dispatcher=V(o));let l=await fetch("https://bailian-cs.console.aliyun.com/data/api.json?action=BroadScopeAspnGateway&product=sfm_bailian&api=zeldaEasy.broadscope-bailian.codingPlan.queryCodingPlanInstanceInfoV2",{...r,body:a});if(!l.ok)return null;let i=(await l.json())?.data?.DataV2?.data?.data?.codingPlanInstanceInfos;if(!Array.isArray(i)||i.length===0)return null;let u=i[0]?.codingPlanQuotaInfo;if(!u)return null;let d={},m=M(u.per5HourUsedQuota),g=M(u.per5HourTotalQuota);m!==void 0&&(d.usedDailyBalance=m),g!==void 0&&(d.limitDaily=g);let y=M(u.perWeekUsedQuota),p=M(u.perWeekTotalQuota);return y!==void 0&&(d.usedBalance=y),p!==void 0&&(d.totalBalance=p),this.hasQuotaData(d)?d:null}catch{return null}}},bo=class extends ne{async queryQuota(e,t,o){if(!e.quotaToken)return null;let s={method:"GET",headers:{Accept:"application/json","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",Origin:"https://maas.xfyun.cn",Referer:"https://maas.xfyun.cn/packageSubscription",Authorization:(ni(e.quotaToken,"atp-auth-token")||ni(e.quotaToken,"tenantToken")||e.quotaToken).trim(),Cookie:e.quotaToken},signal:AbortSignal.timeout(t)};try{o&&(s.dispatcher=V(o));let a=await fetch("https://maas.xfyun.cn/api/v1/gpt-finetune/coding-plan/list?page=1&size=10",s);if(!a.ok)return null;let l=await a.json();if(l?.succeed===!1||l?.failed===!0)return null;let c=Tl(l,e.apiKey),i=c?.codingPlanUsageDTO||c?.usage||c;if(!i||typeof i!="object")return null;let u={},d=M(i.rp5hUsage),m=M(i.rp5hLimit);d!==void 0&&(u.usedDailyBalance=d),m!==void 0&&(u.limitDaily=m);let g=M(i.rpwUsage),y=M(i.rpwLimit);return g!==void 0&&(u.usedBalance=g),y!==void 0&&(u.totalBalance=y),u.remainingBalance===void 0&&y!==void 0&&g!==void 0&&(u.remainingBalance=Math.max(0,y-g)),this.hasQuotaData(u)?u:null}catch{return null}}},xo=class extends ne{async queryQuota(e,t,o){let r=e.quotaToken||e.apiKey;if(!r)return null;let s={method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${r.trim()}`},signal:AbortSignal.timeout(t)};try{o&&(s.dispatcher=V(o));let a=await fetch("https://api.kimi.com/coding/v1/usages",s);if(!a.ok)return null;let l=await a.json(),c={},i=Array.isArray(l?.limits)?l.limits:[];if(i.length>0&&i[0]?.detail){let d=i[0].detail,m=M(d.limit),g=M(d.remaining),y=d.resetTime;m!==void 0&&g!==void 0&&(c.usedDailyBalance=Math.max(0,m-g),c.limitDaily=m),y&&(c.resetTime=new Date(y).toISOString())}let u=l?.usage;if(u){let d=M(u.limit),m=M(u.remaining),g=M(u.used),y=u.resetTime;d!==void 0&&(c.totalBalance=d,g!==void 0?c.usedBalance=g:m!==void 0&&(c.usedBalance=Math.max(0,d-m),c.remainingBalance=m)),y&&(c.resetTime7d=new Date(y).toISOString(),c.resetTime||(c.resetTime=c.resetTime7d))}return this.hasQuotaData(c)?c:null}catch{return null}}},Co=class extends ne{async queryQuota(e,t,o){let r=e.quotaToken||e.apiKey;if(!r)return null;let s=Ro(e.baseUrl)||"api.minimaxi.com",a=s.endsWith(".minimax.io")||s==="minimax.io"?"api.minimax.io":"api.minimaxi.com";try{let l=[`https://${a}/v1/token_plan/remains`,`https://${a}/v1/api/openplatform/coding_plan/remains`],c=null;for(let b of l)if(c=await this.fetchJson(b,e,t,o,r.trim()),c)break;if(!c)return null;if(c?.base_resp){let b=c.base_resp.status_code;if(b!==void 0&&b!==0)return null}let i=Array.isArray(c?.model_remains)?c.model_remains:[];if(i.length===0)return null;let u=i[0],d={},m=M(u.current_interval_total_count),g=M(u.current_interval_usage_count),y=M(u.current_interval_remaining_percent),p=M(u.end_time);m!==void 0&&g!==void 0&&m>0?(d.usedDailyBalance=Math.max(0,m-g),d.limitDaily=m):y!==void 0&&(d.limitDaily=100,d.usedDailyBalance=Math.max(0,100-y)),p&&(d.resetTime=new Date(p).toISOString());let f=M(u.current_weekly_total_count),_=M(u.current_weekly_usage_count),k=M(u.current_weekly_remaining_percent),h=M(u.weekly_end_time);return f!==void 0&&_!==void 0&&f>0?(d.usedBalance=Math.max(0,f-_),d.remainingBalance=_,d.totalBalance=f):k!==void 0&&(d.totalBalance=100,d.usedBalance=Math.max(0,100-k),d.remainingBalance=k),h&&!d.resetTime&&(d.resetTime=new Date(h).toISOString()),this.hasQuotaData(d)?d:null}catch{return null}}},ml=new go,gl=new ho,hl=new yo,yl=new _o,_l=new ko,kl=new bo,bl=new xo,xl=new Co});function oi(n){return{[vl]:n,[Rl]:Rt}}function Sl(n){return n===!0||n==="true"||n===1||n==="1"}function Pl(n){let e=n.getFullYear(),t=String(n.getMonth()+1).padStart(2,"0"),o=String(n.getDate()).padStart(2,"0");return`${e}-${t}-${o}`}function Al(n){try{let e=new URL(n),t=e.pathname;return t.endsWith("/v1/messages")?t=t.slice(0,-12):t.endsWith("/messages")?t=t.slice(0,-9):t.endsWith("/v1/chat/completions")?t=t.slice(0,-20):t.endsWith("/chat/completions")&&(t=t.slice(0,-17)),t.endsWith("/v1")||(t=t.endsWith("/")?`${t}v1`:`${t}/v1`),e.pathname=`${t}/models`,e.toString()}catch{return null}}function Ol(n){try{let e=new URL(n).hostname.toLowerCase();return e.includes("moonshot")||e.includes("kimi")}catch{return!1}}async function So(n,e,t){let o=Al(n.baseUrl);if(!o)return{success:!1,error:"Cannot derive models endpoint from baseUrl"};try{let r={method:"GET",headers:{Authorization:`Bearer ${n.apiKey}`},signal:AbortSignal.timeout(e)};t&&(r.dispatcher=V(t));let s=await fetch(o,r);if(s.headers&&Ge(n.name,n.baseUrl,s.headers),s.ok)return{success:!0,headers:s.headers};if(s.status===429)return{success:!1,error:`HTTP 429: ${(await s.text().catch(()=>"")).slice(0,100)||"Rate limited"}`,headers:s.headers};if(s.status>=400&&s.status<500)return{success:!0,headers:s.headers};let a=await s.text().catch(()=>"");return{success:!1,error:`HTTP ${s.status}: ${a.slice(0,100)}`,headers:s.headers}}catch(r){return{success:!1,error:r?.message||r?.toString()||"Unknown probe error"}}}async function El(n,e,t,o){let r=n.wakeupModel||(Array.isArray(n.models)?n.models[0]:void 0);if(!r)return{success:!1,error:"No models configured for provider"};let s=n.baseUrl,a=n.baseUrl.includes("/messages")||r.includes("claude");try{let l={"Content-Type":"application/json",...oi("scheduled-wakeup")};a?(l["x-api-key"]=n.apiKey,l["anthropic-version"]="2023-06-01"):l.Authorization=`Bearer ${n.apiKey}`;let c={method:"POST",headers:l,body:JSON.stringify({model:r,messages:[{role:"user",content:"Wake up and acknowledge with a short greeting."}],max_tokens:10}),signal:AbortSignal.timeout(e)};t&&(c.dispatcher=V(t)),o?.info(`Sending scheduled wake-up call to provider ${n.name} using model ${r}...`);let i=await fetch(s,c);if(i.ok)return{success:!0};let u=await i.text().catch(()=>"");return{success:!1,error:`HTTP ${i.status}: ${u.slice(0,200)||"Unknown error"}`}}catch(l){return{success:!1,error:l?.message||l?.toString()||"Unknown wake-up error"}}}async function Il(n,e,t,o,r){let s=n.baseUrl,a=n.baseUrl.includes("/messages")||e.includes("claude");try{let l={"Content-Type":"application/json",...oi("rate-limit-probe")};a?(l["x-api-key"]=n.apiKey,l["anthropic-version"]="2023-06-01"):l.Authorization=`Bearer ${n.apiKey}`;let c={method:"POST",headers:l,body:JSON.stringify({model:e,messages:[{role:"user",content:"Hello, please reply briefly."}],max_tokens:10}),signal:AbortSignal.timeout(t)};o&&(c.dispatcher=V(o)),r?.debug?.(`Sending independent ping to rate-limited model ${n.name} (${e})...`);let i=await fetch(s,c);if(i.ok)return{success:!0};let u=await i.text().catch(()=>"");return{success:!1,error:`HTTP ${i.status}: ${u.slice(0,200)||"Unknown error"}`}}catch(l){return{success:!1,error:l?.message||l?.toString()||"Unknown ping error"}}}function ri(n,e,t,o,r){return de||(de=new fn(n,e,t,o,r)),de}function Ne(n,e,t,o,r){let s=ri(n,e,t,o,r);return s.start(),s}function Po(){de&&de.stop()}function mn(){de&&(de.stop(),de=null)}var vl,Rl,wl,fn,de,gn=S(()=>{"use strict";ee();ve();wo();Se();Hn();Z();vl="x-claude-code-router-source",Rl="x-claude-code-router-version";wl={enabled:!0,quotaProbeIntervalMinutes:10,probeTimeoutMs:15e3,initialDelayMs:5e3,excludeProviders:[]};fn=class{config;quotaProbeTimer;healthProbeTimer;wakeupTimer;rateLimitProbeTimer;lastWakeupDate=new Map;getProviders;resolveProxyUrl;logger;getConfig;running=!1;constructor(e,t,o,r,s){this.config={...wl,...t},this.getProviders=e,this.resolveProxyUrl=o,this.logger=r,this.getConfig=s}start(){if(this.running)return;let e=this.isWakeupGloballyEnabled();!this.config.enabled&&!e||(this.running=!0,setTimeout(()=>{this.running&&(this.config.enabled&&(this.runQuotaProbe(),this.runHealthProbe(),this.runRateLimitProbe()),this.runScheduledWakeup())},this.config.initialDelayMs),this.config.enabled&&(this.quotaProbeTimer=setInterval(()=>this.runQuotaProbe(),this.config.quotaProbeIntervalMinutes*60*1e3),this.healthProbeTimer=setInterval(()=>this.runHealthProbe(),300*1e3),this.rateLimitProbeTimer=setInterval(()=>this.runRateLimitProbe(),120*1e3)),this.wakeupTimer=setInterval(()=>this.runScheduledWakeup(),60*1e3),this.logger?.info("Active probe service started"))}stop(){this.running=!1,this.quotaProbeTimer&&(clearInterval(this.quotaProbeTimer),this.quotaProbeTimer=void 0),this.healthProbeTimer&&(clearInterval(this.healthProbeTimer),this.healthProbeTimer=void 0),this.rateLimitProbeTimer&&(clearInterval(this.rateLimitProbeTimer),this.rateLimitProbeTimer=void 0),this.wakeupTimer&&(clearInterval(this.wakeupTimer),this.wakeupTimer=void 0),this.logger?.info("Active probe service stopped")}async runQuotaProbe(){let e=this.getProviders().filter(s=>s?.name&&s.enabled!==!1&&!this.config.excludeProviders.includes(s.name)),t=U();if(e.length===0)return;let o=[];for(let s of e){let a=vo(s.baseUrl),l=Array.isArray(s.models)?s.models:[],c=this.resolveProxyUrl?.(s);a&&o.push({provider:s.name,models:l,type:"quota-adapter",promise:a.queryQuota(s,this.config.probeTimeoutMs,c).then(i=>{if(i){no(s.name,i),this.logger?.debug?.(`Stored quota probe result for ${s.name}`);let u=i.limitDaily!==void 0&&i.usedDailyBalance!==void 0&&i.usedDailyBalance>=i.limitDaily,d=i.totalBalance!==void 0&&i.usedBalance!==void 0&&i.usedBalance>=i.totalBalance;if(u||d){let m=u?`Quota exhausted: 5h limit reached (${i.usedDailyBalance}/${i.limitDaily})`:`Quota exhausted: 7d balance depleted (${i.usedBalance}/${i.totalBalance})`;for(let g of l){if(t.getState(s.name,g)?.rateLimitUntil){this.logger?.debug?.(`Skip forceOpen for ${s.name} (${g}): already rate-limited with active cooldown`);continue}t.forceOpen(s.name,g,m)}this.logger?.warn?.(`${m} for ${s.name}, marked as unhealthy`)}else for(let m of l){let g=t.getState(s.name,m);g&&g.status==="open"&&g.lastError?.includes("Quota exhausted")&&(t.recover(s.name,m),this.logger?.info?.(`Quota recovered for ${s.name} (${m}), marked as healthy`))}}})}),Ol(s.baseUrl)&&o.push({provider:s.name,models:l,type:"rate-limit-headers",promise:So(s,this.config.probeTimeoutMs,c).then(()=>{})})}if(o.length===0)return;this.logger?.debug?.(`Running quota probe with ${o.length} tasks for ${e.length} providers`);let r=await Promise.allSettled(o.map(s=>s.promise));for(let s=0;s<o.length;s++){let a=r[s];if(a.status==="rejected"){let l=o[s];this.logger?.warn?.(`Quota probe failed for ${l.provider} (${l.type}): ${a.reason}`)}}}async runHealthProbe(){let e=U(),t=this.getProviders().filter(r=>r?.name&&r.enabled!==!1&&!this.config.excludeProviders.includes(r.name));if(t.length===0)return;this.logger?.debug?.(`Running health probe for ${t.length} providers`);let o=await Promise.allSettled(t.map(r=>So(r,this.config.probeTimeoutMs,this.resolveProxyUrl?.(r))));for(let r=0;r<t.length;r++){let s=t[r],a=o[r],l=Array.isArray(s.models)?s.models:[];if(a.status==="fulfilled"){let c=a.value;if(c.success){let i=0;for(let u of l){let d=e.getState(s.name,u);if(d&&d.status==="open"){let m=d.lastError?.includes("Quota exhausted"),g=d.rateLimitUntil||d.lastError&&(d.lastError.includes("429")||d.lastError.toLowerCase().includes("rate limit")||d.lastError.toLowerCase().includes("rate_limit")||d.lastError.toLowerCase().includes("too many requests")||d.lastError.toLowerCase().includes("\u9650\u6D41"));if(m){this.logger?.debug?.(`Skipping health probe recovery for ${s.name} (${u}) because quota is exhausted`);continue}if(g||d.rateLimitUntil){this.logger?.debug?.(`Skipping health probe recovery for rate-limited ${s.name} (${u})`);continue}}e.recordSuccess(s.name,u),i++}i>0&&this.logger?.info?.(`Health probe succeeded for ${s.name}`)}else{for(let i of l)e.recordFailure(s.name,i,c.error);this.logger?.warn?.(`Health probe failed for ${s.name}: ${c.error}`)}}else{for(let c of l)e.recordFailure(s.name,c,a.reason?.message||"Probe error");this.logger?.warn?.(`Health probe error for ${s.name}: ${a.reason}`)}}}async runRateLimitProbe(){let e=U(),t=e.getRateLimitedModels();if(t.length===0)return;let o=this.getProviders(),r=this.config.probeTimeoutMs;this.logger?.debug?.(`Running rate-limit recovery probe for ${t.length} model(s)`);for(let s of t){let[a,...l]=s.split(","),c=l.join(",");if(!a||!c)continue;let i=e.getState(a,c);if(!i||!i.rateLimitUntil)continue;if(Date.now()>=i.rateLimitUntil){e.recover(a,c),this.logger?.info?.(`Rate-limit cooldown expired, auto-recovered ${s}`);continue}let u=o.find(d=>d?.name===a&&d.enabled!==!1);if(!u){this.logger?.warn?.(`Provider ${a} not found or disabled for rate-limit probe`);continue}try{let d=await Il(u,c,r,this.resolveProxyUrl?.(u),this.logger);if(d.success)this.logger?.info?.(`Rate-limit probe succeeded for ${s}, recovering model`),e.recover(a,c);else if(d.error&&(d.error.includes("429")||d.error.toLowerCase().includes("rate limit")||d.error.toLowerCase().includes("rate_limit")||d.error.toLowerCase().includes("too many requests")||d.error.toLowerCase().includes("\u9650\u6D41"))){let m=Date.now();i.rateLimitUntil&&i.rateLimitUntil>m?i.rateLimitUntil+=120*1e3:i.rateLimitUntil=m+120*1e3,this.logger?.debug?.(`Rate-limit probe for ${s} confirmed still limited, extending cooldown`)}else this.logger?.debug?.(`Rate-limit probe for ${s} returned non-rate-limit error: ${d.error?.slice(0,100)}`)}catch(d){this.logger?.warn?.(`Rate-limit probe exception for ${s}: ${d?.message||d}`)}}}async runScheduledWakeup(){if(!this.isWakeupGloballyEnabled())return;let e=this.getProviders().filter(l=>l?.name&&l.enabled!==!1&&l.wakeupEnabled===!0);if(e.length===0)return;let t=new Date,o=t.getHours(),r=t.getMinutes(),s=Pl(t),a=this.getConfig&&this.getConfig("WAKEUP_TIME")||"06:00";for(let l of e){let c=l.wakeupTime||a,[i,u]=c.split(":"),d=parseInt(i,10),m=parseInt(u,10);if(isNaN(d)||isNaN(m))continue;let g=o>d||o===d&&r>=m,y=(d*60+m)*6e4-(o*60+r)*6e4,p=y>0&&y<=300*1e3;(g||p)&&!this.hasWakeupFiredToday(l.name,s)&&(this.logger?.info?.(`Scheduled wake-up triggered for provider ${l.name} at ${c}`),El(l,3e4,this.resolveProxyUrl?.(l),this.logger).then(f=>{f.success?this.logger?.info?.(`Successfully woke up provider ${l.name}`):this.logger?.error?.(`Failed to wake up provider ${l.name}: ${f.error}`)}).catch(f=>{this.logger?.error?.(`Error in wake-up task for ${l.name}: ${f}`)}))}}isWakeupGloballyEnabled(){return this.getConfig?Sl(this.getConfig("WAKEUP_ENABLED")):!1}hasWakeupFiredToday(e,t){return this.lastWakeupDate.get(e)===t?!0:(this.lastWakeupDate.set(e,t),!1)}async probeProviderManually(e){let o=this.getProviders().find(a=>a.name===e);if(!o)return this.logger?.warn?.(`Provider ${e} not found for manual probe`),!1;if(o.enabled===!1)return this.logger?.warn?.(`Provider ${e} is disabled, skipping manual probe`),!1;let r=await So(o,this.config.probeTimeoutMs,this.resolveProxyUrl?.(o)),s=Array.isArray(o.models)?o.models:[];if(r.success)for(let a of s)U().recordSuccess(o.name,a);else for(let a of s)U().recordFailure(o.name,a,r.error);return r.success}},de=null});var si=S(()=>{"use strict"});var Ao,rt,ii=S(()=>{"use strict";Ao=class{plugins=new Map;pluginInstances=new Map;registerPlugin(e,t={}){this.pluginInstances.set(e.name,e),this.plugins.set(e.name,{name:e.name,enabled:t.enabled!==!1,options:t})}async enablePlugin(e,t){let o=this.plugins.get(e),r=this.pluginInstances.get(e);if(!o||!r)throw new Error(`Plugin ${e} not found`);o.enabled&&await t.register(r.register,o.options)}async enablePlugins(e){for(let[t,o]of this.plugins)if(o.enabled)try{await this.enablePlugin(t,e)}catch(r){let s=r instanceof Error?r.message:String(r);e.log?.error(`Failed to enable plugin ${t}: ${s}`)}}getPlugins(){return Array.from(this.plugins.values())}getPlugin(e){return this.pluginInstances.get(e)}hasPlugin(e){return this.pluginInstances.has(e)}isPluginEnabled(e){return this.plugins.get(e)?.enabled||!1}setPluginEnabled(e,t){let o=this.plugins.get(e);o&&(o.enabled=t)}removePlugin(e){this.plugins.delete(e),this.pluginInstances.delete(e)}clear(){this.plugins.clear(),this.pluginInstances.clear()}},rt=new Ao});var oe,Oo=S(()=>{"use strict";oe=class extends TransformStream{buffer="";currentEvent={};constructor(){super({transform:(e,t)=>{this.buffer+=e;let o=this.buffer.split(`
|
|
304
|
+
`);this.buffer=o.pop()||"";for(let r of o){let s=this.processLine(r);s&&t.enqueue(s)}},flush:e=>{if(this.buffer.trim()){let t=[];this.processLine(this.buffer.trim(),t),t.forEach(o=>e.enqueue(o))}Object.keys(this.currentEvent).length>0&&e.enqueue(this.currentEvent)}})}processLine(e,t){if(!e.trim()){if(Object.keys(this.currentEvent).length>0){let o={...this.currentEvent};return this.currentEvent={},t?(t.push(o),null):o}return null}if(e.startsWith("event:"))this.currentEvent.event=e.slice(6).trim();else if(e.startsWith("data:")){let o=e.slice(5).trim();if(o==="[DONE]")this.currentEvent.data={type:"done"};else try{this.currentEvent.data=JSON.parse(o)}catch{this.currentEvent.data={raw:o,error:"JSON parse failed"}}}else e.startsWith("id:")?this.currentEvent.id=e.slice(3).trim():e.startsWith("retry:")&&(this.currentEvent.retry=parseInt(e.slice(6).trim()));return null}}});var Le,Eo=S(()=>{"use strict";Le=class extends TransformStream{constructor(){super({transform:(e,t)=>{let o="";e.event&&(o+=`event: ${e.event}
|
|
305
|
+
`),e.id&&(o+=`id: ${e.id}
|
|
306
|
+
`),e.retry&&(o+=`retry: ${e.retry}
|
|
307
|
+
`),e.data&&(e.data.type==="done"?o+=`data: [DONE]
|
|
308
|
+
`:o+=`data: ${JSON.stringify(e.data)}
|
|
309
|
+
`),o+=`
|
|
310
|
+
`,t.enqueue(o)}})}}});var hn,Io=S(()=>{"use strict";hn=(n,e)=>{let t=n.getReader();return new ReadableStream({async start(o){try{for(;;){let{done:r,value:s}=await t.read();if(r){o.close();break}let a=await e(s,o);a!==void 0&&o.enqueue(a)}}catch(r){o.error(r)}finally{t.releaseLock()}}})}});var Mo=S(()=>{"use strict";Oo();Eo();Io()});var ai=S(()=>{"use strict"});var st,$o=S(()=>{"use strict";st=class{type="console";config;colors={reset:"\x1B[0m",bright:"\x1B[1m",dim:"\x1B[2m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m"};constructor(e={}){this.config={colors:!0,level:"log",...e}}formatData(e,t){let{format:o="text",timestamp:r=!0,prefix:s,metadata:a}=t||{},l="";if(r){let c=new Date().toISOString();l+=this.config.colors?`${this.colors.cyan}[${c}]${this.colors.reset} `:`[${c}] `}switch(s&&(l+=this.config.colors?`${this.colors.bright}${s}${this.colors.reset} `:`${s} `),o){case"json":l+=JSON.stringify(e,null,2);break;case"markdown":typeof e=="object"?l+=this.toMarkdown(e):l+=String(e);break;case"text":default:typeof e=="object"?l+=JSON.stringify(e,null,2):l+=String(e);break}return a&&Object.keys(a).length>0&&(l+=`
|
|
311
|
+
`+(this.config.colors?`${this.colors.dim}`:""),l+="Metadata: "+JSON.stringify(a,null,2),this.config.colors&&(l+=this.colors.reset)),l}toMarkdown(e,t=0){let o=" ".repeat(t);return Array.isArray(e)?e.map(r=>typeof r=="object"?`${o}-
|
|
312
|
+
${this.toMarkdown(r,t+1)}`:`${o}- ${r}`).join(`
|
|
313
|
+
`):typeof e=="object"&&e!==null?Object.entries(e).map(([r,s])=>typeof s=="object"&&s!==null?`${o}${r}:
|
|
314
|
+
${this.toMarkdown(s,t+1)}`:`${o}${r}: ${s}`).join(`
|
|
315
|
+
`):`${o}${e}`}async output(e,t={}){try{let o=this.formatData(e,t);switch(this.config.level||"log"){case"info":console.info(o);break;case"warn":console.warn(o);break;case"error":console.error(o);break;case"debug":console.debug(o);break;case"log":default:console.log(o);break}return!0}catch(o){return console.error("[ConsoleOutputHandler] Output failed:",o),!1}}}});var it,No=S(()=>{"use strict";it=class{type="webhook";config;defaultTimeout=3e4;constructor(e){if(!e.url)throw new Error("Webhook URL is required");this.config={method:"POST",retry:{maxAttempts:3,backoffMs:1e3},silent:!1,...e}}buildHeaders(){let e={"Content-Type":"application/json",...this.config.headers||{}};if(this.config.auth)switch(this.config.auth.type){case"bearer":this.config.auth.token&&(e.Authorization=`Bearer ${this.config.auth.token}`);break;case"basic":if(this.config.auth.username&&this.config.auth.password){let t=Buffer.from(`${this.config.auth.username}:${this.config.auth.password}`).toString("base64");e.Authorization=`Basic ${t}`}break;case"custom":this.config.auth.custom&&(e[this.config.auth.custom.header]=this.config.auth.custom.value);break}return e}buildBody(e,t){let{format:o="json",timestamp:r=!0,prefix:s,metadata:a}=t||{},l={data:e};return r&&(l.timestamp=new Date().toISOString()),s&&(l.prefix=s),a&&Object.keys(a).length>0&&(l.metadata=a),l}async sendRequest(e,t,o,r,s){let a=new AbortController,l=setTimeout(()=>a.abort(),s);try{let c=await fetch(e,{method:t,headers:o,body:JSON.stringify(r),signal:a.signal});if(clearTimeout(l),!c.ok)throw new Error(`HTTP ${c.status}: ${c.statusText}`);return c}catch(c){throw clearTimeout(l),c}}delay(e){return new Promise(t=>setTimeout(t,e))}async sendWithRetry(e,t,o,r,s,a){let l=null;for(let c=1;c<=a.maxAttempts;c++)try{return await this.sendRequest(e,t,o,r,s)}catch(i){if(l=i,c===a.maxAttempts)break;let u=a.backoffMs*Math.pow(2,c-1);console.warn(`[WebhookOutputHandler] Request failed (attempt ${c}/${a.maxAttempts}), retrying in ${u}ms...`,i.message),await this.delay(u)}throw l}async output(e,t={}){let o=t.timeout||this.defaultTimeout;try{let r=this.buildHeaders(),s=this.buildBody(e,t),a=await this.sendWithRetry(this.config.url,this.config.method,r,s,o,this.config.retry);return!0}catch(r){let s=r instanceof Error?r.message:String(r);if(this.config.silent)return console.error(`[WebhookOutputHandler] Failed to send data: ${s}`),!1;throw new Error(`Webhook output failed: ${s}`)}}}});import{writeFileSync as Ml,existsSync as $l,mkdirSync as Nl}from"fs";import{join as ci}from"path";import{tmpdir as Ll}from"os";var at,Lo=S(()=>{"use strict";at=class{type="temp-file";config;baseDir;constructor(e={}){this.config={subdirectory:"claude-code-router",extension:"json",includeTimestamp:!1,prefix:"session",...e};let t=Ll();this.baseDir=ci(t,this.config.subdirectory),this.ensureDir()}ensureDir(){try{$l(this.baseDir)||Nl(this.baseDir,{recursive:!0})}catch{}}getFilePath(e){let t=this.config.prefix||"session",o=this.config.extension?`.${this.config.extension}`:"",r;if(this.config.includeTimestamp){let s=Date.now();r=`${t}-${e}-${s}${o}`}else r=`${t}-${e}${o}`;return ci(this.baseDir,r)}async output(e,t={}){try{let o=t.metadata?.sessionId;if(!o)return!1;let r={...e,timestamp:Date.now(),sessionId:o},s=this.getFilePath(o);return Ml(s,JSON.stringify(r,null,2),"utf-8"),!0}catch{return!1}}getBaseDir(){return this.baseDir}}});var Fo,Fe,li=S(()=>{"use strict";$o();No();Lo();Fo=class{handlers=new Map;defaultOptions={};registerHandler(e,t){this.handlers.set(e,t)}registerHandlers(e){for(let t of e)if(t.enabled!==!1)try{let o=this.createHandler(t),r=t.type+"_"+Date.now();this.registerHandler(r,o)}catch(o){console.error(`[OutputManager] Failed to register ${t.type} handler:`,o)}}createHandler(e){switch(e.type){case"console":return new st(e.config);case"webhook":return new it(e.config);case"temp-file":return new at(e.config);default:throw new Error(`Unknown output handler type: ${e.type}`)}}unregisterHandler(e){return this.handlers.delete(e)}getHandler(e){return this.handlers.get(e)}getAllHandlers(){return new Map(this.handlers)}clearHandlers(){this.handlers.clear()}setDefaultOptions(e){this.defaultOptions={...this.defaultOptions,...e}}getDefaultOptions(){return{...this.defaultOptions}}async output(e,t){let o={...this.defaultOptions,...t},r={success:[],failed:[]},s=Array.from(this.handlers.entries()).map(async([a,l])=>{try{await l.output(e,o)?r.success.push(a):r.failed.push(a)}catch(c){console.error(`[OutputManager] Handler ${a} failed:`,c),r.failed.push(a)}});return await Promise.all(s),r}async outputTo(e,t,o){let r={...this.defaultOptions,...o},s={success:[],failed:[]},a=e.map(async l=>{let c=this.handlers.get(l);if(!c){console.warn(`[OutputManager] Handler ${l} not found`),s.failed.push(l);return}try{await c.output(t,r)?s.success.push(l):s.failed.push(l)}catch(i){console.error(`[OutputManager] Handler ${l} failed:`,i),s.failed.push(l)}});return await Promise.all(a),s}async outputToType(e,t,o){let r=Array.from(this.handlers.entries()).filter(([s,a])=>a.type===e).map(([s])=>s);return this.outputTo(r,t,o)}},Fe=new Fo});var Uo=S(()=>{"use strict";ai();$o();No();Lo();li()});import Fl from"fastify-plugin";function ui(n,e,t=0){if(n<=0)return 0;let o=Math.max((e-t)/1e3,Ul);return Math.round(n/o)}function lt(n){let e=(n.match(/[\u4e00-\u9fa5]/g)||[]).length,t=n.length-e;return Math.ceil(e/1.5+t/4)}async function di(n,e,t,o=!1){let r=o?"[Token Speed Final]":"[Token Speed]",s={requestId:n.requestId.substring(0,8),sessionId:n.sessionId,stream:n.stream,tokenCount:n.tokenCount,tokensPerSecond:n.tokensPerSecond,timeToFirstToken:n.timeToFirstToken?`${n.timeToFirstToken}ms`:"N/A",duration:`${((n.lastTokenTime-n.startTime)/1e3).toFixed(2)}s`,timestamp:Date.now()},a={prefix:r,metadata:{sessionId:n.sessionId},...t};for(let l of e)try{await Fe.outputToType(l,s,a)}catch(c){console.error(`[TokenSpeedPlugin] Failed to output to ${l}:`,c)}}var ct,Do,Ul,yn,pi=S(()=>{"use strict";Mo();Uo();Xe();ct=new Map,Do=new Map,Ul=1,yn={name:"token-speed",version:"1.0.0",description:"Statistics for streaming response token generation speed",register:Fl(async(n,e)=>{let t={reporter:["console","temp-file"],...e},o=Array.isArray(t.reporter)?t.reporter:[t.reporter];if(t.outputHandlers&&t.outputHandlers.length>0)Fe.registerHandlers(t.outputHandlers);else{let a=[];for(let l of o)l==="console"?a.push({type:"console",enabled:!0,config:{colors:!0,level:"log"}}):l==="temp-file"?a.push({type:"temp-file",enabled:!0,config:{subdirectory:"claude-code-router",extension:"json",includeTimestamp:!0,prefix:"session"}}):l==="webhook"&&console.warn("[TokenSpeedPlugin] Webhook reporter requires explicit configuration in outputHandlers");a.length>0&&Fe.registerHandlers(a)}t.outputOptions&&Fe.setDefaultOptions(t.outputOptions);let r=async a=>{let l=n.tokenizerService;if(!l)return n.log?.warn("TokenizerService not available"),null;if(!a.provider||!a.model)return null;let c=a.provider,i=a.model,u=`${c}:${i}`;if(Do.has(u))return Do.get(u);let d=l.getTokenizerConfigForModel(c,i);if(!d)return n.log?.debug(`No tokenizer config for ${c}:${i}, using fallback`),null;try{let m=await l.getTokenizer(d,c);return Do.set(u,m),n.log?.info(`Created tokenizer for ${c}:${i} - ${m.name}`),m}catch(m){return n.log?.warn(`Failed to create tokenizer for ${c}:${i}: ${m.message}`),null}},s=a=>{let l=new URL(`http://127.0.0.1${a}`).pathname;return l.endsWith("/v1/messages")||l.endsWith("/v1/responses")};n.addHook("onRequest",async a=>{s(a.url)&&(a.requestStartTime=performance.now())}),n.addHook("onSend",async(a,l,c)=>{let i=a.requestStartTime;if(!i)return;let u=a.id||Date.now().toString(),d=a.usageSessionId;if(!d)try{d=Ke(a.body?.metadata?.user_id)}catch{}if(!d){let f=a.headers?.["x-request-id"],_=Array.isArray(f)?f[0]:f;d=(typeof _=="string"?_:void 0)||u}let m=await r(a);if(c instanceof ReadableStream){ct.set(u,{requestId:u,sessionId:d,startTime:i,lastTokenTime:i,tokenCount:0,tokensPerSecond:0,stream:!0});let[f,_]=c.tee(),k=async()=>{let h=null,b=async x=>{let v=ct.get(u);if(!v)return;let C=v.firstTokenTime?v.firstTokenTime-v.startTime:0,T=(x?v.lastTokenTime:performance.now())-v.startTime;v.tokensPerSecond=ui(v.tokenCount,T,C),await di(v,o,t.outputOptions,x).catch(A=>{n.log?.warn(`Failed to output streaming stats: ${A.message}`)})};try{let v=_.pipeThrough(new TextDecoderStream).pipeThrough(new oe).getReader();for(h=setInterval(async()=>{ct.get(u)&&await b(!1)},1e3);;){let{done:C,value:R}=await v.read();if(C)break;let T=R,A=ct.get(u);if(!A)continue;let w=performance.now(),O=T.event||T.data?.type,P=T.event==="content_block_start"||T.event==="content_block_delta"||T.event==="text_block"||T.event==="content_block"||O==="response.output_text.delta"||O==="response.function_call_arguments.delta"||O==="response.reasoning_summary_text.delta";!A.firstTokenTime&&P&&(A.firstTokenTime=w,A.timeToFirstToken=Math.round(w-A.startTime));let E="";if(T.event==="content_block_delta"&&T.data?.delta){let N=T.data.delta.type;N==="text_delta"?E=T.data.delta.text||"":N==="input_json_delta"?E=T.data.delta.partial_json||"":N==="thinking_delta"&&(E=T.data.delta.thinking||"")}if((O==="response.output_text.delta"||O==="response.function_call_arguments.delta"||O==="response.reasoning_summary_text.delta")&&(E=typeof T.data?.delta=="string"?T.data.delta:""),E){let N=m&&m.encodeText?m.encodeText(E).length:lt(E);A.tokenCount+=N,A.lastTokenTime=w}(T.event==="message_stop"||O==="response.completed"||O==="response.failed")&&(h&&(clearInterval(h),h=null),await b(!0),ct.delete(u))}}catch(x){h&&clearInterval(h),x.name!=="AbortError"&&x.code!=="ERR_STREAM_PREMATURE_CLOSE"&&n.log?.warn(`Error processing token stats: ${x.message}`)}};return a.tokenSpeedCapturePromise=k().catch(h=>{console.log(h),n.log?.warn(`Background stats processing failed: ${h.message}`)}),f}let g=performance.now(),y=0,p=!1;if(c&&typeof c=="string")try{let f=JSON.parse(c);if(typeof f.usage?.output_tokens=="number")y=f.usage.output_tokens,p=!0;else{let _=f.content??f.message?.content;if(_!==void 0)if(p=!0,m)Array.isArray(_)?y=_.reduce((k,h)=>{if(h.type==="text"){let b=h.text||"";return k+(m.encodeText?m.encodeText(b).length:lt(b))}return k},0):typeof _=="string"&&(y=m.encodeText?m.encodeText(_).length:lt(_));else{let k=Array.isArray(_)?_.map(h=>h.text).join(""):typeof _=="string"?_:"";y=lt(k)}}}catch{}if(p){let f=Math.round(g-i),_=g-i,k={requestId:u,sessionId:d,startTime:i,lastTokenTime:g,tokenCount:y,tokensPerSecond:ui(y,_),timeToFirstToken:f,stream:!1};await di(k,o,t.outputOptions,!0)}return c})})}});var jo=S(()=>{"use strict";si();ii();pi();Uo()});import le from"node:fs/promises";import fi from"json5";import _n from"node:path";import{CONFIG_FILE as re,HOME_DIR as zo,PLUGINS_DIR as Dl}from"@wengine-ai/claude-code-router-shared";var Ho,kn,bn,Jo,j,xn,q,Bo,ut=S(()=>{"use strict";Ho=n=>{if(typeof n=="string")return n.replace(/\$\{([^}]+)\}|\$([A-Z_][A-Z0-9_]*)/g,(e,t,o)=>{let r=t||o;return process.env[r]||e});if(Array.isArray(n))return n.map(Ho);if(n!==null&&typeof n=="object"){let e={};for(let[t,o]of Object.entries(n))e[t]=Ho(o);return e}return n},kn=async n=>{try{await le.access(n)}catch{await le.mkdir(n,{recursive:!0})}},bn=async()=>{await kn(zo),await kn(Dl),await kn(_n.join(zo,"logs"))},Jo=async()=>{let n=await le.readFile(re,"utf-8");return fi.parse(n)},j=async()=>{try{let n=await le.readFile(re,"utf-8");try{let e=fi.parse(n);return Ho(e)}catch(e){console.error(`Failed to parse config file at ${re}`),console.error("Error details:",e.message),console.error("Please check your config file syntax."),process.exit(1)}}catch(n){if(n.code==="ENOENT")try{await bn();let e=await xn();e&&console.log(`Backed up existing configuration file to ${e}`);let t={PORT:3456,Providers:[],Router:{}};return await q(t),console.log("Created minimal default configuration file at ~/.claude-code-router/config.json"),console.log("Please edit this file with your actual configuration."),t}catch(e){console.error("Failed to create default configuration:",e.message),process.exit(1)}else console.error(`Failed to read config file at ${re}`),console.error("Error details:",n.message),process.exit(1)}},xn=async()=>{try{if(await le.access(re).then(()=>!0).catch(()=>!1)){let n=new Date().toISOString().replace(/[:.]/g,"-"),e=`${re}.${n}.bak`;await le.copyFile(re,e);try{let t=_n.dirname(re),o=_n.basename(re),s=(await le.readdir(t)).filter(a=>a.startsWith(o)&&a.endsWith(".bak")).sort().reverse();if(s.length>3)for(let a=3;a<s.length;a++){let l=_n.join(t,s[a]);await le.unlink(l)}}catch(t){console.warn("Failed to clean up old backups:",t)}return e}}catch(n){console.error("Failed to backup config file:",n)}return null},q=async n=>{await kn(zo);let e=`${JSON.stringify(n,null,2)}`;await le.writeFile(re,e)},Bo=async()=>{let n=await j();return Object.assign(process.env,n),n}});function jl(n){return n?.cache_read_input_tokens??n?.input_tokens_details?.cached_tokens??n?.prompt_tokens_details?.cached_tokens??0}function zl(n){return n?.cache_creation_input_tokens??n?.input_tokens_details?.cache_creation_tokens??n?.input_tokens_details?.cache_write_tokens??n?.prompt_tokens_details?.cache_creation_tokens??n?.prompt_tokens_details?.cache_write_tokens??0}function Ue(n){if(!(!n||typeof n!="object"))return{...n,input_tokens:n.input_tokens??n.prompt_tokens??0,output_tokens:n.output_tokens??n.completion_tokens??0,cache_read_input_tokens:jl(n),cache_creation_input_tokens:zl(n)}}function Cn(n,e,t){let o=t?{}:n||{},r=e||{};return{...o,input_tokens:r.input_tokens||o.input_tokens||0,output_tokens:r.output_tokens||o.output_tokens||0,cache_read_input_tokens:r.cache_read_input_tokens||o.cache_read_input_tokens||0,cache_creation_input_tokens:r.cache_creation_input_tokens||o.cache_creation_input_tokens||0}}var Wo=S(()=>{"use strict"});function Tn(n,e,t){if(n){if(typeof n=="string"){let o=n.indexOf(",");if(o>0){let r=n.slice(0,o).trim(),s=n.slice(o+1).trim();r&&s&&e.has(r)&&t.add(Go(r,s))}return}if(Array.isArray(n)){for(let o of n)Tn(o,e,t);return}if(typeof n=="object")for(let o of Object.values(n))Tn(o,e,t)}}function mi(n){let e=n?.Providers||n?.providers||[],t=new Set,o=new Set;for(let r of e){let s=r?.name;if(!s)continue;t.add(s);let a=Array.isArray(r?.models)?r.models:[];for(let l of a)l&&o.add(Go(s,l))}return Tn(n?.Router,t,o),Tn(n?.fallback,t,o),o}function dt(n,e){try{let t=U();if(!t?.getAllStates||!t?.recover)return 0;let o=mi(n),r=0;for(let s of t.getAllStates()||[]){let a=s?.provider,l=s?.model;!a||!l||o.has(Go(a,l))||(t.recover(a,l),r++)}return r>0&&e?.info?.(`[health-reconcile] Pruned ${r} orphaned provider-health entr${r===1?"y":"ies"}`),r}catch(t){return e?.warn?.(`[health-reconcile] Failed to reconcile health store: ${t?.message||t}`),0}}function vn(n,e){try{if(!n)return 0;let t=U();if(!t?.getAllStates||!t?.recover)return 0;let o=0;for(let r of t.getAllStates()||[])r?.provider===n&&r?.model&&(t.recover(n,r.model),o++);return o>0&&e?.info?.(`[health-reconcile] Cleared ${o} health entr${o===1?"y":"ies"} for probed provider ${n}`),o}catch(t){return e?.warn?.(`[health-reconcile] Failed to clear provider health for ${n}: ${t?.message||t}`),0}}var Hl,Go,Rn=S(()=>{"use strict";ee();Hl="\0",Go=(n,e)=>`${n}${Hl}${e}`});function Jl(n){return/\[1m\]/i.test(n)?1e6:2e5}function Bl(n){let e=n.toLowerCase();return e.includes("haiku")||e.includes("mini")?8192:32e3}function Wl(n,e=n){let t=Jl(n),o=Bl(n);return{type:"model",id:n,display_name:e,created_at:"2024-01-01T00:00:00Z",context_window:t,contextWindow:t,max_input_tokens:t,maxInputTokens:t,max_tokens:o,maxTokens:o,max_output_tokens:o,maxOutputTokens:o,capabilities:{context_window:t,contextWindow:t,max_input_tokens:t,maxInputTokens:t,max_tokens:o,maxTokens:o,max_output_tokens:o,maxOutputTokens:o}}}function wn(n){let e=new Map,t=(o,r=o)=>{!o||e.has(o)||e.set(o,Wl(o,r))};t("ccr-opus","CCR Opus"),t("ccr-sonnet","CCR Sonnet"),t("ccr-haiku","CCR Haiku"),t("ccr-opus[1m]","CCR Opus 1M"),t("ccr-sonnet[1m]","CCR Sonnet 1M"),t("ccr-haiku[1m]","CCR Haiku 1M");for(let o of n.Providers||n.providers||[])if(!(!o?.name||!Array.isArray(o.models)))for(let r of o.models)typeof r!="string"||!r||(t(r,r),t(`${o.name},${r}`,`${o.name}/${r}`));return Array.from(e.values())}var Vo=S(()=>{"use strict"});function Gl(n){let e=n.ip||n.connection?.remoteAddress||"";return e==="127.0.0.1"||e==="::1"||e==="::ffff:127.0.0.1"}var Sn,Qo=S(()=>{"use strict";Sn=n=>async(e,t,o)=>{if(["/","/health"].includes(e.url)||e.url.startsWith("/ui")||Gl(e))return o();let s=n.Providers||n.providers||[];if(!s||s.length===0)return o();let a=n.APIKEY;if(!a){let u=[`http://127.0.0.1:${n.PORT||3456}`,`http://localhost:${n.PORT||3456}`];if(e.headers.origin&&!u.includes(e.headers.origin)){t.status(403).send("CORS not allowed for this origin");return}else t.header("Access-Control-Allow-Origin",`http://127.0.0.1:${n.PORT||3456}`),t.header("Access-Control-Allow-Origin",`http://localhost:${n.PORT||3456}`);return o()}let l=e.headers.authorization||e.headers["x-api-key"],c=Array.isArray(l)?l[0]:l||"";if(!c){t.log.warn({url:e.url,headers:Object.keys(e.headers)},"[AUTH] No auth header"),t.status(401).send("APIKEY is missing");return}let i="";if(c.startsWith("Bearer")?i=c.split(" ")[1]:i=c,i!==a){t.log.warn({url:e.url,gotPrefix:i.slice(0,10),gotSuffix:i.slice(-6),gotLen:i.length,expectedPrefix:a.slice(0,6),expectedSuffix:a.slice(-6),expectedLen:a.length},"[AUTH] Key mismatch"),t.status(401).send("Invalid API key");return}o()}});var vi={};Fn(vi,{append:()=>gt,clear:()=>er,close:()=>uu,getOldestRecordTimestamp:()=>du,query:()=>Zo,querySummary:()=>ht,readTokenSpeedStats:()=>tr});import{existsSync as Yo,mkdirSync as Vl,readFileSync as Xo,readdirSync as Ql}from"fs";import{join as ze}from"path";import{homedir as Kl,tmpdir as Xl}from"os";import Yl from"better-sqlite3";function nu(){Yo(Pn)||Vl(Pn,{recursive:!0})}function mt(){if(fe)return fe;nu();let n=new Yl(ql);n.pragma("journal_mode = WAL"),n.pragma("synchronous = NORMAL"),n.pragma("busy_timeout = 5000");let e=n.pragma("user_version",{simple:!0})||0;return e<1&&(ou(n),n.pragma("user_version = 1")),e<2&&(n.prepare("PRAGMA table_info(usage_records)").all().some(o=>o.name==="upstream_model")||n.exec("ALTER TABLE usage_records ADD COLUMN upstream_model TEXT"),n.pragma("user_version = 2")),su(n),bi(n,!0),qo=n.prepare(`
|
|
316
|
+
INSERT INTO usage_records (
|
|
317
|
+
id, timestamp, session_id, provider, original_model, model, upstream_model, model_family,
|
|
318
|
+
scenario_type, client_type, codex_account_id, codex_account_email,
|
|
319
|
+
stream, input_tokens, output_tokens, cache_read_input_tokens,
|
|
320
|
+
cache_creation_input_tokens, ttft, tokens_per_second, duration_ms,
|
|
321
|
+
status, error_message, response_body
|
|
322
|
+
) VALUES (
|
|
323
|
+
@id, @timestamp, @session_id, @provider, @original_model, @model, @upstream_model,
|
|
324
|
+
@model_family, @scenario_type, @client_type, @codex_account_id,
|
|
325
|
+
@codex_account_email, @stream, @input_tokens, @output_tokens,
|
|
326
|
+
@cache_read_input_tokens, @cache_creation_input_tokens, @ttft,
|
|
327
|
+
@tokens_per_second, @duration_ms, @status, @error_message, @response_body
|
|
328
|
+
)
|
|
329
|
+
`),fe=n,fe}function ou(n){n.exec(`
|
|
330
|
+
CREATE TABLE IF NOT EXISTS usage_records (
|
|
331
|
+
id TEXT PRIMARY KEY,
|
|
332
|
+
timestamp TEXT NOT NULL,
|
|
333
|
+
session_id TEXT NOT NULL,
|
|
334
|
+
provider TEXT NOT NULL,
|
|
335
|
+
original_model TEXT NOT NULL,
|
|
336
|
+
model TEXT NOT NULL,
|
|
337
|
+
upstream_model TEXT,
|
|
338
|
+
model_family TEXT NOT NULL,
|
|
339
|
+
scenario_type TEXT NOT NULL,
|
|
340
|
+
client_type TEXT,
|
|
341
|
+
codex_account_id TEXT,
|
|
342
|
+
codex_account_email TEXT,
|
|
343
|
+
stream INTEGER NOT NULL,
|
|
344
|
+
input_tokens INTEGER NOT NULL,
|
|
345
|
+
output_tokens INTEGER NOT NULL,
|
|
346
|
+
cache_read_input_tokens INTEGER NOT NULL,
|
|
347
|
+
cache_creation_input_tokens INTEGER NOT NULL,
|
|
348
|
+
ttft REAL,
|
|
349
|
+
tokens_per_second REAL,
|
|
350
|
+
duration_ms INTEGER NOT NULL,
|
|
351
|
+
status TEXT NOT NULL,
|
|
352
|
+
error_message TEXT,
|
|
353
|
+
response_body TEXT
|
|
354
|
+
);
|
|
355
|
+
|
|
356
|
+
CREATE TABLE IF NOT EXISTS usage_meta (
|
|
357
|
+
key TEXT PRIMARY KEY,
|
|
358
|
+
value TEXT NOT NULL
|
|
359
|
+
);
|
|
360
|
+
|
|
361
|
+
CREATE INDEX IF NOT EXISTS idx_usage_records_timestamp ON usage_records(timestamp);
|
|
362
|
+
CREATE INDEX IF NOT EXISTS idx_usage_records_status_timestamp ON usage_records(status, timestamp);
|
|
363
|
+
CREATE INDEX IF NOT EXISTS idx_usage_records_provider_timestamp ON usage_records(provider, timestamp);
|
|
364
|
+
CREATE INDEX IF NOT EXISTS idx_usage_records_model_timestamp ON usage_records(model, timestamp);
|
|
365
|
+
CREATE INDEX IF NOT EXISTS idx_usage_records_scenario_timestamp ON usage_records(scenario_type, timestamp);
|
|
366
|
+
CREATE INDEX IF NOT EXISTS idx_usage_records_client_timestamp ON usage_records(client_type, timestamp);
|
|
367
|
+
CREATE INDEX IF NOT EXISTS idx_usage_records_session_timestamp ON usage_records(session_id, timestamp);
|
|
368
|
+
`)}function ru(n,e){return n.prepare("SELECT value FROM usage_meta WHERE key = ?").get(e)?.value}function pt(n,e,t){n.prepare(`
|
|
369
|
+
INSERT INTO usage_meta (key, value)
|
|
370
|
+
VALUES (?, ?)
|
|
371
|
+
ON CONFLICT(key) DO UPDATE SET value = excluded.value
|
|
372
|
+
`).run(e,t)}function su(n){if(ru(n,gi)||!Yo(Ko))return;let e=au(n,"INSERT OR IGNORE"),t=Xo(Ko,"utf-8"),o=0,r=0,s=0;n.transaction(()=>{for(let l of t.split(`
|
|
373
|
+
`)){let c=l.trim();if(c)try{let i=JSON.parse(c);if(!iu(i)){r++;continue}e.run(_i(An(i))).changes>0?o++:s++}catch{r++}}pt(n,gi,new Date().toISOString()),pt(n,"legacy_usage_jsonl_migrated_path",Ko),pt(n,"legacy_usage_jsonl_imported_count",String(o)),pt(n,"legacy_usage_jsonl_skipped_count",String(r)),pt(n,"legacy_usage_jsonl_duplicate_count",String(s))})()}function iu(n){if(!n||typeof n!="object")return!1;let e=n;return typeof e.id=="string"&&e.id.length>0&&typeof e.timestamp=="string"&&e.timestamp.length>0}function au(n,e="INSERT"){return n.prepare(`
|
|
374
|
+
${e} INTO usage_records (
|
|
375
|
+
id, timestamp, session_id, provider, original_model, model, upstream_model, model_family,
|
|
376
|
+
scenario_type, client_type, codex_account_id, codex_account_email,
|
|
377
|
+
stream, input_tokens, output_tokens, cache_read_input_tokens,
|
|
378
|
+
cache_creation_input_tokens, ttft, tokens_per_second, duration_ms,
|
|
379
|
+
status, error_message, response_body
|
|
380
|
+
) VALUES (
|
|
381
|
+
@id, @timestamp, @session_id, @provider, @original_model, @model, @upstream_model,
|
|
382
|
+
@model_family, @scenario_type, @client_type, @codex_account_id,
|
|
383
|
+
@codex_account_email, @stream, @input_tokens, @output_tokens,
|
|
384
|
+
@cache_read_input_tokens, @cache_creation_input_tokens, @ttft,
|
|
385
|
+
@tokens_per_second, @duration_ms, @status, @error_message, @response_body
|
|
386
|
+
)
|
|
387
|
+
`)}function cu(n,e,t){if(n<=0||e==null||!Number.isFinite(e))return null;let o=t!=null&&Number.isFinite(t)?t:0,r=Math.max((e-o)/1e3,Zl);return Math.round(n/r)}function An(n){let e=Number(n.outputTokens)||0,t=Number(n.durationMs),o=Number.isFinite(t)?t:null,r=ke(n.ttft);return{...n,ttft:r,tokensPerSecond:cu(e,o,r)}}function pe(n){return typeof n=="string"?n:n==null?"":String(n)}function De(n){if(n==null)return;let e=String(n);return e.length>0?e:void 0}function ft(n){let e=Number(n);return Number.isFinite(e)?e:0}function yi(n){return n==="success"?"success":"error"}function _i(n){let e=An(n);return{id:pe(e.id),timestamp:pe(e.timestamp),session_id:pe(e.sessionId),provider:pe(e.provider),original_model:pe(e.originalModel),model:pe(e.model),upstream_model:De(e.upstreamModel)??null,model_family:pe(e.modelFamily),scenario_type:pe(e.scenarioType),client_type:De(e.clientType)??null,codex_account_id:De(e.codexAccountId)??null,codex_account_email:De(e.codexAccountEmail)??null,stream:e.stream?1:0,input_tokens:Math.trunc(ft(e.inputTokens)),output_tokens:Math.trunc(ft(e.outputTokens)),cache_read_input_tokens:Math.trunc(ft(e.cacheReadInputTokens)),cache_creation_input_tokens:Math.trunc(ft(e.cacheCreationInputTokens)),ttft:ke(e.ttft),tokens_per_second:ke(e.tokensPerSecond),duration_ms:Math.trunc(ft(e.durationMs)),status:yi(e.status),error_message:De(e.errorMessage)??null,response_body:De(e.responseBody)??null}}function ki(n){return An({id:n.id,timestamp:n.timestamp,sessionId:n.session_id,provider:n.provider,originalModel:n.original_model,model:n.model,upstreamModel:n.upstream_model??void 0,modelFamily:n.model_family,scenarioType:n.scenario_type,clientType:n.client_type??void 0,codexAccountId:n.codex_account_id??void 0,codexAccountEmail:n.codex_account_email??void 0,stream:n.stream===1,inputTokens:n.input_tokens,outputTokens:n.output_tokens,cacheReadInputTokens:n.cache_read_input_tokens,cacheCreationInputTokens:n.cache_creation_input_tokens,ttft:n.ttft,tokensPerSecond:n.tokens_per_second,durationMs:n.duration_ms,status:yi(n.status),errorMessage:n.error_message??void 0,responseBody:n.response_body??void 0})}function lu(){return new Date(Date.now()-eu*24*60*60*1e3).toISOString()}function bi(n,e=!1){let t=Date.now();!e&&t-hi<tu||(n.prepare("DELETE FROM usage_records WHERE timestamp < ?").run(lu()),hi=t)}function xi(n){let e=[],t=[];return n.startTime&&(e.push("timestamp >= ?"),t.push(n.startTime)),n.endTime&&(e.push("timestamp <= ?"),t.push(n.endTime)),n.model&&(e.push("model = ?"),t.push(n.model)),n.provider&&(e.push("provider = ?"),t.push(n.provider)),n.scenario&&(e.push("scenario_type = ?"),t.push(n.scenario)),n.clientType&&(n.clientType==="unknown"?(e.push("(client_type IS NULL OR client_type = '' OR client_type = ?)"),t.push(n.clientType)):(e.push("client_type = ?"),t.push(n.clientType))),n.sessionId&&(e.push("session_id = ?"),t.push(n.sessionId)),n.status&&(e.push("status = ?"),t.push(n.status)),{sql:e.length>0?`WHERE ${e.join(" AND ")}`:"",params:t}}function Ci(n,e){let t=xi(e);return n.prepare(`SELECT * FROM usage_records ${t.sql}`).all(...t.params).map(ki)}function Ti(n){let e={totalRequests:n.length,successCount:0,errorCount:0,totalInputTokens:0,totalOutputTokens:0,totalCacheReadInputTokens:0,totalCacheCreationInputTokens:0,avgTtft:null,avgTokensPerSecond:null,byModel:{},byProvider:{},byScenario:{},byFamily:{},byDay:{},byClient:{}},t=0,o=0,r=0,s=0;for(let a of n){let l=a.status==="success";l?e.successCount++:e.errorCount++;let c=l&&a.inputTokens||0,i=l&&a.outputTokens||0,u=l&&a.cacheReadInputTokens||0,d=l&&a.cacheCreationInputTokens||0;e.totalInputTokens+=c,e.totalOutputTokens+=i,e.totalCacheReadInputTokens+=u,e.totalCacheCreationInputTokens+=d,l&&a.ttft!=null&&(t+=a.ttft,o++),l&&a.tokensPerSecond!=null&&(r+=a.tokensPerSecond,s++);let m=a.timestamp.slice(0,10);if(je(e.byModel,a.model,c,i,u,d),je(e.byProvider,a.provider,c,i,u,d),je(e.byScenario,a.scenarioType,c,i,u,d),a.modelFamily){let g=`${a.modelFamily}/${a.scenarioType}`;je(e.byFamily,g,c,i,u,d)}je(e.byDay,m,c,i,u,d),je(e.byClient,a.clientType||"unknown",c,i,u,d)}return o>0&&(e.avgTtft=Math.round(t/o)),s>0&&(e.avgTokensPerSecond=Math.round(r/s)),e}function je(n,e,t,o,r,s){n[e]||(n[e]={count:0,inputTokens:0,outputTokens:0,cacheReadInputTokens:0,cacheCreationInputTokens:0}),n[e].count++,n[e].inputTokens+=t,n[e].outputTokens+=o,n[e].cacheReadInputTokens+=r,n[e].cacheCreationInputTokens+=s}function gt(n){let e=mt(),t=An(n);qo.run(_i(t)),bi(e)}function Zo(n){let e=mt(),t=xi(n),o=Number.isFinite(n.page)&&n.page>0?Math.floor(n.page):1,r=Number.isFinite(n.pageSize)&&n.pageSize>0?Math.floor(n.pageSize):50,s=(o-1)*r,a=e.prepare(`SELECT COUNT(*) AS count FROM usage_records ${t.sql}`).get(...t.params),l=e.prepare(`SELECT * FROM usage_records ${t.sql} ORDER BY timestamp DESC LIMIT ? OFFSET ?`).all(...t.params,r,s),c=Ti(Ci(e,n));return{records:l.map(ki),summary:c,total:a.count,page:o,pageSize:r}}function ht(n,e,t){let o=mt();return Ti(Ci(o,{startTime:n,endTime:e,status:t}))}function er(n){let e=mt();if(!n){e.prepare("DELETE FROM usage_records").run();return}e.prepare("DELETE FROM usage_records WHERE timestamp < ?").run(n)}function uu(){fe&&(fe.pragma("wal_checkpoint(TRUNCATE)"),fe.close(),fe=null,qo=null)}function ke(n){if(n==null)return null;if(typeof n=="number")return n;let e=parseFloat(String(n));return isNaN(e)?null:e}function tr(n){let e=ze(Xl(),"claude-code-router"),t=ze(e,`session-${n}.json`);if(Yo(t))try{let o=Xo(t,"utf-8"),r=JSON.parse(o);return{ttft:ke(r.timeToFirstToken),tokensPerSecond:ke(r.tokensPerSecond)}}catch{}try{let o=Ql(e),r=new RegExp(`^session-${n}-\\d+\\.json$`),s=o.filter(a=>r.test(a));if(s.length>0){let a=s.sort().reverse(),l=ze(e,a[0]);try{let c=Xo(l,"utf-8"),i=JSON.parse(c);return{ttft:ke(i.timeToFirstToken),tokensPerSecond:ke(i.tokensPerSecond)}}catch{return{ttft:null,tokensPerSecond:null}}}}catch{}return{ttft:null,tokensPerSecond:null}}function du(n,e,t){return mt().prepare("SELECT MIN(timestamp) AS timestamp FROM usage_records WHERE provider = ? AND timestamp >= ? AND timestamp <= ?").get(n,e,t)?.timestamp??void 0}var Pn,ql,Ko,Zl,eu,tu,gi,fe,qo,hi,yt=S(()=>{"use strict";Pn=ze(Kl(),".claude-code-router","data"),ql=ze(Pn,"usage.sqlite"),Ko=ze(Pn,"usage.jsonl"),Zl=1,eu=180,tu=3600*1e3,gi="legacy_usage_jsonl_migrated_at",fe=null,qo=null,hi=0});import{existsSync as pu}from"fs";import{homedir as fu}from"os";import{join as mu}from"path";import{writeFile as gu}from"fs/promises";async function Ri(){let n=fu(),e=mu(n,".claude.json");if(!pu(e)){let o={numStartups:184,autoUpdaterStatus:"enabled",userID:Array.from({length:64},()=>Math.random().toString(16)[2]).join(""),hasCompletedOnboarding:!0,lastOnboardingVersion:"1.0.17",projects:{}};await gu(e,JSON.stringify(o,null,2))}}var wi=S(()=>{"use strict"});import{existsSync as hu,readFileSync as yu}from"fs";import{join as _u}from"path";import{HOME_DIR as ku,getActiveCodexAccount as Ai,listCodexAccounts as bu,markActiveCodexAccountLimitedAndSwitch as Oi,refreshDueCodexAccounts as xu}from"@wengine-ai/claude-code-router-shared";function Cu(n){let e=n.Clients?.codex?.autoSwitchUsageThreshold;return typeof e=="number"&&Number.isFinite(e)?Math.min(100,Math.max(1,e)):95}function Tu(n){try{let e=_u(ku,"codex-accounts",`${n}.auth.json`);if(!hu(e))return{};let t=JSON.parse(yu(e,"utf8"));return{accessToken:t?.tokens?.access_token,chatGptAccountId:t?.tokens?.account_id||n}}catch{return{}}}function vu(n){let e=n?.rate_limit;if(!e)return null;let t=e.primary_window,o=e.secondary_window;return{used5h:typeof t?.used_percent=="number"?t.used_percent:void 0,used7d:typeof o?.used_percent=="number"?o.used_percent:void 0,resetAfter5h:typeof t?.reset_after_seconds=="number"?t.reset_after_seconds:void 0,resetAfter7d:typeof o?.reset_after_seconds=="number"?o.reset_after_seconds:void 0}}async function Ru(n){let{accessToken:e,chatGptAccountId:t}=Tu(n);if(!e)return null;let o={Authorization:`Bearer ${e}`,"ChatGPT-Account-Id":t||n,originator:"codex_cli_rs",Accept:"application/json","Accept-Encoding":"gzip, deflate","User-Agent":"codex_cli_rs/0.0.0"},r=["https://chatgpt.com/backend-api/wham/usage","https://chatgpt.com/backend-api/codex/usage"];for(let s of r)try{let a=await fetch(s,{headers:o,signal:AbortSignal.timeout(15e3)});if(!a.ok)continue;let l=vu(await a.json());if(l)return l}catch{}return null}function wu(n,e){let t=typeof n.used7d=="number"&&n.used7d>=e,o=typeof n.used5h=="number"&&n.used5h>=e;return t?{window:"7d",used:n.used7d,retryAfterSeconds:n.resetAfter7d}:o?{window:"5h",used:n.used5h,retryAfterSeconds:n.resetAfter5h}:null}async function Su(){try{let n=await j(),e=Ai(n);return{id:e?.id,email:e?.email}}catch{return{}}}async function Ei(){try{let n=await j();if((n.Clients?.codex||{}).autoSwitchAccounts===!1)return;let t=Cu(n),o=Math.max(1,bu(n).accounts.length);for(let r=0;r<o;r+=1){let s=Ai(n);if(!s?.id)return;let a=await Ru(s.id);if(!a)return;let l=wu(a,t);if(!l)return;let c=`Codex ${l.window} usage reached ${Math.round(l.used)}% (auto-switch threshold ${t}%)`,i=Oi(n,c,l.retryAfterSeconds);if(await q(i.config),!i.switchedAccount){console.warn(`[Codex] ${c}; no available Codex account could be switched to`);return}console.warn(`[Codex] ${c}; switched account to ${i.switchedAccount.email||i.switchedAccount.id}`),n=i.config}}catch(n){console.error("Failed to auto-switch Codex account before usage limit:",n)}}async function On(n){try{let e=await j();if((e.Clients?.codex||{}).autoSwitchAccounts===!1)return;let o=Oi(e,n);await q(o.config),o.switchedAccount?console.warn(`[Codex] Rate limit detected; switched account to ${o.switchedAccount.email||o.switchedAccount.id}`):console.warn("[Codex] Rate limit detected, but no available Codex account could be switched to")}catch(e){console.error("Failed to auto-switch Codex account after rate limit:",e)}}async function Pi(){try{let n=await j();if(n.Clients?.codex?.autoRefreshTokens===!1)return;let e=await xu(n);for(let t of e)t.refreshed?console.log(`[Codex] Refreshed tokens for account ${t.label} (${t.id})`):console.warn(`[Codex] Failed to refresh tokens for account ${t.label} (${t.id}): ${t.error}`)}catch(n){console.error("[Codex] Token refresh cycle failed:",n)}}function Ii(){if(Si)return;Si=!0,setTimeout(()=>void Pi(),6e4).unref(),setInterval(()=>void Pi(),Pu).unref()}function En(n,e){return n===429||!!(e&&/rate[\s_]limit|too many|限流|频率限制|qps_limit|token_limit|quota exhausted|usage limit|limit reached/i.test(e))}async function Mi(){return Su()}var Pu,Si,nr=S(()=>{"use strict";ut();Pu=1800*1e3,Si=!1});import{existsSync as Au,readdirSync as Ou,statSync as Eu,unlinkSync as Iu}from"fs";import{join as $i}from"path";import{HOME_DIR as Mu}from"@wengine-ai/claude-code-router-shared";function Li(n=$i(Mu,"logs")){try{if(!Au(n))return;let e=Date.now()-Nu;for(let t of Ou(n)){if(!/^ccr-.*\.log$/.test(t))continue;let o=$i(n,t),r=Eu(o);r.isFile()&&r.mtime.getTime()<e&&Iu(o)}}catch(e){console.warn("Failed to prune old server log files:",e)}}function Fi(){Ni||(Ni=!0,Li(),setInterval(Li,Lu).unref())}var $u,Nu,Lu,Ni,Ui=S(()=>{"use strict";$u=7,Nu=$u*24*60*60*1e3,Lu=1440*60*1e3,Ni=!1});async function Di(n,e){let t=e.plugins||e.Plugins||[];for(let o of t){let{name:r,enabled:s=!1,options:a={}}=o;switch(r){case"token-speed":rt.registerPlugin(yn,{enabled:s,outputHandlers:[{type:"temp-file",enabled:!0,config:{subdirectory:"claude-code-router",extension:"json",includeTimestamp:!0,prefix:"session"}}],...a});break;default:console.warn(`Unknown plugin: ${r}`);break}}await rt.enablePlugins(n)}var ji=S(()=>{"use strict";jo()});import{existsSync as Hi,mkdirSync as Fu,readFileSync as Ji,writeFileSync as Uu}from"fs";import{join as sr}from"path";import{HOME_DIR as Bi,listCodexAccounts as Du}from"@wengine-ai/claude-code-router-shared";function zi(n){if(!(typeof n!="number"||!Number.isFinite(n)))return new Date(n*1e3).toISOString()}function Gi(){if(!Hi(rr))return{};try{let n=JSON.parse(Ji(rr,"utf8"));return!n||typeof n!="object"||Array.isArray(n)?{}:n}catch{return{}}}function Vi(n){Fu(Wi,{recursive:!0}),Uu(rr,`${JSON.stringify(n,null,2)}
|
|
388
|
+
`,"utf8")}function Hu(n,e){let t=!1,o={};for(let[r,s]of Object.entries(n))e.has(r)?o[r]=s:t=!0;return t&&Vi(o),t?o:n}function Ju(n,e){if(!n?.fetchedAt)return!1;let t=Date.parse(n.fetchedAt),o=e?ju:zu;return Number.isFinite(t)&&Date.now()-t<o}function Bu(n){let e=n?.rate_limit;if(!e)return null;let t=e.primary_window,o=e.secondary_window,r={planType:typeof n.plan_type=="string"?n.plan_type:void 0,rateLimitReachedType:typeof n.rate_limit_reached_type?.type=="string"?n.rate_limit_reached_type.type:null};return typeof t?.used_percent=="number"&&(r.used5h=t.used_percent,r.reset5h=zi(t.reset_at)),typeof o?.used_percent=="number"&&(r.used7d=o.used_percent,r.reset7d=zi(o.reset_at)),r.used5h!==void 0||r.used7d!==void 0?r:null}function Wu(n){let e=sr(Bi,"codex-accounts",`${n}.auth.json`);if(!Hi(e))return null;try{return JSON.parse(Ji(e,"utf8"))}catch{return null}}async function Gu(n){let e=Wu(n),t=e?.tokens?.access_token,o=e?.tokens?.account_id||n;if(!t)return null;let r={Authorization:`Bearer ${t}`,"ChatGPT-Account-Id":o,originator:"codex_cli_rs",Accept:"application/json","Accept-Encoding":"gzip, deflate","User-Agent":"codex_cli_rs/0.0.0"},s=["https://chatgpt.com/backend-api/wham/usage","https://chatgpt.com/backend-api/codex/usage"];for(let a of s)try{let l=await fetch(a,{headers:r,signal:AbortSignal.timeout(15e3)});if(!l.ok)continue;let c=await l.json(),i=Bu(c);if(i)return i}catch{}return null}function Vu(n,e){return e?{...n,plan:e.planType||n.plan,limitedWindow:e.rateLimitReachedType?n.limitedWindow||"unknown":n.limitedWindow,usage:{used5h:e.used5h??0,used7d:e.used7d??0,limit5h:e.used5h!==void 0?100:void 0,limit7d:e.used7d!==void 0?100:void 0,reset5h:e.reset5h,reset7d:e.reset7d}}:n}function Qu(n){for(let e of n){if(or.has(e))continue;let t=(async()=>{let o=await Gu(e);if(!o)return;let r=Gi();r[e]={...o,fetchedAt:new Date().toISOString()},Vi(r)})().catch(o=>{console.error(`Failed to refresh Codex usage for ${e}:`,o)}).finally(()=>{or.delete(e)});or.set(e,t)}}async function He(n){let e=Du(n),t=new Set(e.accounts.map(a=>a.id)),o=Hu(Gi(),t),r=e.accounts.filter(a=>!Ju(o[a.id],a.active)).map(a=>a.id);r.length>0&&Qu(r);let s=e.accounts.map(a=>Vu(a,o[a.id]));return{...e,accounts:s}}var Wi,rr,ju,zu,or,Qi=S(()=>{"use strict";Wi=sr(Bi,"data"),rr=sr(Wi,"codex-usage-cache.json"),ju=60*1e3,zu=1800*1e3,or=new Map});import{join as te,isAbsolute as Ku,normalize as Xu,dirname as Yu}from"path";import{fileURLToPath as qu}from"url";import Zu from"@fastify/static";import{readdirSync as Ki,statSync as ed,readFileSync as Xi,writeFileSync as td,existsSync as ue,unlinkSync as Yi,rmSync as nd}from"fs";import{homedir as ir}from"os";import{getPresetDir as In,readManifestFromDir as ar,manifestToPresetFile as qi,saveManifest as Zi,isPresetInstalled as ea,extractPreset as od,HOME_DIR as rd,loadConfigFromManifest as sd,downloadPresetToTemp as id,findMarketPresetByName as ad,getMarketPresets as cd,applyClientSelection as ld,activateCodexAccount as ud,deleteCodexAccount as dd,disableClient as pd,enableClient as fd,exportCodexRefreshToken as ta,importCodexAccountFromRefreshToken as md,importCurrentCodexAccount as gd,isClientId as hd,listClientStatuses as na,restoreClient as yd,listProjectConfigs as _d,readProjectConfigById as cr,readProjectConfig as kd,writeProjectConfig as oa,deleteProjectConfig as bd,getClaudeProjectId as xd,getProjectConfigPath as Cd,refreshProjectTakeovers as Td,syncGlobalProjectTakeovers as vd,getProjectTakeoverClients as lr,setProjectTakeover as ur,isProjectTakeoverClient as Rd}from"@wengine-ai/claude-code-router-shared";import wd from"@fastify/multipart";import Sd from"adm-zip";function Pd(n){let e=new Date().toISOString(),t=new Date(Date.now()-300*60*1e3).toISOString(),o=new Date(Date.now()-10080*60*1e3).toISOString(),r=ht(t,e),s=ht(o,e),a=[],l=new Set;for(let c of n||[])c&&c.name&&l.add(c.name);for(let c of Object.keys(r.byProvider||{}))l.add(c);for(let c of Object.keys(s.byProvider||{}))l.add(c);for(let c of l){let i=r.byProvider[c]||{inputTokens:0,outputTokens:0},u=s.byProvider[c]||{inputTokens:0,outputTokens:0},d=(i.inputTokens||0)+(i.outputTokens||0),m=(u.inputTokens||0)+(u.outputTokens||0),g,y,p=(n||[]).find(f=>f&&f.name===c);p&&p.quota&&(g=p.quota.limit5h,y=p.quota.limit7d),a.push({provider:c,used5h:d,used7d:m,limit5h:g,limit7d:y})}return a}async function ra(n,e){let t=n.app;Ve(),Qe(),t.register(wd,{limits:{fileSize:50*1024*1024}}),t.get("/v1/models",async()=>{let l=wn(e);return{object:"list",data:l,first_id:l[0]?.id||null,last_id:l[l.length-1]?.id||null,has_more:!1}}),t.get("/v1/models/:modelId",async(l,c)=>{let i=decodeURIComponent(l.params.modelId),u=wn(e).find(d=>d.id===i);return u||(c.status(404),{type:"error",error:{type:"not_found_error",message:`Model not found: ${i}`}})}),t.post("/v1/messages/count_tokens",async(l,c)=>{let{messages:i,tools:u,system:d,model:m}=l.body,g=t._server.tokenizerService;if(m&&m.includes(",")&&g)try{let[p,f]=m.split(",");l.log?.info(`Looking up tokenizer for provider: ${p}, model: ${f}`);let _=g.getTokenizerConfigForModel(p,f);_?l.log?.info(`Using tokenizer config: ${JSON.stringify(_)}`):l.log?.warn(`No tokenizer config found for ${p},${f}, using default tiktoken`);let k=await g.countTokens({messages:i,system:d,tools:u},_,p);return{input_tokens:k.tokenCount,tokenizer:k.tokenizerUsed}}catch(p){l.log?.error(`Error using configured tokenizer: ${p.message}`),l.log?.error(p.stack)}else m?m.includes(",")?g||l.log?.warn("TokenizerService not available, using default tiktoken"):l.log?.info(`Model "${m}" does not contain comma, using default tiktoken`):l.log?.info("No model specified, using default tiktoken");return{input_tokens:It(i,d,u)}}),t.get("/api/config",async(l,c)=>await Jo()),t.get("/api/transformers",async(l,c)=>{let i=t._server.transformerService.getAllTransformers();return{transformers:Array.from(i.entries()).map(([d,m])=>({name:d,endpoint:m.endPoint||null}))}}),t.post("/api/config",async(l,c)=>{let i=l.body,u=yr(i||{});if(u.length>0)return c.status(400),{success:!1,error:"Invalid proxy URL",message:u.map(g=>`${g.key}: ${g.error}`).join("; "),proxyErrors:u};let d=await xn();d&&console.log(`Backed up existing configuration file to ${d}`),await q(i);let m;try{m=await vd(i),m.failed.length>0&&t.log?.warn?.({projectTakeoverSync:m},"Config saved but some global project takeovers failed to sync")}catch(g){t.log?.warn?.(`Config saved but global project takeover sync failed: ${g?.message||g}`)}try{let g=t._server;if(g?.configService){g.configService.reload();let y=i?.Providers||i?.providers;if(Array.isArray(y)&&g.configService.set("providers",y),ce&&g.transformerService&&(g.providerService=new ce(g.configService,g.transformerService,t.log)),dt(i,t.log),Ne&&mn){try{mn()}catch{}let p={enabled:g.configService.get("ACTIVE_PROBE_ENABLED")??!0,quotaProbeIntervalMinutes:g.configService.get("QUOTA_PROBE_INTERVAL_MINUTES")??10,probeTimeoutMs:g.configService.get("PROBE_TIMEOUT_MS")??15e3,initialDelayMs:g.configService.get("PROBE_INITIAL_DELAY_MS")??5e3,excludeProviders:g.configService.get("EXCLUDE_PROBE_PROVIDERS")??[]};g.activeProbeService=Ne(()=>g.providerService.getProviders(),p,f=>se(g.configService,f),t.log,f=>g.configService.get(f))}}}catch(g){t.log?.warn?.(`Config saved but runtime reload failed: ${g?.message||g}`)}return{success:!0,message:"Config saved successfully",projectTakeoverSync:m}}),t.get("/api/clients",async(l,c)=>{try{let i=await j();return{clients:na(i)}}catch(i){console.error("Failed to get client integrations:",i),c.status(500).send({error:i.message||"Failed to get client integrations"})}}),t.post("/api/clients/apply",async(l,c)=>{try{let i=l.body,u=Array.isArray(i?.enabled)?i.enabled:[],d=await j(),m=ld(d,u);return await q(m.config),m}catch(i){console.error("Failed to apply client integrations:",i),c.status(500).send({error:i.message||"Failed to apply client integrations"})}});async function o(l,c,i){try{let{id:u}=l.params;if(!hd(u)){c.status(404).send({error:`Unknown client: ${u}`});return}let d=await j(),m=i==="enable"?fd(d,u):i==="restore"?yd(d,u):pd(d,u);return await q(d),{success:m.success,result:m,results:[m],clients:na(d),config:d}}catch(u){console.error(`Failed to ${i} client integration:`,u),c.status(500).send({error:u.message||`Failed to ${i} client integration`})}}t.post("/api/clients/:id/enable",async(l,c)=>o(l,c,"enable")),t.post("/api/clients/:id/disable",async(l,c)=>o(l,c,"disable")),t.post("/api/clients/:id/restore",async(l,c)=>o(l,c,"restore")),t.get("/api/clients/codex/accounts",async(l,c)=>{try{let i=await j();return await He(i)}catch(i){console.error("Failed to get Codex accounts:",i),c.status(500).send({error:i.message||"Failed to get Codex accounts"})}}),t.post("/api/clients/codex/accounts/import-current",async(l,c)=>{try{let i=l.body,u=await j(),d=gd(u,i?.label);await q(d.config);let m=await He(d.config);return{...d,...m}}catch(i){console.error("Failed to import current Codex account:",i),c.status(500).send({error:i.message||"Failed to import current Codex account"})}}),t.post("/api/clients/codex/accounts/import-rt",async(l,c)=>{try{let i=l.body,u=await j(),d=await md(u,i?.refreshToken||"",i?.label);await q(d.config);let m=await He(d.config);return{...d,...m}}catch(i){console.error("Failed to import Codex account from refresh token:",i),c.status(500).send({error:i.message||"Failed to import Codex account from refresh token"})}}),t.post("/api/clients/codex/accounts/:accountId/activate",async(l,c)=>{try{let{accountId:i}=l.params,u=await j(),d=ud(u,i);await q(d.config);let m=await He(d.config);return{...d,...m}}catch(i){console.error("Failed to activate Codex account:",i),c.status(500).send({error:i.message||"Failed to activate Codex account"})}}),t.post("/api/clients/codex/accounts/:accountId/export-rt",async(l,c)=>{try{let{accountId:i}=l.params,u=await j();return ta(u,i)}catch(i){console.error("Failed to export Codex refresh token:",i),c.status(500).send({error:i.message||"Failed to export Codex refresh token"})}}),t.post("/api/clients/codex/accounts/export-rt",async(l,c)=>{try{let i=await j();return ta(i)}catch(i){console.error("Failed to export active Codex refresh token:",i),c.status(500).send({error:i.message||"Failed to export active Codex refresh token"})}}),t.delete("/api/clients/codex/accounts/:accountId",async(l,c)=>{try{let{accountId:i}=l.params,u=await j(),d=dd(u,i);await q(d.config);let m=await He(d.config);return{...d,...m}}catch(i){console.error("Failed to delete Codex account:",i),c.status(500).send({error:i.message||"Failed to delete Codex account"})}}),t.get("/api/projects",async(l,c)=>{try{let i=await _d();return{projects:await Promise.all(i.map(async d=>{let m=await lr(d.path);return{...d,ccrTakeoverClients:m,ccrTakeover:m.length>0}}))}}catch(i){console.error("Failed to list project configs:",i),c.status(500).send({error:i.message||"Failed to list project configs"})}}),t.post("/api/projects",async(l,c)=>{try{let{path:i}=l.body||{};if(!i||typeof i!="string"||!Ku(i)){c.status(400).send({error:"A valid absolute project path is required"});return}let u=Xu(i).replace(/[\\/]+$/,"")||i;if(await kd(u)){c.status(409).send({error:"Project is already configured"});return}await oa(u,{Router:{}});try{let g=await j();await ur(u,["claudeCode"],g)}catch(g){console.error("Failed to auto-enable ccr takeover for new project:",g)}let m=await lr(u);return{id:xd(u),path:u,configPath:Cd(u),Router:{},ccrTakeoverClients:m,ccrTakeover:m.length>0}}catch(i){console.error("Failed to add project config:",i),c.status(500).send({error:i.message||"Failed to add project config"})}}),t.put("/api/projects/:id",async(l,c)=>{try{let{id:i}=l.params,{Router:u}=l.body||{};if(!u||typeof u!="object"){c.status(400).send({error:"Router must be an object"});return}let d=await cr(i);if(!d){c.status(404).send({error:"Project config not found"});return}if(await oa(d.path,{Router:u}),Object.keys(u).length===0){let y=await j();await Td(d.path,y)}let g=await lr(d.path);return{id:i,path:d.path,configPath:d.configPath,Router:u,ccrTakeoverClients:g,ccrTakeover:g.length>0}}catch(i){console.error("Failed to update project config:",i),c.status(500).send({error:i.message||"Failed to update project config"})}}),t.put("/api/projects/:id/takeover",async(l,c)=>{try{let{id:i}=l.params,u=l.body||{},d;if(Array.isArray(u.clients))d=u.clients.filter(Rd);else if(typeof u.enabled=="boolean")d=u.enabled?["claudeCode"]:[];else{c.status(400).send({error:"clients (array) or enabled (boolean) is required"});return}let m=await cr(i);if(!m){c.status(404).send({error:"Project config not found"});return}let g=await j(),y=await ur(m.path,d,g);return{id:i,path:m.path,ccrTakeoverClients:y,ccrTakeover:y.length>0}}catch(i){console.error("Failed to update ccr takeover status:",i),c.status(500).send({error:i.message||"Failed to update ccr takeover status"})}}),t.delete("/api/projects/:id",async(l,c)=>{try{let{id:i}=l.params,u=await cr(i);if(!u){c.status(404).send({error:"Project config not found"});return}try{let d=await j();await ur(u.path,[],d)}catch(d){console.error("Failed to remove ccr takeover while deleting project:",d)}return await bd(u.path),{success:!0}}catch(i){console.error("Failed to delete project config:",i),c.status(500).send({error:i.message||"Failed to delete project config"})}});let r=typeof __dirname=="string"?__dirname:Yu(qu(import.meta.url)),s=ue(te(r,"index.html"))?r:ue(te(r,"..","index.html"))?te(r,".."):te(r,"..","dist");t.register(Zu,{root:s,prefix:"/ui/",maxAge:"1h"}),t.get("/ui",async(l,c)=>c.redirect("/ui/")),t.get("/api/logs/files",async(l,c)=>{try{let i=te(ir(),".claude-code-router","logs"),u=[];if(ue(i)){let d=Ki(i);for(let m of d)if(m.endsWith(".log")){let g=te(i,m),y=ed(g);u.push({name:m,path:g,size:y.size,lastModified:y.mtime.toISOString()})}u.sort((m,g)=>new Date(g.lastModified).getTime()-new Date(m.lastModified).getTime())}return u}catch(i){console.error("Failed to get log files:",i),c.status(500).send({error:"Failed to get log files"})}}),t.get("/api/logs",async(l,c)=>{try{let i=l.query.file,u;return i?u=i:u=te(ir(),".claude-code-router","logs","app.log"),ue(u)?Xi(u,"utf8").split(`
|
|
389
|
+
`).filter(g=>g.trim()):[]}catch(i){console.error("Failed to get logs:",i),c.status(500).send({error:"Failed to get logs"})}}),t.delete("/api/logs",async(l,c)=>{try{let i=l.query.file,u;return i?u=i:u=te(ir(),".claude-code-router","logs","app.log"),ue(u)&&td(u,"","utf8"),{success:!0,message:"Logs cleared successfully"}}catch(i){console.error("Failed to clear logs:",i),c.status(500).send({error:"Failed to clear logs"})}}),t.get("/api/debug-log",async()=>({enabled:xt()})),t.put("/api/debug-log",async l=>{let{enabled:c}=l.body;return zn(c),{enabled:xt()}}),t.get("/api/usage",async(l,c)=>{try{let i=l.query;return Zo({startTime:i.startDate,endTime:i.endDate,model:i.model,provider:i.provider,scenario:i.scenario,clientType:i.clientType,sessionId:i.sessionId,status:i.status,page:i.page?parseInt(i.page,10):void 0,pageSize:i.pageSize?parseInt(i.pageSize,10):void 0})}catch(i){console.error("Failed to query usage:",i),c.status(500).send({error:"Failed to query usage"})}}),t.get("/api/usage/summary",async(l,c)=>{try{let i=l.query;return ht(i.startDate,i.endDate,i.status)}catch(i){console.error("Failed to query usage summary:",i),c.status(500).send({error:"Failed to query usage summary"})}}),t.delete("/api/usage",async(l,c)=>{try{let i=l.query;return er(i.beforeDate),{success:!0,message:i.beforeDate?"Usage data cleared before "+i.beforeDate:"All usage data cleared"}}catch(i){console.error("Failed to clear usage:",i),c.status(500).send({error:"Failed to clear usage data"})}}),t.get("/api/providers/health",async(l,c)=>{try{return{states:U().getAllStates().map(d=>({provider:d.provider,model:d.model,status:d.status,failureCount:d.failureCount,successCount:d.successCount,lastFailureTime:d.lastFailureTime,lastError:d.lastError,rateLimitUntil:d.rateLimitUntil??null})),timestamp:new Date().toISOString()}}catch(i){console.error("Failed to get provider health:",i),c.status(500).send({error:"Failed to get provider health"})}}),t.post("/api/providers/probe",async(l,c)=>{try{let{providerName:i}=l.body;if(!i)return c.status(400),{error:"providerName is required"};let d=t._server?.activeProbeService;if(!d?.probeProviderManually)return c.status(503),{error:"Active probe service is not available"};let m=await d.probeProviderManually(i);return m&&vn(i,l.log),{provider:i,success:m,timestamp:new Date().toISOString()}}catch(i){console.error("Failed to probe provider:",i),c.status(500).send({error:i.message||"Failed to probe provider"})}}),t.post("/api/providers/probe-all",async(l,c)=>{try{let i=t._server,u=i?.activeProbeService;if(!u?.probeProviderManually)return c.status(503),{error:"Active probe service is not available"};let d=(i?.providerService?.getProviders?.()||[]).filter(g=>g?.name&&g.enabled!==!1),m=await Promise.all(d.map(async g=>{let y=await u.probeProviderManually(g.name);return y&&vn(g.name,l?.log),{provider:g.name,success:y}}));return{results:m,successCount:m.filter(g=>g.success).length,total:m.length,timestamp:new Date().toISOString()}}catch(i){console.error("Failed to probe all providers:",i),c.status(500).send({error:i.message||"Failed to probe all providers"})}}),t.get("/api/providers/quota",async(l,c)=>{try{let u=(await j()).Providers||[],d=Pd(u),m=new Map(d.map(p=>[p.provider,p])),g=Yn();for(let p of d){let f=g.find(_=>_.provider===p.provider);f&&f.limit!=null&&(p.limit5h=f.limit,p.used5h=f.limit-(f.remaining??0),f.reset&&(p.reset5h=new Date(f.reset*1e3).toISOString()))}let y=oo();for(let p of y){let f=m.get(p.provider);f||(f={provider:p.provider,used5h:0,used7d:0},d.push(f),m.set(p.provider,f)),typeof p.totalBalance=="number"?(f.limit7d=p.totalBalance,f.type7d=p.currency?"balance":"rateLimit",p.currency&&(f.currency=p.currency),typeof p.usedBalance=="number"?f.used7d=p.usedBalance:typeof p.remainingBalance=="number"?f.used7d=Math.max(0,p.totalBalance-p.remainingBalance):(f.used7d=0,f.limit7d=p.totalBalance)):typeof p.usedBalance=="number"&&(f.used7d=p.usedBalance),typeof p.usedDailyBalance=="number"&&(f.used5h=p.usedDailyBalance,f.type5h="rateLimit"),typeof p.limitDaily=="number"&&(f.limit5h=p.limitDaily,f.type5h="rateLimit"),typeof p.resetTime=="string"&&(p.limitDaily!==void 0?f.reset5h=p.resetTime:f.reset7d=p.resetTime),typeof p.resetTime7d=="string"&&(f.reset7d=p.resetTime7d)}return{quotas:d,timestamp:new Date().toISOString()}}catch(i){console.error("Failed to compute provider quota:",i),c.status(500).send({error:"Failed to compute provider quota"})}}),t.get("/api/presets",async(l,c)=>{try{let i=te(rd,"presets");if(!ue(i))return{presets:[]};let d=Ki(i,{withFileTypes:!0}).filter(g=>g.isDirectory()&&!g.name.startsWith(".")).map(g=>g.name),m=[];for(let g of d){let y=te(i,g);try{let p=te(y,"manifest.json"),f=Xi(p,"utf-8"),_=JSON.parse(f),{Providers:k,Router:h,PORT:b,HOST:x,API_TIMEOUT_MS:v,PROXY_URL:C,PROXY_GLOBAL_ENABLED:R,LOG:T,LOG_LEVEL:A,StatusLine:w,NON_INTERACTIVE_MODE:O,...P}=_;m.push({id:g,name:P.name||g,version:P.version||"1.0.0",description:P.description,author:P.author,homepage:P.homepage,repository:P.repository,license:P.license,keywords:P.keywords,ccrVersion:P.ccrVersion,source:P.source,sourceType:P.sourceType,checksum:P.checksum,installed:!0})}catch(p){console.error(`Failed to read preset ${g}:`,p)}}return{presets:m}}catch(i){console.error("Failed to get presets:",i),c.status(500).send({error:"Failed to get presets"})}}),t.get("/api/presets/:name",async(l,c)=>{try{let{name:i}=l.params,u=In(i);if(!ue(u)){c.status(404).send({error:"Preset not found"});return}let d=await ar(u);return{...qi(d),config:sd(d,u),userValues:d.userValues||{}}}catch(i){console.error("Failed to get preset:",i),c.status(500).send({error:i.message||"Failed to get preset"})}}),t.post("/api/presets/:name/apply",async(l,c)=>{try{let{name:i}=l.params,{secrets:u}=l.body,d=In(i);if(!ue(d)){c.status(404).send({error:"Preset not found"});return}let g={...await ar(d)};return u&&Object.keys(u).length>0&&(g.userValues={...g.userValues,...u}),await Zi(i,g),{success:!0,message:"Preset applied successfully"}}catch(i){console.error("Failed to apply preset:",i),c.status(500).send({error:i.message||"Failed to apply preset"})}}),t.delete("/api/presets/:name",async(l,c)=>{try{let{name:i}=l.params,u=In(i);if(!ue(u)){c.status(404).send({error:"Preset not found"});return}return nd(u,{recursive:!0,force:!0}),{success:!0,message:"Preset deleted successfully"}}catch(i){console.error("Failed to delete preset:",i),c.status(500).send({error:i.message||"Failed to delete preset"})}}),t.get("/api/presets/market",async(l,c)=>{try{return{presets:await cd()}}catch(i){console.error("Failed to get market presets:",i),c.status(500).send({error:i.message||"Failed to get market presets"})}}),t.post("/api/presets/install/github",async(l,c)=>{try{let{presetName:i}=l.body;if(!i){c.status(400).send({error:"Preset name is required"});return}let u=await ad(i);if(!u){c.status(400).send({error:"Preset not found in marketplace",message:`Preset '${i}' is not available in the official marketplace. Please check the available presets.`});return}if(!u.repo){c.status(400).send({error:"Invalid preset data",message:`Preset '${i}' does not have repository information`});return}let d=u.repo.match(/(?:github\.com[:/]|^)([^/]+)\/([^/\s#]+?)(?:\.git)?$/);if(!d){c.status(400).send({error:"Invalid GitHub repository URL"});return}let[,m,g]=d,y=u.name||i;if(await ea(y)){c.status(409).send({error:"Preset already installed",message:`Preset '${y}' is already installed. To update or reconfigure, please delete it first using the delete button.`,presetName:y});return}let p=`https://github.com/${m}/${g}/archive/refs/heads/main.zip`,f=await id(p),_=await a(f);if(await ea(y)){Yi(f),c.status(409).send({error:"Preset already installed",message:`Preset '${y}' was installed while downloading. Please try again.`,presetName:y});return}let k=In(y);await od(f,k);let h=await ar(k);return h.repository=u.repo,u.url&&(h.source=u.url),await Zi(y,h),Yi(f),{success:!0,presetName:y,preset:{..._.metadata,installed:!0}}}catch(i){console.error("Failed to install preset from GitHub:",i),c.status(500).send({error:i.message||"Failed to install preset from GitHub"})}});async function a(l){let c=new Sd(l),i=c.getEntry("manifest.json");if(i||(i=c.getEntries().find(m=>m.entryName.includes("manifest.json"))||null),!i)throw new Error("Invalid preset file: manifest.json not found");let u=JSON.parse(i.getData().toString("utf-8"));return qi(u)}return n}var sa=S(()=>{"use strict";et();ve();Se();Lt();gn();Z();We();ee();Rn();ut();yt();Qi();Vo()});function Ad(n){let e=n||"";return e.includes(",")&&(e=e.split(",").pop()||e),e.includes("/")&&(e=e.split("/").pop()||e),e.includes(":")&&(e=e.split(":")[0]),e.trim().toLowerCase()}function Od(n){let e=Ad(n);return[/claude/i,/gemini/i,/gpt-4o/i,/gpt-4\.1/i,/gpt-4-vision/i,/qwen.*vl/i,/glm-4v/i,/grok.*vision/i,/pixtral/i,/llava/i].some(o=>o.test(e))}function Ed(n){return n.some(e=>e.role==="user"&&Array.isArray(e.content)&&e.content.some(t=>t.type==="image"||t.type==="image_url"||Array.isArray(t?.content)&&t.content.some(o=>o.type==="image"||o.type==="image_url")))}var dr,Mn,pr,ia,aa=S(()=>{"use strict";dr=class{cache=new Map;maxSize;ttl;constructor(e=100,t=300*1e3){this.maxSize=e,this.ttl=t}evictExpired(){let e=Date.now();for(let[t,o]of this.cache)e-o.timestamp>this.ttl&&this.cache.delete(t)}trim(){if(this.cache.size<=this.maxSize)return;let e=[...this.cache.keys()].slice(0,this.cache.size-this.maxSize);for(let t of e)this.cache.delete(t)}storeImage(e,t){this.hasImage(e)||(this.evictExpired(),this.cache.set(e,{source:t,timestamp:Date.now()}),this.trim())}getImage(e){let t=this.cache.get(e);return t?Date.now()-t.timestamp>this.ttl?(this.cache.delete(e),null):t.source:null}hasImage(e){let t=this.cache.get(e);return t?Date.now()-t.timestamp>this.ttl?(this.cache.delete(e),!1):!0:!1}clear(){this.cache.clear()}size(){return this.evictExpired(),this.cache.size}},Mn=new dr;pr=class{name="image";tools;constructor(){this.tools=new Map,this.appendTools()}shouldHandle(e,t){if(!t.Router.image||e.body.model===t.Router.image||!Ed(e.body.messages))return!1;let r=e.body.messages[e.body.messages.length-1];if(!t.forceUseImageAgent){if(Od(e.body.model))return!1;if(e.body.model=t.Router.image,r.role==="user"&&Array.isArray(r.content)){let s=[];r.content.filter(a=>a.type==="tool_result").forEach(a=>{Array.isArray(a.content)&&(a.content.forEach(l=>{l.type==="image"&&s.push(l)}),a.content="read image successfully")}),r.content.push(...s)}return!1}return!0}appendTools(){this.tools.set("analyzeImage",{name:"analyzeImage",description:"Analyse image or images by ID and extract information such as OCR text, objects, layout, colors, or safety signals.",input_schema:{type:"object",properties:{imageId:{type:"array",description:"an array of IDs to analyse",items:{type:"string"}},task:{type:"string",description:"Details of task to perform on the image.The more detailed, the better"},regions:{type:"array",description:"Optional regions of interest within the image",items:{type:"object",properties:{name:{type:"string",description:"Optional label for the region"},x:{type:"number",description:"X coordinate"},y:{type:"number",description:"Y coordinate"},w:{type:"number",description:"Width of the region"},h:{type:"number",description:"Height of the region"},units:{type:"string",enum:["px","pct"],description:"Units for coordinates and size"}},required:["x","y","w","h","units"]}}},required:["imageId","task"]},handler:async(e,t)=>{let o=[],r;if(e.imageId){if(Array.isArray(e.imageId))e.imageId.forEach(l=>{let c=Mn.getImage(`${t.req.id}_Image#${l}`);c&&o.push({type:"image",source:c})});else{let l=Mn.getImage(`${t.req.id}_Image#${e.imageId}`);l&&o.push({type:"image",source:l})}r=e.imageId,delete e.imageId}let s=t.req.body.messages[t.req.body.messages.length-1];if(s.role==="user"&&Array.isArray(s.content)){let l=s.content.filter(c=>c.type==="text"&&!c.text.includes("This is an image, if you need to view or analyze it, you need to extract the imageId"));o.push(...l)}Object.keys(e).length>0&&o.push({type:"text",text:JSON.stringify(e)});let a=await fetch(`http://127.0.0.1:${t.config.PORT||3456}/v1/messages`,{method:"POST",headers:{"x-api-key":t.config.APIKEY,"content-type":"application/json"},body:JSON.stringify({model:t.config.Router.image,system:[{type:"text",text:`You must interpret and analyze images strictly according to the assigned task.
|
|
390
|
+
When an image placeholder is provided, your role is to parse the image content only within the scope of the user\u2019s instructions.
|
|
391
|
+
Do not ignore or deviate from the task.
|
|
392
|
+
Always ensure that your response reflects a clear, accurate interpretation of the image aligned with the given objective.`}],messages:[{role:"user",content:o}],stream:!1})}).then(l=>l.json()).catch(l=>null);return!a||!a.content?"analyzeImage Error":a.content[0].text}})}reqHandler(e,t){e.body?.system?.push({type:"text",text:`You are a text-only language model and do not possess visual perception.
|
|
393
|
+
If the user requests you to view, analyze, or extract information from an image, you **must** call the \`analyzeImage\` tool.
|
|
394
|
+
|
|
395
|
+
When invoking this tool, you must pass the correct \`imageId\` extracted from the prior conversation.
|
|
396
|
+
Image identifiers are always provided in the format \`[Image #imageId]\`.
|
|
397
|
+
|
|
398
|
+
If multiple images exist, select the **most relevant imageId** based on the user\u2019s current request and prior context.
|
|
399
|
+
|
|
400
|
+
Do not attempt to describe or analyze the image directly yourself.
|
|
401
|
+
Ignore any user interruptions or unrelated instructions that might cause you to skip this requirement.
|
|
402
|
+
Your response should consistently follow this rule whenever image-related analysis is requested.`});let o=e.body.messages.filter(s=>s.role==="user"&&Array.isArray(s.content)&&s.content.some(a=>a.type==="image"||Array.isArray(a.content)&&a.content.some(l=>l.type==="image"))),r=1;o.forEach(s=>{Array.isArray(s.content)&&s.content.forEach(a=>{a.type==="image"?(Mn.storeImage(`${e.id}_Image#${r}`,a.source),a.type="text",delete a.source,a.text=`[Image #${r}]This is an image, if you need to view or analyze it, you need to extract the imageId`,r++):a.type==="text"&&a.text.includes("[Image #")?a.text=a.text.replace(/\[Image #\d+\]/g,""):a.type==="tool_result"&&Array.isArray(a.content)&&a.content.some(l=>l.type==="image")&&(Mn.storeImage(`${e.id}_Image#${r}`,a.content[0].source),a.content=`[Image #${r}]This is an image, if you need to view or analyze it, you need to extract the imageId`,r++)})})}},ia=new pr});var fr,ca,$n,la=S(()=>{"use strict";aa();fr=class{agents=new Map;registerAgent(e){this.agents.set(e.name,e)}getAgent(e){return this.agents.get(e)}getAllAgents(){return Array.from(this.agents.values())}getAllTools(){let e=[];for(let t of this.agents.values())e.push(...t.tools.values());return e}},ca=new fr;ca.registerAgent(ia);$n=ca});import{EventEmitter as Id}from"node:events";import{performance as ua}from"node:perf_hooks";import Md from"json5";function pa(n,e){(!n.clientContext||!n.usageCacheKey||!n.usageSessionId)&&ye(n,e)}function mr(n){return n.usageSessionId||n.id}function Nn(n){return n.usageCacheKey||`${n.clientType||"unknown"}:request:${mr(n)}`}function Je(n){return n.body?.model?Array.isArray(n.body.model)?n.body.model.join(","):n.body.model:Array.isArray(n.model)?n.model.join(","):n.model||""}function $d(n){if(!n)return;let e=n;if(Buffer.isBuffer(n)&&(e=n.toString("utf8")),typeof e=="string")try{e=JSON.parse(e)}catch{return}if(typeof e!="object")return;let t=e.usage?Ue(e.usage):e.response?.usage?Ue(e.response.usage):void 0,o=e.model||e.response?.model;if(!(!t&&!o))return{usage:t,model:o}}async function Nd(n,e,t){if(await new Promise((r,s)=>{let a=l=>l?s(l):r();Sn(t)(n,e,a).then(()=>r(),s)}),e.sent)return;let o=new URL(`http://127.0.0.1${n.url}`);if(n.pathname=o.pathname,n.pathname.endsWith("/v1/messages")&&n.pathname!=="/v1/messages"&&(n.preset=n.pathname.replace("/v1/messages","").replace("/","")),n.pathname.endsWith("/v1/responses")&&n.pathname!=="/v1/responses"&&(n.preset=n.pathname.replace("/v1/responses","").replace("/","")),n.pathname.endsWith("/v1/messages")||n.pathname.endsWith("/v1/responses")){pa(n,t);let r=Nn(n);n.clientContext?.usageScope==="session"&&(n.previousUsage=X.get(r))}if((n.pathname.endsWith("/v1/messages")||n.pathname.endsWith("/v1/responses"))&&n.clientType==="codex"){await Ei();let r=await Mi();n.codexAccountId=r.id,n.codexAccountEmail=r.email}}async function Ld(n,e,t){if(!n.pathname?.endsWith("/v1/messages"))return;let o=[];for(let r of $n.getAllAgents())r.shouldHandle(n,t)&&(o.push(r.name),r.reqHandler(n,t),r.tools.size&&(n.body?.tools?.length||(n.body.tools=[]),n.body.tools.unshift(...Array.from(r.tools.values()).map(s=>({name:s.name,description:s.description,input_schema:s.input_schema})))));o.length&&(n.agents=o)}function fa(n){return{authCodex:(e,t)=>Nd(e,t,n),agent:(e,t)=>Ld(e,t,n)}}function ma(n,e){n.addHook("onRequest",async t=>{let o=new URL(`http://127.0.0.1${t.url}`);t.pathname=o.pathname,(o.pathname.endsWith("/v1/messages")||o.pathname.endsWith("/v1/responses"))&&!t.requestStartTime&&(t.requestStartTime=ua.now())}),n.addHook("preHandler",async(t,o)=>{let r=t.pathname||new URL(`http://127.0.0.1${t.url}`).pathname;r.endsWith("/v1/messages")||r.endsWith("/v1/responses")||await new Promise((s,a)=>{let l=c=>c?a(c):s();Sn(e)(t,o,l).then(()=>s(),a)})}),n.addHook("onError",async(t,o,r)=>{t.errorMessage=r?.message||r?.toString?.()||"Unknown error",da.emit("onError",t,o,r)}),n.addHook("onSend",(t,o,r,s)=>{(t.ccrHookOrder||=[]).push("onSend");let a=t.pathname?.endsWith("/v1/messages"),l=t.pathname?.endsWith("/v1/responses");if(a||l){pa(t,e);let c=mr(t),i=Nn(t);if(r instanceof ReadableStream){if(a&&t.agents){let y=new AbortController,p=r.pipeThrough(new oe),f,_=-1,k="",h="",b="",x=[],v=[];return s(null,hn(p,async(C,R)=>{try{if(C.event==="content_block_start"&&C?.data?.content_block?.name){let T=t.agents.find(A=>$n.getAgent(A)?.tools.get(C.data.content_block.name));if(T){f=$n.getAgent(T),_=C.data.index,k=C.data.content_block.name,b=C.data.content_block.id;return}}if(_>-1&&C.data.index===_&&C.data?.delta?.type==="input_json_delta"){h+=C.data?.delta?.partial_json;return}if(_>-1&&C.data.index===_&&C.data?.type==="content_block_stop"){try{let T=Md.parse(h);v.push({type:"tool_use",id:b,name:k,input:T});let A=await f?.tools.get(k)?.handler(T,{req:t,config:e});x.push({tool_use_id:b,type:"tool_result",content:A}),f=void 0,_=-1,k="",h="",b=""}catch(T){console.log(T)}return}if(C.event==="message_delta"&&x.length){t.body.messages.push({role:"assistant",content:v}),t.body.messages.push({role:"user",content:x});let T=await fetch(`http://127.0.0.1:${e.PORT||3456}/v1/messages`,{method:"POST",headers:{"x-api-key":e.APIKEY,"content-type":"application/json"},body:JSON.stringify(t.body)});if(!T.ok)return;let w=T.body.pipeThrough(new oe).getReader();for(;;)try{let{value:O,done:P}=await w.read();if(P)break;let E=O;if(["message_start","message_stop"].includes(E.event))continue;if(!R.desiredSize)break;R.enqueue(E)}catch(O){if(O.name==="AbortError"||O.code==="ERR_STREAM_PREMATURE_CLOSE"){y.abort();break}throw O}return}return C}catch(T){if(console.error("Unexpected error in stream processing:",T),T.code==="ERR_STREAM_PREMATURE_CLOSE"){y.abort();return}throw T}}).pipeThrough(new Le))}let[d,m]=r.tee(),g=async y=>{let f=y.pipeThrough(new TextDecoderStream).pipeThrough(new oe).getReader();try{for(;;){let{done:_,value:k}=await f.read();if(_)break;let h=k.event,b=k.data;if(h==="message_start"&&b?.message?.model&&(t.upstreamModel=b.message.model),h==="response.completed"&&b?.response?.model&&(t.upstreamModel=b.response.model),b?.usage){let x=X.get(i)||{},v=Ue(b.usage),C=Cn(x,v,h==="message_start");t.log?.info?.({debug_log:!0,reqId:t.id,phase:"usage_capture_anthropic_sse",event:h,provider:t.provider,model:Je(t),usageSessionId:c,capturedUsage:v,mergedUsage:C}),(v?.cache_read_input_tokens||v?.cache_creation_input_tokens)&&console.log("[Usage] Cache tokens:",{cache_read:v?.cache_read_input_tokens,cache_creation:v?.cache_creation_input_tokens}),X.put(i,C)}if(b?.response?.usage){let x=Ue(b.response.usage),v=X.get(i)||{},C=Cn(v,x,!1);t.log?.info?.({debug_log:!0,reqId:t.id,phase:"usage_capture_responses_sse",event:h,provider:t.provider,model:Je(t),usageSessionId:c,capturedUsage:x,mergedUsage:C}),X.put(i,C)}}}catch(_){_.name==="AbortError"||_.code==="ERR_STREAM_PREMATURE_CLOSE"?console.error("Background read stream closed prematurely"):console.error("Error in background stream reading:",_)}finally{f.releaseLock()}};return t.usageCapturePromise=g(m),s(null,d)}let u=$d(r);if(u?.usage&&X.put(i,u.usage),u?.model&&(t.upstreamModel=u.model),typeof r=="object")return r.error?s(r.error,null):s(r,null)}if(typeof r=="object"&&r.error)return s(r.error,null);s(null,r)}),n.addHook("onSend",async(t,o,r)=>{if(da.emit("onSend",t,o,r),o.statusCode>=400&&(t.pathname?.endsWith("/v1/messages")||t.pathname?.endsWith("/v1/responses")))try{typeof r=="string"?t.errorResponseBody=r:r&&typeof r=="object"&&(t.errorResponseBody=JSON.stringify(r))}catch{}return r}),n.addHook("onResponse",async(t,o)=>{if((t.ccrHookOrder||=[]).push("onResponse"),!(!t.pathname?.endsWith("/v1/messages")&&!t.pathname?.endsWith("/v1/responses")))try{t.usageCapturePromise&&await t.usageCapturePromise,t.tokenSpeedCapturePromise&&await t.tokenSpeedCapturePromise;let r=mr(t),s=o.statusCode>=400,a=s?void 0:X.get(Nn(t)),l=tr(r),c=U(),i,u,d=t.sseError,m=d&&(d.type||d.code||d.message),g=a?.output_tokens&&a.output_tokens>0,y=s||m&&!g;if(y){i=t.errorMessage||o.errorMessage||t.error?.message||t.error?.toString?.()||void 0,m&&(i=i||JSON.stringify(d),u=JSON.stringify(d)),u=u||t.errorResponseBody;let h=Je(t);En(o.statusCode,i)?(c.markRateLimited(t.provider||"",h,120,i),(t.clientType||he(t))==="codex"&&await On(i)):c.recordFailure(t.provider||"",h,i)}else{let h=Je(t);c.recordSuccess(t.provider||"",h)}let p=a?.cache_read_input_tokens??0,_=a?.input_tokens||0||t.tokenCount||0;!p&&t.tokenCount&&a?.input_tokens&&a.input_tokens<t.tokenCount&&(p=t.tokenCount-a.input_tokens,p&&console.log("[Usage] Inferred cache tokens:",{tokenCount:t.tokenCount,netInput:a.input_tokens,impliedCache:p}));let k=y?0:a?.output_tokens||0;!y&&t.body?.stream&&_===0&&k===0&&t.log?.warn?.({debug_log:!0,reqId:t.id,phase:"usage_zero_stream",provider:t.provider,originalModel:t.originalModel||t.body?.model||"",model:Je(t),usageSessionId:r,tokenCount:t.tokenCount,cachedUsage:a,note:"Successful streaming request ended with zero usage. Check provider_stream_chunk usage_monitor and usage_capture_* logs."}),gt({id:`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,timestamp:new Date().toISOString(),sessionId:r,provider:t.provider||"",originalModel:t.originalModel||t.body?.model||"",model:Je(t),upstreamModel:t.upstreamModel,modelFamily:t.modelFamily||"",scenarioType:t.scenarioType||"default",clientType:t.clientType||he(t),codexAccountId:t.codexAccountId,codexAccountEmail:t.codexAccountEmail,stream:t.body?.stream??!1,inputTokens:_,outputTokens:k,cacheReadInputTokens:p,cacheCreationInputTokens:a?.cache_creation_input_tokens||0,ttft:y?null:l.ttft,tokensPerSecond:y?null:l.tokensPerSecond,durationMs:t.requestStartTime?Math.round(ua.now()-t.requestStartTime):0,status:y?"error":"success",errorMessage:i,responseBody:u}),t.clientContext?.usageScope!=="session"&&X.delete(Nn(t))}catch(r){console.error("Usage tracking error:",r)}})}var da,ga=S(()=>{"use strict";Oe();Pt();ee();Oo();Eo();Io();yt();Wo();la();Qo();Nt();nr();da=new Id});var ha={};Fn(ha,{createCcrServer:()=>Jd});import{homedir as Fd}from"os";import{join as Ud}from"path";import{createStream as Dd}from"rotating-file-stream";import{CONFIG_FILE as jd,HOME_DIR as zd,listPresets as Hd}from"@wengine-ai/claude-code-router-shared";async function Jd(n={}){await Ri(),await bn();let e=await Bo();Ii();let t=e.Providers||e.providers||[],o=t&&t.length>0,r=e.HOST||"127.0.0.1";o?(r=e.HOST,e.APIKEY||(r="127.0.0.1")):(r="0.0.0.0",console.log("\u2139\uFE0F No providers configured. Listening on 0.0.0.0 without authentication."));let s=n.port??e.PORT??3456,a=process.env.SERVICE_PORT?parseInt(process.env.SERVICE_PORT):s,l=p=>(p>9?"":"0")+p,c=(p,f)=>{let _;p?typeof p=="number"?_=new Date(p):_=p:_=new Date;let k=_.getFullYear()+""+l(_.getMonth()+1),h=l(_.getDate()),b=l(_.getHours()),x=l(_.getMinutes());return`./logs/ccr-${k}${h}${b}${x}${l(_.getSeconds())}${f?`_${f}`:""}.log`},i;n.logger!==void 0?i=n.logger:(Fi(),e.LOG!==!1?(e.LOG===void 0&&(e.LOG=!0),i={level:e.LOG_LEVEL||"error",stream:Dd(c,{path:zd,interval:"1d",size:"50M",compress:!1})}):i=!1);let u=await Hd(),d=new _a({jsonPath:jd,initialConfig:{providers:e.Providers||e.providers,HOST:r,PORT:a,LOG_FILE:Ud(Fd(),".claude-code-router","claude-code-router.log")},logger:i});await d.ready(),await ra(d,e),d.recordUsage=p=>{try{let f=p.req?p.req.clientType||he(p.req):"unknown";f==="codex"&&En(0,p.errorMessage)&&On(p.errorMessage),gt({id:`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,timestamp:new Date().toISOString(),sessionId:p.sessionId||"",provider:p.provider||"",originalModel:p.originalModel||"",model:p.model||"",modelFamily:p.modelFamily||"",scenarioType:p.scenarioType||"default",clientType:f,codexAccountId:p.req?.codexAccountId,codexAccountEmail:p.req?.codexAccountEmail,stream:p.stream??!1,inputTokens:p.inputTokens||0,outputTokens:0,cacheReadInputTokens:p.cacheReadInputTokens||0,cacheCreationInputTokens:p.cacheCreationInputTokens||0,ttft:null,tokensPerSecond:null,durationMs:0,status:"error",errorMessage:p.errorMessage,responseBody:void 0})}catch(f){console.error("Fallback usage tracking error:",f)}},ma(d,e),d.ccrPreHandlerCallbacks=fa(e),(await Promise.allSettled(u.map(async p=>await d.registerNamespace(`/preset/${p.name}`,p.config)))).forEach((p,f)=>{if(p.status==="rejected"){let _=u[f],k=p.reason instanceof Error?p.reason.message:String(p.reason);d.app?.log?.error?.(`Failed to register preset "${_?.name}": ${k}`)}}),await Di(d,e),dt(e,d.app?.log);let g=p=>{d.app.log.error({err:p},"Uncaught exception")},y=(p,f)=>{d.app.log.error({reason:p,promise:f},"Unhandled rejection")};return process.on("uncaughtException",g),process.on("unhandledRejection",y),d.app.addHook("onClose",async()=>{process.off("uncaughtException",g),process.off("unhandledRejection",y)}),d}var ya=S(()=>{"use strict";ka();wi();ut();nr();Ui();ji();sa();ga();Rn();yt();Oe()});import Bd from"fastify";import Wd from"@fastify/cors";function Gd(n={}){let e=Bd({bodyLimit:52428800,...n});return e.setErrorHandler(xr),e.register(Wd),e}async function Vd(n={}){return(await Promise.resolve().then(()=>(ya(),ha))).createCcrServer(n)}var gr,_a,l_,ka=S(()=>{Dn();bt();Nt();Lt();po();mo();et();Pt();gn();ee();ve();Se();Z();Oe();Nt();Xe();Oe();et();Dn();Lt();po();mo();jo();Mo();ee();ve();wo();Se();ee();gn();We();Z();ut();Wo();Rn();Vo();Qo();yt();gr=class{app;configService;providerService;transformerService;tokenizerService;activeProbeService;recordUsage;readiness;mainNamespaceRegistered=!1;signalHandlersRegistered=!1;ccrPreHandlerCallbacks;constructor(e={}){let{initialConfig:t,jsonPath:o,envPath:r,useEnvFile:s,useJsonFile:a,useEnvironmentVariables:l,...c}=e;this.app=Gd({...c,logger:c.logger??!0}),this.app._server=this;let i={initialConfig:t};o!==void 0&&(i.jsonPath=o),r!==void 0&&(i.envPath=r),s!==void 0&&(i.useEnvFile=s),a!==void 0&&(i.useJsonFile=a),l!==void 0&&(i.useEnvironmentVariables=l),this.configService=new be(i),this.transformerService=new Me(this.configService,this.app.log),this.tokenizerService=new $e(this.configService,this.app.log),this.readiness=(async()=>{await Promise.all([this.transformerService.initialize(),this.tokenizerService.initialize()]),this.providerService=new ce(this.configService,this.transformerService,this.app.log)})()}async ready(){await this.readiness}async register(e,t){await this.app.register(e,t)}addHook(e,t){this.app.addHook(e,t)}async registerNamespace(e,t){if(!e)throw new Error("name is required");if(await this.ready(),e==="/"&&this.mainNamespaceRegistered)return;let o=this.configService,r=this.transformerService,s=this.providerService,a=this.tokenizerService;if(e!=="/"){if(!t)throw new Error("options is required");o=new be({initialConfig:{...t,providers:t.Providers||t.providers}}),r=new Me(o,this.app.log),a=new $e(o,this.app.log),await Promise.all([r.initialize(),a.initialize()]),s=new ce(o,r,this.app.log)}let l=async c=>{c.decorate("configService",o),c.decorate("transformerService",r),c.decorate("providerService",s),c.decorate("tokenizerService",a),c.decorate("recordUsage",this.recordUsage||(()=>{})),c.addHook("preHandler",async(i,u)=>{let d=new URL(`http://127.0.0.1${i.url}`);i.pathname=d.pathname;let m=d.pathname.endsWith("/v1/messages"),g=d.pathname.endsWith("/v1/responses");if(!m&&!g||!i.body||typeof i.body!="object")return;let y=i.ccrHookOrder||=[];if(y.push("request-normalize"),g&&i.body.input&&!i.body.messages&&tt(i.body),i.body.stream===void 0&&(i.body.stream=!1),i.log.info({data:i.body,type:"request body"}),y.push("adapter"),!i.originalModel&&i.body.model&&(i.originalModel=i.body.model),ye(i,o.getAll()),y.push("auth-codex"),!(this.ccrPreHandlerCallbacks&&(await this.ccrPreHandlerCallbacks.authCodex(i,u),u.sent))&&(y.push("agent"),!(this.ccrPreHandlerCallbacks&&(await this.ccrPreHandlerCallbacks.agent(i,u),u.sent)))){y.push("router"),i.body?.model&&await Mt(i,u,{configService:o,tokenizerService:a}),i.usageCacheKey&&X.put(i.usageCacheKey,{input_tokens:0,output_tokens:0,cache_read_input_tokens:0,cache_creation_input_tokens:0}),y.push("provider-model-normalize");try{let p=i.body;if(!p||!p.model)return u.code(400).send({error:"Missing model in request body"});let f=p.model.split(","),_=p.model;if(f.length>1){let[k,...h]=f;_=h.join(","),p.model=_,i.provider=k}i.model=_}catch(p){return i.log.error({error:p},"Error in modelProviderMiddleware:"),u.code(500).send({error:"Internal server error"})}}}),await ys(c)};e==="/"?(await this.app.register(l),this.mainNamespaceRegistered=!0):await this.app.register(l,{prefix:e})}async start(){try{if(await this.ready(),await this.registerNamespace("/"),!this.signalHandlersRegistered){this.signalHandlersRegistered=!0;let t=async s=>{this.app.log.info(`Received ${s}, shutting down gracefully...`);try{Po()}catch{}await this.app.close(),process.exit(0)},o=()=>void t("SIGINT"),r=()=>void t("SIGTERM");process.on("SIGINT",o),process.on("SIGTERM",r),this.app.addHook("onClose",async()=>{process.off("SIGINT",o),process.off("SIGTERM",r),this.signalHandlersRegistered=!1;try{this.tokenizerService.dispose()}catch{}await Un()})}await this.app.ready();let e=await this.app.listen({port:parseInt(this.configService.get("PORT")||"3000",10),host:this.configService.get("HOST")||"127.0.0.1"});this.app.log.info(`\u{1F680} LLMs API server listening on ${e}`);try{Ve()}catch{}try{Qe()}catch{}try{Vn()}catch{}try{let t={enabled:this.configService.get("ACTIVE_PROBE_ENABLED")??!0,quotaProbeIntervalMinutes:this.configService.get("QUOTA_PROBE_INTERVAL_MINUTES")??10,probeTimeoutMs:this.configService.get("PROBE_TIMEOUT_MS")??15e3,initialDelayMs:this.configService.get("PROBE_INITIAL_DELAY_MS")??5e3,excludeProviders:this.configService.get("EXCLUDE_PROBE_PROVIDERS")??[]};this.activeProbeService=Ne(()=>this.providerService.getProviders(),t,o=>se(this.configService,o),this.app.log,o=>this.configService.get(o))}catch(t){this.app.log.warn?.(`Failed to start active probe service: ${t.message}`)}}catch(e){this.app.log.error(`Error starting server: ${e}`),process.exit(1)}}},_a=gr;l_=Vd});ka();export{fn as ActiveProbeService,be as ConfigService,ae as ProjectRoutingError,St as ProviderHealthStore,ce as ProviderService,oe as SSEParserTransform,Le as SSESerializerTransform,$e as TokenizerService,Me as TransformerService,Sn as apiKeyAuth,ye as applyClientAdapter,xn as backupConfigFile,Yr as builtinClientAdapterRegistry,It as calculateTokenCount,Ec as clearClientAdapterCaches,vn as clearProviderHealth,Un as closeProxyDispatchers,mi as collectReachableModelKeys,Vd as createCcrServer,_a as default,he as detectClientType,as as diagnoseResolutionFailure,Ke as extractSessionIdFromUserId,ri as getActiveProbeService,oo as getAllQuotaResults,Yn as getAllRateLimitInfo,Zr as getClientAdapter,kt as getConfiguredProxyUrl,U as getHealthStore,V as getProxyDispatcher,vo as getQuotaAdapter,At as getQuotaResult,ec as getRateLimitInfo,xt as getRuntimeDebugLog,l_ as getServer,Bo as initConfig,bn as initDir,Vn as initProviderHealthPersistence,Qe as initQuotaStorePersistence,Ve as initRateLimitPersistence,qr as isClientType,_r as isGlobalProxyEnabled,wn as listAnthropicCompatibleModels,Cn as mergeUsageCapture,Pe as normalizeSessionId,Ue as normalizeUsagePayload,rt as pluginManager,j as readConfigFile,Jo as readConfigFileRaw,dt as reconcileHealthStore,mn as resetActiveProbeService,se as resolveProviderProxyUrl,hn as rewriteStream,Mt as router,us as searchProjectBySession,X as sessionUsageCache,zn as setRuntimeDebugLog,Ne as startActiveProbe,Po as stopActiveProbe,no as storeQuotaResult,yn as tokenSpeedPlugin,vi as usageStore,q as writeConfigFile};
|
|
415
403
|
//# sourceMappingURL=server.mjs.map
|