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,155 @@
1
+ "use strict";
2
+ /**
3
+ * Navigate Tool - Navigate to URLs
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerNavigateTool = registerNavigateTool;
7
+ const session_manager_1 = require("../session-manager");
8
+ const definition = {
9
+ name: 'navigate',
10
+ description: 'Navigate to a URL, or go forward/back in browser history.',
11
+ inputSchema: {
12
+ type: 'object',
13
+ properties: {
14
+ tabId: {
15
+ type: 'string',
16
+ description: 'Tab ID to navigate',
17
+ },
18
+ url: {
19
+ type: 'string',
20
+ description: 'The URL to navigate to. Use "forward" to go forward in history or "back" to go back.',
21
+ },
22
+ },
23
+ required: ['url', 'tabId'],
24
+ },
25
+ };
26
+ const handler = async (sessionId, args) => {
27
+ const tabId = args.tabId;
28
+ const url = args.url;
29
+ const sessionManager = (0, session_manager_1.getSessionManager)();
30
+ if (!tabId) {
31
+ return {
32
+ content: [{ type: 'text', text: 'Error: tabId is required' }],
33
+ isError: true,
34
+ };
35
+ }
36
+ if (!url) {
37
+ return {
38
+ content: [{ type: 'text', text: 'Error: url is required' }],
39
+ isError: true,
40
+ };
41
+ }
42
+ try {
43
+ const page = await sessionManager.getPage(sessionId, tabId);
44
+ if (!page) {
45
+ return {
46
+ content: [{ type: 'text', text: `Error: Tab ${tabId} not found` }],
47
+ isError: true,
48
+ };
49
+ }
50
+ // Handle history navigation
51
+ if (url === 'back') {
52
+ await page.goBack({ waitUntil: 'domcontentloaded' });
53
+ return {
54
+ content: [
55
+ {
56
+ type: 'text',
57
+ text: JSON.stringify({
58
+ action: 'back',
59
+ url: page.url(),
60
+ title: await page.title(),
61
+ }),
62
+ },
63
+ ],
64
+ };
65
+ }
66
+ if (url === 'forward') {
67
+ await page.goForward({ waitUntil: 'domcontentloaded' });
68
+ return {
69
+ content: [
70
+ {
71
+ type: 'text',
72
+ text: JSON.stringify({
73
+ action: 'forward',
74
+ url: page.url(),
75
+ title: await page.title(),
76
+ }),
77
+ },
78
+ ],
79
+ };
80
+ }
81
+ // Normalize URL
82
+ let targetUrl = url;
83
+ if (!targetUrl.startsWith('http://') && !targetUrl.startsWith('https://')) {
84
+ targetUrl = 'https://' + targetUrl;
85
+ }
86
+ // Validate URL
87
+ try {
88
+ const parsedUrl = new URL(targetUrl);
89
+ // Only allow http and https protocols
90
+ if (!['http:', 'https:'].includes(parsedUrl.protocol)) {
91
+ return {
92
+ content: [
93
+ {
94
+ type: 'text',
95
+ text: `Error: Invalid protocol "${parsedUrl.protocol}". Only http and https are allowed.`,
96
+ },
97
+ ],
98
+ isError: true,
99
+ };
100
+ }
101
+ // Check for valid hostname
102
+ if (!parsedUrl.hostname || parsedUrl.hostname.length === 0) {
103
+ return {
104
+ content: [
105
+ {
106
+ type: 'text',
107
+ text: 'Error: Invalid URL - missing hostname',
108
+ },
109
+ ],
110
+ isError: true,
111
+ };
112
+ }
113
+ }
114
+ catch (urlError) {
115
+ return {
116
+ content: [
117
+ {
118
+ type: 'text',
119
+ text: `Error: Invalid URL format - ${urlError instanceof Error ? urlError.message : 'malformed URL'}`,
120
+ },
121
+ ],
122
+ isError: true,
123
+ };
124
+ }
125
+ // Navigate with proper wait
126
+ await page.goto(targetUrl, { waitUntil: 'domcontentloaded', timeout: 30000 });
127
+ return {
128
+ content: [
129
+ {
130
+ type: 'text',
131
+ text: JSON.stringify({
132
+ action: 'navigate',
133
+ url: page.url(),
134
+ title: await page.title(),
135
+ }),
136
+ },
137
+ ],
138
+ };
139
+ }
140
+ catch (error) {
141
+ return {
142
+ content: [
143
+ {
144
+ type: 'text',
145
+ text: `Navigation error: ${error instanceof Error ? error.message : String(error)}`,
146
+ },
147
+ ],
148
+ isError: true,
149
+ };
150
+ }
151
+ };
152
+ function registerNavigateTool(server) {
153
+ server.registerTool('navigate', handler, definition);
154
+ }
155
+ //# sourceMappingURL=navigate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigate.js","sourceRoot":"","sources":["../../src/tools/navigate.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAqKH,oDAEC;AAnKD,wDAAuD;AAEvD,MAAM,UAAU,GAAsB;IACpC,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,2DAA2D;IACxE,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oBAAoB;aAClC;YACD,GAAG,EAAE;gBACH,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,sFAAsF;aACzF;SACF;QACD,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;KAC3B;CACF,CAAC;AAEF,MAAM,OAAO,GAAgB,KAAK,EAChC,SAAiB,EACjB,IAA6B,EACT,EAAE;IACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAe,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAa,CAAC;IAC/B,MAAM,cAAc,GAAG,IAAA,mCAAiB,GAAE,CAAC;IAE3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC;YAC7D,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;YAC3D,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,KAAK,YAAY,EAAE,CAAC;gBAClE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,4BAA4B;QAC5B,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACrD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,MAAM,EAAE,MAAM;4BACd,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;4BACf,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE;yBAC1B,CAAC;qBACH;iBACF;aACF,CAAC;QACJ,CAAC;QAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACxD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,MAAM,EAAE,SAAS;4BACjB,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;4BACf,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE;yBAC1B,CAAC;qBACH;iBACF;aACF,CAAC;QACJ,CAAC;QAED,gBAAgB;QAChB,IAAI,SAAS,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1E,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;QACrC,CAAC;QAED,eAAe;QACf,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;YAErC,sCAAsC;YACtC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtD,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,4BAA4B,SAAS,CAAC,QAAQ,qCAAqC;yBAC1F;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,2BAA2B;YAC3B,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3D,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,uCAAuC;yBAC9C;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,QAAQ,EAAE,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,+BAA+B,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;qBACtG;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,4BAA4B;QAC5B,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAE9E,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,MAAM,EAAE,UAAU;wBAClB,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;wBACf,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE;qBAC1B,CAAC;iBACH;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBACpF;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,SAAgB,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Read Page Tool - Get accessibility tree representation
3
+ */
4
+ import { MCPServer } from '../mcp-server';
5
+ export declare function registerReadPageTool(server: MCPServer): void;
6
+ //# sourceMappingURL=read-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-page.d.ts","sourceRoot":"","sources":["../../src/tools/read-page.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AA2N1C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAE5D"}
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ /**
3
+ * Read Page Tool - Get accessibility tree representation
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerReadPageTool = registerReadPageTool;
7
+ const session_manager_1 = require("../session-manager");
8
+ const ref_id_manager_1 = require("../utils/ref-id-manager");
9
+ const definition = {
10
+ name: 'read_page',
11
+ description: 'Get an accessibility tree representation of elements on the page. Returns element references that can be used with other tools.',
12
+ inputSchema: {
13
+ type: 'object',
14
+ properties: {
15
+ tabId: {
16
+ type: 'string',
17
+ description: 'Tab ID to read from',
18
+ },
19
+ depth: {
20
+ type: 'number',
21
+ description: 'Maximum depth of the tree to traverse (default: 15)',
22
+ },
23
+ filter: {
24
+ type: 'string',
25
+ enum: ['interactive', 'all'],
26
+ description: 'Filter elements: "interactive" for buttons/links/inputs only',
27
+ },
28
+ ref_id: {
29
+ type: 'string',
30
+ description: 'Reference ID of a parent element to read from',
31
+ },
32
+ },
33
+ required: ['tabId'],
34
+ },
35
+ };
36
+ const handler = async (sessionId, args) => {
37
+ const tabId = args.tabId;
38
+ const maxDepth = args.depth || 15;
39
+ const filter = args.filter || 'all';
40
+ const sessionManager = (0, session_manager_1.getSessionManager)();
41
+ const refIdManager = (0, ref_id_manager_1.getRefIdManager)();
42
+ if (!tabId) {
43
+ return {
44
+ content: [{ type: 'text', text: 'Error: tabId is required' }],
45
+ isError: true,
46
+ };
47
+ }
48
+ try {
49
+ const page = await sessionManager.getPage(sessionId, tabId);
50
+ if (!page) {
51
+ return {
52
+ content: [{ type: 'text', text: `Error: Tab ${tabId} not found` }],
53
+ isError: true,
54
+ };
55
+ }
56
+ const cdpClient = sessionManager.getCDPClient();
57
+ // Get the accessibility tree
58
+ const { nodes } = await cdpClient.send(page, 'Accessibility.getFullAXTree', { depth: maxDepth });
59
+ // Clear previous refs for this target
60
+ refIdManager.clearTargetRefs(sessionId, tabId);
61
+ // Build the tree structure
62
+ const nodeMap = new Map();
63
+ for (const node of nodes) {
64
+ nodeMap.set(node.nodeId, node);
65
+ }
66
+ // Interactive roles
67
+ const interactiveRoles = new Set([
68
+ 'button',
69
+ 'link',
70
+ 'textbox',
71
+ 'checkbox',
72
+ 'radio',
73
+ 'combobox',
74
+ 'listbox',
75
+ 'menu',
76
+ 'menuitem',
77
+ 'menuitemcheckbox',
78
+ 'menuitemradio',
79
+ 'option',
80
+ 'searchbox',
81
+ 'slider',
82
+ 'spinbutton',
83
+ 'switch',
84
+ 'tab',
85
+ 'treeitem',
86
+ ]);
87
+ // Format nodes
88
+ const lines = [];
89
+ let charCount = 0;
90
+ const MAX_OUTPUT = 50000;
91
+ function formatNode(node, indent) {
92
+ if (charCount > MAX_OUTPUT)
93
+ return;
94
+ const role = node.role?.value || 'unknown';
95
+ const name = node.name?.value || '';
96
+ const value = node.value?.value || '';
97
+ // Apply filter
98
+ if (filter === 'interactive' && !interactiveRoles.has(role)) {
99
+ // Still process children
100
+ if (node.childIds) {
101
+ for (const childId of node.childIds) {
102
+ const child = nodeMap.get(childId);
103
+ if (child)
104
+ formatNode(child, indent);
105
+ }
106
+ }
107
+ return;
108
+ }
109
+ // Generate ref ID if element has a backend DOM node
110
+ let refId = '';
111
+ if (node.backendDOMNodeId) {
112
+ refId = refIdManager.generateRef(sessionId, tabId, node.backendDOMNodeId, role, name);
113
+ }
114
+ // Build line
115
+ const indentStr = ' '.repeat(indent);
116
+ let line = `${indentStr}[${refId || 'no-ref'}] ${role}`;
117
+ if (name)
118
+ line += `: "${name}"`;
119
+ if (value)
120
+ line += ` = "${value}"`;
121
+ // Add relevant properties
122
+ if (node.properties) {
123
+ const props = [];
124
+ for (const prop of node.properties) {
125
+ if (['focused', 'disabled', 'checked', 'selected', 'expanded'].includes(prop.name)) {
126
+ if (prop.value.value === true) {
127
+ props.push(prop.name);
128
+ }
129
+ }
130
+ }
131
+ if (props.length > 0) {
132
+ line += ` (${props.join(', ')})`;
133
+ }
134
+ }
135
+ lines.push(line);
136
+ charCount += line.length + 1;
137
+ // Process children
138
+ if (node.childIds && indent < maxDepth) {
139
+ for (const childId of node.childIds) {
140
+ const child = nodeMap.get(childId);
141
+ if (child)
142
+ formatNode(child, indent + 1);
143
+ }
144
+ }
145
+ }
146
+ // Start from root nodes
147
+ const rootNodes = nodes.filter((n) => !nodes.some((other) => other.childIds?.includes(n.nodeId)));
148
+ for (const root of rootNodes) {
149
+ formatNode(root, 0);
150
+ }
151
+ const output = lines.join('\n');
152
+ if (charCount > MAX_OUTPUT) {
153
+ return {
154
+ content: [
155
+ {
156
+ type: 'text',
157
+ text: output +
158
+ '\n\n[Output truncated. Use smaller depth or ref_id to focus on specific element.]',
159
+ },
160
+ ],
161
+ };
162
+ }
163
+ return {
164
+ content: [{ type: 'text', text: output }],
165
+ };
166
+ }
167
+ catch (error) {
168
+ return {
169
+ content: [
170
+ {
171
+ type: 'text',
172
+ text: `Read page error: ${error instanceof Error ? error.message : String(error)}`,
173
+ },
174
+ ],
175
+ isError: true,
176
+ };
177
+ }
178
+ };
179
+ function registerReadPageTool(server) {
180
+ server.registerTool('read_page', handler, definition);
181
+ }
182
+ //# sourceMappingURL=read-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-page.js","sourceRoot":"","sources":["../../src/tools/read-page.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Tabs Context Tool - Get context about browser tabs
3
+ */
4
+ import { MCPServer } from '../mcp-server';
5
+ export declare function registerTabsContextTool(server: MCPServer): void;
6
+ //# sourceMappingURL=tabs-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs-context.d.ts","sourceRoot":"","sources":["../../src/tools/tabs-context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAkF1C,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAE/D"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ /**
3
+ * Tabs Context Tool - Get context about browser tabs
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerTabsContextTool = registerTabsContextTool;
7
+ const session_manager_1 = require("../session-manager");
8
+ const definition = {
9
+ name: 'tabs_context_mcp',
10
+ description: 'Get context information about the current MCP session tabs. Returns all tab IDs. Use createIfEmpty to create a new tab if none exists.',
11
+ inputSchema: {
12
+ type: 'object',
13
+ properties: {
14
+ createIfEmpty: {
15
+ type: 'boolean',
16
+ description: 'Creates a new tab if the session has no tabs',
17
+ },
18
+ },
19
+ required: [],
20
+ },
21
+ };
22
+ const handler = async (sessionId, args) => {
23
+ const createIfEmpty = args.createIfEmpty;
24
+ const sessionManager = (0, session_manager_1.getSessionManager)();
25
+ try {
26
+ const session = await sessionManager.getOrCreateSession(sessionId);
27
+ let targetIds = sessionManager.getSessionTargetIds(sessionId);
28
+ // Create a new tab if requested and none exist
29
+ if (createIfEmpty && targetIds.length === 0) {
30
+ const { targetId } = await sessionManager.createTarget(sessionId, 'about:blank');
31
+ targetIds = [targetId];
32
+ }
33
+ // Get tab info for each target
34
+ const tabInfos = await Promise.all(targetIds.map(async (targetId) => {
35
+ const page = await sessionManager.getPage(sessionId, targetId);
36
+ if (!page) {
37
+ return { tabId: targetId, url: 'unknown', title: 'unknown' };
38
+ }
39
+ return {
40
+ tabId: targetId,
41
+ url: page.url(),
42
+ title: await page.title(),
43
+ };
44
+ }));
45
+ return {
46
+ content: [
47
+ {
48
+ type: 'text',
49
+ text: JSON.stringify({
50
+ sessionId,
51
+ tabs: tabInfos,
52
+ tabCount: tabInfos.length,
53
+ }, null, 2),
54
+ },
55
+ ],
56
+ };
57
+ }
58
+ catch (error) {
59
+ return {
60
+ content: [
61
+ {
62
+ type: 'text',
63
+ text: `Error getting tab context: ${error instanceof Error ? error.message : String(error)}`,
64
+ },
65
+ ],
66
+ isError: true,
67
+ };
68
+ }
69
+ };
70
+ function registerTabsContextTool(server) {
71
+ server.registerTool('tabs_context_mcp', handler, definition);
72
+ }
73
+ //# sourceMappingURL=tabs-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs-context.js","sourceRoot":"","sources":["../../src/tools/tabs-context.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAoFH,0DAEC;AAlFD,wDAAuD;AAEvD,MAAM,UAAU,GAAsB;IACpC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,wIAAwI;IAC1I,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,aAAa,EAAE;gBACb,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,8CAA8C;aAC5D;SACF;QACD,QAAQ,EAAE,EAAE;KACb;CACF,CAAC;AAEF,MAAM,OAAO,GAAgB,KAAK,EAChC,SAAiB,EACjB,IAA6B,EACT,EAAE;IACtB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAoC,CAAC;IAChE,MAAM,cAAc,GAAG,IAAA,mCAAiB,GAAE,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACnE,IAAI,SAAS,GAAG,cAAc,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAE9D,+CAA+C;QAC/C,IAAI,aAAa,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACjF,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QAED,+BAA+B;QAC/B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC/D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;YAC/D,CAAC;YAED,OAAO;gBACL,KAAK,EAAE,QAAQ;gBACf,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;gBACf,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE;aAC1B,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,SAAS;wBACT,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,QAAQ,CAAC,MAAM;qBAC1B,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBAC7F;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,SAAgB,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Tabs Create Tool - Create a new tab in the session
3
+ */
4
+ import { MCPServer } from '../mcp-server';
5
+ export declare function registerTabsCreateTool(server: MCPServer): void;
6
+ //# sourceMappingURL=tabs-create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs-create.d.ts","sourceRoot":"","sources":["../../src/tools/tabs-create.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAoD1C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAE9D"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ /**
3
+ * Tabs Create Tool - Create a new tab in the session
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerTabsCreateTool = registerTabsCreateTool;
7
+ const session_manager_1 = require("../session-manager");
8
+ const definition = {
9
+ name: 'tabs_create_mcp',
10
+ description: 'Creates a new empty tab in the MCP session.',
11
+ inputSchema: {
12
+ type: 'object',
13
+ properties: {},
14
+ required: [],
15
+ },
16
+ };
17
+ const handler = async (sessionId, _args) => {
18
+ const sessionManager = (0, session_manager_1.getSessionManager)();
19
+ try {
20
+ const { targetId, page } = await sessionManager.createTarget(sessionId, 'about:blank');
21
+ return {
22
+ content: [
23
+ {
24
+ type: 'text',
25
+ text: JSON.stringify({
26
+ tabId: targetId,
27
+ url: page.url(),
28
+ title: await page.title(),
29
+ }, null, 2),
30
+ },
31
+ ],
32
+ };
33
+ }
34
+ catch (error) {
35
+ return {
36
+ content: [
37
+ {
38
+ type: 'text',
39
+ text: `Error creating tab: ${error instanceof Error ? error.message : String(error)}`,
40
+ },
41
+ ],
42
+ isError: true,
43
+ };
44
+ }
45
+ };
46
+ function registerTabsCreateTool(server) {
47
+ server.registerTool('tabs_create_mcp', handler, definition);
48
+ }
49
+ //# sourceMappingURL=tabs-create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs-create.js","sourceRoot":"","sources":["../../src/tools/tabs-create.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAsDH,wDAEC;AApDD,wDAAuD;AAEvD,MAAM,UAAU,GAAsB;IACpC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,6CAA6C;IAC1D,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;KACb;CACF,CAAC;AAEF,MAAM,OAAO,GAAgB,KAAK,EAChC,SAAiB,EACjB,KAA8B,EACV,EAAE;IACtB,MAAM,cAAc,GAAG,IAAA,mCAAiB,GAAE,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAEvF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,KAAK,EAAE,QAAQ;wBACf,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;wBACf,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE;qBAC1B,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBACtF;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,SAAgB,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './mcp';
2
+ export * from './session';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./mcp"), exports);
18
+ __exportStar(require("./session"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,4CAA0B"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * MCP Protocol Types - Ported from extension
3
+ */
4
+ export interface MCPRequest {
5
+ jsonrpc: '2.0';
6
+ id: number | string;
7
+ method: string;
8
+ params?: Record<string, unknown>;
9
+ }
10
+ export interface MCPResponse {
11
+ jsonrpc: '2.0';
12
+ id: number | string;
13
+ result?: MCPResult;
14
+ error?: MCPError;
15
+ }
16
+ export interface MCPResult {
17
+ [key: string]: unknown;
18
+ content?: MCPContent[];
19
+ isError?: boolean;
20
+ }
21
+ export interface MCPContent {
22
+ type: 'text' | 'image' | 'resource';
23
+ text?: string;
24
+ data?: string;
25
+ mimeType?: string;
26
+ }
27
+ export interface MCPError {
28
+ code: number;
29
+ message: string;
30
+ data?: unknown;
31
+ }
32
+ export interface MCPToolDefinition {
33
+ name: string;
34
+ description: string;
35
+ inputSchema: {
36
+ type: 'object';
37
+ properties: Record<string, unknown>;
38
+ required?: string[];
39
+ };
40
+ }
41
+ export type ToolHandler = (sessionId: string, params: Record<string, unknown>) => Promise<MCPResult>;
42
+ export interface ToolRegistry {
43
+ name: string;
44
+ handler: ToolHandler;
45
+ definition: MCPToolDefinition;
46
+ }
47
+ export declare const MCPErrorCodes: {
48
+ readonly PARSE_ERROR: -32700;
49
+ readonly INVALID_REQUEST: -32600;
50
+ readonly METHOD_NOT_FOUND: -32601;
51
+ readonly INVALID_PARAMS: -32602;
52
+ readonly INTERNAL_ERROR: -32603;
53
+ };
54
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/types/mcp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,MAAM,MAAM,WAAW,GAAG,CACxB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,SAAS,CAAC,CAAC;AAExB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AAED,eAAO,MAAM,aAAa;;;;;;CAMhB,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * MCP Protocol Types - Ported from extension
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MCPErrorCodes = void 0;
7
+ exports.MCPErrorCodes = {
8
+ PARSE_ERROR: -32700,
9
+ INVALID_REQUEST: -32600,
10
+ METHOD_NOT_FOUND: -32601,
11
+ INVALID_PARAMS: -32602,
12
+ INTERNAL_ERROR: -32603,
13
+ };
14
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/types/mcp.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAwDU,QAAA,aAAa,GAAG;IAC3B,WAAW,EAAE,CAAC,KAAK;IACnB,eAAe,EAAE,CAAC,KAAK;IACvB,gBAAgB,EAAE,CAAC,KAAK;IACxB,cAAc,EAAE,CAAC,KAAK;IACtB,cAAc,EAAE,CAAC,KAAK;CACd,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Session Types
3
+ */
4
+ export interface Session {
5
+ id: string;
6
+ targets: Set<string>;
7
+ createdAt: number;
8
+ lastActivityAt: number;
9
+ name: string;
10
+ }
11
+ export interface SessionInfo {
12
+ id: string;
13
+ targetCount: number;
14
+ createdAt: number;
15
+ lastActivityAt: number;
16
+ name: string;
17
+ }
18
+ export interface SessionCreateOptions {
19
+ id?: string;
20
+ name?: string;
21
+ }
22
+ export interface SessionEvent {
23
+ type: 'session:created' | 'session:deleted' | 'session:target-added' | 'session:target-removed';
24
+ sessionId: string;
25
+ targetId?: string;
26
+ timestamp: number;
27
+ }
28
+ //# sourceMappingURL=session.d.ts.map