diff --git a/src/open-api/types.ts b/src/open-api/types.ts index 4248b437..49fa88e8 100644 --- a/src/open-api/types.ts +++ b/src/open-api/types.ts @@ -78,6 +78,7 @@ export enum TaskType { CALL_MCP_TOOL = "CALL_MCP_TOOL", LIST_MCP_TOOLS = "LIST_MCP_TOOLS", PULL_WORKFLOW_MESSAGES = "PULL_WORKFLOW_MESSAGES", + NOOP = "NOOP", } export enum ServiceType { @@ -102,7 +103,8 @@ export type TaskDefTypes = | TerminateTaskDef | JoinTaskDef | WaitTaskDef - | PullWorkflowMessagesTaskDef; + | PullWorkflowMessagesTaskDef + | NoopTaskDef; export interface DoWhileTaskDef extends CommonTaskDef { inputParameters: Record; @@ -214,6 +216,12 @@ export interface SetVariableTaskDef extends CommonTaskDef { optional?: boolean; } +export interface NoopTaskDef extends CommonTaskDef { + type: TaskType.NOOP; + inputParameters: Record; + optional?: boolean; +} + export interface SimpleTaskDef extends CommonTaskDef { type: TaskType.SIMPLE; inputParameters?: Record; diff --git a/src/sdk/builders/tasks/__tests__/factory.test.ts b/src/sdk/builders/tasks/__tests__/factory.test.ts index fffbb6b4..4bdda281 100644 --- a/src/sdk/builders/tasks/__tests__/factory.test.ts +++ b/src/sdk/builders/tasks/__tests__/factory.test.ts @@ -8,6 +8,7 @@ import { inlineTask } from "../inline"; import { joinTask } from "../join"; import { jsonJqTask } from "../jsonJq"; import { kafkaPublishTask } from "../kafkaPublish"; +import { noopTask } from "../noop"; import { setVariableTask } from "../setVariable"; import { subWorkflowTask } from "../subWorkflow"; import { switchTask } from "../switch"; @@ -269,6 +270,26 @@ describe("kafkaPublishTask", () => { }); }); +describe("noopTask", () => { + it("Should generate a NOOP task", () => { + expect(noopTask("noopRef")).toEqual({ + name: "noopRef", + taskReferenceName: "noopRef", + type: "NOOP", + inputParameters: {}, + }); + }); + + it("Should set optional when given", () => { + expect(noopTask("noopRef", true).optional).toBe(true); + }); + + it("Should be usable as a workflow task", () => { + const wf = workflow("wf", [noopTask("noopRef")]); + expect(wf.tasks[0].type).toBe("NOOP"); + }); +}); + describe("setVariableTask", () => { it("Should generate setVariableTask", () => { const tname = "setVariableTask"; diff --git a/src/sdk/builders/tasks/index.ts b/src/sdk/builders/tasks/index.ts index 2b296a95..e3d662b5 100644 --- a/src/sdk/builders/tasks/index.ts +++ b/src/sdk/builders/tasks/index.ts @@ -11,6 +11,7 @@ export * from "./inline"; export * from "./join"; export * from "./jsonJq"; export * from "./kafkaPublish"; +export * from "./noop"; export * from "./setVariable"; export * from "./simple"; export * from "./startWorkflow"; diff --git a/src/sdk/builders/tasks/noop.ts b/src/sdk/builders/tasks/noop.ts new file mode 100644 index 00000000..1f86c3d4 --- /dev/null +++ b/src/sdk/builders/tasks/noop.ts @@ -0,0 +1,12 @@ +import { TaskType, NoopTaskDef } from "../../../open-api"; + +export const noopTask = ( + taskReferenceName: string, + optional?: boolean +): NoopTaskDef => ({ + name: taskReferenceName, + taskReferenceName, + type: TaskType.NOOP, + inputParameters: {}, + optional, +});