diff --git a/nodejs/src/client.ts b/nodejs/src/client.ts index 65784569cc..a146874530 100644 --- a/nodejs/src/client.ts +++ b/nodejs/src/client.ts @@ -85,6 +85,7 @@ import type { TypedSessionLifecycleHandler, } from "./types.js"; import { defaultJoinSessionPermissionHandler } from "./types.js"; +import type { WorkflowHandle } from "./workflow.js"; /** * Minimum protocol version this SDK can communicate with. @@ -1657,6 +1658,23 @@ export class CopilotClient { * ``` */ async resumeSession(sessionId: string, config: ResumeSessionConfig): Promise { + return this.resumeSessionInternal(sessionId, config); + } + + /** @internal */ + async resumeSessionForExtension( + sessionId: string, + config: ResumeSessionConfig, + workflows?: WorkflowHandle[] + ): Promise { + return this.resumeSessionInternal(sessionId, config, workflows); + } + + private async resumeSessionInternal( + sessionId: string, + config: ResumeSessionConfig, + workflows?: WorkflowHandle[] + ): Promise { if (!this.connection) { await this.start(); } @@ -1673,6 +1691,7 @@ export class CopilotClient { session.registerTools(config.tools); session.registerCanvases(config.canvases); session.registerCommands(config.commands); + session.registerWorkflows(workflows); const { wireProvider: bearerWireProvider, wireProviders: bearerWireProviders, @@ -1743,6 +1762,7 @@ export class CopilotClient { })), toolSearch: config.toolSearch, canvases: config.canvases?.map((canvas) => canvas.declaration), + workflows: workflows?.map((workflow) => workflow.meta), requestCanvasRenderer: config.requestCanvasRenderer, requestExtensions: config.requestExtensions, extensionSdkPath: config.extensionSdkPath, diff --git a/nodejs/src/extension.ts b/nodejs/src/extension.ts index 72bde93bde..0d55379f5c 100644 --- a/nodejs/src/extension.ts +++ b/nodejs/src/extension.ts @@ -6,10 +6,10 @@ import { CopilotClient } from "./client.js"; import type { CopilotSession } from "./session.js"; import { defaultJoinSessionPermissionHandler, - type ExtensionInfo, type PermissionHandler, type ResumeSessionConfig, } from "./types.js"; +import type { WorkflowHandle } from "./workflow.js"; export { Canvas, @@ -27,9 +27,23 @@ export type JoinSessionConfig = Omit< "onPermissionRequest" | "extensionSdkPath" > & { onPermissionRequest?: PermissionHandler; + workflows?: WorkflowHandle[]; }; -export type { ExtensionInfo }; +export type { ExtensionInfo, WorkflowLimits, WorkflowMeta } from "./types.js"; +export { + defineWorkflow, + WorkflowRunError, + type RunOptions, + type SessionWorkflowApi, + type WorkflowAgentOptions, + type WorkflowContext, + type WorkflowDefinition, + type WorkflowHandle, + type WorkflowJsonSchema, + type WorkflowPipelineStage, + type WorkflowStepOptions, +} from "./workflow.js"; /** * Joins the current foreground session. @@ -58,14 +72,22 @@ export async function joinSession(config: JoinSessionConfig = {}): Promise