from core_db import AuditMixin, Base, EntityMixin from core_shared import JSONValue from sqlalchemy import Integer, String from sqlalchemy import JSON from sqlalchemy.orm import Mapped, mapped_column class ToolConnection(EntityMixin, AuditMixin, Base): __tablename__ = "tool_connection" tool_id: Mapped[str] = mapped_column(String(36), index=True) input_schema_json: Mapped[dict[str, JSONValue] | None] = mapped_column(JSON, nullable=True) output_schema_json: Mapped[dict[str, JSONValue] | None] = mapped_column(JSON, nullable=True) invoke_config_json: Mapped[dict[str, JSONValue] | None] = mapped_column(JSON, nullable=True) timeout_ms: Mapped[int | None] = mapped_column(Integer, nullable=True) retry_policy_json: Mapped[dict[str, JSONValue] | None] = mapped_column(JSON, nullable=True)