feat(gateways): Introduce gateway model and update agent provisioning templates

This commit is contained in:
Abhimanyu Saharan
2026-02-04 23:07:22 +05:30
parent 1297c12a73
commit b6f31fe6ea
32 changed files with 2770 additions and 724 deletions

View File

@@ -1,6 +1,7 @@
from app.models.activity_events import ActivityEvent
from app.models.agents import Agent
from app.models.boards import Board
from app.models.gateways import Gateway
from app.models.tasks import Task
from app.models.users import User
@@ -8,6 +9,7 @@ __all__ = [
"ActivityEvent",
"Agent",
"Board",
"Gateway",
"Task",
"User",
]

View File

@@ -4,7 +4,7 @@ from datetime import datetime
from typing import Any
from uuid import UUID, uuid4
from sqlalchemy import Column, JSON
from sqlalchemy import Column, JSON, Text
from sqlmodel import Field, SQLModel
@@ -20,6 +20,8 @@ class Agent(SQLModel, table=True):
heartbeat_config: dict[str, Any] | None = Field(
default=None, sa_column=Column(JSON)
)
identity_template: str | None = Field(default=None, sa_column=Column(Text))
soul_template: str | None = Field(default=None, sa_column=Column(Text))
provision_requested_at: datetime | None = Field(default=None)
provision_confirm_token_hash: str | None = Field(default=None, index=True)
provision_action: str | None = Field(default=None, index=True)

View File

@@ -14,11 +14,6 @@ class Board(TenantScoped, table=True):
id: UUID = Field(default_factory=uuid4, primary_key=True)
name: str
slug: str = Field(index=True)
gateway_url: str | None = Field(default=None)
gateway_token: str | None = Field(default=None)
gateway_main_session_key: str | None = Field(default=None)
gateway_workspace_root: str | None = Field(default=None)
identity_template: str | None = Field(default=None)
soul_template: str | None = Field(default=None)
gateway_id: UUID | None = Field(default=None, foreign_key="gateways.id", index=True)
created_at: datetime = Field(default_factory=datetime.utcnow)
updated_at: datetime = Field(default_factory=datetime.utcnow)

View File

@@ -0,0 +1,20 @@
from __future__ import annotations
from datetime import datetime
from uuid import UUID, uuid4
from sqlmodel import Field, SQLModel
class Gateway(SQLModel, table=True):
__tablename__ = "gateways"
id: UUID = Field(default_factory=uuid4, primary_key=True)
name: str
url: str
token: str | None = Field(default=None)
main_session_key: str
workspace_root: str
skyll_enabled: bool = Field(default=False)
created_at: datetime = Field(default_factory=datetime.utcnow)
updated_at: datetime = Field(default_factory=datetime.utcnow)