@fudrouter/fsrouter 0.6.63 → 0.6.64

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 (559) hide show
  1. package/bin/rewriteSseImports.js +5 -1
  2. package/dist/open-sse/executors/cliproxyapi.js +2 -2
  3. package/dist/open-sse/services/rateLimitManager.js +4 -4
  4. package/package.json +1 -1
  5. package/open-sse/AGENTS.md +0 -39
  6. package/open-sse/config/anthropicHeaders.js +0 -87
  7. package/open-sse/config/appConstants.js +0 -238
  8. package/open-sse/config/audioRegistry.js +0 -506
  9. package/open-sse/config/cliFingerprints.js +0 -304
  10. package/open-sse/config/codexInstructions.js +0 -119
  11. package/open-sse/config/codexQuotaScopes.js +0 -42
  12. package/open-sse/config/constants.js +0 -4
  13. package/open-sse/config/contextEditing.js +0 -68
  14. package/open-sse/config/credentialLoader.js +0 -83
  15. package/open-sse/config/defaultThinkingSignature.js +0 -12
  16. package/open-sse/config/embeddingRegistry.js +0 -264
  17. package/open-sse/config/errorConfig.js +0 -96
  18. package/open-sse/config/freeModelCatalog.data.js +0 -121
  19. package/open-sse/config/freeModelCatalog.js +0 -90
  20. package/open-sse/config/freeTierCatalog.js +0 -81
  21. package/open-sse/config/googleTtsLanguages.js +0 -62
  22. package/open-sse/config/imageParamDefs.js +0 -360
  23. package/open-sse/config/imageRegistry.js +0 -493
  24. package/open-sse/config/kiroConstants.js +0 -268
  25. package/open-sse/config/mediaConfig.js +0 -27
  26. package/open-sse/config/mediaServiceKinds.js +0 -71
  27. package/open-sse/config/models.js +0 -13
  28. package/open-sse/config/moderationRegistry.js +0 -71
  29. package/open-sse/config/musicRegistry.js +0 -99
  30. package/open-sse/config/ocrRegistry.js +0 -61
  31. package/open-sse/config/ollamaModels.js +0 -19
  32. package/open-sse/config/providerErrorRules.js +0 -114
  33. package/open-sse/config/providerFieldStrips.js +0 -35
  34. package/open-sse/config/providerHeaderProfiles.js +0 -191
  35. package/open-sse/config/providerModels.js +0 -106
  36. package/open-sse/config/providerRegistry.js +0 -16
  37. package/open-sse/config/providers.js +0 -19
  38. package/open-sse/config/registryUtils.js +0 -106
  39. package/open-sse/config/rerankRegistry.js +0 -177
  40. package/open-sse/config/runtimeConfig.js +0 -96
  41. package/open-sse/config/runway.js +0 -39
  42. package/open-sse/config/searchRegistry.js +0 -153
  43. package/open-sse/config/toolCloaking.js +0 -199
  44. package/open-sse/config/ttsModels.js +0 -129
  45. package/open-sse/config/videoRegistry.js +0 -207
  46. package/open-sse/executors/adapta-web.js +0 -435
  47. package/open-sse/executors/antigravity.js +0 -534
  48. package/open-sse/executors/antigravityUpstreamError.js +0 -13
  49. package/open-sse/executors/auggie.js +0 -437
  50. package/open-sse/executors/azure-openai.js +0 -32
  51. package/open-sse/executors/azure.js +0 -57
  52. package/open-sse/executors/base.js +0 -181
  53. package/open-sse/executors/bedrock.js +0 -633
  54. package/open-sse/executors/blackbox-web.js +0 -578
  55. package/open-sse/executors/chatgpt-web.js +0 -2042
  56. package/open-sse/executors/chipotle.js +0 -357
  57. package/open-sse/executors/claude-web-with-auto-refresh.js +0 -73
  58. package/open-sse/executors/claude-web.js +0 -586
  59. package/open-sse/executors/cliproxyapi.js +0 -296
  60. package/open-sse/executors/cloudflare-ai.js +0 -46
  61. package/open-sse/executors/codebuddy-cn.js +0 -40
  62. package/open-sse/executors/codex.js +0 -1324
  63. package/open-sse/executors/commandCode.js +0 -558
  64. package/open-sse/executors/commandcode.js +0 -88
  65. package/open-sse/executors/copilot-m365-connection.js +0 -176
  66. package/open-sse/executors/copilot-m365-frames.js +0 -192
  67. package/open-sse/executors/copilot-m365-web.js +0 -299
  68. package/open-sse/executors/copilot-web.js +0 -580
  69. package/open-sse/executors/cursor.js +0 -795
  70. package/open-sse/executors/deepseek-web-with-auto-refresh.js +0 -150
  71. package/open-sse/executors/deepseek-web.js +0 -875
  72. package/open-sse/executors/default.js +0 -430
  73. package/open-sse/executors/devin-cli.js +0 -351
  74. package/open-sse/executors/doubao-web.js +0 -550
  75. package/open-sse/executors/duckduckgo-web.js +0 -629
  76. package/open-sse/executors/forceResponsesUpstream.js +0 -33
  77. package/open-sse/executors/gemini-business.js +0 -320
  78. package/open-sse/executors/gemini-cli.js +0 -89
  79. package/open-sse/executors/gemini-web.js +0 -297
  80. package/open-sse/executors/github.js +0 -379
  81. package/open-sse/executors/gitlab.js +0 -569
  82. package/open-sse/executors/glm.js +0 -361
  83. package/open-sse/executors/grok-cli.js +0 -119
  84. package/open-sse/executors/grok-web.js +0 -345
  85. package/open-sse/executors/huggingchat.js +0 -467
  86. package/open-sse/executors/iflow.js +0 -108
  87. package/open-sse/executors/index.js +0 -78
  88. package/open-sse/executors/inner-ai.js +0 -527
  89. package/open-sse/executors/kimchi.js +0 -123
  90. package/open-sse/executors/kimi-web.js +0 -325
  91. package/open-sse/executors/kimi.js +0 -97
  92. package/open-sse/executors/kiro.js +0 -503
  93. package/open-sse/executors/kiroThinking.js +0 -44
  94. package/open-sse/executors/lmarena.js +0 -395
  95. package/open-sse/executors/mimo-free.js +0 -167
  96. package/open-sse/executors/mimocode.js +0 -392
  97. package/open-sse/executors/ninerouter.js +0 -155
  98. package/open-sse/executors/nlpcloud.js +0 -438
  99. package/open-sse/executors/ollama-local.js +0 -14
  100. package/open-sse/executors/opencode-go.js +0 -41
  101. package/open-sse/executors/opencode.js +0 -32
  102. package/open-sse/executors/perplexity-web.js +0 -581
  103. package/open-sse/executors/poe-web.js +0 -133
  104. package/open-sse/executors/pollinations.js +0 -95
  105. package/open-sse/executors/puter.js +0 -31
  106. package/open-sse/executors/qoder.js +0 -448
  107. package/open-sse/executors/qwen-web.js +0 -372
  108. package/open-sse/executors/qwen.js +0 -129
  109. package/open-sse/executors/t3-chat-web.js +0 -417
  110. package/open-sse/executors/theoldllm.js +0 -290
  111. package/open-sse/executors/trae.js +0 -418
  112. package/open-sse/executors/v0-vercel-web.js +0 -141
  113. package/open-sse/executors/venice-web.js +0 -142
  114. package/open-sse/executors/vertex.js +0 -131
  115. package/open-sse/executors/vertexMedia.js +0 -236
  116. package/open-sse/executors/windsurf.js +0 -560
  117. package/open-sse/executors/xai.js +0 -46
  118. package/open-sse/executors/xiaomi-tokenplan.js +0 -19
  119. package/open-sse/executors/yuanbao-web.js +0 -385
  120. package/open-sse/executors/zed-hosted.js +0 -281
  121. package/open-sse/executors/zenmux-free.js +0 -247
  122. package/open-sse/handlers/audioSpeech.js +0 -759
  123. package/open-sse/handlers/audioTranscription.js +0 -395
  124. package/open-sse/handlers/audioTranslation.js +0 -181
  125. package/open-sse/handlers/chatCore/nonStreamingHandler.js +0 -300
  126. package/open-sse/handlers/chatCore/requestDetail.js +0 -102
  127. package/open-sse/handlers/chatCore/sseToJsonHandler.js +0 -231
  128. package/open-sse/handlers/chatCore/streamingHandler.js +0 -95
  129. package/open-sse/handlers/chatCore.js +0 -404
  130. package/open-sse/handlers/embeddingProviders/_base.js +0 -4
  131. package/open-sse/handlers/embeddingProviders/gemini.js +0 -54
  132. package/open-sse/handlers/embeddingProviders/index.js +0 -23
  133. package/open-sse/handlers/embeddingProviders/openai.js +0 -39
  134. package/open-sse/handlers/embeddingProviders/openaiCompatNode.js +0 -13
  135. package/open-sse/handlers/embeddingsCore.js +0 -126
  136. package/open-sse/handlers/fetch/index.js +0 -237
  137. package/open-sse/handlers/imageGenerationCore.js +0 -230
  138. package/open-sse/handlers/imageProviders/_base.js +0 -31
  139. package/open-sse/handlers/imageProviders/antigravity.js +0 -73
  140. package/open-sse/handlers/imageProviders/blackForestLabs.js +0 -63
  141. package/open-sse/handlers/imageProviders/cloudflareAi.js +0 -207
  142. package/open-sse/handlers/imageProviders/codex.js +0 -217
  143. package/open-sse/handlers/imageProviders/comfyui.js +0 -25
  144. package/open-sse/handlers/imageProviders/falAi.js +0 -62
  145. package/open-sse/handlers/imageProviders/gemini.js +0 -40
  146. package/open-sse/handlers/imageProviders/huggingface.js +0 -38
  147. package/open-sse/handlers/imageProviders/index.js +0 -44
  148. package/open-sse/handlers/imageProviders/leonardo.js +0 -435
  149. package/open-sse/handlers/imageProviders/nanobanana.js +0 -79
  150. package/open-sse/handlers/imageProviders/openai.js +0 -61
  151. package/open-sse/handlers/imageProviders/runwayml.js +0 -72
  152. package/open-sse/handlers/imageProviders/sdwebui.js +0 -36
  153. package/open-sse/handlers/imageProviders/stabilityAi.js +0 -59
  154. package/open-sse/handlers/imageProviders/weavy.js +0 -222
  155. package/open-sse/handlers/moderations.js +0 -92
  156. package/open-sse/handlers/ocr.js +0 -89
  157. package/open-sse/handlers/rerank.js +0 -223
  158. package/open-sse/handlers/responseSanitizer/reasoning.js +0 -144
  159. package/open-sse/handlers/responsesHandler.js +0 -99
  160. package/open-sse/handlers/search/callers.js +0 -371
  161. package/open-sse/handlers/search/chatSearch.js +0 -409
  162. package/open-sse/handlers/search/index.js +0 -201
  163. package/open-sse/handlers/search/normalizers.js +0 -223
  164. package/open-sse/handlers/search.js +0 -1056
  165. package/open-sse/handlers/sseParser.js +0 -469
  166. package/open-sse/handlers/sttCore.js +0 -193
  167. package/open-sse/handlers/ttsCore.js +0 -74
  168. package/open-sse/handlers/ttsProviders/_base.js +0 -39
  169. package/open-sse/handlers/ttsProviders/edgeTts.js +0 -89
  170. package/open-sse/handlers/ttsProviders/elevenlabs.js +0 -48
  171. package/open-sse/handlers/ttsProviders/gemini.js +0 -117
  172. package/open-sse/handlers/ttsProviders/genericFormats.js +0 -169
  173. package/open-sse/handlers/ttsProviders/googleTts.js +0 -54
  174. package/open-sse/handlers/ttsProviders/index.js +0 -50
  175. package/open-sse/handlers/ttsProviders/localDevice.js +0 -87
  176. package/open-sse/handlers/ttsProviders/minimax.js +0 -59
  177. package/open-sse/handlers/ttsProviders/openai.js +0 -30
  178. package/open-sse/handlers/ttsProviders/openrouter.js +0 -70
  179. package/open-sse/handlers/usageExtractor.js +0 -93
  180. package/open-sse/handlers/videoGenerationCore.js +0 -119
  181. package/open-sse/handlers/videoProviders/index.js +0 -22
  182. package/open-sse/handlers/videoProviders/leonardo.js +0 -511
  183. package/open-sse/handlers/videoProviders/weavy.js +0 -198
  184. package/open-sse/handlers/webFetch.js +0 -200
  185. package/open-sse/index.js +0 -79
  186. package/open-sse/mcp-server/audit.js +0 -283
  187. package/open-sse/mcp-server/catalog.js +0 -184
  188. package/open-sse/mcp-server/descriptionCompressor.js +0 -175
  189. package/open-sse/mcp-server/httpAuthContext.js +0 -32
  190. package/open-sse/mcp-server/httpTransport.js +0 -229
  191. package/open-sse/mcp-server/index.js +0 -33
  192. package/open-sse/mcp-server/mcpCallerIdentity.js +0 -21
  193. package/open-sse/mcp-server/runtimeHeartbeat.js +0 -110
  194. package/open-sse/mcp-server/schemas/a2a.js +0 -153
  195. package/open-sse/mcp-server/schemas/audit.js +0 -17
  196. package/open-sse/mcp-server/schemas/index.js +0 -166
  197. package/open-sse/mcp-server/schemas/pickFastestModel.js +0 -90
  198. package/open-sse/mcp-server/schemas/toolDefinition.js +0 -0
  199. package/open-sse/mcp-server/schemas/toolSearch.js +0 -32
  200. package/open-sse/mcp-server/schemas/tools.js +0 -1219
  201. package/open-sse/mcp-server/scopeEnforcement.js +0 -80
  202. package/open-sse/mcp-server/server.js +0 -1168
  203. package/open-sse/mcp-server/toolCardinality.js +0 -78
  204. package/open-sse/mcp-server/toolSearch/catalog.js +0 -66
  205. package/open-sse/mcp-server/toolSearch/handler.js +0 -20
  206. package/open-sse/mcp-server/toolSearch/index.js +0 -10
  207. package/open-sse/mcp-server/toolSearch/register.js +0 -21
  208. package/open-sse/mcp-server/toolSearch/search.js +0 -55
  209. package/open-sse/mcp-server/toolSearch/signature.js +0 -67
  210. package/open-sse/mcp-server/tools/advancedTools.js +0 -893
  211. package/open-sse/mcp-server/tools/agentSkillTools.js +0 -69
  212. package/open-sse/mcp-server/tools/compressionTools.js +0 -309
  213. package/open-sse/mcp-server/tools/gamificationTools.js +0 -134
  214. package/open-sse/mcp-server/tools/githubSkillTools.js +0 -102
  215. package/open-sse/mcp-server/tools/memoryTools.js +0 -118
  216. package/open-sse/mcp-server/tools/notionTools.js +0 -101
  217. package/open-sse/mcp-server/tools/obsidianTools.js +0 -307
  218. package/open-sse/mcp-server/tools/pickFastestModel.js +0 -223
  219. package/open-sse/mcp-server/tools/pluginTools.js +0 -181
  220. package/open-sse/mcp-server/tools/poolTools.js +0 -139
  221. package/open-sse/mcp-server/tools/skillTools.js +0 -113
  222. package/open-sse/package.json +0 -10
  223. package/open-sse/providers/REGISTRY_TEMPLATE.js +0 -98
  224. package/open-sse/providers/capabilities.js +0 -293
  225. package/open-sse/providers/index.js +0 -51
  226. package/open-sse/providers/models/helpers.js +0 -20
  227. package/open-sse/providers/models/namePatterns.js +0 -33
  228. package/open-sse/providers/models/schema.js +0 -40
  229. package/open-sse/providers/pricing.js +0 -308
  230. package/open-sse/providers/registry/alicode-intl.js +0 -30
  231. package/open-sse/providers/registry/alicode.js +0 -31
  232. package/open-sse/providers/registry/anthropic.js +0 -37
  233. package/open-sse/providers/registry/antigravity.js +0 -81
  234. package/open-sse/providers/registry/assemblyai.js +0 -38
  235. package/open-sse/providers/registry/aws-polly.js +0 -45
  236. package/open-sse/providers/registry/azure.js +0 -21
  237. package/open-sse/providers/registry/black-forest-labs.js +0 -32
  238. package/open-sse/providers/registry/blackbox.js +0 -41
  239. package/open-sse/providers/registry/brave-search.js +0 -35
  240. package/open-sse/providers/registry/byteplus.js +0 -35
  241. package/open-sse/providers/registry/cartesia.js +0 -36
  242. package/open-sse/providers/registry/cerebras.js +0 -31
  243. package/open-sse/providers/registry/chutes.js +0 -24
  244. package/open-sse/providers/registry/claude.js +0 -87
  245. package/open-sse/providers/registry/cline.js +0 -51
  246. package/open-sse/providers/registry/clinepass.js +0 -57
  247. package/open-sse/providers/registry/cloudflare-ai.js +0 -55
  248. package/open-sse/providers/registry/codebuddy-cn.js +0 -77
  249. package/open-sse/providers/registry/codex.js +0 -100
  250. package/open-sse/providers/registry/cohere.js +0 -27
  251. package/open-sse/providers/registry/comfyui.js +0 -20
  252. package/open-sse/providers/registry/commandcode.js +0 -43
  253. package/open-sse/providers/registry/coqui.js +0 -30
  254. package/open-sse/providers/registry/cursor.js +0 -58
  255. package/open-sse/providers/registry/deepgram.js +0 -33
  256. package/open-sse/providers/registry/deepseek.js +0 -51
  257. package/open-sse/providers/registry/digitalocean.js +0 -92
  258. package/open-sse/providers/registry/edge-tts.js +0 -24
  259. package/open-sse/providers/registry/elevenlabs.js +0 -35
  260. package/open-sse/providers/registry/exa.js +0 -50
  261. package/open-sse/providers/registry/fal-ai.js +0 -34
  262. package/open-sse/providers/registry/featherless.js +0 -34
  263. package/open-sse/providers/registry/firecrawl.js +0 -34
  264. package/open-sse/providers/registry/fireworks.js +0 -29
  265. package/open-sse/providers/registry/gemini-cli.js +0 -58
  266. package/open-sse/providers/registry/gemini.js +0 -83
  267. package/open-sse/providers/registry/github.js +0 -88
  268. package/open-sse/providers/registry/gitlab.js +0 -32
  269. package/open-sse/providers/registry/glm-cn.js +0 -35
  270. package/open-sse/providers/registry/glm.js +0 -58
  271. package/open-sse/providers/registry/google-pse.js +0 -35
  272. package/open-sse/providers/registry/google-tts.js +0 -24
  273. package/open-sse/providers/registry/grok-cli.js +0 -86
  274. package/open-sse/providers/registry/grok-web.js +0 -39
  275. package/open-sse/providers/registry/groq.js +0 -37
  276. package/open-sse/providers/registry/huggingface.js +0 -34
  277. package/open-sse/providers/registry/hyperbolic.js +0 -35
  278. package/open-sse/providers/registry/ibm-bob.js +0 -27
  279. package/open-sse/providers/registry/iflow.js +0 -52
  280. package/open-sse/providers/registry/index.js +0 -210
  281. package/open-sse/providers/registry/inworld.js +0 -36
  282. package/open-sse/providers/registry/jina-ai.js +0 -42
  283. package/open-sse/providers/registry/jina-reader.js +0 -34
  284. package/open-sse/providers/registry/kilocode.js +0 -51
  285. package/open-sse/providers/registry/kimchi.js +0 -49
  286. package/open-sse/providers/registry/kimi-coding.js +0 -65
  287. package/open-sse/providers/registry/kimi.js +0 -56
  288. package/open-sse/providers/registry/kiro.js +0 -115
  289. package/open-sse/providers/registry/linkup.js +0 -34
  290. package/open-sse/providers/registry/local-device.js +0 -24
  291. package/open-sse/providers/registry/mimo-free.js +0 -24
  292. package/open-sse/providers/registry/minimax-cn.js +0 -76
  293. package/open-sse/providers/registry/minimax.js +0 -83
  294. package/open-sse/providers/registry/mistral.js +0 -34
  295. package/open-sse/providers/registry/mmf.js +0 -19
  296. package/open-sse/providers/registry/nanobanana.js +0 -35
  297. package/open-sse/providers/registry/nebius.js +0 -27
  298. package/open-sse/providers/registry/nvidia.js +0 -43
  299. package/open-sse/providers/registry/ollama-local.js +0 -19
  300. package/open-sse/providers/registry/ollama.js +0 -36
  301. package/open-sse/providers/registry/openai.js +0 -84
  302. package/open-sse/providers/registry/opencode-go.js +0 -41
  303. package/open-sse/providers/registry/opencode.js +0 -25
  304. package/open-sse/providers/registry/openrouter.js +0 -60
  305. package/open-sse/providers/registry/perplexity-agent.js +0 -49
  306. package/open-sse/providers/registry/perplexity-web.js +0 -33
  307. package/open-sse/providers/registry/perplexity.js +0 -37
  308. package/open-sse/providers/registry/playht.js +0 -36
  309. package/open-sse/providers/registry/qoder.js +0 -54
  310. package/open-sse/providers/registry/qwen.js +0 -33
  311. package/open-sse/providers/registry/recraft.js +0 -24
  312. package/open-sse/providers/registry/runwayml.js +0 -30
  313. package/open-sse/providers/registry/sdwebui.js +0 -20
  314. package/open-sse/providers/registry/searchapi.js +0 -35
  315. package/open-sse/providers/registry/searxng.js +0 -35
  316. package/open-sse/providers/registry/serper.js +0 -35
  317. package/open-sse/providers/registry/siliconflow.js +0 -39
  318. package/open-sse/providers/registry/stability-ai.js +0 -31
  319. package/open-sse/providers/registry/tavily.js +0 -50
  320. package/open-sse/providers/registry/together.js +0 -31
  321. package/open-sse/providers/registry/topaz.js +0 -19
  322. package/open-sse/providers/registry/tortoise.js +0 -30
  323. package/open-sse/providers/registry/venice.js +0 -56
  324. package/open-sse/providers/registry/vercel-ai-gateway.js +0 -41
  325. package/open-sse/providers/registry/vertex-partner.js +0 -29
  326. package/open-sse/providers/registry/vertex.js +0 -32
  327. package/open-sse/providers/registry/volcengine-ark.js +0 -35
  328. package/open-sse/providers/registry/voyage-ai.js +0 -30
  329. package/open-sse/providers/registry/xai.js +0 -45
  330. package/open-sse/providers/registry/xiaomi-mimo.js +0 -46
  331. package/open-sse/providers/registry/xiaomi-tokenplan.js +0 -63
  332. package/open-sse/providers/registry/youcom.js +0 -35
  333. package/open-sse/providers/schema.js +0 -76
  334. package/open-sse/providers/shared.js +0 -74
  335. package/open-sse/providers/thinkingLevels.js +0 -48
  336. package/open-sse/rtk/applyFilter.js +0 -15
  337. package/open-sse/rtk/autodetect.js +0 -111
  338. package/open-sse/rtk/caveman.js +0 -100
  339. package/open-sse/rtk/cavemanPrompts.js +0 -78
  340. package/open-sse/rtk/constants.js +0 -55
  341. package/open-sse/rtk/filters/buildOutput.js +0 -127
  342. package/open-sse/rtk/filters/dedupLog.js +0 -44
  343. package/open-sse/rtk/filters/find.js +0 -50
  344. package/open-sse/rtk/filters/gitDiff.js +0 -92
  345. package/open-sse/rtk/filters/gitLog.js +0 -99
  346. package/open-sse/rtk/filters/gitStatus.js +0 -117
  347. package/open-sse/rtk/filters/grep.js +0 -48
  348. package/open-sse/rtk/filters/ls.js +0 -79
  349. package/open-sse/rtk/filters/readNumbered.js +0 -27
  350. package/open-sse/rtk/filters/searchList.js +0 -52
  351. package/open-sse/rtk/filters/smartTruncate.js +0 -15
  352. package/open-sse/rtk/filters/tree.js +0 -32
  353. package/open-sse/rtk/headroom.js +0 -215
  354. package/open-sse/rtk/index.js +0 -155
  355. package/open-sse/rtk/paleo.js +0 -47
  356. package/open-sse/rtk/ponytail.js +0 -9
  357. package/open-sse/rtk/ponytailPrompt.js +0 -52
  358. package/open-sse/rtk/ponytailPrompts.js +0 -76
  359. package/open-sse/rtk/pxpipe.js +0 -104
  360. package/open-sse/rtk/registry.js +0 -38
  361. package/open-sse/rtk/systemInject.js +0 -98
  362. package/open-sse/services/accountFallback.js +0 -323
  363. package/open-sse/services/antigravityHeaders.js +0 -91
  364. package/open-sse/services/antigravityVersion.js +0 -154
  365. package/open-sse/services/clinepassModels.js +0 -63
  366. package/open-sse/services/codexQuotaFetcher.js +0 -312
  367. package/open-sse/services/codexVerbosity.js +0 -30
  368. package/open-sse/services/combo/context.js +0 -12
  369. package/open-sse/services/combo/fingerprintExpansion.js +0 -51
  370. package/open-sse/services/combo/headroomRanking.js +0 -28
  371. package/open-sse/services/combo/quotaExhaustionCutoff.js +0 -87
  372. package/open-sse/services/combo/quotaScoring.js +0 -226
  373. package/open-sse/services/combo/quotaShareConcurrency.js +0 -25
  374. package/open-sse/services/combo/quotaShareInflight.js +0 -50
  375. package/open-sse/services/combo/quotaShareStrategy.js +0 -130
  376. package/open-sse/services/combo/resolveAutoStrategy.js +0 -231
  377. package/open-sse/services/combo/responseValidation.js +0 -140
  378. package/open-sse/services/combo/runtimeUnits.js +0 -195
  379. package/open-sse/services/combo/sessionStickiness.js +0 -128
  380. package/open-sse/services/combo/shadowRouting.js +0 -131
  381. package/open-sse/services/combo/targetExhaustion.js +0 -75
  382. package/open-sse/services/combo/targetSorters.js +0 -126
  383. package/open-sse/services/combo/targetTimeoutRunner.js +0 -65
  384. package/open-sse/services/combo/validateQuality.js +0 -271
  385. package/open-sse/services/combo.js +0 -571
  386. package/open-sse/services/comboAgentMiddleware.js +0 -91
  387. package/open-sse/services/comboConfig.js +0 -153
  388. package/open-sse/services/comboManifestMetrics.js +0 -10
  389. package/open-sse/services/comboMetrics.js +0 -278
  390. package/open-sse/services/compact.js +0 -71
  391. package/open-sse/services/copilotModels.js +0 -155
  392. package/open-sse/services/emergencyFallback.js +0 -109
  393. package/open-sse/services/errorClassifier.js +0 -190
  394. package/open-sse/services/evalRouting.js +0 -201
  395. package/open-sse/services/freeWebSearch.js +0 -4
  396. package/open-sse/services/fusion.js +0 -223
  397. package/open-sse/services/intentClassifier.js +0 -631
  398. package/open-sse/services/kimchiModels.js +0 -176
  399. package/open-sse/services/kiroModels.js +0 -332
  400. package/open-sse/services/model.js +0 -136
  401. package/open-sse/services/modelCapabilities.js +0 -5
  402. package/open-sse/services/modelDeprecation.js +0 -101
  403. package/open-sse/services/modelFamilyFallback.js +0 -166
  404. package/open-sse/services/oauthCredentialManager.js +0 -156
  405. package/open-sse/services/pipeline.js +0 -107
  406. package/open-sse/services/projectId.js +0 -306
  407. package/open-sse/services/provider.js +0 -169
  408. package/open-sse/services/providerCooldownTracker.js +0 -94
  409. package/open-sse/services/providerDefaultRateLimit.js +0 -11
  410. package/open-sse/services/proxyAutoSelector.js +0 -24
  411. package/open-sse/services/qoderModels.js +0 -214
  412. package/open-sse/services/quotaFetchThrottle.js +0 -103
  413. package/open-sse/services/quotaMonitor.js +0 -310
  414. package/open-sse/services/quotaPreflight.js +0 -266
  415. package/open-sse/services/rateLimitManager/headers.js +0 -56
  416. package/open-sse/services/rateLimitManager.js +0 -616
  417. package/open-sse/services/rateLimitSemaphore.js +0 -112
  418. package/open-sse/services/responsesInputSanitizer.js +0 -99
  419. package/open-sse/services/slidingWindowLimiter.js +0 -44
  420. package/open-sse/services/streamRecovery.js +0 -355
  421. package/open-sse/services/taskAwareRouter.js +0 -227
  422. package/open-sse/services/taskAwareRouting.js +0 -332
  423. package/open-sse/services/thinkingBudget.js +0 -247
  424. package/open-sse/services/tokenRefresh/dedup.js +0 -31
  425. package/open-sse/services/tokenRefresh/providers.js +0 -624
  426. package/open-sse/services/tokenRefresh.js +0 -254
  427. package/open-sse/services/usage/claude.js +0 -147
  428. package/open-sse/services/usage/codebuddy-cn.js +0 -138
  429. package/open-sse/services/usage/codex.js +0 -267
  430. package/open-sse/services/usage/github.js +0 -100
  431. package/open-sse/services/usage/google.js +0 -241
  432. package/open-sse/services/usage/grok-cli.js +0 -274
  433. package/open-sse/services/usage/kiro.js +0 -188
  434. package/open-sse/services/usage/minimax.js +0 -234
  435. package/open-sse/services/usage/misc.js +0 -288
  436. package/open-sse/services/usage/shared.js +0 -70
  437. package/open-sse/services/usage.js +0 -62
  438. package/open-sse/services/usageDb.js +0 -2
  439. package/open-sse/services/webSearchRouting.js +0 -25
  440. package/open-sse/services/wildcardRouter.js +0 -59
  441. package/open-sse/shared/clineAuth.js +0 -37
  442. package/open-sse/shared/machineId.js +0 -19
  443. package/open-sse/shared/qoder/constants.js +0 -64
  444. package/open-sse/shared/qoder/cosy.js +0 -175
  445. package/open-sse/shared/qoder/encoding.js +0 -55
  446. package/open-sse/transformer/responsesTransformer.js +0 -439
  447. package/open-sse/transformer/streamToJsonConverter.js +0 -103
  448. package/open-sse/translator/concerns/chunk.js +0 -11
  449. package/open-sse/translator/concerns/finishReason.js +0 -63
  450. package/open-sse/translator/concerns/image.js +0 -124
  451. package/open-sse/translator/concerns/json.js +0 -5
  452. package/open-sse/translator/concerns/message.js +0 -7
  453. package/open-sse/translator/concerns/modality.js +0 -155
  454. package/open-sse/translator/concerns/paramSupport.js +0 -75
  455. package/open-sse/translator/concerns/prefetch.js +0 -96
  456. package/open-sse/translator/concerns/reasoning.js +0 -24
  457. package/open-sse/translator/concerns/thinking.js +0 -53
  458. package/open-sse/translator/concerns/thinkingUnified.js +0 -329
  459. package/open-sse/translator/concerns/toolCall.js +0 -153
  460. package/open-sse/translator/concerns/usage.js +0 -69
  461. package/open-sse/translator/formats/claude.js +0 -368
  462. package/open-sse/translator/formats/gemini.js +0 -380
  463. package/open-sse/translator/formats/maxTokens.js +0 -34
  464. package/open-sse/translator/formats/openai.js +0 -134
  465. package/open-sse/translator/formats/responsesApi.js +0 -141
  466. package/open-sse/translator/formats.js +0 -36
  467. package/open-sse/translator/helpers/claudeHelper.js +0 -216
  468. package/open-sse/translator/helpers/geminiHelper.js +0 -372
  469. package/open-sse/translator/helpers/imageHelper.js +0 -34
  470. package/open-sse/translator/helpers/maxTokensHelper.js +0 -27
  471. package/open-sse/translator/helpers/openaiHelper.js +0 -130
  472. package/open-sse/translator/helpers/responsesApiHelper.js +0 -139
  473. package/open-sse/translator/helpers/toolCallHelper.js +0 -148
  474. package/open-sse/translator/index.js +0 -252
  475. package/open-sse/translator/request/antigravity-to-openai.js +0 -242
  476. package/open-sse/translator/request/claude-to-kiro.js +0 -478
  477. package/open-sse/translator/request/claude-to-openai.js +0 -263
  478. package/open-sse/translator/request/gemini-to-openai.js +0 -152
  479. package/open-sse/translator/request/openai-responses.js +0 -385
  480. package/open-sse/translator/request/openai-to-claude.js +0 -383
  481. package/open-sse/translator/request/openai-to-commandcode.js +0 -176
  482. package/open-sse/translator/request/openai-to-cursor.js +0 -185
  483. package/open-sse/translator/request/openai-to-gemini.js +0 -442
  484. package/open-sse/translator/request/openai-to-kiro.js +0 -607
  485. package/open-sse/translator/request/openai-to-kiro.old.js +0 -278
  486. package/open-sse/translator/request/openai-to-ollama.js +0 -195
  487. package/open-sse/translator/request/openai-to-vertex.js +0 -42
  488. package/open-sse/translator/response/claude-to-openai.js +0 -195
  489. package/open-sse/translator/response/commandcode-to-openai.js +0 -188
  490. package/open-sse/translator/response/cursor-to-openai.js +0 -30
  491. package/open-sse/translator/response/gemini-to-openai.js +0 -147
  492. package/open-sse/translator/response/kiro-to-claude.js +0 -261
  493. package/open-sse/translator/response/kiro-to-openai.js +0 -160
  494. package/open-sse/translator/response/ollama-to-openai.js +0 -134
  495. package/open-sse/translator/response/openai-responses.js +0 -535
  496. package/open-sse/translator/response/openai-to-antigravity.js +0 -123
  497. package/open-sse/translator/response/openai-to-claude.js +0 -265
  498. package/open-sse/translator/schema/blocks.js +0 -43
  499. package/open-sse/translator/schema/defaults.js +0 -7
  500. package/open-sse/translator/schema/finishReasons.js +0 -27
  501. package/open-sse/translator/schema/index.js +0 -8
  502. package/open-sse/translator/schema/roles.js +0 -16
  503. package/open-sse/utils/agentGoalPolicy.js +0 -85
  504. package/open-sse/utils/aiSdkCompat.js +0 -75
  505. package/open-sse/utils/bypassHandler.js +0 -298
  506. package/open-sse/utils/cacheControlPolicy.js +0 -189
  507. package/open-sse/utils/claudeCloaking.js +0 -155
  508. package/open-sse/utils/claudeHeaderCache.js +0 -70
  509. package/open-sse/utils/claudeSignature.js +0 -41
  510. package/open-sse/utils/clientDetector.js +0 -63
  511. package/open-sse/utils/codebuddySanitizer.js +0 -96
  512. package/open-sse/utils/composerToolCalls.js +0 -158
  513. package/open-sse/utils/cors.js +0 -13
  514. package/open-sse/utils/cursorChecksum.js +0 -149
  515. package/open-sse/utils/cursorImages.js +0 -224
  516. package/open-sse/utils/cursorProtobuf.js +0 -904
  517. package/open-sse/utils/cursorVersionDetector.js +0 -55
  518. package/open-sse/utils/debugLog.js +0 -14
  519. package/open-sse/utils/diagnostics.js +0 -143
  520. package/open-sse/utils/error.js +0 -164
  521. package/open-sse/utils/estimateSize.js +0 -33
  522. package/open-sse/utils/finishReason.js +0 -32
  523. package/open-sse/utils/flattenToolHistory.js +0 -68
  524. package/open-sse/utils/headers.js +0 -36
  525. package/open-sse/utils/heapPressure.js +0 -35
  526. package/open-sse/utils/jsonToSse.js +0 -125
  527. package/open-sse/utils/keepaliveThreshold.js +0 -40
  528. package/open-sse/utils/logger.js +0 -104
  529. package/open-sse/utils/noThinkingAlias.js +0 -74
  530. package/open-sse/utils/number.js +0 -7
  531. package/open-sse/utils/ollamaTransform.js +0 -85
  532. package/open-sse/utils/opencodeHeaders.js +0 -47
  533. package/open-sse/utils/progressTracker.js +0 -81
  534. package/open-sse/utils/providerRequestLogging.js +0 -219
  535. package/open-sse/utils/proxyFetch.js +0 -369
  536. package/open-sse/utils/reasoningContentInjector.js +0 -79
  537. package/open-sse/utils/reasoningFields.js +0 -70
  538. package/open-sse/utils/requestLogger.js +0 -260
  539. package/open-sse/utils/responsesInputNormalization.js +0 -92
  540. package/open-sse/utils/responsesStatePolicy.js +0 -52
  541. package/open-sse/utils/responsesStreamHelpers.js +0 -49
  542. package/open-sse/utils/sessionManager.js +0 -240
  543. package/open-sse/utils/sleep.js +0 -6
  544. package/open-sse/utils/sse.js +0 -14
  545. package/open-sse/utils/sseConstants.js +0 -23
  546. package/open-sse/utils/sseHeartbeat.js +0 -104
  547. package/open-sse/utils/stream.js +0 -517
  548. package/open-sse/utils/streamFailureFinalization.js +0 -134
  549. package/open-sse/utils/streamHandler.js +0 -250
  550. package/open-sse/utils/streamHelpers.js +0 -137
  551. package/open-sse/utils/textualToolCall.js +0 -104
  552. package/open-sse/utils/thinkCloseMarker.js +0 -72
  553. package/open-sse/utils/thinkTagParser.js +0 -146
  554. package/open-sse/utils/toolCallArguments.js +0 -12
  555. package/open-sse/utils/toolDeduper.js +0 -49
  556. package/open-sse/utils/toolSources.js +0 -31
  557. package/open-sse/utils/upstreamResponseHeaders.js +0 -25
  558. package/open-sse/utils/urlSanitize.js +0 -15
  559. package/open-sse/utils/usageTracking.js +0 -347
@@ -1,74 +0,0 @@
1
- import { platform, arch } from "os";
2
-
3
- // === OS/Arch helpers (Stainless fingerprint) ===
4
- export function mapStainlessOs() {
5
- switch (platform()) {
6
- case "darwin": return "MacOS";
7
- case "win32": return "Windows";
8
- case "linux": return "Linux";
9
- case "freebsd": return "FreeBSD";
10
- default: return `Other::${platform()}`;
11
- }
12
- }
13
-
14
- export function mapStainlessArch() {
15
- switch (arch()) {
16
- case "x64": return "x64";
17
- case "arm64": return "arm64";
18
- case "ia32": return "x86";
19
- default: return `other::${arch()}`;
20
- }
21
- }
22
-
23
- // Anthropic API version (single source — reused across claude-format providers/executors)
24
- export const ANTHROPIC_API_VERSION = "2023-06-01";
25
-
26
- // Shared Claude-compatible API headers (reused across claude-format providers)
27
- export const CLAUDE_API_HEADERS = {
28
- "Anthropic-Version": ANTHROPIC_API_VERSION,
29
- "Anthropic-Beta": "claude-code-20250219,interleaved-thinking-2025-05-14"
30
- };
31
-
32
- // Full Claude CLI fingerprint — required by providers that gate on client identity (e.g. agentrouter)
33
- export const CLAUDE_CLI_SPOOF_HEADERS = {
34
- "Anthropic-Version": ANTHROPIC_API_VERSION,
35
- "Anthropic-Beta": "claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05,advanced-tool-use-2025-11-20,effort-2025-11-24,structured-outputs-2025-12-15,fast-mode-2026-02-01,redact-thinking-2026-02-12,token-efficient-tools-2026-03-28",
36
- "Anthropic-Dangerous-Direct-Browser-Access": "true",
37
- "User-Agent": "claude-cli/2.1.92 (external, sdk-cli)",
38
- "X-App": "cli",
39
- "X-Stainless-Helper-Method": "stream",
40
- "X-Stainless-Retry-Count": "0",
41
- "X-Stainless-Runtime-Version": "v24.14.0",
42
- "X-Stainless-Package-Version": "0.80.0",
43
- "X-Stainless-Runtime": "node",
44
- "X-Stainless-Lang": "js",
45
- "X-Stainless-Arch": mapStainlessArch(),
46
- "X-Stainless-Os": mapStainlessOs(),
47
- "X-Stainless-Timeout": "600"
48
- };
49
-
50
- // Shared baseUrls
51
- export const KIMI_CODING_BASE_URL = "https://api.kimi.com/coding/v1/messages";
52
-
53
- // Default base for dynamic compat providers (openai-compatible-* / anthropic-compatible-*) when user gives no baseUrl
54
- export const OPENAI_COMPAT_BASE = "https://api.openai.com/v1";
55
- export const ANTHROPIC_COMPAT_BASE = "https://api.anthropic.com/v1";
56
-
57
- // Official Antigravity IDE Desktop 2.1.1 fingerprint captured from macOS arm64.
58
- // Keep this static even when 9router runs on Linux: the provider profile is
59
- // intentionally matching the IDE client, not the server host.
60
- export const ANTIGRAVITY_IDE_VERSION = "2.1.1";
61
- export const ANTIGRAVITY_IDE_BASE_URL = "https://cloudcode-pa.googleapis.com";
62
- export const ANTIGRAVITY_IDE_USER_AGENT = `antigravity/ide/${ANTIGRAVITY_IDE_VERSION} darwin/arm64`;
63
-
64
- // Antigravity OAuth client credentials (public CLI client — duplicated in usage.js + src/lib/oauth)
65
- export const ANTIGRAVITY_OAUTH_CLIENT = {
66
- clientId: "1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",
67
- clientSecret: "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"
68
- };
69
-
70
- // Gemini (Google) OAuth client credentials (public CLI client — shared by gemini, gemini-cli, src/lib/oauth)
71
- export const GOOGLE_OAUTH_CLIENT = {
72
- clientId: "681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",
73
- clientSecret: "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"
74
- };
@@ -1,48 +0,0 @@
1
- // Resolve valid thinking levels per model — drives UI level picker (suffix "model(level)").
2
- // Reuses capabilities.js (thinkingFormat/canDisable) so this file only maps format→levels (DRY).
3
- import { getCapabilitiesForModel } from "./capabilities.js";
4
- import { matchPattern } from "./pricing.js";
5
-
6
- // Shared level sets (deduped) — verified against provider docs + wire in thinkingUnified.applyFormat.
7
- const L = {
8
- base: ["none", "low", "medium", "high"], // qwen, step, hunyuan, gemini-budget
9
- onOff: ["none", "thinking"], // zai (binary), minimax (adaptive)
10
- openai: ["none", "minimal", "low", "medium", "high", "xhigh"], // GPT-5.x / o-series (no "max")
11
- levelMax: ["none", "low", "medium", "high", "max"], // claude-adaptive, kimi
12
- budgetX: ["none", "low", "medium", "high", "xhigh", "max"], // claude-budget
13
- gemini: ["minimal", "low", "medium", "high"], // gemini-3 thinkingLevel (no disable)
14
- hiMax: ["none", "high", "max"], // deepseek (low/med→high, xhigh→max)
15
- };
16
-
17
- // thinkingFormat → valid selectable levels (source of truth for UI options).
18
- const FORMAT_LEVELS = {
19
- openai: L.openai,
20
- "claude-adaptive": L.levelMax,
21
- "claude-budget": L.budgetX,
22
- "gemini-level": L.gemini,
23
- "gemini-budget": L.base,
24
- zai: L.onOff,
25
- qwen: L.base,
26
- kimi: L.levelMax,
27
- deepseek: L.hiMax,
28
- minimax: L.onOff,
29
- hunyuan: L.base,
30
- step: L.base,
31
- };
32
-
33
- // Model-name pattern overrides (glob, first match wins) — more precise than format default.
34
- const PATTERN_THINKING = [
35
- // gpt-5.6-sol accepts max (maps to xhigh on wire); live probe rejected ultra.
36
- { pattern: "*gpt-5.6-sol*", levels: ["none", "minimal", "low", "medium", "high", "xhigh", "max"] },
37
- { pattern: "*codex*", levels: ["low", "medium", "high", "xhigh"] }, // codex cannot disable thinking
38
- ];
39
-
40
- // Returns valid thinking levels for a model, or null when the model has no reasoning.
41
- export function getThinkingLevels(provider, model) {
42
- const caps = getCapabilitiesForModel(provider, model);
43
- if (!caps.reasoning) return null;
44
- const hit = PATTERN_THINKING.find((p) => matchPattern(p.pattern, model));
45
- let levels = hit?.levels || FORMAT_LEVELS[caps.thinkingFormat] || L.base;
46
- if (caps.thinkingCanDisable === false) levels = levels.filter((l) => l !== "none");
47
- return levels;
48
- }
@@ -1,15 +0,0 @@
1
- // Port of apply_filter (rtk/src/cmds/system/pipe_cmd.rs) — catch_unwind equivalent
2
- // On panic/error: passthrough raw output + warn to stderr
3
- export function safeApply(fn, text) {
4
- if (typeof fn !== "function") return text;
5
- try {
6
- const out = fn(text);
7
- if (typeof out !== "string") return text;
8
- return out;
9
- } catch (err) {
10
- // Rust: eprintln!("[rtk] warning: filter panicked — passing through raw output")
11
- const name = fn.filterName || fn.name || "anonymous";
12
- console.warn(`[rtk] warning: filter '${name}' panicked — passing through raw output: ${err?.message || err}`);
13
- return text;
14
- }
15
- }
@@ -1,111 +0,0 @@
1
- // Port of auto_detect_filter (rtk/src/cmds/system/pipe_cmd.rs:132-188) + JS extras
2
- // Order: git-diff → git-status → build-output → grep → find → tree → ls → search-list
3
- // → read-numbered → dedup-log → smart-truncate → null
4
- import { DETECT_WINDOW, READ_NUMBERED_MIN_HIT_RATIO, SMART_TRUNCATE_MIN_LINES } from "./constants.js";
5
- import { gitDiff } from "./filters/gitDiff.js";
6
- import { gitStatus } from "./filters/gitStatus.js";
7
- import { buildOutput } from "./filters/buildOutput.js";
8
- import { grep } from "./filters/grep.js";
9
- import { find } from "./filters/find.js";
10
- import { dedupLog } from "./filters/dedupLog.js";
11
- import { ls } from "./filters/ls.js";
12
- import { tree } from "./filters/tree.js";
13
- import { smartTruncate } from "./filters/smartTruncate.js";
14
- import { readNumbered, READ_NUMBERED_LINE_RE } from "./filters/readNumbered.js";
15
- import { searchList, SEARCH_LIST_HEADER_RE } from "./filters/searchList.js";
16
-
17
- const RE_GIT_DIFF = /^diff --git /m;
18
- const RE_GIT_DIFF_HUNK = /^@@ /m;
19
- const RE_GIT_STATUS = /^On branch |^nothing to commit|^Changes (not |to be )|^Untracked files:/m;
20
- const RE_PORCELAIN = /^[ MADRCU?!][ MADRCU?!] \S/m;
21
- const RE_BUILD_OUTPUT = /^(npm (warn|error|ERR!)|yarn (warn|error)|\s*Compiling\s+\S+|\s*Downloading\s+\S+|added \d+ package|\[ERROR\]|BUILD (SUCCESS|FAILED)|\s*Finished\s+|Successfully (installed|built)|ERROR:)/im;
22
- const RE_TREE_GLYPH = /[├└]──|│ /;
23
- const RE_LS_ROW = /^[-dlbcps][rwx-]{9}/m;
24
- const RE_LS_TOTAL = /^total \d+$/m;
25
-
26
- export function autoDetectFilter(text) {
27
- // Rust: floor_char_boundary to avoid UTF-8 split — JS .slice() by char is safe
28
- const head = text.length > DETECT_WINDOW ? text.slice(0, DETECT_WINDOW) : text;
29
-
30
- if (RE_GIT_DIFF.test(head) || RE_GIT_DIFF_HUNK.test(head)) return gitDiff;
31
- if (RE_GIT_STATUS.test(head)) return gitStatus;
32
-
33
- // Build output BEFORE porcelain check: prevents cargo "Compiling" misdetection as git-status
34
- if (RE_BUILD_OUTPUT.test(head)) return buildOutput;
35
-
36
- if (isMostlyPorcelain(head)) return gitStatus;
37
-
38
- const lines = head.split("\n");
39
- const nonEmpty = lines.filter(l => l.trim().length > 0);
40
-
41
- // Rust grep rule: first 5 non-empty lines, ANY matches "file:number:content"
42
- const first5 = nonEmpty.slice(0, 5);
43
- if (first5.some(isGrepLine)) return grep;
44
-
45
- // Rust find rule: ALL non-empty lines path-like (no ':'), >=3 lines
46
- if (nonEmpty.length >= 3 && nonEmpty.every(isPathLike)) return find;
47
-
48
- // Tree: contains box-drawing glyphs typical of `tree` command
49
- if (RE_TREE_GLYPH.test(head)) return tree;
50
-
51
- // ls -la: has "total N" header or >=3 rows starting with perms string
52
- if (RE_LS_TOTAL.test(head) || countMatches(head, RE_LS_ROW) >= 3) return ls;
53
-
54
- // Cursor Glob search list header
55
- if (SEARCH_LIST_HEADER_RE.test(head)) return searchList;
56
-
57
- // Line-numbered file dump (" N|content") — fire only if many lines match
58
- if (lines.length >= SMART_TRUNCATE_MIN_LINES && isLineNumbered(lines)) {
59
- return readNumbered;
60
- }
61
-
62
- // Fallback: dedupLog for generic multi-line noise with duplicates
63
- if (nonEmpty.length >= 5) return dedupLog;
64
-
65
- // Last resort: big blob with no structure — smart truncate
66
- if (text.split("\n").length >= SMART_TRUNCATE_MIN_LINES) return smartTruncate;
67
-
68
- return null;
69
- }
70
-
71
- function isGrepLine(line) {
72
- // Rust: splitn(3, ':') → parts.len()==3 && parts[1].parse::<usize>().is_ok()
73
- const first = line.indexOf(":");
74
- if (first === -1) return false;
75
- const second = line.indexOf(":", first + 1);
76
- if (second === -1) return false;
77
- const lineno = line.slice(first + 1, second);
78
- return /^\d+$/.test(lineno);
79
- }
80
-
81
- function isPathLike(line) {
82
- const t = line.trim();
83
- if (t.length === 0) return false;
84
- if (t.includes(":")) return false;
85
- return t.startsWith(".") || t.startsWith("/") || t.includes("/");
86
- }
87
-
88
- function isMostlyPorcelain(head) {
89
- const lines = head.split("\n").filter(l => l.trim());
90
- if (lines.length < 3) return false;
91
- const hits = lines.filter(l => RE_PORCELAIN.test(l)).length;
92
- return hits / lines.length >= 0.6;
93
- }
94
-
95
- function isLineNumbered(lines) {
96
- let hits = 0;
97
- let nonEmpty = 0;
98
- const sample = lines.slice(0, 100);
99
- for (const l of sample) {
100
- if (l.length === 0) continue;
101
- nonEmpty++;
102
- if (READ_NUMBERED_LINE_RE.test(l)) hits++;
103
- }
104
- if (nonEmpty < 5) return false;
105
- return hits / nonEmpty >= READ_NUMBERED_MIN_HIT_RATIO;
106
- }
107
-
108
- function countMatches(text, re) {
109
- const g = new RegExp(re.source, re.flags.includes("g") ? re.flags : re.flags + "g");
110
- return (text.match(g) || []).length;
111
- }
@@ -1,100 +0,0 @@
1
- // Caveman injector: appends a caveman-style instruction into the system message
2
- // of the final request body, just before it is dispatched to the provider executor.
3
- // Dispatches by format so it works for both translated and native-passthrough flows.
4
-
5
- import { FORMATS } from "../translator/formats.js";
6
- import { CAVEMAN_PROMPTS } from "./cavemanPrompts.js";
7
-
8
- const SEP = "\n\n";
9
-
10
- export function injectCaveman(body, format, level) {
11
- const prompt = CAVEMAN_PROMPTS[level];
12
- if (!body || !prompt) return;
13
-
14
- switch (format) {
15
- case FORMATS.CLAUDE:
16
- injectClaudeSystem(body, prompt);
17
- return;
18
- case FORMATS.GEMINI:
19
- case FORMATS.GEMINI_CLI:
20
- case FORMATS.VERTEX:
21
- case FORMATS.ANTIGRAVITY:
22
- // Antigravity wraps Gemini shape in body.request → injectGeminiSystem handles it
23
- injectGeminiSystem(body, prompt);
24
- return;
25
- default:
26
- // OpenAI and OpenAI-shaped formats (responses/codex/cursor/kiro/ollama)
27
- injectMessagesSystem(body, prompt);
28
- }
29
- }
30
-
31
- // OpenAI-shaped: messages[] (chat) or input[] (responses) or instructions (responses string)
32
- function injectMessagesSystem(body, prompt) {
33
- // OpenAI Responses API: top-level string field
34
- if (typeof body.instructions === "string") {
35
- body.instructions = body.instructions
36
- ? `${body.instructions}${SEP}${prompt}`
37
- : prompt;
38
- return;
39
- }
40
-
41
- const arr = Array.isArray(body.messages) ? body.messages
42
- : Array.isArray(body.input) ? body.input
43
- : null;
44
- if (!arr) return;
45
-
46
- const idx = arr.findIndex(m => m && (m.role === "system" || m.role === "developer"));
47
- if (idx >= 0) {
48
- appendToOpenAIMessage(arr[idx], prompt);
49
- } else {
50
- arr.unshift({ role: "system", content: prompt });
51
- }
52
- }
53
-
54
- function appendToOpenAIMessage(msg, prompt) {
55
- if (typeof msg.content === "string") {
56
- msg.content = `${msg.content}${SEP}${prompt}`;
57
- } else if (Array.isArray(msg.content)) {
58
- // Responses-style array of parts {type:"input_text"|"text", text}
59
- msg.content.push({ type: "input_text", text: prompt });
60
- } else {
61
- msg.content = prompt;
62
- }
63
- }
64
-
65
- // Claude shape: body.system as string | array of {type:"text", text}
66
- // Insert before the last cache_control block to keep caveman inside the cached prefix.
67
- function injectClaudeSystem(body, prompt) {
68
- if (typeof body.system === "string" && body.system.length > 0) {
69
- body.system = `${body.system}${SEP}${prompt}`;
70
- return;
71
- }
72
- if (Array.isArray(body.system)) {
73
- const block = { type: "text", text: prompt };
74
- let lastCacheIdx = -1;
75
- for (let i = body.system.length - 1; i >= 0; i--) {
76
- if (body.system[i]?.cache_control) { lastCacheIdx = i; break; }
77
- }
78
- if (lastCacheIdx >= 0) {
79
- body.system.splice(lastCacheIdx, 0, block);
80
- } else {
81
- body.system.push(block);
82
- }
83
- return;
84
- }
85
- body.system = prompt;
86
- }
87
-
88
- // Gemini shape: body.system_instruction | body.systemInstruction | body.request.systemInstruction
89
- // Each shape: { parts: [{ text }] }
90
- function injectGeminiSystem(body, prompt) {
91
- const target = body.request && typeof body.request === "object" ? body.request : body;
92
- const useSnake = Object.prototype.hasOwnProperty.call(target, "system_instruction");
93
- const key = useSnake ? "system_instruction" : "systemInstruction";
94
- const sys = target[key];
95
- if (sys && Array.isArray(sys.parts)) {
96
- sys.parts.push({ text: prompt });
97
- return;
98
- }
99
- target[key] = { parts: [{ text: prompt }] };
100
- }
@@ -1,78 +0,0 @@
1
- // Caveman intensity-level prompts injected into system message to reduce output tokens.
2
- // Adapted from caveman skill (https://github.com/JuliusBrussee/caveman).
3
-
4
- export const CAVEMAN_LEVELS = {
5
- LITE: "lite",
6
- FULL: "full",
7
- ULTRA: "ultra",
8
- WENYAN_LITE: "wenyan-lite",
9
- WENYAN: "wenyan",
10
- WENYAN_ULTRA: "wenyan-ultra",
11
- };
12
-
13
- const SHARED_BOUNDARIES = "Code blocks, file paths, commands, errors, URLs: keep exact. Security warnings, irreversible action confirmations, multi-step ordered sequences: write normal. Resume terse style after.";
14
-
15
- const SHARED_EXAMPLES = "Not: \"Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by...\" Yes: \"Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:\"";
16
-
17
- const SHARED_AUTO_CLARITY = "Auto-Clarity: drop caveman for security warnings, irreversible actions, multi-step sequences where fragment ambiguity risks misread, or when user repeats a question. Resume after the clear part.";
18
-
19
- const SHARED_PERSISTENCE = "ACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure.";
20
-
21
- export const CAVEMAN_PROMPTS = {
22
- [CAVEMAN_LEVELS.LITE]: [
23
- "Respond tersely. Keep grammar and full sentences but drop filler, hedging and pleasantries (just/really/basically/sure/of course/I'd be happy to).",
24
- "Pattern: state the thing, the action, the reason. Then next step.",
25
- SHARED_EXAMPLES,
26
- SHARED_BOUNDARIES,
27
- SHARED_AUTO_CLARITY,
28
- SHARED_PERSISTENCE,
29
- ].join(" "),
30
-
31
- [CAVEMAN_LEVELS.FULL]: [
32
- "Respond like terse caveman. All technical substance stay exact, only fluff die.",
33
- "Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries, hedging. Fragments OK. Short synonyms (big not extensive, fix not implement a solution for).",
34
- "Pattern: [thing] [action] [reason]. [next step].",
35
- SHARED_EXAMPLES,
36
- SHARED_BOUNDARIES,
37
- SHARED_AUTO_CLARITY,
38
- SHARED_PERSISTENCE,
39
- ].join(" "),
40
-
41
- [CAVEMAN_LEVELS.ULTRA]: [
42
- "Respond ultra-terse. Maximum compression. Telegraphic.",
43
- "Abbreviate (DB/auth/config/req/res/fn/impl), strip conjunctions, use arrows for causality (X → Y). One word when one word enough.",
44
- "Pattern: [thing] → [result]. [fix].",
45
- SHARED_EXAMPLES,
46
- SHARED_BOUNDARIES,
47
- SHARED_AUTO_CLARITY,
48
- SHARED_PERSISTENCE,
49
- ].join(" "),
50
-
51
- [CAVEMAN_LEVELS.WENYAN_LITE]: [
52
- "Respond semi-classical. Drop filler/hedging but keep grammar structure, classical register.",
53
- "Use classical Chinese sentence patterns where natural. Keep English for technical terms.",
54
- SHARED_EXAMPLES,
55
- SHARED_BOUNDARIES,
56
- SHARED_AUTO_CLARITY,
57
- SHARED_PERSISTENCE,
58
- ].join(" "),
59
-
60
- [CAVEMAN_LEVELS.WENYAN]: [
61
- "Respond classical Chinese (文言文). Maximum classical terseness. 80-90% character reduction.",
62
- "Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其).",
63
- "Keep English for code, commands, function names, API names, error strings.",
64
- SHARED_EXAMPLES,
65
- SHARED_BOUNDARIES,
66
- SHARED_AUTO_CLARITY,
67
- SHARED_PERSISTENCE,
68
- ].join(" "),
69
-
70
- [CAVEMAN_LEVELS.WENYAN_ULTRA]: [
71
- "Respond extreme classical compression (文言文 ultra). Maximum compression, ultra terse.",
72
- "Same classical rules as wenyan-full but even more compressed. One classical particle per clause.",
73
- SHARED_EXAMPLES,
74
- SHARED_BOUNDARIES,
75
- SHARED_AUTO_CLARITY,
76
- SHARED_PERSISTENCE,
77
- ].join(" "),
78
- };
@@ -1,55 +0,0 @@
1
- // RTK port constants (mirror Rust defaults)
2
- export const RAW_CAP = 10 * 1024 * 1024; // 10 MiB
3
- export const MIN_COMPRESS_SIZE = 500; // bytes; skip tiny blobs
4
- export const DETECT_WINDOW = 1024; // autodetect peeks first N chars
5
- export const GIT_DIFF_HUNK_MAX_LINES = 100; // per-hunk line cap
6
- export const GIT_DIFF_CONTEXT_KEEP = 3; // context lines around changes
7
- export const DEDUP_LINE_MAX = 2000; // dedupLog truncation cap
8
-
9
- // Rust pipe_cmd.rs parity caps
10
- export const GREP_PER_FILE_MAX = 10; // match rust: matches.iter().take(10)
11
- export const FIND_PER_DIR_MAX = 10; // match rust: files.iter().take(10)
12
- export const FIND_TOTAL_DIR_MAX = 20; // match rust: dirs.iter().take(20)
13
-
14
- // git status caps (rust config::limits())
15
- export const STATUS_MAX_FILES = 10; // config::limits().status_max_files
16
- export const STATUS_MAX_UNTRACKED = 10; // config::limits().status_max_untracked
17
-
18
- // ls compact_ls (rtk/src/cmds/system/ls.rs)
19
- export const LS_EXT_SUMMARY_TOP = 5; // top-N extensions in summary
20
- export const LS_NOISE_DIRS = [
21
- "node_modules", ".git", "target", "__pycache__",
22
- ".next", "dist", "build", ".venv", "venv",
23
- ".cache", ".idea", ".vscode", ".DS_Store"
24
- ];
25
-
26
- // tree filter_tree_output cap (no rust cap, we add one to be safe)
27
- export const TREE_MAX_LINES = 200;
28
-
29
- // Cursor Glob "Result of search in '...' (total N files):" list
30
- export const SEARCH_LIST_PER_DIR_MAX = 10;
31
- export const SEARCH_LIST_TOTAL_DIR_MAX = 20;
32
-
33
- // Smart truncate (port of filter.rs smart_truncate fallback)
34
- export const SMART_TRUNCATE_HEAD = 120; // lines kept from top
35
- export const SMART_TRUNCATE_TAIL = 60; // lines kept from bottom
36
- export const SMART_TRUNCATE_MIN_LINES = 250; // only kick in above this
37
-
38
- // readNumbered (files with " N|content" lines, e.g. Cursor read_file)
39
- export const READ_NUMBERED_MIN_HIT_RATIO = 0.7;
40
-
41
- // Filter name strings (Rust parity + JS extras)
42
- export const FILTERS = {
43
- GIT_DIFF: "git-diff",
44
- GIT_STATUS: "git-status",
45
- GIT_LOG: "git-log",
46
- GREP: "grep",
47
- FIND: "find",
48
- LS: "ls",
49
- TREE: "tree",
50
- DEDUP_LOG: "dedup-log",
51
- SMART_TRUNCATE: "smart-truncate",
52
- READ_NUMBERED: "read-numbered",
53
- SEARCH_LIST: "search-list",
54
- BUILD_OUTPUT: "build-output"
55
- };
@@ -1,127 +0,0 @@
1
- // Compress build tool output (npm, cargo, pip, maven, gradle, etc.)
2
- // Keeps: errors, warnings, final summary
3
- // Strips: progress logs, verbose "Compiling X" lists, download logs
4
-
5
- // Cargo/rustc error continuation: " --> file:line", " |", "N | code", " = note: ..."
6
- const RE_CARGO_ERR_CONT = /^\s*(-->|\||\d+\s*\||=)/;
7
- const DEPRECATION_KEEP = 3;
8
-
9
- export function buildOutput(input) {
10
- const lines = input.split("\n");
11
- if (lines.length === 0) return input;
12
-
13
- const errors = [];
14
- const warnings = [];
15
- const deprecations = [];
16
- let summary = null;
17
- let compilingCount = 0;
18
- let downloadingCount = 0;
19
- let inCargoError = false;
20
-
21
- for (const line of lines) {
22
- const trimmed = line.trim();
23
-
24
- // Continuation of cargo error block: keep verbatim while in block
25
- if (inCargoError) {
26
- if (!trimmed) { inCargoError = false; continue; }
27
- if (RE_CARGO_ERR_CONT.test(line)) { errors.push(line); continue; }
28
- inCargoError = false;
29
- }
30
-
31
- if (!trimmed) continue;
32
-
33
- if (/^npm (ERR!|error)/i.test(trimmed) || /^yarn error/i.test(trimmed)) {
34
- errors.push(line);
35
- continue;
36
- }
37
-
38
- if (/^npm warn deprecated/i.test(trimmed)) {
39
- deprecations.push(line);
40
- continue;
41
- }
42
- if (/^npm warn/i.test(trimmed) || /^yarn warn/i.test(trimmed)) {
43
- warnings.push(line);
44
- continue;
45
- }
46
-
47
- if (/^error(\[|:)/i.test(trimmed) || trimmed.startsWith("error -->")) {
48
- errors.push(line);
49
- inCargoError = true;
50
- continue;
51
- }
52
-
53
- if (/^warning(\[|:)/i.test(trimmed) || trimmed.startsWith("warning -->")) {
54
- warnings.push(line);
55
- inCargoError = true;
56
- continue;
57
- }
58
-
59
- if (/^ERROR:/i.test(trimmed)) {
60
- errors.push(line);
61
- continue;
62
- }
63
-
64
- if (/^\[ERROR\]/i.test(trimmed) || /^BUILD FAILED/i.test(trimmed)) {
65
- errors.push(line);
66
- continue;
67
- }
68
-
69
- if (/^\[WARNING\]/i.test(trimmed)) {
70
- warnings.push(line);
71
- continue;
72
- }
73
-
74
- if (/^\s*Compiling\s+\S+/i.test(trimmed)) {
75
- compilingCount++;
76
- continue;
77
- }
78
- if (/^\s*Downloading\s+\S+/i.test(trimmed) || /^Fetching\s+/i.test(trimmed)) {
79
- downloadingCount++;
80
- continue;
81
- }
82
-
83
- if (
84
- /^(added|removed|changed|audited|installed)\s+\d+\s+package/i.test(trimmed) ||
85
- /^\s*Finished\s+/i.test(trimmed) ||
86
- /^BUILD SUCCESS/i.test(trimmed) ||
87
- /^\d+\s+(vulnerabilities|packages?|warnings?|errors?)/i.test(trimmed) ||
88
- /^Successfully (installed|built)/i.test(trimmed) ||
89
- /^To address .* issues/i.test(trimmed) ||
90
- /^Run `npm (audit|fund)`/i.test(trimmed) ||
91
- /packages are looking for funding/i.test(trimmed)
92
- ) {
93
- summary = summary ? `${summary}\n${line}` : line;
94
- continue;
95
- }
96
- }
97
-
98
- let out = "";
99
-
100
- // Keep first N deprecations verbatim (package name + reason), count the rest
101
- const keepDep = deprecations.slice(0, DEPRECATION_KEEP);
102
- for (const d of keepDep) out += `${d}\n`;
103
- if (deprecations.length > DEPRECATION_KEEP) {
104
- out += `... +${deprecations.length - DEPRECATION_KEEP} more deprecated packages\n`;
105
- }
106
-
107
- if (compilingCount > 0) {
108
- out += `Compiled ${compilingCount} packages\n`;
109
- }
110
- if (downloadingCount > 0) {
111
- out += `Downloaded ${downloadingCount} packages\n`;
112
- }
113
-
114
- for (const e of errors) out += `${e}\n`;
115
-
116
- const keepWarnings = warnings.slice(0, 5);
117
- for (const w of keepWarnings) out += `${w}\n`;
118
- if (warnings.length > 5) {
119
- out += `... +${warnings.length - 5} more warnings\n`;
120
- }
121
-
122
- if (summary) out += `${summary}\n`;
123
-
124
- return out.replace(/\n+$/, "") || input;
125
- }
126
-
127
- buildOutput.filterName = "build-output";
@@ -1,44 +0,0 @@
1
- // Generic fallback: collapse consecutive duplicate lines + blank-line dedupe + hard line cap
2
- import { DEDUP_LINE_MAX } from "../constants.js";
3
-
4
- export function dedupLog(input) {
5
- const lines = input.split("\n");
6
- const out = [];
7
- let prev = null;
8
- let runCount = 0;
9
- let blankStreak = 0;
10
-
11
- const flushRun = () => {
12
- if (prev !== null && runCount > 1) {
13
- out.push(` ... (${runCount - 1} duplicate lines)`);
14
- }
15
- };
16
-
17
- for (const line of lines) {
18
- if (line.trim() === "") {
19
- if (blankStreak < 1) out.push(line);
20
- blankStreak += 1;
21
- flushRun();
22
- prev = null;
23
- runCount = 0;
24
- continue;
25
- }
26
- blankStreak = 0;
27
- if (line === prev) {
28
- runCount += 1;
29
- continue;
30
- }
31
- flushRun();
32
- out.push(line);
33
- prev = line;
34
- runCount = 1;
35
- if (out.length >= DEDUP_LINE_MAX) {
36
- out.push(`... (truncated at ${DEDUP_LINE_MAX} lines)`);
37
- return out.join("\n");
38
- }
39
- }
40
- flushRun();
41
- return out.join("\n");
42
- }
43
-
44
- dedupLog.filterName = "dedup-log";