@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,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";