| 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 |