Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
fb0a670
feat: initial commit
cdavernas Mar 31, 2026
8079154
feat: implement all tasks
cdavernas Apr 1, 2026
cb69906
feat: complete workflow definition model implementation
cdavernas Apr 1, 2026
7fb8983
feat: add lissing unit tests
cdavernas Apr 1, 2026
2f31d2c
feat: start runtime implementation
cdavernas Apr 1, 2026
ae3f266
feat: moved runtime implementation to dedicated project
cdavernas Apr 1, 2026
accbcd0
feat: complete TaskExecutor implementation
cdavernas Apr 2, 2026
5c4a54b
feat: add the JSRuntimeExpressionEvaluator
cdavernas Apr 2, 2026
d890430
feat: add schema handler implementations
cdavernas Apr 3, 2026
efbd3ba
feat: add the docker container runtime
cdavernas Apr 3, 2026
430d907
feat: implement default runtime services
cdavernas Apr 3, 2026
99ae3c8
feat: add missing call models
cdavernas Apr 3, 2026
ba446e6
feat: add the default IWorkflowRuntimeBuilder implementation
cdavernas Apr 3, 2026
62adf8f
fix: change task input and output into JsonNode instead of JsonObject
cdavernas Apr 3, 2026
9b2edf8
feat: add missing model unit tests
cdavernas Apr 3, 2026
b2e3b05
feat: add fluent builders (WIP)
cdavernas Apr 3, 2026
b899f92
fix: fix the fluent builders project
cdavernas Apr 6, 2026
a9ef365
fix: fix the RaiseTaskExecutor
cdavernas Apr 6, 2026
d699d10
fix: fix unit tests
cdavernas Apr 6, 2026
18ef235
feat: add unit tests for all fluent builders
cdavernas Apr 6, 2026
a22af9f
fix: fix unit tests to include AAA sections
cdavernas Apr 6, 2026
a8d0e22
feat: add missing unit tests
cdavernas Apr 6, 2026
ce2f3e5
feat: add kubernetes container runtime
cdavernas Apr 8, 2026
595bd6f
feat: add call task executors for AsyncAPI, gRPC, HTTP and custom fun…
cdavernas Apr 8, 2026
78b9e55
fix: update solution packages
cdavernas Apr 8, 2026
ebced0a
feat: add unit tests for all call task executors
cdavernas Apr 8, 2026
3944362
feat: add new IScriptExecutorProvider and IScriptExecutor services
cdavernas Apr 9, 2026
ccbc9c4
feat: add a new CLI project
cdavernas Apr 9, 2026
24f38b3
feat: abstractions refactoring (WIP)
cdavernas Apr 9, 2026
b9d05b4
feat: continue implementation
cdavernas Apr 10, 2026
d24546f
feat: complete implementation of core runtime components
cdavernas Apr 13, 2026
de63513
feat: implement the CLI
cdavernas Apr 13, 2026
663ae03
fix: fix cloud events to avoid having to serialize payload before pub…
cdavernas Apr 13, 2026
21c9550
fix: improve performance by avoiding unecessary serialization of work…
cdavernas Apr 13, 2026
0eac5aa
fix: apply multiple fixes and improvements
cdavernas Apr 13, 2026
55c95cb
fix: fix task deserialization to prioritize for before do
cdavernas Apr 13, 2026
35ccec2
fix: fix the RunWorkflowCommand to display the proper amount of tasks
cdavernas Apr 13, 2026
2dc390a
fix: fix the do and for task executor
cdavernas Apr 13, 2026
a20415c
feat: rename IWorkflowState and ITaskState into IWorkflowInstance and…
cdavernas Apr 14, 2026
37d02ff
fix: fix unit tests
cdavernas Apr 14, 2026
4fe8606
feat: add unit tests
cdavernas Apr 14, 2026
48e7936
fix: fix unit tests
cdavernas Apr 14, 2026
8459e2e
feat: add new IO project
cdavernas Apr 15, 2026
ab150be
feat: add documentation
cdavernas Apr 15, 2026
0bece4b
feat: implement the WorkflowRunTaskExecutor
cdavernas Apr 15, 2026
c7cdce5
fix: fix CICD workflows
cdavernas Apr 15, 2026
94bfcd5
fix: fix CICD workflows
cdavernas Apr 15, 2026
0359caa
fix: fix csproj files
cdavernas Apr 15, 2026
1683c5e
fix: fix the slnx file
cdavernas Apr 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
54 changes: 54 additions & 0 deletions .claude/settings.local.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{
"permissions": {
"allow": [
"Bash(xargs grep:*)",
"Bash(xargs cat:*)",
"Bash(grep -E \"\\\\.cs$\")",
"Bash(dotnet build:*)",
"Bash(dotnet test:*)",
"Bash(ls -la src/ServerlessWorkflow.Sdk/Models/*.cs)",
"Bash(grep -h \"^namespace\" \"C:\\\\Users\\\\User\\\\source\\\\repos\\\\sdk-net/src/ServerlessWorkflow.Sdk/Models\"/*.cs)",
"Bash(find \"C:\\\\Users\\\\User\\\\source\\\\repos\\\\sdk-net/src/ServerlessWorkflow.Sdk/Models\" -name \"*.cs\" -type f -exec grep -h \"^namespace\" {})",
"Bash(find \"C:\\\\Users\\\\User\\\\source\\\\repos\\\\sdk-net/src/\" -name \"*.cs\" -type f -exec grep -l \"JsonConverter\\\\|JsonSerializable\" {})",
"Bash(ls /c/Users/User/source/repos/sdk-net/src/ServerlessWorkflow.Sdk/bin/*/net*/)",
"Bash(ls /c/Users/User/source/repos/sdk-net/src/ServerlessWorkflow.Sdk/bin/Release/net9.0/*.dll)",
"Bash(ls /c/Users/User/source/repos/sdk-net/src/ServerlessWorkflow.Sdk/bin/Release/net8.0/*.dll)",
"Bash(dotnet nuget:*)",
"Bash(dotnet package:*)",
"Bash(find \"C:\\\\Users\\\\User\\\\source\\\\repos\\\\sdk-net\\\\src\\\\ServerlessWorkflow.Sdk\" -name \"*.cs\" -type f -exec grep -l \"EquatableDictionary\" {})",
"Bash(xargs -I {} head -50 {})",
"Bash(dotnet run:*)",
"Bash(dotnet list:*)",
"Bash(find:*)",
"Bash(grep -r \"public.*class\" /c/Dev/ServerlessWorkflow/sdk-net/src/ServerlessWorkflow.Sdk.Runtime/Services/*.cs)",
"Bash(cp -r /c/Users/User/source/repos/sdk-net/src/ServerlessWorkflow.Sdk.Builders/Interfaces /c/Dev/ServerlessWorkflow/sdk-net/src/ServerlessWorkflow.Sdk.Builders/Interfaces)",
"Bash(cp /c/Users/User/source/repos/sdk-net/src/ServerlessWorkflow.Sdk.Builders/*.cs /c/Dev/ServerlessWorkflow/sdk-net/src/ServerlessWorkflow.Sdk.Builders/)",
"Bash(grep -oP '[^\\\\\\\\]+\\\\.cs')",
"Bash(dotnet add:*)",
"Bash(taskkill //F //PID 8608)",
"Bash(taskkill //F //IM ServerlessWorkflow.Sdk.UnitTests.exe)",
"Bash(ls src/ServerlessWorkflow.Sdk.Builders/*.cs)",
"Bash(ls tests/ServerlessWorkflow.Sdk.UnitTests/Cases/Builders/*.cs)",
"Bash(grep -v '//')",
"Bash(grep -v '^\\\\s*//')",
"Bash(ls tests/ServerlessWorkflow.Sdk.UnitTests/Cases/Runtime/Services/*.cs)",
"Bash(sed 's|.*/||')",
"Bash(ls src/ServerlessWorkflow.Sdk.IO/*.cs)",
"Bash(ls src/ServerlessWorkflow.Sdk.Runtime.Abstractions/*.cs src/ServerlessWorkflow.Sdk.Runtime.Abstractions/Services/*.cs)",
"Bash(taskkill /F /PID 14212)",
"Bash(taskkill /F /IM \"ServerlessWorkflow.Sdk.UnitTests.exe\")",
"Bash(cmd.exe:*)",
"Bash(grep -i \"\\\\.cs$\")",
"Bash(taskkill //F //IM \"ServerlessWorkflow.Sdk.UnitTests.exe\")",
"Bash(taskkill //F //IM \"testhost.exe\")",
"Bash(grep -n \"class.*Expressions\\\\|EvaluateAsync\\\\|EvaluateConditionAsync\" /c/Dev/ServerlessWorkflow/sdk-net/src/ServerlessWorkflow.Sdk.Runtime/Services/*.cs)",
"Bash(grep -rn \"JsonPointer\\\\.\" C:/Dev/ServerlessWorkflow/sdk-net/src/ServerlessWorkflow.Sdk.Runtime/Services/Executors/*.cs)",
"Bash(taskkill //f //im \"ServerlessWorkflow.Sdk.UnitTests.exe\")",
"Bash(taskkill //f //im dotnet.exe)",
"Bash(git -C \"C:/Dev/CNCF/ServerlessWorkflow/sdk-net\" status -s)",
"Bash(git:*)",
"Bash(sed:*)",
"Bash(grep -l \"IWorkflowRuntime\\\\|IWorkflowDefinitionStore\\\\|IWorkflowProcess\" \"C:\\\\Dev\\\\ServerlessWorkflow\\\\sdk-net\\\\src\\\\ServerlessWorkflow.Sdk.Runtime\"/**/*.cs)"
]
}
}
5 changes: 2 additions & 3 deletions .github/workflows/build-dotnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ on:
workflow_call:

env:
SOLUTION: ./ServerlessWorkflow.Sdk.sln
SOLUTION: ./ServerlessWorkflow.Sdk.slnx

jobs:
build:
Expand All @@ -32,8 +32,7 @@ jobs:
uses: actions/setup-dotnet@v2
with:
dotnet-version: |
8.0.x
9.0.x
10.0.x

- name: Restore dependencies
run: dotnet restore "${{ env.SOLUTION }}"
Expand Down
5 changes: 2 additions & 3 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
workflow_dispatch:

env:
SOLUTION: ./ServerlessWorkflow.Sdk.sln
SOLUTION: ./ServerlessWorkflow.Sdk.slnx
REGISTRY: ghcr.io

jobs:
Expand All @@ -18,8 +18,7 @@ jobs:
uses: actions/setup-dotnet@v1
with:
dotnet-version: |
8.0.x
9.0.x
10.0.x
- name: Restore dependencies
run: dotnet restore "${{ env.SOLUTION }}"
- name: Build
Expand Down
5 changes: 2 additions & 3 deletions .github/workflows/test-dotnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ on:
workflow_call:

env:
SOLUTION: ./ServerlessWorkflow.Sdk.sln
SOLUTION: ./ServerlessWorkflow.Sdk.slnx

jobs:
build:
Expand All @@ -24,8 +24,7 @@ jobs:
uses: actions/setup-dotnet@v2
with:
dotnet-version: |
8.0.x
9.0.x
10.0.x

- name: Restore dependencies
run: dotnet restore "${{ env.SOLUTION }}"
Expand Down
File renamed without changes.
87 changes: 0 additions & 87 deletions ServerlessWorkflow.Sdk.sln

This file was deleted.

40 changes: 40 additions & 0 deletions ServerlessWorkflow.Sdk.slnx
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<Solution>
<Folder Name="/.github/">
<File Path=".github/PULL_REQUEST_TEMPLATE.md" />
</Folder>
<Folder Name="/.github/ISSUE_TEMPLATE/">
<File Path=".github/ISSUE_TEMPLATE/bug.yml" />
<File Path=".github/ISSUE_TEMPLATE/config.yml" />
<File Path=".github/ISSUE_TEMPLATE/feature.yml" />
</Folder>
<Folder Name="/.github/workflows/">
<File Path=".github/workflows/build-dotnet.yml" />
<File Path=".github/workflows/ci-pipeline.yml" />
<File Path=".github/workflows/publish.yml" />
<File Path=".github/workflows/release.yml" />
<File Path=".github/workflows/test-dotnet.yml" />
<File Path=".github/workflows/versioning.yml" />
</Folder>
<Folder Name="/docs/">
<File Path="CODE_OF_CONDUCT.md" />
<File Path="CONTRIBUTING.md" />
<File Path="LICENSE" />
<File Path="MAINTAINERS.md" />
<File Path="maintainer_guidelines.md" />
<File Path="README.md" />
<File Path="SECURITY.md" />
</Folder>
<Folder Name="/src/">
<Project Path="src/ServerlessWorkflow.Sdk.Builders/ServerlessWorkflow.Sdk.Builders.csproj" Id="861e7c93-d882-47c6-819c-1b6bb24bb383" />
<Project Path="src/ServerlessWorkflow.Sdk.IO/ServerlessWorkflow.Sdk.IO.csproj" Id="d9aac545-b384-419c-aeba-fcbe4c6d1bad" />
<Project Path="src/ServerlessWorkflow.Sdk.Runtime.Abstractions/ServerlessWorkflow.Sdk.Runtime.Abstractions.csproj" />
<Project Path="src/ServerlessWorkflow.Sdk.Runtime.Cli/ServerlessWorkflow.Sdk.Runtime.Cli.csproj" />
<Project Path="src/ServerlessWorkflow.Sdk.Runtime.Docker/ServerlessWorkflow.Sdk.Runtime.Docker.csproj" Id="75437264-81aa-4a4b-9fb5-07a80bd176e2" />
<Project Path="src/ServerlessWorkflow.Sdk.Runtime.Kubernetes/ServerlessWorkflow.Sdk.Runtime.Kubernetes.csproj" Id="f22a2fff-df92-424f-b7c8-23e84c223a37" />
<Project Path="src/ServerlessWorkflow.Sdk.Runtime/ServerlessWorkflow.Sdk.Runtime.csproj" Id="ff379ac7-32ea-48b7-a3d2-921c7b04b8ab" />
<Project Path="src/ServerlessWorkflow.Sdk/ServerlessWorkflow.Sdk.csproj" />
</Folder>
<Folder Name="/tests/">
<Project Path="tests/ServerlessWorkflow.Sdk.UnitTests/ServerlessWorkflow.Sdk.UnitTests.csproj" Id="e9c6b522-c1a1-4385-b0ba-bc973f616cf5" />
</Folder>
</Solution>
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -16,83 +16,76 @@ namespace ServerlessWorkflow.Sdk.Builders;
/// <summary>
/// Represents the default implementation of the <see cref="IAuthenticationPolicyDefinitionBuilder"/> interface
/// </summary>
public class AuthenticationPolicyDefinitionBuilder
public sealed class AuthenticationPolicyDefinitionBuilder
: IAuthenticationPolicyDefinitionBuilder
{

/// <summary>
/// Gets/sets the name of the <see cref="AuthenticationPolicyDefinition"/> to use, if any
/// </summary>
protected string? Policy { get; set; }

/// <summary>
/// Gets/sets the <see cref="AuthenticationSchemeDefinition"/> to use
/// </summary>
protected IAuthenticationSchemeDefinitionBuilder? SchemeBuilder { get; set; }
string? policy;
IAuthenticationSchemeDefinitionBuilder? schemeBuilder;

/// <inheritdoc/>
public virtual void Use(string policy)
public void Use(string policy)
{
ArgumentException.ThrowIfNullOrWhiteSpace(policy);
this.Policy = policy;
this.policy = policy;
}

/// <inheritdoc/>
public virtual IBasicAuthenticationSchemeDefinitionBuilder Basic()
public IBasicAuthenticationSchemeDefinitionBuilder Basic()
{
var builder = new BasicAuthenticationSchemeDefinitionBuilder();
this.SchemeBuilder = builder;
schemeBuilder = builder;
return builder;
}

/// <inheritdoc/>
public virtual IBearerAuthenticationSchemeDefinitionBuilder Bearer()
public IBearerAuthenticationSchemeDefinitionBuilder Bearer()
{
var builder = new BearerAuthenticationSchemeDefinitionBuilder();
this.SchemeBuilder = builder;
schemeBuilder = builder;
return builder;
}

/// <inheritdoc/>
public virtual ICertificateAuthenticationSchemeDefinitionBuilder Certificate()
public ICertificateAuthenticationSchemeDefinitionBuilder Certificate()
{
var builder = new CertificateAuthenticationSchemeDefinitionBuilder();
this.SchemeBuilder = builder;
schemeBuilder = builder;
return builder;
}

/// <inheritdoc/>
public virtual IDigestAuthenticationSchemeDefinitionBuilder Digest()
public IDigestAuthenticationSchemeDefinitionBuilder Digest()
{
var builder = new DigestAuthenticationSchemeDefinitionBuilder();
this.SchemeBuilder = builder;
schemeBuilder = builder;
return builder;
}

/// <inheritdoc/>
public virtual IOAuth2AuthenticationSchemeDefinitionBuilder OAuth2()
public IOAuth2AuthenticationSchemeDefinitionBuilder OAuth2()
{
var builder = new OAuth2AuthenticationSchemeDefinitionBuilder();
this.SchemeBuilder = builder;
schemeBuilder = builder;
return builder;
}

/// <inheritdoc/>
public virtual IOpenIDConnectAuthenticationSchemeDefinitionBuilder OpenIDConnect()
public IOpenIDConnectAuthenticationSchemeDefinitionBuilder OpenIDConnect()
{
var builder = new OpenIDConnectAuthenticationSchemeDefinitionBuilder();
this.SchemeBuilder = builder;
schemeBuilder = builder;
return builder;
}

/// <inheritdoc/>
public virtual AuthenticationPolicyDefinition Build()
public AuthenticationPolicyDefinition Build()
{
if (this.SchemeBuilder == null) throw new NullReferenceException("The authentication scheme must be set");
var scheme = this.SchemeBuilder.Build();
if (schemeBuilder == null) throw new NullReferenceException("The authentication scheme must be set");
var scheme = schemeBuilder.Build();
return new()
{
Use = this.Policy,
Use = policy,
Basic = scheme is BasicAuthenticationSchemeDefinition basic ? basic : null,
Bearer = scheme is BearerAuthenticationSchemeDefinition bearer ? bearer : null,
OAuth2 = scheme is OAuth2AuthenticationSchemeDefinition oauth2 ? oauth2 : null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@ public abstract class AuthenticationSchemeDefinitionBuilder<TDefinition>
public virtual void Use(string secret)
{
ArgumentException.ThrowIfNullOrWhiteSpace(secret);
this.Secret = secret;
Secret = secret;
}

/// <inheritdoc/>
public abstract TDefinition Build();

AuthenticationSchemeDefinition IAuthenticationSchemeDefinitionBuilder.Build() => this.Build();
AuthenticationSchemeDefinition IAuthenticationSchemeDefinitionBuilder.Build() => Build();

}
Loading
Loading