@fudrouter/fsrouter 0.6.59 → 0.6.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (556) hide show
  1. package/package.json +1 -1
  2. package/open-sse/AGENTS.md +0 -39
  3. package/open-sse/config/anthropicHeaders.js +0 -87
  4. package/open-sse/config/appConstants.js +0 -238
  5. package/open-sse/config/audioRegistry.js +0 -506
  6. package/open-sse/config/cliFingerprints.js +0 -304
  7. package/open-sse/config/codexInstructions.js +0 -119
  8. package/open-sse/config/codexQuotaScopes.js +0 -42
  9. package/open-sse/config/constants.js +0 -4
  10. package/open-sse/config/contextEditing.js +0 -68
  11. package/open-sse/config/credentialLoader.js +0 -83
  12. package/open-sse/config/defaultThinkingSignature.js +0 -12
  13. package/open-sse/config/embeddingRegistry.js +0 -264
  14. package/open-sse/config/errorConfig.js +0 -96
  15. package/open-sse/config/freeModelCatalog.data.js +0 -121
  16. package/open-sse/config/freeModelCatalog.js +0 -90
  17. package/open-sse/config/freeTierCatalog.js +0 -81
  18. package/open-sse/config/googleTtsLanguages.js +0 -62
  19. package/open-sse/config/imageParamDefs.js +0 -360
  20. package/open-sse/config/imageRegistry.js +0 -493
  21. package/open-sse/config/kiroConstants.js +0 -268
  22. package/open-sse/config/mediaConfig.js +0 -27
  23. package/open-sse/config/mediaServiceKinds.js +0 -71
  24. package/open-sse/config/models.js +0 -13
  25. package/open-sse/config/moderationRegistry.js +0 -71
  26. package/open-sse/config/musicRegistry.js +0 -99
  27. package/open-sse/config/ocrRegistry.js +0 -61
  28. package/open-sse/config/ollamaModels.js +0 -19
  29. package/open-sse/config/providerErrorRules.js +0 -114
  30. package/open-sse/config/providerFieldStrips.js +0 -35
  31. package/open-sse/config/providerHeaderProfiles.js +0 -191
  32. package/open-sse/config/providerModels.js +0 -106
  33. package/open-sse/config/providerRegistry.js +0 -16
  34. package/open-sse/config/providers.js +0 -19
  35. package/open-sse/config/registryUtils.js +0 -106
  36. package/open-sse/config/rerankRegistry.js +0 -177
  37. package/open-sse/config/runtimeConfig.js +0 -96
  38. package/open-sse/config/runway.js +0 -39
  39. package/open-sse/config/searchRegistry.js +0 -153
  40. package/open-sse/config/toolCloaking.js +0 -199
  41. package/open-sse/config/ttsModels.js +0 -129
  42. package/open-sse/config/videoRegistry.js +0 -207
  43. package/open-sse/executors/adapta-web.js +0 -435
  44. package/open-sse/executors/antigravity.js +0 -534
  45. package/open-sse/executors/antigravityUpstreamError.js +0 -13
  46. package/open-sse/executors/auggie.js +0 -437
  47. package/open-sse/executors/azure-openai.js +0 -32
  48. package/open-sse/executors/azure.js +0 -57
  49. package/open-sse/executors/base.js +0 -181
  50. package/open-sse/executors/bedrock.js +0 -633
  51. package/open-sse/executors/blackbox-web.js +0 -578
  52. package/open-sse/executors/chatgpt-web.js +0 -2042
  53. package/open-sse/executors/chipotle.js +0 -357
  54. package/open-sse/executors/claude-web-with-auto-refresh.js +0 -73
  55. package/open-sse/executors/claude-web.js +0 -586
  56. package/open-sse/executors/cliproxyapi.js +0 -296
  57. package/open-sse/executors/cloudflare-ai.js +0 -46
  58. package/open-sse/executors/codebuddy-cn.js +0 -40
  59. package/open-sse/executors/codex.js +0 -1324
  60. package/open-sse/executors/commandCode.js +0 -558
  61. package/open-sse/executors/commandcode.js +0 -88
  62. package/open-sse/executors/copilot-m365-connection.js +0 -176
  63. package/open-sse/executors/copilot-m365-frames.js +0 -192
  64. package/open-sse/executors/copilot-m365-web.js +0 -299
  65. package/open-sse/executors/copilot-web.js +0 -580
  66. package/open-sse/executors/cursor.js +0 -795
  67. package/open-sse/executors/deepseek-web-with-auto-refresh.js +0 -150
  68. package/open-sse/executors/deepseek-web.js +0 -875
  69. package/open-sse/executors/default.js +0 -430
  70. package/open-sse/executors/devin-cli.js +0 -351
  71. package/open-sse/executors/doubao-web.js +0 -550
  72. package/open-sse/executors/duckduckgo-web.js +0 -629
  73. package/open-sse/executors/forceResponsesUpstream.js +0 -33
  74. package/open-sse/executors/gemini-business.js +0 -320
  75. package/open-sse/executors/gemini-cli.js +0 -89
  76. package/open-sse/executors/gemini-web.js +0 -297
  77. package/open-sse/executors/github.js +0 -379
  78. package/open-sse/executors/gitlab.js +0 -569
  79. package/open-sse/executors/glm.js +0 -361
  80. package/open-sse/executors/grok-cli.js +0 -119
  81. package/open-sse/executors/grok-web.js +0 -345
  82. package/open-sse/executors/huggingchat.js +0 -467
  83. package/open-sse/executors/iflow.js +0 -108
  84. package/open-sse/executors/index.js +0 -78
  85. package/open-sse/executors/inner-ai.js +0 -527
  86. package/open-sse/executors/kimchi.js +0 -123
  87. package/open-sse/executors/kimi-web.js +0 -325
  88. package/open-sse/executors/kimi.js +0 -97
  89. package/open-sse/executors/kiro.js +0 -503
  90. package/open-sse/executors/kiroThinking.js +0 -44
  91. package/open-sse/executors/lmarena.js +0 -395
  92. package/open-sse/executors/mimo-free.js +0 -167
  93. package/open-sse/executors/mimocode.js +0 -392
  94. package/open-sse/executors/ninerouter.js +0 -155
  95. package/open-sse/executors/nlpcloud.js +0 -438
  96. package/open-sse/executors/ollama-local.js +0 -14
  97. package/open-sse/executors/opencode-go.js +0 -41
  98. package/open-sse/executors/opencode.js +0 -32
  99. package/open-sse/executors/perplexity-web.js +0 -581
  100. package/open-sse/executors/poe-web.js +0 -133
  101. package/open-sse/executors/pollinations.js +0 -95
  102. package/open-sse/executors/puter.js +0 -31
  103. package/open-sse/executors/qoder.js +0 -448
  104. package/open-sse/executors/qwen-web.js +0 -372
  105. package/open-sse/executors/qwen.js +0 -129
  106. package/open-sse/executors/t3-chat-web.js +0 -417
  107. package/open-sse/executors/theoldllm.js +0 -290
  108. package/open-sse/executors/trae.js +0 -418
  109. package/open-sse/executors/v0-vercel-web.js +0 -141
  110. package/open-sse/executors/venice-web.js +0 -142
  111. package/open-sse/executors/vertex.js +0 -131
  112. package/open-sse/executors/vertexMedia.js +0 -236
  113. package/open-sse/executors/windsurf.js +0 -560
  114. package/open-sse/executors/xai.js +0 -46
  115. package/open-sse/executors/xiaomi-tokenplan.js +0 -19
  116. package/open-sse/executors/yuanbao-web.js +0 -385
  117. package/open-sse/executors/zed-hosted.js +0 -281
  118. package/open-sse/executors/zenmux-free.js +0 -247
  119. package/open-sse/handlers/audioSpeech.js +0 -759
  120. package/open-sse/handlers/audioTranscription.js +0 -395
  121. package/open-sse/handlers/audioTranslation.js +0 -181
  122. package/open-sse/handlers/chatCore/nonStreamingHandler.js +0 -300
  123. package/open-sse/handlers/chatCore/requestDetail.js +0 -102
  124. package/open-sse/handlers/chatCore/sseToJsonHandler.js +0 -231
  125. package/open-sse/handlers/chatCore/streamingHandler.js +0 -95
  126. package/open-sse/handlers/chatCore.js +0 -404
  127. package/open-sse/handlers/embeddingProviders/_base.js +0 -4
  128. package/open-sse/handlers/embeddingProviders/gemini.js +0 -54
  129. package/open-sse/handlers/embeddingProviders/index.js +0 -23
  130. package/open-sse/handlers/embeddingProviders/openai.js +0 -39
  131. package/open-sse/handlers/embeddingProviders/openaiCompatNode.js +0 -13
  132. package/open-sse/handlers/embeddingsCore.js +0 -126
  133. package/open-sse/handlers/fetch/index.js +0 -237
  134. package/open-sse/handlers/imageGenerationCore.js +0 -230
  135. package/open-sse/handlers/imageProviders/_base.js +0 -31
  136. package/open-sse/handlers/imageProviders/antigravity.js +0 -73
  137. package/open-sse/handlers/imageProviders/blackForestLabs.js +0 -63
  138. package/open-sse/handlers/imageProviders/cloudflareAi.js +0 -207
  139. package/open-sse/handlers/imageProviders/codex.js +0 -217
  140. package/open-sse/handlers/imageProviders/comfyui.js +0 -25
  141. package/open-sse/handlers/imageProviders/falAi.js +0 -62
  142. package/open-sse/handlers/imageProviders/gemini.js +0 -40
  143. package/open-sse/handlers/imageProviders/huggingface.js +0 -38
  144. package/open-sse/handlers/imageProviders/index.js +0 -44
  145. package/open-sse/handlers/imageProviders/leonardo.js +0 -435
  146. package/open-sse/handlers/imageProviders/nanobanana.js +0 -79
  147. package/open-sse/handlers/imageProviders/openai.js +0 -61
  148. package/open-sse/handlers/imageProviders/runwayml.js +0 -72
  149. package/open-sse/handlers/imageProviders/sdwebui.js +0 -36
  150. package/open-sse/handlers/imageProviders/stabilityAi.js +0 -59
  151. package/open-sse/handlers/imageProviders/weavy.js +0 -222
  152. package/open-sse/handlers/moderations.js +0 -92
  153. package/open-sse/handlers/ocr.js +0 -89
  154. package/open-sse/handlers/rerank.js +0 -223
  155. package/open-sse/handlers/responseSanitizer/reasoning.js +0 -144
  156. package/open-sse/handlers/responsesHandler.js +0 -99
  157. package/open-sse/handlers/search/callers.js +0 -371
  158. package/open-sse/handlers/search/chatSearch.js +0 -409
  159. package/open-sse/handlers/search/index.js +0 -201
  160. package/open-sse/handlers/search/normalizers.js +0 -223
  161. package/open-sse/handlers/search.js +0 -1056
  162. package/open-sse/handlers/sseParser.js +0 -469
  163. package/open-sse/handlers/sttCore.js +0 -193
  164. package/open-sse/handlers/ttsCore.js +0 -74
  165. package/open-sse/handlers/ttsProviders/_base.js +0 -39
  166. package/open-sse/handlers/ttsProviders/edgeTts.js +0 -89
  167. package/open-sse/handlers/ttsProviders/elevenlabs.js +0 -48
  168. package/open-sse/handlers/ttsProviders/gemini.js +0 -117
  169. package/open-sse/handlers/ttsProviders/genericFormats.js +0 -169
  170. package/open-sse/handlers/ttsProviders/googleTts.js +0 -54
  171. package/open-sse/handlers/ttsProviders/index.js +0 -50
  172. package/open-sse/handlers/ttsProviders/localDevice.js +0 -87
  173. package/open-sse/handlers/ttsProviders/minimax.js +0 -59
  174. package/open-sse/handlers/ttsProviders/openai.js +0 -30
  175. package/open-sse/handlers/ttsProviders/openrouter.js +0 -70
  176. package/open-sse/handlers/usageExtractor.js +0 -93
  177. package/open-sse/handlers/videoGenerationCore.js +0 -119
  178. package/open-sse/handlers/videoProviders/index.js +0 -22
  179. package/open-sse/handlers/videoProviders/leonardo.js +0 -511
  180. package/open-sse/handlers/videoProviders/weavy.js +0 -198
  181. package/open-sse/handlers/webFetch.js +0 -200
  182. package/open-sse/index.js +0 -79
  183. package/open-sse/mcp-server/audit.js +0 -283
  184. package/open-sse/mcp-server/catalog.js +0 -184
  185. package/open-sse/mcp-server/descriptionCompressor.js +0 -175
  186. package/open-sse/mcp-server/httpAuthContext.js +0 -32
  187. package/open-sse/mcp-server/httpTransport.js +0 -229
  188. package/open-sse/mcp-server/index.js +0 -33
  189. package/open-sse/mcp-server/mcpCallerIdentity.js +0 -21
  190. package/open-sse/mcp-server/runtimeHeartbeat.js +0 -110
  191. package/open-sse/mcp-server/schemas/a2a.js +0 -153
  192. package/open-sse/mcp-server/schemas/audit.js +0 -17
  193. package/open-sse/mcp-server/schemas/index.js +0 -166
  194. package/open-sse/mcp-server/schemas/pickFastestModel.js +0 -90
  195. package/open-sse/mcp-server/schemas/toolDefinition.js +0 -0
  196. package/open-sse/mcp-server/schemas/toolSearch.js +0 -32
  197. package/open-sse/mcp-server/schemas/tools.js +0 -1219
  198. package/open-sse/mcp-server/scopeEnforcement.js +0 -80
  199. package/open-sse/mcp-server/server.js +0 -1168
  200. package/open-sse/mcp-server/toolCardinality.js +0 -78
  201. package/open-sse/mcp-server/toolSearch/catalog.js +0 -66
  202. package/open-sse/mcp-server/toolSearch/handler.js +0 -20
  203. package/open-sse/mcp-server/toolSearch/index.js +0 -10
  204. package/open-sse/mcp-server/toolSearch/register.js +0 -21
  205. package/open-sse/mcp-server/toolSearch/search.js +0 -55
  206. package/open-sse/mcp-server/toolSearch/signature.js +0 -67
  207. package/open-sse/mcp-server/tools/advancedTools.js +0 -893
  208. package/open-sse/mcp-server/tools/agentSkillTools.js +0 -69
  209. package/open-sse/mcp-server/tools/compressionTools.js +0 -309
  210. package/open-sse/mcp-server/tools/gamificationTools.js +0 -134
  211. package/open-sse/mcp-server/tools/githubSkillTools.js +0 -102
  212. package/open-sse/mcp-server/tools/memoryTools.js +0 -118
  213. package/open-sse/mcp-server/tools/notionTools.js +0 -101
  214. package/open-sse/mcp-server/tools/obsidianTools.js +0 -307
  215. package/open-sse/mcp-server/tools/pickFastestModel.js +0 -223
  216. package/open-sse/mcp-server/tools/pluginTools.js +0 -181
  217. package/open-sse/mcp-server/tools/poolTools.js +0 -139
  218. package/open-sse/mcp-server/tools/skillTools.js +0 -113
  219. package/open-sse/package.json +0 -10
  220. package/open-sse/providers/REGISTRY_TEMPLATE.js +0 -98
  221. package/open-sse/providers/capabilities.js +0 -293
  222. package/open-sse/providers/index.js +0 -51
  223. package/open-sse/providers/models/helpers.js +0 -20
  224. package/open-sse/providers/models/namePatterns.js +0 -33
  225. package/open-sse/providers/models/schema.js +0 -40
  226. package/open-sse/providers/pricing.js +0 -308
  227. package/open-sse/providers/registry/alicode-intl.js +0 -30
  228. package/open-sse/providers/registry/alicode.js +0 -31
  229. package/open-sse/providers/registry/anthropic.js +0 -37
  230. package/open-sse/providers/registry/antigravity.js +0 -81
  231. package/open-sse/providers/registry/assemblyai.js +0 -38
  232. package/open-sse/providers/registry/aws-polly.js +0 -45
  233. package/open-sse/providers/registry/azure.js +0 -21
  234. package/open-sse/providers/registry/black-forest-labs.js +0 -32
  235. package/open-sse/providers/registry/blackbox.js +0 -41
  236. package/open-sse/providers/registry/brave-search.js +0 -35
  237. package/open-sse/providers/registry/byteplus.js +0 -35
  238. package/open-sse/providers/registry/cartesia.js +0 -36
  239. package/open-sse/providers/registry/cerebras.js +0 -31
  240. package/open-sse/providers/registry/chutes.js +0 -24
  241. package/open-sse/providers/registry/claude.js +0 -87
  242. package/open-sse/providers/registry/cline.js +0 -51
  243. package/open-sse/providers/registry/clinepass.js +0 -57
  244. package/open-sse/providers/registry/cloudflare-ai.js +0 -55
  245. package/open-sse/providers/registry/codebuddy-cn.js +0 -77
  246. package/open-sse/providers/registry/codex.js +0 -100
  247. package/open-sse/providers/registry/cohere.js +0 -27
  248. package/open-sse/providers/registry/comfyui.js +0 -20
  249. package/open-sse/providers/registry/commandcode.js +0 -43
  250. package/open-sse/providers/registry/coqui.js +0 -30
  251. package/open-sse/providers/registry/cursor.js +0 -58
  252. package/open-sse/providers/registry/deepgram.js +0 -33
  253. package/open-sse/providers/registry/deepseek.js +0 -51
  254. package/open-sse/providers/registry/digitalocean.js +0 -92
  255. package/open-sse/providers/registry/edge-tts.js +0 -24
  256. package/open-sse/providers/registry/elevenlabs.js +0 -35
  257. package/open-sse/providers/registry/exa.js +0 -50
  258. package/open-sse/providers/registry/fal-ai.js +0 -34
  259. package/open-sse/providers/registry/featherless.js +0 -34
  260. package/open-sse/providers/registry/firecrawl.js +0 -34
  261. package/open-sse/providers/registry/fireworks.js +0 -29
  262. package/open-sse/providers/registry/gemini-cli.js +0 -58
  263. package/open-sse/providers/registry/gemini.js +0 -83
  264. package/open-sse/providers/registry/github.js +0 -88
  265. package/open-sse/providers/registry/gitlab.js +0 -32
  266. package/open-sse/providers/registry/glm-cn.js +0 -35
  267. package/open-sse/providers/registry/glm.js +0 -58
  268. package/open-sse/providers/registry/google-pse.js +0 -35
  269. package/open-sse/providers/registry/google-tts.js +0 -24
  270. package/open-sse/providers/registry/grok-cli.js +0 -86
  271. package/open-sse/providers/registry/grok-web.js +0 -39
  272. package/open-sse/providers/registry/groq.js +0 -37
  273. package/open-sse/providers/registry/huggingface.js +0 -34
  274. package/open-sse/providers/registry/hyperbolic.js +0 -35
  275. package/open-sse/providers/registry/ibm-bob.js +0 -27
  276. package/open-sse/providers/registry/iflow.js +0 -52
  277. package/open-sse/providers/registry/index.js +0 -210
  278. package/open-sse/providers/registry/inworld.js +0 -36
  279. package/open-sse/providers/registry/jina-ai.js +0 -42
  280. package/open-sse/providers/registry/jina-reader.js +0 -34
  281. package/open-sse/providers/registry/kilocode.js +0 -51
  282. package/open-sse/providers/registry/kimchi.js +0 -49
  283. package/open-sse/providers/registry/kimi-coding.js +0 -65
  284. package/open-sse/providers/registry/kimi.js +0 -56
  285. package/open-sse/providers/registry/kiro.js +0 -115
  286. package/open-sse/providers/registry/linkup.js +0 -34
  287. package/open-sse/providers/registry/local-device.js +0 -24
  288. package/open-sse/providers/registry/mimo-free.js +0 -24
  289. package/open-sse/providers/registry/minimax-cn.js +0 -76
  290. package/open-sse/providers/registry/minimax.js +0 -83
  291. package/open-sse/providers/registry/mistral.js +0 -34
  292. package/open-sse/providers/registry/mmf.js +0 -19
  293. package/open-sse/providers/registry/nanobanana.js +0 -35
  294. package/open-sse/providers/registry/nebius.js +0 -27
  295. package/open-sse/providers/registry/nvidia.js +0 -43
  296. package/open-sse/providers/registry/ollama-local.js +0 -19
  297. package/open-sse/providers/registry/ollama.js +0 -36
  298. package/open-sse/providers/registry/openai.js +0 -84
  299. package/open-sse/providers/registry/opencode-go.js +0 -41
  300. package/open-sse/providers/registry/opencode.js +0 -25
  301. package/open-sse/providers/registry/openrouter.js +0 -60
  302. package/open-sse/providers/registry/perplexity-agent.js +0 -49
  303. package/open-sse/providers/registry/perplexity-web.js +0 -33
  304. package/open-sse/providers/registry/perplexity.js +0 -37
  305. package/open-sse/providers/registry/playht.js +0 -36
  306. package/open-sse/providers/registry/qoder.js +0 -54
  307. package/open-sse/providers/registry/qwen.js +0 -33
  308. package/open-sse/providers/registry/recraft.js +0 -24
  309. package/open-sse/providers/registry/runwayml.js +0 -30
  310. package/open-sse/providers/registry/sdwebui.js +0 -20
  311. package/open-sse/providers/registry/searchapi.js +0 -35
  312. package/open-sse/providers/registry/searxng.js +0 -35
  313. package/open-sse/providers/registry/serper.js +0 -35
  314. package/open-sse/providers/registry/siliconflow.js +0 -39
  315. package/open-sse/providers/registry/stability-ai.js +0 -31
  316. package/open-sse/providers/registry/tavily.js +0 -50
  317. package/open-sse/providers/registry/together.js +0 -31
  318. package/open-sse/providers/registry/topaz.js +0 -19
  319. package/open-sse/providers/registry/tortoise.js +0 -30
  320. package/open-sse/providers/registry/venice.js +0 -56
  321. package/open-sse/providers/registry/vercel-ai-gateway.js +0 -41
  322. package/open-sse/providers/registry/vertex-partner.js +0 -29
  323. package/open-sse/providers/registry/vertex.js +0 -32
  324. package/open-sse/providers/registry/volcengine-ark.js +0 -35
  325. package/open-sse/providers/registry/voyage-ai.js +0 -30
  326. package/open-sse/providers/registry/xai.js +0 -45
  327. package/open-sse/providers/registry/xiaomi-mimo.js +0 -46
  328. package/open-sse/providers/registry/xiaomi-tokenplan.js +0 -63
  329. package/open-sse/providers/registry/youcom.js +0 -35
  330. package/open-sse/providers/schema.js +0 -76
  331. package/open-sse/providers/shared.js +0 -74
  332. package/open-sse/providers/thinkingLevels.js +0 -48
  333. package/open-sse/rtk/applyFilter.js +0 -15
  334. package/open-sse/rtk/autodetect.js +0 -111
  335. package/open-sse/rtk/caveman.js +0 -100
  336. package/open-sse/rtk/cavemanPrompts.js +0 -78
  337. package/open-sse/rtk/constants.js +0 -55
  338. package/open-sse/rtk/filters/buildOutput.js +0 -127
  339. package/open-sse/rtk/filters/dedupLog.js +0 -44
  340. package/open-sse/rtk/filters/find.js +0 -50
  341. package/open-sse/rtk/filters/gitDiff.js +0 -92
  342. package/open-sse/rtk/filters/gitLog.js +0 -99
  343. package/open-sse/rtk/filters/gitStatus.js +0 -117
  344. package/open-sse/rtk/filters/grep.js +0 -48
  345. package/open-sse/rtk/filters/ls.js +0 -79
  346. package/open-sse/rtk/filters/readNumbered.js +0 -27
  347. package/open-sse/rtk/filters/searchList.js +0 -52
  348. package/open-sse/rtk/filters/smartTruncate.js +0 -15
  349. package/open-sse/rtk/filters/tree.js +0 -32
  350. package/open-sse/rtk/headroom.js +0 -215
  351. package/open-sse/rtk/index.js +0 -155
  352. package/open-sse/rtk/paleo.js +0 -47
  353. package/open-sse/rtk/ponytail.js +0 -9
  354. package/open-sse/rtk/ponytailPrompt.js +0 -52
  355. package/open-sse/rtk/ponytailPrompts.js +0 -76
  356. package/open-sse/rtk/pxpipe.js +0 -104
  357. package/open-sse/rtk/registry.js +0 -38
  358. package/open-sse/rtk/systemInject.js +0 -98
  359. package/open-sse/services/accountFallback.js +0 -323
  360. package/open-sse/services/antigravityHeaders.js +0 -91
  361. package/open-sse/services/antigravityVersion.js +0 -154
  362. package/open-sse/services/clinepassModels.js +0 -63
  363. package/open-sse/services/codexQuotaFetcher.js +0 -312
  364. package/open-sse/services/codexVerbosity.js +0 -30
  365. package/open-sse/services/combo/context.js +0 -12
  366. package/open-sse/services/combo/fingerprintExpansion.js +0 -51
  367. package/open-sse/services/combo/headroomRanking.js +0 -28
  368. package/open-sse/services/combo/quotaExhaustionCutoff.js +0 -87
  369. package/open-sse/services/combo/quotaScoring.js +0 -226
  370. package/open-sse/services/combo/quotaShareConcurrency.js +0 -25
  371. package/open-sse/services/combo/quotaShareInflight.js +0 -50
  372. package/open-sse/services/combo/quotaShareStrategy.js +0 -130
  373. package/open-sse/services/combo/resolveAutoStrategy.js +0 -231
  374. package/open-sse/services/combo/responseValidation.js +0 -140
  375. package/open-sse/services/combo/runtimeUnits.js +0 -195
  376. package/open-sse/services/combo/sessionStickiness.js +0 -128
  377. package/open-sse/services/combo/shadowRouting.js +0 -131
  378. package/open-sse/services/combo/targetExhaustion.js +0 -75
  379. package/open-sse/services/combo/targetSorters.js +0 -126
  380. package/open-sse/services/combo/targetTimeoutRunner.js +0 -65
  381. package/open-sse/services/combo/validateQuality.js +0 -271
  382. package/open-sse/services/combo.js +0 -571
  383. package/open-sse/services/comboAgentMiddleware.js +0 -91
  384. package/open-sse/services/comboConfig.js +0 -153
  385. package/open-sse/services/comboManifestMetrics.js +0 -10
  386. package/open-sse/services/comboMetrics.js +0 -278
  387. package/open-sse/services/compact.js +0 -71
  388. package/open-sse/services/copilotModels.js +0 -155
  389. package/open-sse/services/emergencyFallback.js +0 -109
  390. package/open-sse/services/errorClassifier.js +0 -190
  391. package/open-sse/services/evalRouting.js +0 -201
  392. package/open-sse/services/freeWebSearch.js +0 -4
  393. package/open-sse/services/fusion.js +0 -223
  394. package/open-sse/services/intentClassifier.js +0 -631
  395. package/open-sse/services/kimchiModels.js +0 -176
  396. package/open-sse/services/kiroModels.js +0 -332
  397. package/open-sse/services/model.js +0 -136
  398. package/open-sse/services/modelCapabilities.js +0 -5
  399. package/open-sse/services/modelDeprecation.js +0 -101
  400. package/open-sse/services/modelFamilyFallback.js +0 -166
  401. package/open-sse/services/oauthCredentialManager.js +0 -156
  402. package/open-sse/services/pipeline.js +0 -107
  403. package/open-sse/services/projectId.js +0 -306
  404. package/open-sse/services/provider.js +0 -169
  405. package/open-sse/services/providerCooldownTracker.js +0 -94
  406. package/open-sse/services/providerDefaultRateLimit.js +0 -11
  407. package/open-sse/services/proxyAutoSelector.js +0 -24
  408. package/open-sse/services/qoderModels.js +0 -214
  409. package/open-sse/services/quotaFetchThrottle.js +0 -103
  410. package/open-sse/services/quotaMonitor.js +0 -310
  411. package/open-sse/services/quotaPreflight.js +0 -266
  412. package/open-sse/services/rateLimitManager/headers.js +0 -56
  413. package/open-sse/services/rateLimitManager.js +0 -616
  414. package/open-sse/services/rateLimitSemaphore.js +0 -112
  415. package/open-sse/services/responsesInputSanitizer.js +0 -99
  416. package/open-sse/services/slidingWindowLimiter.js +0 -44
  417. package/open-sse/services/streamRecovery.js +0 -355
  418. package/open-sse/services/taskAwareRouter.js +0 -227
  419. package/open-sse/services/taskAwareRouting.js +0 -332
  420. package/open-sse/services/thinkingBudget.js +0 -247
  421. package/open-sse/services/tokenRefresh/dedup.js +0 -31
  422. package/open-sse/services/tokenRefresh/providers.js +0 -624
  423. package/open-sse/services/tokenRefresh.js +0 -254
  424. package/open-sse/services/usage/claude.js +0 -147
  425. package/open-sse/services/usage/codebuddy-cn.js +0 -138
  426. package/open-sse/services/usage/codex.js +0 -267
  427. package/open-sse/services/usage/github.js +0 -100
  428. package/open-sse/services/usage/google.js +0 -241
  429. package/open-sse/services/usage/grok-cli.js +0 -274
  430. package/open-sse/services/usage/kiro.js +0 -188
  431. package/open-sse/services/usage/minimax.js +0 -234
  432. package/open-sse/services/usage/misc.js +0 -288
  433. package/open-sse/services/usage/shared.js +0 -70
  434. package/open-sse/services/usage.js +0 -62
  435. package/open-sse/services/usageDb.js +0 -2
  436. package/open-sse/services/webSearchRouting.js +0 -25
  437. package/open-sse/services/wildcardRouter.js +0 -59
  438. package/open-sse/shared/clineAuth.js +0 -37
  439. package/open-sse/shared/machineId.js +0 -19
  440. package/open-sse/shared/qoder/constants.js +0 -64
  441. package/open-sse/shared/qoder/cosy.js +0 -175
  442. package/open-sse/shared/qoder/encoding.js +0 -55
  443. package/open-sse/transformer/responsesTransformer.js +0 -439
  444. package/open-sse/transformer/streamToJsonConverter.js +0 -103
  445. package/open-sse/translator/concerns/chunk.js +0 -11
  446. package/open-sse/translator/concerns/finishReason.js +0 -63
  447. package/open-sse/translator/concerns/image.js +0 -124
  448. package/open-sse/translator/concerns/json.js +0 -5
  449. package/open-sse/translator/concerns/message.js +0 -7
  450. package/open-sse/translator/concerns/modality.js +0 -155
  451. package/open-sse/translator/concerns/paramSupport.js +0 -75
  452. package/open-sse/translator/concerns/prefetch.js +0 -96
  453. package/open-sse/translator/concerns/reasoning.js +0 -24
  454. package/open-sse/translator/concerns/thinking.js +0 -53
  455. package/open-sse/translator/concerns/thinkingUnified.js +0 -329
  456. package/open-sse/translator/concerns/toolCall.js +0 -153
  457. package/open-sse/translator/concerns/usage.js +0 -69
  458. package/open-sse/translator/formats/claude.js +0 -368
  459. package/open-sse/translator/formats/gemini.js +0 -380
  460. package/open-sse/translator/formats/maxTokens.js +0 -34
  461. package/open-sse/translator/formats/openai.js +0 -134
  462. package/open-sse/translator/formats/responsesApi.js +0 -141
  463. package/open-sse/translator/formats.js +0 -36
  464. package/open-sse/translator/helpers/claudeHelper.js +0 -216
  465. package/open-sse/translator/helpers/geminiHelper.js +0 -372
  466. package/open-sse/translator/helpers/imageHelper.js +0 -34
  467. package/open-sse/translator/helpers/maxTokensHelper.js +0 -27
  468. package/open-sse/translator/helpers/openaiHelper.js +0 -130
  469. package/open-sse/translator/helpers/responsesApiHelper.js +0 -139
  470. package/open-sse/translator/helpers/toolCallHelper.js +0 -148
  471. package/open-sse/translator/index.js +0 -252
  472. package/open-sse/translator/request/antigravity-to-openai.js +0 -242
  473. package/open-sse/translator/request/claude-to-kiro.js +0 -478
  474. package/open-sse/translator/request/claude-to-openai.js +0 -263
  475. package/open-sse/translator/request/gemini-to-openai.js +0 -152
  476. package/open-sse/translator/request/openai-responses.js +0 -385
  477. package/open-sse/translator/request/openai-to-claude.js +0 -383
  478. package/open-sse/translator/request/openai-to-commandcode.js +0 -176
  479. package/open-sse/translator/request/openai-to-cursor.js +0 -185
  480. package/open-sse/translator/request/openai-to-gemini.js +0 -442
  481. package/open-sse/translator/request/openai-to-kiro.js +0 -607
  482. package/open-sse/translator/request/openai-to-kiro.old.js +0 -278
  483. package/open-sse/translator/request/openai-to-ollama.js +0 -195
  484. package/open-sse/translator/request/openai-to-vertex.js +0 -42
  485. package/open-sse/translator/response/claude-to-openai.js +0 -195
  486. package/open-sse/translator/response/commandcode-to-openai.js +0 -188
  487. package/open-sse/translator/response/cursor-to-openai.js +0 -30
  488. package/open-sse/translator/response/gemini-to-openai.js +0 -147
  489. package/open-sse/translator/response/kiro-to-claude.js +0 -261
  490. package/open-sse/translator/response/kiro-to-openai.js +0 -160
  491. package/open-sse/translator/response/ollama-to-openai.js +0 -134
  492. package/open-sse/translator/response/openai-responses.js +0 -535
  493. package/open-sse/translator/response/openai-to-antigravity.js +0 -123
  494. package/open-sse/translator/response/openai-to-claude.js +0 -265
  495. package/open-sse/translator/schema/blocks.js +0 -43
  496. package/open-sse/translator/schema/defaults.js +0 -7
  497. package/open-sse/translator/schema/finishReasons.js +0 -27
  498. package/open-sse/translator/schema/index.js +0 -8
  499. package/open-sse/translator/schema/roles.js +0 -16
  500. package/open-sse/utils/agentGoalPolicy.js +0 -85
  501. package/open-sse/utils/aiSdkCompat.js +0 -75
  502. package/open-sse/utils/bypassHandler.js +0 -298
  503. package/open-sse/utils/cacheControlPolicy.js +0 -189
  504. package/open-sse/utils/claudeCloaking.js +0 -155
  505. package/open-sse/utils/claudeHeaderCache.js +0 -70
  506. package/open-sse/utils/claudeSignature.js +0 -41
  507. package/open-sse/utils/clientDetector.js +0 -63
  508. package/open-sse/utils/codebuddySanitizer.js +0 -96
  509. package/open-sse/utils/composerToolCalls.js +0 -158
  510. package/open-sse/utils/cors.js +0 -13
  511. package/open-sse/utils/cursorChecksum.js +0 -149
  512. package/open-sse/utils/cursorImages.js +0 -224
  513. package/open-sse/utils/cursorProtobuf.js +0 -904
  514. package/open-sse/utils/cursorVersionDetector.js +0 -55
  515. package/open-sse/utils/debugLog.js +0 -14
  516. package/open-sse/utils/diagnostics.js +0 -143
  517. package/open-sse/utils/error.js +0 -164
  518. package/open-sse/utils/estimateSize.js +0 -33
  519. package/open-sse/utils/finishReason.js +0 -32
  520. package/open-sse/utils/flattenToolHistory.js +0 -68
  521. package/open-sse/utils/headers.js +0 -36
  522. package/open-sse/utils/heapPressure.js +0 -35
  523. package/open-sse/utils/jsonToSse.js +0 -125
  524. package/open-sse/utils/keepaliveThreshold.js +0 -40
  525. package/open-sse/utils/logger.js +0 -104
  526. package/open-sse/utils/noThinkingAlias.js +0 -74
  527. package/open-sse/utils/number.js +0 -7
  528. package/open-sse/utils/ollamaTransform.js +0 -85
  529. package/open-sse/utils/opencodeHeaders.js +0 -47
  530. package/open-sse/utils/progressTracker.js +0 -81
  531. package/open-sse/utils/providerRequestLogging.js +0 -219
  532. package/open-sse/utils/proxyFetch.js +0 -369
  533. package/open-sse/utils/reasoningContentInjector.js +0 -79
  534. package/open-sse/utils/reasoningFields.js +0 -70
  535. package/open-sse/utils/requestLogger.js +0 -260
  536. package/open-sse/utils/responsesInputNormalization.js +0 -92
  537. package/open-sse/utils/responsesStatePolicy.js +0 -52
  538. package/open-sse/utils/responsesStreamHelpers.js +0 -49
  539. package/open-sse/utils/sessionManager.js +0 -240
  540. package/open-sse/utils/sleep.js +0 -6
  541. package/open-sse/utils/sse.js +0 -14
  542. package/open-sse/utils/sseConstants.js +0 -23
  543. package/open-sse/utils/sseHeartbeat.js +0 -104
  544. package/open-sse/utils/stream.js +0 -517
  545. package/open-sse/utils/streamFailureFinalization.js +0 -134
  546. package/open-sse/utils/streamHandler.js +0 -250
  547. package/open-sse/utils/streamHelpers.js +0 -137
  548. package/open-sse/utils/textualToolCall.js +0 -104
  549. package/open-sse/utils/thinkCloseMarker.js +0 -72
  550. package/open-sse/utils/thinkTagParser.js +0 -146
  551. package/open-sse/utils/toolCallArguments.js +0 -12
  552. package/open-sse/utils/toolDeduper.js +0 -49
  553. package/open-sse/utils/toolSources.js +0 -31
  554. package/open-sse/utils/upstreamResponseHeaders.js +0 -25
  555. package/open-sse/utils/urlSanitize.js +0 -15
  556. package/open-sse/utils/usageTracking.js +0 -347
@@ -1,345 +0,0 @@
1
- import { BaseExecutor } from "./base.js";
2
- import { PROVIDERS } from "../config/providers.js";
3
-
4
- const GROK_CHAT_API = PROVIDERS["grok-web"].baseUrl;
5
- const GROK_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36";
6
-
7
- const MODEL_MAP = {
8
- "grok-3": { grokModel: "grok-3", modelMode: "MODEL_MODE_GROK_3", isThinking: false },
9
- "grok-3-mini": { grokModel: "grok-3", modelMode: "MODEL_MODE_GROK_3_MINI_THINKING", isThinking: true },
10
- "grok-3-thinking": { grokModel: "grok-3", modelMode: "MODEL_MODE_GROK_3_THINKING", isThinking: true },
11
- "grok-4": { grokModel: "grok-4", modelMode: "MODEL_MODE_GROK_4", isThinking: false },
12
- "grok-4-mini": { grokModel: "grok-4-mini", modelMode: "MODEL_MODE_GROK_4_MINI_THINKING", isThinking: true },
13
- "grok-4-thinking": { grokModel: "grok-4", modelMode: "MODEL_MODE_GROK_4_THINKING", isThinking: true },
14
- "grok-4-heavy": { grokModel: "grok-4", modelMode: "MODEL_MODE_HEAVY", isThinking: true },
15
- "grok-4.1-mini": { grokModel: "grok-4-1-thinking-1129", modelMode: "MODEL_MODE_GROK_4_1_MINI_THINKING", isThinking: true },
16
- "grok-4.1-fast": { grokModel: "grok-4-1-thinking-1129", modelMode: "MODEL_MODE_FAST", isThinking: false },
17
- "grok-4.1-expert": { grokModel: "grok-4-1-thinking-1129", modelMode: "MODEL_MODE_EXPERT", isThinking: true },
18
- "grok-4.1-thinking": { grokModel: "grok-4-1-thinking-1129", modelMode: "MODEL_MODE_GROK_4_1_THINKING", isThinking: true },
19
- "grok-4.2": { grokModel: "grok-420", modelMode: "MODEL_MODE_GROK_420", isThinking: false },
20
- "grok-4.20": { grokModel: "grok-420", modelMode: "MODEL_MODE_GROK_420", isThinking: false },
21
- "grok-4.20-beta": { grokModel: "grok-420", modelMode: "MODEL_MODE_GROK_420", isThinking: false },
22
- };
23
-
24
- function randomString(length, alphanumeric = false) {
25
- const chars = alphanumeric ? "abcdefghijklmnopqrstuvwxyz0123456789" : "abcdefghijklmnopqrstuvwxyz";
26
- let result = "";
27
- for (let i = 0; i < length; i++) result += chars[Math.floor(Math.random() * chars.length)];
28
- return result;
29
- }
30
-
31
- function generateStatsigId() {
32
- const msg = Math.random() < 0.5
33
- ? `e:TypeError: Cannot read properties of null (reading 'children["${randomString(5, true)}"]')`
34
- : `e:TypeError: Cannot read properties of undefined (reading '${randomString(10)}')`;
35
- return btoa(msg);
36
- }
37
-
38
- function randomHex(bytes) {
39
- const arr = new Uint8Array(bytes);
40
- crypto.getRandomValues(arr);
41
- return Array.from(arr, (b) => b.toString(16).padStart(2, "0")).join("");
42
- }
43
-
44
- function parseOpenAIMessages(messages) {
45
- const extracted = [];
46
- for (const msg of messages) {
47
- let role = String(msg.role || "user");
48
- if (role === "developer") role = "system";
49
- let content = "";
50
- if (typeof msg.content === "string") {
51
- content = msg.content;
52
- } else if (Array.isArray(msg.content)) {
53
- content = msg.content.filter((c) => c.type === "text").map((c) => String(c.text || "")).join(" ");
54
- }
55
- if (!content.trim()) continue;
56
- extracted.push({ role, text: content });
57
- }
58
-
59
- let lastUserIdx = -1;
60
- for (let i = extracted.length - 1; i >= 0; i--) {
61
- if (extracted[i].role === "user") { lastUserIdx = i; break; }
62
- }
63
-
64
- const parts = [];
65
- for (let i = 0; i < extracted.length; i++) {
66
- const { role, text } = extracted[i];
67
- parts.push(i === lastUserIdx ? text : `${role}: ${text}`);
68
- }
69
- return parts.join("\n\n");
70
- }
71
-
72
- async function* readGrokNdjsonEvents(body, signal) {
73
- const reader = body.getReader();
74
- const decoder = new TextDecoder();
75
- let buffer = "";
76
- try {
77
- while (true) {
78
- if (signal?.aborted) return;
79
- const { value, done } = await reader.read();
80
- if (done) break;
81
- buffer += decoder.decode(value, { stream: true });
82
- while (true) {
83
- const idx = buffer.indexOf("\n");
84
- if (idx < 0) break;
85
- const line = buffer.slice(0, idx).trim();
86
- buffer = buffer.slice(idx + 1);
87
- if (!line) continue;
88
- try { yield JSON.parse(line); } catch { /* skip */ }
89
- }
90
- }
91
- buffer += decoder.decode();
92
- const remaining = buffer.trim();
93
- if (remaining) {
94
- try { yield JSON.parse(remaining); } catch { /* skip */ }
95
- }
96
- } finally {
97
- reader.releaseLock();
98
- }
99
- }
100
-
101
- async function* extractContent(eventStream, isThinkingModel, signal) {
102
- let fingerprint = "";
103
- let responseId = "";
104
- let thinkOpened = false;
105
-
106
- for await (const event of readGrokNdjsonEvents(eventStream, signal)) {
107
- if (event.error) {
108
- yield { error: event.error.message || `Grok error: ${event.error.code}`, done: true };
109
- return;
110
- }
111
- const resp = event.result?.response;
112
- if (!resp) continue;
113
-
114
- if (resp.llmInfo?.modelHash && !fingerprint) fingerprint = resp.llmInfo.modelHash;
115
- if (resp.responseId) responseId = resp.responseId;
116
-
117
- if (resp.modelResponse) {
118
- const mr = resp.modelResponse;
119
- if (thinkOpened && isThinkingModel) {
120
- if (mr.message) yield { thinking: mr.message };
121
- thinkOpened = false;
122
- }
123
- if (mr.message) yield { fullMessage: mr.message, fingerprint, responseId };
124
- if (mr.metadata?.llm_info?.modelHash) fingerprint = mr.metadata.llm_info.modelHash;
125
- continue;
126
- }
127
-
128
- if (resp.token != null) yield { delta: resp.token, fingerprint, responseId };
129
- }
130
- yield { done: true, fingerprint, responseId };
131
- }
132
-
133
- function sseChunk(data) {
134
- return `data: ${JSON.stringify(data)}\n\n`;
135
- }
136
-
137
- function buildStreamingResponse(eventStream, model, cid, created, isThinkingModel, signal) {
138
- const encoder = new TextEncoder();
139
- return new ReadableStream({
140
- async start(controller) {
141
- try {
142
- controller.enqueue(encoder.encode(sseChunk({
143
- id: cid, object: "chat.completion.chunk", created, model, system_fingerprint: null,
144
- choices: [{ index: 0, delta: { role: "assistant" }, finish_reason: null, logprobs: null }],
145
- })));
146
-
147
- let fp = "";
148
- for await (const chunk of extractContent(eventStream, isThinkingModel, signal)) {
149
- if (chunk.fingerprint) fp = chunk.fingerprint;
150
-
151
- if (chunk.error) {
152
- controller.enqueue(encoder.encode(sseChunk({
153
- id: cid, object: "chat.completion.chunk", created, model, system_fingerprint: fp || null,
154
- choices: [{ index: 0, delta: { content: `[Error: ${chunk.error}]` }, finish_reason: null, logprobs: null }],
155
- })));
156
- break;
157
- }
158
- if (chunk.thinking) {
159
- controller.enqueue(encoder.encode(sseChunk({
160
- id: cid, object: "chat.completion.chunk", created, model, system_fingerprint: fp || null,
161
- choices: [{ index: 0, delta: { reasoning_content: chunk.thinking }, finish_reason: null, logprobs: null }],
162
- })));
163
- continue;
164
- }
165
- if (chunk.done) break;
166
- if (chunk.delta) {
167
- controller.enqueue(encoder.encode(sseChunk({
168
- id: cid, object: "chat.completion.chunk", created, model, system_fingerprint: fp || null,
169
- choices: [{ index: 0, delta: { content: chunk.delta }, finish_reason: null, logprobs: null }],
170
- })));
171
- }
172
- }
173
-
174
- controller.enqueue(encoder.encode(sseChunk({
175
- id: cid, object: "chat.completion.chunk", created, model, system_fingerprint: fp || null,
176
- choices: [{ index: 0, delta: {}, finish_reason: "stop", logprobs: null }],
177
- })));
178
- controller.enqueue(encoder.encode("data: [DONE]\n\n"));
179
- } catch (err) {
180
- controller.enqueue(encoder.encode(sseChunk({
181
- id: cid, object: "chat.completion.chunk", created, model, system_fingerprint: null,
182
- choices: [{ index: 0, delta: { content: `[Stream error: ${err.message || String(err)}]` }, finish_reason: "stop", logprobs: null }],
183
- })));
184
- controller.enqueue(encoder.encode("data: [DONE]\n\n"));
185
- } finally {
186
- controller.close();
187
- }
188
- },
189
- });
190
- }
191
-
192
- async function buildNonStreamingResponse(eventStream, model, cid, created, isThinkingModel, signal) {
193
- let fullContent = "";
194
- let fingerprint = "";
195
- const thinkingParts = [];
196
-
197
- for await (const chunk of extractContent(eventStream, isThinkingModel, signal)) {
198
- if (chunk.fingerprint) fingerprint = chunk.fingerprint;
199
- if (chunk.error) {
200
- return new Response(JSON.stringify({
201
- error: { message: chunk.error, type: "upstream_error", code: "GROK_ERROR" },
202
- }), { status: 502, headers: { "Content-Type": "application/json" } });
203
- }
204
- if (chunk.thinking) { thinkingParts.push(chunk.thinking); continue; }
205
- if (chunk.done) break;
206
- if (chunk.fullMessage) fullContent = chunk.fullMessage;
207
- else if (chunk.delta) fullContent += chunk.delta;
208
- }
209
-
210
- const msg = { role: "assistant", content: fullContent };
211
- if (thinkingParts.length > 0) msg.reasoning_content = thinkingParts.join("\n");
212
-
213
- const promptTokens = Math.ceil(fullContent.length / 4);
214
- const completionTokens = Math.ceil(fullContent.length / 4);
215
-
216
- return new Response(JSON.stringify({
217
- id: cid, object: "chat.completion", created, model, system_fingerprint: fingerprint || null,
218
- choices: [{ index: 0, message: msg, finish_reason: "stop", logprobs: null }],
219
- usage: { prompt_tokens: promptTokens, completion_tokens: completionTokens, total_tokens: promptTokens + completionTokens },
220
- }), { status: 200, headers: { "Content-Type": "application/json" } });
221
- }
222
-
223
- export class GrokWebExecutor extends BaseExecutor {
224
- constructor() {
225
- super("grok-web", PROVIDERS["grok-web"]);
226
- }
227
-
228
- async execute({ model, body, stream, credentials, signal, log }) {
229
- const messages = body?.messages;
230
- if (!messages || !Array.isArray(messages) || messages.length === 0) {
231
- const errResp = new Response(JSON.stringify({
232
- error: { message: "Missing or empty messages array", type: "invalid_request" },
233
- }), { status: 400, headers: { "Content-Type": "application/json" } });
234
- return { response: errResp, url: GROK_CHAT_API, headers: {}, transformedBody: body };
235
- }
236
-
237
- const modelInfo = MODEL_MAP[model];
238
- if (!modelInfo) log?.info?.("GROK-WEB", `Unmapped model ${model}, defaulting to grok-4.1-fast`);
239
- const { grokModel, modelMode, isThinking } = modelInfo || MODEL_MAP["grok-4.1-fast"];
240
-
241
- const message = parseOpenAIMessages(messages);
242
- if (!message.trim()) {
243
- const errResp = new Response(JSON.stringify({
244
- error: { message: "Empty query after processing", type: "invalid_request" },
245
- }), { status: 400, headers: { "Content-Type": "application/json" } });
246
- return { response: errResp, url: GROK_CHAT_API, headers: {}, transformedBody: body };
247
- }
248
-
249
- const grokPayload = {
250
- temporary: true, modelName: grokModel, modelMode, message,
251
- fileAttachments: [], imageAttachments: [],
252
- disableSearch: false, enableImageGeneration: false, returnImageBytes: false,
253
- returnRawGrokInXaiRequest: false, enableImageStreaming: false, imageGenerationCount: 0,
254
- forceConcise: false, toolOverrides: {}, enableSideBySide: true, sendFinalMetadata: true,
255
- isReasoning: false, disableTextFollowUps: false, disableMemory: true,
256
- forceSideBySide: false, isAsyncChat: false, disableSelfHarmShortCircuit: false,
257
- deviceEnvInfo: {
258
- darkModeEnabled: false, devicePixelRatio: 2,
259
- screenWidth: 2056, screenHeight: 1329, viewportWidth: 2056, viewportHeight: 1083,
260
- },
261
- };
262
-
263
- const traceId = randomHex(16);
264
- const spanId = randomHex(8);
265
- const headers = {
266
- Accept: "*/*",
267
- "Accept-Encoding": "gzip, deflate, br, zstd",
268
- "Accept-Language": "en-US,en;q=0.9",
269
- Baggage: "sentry-environment=production,sentry-release=d6add6fb0460641fd482d767a335ef72b9b6abb8,sentry-public_key=b311e0f2690c81f25e2c4cf6d4f7ce1c",
270
- "Cache-Control": "no-cache",
271
- "Content-Type": "application/json",
272
- Origin: "https://grok.com",
273
- Pragma: "no-cache",
274
- Referer: "https://grok.com/",
275
- "Sec-Ch-Ua": '"Google Chrome";v="136", "Chromium";v="136", "Not(A:Brand";v="24"',
276
- "Sec-Ch-Ua-Mobile": "?0",
277
- "Sec-Ch-Ua-Platform": '"macOS"',
278
- "Sec-Fetch-Dest": "empty",
279
- "Sec-Fetch-Mode": "cors",
280
- "Sec-Fetch-Site": "same-origin",
281
- "User-Agent": GROK_USER_AGENT,
282
- "x-statsig-id": generateStatsigId(),
283
- "x-xai-request-id": crypto.randomUUID(),
284
- traceparent: `00-${traceId}-${spanId}-00`,
285
- };
286
-
287
- // Strip "sso=" prefix if user pasted it
288
- if (credentials.apiKey) {
289
- let token = credentials.apiKey;
290
- if (token.startsWith("sso=")) token = token.slice(4);
291
- headers["Cookie"] = `sso=${token}`;
292
- }
293
-
294
- log?.info?.("GROK-WEB", `Query to ${model} (grok=${grokModel}, mode=${modelMode}), len=${message.length}`);
295
-
296
- let response;
297
- try {
298
- response = await fetch(GROK_CHAT_API, {
299
- method: "POST", headers, body: JSON.stringify(grokPayload), signal,
300
- });
301
- } catch (err) {
302
- log?.error?.("GROK-WEB", `Fetch failed: ${err.message || String(err)}`);
303
- const errResp = new Response(JSON.stringify({
304
- error: { message: `Grok connection failed: ${err.message || String(err)}`, type: "upstream_error" },
305
- }), { status: 502, headers: { "Content-Type": "application/json" } });
306
- return { response: errResp, url: GROK_CHAT_API, headers, transformedBody: grokPayload };
307
- }
308
-
309
- if (!response.ok) {
310
- const status = response.status;
311
- let errMsg = `Grok returned HTTP ${status}`;
312
- if (status === 401 || status === 403) errMsg = "Grok auth failed — SSO cookie may be expired. Re-paste your sso cookie value from grok.com.";
313
- else if (status === 429) errMsg = "Grok rate limited. Wait a moment and retry, or rotate cookies.";
314
- log?.warn?.("GROK-WEB", errMsg);
315
- const errResp = new Response(JSON.stringify({
316
- error: { message: errMsg, type: "upstream_error", code: `HTTP_${status}` },
317
- }), { status, headers: { "Content-Type": "application/json" } });
318
- return { response: errResp, url: GROK_CHAT_API, headers, transformedBody: grokPayload };
319
- }
320
-
321
- if (!response.body) {
322
- const errResp = new Response(JSON.stringify({
323
- error: { message: "Grok returned empty response body", type: "upstream_error" },
324
- }), { status: 502, headers: { "Content-Type": "application/json" } });
325
- return { response: errResp, url: GROK_CHAT_API, headers, transformedBody: grokPayload };
326
- }
327
-
328
- const cid = `chatcmpl-grok-${crypto.randomUUID().slice(0, 12)}`;
329
- const created = Math.floor(Date.now() / 1000);
330
-
331
- let finalResponse;
332
- if (stream) {
333
- const sseStream = buildStreamingResponse(response.body, model, cid, created, isThinking, signal);
334
- finalResponse = new Response(sseStream, {
335
- status: 200,
336
- headers: { "Content-Type": "text/event-stream", "Cache-Control": "no-cache", "X-Accel-Buffering": "no" },
337
- });
338
- } else {
339
- finalResponse = await buildNonStreamingResponse(response.body, model, cid, created, isThinking, signal);
340
- }
341
- return { response: finalResponse, url: GROK_CHAT_API, headers, transformedBody: grokPayload };
342
- }
343
- }
344
-
345
- export default GrokWebExecutor;