@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,439 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentChatService = void 0;
4
+ const node_crypto_1 = require("node:crypto");
5
+ const project_service_1 = require("./project-service");
6
+ const message_service_1 = require("./message-service");
7
+ const session_service_1 = require("./session-service");
8
+ const attachment_service_1 = require("./attachment-service");
9
+ /**
10
+ * AgentChatService coordinates incoming /agent/chat requests and delegates to engines.
11
+ *
12
+ * 中文说明:该服务负责会话级调度,不关心具体 CLI/SDK 实现细节。
13
+ * 通过 Engine 接口实现依赖倒置,后续替换或新增引擎时无需修改 HTTP 路由层。
14
+ */
15
+ class AgentChatService {
16
+ constructor(options) {
17
+ this.engines = new Map();
18
+ /**
19
+ * Registry of currently running executions, keyed by requestId.
20
+ */
21
+ this.runningExecutions = new Map();
22
+ this.streamManager = options.streamManager;
23
+ for (const engine of options.engines) {
24
+ this.engines.set(engine.name, engine);
25
+ }
26
+ if (options.defaultEngineName && this.engines.has(options.defaultEngineName)) {
27
+ this.defaultEngineName = options.defaultEngineName;
28
+ }
29
+ else {
30
+ // Fallback to first registered engine to avoid hard-coding 'claude' here.
31
+ const firstEngine = options.engines[0];
32
+ if (!firstEngine) {
33
+ throw new Error('AgentChatService requires at least one engine');
34
+ }
35
+ this.defaultEngineName = firstEngine.name;
36
+ }
37
+ }
38
+ async handleAct(sessionId, payload) {
39
+ var _a, _b, _c;
40
+ const trimmed = (_a = payload.instruction) === null || _a === void 0 ? void 0 : _a.trim();
41
+ if (!trimmed) {
42
+ throw new Error('instruction is required');
43
+ }
44
+ const requestId = payload.requestId || (0, node_crypto_1.randomUUID)();
45
+ let projectId = payload.projectId;
46
+ // Normalize empty string to undefined
47
+ const rawDbSessionId = typeof payload.dbSessionId === 'string' ? payload.dbSessionId.trim() : '';
48
+ const dbSessionId = rawDbSessionId || undefined;
49
+ // Load session from database if dbSessionId is provided
50
+ let dbSession;
51
+ if (dbSessionId) {
52
+ dbSession = await (0, session_service_1.getSession)(dbSessionId);
53
+ if (!dbSession) {
54
+ throw new Error(`Session not found for id: ${dbSessionId}`);
55
+ }
56
+ // Validate project association
57
+ if (projectId && dbSession.projectId !== projectId) {
58
+ throw new Error(`Session ${dbSessionId} does not belong to project: ${projectId}`);
59
+ }
60
+ // Use session's project if not explicitly provided
61
+ if (!projectId) {
62
+ projectId = dbSession.projectId;
63
+ }
64
+ }
65
+ // Project is required - workspace path must come from project system
66
+ if (!projectId) {
67
+ throw new Error('projectId is required. Please select or create a project first.');
68
+ }
69
+ const project = await (0, project_service_1.getProject)(projectId);
70
+ if (!project) {
71
+ throw new Error(`Project not found for id: ${projectId}`);
72
+ }
73
+ const projectRoot = project.rootPath;
74
+ const projectPreferredCli = project.preferredCli;
75
+ const projectSelectedModel = project.selectedModel;
76
+ const projectUseCcr = project.useCcr;
77
+ // Legacy fallback: if caller does not use sessions table, use project-level resume id
78
+ let resumeClaudeSessionId;
79
+ if (!dbSessionId) {
80
+ resumeClaudeSessionId = project.activeClaudeSessionId;
81
+ }
82
+ // Resolve engine name - session binding takes precedence
83
+ let engineName;
84
+ if (dbSession) {
85
+ engineName = dbSession.engineName;
86
+ // Validate cliPreference matches session engine
87
+ if (payload.cliPreference && payload.cliPreference !== engineName) {
88
+ throw new Error(`cliPreference (${payload.cliPreference}) does not match session.engineName (${engineName})`);
89
+ }
90
+ }
91
+ else {
92
+ engineName = this.resolveEngineName(payload.cliPreference, projectPreferredCli);
93
+ }
94
+ const engine = this.engines.get(engineName);
95
+ if (!engine) {
96
+ throw new Error(`No agent engine registered for ${engineName}`);
97
+ }
98
+ // Model priority: request > session > project
99
+ const effectiveModel = ((_b = payload.model) === null || _b === void 0 ? void 0 : _b.trim()) || (dbSession === null || dbSession === void 0 ? void 0 : dbSession.model) || projectSelectedModel;
100
+ // For Claude engine with session, use session's engineSessionId for resume
101
+ if (dbSession && engineName === 'claude') {
102
+ resumeClaudeSessionId = dbSession.engineSessionId;
103
+ }
104
+ const now = new Date().toISOString();
105
+ const userMessageId = (0, node_crypto_1.randomUUID)();
106
+ // Process and persist image attachments
107
+ const savedAttachments = [];
108
+ let attachmentMetadata;
109
+ let resolvedImagePaths;
110
+ if (projectId && payload.attachments && payload.attachments.length > 0) {
111
+ const imageAttachments = payload.attachments.filter((a) => a.type === 'image');
112
+ if (imageAttachments.length > 0) {
113
+ try {
114
+ console.error(`[AgentChatService] Saving ${imageAttachments.length} image attachment(s) for project ${projectId}`);
115
+ for (let i = 0; i < imageAttachments.length; i++) {
116
+ const attachment = imageAttachments[i];
117
+ const saved = await attachment_service_1.attachmentService.saveAttachment({
118
+ projectId,
119
+ messageId: userMessageId,
120
+ attachment,
121
+ index: i,
122
+ });
123
+ savedAttachments.push(saved);
124
+ }
125
+ // Build metadata array for message persistence
126
+ attachmentMetadata = savedAttachments.map((s) => s.metadata);
127
+ // Build paths array for engine consumption
128
+ resolvedImagePaths = savedAttachments.map((s) => s.absolutePath);
129
+ console.error(`[AgentChatService] Saved ${savedAttachments.length} attachment(s): ${resolvedImagePaths.join(', ')}`);
130
+ }
131
+ catch (error) {
132
+ console.error('[AgentChatService] Failed to save attachments:', error);
133
+ // Continue without attachments - don't fail the entire request
134
+ }
135
+ }
136
+ }
137
+ // Build metadata object for user message
138
+ // Include attachments, clientMeta, and displayText if present
139
+ let userMessageMetadata;
140
+ const hasAttachments = attachmentMetadata && attachmentMetadata.length > 0;
141
+ const hasClientMeta = payload.clientMeta !== undefined;
142
+ const hasDisplayText = payload.displayText !== undefined;
143
+ if (hasAttachments || hasClientMeta || hasDisplayText) {
144
+ userMessageMetadata = {};
145
+ if (hasAttachments) {
146
+ userMessageMetadata.attachments = attachmentMetadata;
147
+ }
148
+ if (hasClientMeta) {
149
+ userMessageMetadata.clientMeta = payload.clientMeta;
150
+ }
151
+ if (hasDisplayText) {
152
+ userMessageMetadata.displayText = payload.displayText;
153
+ }
154
+ }
155
+ // Emit a canonical user message into the stream so UI can render from server events only.
156
+ const userMessage = {
157
+ id: userMessageId,
158
+ sessionId,
159
+ role: 'user',
160
+ content: trimmed,
161
+ messageType: 'chat',
162
+ cliSource: engineName,
163
+ requestId,
164
+ isStreaming: false,
165
+ isFinal: true,
166
+ createdAt: now,
167
+ metadata: userMessageMetadata,
168
+ };
169
+ this.streamManager.publish({ type: 'message', data: userMessage });
170
+ if (projectId) {
171
+ // Persist user message into project history for later reload.
172
+ try {
173
+ await (0, project_service_1.touchProjectActivity)(projectId);
174
+ // Update session activity timestamp so it appears at top of session list
175
+ if (dbSessionId) {
176
+ await (0, session_service_1.touchSessionActivity)(dbSessionId);
177
+ }
178
+ await (0, message_service_1.createMessage)({
179
+ projectId,
180
+ role: 'user',
181
+ messageType: 'chat',
182
+ content: trimmed,
183
+ sessionId,
184
+ cliSource: engineName,
185
+ requestId,
186
+ id: userMessage.id,
187
+ createdAt: userMessage.createdAt,
188
+ metadata: userMessageMetadata,
189
+ });
190
+ }
191
+ catch (error) {
192
+ console.error('[AgentChatService] Failed to persist user message:', error);
193
+ }
194
+ }
195
+ this.streamManager.publish({
196
+ type: 'status',
197
+ data: {
198
+ sessionId,
199
+ status: 'starting',
200
+ requestId,
201
+ message: 'Agent request accepted',
202
+ },
203
+ });
204
+ const ctx = {
205
+ emit: (event) => {
206
+ var _a;
207
+ this.streamManager.publish(event);
208
+ if (!projectId) {
209
+ return;
210
+ }
211
+ if (event.type === 'message') {
212
+ const msg = event.data;
213
+ if (!msg)
214
+ return;
215
+ // Only persist final snapshots; streaming deltas are transient.
216
+ if (msg.isStreaming && !msg.isFinal) {
217
+ return;
218
+ }
219
+ // User messages are already handled above.
220
+ if (msg.role === 'user') {
221
+ return;
222
+ }
223
+ const content = (_a = msg.content) === null || _a === void 0 ? void 0 : _a.trim();
224
+ if (!content) {
225
+ return;
226
+ }
227
+ void (0, message_service_1.createMessage)({
228
+ projectId,
229
+ role: msg.role,
230
+ messageType: msg.messageType,
231
+ content,
232
+ metadata: msg.metadata,
233
+ sessionId: msg.sessionId,
234
+ conversationId: undefined,
235
+ cliSource: msg.cliSource,
236
+ requestId: msg.requestId,
237
+ id: msg.id,
238
+ createdAt: msg.createdAt,
239
+ }).catch((error) => {
240
+ console.error('[AgentChatService] Failed to persist agent message:', error);
241
+ });
242
+ }
243
+ },
244
+ // Callback to persist Claude session ID when SDK returns system/init message
245
+ // Prefer session-level persistence over project-level
246
+ persistClaudeSessionId: dbSessionId
247
+ ? async (claudeSessionId) => {
248
+ await (0, session_service_1.updateEngineSessionId)(dbSessionId, claudeSessionId);
249
+ }
250
+ : projectId
251
+ ? async (claudeSessionId) => {
252
+ await (0, project_service_1.updateProjectClaudeSessionId)(projectId, claudeSessionId);
253
+ }
254
+ : undefined,
255
+ // Callback to persist management info from system:init message
256
+ // Only available when using session-level persistence
257
+ persistManagementInfo: dbSessionId
258
+ ? async (info) => {
259
+ await (0, session_service_1.updateManagementInfo)(dbSessionId, info);
260
+ }
261
+ : undefined,
262
+ };
263
+ const engineOptions = {
264
+ sessionId,
265
+ instruction: trimmed,
266
+ model: effectiveModel,
267
+ projectRoot,
268
+ requestId,
269
+ // Pass original attachments (for fallback) and resolved paths (preferred)
270
+ attachments: payload.attachments,
271
+ resolvedImagePaths,
272
+ projectId,
273
+ dbSessionId,
274
+ // Session-level configuration for ClaudeEngine
275
+ permissionMode: dbSession === null || dbSession === void 0 ? void 0 : dbSession.permissionMode,
276
+ allowDangerouslySkipPermissions: dbSession === null || dbSession === void 0 ? void 0 : dbSession.allowDangerouslySkipPermissions,
277
+ systemPromptConfig: dbSession === null || dbSession === void 0 ? void 0 : dbSession.systemPromptConfig,
278
+ optionsConfig: dbSession === null || dbSession === void 0 ? void 0 : dbSession.optionsConfig,
279
+ // Pass Claude session ID for session resumption (ClaudeEngine only)
280
+ resumeClaudeSessionId: engineName === 'claude' ? resumeClaudeSessionId : undefined,
281
+ // Pass useCcr flag for Claude Code Router support (ClaudeEngine only)
282
+ useCcr: engineName === 'claude' ? projectUseCcr : undefined,
283
+ // Pass Codex-specific configuration (CodexEngine only)
284
+ codexConfig: engineName === 'codex' ? (_c = dbSession === null || dbSession === void 0 ? void 0 : dbSession.optionsConfig) === null || _c === void 0 ? void 0 : _c.codexConfig : undefined,
285
+ };
286
+ // Create abort controller for cancellation support
287
+ const abortController = new AbortController();
288
+ // Register execution in the running executions registry
289
+ this.runningExecutions.set(requestId, {
290
+ requestId,
291
+ sessionId,
292
+ engineName,
293
+ abortController,
294
+ startedAt: new Date(),
295
+ });
296
+ // Fire-and-forget execution to keep HTTP handler fast.
297
+ void this.runEngine(engine, engineOptions, ctx, sessionId, requestId, abortController);
298
+ return { requestId };
299
+ }
300
+ /**
301
+ * Cancel a running execution by requestId.
302
+ * Returns true if the execution was found and cancelled, false otherwise.
303
+ */
304
+ cancelExecution(requestId) {
305
+ const execution = this.runningExecutions.get(requestId);
306
+ if (!execution) {
307
+ return false;
308
+ }
309
+ // Abort the execution
310
+ execution.abortController.abort();
311
+ // Emit cancelled status
312
+ this.streamManager.publish({
313
+ type: 'status',
314
+ data: {
315
+ sessionId: execution.sessionId,
316
+ status: 'cancelled',
317
+ requestId,
318
+ message: 'Execution cancelled by user',
319
+ },
320
+ });
321
+ // Remove from registry
322
+ this.runningExecutions.delete(requestId);
323
+ return true;
324
+ }
325
+ /**
326
+ * Cancel all running executions for a session.
327
+ * Returns the number of executions cancelled.
328
+ */
329
+ cancelSessionExecutions(sessionId) {
330
+ let cancelled = 0;
331
+ for (const [requestId, execution] of this.runningExecutions) {
332
+ if (execution.sessionId === sessionId) {
333
+ execution.abortController.abort();
334
+ this.runningExecutions.delete(requestId);
335
+ cancelled++;
336
+ }
337
+ }
338
+ if (cancelled > 0) {
339
+ this.streamManager.publish({
340
+ type: 'status',
341
+ data: {
342
+ sessionId,
343
+ status: 'cancelled',
344
+ message: `Cancelled ${cancelled} running execution(s)`,
345
+ },
346
+ });
347
+ }
348
+ return cancelled;
349
+ }
350
+ /**
351
+ * Get list of running executions for diagnostics.
352
+ */
353
+ getRunningExecutions() {
354
+ return Array.from(this.runningExecutions.values());
355
+ }
356
+ resolveEngineName(preference, projectPreferredCli) {
357
+ if (preference && this.engines.has(preference)) {
358
+ return preference;
359
+ }
360
+ if (projectPreferredCli && this.engines.has(projectPreferredCli)) {
361
+ return projectPreferredCli;
362
+ }
363
+ return this.defaultEngineName;
364
+ }
365
+ async runEngine(engine, options, ctx, sessionId, requestId, abortController) {
366
+ try {
367
+ // Check if already aborted before starting
368
+ if (abortController.signal.aborted) {
369
+ return;
370
+ }
371
+ this.streamManager.publish({
372
+ type: 'status',
373
+ data: {
374
+ sessionId,
375
+ status: 'running',
376
+ requestId,
377
+ },
378
+ });
379
+ // Pass abort signal to engine
380
+ const optionsWithSignal = {
381
+ ...options,
382
+ signal: abortController.signal,
383
+ };
384
+ await engine.initializeAndRun(optionsWithSignal, ctx);
385
+ // Only emit completed if not aborted
386
+ if (!abortController.signal.aborted) {
387
+ this.streamManager.publish({
388
+ type: 'status',
389
+ data: {
390
+ sessionId,
391
+ status: 'completed',
392
+ requestId,
393
+ },
394
+ });
395
+ }
396
+ }
397
+ catch (error) {
398
+ // Check if this was an abort error
399
+ if (abortController.signal.aborted) {
400
+ // Already handled by cancelExecution, just return
401
+ return;
402
+ }
403
+ const message = error instanceof Error ? error.message : String(error);
404
+ this.streamManager.publish({
405
+ type: 'error',
406
+ error: message,
407
+ data: { sessionId, requestId },
408
+ });
409
+ this.streamManager.publish({
410
+ type: 'status',
411
+ data: {
412
+ sessionId,
413
+ status: 'error',
414
+ message,
415
+ requestId,
416
+ },
417
+ });
418
+ }
419
+ finally {
420
+ // Always remove from running executions when done
421
+ this.runningExecutions.delete(requestId);
422
+ }
423
+ }
424
+ /**
425
+ * Expose registered engines for UI and diagnostics.
426
+ */
427
+ getEngineInfos() {
428
+ const result = [];
429
+ for (const engine of this.engines.values()) {
430
+ result.push({
431
+ name: engine.name,
432
+ supportsMcp: engine.supportsMcp,
433
+ });
434
+ }
435
+ return result;
436
+ }
437
+ }
438
+ exports.AgentChatService = AgentChatService;
439
+ //# sourceMappingURL=chat-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-service.js","sourceRoot":"","sources":["../../src/agent/chat-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3';
2
+ import * as schema from './schema';
3
+ export type DrizzleDB = BetterSQLite3Database<typeof schema>;
4
+ /**
5
+ * Get the database file path.
6
+ * Environment: CHROME_MCP_AGENT_DB_FILE overrides the default path.
7
+ */
8
+ export declare function getDatabasePath(): string;
9
+ /**
10
+ * Get the Drizzle database instance.
11
+ * Lazily initializes the connection and schema on first call.
12
+ */
13
+ export declare function getDb(): DrizzleDB;
14
+ /**
15
+ * Close the database connection.
16
+ * Should be called on graceful shutdown.
17
+ */
18
+ export declare function closeDb(): void;
19
+ /**
20
+ * Check if database is initialized.
21
+ */
22
+ export declare function isDbInitialized(): boolean;
23
+ /**
24
+ * Execute raw SQL (for advanced use cases).
25
+ */
26
+ export declare function execRawSql(sqlStr: string): void;