@superblocksteam/vite-plugin-file-sync 2.0.69 → 2.0.70-next.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.
- package/dist/ai-service/agent/middleware.d.ts +6 -0
- package/dist/ai-service/agent/middleware.d.ts.map +1 -1
- package/dist/ai-service/agent/middleware.js +11 -0
- package/dist/ai-service/agent/middleware.js.map +1 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js +45 -3
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.d.ts +2 -0
- package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.js +40 -0
- package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js +3 -7
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js +1 -5
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/get-api-docs.js +24 -0
- package/dist/ai-service/agent/tools/apis/get-api-docs.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/test-api.js +2 -2
- package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
- package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts +10 -0
- package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-capture-screenshot.js +103 -0
- package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -0
- package/dist/ai-service/agent/tools/build-install-packages.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-install-packages.js +36 -29
- package/dist/ai-service/agent/tools/build-install-packages.js.map +1 -1
- package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts +1 -1
- package/dist/ai-service/agent/tools/build-reload-file.d.ts +8 -0
- package/dist/ai-service/agent/tools/build-reload-file.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-reload-file.js +57 -0
- package/dist/ai-service/agent/tools/build-reload-file.js.map +1 -0
- package/dist/ai-service/agent/tools/get-console-logs.d.ts +23 -0
- package/dist/ai-service/agent/tools/get-console-logs.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/get-console-logs.js +84 -0
- package/dist/ai-service/agent/tools/get-console-logs.js.map +1 -0
- package/dist/ai-service/agent/tools/get-runtime-errors.d.ts +13 -0
- package/dist/ai-service/agent/tools/get-runtime-errors.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/get-runtime-errors.js +59 -0
- package/dist/ai-service/agent/tools/get-runtime-errors.js.map +1 -0
- package/dist/ai-service/agent/tools/index.d.ts +4 -0
- package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/index.js +4 -0
- package/dist/ai-service/agent/tools/index.js.map +1 -1
- package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +5 -1
- package/dist/ai-service/agent/tools/integrations/execute-request.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/integrations/execute-request.js +20 -2
- package/dist/ai-service/agent/tools/integrations/execute-request.js.map +1 -1
- package/dist/ai-service/agent/tools/shared-helpers.d.ts +35 -0
- package/dist/ai-service/agent/tools/shared-helpers.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/shared-helpers.js +89 -0
- package/dist/ai-service/agent/tools/shared-helpers.js.map +1 -1
- package/dist/ai-service/agent/tools.d.ts.map +1 -1
- package/dist/ai-service/agent/tools.js +11 -5
- package/dist/ai-service/agent/tools.js.map +1 -1
- package/dist/ai-service/agent/tools2/access-control.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/access-control.js +8 -0
- package/dist/ai-service/agent/tools2/access-control.js.map +1 -1
- package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/registry.js +3 -3
- package/dist/ai-service/agent/tools2/registry.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +38 -10
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
- package/dist/ai-service/agent/tools2/types.d.ts +11 -1
- package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/types.js +1 -0
- package/dist/ai-service/agent/tools2/types.js.map +1 -1
- package/dist/ai-service/agent/utils.d.ts.map +1 -1
- package/dist/ai-service/agent/utils.js +33 -1
- package/dist/ai-service/agent/utils.js.map +1 -1
- package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
- package/dist/ai-service/app-interface/shell.js +30 -15
- package/dist/ai-service/app-interface/shell.js.map +1 -1
- package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
- package/dist/ai-service/chat/chat-session-store.js +71 -0
- package/dist/ai-service/chat/chat-session-store.js.map +1 -1
- package/dist/ai-service/chat/extract-history.d.ts.map +1 -1
- package/dist/ai-service/chat/extract-history.js +0 -2
- package/dist/ai-service/chat/extract-history.js.map +1 -1
- package/dist/ai-service/chat/utils.d.ts +2 -0
- package/dist/ai-service/chat/utils.d.ts.map +1 -0
- package/dist/ai-service/chat/utils.js +8 -0
- package/dist/ai-service/chat/utils.js.map +1 -0
- package/dist/ai-service/clark-provider/clark-language-model.d.ts.map +1 -1
- package/dist/ai-service/clark-provider/clark-language-model.js +6 -0
- package/dist/ai-service/clark-provider/clark-language-model.js.map +1 -1
- package/dist/ai-service/clark-provider/clark-provider.d.ts +2 -1
- package/dist/ai-service/clark-provider/clark-provider.d.ts.map +1 -1
- package/dist/ai-service/clark-provider/clark-provider.js.map +1 -1
- package/dist/ai-service/features.d.ts +4 -0
- package/dist/ai-service/features.d.ts.map +1 -1
- package/dist/ai-service/features.js +4 -0
- package/dist/ai-service/features.js.map +1 -1
- package/dist/ai-service/index.d.ts +7 -1
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +129 -10
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/integration-validator.d.ts.map +1 -1
- package/dist/ai-service/integration-validator.js +1 -1
- package/dist/ai-service/integration-validator.js.map +1 -1
- package/dist/ai-service/judge/integration/mcp-client.d.ts +13 -0
- package/dist/ai-service/judge/integration/mcp-client.d.ts.map +1 -1
- package/dist/ai-service/judge/integration/mcp-client.js +15 -0
- package/dist/ai-service/judge/integration/mcp-client.js.map +1 -1
- package/dist/ai-service/judge/tools/playwright-action.d.ts +1 -1
- package/dist/ai-service/llm/client.d.ts +12 -1
- package/dist/ai-service/llm/client.d.ts.map +1 -1
- package/dist/ai-service/llm/client.js +20 -2
- package/dist/ai-service/llm/client.js.map +1 -1
- package/dist/ai-service/llm/context/context.d.ts.map +1 -1
- package/dist/ai-service/llm/context/context.js +1 -1
- package/dist/ai-service/llm/context/context.js.map +1 -1
- package/dist/ai-service/llm/context/utils/message-utils.d.ts +3 -0
- package/dist/ai-service/llm/context/utils/message-utils.d.ts.map +1 -1
- package/dist/ai-service/llm/context/utils/message-utils.js +53 -1
- package/dist/ai-service/llm/context/utils/message-utils.js.map +1 -1
- package/dist/ai-service/llm/error.d.ts +10 -2
- package/dist/ai-service/llm/error.d.ts.map +1 -1
- package/dist/ai-service/llm/error.js +22 -0
- package/dist/ai-service/llm/error.js.map +1 -1
- package/dist/ai-service/llm/interaction/adapters/vercel.js.map +1 -1
- package/dist/ai-service/llm/interaction/index.d.ts +1 -1
- package/dist/ai-service/llm/interaction/index.d.ts.map +1 -1
- package/dist/ai-service/llm/interaction/index.js.map +1 -1
- package/dist/ai-service/llm/interaction/middlewares/stream-retry.d.ts +30 -36
- package/dist/ai-service/llm/interaction/middlewares/stream-retry.d.ts.map +1 -1
- package/dist/ai-service/llm/interaction/middlewares/stream-retry.js +123 -223
- package/dist/ai-service/llm/interaction/middlewares/stream-retry.js.map +1 -1
- package/dist/ai-service/llm/interaction/middlewares/utils/abort.d.ts +41 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/abort.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/abort.js +74 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/abort.js.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/fallback-chain.d.ts +62 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/fallback-chain.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/fallback-chain.js +112 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/fallback-chain.js.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/retries.d.ts +47 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/retries.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/retries.js +131 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/retries.js.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/stall-detector.d.ts +30 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/stall-detector.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/stall-detector.js +36 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/stall-detector.js.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/streams.d.ts +42 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/streams.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/streams.js +208 -0
- package/dist/ai-service/llm/interaction/middlewares/utils/streams.js.map +1 -0
- package/dist/ai-service/llm/interaction/provider.d.ts +2 -0
- package/dist/ai-service/llm/interaction/provider.d.ts.map +1 -1
- package/dist/ai-service/llm/interaction/stream-lifecycle.d.ts.map +1 -1
- package/dist/ai-service/llm/interaction/stream-lifecycle.js +21 -3
- package/dist/ai-service/llm/interaction/stream-lifecycle.js.map +1 -1
- package/dist/ai-service/llm/provider.d.ts.map +1 -1
- package/dist/ai-service/llm/provider.js +4 -3
- package/dist/ai-service/llm/provider.js.map +1 -1
- package/dist/ai-service/llmobs/middleware/stream-text.d.ts.map +1 -1
- package/dist/ai-service/llmobs/middleware/stream-text.js +17 -4
- package/dist/ai-service/llmobs/middleware/stream-text.js.map +1 -1
- package/dist/ai-service/mcp/adapter/index.d.ts +8 -0
- package/dist/ai-service/mcp/adapter/index.d.ts.map +1 -0
- package/dist/ai-service/mcp/adapter/index.js +10 -0
- package/dist/ai-service/mcp/adapter/index.js.map +1 -0
- package/dist/ai-service/mcp/adapter/json-schema-to-zod.d.ts +44 -0
- package/dist/ai-service/mcp/adapter/json-schema-to-zod.d.ts.map +1 -0
- package/dist/ai-service/mcp/adapter/json-schema-to-zod.js +231 -0
- package/dist/ai-service/mcp/adapter/json-schema-to-zod.js.map +1 -0
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts +118 -0
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts.map +1 -0
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js +254 -0
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js.map +1 -0
- package/dist/ai-service/mcp/index.d.ts +11 -0
- package/dist/ai-service/mcp/index.d.ts.map +1 -0
- package/dist/ai-service/mcp/index.js +11 -0
- package/dist/ai-service/mcp/index.js.map +1 -0
- package/dist/ai-service/mcp/types.d.ts +94 -0
- package/dist/ai-service/mcp/types.d.ts.map +1 -0
- package/dist/ai-service/mcp/types.js +7 -0
- package/dist/ai-service/mcp/types.js.map +1 -0
- package/dist/ai-service/state-machine/clark-fsm.d.ts +6 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +13 -0
- package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.js +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/idle.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/idle.js +4 -0
- package/dist/ai-service/state-machine/handlers/idle.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js +12 -2
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/file-read-tracker.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/file-read-tracker.js +12 -3
- package/dist/ai-service/state-machine/helpers/file-read-tracker.js.map +1 -1
- package/dist/ai-service/template-renderer.d.ts.map +1 -1
- package/dist/ai-service/template-renderer.js +4 -2
- package/dist/ai-service/template-renderer.js.map +1 -1
- package/dist/ai-service/test-utils/error-mocks.d.ts.map +1 -1
- package/dist/ai-service/test-utils/error-mocks.js +9 -4
- package/dist/ai-service/test-utils/error-mocks.js.map +1 -1
- package/dist/ai-service/transform/shared.js +1 -1
- package/dist/ai-service/transform/shared.js.map +1 -1
- package/dist/ai-service/util/backoff-strategy.d.ts.map +1 -1
- package/dist/ai-service/util/backoff-strategy.js +14 -1
- package/dist/ai-service/util/backoff-strategy.js.map +1 -1
- package/dist/clark-log-forwarder.d.ts +15 -0
- package/dist/clark-log-forwarder.d.ts.map +1 -0
- package/dist/clark-log-forwarder.js +31 -0
- package/dist/clark-log-forwarder.js.map +1 -0
- package/dist/components-manager.js +1 -1
- package/dist/components-manager.js.map +1 -1
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +11 -0
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/file-system-manager.d.ts.map +1 -1
- package/dist/file-system-manager.js +3 -3
- package/dist/file-system-manager.js.map +1 -1
- package/dist/socket-manager.d.ts +3 -0
- package/dist/socket-manager.d.ts.map +1 -1
- package/dist/socket-manager.js +23 -0
- package/dist/socket-manager.js.map +1 -1
- package/dist/util/logger.d.ts +5 -10
- package/dist/util/logger.d.ts.map +1 -1
- package/dist/util/logger.js +6 -7
- package/dist/util/logger.js.map +1 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +0 -2
- package/dist/util.js.map +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON Schema to Zod schema converter.
|
|
3
|
+
*
|
|
4
|
+
* Converts MCP tool JSON Schema definitions to Zod schemas
|
|
5
|
+
* for use with the Tool Registry.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
/**
|
|
9
|
+
* Maximum recursion depth for schema conversion.
|
|
10
|
+
* Prevents stack overflow on circular or deeply nested schemas.
|
|
11
|
+
*/
|
|
12
|
+
const MAX_SCHEMA_DEPTH = 50;
|
|
13
|
+
/**
|
|
14
|
+
* Converts a JSON Schema to a Zod schema.
|
|
15
|
+
*
|
|
16
|
+
* Supports common JSON Schema constructs used in MCP tool definitions:
|
|
17
|
+
* - Primitive types (string, number, integer, boolean, null)
|
|
18
|
+
* - Objects with properties
|
|
19
|
+
* - Arrays with items
|
|
20
|
+
* - Enums and const values
|
|
21
|
+
* - Basic validation (min/max, pattern, required)
|
|
22
|
+
* - Union types (oneOf, anyOf)
|
|
23
|
+
*
|
|
24
|
+
* @param schema - JSON Schema to convert
|
|
25
|
+
* @returns Equivalent Zod schema
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* const jsonSchema = {
|
|
29
|
+
* type: "object",
|
|
30
|
+
* properties: {
|
|
31
|
+
* url: { type: "string" },
|
|
32
|
+
* timeout: { type: "number", minimum: 0 }
|
|
33
|
+
* },
|
|
34
|
+
* required: ["url"]
|
|
35
|
+
* };
|
|
36
|
+
* const zodSchema = jsonSchemaToZod(jsonSchema);
|
|
37
|
+
*/
|
|
38
|
+
export function jsonSchemaToZod(schema) {
|
|
39
|
+
return jsonSchemaToZodInternal(schema, 0);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Internal recursive implementation with depth tracking.
|
|
43
|
+
*/
|
|
44
|
+
function jsonSchemaToZodInternal(schema, depth) {
|
|
45
|
+
if (!schema) {
|
|
46
|
+
return z.unknown();
|
|
47
|
+
}
|
|
48
|
+
// Prevent infinite recursion on circular schemas
|
|
49
|
+
if (depth > MAX_SCHEMA_DEPTH) {
|
|
50
|
+
return z.unknown();
|
|
51
|
+
}
|
|
52
|
+
// Handle const
|
|
53
|
+
if (schema.const !== undefined) {
|
|
54
|
+
return z.literal(schema.const);
|
|
55
|
+
}
|
|
56
|
+
// Handle enum
|
|
57
|
+
if (schema.enum && schema.enum.length > 0) {
|
|
58
|
+
// Check if all values are strings for z.enum
|
|
59
|
+
if (schema.enum.every((v) => typeof v === "string")) {
|
|
60
|
+
return z.enum(schema.enum);
|
|
61
|
+
}
|
|
62
|
+
// Fall back to union of literals for mixed types
|
|
63
|
+
const literals = schema.enum.map((v) => z.literal(v));
|
|
64
|
+
if (literals.length === 1) {
|
|
65
|
+
return literals[0];
|
|
66
|
+
}
|
|
67
|
+
return z.union(literals);
|
|
68
|
+
}
|
|
69
|
+
// Handle oneOf/anyOf (union types)
|
|
70
|
+
if (schema.oneOf && schema.oneOf.length > 0) {
|
|
71
|
+
const schemas = schema.oneOf.map((s) => jsonSchemaToZodInternal(s, depth + 1));
|
|
72
|
+
if (schemas.length === 1) {
|
|
73
|
+
return schemas[0];
|
|
74
|
+
}
|
|
75
|
+
return z.union(schemas);
|
|
76
|
+
}
|
|
77
|
+
if (schema.anyOf && schema.anyOf.length > 0) {
|
|
78
|
+
const schemas = schema.anyOf.map((s) => jsonSchemaToZodInternal(s, depth + 1));
|
|
79
|
+
if (schemas.length === 1) {
|
|
80
|
+
return schemas[0];
|
|
81
|
+
}
|
|
82
|
+
return z.union(schemas);
|
|
83
|
+
}
|
|
84
|
+
// Handle allOf (intersection types)
|
|
85
|
+
if (schema.allOf && schema.allOf.length > 0) {
|
|
86
|
+
const schemas = schema.allOf.map((s) => jsonSchemaToZodInternal(s, depth + 1));
|
|
87
|
+
if (schemas.length === 1) {
|
|
88
|
+
return schemas[0];
|
|
89
|
+
}
|
|
90
|
+
// Use z.intersection() which works with any Zod types, unlike .and() which
|
|
91
|
+
// only works on ZodObject. For primitives the intersection may be `never`
|
|
92
|
+
// at the type level, but Zod will handle validation correctly.
|
|
93
|
+
return schemas.reduce((acc, s) => z.intersection(acc, s));
|
|
94
|
+
}
|
|
95
|
+
// Handle type-based schemas
|
|
96
|
+
const type = Array.isArray(schema.type) ? schema.type[0] : schema.type;
|
|
97
|
+
switch (type) {
|
|
98
|
+
case "string":
|
|
99
|
+
return buildStringSchema(schema);
|
|
100
|
+
case "number":
|
|
101
|
+
return buildNumberSchema(schema, false);
|
|
102
|
+
case "integer":
|
|
103
|
+
return buildNumberSchema(schema, true);
|
|
104
|
+
case "boolean":
|
|
105
|
+
return z.boolean();
|
|
106
|
+
case "null":
|
|
107
|
+
return z.null();
|
|
108
|
+
case "array":
|
|
109
|
+
return buildArraySchema(schema, depth);
|
|
110
|
+
case "object":
|
|
111
|
+
return buildObjectSchema(schema, depth);
|
|
112
|
+
default:
|
|
113
|
+
// No type specified, try to infer from properties
|
|
114
|
+
if (schema.properties) {
|
|
115
|
+
return buildObjectSchema(schema, depth);
|
|
116
|
+
}
|
|
117
|
+
return z.unknown();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Builds a Zod string schema with validation constraints.
|
|
122
|
+
*/
|
|
123
|
+
function buildStringSchema(schema) {
|
|
124
|
+
let zodSchema = z.string();
|
|
125
|
+
if (schema.minLength !== undefined) {
|
|
126
|
+
zodSchema = zodSchema.min(schema.minLength);
|
|
127
|
+
}
|
|
128
|
+
if (schema.maxLength !== undefined) {
|
|
129
|
+
zodSchema = zodSchema.max(schema.maxLength);
|
|
130
|
+
}
|
|
131
|
+
if (schema.pattern) {
|
|
132
|
+
zodSchema = zodSchema.regex(new RegExp(schema.pattern));
|
|
133
|
+
}
|
|
134
|
+
if (schema.description) {
|
|
135
|
+
zodSchema = zodSchema.describe(schema.description);
|
|
136
|
+
}
|
|
137
|
+
return zodSchema;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Builds a Zod number schema with validation constraints.
|
|
141
|
+
*/
|
|
142
|
+
function buildNumberSchema(schema, isInteger) {
|
|
143
|
+
let zodSchema = z.number();
|
|
144
|
+
if (isInteger) {
|
|
145
|
+
zodSchema = zodSchema.int();
|
|
146
|
+
}
|
|
147
|
+
if (schema.minimum !== undefined) {
|
|
148
|
+
zodSchema = zodSchema.min(schema.minimum);
|
|
149
|
+
}
|
|
150
|
+
if (schema.maximum !== undefined) {
|
|
151
|
+
zodSchema = zodSchema.max(schema.maximum);
|
|
152
|
+
}
|
|
153
|
+
if (schema.description) {
|
|
154
|
+
zodSchema = zodSchema.describe(schema.description);
|
|
155
|
+
}
|
|
156
|
+
return zodSchema;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Builds a Zod array schema.
|
|
160
|
+
*/
|
|
161
|
+
function buildArraySchema(schema, depth) {
|
|
162
|
+
const itemSchema = schema.items
|
|
163
|
+
? jsonSchemaToZodInternal(schema.items, depth + 1)
|
|
164
|
+
: z.unknown();
|
|
165
|
+
let zodSchema = z.array(itemSchema);
|
|
166
|
+
if (schema.description) {
|
|
167
|
+
zodSchema = zodSchema.describe(schema.description);
|
|
168
|
+
}
|
|
169
|
+
return zodSchema;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Builds a Zod object schema with properties.
|
|
173
|
+
*/
|
|
174
|
+
function buildObjectSchema(schema, depth) {
|
|
175
|
+
if (!schema.properties) {
|
|
176
|
+
// Object with no defined properties
|
|
177
|
+
if (schema.additionalProperties === false) {
|
|
178
|
+
return z.object({}).strict();
|
|
179
|
+
}
|
|
180
|
+
return z.record(z.string(), z.unknown());
|
|
181
|
+
}
|
|
182
|
+
const required = new Set(schema.required ?? []);
|
|
183
|
+
const shape = {};
|
|
184
|
+
for (const [key, propSchema] of Object.entries(schema.properties)) {
|
|
185
|
+
let propZod = jsonSchemaToZodInternal(propSchema, depth + 1);
|
|
186
|
+
// Handle optional/default:
|
|
187
|
+
// - If there's a default, use .default() which makes it implicitly optional
|
|
188
|
+
// - If not required and no default, use .optional()
|
|
189
|
+
const hasDefault = propSchema.default !== undefined;
|
|
190
|
+
const isRequired = required.has(key);
|
|
191
|
+
if (hasDefault) {
|
|
192
|
+
// .default() makes the field implicitly optional and provides a fallback value
|
|
193
|
+
propZod = propZod.default(propSchema.default);
|
|
194
|
+
}
|
|
195
|
+
else if (!isRequired) {
|
|
196
|
+
// No default, just make it optional
|
|
197
|
+
propZod = propZod.optional();
|
|
198
|
+
}
|
|
199
|
+
shape[key] = propZod;
|
|
200
|
+
}
|
|
201
|
+
let zodSchema = z.object(shape);
|
|
202
|
+
// Handle additionalProperties
|
|
203
|
+
if (schema.additionalProperties === false) {
|
|
204
|
+
zodSchema = zodSchema.strict();
|
|
205
|
+
}
|
|
206
|
+
else if (schema.additionalProperties &&
|
|
207
|
+
typeof schema.additionalProperties === "object") {
|
|
208
|
+
zodSchema = zodSchema.catchall(jsonSchemaToZodInternal(schema.additionalProperties, depth + 1));
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
// Allow unknown keys by default (passthrough)
|
|
212
|
+
zodSchema = zodSchema.passthrough();
|
|
213
|
+
}
|
|
214
|
+
if (schema.description) {
|
|
215
|
+
zodSchema = zodSchema.describe(schema.description);
|
|
216
|
+
}
|
|
217
|
+
return zodSchema;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Creates a permissive fallback schema for unknown structures.
|
|
221
|
+
*
|
|
222
|
+
* Used when JSON Schema conversion fails or schema is missing.
|
|
223
|
+
*
|
|
224
|
+
* @param description - Optional description for the schema
|
|
225
|
+
* @returns A permissive Zod schema that accepts any object
|
|
226
|
+
*/
|
|
227
|
+
export function createPermissiveSchema(description) {
|
|
228
|
+
const schema = z.record(z.string(), z.any());
|
|
229
|
+
return description ? schema.describe(description) : schema;
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=json-schema-to-zod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-schema-to-zod.js","sourceRoot":"","sources":["../../../../src/ai-service/mcp/adapter/json-schema-to-zod.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Adapter.
|
|
3
|
+
*
|
|
4
|
+
* Bridges MCP servers to the Tool Registry, handling:
|
|
5
|
+
* - Connection lifecycle management
|
|
6
|
+
* - Tool discovery and registration
|
|
7
|
+
* - Schema conversion (JSON Schema to Zod)
|
|
8
|
+
* - Tool execution delegation
|
|
9
|
+
*/
|
|
10
|
+
import type { Logger } from "../../../util/logger.js";
|
|
11
|
+
import type { ToolRegistry } from "../../agent/tools2/registry.js";
|
|
12
|
+
import type { McpServerConfig, McpServerState, McpClientInterface } from "../types.js";
|
|
13
|
+
/**
|
|
14
|
+
* Default tool name transformer.
|
|
15
|
+
*
|
|
16
|
+
* Creates prefixed names like "mcp:playwright:navigate"
|
|
17
|
+
*
|
|
18
|
+
* @param serverName - The MCP server name
|
|
19
|
+
* @param toolName - The original tool name from the MCP server
|
|
20
|
+
* @returns The prefixed tool name
|
|
21
|
+
*/
|
|
22
|
+
export declare const defaultToolNameTransform: (serverName: string, toolName: string) => string;
|
|
23
|
+
/**
|
|
24
|
+
* Adapter that bridges MCP servers to the Tool Registry.
|
|
25
|
+
*
|
|
26
|
+
* Handles the complete lifecycle of MCP tool integration:
|
|
27
|
+
* 1. Server connection management
|
|
28
|
+
* 2. Tool discovery from MCP server
|
|
29
|
+
* 3. Schema conversion (JSON Schema -> Zod)
|
|
30
|
+
* 4. Tool registration with registry
|
|
31
|
+
* 5. Execution delegation to MCP server
|
|
32
|
+
* 6. Cleanup on disconnect
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* const adapter = new McpToolAdapter(registry, logger);
|
|
36
|
+
*
|
|
37
|
+
* // Register an embedded server
|
|
38
|
+
* const client = new MCPClient(serverUrl, logger);
|
|
39
|
+
* await client.connect();
|
|
40
|
+
*
|
|
41
|
+
* await adapter.addServer({
|
|
42
|
+
* name: "playwright",
|
|
43
|
+
* url: serverUrl,
|
|
44
|
+
* category: ToolCategory.GENERAL,
|
|
45
|
+
* defaultPermission: PermissionLevel.PROMPT
|
|
46
|
+
* }, client);
|
|
47
|
+
*
|
|
48
|
+
* // Tools are now available in registry as "mcp:playwright:*"
|
|
49
|
+
*
|
|
50
|
+
* // Later, clean up
|
|
51
|
+
* await adapter.removeServer("playwright");
|
|
52
|
+
*/
|
|
53
|
+
export declare class McpToolAdapter {
|
|
54
|
+
private readonly registry;
|
|
55
|
+
private readonly logger;
|
|
56
|
+
private servers;
|
|
57
|
+
constructor(registry: ToolRegistry, logger: Logger);
|
|
58
|
+
/**
|
|
59
|
+
* Adds an MCP server and registers its tools.
|
|
60
|
+
*
|
|
61
|
+
* @param config - Server configuration
|
|
62
|
+
* @param client - MCP client instance (should already be connected or will be connected)
|
|
63
|
+
* @returns Names of registered tools
|
|
64
|
+
* @throws Error if server name already registered
|
|
65
|
+
*/
|
|
66
|
+
addServer(config: McpServerConfig, client: McpClientInterface): Promise<string[]>;
|
|
67
|
+
/**
|
|
68
|
+
* Removes an MCP server and unregisters its tools.
|
|
69
|
+
*
|
|
70
|
+
* Note: The ToolRegistry doesn't currently support unregistering tools,
|
|
71
|
+
* so this method disconnects the client and clears the tracking state.
|
|
72
|
+
* Tools will fail on execute after removal.
|
|
73
|
+
*
|
|
74
|
+
* @param serverName - Name of server to remove
|
|
75
|
+
*/
|
|
76
|
+
removeServer(serverName: string): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Gets the current state of a server.
|
|
79
|
+
*
|
|
80
|
+
* @param serverName - Server name
|
|
81
|
+
* @returns Server state or undefined if not found
|
|
82
|
+
*/
|
|
83
|
+
getServerState(serverName: string): McpServerState | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* Gets all registered server names.
|
|
86
|
+
*
|
|
87
|
+
* @returns Array of server names
|
|
88
|
+
*/
|
|
89
|
+
getServerNames(): string[];
|
|
90
|
+
/**
|
|
91
|
+
* Gets tool names registered for a server.
|
|
92
|
+
*
|
|
93
|
+
* @param serverName - Server name
|
|
94
|
+
* @returns Array of tool names or empty array if server not found
|
|
95
|
+
*/
|
|
96
|
+
getServerTools(serverName: string): string[];
|
|
97
|
+
/**
|
|
98
|
+
* Checks if a server is registered.
|
|
99
|
+
*
|
|
100
|
+
* @param serverName - Server name
|
|
101
|
+
* @returns True if server is registered
|
|
102
|
+
*/
|
|
103
|
+
hasServer(serverName: string): boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Removes all servers and cleans up.
|
|
106
|
+
*/
|
|
107
|
+
dispose(): Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Creates a Tool instance for an MCP tool.
|
|
110
|
+
*
|
|
111
|
+
* @param config - Server configuration
|
|
112
|
+
* @param client - MCP client for execution
|
|
113
|
+
* @param toolDef - Tool definition from MCP server
|
|
114
|
+
* @returns Tool instance ready for registration
|
|
115
|
+
*/
|
|
116
|
+
private createTool;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=mcp-tool-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tool-adapter.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/mcp/adapter/mcp-tool-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,kBAAkB,EAEnB,MAAM,aAAa,CAAC;AAarB;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GACnC,YAAY,MAAM,EAClB,UAAU,MAAM,KACf,MAAyC,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,cAAc;IAIvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,OAAO,CAAC,OAAO,CAAqC;gBAGjC,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,MAAM;IAGjC;;;;;;;OAOG;IACG,SAAS,CACb,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,MAAM,EAAE,CAAC;IAyEpB;;;;;;;;OAQG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BrD;;;;;OAKG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI9D;;;;OAIG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;;;;OAKG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAI5C;;;;;OAKG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAItC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU;CAqDnB"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Adapter.
|
|
3
|
+
*
|
|
4
|
+
* Bridges MCP servers to the Tool Registry, handling:
|
|
5
|
+
* - Connection lifecycle management
|
|
6
|
+
* - Tool discovery and registration
|
|
7
|
+
* - Schema conversion (JSON Schema to Zod)
|
|
8
|
+
* - Tool execution delegation
|
|
9
|
+
*/
|
|
10
|
+
import { jsonSchemaToZod, createPermissiveSchema, } from "./json-schema-to-zod.js";
|
|
11
|
+
/**
|
|
12
|
+
* Default tool name transformer.
|
|
13
|
+
*
|
|
14
|
+
* Creates prefixed names like "mcp:playwright:navigate"
|
|
15
|
+
*
|
|
16
|
+
* @param serverName - The MCP server name
|
|
17
|
+
* @param toolName - The original tool name from the MCP server
|
|
18
|
+
* @returns The prefixed tool name
|
|
19
|
+
*/
|
|
20
|
+
export const defaultToolNameTransform = (serverName, toolName) => `mcp:${serverName}:${toolName}`;
|
|
21
|
+
/**
|
|
22
|
+
* Adapter that bridges MCP servers to the Tool Registry.
|
|
23
|
+
*
|
|
24
|
+
* Handles the complete lifecycle of MCP tool integration:
|
|
25
|
+
* 1. Server connection management
|
|
26
|
+
* 2. Tool discovery from MCP server
|
|
27
|
+
* 3. Schema conversion (JSON Schema -> Zod)
|
|
28
|
+
* 4. Tool registration with registry
|
|
29
|
+
* 5. Execution delegation to MCP server
|
|
30
|
+
* 6. Cleanup on disconnect
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* const adapter = new McpToolAdapter(registry, logger);
|
|
34
|
+
*
|
|
35
|
+
* // Register an embedded server
|
|
36
|
+
* const client = new MCPClient(serverUrl, logger);
|
|
37
|
+
* await client.connect();
|
|
38
|
+
*
|
|
39
|
+
* await adapter.addServer({
|
|
40
|
+
* name: "playwright",
|
|
41
|
+
* url: serverUrl,
|
|
42
|
+
* category: ToolCategory.GENERAL,
|
|
43
|
+
* defaultPermission: PermissionLevel.PROMPT
|
|
44
|
+
* }, client);
|
|
45
|
+
*
|
|
46
|
+
* // Tools are now available in registry as "mcp:playwright:*"
|
|
47
|
+
*
|
|
48
|
+
* // Later, clean up
|
|
49
|
+
* await adapter.removeServer("playwright");
|
|
50
|
+
*/
|
|
51
|
+
export class McpToolAdapter {
|
|
52
|
+
registry;
|
|
53
|
+
logger;
|
|
54
|
+
servers = new Map();
|
|
55
|
+
constructor(registry, logger) {
|
|
56
|
+
this.registry = registry;
|
|
57
|
+
this.logger = logger;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Adds an MCP server and registers its tools.
|
|
61
|
+
*
|
|
62
|
+
* @param config - Server configuration
|
|
63
|
+
* @param client - MCP client instance (should already be connected or will be connected)
|
|
64
|
+
* @returns Names of registered tools
|
|
65
|
+
* @throws Error if server name already registered
|
|
66
|
+
*/
|
|
67
|
+
async addServer(config, client) {
|
|
68
|
+
// Validate server name uniqueness
|
|
69
|
+
if (this.servers.has(config.name)) {
|
|
70
|
+
throw new Error(`MCP server "${config.name}" is already registered`);
|
|
71
|
+
}
|
|
72
|
+
// Initialize entry with connecting state
|
|
73
|
+
const entry = {
|
|
74
|
+
config,
|
|
75
|
+
client,
|
|
76
|
+
registeredTools: [],
|
|
77
|
+
state: { status: "connecting" },
|
|
78
|
+
};
|
|
79
|
+
this.servers.set(config.name, entry);
|
|
80
|
+
try {
|
|
81
|
+
// Connect if not already connected
|
|
82
|
+
if (!client.isConnected()) {
|
|
83
|
+
await client.connect();
|
|
84
|
+
}
|
|
85
|
+
// Discover tools
|
|
86
|
+
const toolDefinitions = client.getToolDefinitions();
|
|
87
|
+
this.logger.info(`Discovered ${toolDefinitions.length} tools from MCP server "${config.name}"`);
|
|
88
|
+
// Register each tool
|
|
89
|
+
const registeredToolNames = [];
|
|
90
|
+
for (const toolDef of toolDefinitions) {
|
|
91
|
+
const tool = this.createTool(config, client, toolDef);
|
|
92
|
+
try {
|
|
93
|
+
this.registry.registerTool(tool);
|
|
94
|
+
registeredToolNames.push(tool.name);
|
|
95
|
+
this.logger.debug(`Registered MCP tool: ${tool.name}`);
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
99
|
+
this.logger.warn(`Failed to register MCP tool "${tool.name}": ${errorMsg}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Update entry state
|
|
103
|
+
entry.registeredTools = registeredToolNames;
|
|
104
|
+
entry.state = {
|
|
105
|
+
status: "connected",
|
|
106
|
+
toolCount: registeredToolNames.length,
|
|
107
|
+
};
|
|
108
|
+
this.logger.info(`Successfully registered ${registeredToolNames.length} tools from MCP server "${config.name}"`);
|
|
109
|
+
return registeredToolNames;
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
// Update state to error
|
|
113
|
+
entry.state = {
|
|
114
|
+
status: "error",
|
|
115
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
116
|
+
};
|
|
117
|
+
this.logger.error(`Failed to add MCP server "${config.name}"`, {
|
|
118
|
+
error: {
|
|
119
|
+
kind: "McpServerError",
|
|
120
|
+
message: error instanceof Error ? error.message : String(error),
|
|
121
|
+
stack: error instanceof Error ? error.stack : undefined,
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
throw error;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Removes an MCP server and unregisters its tools.
|
|
129
|
+
*
|
|
130
|
+
* Note: The ToolRegistry doesn't currently support unregistering tools,
|
|
131
|
+
* so this method disconnects the client and clears the tracking state.
|
|
132
|
+
* Tools will fail on execute after removal.
|
|
133
|
+
*
|
|
134
|
+
* @param serverName - Name of server to remove
|
|
135
|
+
*/
|
|
136
|
+
async removeServer(serverName) {
|
|
137
|
+
const entry = this.servers.get(serverName);
|
|
138
|
+
if (!entry) {
|
|
139
|
+
this.logger.warn(`MCP server "${serverName}" not found for removal`);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
try {
|
|
143
|
+
// Disconnect the client
|
|
144
|
+
if (entry.client.isConnected()) {
|
|
145
|
+
await entry.client.disconnect();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
150
|
+
this.logger.warn(`Error disconnecting MCP server "${serverName}": ${errorMsg}`);
|
|
151
|
+
}
|
|
152
|
+
// Note: We can't unregister tools from the registry currently.
|
|
153
|
+
// The tools will remain registered but will fail when executed
|
|
154
|
+
// since the client is disconnected.
|
|
155
|
+
this.servers.delete(serverName);
|
|
156
|
+
this.logger.info(`Removed MCP server "${serverName}" (${entry.registeredTools.length} tools)`);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Gets the current state of a server.
|
|
160
|
+
*
|
|
161
|
+
* @param serverName - Server name
|
|
162
|
+
* @returns Server state or undefined if not found
|
|
163
|
+
*/
|
|
164
|
+
getServerState(serverName) {
|
|
165
|
+
return this.servers.get(serverName)?.state;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Gets all registered server names.
|
|
169
|
+
*
|
|
170
|
+
* @returns Array of server names
|
|
171
|
+
*/
|
|
172
|
+
getServerNames() {
|
|
173
|
+
return Array.from(this.servers.keys());
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Gets tool names registered for a server.
|
|
177
|
+
*
|
|
178
|
+
* @param serverName - Server name
|
|
179
|
+
* @returns Array of tool names or empty array if server not found
|
|
180
|
+
*/
|
|
181
|
+
getServerTools(serverName) {
|
|
182
|
+
return this.servers.get(serverName)?.registeredTools ?? [];
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Checks if a server is registered.
|
|
186
|
+
*
|
|
187
|
+
* @param serverName - Server name
|
|
188
|
+
* @returns True if server is registered
|
|
189
|
+
*/
|
|
190
|
+
hasServer(serverName) {
|
|
191
|
+
return this.servers.has(serverName);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Removes all servers and cleans up.
|
|
195
|
+
*/
|
|
196
|
+
async dispose() {
|
|
197
|
+
const serverNames = this.getServerNames();
|
|
198
|
+
for (const name of serverNames) {
|
|
199
|
+
await this.removeServer(name);
|
|
200
|
+
}
|
|
201
|
+
this.logger.info("Disposed all MCP servers");
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Creates a Tool instance for an MCP tool.
|
|
205
|
+
*
|
|
206
|
+
* @param config - Server configuration
|
|
207
|
+
* @param client - MCP client for execution
|
|
208
|
+
* @param toolDef - Tool definition from MCP server
|
|
209
|
+
* @returns Tool instance ready for registration
|
|
210
|
+
*/
|
|
211
|
+
createTool(config, client, toolDef) {
|
|
212
|
+
const toolName = (config.toolNameTransform ?? defaultToolNameTransform)(config.name, toolDef.name);
|
|
213
|
+
// Get schema: override > converted > permissive fallback
|
|
214
|
+
let inputSchema;
|
|
215
|
+
const schemaOverride = config.schemaOverrides?.[toolDef.name];
|
|
216
|
+
if (schemaOverride) {
|
|
217
|
+
inputSchema = schemaOverride;
|
|
218
|
+
this.logger.debug(`Using schema override for ${toolName}`);
|
|
219
|
+
}
|
|
220
|
+
else if (config.convertSchemas !== false && toolDef.inputSchema) {
|
|
221
|
+
try {
|
|
222
|
+
inputSchema = jsonSchemaToZod(toolDef.inputSchema);
|
|
223
|
+
this.logger.debug(`Converted JSON Schema for ${toolName}`);
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
227
|
+
this.logger.warn(`Failed to convert schema for ${toolName}, using permissive fallback: ${errorMsg}`);
|
|
228
|
+
inputSchema = createPermissiveSchema(toolDef.description);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
inputSchema = createPermissiveSchema(toolDef.description);
|
|
233
|
+
}
|
|
234
|
+
// Store original tool name for MCP call
|
|
235
|
+
const originalToolName = toolDef.name;
|
|
236
|
+
return {
|
|
237
|
+
name: toolName,
|
|
238
|
+
description: toolDef.description ?? toolDef.name,
|
|
239
|
+
category: config.category,
|
|
240
|
+
defaultPermission: config.defaultPermission,
|
|
241
|
+
inputSchema,
|
|
242
|
+
execute: async (input) => {
|
|
243
|
+
// Check if client is still connected
|
|
244
|
+
if (!client.isConnected()) {
|
|
245
|
+
throw new Error(`MCP server "${config.name}" is not connected. ` +
|
|
246
|
+
`The server may have been removed or disconnected.`);
|
|
247
|
+
}
|
|
248
|
+
// Delegate execution to MCP server using original tool name
|
|
249
|
+
return client.callTool(originalToolName, input);
|
|
250
|
+
},
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=mcp-tool-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tool-adapter.js","sourceRoot":"","sources":["../../../../src/ai-service/mcp/adapter/mcp-tool-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Integration Module.
|
|
3
|
+
*
|
|
4
|
+
* Provides MCP server implementations and adapters for integrating
|
|
5
|
+
* MCP servers with the Tool Registry.
|
|
6
|
+
*/
|
|
7
|
+
export { McpToolAdapter, defaultToolNameTransform, jsonSchemaToZod, createPermissiveSchema, } from "./adapter/index.js";
|
|
8
|
+
export type { JsonSchema, McpToolDefinition, McpServerConfig, McpServerState, McpClientInterface, } from "./types.js";
|
|
9
|
+
export { PlaywrightMcpServerManager } from "./playwright-server.js";
|
|
10
|
+
export type { PlaywrightMcpServer, PlaywrightMcpServerOptions, } from "./playwright-server.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai-service/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,YAAY,EACV,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Integration Module.
|
|
3
|
+
*
|
|
4
|
+
* Provides MCP server implementations and adapters for integrating
|
|
5
|
+
* MCP servers with the Tool Registry.
|
|
6
|
+
*/
|
|
7
|
+
// Adapter for bridging MCP servers to Tool Registry
|
|
8
|
+
export { McpToolAdapter, defaultToolNameTransform, jsonSchemaToZod, createPermissiveSchema, } from "./adapter/index.js";
|
|
9
|
+
// Playwright MCP server
|
|
10
|
+
export { PlaywrightMcpServerManager } from "./playwright-server.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai-service/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,oDAAoD;AACpD,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAW5B,wBAAwB;AACxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC"}
|