@sriinnu/kosha-discovery 1.2.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/README.md +125 -52
  2. package/dist/aliases.d.ts +6 -1
  3. package/dist/aliases.d.ts.map +1 -1
  4. package/dist/aliases.js +38 -12
  5. package/dist/aliases.js.map +1 -1
  6. package/dist/cache.d.ts.map +1 -1
  7. package/dist/cache.js +40 -3
  8. package/dist/cache.js.map +1 -1
  9. package/dist/claude-generation.d.ts +59 -0
  10. package/dist/claude-generation.d.ts.map +1 -0
  11. package/dist/claude-generation.js +117 -0
  12. package/dist/claude-generation.js.map +1 -0
  13. package/dist/cli-cmd-doctor.d.ts +17 -0
  14. package/dist/cli-cmd-doctor.d.ts.map +1 -0
  15. package/dist/cli-cmd-doctor.js +199 -0
  16. package/dist/cli-cmd-doctor.js.map +1 -0
  17. package/dist/cli-cmd-model.js +2 -2
  18. package/dist/cli-cmd-model.js.map +1 -1
  19. package/dist/cli-cmd-spend.d.ts +10 -0
  20. package/dist/cli-cmd-spend.d.ts.map +1 -0
  21. package/dist/cli-cmd-spend.js +130 -0
  22. package/dist/cli-cmd-spend.js.map +1 -0
  23. package/dist/cli-commands.d.ts +4 -1
  24. package/dist/cli-commands.d.ts.map +1 -1
  25. package/dist/cli-commands.js +10 -2
  26. package/dist/cli-commands.js.map +1 -1
  27. package/dist/cli-format.js.map +1 -1
  28. package/dist/cli-help.d.ts.map +1 -1
  29. package/dist/cli-help.js +13 -2
  30. package/dist/cli-help.js.map +1 -1
  31. package/dist/cli.js +10 -0
  32. package/dist/cli.js.map +1 -1
  33. package/dist/cost.d.ts +152 -0
  34. package/dist/cost.d.ts.map +1 -0
  35. package/dist/cost.js +377 -0
  36. package/dist/cost.js.map +1 -0
  37. package/dist/credentials/resolver.d.ts +10 -0
  38. package/dist/credentials/resolver.d.ts.map +1 -1
  39. package/dist/credentials/resolver.js +64 -31
  40. package/dist/credentials/resolver.js.map +1 -1
  41. package/dist/discovery/anthropic.d.ts +19 -1
  42. package/dist/discovery/anthropic.d.ts.map +1 -1
  43. package/dist/discovery/anthropic.js +112 -8
  44. package/dist/discovery/anthropic.js.map +1 -1
  45. package/dist/discovery/base.d.ts +7 -0
  46. package/dist/discovery/base.d.ts.map +1 -1
  47. package/dist/discovery/base.js +32 -4
  48. package/dist/discovery/base.js.map +1 -1
  49. package/dist/discovery/bedrock.d.ts.map +1 -1
  50. package/dist/discovery/cerebras.d.ts.map +1 -1
  51. package/dist/discovery/cohere.d.ts.map +1 -1
  52. package/dist/discovery/deepinfra.d.ts.map +1 -1
  53. package/dist/discovery/deepseek.d.ts.map +1 -1
  54. package/dist/discovery/fireworks.d.ts.map +1 -1
  55. package/dist/discovery/glm.d.ts.map +1 -1
  56. package/dist/discovery/google.d.ts +3 -1
  57. package/dist/discovery/google.d.ts.map +1 -1
  58. package/dist/discovery/google.js +13 -6
  59. package/dist/discovery/google.js.map +1 -1
  60. package/dist/discovery/groq.d.ts.map +1 -1
  61. package/dist/discovery/index.d.ts +2 -0
  62. package/dist/discovery/index.d.ts.map +1 -1
  63. package/dist/discovery/index.js +6 -0
  64. package/dist/discovery/index.js.map +1 -1
  65. package/dist/discovery/llama-cpp.d.ts.map +1 -1
  66. package/dist/discovery/lmstudio.d.ts +26 -0
  67. package/dist/discovery/lmstudio.d.ts.map +1 -0
  68. package/dist/discovery/lmstudio.js +93 -0
  69. package/dist/discovery/lmstudio.js.map +1 -0
  70. package/dist/discovery/minimax.d.ts.map +1 -1
  71. package/dist/discovery/mistral.d.ts.map +1 -1
  72. package/dist/discovery/moonshot.d.ts.map +1 -1
  73. package/dist/discovery/nvidia.d.ts.map +1 -1
  74. package/dist/discovery/ollama.d.ts.map +1 -1
  75. package/dist/discovery/openai-compatible.d.ts.map +1 -1
  76. package/dist/discovery/openai.d.ts.map +1 -1
  77. package/dist/discovery/openrouter.d.ts +29 -5
  78. package/dist/discovery/openrouter.d.ts.map +1 -1
  79. package/dist/discovery/openrouter.js +56 -18
  80. package/dist/discovery/openrouter.js.map +1 -1
  81. package/dist/discovery/perplexity.d.ts.map +1 -1
  82. package/dist/discovery/promo-overrides.js.map +1 -1
  83. package/dist/discovery/static-direct.d.ts +9 -1
  84. package/dist/discovery/static-direct.d.ts.map +1 -1
  85. package/dist/discovery/static-direct.js +68 -7
  86. package/dist/discovery/static-direct.js.map +1 -1
  87. package/dist/discovery/together.d.ts.map +1 -1
  88. package/dist/discovery/vercel.d.ts.map +1 -1
  89. package/dist/discovery/vertex.d.ts.map +1 -1
  90. package/dist/discovery/vllm.d.ts +26 -0
  91. package/dist/discovery/vllm.d.ts.map +1 -0
  92. package/dist/discovery/vllm.js +93 -0
  93. package/dist/discovery/vllm.js.map +1 -0
  94. package/dist/discovery/zai.d.ts.map +1 -1
  95. package/dist/discovery-contract.d.ts +7 -0
  96. package/dist/discovery-contract.d.ts.map +1 -1
  97. package/dist/discovery-contract.js.map +1 -1
  98. package/dist/discovery-routes.d.ts +9 -0
  99. package/dist/discovery-routes.d.ts.map +1 -1
  100. package/dist/discovery-routes.js +106 -18
  101. package/dist/discovery-routes.js.map +1 -1
  102. package/dist/enrichment/litellm.d.ts +1 -1
  103. package/dist/enrichment/litellm.d.ts.map +1 -1
  104. package/dist/enrichment/litellm.js +3 -3
  105. package/dist/entry.d.ts +14 -0
  106. package/dist/entry.d.ts.map +1 -0
  107. package/dist/entry.js +26 -0
  108. package/dist/entry.js.map +1 -0
  109. package/dist/index.d.ts +10 -0
  110. package/dist/index.d.ts.map +1 -1
  111. package/dist/index.js +5 -0
  112. package/dist/index.js.map +1 -1
  113. package/dist/mcp-server.d.ts +207 -2
  114. package/dist/mcp-server.d.ts.map +1 -1
  115. package/dist/mcp-server.js +203 -51
  116. package/dist/mcp-server.js.map +1 -1
  117. package/dist/model-features.d.ts.map +1 -1
  118. package/dist/model-features.js +11 -2
  119. package/dist/model-features.js.map +1 -1
  120. package/dist/normalize.d.ts +7 -7
  121. package/dist/normalize.js +8 -8
  122. package/dist/provider-catalog.d.ts.map +1 -1
  123. package/dist/provider-catalog.js +26 -0
  124. package/dist/provider-catalog.js.map +1 -1
  125. package/dist/proxy.d.ts +49 -7
  126. package/dist/proxy.d.ts.map +1 -1
  127. package/dist/proxy.js +754 -89
  128. package/dist/proxy.js.map +1 -1
  129. package/dist/registry-query.js +2 -2
  130. package/dist/registry-query.js.map +1 -1
  131. package/dist/registry-routing.d.ts +65 -0
  132. package/dist/registry-routing.d.ts.map +1 -0
  133. package/dist/registry-routing.js +165 -0
  134. package/dist/registry-routing.js.map +1 -0
  135. package/dist/registry-runtime.d.ts +2 -0
  136. package/dist/registry-runtime.d.ts.map +1 -1
  137. package/dist/registry-runtime.js +177 -23
  138. package/dist/registry-runtime.js.map +1 -1
  139. package/dist/registry-selection.js +6 -0
  140. package/dist/registry-selection.js.map +1 -1
  141. package/dist/registry.d.ts +69 -0
  142. package/dist/registry.d.ts.map +1 -1
  143. package/dist/registry.js +133 -1
  144. package/dist/registry.js.map +1 -1
  145. package/dist/resilience.d.ts +15 -0
  146. package/dist/resilience.d.ts.map +1 -1
  147. package/dist/resilience.js +23 -1
  148. package/dist/resilience.js.map +1 -1
  149. package/dist/server.d.ts +44 -2
  150. package/dist/server.d.ts.map +1 -1
  151. package/dist/server.js +328 -33
  152. package/dist/server.js.map +1 -1
  153. package/dist/tally.d.ts +80 -0
  154. package/dist/tally.d.ts.map +1 -0
  155. package/dist/tally.js +176 -0
  156. package/dist/tally.js.map +1 -0
  157. package/dist/types.d.ts +22 -1
  158. package/dist/types.d.ts.map +1 -1
  159. package/dist/wire-anthropic.d.ts +264 -0
  160. package/dist/wire-anthropic.d.ts.map +1 -0
  161. package/dist/wire-anthropic.js +960 -0
  162. package/dist/wire-anthropic.js.map +1 -0
  163. package/package.json +14 -10
  164. package/logo.png +0 -0
@@ -1,18 +1,223 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * kosha-discovery — MCP server (stdio transport, protocol 2024-11-05).
3
+ * kosha-discovery — MCP server (stdio transport).
4
4
  *
5
5
  * Exposes the local kosha registry as MCP tools so AI agents can query
6
6
  * model pricing, routing, and health without HTTP.
7
7
  *
8
+ * Protocol: JSON-RPC 2.0 over newline-delimited stdio. The server speaks
9
+ * every MCP revision in {@link MCP_PROTOCOL_VERSIONS} and echoes the
10
+ * client's requested revision back when it is one of them (otherwise it
11
+ * answers with the newest it supports, per the MCP negotiation rule).
12
+ *
8
13
  * Tools:
9
14
  * kosha_query_models — list / filter models
10
15
  * kosha_cheapest_model — cheapest model meeting requirements
16
+ * kosha_ranked_routes — strategy-ranked routes (cheapest / fastest / reliable / balanced)
11
17
  * kosha_model_detail — full detail for one model
12
18
  * kosha_model_routes — all provider routes for a model
13
19
  * kosha_resolve_alias — alias → canonical ID
14
20
  * kosha_provider_health — provider auth + error status
21
+ * kosha_context_strategy — context-management advice for a long conversation
22
+ *
23
+ * The JSON-RPC handler ({@link handleJsonRpc}) is exported and pure over an
24
+ * injected registry loader so it can be unit-tested; the stdio loop only
25
+ * starts when this file is the process entry point.
15
26
  * @module
16
27
  */
17
- export {};
28
+ import { ModelRegistry } from "./registry.js";
29
+ /** Package version, read from package.json so `serverInfo.version` never drifts from the release. */
30
+ export declare const KOSHA_MCP_VERSION: string;
31
+ /** MCP protocol revisions this server implements, newest first. */
32
+ export declare const MCP_PROTOCOL_VERSIONS: readonly string[];
33
+ /**
34
+ * Pick the protocol revision to answer an `initialize` with: the client's
35
+ * own when we support it, otherwise our newest (the client then decides
36
+ * whether to proceed).
37
+ */
38
+ export declare function negotiateProtocolVersion(requested: unknown): string;
39
+ export interface JsonRpcMessage {
40
+ jsonrpc: "2.0";
41
+ id?: string | number | null;
42
+ method?: string;
43
+ params?: unknown;
44
+ result?: unknown;
45
+ error?: {
46
+ code: number;
47
+ message: string;
48
+ };
49
+ }
50
+ export declare const TOOLS: readonly [{
51
+ readonly name: "kosha_query_models";
52
+ readonly description: "List AI models from the local kosha registry. Optionally filter by provider, mode, or capability tag. Returns id, provider, name, mode, context window, capabilities, and pricing.";
53
+ readonly inputSchema: {
54
+ readonly type: "object";
55
+ readonly properties: {
56
+ readonly provider: {
57
+ readonly type: "string";
58
+ readonly description: "Provider ID (e.g. anthropic, openai, groq, openrouter)";
59
+ };
60
+ readonly mode: {
61
+ readonly type: "string";
62
+ readonly enum: readonly ["chat", "embedding", "image", "video", "audio", "moderation", "rerank"];
63
+ readonly description: "Primary model mode";
64
+ };
65
+ readonly capability: {
66
+ readonly type: "string";
67
+ readonly description: "Capability tag (e.g. vision, tool_use, code, reasoning)";
68
+ };
69
+ readonly limit: {
70
+ readonly type: "number";
71
+ readonly description: "Max results to return (default 20)";
72
+ };
73
+ };
74
+ };
75
+ }, {
76
+ readonly name: "kosha_cheapest_model";
77
+ readonly description: "Find the cheapest AI model that meets your requirements. Returns ranked matches with per-million token pricing. Use this before routing a request to pick the most cost-effective option.";
78
+ readonly inputSchema: {
79
+ readonly type: "object";
80
+ readonly properties: {
81
+ readonly capability: {
82
+ readonly type: "string";
83
+ readonly description: "Required capability (e.g. tool_use, vision, code, reasoning)";
84
+ };
85
+ readonly min_context_k: {
86
+ readonly type: "number";
87
+ readonly description: "Minimum context window in thousands of tokens (e.g. 128 means 128k)";
88
+ };
89
+ readonly provider: {
90
+ readonly type: "string";
91
+ readonly description: "Pin to a specific provider";
92
+ };
93
+ readonly limit: {
94
+ readonly type: "number";
95
+ readonly description: "Number of ranked results (default 5)";
96
+ };
97
+ };
98
+ };
99
+ }, {
100
+ readonly name: "kosha_ranked_routes";
101
+ readonly description: "Rank chat-model routes by strategy: cheapest (price only), fastest (observed p95 latency), reliable (circuit-breaker state plus timeout / auth-error history), or balanced (weighted blend of all three). Providers whose breaker is open always sort last, so the result doubles as a failover order. Accepts the same filters as kosha_cheapest_model.";
102
+ readonly inputSchema: {
103
+ readonly type: "object";
104
+ readonly properties: {
105
+ readonly strategy: {
106
+ readonly type: "string";
107
+ readonly enum: readonly ["cheapest", "fastest", "reliable", "balanced"];
108
+ readonly description: "Ranking strategy";
109
+ };
110
+ readonly capability: {
111
+ readonly type: "string";
112
+ readonly description: "Required capability tag (e.g. tool_use, vision)";
113
+ };
114
+ readonly min_context_k: {
115
+ readonly type: "number";
116
+ readonly description: "Minimum context window in thousands of tokens";
117
+ };
118
+ readonly provider: {
119
+ readonly type: "string";
120
+ readonly description: "Pin to a specific provider";
121
+ };
122
+ readonly limit: {
123
+ readonly type: "number";
124
+ readonly description: "Number of ranked results (default 5)";
125
+ };
126
+ };
127
+ readonly required: readonly ["strategy"];
128
+ };
129
+ }, {
130
+ readonly name: "kosha_model_detail";
131
+ readonly description: "Get full details for a specific model — pricing, capabilities, context window, tool dialect, structured output modes, status, and deprecation info.";
132
+ readonly inputSchema: {
133
+ readonly type: "object";
134
+ readonly properties: {
135
+ readonly model: {
136
+ readonly type: "string";
137
+ readonly description: "Model ID or alias (e.g. sonnet, claude-sonnet-5, gpt-4o, deepseek-v3)";
138
+ };
139
+ };
140
+ readonly required: readonly ["model"];
141
+ };
142
+ }, {
143
+ readonly name: "kosha_model_routes";
144
+ readonly description: "List all serving-layer routes for a model (direct provider, OpenRouter, Bedrock, Vertex, etc.) with pricing per route. Useful for finding the cheapest or most available path to a specific model.";
145
+ readonly inputSchema: {
146
+ readonly type: "object";
147
+ readonly properties: {
148
+ readonly model: {
149
+ readonly type: "string";
150
+ readonly description: "Model ID or alias";
151
+ };
152
+ };
153
+ readonly required: readonly ["model"];
154
+ };
155
+ }, {
156
+ readonly name: "kosha_resolve_alias";
157
+ readonly description: "Resolve a model alias or short name to its canonical ID and provider.";
158
+ readonly inputSchema: {
159
+ readonly type: "object";
160
+ readonly properties: {
161
+ readonly alias: {
162
+ readonly type: "string";
163
+ readonly description: "Short name or alias (e.g. sonnet, opus, haiku, gpt-4o-mini, gemini-flash)";
164
+ };
165
+ };
166
+ readonly required: readonly ["alias"];
167
+ };
168
+ }, {
169
+ readonly name: "kosha_provider_health";
170
+ readonly description: "Get authentication and health status for all discovered providers. Shows which providers are active, which need credentials, and any recent discovery errors.";
171
+ readonly inputSchema: {
172
+ readonly type: "object";
173
+ readonly properties: {
174
+ readonly provider: {
175
+ readonly type: "string";
176
+ readonly description: "Filter to a specific provider ID";
177
+ };
178
+ };
179
+ };
180
+ }, {
181
+ readonly name: "kosha_context_strategy";
182
+ readonly description: "Advise on context management for a long-running conversation. Given a model and current token usage, returns ranked options (continue, enable prompt cache, compact + continue, switch to long-context tier, switch model, batch offload) with rough cost-per-turn math. Useful before deciding whether to summarize, swap models, or just keep going.";
183
+ readonly inputSchema: {
184
+ readonly type: "object";
185
+ readonly properties: {
186
+ readonly model: {
187
+ readonly type: "string";
188
+ readonly description: "Model ID or alias the caller is currently using";
189
+ };
190
+ readonly current_tokens: {
191
+ readonly type: "number";
192
+ readonly description: "Approximate token count of the conversation so far";
193
+ };
194
+ readonly expected_output_tokens: {
195
+ readonly type: "number";
196
+ readonly description: "Tokens the next reply is expected to produce (default 1024)";
197
+ };
198
+ readonly expected_remaining_turns: {
199
+ readonly type: "number";
200
+ readonly description: "How many more turns the caller plans (default 5)";
201
+ };
202
+ };
203
+ readonly required: readonly ["model", "current_tokens"];
204
+ };
205
+ }];
206
+ /** Dependencies the JSON-RPC handler needs; injected so tests can supply a fixture registry. */
207
+ export interface McpDeps {
208
+ registry: () => Promise<ModelRegistry>;
209
+ }
210
+ export declare function callTool(name: string, args: Record<string, unknown>, deps?: McpDeps): Promise<unknown>;
211
+ /**
212
+ * Handle one JSON-RPC request and return the response, or `null` for
213
+ * notifications (which carry no id and expect no reply).
214
+ *
215
+ * Tool *execution* failures come back as a successful `tools/call` result
216
+ * with `isError: true`, per the MCP spec, so the model can read the message
217
+ * and recover; only protocol-level problems (unknown method, unknown tool,
218
+ * malformed params) surface as JSON-RPC errors.
219
+ */
220
+ export declare function handleJsonRpc(msg: JsonRpcMessage, deps?: McpDeps): Promise<JsonRpcMessage | null>;
221
+ /** Start the newline-delimited JSON-RPC loop over stdio. */
222
+ export declare function runStdioServer(deps?: McpDeps): void;
18
223
  //# sourceMappingURL=mcp-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,71 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * kosha-discovery — MCP server (stdio transport, protocol 2024-11-05).
3
+ * kosha-discovery — MCP server (stdio transport).
4
4
  *
5
5
  * Exposes the local kosha registry as MCP tools so AI agents can query
6
6
  * model pricing, routing, and health without HTTP.
7
7
  *
8
+ * Protocol: JSON-RPC 2.0 over newline-delimited stdio. The server speaks
9
+ * every MCP revision in {@link MCP_PROTOCOL_VERSIONS} and echoes the
10
+ * client's requested revision back when it is one of them (otherwise it
11
+ * answers with the newest it supports, per the MCP negotiation rule).
12
+ *
8
13
  * Tools:
9
14
  * kosha_query_models — list / filter models
10
15
  * kosha_cheapest_model — cheapest model meeting requirements
16
+ * kosha_ranked_routes — strategy-ranked routes (cheapest / fastest / reliable / balanced)
11
17
  * kosha_model_detail — full detail for one model
12
18
  * kosha_model_routes — all provider routes for a model
13
19
  * kosha_resolve_alias — alias → canonical ID
14
20
  * kosha_provider_health — provider auth + error status
21
+ * kosha_context_strategy — context-management advice for a long conversation
22
+ *
23
+ * The JSON-RPC handler ({@link handleJsonRpc}) is exported and pure over an
24
+ * injected registry loader so it can be unit-tested; the stdio loop only
25
+ * starts when this file is the process entry point.
15
26
  * @module
16
27
  */
28
+ import { createRequire } from "node:module";
17
29
  import { computeContextStrategy } from "./context-strategy.js";
30
+ import { isMainModule } from "./entry.js";
18
31
  import { ModelRegistry } from "./registry.js";
32
+ import { parseRouteStrategy, ROUTE_STRATEGIES } from "./registry-routing.js";
33
+ // ---------------------------------------------------------------------------
34
+ // Server identity + protocol negotiation
35
+ // ---------------------------------------------------------------------------
36
+ /** Package version, read from package.json so `serverInfo.version` never drifts from the release. */
37
+ export const KOSHA_MCP_VERSION = (() => {
38
+ try {
39
+ const require = createRequire(import.meta.url);
40
+ return require("../package.json").version;
41
+ }
42
+ catch {
43
+ return "0.0.0";
44
+ }
45
+ })();
46
+ /** MCP protocol revisions this server implements, newest first. */
47
+ export const MCP_PROTOCOL_VERSIONS = ["2025-06-18", "2025-03-26", "2024-11-05"];
48
+ /**
49
+ * Pick the protocol revision to answer an `initialize` with: the client's
50
+ * own when we support it, otherwise our newest (the client then decides
51
+ * whether to proceed).
52
+ */
53
+ export function negotiateProtocolVersion(requested) {
54
+ if (typeof requested === "string" && MCP_PROTOCOL_VERSIONS.includes(requested))
55
+ return requested;
56
+ return MCP_PROTOCOL_VERSIONS[0];
57
+ }
58
+ /** Standard JSON-RPC 2.0 error codes used by this server. */
59
+ const JSON_RPC = {
60
+ PARSE_ERROR: -32700,
61
+ METHOD_NOT_FOUND: -32601,
62
+ INVALID_PARAMS: -32602,
63
+ INTERNAL_ERROR: -32603,
64
+ };
19
65
  // ---------------------------------------------------------------------------
20
66
  // Tool definitions (MCP schema)
21
67
  // ---------------------------------------------------------------------------
22
- const TOOLS = [
68
+ export const TOOLS = [
23
69
  {
24
70
  name: "kosha_query_models",
25
71
  description: "List AI models from the local kosha registry. Optionally filter by provider, mode, or capability tag. Returns id, provider, name, mode, context window, capabilities, and pricing.",
@@ -59,6 +105,25 @@ const TOOLS = [
59
105
  },
60
106
  },
61
107
  },
108
+ {
109
+ name: "kosha_ranked_routes",
110
+ description: "Rank chat-model routes by strategy: cheapest (price only), fastest (observed p95 latency), reliable (circuit-breaker state plus timeout / auth-error history), or balanced (weighted blend of all three). Providers whose breaker is open always sort last, so the result doubles as a failover order. Accepts the same filters as kosha_cheapest_model.",
111
+ inputSchema: {
112
+ type: "object",
113
+ properties: {
114
+ strategy: {
115
+ type: "string",
116
+ enum: ["cheapest", "fastest", "reliable", "balanced"],
117
+ description: "Ranking strategy",
118
+ },
119
+ capability: { type: "string", description: "Required capability tag (e.g. tool_use, vision)" },
120
+ min_context_k: { type: "number", description: "Minimum context window in thousands of tokens" },
121
+ provider: { type: "string", description: "Pin to a specific provider" },
122
+ limit: { type: "number", description: "Number of ranked results (default 5)" },
123
+ },
124
+ required: ["strategy"],
125
+ },
126
+ },
62
127
  {
63
128
  name: "kosha_model_detail",
64
129
  description: "Get full details for a specific model — pricing, capabilities, context window, tool dialect, structured output modes, status, and deprecation info.",
@@ -67,7 +132,7 @@ const TOOLS = [
67
132
  properties: {
68
133
  model: {
69
134
  type: "string",
70
- description: "Model ID or alias (e.g. sonnet, claude-sonnet-4-6, gpt-4o, deepseek-v3)",
135
+ description: "Model ID or alias (e.g. sonnet, claude-sonnet-5, gpt-4o, deepseek-v3)",
71
136
  },
72
137
  },
73
138
  required: ["model"],
@@ -129,10 +194,6 @@ const TOOLS = [
129
194
  },
130
195
  },
131
196
  ];
132
- // ---------------------------------------------------------------------------
133
- // Registry — lazy-load on first tool call so starting the MCP server has no
134
- // filesystem/network side effects until a client actually asks for data.
135
- // ---------------------------------------------------------------------------
136
197
  let registryInstance = null;
137
198
  let registryReady = null;
138
199
  async function loadRegistry() {
@@ -147,11 +208,16 @@ async function getRegistry() {
147
208
  registryReady ??= loadRegistry();
148
209
  return registryReady;
149
210
  }
211
+ /** Production dependencies: the discover-on-first-use registry. */
212
+ const defaultDeps = { registry: getRegistry };
213
+ /** Thrown by a tool handler for caller mistakes (unknown tool, bad argument). */
214
+ class ToolInputError extends Error {
215
+ }
150
216
  // ---------------------------------------------------------------------------
151
217
  // Tool handlers
152
218
  // ---------------------------------------------------------------------------
153
- async function callTool(name, args) {
154
- const reg = await getRegistry();
219
+ export async function callTool(name, args, deps = defaultDeps) {
220
+ const reg = await deps.registry();
155
221
  switch (name) {
156
222
  case "kosha_query_models": {
157
223
  const models = reg.models({
@@ -194,6 +260,43 @@ async function callTool(name, args) {
194
260
  missingCredentials: result.missingCredentials.map((c) => c.providerId),
195
261
  };
196
262
  }
263
+ case "kosha_ranked_routes": {
264
+ const strategy = parseRouteStrategy(typeof args.strategy === "string" ? args.strategy : undefined);
265
+ if (!strategy) {
266
+ throw new ToolInputError(`unknown strategy '${String(args.strategy)}' — expected one of ${ROUTE_STRATEGIES.join(", ")}`);
267
+ }
268
+ const limit = typeof args.limit === "number" && args.limit > 0 ? Math.floor(args.limit) : 5;
269
+ const minContext = typeof args.min_context_k === "number" ? args.min_context_k * 1_000 : undefined;
270
+ const ranked = reg.rankedRoutes({
271
+ mode: "chat",
272
+ capability: args.capability,
273
+ provider: args.provider,
274
+ // Over-fetch so a min-context filter applied after ranking
275
+ // still has enough candidates to fill `limit`.
276
+ limit: Math.max(limit * 4, 20),
277
+ }, strategy);
278
+ const filtered = minContext ? ranked.filter((r) => r.model.contextWindow >= minContext) : ranked;
279
+ return {
280
+ strategy,
281
+ routes: filtered.slice(0, limit).map((r) => ({
282
+ id: r.model.id,
283
+ provider: r.providerId,
284
+ name: r.model.name,
285
+ contextWindow: r.model.contextWindow,
286
+ pricing: r.model.pricing ?? null,
287
+ price: r.price,
288
+ compositeScore: r.compositeScore,
289
+ health: {
290
+ available: r.health.available,
291
+ breakerState: r.health.breakerState,
292
+ reliabilityScore: r.health.reliabilityScore,
293
+ p95LatencyMs: r.health.p95LatencyMs,
294
+ samples: r.health.samples,
295
+ lastErrorType: r.health.lastErrorType,
296
+ },
297
+ })),
298
+ };
299
+ }
197
300
  case "kosha_model_detail": {
198
301
  const model = reg.model(args.model);
199
302
  if (!model)
@@ -270,72 +373,121 @@ async function callTool(name, args) {
270
373
  });
271
374
  }
272
375
  default:
273
- throw new Error(`unknown tool: ${name}`);
376
+ throw new ToolInputError(`unknown tool: ${name}`);
274
377
  }
275
378
  }
276
379
  // ---------------------------------------------------------------------------
277
- // Stdio JSON-RPC loop
380
+ // JSON-RPC dispatch (pure) + stdio loop (entry point only)
278
381
  // ---------------------------------------------------------------------------
279
- function send(msg) {
280
- process.stdout.write(`${JSON.stringify(msg)}\n`);
382
+ function ok(id, result) {
383
+ return { jsonrpc: "2.0", id: id ?? null, result };
281
384
  }
282
- function respond(id, result) {
283
- send({ jsonrpc: "2.0", id: id ?? null, result });
385
+ function fail(id, code, message) {
386
+ return { jsonrpc: "2.0", id: id ?? null, error: { code, message } };
284
387
  }
285
- function respondError(id, code, message) {
286
- send({ jsonrpc: "2.0", id: id ?? null, error: { code, message } });
287
- }
288
- async function handleMessage(msg) {
388
+ /**
389
+ * Handle one JSON-RPC request and return the response, or `null` for
390
+ * notifications (which carry no id and expect no reply).
391
+ *
392
+ * Tool *execution* failures come back as a successful `tools/call` result
393
+ * with `isError: true`, per the MCP spec, so the model can read the message
394
+ * and recover; only protocol-level problems (unknown method, unknown tool,
395
+ * malformed params) surface as JSON-RPC errors.
396
+ */
397
+ export async function handleJsonRpc(msg, deps = defaultDeps) {
289
398
  const { id, method, params } = msg;
290
399
  // Notifications carry no id — no response expected.
291
400
  if (!method || method.startsWith("notifications/"))
292
- return;
401
+ return null;
293
402
  switch (method) {
294
- case "initialize":
295
- respond(id, {
296
- protocolVersion: "2024-11-05",
403
+ case "initialize": {
404
+ const requested = params?.protocolVersion;
405
+ return ok(id, {
406
+ protocolVersion: negotiateProtocolVersion(requested),
297
407
  capabilities: { tools: {} },
298
- serverInfo: { name: "kosha", version: "1.0.0" },
408
+ serverInfo: { name: "kosha", version: KOSHA_MCP_VERSION },
299
409
  });
300
- return;
410
+ }
411
+ case "ping":
412
+ return ok(id, {});
301
413
  case "tools/list":
302
- respond(id, { tools: TOOLS });
303
- return;
414
+ return ok(id, { tools: TOOLS });
304
415
  case "tools/call": {
305
- const { name, arguments: args = {} } = params;
416
+ const call = (params ?? {});
417
+ if (typeof call.name !== "string") {
418
+ return fail(id, JSON_RPC.INVALID_PARAMS, "tools/call requires a string `name`");
419
+ }
420
+ const args = call.arguments && typeof call.arguments === "object" && !Array.isArray(call.arguments)
421
+ ? call.arguments
422
+ : {};
306
423
  try {
307
- const result = await callTool(name, args);
308
- respond(id, { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] });
424
+ const result = await callTool(call.name, args, deps);
425
+ return ok(id, { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] });
309
426
  }
310
427
  catch (err) {
311
428
  const message = err instanceof Error ? err.message : String(err);
312
- respondError(id, -32603, message);
429
+ if (err instanceof ToolInputError)
430
+ return fail(id, JSON_RPC.INVALID_PARAMS, message);
431
+ return ok(id, { content: [{ type: "text", text: message }], isError: true });
313
432
  }
314
- return;
315
433
  }
316
434
  default:
317
- respondError(id, -32601, `method not found: ${method}`);
435
+ return fail(id, JSON_RPC.METHOD_NOT_FOUND, `method not found: ${method}`);
318
436
  }
319
437
  }
320
- let buffer = "";
321
- process.stdin.setEncoding("utf-8");
322
- process.stdin.on("data", (chunk) => {
323
- buffer += chunk;
324
- const lines = buffer.split("\n");
325
- buffer = lines.pop() ?? "";
326
- for (const line of lines) {
327
- const trimmed = line.trim();
328
- if (!trimmed)
329
- continue;
330
- try {
331
- handleMessage(JSON.parse(trimmed)).catch((err) => {
438
+ function send(msg) {
439
+ process.stdout.write(`${JSON.stringify(msg)}\n`);
440
+ }
441
+ /** Start the newline-delimited JSON-RPC loop over stdio. */
442
+ export function runStdioServer(deps = defaultDeps) {
443
+ let buffer = "";
444
+ /** In-flight requests, so an EOF on stdin waits for their answers before exiting. */
445
+ const pending = new Set();
446
+ process.stdin.setEncoding("utf-8");
447
+ process.stdin.on("data", (chunk) => {
448
+ buffer += chunk;
449
+ const lines = buffer.split("\n");
450
+ buffer = lines.pop() ?? "";
451
+ for (const line of lines) {
452
+ const trimmed = line.trim();
453
+ if (!trimmed)
454
+ continue;
455
+ let parsed;
456
+ try {
457
+ parsed = JSON.parse(trimmed);
458
+ }
459
+ catch {
460
+ // Malformed JSON. Per JSON-RPC 2.0 we must still answer with a
461
+ // -32700 Parse error so the client doesn't block forever waiting
462
+ // on a response. The id is unknowable from unparseable input, so
463
+ // per spec we respond with id=null (we deliberately avoid scanning
464
+ // the raw text for an id, which would mean running a regex over
465
+ // uncontrolled stdin).
466
+ send(fail(null, JSON_RPC.PARSE_ERROR, "Parse error"));
467
+ continue;
468
+ }
469
+ const job = handleJsonRpc(parsed, deps)
470
+ .then((response) => {
471
+ if (response)
472
+ send(response);
473
+ })
474
+ .catch((err) => {
332
475
  process.stderr.write(`[kosha-mcp] ${err}\n`);
476
+ })
477
+ .finally(() => {
478
+ pending.delete(job);
333
479
  });
480
+ pending.add(job);
334
481
  }
335
- catch {
336
- // malformed JSON — ignore
337
- }
338
- }
339
- });
340
- process.stdin.on("end", () => process.exit(0));
482
+ });
483
+ // One-shot / piped clients half-close stdin right after writing their
484
+ // request; exiting immediately would drop the answer still being computed.
485
+ process.stdin.on("end", () => {
486
+ Promise.allSettled(pending).then(() => process.exit(0));
487
+ });
488
+ }
489
+ // Only attach to stdio when executed directly (`kosha-mcp` bin or
490
+ // `node dist/mcp-server.js`); see entry.ts for why realpath matters.
491
+ if (isMainModule(import.meta.url))
492
+ runStdioServer();
341
493
  //# sourceMappingURL=mcp-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"model-features.d.ts","sourceRoot":"","sources":["../src/model-features.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,gBAAgB,CAC/B,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,OAAO,EAAE,MAAM,GACb,WAAW,GAAG,SAAS,CA0EzB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACzC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,OAAO,EAAE,MAAM,GACb,oBAAoB,EAAE,CA+ExB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACrC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,OAAO,EAAE,MAAM,GACb,OAAO,GAAG,SAAS,CA0BrB"}
1
+ {"version":3,"file":"model-features.d.ts","sourceRoot":"","sources":["../src/model-features.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,gBAAgB,CAC/B,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,OAAO,EAAE,MAAM,GACb,WAAW,GAAG,SAAS,CA0EzB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACzC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,OAAO,EAAE,MAAM,GACb,oBAAoB,EAAE,CAqFxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACrC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,OAAO,EAAE,MAAM,GACb,OAAO,GAAG,SAAS,CA0BrB"}