Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 16 additions & 15 deletions autobot-backend/models/activities.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,9 @@
from typing import TYPE_CHECKING, Optional

from sqlalchemy import Boolean, DateTime, ForeignKey, Integer, String, Text
from sqlalchemy.dialects.postgresql import ARRAY, JSONB, UUID
from sqlalchemy.dialects.postgresql import ARRAY, JSONB
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.types import Uuid
from user_management.models.base import Base, TimestampMixin

if TYPE_CHECKING:
Expand All @@ -40,14 +41,14 @@ class TerminalActivityModel(Base, TimestampMixin):
__tablename__ = "terminal_activities"

id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
primary_key=True,
default=uuid.uuid4,
)

# User attribution (REQUIRED)
user_id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
ForeignKey("users.id", ondelete="CASCADE"),
nullable=False,
index=True,
Expand All @@ -74,7 +75,7 @@ class TerminalActivityModel(Base, TimestampMixin):

# Secret usage tracking
secrets_used: Mapped[list[uuid.UUID]] = mapped_column(
ARRAY(UUID(as_uuid=True)),
ARRAY(Uuid(as_uuid=True)),
nullable=False,
default=list,
)
Expand Down Expand Up @@ -115,14 +116,14 @@ class FileActivityModel(Base, TimestampMixin):
__tablename__ = "file_activities"

id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
primary_key=True,
default=uuid.uuid4,
)

# User attribution (REQUIRED)
user_id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
ForeignKey("users.id", ondelete="CASCADE"),
nullable=False,
index=True,
Expand Down Expand Up @@ -192,14 +193,14 @@ class BrowserActivityModel(Base, TimestampMixin):
__tablename__ = "browser_activities"

id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
primary_key=True,
default=uuid.uuid4,
)

# User attribution (REQUIRED)
user_id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
ForeignKey("users.id", ondelete="CASCADE"),
nullable=False,
index=True,
Expand Down Expand Up @@ -230,7 +231,7 @@ class BrowserActivityModel(Base, TimestampMixin):

# Secret usage tracking
secrets_used: Mapped[list[uuid.UUID]] = mapped_column(
ARRAY(UUID(as_uuid=True)),
ARRAY(Uuid(as_uuid=True)),
nullable=False,
default=list,
)
Expand Down Expand Up @@ -271,14 +272,14 @@ class DesktopActivityModel(Base, TimestampMixin):
__tablename__ = "desktop_activities"

id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
primary_key=True,
default=uuid.uuid4,
)

# User attribution (REQUIRED)
user_id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
ForeignKey("users.id", ondelete="CASCADE"),
nullable=False,
index=True,
Expand Down Expand Up @@ -351,20 +352,20 @@ class SecretUsageModel(Base, TimestampMixin):
__tablename__ = "secret_usage"

id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
primary_key=True,
default=uuid.uuid4,
)

# Secret and user (REQUIRED)
secret_id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
nullable=False,
index=True,
)

user_id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
ForeignKey("users.id", ondelete="CASCADE"),
nullable=False,
index=True,
Expand All @@ -378,7 +379,7 @@ class SecretUsageModel(Base, TimestampMixin):
)

activity_id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
nullable=False,
index=True,
)
Expand Down
13 changes: 7 additions & 6 deletions autobot-backend/models/approval.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@
from enum import Enum

from sqlalchemy import Column, DateTime, ForeignKey, String, Text
from sqlalchemy.dialects.postgresql import JSONB, UUID
from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.orm import relationship
from sqlalchemy.types import Uuid
from user_management.models.base import Base, TimestampMixin


Expand Down Expand Up @@ -40,7 +41,7 @@ class Approval(Base, TimestampMixin):
__tablename__ = "approvals"

id = Column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
primary_key=True,
default=uuid.uuid4,
)
Expand Down Expand Up @@ -99,12 +100,12 @@ class ApprovalComment(Base, TimestampMixin):
__tablename__ = "approval_comments"

id = Column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
primary_key=True,
default=uuid.uuid4,
)
approval_id = Column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
ForeignKey("approvals.id", ondelete="CASCADE"),
nullable=False,
index=True,
Expand Down Expand Up @@ -133,12 +134,12 @@ class TaskApprovalLink(Base):
__tablename__ = "task_approval_links"

id = Column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
primary_key=True,
default=uuid.uuid4,
)
approval_id = Column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
ForeignKey("approvals.id", ondelete="CASCADE"),
nullable=False,
index=True,
Expand Down
5 changes: 3 additions & 2 deletions autobot-backend/models/config_revision.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
import uuid

from sqlalchemy import Column, String
from sqlalchemy.dialects.postgresql import JSONB, UUID
from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.types import Uuid
from user_management.models.base import Base, TimestampMixin


Expand All @@ -24,7 +25,7 @@ class ConfigRevision(Base, TimestampMixin):
__tablename__ = "config_revisions"

id = Column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
primary_key=True,
default=uuid.uuid4,
)
Expand Down
19 changes: 10 additions & 9 deletions autobot-backend/models/heartbeat.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@
String,
Text,
)
from sqlalchemy.dialects.postgresql import JSONB, UUID
from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.orm import relationship
from sqlalchemy.types import Uuid
from user_management.models.base import Base, TimestampMixin


Expand Down Expand Up @@ -51,7 +52,7 @@ class AgentRuntimeState(Base, TimestampMixin):

__tablename__ = "agent_runtime_state"

id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
id = Column(Uuid(as_uuid=True), primary_key=True, default=uuid.uuid4)
agent_id = Column(String(255), nullable=False, unique=True, index=True)
heartbeat_enabled = Column(Boolean, nullable=False, default=False)
heartbeat_interval_seconds = Column(Integer, nullable=False, default=300)
Expand Down Expand Up @@ -83,10 +84,10 @@ class HeartbeatRun(Base, TimestampMixin):

__tablename__ = "heartbeat_runs"

id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
id = Column(Uuid(as_uuid=True), primary_key=True, default=uuid.uuid4)
agent_id = Column(String(255), nullable=False, index=True)
runtime_state_id = Column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
ForeignKey("agent_runtime_state.id", ondelete="CASCADE"),
nullable=False,
index=True,
Expand Down Expand Up @@ -124,9 +125,9 @@ class HeartbeatRunEvent(Base):

__tablename__ = "heartbeat_run_events"

id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
id = Column(Uuid(as_uuid=True), primary_key=True, default=uuid.uuid4)
run_id = Column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
ForeignKey("heartbeat_runs.id", ondelete="CASCADE"),
nullable=False,
index=True,
Expand All @@ -147,10 +148,10 @@ class AgentWakeupRequest(Base, TimestampMixin):

__tablename__ = "agent_wakeup_requests"

id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
id = Column(Uuid(as_uuid=True), primary_key=True, default=uuid.uuid4)
agent_id = Column(String(255), nullable=False, index=True)
runtime_state_id = Column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
ForeignKey("agent_runtime_state.id", ondelete="CASCADE"),
nullable=False,
index=True,
Expand All @@ -159,7 +160,7 @@ class AgentWakeupRequest(Base, TimestampMixin):
context = Column(JSONB, nullable=True)
reason = Column(String(255), nullable=True)
consumed_at = Column(DateTime, nullable=True)
consumed_by_run_id = Column(UUID(as_uuid=True), nullable=True)
consumed_by_run_id = Column(Uuid(as_uuid=True), nullable=True)

runtime_state = relationship("AgentRuntimeState", back_populates="wakeup_requests")

Expand Down
11 changes: 6 additions & 5 deletions autobot-backend/models/process_run.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@
from enum import Enum

from sqlalchemy import Column, DateTime, ForeignKey, Integer, String, Text
from sqlalchemy.dialects.postgresql import JSONB, UUID
from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.orm import relationship
from sqlalchemy.types import Uuid
from user_management.models.base import Base, TimestampMixin


Expand All @@ -34,7 +35,7 @@ class ProcessRun(Base, TimestampMixin):

__tablename__ = "process_runs"

id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
id = Column(Uuid(as_uuid=True), primary_key=True, default=uuid.uuid4)
agent_id = Column(String(255), nullable=False, index=True)
task_id = Column(String(255), nullable=True, index=True)
command = Column(Text, nullable=False)
Expand Down Expand Up @@ -73,11 +74,11 @@ class TaskDecomposition(Base, TimestampMixin):

__tablename__ = "task_decompositions"

id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
id = Column(Uuid(as_uuid=True), primary_key=True, default=uuid.uuid4)
parent_task_id = Column(String(255), nullable=False, index=True)
subtask_order = Column(Integer, nullable=False)
process_run_id = Column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
ForeignKey("process_runs.id", ondelete="CASCADE"),
nullable=False,
index=True,
Expand Down Expand Up @@ -106,7 +107,7 @@ class AgentSession(Base, TimestampMixin):

__tablename__ = "agent_sessions"

id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
id = Column(Uuid(as_uuid=True), primary_key=True, default=uuid.uuid4)
agent_id = Column(String(255), nullable=False, index=True)
task_id = Column(String(255), nullable=False, index=True)
session_state = Column(JSONB, nullable=True)
Expand Down
9 changes: 5 additions & 4 deletions autobot-backend/models/secret.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@
from typing import Optional

from sqlalchemy import Boolean, DateTime, String, Text
from sqlalchemy.dialects.postgresql import JSONB, UUID
from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.types import Uuid
from user_management.models.base import Base, TimestampMixin


Expand Down Expand Up @@ -68,21 +69,21 @@ class Secret(Base, TimestampMixin):
__tablename__ = "secrets"

id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
primary_key=True,
default=uuid.uuid4,
)

# Ownership (Issue #870, #685)
owner_id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
nullable=False,
index=True,
comment="User ID who owns this secret",
)

org_id: Mapped[Optional[uuid.UUID]] = mapped_column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
nullable=True,
index=True,
comment="Organization ID for org-level secrets (Issue #685)",
Expand Down
5 changes: 3 additions & 2 deletions autobot-backend/models/session_collaboration.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@
from typing import Optional

from sqlalchemy import ForeignKey, String
from sqlalchemy.dialects.postgresql import JSONB, UUID
from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.types import Uuid
from user_management.models.base import Base, TimestampMixin


Expand Down Expand Up @@ -50,7 +51,7 @@ class SessionCollaboration(Base, TimestampMixin):
)

owner_id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True),
Uuid(as_uuid=True),
ForeignKey("users.id", ondelete="CASCADE"),
nullable=False,
index=True,
Expand Down
5 changes: 3 additions & 2 deletions autobot-backend/models/task_delegation.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
from enum import Enum

from sqlalchemy import Column, String, Text
from sqlalchemy.dialects.postgresql import JSONB, UUID
from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.types import Uuid
from user_management.models.base import Base, TimestampMixin


Expand All @@ -37,7 +38,7 @@ class TaskDelegation(Base, TimestampMixin):

__tablename__ = "task_delegations"

id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
id = Column(Uuid(as_uuid=True), primary_key=True, default=uuid.uuid4)
delegator_id = Column(String(255), nullable=False, index=True)
assignee_id = Column(String(255), nullable=False, index=True)
task_description = Column(Text, nullable=False)
Expand Down
Loading
Loading