@decocms/bindings 0.2.0 → 0.2.1-beta.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 (73) hide show
  1. package/dist/browser/agents.js +29 -0
  2. package/dist/browser/agents.js.map +1 -0
  3. package/dist/browser/chunk-6QEXJ7XW.js +48564 -0
  4. package/dist/browser/chunk-6QEXJ7XW.js.map +1 -0
  5. package/dist/browser/chunk-WKNVAFKE.js +2176 -0
  6. package/dist/browser/chunk-WKNVAFKE.js.map +1 -0
  7. package/dist/browser/chunk-XWLBKKHZ.js +127 -0
  8. package/dist/browser/chunk-XWLBKKHZ.js.map +1 -0
  9. package/dist/browser/chunk-ZX4ZDU2T.js +58 -0
  10. package/dist/browser/chunk-ZX4ZDU2T.js.map +1 -0
  11. package/dist/browser/client.js +9 -0
  12. package/dist/browser/client.js.map +1 -0
  13. package/dist/{well-known → browser}/collections.js +2 -1
  14. package/dist/browser/connection.js +8 -0
  15. package/dist/browser/connection.js.map +1 -0
  16. package/dist/browser/index.js +10 -0
  17. package/dist/browser/index.js.map +1 -0
  18. package/dist/browser/language-model.js +205 -0
  19. package/dist/browser/language-model.js.map +1 -0
  20. package/dist/client.d.ts +12 -0
  21. package/dist/client.js +54 -0
  22. package/dist/client.js.map +1 -0
  23. package/dist/{well-known/collections.d.ts → collections.d.ts} +120 -5
  24. package/dist/{chunk-JMM4EZYL.js → collections.js} +2 -2
  25. package/dist/collections.js.map +1 -0
  26. package/dist/connection.d.ts +30 -0
  27. package/dist/connection.js +3 -0
  28. package/dist/connection.js.map +1 -0
  29. package/dist/index.d.ts +6 -2
  30. package/dist/index.js +262 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/language-model.d.ts +3228 -0
  33. package/dist/language-model.js +628 -0
  34. package/dist/language-model.js.map +1 -0
  35. package/dist/models.d.ts +2071 -0
  36. package/dist/models.js +111 -0
  37. package/dist/models.js.map +1 -0
  38. package/dist/node/agents.d.ts +903 -0
  39. package/dist/node/agents.js +27 -0
  40. package/dist/node/agents.js.map +1 -0
  41. package/dist/node/chunk-BLCFITZG.js +56 -0
  42. package/dist/node/chunk-BLCFITZG.js.map +1 -0
  43. package/dist/node/chunk-QMQMPK7Q.js +50 -0
  44. package/dist/node/chunk-QMQMPK7Q.js.map +1 -0
  45. package/dist/node/chunk-QP7AQCEP.js +23478 -0
  46. package/dist/node/chunk-QP7AQCEP.js.map +1 -0
  47. package/dist/node/chunk-T2DG7334.js +125 -0
  48. package/dist/node/chunk-T2DG7334.js.map +1 -0
  49. package/dist/node/client.d.ts +12 -0
  50. package/dist/node/client.js +7 -0
  51. package/dist/node/client.js.map +1 -0
  52. package/dist/node/collections.d.ts +537 -0
  53. package/dist/node/collections.js +4 -0
  54. package/dist/node/collections.js.map +1 -0
  55. package/dist/node/connection.d.ts +30 -0
  56. package/dist/node/connection.js +6 -0
  57. package/dist/node/connection.js.map +1 -0
  58. package/dist/node/index.d.ts +94 -0
  59. package/dist/node/index.js +8 -0
  60. package/dist/node/index.js.map +1 -0
  61. package/dist/node/language-model.d.ts +2840 -0
  62. package/dist/node/language-model.js +203 -0
  63. package/dist/node/language-model.js.map +1 -0
  64. package/package.json +45 -16
  65. package/dist/chunk-JMM4EZYL.js.map +0 -1
  66. package/dist/well-known/models.d.ts +0 -127
  67. package/dist/well-known/models.js +0 -46
  68. package/dist/well-known/models.js.map +0 -1
  69. package/src/core/binder.ts +0 -226
  70. package/src/index.ts +0 -15
  71. package/src/well-known/collections.ts +0 -363
  72. package/src/well-known/models.ts +0 -87
  73. /package/dist/{well-known → browser}/collections.js.map +0 -0
@@ -0,0 +1,203 @@
1
+ import { bindingClient } from './chunk-QP7AQCEP.js';
2
+ import { BaseCollectionEntitySchema, createCollectionBindings } from './chunk-T2DG7334.js';
3
+ import './chunk-BLCFITZG.js';
4
+ import { init_esm_shims } from './chunk-QMQMPK7Q.js';
5
+ import { z } from 'zod';
6
+
7
+ // src/well-known/language-model.ts
8
+ init_esm_shims();
9
+ var LanguageModelCallOptionsSchema = z.object({
10
+ // Core parameters
11
+ prompt: z.any().describe(
12
+ "A language mode prompt is a standardized prompt type (messages, system, etc.)"
13
+ ),
14
+ // Generation parameters
15
+ maxOutputTokens: z.number().optional().describe("Maximum number of tokens to generate"),
16
+ temperature: z.number().optional().describe(
17
+ "Temperature setting. The range depends on the provider and model"
18
+ ),
19
+ topP: z.number().optional().describe("Nucleus sampling parameter"),
20
+ topK: z.number().optional().describe(
21
+ "Only sample from the top K options for each subsequent token. Used to remove long tail low probability responses"
22
+ ),
23
+ presencePenalty: z.number().optional().describe(
24
+ "Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt"
25
+ ),
26
+ frequencyPenalty: z.number().optional().describe(
27
+ "Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases"
28
+ ),
29
+ seed: z.number().optional().describe(
30
+ "The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results"
31
+ ),
32
+ // Stop sequences
33
+ stopSequences: z.array(z.string()).optional().describe(
34
+ "Stop sequences. If set, the model will stop generating text when one of the stop sequences is generated"
35
+ ),
36
+ // Response format
37
+ responseFormat: z.union([
38
+ z.object({ type: z.literal("text") }),
39
+ z.object({
40
+ type: z.literal("json"),
41
+ schema: z.any().optional().describe("JSON schema that the generated output should conform to"),
42
+ name: z.string().optional().describe("Name of output that should be generated"),
43
+ description: z.string().optional().describe("Description of the output that should be generated")
44
+ })
45
+ ]).optional().describe(
46
+ "Response format. The output can either be text or JSON. Default is text"
47
+ ),
48
+ // Tools
49
+ tools: z.array(z.any()).optional().describe("The tools that are available for the model"),
50
+ toolChoice: z.any().optional().describe("Specifies how the tool should be selected. Defaults to 'auto'"),
51
+ // Stream options
52
+ includeRawChunks: z.boolean().optional().describe(
53
+ "Include raw chunks in the stream. Only applicable for streaming calls"
54
+ ),
55
+ // Abort signal
56
+ abortSignal: z.any().optional().describe("Abort signal for cancelling the operation"),
57
+ // Additional options
58
+ headers: z.record(z.string(), z.union([z.string(), z.undefined()])).optional().describe("Additional HTTP headers to be sent with the request"),
59
+ providerOptions: z.any().optional().describe("Additional provider-specific options")
60
+ });
61
+ var LanguageModelGenerateOutputSchema = z.object({
62
+ // Ordered content that the model has generated
63
+ content: z.array(z.any()).describe(
64
+ "Ordered content that the model has generated (text, tool-calls, reasoning, files, sources)"
65
+ ),
66
+ // Finish reason (required)
67
+ finishReason: z.enum([
68
+ "stop",
69
+ "length",
70
+ "content-filter",
71
+ "tool-calls",
72
+ "error",
73
+ "other",
74
+ "unknown"
75
+ ]).describe("Reason why generation stopped"),
76
+ // Usage information (required)
77
+ usage: z.object({
78
+ inputTokens: z.number().optional(),
79
+ outputTokens: z.number().optional(),
80
+ totalTokens: z.number().optional(),
81
+ reasoningTokens: z.number().optional()
82
+ }).passthrough().transform((val) => ({
83
+ inputTokens: val.inputTokens,
84
+ outputTokens: val.outputTokens,
85
+ totalTokens: val.totalTokens,
86
+ reasoningTokens: val.reasoningTokens,
87
+ ...val
88
+ })).describe("Usage information for the language model call"),
89
+ // Provider metadata
90
+ providerMetadata: z.any().optional().describe("Additional provider-specific metadata"),
91
+ // Request information for telemetry and debugging
92
+ request: z.object({
93
+ body: z.any().optional().describe("Request HTTP body sent to the provider API")
94
+ }).optional().describe("Optional request information for telemetry and debugging"),
95
+ // Response information for telemetry and debugging
96
+ response: z.object({
97
+ id: z.string().optional().describe("ID for the generated response"),
98
+ timestamp: z.date().optional().describe("Timestamp for the start of the generated response"),
99
+ modelId: z.string().optional().describe("The ID of the response model that was used"),
100
+ headers: z.record(z.string(), z.string()).optional().describe("Response headers"),
101
+ body: z.any().optional().describe("Response HTTP body")
102
+ }).optional().describe("Optional response information for telemetry and debugging"),
103
+ // Warnings for the call (required)
104
+ warnings: z.array(z.any()).describe("Warnings for the call, e.g. unsupported settings")
105
+ });
106
+ var LanguageModelStreamOutputSchema = z.object({
107
+ // Stream of language model output parts
108
+ stream: z.any().describe("ReadableStream of LanguageModelV2StreamPart"),
109
+ // Request information for telemetry and debugging
110
+ request: z.object({
111
+ body: z.any().optional().describe("Request HTTP body sent to the provider API")
112
+ }).optional().describe("Optional request information for telemetry and debugging"),
113
+ // Response information
114
+ response: z.object({
115
+ headers: z.record(z.string(), z.string()).optional().describe("Response headers")
116
+ }).optional().describe("Optional response data")
117
+ });
118
+ var LanguageModelMetadataSchema = z.object({
119
+ supportedUrls: z.record(z.string(), z.array(z.string())).describe("Supported URL patterns by media type for the provider")
120
+ });
121
+ var ModelSchema = z.object({
122
+ modelId: z.string().describe("The ID of the model"),
123
+ // Model-specific fields
124
+ logo: z.string().nullable(),
125
+ description: z.string().nullable(),
126
+ capabilities: z.array(z.string()),
127
+ limits: z.object({
128
+ contextWindow: z.number(),
129
+ maxOutputTokens: z.number()
130
+ }).nullable(),
131
+ costs: z.object({
132
+ input: z.number(),
133
+ output: z.number()
134
+ }).nullable(),
135
+ // Provider information
136
+ provider: z.enum([
137
+ "openai",
138
+ "anthropic",
139
+ "google",
140
+ "x-ai",
141
+ "deepseek",
142
+ "openai-compatible",
143
+ "openrouter"
144
+ ]).nullable()
145
+ });
146
+ var LanguageModelInputSchema = z.object({
147
+ modelId: z.string().describe("The ID of the model"),
148
+ callOptions: LanguageModelCallOptionsSchema
149
+ });
150
+ var ModelCollectionEntitySchema = BaseCollectionEntitySchema.extend({
151
+ // Model-specific fields
152
+ logo: z.string().nullable(),
153
+ description: z.string().nullable(),
154
+ capabilities: z.array(z.string()),
155
+ limits: z.object({
156
+ contextWindow: z.number(),
157
+ maxOutputTokens: z.number()
158
+ }).nullable(),
159
+ costs: z.object({
160
+ input: z.number(),
161
+ output: z.number()
162
+ }).nullable(),
163
+ // Provider information
164
+ provider: z.enum([
165
+ "openai",
166
+ "anthropic",
167
+ "google",
168
+ "xai",
169
+ "deepseek",
170
+ "openai-compatible",
171
+ "openrouter"
172
+ ]).nullable()
173
+ });
174
+ var LLM_COLLECTION_BINDING = createCollectionBindings(
175
+ "llm",
176
+ ModelCollectionEntitySchema,
177
+ { readOnly: true }
178
+ );
179
+ var LANGUAGE_MODEL_BINDING = [
180
+ {
181
+ name: "LLM_METADATA",
182
+ inputSchema: z.object({
183
+ modelId: z.string().describe("The ID of the model")
184
+ }),
185
+ outputSchema: LanguageModelMetadataSchema
186
+ },
187
+ {
188
+ name: "LLM_DO_STREAM",
189
+ inputSchema: LanguageModelInputSchema,
190
+ streamable: true
191
+ },
192
+ {
193
+ name: "LLM_DO_GENERATE",
194
+ inputSchema: LanguageModelInputSchema,
195
+ outputSchema: LanguageModelGenerateOutputSchema
196
+ },
197
+ ...LLM_COLLECTION_BINDING
198
+ ];
199
+ var LanguageModelBinding = bindingClient(LANGUAGE_MODEL_BINDING);
200
+
201
+ export { LANGUAGE_MODEL_BINDING, LanguageModelBinding, LanguageModelCallOptionsSchema, LanguageModelGenerateOutputSchema, LanguageModelInputSchema, LanguageModelMetadataSchema, LanguageModelStreamOutputSchema, ModelCollectionEntitySchema, ModelSchema };
202
+ //# sourceMappingURL=language-model.js.map
203
+ //# sourceMappingURL=language-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/well-known/language-model.ts"],"names":[],"mappings":"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","file":"language-model.js","sourcesContent":["/**\n * Language Model Well-Known Binding\n *\n * Defines the interface for AI model providers.\n * Any MCP that implements this binding can provide AI models and streaming endpoints.\n *\n * This binding includes:\n * - LLM operations (metadata, stream, generate)\n * - Collection bindings for LIST and GET operations (read-only)\n * - Streaming endpoint information is included directly in the model entity schema.\n */\n\nimport { z } from \"zod\";\nimport { bindingClient, type ToolBinder } from \"../core/binder\";\nimport {\n BaseCollectionEntitySchema,\n createCollectionBindings,\n} from \"./collections\";\n\n/**\n * Language Model Call Options Schema\n * Based on LanguageModelV2CallOptions from @ai-sdk/provider\n */\nexport const LanguageModelCallOptionsSchema = z.object({\n // Core parameters\n prompt: z\n .any()\n .describe(\n \"A language mode prompt is a standardized prompt type (messages, system, etc.)\",\n ),\n\n // Generation parameters\n maxOutputTokens: z\n .number()\n .optional()\n .describe(\"Maximum number of tokens to generate\"),\n temperature: z\n .number()\n .optional()\n .describe(\n \"Temperature setting. The range depends on the provider and model\",\n ),\n topP: z.number().optional().describe(\"Nucleus sampling parameter\"),\n topK: z\n .number()\n .optional()\n .describe(\n \"Only sample from the top K options for each subsequent token. Used to remove long tail low probability responses\",\n ),\n presencePenalty: z\n .number()\n .optional()\n .describe(\n \"Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt\",\n ),\n frequencyPenalty: z\n .number()\n .optional()\n .describe(\n \"Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases\",\n ),\n seed: z\n .number()\n .optional()\n .describe(\n \"The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results\",\n ),\n\n // Stop sequences\n stopSequences: z\n .array(z.string())\n .optional()\n .describe(\n \"Stop sequences. If set, the model will stop generating text when one of the stop sequences is generated\",\n ),\n\n // Response format\n responseFormat: z\n .union([\n z.object({ type: z.literal(\"text\") }),\n z.object({\n type: z.literal(\"json\"),\n schema: z\n .any()\n .optional()\n .describe(\"JSON schema that the generated output should conform to\"),\n name: z\n .string()\n .optional()\n .describe(\"Name of output that should be generated\"),\n description: z\n .string()\n .optional()\n .describe(\"Description of the output that should be generated\"),\n }),\n ])\n .optional()\n .describe(\n \"Response format. The output can either be text or JSON. Default is text\",\n ),\n\n // Tools\n tools: z\n .array(z.any())\n .optional()\n .describe(\"The tools that are available for the model\"),\n toolChoice: z\n .any()\n .optional()\n .describe(\"Specifies how the tool should be selected. Defaults to 'auto'\"),\n\n // Stream options\n includeRawChunks: z\n .boolean()\n .optional()\n .describe(\n \"Include raw chunks in the stream. Only applicable for streaming calls\",\n ),\n\n // Abort signal\n abortSignal: z\n .any()\n .optional()\n .describe(\"Abort signal for cancelling the operation\"),\n\n // Additional options\n headers: z\n .record(z.string(), z.union([z.string(), z.undefined()]))\n .optional()\n .describe(\"Additional HTTP headers to be sent with the request\"),\n providerOptions: z\n .any()\n .optional()\n .describe(\"Additional provider-specific options\"),\n});\n\n/**\n * Language Model Generate Output Schema\n * Based on the return type of LanguageModelV2.doGenerate from @ai-sdk/provider\n */\nexport const LanguageModelGenerateOutputSchema = z.object({\n // Ordered content that the model has generated\n content: z\n .array(z.any())\n .describe(\n \"Ordered content that the model has generated (text, tool-calls, reasoning, files, sources)\",\n ),\n\n // Finish reason (required)\n finishReason: z\n .enum([\n \"stop\",\n \"length\",\n \"content-filter\",\n \"tool-calls\",\n \"error\",\n \"other\",\n \"unknown\",\n ])\n .describe(\"Reason why generation stopped\"),\n\n // Usage information (required)\n usage: z\n .object({\n inputTokens: z.number().optional(),\n outputTokens: z.number().optional(),\n totalTokens: z.number().optional(),\n reasoningTokens: z.number().optional(),\n })\n .passthrough()\n .transform((val) => ({\n inputTokens: val.inputTokens,\n outputTokens: val.outputTokens,\n totalTokens: val.totalTokens,\n reasoningTokens: val.reasoningTokens,\n ...val,\n }))\n .describe(\"Usage information for the language model call\"),\n\n // Provider metadata\n providerMetadata: z\n .any()\n .optional()\n .describe(\"Additional provider-specific metadata\"),\n\n // Request information for telemetry and debugging\n request: z\n .object({\n body: z\n .any()\n .optional()\n .describe(\"Request HTTP body sent to the provider API\"),\n })\n .optional()\n .describe(\"Optional request information for telemetry and debugging\"),\n\n // Response information for telemetry and debugging\n response: z\n .object({\n id: z.string().optional().describe(\"ID for the generated response\"),\n timestamp: z\n .date()\n .optional()\n .describe(\"Timestamp for the start of the generated response\"),\n modelId: z\n .string()\n .optional()\n .describe(\"The ID of the response model that was used\"),\n headers: z\n .record(z.string(), z.string())\n .optional()\n .describe(\"Response headers\"),\n body: z.any().optional().describe(\"Response HTTP body\"),\n })\n .optional()\n .describe(\"Optional response information for telemetry and debugging\"),\n\n // Warnings for the call (required)\n warnings: z\n .array(z.any())\n .describe(\"Warnings for the call, e.g. unsupported settings\"),\n});\n\n/**\n * Language Model Stream Output Schema\n * Based on the return type of LanguageModelV2.doStream from @ai-sdk/provider\n */\nexport const LanguageModelStreamOutputSchema = z.object({\n // Stream of language model output parts\n stream: z.any().describe(\"ReadableStream of LanguageModelV2StreamPart\"),\n\n // Request information for telemetry and debugging\n request: z\n .object({\n body: z\n .any()\n .optional()\n .describe(\"Request HTTP body sent to the provider API\"),\n })\n .optional()\n .describe(\"Optional request information for telemetry and debugging\"),\n\n // Response information\n response: z\n .object({\n headers: z\n .record(z.string(), z.string())\n .optional()\n .describe(\"Response headers\"),\n })\n .optional()\n .describe(\"Optional response data\"),\n});\n\nexport const LanguageModelMetadataSchema = z.object({\n supportedUrls: z\n .record(z.string(), z.array(z.string()))\n .describe(\"Supported URL patterns by media type for the provider\"),\n});\n\n/**\n * Simple Model schema for LLM operations\n */\nexport const ModelSchema = z.object({\n modelId: z.string().describe(\"The ID of the model\"),\n // Model-specific fields\n logo: z.string().nullable(),\n description: z.string().nullable(),\n capabilities: z.array(z.string()),\n limits: z\n .object({\n contextWindow: z.number(),\n maxOutputTokens: z.number(),\n })\n .nullable(),\n costs: z\n .object({\n input: z.number(),\n output: z.number(),\n })\n .nullable(),\n // Provider information\n provider: z\n .enum([\n \"openai\",\n \"anthropic\",\n \"google\",\n \"x-ai\",\n \"deepseek\",\n \"openai-compatible\",\n \"openrouter\",\n ])\n .nullable(),\n});\n\nexport const LanguageModelInputSchema = z.object({\n modelId: z.string().describe(\"The ID of the model\"),\n callOptions: LanguageModelCallOptionsSchema,\n});\n\n/**\n * Model entity schema for AI models (Collection Entity)\n * Extends BaseCollectionEntitySchema with model-specific fields\n * Base schema already includes: id, title, created_at, updated_at, created_by, updated_by\n */\nexport const ModelCollectionEntitySchema = BaseCollectionEntitySchema.extend({\n // Model-specific fields\n logo: z.string().nullable(),\n description: z.string().nullable(),\n capabilities: z.array(z.string()),\n limits: z\n .object({\n contextWindow: z.number(),\n maxOutputTokens: z.number(),\n })\n .nullable(),\n costs: z\n .object({\n input: z.number(),\n output: z.number(),\n })\n .nullable(),\n // Provider information\n provider: z\n .enum([\n \"openai\",\n \"anthropic\",\n \"google\",\n \"xai\",\n \"deepseek\",\n \"openai-compatible\",\n \"openrouter\",\n ])\n .nullable(),\n});\n\n/**\n * LLM Collection Binding (internal)\n *\n * Collection bindings for language models (read-only).\n * Provides LIST and GET operations for AI models.\n */\nconst LLM_COLLECTION_BINDING = createCollectionBindings(\n \"llm\",\n ModelCollectionEntitySchema,\n { readOnly: true },\n);\n\n/**\n * Language Model Binding\n *\n * Defines the interface for AI model providers.\n * Any MCP that implements this binding can provide AI models.\n *\n * Required tools:\n * - LLM_METADATA: Get metadata for a specific model\n * - LLM_DO_STREAM: Stream a language model response\n * - LLM_DO_GENERATE: Generate a language model response\n * - COLLECTION_LLM_LIST: List available AI models with their capabilities\n * - COLLECTION_LLM_GET: Get a single model by ID\n */\nexport const LANGUAGE_MODEL_BINDING = [\n {\n name: \"LLM_METADATA\" as const,\n inputSchema: z.object({\n modelId: z.string().describe(\"The ID of the model\"),\n }),\n outputSchema: LanguageModelMetadataSchema,\n },\n {\n name: \"LLM_DO_STREAM\" as const,\n inputSchema: LanguageModelInputSchema,\n streamable: true,\n },\n {\n name: \"LLM_DO_GENERATE\" as const,\n inputSchema: LanguageModelInputSchema,\n outputSchema: LanguageModelGenerateOutputSchema,\n },\n ...LLM_COLLECTION_BINDING,\n] satisfies ToolBinder[];\n\nexport const LanguageModelBinding = bindingClient(LANGUAGE_MODEL_BINDING);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decocms/bindings",
3
- "version": "0.2.0",
3
+ "version": "0.2.1-beta.1",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "build": "tsup",
@@ -11,32 +11,61 @@
11
11
  "dependencies": {
12
12
  "json-schema-diff": "^1.0.0",
13
13
  "zod": "^3.25.76",
14
- "zod-to-json-schema": "^3.24.4"
14
+ "zod-to-json-schema": "^3.24.4",
15
+ "zod-from-json-schema": "^0.0.5",
16
+ "@modelcontextprotocol/sdk": "^1.20.2"
15
17
  },
16
- "main": "./dist/index.js",
17
- "types": "./src/index.ts",
18
+ "main": "./dist/node/index.js",
19
+ "types": "./dist/node/index.d.ts",
18
20
  "files": [
19
- "dist/**/*",
20
- "src/**/*"
21
+ "dist/**/*"
21
22
  ],
22
23
  "exports": {
23
24
  ".": {
24
- "source": "./src/index.ts",
25
- "types": "./src/index.ts",
26
- "default": "./dist/index.js"
25
+ "types": "./dist/node/index.d.ts",
26
+ "browser": "./dist/browser/index.js",
27
+ "bun": "./dist/node/index.js",
28
+ "node": "./dist/node/index.js",
29
+ "default": "./dist/node/index.js"
27
30
  },
28
- "./models": {
29
- "source": "./src/well-known/models.ts",
30
- "types": "./src/well-known/models.ts",
31
- "default": "./dist/well-known/models.js"
31
+ "./client": {
32
+ "types": "./dist/node/index.d.ts",
33
+ "browser": "./dist/browser/index.js",
34
+ "bun": "./dist/node/index.js",
35
+ "node": "./dist/node/index.js",
36
+ "default": "./dist/node/index.js"
37
+ },
38
+ "./llm": {
39
+ "types": "./dist/node/language-model.d.ts",
40
+ "browser": "./dist/browser/language-model.js",
41
+ "bun": "./dist/node/language-model.js",
42
+ "node": "./dist/node/language-model.js",
43
+ "default": "./dist/node/language-model.js"
44
+ },
45
+ "./connection": {
46
+ "types": "./dist/node/connection.d.ts",
47
+ "browser": "./dist/browser/connection.js",
48
+ "bun": "./dist/node/connection.js",
49
+ "node": "./dist/node/connection.js",
50
+ "default": "./dist/node/connection.js"
32
51
  },
33
52
  "./collections": {
34
- "source": "./src/well-known/collections.ts",
35
- "types": "./src/well-known/collections.ts",
36
- "default": "./dist/well-known/collections.js"
53
+ "types": "./dist/node/collections.d.ts",
54
+ "browser": "./dist/browser/collections.js",
55
+ "bun": "./dist/node/collections.js",
56
+ "node": "./dist/node/collections.js",
57
+ "default": "./dist/node/collections.js"
58
+ },
59
+ "./agents": {
60
+ "types": "./dist/node/agents.d.ts",
61
+ "browser": "./dist/browser/agents.js",
62
+ "bun": "./dist/node/agents.js",
63
+ "node": "./dist/node/agents.js",
64
+ "default": "./dist/node/agents.js"
37
65
  }
38
66
  },
39
67
  "devDependencies": {
68
+ "esbuild-plugin-polyfill-node": "^0.3.0",
40
69
  "tsup": "^8.5.0",
41
70
  "typescript": "^5.9.3",
42
71
  "vitest": "3.2.4"
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/well-known/collections.ts"],"names":[],"mappings":"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","file":"chunk-JMM4EZYL.js","sourcesContent":["import { z } from \"zod\";\nimport type { ToolBinder } from \"../core/binder\";\n\n/**\n * Collection Bindings\n *\n * This module provides standardized tool bindings for Collections, representing\n * SQL table-like structures with CRUD + Search operations compatible with TanStack DB.\n *\n * Key Features:\n * - Generic collection bindings that work with any entity type\n * - Standardized tool naming: `COLLECTION_{COLLECTION}_*`\n * - Compatible with TanStack DB query-collection\n * - Full TypeScript support with proper type constraints\n * - Support for filtering, sorting, and pagination\n * - Simple id and title fields for human-readable identification\n */\n\n/**\n * Base schema for collection entities\n * All collection entities must have an id, title, and audit trail fields\n */\nexport const BaseCollectionEntitySchema = z.object({\n id: z.string().describe(\"Unique identifier for the entity\"),\n title: z.string().describe(\"Human-readable title for the entity\"),\n created_at: z.string().datetime(),\n updated_at: z.string().datetime(),\n created_by: z.string().optional(),\n updated_by: z.string().optional(),\n});\n\n/**\n * Type helper for BaseCollectionEntitySchema\n */\nexport type BaseCollectionEntitySchemaType = typeof BaseCollectionEntitySchema;\n\n/**\n * Comparison expression schema for filtering\n */\nconst ComparisonExpressionSchema = z.object({\n field: z.array(z.string()),\n operator: z.enum([\"eq\", \"gt\", \"gte\", \"lt\", \"lte\", \"in\", \"like\", \"contains\"]),\n value: z.unknown(),\n});\n\n/**\n * Where expression schema for filtering\n * Supports TanStack DB predicate push-down patterns\n */\nexport const WhereExpressionSchema = z.union([\n ComparisonExpressionSchema,\n z.object({\n operator: z.enum([\"and\", \"or\", \"not\"]),\n conditions: z.array(ComparisonExpressionSchema),\n }),\n]);\n\n/**\n * Where expression type for filtering\n * Derived from WhereExpressionSchema\n */\nexport type WhereExpression = z.infer<typeof WhereExpressionSchema>;\n\n/**\n * Order by expression for sorting\n */\nexport const OrderByExpressionSchema = z.object({\n field: z.array(z.string()),\n direction: z.enum([\"asc\", \"desc\"]),\n nulls: z.enum([\"first\", \"last\"]).optional(),\n});\n\n/**\n * List/Query input schema for collections\n * Compatible with TanStack DB LoadSubsetOptions\n */\nexport const CollectionListInputSchema = z.object({\n where: WhereExpressionSchema.optional().describe(\"Filter expression\"),\n orderBy: z\n .array(OrderByExpressionSchema)\n .optional()\n .describe(\"Sort expressions\"),\n limit: z\n .number()\n .int()\n .min(1)\n .max(1000)\n .optional()\n .describe(\"Maximum number of items to return\"),\n offset: z\n .number()\n .int()\n .min(0)\n .optional()\n .describe(\"Number of items to skip\"),\n});\n\n/**\n * Factory function to create list output schema for a specific collection type\n */\nexport function createCollectionListOutputSchema<T extends z.ZodTypeAny>(\n entitySchema: T,\n) {\n return z.object({\n items: z.array(entitySchema).describe(\"Array of collection items\"),\n totalCount: z\n .number()\n .int()\n .min(0)\n .optional()\n .describe(\"Total number of matching items (if available)\"),\n hasMore: z\n .boolean()\n .optional()\n .describe(\"Whether there are more items available\"),\n });\n}\n\n/**\n * Get by ID input schema\n */\nexport const CollectionGetInputSchema = z.object({\n id: z.string().describe(\"ID of the entity to retrieve\"),\n});\n\n/**\n * Factory function to create get output schema\n */\nexport function createCollectionGetOutputSchema<T extends z.ZodTypeAny>(\n entitySchema: T,\n) {\n return z.object({\n item: entitySchema\n .nullable()\n .describe(\"The retrieved item, or null if not found\"),\n });\n}\n\n/**\n * Factory function to create insert input schema\n */\nexport function createCollectionInsertInputSchema<T extends z.ZodTypeAny>(\n entitySchema: T,\n) {\n // Remove id field since it may be auto-generated by the server\n return z.object({\n data: entitySchema.describe(\n \"Data for the new entity (id may be auto-generated)\",\n ),\n });\n}\n\n/**\n * Factory function to create insert output schema\n */\nexport function createCollectionInsertOutputSchema<T extends z.ZodTypeAny>(\n entitySchema: T,\n) {\n return z.object({\n item: entitySchema.describe(\"The created entity with generated id\"),\n });\n}\n\n/**\n * Factory function to create update input schema\n */\nexport function createCollectionUpdateInputSchema<T extends z.ZodTypeAny>(\n entitySchema: T,\n) {\n return z.object({\n id: z.string().describe(\"ID of the entity to update\"),\n data: (entitySchema as unknown as z.AnyZodObject)\n .partial()\n .describe(\"Partial entity data to update\"),\n });\n}\n\n/**\n * Factory function to create update output schema\n */\nexport function createCollectionUpdateOutputSchema<T extends z.ZodTypeAny>(\n entitySchema: T,\n) {\n return z.object({\n item: entitySchema.describe(\"The updated entity\"),\n });\n}\n\n/**\n * Delete input schema\n */\nexport const CollectionDeleteInputSchema = z.object({\n id: z.string().describe(\"ID of the entity to delete\"),\n});\n\n/**\n * Factory function to create delete output schema\n */\nexport function createCollectionDeleteOutputSchema<T extends z.ZodTypeAny>(\n entitySchema: T,\n) {\n return z.object({\n item: entitySchema.describe(\"The deleted entity\"),\n });\n}\n\n/**\n * Options for creating collection bindings\n */\nexport interface CollectionBindingOptions {\n /**\n * If true, only LIST and GET operations will be included (read-only collection)\n * @default false\n */\n readOnly?: boolean;\n}\n\n/**\n * Creates generic collection bindings for a specific entity type\n *\n * This function generates standardized tool bindings that work with any collection/table\n * by accepting a custom entity schema and collection name. The bindings provide:\n * - COLLECTION_{NAME}_LIST - Query/search entities with filtering and sorting (required)\n * - COLLECTION_{NAME}_GET - Get a single entity by ID (required)\n * - COLLECTION_{NAME}_CREATE - Create a new entity (optional, excluded if readOnly=true)\n * - COLLECTION_{NAME}_UPDATE - Update an existing entity (optional, excluded if readOnly=true)\n * - COLLECTION_{NAME}_DELETE - Delete an entity (optional, excluded if readOnly=true)\n *\n * @param collectionName - The name of the collection/table (e.g., \"users\", \"products\", \"orders\")\n * @param entitySchema - The Zod schema for the entity type (must extend BaseCollectionEntitySchema)\n * @param options - Optional configuration for the collection bindings\n * @returns Array of tool bindings for Collection CRUD + Query operations\n *\n * @example\n * ```typescript\n * const UserSchema = z.object({\n * id: z.string(),\n * title: z.string(),\n * created_at: z.string().datetime(),\n * updated_at: z.string().datetime(),\n * created_by: z.string().optional(),\n * updated_by: z.string().optional(),\n * email: z.string().email(),\n * });\n *\n * // Full CRUD collection\n * const USER_COLLECTION_BINDING = createCollectionBindings(\"users\", UserSchema);\n *\n * // Read-only collection (only LIST and GET)\n * const READONLY_COLLECTION_BINDING = createCollectionBindings(\"products\", ProductSchema, { readOnly: true });\n * ```\n */\nexport function createCollectionBindings<\n TEntitySchema extends BaseCollectionEntitySchemaType,\n>(\n collectionName: string,\n entitySchema: TEntitySchema,\n options?: CollectionBindingOptions,\n) {\n const upperName = collectionName.toUpperCase();\n const readOnly = options?.readOnly ?? false;\n\n const bindings: ToolBinder[] = [\n {\n name: `COLLECTION_${upperName}_LIST` as const,\n inputSchema: CollectionListInputSchema,\n outputSchema: createCollectionListOutputSchema(entitySchema),\n },\n {\n name: `COLLECTION_${upperName}_GET` as const,\n inputSchema: CollectionGetInputSchema,\n outputSchema: createCollectionGetOutputSchema(entitySchema),\n },\n ];\n\n // Only include mutation operations if not read-only\n if (!readOnly) {\n bindings.push(\n {\n name: `COLLECTION_${upperName}_CREATE` as const,\n inputSchema: createCollectionInsertInputSchema(entitySchema),\n outputSchema: createCollectionInsertOutputSchema(entitySchema),\n opt: true,\n },\n {\n name: `COLLECTION_${upperName}_UPDATE` as const,\n inputSchema: createCollectionUpdateInputSchema(entitySchema),\n outputSchema: createCollectionUpdateOutputSchema(entitySchema),\n opt: true,\n },\n {\n name: `COLLECTION_${upperName}_DELETE` as const,\n inputSchema: CollectionDeleteInputSchema,\n outputSchema: createCollectionDeleteOutputSchema(entitySchema),\n opt: true,\n },\n );\n }\n\n return bindings satisfies readonly ToolBinder[];\n}\n\n/**\n * Type helper to extract the collection binding type\n */\nexport type CollectionBinding<\n TEntitySchema extends BaseCollectionEntitySchemaType,\n> = ReturnType<typeof createCollectionBindings<TEntitySchema>>;\n\n/**\n * Type helper to extract tool names from a collection binding\n */\nexport type CollectionTools<\n TEntitySchema extends BaseCollectionEntitySchemaType,\n> = CollectionBinding<TEntitySchema>[number][\"name\"];\n\n// Export types for TypeScript usage\nexport type CollectionListInput = z.infer<typeof CollectionListInputSchema>;\nexport type CollectionGetInput = z.infer<typeof CollectionGetInputSchema>;\nexport type CollectionDeleteInput = z.infer<typeof CollectionDeleteInputSchema>;\nexport type OrderByExpression = z.infer<typeof OrderByExpressionSchema>;\n\n/**\n * Type helper for list output with generic item type\n */\nexport type CollectionListOutput<T> = {\n items: T[];\n totalCount?: number;\n hasMore?: boolean;\n};\n\n/**\n * Type helper for get output with generic item type\n */\nexport type CollectionGetOutput<T> = {\n item: T | null;\n};\n\n/**\n * Type helper for insert output with generic item type\n */\nexport type CollectionInsertOutput<T> = {\n item: T;\n};\n\n/**\n * Type helper for update output with generic item type\n */\nexport type CollectionUpdateOutput<T> = {\n item: T;\n};\n\n/**\n * Type helper for delete output with generic item type\n */\nexport type CollectionDeleteOutput<T> = {\n item: T;\n};\n\n/**\n * Base collection entity type - inferred from BaseCollectionEntitySchema\n */\nexport type BaseCollectionEntity = z.infer<typeof BaseCollectionEntitySchema>;\n"]}
@@ -1,127 +0,0 @@
1
- import { ToolBinder } from '../index.js';
2
- import { z } from 'zod';
3
-
4
- /**
5
- * Model entity schema for AI models
6
- * Extends BaseCollectionEntitySchema with model-specific fields
7
- * Base schema already includes: id, title, created_at, updated_at, created_by, updated_by
8
- */
9
- declare const ModelSchema: z.ZodObject<{
10
- id: z.ZodString;
11
- title: z.ZodString;
12
- created_at: z.ZodString;
13
- updated_at: z.ZodString;
14
- created_by: z.ZodOptional<z.ZodString>;
15
- updated_by: z.ZodOptional<z.ZodString>;
16
- } & {
17
- logo: z.ZodNullable<z.ZodString>;
18
- description: z.ZodNullable<z.ZodString>;
19
- capabilities: z.ZodArray<z.ZodString, "many">;
20
- limits: z.ZodNullable<z.ZodObject<{
21
- contextWindow: z.ZodNumber;
22
- maxOutputTokens: z.ZodNumber;
23
- }, "strip", z.ZodTypeAny, {
24
- contextWindow: number;
25
- maxOutputTokens: number;
26
- }, {
27
- contextWindow: number;
28
- maxOutputTokens: number;
29
- }>>;
30
- costs: z.ZodNullable<z.ZodObject<{
31
- input: z.ZodNumber;
32
- output: z.ZodNumber;
33
- }, "strip", z.ZodTypeAny, {
34
- input: number;
35
- output: number;
36
- }, {
37
- input: number;
38
- output: number;
39
- }>>;
40
- provider: z.ZodNullable<z.ZodEnum<["openai", "anthropic", "google", "xai", "deepseek", "openai-compatible", "openrouter"]>>;
41
- endpoint: z.ZodNullable<z.ZodObject<{
42
- url: z.ZodString;
43
- method: z.ZodDefault<z.ZodString>;
44
- contentType: z.ZodDefault<z.ZodString>;
45
- stream: z.ZodDefault<z.ZodBoolean>;
46
- }, "strip", z.ZodTypeAny, {
47
- url: string;
48
- method: string;
49
- contentType: string;
50
- stream: boolean;
51
- }, {
52
- url: string;
53
- method?: string | undefined;
54
- contentType?: string | undefined;
55
- stream?: boolean | undefined;
56
- }>>;
57
- }, "strip", z.ZodTypeAny, {
58
- id: string;
59
- title: string;
60
- created_at: string;
61
- updated_at: string;
62
- logo: string | null;
63
- description: string | null;
64
- capabilities: string[];
65
- limits: {
66
- contextWindow: number;
67
- maxOutputTokens: number;
68
- } | null;
69
- costs: {
70
- input: number;
71
- output: number;
72
- } | null;
73
- provider: "openai" | "anthropic" | "google" | "xai" | "deepseek" | "openai-compatible" | "openrouter" | null;
74
- endpoint: {
75
- url: string;
76
- method: string;
77
- contentType: string;
78
- stream: boolean;
79
- } | null;
80
- created_by?: string | undefined;
81
- updated_by?: string | undefined;
82
- }, {
83
- id: string;
84
- title: string;
85
- created_at: string;
86
- updated_at: string;
87
- logo: string | null;
88
- description: string | null;
89
- capabilities: string[];
90
- limits: {
91
- contextWindow: number;
92
- maxOutputTokens: number;
93
- } | null;
94
- costs: {
95
- input: number;
96
- output: number;
97
- } | null;
98
- provider: "openai" | "anthropic" | "google" | "xai" | "deepseek" | "openai-compatible" | "openrouter" | null;
99
- endpoint: {
100
- url: string;
101
- method?: string | undefined;
102
- contentType?: string | undefined;
103
- stream?: boolean | undefined;
104
- } | null;
105
- created_by?: string | undefined;
106
- updated_by?: string | undefined;
107
- }>;
108
- /**
109
- * MODELS Collection Binding
110
- *
111
- * Collection bindings for models (read-only).
112
- * Provides LIST and GET operations for AI models.
113
- */
114
- declare const MODELS_COLLECTION_BINDING: ToolBinder<string, any, object>[];
115
- /**
116
- * MODELS Binding
117
- *
118
- * Defines the interface for AI model providers.
119
- * Any MCP that implements this binding can provide AI models and streaming endpoints.
120
- *
121
- * Required tools:
122
- * - COLLECTION_MODELS_LIST: List available AI models with their capabilities
123
- * - COLLECTION_MODELS_GET: Get a single model by ID (includes streaming endpoint info)
124
- */
125
- declare const MODELS_BINDING: readonly ToolBinder<string, any, object>[];
126
-
127
- export { MODELS_BINDING, MODELS_COLLECTION_BINDING, ModelSchema };
@@ -1,46 +0,0 @@
1
- import { BaseCollectionEntitySchema, createCollectionBindings } from '../chunk-JMM4EZYL.js';
2
- import { z } from 'zod';
3
-
4
- var ModelSchema = BaseCollectionEntitySchema.extend({
5
- // Model-specific fields
6
- logo: z.string().nullable(),
7
- description: z.string().nullable(),
8
- capabilities: z.array(z.string()),
9
- limits: z.object({
10
- contextWindow: z.number(),
11
- maxOutputTokens: z.number()
12
- }).nullable(),
13
- costs: z.object({
14
- input: z.number(),
15
- output: z.number()
16
- }).nullable(),
17
- // Provider information
18
- provider: z.enum([
19
- "openai",
20
- "anthropic",
21
- "google",
22
- "xai",
23
- "deepseek",
24
- "openai-compatible",
25
- "openrouter"
26
- ]).nullable(),
27
- // Streaming endpoint information
28
- endpoint: z.object({
29
- url: z.string().url(),
30
- method: z.string().default("POST"),
31
- contentType: z.string().default("application/json"),
32
- stream: z.boolean().default(true)
33
- }).nullable()
34
- });
35
- var MODELS_COLLECTION_BINDING = createCollectionBindings(
36
- "models",
37
- ModelSchema,
38
- { readOnly: true }
39
- );
40
- var MODELS_BINDING = [
41
- ...MODELS_COLLECTION_BINDING
42
- ];
43
-
44
- export { MODELS_BINDING, MODELS_COLLECTION_BINDING, ModelSchema };
45
- //# sourceMappingURL=models.js.map
46
- //# sourceMappingURL=models.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/well-known/models.ts"],"names":[],"mappings":";;;AAsBO,IAAM,WAAA,GAAc,2BAA2B,MAAA,CAAO;AAAA;AAAA,EAE3D,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC1B,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,YAAA,EAAc,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,QAAQ,CAAA;AAAA,EAChC,MAAA,EAAQ,EACL,MAAA,CAAO;AAAA,IACN,aAAA,EAAe,EAAE,MAAA,EAAO;AAAA,IACxB,eAAA,EAAiB,EAAE,MAAA;AAAO,GAC3B,EACA,QAAA,EAAS;AAAA,EACZ,KAAA,EAAO,EACJ,MAAA,CAAO;AAAA,IACN,KAAA,EAAO,EAAE,MAAA,EAAO;AAAA,IAChB,MAAA,EAAQ,EAAE,MAAA;AAAO,GAClB,EACA,QAAA,EAAS;AAAA;AAAA,EAEZ,QAAA,EAAU,EACP,IAAA,CAAK;AAAA,IACJ,QAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACD,EACA,QAAA,EAAS;AAAA;AAAA,EAEZ,QAAA,EAAU,EACP,MAAA,CAAO;AAAA,IACN,GAAA,EAAK,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,IACpB,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAQ,MAAM,CAAA;AAAA,IACjC,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAQ,kBAAkB,CAAA;AAAA,IAClD,MAAA,EAAQ,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI;AAAA,GACjC,EACA,QAAA;AACL,CAAC;AAQM,IAAM,yBAAA,GAA4B,wBAAA;AAAA,EACvC,QAAA;AAAA,EACA,WAAA;AAAA,EACA,EAAE,UAAU,IAAA;AACd;AAYO,IAAM,cAAA,GAAiB;AAAA,EAC5B,GAAG;AACL","file":"models.js","sourcesContent":["/**\n * Models Well-Known Binding\n *\n * Defines the interface for AI model providers.\n * Any MCP that implements this binding can provide AI models and streaming endpoints.\n *\n * This binding uses collection bindings for LIST and GET operations (read-only).\n * Streaming endpoint information is included directly in the model entity schema.\n */\n\nimport { z } from \"zod\";\nimport type { Binder } from \"../core/binder\";\nimport {\n BaseCollectionEntitySchema,\n createCollectionBindings,\n} from \"./collections\";\n\n/**\n * Model entity schema for AI models\n * Extends BaseCollectionEntitySchema with model-specific fields\n * Base schema already includes: id, title, created_at, updated_at, created_by, updated_by\n */\nexport const ModelSchema = BaseCollectionEntitySchema.extend({\n // Model-specific fields\n logo: z.string().nullable(),\n description: z.string().nullable(),\n capabilities: z.array(z.string()),\n limits: z\n .object({\n contextWindow: z.number(),\n maxOutputTokens: z.number(),\n })\n .nullable(),\n costs: z\n .object({\n input: z.number(),\n output: z.number(),\n })\n .nullable(),\n // Provider information\n provider: z\n .enum([\n \"openai\",\n \"anthropic\",\n \"google\",\n \"xai\",\n \"deepseek\",\n \"openai-compatible\",\n \"openrouter\",\n ])\n .nullable(),\n // Streaming endpoint information\n endpoint: z\n .object({\n url: z.string().url(),\n method: z.string().default(\"POST\"),\n contentType: z.string().default(\"application/json\"),\n stream: z.boolean().default(true),\n })\n .nullable(),\n});\n\n/**\n * MODELS Collection Binding\n *\n * Collection bindings for models (read-only).\n * Provides LIST and GET operations for AI models.\n */\nexport const MODELS_COLLECTION_BINDING = createCollectionBindings(\n \"models\",\n ModelSchema,\n { readOnly: true },\n);\n\n/**\n * MODELS Binding\n *\n * Defines the interface for AI model providers.\n * Any MCP that implements this binding can provide AI models and streaming endpoints.\n *\n * Required tools:\n * - COLLECTION_MODELS_LIST: List available AI models with their capabilities\n * - COLLECTION_MODELS_GET: Get a single model by ID (includes streaming endpoint info)\n */\nexport const MODELS_BINDING = [\n ...MODELS_COLLECTION_BINDING,\n] as const satisfies Binder;\n"]}