@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,143 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.setupTools = exports.ensureMcpClient = exports.getStdioMcpServer = void 0;
38
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
39
+ const index_js_2 = require("@modelcontextprotocol/sdk/client/index.js");
40
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
41
+ const chrome_mcp_shared_1 = require("chrome-mcp-shared");
42
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
43
+ const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/client/streamableHttp.js");
44
+ const fs = __importStar(require("fs"));
45
+ const path = __importStar(require("path"));
46
+ let stdioMcpServer = null;
47
+ let mcpClient = null;
48
+ // Read configuration from stdio-config.json
49
+ const loadConfig = () => {
50
+ try {
51
+ const configPath = path.join(__dirname, 'stdio-config.json');
52
+ const configData = fs.readFileSync(configPath, 'utf8');
53
+ return JSON.parse(configData);
54
+ }
55
+ catch (error) {
56
+ console.error('Failed to load stdio-config.json:', error);
57
+ throw new Error('Configuration file stdio-config.json not found or invalid');
58
+ }
59
+ };
60
+ const getStdioMcpServer = () => {
61
+ if (stdioMcpServer) {
62
+ return stdioMcpServer;
63
+ }
64
+ stdioMcpServer = new index_js_1.Server({
65
+ name: 'StdioChromeMcpServer',
66
+ version: '1.0.0',
67
+ }, {
68
+ capabilities: {
69
+ tools: {},
70
+ resources: {},
71
+ prompts: {},
72
+ },
73
+ });
74
+ (0, exports.setupTools)(stdioMcpServer);
75
+ return stdioMcpServer;
76
+ };
77
+ exports.getStdioMcpServer = getStdioMcpServer;
78
+ const ensureMcpClient = async () => {
79
+ try {
80
+ if (mcpClient) {
81
+ const pingResult = await mcpClient.ping();
82
+ if (pingResult) {
83
+ return mcpClient;
84
+ }
85
+ }
86
+ const config = loadConfig();
87
+ mcpClient = new index_js_2.Client({ name: 'Mcp Chrome Proxy', version: '1.0.0' }, { capabilities: {} });
88
+ const transport = new streamableHttp_js_1.StreamableHTTPClientTransport(new URL(config.url), {});
89
+ await mcpClient.connect(transport);
90
+ return mcpClient;
91
+ }
92
+ catch (error) {
93
+ mcpClient === null || mcpClient === void 0 ? void 0 : mcpClient.close();
94
+ mcpClient = null;
95
+ console.error('Failed to connect to MCP server:', error);
96
+ }
97
+ };
98
+ exports.ensureMcpClient = ensureMcpClient;
99
+ const setupTools = (server) => {
100
+ // List tools handler
101
+ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({ tools: chrome_mcp_shared_1.TOOL_SCHEMAS }));
102
+ // Call tool handler
103
+ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => handleToolCall(request.params.name, request.params.arguments || {}));
104
+ // List resources handler - REQUIRED BY MCP PROTOCOL
105
+ server.setRequestHandler(types_js_1.ListResourcesRequestSchema, async () => ({ resources: [] }));
106
+ // List prompts handler - REQUIRED BY MCP PROTOCOL
107
+ server.setRequestHandler(types_js_1.ListPromptsRequestSchema, async () => ({ prompts: [] }));
108
+ };
109
+ exports.setupTools = setupTools;
110
+ const handleToolCall = async (name, args) => {
111
+ try {
112
+ const client = await (0, exports.ensureMcpClient)();
113
+ if (!client) {
114
+ throw new Error('Failed to connect to MCP server');
115
+ }
116
+ // Use a sane default of 2 minutes; the previous value mistakenly used 2*6*1000 (12s)
117
+ const DEFAULT_CALL_TIMEOUT_MS = 2 * 60 * 1000;
118
+ const result = await client.callTool({ name, arguments: args }, undefined, {
119
+ timeout: DEFAULT_CALL_TIMEOUT_MS,
120
+ });
121
+ return result;
122
+ }
123
+ catch (error) {
124
+ return {
125
+ content: [
126
+ {
127
+ type: 'text',
128
+ text: `Error calling tool: ${error.message}`,
129
+ },
130
+ ],
131
+ isError: true,
132
+ };
133
+ }
134
+ };
135
+ async function main() {
136
+ const transport = new stdio_js_1.StdioServerTransport();
137
+ await (0, exports.getStdioMcpServer)().connect(transport);
138
+ }
139
+ main().catch((error) => {
140
+ console.error('Fatal error Chrome MCP Server main():', error);
141
+ process.exit(1);
142
+ });
143
+ //# sourceMappingURL=mcp-server-stdio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-stdio.js","sourceRoot":"","sources":["../../src/mcp/mcp-server-stdio.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
+ export declare let mcpServer: Server | null;
3
+ export declare const getMcpServer: () => Server<{
4
+ method: string;
5
+ params?: {
6
+ [x: string]: unknown;
7
+ _meta?: {
8
+ [x: string]: unknown;
9
+ progressToken?: string | number | undefined;
10
+ "io.modelcontextprotocol/related-task"?: {
11
+ taskId: string;
12
+ } | undefined;
13
+ } | undefined;
14
+ } | undefined;
15
+ }, {
16
+ method: string;
17
+ params?: {
18
+ [x: string]: unknown;
19
+ _meta?: {
20
+ [x: string]: unknown;
21
+ progressToken?: string | number | undefined;
22
+ "io.modelcontextprotocol/related-task"?: {
23
+ taskId: string;
24
+ } | undefined;
25
+ } | undefined;
26
+ } | undefined;
27
+ }, {
28
+ [x: string]: unknown;
29
+ _meta?: {
30
+ [x: string]: unknown;
31
+ progressToken?: string | number | undefined;
32
+ "io.modelcontextprotocol/related-task"?: {
33
+ taskId: string;
34
+ } | undefined;
35
+ } | undefined;
36
+ }>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMcpServer = exports.mcpServer = void 0;
4
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
5
+ const register_tools_1 = require("./register-tools");
6
+ exports.mcpServer = null;
7
+ const getMcpServer = () => {
8
+ // Create a fresh server instance per transport connection.
9
+ // Reusing a connected instance can fail with:
10
+ // "Already connected to a transport..."
11
+ const server = new index_js_1.Server({
12
+ name: 'ChromeMcpServer',
13
+ version: '1.0.0',
14
+ }, {
15
+ capabilities: {
16
+ tools: {},
17
+ resources: {},
18
+ prompts: {},
19
+ },
20
+ });
21
+ (0, register_tools_1.setupTools)(server);
22
+ exports.mcpServer = server;
23
+ return server;
24
+ };
25
+ exports.getMcpServer = getMcpServer;
26
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/mcp/mcp-server.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AACnE,qDAA8C;AAEnC,QAAA,SAAS,GAAkB,IAAI,CAAC;AAEpC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,2DAA2D;IAC3D,8CAA8C;IAC9C,wCAAwC;IACxC,MAAM,MAAM,GAAG,IAAI,iBAAM,CACvB;QACE,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,EAAE;SACZ;KACF,CACF,CAAC;IAEF,IAAA,2BAAU,EAAC,MAAM,CAAC,CAAC;IACnB,iBAAS,GAAG,MAAM,CAAC;IACnB,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AArBW,QAAA,YAAY,gBAqBvB"}
@@ -0,0 +1,2 @@
1
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
+ export declare const setupTools: (server: Server) => void;
@@ -0,0 +1,148 @@
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.setupTools = void 0;
7
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
8
+ const native_messaging_host_1 = __importDefault(require("../native-messaging-host"));
9
+ const chrome_mcp_shared_1 = require("chrome-mcp-shared");
10
+ async function listDynamicFlowTools() {
11
+ try {
12
+ const response = await native_messaging_host_1.default.sendRequestToExtensionAndWait({}, 'rr_list_published_flows', 20000);
13
+ if (response && response.status === 'success' && Array.isArray(response.items)) {
14
+ const tools = [];
15
+ for (const item of response.items) {
16
+ const name = `flow.${item.slug}`;
17
+ const description = (item.meta && item.meta.tool && item.meta.tool.description) ||
18
+ item.description ||
19
+ 'Recorded flow';
20
+ const properties = {};
21
+ const required = [];
22
+ for (const v of item.variables || []) {
23
+ const desc = v.label || v.key;
24
+ const typ = (v.type || 'string').toLowerCase();
25
+ const prop = { description: desc };
26
+ if (typ === 'boolean')
27
+ prop.type = 'boolean';
28
+ else if (typ === 'number')
29
+ prop.type = 'number';
30
+ else if (typ === 'enum') {
31
+ prop.type = 'string';
32
+ if (v.rules && Array.isArray(v.rules.enum))
33
+ prop.enum = v.rules.enum;
34
+ }
35
+ else if (typ === 'array') {
36
+ // default array of strings; can extend with itemType later
37
+ prop.type = 'array';
38
+ prop.items = { type: 'string' };
39
+ }
40
+ else {
41
+ prop.type = 'string';
42
+ }
43
+ if (v.default !== undefined)
44
+ prop.default = v.default;
45
+ if (v.rules && v.rules.required)
46
+ required.push(v.key);
47
+ properties[v.key] = prop;
48
+ }
49
+ // Run options
50
+ properties['tabTarget'] = { type: 'string', enum: ['current', 'new'], default: 'current' };
51
+ properties['refresh'] = { type: 'boolean', default: false };
52
+ properties['captureNetwork'] = { type: 'boolean', default: false };
53
+ properties['returnLogs'] = { type: 'boolean', default: false };
54
+ properties['timeoutMs'] = { type: 'number', minimum: 0 };
55
+ const tool = {
56
+ name,
57
+ description,
58
+ inputSchema: { type: 'object', properties, required },
59
+ };
60
+ tools.push(tool);
61
+ }
62
+ return tools;
63
+ }
64
+ return [];
65
+ }
66
+ catch (e) {
67
+ return [];
68
+ }
69
+ }
70
+ const setupTools = (server) => {
71
+ // List tools handler
72
+ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
73
+ const dynamicTools = await listDynamicFlowTools();
74
+ return { tools: [...chrome_mcp_shared_1.TOOL_SCHEMAS, ...dynamicTools] };
75
+ });
76
+ // Call tool handler
77
+ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => handleToolCall(request.params.name, request.params.arguments || {}));
78
+ // Keep MCP clients that probe resources/prompts from failing.
79
+ server.setRequestHandler(types_js_1.ListResourcesRequestSchema, async () => ({ resources: [] }));
80
+ server.setRequestHandler(types_js_1.ListPromptsRequestSchema, async () => ({ prompts: [] }));
81
+ };
82
+ exports.setupTools = setupTools;
83
+ const handleToolCall = async (name, args) => {
84
+ try {
85
+ // If calling a dynamic flow tool (name starts with flow.), proxy to common flow-run tool
86
+ if (name && name.startsWith('flow.')) {
87
+ // We need to resolve flow by slug to ID
88
+ try {
89
+ const resp = await native_messaging_host_1.default.sendRequestToExtensionAndWait({}, 'rr_list_published_flows', 20000);
90
+ const items = (resp && resp.items) || [];
91
+ const slug = name.slice('flow.'.length);
92
+ const match = items.find((it) => it.slug === slug);
93
+ if (!match)
94
+ throw new Error(`Flow not found for tool ${name}`);
95
+ const flowArgs = { flowId: match.id, args };
96
+ const proxyRes = await native_messaging_host_1.default.sendRequestToExtensionAndWait({ name: 'record_replay_flow_run', args: flowArgs }, chrome_mcp_shared_1.NativeMessageType.CALL_TOOL, 120000);
97
+ if (proxyRes.status === 'success')
98
+ return proxyRes.data;
99
+ return {
100
+ content: [{ type: 'text', text: `Error calling dynamic flow tool: ${proxyRes.error}` }],
101
+ isError: true,
102
+ };
103
+ }
104
+ catch (err) {
105
+ return {
106
+ content: [
107
+ {
108
+ type: 'text',
109
+ text: `Error resolving dynamic flow tool: ${(err === null || err === void 0 ? void 0 : err.message) || String(err)}`,
110
+ },
111
+ ],
112
+ isError: true,
113
+ };
114
+ }
115
+ }
116
+ // 发送请求到Chrome扩展并等待响应
117
+ const response = await native_messaging_host_1.default.sendRequestToExtensionAndWait({
118
+ name,
119
+ args,
120
+ }, chrome_mcp_shared_1.NativeMessageType.CALL_TOOL, 120000);
121
+ if (response.status === 'success') {
122
+ return response.data;
123
+ }
124
+ else {
125
+ return {
126
+ content: [
127
+ {
128
+ type: 'text',
129
+ text: `Error calling tool: ${response.error}`,
130
+ },
131
+ ],
132
+ isError: true,
133
+ };
134
+ }
135
+ }
136
+ catch (error) {
137
+ return {
138
+ content: [
139
+ {
140
+ type: 'text',
141
+ text: `Error calling tool: ${error.message}`,
142
+ },
143
+ ],
144
+ isError: true,
145
+ };
146
+ }
147
+ };
148
+ //# sourceMappingURL=register-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-tools.js","sourceRoot":"","sources":["../../src/mcp/register-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "url": "http://127.0.0.1:12306/mcp"
3
+ }
@@ -0,0 +1,42 @@
1
+ import { Server } from './server';
2
+ export declare class NativeMessagingHost {
3
+ private associatedServer;
4
+ private pendingRequests;
5
+ setServer(serverInstance: Server): void;
6
+ start(): void;
7
+ private setupMessageHandling;
8
+ private handleMessage;
9
+ /**
10
+ * Handle file operations from the extension
11
+ */
12
+ private handleFileOperation;
13
+ /**
14
+ * Send request to Chrome and wait for response
15
+ * @param messagePayload Data to send to Chrome
16
+ * @param timeoutMs Timeout for waiting response (milliseconds)
17
+ * @returns Promise, resolves to Chrome's returned payload on success, rejects on failure
18
+ */
19
+ sendRequestToExtensionAndWait(messagePayload: any, messageType?: string, timeoutMs?: number): Promise<any>;
20
+ /**
21
+ * Start Fastify server (now accepts Server instance)
22
+ */
23
+ private startServer;
24
+ /**
25
+ * Stop Fastify server
26
+ */
27
+ private stopServer;
28
+ /**
29
+ * Send message to Chrome extension
30
+ */
31
+ sendMessage(message: any): void;
32
+ /**
33
+ * Send error message to Chrome extension (mainly for sending non-request-response type errors)
34
+ */
35
+ private sendError;
36
+ /**
37
+ * Clean up resources
38
+ */
39
+ private cleanup;
40
+ }
41
+ declare const nativeMessagingHostInstance: NativeMessagingHost;
42
+ export default nativeMessagingHostInstance;