@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
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { retrieveMemories } from '../../../dist/lib/memory/retrieval.js';
|
|
3
|
-
import { createMemory, deleteMemory, listMemories } from '../../../dist/lib/memory/store.js';
|
|
4
|
-
import {
|
|
5
|
-
getMemorySettings,
|
|
6
|
-
toMemoryRetrievalConfig,
|
|
7
|
-
DEFAULT_MEMORY_SETTINGS
|
|
8
|
-
} from '../../../dist/lib/memory/settings.js';
|
|
9
|
-
const MemorySearchSchema = z.object({
|
|
10
|
-
apiKeyId: z.string(),
|
|
11
|
-
query: z.string().optional(),
|
|
12
|
-
type: z.enum(["factual", "episodic", "procedural", "semantic"]).optional(),
|
|
13
|
-
maxTokens: z.number().int().positive().max(8e3).optional(),
|
|
14
|
-
limit: z.number().int().positive().max(100).optional()
|
|
15
|
-
});
|
|
16
|
-
const MemoryAddSchema = z.object({
|
|
17
|
-
apiKeyId: z.string(),
|
|
18
|
-
sessionId: z.string().optional(),
|
|
19
|
-
type: z.enum(["factual", "episodic", "procedural", "semantic"]),
|
|
20
|
-
key: z.string().min(1),
|
|
21
|
-
content: z.string().min(1),
|
|
22
|
-
metadata: z.record(z.string(), z.unknown()).optional()
|
|
23
|
-
});
|
|
24
|
-
const MemoryClearSchema = z.object({
|
|
25
|
-
apiKeyId: z.string(),
|
|
26
|
-
type: z.enum(["factual", "episodic", "procedural", "semantic"]).optional(),
|
|
27
|
-
olderThan: z.string().optional()
|
|
28
|
-
});
|
|
29
|
-
const memoryTools = {
|
|
30
|
-
omniroute_memory_search: {
|
|
31
|
-
name: "omniroute_memory_search",
|
|
32
|
-
description: "Search memories by query, type, or API key with token budget enforcement",
|
|
33
|
-
scopes: ["read:memory"],
|
|
34
|
-
inputSchema: MemorySearchSchema,
|
|
35
|
-
handler: async (args) => {
|
|
36
|
-
const memorySettings = await getMemorySettings().catch(() => null) ?? DEFAULT_MEMORY_SETTINGS;
|
|
37
|
-
const baseConfig = toMemoryRetrievalConfig(memorySettings, {
|
|
38
|
-
query: args.query
|
|
39
|
-
});
|
|
40
|
-
const config = {
|
|
41
|
-
...baseConfig,
|
|
42
|
-
enabled: true,
|
|
43
|
-
maxTokens: args.maxTokens ?? (memorySettings.enabled ? memorySettings.maxTokens : DEFAULT_MEMORY_SETTINGS.maxTokens)
|
|
44
|
-
};
|
|
45
|
-
const memories = await retrieveMemories(args.apiKeyId, config);
|
|
46
|
-
const filtered = args.type ? memories.filter((m) => m.type === args.type) : memories;
|
|
47
|
-
const limited = args.limit ? filtered.slice(0, args.limit) : filtered;
|
|
48
|
-
return {
|
|
49
|
-
success: true,
|
|
50
|
-
data: {
|
|
51
|
-
memories: limited,
|
|
52
|
-
count: limited.length,
|
|
53
|
-
totalTokens: limited.reduce((sum, m) => sum + Math.ceil(m.content.length / 4), 0)
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
omniroute_memory_add: {
|
|
59
|
-
name: "omniroute_memory_add",
|
|
60
|
-
description: "Add a new memory entry",
|
|
61
|
-
scopes: ["write:memory"],
|
|
62
|
-
inputSchema: MemoryAddSchema,
|
|
63
|
-
handler: async (args) => {
|
|
64
|
-
const memory = await createMemory({
|
|
65
|
-
apiKeyId: args.apiKeyId,
|
|
66
|
-
sessionId: args.sessionId || "",
|
|
67
|
-
type: args.type,
|
|
68
|
-
key: args.key,
|
|
69
|
-
content: args.content,
|
|
70
|
-
metadata: args.metadata || {},
|
|
71
|
-
expiresAt: null
|
|
72
|
-
});
|
|
73
|
-
return {
|
|
74
|
-
success: true,
|
|
75
|
-
data: {
|
|
76
|
-
memory,
|
|
77
|
-
message: "Memory created successfully"
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
omniroute_memory_clear: {
|
|
83
|
-
name: "omniroute_memory_clear",
|
|
84
|
-
description: "Clear memories for an API key, optionally filtered by type or age",
|
|
85
|
-
scopes: ["write:memory"],
|
|
86
|
-
inputSchema: MemoryClearSchema,
|
|
87
|
-
handler: async (args) => {
|
|
88
|
-
const result = await listMemories({
|
|
89
|
-
apiKeyId: args.apiKeyId,
|
|
90
|
-
type: args.type
|
|
91
|
-
});
|
|
92
|
-
const existingMemories = Array.isArray(result) ? result : Array.isArray(result?.data) ? result.data : [];
|
|
93
|
-
let toDelete = existingMemories;
|
|
94
|
-
if (args.olderThan) {
|
|
95
|
-
const cutoff = new Date(args.olderThan);
|
|
96
|
-
toDelete = existingMemories.filter((m) => new Date(m.createdAt) < cutoff);
|
|
97
|
-
}
|
|
98
|
-
let deletedCount = 0;
|
|
99
|
-
for (const memory of toDelete) {
|
|
100
|
-
await deleteMemory(memory.id);
|
|
101
|
-
deletedCount++;
|
|
102
|
-
}
|
|
103
|
-
return {
|
|
104
|
-
success: true,
|
|
105
|
-
data: {
|
|
106
|
-
deletedCount,
|
|
107
|
-
message: `Cleared ${deletedCount} memories`
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
};
|
|
113
|
-
export {
|
|
114
|
-
MemoryAddSchema,
|
|
115
|
-
MemoryClearSchema,
|
|
116
|
-
MemorySearchSchema,
|
|
117
|
-
memoryTools
|
|
118
|
-
};
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { createNotionClient } from '../../../dist/lib/notion/api.ts.js';
|
|
3
|
-
import { getNotionToken } from '../../../dist/lib/db/notion.ts.js';
|
|
4
|
-
function requireToken() {
|
|
5
|
-
const token = getNotionToken();
|
|
6
|
-
if (!token) throw new Error("Notion integration token not configured. Set it in Settings > Context Sources.");
|
|
7
|
-
return token;
|
|
8
|
-
}
|
|
9
|
-
const notionTools = [
|
|
10
|
-
{
|
|
11
|
-
name: "notion_search",
|
|
12
|
-
description: "Search pages and databases in Notion by text query. Returns matching page titles, IDs, and URL.",
|
|
13
|
-
scopes: ["read:notion"],
|
|
14
|
-
inputSchema: z.object({
|
|
15
|
-
query: z.string().min(1).max(500).describe("Search query text"),
|
|
16
|
-
pageSize: z.number().min(1).max(100).default(20).describe("Results per page (max 100)"),
|
|
17
|
-
startCursor: z.string().optional().describe("Pagination cursor")
|
|
18
|
-
}),
|
|
19
|
-
handler: async (args) => {
|
|
20
|
-
const client = createNotionClient(requireToken());
|
|
21
|
-
return client.searchPagesAndDatabases(args.query, args.startCursor, args.pageSize);
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
name: "notion_get_page",
|
|
26
|
-
description: "Get the content and metadata of a Notion page by its ID.",
|
|
27
|
-
scopes: ["read:notion"],
|
|
28
|
-
inputSchema: z.object({
|
|
29
|
-
pageId: z.string().min(1).describe("Notion page ID (32-char hex or UUID)")
|
|
30
|
-
}),
|
|
31
|
-
handler: async (args) => {
|
|
32
|
-
const client = createNotionClient(requireToken());
|
|
33
|
-
return client.getPage(args.pageId);
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
name: "notion_list_block_children",
|
|
38
|
-
description: "List all block children of a Notion block or page. Returns the block tree structure.",
|
|
39
|
-
scopes: ["read:notion"],
|
|
40
|
-
inputSchema: z.object({
|
|
41
|
-
blockId: z.string().min(1).describe("Block ID to fetch children from"),
|
|
42
|
-
pageSize: z.number().min(1).max(100).default(50).describe("Blocks per page (max 100)"),
|
|
43
|
-
startCursor: z.string().optional().describe("Pagination cursor")
|
|
44
|
-
}),
|
|
45
|
-
handler: async (args) => {
|
|
46
|
-
const client = createNotionClient(requireToken());
|
|
47
|
-
return client.listBlockChildren(args.blockId, args.startCursor, args.pageSize);
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
name: "notion_query_database",
|
|
52
|
-
description: "Query a Notion database with optional filters and sorts. Returns matching entries.",
|
|
53
|
-
scopes: ["read:notion"],
|
|
54
|
-
inputSchema: z.object({
|
|
55
|
-
databaseId: z.string().min(1).describe("Notion database ID (32-char hex or UUID)"),
|
|
56
|
-
filter: z.unknown().optional().describe("Optional filter object (Notion API filter format)"),
|
|
57
|
-
sorts: z.array(z.unknown()).optional().describe("Optional sort array (Notion API sort format)"),
|
|
58
|
-
pageSize: z.number().min(1).max(100).default(50).describe("Results per page (max 100)"),
|
|
59
|
-
startCursor: z.string().optional().describe("Pagination cursor")
|
|
60
|
-
}),
|
|
61
|
-
handler: async (args) => {
|
|
62
|
-
const client = createNotionClient(requireToken());
|
|
63
|
-
return client.queryDatabase(
|
|
64
|
-
args.databaseId,
|
|
65
|
-
args.filter,
|
|
66
|
-
args.sorts,
|
|
67
|
-
args.startCursor,
|
|
68
|
-
args.pageSize
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
name: "notion_get_database",
|
|
74
|
-
description: "Get metadata and schema of a Notion database by its ID.",
|
|
75
|
-
scopes: ["read:notion"],
|
|
76
|
-
inputSchema: z.object({
|
|
77
|
-
databaseId: z.string().min(1).describe("Notion database ID (32-char hex or UUID)")
|
|
78
|
-
}),
|
|
79
|
-
handler: async (args) => {
|
|
80
|
-
const client = createNotionClient(requireToken());
|
|
81
|
-
return client.getDatabase(args.databaseId);
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
name: "notion_append_blocks",
|
|
86
|
-
description: "Append block children to an existing Notion block or page. Maximum 100 blocks per request.",
|
|
87
|
-
scopes: ["write:notion"],
|
|
88
|
-
inputSchema: z.object({
|
|
89
|
-
blockId: z.string().min(1).describe("Target block or page ID to append to"),
|
|
90
|
-
children: z.array(z.unknown()).describe("Array of block objects to append"),
|
|
91
|
-
after: z.string().optional().describe("Block ID to append after (position parameter)")
|
|
92
|
-
}),
|
|
93
|
-
handler: async (args) => {
|
|
94
|
-
const client = createNotionClient(requireToken());
|
|
95
|
-
return client.appendBlocks(args.blockId, args.children, args.after);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
];
|
|
99
|
-
export {
|
|
100
|
-
notionTools
|
|
101
|
-
};
|
|
@@ -1,307 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { createObsidianClient, createSyncServerClient, getSyncToken } from '../../../dist/lib/obsidian/api.ts.js';
|
|
3
|
-
import {
|
|
4
|
-
getObsidianConfigForApiKey
|
|
5
|
-
} from '../../../dist/lib/db/obsidian.ts.js';
|
|
6
|
-
function extractApiKeyId(extra) {
|
|
7
|
-
const id = extra?.authInfo?.clientId;
|
|
8
|
-
return typeof id === "string" && id.length > 0 && id !== "anonymous" && id !== "env-key" ? id : void 0;
|
|
9
|
-
}
|
|
10
|
-
function requireToken(apiKeyId) {
|
|
11
|
-
const config = getObsidianConfigForApiKey(apiKeyId);
|
|
12
|
-
if (!config.token) {
|
|
13
|
-
throw new Error(
|
|
14
|
-
"Obsidian API token not configured. Set it in Settings > Context Sources" + (apiKeyId ? " or in your API key's context source settings" : "") + "."
|
|
15
|
-
);
|
|
16
|
-
}
|
|
17
|
-
return config.token;
|
|
18
|
-
}
|
|
19
|
-
function getClient(apiKeyId) {
|
|
20
|
-
const config = getObsidianConfigForApiKey(apiKeyId);
|
|
21
|
-
const token = requireToken(apiKeyId);
|
|
22
|
-
return createObsidianClient(token, config.baseUrl);
|
|
23
|
-
}
|
|
24
|
-
const obsidianTools = [
|
|
25
|
-
{
|
|
26
|
-
name: "obsidian_check_status",
|
|
27
|
-
description: "Check whether the Obsidian Local REST API is reachable and authenticated. Returns connection status.",
|
|
28
|
-
scopes: ["read:obsidian"],
|
|
29
|
-
inputSchema: z.object({}),
|
|
30
|
-
handler: async (_args, extra) => {
|
|
31
|
-
const client = getClient(extractApiKeyId(extra));
|
|
32
|
-
return client.checkStatus();
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
name: "obsidian_search_simple",
|
|
37
|
-
description: "Search note content in Obsidian vault by text query. Returns matching snippets with file paths.",
|
|
38
|
-
scopes: ["read:obsidian"],
|
|
39
|
-
inputSchema: z.object({
|
|
40
|
-
query: z.string().min(1).max(500).describe("Search query text"),
|
|
41
|
-
contextLength: z.number().min(20).max(500).default(100).describe("Characters of context around each match")
|
|
42
|
-
}),
|
|
43
|
-
handler: async (args, extra) => {
|
|
44
|
-
const client = getClient(extractApiKeyId(extra));
|
|
45
|
-
return client.searchSimple(args.query, args.contextLength);
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
name: "obsidian_search_structured",
|
|
50
|
-
description: "Search Obsidian vault using a JSON Logic expression for complex queries (and, or, regex, path filters, etc.).",
|
|
51
|
-
scopes: ["read:obsidian"],
|
|
52
|
-
inputSchema: z.object({
|
|
53
|
-
jsonLogic: z.unknown().describe("JSON Logic expression for the search query")
|
|
54
|
-
}),
|
|
55
|
-
handler: async (args, extra) => {
|
|
56
|
-
const client = getClient(extractApiKeyId(extra));
|
|
57
|
-
return client.searchStructured(args.jsonLogic);
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
name: "obsidian_read_note",
|
|
62
|
-
description: "Read the full content of a note in the Obsidian vault by its vault-relative path. Optionally target a specific heading or block.",
|
|
63
|
-
scopes: ["read:obsidian"],
|
|
64
|
-
inputSchema: z.object({
|
|
65
|
-
path: z.string().min(1).describe("Vault-relative path (e.g., 'notes/my-note.md')"),
|
|
66
|
-
targetType: z.enum(["heading", "block", "frontmatter"]).optional().describe("Scope the read to a specific type of target"),
|
|
67
|
-
target: z.string().optional().describe("Target identifier: heading text, block index (e.g., '^block-id'), or 'frontmatter'")
|
|
68
|
-
}),
|
|
69
|
-
handler: async (args, extra) => {
|
|
70
|
-
const client = getClient(extractApiKeyId(extra));
|
|
71
|
-
return client.readNote(args.path, args.targetType, args.target);
|
|
72
|
-
}
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
name: "obsidian_list_vault",
|
|
76
|
-
description: "List files and directories in the Obsidian vault. Returns a tree of file/folder entries.",
|
|
77
|
-
scopes: ["read:obsidian"],
|
|
78
|
-
inputSchema: z.object({
|
|
79
|
-
path: z.string().optional().default("").describe("Vault-relative directory path to list (empty for root)")
|
|
80
|
-
}),
|
|
81
|
-
handler: async (args, extra) => {
|
|
82
|
-
const client = getClient(extractApiKeyId(extra));
|
|
83
|
-
return client.listVault(args.path);
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
name: "obsidian_get_document_map",
|
|
88
|
-
description: "Get the document structure of a note as a map of headings and their line numbers.",
|
|
89
|
-
scopes: ["read:obsidian"],
|
|
90
|
-
inputSchema: z.object({
|
|
91
|
-
path: z.string().min(1).describe("Vault-relative path to the note")
|
|
92
|
-
}),
|
|
93
|
-
handler: async (args, extra) => {
|
|
94
|
-
const client = getClient(extractApiKeyId(extra));
|
|
95
|
-
return client.getDocumentMap(args.path);
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: "obsidian_get_note_metadata",
|
|
100
|
-
description: "Get metadata (frontmatter, tags, links, char/word count) for a note without reading its full content.",
|
|
101
|
-
scopes: ["read:obsidian"],
|
|
102
|
-
inputSchema: z.object({
|
|
103
|
-
path: z.string().min(1).describe("Vault-relative path to the note")
|
|
104
|
-
}),
|
|
105
|
-
handler: async (args, extra) => {
|
|
106
|
-
const client = getClient(extractApiKeyId(extra));
|
|
107
|
-
return client.getNoteMetadata(args.path);
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
name: "obsidian_get_active_file",
|
|
112
|
-
description: "Get the path and content of the currently active file in Obsidian.",
|
|
113
|
-
scopes: ["read:obsidian"],
|
|
114
|
-
inputSchema: z.object({}),
|
|
115
|
-
handler: async (_args, extra) => {
|
|
116
|
-
const client = getClient(extractApiKeyId(extra));
|
|
117
|
-
return client.getActiveFile();
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
name: "obsidian_get_periodic_note",
|
|
122
|
-
description: "Get the daily, weekly, or monthly periodic note for a given date (or today if no date specified).",
|
|
123
|
-
scopes: ["read:obsidian"],
|
|
124
|
-
inputSchema: z.object({
|
|
125
|
-
period: z.enum(["daily", "weekly", "monthly"]).describe("Period type"),
|
|
126
|
-
year: z.number().int().optional().describe("Year (required if month/day provided)"),
|
|
127
|
-
month: z.number().int().min(1).max(12).optional().describe("Month"),
|
|
128
|
-
day: z.number().int().min(1).max(31).optional().describe("Day")
|
|
129
|
-
}),
|
|
130
|
-
handler: async (args, extra) => {
|
|
131
|
-
const client = getClient(extractApiKeyId(extra));
|
|
132
|
-
return client.getPeriodicNote(args.period, args.year, args.month, args.day);
|
|
133
|
-
}
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
name: "obsidian_get_tags",
|
|
137
|
-
description: "List all tags used across the Obsidian vault with their frequencies.",
|
|
138
|
-
scopes: ["read:obsidian"],
|
|
139
|
-
inputSchema: z.object({}),
|
|
140
|
-
handler: async (_args, extra) => {
|
|
141
|
-
const client = getClient(extractApiKeyId(extra));
|
|
142
|
-
return client.getTags();
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
|
-
{
|
|
146
|
-
name: "obsidian_list_commands",
|
|
147
|
-
description: "List all available Obsidian commands with their IDs and names. Use IDs with obsidian_execute_command.",
|
|
148
|
-
scopes: ["read:obsidian"],
|
|
149
|
-
inputSchema: z.object({}),
|
|
150
|
-
handler: async (_args, extra) => {
|
|
151
|
-
const client = getClient(extractApiKeyId(extra));
|
|
152
|
-
return client.commandList();
|
|
153
|
-
}
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
name: "obsidian_write_note",
|
|
157
|
-
description: "Create or overwrite a note in the Obsidian vault with the given markdown content.",
|
|
158
|
-
scopes: ["write:obsidian"],
|
|
159
|
-
inputSchema: z.object({
|
|
160
|
-
path: z.string().min(1).describe("Vault-relative path to write to (e.g., 'notes/new-note.md')"),
|
|
161
|
-
content: z.string().min(1).describe("Full markdown content to write")
|
|
162
|
-
}),
|
|
163
|
-
handler: async (args, extra) => {
|
|
164
|
-
const client = getClient(extractApiKeyId(extra));
|
|
165
|
-
await client.writeNote(args.path, args.content);
|
|
166
|
-
return { success: true, message: `Note written to ${args.path}` };
|
|
167
|
-
}
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
name: "obsidian_append_note",
|
|
171
|
-
description: "Append content to an existing note. Optionally append to a specific heading or block.",
|
|
172
|
-
scopes: ["write:obsidian"],
|
|
173
|
-
inputSchema: z.object({
|
|
174
|
-
path: z.string().min(1).describe("Vault-relative path to the note"),
|
|
175
|
-
content: z.string().min(1).describe("Markdown content to append"),
|
|
176
|
-
targetType: z.enum(["heading", "block", "frontmatter"]).optional().describe("Target type to append to"),
|
|
177
|
-
target: z.string().optional().describe("Target identifier (heading text, block index, or 'frontmatter')")
|
|
178
|
-
}),
|
|
179
|
-
handler: async (args, extra) => {
|
|
180
|
-
const client = getClient(extractApiKeyId(extra));
|
|
181
|
-
await client.appendNote(args.path, args.content, args.targetType, args.target);
|
|
182
|
-
return { success: true, message: `Content appended to ${args.path}` };
|
|
183
|
-
}
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
name: "obsidian_patch_note",
|
|
187
|
-
description: "Surgically patch a note \u2014 append, prepend, or replace content at a specific heading, block, or frontmatter field.",
|
|
188
|
-
scopes: ["write:obsidian"],
|
|
189
|
-
inputSchema: z.object({
|
|
190
|
-
path: z.string().min(1).describe("Vault-relative path to the note"),
|
|
191
|
-
operation: z.enum(["append", "prepend", "replace"]).describe("Patch operation"),
|
|
192
|
-
targetType: z.enum(["heading", "block", "frontmatter"]).describe("Target type"),
|
|
193
|
-
target: z.string().min(1).describe("Target identifier: heading text, block ID, or frontmatter key"),
|
|
194
|
-
content: z.string().min(1).describe("Content to apply with the patch operation"),
|
|
195
|
-
createTargetIfMissing: z.boolean().optional().default(false).describe("Create the target heading/block if it does not exist")
|
|
196
|
-
}),
|
|
197
|
-
handler: async (args, extra) => {
|
|
198
|
-
const client = getClient(extractApiKeyId(extra));
|
|
199
|
-
return client.patchNote(args.path, args.operation, args.targetType, args.target, args.content, args.createTargetIfMissing);
|
|
200
|
-
}
|
|
201
|
-
},
|
|
202
|
-
{
|
|
203
|
-
name: "obsidian_delete_note",
|
|
204
|
-
description: "Permanently delete a note from the Obsidian vault.",
|
|
205
|
-
scopes: ["write:obsidian"],
|
|
206
|
-
inputSchema: z.object({
|
|
207
|
-
path: z.string().min(1).describe("Vault-relative path to the note to delete")
|
|
208
|
-
}),
|
|
209
|
-
handler: async (args, extra) => {
|
|
210
|
-
const client = getClient(extractApiKeyId(extra));
|
|
211
|
-
await client.deleteNote(args.path);
|
|
212
|
-
return { success: true, message: `Deleted ${args.path}` };
|
|
213
|
-
}
|
|
214
|
-
},
|
|
215
|
-
{
|
|
216
|
-
name: "obsidian_move_note",
|
|
217
|
-
description: "Move or rename a note within the Obsidian vault.",
|
|
218
|
-
scopes: ["write:obsidian"],
|
|
219
|
-
inputSchema: z.object({
|
|
220
|
-
path: z.string().min(1).describe("Current vault-relative path"),
|
|
221
|
-
destination: z.string().min(1).describe("New vault-relative path (can include new parent directory)")
|
|
222
|
-
}),
|
|
223
|
-
handler: async (args, extra) => {
|
|
224
|
-
const client = getClient(extractApiKeyId(extra));
|
|
225
|
-
await client.moveNote(args.path, args.destination);
|
|
226
|
-
return { success: true, message: `Moved ${args.path} to ${args.destination}` };
|
|
227
|
-
}
|
|
228
|
-
},
|
|
229
|
-
{
|
|
230
|
-
name: "obsidian_execute_command",
|
|
231
|
-
description: "Execute an Obsidian command by its command ID. Use obsidian_list_commands to discover available command IDs.",
|
|
232
|
-
scopes: ["write:obsidian"],
|
|
233
|
-
inputSchema: z.object({
|
|
234
|
-
commandId: z.string().min(1).describe("Obsidian command ID (e.g., 'editor:insert-link')")
|
|
235
|
-
}),
|
|
236
|
-
handler: async (args, extra) => {
|
|
237
|
-
const client = getClient(extractApiKeyId(extra));
|
|
238
|
-
await client.executeCommand(args.commandId);
|
|
239
|
-
return { success: true, message: `Executed command: ${args.commandId}` };
|
|
240
|
-
}
|
|
241
|
-
},
|
|
242
|
-
{
|
|
243
|
-
name: "obsidian_open_file",
|
|
244
|
-
description: "Open a file in Obsidian. If the file exists it opens in the editor; if not, it creates a new file.",
|
|
245
|
-
scopes: ["write:obsidian"],
|
|
246
|
-
inputSchema: z.object({
|
|
247
|
-
path: z.string().min(1).describe("Vault-relative path to the file to open")
|
|
248
|
-
}),
|
|
249
|
-
handler: async (args, extra) => {
|
|
250
|
-
const client = getClient(extractApiKeyId(extra));
|
|
251
|
-
await client.openFile(args.path);
|
|
252
|
-
return { success: true, message: `Opened ${args.path} in Obsidian` };
|
|
253
|
-
}
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
name: "obsidian_sync_status",
|
|
257
|
-
description: "Get the OmniRoute sync plugin status: whether the server is running, vault name, port, uptime, and last sync results. Requires the sync auth token to be configured in OmniRoute settings.",
|
|
258
|
-
scopes: ["read:obsidian"],
|
|
259
|
-
inputSchema: z.object({}),
|
|
260
|
-
handler: async (_args, extra) => {
|
|
261
|
-
const token = getSyncToken() || requireToken(extractApiKeyId(extra));
|
|
262
|
-
const syncClient = createSyncServerClient(token);
|
|
263
|
-
return syncClient.getStatus();
|
|
264
|
-
}
|
|
265
|
-
},
|
|
266
|
-
{
|
|
267
|
-
name: "obsidian_sync_trigger",
|
|
268
|
-
description: "Trigger an immediate bidirectional sync between desktop and mobile Obsidian vaults. Returns the sync result (files pulled, pushed, deleted, conflicts). Requires the sync auth token to be configured in OmniRoute settings.",
|
|
269
|
-
scopes: ["write:obsidian"],
|
|
270
|
-
inputSchema: z.object({}),
|
|
271
|
-
handler: async (_args, extra) => {
|
|
272
|
-
const token = getSyncToken() || requireToken(extractApiKeyId(extra));
|
|
273
|
-
const syncClient = createSyncServerClient(token);
|
|
274
|
-
const result = await syncClient.triggerSync();
|
|
275
|
-
return { success: true, ...result };
|
|
276
|
-
}
|
|
277
|
-
},
|
|
278
|
-
{
|
|
279
|
-
name: "obsidian_sync_conflicts",
|
|
280
|
-
description: "List unresolved sync conflicts. Each conflict shows the file path, conflict file path, and when it was detected. Requires the sync auth token to be configured in OmniRoute settings.",
|
|
281
|
-
scopes: ["read:obsidian"],
|
|
282
|
-
inputSchema: z.object({}),
|
|
283
|
-
handler: async (_args, extra) => {
|
|
284
|
-
const token = getSyncToken() || requireToken(extractApiKeyId(extra));
|
|
285
|
-
const syncClient = createSyncServerClient(token);
|
|
286
|
-
return syncClient.getConflicts();
|
|
287
|
-
}
|
|
288
|
-
},
|
|
289
|
-
{
|
|
290
|
-
name: "obsidian_sync_resolve_conflict",
|
|
291
|
-
description: "Resolve a sync conflict by choosing which version to keep. Use 'local' for the mobile version, 'remote' for the desktop version, or 'keep-both' to preserve both. Requires the sync auth token to be configured in OmniRoute settings.",
|
|
292
|
-
scopes: ["write:obsidian"],
|
|
293
|
-
inputSchema: z.object({
|
|
294
|
-
path: z.string().min(1).describe("Vault-relative path of the conflicting file (without .conflict- suffix)"),
|
|
295
|
-
resolution: z.enum(["local", "remote", "keep-both"]).describe("Which version to keep: local (mobile), remote (desktop), or keep-both")
|
|
296
|
-
}),
|
|
297
|
-
handler: async (args, extra) => {
|
|
298
|
-
const token = getSyncToken() || requireToken(extractApiKeyId(extra));
|
|
299
|
-
const syncClient = createSyncServerClient(token);
|
|
300
|
-
const result = await syncClient.resolveConflict(args.path, args.resolution);
|
|
301
|
-
return { success: true, result };
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
];
|
|
305
|
-
export {
|
|
306
|
-
obsidianTools
|
|
307
|
-
};
|