@helmisatria/mcp-chrome-bridge 1.0.30

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 (129) hide show
  1. package/README.md +183 -0
  2. package/dist/README.md +25 -0
  3. package/dist/agent/attachment-service.d.ts +83 -0
  4. package/dist/agent/attachment-service.js +370 -0
  5. package/dist/agent/attachment-service.js.map +1 -0
  6. package/dist/agent/ccr-detector.d.ts +59 -0
  7. package/dist/agent/ccr-detector.js +311 -0
  8. package/dist/agent/ccr-detector.js.map +1 -0
  9. package/dist/agent/chat-service.d.ts +50 -0
  10. package/dist/agent/chat-service.js +439 -0
  11. package/dist/agent/chat-service.js.map +1 -0
  12. package/dist/agent/db/client.d.ts +26 -0
  13. package/dist/agent/db/client.js +244 -0
  14. package/dist/agent/db/client.js.map +1 -0
  15. package/dist/agent/db/index.d.ts +5 -0
  16. package/dist/agent/db/index.js +22 -0
  17. package/dist/agent/db/index.js.map +1 -0
  18. package/dist/agent/db/schema.d.ts +711 -0
  19. package/dist/agent/db/schema.js +121 -0
  20. package/dist/agent/db/schema.js.map +1 -0
  21. package/dist/agent/directory-picker.d.ts +11 -0
  22. package/dist/agent/directory-picker.js +149 -0
  23. package/dist/agent/directory-picker.js.map +1 -0
  24. package/dist/agent/engines/claude.d.ts +79 -0
  25. package/dist/agent/engines/claude.js +1338 -0
  26. package/dist/agent/engines/claude.js.map +1 -0
  27. package/dist/agent/engines/codex.d.ts +48 -0
  28. package/dist/agent/engines/codex.js +822 -0
  29. package/dist/agent/engines/codex.js.map +1 -0
  30. package/dist/agent/engines/types.d.ts +133 -0
  31. package/dist/agent/engines/types.js +3 -0
  32. package/dist/agent/engines/types.js.map +1 -0
  33. package/dist/agent/message-service.d.ts +56 -0
  34. package/dist/agent/message-service.js +198 -0
  35. package/dist/agent/message-service.js.map +1 -0
  36. package/dist/agent/open-project.d.ts +25 -0
  37. package/dist/agent/open-project.js +469 -0
  38. package/dist/agent/open-project.js.map +1 -0
  39. package/dist/agent/project-service.d.ts +49 -0
  40. package/dist/agent/project-service.js +254 -0
  41. package/dist/agent/project-service.js.map +1 -0
  42. package/dist/agent/project-types.d.ts +27 -0
  43. package/dist/agent/project-types.js +3 -0
  44. package/dist/agent/project-types.js.map +1 -0
  45. package/dist/agent/session-service.d.ts +198 -0
  46. package/dist/agent/session-service.js +292 -0
  47. package/dist/agent/session-service.js.map +1 -0
  48. package/dist/agent/storage.d.ts +27 -0
  49. package/dist/agent/storage.js +73 -0
  50. package/dist/agent/storage.js.map +1 -0
  51. package/dist/agent/stream-manager.d.ts +42 -0
  52. package/dist/agent/stream-manager.js +243 -0
  53. package/dist/agent/stream-manager.js.map +1 -0
  54. package/dist/agent/tool-bridge.d.ts +44 -0
  55. package/dist/agent/tool-bridge.js +50 -0
  56. package/dist/agent/tool-bridge.js.map +1 -0
  57. package/dist/agent/types.d.ts +6 -0
  58. package/dist/agent/types.js +3 -0
  59. package/dist/agent/types.js.map +1 -0
  60. package/dist/cli.d.ts +2 -0
  61. package/dist/cli.js +224 -0
  62. package/dist/cli.js.map +1 -0
  63. package/dist/constant/index.d.ts +60 -0
  64. package/dist/constant/index.js +80 -0
  65. package/dist/constant/index.js.map +1 -0
  66. package/dist/file-handler.d.ts +41 -0
  67. package/dist/file-handler.js +295 -0
  68. package/dist/file-handler.js.map +1 -0
  69. package/dist/index.d.ts +2 -0
  70. package/dist/index.js +35 -0
  71. package/dist/index.js.map +1 -0
  72. package/dist/mcp/mcp-server-stdio.d.ts +72 -0
  73. package/dist/mcp/mcp-server-stdio.js +143 -0
  74. package/dist/mcp/mcp-server-stdio.js.map +1 -0
  75. package/dist/mcp/mcp-server.d.ts +36 -0
  76. package/dist/mcp/mcp-server.js +26 -0
  77. package/dist/mcp/mcp-server.js.map +1 -0
  78. package/dist/mcp/register-tools.d.ts +2 -0
  79. package/dist/mcp/register-tools.js +148 -0
  80. package/dist/mcp/register-tools.js.map +1 -0
  81. package/dist/mcp/stdio-config.json +3 -0
  82. package/dist/native-messaging-host.d.ts +42 -0
  83. package/dist/native-messaging-host.js +312 -0
  84. package/dist/native-messaging-host.js.map +1 -0
  85. package/dist/run_host.bat +194 -0
  86. package/dist/run_host.sh +264 -0
  87. package/dist/scripts/browser-config.d.ts +28 -0
  88. package/dist/scripts/browser-config.js +229 -0
  89. package/dist/scripts/browser-config.js.map +1 -0
  90. package/dist/scripts/build.d.ts +1 -0
  91. package/dist/scripts/build.js +126 -0
  92. package/dist/scripts/build.js.map +1 -0
  93. package/dist/scripts/constant.d.ts +4 -0
  94. package/dist/scripts/constant.js +8 -0
  95. package/dist/scripts/constant.js.map +1 -0
  96. package/dist/scripts/doctor.d.ts +70 -0
  97. package/dist/scripts/doctor.js +930 -0
  98. package/dist/scripts/doctor.js.map +1 -0
  99. package/dist/scripts/postinstall.d.ts +2 -0
  100. package/dist/scripts/postinstall.js +246 -0
  101. package/dist/scripts/postinstall.js.map +1 -0
  102. package/dist/scripts/register-dev.d.ts +1 -0
  103. package/dist/scripts/register-dev.js +5 -0
  104. package/dist/scripts/register-dev.js.map +1 -0
  105. package/dist/scripts/register.d.ts +2 -0
  106. package/dist/scripts/register.js +28 -0
  107. package/dist/scripts/register.js.map +1 -0
  108. package/dist/scripts/report.d.ts +96 -0
  109. package/dist/scripts/report.js +686 -0
  110. package/dist/scripts/report.js.map +1 -0
  111. package/dist/scripts/utils.d.ts +64 -0
  112. package/dist/scripts/utils.js +443 -0
  113. package/dist/scripts/utils.js.map +1 -0
  114. package/dist/server/index.d.ts +35 -0
  115. package/dist/server/index.js +312 -0
  116. package/dist/server/index.js.map +1 -0
  117. package/dist/server/routes/agent.d.ts +21 -0
  118. package/dist/server/routes/agent.js +971 -0
  119. package/dist/server/routes/agent.js.map +1 -0
  120. package/dist/server/routes/index.d.ts +4 -0
  121. package/dist/server/routes/index.js +9 -0
  122. package/dist/server/routes/index.js.map +1 -0
  123. package/dist/trace-analyzer.d.ts +14 -0
  124. package/dist/trace-analyzer.js +113 -0
  125. package/dist/trace-analyzer.js.map +1 -0
  126. package/dist/util/logger.d.ts +1 -0
  127. package/dist/util/logger.js +43 -0
  128. package/dist/util/logger.js.map +1 -0
  129. package/package.json +91 -0
@@ -0,0 +1,312 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Server = void 0;
7
+ /**
8
+ * HTTP Server - Core server implementation.
9
+ *
10
+ * Responsibilities:
11
+ * - Fastify instance management
12
+ * - Plugin registration (CORS, etc.)
13
+ * - Route delegation to specialized modules
14
+ * - MCP transport handling
15
+ * - Server lifecycle management
16
+ */
17
+ const fastify_1 = __importDefault(require("fastify"));
18
+ const cors_1 = __importDefault(require("@fastify/cors"));
19
+ const constant_1 = require("../constant");
20
+ const sse_js_1 = require("@modelcontextprotocol/sdk/server/sse.js");
21
+ const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
22
+ const node_crypto_1 = require("node:crypto");
23
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
24
+ const mcp_server_1 = require("../mcp/mcp-server");
25
+ const stream_manager_1 = require("../agent/stream-manager");
26
+ const chat_service_1 = require("../agent/chat-service");
27
+ const codex_1 = require("../agent/engines/codex");
28
+ const claude_1 = require("../agent/engines/claude");
29
+ const db_1 = require("../agent/db");
30
+ const routes_1 = require("./routes");
31
+ // ============================================================
32
+ // Server Class
33
+ // ============================================================
34
+ class Server {
35
+ constructor() {
36
+ this.isRunning = false;
37
+ this.nativeHost = null;
38
+ this.transportsMap = new Map();
39
+ this.fastify = (0, fastify_1.default)({ logger: constant_1.SERVER_CONFIG.LOGGER_ENABLED });
40
+ this.agentStreamManager = new stream_manager_1.AgentStreamManager();
41
+ this.agentChatService = new chat_service_1.AgentChatService({
42
+ engines: [new codex_1.CodexEngine(), new claude_1.ClaudeEngine()],
43
+ streamManager: this.agentStreamManager,
44
+ });
45
+ this.setupPlugins();
46
+ this.setupRoutes();
47
+ }
48
+ /**
49
+ * Associate NativeMessagingHost instance.
50
+ */
51
+ setNativeHost(nativeHost) {
52
+ this.nativeHost = nativeHost;
53
+ }
54
+ async setupPlugins() {
55
+ await this.fastify.register(cors_1.default, {
56
+ origin: (origin, cb) => {
57
+ // Allow requests with no origin (e.g., curl, server-to-server)
58
+ if (!origin) {
59
+ return cb(null, true);
60
+ }
61
+ // Check if origin matches any pattern in whitelist
62
+ const allowed = constant_1.SERVER_CONFIG.CORS_ORIGIN.some((pattern) => pattern instanceof RegExp ? pattern.test(origin) : origin.startsWith(pattern));
63
+ cb(null, allowed);
64
+ },
65
+ methods: ['GET', 'POST', 'DELETE', 'OPTIONS'],
66
+ credentials: true,
67
+ });
68
+ }
69
+ setupRoutes() {
70
+ // Health check
71
+ this.setupHealthRoutes();
72
+ // Extension communication
73
+ this.setupExtensionRoutes();
74
+ // Agent routes (delegated to separate module)
75
+ (0, routes_1.registerAgentRoutes)(this.fastify, {
76
+ streamManager: this.agentStreamManager,
77
+ chatService: this.agentChatService,
78
+ });
79
+ // MCP routes
80
+ this.setupMcpRoutes();
81
+ }
82
+ // ============================================================
83
+ // Health Routes
84
+ // ============================================================
85
+ setupHealthRoutes() {
86
+ this.fastify.get('/ping', async (_request, reply) => {
87
+ reply.status(constant_1.HTTP_STATUS.OK).send({
88
+ status: 'ok',
89
+ message: 'pong',
90
+ });
91
+ });
92
+ }
93
+ // ============================================================
94
+ // Extension Routes
95
+ // ============================================================
96
+ setupExtensionRoutes() {
97
+ this.fastify.get('/ask-extension', async (request, reply) => {
98
+ if (!this.nativeHost) {
99
+ return reply
100
+ .status(constant_1.HTTP_STATUS.INTERNAL_SERVER_ERROR)
101
+ .send({ error: constant_1.ERROR_MESSAGES.NATIVE_HOST_NOT_AVAILABLE });
102
+ }
103
+ if (!this.isRunning) {
104
+ return reply
105
+ .status(constant_1.HTTP_STATUS.INTERNAL_SERVER_ERROR)
106
+ .send({ error: constant_1.ERROR_MESSAGES.SERVER_NOT_RUNNING });
107
+ }
108
+ try {
109
+ const extensionResponse = await this.nativeHost.sendRequestToExtensionAndWait(request.query, 'process_data', constant_1.TIMEOUTS.EXTENSION_REQUEST_TIMEOUT);
110
+ return reply.status(constant_1.HTTP_STATUS.OK).send({ status: 'success', data: extensionResponse });
111
+ }
112
+ catch (error) {
113
+ const err = error;
114
+ if (err.message.includes('timed out')) {
115
+ return reply
116
+ .status(constant_1.HTTP_STATUS.GATEWAY_TIMEOUT)
117
+ .send({ status: 'error', message: constant_1.ERROR_MESSAGES.REQUEST_TIMEOUT });
118
+ }
119
+ else {
120
+ return reply.status(constant_1.HTTP_STATUS.INTERNAL_SERVER_ERROR).send({
121
+ status: 'error',
122
+ message: `Failed to get response from extension: ${err.message}`,
123
+ });
124
+ }
125
+ }
126
+ });
127
+ }
128
+ // ============================================================
129
+ // MCP Routes
130
+ // ============================================================
131
+ setupMcpRoutes() {
132
+ // SSE endpoint
133
+ this.fastify.get('/sse', async (_, reply) => {
134
+ try {
135
+ reply.raw.writeHead(constant_1.HTTP_STATUS.OK, {
136
+ 'Content-Type': 'text/event-stream',
137
+ 'Cache-Control': 'no-cache',
138
+ Connection: 'keep-alive',
139
+ });
140
+ const transport = new sse_js_1.SSEServerTransport('/messages', reply.raw);
141
+ this.transportsMap.set(transport.sessionId, transport);
142
+ reply.raw.on('close', () => {
143
+ this.transportsMap.delete(transport.sessionId);
144
+ });
145
+ const server = (0, mcp_server_1.getMcpServer)();
146
+ await server.connect(transport);
147
+ reply.raw.write(':\n\n');
148
+ }
149
+ catch (error) {
150
+ if (!reply.sent) {
151
+ reply.code(constant_1.HTTP_STATUS.INTERNAL_SERVER_ERROR).send(constant_1.ERROR_MESSAGES.INTERNAL_SERVER_ERROR);
152
+ }
153
+ }
154
+ });
155
+ // SSE messages endpoint
156
+ this.fastify.post('/messages', async (req, reply) => {
157
+ try {
158
+ const { sessionId } = req.query;
159
+ const transport = this.transportsMap.get(sessionId || '');
160
+ if (!sessionId || !transport) {
161
+ reply.code(constant_1.HTTP_STATUS.BAD_REQUEST).send('No transport found for sessionId');
162
+ return;
163
+ }
164
+ await transport.handlePostMessage(req.raw, reply.raw, req.body);
165
+ }
166
+ catch (error) {
167
+ if (!reply.sent) {
168
+ reply.code(constant_1.HTTP_STATUS.INTERNAL_SERVER_ERROR).send(constant_1.ERROR_MESSAGES.INTERNAL_SERVER_ERROR);
169
+ }
170
+ }
171
+ });
172
+ // MCP POST endpoint
173
+ this.fastify.post('/mcp', async (request, reply) => {
174
+ const sessionId = request.headers['mcp-session-id'];
175
+ let transport = this.transportsMap.get(sessionId || '');
176
+ if (transport) {
177
+ // Transport found, proceed
178
+ }
179
+ else if (!sessionId && (0, types_js_1.isInitializeRequest)(request.body)) {
180
+ const newSessionId = (0, node_crypto_1.randomUUID)();
181
+ transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
182
+ sessionIdGenerator: () => newSessionId,
183
+ onsessioninitialized: (initializedSessionId) => {
184
+ if (transport && initializedSessionId === newSessionId) {
185
+ this.transportsMap.set(initializedSessionId, transport);
186
+ }
187
+ },
188
+ });
189
+ transport.onclose = () => {
190
+ if ((transport === null || transport === void 0 ? void 0 : transport.sessionId) && this.transportsMap.get(transport.sessionId)) {
191
+ this.transportsMap.delete(transport.sessionId);
192
+ }
193
+ };
194
+ await (0, mcp_server_1.getMcpServer)().connect(transport);
195
+ }
196
+ else {
197
+ reply.code(constant_1.HTTP_STATUS.BAD_REQUEST).send({ error: constant_1.ERROR_MESSAGES.INVALID_MCP_REQUEST });
198
+ return;
199
+ }
200
+ try {
201
+ await transport.handleRequest(request.raw, reply.raw, request.body);
202
+ }
203
+ catch (error) {
204
+ if (!reply.sent) {
205
+ reply
206
+ .code(constant_1.HTTP_STATUS.INTERNAL_SERVER_ERROR)
207
+ .send({ error: constant_1.ERROR_MESSAGES.MCP_REQUEST_PROCESSING_ERROR });
208
+ }
209
+ }
210
+ });
211
+ // MCP GET endpoint (SSE stream)
212
+ this.fastify.get('/mcp', async (request, reply) => {
213
+ const sessionId = request.headers['mcp-session-id'];
214
+ const transport = sessionId
215
+ ? this.transportsMap.get(sessionId)
216
+ : undefined;
217
+ if (!transport) {
218
+ reply.code(constant_1.HTTP_STATUS.BAD_REQUEST).send({ error: constant_1.ERROR_MESSAGES.INVALID_SSE_SESSION });
219
+ return;
220
+ }
221
+ reply.raw.setHeader('Content-Type', 'text/event-stream');
222
+ reply.raw.setHeader('Cache-Control', 'no-cache');
223
+ reply.raw.setHeader('Connection', 'keep-alive');
224
+ reply.raw.flushHeaders();
225
+ try {
226
+ await transport.handleRequest(request.raw, reply.raw);
227
+ if (!reply.sent) {
228
+ reply.hijack();
229
+ }
230
+ }
231
+ catch (error) {
232
+ if (!reply.raw.writableEnded) {
233
+ reply.raw.end();
234
+ }
235
+ }
236
+ request.socket.on('close', () => {
237
+ request.log.info(`SSE client disconnected for session: ${sessionId}`);
238
+ });
239
+ });
240
+ // MCP DELETE endpoint
241
+ this.fastify.delete('/mcp', async (request, reply) => {
242
+ const sessionId = request.headers['mcp-session-id'];
243
+ const transport = sessionId
244
+ ? this.transportsMap.get(sessionId)
245
+ : undefined;
246
+ if (!transport) {
247
+ reply.code(constant_1.HTTP_STATUS.BAD_REQUEST).send({ error: constant_1.ERROR_MESSAGES.INVALID_SESSION_ID });
248
+ return;
249
+ }
250
+ try {
251
+ await transport.handleRequest(request.raw, reply.raw);
252
+ if (!reply.sent) {
253
+ reply.code(constant_1.HTTP_STATUS.NO_CONTENT).send();
254
+ }
255
+ }
256
+ catch (error) {
257
+ if (!reply.sent) {
258
+ reply
259
+ .code(constant_1.HTTP_STATUS.INTERNAL_SERVER_ERROR)
260
+ .send({ error: constant_1.ERROR_MESSAGES.MCP_SESSION_DELETION_ERROR });
261
+ }
262
+ }
263
+ });
264
+ }
265
+ // ============================================================
266
+ // Server Lifecycle
267
+ // ============================================================
268
+ async start(port = constant_1.NATIVE_SERVER_PORT, nativeHost) {
269
+ if (!this.nativeHost) {
270
+ this.nativeHost = nativeHost;
271
+ }
272
+ else if (this.nativeHost !== nativeHost) {
273
+ this.nativeHost = nativeHost;
274
+ }
275
+ if (this.isRunning) {
276
+ return;
277
+ }
278
+ try {
279
+ await this.fastify.listen({ port, host: constant_1.SERVER_CONFIG.HOST });
280
+ // Set port environment variables after successful listen for Chrome MCP URL resolution
281
+ process.env.CHROME_MCP_PORT = String(port);
282
+ process.env.MCP_HTTP_PORT = String(port);
283
+ this.isRunning = true;
284
+ }
285
+ catch (err) {
286
+ this.isRunning = false;
287
+ throw err;
288
+ }
289
+ }
290
+ async stop() {
291
+ if (!this.isRunning) {
292
+ return;
293
+ }
294
+ try {
295
+ await this.fastify.close();
296
+ (0, db_1.closeDb)();
297
+ this.isRunning = false;
298
+ }
299
+ catch (err) {
300
+ this.isRunning = false;
301
+ (0, db_1.closeDb)();
302
+ throw err;
303
+ }
304
+ }
305
+ getInstance() {
306
+ return this.fastify;
307
+ }
308
+ }
309
+ exports.Server = Server;
310
+ const serverInstance = new Server();
311
+ exports.default = serverInstance;
312
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Agent Routes - All agent-related HTTP endpoints.
3
+ *
4
+ * Handles:
5
+ * - Projects CRUD
6
+ * - Chat messages CRUD
7
+ * - Chat streaming (SSE)
8
+ * - Chat actions (act, cancel)
9
+ * - Engine listing
10
+ */
11
+ import type { FastifyInstance } from 'fastify';
12
+ import { AgentStreamManager } from '../../agent/stream-manager';
13
+ import { AgentChatService } from '../../agent/chat-service';
14
+ export interface AgentRoutesOptions {
15
+ streamManager: AgentStreamManager;
16
+ chatService: AgentChatService;
17
+ }
18
+ /**
19
+ * Register all agent-related routes on the Fastify instance.
20
+ */
21
+ export declare function registerAgentRoutes(fastify: FastifyInstance, options: AgentRoutesOptions): void;