From 7240df1a4890ab23b553933ed89ed8aa30dc5b52 Mon Sep 17 00:00:00 2001 From: Charles d'Avernas Date: Thu, 30 Oct 2025 11:25:29 +0100 Subject: [PATCH 1/6] feat: add a new mcp call Signed-off-by: Charles d'Avernas --- dsl-reference.md | 125 ++++++++++++++++++++++++++++++++++++++++++- schema/workflow.yaml | 102 +++++++++++++++++++++++++++++++++++ 2 files changed, 226 insertions(+), 1 deletion(-) diff --git a/dsl-reference.md b/dsl-reference.md index fe5c26e7..af6a444e 100644 --- a/dsl-reference.md +++ b/dsl-reference.md @@ -15,6 +15,7 @@ + [HTTP](#http-call) + [OpenAPI](#openapi-call) + [A2A](#a2a-call) + + [MCP](#mcp-call) - [Do](#do) - [Emit](#emit) - [For](#for) @@ -496,7 +497,7 @@ The [A2A Call](#a2a-call) enables workflows to interact with AI agents described | method | `string` | `yes` | The A2A JSON-RPC method to send.
*Supported values are: `message/send`, `message/stream`, `tasks/get`, `tasks/list`, `tasks/cancel`, `tasks/resubscribe`, `tasks/pushNotificationConfig/set`, `tasks/pushNotificationConfig/get`, `tasks/pushNotificationConfig/list`, `tasks/pushNotificationConfig/delete`, and `agent/getAuthenticatedExtendedCard`* | | agentCard | [`externalResource`](#external-resource) | `no` | The AgentCard resource that describes the agent to call.
*Required if `server` has not been set.* | | server | `string`\|[`endpoint`](#endpoint) | `no` | An URI or an object that describes the A2A server to call.
*Required if `agentCard` has not been set, otherwise ignored* | -| parameters | `map`
`string` | `no` | The parameters for the A2A RPC method. For the `message/send` and `message/stream` methods, runtimes must default `message.messageId` to a uuid and `message.role` to `user`.
*Can be an object or a direct runtime expression.* | +| parameters | `map`
`string` | `no` | The parameters for the A2A RPC method. For the `message/send` and `message/stream` methods, runtimes must default `message.messageId` to a uuid and `message.role` to `user`.
*Supports [runtime expressions](dsl.md#runtime-expressions).* | > [!NOTE] > The `security` and `securitySchemes` fields of the AgentCard contain authentication requirements and schemes for when communicating with the agent. @@ -527,6 +528,56 @@ do: text: Generate the Q1 sales report. ``` +##### MCP Call + +The [MCP Call](#mcp-call) enables workflows to interact with [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) servers. + +###### Properties + +| Name | Type | Required | Description| +|:-----|:----:|:--------:|:-----------| +| protocolVersion | `string` | `yes` | The version of the MCP protocol to use.
*Defaults to `2025-06-18`.* | +| method | `string` | `yes` | The MCP method to call.
*Supported values are:*
*- `tools/list`: Lists available tools*
*- `tools/call`: Calls a specific tool.*
*- `prompts/list`: Lists available prompts*
*- `prompts/get`: Gets a specific prompt.*
*- `resources/list`: Lists available resources.*
*- `resources/read`: Reads a specific resource.*
*- `resources/templates/list`: Lists available resource templates* | +| parameters | `map`
`string` | `no` | The MCP method parameters.
*Supports [runtime expressions](dsl.md#runtime-expressions).* | +| timeout | `string`
[`duration`](#duration) | `no` | The [`duration`](#duration) after which the MCP call times out. | +| transport | [`transport`](#mcp-transport) | `yes` | The transport to use to perform the MCP call. | +| client | [`client`](#mcp-client) | `no` | Describes the client used to perform the MCP call. | + +> [!IMPORTANT] +> Before making any MCP requests, runtimes **must** first send an `initialize` call to establish the connection. +> In most cases, client libraries handle this initialization automatically. + +> [!NOTE] +> On success the output of the call is the JSON-RPC result. On failure, runtimes must raise an error with type [https://serverlessworkflow.io/spec/1.0.0/errors/runtime](https://github.com/serverlessworkflow/specification/blob/main/dsl-reference.md#standard-error-types). + +###### Examples + +```yaml +document: + dsl: '1.0.1' + namespace: test + name: a2a-example + version: '0.1.0' +do: + - publishMessageToSlack: + call: mcp + with: + method: tools/call + parameters: + name: conversations_add_message + arguments: + channel_id: 'C1234567890' + thread_ts: '1623456789.123456' + payload: 'Hello, world! :wave:' + content_type: text/markdown + transport: + stdio: + command: npx + arguments: [ slack-mcp-serverr@latest, --transport, stdio ] + environment: + SLACK_MCP_XOXP_TOKEN: xoxp-xv6Cv3jKqNW8esm5YnsftKwIzoQHUzAP +``` + #### Do Serves as a fundamental building block within workflows, enabling the sequential execution of multiple subtasks. By defining a series of subtasks to perform in sequence, the Do task facilitates the efficient execution of complex operations, ensuring that each subtask is completed before the next one begins. @@ -2706,4 +2757,76 @@ References a workflow definition. name: greet namespace: samples version: '0.1.0-rc2' +``` + +### MCP Transport + +Defines the transport to use for a [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) call. + +#### Properties + +| Name | Type | Required | Description | +|:-----|:----:|:--------:|:------------| +| http | [`mcpHttpTransport`](#mcp-http-transport) | `no` | The definition of the HTTP transport to use.
*Required if `stdio` has not been set.* | +| stdio | [`mcpStdioTransport`](#mcp-stdio-transport) | `no` | The definition of the STDIO transport to use.
*Required if `http` has not been set.* | +| options | `map[string, string]` | `no` | A key/value mapping containing additional transport-specific configuration options, if any. | + +### MCP HTTP Transport + +Defines a [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) HTTP transport. + +#### Properties + +| Name | Type | Required | Description | +|:-----|:----:|:--------:|:------------| +| endpoint | `string`
[`endpoint`](#endpoint) | `yes` | An URI or an object that references the MCP server endpoint to connect to.
*Supports [runtime expressions](dsl.md#runtime-expressions).* | +| headers | `map[string, string]` | `no` | A key/value mapping of the HTTP headers to send with requests, if any. | + +#### Examples + +```yaml +transport: + http: + endpoint: https://mcp.contoso.com + headers: + authorization: Bearer 8AE4SZgJX8tw40oJJq7VJt1plKnVnH8I +``` + +### MCP STDIO Transport + +Defines a [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) STDIO transport. + +#### Properties + +| Name | Type | Required | Description | +|:-----|:----:|:--------:|:------------| +| command | `string` | `yes` | The command used to run the MCP server.
*Supports [runtime expressions](dsl.md#runtime-expressions).* | +| arguments | `string[]` | `no` | An optional list of arguments to pass to the command. | +| environment | `map[sttring, string]` | `no` | A key/value mapping, if any, of environment variables used to configure the MCP server. | + +#### Examples + +```yaml +transport: + stdio: + command: uvx + arguments: [ mcp-server-fetch ] +``` + +### MCP Client + +Describes the client of a [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) call. + +#### Properties + +| Name | Type | Required | Description | +|:-----|:----:|:--------:|:------------| +| name | `string` | `yes` | The name of the client used to connect to the MCP server. | +| version | `string` | `yes` | The version of the client used to connect to the MCP server. | + +#### Examples + +```yaml +name: synapse +version: '1.0.0-alpha5.2' ``` \ No newline at end of file diff --git a/schema/workflow.yaml b/schema/workflow.yaml index 299c33fe..72258264 100644 --- a/schema/workflow.yaml +++ b/schema/workflow.yaml @@ -473,6 +473,108 @@ $defs: description: The parameters object to send with the A2A method. required: [ method ] unevaluatedProperties: false + - title: CallMCP + description: Defines the MCP call to perform. + type: object + unevaluatedProperties: false + required: [ call, with ] + allOf: + - $ref: '#/$defs/taskBase' + - properties: + call: + type: string + const: mcp + with: + type: object + title: MCPArguments + description: The MCP call arguments. + properties: + protocolVersion: + type: string + default: '2025-06-18' + title: McpProtocolVersion + description: The version of the MCP protocol to use. + method: + type: string + enum: [ tools/list, tools/call, prompts/list, prompts/get, resources/list, resources/read, resources/templates/list ] + title: McpMethod + description: The MCP method to call. + parameters: + oneOf: + - type: object + additionalProperties: true + - type: string + title: McpMethodParameters + description: The MCP method parameters. + timeout: + $ref: '#/$defs/duration' + title: McpCallTimeout + description: The duration after which the MCP call times out. + transport: + type: object + title: McpCallTransport + description: The transport to use to perform the MCP call. + properties: + http: + type: object + title: McpHttpTransport + description: The definition of the HTTP transport to use. + properties: + endpoint: + $ref: '#/$defs/endpoint' + title: McpHttpTransportEndpoint + description: The MCP server endpoint to connect to. + headers: + type: object + additionalProperties: + type: string + title: McpHttpTransportHeaders + description: A key/value mapping of the HTTP headers to send with requests, if any. + required: [ endpoint ] + stdio: + type: object + title: McpStdioTransport + description: The definition of the STDIO transport to use. + properties: + command: + type: string + title: McpStdioTransportCommand + description: The command used to run the MCP server. + arguments: + type: array + items: + type: string + title: McpStdioTransportArguments + description: An optional list of arguments to pass to the command. + environment: + type: object + additionalProperties: + type: string + title: McpStdioTransportEnvironment + description: A key/value mapping, if any, of environment variables used to configure the MCP server. + required: [ command ] + options: + type: object + additionalProperties: + type: string + oneOf: + - required: [http] + - required: [stdio] + client: + type: object + title: McpClient + description: Describes the client used to perform the MCP call. + properties: + name: + type: string + title: McpClientName + description: The name of the client used to connect to the MCP server. + description: + type: string + title: McpClientVersion + description: The version of the client used to connect to the MCP server. + requireed: [ name, version ] + required: [ method, transport ] - title: CallFunction description: Defines the function call to perform. type: object From d556b7e36bca4008017abdf5eb3e8892f670aae5 Mon Sep 17 00:00:00 2001 From: Charles d'Avernas Date: Thu, 30 Oct 2025 11:32:44 +0100 Subject: [PATCH 2/6] fix: rename the mcp sample workflow Signed-off-by: Charles d'Avernas --- dsl-reference.md | 2 +- examples/call-mcp.yaml | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 examples/call-mcp.yaml diff --git a/dsl-reference.md b/dsl-reference.md index af6a444e..14f49e87 100644 --- a/dsl-reference.md +++ b/dsl-reference.md @@ -556,7 +556,7 @@ The [MCP Call](#mcp-call) enables workflows to interact with [Model Context Prot document: dsl: '1.0.1' namespace: test - name: a2a-example + name: mcp-example version: '0.1.0' do: - publishMessageToSlack: diff --git a/examples/call-mcp.yaml b/examples/call-mcp.yaml new file mode 100644 index 00000000..c360ad9c --- /dev/null +++ b/examples/call-mcp.yaml @@ -0,0 +1,23 @@ +document: + dsl: '1.0.1' + namespace: test + name: mcp-example + version: '0.1.0' +do: + - publishMessageToSlack: + call: mcp + with: + method: tools/call + parameters: + name: conversations_add_message + arguments: + channel_id: 'C1234567890' + thread_ts: '1623456789.123456' + payload: 'Hello, world! :wave:' + content_type: text/markdown + transport: + stdio: + command: npx + arguments: [ slack-mcp-serverr@latest, --transport, stdio ] + environment: + SLACK_MCP_XOXP_TOKEN: xoxp-xv6Cv3jKqNW8esm5YnsftKwIzoQHUzAP \ No newline at end of file From 818d741afb2a431ebd1ebe2584fd01cd7034bf8c Mon Sep 17 00:00:00 2001 From: Charles d'Avernas Date: Thu, 30 Oct 2025 11:34:08 +0100 Subject: [PATCH 3/6] fix: fix json schema version Signed-off-by: Charles d'Avernas --- .../invalid/extra-property-in-call.yaml | 2 +- .../invalid/listen-any-until-any-until.yaml | 2 +- .../invalid/two-tasks-in-one-item.yaml | 2 +- ctk/features/branch.feature | 2 +- ctk/features/call.feature | 10 +-- ctk/features/data-flow.feature | 6 +- ctk/features/do.feature | 2 +- ctk/features/emit.feature | 2 +- ctk/features/flow.feature | 4 +- ctk/features/for.feature | 2 +- ctk/features/raise.feature | 2 +- ctk/features/set.feature | 2 +- ctk/features/switch.feature | 6 +- ctk/features/try.feature | 4 +- dsl-reference.md | 78 +++++++++---------- dsl.md | 6 +- examples/accumulate-room-readings.yaml | 2 +- .../authentication-bearer-uri-format.yaml | 2 +- examples/authentication-bearer.yaml | 2 +- examples/authentication-oauth2-secret.yaml | 2 +- examples/authentication-oauth2.yaml | 2 +- examples/authentication-oidc-secret.yaml | 2 +- examples/authentication-oidc.yaml | 2 +- examples/authentication-reusable.yaml | 2 +- examples/call-asyncapi-publish.yaml | 2 +- ...all-asyncapi-subscribe-consume-amount.yaml | 2 +- ...api-subscribe-consume-forever-foreach.yaml | 2 +- ...call-asyncapi-subscribe-consume-until.yaml | 2 +- ...call-asyncapi-subscribe-consume-while.yaml | 2 +- examples/call-custom-function-cataloged.yaml | 2 +- examples/call-custom-function-inline.yaml | 2 +- examples/call-grpc.yaml | 2 +- ...http-endpoint-interpolation-shorthand.yaml | 2 +- .../call-http-endpoint-interpolation.yaml | 2 +- .../call-http-query-headers-expressions.yaml | 2 +- examples/call-http-query-parameters.yaml | 2 +- examples/call-http-redirect.yaml | 2 +- examples/call-mcp.yaml | 2 +- examples/call-openapi-redirect.yaml | 2 +- examples/call-openapi.yaml | 2 +- examples/conditional-task.yaml | 2 +- examples/do-multiple.yaml | 2 +- examples/do-single.yaml | 2 +- examples/emit.yaml | 2 +- examples/for.yaml | 2 +- examples/fork.yaml | 2 +- examples/listen-to-all read-envelope.yaml | 2 +- examples/listen-to-all.yaml | 2 +- examples/listen-to-any-filter.yaml | 2 +- examples/listen-to-any-forever-foreach.yaml | 2 +- examples/listen-to-any-until-condition.yaml | 2 +- examples/listen-to-any-until-consumed.yaml | 2 +- examples/listen-to-any.yaml | 2 +- examples/listen-to-one.yaml | 2 +- examples/mock-service-extension.yaml | 2 +- examples/raise-inline.yaml | 2 +- examples/raise-reusable.yaml | 2 +- examples/run-container-cleanup-always.yaml | 2 +- .../run-container-cleanup-eventually.yaml | 2 +- examples/run-container-with-name.yaml | 2 +- examples/run-container.yaml | 2 +- examples/run-return-all.yaml | 2 +- examples/run-return-code.yaml | 2 +- examples/run-return-none.yaml | 2 +- examples/run-return-stderr.yaml | 2 +- examples/run-script-with-arguments.yaml | 2 +- examples/run-subflow.yaml | 2 +- examples/schedule-cron.yaml | 2 +- examples/schedule-event-driven.yaml | 2 +- examples/set-expression.yaml | 2 +- examples/set.yaml | 2 +- examples/star-wars-homeworld.yaml | 2 +- examples/switch-then-string.yaml | 2 +- examples/try-catch-retry-inline.yaml | 2 +- examples/try-catch-retry-reusable.yaml | 2 +- examples/try-catch-then.yaml | 2 +- examples/try-catch.yaml | 2 +- examples/wait-duration-inline.yaml | 2 +- examples/wait-duration-iso8601.yaml | 2 +- schema/workflow.yaml | 2 +- use-cases/automated-data-backup/README.md | 2 +- .../managing-ev-charging-stations/README.md | 2 +- use-cases/managing-github-issues/README.md | 2 +- .../README.md | 2 +- 84 files changed, 134 insertions(+), 134 deletions(-) diff --git a/.ci/validation/test/fixtures/invalid/extra-property-in-call.yaml b/.ci/validation/test/fixtures/invalid/extra-property-in-call.yaml index 37e9c64e..cb91a7a5 100644 --- a/.ci/validation/test/fixtures/invalid/extra-property-in-call.yaml +++ b/.ci/validation/test/fixtures/invalid/extra-property-in-call.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: two-tasks-in-one-item version: '0.1.0' diff --git a/.ci/validation/test/fixtures/invalid/listen-any-until-any-until.yaml b/.ci/validation/test/fixtures/invalid/listen-any-until-any-until.yaml index 1fac9738..ac290844 100644 --- a/.ci/validation/test/fixtures/invalid/listen-any-until-any-until.yaml +++ b/.ci/validation/test/fixtures/invalid/listen-any-until-any-until.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: listen-to-any version: '0.1.0' diff --git a/.ci/validation/test/fixtures/invalid/two-tasks-in-one-item.yaml b/.ci/validation/test/fixtures/invalid/two-tasks-in-one-item.yaml index 7127a681..13cbac8b 100644 --- a/.ci/validation/test/fixtures/invalid/two-tasks-in-one-item.yaml +++ b/.ci/validation/test/fixtures/invalid/two-tasks-in-one-item.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: two-tasks-in-one-item version: '0.1.0' diff --git a/ctk/features/branch.feature b/ctk/features/branch.feature index f8c22e75..e8cc7c42 100644 --- a/ctk/features/branch.feature +++ b/ctk/features/branch.feature @@ -8,7 +8,7 @@ Feature: Composite Task Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: fork version: '1.0.0' diff --git a/ctk/features/call.feature b/ctk/features/call.feature index c5db44a6..30690b02 100644 --- a/ctk/features/call.feature +++ b/ctk/features/call.feature @@ -11,7 +11,7 @@ Feature: Call Task Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: http-call-with-content-output version: '1.0.0' @@ -40,7 +40,7 @@ Feature: Call Task Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: http-call-with-response-output version: '1.0.0' @@ -68,7 +68,7 @@ Feature: Call Task Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: http-call-with-basic-auth version: '1.0.0' @@ -98,7 +98,7 @@ Feature: Call Task Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: openapi-call-with-content-output version: '1.0.0' @@ -127,7 +127,7 @@ Feature: Call Task Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: openapi-call-with-response-output version: '1.0.0' diff --git a/ctk/features/data-flow.feature b/ctk/features/data-flow.feature index 2406c977..daef5276 100644 --- a/ctk/features/data-flow.feature +++ b/ctk/features/data-flow.feature @@ -8,7 +8,7 @@ Feature: Data Flow Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: output-filtering version: '1.0.0' @@ -36,7 +36,7 @@ Feature: Data Flow Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: output-filtering version: '1.0.0' @@ -65,7 +65,7 @@ Feature: Data Flow Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: non-object-output version: '1.0.0' diff --git a/ctk/features/do.feature b/ctk/features/do.feature index 4e91dc4a..41b5b238 100644 --- a/ctk/features/do.feature +++ b/ctk/features/do.feature @@ -8,7 +8,7 @@ Feature: Composite Task Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: do version: '1.0.0' diff --git a/ctk/features/emit.feature b/ctk/features/emit.feature index c5bc1806..d728363a 100644 --- a/ctk/features/emit.feature +++ b/ctk/features/emit.feature @@ -8,7 +8,7 @@ Feature: Emit Task Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: emit version: '1.0.0' diff --git a/ctk/features/flow.feature b/ctk/features/flow.feature index b7763186..73769ebe 100644 --- a/ctk/features/flow.feature +++ b/ctk/features/flow.feature @@ -7,7 +7,7 @@ Feature: Flow Directive Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: implicit-sequence version: '1.0.0' @@ -35,7 +35,7 @@ Feature: Flow Directive Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: explicit-sequence version: '1.0.0' diff --git a/ctk/features/for.feature b/ctk/features/for.feature index a179471f..c98e9063 100644 --- a/ctk/features/for.feature +++ b/ctk/features/for.feature @@ -10,7 +10,7 @@ Feature: For Task Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: for version: '1.0.0' diff --git a/ctk/features/raise.feature b/ctk/features/raise.feature index 4a497608..27fe8e03 100644 --- a/ctk/features/raise.feature +++ b/ctk/features/raise.feature @@ -7,7 +7,7 @@ Feature: Raise Task Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: raise-custom-error version: '1.0.0' diff --git a/ctk/features/set.feature b/ctk/features/set.feature index 3fce850e..b54a9164 100644 --- a/ctk/features/set.feature +++ b/ctk/features/set.feature @@ -8,7 +8,7 @@ Feature: Set Task Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: set version: '1.0.0' diff --git a/ctk/features/switch.feature b/ctk/features/switch.feature index 46dcf842..1d8d1b62 100644 --- a/ctk/features/switch.feature +++ b/ctk/features/switch.feature @@ -7,7 +7,7 @@ Feature: Switch Task Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: switch-match version: '1.0.0' @@ -52,7 +52,7 @@ Feature: Switch Task Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: switch-default-implicit version: '1.0.0' @@ -95,7 +95,7 @@ Feature: Switch Task Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: switch-default-implicit version: '1.0.0' diff --git a/ctk/features/try.feature b/ctk/features/try.feature index 017d1de2..3d6f9978 100644 --- a/ctk/features/try.feature +++ b/ctk/features/try.feature @@ -11,7 +11,7 @@ Feature: Try Task Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: try-catch-404 version: '1.0.0' @@ -55,7 +55,7 @@ Feature: Try Task Given a workflow with definition: """yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: try-catch-503 version: '1.0.0' diff --git a/dsl-reference.md b/dsl-reference.md index 14f49e87..9446e2ad 100644 --- a/dsl-reference.md +++ b/dsl-reference.md @@ -163,7 +163,7 @@ Configures a workflow's runtime expression evaluation. ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: order-pet version: '0.1.0' @@ -304,7 +304,7 @@ Enables the execution of a specified function within a workflow, allowing seamle ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: call-example version: '0.1.0' @@ -345,7 +345,7 @@ The [AsyncAPI Call](#asyncapi-call) enables workflows to interact with external ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: asyncapi-example version: '0.1.0' @@ -401,7 +401,7 @@ The [gRPC Call](#grpc-call) enables communication with external systems via the ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: grpc-example version: '0.1.0' @@ -440,7 +440,7 @@ The [HTTP Call](#http-call) enables workflows to interact with external services ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: http-example version: '0.1.0' @@ -471,7 +471,7 @@ The [OpenAPI Call](#openapi-call) enables workflows to interact with external se ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: openapi-example version: '0.1.0' @@ -510,7 +510,7 @@ The [A2A Call](#a2a-call) enables workflows to interact with AI agents described ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: a2a-example version: '0.1.0' @@ -554,7 +554,7 @@ The [MCP Call](#mcp-call) enables workflows to interact with [Model Context Prot ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: mcp-example version: '0.1.0' @@ -592,7 +592,7 @@ Serves as a fundamental building block within workflows, enabling the sequential ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: do-example version: '0.1.0' @@ -657,7 +657,7 @@ Allows workflows to publish events to event brokers or messaging systems, facili ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: emit-example version: '0.1.0' @@ -695,7 +695,7 @@ Allows workflows to iterate over a collection of items, executing a defined set ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: for-example version: '0.1.0' @@ -732,7 +732,7 @@ Allows workflows to execute multiple subtasks concurrently, enabling parallel pr ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: fork-example version: '0.1.0' @@ -785,7 +785,7 @@ Provides a mechanism for workflows to await and react to external events, enabli ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: listen-example version: '0.1.0' @@ -816,7 +816,7 @@ Intentionally triggers and propagates errors. By employing the "Raise" task, wor ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: raise-example version: '0.1.0' @@ -883,7 +883,7 @@ Provides the capability to execute external [containers](#container-process), [s ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: run-example version: '0.1.0' @@ -934,7 +934,7 @@ Enables the execution of external processes encapsulated within a containerized ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: run-container-example version: '0.1.0' @@ -977,7 +977,7 @@ Enables the execution of custom scripts or code within a workflow, empowering wo ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: run-script-example version: '0.1.0' @@ -1008,7 +1008,7 @@ Enables the execution of shell commands within a workflow, enabling workflows to ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: run-shell-example version: '0.1.0' @@ -1035,7 +1035,7 @@ Enables the invocation and execution of nested workflows within a parent workflo ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: run-workflow-example version: '0.1.0' @@ -1064,7 +1064,7 @@ A task used to set data. ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: set-example version: '0.1.0' @@ -1092,7 +1092,7 @@ Enables conditional branching within workflows, allowing them to dynamically sel ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: switch-example version: '0.1.0' @@ -1176,7 +1176,7 @@ Serves as a mechanism within workflows to handle errors gracefully, potentially ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: try-example version: '0.1.0' @@ -1233,7 +1233,7 @@ Allows workflows to pause or delay their execution for a specified period of tim ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: wait-example version: '0.1.0' @@ -1683,7 +1683,7 @@ Defines the mechanism used to authenticate users and workflows attempting to acc ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: authentication-example version: '0.1.0' @@ -1720,7 +1720,7 @@ Defines the fundamentals of a 'basic' authentication. ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: basic-authentication-example version: '0.1.0' @@ -1755,7 +1755,7 @@ Defines the fundamentals of a 'bearer' authentication ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: bearer-authentication-example version: '0.1.0' @@ -1789,7 +1789,7 @@ Defines the fundamentals of a 'digest' authentication. ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: digest-authentication-example version: '0.1.0' @@ -1840,7 +1840,7 @@ Defines the fundamentals of an 'oauth2' authentication. ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: oauth2-authentication-example version: '0.1.0' @@ -1902,7 +1902,7 @@ Defines the fundamentals of an 'oidc' authentication. ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: oidc-authentication-example version: '0.1.0' @@ -1942,7 +1942,7 @@ For more information about catalogs, refer to the [Serverless Workflow DSL docum ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: catalog-example version: '0.1.0' @@ -1982,7 +1982,7 @@ Extensions enable the execution of tasks prior to those they extend, offering th *Perform logging before and after any non-extension task is run:* ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: logging-extension-example version: '0.1.0' @@ -2017,7 +2017,7 @@ do: *Intercept HTTP calls to 'https://mocked.service.com' and mock its response:* ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: intercept-extension-example version: '0.1.0' @@ -2333,7 +2333,7 @@ Defines a workflow or task timeout. ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: timeout-example version: '0.1.0' @@ -2475,7 +2475,7 @@ Describes the result of a process. ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: run-container-example version: '0.1.0' @@ -2529,7 +2529,7 @@ Configures the target server of an AsyncAPI operation. ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: asyncapi-example version: '0.1.0' @@ -2567,7 +2567,7 @@ Configures an AsyncAPI message to publish. ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: asyncapi-example version: '0.1.0' @@ -2632,7 +2632,7 @@ Configures a subscription to an AsyncAPI operation. ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: asyncapi-example version: '0.1.0' @@ -2669,7 +2669,7 @@ Configures the lifetime of an AsyncAPI subscription ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: asyncapi-example version: '0.1.0' @@ -2707,7 +2707,7 @@ Configures the iteration over each item (event or message) consumed by a subscri ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: asyncapi-example version: '0.1.0' diff --git a/dsl.md b/dsl.md index d36a89ee..a133f5ab 100644 --- a/dsl.md +++ b/dsl.md @@ -566,7 +566,7 @@ This format ensures that the function, its version, and the catalog it belongs t *Calling a custom function defined within a catalog:* ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: catalog-example version: '0.1.0' @@ -668,7 +668,7 @@ The following example demonstrates how to use the `validateEmailAddress` custom ```yaml # workflow.yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: customFunctionWorkflow version: '0.1.0' @@ -736,7 +736,7 @@ See the [DSL reference](dsl-reference.md#extension) for more details about exten *Sample logging extension:* ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: sample-workflow version: '0.1.0' diff --git a/examples/accumulate-room-readings.yaml b/examples/accumulate-room-readings.yaml index a1b56c72..7ae0cb3c 100644 --- a/examples/accumulate-room-readings.yaml +++ b/examples/accumulate-room-readings.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: accumulate-room-readings version: '0.1.0' diff --git a/examples/authentication-bearer-uri-format.yaml b/examples/authentication-bearer-uri-format.yaml index 173df060..462a11cc 100644 --- a/examples/authentication-bearer-uri-format.yaml +++ b/examples/authentication-bearer-uri-format.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: bearer-auth version: '0.1.0' diff --git a/examples/authentication-bearer.yaml b/examples/authentication-bearer.yaml index 76c4e3f0..b3dfb08d 100644 --- a/examples/authentication-bearer.yaml +++ b/examples/authentication-bearer.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: bearer-auth-uri-format version: '0.1.0' diff --git a/examples/authentication-oauth2-secret.yaml b/examples/authentication-oauth2-secret.yaml index e48e6a42..1ad0176e 100644 --- a/examples/authentication-oauth2-secret.yaml +++ b/examples/authentication-oauth2-secret.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: oauth2-authentication version: '1.0.0' diff --git a/examples/authentication-oauth2.yaml b/examples/authentication-oauth2.yaml index cf166f6a..78ca66a8 100644 --- a/examples/authentication-oauth2.yaml +++ b/examples/authentication-oauth2.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: oauth2-authentication version: '0.1.0' diff --git a/examples/authentication-oidc-secret.yaml b/examples/authentication-oidc-secret.yaml index 3522308c..43e5d9d9 100644 --- a/examples/authentication-oidc-secret.yaml +++ b/examples/authentication-oidc-secret.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: oidc-authentication version: '1.0.0' diff --git a/examples/authentication-oidc.yaml b/examples/authentication-oidc.yaml index 9154eb43..65458b4f 100644 --- a/examples/authentication-oidc.yaml +++ b/examples/authentication-oidc.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: oidc-authentication version: '0.1.0' diff --git a/examples/authentication-reusable.yaml b/examples/authentication-reusable.yaml index 43049dba..48a1a749 100644 --- a/examples/authentication-reusable.yaml +++ b/examples/authentication-reusable.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: bearer-auth version: '0.1.0' diff --git a/examples/call-asyncapi-publish.yaml b/examples/call-asyncapi-publish.yaml index ed9fb8c9..98d14eb5 100644 --- a/examples/call-asyncapi-publish.yaml +++ b/examples/call-asyncapi-publish.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: bearer-auth version: '0.1.0' diff --git a/examples/call-asyncapi-subscribe-consume-amount.yaml b/examples/call-asyncapi-subscribe-consume-amount.yaml index 55ff0652..62f182db 100644 --- a/examples/call-asyncapi-subscribe-consume-amount.yaml +++ b/examples/call-asyncapi-subscribe-consume-amount.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: bearer-auth version: '0.1.0' diff --git a/examples/call-asyncapi-subscribe-consume-forever-foreach.yaml b/examples/call-asyncapi-subscribe-consume-forever-foreach.yaml index 6a7860ff..a42cfd17 100644 --- a/examples/call-asyncapi-subscribe-consume-forever-foreach.yaml +++ b/examples/call-asyncapi-subscribe-consume-forever-foreach.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: bearer-auth version: '0.1.0' diff --git a/examples/call-asyncapi-subscribe-consume-until.yaml b/examples/call-asyncapi-subscribe-consume-until.yaml index d9314980..154b5626 100644 --- a/examples/call-asyncapi-subscribe-consume-until.yaml +++ b/examples/call-asyncapi-subscribe-consume-until.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: bearer-auth version: '0.1.0' diff --git a/examples/call-asyncapi-subscribe-consume-while.yaml b/examples/call-asyncapi-subscribe-consume-while.yaml index 9fd9fd6c..c30075af 100644 --- a/examples/call-asyncapi-subscribe-consume-while.yaml +++ b/examples/call-asyncapi-subscribe-consume-while.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: bearer-auth version: '0.1.0' diff --git a/examples/call-custom-function-cataloged.yaml b/examples/call-custom-function-cataloged.yaml index 177a7929..76cfe898 100644 --- a/examples/call-custom-function-cataloged.yaml +++ b/examples/call-custom-function-cataloged.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: samples name: call-custom-function-cataloged version: '0.1.0' diff --git a/examples/call-custom-function-inline.yaml b/examples/call-custom-function-inline.yaml index 86c2e527..7486ea8b 100644 --- a/examples/call-custom-function-inline.yaml +++ b/examples/call-custom-function-inline.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: samples name: call-custom-function-inline version: '0.1.0' diff --git a/examples/call-grpc.yaml b/examples/call-grpc.yaml index 84fa9519..86cf556d 100644 --- a/examples/call-grpc.yaml +++ b/examples/call-grpc.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: grpc-example version: '0.1.0' diff --git a/examples/call-http-endpoint-interpolation-shorthand.yaml b/examples/call-http-endpoint-interpolation-shorthand.yaml index 33c769d7..43a7b33a 100644 --- a/examples/call-http-endpoint-interpolation-shorthand.yaml +++ b/examples/call-http-endpoint-interpolation-shorthand.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: call-http-shorthand-endpoint version: '0.1.0' diff --git a/examples/call-http-endpoint-interpolation.yaml b/examples/call-http-endpoint-interpolation.yaml index 6f18d3bf..7ce90c0c 100644 --- a/examples/call-http-endpoint-interpolation.yaml +++ b/examples/call-http-endpoint-interpolation.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: call-http-shorthand-endpoint version: '0.1.0' diff --git a/examples/call-http-query-headers-expressions.yaml b/examples/call-http-query-headers-expressions.yaml index 5ff3247f..5d41a4ca 100644 --- a/examples/call-http-query-headers-expressions.yaml +++ b/examples/call-http-query-headers-expressions.yaml @@ -1,6 +1,6 @@ # yaml-language-server: $schema=../schema/workflow.yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: http-query-headers-expressions version: '1.0.0' diff --git a/examples/call-http-query-parameters.yaml b/examples/call-http-query-parameters.yaml index f804dd1e..e918a177 100644 --- a/examples/call-http-query-parameters.yaml +++ b/examples/call-http-query-parameters.yaml @@ -1,6 +1,6 @@ # yaml-language-server: $schema=../schema/workflow.yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: http-query-params version: '1.0.0' diff --git a/examples/call-http-redirect.yaml b/examples/call-http-redirect.yaml index d6289745..d0621676 100644 --- a/examples/call-http-redirect.yaml +++ b/examples/call-http-redirect.yaml @@ -1,6 +1,6 @@ # yaml-language-server: $schema=../schema/workflow.yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: http-query-params version: '1.0.0' diff --git a/examples/call-mcp.yaml b/examples/call-mcp.yaml index c360ad9c..ed8586f3 100644 --- a/examples/call-mcp.yaml +++ b/examples/call-mcp.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: mcp-example version: '0.1.0' diff --git a/examples/call-openapi-redirect.yaml b/examples/call-openapi-redirect.yaml index a35c6e03..2d629bd6 100644 --- a/examples/call-openapi-redirect.yaml +++ b/examples/call-openapi-redirect.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: openapi-example version: '0.1.0' diff --git a/examples/call-openapi.yaml b/examples/call-openapi.yaml index 27ba3488..dc82b3f3 100644 --- a/examples/call-openapi.yaml +++ b/examples/call-openapi.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: openapi-example version: '0.1.0' diff --git a/examples/conditional-task.yaml b/examples/conditional-task.yaml index 556fa677..4dd8ed2b 100644 --- a/examples/conditional-task.yaml +++ b/examples/conditional-task.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: conditional-task version: '0.1.0' diff --git a/examples/do-multiple.yaml b/examples/do-multiple.yaml index dc78fc7b..e5421c95 100644 --- a/examples/do-multiple.yaml +++ b/examples/do-multiple.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: call-http-shorthand-endpoint version: '0.1.0' diff --git a/examples/do-single.yaml b/examples/do-single.yaml index 33c769d7..43a7b33a 100644 --- a/examples/do-single.yaml +++ b/examples/do-single.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: call-http-shorthand-endpoint version: '0.1.0' diff --git a/examples/emit.yaml b/examples/emit.yaml index c90be7b2..ece072a9 100644 --- a/examples/emit.yaml +++ b/examples/emit.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: emit version: '0.1.0' diff --git a/examples/for.yaml b/examples/for.yaml index 0e07adac..4959c790 100644 --- a/examples/for.yaml +++ b/examples/for.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: for-example version: '0.1.0' diff --git a/examples/fork.yaml b/examples/fork.yaml index 7ecb2451..aa410081 100644 --- a/examples/fork.yaml +++ b/examples/fork.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: fork-example version: '0.1.0' diff --git a/examples/listen-to-all read-envelope.yaml b/examples/listen-to-all read-envelope.yaml index a973404d..413c38da 100644 --- a/examples/listen-to-all read-envelope.yaml +++ b/examples/listen-to-all read-envelope.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: listen-to-all-read-envelope version: '0.1.0' diff --git a/examples/listen-to-all.yaml b/examples/listen-to-all.yaml index 982e476d..bd5d1d62 100644 --- a/examples/listen-to-all.yaml +++ b/examples/listen-to-all.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: listen-to-all version: '0.1.0' diff --git a/examples/listen-to-any-filter.yaml b/examples/listen-to-any-filter.yaml index f5ee19f0..650010e8 100644 --- a/examples/listen-to-any-filter.yaml +++ b/examples/listen-to-any-filter.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: listen-to-any-filter version: '0.1.0' diff --git a/examples/listen-to-any-forever-foreach.yaml b/examples/listen-to-any-forever-foreach.yaml index 840cbffd..307e55bb 100644 --- a/examples/listen-to-any-forever-foreach.yaml +++ b/examples/listen-to-any-forever-foreach.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: listen-to-any-while-foreach version: '0.1.0' diff --git a/examples/listen-to-any-until-condition.yaml b/examples/listen-to-any-until-condition.yaml index 4a1008ec..658d6d92 100644 --- a/examples/listen-to-any-until-condition.yaml +++ b/examples/listen-to-any-until-condition.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: listen-to-any version: '0.1.0' diff --git a/examples/listen-to-any-until-consumed.yaml b/examples/listen-to-any-until-consumed.yaml index 2aece6f1..3b36769e 100644 --- a/examples/listen-to-any-until-consumed.yaml +++ b/examples/listen-to-any-until-consumed.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: listen-to-any version: '0.1.0' diff --git a/examples/listen-to-any.yaml b/examples/listen-to-any.yaml index 4f56769e..a09f4f5d 100644 --- a/examples/listen-to-any.yaml +++ b/examples/listen-to-any.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: listen-to-any version: '0.1.0' diff --git a/examples/listen-to-one.yaml b/examples/listen-to-one.yaml index 884252df..584f6dc4 100644 --- a/examples/listen-to-one.yaml +++ b/examples/listen-to-one.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: listen-to-one version: '0.1.0' diff --git a/examples/mock-service-extension.yaml b/examples/mock-service-extension.yaml index dfb29d68..ba27f2fe 100644 --- a/examples/mock-service-extension.yaml +++ b/examples/mock-service-extension.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: sample-workflow version: 0.1.0 diff --git a/examples/raise-inline.yaml b/examples/raise-inline.yaml index 3592f211..7bfd4107 100644 --- a/examples/raise-inline.yaml +++ b/examples/raise-inline.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: raise-not-implemented version: '0.1.0' diff --git a/examples/raise-reusable.yaml b/examples/raise-reusable.yaml index 16b4b249..e199e030 100644 --- a/examples/raise-reusable.yaml +++ b/examples/raise-reusable.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: raise-not-implemented version: '0.1.0' diff --git a/examples/run-container-cleanup-always.yaml b/examples/run-container-cleanup-always.yaml index 5921ecb6..7c20df63 100644 --- a/examples/run-container-cleanup-always.yaml +++ b/examples/run-container-cleanup-always.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: run-container version: '0.1.0' diff --git a/examples/run-container-cleanup-eventually.yaml b/examples/run-container-cleanup-eventually.yaml index 725113f2..ce27f116 100644 --- a/examples/run-container-cleanup-eventually.yaml +++ b/examples/run-container-cleanup-eventually.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: run-container version: '0.1.0' diff --git a/examples/run-container-with-name.yaml b/examples/run-container-with-name.yaml index c10f697c..db84f151 100644 --- a/examples/run-container-with-name.yaml +++ b/examples/run-container-with-name.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: run-container-with-name version: '0.1.0' diff --git a/examples/run-container.yaml b/examples/run-container.yaml index 3e2ac953..38382d9e 100644 --- a/examples/run-container.yaml +++ b/examples/run-container.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: run-container version: '0.1.0' diff --git a/examples/run-return-all.yaml b/examples/run-return-all.yaml index ca9549c0..7605ac1e 100644 --- a/examples/run-return-all.yaml +++ b/examples/run-return-all.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: run-container version: '0.1.0' diff --git a/examples/run-return-code.yaml b/examples/run-return-code.yaml index 18441604..229fb119 100644 --- a/examples/run-return-code.yaml +++ b/examples/run-return-code.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: run-container version: '0.1.0' diff --git a/examples/run-return-none.yaml b/examples/run-return-none.yaml index 88e8d929..d6420283 100644 --- a/examples/run-return-none.yaml +++ b/examples/run-return-none.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: run-container version: '0.1.0' diff --git a/examples/run-return-stderr.yaml b/examples/run-return-stderr.yaml index 74d46ee5..36b0e3aa 100644 --- a/examples/run-return-stderr.yaml +++ b/examples/run-return-stderr.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: run-container version: '0.1.0' diff --git a/examples/run-script-with-arguments.yaml b/examples/run-script-with-arguments.yaml index db5fe32b..78a25ea6 100644 --- a/examples/run-script-with-arguments.yaml +++ b/examples/run-script-with-arguments.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: samples name: run-script-with-arguments version: 0.1.0 diff --git a/examples/run-subflow.yaml b/examples/run-subflow.yaml index 17d34694..3dd45490 100644 --- a/examples/run-subflow.yaml +++ b/examples/run-subflow.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: run-subflow version: '0.1.0' diff --git a/examples/schedule-cron.yaml b/examples/schedule-cron.yaml index b0a88720..25d6ff9c 100644 --- a/examples/schedule-cron.yaml +++ b/examples/schedule-cron.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: cron-schedule version: '0.1.0' diff --git a/examples/schedule-event-driven.yaml b/examples/schedule-event-driven.yaml index 4fee65d3..482d20fa 100644 --- a/examples/schedule-event-driven.yaml +++ b/examples/schedule-event-driven.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: event-driven-schedule version: '0.1.0' diff --git a/examples/set-expression.yaml b/examples/set-expression.yaml index cb114a99..cdc0d1d2 100644 --- a/examples/set-expression.yaml +++ b/examples/set-expression.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: set version: '0.1.0' diff --git a/examples/set.yaml b/examples/set.yaml index 41208138..1f25af28 100644 --- a/examples/set.yaml +++ b/examples/set.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: set version: '0.1.0' diff --git a/examples/star-wars-homeworld.yaml b/examples/star-wars-homeworld.yaml index c4f524ba..3bc4e621 100644 --- a/examples/star-wars-homeworld.yaml +++ b/examples/star-wars-homeworld.yaml @@ -1,6 +1,6 @@ # yaml-language-server: $schema=../schema/workflow.yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: examples name: star-wars-homeplanet version: '1.0.0' diff --git a/examples/switch-then-string.yaml b/examples/switch-then-string.yaml index ccd307d5..892e1a33 100644 --- a/examples/switch-then-string.yaml +++ b/examples/switch-then-string.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: sample-workflow version: 0.1.0 diff --git a/examples/try-catch-retry-inline.yaml b/examples/try-catch-retry-inline.yaml index 257056dc..cb29f266 100644 --- a/examples/try-catch-retry-inline.yaml +++ b/examples/try-catch-retry-inline.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: try-catch-retry version: '0.1.0' diff --git a/examples/try-catch-retry-reusable.yaml b/examples/try-catch-retry-reusable.yaml index d009e8e2..372cd730 100644 --- a/examples/try-catch-retry-reusable.yaml +++ b/examples/try-catch-retry-reusable.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: try-catch-retry version: '0.1.0' diff --git a/examples/try-catch-then.yaml b/examples/try-catch-then.yaml index 0c7cec16..f11fa1fb 100644 --- a/examples/try-catch-then.yaml +++ b/examples/try-catch-then.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: try-catch version: '0.1.0' diff --git a/examples/try-catch.yaml b/examples/try-catch.yaml index 5c9cdf9a..42378bfb 100644 --- a/examples/try-catch.yaml +++ b/examples/try-catch.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: try-catch version: '0.1.0' diff --git a/examples/wait-duration-inline.yaml b/examples/wait-duration-inline.yaml index e250fcf0..c5d340ce 100644 --- a/examples/wait-duration-inline.yaml +++ b/examples/wait-duration-inline.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: wait-duration-inline version: '0.1.0' diff --git a/examples/wait-duration-iso8601.yaml b/examples/wait-duration-iso8601.yaml index c3ca63cf..8512077f 100644 --- a/examples/wait-duration-iso8601.yaml +++ b/examples/wait-duration-iso8601.yaml @@ -1,5 +1,5 @@ document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: test name: wait-duration-8601 version: '0.1.0' diff --git a/schema/workflow.yaml b/schema/workflow.yaml index 72258264..4478a553 100644 --- a/schema/workflow.yaml +++ b/schema/workflow.yaml @@ -1,4 +1,4 @@ -$id: https://serverlessworkflow.io/schemas/1.0.1/workflow.yaml +$id: https://serverlessworkflow.io/schemas/1.0.2/workflow.yaml $schema: https://json-schema.org/draft/2020-12/schema description: Serverless Workflow DSL - Workflow Schema. type: object diff --git a/use-cases/automated-data-backup/README.md b/use-cases/automated-data-backup/README.md index dc5ddac5..c1935e9c 100644 --- a/use-cases/automated-data-backup/README.md +++ b/use-cases/automated-data-backup/README.md @@ -54,7 +54,7 @@ The following diagram represents the high-level flow of the workflow: ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: sql-export-to-minio version: 0.1.2 diff --git a/use-cases/managing-ev-charging-stations/README.md b/use-cases/managing-ev-charging-stations/README.md index 1d36a688..f9c3552d 100644 --- a/use-cases/managing-ev-charging-stations/README.md +++ b/use-cases/managing-ev-charging-stations/README.md @@ -70,7 +70,7 @@ The following diagram represents the high-level flow of the workflow: ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: manage-ev-charging-stations version: '0.1.0' diff --git a/use-cases/managing-github-issues/README.md b/use-cases/managing-github-issues/README.md index 8b6c43de..db333639 100644 --- a/use-cases/managing-github-issues/README.md +++ b/use-cases/managing-github-issues/README.md @@ -63,7 +63,7 @@ The following diagram represents the high-level flow of the workflow: ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: manage-github-issues version: '0.1.0' diff --git a/use-cases/multi-agent-ai-content-generation/README.md b/use-cases/multi-agent-ai-content-generation/README.md index 12cf00f6..f79a453c 100644 --- a/use-cases/multi-agent-ai-content-generation/README.md +++ b/use-cases/multi-agent-ai-content-generation/README.md @@ -66,7 +66,7 @@ The following diagram represents the high-level flow of the workflow: ```yaml document: - dsl: '1.0.1' + dsl: '1.0.2' namespace: default name: multi-agent-collaboration-for-ai-content version: '0.1.0' From 8b71efdff38dea3f72a1ab30f1c3627894265f8d Mon Sep 17 00:00:00 2001 From: Charles d'Avernas Date: Thu, 30 Oct 2025 11:34:29 +0100 Subject: [PATCH 4/6] Update schema/workflow.yaml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Charles d'Avernas --- schema/workflow.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schema/workflow.yaml b/schema/workflow.yaml index 4478a553..36ed7535 100644 --- a/schema/workflow.yaml +++ b/schema/workflow.yaml @@ -573,7 +573,7 @@ $defs: type: string title: McpClientVersion description: The version of the client used to connect to the MCP server. - requireed: [ name, version ] + required: [ name, version ] required: [ method, transport ] - title: CallFunction description: Defines the function call to perform. From 23a814c04cf911b5c6dd0e5319c090a5b50b318d Mon Sep 17 00:00:00 2001 From: Charles d'Avernas Date: Thu, 30 Oct 2025 11:34:36 +0100 Subject: [PATCH 5/6] Update dsl-reference.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Charles d'Avernas --- dsl-reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dsl-reference.md b/dsl-reference.md index 9446e2ad..c605988e 100644 --- a/dsl-reference.md +++ b/dsl-reference.md @@ -573,7 +573,7 @@ do: transport: stdio: command: npx - arguments: [ slack-mcp-serverr@latest, --transport, stdio ] + arguments: [ slack-mcp-server@latest, --transport, stdio ] environment: SLACK_MCP_XOXP_TOKEN: xoxp-xv6Cv3jKqNW8esm5YnsftKwIzoQHUzAP ``` From 6d59a372eea8eb8d479b85cc0a6c925a9346dc5f Mon Sep 17 00:00:00 2001 From: Charles d'Avernas Date: Thu, 30 Oct 2025 13:49:48 +0100 Subject: [PATCH 6/6] fix: fix the schema and schema validation tests Signed-off-by: Charles d'Avernas --- .ci/validation/src/index.ts | 4 ++-- schema/workflow.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.ci/validation/src/index.ts b/.ci/validation/src/index.ts index 66ce56b7..c7589196 100644 --- a/.ci/validation/src/index.ts +++ b/.ci/validation/src/index.ts @@ -24,7 +24,7 @@ export module SWSchemaValidator { const ajv = new Ajv({ strict: false, allowUnionTypes: true }); addFormats(ajv); - const workflowSchemaId = "https://serverlessworkflow.io/schemas/1.0.1/workflow.yaml"; + const workflowSchemaId = "https://serverlessworkflow.io/schemas/1.0.2/workflow.yaml"; const schemaPath = "../../../schema"; export const defaultEncoding = "utf-8"; @@ -61,7 +61,7 @@ export module SWSchemaValidator { const validate = ajv.getSchema(workflowSchemaId); if (!validate) { - throw new Error(`Failed to validate schema on workflow`); + throw new Error(`Unable to find schema with id '${workflowSchemaId }'`); } const isValid = validate(workflow); diff --git a/schema/workflow.yaml b/schema/workflow.yaml index 36ed7535..e47ff664 100644 --- a/schema/workflow.yaml +++ b/schema/workflow.yaml @@ -586,7 +586,7 @@ $defs: call: type: string not: - enum: ["asyncapi", "grpc", "http", "openapi", "a2a"] + enum: ["asyncapi", "grpc", "http", "openapi", "a2a", "mcp"] description: The name of the function to call. with: type: object