@superblocksteam/vite-plugin-file-sync 2.0.67 → 2.0.68-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/dist/ai-service/agent/tools/apis/analysis.d.ts.map +1 -1
  2. package/dist/ai-service/agent/tools/apis/analysis.js +4 -0
  3. package/dist/ai-service/agent/tools/apis/analysis.js.map +1 -1
  4. package/dist/ai-service/agent/tools/apis/api-executor.d.ts +9 -1
  5. package/dist/ai-service/agent/tools/apis/api-executor.d.ts.map +1 -1
  6. package/dist/ai-service/agent/tools/apis/api-executor.js +4 -1
  7. package/dist/ai-service/agent/tools/apis/api-executor.js.map +1 -1
  8. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts +1 -0
  9. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts.map +1 -1
  10. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js +1 -1
  11. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js.map +1 -1
  12. package/dist/ai-service/agent/tools/apis/test-api.d.ts +5 -0
  13. package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
  14. package/dist/ai-service/agent/tools/apis/test-api.js +37 -18
  15. package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
  16. package/dist/ai-service/agent/tools/build-delete-file.d.ts.map +1 -1
  17. package/dist/ai-service/agent/tools/build-delete-file.js +29 -0
  18. package/dist/ai-service/agent/tools/build-delete-file.js.map +1 -1
  19. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts.map +1 -1
  20. package/dist/ai-service/agent/tools/integrations/execute-request.js +5 -4
  21. package/dist/ai-service/agent/tools/integrations/execute-request.js.map +1 -1
  22. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  23. package/dist/ai-service/agent/tools.js +17 -6
  24. package/dist/ai-service/agent/tools.js.map +1 -1
  25. package/dist/ai-service/agent/tools2/entity-permissions.d.ts +23 -20
  26. package/dist/ai-service/agent/tools2/entity-permissions.d.ts.map +1 -1
  27. package/dist/ai-service/agent/tools2/entity-permissions.js +15 -11
  28. package/dist/ai-service/agent/tools2/entity-permissions.js.map +1 -1
  29. package/dist/ai-service/agent/tools2/example.js +2 -2
  30. package/dist/ai-service/agent/tools2/example.js.map +1 -1
  31. package/dist/ai-service/agent/tools2/index.d.ts +1 -1
  32. package/dist/ai-service/agent/tools2/index.d.ts.map +1 -1
  33. package/dist/ai-service/agent/tools2/index.js +1 -1
  34. package/dist/ai-service/agent/tools2/index.js.map +1 -1
  35. package/dist/ai-service/agent/tools2/registry.d.ts +4 -4
  36. package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
  37. package/dist/ai-service/agent/tools2/registry.js +42 -29
  38. package/dist/ai-service/agent/tools2/registry.js.map +1 -1
  39. package/dist/ai-service/agent/tools2/tools/read.d.ts +1 -1
  40. package/dist/ai-service/agent/tools2/types.d.ts +36 -15
  41. package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
  42. package/dist/ai-service/agent/tools2/types.js.map +1 -1
  43. package/dist/ai-service/chat/chat-session-store.d.ts +5 -7
  44. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  45. package/dist/ai-service/chat/chat-session-store.js +36 -17
  46. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  47. package/dist/ai-service/chat/extract-history.d.ts +0 -85
  48. package/dist/ai-service/chat/extract-history.d.ts.map +1 -1
  49. package/dist/ai-service/chat/extract-history.js +3 -239
  50. package/dist/ai-service/chat/extract-history.js.map +1 -1
  51. package/dist/ai-service/index.d.ts +26 -4
  52. package/dist/ai-service/index.d.ts.map +1 -1
  53. package/dist/ai-service/index.js +125 -4
  54. package/dist/ai-service/index.js.map +1 -1
  55. package/dist/ai-service/judge/debug-browser.d.ts +8 -0
  56. package/dist/ai-service/judge/debug-browser.d.ts.map +1 -0
  57. package/dist/ai-service/judge/debug-browser.js +79 -0
  58. package/dist/ai-service/judge/debug-browser.js.map +1 -0
  59. package/dist/ai-service/judge/index.d.ts +12 -0
  60. package/dist/ai-service/judge/index.d.ts.map +1 -0
  61. package/dist/ai-service/judge/index.js +11 -0
  62. package/dist/ai-service/judge/index.js.map +1 -0
  63. package/dist/ai-service/judge/integration/mcp-client.d.ts +82 -0
  64. package/dist/ai-service/judge/integration/mcp-client.d.ts.map +1 -0
  65. package/dist/ai-service/judge/integration/mcp-client.js +276 -0
  66. package/dist/ai-service/judge/integration/mcp-client.js.map +1 -0
  67. package/dist/ai-service/judge/integration/playwright-bridge.d.ts +142 -0
  68. package/dist/ai-service/judge/integration/playwright-bridge.d.ts.map +1 -0
  69. package/dist/ai-service/judge/integration/playwright-bridge.js +217 -0
  70. package/dist/ai-service/judge/integration/playwright-bridge.js.map +1 -0
  71. package/dist/ai-service/judge/judge-eval-http.d.ts +3 -0
  72. package/dist/ai-service/judge/judge-eval-http.d.ts.map +1 -0
  73. package/dist/ai-service/judge/judge-eval-http.js +541 -0
  74. package/dist/ai-service/judge/judge-eval-http.js.map +1 -0
  75. package/dist/ai-service/judge/judge-eval-service-runner.d.ts +35 -0
  76. package/dist/ai-service/judge/judge-eval-service-runner.d.ts.map +1 -0
  77. package/dist/ai-service/judge/judge-eval-service-runner.js +124 -0
  78. package/dist/ai-service/judge/judge-eval-service-runner.js.map +1 -0
  79. package/dist/ai-service/judge/judge-executor.d.ts +65 -0
  80. package/dist/ai-service/judge/judge-executor.d.ts.map +1 -0
  81. package/dist/ai-service/judge/judge-executor.js +334 -0
  82. package/dist/ai-service/judge/judge-executor.js.map +1 -0
  83. package/dist/ai-service/judge/judge-service.d.ts +161 -0
  84. package/dist/ai-service/judge/judge-service.d.ts.map +1 -0
  85. package/dist/ai-service/judge/judge-service.js +241 -0
  86. package/dist/ai-service/judge/judge-service.js.map +1 -0
  87. package/dist/ai-service/judge/prompts/evaluation-criteria.d.ts +37 -0
  88. package/dist/ai-service/judge/prompts/evaluation-criteria.d.ts.map +1 -0
  89. package/dist/ai-service/judge/prompts/evaluation-criteria.js +283 -0
  90. package/dist/ai-service/judge/prompts/evaluation-criteria.js.map +1 -0
  91. package/dist/ai-service/judge/prompts/system-prompt.d.ts +30 -0
  92. package/dist/ai-service/judge/prompts/system-prompt.d.ts.map +1 -0
  93. package/dist/ai-service/judge/prompts/system-prompt.js +212 -0
  94. package/dist/ai-service/judge/prompts/system-prompt.js.map +1 -0
  95. package/dist/ai-service/judge/storage/csv-storage.d.ts +99 -0
  96. package/dist/ai-service/judge/storage/csv-storage.d.ts.map +1 -0
  97. package/dist/ai-service/judge/storage/csv-storage.js +274 -0
  98. package/dist/ai-service/judge/storage/csv-storage.js.map +1 -0
  99. package/dist/ai-service/judge/storage/index.d.ts +9 -0
  100. package/dist/ai-service/judge/storage/index.d.ts.map +1 -0
  101. package/dist/ai-service/judge/storage/index.js +7 -0
  102. package/dist/ai-service/judge/storage/index.js.map +1 -0
  103. package/dist/ai-service/judge/storage/interface.d.ts +51 -0
  104. package/dist/ai-service/judge/storage/interface.d.ts.map +1 -0
  105. package/dist/ai-service/judge/storage/interface.js +8 -0
  106. package/dist/ai-service/judge/storage/interface.js.map +1 -0
  107. package/dist/ai-service/judge/storage/types.d.ts +54 -0
  108. package/dist/ai-service/judge/storage/types.d.ts.map +1 -0
  109. package/dist/ai-service/judge/storage/types.js +7 -0
  110. package/dist/ai-service/judge/storage/types.js.map +1 -0
  111. package/dist/ai-service/judge/tools/index.d.ts +22 -0
  112. package/dist/ai-service/judge/tools/index.d.ts.map +1 -0
  113. package/dist/ai-service/judge/tools/index.js +29 -0
  114. package/dist/ai-service/judge/tools/index.js.map +1 -0
  115. package/dist/ai-service/judge/tools/playwright-action.d.ts +18 -0
  116. package/dist/ai-service/judge/tools/playwright-action.d.ts.map +1 -0
  117. package/dist/ai-service/judge/tools/playwright-action.js +171 -0
  118. package/dist/ai-service/judge/tools/playwright-action.js.map +1 -0
  119. package/dist/ai-service/judge/tools/submit-feedback.d.ts +41 -0
  120. package/dist/ai-service/judge/tools/submit-feedback.d.ts.map +1 -0
  121. package/dist/ai-service/judge/tools/submit-feedback.js +150 -0
  122. package/dist/ai-service/judge/tools/submit-feedback.js.map +1 -0
  123. package/dist/ai-service/judge/types.d.ts +169 -0
  124. package/dist/ai-service/judge/types.d.ts.map +1 -0
  125. package/dist/ai-service/judge/types.js +8 -0
  126. package/dist/ai-service/judge/types.js.map +1 -0
  127. package/dist/ai-service/llm/context/constants.d.ts +7 -0
  128. package/dist/ai-service/llm/context/constants.d.ts.map +1 -1
  129. package/dist/ai-service/llm/context/constants.js +7 -0
  130. package/dist/ai-service/llm/context/constants.js.map +1 -1
  131. package/dist/ai-service/llm/context/context.d.ts +8 -1
  132. package/dist/ai-service/llm/context/context.d.ts.map +1 -1
  133. package/dist/ai-service/llm/context/context.js +47 -12
  134. package/dist/ai-service/llm/context/context.js.map +1 -1
  135. package/dist/ai-service/llm/context/internal-types.d.ts +1 -0
  136. package/dist/ai-service/llm/context/internal-types.d.ts.map +1 -1
  137. package/dist/ai-service/llm/context/internal-types.js.map +1 -1
  138. package/dist/ai-service/llm/context/manager.d.ts +2 -1
  139. package/dist/ai-service/llm/context/manager.d.ts.map +1 -1
  140. package/dist/ai-service/llm/context/manager.js +2 -1
  141. package/dist/ai-service/llm/context/manager.js.map +1 -1
  142. package/dist/ai-service/llm/context/utils/message-utils.d.ts +10 -0
  143. package/dist/ai-service/llm/context/utils/message-utils.d.ts.map +1 -1
  144. package/dist/ai-service/llm/context/utils/message-utils.js +74 -0
  145. package/dist/ai-service/llm/context/utils/message-utils.js.map +1 -1
  146. package/dist/ai-service/llm/error.d.ts +1 -1
  147. package/dist/ai-service/llm/interaction/adapters/vercel.d.ts.map +1 -1
  148. package/dist/ai-service/llm/interaction/adapters/vercel.js.map +1 -1
  149. package/dist/ai-service/llm/interaction/provider.d.ts +10 -9
  150. package/dist/ai-service/llm/interaction/provider.d.ts.map +1 -1
  151. package/dist/ai-service/llmobs/middleware/stream-text.d.ts +8 -8
  152. package/dist/ai-service/llmobs/middleware/stream-text.d.ts.map +1 -1
  153. package/dist/ai-service/llmobs/middleware/stream-text.js.map +1 -1
  154. package/dist/ai-service/llmobs/tracer.d.ts.map +1 -1
  155. package/dist/ai-service/llmobs/tracer.js +2 -1
  156. package/dist/ai-service/llmobs/tracer.js.map +1 -1
  157. package/dist/ai-service/mcp/embedded-playwright-mcp-server.d.ts +53 -0
  158. package/dist/ai-service/mcp/embedded-playwright-mcp-server.d.ts.map +1 -0
  159. package/dist/ai-service/mcp/embedded-playwright-mcp-server.js +541 -0
  160. package/dist/ai-service/mcp/embedded-playwright-mcp-server.js.map +1 -0
  161. package/dist/ai-service/mcp/playwright-server.d.ts +114 -0
  162. package/dist/ai-service/mcp/playwright-server.d.ts.map +1 -0
  163. package/dist/ai-service/mcp/playwright-server.js +109 -0
  164. package/dist/ai-service/mcp/playwright-server.js.map +1 -0
  165. package/dist/ai-service/state-machine/clark-fsm.d.ts +4 -1
  166. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  167. package/dist/ai-service/state-machine/clark-fsm.js +3 -1
  168. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  169. package/dist/ai-service/state-machine/handlers/idle.d.ts.map +1 -1
  170. package/dist/ai-service/state-machine/handlers/idle.js +3 -1
  171. package/dist/ai-service/state-machine/handlers/idle.js.map +1 -1
  172. package/dist/ai-service/state-machine/handlers/runtime-reviewing.d.ts.map +1 -1
  173. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js +4 -1
  174. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js.map +1 -1
  175. package/dist/ai-service/state-machine/helpers/context-id.d.ts +1 -1
  176. package/dist/ai-service/state-machine/helpers/context-id.d.ts.map +1 -1
  177. package/dist/ai-service/state-machine/helpers/context-id.js +6 -7
  178. package/dist/ai-service/state-machine/helpers/context-id.js.map +1 -1
  179. package/dist/ai-service/state-machine/mocks.d.ts +1 -0
  180. package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
  181. package/dist/ai-service/state-machine/mocks.js +5 -1
  182. package/dist/ai-service/state-machine/mocks.js.map +1 -1
  183. package/dist/server-rpc/client.js +1 -1
  184. package/dist/server-rpc/client.js.map +1 -1
  185. package/dist/socket-manager.d.ts.map +1 -1
  186. package/dist/socket-manager.js +26 -6
  187. package/dist/socket-manager.js.map +1 -1
  188. package/dist/sync-service/index.d.ts +5 -0
  189. package/dist/sync-service/index.d.ts.map +1 -1
  190. package/dist/sync-service/index.js +13 -1
  191. package/dist/sync-service/index.js.map +1 -1
  192. package/package.json +7 -6
@@ -0,0 +1,276 @@
1
+ /**
2
+ * MCP (Model Context Protocol) client for Playwright server integration.
3
+ *
4
+ * Handles communication with the Playwright MCP server to enable
5
+ * browser automation capabilities for the judge system.
6
+ */
7
+ /**
8
+ * MCP client for communicating with Playwright MCP server.
9
+ *
10
+ * Implements the Model Context Protocol to interact with
11
+ * a Playwright automation server for browser testing.
12
+ */
13
+ export class MCPClient {
14
+ serverUrl;
15
+ logger;
16
+ nextId = 1;
17
+ connected = false;
18
+ tools = new Map();
19
+ constructor(serverUrl, logger) {
20
+ this.serverUrl = serverUrl;
21
+ this.logger = logger;
22
+ }
23
+ /**
24
+ * Connects to the MCP server and discovers available tools.
25
+ *
26
+ * @throws Error if connection fails
27
+ */
28
+ async connect() {
29
+ if (this.connected) {
30
+ return;
31
+ }
32
+ try {
33
+ // Discover available tools (skip initialize for simple JSON-RPC servers)
34
+ const tools = await this.listTools();
35
+ for (const tool of tools) {
36
+ this.tools.set(tool.name, tool);
37
+ }
38
+ this.connected = true;
39
+ this.logger.info(`Connected to MCP server at ${this.serverUrl} with ${this.tools.size} tools`);
40
+ }
41
+ catch (error) {
42
+ this.logger.error("Failed to connect to MCP server", {
43
+ error: {
44
+ kind: "MCPConnectionError",
45
+ message: String(error),
46
+ stack: error instanceof Error ? error.stack : undefined,
47
+ },
48
+ });
49
+ throw new Error(`MCP connection failed: ${error}`);
50
+ }
51
+ }
52
+ /**
53
+ * Lists available tools from the MCP server.
54
+ *
55
+ * @returns Array of tool definitions
56
+ */
57
+ async listTools() {
58
+ const response = await this.sendRequest("tools/list", {});
59
+ return response.tools || [];
60
+ }
61
+ /**
62
+ * Calls a tool on the MCP server.
63
+ *
64
+ * @param toolName - Name of the tool to call
65
+ * @param args - Arguments for the tool
66
+ * @returns Tool execution result
67
+ */
68
+ async callTool(toolName, args) {
69
+ if (!this.connected) {
70
+ await this.connect();
71
+ }
72
+ const tool = this.tools.get(toolName);
73
+ if (!tool) {
74
+ throw new Error(`Unknown tool: ${toolName}`);
75
+ }
76
+ try {
77
+ const response = await this.sendRequest("tools/call", {
78
+ name: toolName,
79
+ arguments: args,
80
+ });
81
+ if (response.error) {
82
+ throw new Error(`Tool execution failed: ${response.error.message}`);
83
+ }
84
+ return response.content;
85
+ }
86
+ catch (error) {
87
+ // If the error looks like an import statement error, provide a helpful message
88
+ const errorMsg = String(error);
89
+ if (errorMsg.includes("import") && errorMsg.includes("module")) {
90
+ throw new Error("Browser evaluation failed: Cannot use import/export/require statements in browser context. " +
91
+ "Please use plain JavaScript that can run in a browser console.");
92
+ }
93
+ throw error;
94
+ }
95
+ }
96
+ /**
97
+ * Executes a Playwright action via MCP.
98
+ *
99
+ * @param params - Playwright action parameters
100
+ * @returns Action execution result
101
+ */
102
+ async executePlaywrightAction(params) {
103
+ this.logger.info(`Executing Playwright action ${params.action}, params: ${params.params ? Object.keys(params.params).join(", ") : "none"}`);
104
+ try {
105
+ const toolArgs = {
106
+ action: params.action,
107
+ ...params.params,
108
+ };
109
+ this.logger.info(`Calling playwright_action tool for action: ${params.action}`);
110
+ const result = await this.callTool("playwright_action", toolArgs);
111
+ this.logger.info(`Tool call succeeded for ${params.action}, hasResult: ${!!result}`);
112
+ return {
113
+ success: true,
114
+ data: result,
115
+ };
116
+ }
117
+ catch (error) {
118
+ this.logger.error("Playwright action failed", {
119
+ error: {
120
+ kind: "PlaywrightActionError",
121
+ message: `Action ${params.action} failed: ${String(error)}`,
122
+ stack: error instanceof Error ? error.stack : undefined,
123
+ },
124
+ });
125
+ return {
126
+ success: false,
127
+ error: String(error),
128
+ };
129
+ }
130
+ }
131
+ /**
132
+ * Parses SSE (Server-Sent Events) response text.
133
+ *
134
+ * @param text - Raw SSE response text
135
+ * @param requestId - Expected request ID
136
+ * @returns Parsed MCP response
137
+ */
138
+ parseSSEResponse(text, requestId) {
139
+ // SSE format: lines starting with "data: " contain JSON
140
+ const lines = text.split("\n");
141
+ for (const line of lines) {
142
+ if (line.startsWith("data: ")) {
143
+ const jsonStr = line.substring(6); // Remove "data: " prefix
144
+ try {
145
+ const data = JSON.parse(jsonStr);
146
+ // Verify this response matches our request
147
+ if (data.id === requestId || data.id === null) {
148
+ return data;
149
+ }
150
+ }
151
+ catch {
152
+ // Continue to next line if parsing fails
153
+ }
154
+ }
155
+ }
156
+ // If we didn't find a matching response, throw error
157
+ throw new Error(`No valid JSON-RPC response found in SSE stream for request ${requestId}`);
158
+ }
159
+ /**
160
+ * Sends a request to the MCP server.
161
+ *
162
+ * @param method - RPC method name
163
+ * @param params - Method parameters
164
+ * @returns Server response
165
+ */
166
+ async sendRequest(method, params) {
167
+ const request = {
168
+ jsonrpc: "2.0",
169
+ method,
170
+ params,
171
+ id: this.nextId++,
172
+ };
173
+ try {
174
+ const response = await fetch(this.serverUrl, {
175
+ method: "POST",
176
+ headers: {
177
+ "Content-Type": "application/json",
178
+ Accept: "application/json, text/event-stream",
179
+ },
180
+ body: JSON.stringify(request),
181
+ // Add timeout to prevent hanging if server crashes
182
+ signal: AbortSignal.timeout(30000), // 30 second timeout
183
+ });
184
+ if (!response.ok) {
185
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
186
+ }
187
+ const contentType = response.headers.get("content-type") || "";
188
+ // Handle SSE response
189
+ if (contentType.includes("text/event-stream")) {
190
+ const text = await response.text();
191
+ const data = this.parseSSEResponse(text, request.id);
192
+ if (data.error) {
193
+ throw new Error(data.error.message);
194
+ }
195
+ return data.result;
196
+ }
197
+ // Handle regular JSON response (fallback)
198
+ const data = await response.json();
199
+ if (data.error) {
200
+ throw new Error(data.error.message);
201
+ }
202
+ return data.result;
203
+ }
204
+ catch (error) {
205
+ const errorMsg = String(error);
206
+ // Check for connection issues that might indicate server crash
207
+ if (errorMsg.includes("ECONNREFUSED") ||
208
+ errorMsg.includes("ECONNRESET")) {
209
+ this.logger.error("MCP server connection failed - server may have crashed", {
210
+ error: {
211
+ kind: "MCPServerCrash",
212
+ message: `MCP server appears to be down: ${errorMsg}`,
213
+ stack: error instanceof Error ? error.stack : undefined,
214
+ },
215
+ });
216
+ this.connected = false;
217
+ throw new Error("MCP server connection lost. The server may have crashed due to invalid JavaScript code.");
218
+ }
219
+ // Check for timeout
220
+ if (errorMsg.includes("AbortError") || errorMsg.includes("timeout")) {
221
+ this.logger.error("MCP request timed out", {
222
+ error: {
223
+ kind: "MCPTimeout",
224
+ message: `Method ${method} timed out after 30 seconds`,
225
+ },
226
+ });
227
+ throw new Error("MCP server request timed out. The server may be unresponsive.");
228
+ }
229
+ this.logger.error("MCP request failed", {
230
+ error: {
231
+ kind: "MCPRequestError",
232
+ message: `Method ${method} failed: ${errorMsg}`,
233
+ stack: error instanceof Error ? error.stack : undefined,
234
+ },
235
+ });
236
+ throw error;
237
+ }
238
+ }
239
+ /**
240
+ * Disconnects from the MCP server.
241
+ */
242
+ async disconnect() {
243
+ if (!this.connected) {
244
+ return;
245
+ }
246
+ try {
247
+ // Send disconnect notification if supported
248
+ await this.sendRequest("disconnect", {});
249
+ }
250
+ catch {
251
+ // Ignore disconnect errors
252
+ }
253
+ finally {
254
+ this.connected = false;
255
+ this.tools.clear();
256
+ this.logger.info("Disconnected from MCP server");
257
+ }
258
+ }
259
+ /**
260
+ * Checks if the client is connected.
261
+ *
262
+ * @returns True if connected
263
+ */
264
+ isConnected() {
265
+ return this.connected;
266
+ }
267
+ /**
268
+ * Gets available tool names.
269
+ *
270
+ * @returns Array of tool names
271
+ */
272
+ getAvailableTools() {
273
+ return Array.from(this.tools.keys());
274
+ }
275
+ }
276
+ //# sourceMappingURL=mcp-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../../../src/ai-service/judge/integration/mcp-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Bridge between judge system and Playwright MCP server.
3
+ *
4
+ * Provides a high-level interface for browser automation
5
+ * through the MCP protocol.
6
+ */
7
+ import type { Logger } from "../../../util/logger.js";
8
+ import type { PlaywrightActionParams, PlaywrightActionResult } from "../types.js";
9
+ /**
10
+ * High-level Playwright action parameters.
11
+ */
12
+ export interface PlaywrightAction {
13
+ navigate?: {
14
+ url: string;
15
+ };
16
+ click?: {
17
+ selector: string;
18
+ };
19
+ fill?: {
20
+ selector: string;
21
+ value: string;
22
+ };
23
+ screenshot?: {
24
+ fullPage?: boolean;
25
+ };
26
+ getText?: {
27
+ selector: string;
28
+ };
29
+ waitForSelector?: {
30
+ selector: string;
31
+ timeout?: number;
32
+ };
33
+ evaluate?: {
34
+ script: string;
35
+ };
36
+ getUrl?: Record<string, never>;
37
+ reload?: Record<string, never>;
38
+ }
39
+ /**
40
+ * Bridge to Playwright MCP server for browser automation.
41
+ *
42
+ * Provides a simplified interface for common browser
43
+ * automation tasks used by the judge system.
44
+ */
45
+ export declare class PlaywrightBridge {
46
+ private logger;
47
+ private mcpClient;
48
+ constructor(serverUrl: string, logger: Logger);
49
+ /**
50
+ * Initializes the bridge connection.
51
+ */
52
+ initialize(): Promise<void>;
53
+ /**
54
+ * Navigates to a URL.
55
+ *
56
+ * @param url - Target URL
57
+ * @returns Navigation result
58
+ */
59
+ navigate(url: string): Promise<PlaywrightActionResult>;
60
+ /**
61
+ * Clicks an element.
62
+ *
63
+ * @param selector - Element selector
64
+ * @returns Click result
65
+ */
66
+ click(selector: string): Promise<PlaywrightActionResult>;
67
+ /**
68
+ * Fills an input field.
69
+ *
70
+ * @param selector - Input selector
71
+ * @param value - Value to fill
72
+ * @returns Fill result
73
+ */
74
+ fill(selector: string, value: string): Promise<PlaywrightActionResult>;
75
+ /**
76
+ * Captures a screenshot.
77
+ *
78
+ * @param fullPage - Whether to capture full page
79
+ * @returns Screenshot result with base64 data
80
+ */
81
+ screenshot(fullPage?: boolean): Promise<PlaywrightActionResult>;
82
+ /**
83
+ * Gets text content from an element.
84
+ *
85
+ * @param selector - Element selector
86
+ * @returns Text content
87
+ */
88
+ getText(selector: string): Promise<PlaywrightActionResult>;
89
+ /**
90
+ * Waits for a selector to appear.
91
+ *
92
+ * @param selector - Element selector
93
+ * @param timeout - Wait timeout in milliseconds
94
+ * @returns Wait result
95
+ */
96
+ waitForSelector(selector: string, timeout?: number): Promise<PlaywrightActionResult>;
97
+ /**
98
+ * Evaluates JavaScript in the page context.
99
+ *
100
+ * @param script - JavaScript to execute
101
+ * @returns Evaluation result
102
+ */
103
+ evaluate(script: string): Promise<PlaywrightActionResult>;
104
+ /**
105
+ * Gets the current page URL.
106
+ *
107
+ * @returns Current URL
108
+ */
109
+ getUrl(): Promise<PlaywrightActionResult>;
110
+ /**
111
+ * Reloads the current page.
112
+ *
113
+ * @returns Reload result
114
+ */
115
+ reload(): Promise<PlaywrightActionResult>;
116
+ /**
117
+ * Executes a generic Playwright action.
118
+ *
119
+ * @param action - Action name
120
+ * @param params - Action parameters
121
+ * @returns Action result
122
+ */
123
+ executeAction(action: PlaywrightActionParams["action"], params: Record<string, any>): Promise<PlaywrightActionResult>;
124
+ /**
125
+ * Executes multiple actions in sequence.
126
+ *
127
+ * @param actions - Array of actions to execute
128
+ * @returns Results of all actions
129
+ */
130
+ executeSequence(actions: PlaywrightAction[]): Promise<PlaywrightActionResult[]>;
131
+ /**
132
+ * Cleans up the bridge connection.
133
+ */
134
+ cleanup(): Promise<void>;
135
+ /**
136
+ * Checks if the bridge is connected.
137
+ *
138
+ * @returns True if connected
139
+ */
140
+ isConnected(): boolean;
141
+ }
142
+ //# sourceMappingURL=playwright-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwright-bridge.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/judge/integration/playwright-bridge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B,KAAK,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,IAAI,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,UAAU,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACpC,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,eAAe,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAChC;AAED;;;;;GAKG;AACH,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,MAAM;IAJhB,OAAO,CAAC,SAAS,CAAY;gBAG3B,SAAS,EAAE,MAAM,EACT,MAAM,EAAE,MAAM;IAKxB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;;;;OAKG;IACG,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI5D;;;;;OAKG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI9D;;;;;;OAMG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI5E;;;;;OAKG;IACG,UAAU,CAAC,QAAQ,UAAQ,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAInE;;;;;OAKG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAIhE;;;;;;OAMG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,SAAQ,GACd,OAAO,CAAC,sBAAsB,CAAC;IAIlC;;;;;OAKG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA4B/D;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAI/C;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAI/C;;;;;;OAMG;IACG,aAAa,CACjB,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,EACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,OAAO,CAAC,sBAAsB,CAAC;IA2BlC;;;;;OAKG;IACG,eAAe,CACnB,OAAO,EAAE,gBAAgB,EAAE,GAC1B,OAAO,CAAC,sBAAsB,EAAE,CAAC;IA6CpC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;;;OAIG;IACH,WAAW,IAAI,OAAO;CAGvB"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Bridge between judge system and Playwright MCP server.
3
+ *
4
+ * Provides a high-level interface for browser automation
5
+ * through the MCP protocol.
6
+ */
7
+ import { MCPClient } from "./mcp-client.js";
8
+ /**
9
+ * Bridge to Playwright MCP server for browser automation.
10
+ *
11
+ * Provides a simplified interface for common browser
12
+ * automation tasks used by the judge system.
13
+ */
14
+ export class PlaywrightBridge {
15
+ logger;
16
+ mcpClient;
17
+ constructor(serverUrl, logger) {
18
+ this.logger = logger;
19
+ this.mcpClient = new MCPClient(serverUrl, logger);
20
+ }
21
+ /**
22
+ * Initializes the bridge connection.
23
+ */
24
+ async initialize() {
25
+ await this.mcpClient.connect();
26
+ this.logger.info("Playwright bridge initialized");
27
+ }
28
+ /**
29
+ * Navigates to a URL.
30
+ *
31
+ * @param url - Target URL
32
+ * @returns Navigation result
33
+ */
34
+ async navigate(url) {
35
+ return this.executeAction("navigate", { url });
36
+ }
37
+ /**
38
+ * Clicks an element.
39
+ *
40
+ * @param selector - Element selector
41
+ * @returns Click result
42
+ */
43
+ async click(selector) {
44
+ return this.executeAction("click", { selector });
45
+ }
46
+ /**
47
+ * Fills an input field.
48
+ *
49
+ * @param selector - Input selector
50
+ * @param value - Value to fill
51
+ * @returns Fill result
52
+ */
53
+ async fill(selector, value) {
54
+ return this.executeAction("fill", { selector, value });
55
+ }
56
+ /**
57
+ * Captures a screenshot.
58
+ *
59
+ * @param fullPage - Whether to capture full page
60
+ * @returns Screenshot result with base64 data
61
+ */
62
+ async screenshot(fullPage = false) {
63
+ return this.executeAction("screenshot", { fullPage });
64
+ }
65
+ /**
66
+ * Gets text content from an element.
67
+ *
68
+ * @param selector - Element selector
69
+ * @returns Text content
70
+ */
71
+ async getText(selector) {
72
+ return this.executeAction("getText", { selector });
73
+ }
74
+ /**
75
+ * Waits for a selector to appear.
76
+ *
77
+ * @param selector - Element selector
78
+ * @param timeout - Wait timeout in milliseconds
79
+ * @returns Wait result
80
+ */
81
+ async waitForSelector(selector, timeout = 30000) {
82
+ return this.executeAction("waitForSelector", { selector, timeout });
83
+ }
84
+ /**
85
+ * Evaluates JavaScript in the page context.
86
+ *
87
+ * @param script - JavaScript to execute
88
+ * @returns Evaluation result
89
+ */
90
+ async evaluate(script) {
91
+ this.logger.info(`Evaluate called - length: ${script.length}, preview: ${script.substring(0, 100)}`);
92
+ // Validate script doesn't contain module syntax
93
+ if (script.includes("import ") ||
94
+ script.includes("export ") ||
95
+ script.includes("require(")) {
96
+ this.logger.warn("Script contains module syntax", `Script preview: ${script.substring(0, 200)}`);
97
+ // Return error to the model instead of throwing
98
+ return {
99
+ success: false,
100
+ error: "Cannot use import/export/require statements in browser evaluate context. Use plain JavaScript only. For example, use 'document.querySelector' instead of importing libraries.",
101
+ };
102
+ }
103
+ this.logger.info("Script validation passed, executing action");
104
+ return this.executeAction("evaluate", { script });
105
+ }
106
+ /**
107
+ * Gets the current page URL.
108
+ *
109
+ * @returns Current URL
110
+ */
111
+ async getUrl() {
112
+ return this.executeAction("getUrl", {});
113
+ }
114
+ /**
115
+ * Reloads the current page.
116
+ *
117
+ * @returns Reload result
118
+ */
119
+ async reload() {
120
+ return this.executeAction("reload", {});
121
+ }
122
+ /**
123
+ * Executes a generic Playwright action.
124
+ *
125
+ * @param action - Action name
126
+ * @param params - Action parameters
127
+ * @returns Action result
128
+ */
129
+ async executeAction(action, params) {
130
+ this.logger.info(`Executing action: ${action}, params: ${Object.keys(params).join(", ")}`);
131
+ const actionParams = {
132
+ action,
133
+ params,
134
+ };
135
+ this.logger.info("Calling MCP client");
136
+ const result = await this.mcpClient.executePlaywrightAction(actionParams);
137
+ if (!result.success) {
138
+ this.logger.error("Action failed", {
139
+ error: {
140
+ kind: "PlaywrightActionError",
141
+ message: `Action ${action} failed: ${result.error || "Unknown error"}`,
142
+ },
143
+ });
144
+ }
145
+ else {
146
+ this.logger.info(`Action succeeded: ${action}`);
147
+ }
148
+ return result;
149
+ }
150
+ /**
151
+ * Executes multiple actions in sequence.
152
+ *
153
+ * @param actions - Array of actions to execute
154
+ * @returns Results of all actions
155
+ */
156
+ async executeSequence(actions) {
157
+ const results = [];
158
+ for (const action of actions) {
159
+ let result;
160
+ if (action.navigate) {
161
+ result = await this.navigate(action.navigate.url);
162
+ }
163
+ else if (action.click) {
164
+ result = await this.click(action.click.selector);
165
+ }
166
+ else if (action.fill) {
167
+ result = await this.fill(action.fill.selector, action.fill.value);
168
+ }
169
+ else if (action.screenshot) {
170
+ result = await this.screenshot(action.screenshot.fullPage);
171
+ }
172
+ else if (action.getText) {
173
+ result = await this.getText(action.getText.selector);
174
+ }
175
+ else if (action.waitForSelector) {
176
+ result = await this.waitForSelector(action.waitForSelector.selector, action.waitForSelector.timeout);
177
+ }
178
+ else if (action.evaluate) {
179
+ result = await this.evaluate(action.evaluate.script);
180
+ }
181
+ else if (action.getUrl) {
182
+ result = await this.getUrl();
183
+ }
184
+ else if (action.reload) {
185
+ result = await this.reload();
186
+ }
187
+ else {
188
+ result = {
189
+ success: false,
190
+ error: "Unknown action type",
191
+ };
192
+ }
193
+ results.push(result);
194
+ // Stop sequence on failure
195
+ if (!result.success) {
196
+ break;
197
+ }
198
+ }
199
+ return results;
200
+ }
201
+ /**
202
+ * Cleans up the bridge connection.
203
+ */
204
+ async cleanup() {
205
+ await this.mcpClient.disconnect();
206
+ this.logger.info("Playwright bridge cleaned up");
207
+ }
208
+ /**
209
+ * Checks if the bridge is connected.
210
+ *
211
+ * @returns True if connected
212
+ */
213
+ isConnected() {
214
+ return this.mcpClient.isConnected();
215
+ }
216
+ }
217
+ //# sourceMappingURL=playwright-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwright-bridge.js","sourceRoot":"","sources":["../../../../src/ai-service/judge/integration/playwright-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=judge-eval-http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"judge-eval-http.d.ts","sourceRoot":"","sources":["../../../src/ai-service/judge/judge-eval-http.ts"],"names":[],"mappings":""}