feat: expand module workflows, dynamic config, notifications and console API

This commit is contained in:
wangyunlong committed 2026-09-04 09:49:37 +08:00
1 parent 8df5266abb
commit b124d757b0
309 files changed
+89357 -6231

No files matched your search

+6 -2
View File
@@ -16,7 +16,11 @@ if TYPE_CHECKING:
_ID = re.compile(r"^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$")
_RESOURCE = re.compile(r"^[A-Za-z0-9][A-Za-z0-9:._-]*$")
ReplayPolicy = Literal["guarded", "idempotent"]
# ``repeatable`` is reserved for production actions that intentionally submit
# on every invocation. Unlike ``guarded``, it does not use the business-date
# keyed effect ledger; unlike ``idempotent``, it does not claim that the
# external action itself is idempotent.
ReplayPolicy = Literal["guarded", "idempotent", "repeatable"]
class WorkflowValidationError(ValueError):
@@ -100,7 +104,7 @@ class StepDefinition:
raise WorkflowValidationError(
f"run_after_failure must be boolean for step {self.step_id!r}"
)
if self.replay_policy not in {"guarded", "idempotent"}:
if self.replay_policy not in {"guarded", "idempotent", "repeatable"}:
raise WorkflowValidationError(
f"invalid replay_policy for step {self.step_id!r}: "
f"{self.replay_policy!r}"