mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-07-06 22:12:12 +02:00
Scoped codemod over surfsense_backend/app (excluding routes/, Wave E): renames search_space_id -> workspace_id, search_space -> workspace, SearchSpace -> Workspace across services, utils, tasks, agents, gateway, event_bus, notifications, podcasts, automations, observability params, and prompt .md files. Also flips the camelCase payload key searchSpaceId -> workspaceId (no backend reader; hard cutover). Preserved carve-outs (verbatim): Celery task names "delete_search_space_background" and "ai_sort_search_space" (wire names), and the OTel/metric key "search_space.id" (dashboards depend on it). Enum values 'SEARCH_SPACE' and SearchSourceConnector untouched.
45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
"""``AutomationDefinition`` — top-level envelope persisted in ``automations.definition``."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
from .execution import Execution
|
|
from .inputs import Inputs
|
|
from .metadata import Metadata
|
|
from .plan_step import PlanStep
|
|
from .trigger_spec import TriggerSpec
|
|
|
|
|
|
class AutomationModels(BaseModel):
|
|
"""Captured model profile for an automation.
|
|
|
|
Snapshotted from the workspace's model roles at create time so runs are
|
|
insulated from later chat/workspace model changes. Model-id conventions
|
|
match the shared scheme (``0`` Auto, ``< 0`` global, ``> 0`` BYOK).
|
|
"""
|
|
|
|
model_config = ConfigDict(extra="forbid")
|
|
|
|
chat_model_id: int = 0
|
|
image_gen_model_id: int = 0
|
|
vision_model_id: int = 0
|
|
|
|
|
|
class AutomationDefinition(BaseModel):
|
|
"""Top-level shape of an automation."""
|
|
|
|
model_config = ConfigDict(extra="forbid")
|
|
|
|
schema_version: str = "1.0"
|
|
name: str = Field(..., min_length=1, max_length=200)
|
|
goal: str | None = None
|
|
inputs: Inputs | None = None
|
|
triggers: list[TriggerSpec] = Field(default_factory=list)
|
|
plan: list[PlanStep] = Field(..., min_length=1)
|
|
execution: Execution = Field(default_factory=Execution)
|
|
metadata: Metadata = Field(default_factory=Metadata)
|
|
# Captured server-side at create() and preserved across update(); resolved
|
|
# at runtime instead of the live workspace. Optional so drafts/builder
|
|
# payloads validate without it.
|
|
models: AutomationModels | None = None
|