@fudrouter/fsrouter 0.6.72 → 0.6.74

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 (314) hide show
  1. package/dist/lib/headroom/detect.js +97 -7
  2. package/dist/lib/headroom/process.js +136 -4
  3. package/dist/open-sse/config/appConstants.js +23 -79
  4. package/dist/open-sse/config/cliFingerprints.js +1 -1
  5. package/dist/open-sse/config/errorConfig.js +0 -11
  6. package/dist/open-sse/config/grokCli.js +10 -0
  7. package/dist/open-sse/config/kiroConstants.js +99 -46
  8. package/dist/open-sse/config/runtimeConfig.js +2 -0
  9. package/dist/open-sse/config/ttsModels.js +2 -0
  10. package/dist/open-sse/executors/antigravity.js +250 -164
  11. package/dist/open-sse/executors/base.js +16 -11
  12. package/dist/open-sse/executors/codex.js +269 -1108
  13. package/dist/open-sse/executors/commandCode.js +1 -1
  14. package/dist/open-sse/executors/commandcode.js +10 -4
  15. package/dist/open-sse/executors/cursor.js +96 -203
  16. package/dist/open-sse/executors/default.js +146 -244
  17. package/dist/open-sse/executors/github.js +128 -73
  18. package/dist/open-sse/executors/grok-cli.js +527 -94
  19. package/dist/open-sse/executors/grok-web.js +5 -7
  20. package/dist/open-sse/executors/index.js +12 -0
  21. package/dist/open-sse/executors/kiro.js +150 -61
  22. package/dist/open-sse/executors/opencode-go.js +12 -4
  23. package/dist/open-sse/executors/opencode.js +1 -1
  24. package/dist/open-sse/executors/perplexity-web.js +20 -96
  25. package/dist/open-sse/executors/qoder.js +28 -18
  26. package/dist/open-sse/executors/vertex.js +53 -7
  27. package/dist/open-sse/executors/xiaomi-tokenplan.js +6 -5
  28. package/dist/open-sse/handlers/chatCore/nonStreamingHandler.js +97 -85
  29. package/dist/open-sse/handlers/chatCore/requestDetail.js +32 -8
  30. package/dist/open-sse/handlers/chatCore/sseToJsonHandler.js +13 -7
  31. package/dist/open-sse/handlers/chatCore/streamingHandler.js +74 -25
  32. package/dist/open-sse/handlers/chatCore.js +35 -41
  33. package/dist/open-sse/handlers/embeddingProviders/index.js +1 -0
  34. package/dist/open-sse/handlers/embeddingProviders/openai.js +8 -16
  35. package/dist/open-sse/handlers/imageProviders/blackForestLabs.js +2 -21
  36. package/dist/open-sse/handlers/imageProviders/cloudflareAi.js +2 -30
  37. package/dist/open-sse/handlers/imageProviders/codex.js +2 -20
  38. package/dist/open-sse/handlers/imageProviders/comfyui.js +5 -18
  39. package/dist/open-sse/handlers/imageProviders/falAi.js +2 -22
  40. package/dist/open-sse/handlers/imageProviders/gemini.js +2 -16
  41. package/dist/open-sse/handlers/imageProviders/huggingface.js +2 -17
  42. package/dist/open-sse/handlers/imageProviders/index.js +3 -4
  43. package/dist/open-sse/handlers/imageProviders/leonardo.js +1 -1
  44. package/dist/open-sse/handlers/imageProviders/nanobanana.js +4 -23
  45. package/dist/open-sse/handlers/imageProviders/openai.js +15 -43
  46. package/dist/open-sse/handlers/imageProviders/runwayml.js +2 -26
  47. package/dist/open-sse/handlers/imageProviders/sdwebui.js +4 -20
  48. package/dist/open-sse/handlers/imageProviders/stabilityAi.js +2 -26
  49. package/dist/open-sse/handlers/imageProviders/weavy.js +1 -1
  50. package/dist/open-sse/handlers/search/chatSearch.js +60 -14
  51. package/dist/open-sse/handlers/ttsProviders/gemini.js +14 -3
  52. package/dist/open-sse/handlers/ttsProviders/index.js +4 -2
  53. package/dist/open-sse/handlers/ttsProviders/openai.js +4 -1
  54. package/dist/open-sse/handlers/ttsProviders/openrouter.js +7 -4
  55. package/dist/open-sse/handlers/videoCore.js +166 -0
  56. package/dist/open-sse/handlers/videoProviders/weavy.js +1 -1
  57. package/dist/open-sse/mcp-server/catalog.js +1 -1
  58. package/dist/open-sse/mcp-server/server.js +2 -2
  59. package/dist/open-sse/mcp-server/tools/advancedTools.js +2 -2
  60. package/dist/open-sse/mcp-server/tools/agentSkillTools.js +1 -1
  61. package/dist/open-sse/mcp-server/tools/compressionTools.js +4 -4
  62. package/dist/open-sse/mcp-server/tools/gamificationTools.js +10 -10
  63. package/dist/open-sse/mcp-server/tools/githubSkillTools.js +1 -1
  64. package/dist/open-sse/mcp-server/tools/memoryTools.js +3 -3
  65. package/dist/open-sse/mcp-server/tools/notionTools.js +2 -2
  66. package/dist/open-sse/mcp-server/tools/obsidianTools.js +2 -2
  67. package/dist/open-sse/mcp-server/tools/pickFastestModel.js +1 -1
  68. package/dist/open-sse/mcp-server/tools/pluginTools.js +4 -4
  69. package/dist/open-sse/mcp-server/tools/skillTools.js +2 -2
  70. package/dist/open-sse/providers/capabilities.js +24 -4
  71. package/dist/open-sse/providers/registry/alicode-intl.js +1 -1
  72. package/dist/open-sse/providers/registry/anthropic.js +1 -8
  73. package/dist/open-sse/providers/registry/codex.js +0 -9
  74. package/dist/open-sse/providers/registry/cohere.js +0 -2
  75. package/dist/open-sse/providers/registry/gemini.js +0 -2
  76. package/dist/open-sse/providers/registry/github.js +9 -6
  77. package/dist/open-sse/providers/registry/grok-cli.js +28 -18
  78. package/dist/open-sse/providers/registry/index.js +74 -80
  79. package/dist/open-sse/providers/registry/kiro.js +12 -0
  80. package/dist/open-sse/providers/registry/mistral.js +0 -3
  81. package/dist/open-sse/providers/registry/openai.js +0 -3
  82. package/dist/open-sse/providers/registry/perplexity.js +0 -2
  83. package/dist/open-sse/providers/registry/xai.js +5 -3
  84. package/dist/open-sse/rtk/autodetect.js +10 -2
  85. package/dist/open-sse/rtk/caveman.js +2 -93
  86. package/dist/open-sse/rtk/cavemanPrompts.js +34 -2
  87. package/dist/open-sse/rtk/constants.js +7 -2
  88. package/dist/open-sse/rtk/headroom.js +133 -0
  89. package/dist/open-sse/rtk/ponytail.js +1 -1
  90. package/dist/open-sse/rtk/registry.js +2 -0
  91. package/dist/open-sse/services/accountFallback.js +0 -108
  92. package/dist/open-sse/services/combo/quotaExhaustionCutoff.js +2 -2
  93. package/dist/open-sse/services/combo/quotaShareStrategy.js +1 -1
  94. package/dist/open-sse/services/combo/resolveAutoStrategy.js +1 -1
  95. package/dist/open-sse/services/combo/sessionStickiness.js +1 -1
  96. package/dist/open-sse/services/combo/targetSorters.js +2 -2
  97. package/dist/open-sse/services/combo/validateQuality.js +1 -1
  98. package/dist/open-sse/services/comboConfig.js +1 -1
  99. package/dist/open-sse/services/emergencyFallback.js +1 -1
  100. package/dist/open-sse/services/grokCliModels.js +127 -0
  101. package/dist/open-sse/services/model.js +7 -1
  102. package/dist/open-sse/services/provider.js +1 -1
  103. package/dist/open-sse/services/proxyAutoSelector.js +1 -1
  104. package/dist/open-sse/services/tokenRefresh/providers.js +3 -3
  105. package/dist/open-sse/services/usage/codex.js +148 -214
  106. package/dist/open-sse/services/usage/grok-cli.js +61 -7
  107. package/dist/open-sse/services/usage/misc.js +0 -19
  108. package/dist/open-sse/services/usage.js +0 -2
  109. package/dist/open-sse/translator/concerns/paramSupport.js +2 -2
  110. package/dist/open-sse/translator/concerns/thinkingUnified.js +6 -0
  111. package/dist/open-sse/translator/index.js +97 -59
  112. package/dist/open-sse/translator/request/claude-to-kiro.js +67 -40
  113. package/dist/open-sse/translator/request/openai-responses.js +1 -0
  114. package/dist/open-sse/translator/request/openai-to-commandcode.js +0 -4
  115. package/dist/open-sse/translator/request/openai-to-kiro.js +49 -20
  116. package/dist/open-sse/translator/response/commandcode-to-openai.js +0 -4
  117. package/dist/open-sse/utils/bypassHandler.js +18 -3
  118. package/dist/open-sse/utils/claudeCloaking.js +15 -5
  119. package/dist/open-sse/utils/cursorImages.js +1 -1
  120. package/dist/open-sse/utils/error.js +0 -17
  121. package/dist/open-sse/utils/keepaliveThreshold.js +4 -4
  122. package/dist/open-sse/utils/kiroSessionReplay.js +125 -0
  123. package/dist/open-sse/utils/noThinkingAlias.js +1 -1
  124. package/dist/open-sse/utils/proxyFetch.js +0 -1
  125. package/dist/open-sse/utils/reasoningContentInjector.js +4 -7
  126. package/dist/open-sse/utils/responsesStatePolicy.js +1 -1
  127. package/dist/open-sse/utils/responsesStreamHelpers.js +1 -0
  128. package/dist/open-sse/utils/sessionManager.js +49 -22
  129. package/dist/open-sse/utils/stream.js +54 -77
  130. package/dist/open-sse/utils/streamHandler.js +19 -15
  131. package/dist/open-sse/utils/streamHelpers.js +2 -17
  132. package/dist/open-sse/utils/usageTracking.js +103 -12
  133. package/dist/routes/headroom/extras/route.js +58 -0
  134. package/dist/routes/headroom/restart/route.js +33 -0
  135. package/open-sse/config/appConstants.js +23 -79
  136. package/open-sse/config/errorConfig.js +0 -11
  137. package/open-sse/config/grokCli.js +10 -0
  138. package/open-sse/config/kiroConstants.js +99 -46
  139. package/open-sse/config/runtimeConfig.js +2 -0
  140. package/open-sse/config/ttsModels.js +2 -0
  141. package/open-sse/executors/antigravity.js +250 -164
  142. package/open-sse/executors/base.js +16 -11
  143. package/open-sse/executors/codex.js +269 -1108
  144. package/open-sse/executors/commandcode.js +10 -4
  145. package/open-sse/executors/cursor.js +96 -203
  146. package/open-sse/executors/default.js +146 -244
  147. package/open-sse/executors/github.js +128 -73
  148. package/open-sse/executors/grok-cli.js +527 -94
  149. package/open-sse/executors/grok-web.js +5 -7
  150. package/open-sse/executors/index.js +12 -0
  151. package/open-sse/executors/kiro.js +150 -61
  152. package/open-sse/executors/opencode-go.js +12 -4
  153. package/open-sse/executors/opencode.js +1 -1
  154. package/open-sse/executors/perplexity-web.js +20 -96
  155. package/open-sse/executors/qoder.js +28 -18
  156. package/open-sse/executors/vertex.js +53 -7
  157. package/open-sse/executors/xiaomi-tokenplan.js +6 -5
  158. package/open-sse/handlers/chatCore/nonStreamingHandler.js +97 -85
  159. package/open-sse/handlers/chatCore/requestDetail.js +32 -8
  160. package/open-sse/handlers/chatCore/sseToJsonHandler.js +13 -7
  161. package/open-sse/handlers/chatCore/streamingHandler.js +74 -25
  162. package/open-sse/handlers/chatCore.js +35 -41
  163. package/open-sse/handlers/embeddingProviders/index.js +1 -0
  164. package/open-sse/handlers/embeddingProviders/openai.js +8 -16
  165. package/open-sse/handlers/imageProviders/blackForestLabs.js +2 -21
  166. package/open-sse/handlers/imageProviders/cloudflareAi.js +2 -30
  167. package/open-sse/handlers/imageProviders/codex.js +2 -20
  168. package/open-sse/handlers/imageProviders/comfyui.js +5 -18
  169. package/open-sse/handlers/imageProviders/falAi.js +2 -22
  170. package/open-sse/handlers/imageProviders/gemini.js +2 -16
  171. package/open-sse/handlers/imageProviders/huggingface.js +2 -17
  172. package/open-sse/handlers/imageProviders/index.js +3 -4
  173. package/open-sse/handlers/imageProviders/leonardo.js +1 -1
  174. package/open-sse/handlers/imageProviders/nanobanana.js +4 -23
  175. package/open-sse/handlers/imageProviders/openai.js +15 -43
  176. package/open-sse/handlers/imageProviders/runwayml.js +2 -26
  177. package/open-sse/handlers/imageProviders/sdwebui.js +4 -20
  178. package/open-sse/handlers/imageProviders/stabilityAi.js +2 -26
  179. package/open-sse/handlers/imageProviders/weavy.js +1 -1
  180. package/open-sse/handlers/search/chatSearch.js +60 -14
  181. package/open-sse/handlers/ttsProviders/gemini.js +14 -3
  182. package/open-sse/handlers/ttsProviders/index.js +4 -2
  183. package/open-sse/handlers/ttsProviders/openai.js +4 -1
  184. package/open-sse/handlers/ttsProviders/openrouter.js +7 -4
  185. package/open-sse/handlers/videoCore.js +166 -0
  186. package/open-sse/handlers/videoProviders/weavy.js +1 -1
  187. package/open-sse/mcp-server/audit.js +1 -1
  188. package/open-sse/mcp-server/catalog.js +2 -2
  189. package/open-sse/mcp-server/descriptionCompressor.js +1 -1
  190. package/open-sse/mcp-server/mcpCallerIdentity.js +1 -1
  191. package/open-sse/mcp-server/schemas/tools.js +1 -1
  192. package/open-sse/mcp-server/server.js +4 -4
  193. package/open-sse/mcp-server/tools/advancedTools.js +5 -5
  194. package/open-sse/mcp-server/tools/agentSkillTools.js +1 -1
  195. package/open-sse/mcp-server/tools/compressionTools.js +4 -4
  196. package/open-sse/mcp-server/tools/gamificationTools.js +10 -10
  197. package/open-sse/mcp-server/tools/githubSkillTools.js +1 -1
  198. package/open-sse/mcp-server/tools/memoryTools.js +3 -3
  199. package/open-sse/mcp-server/tools/notionTools.js +2 -2
  200. package/open-sse/mcp-server/tools/obsidianTools.js +2 -2
  201. package/open-sse/mcp-server/tools/pickFastestModel.js +3 -3
  202. package/open-sse/mcp-server/tools/pluginTools.js +4 -4
  203. package/open-sse/mcp-server/tools/skillTools.js +2 -2
  204. package/open-sse/providers/capabilities.js +24 -4
  205. package/open-sse/providers/registry/alicode-intl.js +1 -1
  206. package/open-sse/providers/registry/anthropic.js +1 -8
  207. package/open-sse/providers/registry/codex.js +0 -9
  208. package/open-sse/providers/registry/cohere.js +0 -2
  209. package/open-sse/providers/registry/gemini.js +0 -2
  210. package/open-sse/providers/registry/github.js +9 -6
  211. package/open-sse/providers/registry/grok-cli.js +28 -18
  212. package/open-sse/providers/registry/index.js +74 -80
  213. package/open-sse/providers/registry/kiro.js +12 -0
  214. package/open-sse/providers/registry/mistral.js +0 -3
  215. package/open-sse/providers/registry/openai.js +0 -3
  216. package/open-sse/providers/registry/perplexity.js +0 -2
  217. package/open-sse/providers/registry/xai.js +5 -3
  218. package/open-sse/rtk/autodetect.js +10 -2
  219. package/open-sse/rtk/caveman.js +2 -93
  220. package/open-sse/rtk/cavemanPrompts.js +34 -2
  221. package/open-sse/rtk/constants.js +7 -2
  222. package/open-sse/rtk/headroom.js +133 -0
  223. package/open-sse/rtk/ponytail.js +1 -1
  224. package/open-sse/rtk/registry.js +2 -0
  225. package/open-sse/services/accountFallback.js +0 -108
  226. package/open-sse/services/combo/quotaExhaustionCutoff.js +2 -2
  227. package/open-sse/services/combo/quotaShareStrategy.js +1 -1
  228. package/open-sse/services/combo/resolveAutoStrategy.js +1 -1
  229. package/open-sse/services/combo/sessionStickiness.js +1 -1
  230. package/open-sse/services/combo/shadowRouting.js +1 -1
  231. package/open-sse/services/combo/targetSorters.js +4 -4
  232. package/open-sse/services/combo/validateQuality.js +1 -1
  233. package/open-sse/services/evalRouting.js +1 -1
  234. package/open-sse/services/grokCliModels.js +127 -0
  235. package/open-sse/services/model.js +7 -1
  236. package/open-sse/services/modelCapabilities.js +1 -1
  237. package/open-sse/services/modelFamilyFallback.js +1 -1
  238. package/open-sse/services/provider.js +1 -1
  239. package/open-sse/services/providerCooldownTracker.js +1 -1
  240. package/open-sse/services/rateLimitManager.js +1 -1
  241. package/open-sse/services/tokenRefresh/providers.js +3 -3
  242. package/open-sse/services/usage/codex.js +148 -214
  243. package/open-sse/services/usage/grok-cli.js +61 -7
  244. package/open-sse/services/usage/misc.js +0 -19
  245. package/open-sse/services/usage.js +0 -2
  246. package/open-sse/translator/concerns/paramSupport.js +2 -2
  247. package/open-sse/translator/concerns/thinkingUnified.js +6 -0
  248. package/open-sse/translator/index.js +97 -59
  249. package/open-sse/translator/request/claude-to-kiro.js +67 -40
  250. package/open-sse/translator/request/openai-responses.js +1 -0
  251. package/open-sse/translator/request/openai-to-commandcode.js +0 -4
  252. package/open-sse/translator/request/openai-to-kiro.js +49 -20
  253. package/open-sse/translator/response/commandcode-to-openai.js +0 -4
  254. package/open-sse/utils/bypassHandler.js +18 -3
  255. package/open-sse/utils/claudeCloaking.js +15 -5
  256. package/open-sse/utils/error.js +0 -17
  257. package/open-sse/utils/kiroSessionReplay.js +125 -0
  258. package/open-sse/utils/logger.js +1 -1
  259. package/open-sse/utils/proxyFetch.js +0 -1
  260. package/open-sse/utils/reasoningContentInjector.js +4 -7
  261. package/open-sse/utils/responsesStreamHelpers.js +1 -0
  262. package/open-sse/utils/sessionManager.js +49 -22
  263. package/open-sse/utils/stream.js +54 -77
  264. package/open-sse/utils/streamHandler.js +19 -15
  265. package/open-sse/utils/streamHelpers.js +2 -17
  266. package/open-sse/utils/usageTracking.js +103 -12
  267. package/package.json +4 -7
  268. package/public/assets/EndpointPageClient.C2WMTYy0.js +6 -0
  269. package/public/assets/{Loading.Bj-WGl4k.js → Loading.BHPtQ9vj.js} +1 -1
  270. package/public/assets/{NoAuthProxyCard.qAv57b-0.js → NoAuthProxyCard.BDcXaWvM.js} +1 -1
  271. package/public/assets/index.Be3gbrBl.js +89 -0
  272. package/public/assets/index.COMgQZYj.css +1 -0
  273. package/public/assets/{page.CbkENBd5.js → page.-lpNgYAw.js} +1 -1
  274. package/public/assets/{page.CssmrzTT.js → page.11hpNKmq.js} +1 -1
  275. package/public/assets/{page.C72FTTJr.js → page.B-LxsnqU.js} +1 -1
  276. package/public/assets/{page.sOFOrxqq.js → page.B-dzeIUC.js} +1 -1
  277. package/public/assets/{page.CsxWmPoI.js → page.B-nBR75u.js} +1 -1
  278. package/public/assets/{page.Dx_GRRdT.js → page.B3QqvLep.js} +1 -1
  279. package/public/assets/{page.DPyOkPVo.js → page.B8xdkCWA.js} +1 -1
  280. package/public/assets/{page.DUI8kqOY.js → page.BFb7yUd8.js} +1 -1
  281. package/public/assets/page.BbPPdoas.js +1 -0
  282. package/public/assets/page.BdS20a1O.js +1 -0
  283. package/public/assets/{page.DibhF7f-.js → page.BfmI9KYe.js} +1 -1
  284. package/public/assets/{page.DX4Nno6M.js → page.BgGJovOg.js} +1 -1
  285. package/public/assets/{page.BnmTC5jG.js → page.C0gBvR4O.js} +1 -1
  286. package/public/assets/{page.D5gj98Oe.js → page.C6bYizL7.js} +1 -1
  287. package/public/assets/{page.vla5Mzki.js → page.C8sLEMa6.js} +1 -1
  288. package/public/assets/{page.CXd_R9yU.js → page.CCNsZBXp.js} +1 -1
  289. package/public/assets/{page.CQlVGoXg.js → page.CF_YSLwP.js} +1 -1
  290. package/public/assets/{page.BbO1pspY.js → page.CPTtRDxw.js} +1 -1
  291. package/public/assets/{page.D1oKew1j.js → page.CdMmlUEm.js} +1 -1
  292. package/public/assets/{page.DxMDTbSx.js → page.Cged1bOZ.js} +1 -1
  293. package/public/assets/{page.Cj5h09Zo.js → page.Ch647dVk.js} +1 -1
  294. package/public/assets/{page.DVIHRbxB.js → page.CpvXDkQF.js} +1 -1
  295. package/public/assets/{page.i4KDuWcM.js → page.CrBl7f8N.js} +1 -1
  296. package/public/assets/{page.BSLJ4tx5.js → page.CrP7niA2.js} +1 -1
  297. package/public/assets/{page.CnTop8Zt.js → page.CvUFZzXr.js} +1 -1
  298. package/public/assets/{page.O2ddJYoT.js → page.CyUqJPmx.js} +1 -1
  299. package/public/assets/{page.DBhu4Arl.js → page.D8Rp8fFR.js} +1 -1
  300. package/public/assets/{page.CPZav1_c.js → page.Df9qtrdG.js} +1 -1
  301. package/public/assets/{page.Qkkv8roc.js → page.DiL4Gwqe.js} +1 -1
  302. package/public/assets/{page.BdmJ3yY3.js → page.Dl1apZE2.js} +1 -1
  303. package/public/assets/{page.1qjqvrwX.js → page.HV0w1d5C.js} +1 -1
  304. package/public/assets/{page.ChX1NqmC.js → page.N1x4YL8_.js} +1 -1
  305. package/public/assets/{page.Dh5f0XJC.js → page.P2Ny5veR.js} +1 -1
  306. package/public/assets/{page.CSs3-gdt.js → page.fOOCr18J.js} +1 -1
  307. package/public/assets/{page.Ir7KvKcF.js → page.sUIPWIiF.js} +1 -1
  308. package/public/assets/{page.CzlQTyAL.js → page.tE7PpWYW.js} +1 -1
  309. package/public/assets/{page.DzZLqI5Q.js → page.uziaGZsT.js} +1 -1
  310. package/public/index.html +2 -2
  311. package/public/assets/EndpointPageClient.LyNNvZ4z.js +0 -6
  312. package/public/assets/index.BuPfZebu.css +0 -1
  313. package/public/assets/index.CShjRV_B.js +0 -89
  314. package/public/assets/page.DD_czjjP.js +0 -1
@@ -1,8 +1,8 @@
1
1
  import { z } from "zod";
2
2
  import { resolve, normalize, isAbsolute } from "path";
3
- import { listPlugins, getPluginByName, updatePluginConfig } from '../../../../dist/lib/db/plugins.js';
4
- import { pluginManager } from '../../../../dist/lib/plugins/manager.js';
5
- import { validatePluginConfig } from '../../../../dist/lib/plugins/manifest.js';
3
+ import { listPlugins, getPluginByName, updatePluginConfig } from '../../../dist/lib/db/plugins.js';
4
+ import { pluginManager } from '../../../dist/lib/plugins/manager.js';
5
+ import { validatePluginConfig } from '../../../dist/lib/plugins/manifest.js';
6
6
  function validatePluginPath(path) {
7
7
  if (path.includes("\0")) {
8
8
  throw new Error("Invalid path: contains null bytes");
@@ -151,7 +151,7 @@ const pluginTools = [
151
151
  limit: z.number().min(1).max(100).default(20).describe("Max results to return")
152
152
  }),
153
153
  handler: async (args) => {
154
- const { getPluginAnalytics, getPluginAnalyticsSummary } = await import('../../../../dist/lib/db/plugins.js');
154
+ const { getPluginAnalytics, getPluginAnalyticsSummary } = await import('../../../dist/lib/db/plugins.js');
155
155
  const limit = args.limit || 20;
156
156
  if (args.name) {
157
157
  const rows = getPluginAnalytics(args.name).slice(0, limit);
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
- import { skillRegistry } from '../../../../dist/lib/skills/registry.js';
3
- import { skillExecutor } from '../../../../dist/lib/skills/executor.js';
2
+ import { skillRegistry } from '../../../dist/lib/skills/registry.js';
3
+ import { skillExecutor } from '../../../dist/lib/skills/executor.js';
4
4
  const SkillListSchema = z.object({
5
5
  apiKeyId: z.string().optional(),
6
6
  name: z.string().optional(),
@@ -98,6 +98,8 @@ export const MODEL_CAPABILITIES = {
98
98
  "coder-model": { reasoning: true, thinkingFormat: "qwen", contextWindow: 1000000 },
99
99
  };
100
100
 
101
+ const KIRO_GPT_5_6_CAPABILITIES = { vision: true, reasoning: true, search: true, thinkingFormat: "openai", contextWindow: 272000, maxOutput: 128000 };
102
+
101
103
  /**
102
104
  * Provider-specific capability overrides. Keyed by provider alias/id.
103
105
  */
@@ -111,6 +113,20 @@ export const PROVIDER_CAPABILITIES = {
111
113
  "deepseek-ai/deepseek-v4-pro": { reasoning: true, thinkingFormat: "openai", contextWindow: 1000000, maxOutput: 65536 },
112
114
  "deepseek-ai/deepseek-v4-flash": { reasoning: true, thinkingFormat: "openai", contextWindow: 1000000, maxOutput: 65536 },
113
115
  },
116
+ "kiro": {
117
+ "gpt-5.6-sol": KIRO_GPT_5_6_CAPABILITIES,
118
+ "gpt-5.6-terra": KIRO_GPT_5_6_CAPABILITIES,
119
+ "gpt-5.6-luna": KIRO_GPT_5_6_CAPABILITIES,
120
+ "gpt-5.6-sol-thinking": KIRO_GPT_5_6_CAPABILITIES,
121
+ "gpt-5.6-terra-thinking": KIRO_GPT_5_6_CAPABILITIES,
122
+ "gpt-5.6-luna-thinking": KIRO_GPT_5_6_CAPABILITIES,
123
+ "gpt-5.6-sol-agentic": KIRO_GPT_5_6_CAPABILITIES,
124
+ "gpt-5.6-terra-agentic": KIRO_GPT_5_6_CAPABILITIES,
125
+ "gpt-5.6-luna-agentic": KIRO_GPT_5_6_CAPABILITIES,
126
+ "gpt-5.6-sol-thinking-agentic": KIRO_GPT_5_6_CAPABILITIES,
127
+ "gpt-5.6-terra-thinking-agentic": KIRO_GPT_5_6_CAPABILITIES,
128
+ "gpt-5.6-luna-thinking-agentic": KIRO_GPT_5_6_CAPABILITIES,
129
+ },
114
130
  // CodeBuddy.cn — authoritative per-model metadata from the gateway's model
115
131
  // config (contextWindow=maxInputTokens, maxOutput=maxOutputTokens, vision=
116
132
  // supportsImages). Every model reasons via OpenAI-style reasoning_effort
@@ -271,13 +287,17 @@ export const PATTERN_CAPABILITIES = [
271
287
  export function getCapabilitiesForModel(provider, model) {
272
288
  if (!model) return { ...DEFAULT_CAPABILITIES };
273
289
 
290
+ // Canonical exact lookup strips vendor prefix: "anthropic/claude-opus-4.7" -> "claude-opus-4.7".
291
+ const baseModel = model.includes("/") ? model.split("/").pop() : model;
292
+
274
293
  // 1. Provider-specific override
275
- if (provider && PROVIDER_CAPABILITIES[provider]?.[model]) {
276
- return { ...DEFAULT_CAPABILITIES, ...PROVIDER_CAPABILITIES[provider][model] };
294
+ if (provider) {
295
+ const providerCaps = PROVIDER_CAPABILITIES[provider];
296
+ if (providerCaps?.[model]) return { ...DEFAULT_CAPABILITIES, ...providerCaps[model] };
297
+ if (providerCaps?.[baseModel]) return { ...DEFAULT_CAPABILITIES, ...providerCaps[baseModel] };
277
298
  }
278
299
 
279
- // 2. Canonical exact (strip vendor prefix: "anthropic/claude-opus-4.7" -> "claude-opus-4.7")
280
- const baseModel = model.includes("/") ? model.split("/").pop() : model;
300
+ // 2. Canonical exact
281
301
  if (MODEL_CAPABILITIES[baseModel]) return { ...DEFAULT_CAPABILITIES, ...MODEL_CAPABILITIES[baseModel] };
282
302
  if (MODEL_CAPABILITIES[model]) return { ...DEFAULT_CAPABILITIES, ...MODEL_CAPABILITIES[model] };
283
303
 
@@ -14,7 +14,7 @@ export default {
14
14
  },
15
15
  category: "apikey",
16
16
  transport: {
17
- baseUrl: "https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions",
17
+ baseUrl: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions",
18
18
  headers: {},
19
19
  quirks: { preserveCacheControl: true },
20
20
  },
@@ -1,5 +1,3 @@
1
- import { CLAUDE_API_HEADERS } from "../shared.js";
2
-
3
1
  export default {
4
2
  id: "anthropic",
5
3
  priority: 30,
@@ -19,18 +17,13 @@ export default {
19
17
  baseUrl: "https://api.anthropic.com/v1/messages",
20
18
  format: "claude",
21
19
  headers: {
22
- "Anthropic-Version": "2023-06-01",
20
+ "anthropic-version": "2023-06-01",
23
21
  "Anthropic-Beta": "claude-code-20250219,interleaved-thinking-2025-05-14",
24
22
  },
25
23
  },
26
24
  models: [
27
25
  { id: "claude-sonnet-4-20250514", name: "Claude Sonnet 4" },
28
26
  { id: "claude-opus-4-20250514", name: "Claude Opus 4" },
29
- { id: "claude-opus-4-7", name: "Claude Opus 4.7" },
30
- { id: "claude-opus-4-8", name: "Claude Opus 4.8" },
31
- { id: "claude-sonnet-5", name: "Claude Sonnet 5" },
32
- { id: "claude-fable-5", name: "Claude Fable 5" },
33
- { id: "claude-haiku-4-5", name: "Claude Haiku 4.5" },
34
27
  { id: "claude-3-5-sonnet-20241022", name: "Claude 3.5 Sonnet" },
35
28
  ],
36
29
  serviceKinds: ["llm","imageToText"],
@@ -56,15 +56,6 @@ export default {
56
56
  { id: "gpt-5.4", name: "GPT 5.4" },
57
57
  { id: "gpt-5.4-review", name: "GPT 5.4 Review", upstreamModelId: "gpt-5.4", quotaFamily: "review" },
58
58
  { id: "gpt-5.4-mini", name: "GPT 5.4 Mini" },
59
- { id: "gpt-5.3-codex", name: "GPT 5.3 Codex" },
60
- { id: "gpt-5.5-xhigh", name: "GPT 5.5 (xHigh)" },
61
- { id: "gpt-5.5-high", name: "GPT 5.5 (High)" },
62
- { id: "gpt-5.5-medium", name: "GPT 5.5 (Medium)" },
63
- { id: "gpt-5.5-low", name: "GPT 5.5 (Low)" },
64
- { id: "gpt-5.4-xhigh", name: "GPT 5.4 (xHigh)" },
65
- { id: "gpt-5.4-high", name: "GPT 5.4 (High)" },
66
- { id: "gpt-5.4-medium", name: "GPT 5.4 (Medium)" },
67
- { id: "gpt-5.4-low", name: "GPT 5.4 (Low)" },
68
59
  { id: "gpt-5.4-mini-review", name: "GPT 5.4 Mini Review", upstreamModelId: "gpt-5.4-mini", quotaFamily: "review" },
69
60
  { id: "gpt-5.3-codex-spark", name: "GPT 5.3 Codex Spark" },
70
61
  { id: "gpt-5.3-codex-spark-review", name: "GPT 5.3 Codex Spark Review", upstreamModelId: "gpt-5.3-codex-spark", quotaFamily: "review" },
@@ -19,8 +19,6 @@ export default {
19
19
  },
20
20
  models: [
21
21
  { id: "command-r-plus-08-2024", name: "Command R+ (Aug 2024)" },
22
- { id: "command-a-reasoning", name: "Command A Reasoning" },
23
- { id: "command-a-vision", name: "Command A Vision" },
24
22
  { id: "command-r-08-2024", name: "Command R (Aug 2024)" },
25
23
  { id: "command-a-03-2025", name: "Command A (Mar 2025)" },
26
24
  ],
@@ -36,8 +36,6 @@ export default {
36
36
  models: [
37
37
  { id: "gemini-3.1-pro-preview", name: "Gemini 3.1 Pro Preview" },
38
38
  { id: "gemini-3.1-flash-lite-preview", name: "Gemini 3.1 Flash Lite Preview" },
39
- { id: "gemini-3.1-flash-lite", name: "Gemini 3.1 Flash Lite" },
40
- { id: "gemini-3.5-flash", name: "Gemini 3.5 Flash" },
41
39
  { id: "gemini-3-flash-preview", name: "Gemini 3 Flash Preview" },
42
40
  { id: "gemini-2.5-pro", name: "Gemini 2.5 Pro" },
43
41
  { id: "gemini-2.5-flash", name: "Gemini 2.5 Flash" },
@@ -18,6 +18,7 @@ export default {
18
18
  transport: {
19
19
  baseUrl: "https://api.githubcopilot.com/chat/completions",
20
20
  responsesUrl: "https://api.githubcopilot.com/responses",
21
+ messagesUrl: "https://api.githubcopilot.com/v1/messages",
21
22
  headers: {
22
23
  "copilot-integration-id": "vscode-chat",
23
24
  "editor-version": "vscode/1.110.0",
@@ -42,16 +43,18 @@ export default {
42
43
  },
43
44
  models: [
44
45
  { id: "gpt-5.2", name: "GPT-5.2" },
45
- { id: "gpt-5.5", name: "GPT 5.5" },
46
- { id: "claude-sonnet-5", name: "Claude Sonnet 5" },
47
- { id: "claude-opus-4-8", name: "Claude Opus 4.8" },
48
- { id: "claude-fable-5", name: "Claude Fable 5" },
49
- { id: "gemini-3.5-flash", name: "Gemini 3.5 Flash" },
50
- { id: "kimi-k2.7-code", name: "Kimi K2.7 Code" },
51
46
  { id: "gpt-5.2-codex", name: "GPT-5.2 Codex" },
52
47
  { id: "gpt-5.3-codex", name: "GPT-5.3 Codex" },
53
48
  { id: "gpt-5.4", name: "GPT-5.4" },
54
49
  { id: "gpt-5.4-mini", name: "GPT-5.4 Mini" },
50
+ // Note: routing to Copilot's Anthropic-native /v1/messages shim (see
51
+ // executors/github.js) is decided by model-NAME pattern at request time, not by
52
+ // a static targetFormat field here — Copilot's live model catalog (see
53
+ // services/copilotModels.js) regularly exposes claude-* models this static list
54
+ // hasn't caught up with yet (e.g. claude-opus-4.8), and a static per-entry
55
+ // targetFormat would silently miss those while also double-translating requests
56
+ // for models that ARE listed here (chatCore.js would pre-translate to Claude
57
+ // shape, then the executor would translate again). Keep these as plain entries.
55
58
  { id: "claude-haiku-4.5", name: "Claude Haiku 4.5" },
56
59
  { id: "claude-opus-4.5", name: "Claude Opus 4.5" },
57
60
  { id: "claude-sonnet-4.5", name: "Claude Sonnet 4.5" },
@@ -1,13 +1,21 @@
1
1
  /**
2
2
  * Grok CLI / Grok Build (cli-chat-proxy.grok.com)
3
3
  *
4
- * Source of truth: HAR capture of official grok-shell/grok-pager 0.2.93
4
+ * Source of truth: wire capture of official @xai-official/grok 0.2.99
5
5
  * talking to https://cli-chat-proxy.grok.com (OpenAI Responses API).
6
6
  *
7
7
  * Distinct from:
8
- * - `xai` → api.x.ai (API key / Grok Build OAuth PKCE)
8
+ * - `xai` → api.x.ai (API key / xAI API OAuth PKCE)
9
9
  * - `grok-web` → grok.com web SSO cookie
10
10
  */
11
+ import {
12
+ GROK_CLI_BASE_URL,
13
+ GROK_CLI_CLIENT_IDENTIFIER,
14
+ GROK_CLI_MODEL,
15
+ GROK_CLI_USER_AGENT,
16
+ GROK_CLI_VERSION,
17
+ } from "../../config/grokCli.js";
18
+
11
19
  export default {
12
20
  id: "grok-cli",
13
21
  priority: 275,
@@ -29,32 +37,28 @@ export default {
29
37
  authModes: ["oauth"],
30
38
  hasOAuth: true,
31
39
  thinkingConfig: {
32
- options: ["low", "medium", "high"],
40
+ options: ["low", "medium", "high", "xhigh"],
33
41
  defaultMode: "high",
34
42
  },
35
43
  transport: {
36
- baseUrl: "https://cli-chat-proxy.grok.com/v1/responses",
44
+ baseUrl: `${GROK_CLI_BASE_URL}/responses`,
37
45
  format: "openai-responses",
38
46
  forceStream: true,
39
- modelsUrl: "https://cli-chat-proxy.grok.com/v1/models",
40
- userUrl: "https://cli-chat-proxy.grok.com/v1/user",
41
- billingUrl: "https://cli-chat-proxy.grok.com/v1/billing",
42
- clientVersion: "0.2.93",
43
- clientIdentifier: "grok-pager",
47
+ modelsUrl: `${GROK_CLI_BASE_URL}/models`,
48
+ userUrl: `${GROK_CLI_BASE_URL}/user`,
49
+ billingUrl: `${GROK_CLI_BASE_URL}/billing`,
50
+ clientVersion: GROK_CLI_VERSION,
51
+ clientIdentifier: GROK_CLI_CLIENT_IDENTIFIER,
44
52
  tokenAuth: "xai-grok-cli",
45
53
  headers: {
46
- "User-Agent": "grok-pager/0.2.93 grok-shell/0.2.93 (linux; x86_64)",
47
- "x-xai-token-auth": "xai-grok-cli",
48
- "x-grok-client-identifier": "grok-pager",
49
- "x-grok-client-version": "0.2.93",
50
- "x-authenticateresponse": "authenticate-response",
54
+ "User-Agent": GROK_CLI_USER_AGENT,
55
+ "x-grok-client-identifier": GROK_CLI_CLIENT_IDENTIFIER,
56
+ "x-grok-client-version": GROK_CLI_VERSION,
51
57
  },
52
- // Compaction threshold mirrored from CLI (x-compaction-at)
53
- compactionAt: 400000,
54
58
  // Quota tracker: official CLI polls billing?format=credits + user?include=subscription
55
59
  usage: {
56
- url: "https://cli-chat-proxy.grok.com/v1/billing?format=credits",
57
- userUrl: "https://cli-chat-proxy.grok.com/v1/user?include=subscription",
60
+ url: `${GROK_CLI_BASE_URL}/billing?format=credits`,
61
+ userUrl: `${GROK_CLI_BASE_URL}/user?include=subscription`,
58
62
  },
59
63
  retry: {
60
64
  429: { attempts: 2, delayMs: 2000 },
@@ -63,6 +67,12 @@ export default {
63
67
  },
64
68
  },
65
69
  models: [
70
+ {
71
+ id: GROK_CLI_MODEL,
72
+ name: "Grok Build",
73
+ contextLength: 500000,
74
+ maxOutputTokens: 64000,
75
+ },
66
76
  { id: "grok-4.5", name: "Grok 4.5" },
67
77
  { id: "grok-4.5-high", name: "Grok 4.5 (High)", upstreamModelId: "grok-4.5" },
68
78
  { id: "grok-4.5-medium", name: "Grok 4.5 (Medium)", upstreamModelId: "grok-4.5" },
@@ -26,83 +26,81 @@ import p23 from "./coqui.js";
26
26
  import p24 from "./cursor.js";
27
27
  import p25 from "./deepgram.js";
28
28
  import p26 from "./deepseek.js";
29
- import p27 from "./digitalocean.js";
30
- import p28 from "./edge-tts.js";
31
- import p29 from "./elevenlabs.js";
32
- import p30 from "./exa.js";
33
- import p31 from "./fal-ai.js";
34
- import p32 from "./featherless.js";
35
- import p33 from "./firecrawl.js";
36
- import p34 from "./fireworks.js";
37
- import p35 from "./gemini-cli.js";
38
- import p36 from "./gemini.js";
39
- import p37 from "./github.js";
40
- import p38 from "./gitlab.js";
41
- import p39 from "./glm-cn.js";
42
- import p40 from "./glm.js";
43
- import p41 from "./google-pse.js";
44
- import p42 from "./google-tts.js";
45
- import p43 from "./grok-cli.js";
46
- import p44 from "./grok-web.js";
47
- import p45 from "./groq.js";
48
- import p46 from "./huggingface.js";
49
- import p47 from "./hyperbolic.js";
50
- import p48 from "./ibm-bob.js";
51
- import p49 from "./iflow.js";
52
- import p50 from "./inworld.js";
53
- import p51 from "./jina-ai.js";
54
- import p52 from "./jina-reader.js";
55
- import p53 from "./kilocode.js";
56
- import p54 from "./kimchi.js";
57
- import p55 from "./kimi-coding.js";
58
- import p56 from "./kimi.js";
59
- import p57 from "./kiro.js";
60
- import p58 from "./linkup.js";
61
- import p59 from "./local-device.js";
62
- import p60 from "./mimo-free.js";
63
- import p61 from "./minimax-cn.js";
64
- import p62 from "./minimax.js";
65
- import p63 from "./mistral.js";
66
- import p64 from "./mmf.js";
67
- import p65 from "./nanobanana.js";
68
- import p66 from "./nebius.js";
69
- import p67 from "./nvidia.js";
70
- import p68 from "./ollama-local.js";
71
- import p69 from "./ollama.js";
72
- import p70 from "./openai.js";
73
- import p71 from "./opencode-go.js";
74
- import p72 from "./opencode.js";
75
- import p73 from "./openrouter.js";
29
+ import p27 from "./edge-tts.js";
30
+ import p28 from "./elevenlabs.js";
31
+ import p29 from "./exa.js";
32
+ import p30 from "./fal-ai.js";
33
+ import p31 from "./featherless.js";
34
+ import p32 from "./firecrawl.js";
35
+ import p33 from "./fireworks.js";
36
+ import p34 from "./gemini-cli.js";
37
+ import p35 from "./gemini.js";
38
+ import p36 from "./github.js";
39
+ import p37 from "./gitlab.js";
40
+ import p38 from "./glm-cn.js";
41
+ import p39 from "./glm.js";
42
+ import p40 from "./google-pse.js";
43
+ import p41 from "./google-tts.js";
44
+ import p42 from "./grok-cli.js";
45
+ import p43 from "./grok-web.js";
46
+ import p44 from "./groq.js";
47
+ import p45 from "./huggingface.js";
48
+ import p46 from "./hyperbolic.js";
49
+ import p47 from "./iflow.js";
50
+ import p48 from "./inworld.js";
51
+ import p49 from "./jina-ai.js";
52
+ import p50 from "./jina-reader.js";
53
+ import p51 from "./kilocode.js";
54
+ import p52 from "./kimchi.js";
55
+ import p53 from "./kimi-coding.js";
56
+ import p54 from "./kimi.js";
57
+ import p55 from "./kiro.js";
58
+ import p56 from "./linkup.js";
59
+ import p57 from "./local-device.js";
60
+ import p58 from "./mimo-free.js";
61
+ import p59 from "./minimax-cn.js";
62
+ import p60 from "./minimax.js";
63
+ import p61 from "./mistral.js";
64
+ import p62 from "./mmf.js";
65
+ import p63 from "./nanobanana.js";
66
+ import p64 from "./nebius.js";
67
+ import p65 from "./nvidia.js";
68
+ import p66 from "./ollama-local.js";
69
+ import p67 from "./ollama.js";
70
+ import p68 from "./openai.js";
71
+ import p69 from "./opencode-go.js";
72
+ import p70 from "./opencode.js";
73
+ import p71 from "./openrouter.js";
74
+ import p72 from "./perplexity-web.js";
75
+ import p73 from "./perplexity.js";
76
76
  import p74 from "./perplexity-agent.js";
77
- import p75 from "./perplexity-web.js";
78
- import p76 from "./perplexity.js";
79
- import p77 from "./playht.js";
80
- import p78 from "./qoder.js";
81
- import p79 from "./qwen.js";
82
- import p80 from "./recraft.js";
83
- import p81 from "./runwayml.js";
84
- import p82 from "./sdwebui.js";
85
- import p83 from "./searchapi.js";
86
- import p84 from "./searxng.js";
87
- import p85 from "./serper.js";
88
- import p86 from "./siliconflow.js";
89
- import p87 from "./stability-ai.js";
90
- import p88 from "./tavily.js";
91
- import p89 from "./together.js";
92
- import p90 from "./topaz.js";
93
- import p91 from "./tortoise.js";
94
- import p92 from "./venice.js";
95
- import p93 from "./vercel-ai-gateway.js";
96
- import p94 from "./vertex-partner.js";
97
- import p95 from "./vertex.js";
98
- import p96 from "./volcengine-ark.js";
99
- import p97 from "./voyage-ai.js";
100
- import p98 from "./xai.js";
101
- import p99 from "./xiaomi-mimo.js";
102
- import p100 from "./xiaomi-tokenplan.js";
103
- import p101 from "./youcom.js";
77
+ import p75 from "./playht.js";
78
+ import p76 from "./qoder.js";
79
+ import p77 from "./qwen.js";
80
+ import p78 from "./recraft.js";
81
+ import p79 from "./runwayml.js";
82
+ import p80 from "./sdwebui.js";
83
+ import p81 from "./searchapi.js";
84
+ import p82 from "./searxng.js";
85
+ import p83 from "./serper.js";
86
+ import p84 from "./siliconflow.js";
87
+ import p85 from "./stability-ai.js";
88
+ import p86 from "./tavily.js";
89
+ import p87 from "./together.js";
90
+ import p88 from "./topaz.js";
91
+ import p89 from "./tortoise.js";
92
+ import p90 from "./venice.js";
93
+ import p91 from "./vercel-ai-gateway.js";
94
+ import p92 from "./vertex-partner.js";
95
+ import p93 from "./vertex.js";
96
+ import p94 from "./volcengine-ark.js";
97
+ import p95 from "./voyage-ai.js";
98
+ import p96 from "./xai.js";
99
+ import p97 from "./xiaomi-mimo.js";
100
+ import p98 from "./xiaomi-tokenplan.js";
101
+ import p99 from "./youcom.js";
104
102
 
105
- export const REGISTRY = [
103
+ export default [
106
104
  p0,
107
105
  p1,
108
106
  p2,
@@ -202,9 +200,5 @@ export const REGISTRY = [
202
200
  p96,
203
201
  p97,
204
202
  p98,
205
- p99,
206
- p100,
207
- p101
203
+ p99
208
204
  ];
209
-
210
- export default REGISTRY;
@@ -65,18 +65,30 @@ export default {
65
65
  { id: "qwen3-coder-next", name: "Qwen3 Coder Next", strip: ["image","audio"] },
66
66
  { id: "glm-5", name: "GLM 5" },
67
67
  { id: "MiniMax-M2.5", name: "MiniMax M2.5" },
68
+ { id: "gpt-5.6-sol", name: "GPT 5.6 Sol", contextLength: 272000, rateMultiplier: 2.4, upstreamModelId: "gpt-5.6-sol", description: "Experimental preview of OpenAI GPT 5.6 Sol with 272k context window" },
69
+ { id: "gpt-5.6-terra", name: "GPT 5.6 Terra", contextLength: 272000, rateMultiplier: 1.2, upstreamModelId: "gpt-5.6-terra", description: "Experimental preview of OpenAI GPT 5.6 Terra with 272k context window" },
70
+ { id: "gpt-5.6-luna", name: "GPT 5.6 Luna", contextLength: 272000, rateMultiplier: 0.6, upstreamModelId: "gpt-5.6-luna", description: "Experimental preview of OpenAI GPT 5.6 Luna with 272k context window" },
68
71
  // Thinking variants
69
72
  { id: "claude-sonnet-5-thinking", name: "Claude Sonnet 5 (Thinking)" },
70
73
  { id: "claude-sonnet-4.5-thinking", name: "Claude Sonnet 4.5 (Thinking)" },
71
74
  { id: "claude-haiku-4.5-thinking", name: "Claude Haiku 4.5 (Thinking)" },
75
+ { id: "gpt-5.6-sol-thinking", name: "GPT 5.6 Sol (Thinking)", contextLength: 272000, rateMultiplier: 2.4, upstreamModelId: "gpt-5.6-sol", description: "Experimental preview of OpenAI GPT 5.6 Sol with 272k context window" },
76
+ { id: "gpt-5.6-terra-thinking", name: "GPT 5.6 Terra (Thinking)", contextLength: 272000, rateMultiplier: 1.2, upstreamModelId: "gpt-5.6-terra", description: "Experimental preview of OpenAI GPT 5.6 Terra with 272k context window" },
77
+ { id: "gpt-5.6-luna-thinking", name: "GPT 5.6 Luna (Thinking)", contextLength: 272000, rateMultiplier: 0.6, upstreamModelId: "gpt-5.6-luna", description: "Experimental preview of OpenAI GPT 5.6 Luna with 272k context window" },
72
78
  // Agentic variants
73
79
  { id: "claude-sonnet-5-agentic", name: "Claude Sonnet 5 (Agentic)" },
74
80
  { id: "claude-sonnet-4.5-agentic", name: "Claude Sonnet 4.5 (Agentic)" },
75
81
  { id: "claude-haiku-4.5-agentic", name: "Claude Haiku 4.5 (Agentic)" },
82
+ { id: "gpt-5.6-sol-agentic", name: "GPT 5.6 Sol (Agentic)", contextLength: 272000, rateMultiplier: 2.4, upstreamModelId: "gpt-5.6-sol", description: "Experimental preview of OpenAI GPT 5.6 Sol with 272k context window" },
83
+ { id: "gpt-5.6-terra-agentic", name: "GPT 5.6 Terra (Agentic)", contextLength: 272000, rateMultiplier: 1.2, upstreamModelId: "gpt-5.6-terra", description: "Experimental preview of OpenAI GPT 5.6 Terra with 272k context window" },
84
+ { id: "gpt-5.6-luna-agentic", name: "GPT 5.6 Luna (Agentic)", contextLength: 272000, rateMultiplier: 0.6, upstreamModelId: "gpt-5.6-luna", description: "Experimental preview of OpenAI GPT 5.6 Luna with 272k context window" },
76
85
  // Thinking + Agentic variants
77
86
  { id: "claude-sonnet-5-thinking-agentic", name: "Claude Sonnet 5 (Thinking + Agentic)" },
78
87
  { id: "claude-sonnet-4.5-thinking-agentic", name: "Claude Sonnet 4.5 (Thinking + Agentic)" },
79
88
  { id: "claude-haiku-4.5-thinking-agentic", name: "Claude Haiku 4.5 (Thinking + Agentic)" },
89
+ { id: "gpt-5.6-sol-thinking-agentic", name: "GPT 5.6 Sol (Thinking + Agentic)", contextLength: 272000, rateMultiplier: 2.4, upstreamModelId: "gpt-5.6-sol", description: "Experimental preview of OpenAI GPT 5.6 Sol with 272k context window" },
90
+ { id: "gpt-5.6-terra-thinking-agentic", name: "GPT 5.6 Terra (Thinking + Agentic)", contextLength: 272000, rateMultiplier: 1.2, upstreamModelId: "gpt-5.6-terra", description: "Experimental preview of OpenAI GPT 5.6 Terra with 272k context window" },
91
+ { id: "gpt-5.6-luna-thinking-agentic", name: "GPT 5.6 Luna (Thinking + Agentic)", contextLength: 272000, rateMultiplier: 0.6, upstreamModelId: "gpt-5.6-luna", description: "Experimental preview of OpenAI GPT 5.6 Luna with 272k context window" },
80
92
  ],
81
93
  oauth: {
82
94
  ssoOidcEndpoint: "https://oidc.us-east-1.amazonaws.com",
@@ -24,9 +24,6 @@ export default {
24
24
  { id: "mistral-large-latest", name: "Mistral Large 3" },
25
25
  { id: "codestral-latest", name: "Codestral" },
26
26
  { id: "mistral-medium-latest", name: "Mistral Medium 3" },
27
- { id: "mistral-medium-3-5", name: "Mistral Medium 3.5" },
28
- { id: "mistral-small-latest", name: "Mistral Small Latest" },
29
- { id: "devstral-latest", name: "Devstral Latest" },
30
27
  { id: "mistral-embed", name: "Mistral Embed", kind: "embedding" },
31
28
  ],
32
29
  serviceKinds: ["llm","imageToText","embedding"],
@@ -32,9 +32,6 @@ export default {
32
32
  { id: "gpt-5.4-mini", name: "GPT-5.4 Mini" },
33
33
  { id: "gpt-5.4-nano", name: "GPT-5.4 Nano" },
34
34
  { id: "gpt-5.2", name: "GPT-5.2" },
35
- { id: "gpt-5.4-pro", name: "GPT 5.4 Pro" },
36
- { id: "gpt-5.5", name: "GPT 5.5" },
37
- { id: "gpt-5.5-pro", name: "GPT 5.5 Pro" },
38
35
  { id: "gpt-5.1", name: "GPT-5.1" },
39
36
  { id: "gpt-5", name: "GPT-5" },
40
37
  { id: "gpt-5-mini", name: "GPT-5 Mini" },
@@ -24,8 +24,6 @@ export default {
24
24
  },
25
25
  models: [
26
26
  { id: "sonar-pro", name: "Sonar Pro" },
27
- { id: "sonar-deep-research", name: "Sonar Deep Research" },
28
- { id: "sonar-reasoning-pro", name: "Sonar Reasoning Pro" },
29
27
  { id: "sonar", name: "Sonar" },
30
28
  ],
31
29
  serviceKinds: ["llm","webSearch"],
@@ -28,15 +28,17 @@ export default {
28
28
  },
29
29
  models: [
30
30
  { id: "grok-4", name: "Grok 4" },
31
- { id: "grok-4.3", name: "Grok 4.3" },
32
- { id: "grok-build-0.1", name: "Grok Build 0.1" },
33
31
  { id: "grok-4-fast-reasoning", name: "Grok 4 Fast Reasoning" },
34
32
  { id: "grok-code-fast-1", name: "Grok Code Fast" },
35
33
  { id: "grok-3", name: "Grok 3" },
36
34
  { id: "grok-2-image-1212", name: "Grok 2 Image", params: ["n","response_format"], kind: "image" },
35
+ { id: "grok-imagine-video", name: "Grok Imagine Video", params: ["duration","aspect_ratio","resolution"], kind: "video" },
37
36
  ],
38
- serviceKinds: ["llm","imageToText","webSearch","image"],
37
+ serviceKinds: ["llm","imageToText","webSearch","image","video"],
39
38
  imageConfig: { baseUrl: "https://api.x.ai/v1/images/generations", bodyFields: ["model","prompt","n","response_format"] },
39
+ // Async video jobs (POST returns { request_id }, GET polls until done/failed).
40
+ // Docs: https://docs.x.ai/developers/rest-api-reference/inference/videos
41
+ videoConfig: { baseUrl: "https://api.x.ai/v1/videos" },
40
42
  searchViaChat: {
41
43
  defaultModel: "grok-4.20-reasoning",
42
44
  endpoint: "https://api.x.ai/v1/responses",
@@ -1,9 +1,10 @@
1
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
2
+ // Detection order: git-log → git-diff → git-status → build-output → grep → find → tree → ls → search-list
3
+ // → read-numbered → dedup-log → smart-truncate → null
4
4
  import { DETECT_WINDOW, READ_NUMBERED_MIN_HIT_RATIO, SMART_TRUNCATE_MIN_LINES } from "./constants.js";
5
5
  import { gitDiff } from "./filters/gitDiff.js";
6
6
  import { gitStatus } from "./filters/gitStatus.js";
7
+ import { gitLog } from "./filters/gitLog.js";
7
8
  import { buildOutput } from "./filters/buildOutput.js";
8
9
  import { grep } from "./filters/grep.js";
9
10
  import { find } from "./filters/find.js";
@@ -17,6 +18,7 @@ import { searchList, SEARCH_LIST_HEADER_RE } from "./filters/searchList.js";
17
18
  const RE_GIT_DIFF = /^diff --git /m;
18
19
  const RE_GIT_DIFF_HUNK = /^@@ /m;
19
20
  const RE_GIT_STATUS = /^On branch |^nothing to commit|^Changes (not |to be )|^Untracked files:/m;
21
+ const RE_GIT_LOG = /^[*|/\\ ]*commit [0-9a-f]{7,40}$/m;
20
22
  const RE_PORCELAIN = /^[ MADRCU?!][ MADRCU?!] \S/m;
21
23
  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
24
  const RE_TREE_GLYPH = /[├└]──|│ /;
@@ -27,6 +29,7 @@ export function autoDetectFilter(text) {
27
29
  // Rust: floor_char_boundary to avoid UTF-8 split — JS .slice() by char is safe
28
30
  const head = text.length > DETECT_WINDOW ? text.slice(0, DETECT_WINDOW) : text;
29
31
 
32
+ if (RE_GIT_LOG.test(head)) return gitLog;
30
33
  if (RE_GIT_DIFF.test(head) || RE_GIT_DIFF_HUNK.test(head)) return gitDiff;
31
34
  if (RE_GIT_STATUS.test(head)) return gitStatus;
32
35
 
@@ -81,6 +84,11 @@ function isGrepLine(line) {
81
84
  function isPathLike(line) {
82
85
  const t = line.trim();
83
86
  if (t.length === 0) return false;
87
+ // A drive-letter prefix (e.g. "C:\Users\me" or "C:/Users/me") marks a
88
+ // Windows absolute path, so treat the whole line as path-like. Trailing
89
+ // colons (e.g. "C:\path\file.js:10") are tolerated, matching grep-style
90
+ // suffixes on Windows dumps.
91
+ if (/^[A-Za-z]:[\\/]/.test(t)) return true;
84
92
  if (t.includes(":")) return false;
85
93
  return t.startsWith(".") || t.startsWith("/") || t.includes("/");
86
94
  }