@fudrouter/fsrouter 0.6.63 → 0.6.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/rewriteSseImports.js +5 -1
- package/dist/open-sse/executors/cliproxyapi.js +2 -2
- package/dist/open-sse/services/rateLimitManager.js +4 -4
- package/package.json +1 -1
- package/open-sse/AGENTS.md +0 -39
- package/open-sse/config/anthropicHeaders.js +0 -87
- package/open-sse/config/appConstants.js +0 -238
- package/open-sse/config/audioRegistry.js +0 -506
- package/open-sse/config/cliFingerprints.js +0 -304
- package/open-sse/config/codexInstructions.js +0 -119
- package/open-sse/config/codexQuotaScopes.js +0 -42
- package/open-sse/config/constants.js +0 -4
- package/open-sse/config/contextEditing.js +0 -68
- package/open-sse/config/credentialLoader.js +0 -83
- package/open-sse/config/defaultThinkingSignature.js +0 -12
- package/open-sse/config/embeddingRegistry.js +0 -264
- package/open-sse/config/errorConfig.js +0 -96
- package/open-sse/config/freeModelCatalog.data.js +0 -121
- package/open-sse/config/freeModelCatalog.js +0 -90
- package/open-sse/config/freeTierCatalog.js +0 -81
- package/open-sse/config/googleTtsLanguages.js +0 -62
- package/open-sse/config/imageParamDefs.js +0 -360
- package/open-sse/config/imageRegistry.js +0 -493
- package/open-sse/config/kiroConstants.js +0 -268
- package/open-sse/config/mediaConfig.js +0 -27
- package/open-sse/config/mediaServiceKinds.js +0 -71
- package/open-sse/config/models.js +0 -13
- package/open-sse/config/moderationRegistry.js +0 -71
- package/open-sse/config/musicRegistry.js +0 -99
- package/open-sse/config/ocrRegistry.js +0 -61
- package/open-sse/config/ollamaModels.js +0 -19
- package/open-sse/config/providerErrorRules.js +0 -114
- package/open-sse/config/providerFieldStrips.js +0 -35
- package/open-sse/config/providerHeaderProfiles.js +0 -191
- package/open-sse/config/providerModels.js +0 -106
- package/open-sse/config/providerRegistry.js +0 -16
- package/open-sse/config/providers.js +0 -19
- package/open-sse/config/registryUtils.js +0 -106
- package/open-sse/config/rerankRegistry.js +0 -177
- package/open-sse/config/runtimeConfig.js +0 -96
- package/open-sse/config/runway.js +0 -39
- package/open-sse/config/searchRegistry.js +0 -153
- package/open-sse/config/toolCloaking.js +0 -199
- package/open-sse/config/ttsModels.js +0 -129
- package/open-sse/config/videoRegistry.js +0 -207
- package/open-sse/executors/adapta-web.js +0 -435
- package/open-sse/executors/antigravity.js +0 -534
- package/open-sse/executors/antigravityUpstreamError.js +0 -13
- package/open-sse/executors/auggie.js +0 -437
- package/open-sse/executors/azure-openai.js +0 -32
- package/open-sse/executors/azure.js +0 -57
- package/open-sse/executors/base.js +0 -181
- package/open-sse/executors/bedrock.js +0 -633
- package/open-sse/executors/blackbox-web.js +0 -578
- package/open-sse/executors/chatgpt-web.js +0 -2042
- package/open-sse/executors/chipotle.js +0 -357
- package/open-sse/executors/claude-web-with-auto-refresh.js +0 -73
- package/open-sse/executors/claude-web.js +0 -586
- package/open-sse/executors/cliproxyapi.js +0 -296
- package/open-sse/executors/cloudflare-ai.js +0 -46
- package/open-sse/executors/codebuddy-cn.js +0 -40
- package/open-sse/executors/codex.js +0 -1324
- package/open-sse/executors/commandCode.js +0 -558
- package/open-sse/executors/commandcode.js +0 -88
- package/open-sse/executors/copilot-m365-connection.js +0 -176
- package/open-sse/executors/copilot-m365-frames.js +0 -192
- package/open-sse/executors/copilot-m365-web.js +0 -299
- package/open-sse/executors/copilot-web.js +0 -580
- package/open-sse/executors/cursor.js +0 -795
- package/open-sse/executors/deepseek-web-with-auto-refresh.js +0 -150
- package/open-sse/executors/deepseek-web.js +0 -875
- package/open-sse/executors/default.js +0 -430
- package/open-sse/executors/devin-cli.js +0 -351
- package/open-sse/executors/doubao-web.js +0 -550
- package/open-sse/executors/duckduckgo-web.js +0 -629
- package/open-sse/executors/forceResponsesUpstream.js +0 -33
- package/open-sse/executors/gemini-business.js +0 -320
- package/open-sse/executors/gemini-cli.js +0 -89
- package/open-sse/executors/gemini-web.js +0 -297
- package/open-sse/executors/github.js +0 -379
- package/open-sse/executors/gitlab.js +0 -569
- package/open-sse/executors/glm.js +0 -361
- package/open-sse/executors/grok-cli.js +0 -119
- package/open-sse/executors/grok-web.js +0 -345
- package/open-sse/executors/huggingchat.js +0 -467
- package/open-sse/executors/iflow.js +0 -108
- package/open-sse/executors/index.js +0 -78
- package/open-sse/executors/inner-ai.js +0 -527
- package/open-sse/executors/kimchi.js +0 -123
- package/open-sse/executors/kimi-web.js +0 -325
- package/open-sse/executors/kimi.js +0 -97
- package/open-sse/executors/kiro.js +0 -503
- package/open-sse/executors/kiroThinking.js +0 -44
- package/open-sse/executors/lmarena.js +0 -395
- package/open-sse/executors/mimo-free.js +0 -167
- package/open-sse/executors/mimocode.js +0 -392
- package/open-sse/executors/ninerouter.js +0 -155
- package/open-sse/executors/nlpcloud.js +0 -438
- package/open-sse/executors/ollama-local.js +0 -14
- package/open-sse/executors/opencode-go.js +0 -41
- package/open-sse/executors/opencode.js +0 -32
- package/open-sse/executors/perplexity-web.js +0 -581
- package/open-sse/executors/poe-web.js +0 -133
- package/open-sse/executors/pollinations.js +0 -95
- package/open-sse/executors/puter.js +0 -31
- package/open-sse/executors/qoder.js +0 -448
- package/open-sse/executors/qwen-web.js +0 -372
- package/open-sse/executors/qwen.js +0 -129
- package/open-sse/executors/t3-chat-web.js +0 -417
- package/open-sse/executors/theoldllm.js +0 -290
- package/open-sse/executors/trae.js +0 -418
- package/open-sse/executors/v0-vercel-web.js +0 -141
- package/open-sse/executors/venice-web.js +0 -142
- package/open-sse/executors/vertex.js +0 -131
- package/open-sse/executors/vertexMedia.js +0 -236
- package/open-sse/executors/windsurf.js +0 -560
- package/open-sse/executors/xai.js +0 -46
- package/open-sse/executors/xiaomi-tokenplan.js +0 -19
- package/open-sse/executors/yuanbao-web.js +0 -385
- package/open-sse/executors/zed-hosted.js +0 -281
- package/open-sse/executors/zenmux-free.js +0 -247
- package/open-sse/handlers/audioSpeech.js +0 -759
- package/open-sse/handlers/audioTranscription.js +0 -395
- package/open-sse/handlers/audioTranslation.js +0 -181
- package/open-sse/handlers/chatCore/nonStreamingHandler.js +0 -300
- package/open-sse/handlers/chatCore/requestDetail.js +0 -102
- package/open-sse/handlers/chatCore/sseToJsonHandler.js +0 -231
- package/open-sse/handlers/chatCore/streamingHandler.js +0 -95
- package/open-sse/handlers/chatCore.js +0 -404
- package/open-sse/handlers/embeddingProviders/_base.js +0 -4
- package/open-sse/handlers/embeddingProviders/gemini.js +0 -54
- package/open-sse/handlers/embeddingProviders/index.js +0 -23
- package/open-sse/handlers/embeddingProviders/openai.js +0 -39
- package/open-sse/handlers/embeddingProviders/openaiCompatNode.js +0 -13
- package/open-sse/handlers/embeddingsCore.js +0 -126
- package/open-sse/handlers/fetch/index.js +0 -237
- package/open-sse/handlers/imageGenerationCore.js +0 -230
- package/open-sse/handlers/imageProviders/_base.js +0 -31
- package/open-sse/handlers/imageProviders/antigravity.js +0 -73
- package/open-sse/handlers/imageProviders/blackForestLabs.js +0 -63
- package/open-sse/handlers/imageProviders/cloudflareAi.js +0 -207
- package/open-sse/handlers/imageProviders/codex.js +0 -217
- package/open-sse/handlers/imageProviders/comfyui.js +0 -25
- package/open-sse/handlers/imageProviders/falAi.js +0 -62
- package/open-sse/handlers/imageProviders/gemini.js +0 -40
- package/open-sse/handlers/imageProviders/huggingface.js +0 -38
- package/open-sse/handlers/imageProviders/index.js +0 -44
- package/open-sse/handlers/imageProviders/leonardo.js +0 -435
- package/open-sse/handlers/imageProviders/nanobanana.js +0 -79
- package/open-sse/handlers/imageProviders/openai.js +0 -61
- package/open-sse/handlers/imageProviders/runwayml.js +0 -72
- package/open-sse/handlers/imageProviders/sdwebui.js +0 -36
- package/open-sse/handlers/imageProviders/stabilityAi.js +0 -59
- package/open-sse/handlers/imageProviders/weavy.js +0 -222
- package/open-sse/handlers/moderations.js +0 -92
- package/open-sse/handlers/ocr.js +0 -89
- package/open-sse/handlers/rerank.js +0 -223
- package/open-sse/handlers/responseSanitizer/reasoning.js +0 -144
- package/open-sse/handlers/responsesHandler.js +0 -99
- package/open-sse/handlers/search/callers.js +0 -371
- package/open-sse/handlers/search/chatSearch.js +0 -409
- package/open-sse/handlers/search/index.js +0 -201
- package/open-sse/handlers/search/normalizers.js +0 -223
- package/open-sse/handlers/search.js +0 -1056
- package/open-sse/handlers/sseParser.js +0 -469
- package/open-sse/handlers/sttCore.js +0 -193
- package/open-sse/handlers/ttsCore.js +0 -74
- package/open-sse/handlers/ttsProviders/_base.js +0 -39
- package/open-sse/handlers/ttsProviders/edgeTts.js +0 -89
- package/open-sse/handlers/ttsProviders/elevenlabs.js +0 -48
- package/open-sse/handlers/ttsProviders/gemini.js +0 -117
- package/open-sse/handlers/ttsProviders/genericFormats.js +0 -169
- package/open-sse/handlers/ttsProviders/googleTts.js +0 -54
- package/open-sse/handlers/ttsProviders/index.js +0 -50
- package/open-sse/handlers/ttsProviders/localDevice.js +0 -87
- package/open-sse/handlers/ttsProviders/minimax.js +0 -59
- package/open-sse/handlers/ttsProviders/openai.js +0 -30
- package/open-sse/handlers/ttsProviders/openrouter.js +0 -70
- package/open-sse/handlers/usageExtractor.js +0 -93
- package/open-sse/handlers/videoGenerationCore.js +0 -119
- package/open-sse/handlers/videoProviders/index.js +0 -22
- package/open-sse/handlers/videoProviders/leonardo.js +0 -511
- package/open-sse/handlers/videoProviders/weavy.js +0 -198
- package/open-sse/handlers/webFetch.js +0 -200
- package/open-sse/index.js +0 -79
- package/open-sse/mcp-server/audit.js +0 -283
- package/open-sse/mcp-server/catalog.js +0 -184
- package/open-sse/mcp-server/descriptionCompressor.js +0 -175
- package/open-sse/mcp-server/httpAuthContext.js +0 -32
- package/open-sse/mcp-server/httpTransport.js +0 -229
- package/open-sse/mcp-server/index.js +0 -33
- package/open-sse/mcp-server/mcpCallerIdentity.js +0 -21
- package/open-sse/mcp-server/runtimeHeartbeat.js +0 -110
- package/open-sse/mcp-server/schemas/a2a.js +0 -153
- package/open-sse/mcp-server/schemas/audit.js +0 -17
- package/open-sse/mcp-server/schemas/index.js +0 -166
- package/open-sse/mcp-server/schemas/pickFastestModel.js +0 -90
- package/open-sse/mcp-server/schemas/toolDefinition.js +0 -0
- package/open-sse/mcp-server/schemas/toolSearch.js +0 -32
- package/open-sse/mcp-server/schemas/tools.js +0 -1219
- package/open-sse/mcp-server/scopeEnforcement.js +0 -80
- package/open-sse/mcp-server/server.js +0 -1168
- package/open-sse/mcp-server/toolCardinality.js +0 -78
- package/open-sse/mcp-server/toolSearch/catalog.js +0 -66
- package/open-sse/mcp-server/toolSearch/handler.js +0 -20
- package/open-sse/mcp-server/toolSearch/index.js +0 -10
- package/open-sse/mcp-server/toolSearch/register.js +0 -21
- package/open-sse/mcp-server/toolSearch/search.js +0 -55
- package/open-sse/mcp-server/toolSearch/signature.js +0 -67
- package/open-sse/mcp-server/tools/advancedTools.js +0 -893
- package/open-sse/mcp-server/tools/agentSkillTools.js +0 -69
- package/open-sse/mcp-server/tools/compressionTools.js +0 -309
- package/open-sse/mcp-server/tools/gamificationTools.js +0 -134
- package/open-sse/mcp-server/tools/githubSkillTools.js +0 -102
- package/open-sse/mcp-server/tools/memoryTools.js +0 -118
- package/open-sse/mcp-server/tools/notionTools.js +0 -101
- package/open-sse/mcp-server/tools/obsidianTools.js +0 -307
- package/open-sse/mcp-server/tools/pickFastestModel.js +0 -223
- package/open-sse/mcp-server/tools/pluginTools.js +0 -181
- package/open-sse/mcp-server/tools/poolTools.js +0 -139
- package/open-sse/mcp-server/tools/skillTools.js +0 -113
- package/open-sse/package.json +0 -10
- package/open-sse/providers/REGISTRY_TEMPLATE.js +0 -98
- package/open-sse/providers/capabilities.js +0 -293
- package/open-sse/providers/index.js +0 -51
- package/open-sse/providers/models/helpers.js +0 -20
- package/open-sse/providers/models/namePatterns.js +0 -33
- package/open-sse/providers/models/schema.js +0 -40
- package/open-sse/providers/pricing.js +0 -308
- package/open-sse/providers/registry/alicode-intl.js +0 -30
- package/open-sse/providers/registry/alicode.js +0 -31
- package/open-sse/providers/registry/anthropic.js +0 -37
- package/open-sse/providers/registry/antigravity.js +0 -81
- package/open-sse/providers/registry/assemblyai.js +0 -38
- package/open-sse/providers/registry/aws-polly.js +0 -45
- package/open-sse/providers/registry/azure.js +0 -21
- package/open-sse/providers/registry/black-forest-labs.js +0 -32
- package/open-sse/providers/registry/blackbox.js +0 -41
- package/open-sse/providers/registry/brave-search.js +0 -35
- package/open-sse/providers/registry/byteplus.js +0 -35
- package/open-sse/providers/registry/cartesia.js +0 -36
- package/open-sse/providers/registry/cerebras.js +0 -31
- package/open-sse/providers/registry/chutes.js +0 -24
- package/open-sse/providers/registry/claude.js +0 -87
- package/open-sse/providers/registry/cline.js +0 -51
- package/open-sse/providers/registry/clinepass.js +0 -57
- package/open-sse/providers/registry/cloudflare-ai.js +0 -55
- package/open-sse/providers/registry/codebuddy-cn.js +0 -77
- package/open-sse/providers/registry/codex.js +0 -100
- package/open-sse/providers/registry/cohere.js +0 -27
- package/open-sse/providers/registry/comfyui.js +0 -20
- package/open-sse/providers/registry/commandcode.js +0 -43
- package/open-sse/providers/registry/coqui.js +0 -30
- package/open-sse/providers/registry/cursor.js +0 -58
- package/open-sse/providers/registry/deepgram.js +0 -33
- package/open-sse/providers/registry/deepseek.js +0 -51
- package/open-sse/providers/registry/digitalocean.js +0 -92
- package/open-sse/providers/registry/edge-tts.js +0 -24
- package/open-sse/providers/registry/elevenlabs.js +0 -35
- package/open-sse/providers/registry/exa.js +0 -50
- package/open-sse/providers/registry/fal-ai.js +0 -34
- package/open-sse/providers/registry/featherless.js +0 -34
- package/open-sse/providers/registry/firecrawl.js +0 -34
- package/open-sse/providers/registry/fireworks.js +0 -29
- package/open-sse/providers/registry/gemini-cli.js +0 -58
- package/open-sse/providers/registry/gemini.js +0 -83
- package/open-sse/providers/registry/github.js +0 -88
- package/open-sse/providers/registry/gitlab.js +0 -32
- package/open-sse/providers/registry/glm-cn.js +0 -35
- package/open-sse/providers/registry/glm.js +0 -58
- package/open-sse/providers/registry/google-pse.js +0 -35
- package/open-sse/providers/registry/google-tts.js +0 -24
- package/open-sse/providers/registry/grok-cli.js +0 -86
- package/open-sse/providers/registry/grok-web.js +0 -39
- package/open-sse/providers/registry/groq.js +0 -37
- package/open-sse/providers/registry/huggingface.js +0 -34
- package/open-sse/providers/registry/hyperbolic.js +0 -35
- package/open-sse/providers/registry/ibm-bob.js +0 -27
- package/open-sse/providers/registry/iflow.js +0 -52
- package/open-sse/providers/registry/index.js +0 -210
- package/open-sse/providers/registry/inworld.js +0 -36
- package/open-sse/providers/registry/jina-ai.js +0 -42
- package/open-sse/providers/registry/jina-reader.js +0 -34
- package/open-sse/providers/registry/kilocode.js +0 -51
- package/open-sse/providers/registry/kimchi.js +0 -49
- package/open-sse/providers/registry/kimi-coding.js +0 -65
- package/open-sse/providers/registry/kimi.js +0 -56
- package/open-sse/providers/registry/kiro.js +0 -115
- package/open-sse/providers/registry/linkup.js +0 -34
- package/open-sse/providers/registry/local-device.js +0 -24
- package/open-sse/providers/registry/mimo-free.js +0 -24
- package/open-sse/providers/registry/minimax-cn.js +0 -76
- package/open-sse/providers/registry/minimax.js +0 -83
- package/open-sse/providers/registry/mistral.js +0 -34
- package/open-sse/providers/registry/mmf.js +0 -19
- package/open-sse/providers/registry/nanobanana.js +0 -35
- package/open-sse/providers/registry/nebius.js +0 -27
- package/open-sse/providers/registry/nvidia.js +0 -43
- package/open-sse/providers/registry/ollama-local.js +0 -19
- package/open-sse/providers/registry/ollama.js +0 -36
- package/open-sse/providers/registry/openai.js +0 -84
- package/open-sse/providers/registry/opencode-go.js +0 -41
- package/open-sse/providers/registry/opencode.js +0 -25
- package/open-sse/providers/registry/openrouter.js +0 -60
- package/open-sse/providers/registry/perplexity-agent.js +0 -49
- package/open-sse/providers/registry/perplexity-web.js +0 -33
- package/open-sse/providers/registry/perplexity.js +0 -37
- package/open-sse/providers/registry/playht.js +0 -36
- package/open-sse/providers/registry/qoder.js +0 -54
- package/open-sse/providers/registry/qwen.js +0 -33
- package/open-sse/providers/registry/recraft.js +0 -24
- package/open-sse/providers/registry/runwayml.js +0 -30
- package/open-sse/providers/registry/sdwebui.js +0 -20
- package/open-sse/providers/registry/searchapi.js +0 -35
- package/open-sse/providers/registry/searxng.js +0 -35
- package/open-sse/providers/registry/serper.js +0 -35
- package/open-sse/providers/registry/siliconflow.js +0 -39
- package/open-sse/providers/registry/stability-ai.js +0 -31
- package/open-sse/providers/registry/tavily.js +0 -50
- package/open-sse/providers/registry/together.js +0 -31
- package/open-sse/providers/registry/topaz.js +0 -19
- package/open-sse/providers/registry/tortoise.js +0 -30
- package/open-sse/providers/registry/venice.js +0 -56
- package/open-sse/providers/registry/vercel-ai-gateway.js +0 -41
- package/open-sse/providers/registry/vertex-partner.js +0 -29
- package/open-sse/providers/registry/vertex.js +0 -32
- package/open-sse/providers/registry/volcengine-ark.js +0 -35
- package/open-sse/providers/registry/voyage-ai.js +0 -30
- package/open-sse/providers/registry/xai.js +0 -45
- package/open-sse/providers/registry/xiaomi-mimo.js +0 -46
- package/open-sse/providers/registry/xiaomi-tokenplan.js +0 -63
- package/open-sse/providers/registry/youcom.js +0 -35
- package/open-sse/providers/schema.js +0 -76
- package/open-sse/providers/shared.js +0 -74
- package/open-sse/providers/thinkingLevels.js +0 -48
- package/open-sse/rtk/applyFilter.js +0 -15
- package/open-sse/rtk/autodetect.js +0 -111
- package/open-sse/rtk/caveman.js +0 -100
- package/open-sse/rtk/cavemanPrompts.js +0 -78
- package/open-sse/rtk/constants.js +0 -55
- package/open-sse/rtk/filters/buildOutput.js +0 -127
- package/open-sse/rtk/filters/dedupLog.js +0 -44
- package/open-sse/rtk/filters/find.js +0 -50
- package/open-sse/rtk/filters/gitDiff.js +0 -92
- package/open-sse/rtk/filters/gitLog.js +0 -99
- package/open-sse/rtk/filters/gitStatus.js +0 -117
- package/open-sse/rtk/filters/grep.js +0 -48
- package/open-sse/rtk/filters/ls.js +0 -79
- package/open-sse/rtk/filters/readNumbered.js +0 -27
- package/open-sse/rtk/filters/searchList.js +0 -52
- package/open-sse/rtk/filters/smartTruncate.js +0 -15
- package/open-sse/rtk/filters/tree.js +0 -32
- package/open-sse/rtk/headroom.js +0 -215
- package/open-sse/rtk/index.js +0 -155
- package/open-sse/rtk/paleo.js +0 -47
- package/open-sse/rtk/ponytail.js +0 -9
- package/open-sse/rtk/ponytailPrompt.js +0 -52
- package/open-sse/rtk/ponytailPrompts.js +0 -76
- package/open-sse/rtk/pxpipe.js +0 -104
- package/open-sse/rtk/registry.js +0 -38
- package/open-sse/rtk/systemInject.js +0 -98
- package/open-sse/services/accountFallback.js +0 -323
- package/open-sse/services/antigravityHeaders.js +0 -91
- package/open-sse/services/antigravityVersion.js +0 -154
- package/open-sse/services/clinepassModels.js +0 -63
- package/open-sse/services/codexQuotaFetcher.js +0 -312
- package/open-sse/services/codexVerbosity.js +0 -30
- package/open-sse/services/combo/context.js +0 -12
- package/open-sse/services/combo/fingerprintExpansion.js +0 -51
- package/open-sse/services/combo/headroomRanking.js +0 -28
- package/open-sse/services/combo/quotaExhaustionCutoff.js +0 -87
- package/open-sse/services/combo/quotaScoring.js +0 -226
- package/open-sse/services/combo/quotaShareConcurrency.js +0 -25
- package/open-sse/services/combo/quotaShareInflight.js +0 -50
- package/open-sse/services/combo/quotaShareStrategy.js +0 -130
- package/open-sse/services/combo/resolveAutoStrategy.js +0 -231
- package/open-sse/services/combo/responseValidation.js +0 -140
- package/open-sse/services/combo/runtimeUnits.js +0 -195
- package/open-sse/services/combo/sessionStickiness.js +0 -128
- package/open-sse/services/combo/shadowRouting.js +0 -131
- package/open-sse/services/combo/targetExhaustion.js +0 -75
- package/open-sse/services/combo/targetSorters.js +0 -126
- package/open-sse/services/combo/targetTimeoutRunner.js +0 -65
- package/open-sse/services/combo/validateQuality.js +0 -271
- package/open-sse/services/combo.js +0 -571
- package/open-sse/services/comboAgentMiddleware.js +0 -91
- package/open-sse/services/comboConfig.js +0 -153
- package/open-sse/services/comboManifestMetrics.js +0 -10
- package/open-sse/services/comboMetrics.js +0 -278
- package/open-sse/services/compact.js +0 -71
- package/open-sse/services/copilotModels.js +0 -155
- package/open-sse/services/emergencyFallback.js +0 -109
- package/open-sse/services/errorClassifier.js +0 -190
- package/open-sse/services/evalRouting.js +0 -201
- package/open-sse/services/freeWebSearch.js +0 -4
- package/open-sse/services/fusion.js +0 -223
- package/open-sse/services/intentClassifier.js +0 -631
- package/open-sse/services/kimchiModels.js +0 -176
- package/open-sse/services/kiroModels.js +0 -332
- package/open-sse/services/model.js +0 -136
- package/open-sse/services/modelCapabilities.js +0 -5
- package/open-sse/services/modelDeprecation.js +0 -101
- package/open-sse/services/modelFamilyFallback.js +0 -166
- package/open-sse/services/oauthCredentialManager.js +0 -156
- package/open-sse/services/pipeline.js +0 -107
- package/open-sse/services/projectId.js +0 -306
- package/open-sse/services/provider.js +0 -169
- package/open-sse/services/providerCooldownTracker.js +0 -94
- package/open-sse/services/providerDefaultRateLimit.js +0 -11
- package/open-sse/services/proxyAutoSelector.js +0 -24
- package/open-sse/services/qoderModels.js +0 -214
- package/open-sse/services/quotaFetchThrottle.js +0 -103
- package/open-sse/services/quotaMonitor.js +0 -310
- package/open-sse/services/quotaPreflight.js +0 -266
- package/open-sse/services/rateLimitManager/headers.js +0 -56
- package/open-sse/services/rateLimitManager.js +0 -616
- package/open-sse/services/rateLimitSemaphore.js +0 -112
- package/open-sse/services/responsesInputSanitizer.js +0 -99
- package/open-sse/services/slidingWindowLimiter.js +0 -44
- package/open-sse/services/streamRecovery.js +0 -355
- package/open-sse/services/taskAwareRouter.js +0 -227
- package/open-sse/services/taskAwareRouting.js +0 -332
- package/open-sse/services/thinkingBudget.js +0 -247
- package/open-sse/services/tokenRefresh/dedup.js +0 -31
- package/open-sse/services/tokenRefresh/providers.js +0 -624
- package/open-sse/services/tokenRefresh.js +0 -254
- package/open-sse/services/usage/claude.js +0 -147
- package/open-sse/services/usage/codebuddy-cn.js +0 -138
- package/open-sse/services/usage/codex.js +0 -267
- package/open-sse/services/usage/github.js +0 -100
- package/open-sse/services/usage/google.js +0 -241
- package/open-sse/services/usage/grok-cli.js +0 -274
- package/open-sse/services/usage/kiro.js +0 -188
- package/open-sse/services/usage/minimax.js +0 -234
- package/open-sse/services/usage/misc.js +0 -288
- package/open-sse/services/usage/shared.js +0 -70
- package/open-sse/services/usage.js +0 -62
- package/open-sse/services/usageDb.js +0 -2
- package/open-sse/services/webSearchRouting.js +0 -25
- package/open-sse/services/wildcardRouter.js +0 -59
- package/open-sse/shared/clineAuth.js +0 -37
- package/open-sse/shared/machineId.js +0 -19
- package/open-sse/shared/qoder/constants.js +0 -64
- package/open-sse/shared/qoder/cosy.js +0 -175
- package/open-sse/shared/qoder/encoding.js +0 -55
- package/open-sse/transformer/responsesTransformer.js +0 -439
- package/open-sse/transformer/streamToJsonConverter.js +0 -103
- package/open-sse/translator/concerns/chunk.js +0 -11
- package/open-sse/translator/concerns/finishReason.js +0 -63
- package/open-sse/translator/concerns/image.js +0 -124
- package/open-sse/translator/concerns/json.js +0 -5
- package/open-sse/translator/concerns/message.js +0 -7
- package/open-sse/translator/concerns/modality.js +0 -155
- package/open-sse/translator/concerns/paramSupport.js +0 -75
- package/open-sse/translator/concerns/prefetch.js +0 -96
- package/open-sse/translator/concerns/reasoning.js +0 -24
- package/open-sse/translator/concerns/thinking.js +0 -53
- package/open-sse/translator/concerns/thinkingUnified.js +0 -329
- package/open-sse/translator/concerns/toolCall.js +0 -153
- package/open-sse/translator/concerns/usage.js +0 -69
- package/open-sse/translator/formats/claude.js +0 -368
- package/open-sse/translator/formats/gemini.js +0 -380
- package/open-sse/translator/formats/maxTokens.js +0 -34
- package/open-sse/translator/formats/openai.js +0 -134
- package/open-sse/translator/formats/responsesApi.js +0 -141
- package/open-sse/translator/formats.js +0 -36
- package/open-sse/translator/helpers/claudeHelper.js +0 -216
- package/open-sse/translator/helpers/geminiHelper.js +0 -372
- package/open-sse/translator/helpers/imageHelper.js +0 -34
- package/open-sse/translator/helpers/maxTokensHelper.js +0 -27
- package/open-sse/translator/helpers/openaiHelper.js +0 -130
- package/open-sse/translator/helpers/responsesApiHelper.js +0 -139
- package/open-sse/translator/helpers/toolCallHelper.js +0 -148
- package/open-sse/translator/index.js +0 -252
- package/open-sse/translator/request/antigravity-to-openai.js +0 -242
- package/open-sse/translator/request/claude-to-kiro.js +0 -478
- package/open-sse/translator/request/claude-to-openai.js +0 -263
- package/open-sse/translator/request/gemini-to-openai.js +0 -152
- package/open-sse/translator/request/openai-responses.js +0 -385
- package/open-sse/translator/request/openai-to-claude.js +0 -383
- package/open-sse/translator/request/openai-to-commandcode.js +0 -176
- package/open-sse/translator/request/openai-to-cursor.js +0 -185
- package/open-sse/translator/request/openai-to-gemini.js +0 -442
- package/open-sse/translator/request/openai-to-kiro.js +0 -607
- package/open-sse/translator/request/openai-to-kiro.old.js +0 -278
- package/open-sse/translator/request/openai-to-ollama.js +0 -195
- package/open-sse/translator/request/openai-to-vertex.js +0 -42
- package/open-sse/translator/response/claude-to-openai.js +0 -195
- package/open-sse/translator/response/commandcode-to-openai.js +0 -188
- package/open-sse/translator/response/cursor-to-openai.js +0 -30
- package/open-sse/translator/response/gemini-to-openai.js +0 -147
- package/open-sse/translator/response/kiro-to-claude.js +0 -261
- package/open-sse/translator/response/kiro-to-openai.js +0 -160
- package/open-sse/translator/response/ollama-to-openai.js +0 -134
- package/open-sse/translator/response/openai-responses.js +0 -535
- package/open-sse/translator/response/openai-to-antigravity.js +0 -123
- package/open-sse/translator/response/openai-to-claude.js +0 -265
- package/open-sse/translator/schema/blocks.js +0 -43
- package/open-sse/translator/schema/defaults.js +0 -7
- package/open-sse/translator/schema/finishReasons.js +0 -27
- package/open-sse/translator/schema/index.js +0 -8
- package/open-sse/translator/schema/roles.js +0 -16
- package/open-sse/utils/agentGoalPolicy.js +0 -85
- package/open-sse/utils/aiSdkCompat.js +0 -75
- package/open-sse/utils/bypassHandler.js +0 -298
- package/open-sse/utils/cacheControlPolicy.js +0 -189
- package/open-sse/utils/claudeCloaking.js +0 -155
- package/open-sse/utils/claudeHeaderCache.js +0 -70
- package/open-sse/utils/claudeSignature.js +0 -41
- package/open-sse/utils/clientDetector.js +0 -63
- package/open-sse/utils/codebuddySanitizer.js +0 -96
- package/open-sse/utils/composerToolCalls.js +0 -158
- package/open-sse/utils/cors.js +0 -13
- package/open-sse/utils/cursorChecksum.js +0 -149
- package/open-sse/utils/cursorImages.js +0 -224
- package/open-sse/utils/cursorProtobuf.js +0 -904
- package/open-sse/utils/cursorVersionDetector.js +0 -55
- package/open-sse/utils/debugLog.js +0 -14
- package/open-sse/utils/diagnostics.js +0 -143
- package/open-sse/utils/error.js +0 -164
- package/open-sse/utils/estimateSize.js +0 -33
- package/open-sse/utils/finishReason.js +0 -32
- package/open-sse/utils/flattenToolHistory.js +0 -68
- package/open-sse/utils/headers.js +0 -36
- package/open-sse/utils/heapPressure.js +0 -35
- package/open-sse/utils/jsonToSse.js +0 -125
- package/open-sse/utils/keepaliveThreshold.js +0 -40
- package/open-sse/utils/logger.js +0 -104
- package/open-sse/utils/noThinkingAlias.js +0 -74
- package/open-sse/utils/number.js +0 -7
- package/open-sse/utils/ollamaTransform.js +0 -85
- package/open-sse/utils/opencodeHeaders.js +0 -47
- package/open-sse/utils/progressTracker.js +0 -81
- package/open-sse/utils/providerRequestLogging.js +0 -219
- package/open-sse/utils/proxyFetch.js +0 -369
- package/open-sse/utils/reasoningContentInjector.js +0 -79
- package/open-sse/utils/reasoningFields.js +0 -70
- package/open-sse/utils/requestLogger.js +0 -260
- package/open-sse/utils/responsesInputNormalization.js +0 -92
- package/open-sse/utils/responsesStatePolicy.js +0 -52
- package/open-sse/utils/responsesStreamHelpers.js +0 -49
- package/open-sse/utils/sessionManager.js +0 -240
- package/open-sse/utils/sleep.js +0 -6
- package/open-sse/utils/sse.js +0 -14
- package/open-sse/utils/sseConstants.js +0 -23
- package/open-sse/utils/sseHeartbeat.js +0 -104
- package/open-sse/utils/stream.js +0 -517
- package/open-sse/utils/streamFailureFinalization.js +0 -134
- package/open-sse/utils/streamHandler.js +0 -250
- package/open-sse/utils/streamHelpers.js +0 -137
- package/open-sse/utils/textualToolCall.js +0 -104
- package/open-sse/utils/thinkCloseMarker.js +0 -72
- package/open-sse/utils/thinkTagParser.js +0 -146
- package/open-sse/utils/toolCallArguments.js +0 -12
- package/open-sse/utils/toolDeduper.js +0 -49
- package/open-sse/utils/toolSources.js +0 -31
- package/open-sse/utils/upstreamResponseHeaders.js +0 -25
- package/open-sse/utils/urlSanitize.js +0 -15
- package/open-sse/utils/usageTracking.js +0 -347
package/bin/rewriteSseImports.js
CHANGED
|
@@ -39,10 +39,14 @@ function rewrite(file) {
|
|
|
39
39
|
const resolved = imp.endsWith(".js") ? imp : imp + ".js";
|
|
40
40
|
return `from '${prefix}services/${resolved}'`;
|
|
41
41
|
})
|
|
42
|
-
.replace(/import\s+['
|
|
42
|
+
.replace(/import\s+['"]@\/lib\/([^'"]+)['"]/g, (m, imp) => {
|
|
43
43
|
const resolved = imp.endsWith(".js") ? imp : imp + ".js";
|
|
44
44
|
return `import '${prefix}lib/${resolved}'`;
|
|
45
45
|
})
|
|
46
|
+
.replace(/import\(\s*['"]@\/lib\/([^'"]+)['"]\s*\)/g, (m, imp) => {
|
|
47
|
+
const resolved = imp.endsWith(".js") ? imp : imp + ".js";
|
|
48
|
+
return `import('${prefix}lib/${resolved}')`;
|
|
49
|
+
})
|
|
46
50
|
// Fix relative imports pointing to ../../../src/lib → ../../dist/lib
|
|
47
51
|
// For open-sse/services/*.js (depth=2): ../../../src/lib/ = open-sse/src/lib/ (wrong)
|
|
48
52
|
// correct: ../../dist/lib/
|
|
@@ -79,7 +79,7 @@ function clearCliproxyapiUrlCache() {
|
|
|
79
79
|
}
|
|
80
80
|
(async () => {
|
|
81
81
|
try {
|
|
82
|
-
const { getSettings } = await import(
|
|
82
|
+
const { getSettings } = await import('../../../dist/lib/db/settings.js');
|
|
83
83
|
const settings = await getSettings();
|
|
84
84
|
if (typeof settings.cliproxyapi_url === "string" && settings.cliproxyapi_url.trim()) {
|
|
85
85
|
_cachedSettingsUrl = { url: settings.cliproxyapi_url.trim(), ts: Date.now() };
|
|
@@ -92,7 +92,7 @@ async function resolveCliproxyapiBaseUrl() {
|
|
|
92
92
|
return _cachedSettingsUrl.url;
|
|
93
93
|
}
|
|
94
94
|
try {
|
|
95
|
-
const { getSettings } = await import(
|
|
95
|
+
const { getSettings } = await import('../../../dist/lib/db/settings.js');
|
|
96
96
|
const settings = await getSettings();
|
|
97
97
|
if (typeof settings.cliproxyapi_url === "string" && settings.cliproxyapi_url.trim()) {
|
|
98
98
|
const url2 = settings.cliproxyapi_url.trim();
|
|
@@ -192,7 +192,7 @@ async function initializeRateLimits() {
|
|
|
192
192
|
if (initialized) return;
|
|
193
193
|
initialized = true;
|
|
194
194
|
try {
|
|
195
|
-
const { getProviderConnections, getSettings } = await import(
|
|
195
|
+
const { getProviderConnections, getSettings } = await import('../../../dist/lib/localDb.js');
|
|
196
196
|
const [connections, settings] = await Promise.all([getProviderConnections(), getSettings()]);
|
|
197
197
|
const resilience = resolveResilienceSettings(settings);
|
|
198
198
|
currentRequestQueueSettings = { ...resilience.requestQueue };
|
|
@@ -221,7 +221,7 @@ async function initializeRateLimits() {
|
|
|
221
221
|
}
|
|
222
222
|
async function applyRequestQueueSettings(nextSettings) {
|
|
223
223
|
currentRequestQueueSettings = { ...nextSettings };
|
|
224
|
-
const { getProviderConnections } = await import(
|
|
224
|
+
const { getProviderConnections } = await import('../../../dist/lib/localDb.js');
|
|
225
225
|
const connections = await getProviderConnections();
|
|
226
226
|
reconcileEnabledConnections(connections, currentRequestQueueSettings);
|
|
227
227
|
updateAllLimiterSettings();
|
|
@@ -465,7 +465,7 @@ function getLearnedLimits() {
|
|
|
465
465
|
}
|
|
466
466
|
async function persistLearnedLimitsNow() {
|
|
467
467
|
try {
|
|
468
|
-
const { updateSettings } = await import(
|
|
468
|
+
const { updateSettings } = await import('../../../dist/lib/db/settings.js');
|
|
469
469
|
await updateSettings({ learnedRateLimits: JSON.stringify(learnedLimits) });
|
|
470
470
|
logRateLimit(
|
|
471
471
|
`\u{1F4BE} [RATE-LIMIT] Persisted learned limits for ${Object.keys(learnedLimits).length} provider(s)`
|
|
@@ -541,7 +541,7 @@ async function __getLimiterStateForTests(provider, connectionId, model = null) {
|
|
|
541
541
|
}
|
|
542
542
|
async function loadPersistedLimits() {
|
|
543
543
|
try {
|
|
544
|
-
const { getSettings } = await import(
|
|
544
|
+
const { getSettings } = await import('../../../dist/lib/db/settings.js');
|
|
545
545
|
const settings = await getSettings();
|
|
546
546
|
const raw = settings?.learnedRateLimits;
|
|
547
547
|
if (typeof raw !== "string" || raw.trim().length === 0) return;
|
package/package.json
CHANGED
package/open-sse/AGENTS.md
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# open-sse
|
|
2
|
-
|
|
3
|
-
Provider-agnostic SSE engine: one OpenAI-style request → any provider (LLM chat, image, embedding, tts, stt, search), streamed back in the client's format.
|
|
4
|
-
|
|
5
|
-
## Request lifecycle (chat)
|
|
6
|
-
|
|
7
|
-
`handlers/chatCore.js` → `services/model.js` `parseModel` (resolve `provider/model`) → **pre-translate hooks** (`rtk/` tool_result compress, `rtk/headroom.js` proxy compress, `rtk/caveman.js` system inject — all fail-open) → `executors/index.js` `getExecutor(provider)` → `translator/index.js` `translateRequest` (client format → provider format) → `executor.execute()` (streams upstream) → `translateResponse` (provider chunks → client format) → SSE out.
|
|
8
|
-
|
|
9
|
-
## Directory map
|
|
10
|
-
|
|
11
|
-
- `config/` — ALL constants/config (no hardcode elsewhere). `providers.js`/`registry/` (provider defs), `providerModels.js` (alias→models matrix), `runtimeConfig.js` (timeouts, token limits), `*Constants.js`.
|
|
12
|
-
- `translator/` — format conversion. `request/<from>-to-<to>.js`, `response/<from>-to-<to>.js`, `schema/` (enums: ROLE, CLAUDE_BLOCK…), `concerns/` (shared logic), `formats.js`+`formats/` (per-format). `index.js` is the registry/entry.
|
|
13
|
-
- `executors/` — per-provider upstream call. `base.js` (BaseExecutor), one file per special provider, `index.js` map.
|
|
14
|
-
- `providers/` — registry build + `capabilities.js` + `pricing.js`. Entry: `index.js` (PROVIDERS).
|
|
15
|
-
- `handlers/` — per-modality cores (chat/image/embedding/tts/stt/search) + sub-provider folders. `chatCore/` has the streaming/non-streaming/sse-to-json handlers.
|
|
16
|
-
- `rtk/` — request token-killer. `index.js` compresses `tool_result` content in-place (OpenAI/Claude/Kiro shapes); `filters/` per-tool compressors + `autodetect.js`; `headroom.js` external compress proxy; `caveman.js` system-prompt injector.
|
|
17
|
-
- `transformer/` — `responsesTransformer.js` (Chat Completions SSE → Codex Responses API SSE), `streamToJsonConverter.js`.
|
|
18
|
-
- `shared/` — cross-provider auth/identity: `clineAuth.js`, `machineId.js`, `qoder/`.
|
|
19
|
-
- `services/` — `model.js`, `provider.js`, `accountFallback.js`, `combo.js`, `compact.js`, `tokenRefresh/`+`tokenRefresh.js`, `oauthCredentialManager.js`, `usage/`, `projectId.js`, `kiroModels.js`/`qoderModels.js`.
|
|
20
|
-
- `utils/` — streamHandler, stream, sse, error, sessionManager, claudeCloaking, clientDetector, proxyFetch (patches global fetch), cursorProtobuf/cursorChecksum, ollamaTransform.
|
|
21
|
-
|
|
22
|
-
## Conventions
|
|
23
|
-
|
|
24
|
-
- Config-driven, DRY, camelCase. NEVER hardcode values, models, or block/role strings — use `config/` + `schema/` constants.
|
|
25
|
-
- Translator pipeline pivots through OpenAI as the intermediate format. A translator registered on the exact `source:target` pair (e.g. `claude:kiro`) runs as a **direct route**, skipping the lossy double-hop.
|
|
26
|
-
- Translators self-register via `register(from, to, reqFn, resFn)` as an import side-effect — new files MUST be imported in `translator/index.js`.
|
|
27
|
-
|
|
28
|
-
## How to add
|
|
29
|
-
|
|
30
|
-
- **Provider**: copy `providers/REGISTRY_TEMPLATE.js` → `providers/registry/{id}.js`; add models to `config/providerModels.js`. Generic providers need no executor (DefaultExecutor handles OpenAI-compatible APIs).
|
|
31
|
-
- **Executor** (only for non-standard upstream): subclass `BaseExecutor` (override `getBaseUrls`/`buildHeaders`/`buildUrl`/`execute`), register in `executors/index.js` map. `getExecutor` falls back to `DefaultExecutor` when absent.
|
|
32
|
-
- **Translator**: add `request|response/<from>-to-<to>.js` calling `register(...)`, then import it in `translator/index.js`. Reuse `schema/` + `concerns/` — don't re-implement parsing.
|
|
33
|
-
|
|
34
|
-
## Pitfalls
|
|
35
|
-
|
|
36
|
-
- OpenAI bridge is lossy (thinking, non-base64 images, tool ids, is_error) — prefer a direct route for fragile pairs.
|
|
37
|
-
- `registry/index.js` is an auto-generated static import list; regenerate it (don't hand-edit) after adding a `registry/{id}.js`. REGISTRY_TEMPLATE is excluded by design.
|
|
38
|
-
- Special binary/protobuf formats (kiro EventStream, cursor protobuf, commandcode NDJSON) don't round-trip through OpenAI — handle in their executor.
|
|
39
|
-
- `rtk/` + `headroom.js` mutate the request body in-place and are **fail-open**: any error returns null and leaves the body untouched — never throw out of them. RTK skips `is_error`/`status:"error"` tool results to preserve traces.
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
const ANTHROPIC_VERSION_HEADER = "2023-06-01";
|
|
2
|
-
const ANTHROPIC_BETA_BASE = Object.freeze([
|
|
3
|
-
"claude-code-20250219",
|
|
4
|
-
"oauth-2025-04-20",
|
|
5
|
-
"interleaved-thinking-2025-05-14",
|
|
6
|
-
"context-management-2025-06-27",
|
|
7
|
-
"prompt-caching-scope-2026-01-05",
|
|
8
|
-
"advanced-tool-use-2025-11-20",
|
|
9
|
-
"effort-2025-11-24",
|
|
10
|
-
"structured-outputs-2025-12-15",
|
|
11
|
-
"fast-mode-2026-02-01",
|
|
12
|
-
"redact-thinking-2026-02-12",
|
|
13
|
-
"token-efficient-tools-2026-03-28",
|
|
14
|
-
"advisor-tool-2026-03-01",
|
|
15
|
-
"extended-cache-ttl-2025-04-11",
|
|
16
|
-
"cache-diagnosis-2026-04-07"
|
|
17
|
-
]);
|
|
18
|
-
const CLAUDE_OAUTH_EXTRA_BETAS = Object.freeze(["fine-grained-tool-streaming-2025-05-14"]);
|
|
19
|
-
const ANTHROPIC_BETA_FULL = ANTHROPIC_BETA_BASE.join(",");
|
|
20
|
-
const ANTHROPIC_BETA_API_KEY = ANTHROPIC_BETA_BASE.filter(
|
|
21
|
-
(beta) => beta !== "oauth-2025-04-20"
|
|
22
|
-
).join(",");
|
|
23
|
-
const ANTHROPIC_BETA_CLAUDE_OAUTH = [
|
|
24
|
-
...ANTHROPIC_BETA_BASE.slice(0, 3),
|
|
25
|
-
...CLAUDE_OAUTH_EXTRA_BETAS,
|
|
26
|
-
...ANTHROPIC_BETA_BASE.slice(3)
|
|
27
|
-
].join(",");
|
|
28
|
-
const FORWARDABLE_CLIENT_BETAS = Object.freeze(["tool-search-tool-2025-10-19"]);
|
|
29
|
-
function mergeClientAnthropicBeta(base, clientBeta, allow = FORWARDABLE_CLIENT_BETAS) {
|
|
30
|
-
const baseList = base.split(",").map((s) => s.trim()).filter(Boolean);
|
|
31
|
-
if (typeof clientBeta !== "string" || !clientBeta.trim()) return baseList.join(",");
|
|
32
|
-
const seen = new Set(baseList.map((s) => s.toLowerCase()));
|
|
33
|
-
const allowSet = new Set(allow.map((s) => s.toLowerCase()));
|
|
34
|
-
for (const token of clientBeta.split(",").map((s) => s.trim()).filter(Boolean)) {
|
|
35
|
-
const lower = token.toLowerCase();
|
|
36
|
-
if (allowSet.has(lower) && !seen.has(lower)) {
|
|
37
|
-
baseList.push(token);
|
|
38
|
-
seen.add(lower);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return baseList.join(",");
|
|
42
|
-
}
|
|
43
|
-
function uniqueCommaValues(values) {
|
|
44
|
-
return [
|
|
45
|
-
...new Set(
|
|
46
|
-
values.filter((value) => value !== void 0 && value !== null && value !== "").flatMap((value) => String(value).split(",")).map((value) => value.trim()).filter(Boolean)
|
|
47
|
-
)
|
|
48
|
-
];
|
|
49
|
-
}
|
|
50
|
-
function normalizeAnthropicHeaderVariants(headers) {
|
|
51
|
-
if ("anthropic-version" in headers && "Anthropic-Version" in headers) {
|
|
52
|
-
const versionValues = uniqueCommaValues([
|
|
53
|
-
headers["anthropic-version"],
|
|
54
|
-
headers["Anthropic-Version"]
|
|
55
|
-
]);
|
|
56
|
-
delete headers["Anthropic-Version"];
|
|
57
|
-
delete headers["anthropic-version"];
|
|
58
|
-
if (versionValues.length > 0) {
|
|
59
|
-
headers["anthropic-version"] = versionValues[0];
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
if ("anthropic-beta" in headers && "Anthropic-Beta" in headers) {
|
|
63
|
-
const betaValues = uniqueCommaValues([headers["anthropic-beta"], headers["Anthropic-Beta"]]);
|
|
64
|
-
delete headers["Anthropic-Beta"];
|
|
65
|
-
delete headers["anthropic-beta"];
|
|
66
|
-
if (betaValues.length > 0) {
|
|
67
|
-
headers["anthropic-beta"] = betaValues.join(",");
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
const CLAUDE_CLI_VERSION = "2.1.195";
|
|
72
|
-
const CLAUDE_CLI_USER_AGENT = `claude-cli/${CLAUDE_CLI_VERSION} (external, cli)`;
|
|
73
|
-
const CLAUDE_CLI_STAINLESS_PACKAGE_VERSION = "0.94.0";
|
|
74
|
-
const CLAUDE_CLI_STAINLESS_RUNTIME_VERSION = "v24.3.0";
|
|
75
|
-
export {
|
|
76
|
-
ANTHROPIC_BETA_API_KEY,
|
|
77
|
-
ANTHROPIC_BETA_CLAUDE_OAUTH,
|
|
78
|
-
ANTHROPIC_BETA_FULL,
|
|
79
|
-
ANTHROPIC_VERSION_HEADER,
|
|
80
|
-
CLAUDE_CLI_STAINLESS_PACKAGE_VERSION,
|
|
81
|
-
CLAUDE_CLI_STAINLESS_RUNTIME_VERSION,
|
|
82
|
-
CLAUDE_CLI_USER_AGENT,
|
|
83
|
-
CLAUDE_CLI_VERSION,
|
|
84
|
-
FORWARDABLE_CLIENT_BETAS,
|
|
85
|
-
mergeClientAnthropicBeta,
|
|
86
|
-
normalizeAnthropicHeaderVariants
|
|
87
|
-
};
|
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
import { platform, arch } from "os";
|
|
2
|
-
import { proxyAwareFetch } from "../utils/proxyFetch.js";
|
|
3
|
-
|
|
4
|
-
// === Kimchi CLI version (dynamic, cached from GitHub releases) ===
|
|
5
|
-
const KIMCHI_FALLBACK_VERSION = "0.1.39";
|
|
6
|
-
let _kimchiVersionCache = null;
|
|
7
|
-
let _kimchiVersionFetching = null;
|
|
8
|
-
const KIMCHI_VERSION_TTL_MS = 3600_000; // 1h
|
|
9
|
-
|
|
10
|
-
async function fetchKimchiVersion() {
|
|
11
|
-
try {
|
|
12
|
-
const res = await proxyAwareFetch("https://api.github.com/repos/getkimchi/kimchi/releases/latest", {
|
|
13
|
-
headers: { Accept: "application/vnd.github+json" },
|
|
14
|
-
signal: AbortSignal.timeout(5000),
|
|
15
|
-
});
|
|
16
|
-
if (!res.ok) return KIMCHI_FALLBACK_VERSION;
|
|
17
|
-
const body = await res.json();
|
|
18
|
-
const tag = body?.tag_name || "";
|
|
19
|
-
const ver = tag.replace(/^v/, "");
|
|
20
|
-
return ver || KIMCHI_FALLBACK_VERSION;
|
|
21
|
-
} catch {
|
|
22
|
-
return KIMCHI_FALLBACK_VERSION;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export async function getKimchiVersion() {
|
|
27
|
-
if (_kimchiVersionCache && Date.now() - _kimchiVersionCache.ts < KIMCHI_VERSION_TTL_MS) return _kimchiVersionCache.ver;
|
|
28
|
-
if (_kimchiVersionFetching) return _kimchiVersionFetching;
|
|
29
|
-
_kimchiVersionFetching = fetchKimchiVersion().finally(() => { _kimchiVersionFetching = null; });
|
|
30
|
-
const ver = await _kimchiVersionFetching;
|
|
31
|
-
_kimchiVersionCache = { ver, ts: Date.now() };
|
|
32
|
-
return ver;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export function getKimchiVersionSync() {
|
|
36
|
-
return _kimchiVersionCache?.ver || KIMCHI_FALLBACK_VERSION;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// === Gemini CLI ===
|
|
40
|
-
export const GEMINI_CLI_VERSION = "0.34.0";
|
|
41
|
-
export const GEMINI_CLI_API_CLIENT = "google-genai-sdk/1.41.0 gl-node/v22.19.0";
|
|
42
|
-
|
|
43
|
-
// Map Node arch to Gemini CLI arch string (x64/x86/arm64/...)
|
|
44
|
-
function geminiCLIArch() {
|
|
45
|
-
const a = arch();
|
|
46
|
-
if (a === "ia32") return "x86";
|
|
47
|
-
return a;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export function geminiCLIUserAgent(model = "unknown") {
|
|
51
|
-
return `GeminiCLI/${GEMINI_CLI_VERSION}/${model || "unknown"} (${platform()}; ${geminiCLIArch()}; terminal)`;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// === GitHub Copilot ===
|
|
55
|
-
export const GITHUB_COPILOT = {
|
|
56
|
-
VSCODE_VERSION: "1.110.0",
|
|
57
|
-
COPILOT_CHAT_VERSION: "0.38.0",
|
|
58
|
-
USER_AGENT: "GitHubCopilotChat/0.38.0",
|
|
59
|
-
API_VERSION: "2025-04-01",
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
// === Antigravity enums ===
|
|
63
|
-
export const IDE_TYPE = {
|
|
64
|
-
UNSPECIFIED: 0,
|
|
65
|
-
JETSKI: 10,
|
|
66
|
-
ANTIGRAVITY: 9,
|
|
67
|
-
PLUGINS: 7
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
export const PLATFORM = {
|
|
71
|
-
UNSPECIFIED: 0,
|
|
72
|
-
DARWIN_AMD64: 1,
|
|
73
|
-
DARWIN_ARM64: 2,
|
|
74
|
-
LINUX_AMD64: 3,
|
|
75
|
-
LINUX_ARM64: 4,
|
|
76
|
-
WINDOWS_AMD64: 5
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
export const PLUGIN_TYPE = {
|
|
80
|
-
UNSPECIFIED: 0,
|
|
81
|
-
CLOUD_CODE: 1,
|
|
82
|
-
GEMINI: 2
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
export function getPlatformEnum() {
|
|
86
|
-
const os = platform();
|
|
87
|
-
const architecture = arch();
|
|
88
|
-
if (os === "darwin") return architecture === "arm64" ? PLATFORM.DARWIN_ARM64 : PLATFORM.DARWIN_AMD64;
|
|
89
|
-
if (os === "linux") return architecture === "arm64" ? PLATFORM.LINUX_ARM64 : PLATFORM.LINUX_AMD64;
|
|
90
|
-
if (os === "win32") return PLATFORM.WINDOWS_AMD64;
|
|
91
|
-
return PLATFORM.UNSPECIFIED;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
export function getPlatformUserAgent() {
|
|
95
|
-
return `antigravity/1.104.0 ${platform()}/${arch()}`;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
export const CLIENT_METADATA = {
|
|
99
|
-
ideType: IDE_TYPE.ANTIGRAVITY,
|
|
100
|
-
platform: getPlatformEnum(),
|
|
101
|
-
pluginType: PLUGIN_TYPE.GEMINI
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
// Internal anti-loop header
|
|
105
|
-
export const INTERNAL_REQUEST_HEADER = { name: "x-request-source", value: "local" };
|
|
106
|
-
|
|
107
|
-
// Suffix added to client tools when forwarding to Antigravity provider (anti-ban cloaking)
|
|
108
|
-
export const AG_TOOL_SUFFIX = "_ide";
|
|
109
|
-
|
|
110
|
-
// Suffix added to client tools when forwarding to Claude provider (anti-ban cloaking)
|
|
111
|
-
export const CLAUDE_TOOL_SUFFIX = "_ide";
|
|
112
|
-
|
|
113
|
-
// CC native default tools — these are Claude Code's own tools, kept as decoys
|
|
114
|
-
// Client tools matching these names are skipped (not renamed), others get _cc suffix
|
|
115
|
-
export const CC_DEFAULT_TOOLS = new Set([
|
|
116
|
-
"Task",
|
|
117
|
-
"TaskOutput",
|
|
118
|
-
"TaskStop",
|
|
119
|
-
"TaskCreate",
|
|
120
|
-
"TaskGet",
|
|
121
|
-
"TaskUpdate",
|
|
122
|
-
"TaskList",
|
|
123
|
-
"Bash",
|
|
124
|
-
"Glob",
|
|
125
|
-
"Grep",
|
|
126
|
-
"Read",
|
|
127
|
-
"Edit",
|
|
128
|
-
"Write",
|
|
129
|
-
"NotebookEdit",
|
|
130
|
-
"WebFetch",
|
|
131
|
-
"WebSearch",
|
|
132
|
-
"AskUserQuestion",
|
|
133
|
-
"Skill",
|
|
134
|
-
"EnterPlanMode",
|
|
135
|
-
"ExitPlanMode",
|
|
136
|
-
]);
|
|
137
|
-
|
|
138
|
-
// AG native default tools — kept as decoys with neutral description/properties
|
|
139
|
-
// These names must match exactly what AG sends in the real request log
|
|
140
|
-
export const AG_DEFAULT_TOOLS = new Set([
|
|
141
|
-
"browser_subagent",
|
|
142
|
-
"command_status",
|
|
143
|
-
"find_by_name",
|
|
144
|
-
"generate_image",
|
|
145
|
-
"grep_search",
|
|
146
|
-
"list_dir",
|
|
147
|
-
"list_resources",
|
|
148
|
-
"multi_replace_file_content",
|
|
149
|
-
"notify_user",
|
|
150
|
-
"read_resource",
|
|
151
|
-
"read_terminal",
|
|
152
|
-
"read_url_content",
|
|
153
|
-
"replace_file_content",
|
|
154
|
-
"run_command",
|
|
155
|
-
"search_web",
|
|
156
|
-
"send_command_input",
|
|
157
|
-
"task_boundary",
|
|
158
|
-
"view_content_chunk",
|
|
159
|
-
"view_file",
|
|
160
|
-
"write_to_file"
|
|
161
|
-
]);
|
|
162
|
-
|
|
163
|
-
// Antigravity chat/stream headers
|
|
164
|
-
export const ANTIGRAVITY_HEADERS = {
|
|
165
|
-
"User-Agent": `antigravity/1.107.0 ${platform()}/${arch()}`
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
// Cloud Code Assist API
|
|
169
|
-
export const CLOUD_CODE_API = {
|
|
170
|
-
loadCodeAssist: "https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",
|
|
171
|
-
onboardUser: "https://cloudcode-pa.googleapis.com/v1internal:onboardUser",
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
export const LOAD_CODE_ASSIST_HEADERS = {
|
|
175
|
-
"Content-Type": "application/json",
|
|
176
|
-
"User-Agent": "google-api-nodejs-client/9.15.1",
|
|
177
|
-
"X-Goog-Api-Client": "google-cloud-sdk vscode_cloudshelleditor/0.1",
|
|
178
|
-
"Client-Metadata": JSON.stringify({ ideType: IDE_TYPE.ANTIGRAVITY, platform: getPlatformEnum(), pluginType: PLUGIN_TYPE.GEMINI }),
|
|
179
|
-
};
|
|
180
|
-
|
|
181
|
-
export const LOAD_CODE_ASSIST_METADATA = {
|
|
182
|
-
ideType: IDE_TYPE.ANTIGRAVITY,
|
|
183
|
-
platform: getPlatformEnum(),
|
|
184
|
-
pluginType: PLUGIN_TYPE.GEMINI,
|
|
185
|
-
};
|
|
186
|
-
|
|
187
|
-
// System prompts
|
|
188
|
-
export const CLAUDE_SYSTEM_PROMPT = "You are Claude Code, Anthropic's official CLI for Claude.";
|
|
189
|
-
export const ANTIGRAVITY_DEFAULT_SYSTEM = "You are Antigravity, a powerful agentic AI coding assistant designed by the Google Deepmind team working on Advanced Agentic Coding.You are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.**Absolute paths only****Proactiveness**";
|
|
190
|
-
|
|
191
|
-
// Proactive token refresh lead times per provider (ms)
|
|
192
|
-
export const REFRESH_LEAD_MS = {
|
|
193
|
-
codex: 5 * 24 * 60 * 60 * 1000, // 5 days
|
|
194
|
-
claude: 4 * 60 * 60 * 1000, // 4 hours
|
|
195
|
-
iflow: 24 * 60 * 60 * 1000, // 24 hours
|
|
196
|
-
qwen: 20 * 60 * 1000, // 20 minutes
|
|
197
|
-
"kimi-coding": 5 * 60 * 1000, // 5 minutes
|
|
198
|
-
antigravity: 5 * 60 * 1000, // 5 minutes
|
|
199
|
-
};
|
|
200
|
-
|
|
201
|
-
// OAuth endpoints
|
|
202
|
-
export const OAUTH_ENDPOINTS = {
|
|
203
|
-
google: {
|
|
204
|
-
token: "https://oauth2.googleapis.com/token",
|
|
205
|
-
auth: "https://accounts.google.com/o/oauth2/auth"
|
|
206
|
-
},
|
|
207
|
-
openai: {
|
|
208
|
-
token: "https://auth.openai.com/oauth/token",
|
|
209
|
-
auth: "https://auth.openai.com/oauth/authorize"
|
|
210
|
-
},
|
|
211
|
-
anthropic: {
|
|
212
|
-
token: "https://api.anthropic.com/v1/oauth/token",
|
|
213
|
-
auth: "https://api.anthropic.com/v1/oauth/authorize"
|
|
214
|
-
},
|
|
215
|
-
qwen: {
|
|
216
|
-
token: "https://qwen.ai/api/v1/oauth2/token",
|
|
217
|
-
auth: "https://qwen.ai/api/v1/oauth2/device/code"
|
|
218
|
-
},
|
|
219
|
-
iflow: {
|
|
220
|
-
token: "https://iflow.cn/oauth/token",
|
|
221
|
-
auth: "https://iflow.cn/oauth"
|
|
222
|
-
},
|
|
223
|
-
github: {
|
|
224
|
-
token: "https://github.com/login/oauth/access_token",
|
|
225
|
-
auth: "https://github.com/login/oauth/authorize",
|
|
226
|
-
deviceCode: "https://github.com/login/device/code"
|
|
227
|
-
}
|
|
228
|
-
};
|
|
229
|
-
|
|
230
|
-
// Generate Kimi OAuth custom headers
|
|
231
|
-
export function buildKimiHeaders() {
|
|
232
|
-
return {
|
|
233
|
-
"X-Msh-Platform": "9router",
|
|
234
|
-
"X-Msh-Version": "2.1.2",
|
|
235
|
-
"X-Msh-Device-Model": typeof process !== "undefined" ? `${process.platform} ${process.arch}` : "unknown",
|
|
236
|
-
"X-Msh-Device-Id": `kimi-${Date.now()}`
|
|
237
|
-
};
|
|
238
|
-
}
|