@mcpmesh/sdk 0.8.0-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 (145) hide show
  1. package/dist/__tests__/claude-handler.test.d.ts +7 -0
  2. package/dist/__tests__/claude-handler.test.d.ts.map +1 -0
  3. package/dist/__tests__/claude-handler.test.js +455 -0
  4. package/dist/__tests__/claude-handler.test.js.map +1 -0
  5. package/dist/__tests__/config.test.d.ts +7 -0
  6. package/dist/__tests__/config.test.d.ts.map +1 -0
  7. package/dist/__tests__/config.test.js +156 -0
  8. package/dist/__tests__/config.test.js.map +1 -0
  9. package/dist/__tests__/errors.test.d.ts +7 -0
  10. package/dist/__tests__/errors.test.d.ts.map +1 -0
  11. package/dist/__tests__/errors.test.js +170 -0
  12. package/dist/__tests__/errors.test.js.map +1 -0
  13. package/dist/__tests__/generic-handler.test.d.ts +7 -0
  14. package/dist/__tests__/generic-handler.test.d.ts.map +1 -0
  15. package/dist/__tests__/generic-handler.test.js +243 -0
  16. package/dist/__tests__/generic-handler.test.js.map +1 -0
  17. package/dist/__tests__/llm-provider.test.d.ts +7 -0
  18. package/dist/__tests__/llm-provider.test.d.ts.map +1 -0
  19. package/dist/__tests__/llm-provider.test.js +217 -0
  20. package/dist/__tests__/llm-provider.test.js.map +1 -0
  21. package/dist/__tests__/openai-handler.test.d.ts +7 -0
  22. package/dist/__tests__/openai-handler.test.d.ts.map +1 -0
  23. package/dist/__tests__/openai-handler.test.js +359 -0
  24. package/dist/__tests__/openai-handler.test.js.map +1 -0
  25. package/dist/__tests__/provider-handler-registry.test.d.ts +9 -0
  26. package/dist/__tests__/provider-handler-registry.test.d.ts.map +1 -0
  27. package/dist/__tests__/provider-handler-registry.test.js +187 -0
  28. package/dist/__tests__/provider-handler-registry.test.js.map +1 -0
  29. package/dist/__tests__/response-parser.test.d.ts +7 -0
  30. package/dist/__tests__/response-parser.test.d.ts.map +1 -0
  31. package/dist/__tests__/response-parser.test.js +360 -0
  32. package/dist/__tests__/response-parser.test.js.map +1 -0
  33. package/dist/__tests__/route.test.d.ts +7 -0
  34. package/dist/__tests__/route.test.d.ts.map +1 -0
  35. package/dist/__tests__/route.test.js +281 -0
  36. package/dist/__tests__/route.test.js.map +1 -0
  37. package/dist/__tests__/sse.test.d.ts +7 -0
  38. package/dist/__tests__/sse.test.d.ts.map +1 -0
  39. package/dist/__tests__/sse.test.js +172 -0
  40. package/dist/__tests__/sse.test.js.map +1 -0
  41. package/dist/__tests__/template.test.d.ts +7 -0
  42. package/dist/__tests__/template.test.d.ts.map +1 -0
  43. package/dist/__tests__/template.test.js +176 -0
  44. package/dist/__tests__/template.test.js.map +1 -0
  45. package/dist/__tests__/tracing.test.d.ts +7 -0
  46. package/dist/__tests__/tracing.test.d.ts.map +1 -0
  47. package/dist/__tests__/tracing.test.js +264 -0
  48. package/dist/__tests__/tracing.test.js.map +1 -0
  49. package/dist/agent.d.ts +165 -0
  50. package/dist/agent.d.ts.map +1 -0
  51. package/dist/agent.js +626 -0
  52. package/dist/agent.js.map +1 -0
  53. package/dist/api-runtime.d.ts +166 -0
  54. package/dist/api-runtime.d.ts.map +1 -0
  55. package/dist/api-runtime.js +459 -0
  56. package/dist/api-runtime.js.map +1 -0
  57. package/dist/config.d.ts +31 -0
  58. package/dist/config.d.ts.map +1 -0
  59. package/dist/config.js +60 -0
  60. package/dist/config.js.map +1 -0
  61. package/dist/debug.d.ts +47 -0
  62. package/dist/debug.d.ts.map +1 -0
  63. package/dist/debug.js +86 -0
  64. package/dist/debug.js.map +1 -0
  65. package/dist/errors.d.ts +99 -0
  66. package/dist/errors.d.ts.map +1 -0
  67. package/dist/errors.js +110 -0
  68. package/dist/errors.js.map +1 -0
  69. package/dist/express.d.ts +146 -0
  70. package/dist/express.d.ts.map +1 -0
  71. package/dist/express.js +371 -0
  72. package/dist/express.js.map +1 -0
  73. package/dist/index.d.ts +96 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/index.js +107 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/llm-agent.d.ts +193 -0
  78. package/dist/llm-agent.d.ts.map +1 -0
  79. package/dist/llm-agent.js +634 -0
  80. package/dist/llm-agent.js.map +1 -0
  81. package/dist/llm-provider.d.ts +323 -0
  82. package/dist/llm-provider.d.ts.map +1 -0
  83. package/dist/llm-provider.js +446 -0
  84. package/dist/llm-provider.js.map +1 -0
  85. package/dist/llm.d.ts +194 -0
  86. package/dist/llm.d.ts.map +1 -0
  87. package/dist/llm.js +304 -0
  88. package/dist/llm.js.map +1 -0
  89. package/dist/provider-handlers/claude-handler.d.ts +98 -0
  90. package/dist/provider-handlers/claude-handler.d.ts.map +1 -0
  91. package/dist/provider-handlers/claude-handler.js +268 -0
  92. package/dist/provider-handlers/claude-handler.js.map +1 -0
  93. package/dist/provider-handlers/gemini-handler.d.ts +82 -0
  94. package/dist/provider-handlers/gemini-handler.d.ts.map +1 -0
  95. package/dist/provider-handlers/gemini-handler.js +152 -0
  96. package/dist/provider-handlers/gemini-handler.js.map +1 -0
  97. package/dist/provider-handlers/generic-handler.d.ts +78 -0
  98. package/dist/provider-handlers/generic-handler.d.ts.map +1 -0
  99. package/dist/provider-handlers/generic-handler.js +152 -0
  100. package/dist/provider-handlers/generic-handler.js.map +1 -0
  101. package/dist/provider-handlers/index.d.ts +29 -0
  102. package/dist/provider-handlers/index.d.ts.map +1 -0
  103. package/dist/provider-handlers/index.js +32 -0
  104. package/dist/provider-handlers/index.js.map +1 -0
  105. package/dist/provider-handlers/openai-handler.d.ts +86 -0
  106. package/dist/provider-handlers/openai-handler.d.ts.map +1 -0
  107. package/dist/provider-handlers/openai-handler.js +160 -0
  108. package/dist/provider-handlers/openai-handler.js.map +1 -0
  109. package/dist/provider-handlers/provider-handler-registry.d.ts +124 -0
  110. package/dist/provider-handlers/provider-handler-registry.d.ts.map +1 -0
  111. package/dist/provider-handlers/provider-handler-registry.js +180 -0
  112. package/dist/provider-handlers/provider-handler-registry.js.map +1 -0
  113. package/dist/provider-handlers/provider-handler.d.ts +245 -0
  114. package/dist/provider-handlers/provider-handler.d.ts.map +1 -0
  115. package/dist/provider-handlers/provider-handler.js +238 -0
  116. package/dist/provider-handlers/provider-handler.js.map +1 -0
  117. package/dist/proxy.d.ts +44 -0
  118. package/dist/proxy.d.ts.map +1 -0
  119. package/dist/proxy.js +324 -0
  120. package/dist/proxy.js.map +1 -0
  121. package/dist/response-parser.d.ts +103 -0
  122. package/dist/response-parser.d.ts.map +1 -0
  123. package/dist/response-parser.js +232 -0
  124. package/dist/response-parser.js.map +1 -0
  125. package/dist/route.d.ts +185 -0
  126. package/dist/route.d.ts.map +1 -0
  127. package/dist/route.js +310 -0
  128. package/dist/route.js.map +1 -0
  129. package/dist/sse.d.ts +45 -0
  130. package/dist/sse.d.ts.map +1 -0
  131. package/dist/sse.js +77 -0
  132. package/dist/sse.js.map +1 -0
  133. package/dist/template.d.ts +86 -0
  134. package/dist/template.d.ts.map +1 -0
  135. package/dist/template.js +206 -0
  136. package/dist/template.js.map +1 -0
  137. package/dist/tracing.d.ts +88 -0
  138. package/dist/tracing.d.ts.map +1 -0
  139. package/dist/tracing.js +193 -0
  140. package/dist/tracing.js.map +1 -0
  141. package/dist/types.d.ts +618 -0
  142. package/dist/types.d.ts.map +1 -0
  143. package/dist/types.js +5 -0
  144. package/dist/types.js.map +1 -0
  145. package/package.json +68 -0
@@ -0,0 +1,371 @@
1
+ /**
2
+ * MeshExpress: Express app integration with MCP Mesh.
3
+ *
4
+ * Provides automatic registration with mesh registry and dependency injection
5
+ * for Express route handlers. Uses agent_type: "api" since API services only
6
+ * consume capabilities, they don't provide them.
7
+ *
8
+ * **Note:** For simpler usage, just use `mesh.route()` without `meshExpress()`.
9
+ * The API runtime auto-initializes when the first `mesh.route()` is called.
10
+ *
11
+ * @example Simple usage (recommended)
12
+ * ```typescript
13
+ * import express from "express";
14
+ * import { mesh } from "@mcpmesh/sdk";
15
+ *
16
+ * const app = express();
17
+ * app.use(express.json());
18
+ *
19
+ * // mesh.route() auto-initializes the mesh connection
20
+ * app.post("/compute", mesh.route(
21
+ * [{ capability: "calculator" }],
22
+ * async (req, res, { calculator }) => {
23
+ * res.json({ result: await calculator({ a: req.body.a, b: req.body.b }) });
24
+ * }
25
+ * ));
26
+ *
27
+ * app.listen(3000);
28
+ * ```
29
+ *
30
+ * @example Explicit control (advanced)
31
+ * ```typescript
32
+ * import express from "express";
33
+ * import { meshExpress, mesh } from "@mcpmesh/sdk";
34
+ *
35
+ * const app = express();
36
+ * const meshApp = meshExpress(app, { name: "my-api", port: 3000 });
37
+ *
38
+ * app.post("/compute", mesh.route(...));
39
+ *
40
+ * meshApp.start();
41
+ * ```
42
+ */
43
+ import { startAgent, } from "@mcpmesh/core";
44
+ import { resolveConfig, generateAgentIdSuffix } from "./config.js";
45
+ import { createProxy } from "./proxy.js";
46
+ import { RouteRegistry } from "./route.js";
47
+ import { initTracing } from "./tracing.js";
48
+ /**
49
+ * Build tool specs from registered routes.
50
+ * Shared helper for consistent tool spec generation.
51
+ */
52
+ function buildToolSpecs(routes) {
53
+ return routes
54
+ .filter((route) => route.dependencies.length > 0)
55
+ .map((route) => ({
56
+ functionName: route.routeId,
57
+ capability: "", // Routes don't provide capabilities, they consume them
58
+ version: "1.0.0",
59
+ tags: [],
60
+ description: "",
61
+ dependencies: route.dependencies.map((dep) => ({
62
+ capability: dep.capability,
63
+ tags: dep.tags,
64
+ version: dep.version,
65
+ })),
66
+ inputSchema: undefined,
67
+ }));
68
+ }
69
+ /**
70
+ * MeshExpress wraps an Express app with MCP Mesh capabilities.
71
+ *
72
+ * Provides:
73
+ * - Registration with mesh registry via Rust core
74
+ * - Heartbeat management
75
+ * - Dependency resolution for route handlers
76
+ * - Distributed tracing
77
+ */
78
+ export class MeshExpress {
79
+ app;
80
+ config;
81
+ serviceId;
82
+ handle = null;
83
+ server = null;
84
+ started = false;
85
+ constructor(app, config) {
86
+ this.app = app;
87
+ // Resolve config with env var precedence: ENV > config > defaults
88
+ this.config = resolveConfig(config);
89
+ // Generate unique service ID with suffix (e.g., "my-api-a1b2c3d4")
90
+ this.serviceId = `${this.config.name}-${generateAgentIdSuffix()}`;
91
+ // Add health check endpoint
92
+ this.setupHealthEndpoints();
93
+ // Auto-start if configured (but default is false for Express)
94
+ if (config.autoStart) {
95
+ process.nextTick(() => {
96
+ this.start().catch((err) => {
97
+ console.error("MeshExpress auto-start failed:", err);
98
+ process.exit(1);
99
+ });
100
+ });
101
+ }
102
+ }
103
+ /**
104
+ * Setup health check endpoints for the registry.
105
+ */
106
+ setupHealthEndpoints() {
107
+ // Health check endpoint for registry
108
+ this.app.get("/health", (_req, res) => {
109
+ res.json({ status: "healthy", serviceId: this.serviceId });
110
+ });
111
+ // Ready check endpoint
112
+ this.app.get("/ready", (_req, res) => {
113
+ const isReady = this.handle !== null;
114
+ res.status(isReady ? 200 : 503).json({
115
+ ready: isReady,
116
+ serviceId: this.serviceId,
117
+ });
118
+ });
119
+ }
120
+ /**
121
+ * Start the Express server and register with mesh.
122
+ */
123
+ async start() {
124
+ if (this.started)
125
+ return;
126
+ this.started = true;
127
+ console.log(`Starting MeshExpress service: ${this.serviceId}`);
128
+ // 0. Initialize distributed tracing
129
+ const agentMetadata = {
130
+ agentId: this.serviceId,
131
+ agentName: this.config.name,
132
+ agentNamespace: this.config.namespace,
133
+ agentHostname: this.config.host,
134
+ agentIp: this.config.host,
135
+ agentPort: this.config.port,
136
+ agentEndpoint: `http://${this.config.host}:${this.config.port}`,
137
+ };
138
+ await initTracing(agentMetadata);
139
+ // 1. Start HTTP server
140
+ await this.startServer();
141
+ // 2. Start heartbeat to registry via Rust core
142
+ await this.startHeartbeat();
143
+ // 3. Install signal handlers for graceful shutdown
144
+ this.installSignalHandlers();
145
+ }
146
+ /**
147
+ * Start the Express HTTP server.
148
+ */
149
+ startServer() {
150
+ return new Promise((resolve, reject) => {
151
+ try {
152
+ this.server = this.app.listen(this.config.port, "0.0.0.0", () => {
153
+ console.log(`Service listening on port ${this.config.port}`);
154
+ resolve();
155
+ });
156
+ this.server.on("error", (err) => {
157
+ reject(err);
158
+ });
159
+ }
160
+ catch (err) {
161
+ reject(err);
162
+ }
163
+ });
164
+ }
165
+ /**
166
+ * Start the Rust core heartbeat loop.
167
+ */
168
+ async startHeartbeat() {
169
+ const registry = RouteRegistry.getInstance();
170
+ const routes = registry.getRoutes();
171
+ const tools = buildToolSpecs(routes);
172
+ const spec = {
173
+ name: this.serviceId,
174
+ version: this.config.version,
175
+ description: this.config.description,
176
+ registryUrl: this.config.registryUrl,
177
+ httpPort: this.config.port,
178
+ httpHost: this.config.host,
179
+ namespace: this.config.namespace,
180
+ agentType: "api", // API services only consume capabilities, not provide them
181
+ tools,
182
+ heartbeatInterval: this.config.heartbeatInterval,
183
+ };
184
+ // Start the agent via Rust core
185
+ this.handle = startAgent(spec);
186
+ // Count total dependencies
187
+ const totalDeps = routes.reduce((sum, r) => sum + r.dependencies.length, 0);
188
+ console.log(`Registered ${routes.length} routes with registry (${totalDeps} dependencies)`);
189
+ // Start event loop (runs in background)
190
+ this.runEventLoop();
191
+ }
192
+ /**
193
+ * Run the event loop to handle mesh events.
194
+ */
195
+ async runEventLoop() {
196
+ if (!this.handle)
197
+ return;
198
+ const registry = RouteRegistry.getInstance();
199
+ while (true) {
200
+ try {
201
+ const event = await this.handle.nextEvent();
202
+ switch (event.eventType) {
203
+ case "agent_registered":
204
+ console.log(`Service registered with ID: ${event.agentId}`);
205
+ break;
206
+ case "registration_failed":
207
+ console.error(`Registration failed: ${event.error}`);
208
+ break;
209
+ case "dependency_available":
210
+ this.handleDependencyAvailable(registry, event.capability, event.endpoint, event.functionName, event.agentId, event.requestingFunction, event.depIndex);
211
+ break;
212
+ case "dependency_unavailable":
213
+ this.handleDependencyUnavailable(registry, event.capability, event.requestingFunction, event.depIndex);
214
+ break;
215
+ case "dependency_changed":
216
+ this.handleDependencyAvailable(registry, event.capability, event.endpoint, event.functionName, event.agentId, event.requestingFunction, event.depIndex);
217
+ break;
218
+ case "registry_connected":
219
+ console.log("Connected to registry");
220
+ break;
221
+ case "registry_disconnected":
222
+ console.warn(`Disconnected from registry: ${event.reason}`);
223
+ registry.clearAllDependencies();
224
+ break;
225
+ case "shutdown":
226
+ console.log("Service shutting down");
227
+ return;
228
+ default:
229
+ break;
230
+ }
231
+ }
232
+ catch (err) {
233
+ console.error("Event loop error:", err);
234
+ break;
235
+ }
236
+ }
237
+ }
238
+ /**
239
+ * Handle dependency_available event.
240
+ */
241
+ handleDependencyAvailable(registry, capability, endpoint, functionName, agentId, requestingFunction, depIndex) {
242
+ // If we have position info, use it directly
243
+ if (requestingFunction !== undefined && depIndex !== undefined) {
244
+ const route = registry.getRoute(requestingFunction);
245
+ const kwargs = route?.dependencyKwargs?.[depIndex];
246
+ const proxy = createProxy(endpoint, capability, functionName, kwargs);
247
+ registry.setDependency(requestingFunction, depIndex, proxy);
248
+ console.log(`Dependency available: ${capability} at ${endpoint} (route: ${requestingFunction}, index: ${depIndex}, agent: ${agentId})`);
249
+ return;
250
+ }
251
+ // Fallback: match by capability across all routes
252
+ let matchCount = 0;
253
+ for (const route of registry.getRoutes()) {
254
+ route.dependencies.forEach((dep, idx) => {
255
+ if (dep.capability === capability) {
256
+ const kwargs = route.dependencyKwargs?.[idx];
257
+ const proxy = createProxy(endpoint, capability, functionName, kwargs);
258
+ registry.setDependency(route.routeId, idx, proxy);
259
+ matchCount++;
260
+ }
261
+ });
262
+ }
263
+ console.log(`Dependency available: ${capability} at ${endpoint} (agent: ${agentId}, ${matchCount} route bindings)`);
264
+ }
265
+ /**
266
+ * Handle dependency_unavailable event.
267
+ */
268
+ handleDependencyUnavailable(registry, capability, requestingFunction, depIndex) {
269
+ // If we have position info, use it directly
270
+ if (requestingFunction !== undefined && depIndex !== undefined) {
271
+ registry.removeDependency(requestingFunction, depIndex);
272
+ console.log(`Dependency unavailable: ${capability} (route: ${requestingFunction}, index: ${depIndex})`);
273
+ return;
274
+ }
275
+ // Fallback: match by capability across all routes
276
+ let removeCount = 0;
277
+ for (const route of registry.getRoutes()) {
278
+ route.dependencies.forEach((dep, idx) => {
279
+ if (dep.capability === capability) {
280
+ registry.removeDependency(route.routeId, idx);
281
+ removeCount++;
282
+ }
283
+ });
284
+ }
285
+ console.log(`Dependency unavailable: ${capability} (${removeCount} route bindings removed)`);
286
+ }
287
+ /**
288
+ * Install signal handlers for graceful shutdown.
289
+ */
290
+ installSignalHandlers() {
291
+ let shuttingDown = false;
292
+ const shutdownHandler = async (signal) => {
293
+ if (shuttingDown)
294
+ return;
295
+ shuttingDown = true;
296
+ console.log(`\nReceived ${signal}, shutting down service ${this.serviceId}...`);
297
+ try {
298
+ await this.shutdown();
299
+ console.log(`Service ${this.serviceId} unregistered from registry`);
300
+ }
301
+ catch (err) {
302
+ console.error("Error during shutdown:", err);
303
+ }
304
+ process.exit(0);
305
+ };
306
+ process.on("SIGINT", () => void shutdownHandler("SIGINT"));
307
+ process.on("SIGTERM", () => void shutdownHandler("SIGTERM"));
308
+ }
309
+ /**
310
+ * Get the service ID.
311
+ */
312
+ getServiceId() {
313
+ return this.serviceId;
314
+ }
315
+ /**
316
+ * Get the resolved configuration.
317
+ */
318
+ getConfig() {
319
+ return this.config;
320
+ }
321
+ /**
322
+ * Get the underlying Express app.
323
+ */
324
+ getApp() {
325
+ return this.app;
326
+ }
327
+ /**
328
+ * Get the HTTP server instance.
329
+ */
330
+ getServer() {
331
+ return this.server;
332
+ }
333
+ /**
334
+ * Get the agent handle for advanced operations.
335
+ */
336
+ getHandle() {
337
+ return this.handle;
338
+ }
339
+ /**
340
+ * Shutdown the service gracefully.
341
+ */
342
+ async shutdown() {
343
+ if (this.handle) {
344
+ await this.handle.shutdown();
345
+ this.handle = null;
346
+ }
347
+ if (this.server) {
348
+ await new Promise((resolve) => {
349
+ this.server.close(() => resolve());
350
+ });
351
+ this.server = null;
352
+ }
353
+ }
354
+ }
355
+ /**
356
+ * Create a MeshExpress instance wrapping an Express app.
357
+ *
358
+ * @example
359
+ * ```typescript
360
+ * const app = express();
361
+ * const meshApp = meshExpress(app, { name: "my-api", port: 3000 });
362
+ *
363
+ * // Define routes with mesh.route()...
364
+ *
365
+ * meshApp.start();
366
+ * ```
367
+ */
368
+ export function meshExpress(app, config) {
369
+ return new MeshExpress(app, config);
370
+ }
371
+ //# sourceMappingURL=express.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.js","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * @mcpmesh/sdk - MCP Mesh SDK for TypeScript
3
+ *
4
+ * Build distributed MCP agents with automatic service discovery and dependency injection.
5
+ *
6
+ * @example MCP Agent (fastmcp)
7
+ * ```typescript
8
+ * import { FastMCP } from "fastmcp";
9
+ * import { mesh } from "@mcpmesh/sdk";
10
+ * import { z } from "zod";
11
+ *
12
+ * const server = new FastMCP({ name: "Calculator", version: "1.0.0" });
13
+ *
14
+ * const agent = mesh(server, {
15
+ * name: "calculator",
16
+ * port: 9002,
17
+ * });
18
+ *
19
+ * agent.addTool({
20
+ * name: "add",
21
+ * capability: "add",
22
+ * tags: ["tools", "math"],
23
+ * description: "Add two numbers together",
24
+ * parameters: z.object({ a: z.number(), b: z.number() }),
25
+ * execute: async ({ a, b }) => String(a + b),
26
+ * });
27
+ *
28
+ * // No server.start() or main function needed!
29
+ * ```
30
+ *
31
+ * @example Express API with mesh dependencies
32
+ * ```typescript
33
+ * import express from "express";
34
+ * import { mesh, meshExpress } from "@mcpmesh/sdk";
35
+ *
36
+ * const app = express();
37
+ * app.use(express.json());
38
+ *
39
+ * const meshApp = meshExpress(app, { name: "my-api", port: 3000 });
40
+ *
41
+ * app.post("/compute", mesh.route(
42
+ * [{ capability: "calculator" }],
43
+ * async (req, res, { calculator }) => {
44
+ * const result = await calculator({ a: req.body.a, b: req.body.b });
45
+ * res.json({ result });
46
+ * }
47
+ * ));
48
+ *
49
+ * meshApp.start();
50
+ * ```
51
+ */
52
+ import { MeshAgent } from "./agent.js";
53
+ import { route, routeWithConfig } from "./route.js";
54
+ import { bindToExpress } from "./api-runtime.js";
55
+ import { llm } from "./llm.js";
56
+ import { llmProvider } from "./llm-provider.js";
57
+ interface MeshNamespace {
58
+ (server: import("fastmcp").FastMCP, config: import("./types.js").AgentConfig): MeshAgent;
59
+ route: typeof route;
60
+ routeWithConfig: typeof routeWithConfig;
61
+ /** Optional: Bind to Express for proper route names in logs. Port auto-detected from PORT env. */
62
+ bind: typeof bindToExpress;
63
+ /** Create an LLM-powered tool with agentic capabilities */
64
+ llm: typeof llm;
65
+ /** Create a zero-code LLM provider tool */
66
+ llmProvider: typeof llmProvider;
67
+ }
68
+ /**
69
+ * Main mesh function with route and llm helpers attached.
70
+ *
71
+ * - `mesh(server, config)` - Create an MCP agent (wraps fastmcp)
72
+ * - `mesh.route(deps, handler)` - Create Express route with DI
73
+ * - `mesh.bind(app, options)` - Bind to Express, introspect routes
74
+ * - `mesh.llm(config)` - Create LLM-powered tool with agentic loop
75
+ * - `mesh.llmProvider(config)` - Create zero-code LLM provider
76
+ */
77
+ declare const mesh: MeshNamespace;
78
+ export { mesh, MeshAgent };
79
+ export { FastMCP } from "fastmcp";
80
+ export { meshExpress, MeshExpress, type MeshExpressConfig } from "./express.js";
81
+ export { getApiRuntime, ApiRuntime, bindToExpress, introspectExpressRoutes, type ApiRuntimeConfig, } from "./api-runtime.js";
82
+ export { route, routeWithConfig, RouteRegistry, type MeshRouteHandler, type MeshRouteHandlerWithNext, type RouteDependencies, type MeshRouteConfig, type RouteMetadata, } from "./route.js";
83
+ export { createProxy, normalizeDependency } from "./proxy.js";
84
+ export { initTracing, isTracingAvailable, generateTraceId, generateSpanId, parseTraceContext, createTraceHeaders, publishTraceSpan, type TraceContext, type AgentMetadata, type SpanData, } from "./tracing.js";
85
+ export { llm, LlmToolRegistry, buildLlmAgentSpecs, handleLlmToolsUpdated, handleLlmProviderAvailable, handleLlmProviderUnavailable, getLlmToolMetadata, isLlmTool, type LlmToolConfig, type ResolvedProvider, type FastMcpToolDef, } from "./llm.js";
86
+ export { MeshLlmAgent, LiteLLMProvider, MeshDelegatedProvider, createLlmToolProxy, type MeshLlmAgentConfig, type AgentRunContext, type LlmProvider, } from "./llm-agent.js";
87
+ export { llmProvider, extractVendorFromModel, extractModelName, isLlmProviderTool, getLlmProviderMeta, } from "./llm-provider.js";
88
+ export { ProviderHandlerRegistry, GenericHandler, ClaudeHandler, OpenAIHandler, type ProviderHandler, type ProviderHandlerConstructor, type VendorCapabilities, type ToolSchema, type OutputSchema, type PreparedRequest, type OutputMode, } from "./provider-handlers/index.js";
89
+ export { MaxIterationsError, ToolExecutionError, LLMAPIError, ResponseParseError as LlmResponseParseError, ProviderUnavailableError, } from "./errors.js";
90
+ export { parseSSEResponse, isSSEResponse, parseSSEStream } from "./sse.js";
91
+ export { debug, createDebug, isAnyDebugEnabled } from "./debug.js";
92
+ export { renderTemplate, clearTemplateCache, registerHelper, registerPartial, isFileTemplate, extractFilePath, } from "./template.js";
93
+ export { ResponseParser, createResponseParser, extractJson, zodSchemaToPromptDescription, formatZodError, } from "./response-parser.js";
94
+ export type { AgentConfig, ResolvedAgentConfig, MeshToolDef, ToolMeta, DependencySpec, NormalizedDependency, ResolvedDependency, DependencyKwargs, McpMeshAgent, JsAgentHandle, JsMeshEvent, JsAgentSpec, JsToolSpec, JsDependencySpec, JsLlmAgentSpec, JsLlmToolInfo, JsLlmProviderInfo, LlmProviderSpec, LlmFilterSpec, LlmFilterMode, LlmMeta, LlmToolCall, LlmMessage, LlmToolCallRequest, LlmToolDefinition, LlmCompletionParams, LlmCompletionResponse, MeshLlmConfig, LlmAgent, LlmCallOptions, LlmToolProxy, LlmMessageInput, LlmContextMode, LlmOutputMode, MeshLlmRequest, MeshLlmUsage, MeshLlmResponse, LlmProviderConfig, } from "./types.js";
95
+ export default mesh;
96
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,107 @@
1
+ /**
2
+ * @mcpmesh/sdk - MCP Mesh SDK for TypeScript
3
+ *
4
+ * Build distributed MCP agents with automatic service discovery and dependency injection.
5
+ *
6
+ * @example MCP Agent (fastmcp)
7
+ * ```typescript
8
+ * import { FastMCP } from "fastmcp";
9
+ * import { mesh } from "@mcpmesh/sdk";
10
+ * import { z } from "zod";
11
+ *
12
+ * const server = new FastMCP({ name: "Calculator", version: "1.0.0" });
13
+ *
14
+ * const agent = mesh(server, {
15
+ * name: "calculator",
16
+ * port: 9002,
17
+ * });
18
+ *
19
+ * agent.addTool({
20
+ * name: "add",
21
+ * capability: "add",
22
+ * tags: ["tools", "math"],
23
+ * description: "Add two numbers together",
24
+ * parameters: z.object({ a: z.number(), b: z.number() }),
25
+ * execute: async ({ a, b }) => String(a + b),
26
+ * });
27
+ *
28
+ * // No server.start() or main function needed!
29
+ * ```
30
+ *
31
+ * @example Express API with mesh dependencies
32
+ * ```typescript
33
+ * import express from "express";
34
+ * import { mesh, meshExpress } from "@mcpmesh/sdk";
35
+ *
36
+ * const app = express();
37
+ * app.use(express.json());
38
+ *
39
+ * const meshApp = meshExpress(app, { name: "my-api", port: 3000 });
40
+ *
41
+ * app.post("/compute", mesh.route(
42
+ * [{ capability: "calculator" }],
43
+ * async (req, res, { calculator }) => {
44
+ * const result = await calculator({ a: req.body.a, b: req.body.b });
45
+ * res.json({ result });
46
+ * }
47
+ * ));
48
+ *
49
+ * meshApp.start();
50
+ * ```
51
+ */
52
+ import { mesh as meshFn, MeshAgent } from "./agent.js";
53
+ import { route, routeWithConfig } from "./route.js";
54
+ import { bindToExpress } from "./api-runtime.js";
55
+ import { llm } from "./llm.js";
56
+ import { llmProvider } from "./llm-provider.js";
57
+ /**
58
+ * Main mesh function with route and llm helpers attached.
59
+ *
60
+ * - `mesh(server, config)` - Create an MCP agent (wraps fastmcp)
61
+ * - `mesh.route(deps, handler)` - Create Express route with DI
62
+ * - `mesh.bind(app, options)` - Bind to Express, introspect routes
63
+ * - `mesh.llm(config)` - Create LLM-powered tool with agentic loop
64
+ * - `mesh.llmProvider(config)` - Create zero-code LLM provider
65
+ */
66
+ const mesh = Object.assign(meshFn, {
67
+ route,
68
+ routeWithConfig,
69
+ bind: bindToExpress,
70
+ llm,
71
+ llmProvider,
72
+ });
73
+ // Main API
74
+ export { mesh, MeshAgent };
75
+ // Re-export FastMCP for convenience (so users don't need to install it separately)
76
+ export { FastMCP } from "fastmcp";
77
+ // Express integration
78
+ export { meshExpress, MeshExpress } from "./express.js";
79
+ // API runtime (auto-init for Express routes)
80
+ export { getApiRuntime, ApiRuntime, bindToExpress, introspectExpressRoutes, } from "./api-runtime.js";
81
+ // Route utilities
82
+ export { route, routeWithConfig, RouteRegistry, } from "./route.js";
83
+ // Proxy utilities (for advanced use)
84
+ export { createProxy, normalizeDependency } from "./proxy.js";
85
+ // Tracing utilities (for advanced use)
86
+ export { initTracing, isTracingAvailable, generateTraceId, generateSpanId, parseTraceContext, createTraceHeaders, publishTraceSpan, } from "./tracing.js";
87
+ // LLM utilities
88
+ export { llm, LlmToolRegistry, buildLlmAgentSpecs, handleLlmToolsUpdated, handleLlmProviderAvailable, handleLlmProviderUnavailable, getLlmToolMetadata, isLlmTool, } from "./llm.js";
89
+ // LLM Agent
90
+ export { MeshLlmAgent, LiteLLMProvider, MeshDelegatedProvider, createLlmToolProxy, } from "./llm-agent.js";
91
+ // LLM Provider (Phase 4)
92
+ export { llmProvider, extractVendorFromModel, extractModelName, isLlmProviderTool, getLlmProviderMeta, } from "./llm-provider.js";
93
+ // Provider Handlers (Phase 4)
94
+ export { ProviderHandlerRegistry, GenericHandler, ClaudeHandler, OpenAIHandler, } from "./provider-handlers/index.js";
95
+ // Error classes
96
+ export { MaxIterationsError, ToolExecutionError, LLMAPIError, ResponseParseError as LlmResponseParseError, ProviderUnavailableError, } from "./errors.js";
97
+ // SSE utilities
98
+ export { parseSSEResponse, isSSEResponse, parseSSEStream } from "./sse.js";
99
+ // Debug utilities
100
+ export { debug, createDebug, isAnyDebugEnabled } from "./debug.js";
101
+ // Template utilities
102
+ export { renderTemplate, clearTemplateCache, registerHelper, registerPartial, isFileTemplate, extractFilePath, } from "./template.js";
103
+ // Response parser
104
+ export { ResponseParser, createResponseParser, extractJson, zodSchemaToPromptDescription, formatZodError, } from "./response-parser.js";
105
+ // Default export for convenience
106
+ export default mesh;
107
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAEH,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAehD;;;;;;;;GAQG;AACH,MAAM,IAAI,GAAkB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;IAChD,KAAK;IACL,eAAe;IACf,IAAI,EAAE,aAAa;IACnB,GAAG;IACH,WAAW;CACZ,CAAC,CAAC;AAEH,WAAW;AACX,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAE3B,mFAAmF;AACnF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,sBAAsB;AACtB,OAAO,EAAE,WAAW,EAAE,WAAW,EAA0B,MAAM,cAAc,CAAC;AAEhF,6CAA6C;AAC7C,OAAO,EACL,aAAa,EACb,UAAU,EACV,aAAa,EACb,uBAAuB,GAExB,MAAM,kBAAkB,CAAC;AAE1B,kBAAkB;AAClB,OAAO,EACL,KAAK,EACL,eAAe,EACf,aAAa,GAMd,MAAM,YAAY,CAAC;AAEpB,qCAAqC;AACrC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE9D,uCAAuC;AACvC,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GAIjB,MAAM,cAAc,CAAC;AAEtB,gBAAgB;AAChB,OAAO,EACL,GAAG,EACH,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,4BAA4B,EAC5B,kBAAkB,EAClB,SAAS,GAIV,MAAM,UAAU,CAAC;AAElB,YAAY;AACZ,OAAO,EACL,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,kBAAkB,GAInB,MAAM,gBAAgB,CAAC;AAExB,yBAAyB;AACzB,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAE3B,8BAA8B;AAC9B,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,aAAa,GAQd,MAAM,8BAA8B,CAAC;AAEtC,gBAAgB;AAChB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,kBAAkB,IAAI,qBAAqB,EAC3C,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAErB,gBAAgB;AAChB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE3E,kBAAkB;AAClB,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEnE,qBAAqB;AACrB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,kBAAkB;AAClB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,WAAW,EACX,4BAA4B,EAC5B,cAAc,GACf,MAAM,sBAAsB,CAAC;AA+C9B,iCAAiC;AACjC,eAAe,IAAI,CAAC"}