claude-chrome-parallel 2.1.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 (163) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +353 -0
  3. package/dist/cdp/client.d.ts +120 -0
  4. package/dist/cdp/client.d.ts.map +1 -0
  5. package/dist/cdp/client.js +345 -0
  6. package/dist/cdp/client.js.map +1 -0
  7. package/dist/chrome/launcher.d.ts +42 -0
  8. package/dist/chrome/launcher.d.ts.map +1 -0
  9. package/dist/chrome/launcher.js +256 -0
  10. package/dist/chrome/launcher.js.map +1 -0
  11. package/dist/cli/claude-session.d.ts +11 -0
  12. package/dist/cli/claude-session.js +349 -0
  13. package/dist/cli/claude-session.js.map +1 -0
  14. package/dist/cli/index.d.ts +14 -0
  15. package/dist/cli/index.js +562 -0
  16. package/dist/cli/index.js.map +1 -0
  17. package/dist/cli/install.d.ts +16 -0
  18. package/dist/cli/install.js +185 -0
  19. package/dist/cli/install.js.map +1 -0
  20. package/dist/cli/uninstall.d.ts +7 -0
  21. package/dist/cli/uninstall.js +126 -0
  22. package/dist/cli/uninstall.js.map +1 -0
  23. package/dist/config/config-recovery.d.ts +69 -0
  24. package/dist/config/config-recovery.d.ts.map +1 -0
  25. package/dist/config/config-recovery.js +302 -0
  26. package/dist/config/config-recovery.js.map +1 -0
  27. package/dist/config/index.d.ts +6 -0
  28. package/dist/config/index.d.ts.map +1 -0
  29. package/dist/config/index.js +22 -0
  30. package/dist/config/index.js.map +1 -0
  31. package/dist/config/session-isolator.d.ts +76 -0
  32. package/dist/config/session-isolator.d.ts.map +1 -0
  33. package/dist/config/session-isolator.js +268 -0
  34. package/dist/config/session-isolator.js.map +1 -0
  35. package/dist/index.d.ts +10 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +118 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/master/index.d.ts +18 -0
  40. package/dist/master/index.d.ts.map +1 -0
  41. package/dist/master/index.js +75 -0
  42. package/dist/master/index.js.map +1 -0
  43. package/dist/master/ipc-server.d.ts +21 -0
  44. package/dist/master/ipc-server.d.ts.map +1 -0
  45. package/dist/master/ipc-server.js +175 -0
  46. package/dist/master/ipc-server.js.map +1 -0
  47. package/dist/master/request-handler.d.ts +17 -0
  48. package/dist/master/request-handler.d.ts.map +1 -0
  49. package/dist/master/request-handler.js +134 -0
  50. package/dist/master/request-handler.js.map +1 -0
  51. package/dist/master/session-registry.d.ts +120 -0
  52. package/dist/master/session-registry.d.ts.map +1 -0
  53. package/dist/master/session-registry.js +247 -0
  54. package/dist/master/session-registry.js.map +1 -0
  55. package/dist/mcp-server.d.ts +69 -0
  56. package/dist/mcp-server.d.ts.map +1 -0
  57. package/dist/mcp-server.js +301 -0
  58. package/dist/mcp-server.js.map +1 -0
  59. package/dist/session-manager.d.ts +107 -0
  60. package/dist/session-manager.d.ts.map +1 -0
  61. package/dist/session-manager.js +322 -0
  62. package/dist/session-manager.js.map +1 -0
  63. package/dist/shared/ipc-constants.d.ts +16 -0
  64. package/dist/shared/ipc-constants.d.ts.map +1 -0
  65. package/dist/shared/ipc-constants.js +66 -0
  66. package/dist/shared/ipc-constants.js.map +1 -0
  67. package/dist/shared/ipc-protocol.d.ts +33 -0
  68. package/dist/shared/ipc-protocol.d.ts.map +1 -0
  69. package/dist/shared/ipc-protocol.js +20 -0
  70. package/dist/shared/ipc-protocol.js.map +1 -0
  71. package/dist/tools/computer.d.ts +6 -0
  72. package/dist/tools/computer.d.ts.map +1 -0
  73. package/dist/tools/computer.js +426 -0
  74. package/dist/tools/computer.js.map +1 -0
  75. package/dist/tools/find.d.ts +6 -0
  76. package/dist/tools/find.d.ts.map +1 -0
  77. package/dist/tools/find.js +242 -0
  78. package/dist/tools/find.js.map +1 -0
  79. package/dist/tools/form-input.d.ts +6 -0
  80. package/dist/tools/form-input.d.ts.map +1 -0
  81. package/dist/tools/form-input.js +181 -0
  82. package/dist/tools/form-input.js.map +1 -0
  83. package/dist/tools/index.d.ts +6 -0
  84. package/dist/tools/index.d.ts.map +1 -0
  85. package/dist/tools/index.js +26 -0
  86. package/dist/tools/index.js.map +1 -0
  87. package/dist/tools/javascript.d.ts +6 -0
  88. package/dist/tools/javascript.d.ts.map +1 -0
  89. package/dist/tools/javascript.js +134 -0
  90. package/dist/tools/javascript.js.map +1 -0
  91. package/dist/tools/navigate.d.ts +6 -0
  92. package/dist/tools/navigate.d.ts.map +1 -0
  93. package/dist/tools/navigate.js +155 -0
  94. package/dist/tools/navigate.js.map +1 -0
  95. package/dist/tools/read-page.d.ts +6 -0
  96. package/dist/tools/read-page.d.ts.map +1 -0
  97. package/dist/tools/read-page.js +182 -0
  98. package/dist/tools/read-page.js.map +1 -0
  99. package/dist/tools/tabs-context.d.ts +6 -0
  100. package/dist/tools/tabs-context.d.ts.map +1 -0
  101. package/dist/tools/tabs-context.js +73 -0
  102. package/dist/tools/tabs-context.js.map +1 -0
  103. package/dist/tools/tabs-create.d.ts +6 -0
  104. package/dist/tools/tabs-create.d.ts.map +1 -0
  105. package/dist/tools/tabs-create.js +49 -0
  106. package/dist/tools/tabs-create.js.map +1 -0
  107. package/dist/types/index.d.ts +3 -0
  108. package/dist/types/index.d.ts.map +1 -0
  109. package/dist/types/index.js +19 -0
  110. package/dist/types/index.js.map +1 -0
  111. package/dist/types/mcp.d.ts +54 -0
  112. package/dist/types/mcp.d.ts.map +1 -0
  113. package/dist/types/mcp.js +14 -0
  114. package/dist/types/mcp.js.map +1 -0
  115. package/dist/types/session.d.ts +28 -0
  116. package/dist/types/session.d.ts.map +1 -0
  117. package/dist/types/session.js +6 -0
  118. package/dist/types/session.js.map +1 -0
  119. package/dist/utils/atomic-file.d.ts +50 -0
  120. package/dist/utils/atomic-file.d.ts.map +1 -0
  121. package/dist/utils/atomic-file.js +217 -0
  122. package/dist/utils/atomic-file.js.map +1 -0
  123. package/dist/utils/index.d.ts +6 -0
  124. package/dist/utils/index.d.ts.map +1 -0
  125. package/dist/utils/index.js +22 -0
  126. package/dist/utils/index.js.map +1 -0
  127. package/dist/utils/json-validator.d.ts +40 -0
  128. package/dist/utils/json-validator.d.ts.map +1 -0
  129. package/dist/utils/json-validator.js +295 -0
  130. package/dist/utils/json-validator.js.map +1 -0
  131. package/dist/utils/ref-id-manager.d.ts +26 -0
  132. package/dist/utils/ref-id-manager.d.ts.map +1 -0
  133. package/dist/utils/ref-id-manager.js +81 -0
  134. package/dist/utils/ref-id-manager.js.map +1 -0
  135. package/dist/utils/request-queue.d.ts +37 -0
  136. package/dist/utils/request-queue.d.ts.map +1 -0
  137. package/dist/utils/request-queue.js +110 -0
  138. package/dist/utils/request-queue.js.map +1 -0
  139. package/dist/worker/auto-master.d.ts +24 -0
  140. package/dist/worker/auto-master.d.ts.map +1 -0
  141. package/dist/worker/auto-master.js +135 -0
  142. package/dist/worker/auto-master.js.map +1 -0
  143. package/dist/worker/index.d.ts +25 -0
  144. package/dist/worker/index.d.ts.map +1 -0
  145. package/dist/worker/index.js +93 -0
  146. package/dist/worker/index.js.map +1 -0
  147. package/dist/worker/ipc-client.d.ts +26 -0
  148. package/dist/worker/ipc-client.d.ts.map +1 -0
  149. package/dist/worker/ipc-client.js +211 -0
  150. package/dist/worker/ipc-client.js.map +1 -0
  151. package/dist/worker/remote-session-manager.d.ts +114 -0
  152. package/dist/worker/remote-session-manager.d.ts.map +1 -0
  153. package/dist/worker/remote-session-manager.js +151 -0
  154. package/dist/worker/remote-session-manager.js.map +1 -0
  155. package/dist/worker/tools.d.ts +7 -0
  156. package/dist/worker/tools.d.ts.map +1 -0
  157. package/dist/worker/tools.js +340 -0
  158. package/dist/worker/tools.js.map +1 -0
  159. package/dist/worker/worker-mcp-server.d.ts +70 -0
  160. package/dist/worker/worker-mcp-server.d.ts.map +1 -0
  161. package/dist/worker/worker-mcp-server.js +295 -0
  162. package/dist/worker/worker-mcp-server.js.map +1 -0
  163. package/package.json +73 -0
@@ -0,0 +1,340 @@
1
+ "use strict";
2
+ /**
3
+ * Worker Tools - MCP tools that work with RemoteSessionManager
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.setServerInstance = setServerInstance;
7
+ exports.registerWorkerTools = registerWorkerTools;
8
+ // Get session manager from the server context
9
+ let serverInstance = null;
10
+ function setServerInstance(server) {
11
+ serverInstance = server;
12
+ }
13
+ function getSessionManager() {
14
+ if (!serverInstance) {
15
+ throw new Error('Server instance not set');
16
+ }
17
+ return serverInstance.getSessionManager();
18
+ }
19
+ // ============= Navigate Tool =============
20
+ const navigateDefinition = {
21
+ name: 'navigate',
22
+ description: 'Navigate to a URL, or go forward/back in browser history.',
23
+ inputSchema: {
24
+ type: 'object',
25
+ properties: {
26
+ tabId: { type: 'string', description: 'Tab ID to navigate' },
27
+ url: { type: 'string', description: 'URL to navigate to, or "back"/"forward"' },
28
+ },
29
+ required: ['url', 'tabId'],
30
+ },
31
+ };
32
+ const navigateHandler = async (sessionId, args) => {
33
+ const tabId = args.tabId;
34
+ const url = args.url;
35
+ const sm = getSessionManager();
36
+ try {
37
+ if (url === 'back' || url === 'forward') {
38
+ await sm.evaluate(sessionId, tabId, url === 'back' ? 'history.back()' : 'history.forward()');
39
+ return { content: [{ type: 'text', text: `Navigated ${url}` }] };
40
+ }
41
+ let targetUrl = url;
42
+ if (!targetUrl.startsWith('http://') && !targetUrl.startsWith('https://')) {
43
+ targetUrl = 'https://' + targetUrl;
44
+ }
45
+ await sm.navigate(sessionId, tabId, targetUrl);
46
+ return { content: [{ type: 'text', text: `Navigated to ${targetUrl}` }] };
47
+ }
48
+ catch (error) {
49
+ return { content: [{ type: 'text', text: `Error: ${error.message}` }], isError: true };
50
+ }
51
+ };
52
+ // ============= Tabs Context Tool =============
53
+ const tabsContextDefinition = {
54
+ name: 'tabs_context_mcp',
55
+ description: 'Get context information about available tabs',
56
+ inputSchema: {
57
+ type: 'object',
58
+ properties: {
59
+ createIfEmpty: { type: 'boolean', description: 'Create a new tab if none exist' },
60
+ },
61
+ },
62
+ };
63
+ const tabsContextHandler = async (sessionId, args) => {
64
+ const createIfEmpty = args.createIfEmpty;
65
+ const sm = getSessionManager();
66
+ try {
67
+ let targets = await sm.listTargets(sessionId);
68
+ if (targets.length === 0 && createIfEmpty) {
69
+ const newTarget = await sm.createTarget(sessionId);
70
+ targets = [newTarget];
71
+ }
72
+ return {
73
+ content: [{
74
+ type: 'text',
75
+ text: JSON.stringify({
76
+ sessionId,
77
+ tabs: targets.map(t => ({ id: t.targetId, url: t.url, title: t.title })),
78
+ }, null, 2),
79
+ }],
80
+ };
81
+ }
82
+ catch (error) {
83
+ return { content: [{ type: 'text', text: `Error: ${error.message}` }], isError: true };
84
+ }
85
+ };
86
+ // ============= Tabs Create Tool =============
87
+ const tabsCreateDefinition = {
88
+ name: 'tabs_create_mcp',
89
+ description: 'Create a new tab',
90
+ inputSchema: {
91
+ type: 'object',
92
+ properties: {
93
+ url: { type: 'string', description: 'Optional URL to navigate to' },
94
+ },
95
+ },
96
+ };
97
+ const tabsCreateHandler = async (sessionId, args) => {
98
+ const url = args.url;
99
+ const sm = getSessionManager();
100
+ try {
101
+ const target = await sm.createTarget(sessionId, url);
102
+ return {
103
+ content: [{
104
+ type: 'text',
105
+ text: JSON.stringify({ id: target.targetId, url: target.url, title: target.title }, null, 2),
106
+ }],
107
+ };
108
+ }
109
+ catch (error) {
110
+ return { content: [{ type: 'text', text: `Error: ${error.message}` }], isError: true };
111
+ }
112
+ };
113
+ // ============= Computer Tool =============
114
+ const computerDefinition = {
115
+ name: 'computer',
116
+ description: 'Screenshots, mouse/keyboard, scrolling',
117
+ inputSchema: {
118
+ type: 'object',
119
+ properties: {
120
+ tabId: { type: 'string', description: 'Tab ID' },
121
+ action: {
122
+ type: 'string',
123
+ enum: ['screenshot', 'left_click', 'right_click', 'double_click', 'type', 'key', 'scroll', 'wait'],
124
+ },
125
+ coordinate: { type: 'array', items: { type: 'number' }, description: '[x, y] for click/scroll' },
126
+ text: { type: 'string', description: 'Text to type or key to press' },
127
+ scroll_direction: { type: 'string', enum: ['up', 'down', 'left', 'right'] },
128
+ scroll_amount: { type: 'number', minimum: 1, maximum: 10 },
129
+ duration: { type: 'number', minimum: 0, maximum: 30 },
130
+ },
131
+ required: ['tabId', 'action'],
132
+ },
133
+ };
134
+ const computerHandler = async (sessionId, args) => {
135
+ const tabId = args.tabId;
136
+ const action = args.action;
137
+ const sm = getSessionManager();
138
+ try {
139
+ switch (action) {
140
+ case 'screenshot': {
141
+ const base64 = await sm.screenshot(sessionId, tabId, { format: 'png' });
142
+ return { content: [{ type: 'image', data: base64, mimeType: 'image/png' }] };
143
+ }
144
+ case 'left_click':
145
+ case 'right_click':
146
+ case 'double_click': {
147
+ const coord = args.coordinate;
148
+ if (!coord)
149
+ return { content: [{ type: 'text', text: 'coordinate required' }], isError: true };
150
+ await sm.click(sessionId, tabId, coord[0], coord[1]);
151
+ return { content: [{ type: 'text', text: `Clicked at (${coord[0]}, ${coord[1]})` }] };
152
+ }
153
+ case 'type': {
154
+ const text = args.text;
155
+ if (!text)
156
+ return { content: [{ type: 'text', text: 'text required' }], isError: true };
157
+ await sm.type(sessionId, tabId, text);
158
+ return { content: [{ type: 'text', text: `Typed: ${text}` }] };
159
+ }
160
+ case 'key': {
161
+ const key = args.text;
162
+ if (!key)
163
+ return { content: [{ type: 'text', text: 'key required' }], isError: true };
164
+ await sm.evaluate(sessionId, tabId, `
165
+ document.dispatchEvent(new KeyboardEvent('keydown', { key: '${key}' }));
166
+ document.dispatchEvent(new KeyboardEvent('keyup', { key: '${key}' }));
167
+ `);
168
+ return { content: [{ type: 'text', text: `Pressed: ${key}` }] };
169
+ }
170
+ case 'scroll': {
171
+ const dir = args.scroll_direction;
172
+ const amount = args.scroll_amount || 3;
173
+ const coord = args.coordinate || [0, 0];
174
+ await sm.scroll(sessionId, tabId, coord[0], coord[1], dir, amount);
175
+ return { content: [{ type: 'text', text: `Scrolled ${dir} by ${amount}` }] };
176
+ }
177
+ case 'wait': {
178
+ const duration = args.duration || 1;
179
+ await new Promise(r => setTimeout(r, duration * 1000));
180
+ return { content: [{ type: 'text', text: `Waited ${duration}s` }] };
181
+ }
182
+ default:
183
+ return { content: [{ type: 'text', text: `Unknown action: ${action}` }], isError: true };
184
+ }
185
+ }
186
+ catch (error) {
187
+ return { content: [{ type: 'text', text: `Error: ${error.message}` }], isError: true };
188
+ }
189
+ };
190
+ // ============= Read Page Tool =============
191
+ const readPageDefinition = {
192
+ name: 'read_page',
193
+ description: 'Get accessibility tree of the page',
194
+ inputSchema: {
195
+ type: 'object',
196
+ properties: {
197
+ tabId: { type: 'string', description: 'Tab ID' },
198
+ depth: { type: 'number', description: 'Max depth (default: 15)' },
199
+ filter: { type: 'string', enum: ['interactive', 'all'] },
200
+ },
201
+ required: ['tabId'],
202
+ },
203
+ };
204
+ const readPageHandler = async (sessionId, args) => {
205
+ const tabId = args.tabId;
206
+ const sm = getSessionManager();
207
+ try {
208
+ const tree = await sm.getAccessibilityTree(sessionId, tabId);
209
+ // Simple formatting
210
+ const text = JSON.stringify(tree, null, 2).slice(0, 50000);
211
+ return { content: [{ type: 'text', text }] };
212
+ }
213
+ catch (error) {
214
+ return { content: [{ type: 'text', text: `Error: ${error.message}` }], isError: true };
215
+ }
216
+ };
217
+ // ============= Find Tool =============
218
+ const findDefinition = {
219
+ name: 'find',
220
+ description: 'Find elements by natural language description',
221
+ inputSchema: {
222
+ type: 'object',
223
+ properties: {
224
+ tabId: { type: 'string', description: 'Tab ID' },
225
+ query: { type: 'string', description: 'What to find' },
226
+ },
227
+ required: ['tabId', 'query'],
228
+ },
229
+ };
230
+ const findHandler = async (sessionId, args) => {
231
+ const tabId = args.tabId;
232
+ const query = args.query;
233
+ const sm = getSessionManager();
234
+ try {
235
+ // Use JavaScript to find elements
236
+ const result = await sm.evaluate(sessionId, tabId, `
237
+ (function() {
238
+ const query = "${query.replace(/"/g, '\\"')}".toLowerCase();
239
+ const matches = [];
240
+ const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);
241
+ let node;
242
+ while ((node = walker.nextNode()) && matches.length < 20) {
243
+ const text = (node.textContent || '').toLowerCase();
244
+ const ariaLabel = (node.getAttribute('aria-label') || '').toLowerCase();
245
+ const role = node.getAttribute('role') || node.tagName.toLowerCase();
246
+ if (text.includes(query) || ariaLabel.includes(query) || role.includes(query)) {
247
+ const rect = node.getBoundingClientRect();
248
+ if (rect.width > 0 && rect.height > 0) {
249
+ matches.push({
250
+ tag: node.tagName,
251
+ text: (node.textContent || '').slice(0, 50),
252
+ x: Math.round(rect.x + rect.width/2),
253
+ y: Math.round(rect.y + rect.height/2)
254
+ });
255
+ }
256
+ }
257
+ }
258
+ return matches;
259
+ })()
260
+ `);
261
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
262
+ }
263
+ catch (error) {
264
+ return { content: [{ type: 'text', text: `Error: ${error.message}` }], isError: true };
265
+ }
266
+ };
267
+ // ============= Form Input Tool =============
268
+ const formInputDefinition = {
269
+ name: 'form_input',
270
+ description: 'Set form values',
271
+ inputSchema: {
272
+ type: 'object',
273
+ properties: {
274
+ tabId: { type: 'string', description: 'Tab ID' },
275
+ ref: { type: 'string', description: 'Element ref ID' },
276
+ value: { type: 'string', description: 'Value to set' },
277
+ },
278
+ required: ['tabId', 'ref', 'value'],
279
+ },
280
+ };
281
+ const formInputHandler = async (sessionId, args) => {
282
+ const tabId = args.tabId;
283
+ const value = args.value;
284
+ const sm = getSessionManager();
285
+ try {
286
+ // For now, use a simple approach with focused element
287
+ await sm.evaluate(sessionId, tabId, `
288
+ const el = document.activeElement;
289
+ if (el && (el.tagName === 'INPUT' || el.tagName === 'TEXTAREA')) {
290
+ el.value = "${value.replace(/"/g, '\\"')}";
291
+ el.dispatchEvent(new Event('input', { bubbles: true }));
292
+ el.dispatchEvent(new Event('change', { bubbles: true }));
293
+ }
294
+ `);
295
+ return { content: [{ type: 'text', text: `Set value: ${value}` }] };
296
+ }
297
+ catch (error) {
298
+ return { content: [{ type: 'text', text: `Error: ${error.message}` }], isError: true };
299
+ }
300
+ };
301
+ // ============= JavaScript Tool =============
302
+ const javascriptDefinition = {
303
+ name: 'javascript_tool',
304
+ description: 'Execute JavaScript in page context',
305
+ inputSchema: {
306
+ type: 'object',
307
+ properties: {
308
+ tabId: { type: 'string', description: 'Tab ID' },
309
+ text: { type: 'string', description: 'JavaScript code' },
310
+ },
311
+ required: ['tabId', 'text'],
312
+ },
313
+ };
314
+ const javascriptHandler = async (sessionId, args) => {
315
+ const tabId = args.tabId;
316
+ const code = args.text;
317
+ const sm = getSessionManager();
318
+ try {
319
+ const result = await sm.evaluate(sessionId, tabId, code);
320
+ const output = result === undefined ? 'undefined' : JSON.stringify(result, null, 2);
321
+ return { content: [{ type: 'text', text: output }] };
322
+ }
323
+ catch (error) {
324
+ return { content: [{ type: 'text', text: `Error: ${error.message}` }], isError: true };
325
+ }
326
+ };
327
+ // ============= Register All Tools =============
328
+ function registerWorkerTools(server) {
329
+ setServerInstance(server);
330
+ server.registerTool('navigate', navigateHandler, navigateDefinition);
331
+ server.registerTool('tabs_context_mcp', tabsContextHandler, tabsContextDefinition);
332
+ server.registerTool('tabs_create_mcp', tabsCreateHandler, tabsCreateDefinition);
333
+ server.registerTool('computer', computerHandler, computerDefinition);
334
+ server.registerTool('read_page', readPageHandler, readPageDefinition);
335
+ server.registerTool('find', findHandler, findDefinition);
336
+ server.registerTool('form_input', formInputHandler, formInputDefinition);
337
+ server.registerTool('javascript_tool', javascriptHandler, javascriptDefinition);
338
+ console.error('[WorkerTools] Registered 8 tools');
339
+ }
340
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/worker/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Worker MCP Server - MCP Server that uses RemoteSessionManager
3
+ * This wraps the existing MCP server infrastructure but connects to Master for Chrome operations
4
+ */
5
+ import { RemoteSessionManager } from './remote-session-manager';
6
+ import { MCPRequest, MCPResponse, MCPToolDefinition, ToolHandler } from '../types/mcp';
7
+ export declare class WorkerMCPServer {
8
+ private tools;
9
+ private sessionManager;
10
+ private rl;
11
+ private currentSessionId;
12
+ constructor(sessionManager: RemoteSessionManager);
13
+ /**
14
+ * Register a tool
15
+ */
16
+ registerTool(name: string, handler: ToolHandler, definition: MCPToolDefinition): void;
17
+ /**
18
+ * Start the stdio server
19
+ */
20
+ start(): void;
21
+ /**
22
+ * Send response to stdout
23
+ */
24
+ private sendResponse;
25
+ /**
26
+ * Handle incoming MCP request
27
+ */
28
+ handleRequest(request: MCPRequest): Promise<MCPResponse>;
29
+ /**
30
+ * Handle initialize request
31
+ */
32
+ private handleInitialize;
33
+ /**
34
+ * Handle tools/list request
35
+ */
36
+ private handleToolsList;
37
+ /**
38
+ * Handle tools/call request
39
+ */
40
+ private handleToolsCall;
41
+ /**
42
+ * Handle sessions/list request
43
+ */
44
+ private handleSessionsList;
45
+ /**
46
+ * Handle sessions/create request
47
+ */
48
+ private handleSessionsCreate;
49
+ /**
50
+ * Handle sessions/delete request
51
+ */
52
+ private handleSessionsDelete;
53
+ /**
54
+ * Create an error response
55
+ */
56
+ private errorResponse;
57
+ /**
58
+ * Get the session manager
59
+ */
60
+ getSessionManager(): RemoteSessionManager;
61
+ /**
62
+ * Get current session ID
63
+ */
64
+ getCurrentSessionId(): string | null;
65
+ /**
66
+ * Stop the server
67
+ */
68
+ stop(): void;
69
+ }
70
+ //# sourceMappingURL=worker-mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-mcp-server.d.ts","sourceRoot":"","sources":["../../src/worker/worker-mcp-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EACL,UAAU,EACV,WAAW,EAGX,iBAAiB,EACjB,WAAW,EAGZ,MAAM,cAAc,CAAC;AAEtB,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,EAAE,CAAmC;IAC7C,OAAO,CAAC,gBAAgB,CAAuB;gBAEnC,cAAc,EAAE,oBAAoB;IAIhD;;OAEG;IACH,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,iBAAiB,GAC5B,IAAI;IAIP;;OAEG;IACH,KAAK,IAAI,IAAI;IAqCb;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAkD9D;;OAEG;YACW,gBAAgB;IAiB9B;;OAEG;YACW,eAAe;IAQ7B;;OAEG;YACW,eAAe;IAuC7B;;OAEG;YACW,kBAAkB;IAYhC;;OAEG;YACW,oBAAoB;IAgBlC;;OAEG;YACW,oBAAoB;IAsBlC;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;OAEG;IACH,iBAAiB,IAAI,oBAAoB;IAIzC;;OAEG;IACH,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,IAAI,IAAI,IAAI;CAMb"}