@avasis-ai/synthcode 1.0.0

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 (77) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +292 -0
  3. package/dist/chunk-53ZOIXM4.js +624 -0
  4. package/dist/chunk-53ZOIXM4.js.map +1 -0
  5. package/dist/chunk-BWXHO6UJ.js +115 -0
  6. package/dist/chunk-BWXHO6UJ.js.map +1 -0
  7. package/dist/chunk-CARUMOML.js +123 -0
  8. package/dist/chunk-CARUMOML.js.map +1 -0
  9. package/dist/chunk-DGUM43GV.js +11 -0
  10. package/dist/chunk-DGUM43GV.js.map +1 -0
  11. package/dist/chunk-F34HO4RA.js +487 -0
  12. package/dist/chunk-F34HO4RA.js.map +1 -0
  13. package/dist/chunk-FK7S2S7V.js +132 -0
  14. package/dist/chunk-FK7S2S7V.js.map +1 -0
  15. package/dist/chunk-MQ7XP6VT.js +174 -0
  16. package/dist/chunk-MQ7XP6VT.js.map +1 -0
  17. package/dist/chunk-TLPOO6C3.js +176 -0
  18. package/dist/chunk-TLPOO6C3.js.map +1 -0
  19. package/dist/chunk-W6OLZ2OI.js +56 -0
  20. package/dist/chunk-W6OLZ2OI.js.map +1 -0
  21. package/dist/cli/index.cjs +151 -0
  22. package/dist/cli/index.cjs.map +1 -0
  23. package/dist/cli/index.d.cts +1 -0
  24. package/dist/cli/index.d.ts +1 -0
  25. package/dist/cli/index.js +8 -0
  26. package/dist/cli/index.js.map +1 -0
  27. package/dist/cli/run.cjs +128 -0
  28. package/dist/cli/run.cjs.map +1 -0
  29. package/dist/cli/run.d.cts +1 -0
  30. package/dist/cli/run.d.ts +1 -0
  31. package/dist/cli/run.js +126 -0
  32. package/dist/cli/run.js.map +1 -0
  33. package/dist/index-D-K6sx8s.d.cts +8 -0
  34. package/dist/index-D-K6sx8s.d.ts +8 -0
  35. package/dist/index.cjs +2909 -0
  36. package/dist/index.cjs.map +1 -0
  37. package/dist/index.d.cts +274 -0
  38. package/dist/index.d.ts +274 -0
  39. package/dist/index.js +1048 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/llm/index.cjs +531 -0
  42. package/dist/llm/index.cjs.map +1 -0
  43. package/dist/llm/index.d.cts +70 -0
  44. package/dist/llm/index.d.ts +70 -0
  45. package/dist/llm/index.js +24 -0
  46. package/dist/llm/index.js.map +1 -0
  47. package/dist/mcp/index.cjs +323 -0
  48. package/dist/mcp/index.cjs.map +1 -0
  49. package/dist/mcp/index.d.cts +39 -0
  50. package/dist/mcp/index.d.ts +39 -0
  51. package/dist/mcp/index.js +11 -0
  52. package/dist/mcp/index.js.map +1 -0
  53. package/dist/memory/index.cjs +146 -0
  54. package/dist/memory/index.cjs.map +1 -0
  55. package/dist/memory/index.d.cts +51 -0
  56. package/dist/memory/index.d.ts +51 -0
  57. package/dist/memory/index.js +10 -0
  58. package/dist/memory/index.js.map +1 -0
  59. package/dist/tools/fuzzy-edit.cjs +200 -0
  60. package/dist/tools/fuzzy-edit.cjs.map +1 -0
  61. package/dist/tools/fuzzy-edit.d.cts +9 -0
  62. package/dist/tools/fuzzy-edit.d.ts +9 -0
  63. package/dist/tools/fuzzy-edit.js +12 -0
  64. package/dist/tools/fuzzy-edit.js.map +1 -0
  65. package/dist/tools/index.cjs +1032 -0
  66. package/dist/tools/index.cjs.map +1 -0
  67. package/dist/tools/index.d.cts +4 -0
  68. package/dist/tools/index.d.ts +4 -0
  69. package/dist/tools/index.js +39 -0
  70. package/dist/tools/index.js.map +1 -0
  71. package/dist/types-C11cw5ZD.d.cts +177 -0
  72. package/dist/types-C11cw5ZD.d.ts +177 -0
  73. package/dist/utils-TF4TBXQJ.js +10 -0
  74. package/dist/utils-TF4TBXQJ.js.map +1 -0
  75. package/dist/web-fetch-B42QzYD2.d.cts +85 -0
  76. package/dist/web-fetch-EDdhxmEf.d.ts +85 -0
  77. package/package.json +134 -0
@@ -0,0 +1,70 @@
1
+ import { B as BaseProvider, P as ProviderConfig, C as ChatRequest, M as ModelResponse, c as ChatMessage, A as APIToolDefinition, e as TokenUsage, f as Provider } from '../types-C11cw5ZD.js';
2
+ export { R as RetryableError } from '../types-C11cw5ZD.js';
3
+ import 'zod';
4
+
5
+ interface AnthropicProviderConfig extends ProviderConfig {
6
+ apiKey: string;
7
+ baseURL?: string;
8
+ dangerouslySkipAuth?: boolean;
9
+ enableCaching?: boolean;
10
+ }
11
+ declare class AnthropicProvider extends BaseProvider {
12
+ private readonly apiKey;
13
+ private readonly baseURL?;
14
+ private readonly dangerouslySkipAuth?;
15
+ private readonly enableCaching;
16
+ private client;
17
+ constructor(config: AnthropicProviderConfig);
18
+ chat(request: ChatRequest): Promise<ModelResponse>;
19
+ protected mapMessages(messages: ChatMessage[]): unknown[];
20
+ protected mapTools(tools?: APIToolDefinition[]): unknown[] | undefined;
21
+ protected mapUsage(providerUsage: unknown): TokenUsage;
22
+ private mapOutgoingBlock;
23
+ }
24
+
25
+ interface OpenAIProviderConfig extends ProviderConfig {
26
+ apiKey: string;
27
+ baseURL?: string;
28
+ organization?: string;
29
+ }
30
+ declare class OpenAIProvider extends BaseProvider {
31
+ private readonly apiKey;
32
+ private readonly baseURL?;
33
+ private readonly organization?;
34
+ private client;
35
+ constructor(config: OpenAIProviderConfig);
36
+ chat(request: ChatRequest): Promise<ModelResponse>;
37
+ protected mapMessages(messages: ChatMessage[]): unknown[];
38
+ protected mapTools(tools?: APIToolDefinition[]): unknown[] | undefined;
39
+ protected mapUsage(providerUsage: unknown): TokenUsage;
40
+ }
41
+
42
+ interface OllamaProviderConfig {
43
+ model: string;
44
+ baseURL?: string;
45
+ }
46
+ declare class OllamaProvider implements Provider {
47
+ readonly model: string;
48
+ private readonly baseURL;
49
+ constructor(config: OllamaProviderConfig);
50
+ chat(request: ChatRequest): Promise<ModelResponse>;
51
+ }
52
+
53
+ declare function anthropic(config: AnthropicProviderConfig): AnthropicProvider;
54
+ declare function openai(config: OpenAIProviderConfig): OpenAIProvider;
55
+ declare function ollama(config: OllamaProviderConfig): OllamaProvider;
56
+ interface CustomProviderConfig {
57
+ provider: 'custom';
58
+ model: string;
59
+ chat: (request: ChatRequest) => Promise<ModelResponse>;
60
+ }
61
+ type OllamaProviderConfigWithProvider = OllamaProviderConfig & {
62
+ provider: 'ollama';
63
+ };
64
+ declare function createProvider(config: (AnthropicProviderConfig & {
65
+ provider: 'anthropic';
66
+ }) | (OpenAIProviderConfig & {
67
+ provider: 'openai';
68
+ }) | OllamaProviderConfigWithProvider | CustomProviderConfig): Provider;
69
+
70
+ export { APIToolDefinition, AnthropicProvider, type AnthropicProviderConfig, BaseProvider, ChatMessage, ChatRequest, type CustomProviderConfig, OllamaProvider, type OllamaProviderConfig, type OllamaProviderConfigWithProvider, OpenAIProvider, type OpenAIProviderConfig, Provider, anthropic, createProvider, ollama, openai };
@@ -0,0 +1,24 @@
1
+ import {
2
+ AnthropicProvider,
3
+ BaseProvider,
4
+ OllamaProvider,
5
+ OpenAIProvider,
6
+ RetryableError,
7
+ anthropic,
8
+ createProvider,
9
+ ollama,
10
+ openai
11
+ } from "../chunk-F34HO4RA.js";
12
+ import "../chunk-DGUM43GV.js";
13
+ export {
14
+ AnthropicProvider,
15
+ BaseProvider,
16
+ OllamaProvider,
17
+ OpenAIProvider,
18
+ RetryableError,
19
+ anthropic,
20
+ createProvider,
21
+ ollama,
22
+ openai
23
+ };
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,323 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/mcp/index.ts
31
+ var mcp_exports = {};
32
+ __export(mcp_exports, {
33
+ MCPClient: () => MCPClient,
34
+ loadMCPTools: () => loadMCPTools
35
+ });
36
+ module.exports = __toCommonJS(mcp_exports);
37
+
38
+ // src/mcp/client.ts
39
+ var MCPClient = class {
40
+ config;
41
+ tools = [];
42
+ proc = null;
43
+ initialized = false;
44
+ nextId = 1;
45
+ messageBuffer = "";
46
+ pendingHandlers = /* @__PURE__ */ new Map();
47
+ constructor(config) {
48
+ this.config = config;
49
+ }
50
+ send(proc, method, params, id) {
51
+ const msgId = id ?? this.nextId++;
52
+ const msg = JSON.stringify({ jsonrpc: "2.0", id: msgId, method, params });
53
+ proc.stdin.write(msg + "\n");
54
+ return msgId;
55
+ }
56
+ setupMessageHandler(proc) {
57
+ proc.stdout.on("data", (data) => {
58
+ this.messageBuffer += data.toString();
59
+ const lines = this.messageBuffer.split("\n");
60
+ this.messageBuffer = lines.pop() ?? "";
61
+ for (const line of lines) {
62
+ if (!line.trim()) continue;
63
+ try {
64
+ const msg = JSON.parse(line);
65
+ if (msg.id !== void 0 && this.pendingHandlers.has(msg.id)) {
66
+ const handler = this.pendingHandlers.get(msg.id);
67
+ this.pendingHandlers.delete(msg.id);
68
+ handler(msg);
69
+ } else if (msg.method === "initialize" && msg.id) {
70
+ proc.stdin.write(JSON.stringify({
71
+ jsonrpc: "2.0",
72
+ id: msg.id,
73
+ result: { protocolVersion: "2024-11-05", capabilities: {}, serverInfo: { name: "synthcode-mcp-proxy", version: "0.6.0" } }
74
+ }) + "\n");
75
+ }
76
+ } catch {
77
+ }
78
+ }
79
+ });
80
+ proc.stderr.on("data", () => {
81
+ });
82
+ }
83
+ async connect() {
84
+ if (this.config.type === "stdio") {
85
+ const { spawn } = await import("child_process");
86
+ const proc = spawn(this.config.command, this.config.args ?? [], {
87
+ env: { ...process.env, ...this.config.env },
88
+ stdio: ["pipe", "pipe", "pipe"]
89
+ });
90
+ proc.on("error", (err) => {
91
+ throw err;
92
+ });
93
+ proc.on("close", () => {
94
+ this.initialized = false;
95
+ });
96
+ this.proc = proc;
97
+ this.setupMessageHandler(proc);
98
+ await new Promise((resolve) => {
99
+ const handler = (_data) => {
100
+ proc.stdout.off("data", handler);
101
+ resolve();
102
+ };
103
+ proc.stdout.on("data", handler);
104
+ setTimeout(() => {
105
+ proc.stdout.off("data", handler);
106
+ resolve();
107
+ }, 2e3);
108
+ });
109
+ this.initialized = true;
110
+ }
111
+ if (this.config.type === "sse") {
112
+ if (!this.config.url) throw new Error("SSE MCP server requires a url");
113
+ this.initialized = true;
114
+ }
115
+ }
116
+ async listTools() {
117
+ if (this.config.type === "stdio" && this.proc) {
118
+ const id = this.nextId++;
119
+ const tools = await new Promise((resolve, reject) => {
120
+ const timeout = setTimeout(() => {
121
+ this.pendingHandlers.delete(id);
122
+ reject(new Error("MCP listTools timeout"));
123
+ }, 1e4);
124
+ this.pendingHandlers.set(id, (msg) => {
125
+ clearTimeout(timeout);
126
+ const m = msg;
127
+ if (m.result?.tools) {
128
+ resolve(
129
+ m.result.tools.map((t) => ({
130
+ name: t.name,
131
+ description: t.description ?? "",
132
+ inputSchema: t.inputSchema ?? { type: "object", properties: {} }
133
+ }))
134
+ );
135
+ } else {
136
+ resolve([]);
137
+ }
138
+ });
139
+ });
140
+ this.send(this.proc, "tools/list", {}, id);
141
+ this.tools = tools;
142
+ return tools;
143
+ }
144
+ return [];
145
+ }
146
+ async callTool(name, input) {
147
+ if (this.config.type === "stdio" && this.proc) {
148
+ const id = this.nextId++;
149
+ return new Promise((resolve, reject) => {
150
+ const timeout = setTimeout(() => {
151
+ this.pendingHandlers.delete(id);
152
+ reject(new Error("MCP callTool timeout"));
153
+ }, 3e4);
154
+ this.pendingHandlers.set(id, (msg) => {
155
+ clearTimeout(timeout);
156
+ const m = msg;
157
+ if (m.result) {
158
+ resolve(typeof m.result === "string" ? m.result : JSON.stringify(m.result));
159
+ } else if (m.error) {
160
+ reject(
161
+ new Error(
162
+ m.error.message ?? "MCP tool error"
163
+ )
164
+ );
165
+ }
166
+ });
167
+ this.send(this.proc, "tools/call", { name, arguments: input }, id);
168
+ });
169
+ }
170
+ throw new Error("MCP callTool not implemented for SSE type");
171
+ }
172
+ async disconnect() {
173
+ if (this.proc) {
174
+ this.proc.kill();
175
+ this.proc = null;
176
+ }
177
+ }
178
+ getTools() {
179
+ return this.tools;
180
+ }
181
+ };
182
+
183
+ // src/tools/tool.ts
184
+ function zodToJsonSchema(schema) {
185
+ const s = schema;
186
+ const def = s._def;
187
+ const typeName = def.typeName;
188
+ const description = def.description;
189
+ const base = {};
190
+ if (description) base.description = description;
191
+ switch (typeName) {
192
+ case "ZodString":
193
+ return { ...base, type: "string" };
194
+ case "ZodNumber":
195
+ return { ...base, type: "number" };
196
+ case "ZodBoolean":
197
+ return { ...base, type: "boolean" };
198
+ case "ZodNull":
199
+ return { ...base, type: "null" };
200
+ case "ZodArray": {
201
+ const items = zodToJsonSchema(def.element);
202
+ return { ...base, type: "array", items };
203
+ }
204
+ case "ZodObject": {
205
+ const shapeFn = def.shape;
206
+ const shape = shapeFn();
207
+ const properties = {};
208
+ const required = [];
209
+ for (const [key, value] of Object.entries(shape)) {
210
+ properties[key] = zodToJsonSchema(value);
211
+ const propDef = value._def;
212
+ if (propDef.typeName !== "ZodOptional" && propDef.typeName !== "ZodNullish" && propDef.typeName !== "ZodDefault") {
213
+ required.push(key);
214
+ }
215
+ }
216
+ const result = { ...base, type: "object", properties };
217
+ if (required.length > 0) result.required = required;
218
+ return result;
219
+ }
220
+ case "ZodEnum":
221
+ return { ...base, enum: def.values };
222
+ case "ZodLiteral":
223
+ return { ...base, const: def.value };
224
+ case "ZodUnion": {
225
+ const options = def.options.map((o) => zodToJsonSchema(o));
226
+ return { ...base, anyOf: options };
227
+ }
228
+ case "ZodDiscriminatedUnion": {
229
+ const options = def.options.map((o) => zodToJsonSchema(o));
230
+ return { ...base, anyOf: options };
231
+ }
232
+ case "ZodOptional":
233
+ return zodToJsonSchema(def.innerType);
234
+ case "ZodNullable": {
235
+ const inner = zodToJsonSchema(def.innerType);
236
+ inner.nullable = true;
237
+ return inner;
238
+ }
239
+ case "ZodNullish": {
240
+ const inner = zodToJsonSchema(def.innerType);
241
+ inner.nullable = true;
242
+ return inner;
243
+ }
244
+ case "ZodDefault":
245
+ return zodToJsonSchema(def.innerType);
246
+ case "ZodRecord": {
247
+ const valueSchema = zodToJsonSchema(def.valueType);
248
+ return { ...base, type: "object", additionalProperties: valueSchema };
249
+ }
250
+ case "ZodTuple": {
251
+ const items = def.items.map((o) => zodToJsonSchema(o));
252
+ return { ...base, type: "array", items, minItems: items.length, maxItems: items.length };
253
+ }
254
+ case "ZodEffects": {
255
+ return zodToJsonSchema(def.innerType);
256
+ }
257
+ case "ZodAny":
258
+ return {};
259
+ case "ZodUnknown":
260
+ return {};
261
+ case "ZodVoid":
262
+ return { ...base, type: "null" };
263
+ case "ZodNever":
264
+ return { ...base, not: {} };
265
+ default:
266
+ return { ...base, type: "string" };
267
+ }
268
+ }
269
+ function defineTool(config) {
270
+ const tool = {
271
+ name: config.name,
272
+ description: config.description,
273
+ inputSchema: config.inputSchema,
274
+ isReadOnly: config.isReadOnly ?? false,
275
+ isConcurrencySafe: config.isConcurrencySafe ?? false,
276
+ execute: config.execute,
277
+ toAPI() {
278
+ return {
279
+ name: config.name,
280
+ description: config.description,
281
+ input_schema: zodToJsonSchema(config.inputSchema)
282
+ };
283
+ },
284
+ toString(input) {
285
+ const entries = Object.entries(input).map(([k, v]) => {
286
+ if (typeof v === "string") return `${k}: "${v}"`;
287
+ if (v === void 0) return `${k}: undefined`;
288
+ if (v === null) return `${k}: null`;
289
+ return `${k}: ${String(v)}`;
290
+ }).join(", ");
291
+ return `${config.name}({ ${entries} })`;
292
+ }
293
+ };
294
+ return tool;
295
+ }
296
+
297
+ // src/mcp/adapter.ts
298
+ async function loadMCPTools(config) {
299
+ const { z } = await import("zod");
300
+ const client = new MCPClient(config);
301
+ await client.connect();
302
+ const definitions = await client.listTools();
303
+ const tools = definitions.map(
304
+ (def) => defineTool({
305
+ name: def.name,
306
+ description: def.description,
307
+ inputSchema: z.object({}).passthrough(),
308
+ isReadOnly: true,
309
+ isConcurrencySafe: true,
310
+ execute: async (input, _context) => {
311
+ const result = await client.callTool(def.name, input);
312
+ return result;
313
+ }
314
+ })
315
+ );
316
+ return { tools, client };
317
+ }
318
+ // Annotate the CommonJS export names for ESM import in node:
319
+ 0 && (module.exports = {
320
+ MCPClient,
321
+ loadMCPTools
322
+ });
323
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/mcp/index.ts","../../src/mcp/client.ts","../../src/tools/tool.ts","../../src/mcp/adapter.ts"],"sourcesContent":["export { MCPClient } from \"./client.js\";\nexport type { MCPServerConfig, MCPToolDefinition } from \"./client.js\";\nexport { loadMCPTools } from \"./adapter.js\";\n","import type { ChildProcess } from \"node:child_process\";\n\nexport interface MCPToolDefinition {\n name: string;\n description: string;\n inputSchema: Record<string, unknown>;\n}\n\nexport interface MCPServerConfig {\n type: \"stdio\" | \"sse\";\n command?: string;\n args?: string[];\n url?: string;\n env?: Record<string, string>;\n}\n\nexport class MCPClient {\n private config: MCPServerConfig;\n private tools: MCPToolDefinition[] = [];\n private proc: ChildProcess | null = null;\n private initialized = false;\n private nextId = 1;\n private messageBuffer = \"\";\n private pendingHandlers: Map<number, (msg: unknown) => void> = new Map();\n\n constructor(config: MCPServerConfig) {\n this.config = config;\n }\n\n private send(proc: ChildProcess, method: string, params: Record<string, unknown>, id?: number): number {\n const msgId = id ?? this.nextId++;\n const msg = JSON.stringify({ jsonrpc: \"2.0\", id: msgId, method, params });\n proc.stdin!.write(msg + \"\\n\");\n return msgId;\n }\n\n private setupMessageHandler(proc: ChildProcess): void {\n proc.stdout!.on(\"data\", (data: Buffer) => {\n this.messageBuffer += data.toString();\n const lines = this.messageBuffer.split(\"\\n\");\n this.messageBuffer = lines.pop() ?? \"\";\n for (const line of lines) {\n if (!line.trim()) continue;\n try {\n const msg = JSON.parse(line);\n if (msg.id !== undefined && this.pendingHandlers.has(msg.id)) {\n const handler = this.pendingHandlers.get(msg.id)!;\n this.pendingHandlers.delete(msg.id);\n handler(msg);\n } else if (msg.method === \"initialize\" && msg.id) {\n proc.stdin!.write(JSON.stringify({\n jsonrpc: \"2.0\",\n id: msg.id,\n result: { protocolVersion: \"2024-11-05\", capabilities: {}, serverInfo: { name: \"synthcode-mcp-proxy\", version: \"0.6.0\" } },\n }) + \"\\n\");\n }\n } catch {}\n }\n });\n proc.stderr!.on(\"data\", () => {});\n }\n\n async connect(): Promise<void> {\n if (this.config.type === \"stdio\") {\n const { spawn } = await import(\"node:child_process\");\n const proc = spawn(this.config.command!, this.config.args ?? [], {\n env: { ...process.env, ...this.config.env },\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n proc.on(\"error\", (err) => { throw err; });\n proc.on(\"close\", () => { this.initialized = false; });\n this.proc = proc;\n this.setupMessageHandler(proc);\n await new Promise<void>((resolve) => {\n const handler = (_data: Buffer) => {\n proc.stdout!.off(\"data\", handler);\n resolve();\n };\n proc.stdout!.on(\"data\", handler);\n setTimeout(() => {\n proc.stdout!.off(\"data\", handler);\n resolve();\n }, 2000);\n });\n this.initialized = true;\n }\n if (this.config.type === \"sse\") {\n if (!this.config.url) throw new Error(\"SSE MCP server requires a url\");\n this.initialized = true;\n }\n }\n\n async listTools(): Promise<MCPToolDefinition[]> {\n if (this.config.type === \"stdio\" && this.proc) {\n const id = this.nextId++;\n const tools = await new Promise<MCPToolDefinition[]>((resolve, reject) => {\n const timeout = setTimeout(() => {\n this.pendingHandlers.delete(id);\n reject(new Error(\"MCP listTools timeout\"));\n }, 10000);\n this.pendingHandlers.set(id, (msg: unknown) => {\n clearTimeout(timeout);\n const m = msg as Record<string, unknown>;\n if ((m.result as Record<string, unknown>)?.tools) {\n resolve(\n ((m.result as Record<string, unknown>).tools as Record<string, unknown>[]).map((t) => ({\n name: t.name as string,\n description: (t.description as string) ?? \"\",\n inputSchema: (t.inputSchema as Record<string, unknown>) ?? { type: \"object\", properties: {} },\n })),\n );\n } else {\n resolve([]);\n }\n });\n });\n this.send(this.proc!, \"tools/list\", {}, id);\n this.tools = tools;\n return tools;\n }\n return [];\n }\n\n async callTool(\n name: string,\n input: Record<string, unknown>,\n ): Promise<string> {\n if (this.config.type === \"stdio\" && this.proc) {\n const id = this.nextId++;\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n this.pendingHandlers.delete(id);\n reject(new Error(\"MCP callTool timeout\"));\n }, 30000);\n this.pendingHandlers.set(id, (msg: unknown) => {\n clearTimeout(timeout);\n const m = msg as Record<string, unknown>;\n if (m.result) {\n resolve(typeof m.result === \"string\" ? m.result : JSON.stringify(m.result));\n } else if (m.error) {\n reject(\n new Error(\n ((m.error as Record<string, unknown>).message as string) ?? \"MCP tool error\",\n ),\n );\n }\n });\n this.send(this.proc!, \"tools/call\", { name, arguments: input }, id);\n });\n }\n throw new Error(\"MCP callTool not implemented for SSE type\");\n }\n\n async disconnect(): Promise<void> {\n if (this.proc) {\n this.proc.kill();\n this.proc = null;\n }\n }\n\n getTools(): MCPToolDefinition[] {\n return this.tools;\n }\n}\n","import type { ZodSchema } from 'zod';\nimport type { ToolContext } from '../types.js';\n\n/** JSON Schema representation of a tool for LLM function calling APIs. */\nexport interface APIToolDefinition {\n name: string;\n description: string;\n input_schema: Record<string, unknown>;\n}\n\n/** Core tool abstraction that every tool must implement. */\nexport interface Tool<P = unknown> {\n readonly name: string;\n readonly description: string;\n readonly inputSchema: ZodSchema<P>;\n readonly isReadOnly: boolean;\n readonly isConcurrencySafe: boolean;\n\n execute(input: P, context: ToolContext): Promise<string>;\n toAPI(): APIToolDefinition;\n toString(input: P): string;\n}\n\n/** Configuration object for defining a tool. */\nexport interface ToolExecuteOptions<P = unknown> {\n name: string;\n description: string;\n inputSchema: ZodSchema<P>;\n isReadOnly?: boolean;\n isConcurrencySafe?: boolean;\n execute: (input: P, context: ToolContext) => Promise<string>;\n}\n\nfunction zodToJsonSchema(schema: unknown): Record<string, unknown> {\n const s = schema as { _def: Record<string, unknown> };\n const def = s._def;\n const typeName = def.typeName as string;\n const description = def.description as string | undefined;\n\n const base: Record<string, unknown> = {};\n if (description) base.description = description;\n\n switch (typeName) {\n case 'ZodString':\n return { ...base, type: 'string' };\n case 'ZodNumber':\n return { ...base, type: 'number' };\n case 'ZodBoolean':\n return { ...base, type: 'boolean' };\n case 'ZodNull':\n return { ...base, type: 'null' };\n case 'ZodArray': {\n const items = zodToJsonSchema(def.element);\n return { ...base, type: 'array', items };\n }\n case 'ZodObject': {\n const shapeFn = def.shape as () => Record<string, unknown>;\n const shape = shapeFn();\n const properties: Record<string, unknown> = {};\n const required: string[] = [];\n for (const [key, value] of Object.entries(shape)) {\n properties[key] = zodToJsonSchema(value);\n const propDef = (value as { _def: Record<string, unknown> })._def;\n if (\n propDef.typeName !== 'ZodOptional' &&\n propDef.typeName !== 'ZodNullish' &&\n propDef.typeName !== 'ZodDefault'\n ) {\n required.push(key);\n }\n }\n const result: Record<string, unknown> = { ...base, type: 'object', properties };\n if (required.length > 0) result.required = required;\n return result;\n }\n case 'ZodEnum':\n return { ...base, enum: def.values };\n case 'ZodLiteral':\n return { ...base, const: def.value };\n case 'ZodUnion': {\n const options = (def.options as unknown[]).map((o) => zodToJsonSchema(o));\n return { ...base, anyOf: options };\n }\n case 'ZodDiscriminatedUnion': {\n const options = (def.options as unknown[]).map((o) => zodToJsonSchema(o));\n return { ...base, anyOf: options };\n }\n case 'ZodOptional':\n return zodToJsonSchema(def.innerType);\n case 'ZodNullable': {\n const inner = zodToJsonSchema(def.innerType);\n inner.nullable = true;\n return inner;\n }\n case 'ZodNullish': {\n const inner = zodToJsonSchema(def.innerType);\n inner.nullable = true;\n return inner;\n }\n case 'ZodDefault':\n return zodToJsonSchema(def.innerType);\n case 'ZodRecord': {\n const valueSchema = zodToJsonSchema(def.valueType);\n return { ...base, type: 'object', additionalProperties: valueSchema };\n }\n case 'ZodTuple': {\n const items = (def.items as unknown[]).map((o) => zodToJsonSchema(o));\n return { ...base, type: 'array', items, minItems: items.length, maxItems: items.length };\n }\n case 'ZodEffects': {\n return zodToJsonSchema(def.innerType);\n }\n case 'ZodAny':\n return {};\n case 'ZodUnknown':\n return {};\n case 'ZodVoid':\n return { ...base, type: 'null' };\n case 'ZodNever':\n return { ...base, not: {} };\n default:\n return { ...base, type: 'string' };\n }\n}\n\n/** Define a tool from a configuration object. */\nexport function defineTool<P = unknown>(config: ToolExecuteOptions<P>): Tool<P> {\n const tool: Tool<P> = {\n name: config.name,\n description: config.description,\n inputSchema: config.inputSchema,\n isReadOnly: config.isReadOnly ?? false,\n isConcurrencySafe: config.isConcurrencySafe ?? false,\n execute: config.execute,\n toAPI(): APIToolDefinition {\n return {\n name: config.name,\n description: config.description,\n input_schema: zodToJsonSchema(config.inputSchema),\n };\n },\n toString(input: P): string {\n const entries = Object.entries(input as Record<string, unknown>)\n .map(([k, v]) => {\n if (typeof v === 'string') return `${k}: \"${v}\"`;\n if (v === undefined) return `${k}: undefined`;\n if (v === null) return `${k}: null`;\n return `${k}: ${String(v)}`;\n })\n .join(', ');\n return `${config.name}({ ${entries} })`;\n },\n };\n return tool;\n}\n\n/** Wrap a class-based tool into the standard Tool interface. */\nexport function defineToolFromClass(ctor: new () => Tool): Tool {\n const instance = new ctor();\n return {\n name: instance.name,\n description: instance.description,\n inputSchema: instance.inputSchema,\n isReadOnly: instance.isReadOnly,\n isConcurrencySafe: instance.isConcurrencySafe,\n execute: (input, context) => instance.execute(input, context),\n toAPI: () => instance.toAPI(),\n toString: (input) => instance.toString(input),\n };\n}\n","import { defineTool } from \"../tools/tool.js\";\nimport type { Tool } from \"../tools/tool.js\";\nimport type { ToolContext } from \"../types.js\";\nimport { MCPClient } from \"./client.js\";\nimport type { MCPToolDefinition, MCPServerConfig } from \"./client.js\";\n\nexport async function loadMCPTools(\n config: MCPServerConfig,\n): Promise<{ tools: Tool[]; client: MCPClient }> {\n const { z } = await import(\"zod\");\n\n const client = new MCPClient(config);\n await client.connect();\n const definitions = await client.listTools();\n\n const tools = definitions.map((def: MCPToolDefinition) =>\n defineTool({\n name: def.name,\n description: def.description,\n inputSchema: z.object({}).passthrough(),\n isReadOnly: true,\n isConcurrencySafe: true,\n execute: async (input: Record<string, unknown>, _context: ToolContext) => {\n const result = await client.callTool(def.name, input);\n return result;\n },\n }),\n );\n\n return { tools, client };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,39 @@
1
+ import { T as Tool } from '../types-C11cw5ZD.cjs';
2
+ import 'zod';
3
+
4
+ interface MCPToolDefinition {
5
+ name: string;
6
+ description: string;
7
+ inputSchema: Record<string, unknown>;
8
+ }
9
+ interface MCPServerConfig {
10
+ type: "stdio" | "sse";
11
+ command?: string;
12
+ args?: string[];
13
+ url?: string;
14
+ env?: Record<string, string>;
15
+ }
16
+ declare class MCPClient {
17
+ private config;
18
+ private tools;
19
+ private proc;
20
+ private initialized;
21
+ private nextId;
22
+ private messageBuffer;
23
+ private pendingHandlers;
24
+ constructor(config: MCPServerConfig);
25
+ private send;
26
+ private setupMessageHandler;
27
+ connect(): Promise<void>;
28
+ listTools(): Promise<MCPToolDefinition[]>;
29
+ callTool(name: string, input: Record<string, unknown>): Promise<string>;
30
+ disconnect(): Promise<void>;
31
+ getTools(): MCPToolDefinition[];
32
+ }
33
+
34
+ declare function loadMCPTools(config: MCPServerConfig): Promise<{
35
+ tools: Tool[];
36
+ client: MCPClient;
37
+ }>;
38
+
39
+ export { MCPClient, type MCPServerConfig, type MCPToolDefinition, loadMCPTools };
@@ -0,0 +1,39 @@
1
+ import { T as Tool } from '../types-C11cw5ZD.js';
2
+ import 'zod';
3
+
4
+ interface MCPToolDefinition {
5
+ name: string;
6
+ description: string;
7
+ inputSchema: Record<string, unknown>;
8
+ }
9
+ interface MCPServerConfig {
10
+ type: "stdio" | "sse";
11
+ command?: string;
12
+ args?: string[];
13
+ url?: string;
14
+ env?: Record<string, string>;
15
+ }
16
+ declare class MCPClient {
17
+ private config;
18
+ private tools;
19
+ private proc;
20
+ private initialized;
21
+ private nextId;
22
+ private messageBuffer;
23
+ private pendingHandlers;
24
+ constructor(config: MCPServerConfig);
25
+ private send;
26
+ private setupMessageHandler;
27
+ connect(): Promise<void>;
28
+ listTools(): Promise<MCPToolDefinition[]>;
29
+ callTool(name: string, input: Record<string, unknown>): Promise<string>;
30
+ disconnect(): Promise<void>;
31
+ getTools(): MCPToolDefinition[];
32
+ }
33
+
34
+ declare function loadMCPTools(config: MCPServerConfig): Promise<{
35
+ tools: Tool[];
36
+ client: MCPClient;
37
+ }>;
38
+
39
+ export { MCPClient, type MCPServerConfig, type MCPToolDefinition, loadMCPTools };
@@ -0,0 +1,11 @@
1
+ import {
2
+ MCPClient,
3
+ loadMCPTools
4
+ } from "../chunk-TLPOO6C3.js";
5
+ import "../chunk-FK7S2S7V.js";
6
+ import "../chunk-DGUM43GV.js";
7
+ export {
8
+ MCPClient,
9
+ loadMCPTools
10
+ };
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}