diff --git a/mcp-server/src/PluginBridge.ts b/mcp-server/src/PluginBridge.ts index cc150b5..172dbe0 100644 --- a/mcp-server/src/PluginBridge.ts +++ b/mcp-server/src/PluginBridge.ts @@ -1,6 +1,6 @@ import {WebSocket, WebSocketServer} from "ws"; import {PluginTask} from "./PluginTask"; -import {PluginTaskResponse} from "@penpot-mcp/common"; +import {PluginTaskResponse, PluginTaskResult} from "@penpot-mcp/common"; /** * Provides the connection to the Penpot MCP Plugin via WebSocket @@ -97,7 +97,7 @@ export class PluginBridge { * @param task - The plugin task to execute * @throws Error if no plugin instances are connected or available */ - public async executePluginTask(task: PluginTask): Promise { + public async executePluginTask>(task: PluginTask): Promise { // Check if there are connected clients if (this.connectedClients.size === 0) { throw new Error( diff --git a/mcp-server/src/PluginTask.ts b/mcp-server/src/PluginTask.ts index 0644042..3d047cc 100644 --- a/mcp-server/src/PluginTask.ts +++ b/mcp-server/src/PluginTask.ts @@ -18,7 +18,7 @@ import { randomUUID } from "crypto"; * @template TParams - The strongly-typed parameters for this task * @template TResult - The expected result type from task execution */ -export abstract class PluginTask { +export abstract class PluginTask = PluginTaskResult> { /** * Unique identifier for request/response correlation. */ diff --git a/mcp-server/src/tasks/PrintTextPluginTask.ts b/mcp-server/src/tasks/PrintTextPluginTask.ts index 057a864..345f4e3 100644 --- a/mcp-server/src/tasks/PrintTextPluginTask.ts +++ b/mcp-server/src/tasks/PrintTextPluginTask.ts @@ -7,7 +7,7 @@ import { PrintTextTaskParams, PluginTaskResult } from "@penpot-mcp/common"; * This task instructs the plugin to create a text element * at the viewport center and select it. */ -export class PrintTextPluginTask extends PluginTask { +export class PrintTextPluginTask extends PluginTask> { /** * Creates a new print text task. *