Foundry. Chat. SessionStore behaviour
(foundry v0.2.0)
Copy Markdown
Behaviour for Studio copilot session persistence.
Session stores handle create, read, update, delete, and listing of chat sessions. Each session is scoped to a workspace_id and project_fingerprint combination.
Summary
Callbacks
Create a new session. Requires :id, :workspace_id, :project_fingerprint in attrs.
Delete a session by ID. Returns :ok even if not found.
List all sessions for a workspace and project.
Load a single session by ID. Returns nil if not found.
Rename a session by ID.
Update a session by ID. Merges attrs and bumps :updated_at.
Types
Callbacks
Create a new session. Requires :id, :workspace_id, :project_fingerprint in attrs.
@callback delete(session_id :: session_id()) :: :ok | {:error, term()}
Delete a session by ID. Returns :ok even if not found.
@callback list( workspace_id :: workspace_id(), project_fingerprint :: project_fingerprint() ) :: {:ok, [session()]} | {:error, term()}
List all sessions for a workspace and project.
@callback load(session_id :: session_id()) :: {:ok, session() | nil} | {:error, term()}
Load a single session by ID. Returns nil if not found.
@callback rename(session_id :: session_id(), title :: String.t()) :: {:ok, session()} | {:error, term()}
Rename a session by ID.
@callback update(session_id :: session_id(), attrs :: map()) :: {:ok, session()} | {:error, term()}
Update a session by ID. Merges attrs and bumps :updated_at.