Commit graph

7233 commits

Author SHA1 Message Date
Sipke Schoorstra b05eb3096b
Fix flaky publish event payload test
Make the PublishEvent payload assertion case-insensitive so it tolerates JsonPayloadSerializer camelCase output after a JSON round trip.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-21 23:18:33 +02:00
Sipke Schoorstra 5cc2a7c75a
Fix publish event payload assertion casing
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-21 23:18:28 +02:00
Sipke Schoorstra e77da02d52
Fix workflow commit atomicity
Wrap SQL Server EF Core workflow commits in a provider-safe transaction and buffer commit notifications until persistence succeeds. Also preserve dirty activity context state until commit success and make bookmark queue retries resilient to processed-row deletion and transient distributed lock misses.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-21 19:58:09 +02:00
Sipke Schoorstra 7449d2e703 address greptile review feedback (greploop iteration 1)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-21 19:43:09 +02:00
Sipke Schoorstra c7912fd2c8 Fix scheduling startup backlog catch-up
Rebuild local schedules in bounded pages and stagger past-due specific-instant catch-up so orphaned scheduling bookmarks do not flood dispatch during startup.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-21 19:43:09 +02:00
Sipke Schoorstra c7a97c6412 Shorten configured application instance names
Configured stable application instance names that exceed the Azure Service Bus transport entity limit are now shortened deterministically instead of failing startup. The same configured value resolves to the same shortened name across restarts, preserving stable per-instance transport identity while supporting normal Kubernetes pod names.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-20 12:51:30 +02:00
Sipke Schoorstra 571c1c7b2c Shorten configured application instance names
Configured stable application instance names that exceed the Azure Service Bus transport entity limit are now shortened deterministically instead of failing startup. The same configured value resolves to the same shortened name across restarts, preserving stable per-instance transport identity while supporting normal Kubernetes pod names.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-20 12:50:02 +02:00
Sipke Schoorstra 6a4c141ce1 Shorten configured application instance names
Configured stable application instance names that exceed the Azure Service Bus transport entity limit are now shortened deterministically instead of failing startup. The same configured value resolves to the same shortened name across restarts, preserving stable per-instance transport identity while supporting normal Kubernetes pod names.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-20 12:50:02 +02:00
Sipke Schoorstra 29d43dadbb
Update CShells and Elsa.PackageManifest.Generator to latest versions 2026-06-20 00:58:40 +02:00
Sipke Schoorstra 4d867a2941
Merge pull request #7744 from elsa-workflows/sfmskywalker-port-asb-stable-instance-main
Forward-port stable ASB application instance names to main
2026-06-20 00:30:52 +02:00
Sipke Schoorstra ef6237c4eb
Merge pull request #7743 from elsa-workflows/sfmskywalker-port-asb-stable-instance-380
Port ASB stable application instance name to 3.8
2026-06-20 00:22:53 +02:00
Sipke Schoorstra 0028604caf
Merge pull request #7742 from elsa-workflows/sfmskywalker-port-asb-stable-instance-371
Port ASB stable application instance name fix to 3.7.1
2026-06-20 00:22:30 +02:00
Sipke Schoorstra c442c5f543
Address Greptile review feedback
- Promote boundary constants to internal in ConfiguredApplicationInstanceNameProvider
- Add InternalsVisibleTo for test assembly to eliminate constant duplication
- Update tests to reference service constants directly
- Replace probabilistic NotEqual assertions with deterministic hex-format assertions

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-20 00:13:34 +02:00
Sipke Schoorstra b08b10132c
address greptile review feedback (greploop iteration 1)
- Make validation constants internal and expose via InternalsVisibleTo so tests reference single source of truth
- Add empty-string guard to IsValidConfiguredInstanceName to prevent IndexOutOfRangeException
- Add ClusteringFeature_UsesConfiguredInstanceNameProvider test for Features.ClusteringFeature to match existing ShellFeatures coverage

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-20 00:13:33 +02:00
Sipke Schoorstra 1aef083815
fix: address greptile stable instance feedback
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-20 00:08:52 +02:00
Sipke Schoorstra 55284aa1c1
Add stable application instance name configuration
Forward-port the opt-in stable application instance name support from PR #7734 so clustered deployments can reuse per-instance transport entities across restarts while preserving random names by default.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-20 00:04:15 +02:00
Sipke Schoorstra b78649a366
Port ASB stable application instance name
Backports the opt-in configured application instance name provider from #7734 to release/3.8.0, including 3.8 shell-feature wiring and tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-20 00:03:43 +02:00
Sipke Schoorstra fc48af062c
fix: add stable application instance name option
Cherry-picked-from: e1096c714772a8a776c209fef45983538b81a3a1

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-20 00:03:16 +02:00
Sipke Schoorstra 1417e797ec
Merge pull request #7741 from elsa-workflows/sfmskywalker-fix-optout-publish-validation
Add opt-out for publish-on-validation-error failure
2026-06-19 23:58:23 +02:00
Sipke Schoorstra 6b08988edd
Fix CShells package restore in CI
CI failed during restore because the centrally pinned CShells preview version
was no longer available from the mapped cshells Feedz source. Local builds did
not reproduce while the preview packages existed in the developer NuGet cache.

Pin the CShells packages to the public 0.0.28 release and allow CShells package
IDs to resolve from NuGet.org in package source mapping, so clean CI restores no
longer depend on unavailable private/feed preview packages.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-19 23:31:54 +02:00
Sipke Schoorstra 2863c980f3
Surface publish validation warnings on API responses
In lenient mode (FailOnValidationErrors = false), PublishAsync returns
Succeeded = true while ValidationErrors may still be non-empty. Previously the
publish API endpoints discarded those warnings, so lenient-mode callers got a
200 OK with no indication of the validation issues.

- Publish and Post (save-and-publish) responses now include a ValidationErrors
  collection populated with the publish result's validation messages.
- BulkPublish response now includes a Warnings dictionary mapping each
  successfully-published definition id to its validation warning messages.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-19 23:31:39 +02:00
Sipke Schoorstra 354d59942c
Honor publish result in Publish/BulkPublish endpoints
The Publish and BulkPublish API endpoints invoked PublishAsync but ignored
the returned result.Succeeded, so publications that failed due to validation
errors were silently reported as successful. On main, strict publishing is the
default, making this a high-impact correctness issue.

- Publish endpoint: when the publish result indicates failure, surface the
  validation errors via AddError and return a 400, mirroring the existing
  save-and-publish (Post) endpoint pattern.
- BulkPublish endpoint: add a Failed bucket; definitions whose publication
  fails are recorded in Failed instead of Published, and the new bucket is
  returned on the response.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-19 23:31:39 +02:00
Sipke Schoorstra b266b32ef9
Restore trailing newline in ManagementOptions.cs
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-19 23:31:39 +02:00
Sipke Schoorstra 7981892838
Add opt-out for publish-on-validation-error failure (3.8)
This forward-ports the FailOnValidationErrors publish toggle to the 3.8
mainline. It is purely additive and changes no default behavior: publishing
a workflow definition still fails when validation errors are present
(FailOnValidationErrors defaults to true, i.e. strict = opt-out).

Setting FailOnValidationErrors to false — via
WorkflowManagementFeature.UseFailOnValidationErrors(false) or the
ManagementOptions.FailOnValidationErrors option — allows publication to
succeed while surfacing the validation errors as warnings on the publish
result. This enables publishing workflows that intentionally leave required
properties blank (for example, an empty Cron expression used to disable a
trigger).

This is the 3.8 counterpart to #7740, which introduces the same toggle as
opt-in (default false) on the 3.6.x line. References #7738.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-19 23:31:38 +02:00
Sipke Schoorstra f74087ea8b
Merge remote-tracking branch 'origin/release/3.8.0' into release/3.8.0 2026-06-18 18:27:36 +02:00
Sipke Schoorstra e9d89969b7
Add Platform integration 2026-06-18 18:27:27 +02:00
Sipke Schoorstra 8e20386a28
Merge pull request #7705 from elsa-workflows/codex/7579-tenant-agnostic-api-key
fix: use tenant-agnostic application lookup for API keys
2026-06-17 20:16:22 +02:00
Sipke Schoorstra 116381e543
Merge pull request #7729 from elsa-workflows/codex/runtime-status-read-permission
Add read-only workflow runtime status permission
2026-06-16 23:55:56 +02:00
Sipke Schoorstra 18fc26d891
Clarify runtime status permission summary 2026-06-16 23:34:13 +02:00
Sipke Schoorstra dd47148164
Add read-only workflow runtime status permission 2026-06-16 23:27:59 +02:00
Sipke Schoorstra 04d602fcd2
Merge pull request #7711 from elsa-workflows/codex/7708-notfoundactivity-guard
[codex] Guard missing NotFoundActivity descriptor during deserialization
2026-06-14 22:33:41 +02:00
Sipke Schoorstra 46cf0739e6
Merge remote-tracking branch 'origin/main' into codex/7708-notfoundactivity-guard
# Conflicts:
#	src/modules/Elsa.Workflows.Core/Serialization/Converters/ActivityJsonConverter.cs
2026-06-14 22:26:41 +02:00
Sipke Schoorstra 8f721e1ea2
Guard HTTP fault handling when workflow reload returns null (#7714)
* Guard HTTP fault handling when workflow reload returns null

* Add HTTP fault handler reload guard tests

* Address Greptile review feedback
2026-06-14 22:23:38 +02:00
Sipke Schoorstra 0d7c810688
address greptile review feedback 2026-06-14 19:07:15 +02:00
Sipke Schoorstra 48a087e71e
Restore RequestAborted after timed HTTP workflow failures (#7712)
* Fix RequestAborted restoration for timed HTTP workflows

* Add timeout restoration tests for HttpWorkflowsMiddleware
2026-06-14 19:02:23 +02:00
Sipke Schoorstra 9c24f5efe5
Dispose parsed activity JsonDocuments (#7713)
* Dispose parsed activity JsonDocuments

* Add ActivityJsonConverter disposal regression test

* Fix ActivityJsonConverter disposal regression test file

* address greptile test coverage feedback
2026-06-11 20:33:10 +02:00
Sipke Schoorstra ded765b379
docs: refresh roadmap 2026-06-10 02:05:50 +02:00
Sipke Schoorstra 42ef838323 Add regression test for missing NotFoundActivity descriptor 2026-06-09 21:28:29 +02:00
Sipke Schoorstra a5a3aa77ae Guard missing NotFoundActivity descriptor during deserialization 2026-06-09 21:28:27 +02:00
Sipke Schoorstra 1d1c68282c
fix: use tenant-agnostic application lookup for api keys 2026-06-09 06:09:47 +02:00
Sipke Schoorstra 20c1064ca5
Remove unneeded CliPath prop 2026-06-08 23:35:31 +02:00
Sipke Schoorstra c66f9aed45
Add Weaver grounding tools
Adds Spec Kit-backed Weaver grounding tools for activities, workflow definitions, workflow proposals, runtime instances, incidents, and Studio capability discovery.
2026-06-08 15:40:10 +02:00
Sipke Schoorstra c84891cdac
Merge pull request #7703 from elsa-workflows/codex/ai-provider-specific-efcore-migrations
Move AI EF Core migrations to provider projects
2026-06-08 15:23:44 +02:00
Sipke Schoorstra 5c0d8b0f4e
Move AI EF Core migrations to provider projects 2026-06-08 15:22:59 +02:00
Sipke Schoorstra f3ee587742
[codex] Fix ForEach completion from nested flowchart (#7702)
* Fix ForEach completion from nested flowchart

* Assert ForEach complete output regression

* Use break flag helper consistently

* Cover parent flowchart ForEach completion
2026-06-08 12:04:55 +02:00
Sipke Schoorstra fb4fb63c3a
Add named WithVariable overload (#7701) 2026-06-08 10:42:59 +02:00
Sipke Schoorstra 92f451e655
Add PackageManifest.props and build properties for package manifest generation 2026-06-08 09:49:12 +02:00
Sipke Schoorstra 8c4b6fa115
Merge remote-tracking branch 'origin/release/3.8.0' into release/3.8.0 2026-06-08 09:49:04 +02:00
Sipke Schoorstra c3395fe86b
Remove PackageManifestCategories and update feature categories to inline strings 2026-06-08 09:48:55 +02:00
Sipke Schoorstra b462966544
Use Copilot SDK for Weaver agent loop (#7700) 2026-06-08 00:35:47 +02:00