feat: add python source config model

This commit is contained in:
lda
2026-06-11 18:42:30 +07:00 Verified
parent 6f753ac902
commit e1ac095df2
3 changed files with 49 additions and 1 deletions
+2
View File
@@ -7,6 +7,7 @@ from .models import (
HttpSourceTransportConfig,
LocalTargetConfig,
McpSourceConfig,
PythonSourceConfig,
RpcHttpTargetConfig,
RpcHttpTransportConfig,
ServerConfig,
@@ -25,6 +26,7 @@ __all__ = [
"HttpSourceTransportConfig",
"LocalTargetConfig",
"McpSourceConfig",
"PythonSourceConfig",
"RpcHttpTargetConfig",
"RpcHttpTransportConfig",
"ServerConfig",
+23 -1
View File
@@ -98,6 +98,28 @@ class StdlibSourceConfig(WorkflowConfigModel):
id: Literal["wf.std", "wf.recipes"]
class PythonSourceConfig(WorkflowConfigModel):
"""Static config for trusted in-process Python workflow sources."""
kind: Literal["python"] = "python"
id: str
enabled: bool = True
module: str = Field(min_length=1)
registry: str = Field(default="registry", min_length=1)
@field_validator("id")
@classmethod
def validate_source_id(cls, value: str) -> str:
if not re.fullmatch(SOURCE_ID_PATTERN, value):
raise ValueError(
"source id must start with alphanumeric or underscore and contain "
"only [A-Za-z0-9_.-]"
)
if "." not in value:
raise ValueError("source id must look like '<namespace>.<name>'")
return value
class McpSourceConfig(WorkflowConfigModel):
"""Neutral config shape for MCP-backed workflow capability sources.
@@ -134,7 +156,7 @@ class McpSourceConfig(WorkflowConfigModel):
SourceConfig = Annotated[
StdlibSourceConfig | McpSourceConfig,
StdlibSourceConfig | PythonSourceConfig | McpSourceConfig,
Field(discriminator="kind"),
]