@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.
Files changed (232) hide show
  1. package/dist/ai-service/agent/middleware.d.ts +6 -0
  2. package/dist/ai-service/agent/middleware.d.ts.map +1 -1
  3. package/dist/ai-service/agent/middleware.js +11 -0
  4. package/dist/ai-service/agent/middleware.js.map +1 -1
  5. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
  6. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +45 -3
  7. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  8. package/dist/ai-service/agent/tool-message-utils.d.ts +2 -0
  9. package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
  10. package/dist/ai-service/agent/tool-message-utils.js +40 -0
  11. package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
  12. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js +3 -7
  13. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js.map +1 -1
  14. package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts.map +1 -1
  15. package/dist/ai-service/agent/tools/apis/build-api-artifact.js +1 -5
  16. package/dist/ai-service/agent/tools/apis/build-api-artifact.js.map +1 -1
  17. package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts.map +1 -1
  18. package/dist/ai-service/agent/tools/apis/get-api-docs.js +24 -0
  19. package/dist/ai-service/agent/tools/apis/get-api-docs.js.map +1 -1
  20. package/dist/ai-service/agent/tools/apis/test-api.js +2 -2
  21. package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
  22. package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts +10 -0
  23. package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -0
  24. package/dist/ai-service/agent/tools/build-capture-screenshot.js +103 -0
  25. package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -0
  26. package/dist/ai-service/agent/tools/build-install-packages.d.ts.map +1 -1
  27. package/dist/ai-service/agent/tools/build-install-packages.js +36 -29
  28. package/dist/ai-service/agent/tools/build-install-packages.js.map +1 -1
  29. package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts +1 -1
  30. package/dist/ai-service/agent/tools/build-reload-file.d.ts +8 -0
  31. package/dist/ai-service/agent/tools/build-reload-file.d.ts.map +1 -0
  32. package/dist/ai-service/agent/tools/build-reload-file.js +57 -0
  33. package/dist/ai-service/agent/tools/build-reload-file.js.map +1 -0
  34. package/dist/ai-service/agent/tools/get-console-logs.d.ts +23 -0
  35. package/dist/ai-service/agent/tools/get-console-logs.d.ts.map +1 -0
  36. package/dist/ai-service/agent/tools/get-console-logs.js +84 -0
  37. package/dist/ai-service/agent/tools/get-console-logs.js.map +1 -0
  38. package/dist/ai-service/agent/tools/get-runtime-errors.d.ts +13 -0
  39. package/dist/ai-service/agent/tools/get-runtime-errors.d.ts.map +1 -0
  40. package/dist/ai-service/agent/tools/get-runtime-errors.js +59 -0
  41. package/dist/ai-service/agent/tools/get-runtime-errors.js.map +1 -0
  42. package/dist/ai-service/agent/tools/index.d.ts +4 -0
  43. package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
  44. package/dist/ai-service/agent/tools/index.js +4 -0
  45. package/dist/ai-service/agent/tools/index.js.map +1 -1
  46. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +5 -1
  47. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts.map +1 -1
  48. package/dist/ai-service/agent/tools/integrations/execute-request.js +20 -2
  49. package/dist/ai-service/agent/tools/integrations/execute-request.js.map +1 -1
  50. package/dist/ai-service/agent/tools/shared-helpers.d.ts +35 -0
  51. package/dist/ai-service/agent/tools/shared-helpers.d.ts.map +1 -1
  52. package/dist/ai-service/agent/tools/shared-helpers.js +89 -0
  53. package/dist/ai-service/agent/tools/shared-helpers.js.map +1 -1
  54. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  55. package/dist/ai-service/agent/tools.js +11 -5
  56. package/dist/ai-service/agent/tools.js.map +1 -1
  57. package/dist/ai-service/agent/tools2/access-control.d.ts.map +1 -1
  58. package/dist/ai-service/agent/tools2/access-control.js +8 -0
  59. package/dist/ai-service/agent/tools2/access-control.js.map +1 -1
  60. package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
  61. package/dist/ai-service/agent/tools2/registry.js +3 -3
  62. package/dist/ai-service/agent/tools2/registry.js.map +1 -1
  63. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
  64. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +38 -10
  65. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  66. package/dist/ai-service/agent/tools2/types.d.ts +11 -1
  67. package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
  68. package/dist/ai-service/agent/tools2/types.js +1 -0
  69. package/dist/ai-service/agent/tools2/types.js.map +1 -1
  70. package/dist/ai-service/agent/utils.d.ts.map +1 -1
  71. package/dist/ai-service/agent/utils.js +33 -1
  72. package/dist/ai-service/agent/utils.js.map +1 -1
  73. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  74. package/dist/ai-service/app-interface/shell.js +30 -15
  75. package/dist/ai-service/app-interface/shell.js.map +1 -1
  76. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  77. package/dist/ai-service/chat/chat-session-store.js +71 -0
  78. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  79. package/dist/ai-service/chat/extract-history.d.ts.map +1 -1
  80. package/dist/ai-service/chat/extract-history.js +0 -2
  81. package/dist/ai-service/chat/extract-history.js.map +1 -1
  82. package/dist/ai-service/chat/utils.d.ts +2 -0
  83. package/dist/ai-service/chat/utils.d.ts.map +1 -0
  84. package/dist/ai-service/chat/utils.js +8 -0
  85. package/dist/ai-service/chat/utils.js.map +1 -0
  86. package/dist/ai-service/clark-provider/clark-language-model.d.ts.map +1 -1
  87. package/dist/ai-service/clark-provider/clark-language-model.js +6 -0
  88. package/dist/ai-service/clark-provider/clark-language-model.js.map +1 -1
  89. package/dist/ai-service/clark-provider/clark-provider.d.ts +2 -1
  90. package/dist/ai-service/clark-provider/clark-provider.d.ts.map +1 -1
  91. package/dist/ai-service/clark-provider/clark-provider.js.map +1 -1
  92. package/dist/ai-service/features.d.ts +4 -0
  93. package/dist/ai-service/features.d.ts.map +1 -1
  94. package/dist/ai-service/features.js +4 -0
  95. package/dist/ai-service/features.js.map +1 -1
  96. package/dist/ai-service/index.d.ts +7 -1
  97. package/dist/ai-service/index.d.ts.map +1 -1
  98. package/dist/ai-service/index.js +129 -10
  99. package/dist/ai-service/index.js.map +1 -1
  100. package/dist/ai-service/integration-validator.d.ts.map +1 -1
  101. package/dist/ai-service/integration-validator.js +1 -1
  102. package/dist/ai-service/integration-validator.js.map +1 -1
  103. package/dist/ai-service/judge/integration/mcp-client.d.ts +13 -0
  104. package/dist/ai-service/judge/integration/mcp-client.d.ts.map +1 -1
  105. package/dist/ai-service/judge/integration/mcp-client.js +15 -0
  106. package/dist/ai-service/judge/integration/mcp-client.js.map +1 -1
  107. package/dist/ai-service/judge/tools/playwright-action.d.ts +1 -1
  108. package/dist/ai-service/llm/client.d.ts +12 -1
  109. package/dist/ai-service/llm/client.d.ts.map +1 -1
  110. package/dist/ai-service/llm/client.js +20 -2
  111. package/dist/ai-service/llm/client.js.map +1 -1
  112. package/dist/ai-service/llm/context/context.d.ts.map +1 -1
  113. package/dist/ai-service/llm/context/context.js +1 -1
  114. package/dist/ai-service/llm/context/context.js.map +1 -1
  115. package/dist/ai-service/llm/context/utils/message-utils.d.ts +3 -0
  116. package/dist/ai-service/llm/context/utils/message-utils.d.ts.map +1 -1
  117. package/dist/ai-service/llm/context/utils/message-utils.js +53 -1
  118. package/dist/ai-service/llm/context/utils/message-utils.js.map +1 -1
  119. package/dist/ai-service/llm/error.d.ts +10 -2
  120. package/dist/ai-service/llm/error.d.ts.map +1 -1
  121. package/dist/ai-service/llm/error.js +22 -0
  122. package/dist/ai-service/llm/error.js.map +1 -1
  123. package/dist/ai-service/llm/interaction/adapters/vercel.js.map +1 -1
  124. package/dist/ai-service/llm/interaction/index.d.ts +1 -1
  125. package/dist/ai-service/llm/interaction/index.d.ts.map +1 -1
  126. package/dist/ai-service/llm/interaction/index.js.map +1 -1
  127. package/dist/ai-service/llm/interaction/middlewares/stream-retry.d.ts +30 -36
  128. package/dist/ai-service/llm/interaction/middlewares/stream-retry.d.ts.map +1 -1
  129. package/dist/ai-service/llm/interaction/middlewares/stream-retry.js +123 -223
  130. package/dist/ai-service/llm/interaction/middlewares/stream-retry.js.map +1 -1
  131. package/dist/ai-service/llm/interaction/middlewares/utils/abort.d.ts +41 -0
  132. package/dist/ai-service/llm/interaction/middlewares/utils/abort.d.ts.map +1 -0
  133. package/dist/ai-service/llm/interaction/middlewares/utils/abort.js +74 -0
  134. package/dist/ai-service/llm/interaction/middlewares/utils/abort.js.map +1 -0
  135. package/dist/ai-service/llm/interaction/middlewares/utils/fallback-chain.d.ts +62 -0
  136. package/dist/ai-service/llm/interaction/middlewares/utils/fallback-chain.d.ts.map +1 -0
  137. package/dist/ai-service/llm/interaction/middlewares/utils/fallback-chain.js +112 -0
  138. package/dist/ai-service/llm/interaction/middlewares/utils/fallback-chain.js.map +1 -0
  139. package/dist/ai-service/llm/interaction/middlewares/utils/retries.d.ts +47 -0
  140. package/dist/ai-service/llm/interaction/middlewares/utils/retries.d.ts.map +1 -0
  141. package/dist/ai-service/llm/interaction/middlewares/utils/retries.js +131 -0
  142. package/dist/ai-service/llm/interaction/middlewares/utils/retries.js.map +1 -0
  143. package/dist/ai-service/llm/interaction/middlewares/utils/stall-detector.d.ts +30 -0
  144. package/dist/ai-service/llm/interaction/middlewares/utils/stall-detector.d.ts.map +1 -0
  145. package/dist/ai-service/llm/interaction/middlewares/utils/stall-detector.js +36 -0
  146. package/dist/ai-service/llm/interaction/middlewares/utils/stall-detector.js.map +1 -0
  147. package/dist/ai-service/llm/interaction/middlewares/utils/streams.d.ts +42 -0
  148. package/dist/ai-service/llm/interaction/middlewares/utils/streams.d.ts.map +1 -0
  149. package/dist/ai-service/llm/interaction/middlewares/utils/streams.js +208 -0
  150. package/dist/ai-service/llm/interaction/middlewares/utils/streams.js.map +1 -0
  151. package/dist/ai-service/llm/interaction/provider.d.ts +2 -0
  152. package/dist/ai-service/llm/interaction/provider.d.ts.map +1 -1
  153. package/dist/ai-service/llm/interaction/stream-lifecycle.d.ts.map +1 -1
  154. package/dist/ai-service/llm/interaction/stream-lifecycle.js +21 -3
  155. package/dist/ai-service/llm/interaction/stream-lifecycle.js.map +1 -1
  156. package/dist/ai-service/llm/provider.d.ts.map +1 -1
  157. package/dist/ai-service/llm/provider.js +4 -3
  158. package/dist/ai-service/llm/provider.js.map +1 -1
  159. package/dist/ai-service/llmobs/middleware/stream-text.d.ts.map +1 -1
  160. package/dist/ai-service/llmobs/middleware/stream-text.js +17 -4
  161. package/dist/ai-service/llmobs/middleware/stream-text.js.map +1 -1
  162. package/dist/ai-service/mcp/adapter/index.d.ts +8 -0
  163. package/dist/ai-service/mcp/adapter/index.d.ts.map +1 -0
  164. package/dist/ai-service/mcp/adapter/index.js +10 -0
  165. package/dist/ai-service/mcp/adapter/index.js.map +1 -0
  166. package/dist/ai-service/mcp/adapter/json-schema-to-zod.d.ts +44 -0
  167. package/dist/ai-service/mcp/adapter/json-schema-to-zod.d.ts.map +1 -0
  168. package/dist/ai-service/mcp/adapter/json-schema-to-zod.js +231 -0
  169. package/dist/ai-service/mcp/adapter/json-schema-to-zod.js.map +1 -0
  170. package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts +118 -0
  171. package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts.map +1 -0
  172. package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js +254 -0
  173. package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js.map +1 -0
  174. package/dist/ai-service/mcp/index.d.ts +11 -0
  175. package/dist/ai-service/mcp/index.d.ts.map +1 -0
  176. package/dist/ai-service/mcp/index.js +11 -0
  177. package/dist/ai-service/mcp/index.js.map +1 -0
  178. package/dist/ai-service/mcp/types.d.ts +94 -0
  179. package/dist/ai-service/mcp/types.d.ts.map +1 -0
  180. package/dist/ai-service/mcp/types.js +7 -0
  181. package/dist/ai-service/mcp/types.js.map +1 -0
  182. package/dist/ai-service/state-machine/clark-fsm.d.ts +6 -1
  183. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  184. package/dist/ai-service/state-machine/clark-fsm.js +13 -0
  185. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  186. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  187. package/dist/ai-service/state-machine/handlers/agent-planning.js +1 -1
  188. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  189. package/dist/ai-service/state-machine/handlers/idle.d.ts.map +1 -1
  190. package/dist/ai-service/state-machine/handlers/idle.js +4 -0
  191. package/dist/ai-service/state-machine/handlers/idle.js.map +1 -1
  192. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  193. package/dist/ai-service/state-machine/handlers/llm-generating.js +12 -2
  194. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  195. package/dist/ai-service/state-machine/helpers/file-read-tracker.d.ts.map +1 -1
  196. package/dist/ai-service/state-machine/helpers/file-read-tracker.js +12 -3
  197. package/dist/ai-service/state-machine/helpers/file-read-tracker.js.map +1 -1
  198. package/dist/ai-service/template-renderer.d.ts.map +1 -1
  199. package/dist/ai-service/template-renderer.js +4 -2
  200. package/dist/ai-service/template-renderer.js.map +1 -1
  201. package/dist/ai-service/test-utils/error-mocks.d.ts.map +1 -1
  202. package/dist/ai-service/test-utils/error-mocks.js +9 -4
  203. package/dist/ai-service/test-utils/error-mocks.js.map +1 -1
  204. package/dist/ai-service/transform/shared.js +1 -1
  205. package/dist/ai-service/transform/shared.js.map +1 -1
  206. package/dist/ai-service/util/backoff-strategy.d.ts.map +1 -1
  207. package/dist/ai-service/util/backoff-strategy.js +14 -1
  208. package/dist/ai-service/util/backoff-strategy.js.map +1 -1
  209. package/dist/clark-log-forwarder.d.ts +15 -0
  210. package/dist/clark-log-forwarder.d.ts.map +1 -0
  211. package/dist/clark-log-forwarder.js +31 -0
  212. package/dist/clark-log-forwarder.js.map +1 -0
  213. package/dist/components-manager.js +1 -1
  214. package/dist/components-manager.js.map +1 -1
  215. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  216. package/dist/file-sync-vite-plugin.js +11 -0
  217. package/dist/file-sync-vite-plugin.js.map +1 -1
  218. package/dist/file-system-manager.d.ts.map +1 -1
  219. package/dist/file-system-manager.js +3 -3
  220. package/dist/file-system-manager.js.map +1 -1
  221. package/dist/socket-manager.d.ts +3 -0
  222. package/dist/socket-manager.d.ts.map +1 -1
  223. package/dist/socket-manager.js +23 -0
  224. package/dist/socket-manager.js.map +1 -1
  225. package/dist/util/logger.d.ts +5 -10
  226. package/dist/util/logger.d.ts.map +1 -1
  227. package/dist/util/logger.js +6 -7
  228. package/dist/util/logger.js.map +1 -1
  229. package/dist/util.d.ts.map +1 -1
  230. package/dist/util.js +0 -2
  231. package/dist/util.js.map +1 -1
  232. 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"}