diff --git a/common/src/types.ts b/common/src/types.ts index 27a2c0f..31e2b14 100644 --- a/common/src/types.ts +++ b/common/src/types.ts @@ -78,3 +78,18 @@ export interface ExecuteCodeTaskParams { */ code: string; } + +/** + * Result data for the executeCode task. + */ +export interface ExecuteCodeTaskResultData { + /** + * The result of the executed code, if any. + */ + result: T; + + /** + * Captured console output during code execution. + */ + log: string; +} diff --git a/mcp-server/src/tasks/ExecuteCodePluginTask.ts b/mcp-server/src/tasks/ExecuteCodePluginTask.ts index 5c107c5..c436ec3 100644 --- a/mcp-server/src/tasks/ExecuteCodePluginTask.ts +++ b/mcp-server/src/tasks/ExecuteCodePluginTask.ts @@ -1,5 +1,5 @@ import { PluginTask } from "../PluginTask"; -import { ExecuteCodeTaskParams, PluginTaskResult } from "@penpot-mcp/common"; +import { ExecuteCodeTaskParams, ExecuteCodeTaskResultData, PluginTaskResult } from "@penpot-mcp/common"; /** * Task for executing JavaScript code in the plugin context. @@ -7,7 +7,10 @@ import { ExecuteCodeTaskParams, PluginTaskResult } from "@penpot-mcp/common"; * This task instructs the plugin to execute arbitrary JavaScript code * and return the result of execution. */ -export class ExecuteCodePluginTask extends PluginTask> { +export class ExecuteCodePluginTask extends PluginTask< + ExecuteCodeTaskParams, + PluginTaskResult> +> { /** * Creates a new execute code task. * diff --git a/penpot-plugin/src/task-handlers/ExecuteCodeTaskHandler.ts b/penpot-plugin/src/task-handlers/ExecuteCodeTaskHandler.ts index 58ca9d2..c19d489 100644 --- a/penpot-plugin/src/task-handlers/ExecuteCodeTaskHandler.ts +++ b/penpot-plugin/src/task-handlers/ExecuteCodeTaskHandler.ts @@ -1,5 +1,5 @@ import { Task, TaskHandler } from "../TaskHandler"; -import { ExecuteCodeTaskParams } from "../../../common/src"; +import { ExecuteCodeTaskParams, ExecuteCodeTaskResultData } from "../../../common/src"; /** * Console implementation that captures all log output for code execution. @@ -205,10 +205,11 @@ export class ExecuteCodeTaskHandler extends TaskHandler { console.log("Code execution result:", result); - // return both result and captured log - task.sendSuccess({ + // return result and captured log + let resultData: ExecuteCodeTaskResultData = { result: result, log: this.context.console.getLog(), - }); + }; + task.sendSuccess(resultData); } }