返回 DeepSeek-Reasonix
mcpAppBridge.ts
根目录 / desktop / frontend / src / lib / mcpAppBridge.ts
1 import type { MCPAppInstanceView } from "./mcpAppProtocol";
2
3 export interface MCPAppBindings {
4 MCPOpenAppInstance(server: string, tool: string, generation: number, callID: string, resourceURI: string): Promise<MCPAppInstanceView>;
5 MCPOpenAppInstanceForTab(tabID: string, server: string, tool: string, generation: number, callID: string, resourceURI: string): Promise<MCPAppInstanceView>;
6 MCPAppResourceDigest(instanceToken: string): Promise<string>;
7 MCPAppResourceDigestForTab(tabID: string, instanceToken: string): Promise<string>;
8 MCPCloseAppInstance(instanceToken: string): Promise<void>;
9 MCPCloseAppInstanceForTab(tabID: string, instanceToken: string): Promise<void>;
10 MCPOpenAppLink(url: string): Promise<void>;
11 MCPOpenAppLinkForTab(tabID: string, instanceToken: string, url: string): Promise<void>;
12 MCPAppCallTool(instanceToken: string, toolName: string, args: Record<string, unknown> | unknown): Promise<string>;
13 MCPAppCallToolForTab(tabID: string, instanceToken: string, toolName: string, args: Record<string, unknown> | unknown): Promise<string>;
14 }
15
16 export function makeMockMCPAppBindings(): MCPAppBindings {
17 return {
18 async MCPOpenAppInstance() { throw new Error("MCP Apps are unavailable in browser dev mode"); },
19 async MCPOpenAppInstanceForTab() { throw new Error("MCP Apps are unavailable in browser dev mode"); },
20 async MCPAppResourceDigest() { return ""; },
21 async MCPAppResourceDigestForTab() { return ""; },
22 async MCPCloseAppInstance() {},
23 async MCPCloseAppInstanceForTab() {},
24 async MCPOpenAppLink(url) { window.open(url, "_blank", "noopener"); },
25 async MCPOpenAppLinkForTab(_tabID, _instanceToken, url) { window.open(url, "_blank", "noopener"); },
26 async MCPAppCallTool() { throw new Error("MCP Apps are unavailable in browser dev mode"); },
27 async MCPAppCallToolForTab() { throw new Error("MCP Apps are unavailable in browser dev mode"); },
28 };
29 }
30
30 lines TYPESCRIPT