# @generated by scripts/generate_thread_store_bridge_python.py from __future__ import annotations from dataclasses import dataclass from typing import Any, Protocol @dataclass(frozen=True, kw_only=True) class OpaqueBytes: codec: str contentType: str data: bytes @dataclass(frozen=True, kw_only=True) class ThreadOwner: chatgptUserId: str | None = None accountId: str | None = None authMode: str | None = None @dataclass(frozen=True, kw_only=True) class RemoteThreadMetadata: threadId: str forkedFromId: str | None = None owner: ThreadOwner preview: str name: str | None = None modelProvider: str model: str | None = None serviceTier: Any | None = None reasoningEffort: Any | None = None createdAt: int updatedAt: int archivedAt: int | None = None cwd: str cliVersion: str source: Any agentNickname: str | None = None agentRole: str | None = None agentPath: str | None = None gitInfo: Any | None = None approvalMode: Any sandboxPolicy: Any tokenUsage: Any | None = None firstUserMessage: str | None = None memoryMode: str | None = None @dataclass(frozen=True, kw_only=True) class ThreadIndexPatch: updatedAt: int firstUserMessage: str | None = None preview: str | None = None name: str | None = None tokenUsage: Any | None = None memoryMode: str | None = None @dataclass(frozen=True, kw_only=True) class CreateThreadRequest: thread: RemoteThreadMetadata initialItems: OpaqueBytes initialPayloadCodec: str eventPersistenceMode: str @dataclass(frozen=True, kw_only=True) class ResumeThreadRecorderRequest: threadId: str owner: ThreadOwner includeArchived: bool eventPersistenceMode: str @dataclass(frozen=True, kw_only=True) class AppendThreadRequest: threadId: str owner: ThreadOwner idempotencyKey: str | None = None updatedAt: int | None = None newThreadMemoryMode: str | None = None eventPersistenceMode: str | None = None indexPatch: ThreadIndexPatch items: OpaqueBytes payloadCodec: str @dataclass(frozen=True, kw_only=True) class LoadThreadHistoryRequest: threadId: str owner: ThreadOwner includeArchived: bool @dataclass(frozen=True, kw_only=True) class LoadThreadHistoryResponse: threadId: str payloadCodec: str history: OpaqueBytes @dataclass(frozen=True, kw_only=True) class ReadThreadRequest: threadId: str owner: ThreadOwner includeArchived: bool includeHistory: bool @dataclass(frozen=True, kw_only=True) class ReadThreadResponse: thread: RemoteThreadMetadata historyPayloadCodec: str | None = None history: OpaqueBytes | None = None @dataclass(frozen=True, kw_only=True) class ListThreadsRequest: owner: ThreadOwner pageSize: int cursor: str | None = None sortKey: str allowedSources: list[Any] modelProviders: list[str] | None = None archived: bool cwd: str | None = None searchTerm: str | None = None @dataclass(frozen=True, kw_only=True) class ListThreadsResponse: items: list[RemoteThreadMetadata] nextCursor: str | None = None scanned: int | None = None @dataclass(frozen=True, kw_only=True) class FindThreadByNameRequest: owner: ThreadOwner name: str includeArchived: bool cwd: str | None = None allowedSources: list[Any] modelProviders: list[str] | None = None @dataclass(frozen=True, kw_only=True) class FindThreadByNameResponse: thread: RemoteThreadMetadata | None = None @dataclass(frozen=True, kw_only=True) class SetThreadNameRequest: threadId: str owner: ThreadOwner name: str @dataclass(frozen=True, kw_only=True) class UpdateThreadMetadataRequest: threadId: str owner: ThreadOwner patch: Any @dataclass(frozen=True, kw_only=True) class ArchiveThreadRequest: threadId: str owner: ThreadOwner @dataclass(frozen=True, kw_only=True) class DynamicToolsRequest: threadId: str owner: ThreadOwner @dataclass(frozen=True, kw_only=True) class DynamicToolsResponse: dynamicTools: list[Any] | None = None @dataclass(frozen=True, kw_only=True) class MemoryModeRequest: threadId: str owner: ThreadOwner @dataclass(frozen=True, kw_only=True) class MemoryModeResponse: memoryMode: str | None = None @dataclass(frozen=True, kw_only=True) class SetMemoryModeRequest: threadId: str owner: ThreadOwner memoryMode: str @dataclass(frozen=True, kw_only=True) class ThreadSpawnEdgeRecord: parentThreadId: str childThreadId: str status: str @dataclass(frozen=True, kw_only=True) class ListThreadSpawnEdgesRequest: threadId: str owner: ThreadOwner recursive: bool status: str | None = None @dataclass(frozen=True, kw_only=True) class ListThreadSpawnEdgesResponse: edges: list[ThreadSpawnEdgeRecord] @dataclass(frozen=True, kw_only=True) class FindThreadSpawnByPathRequest: threadId: str owner: ThreadOwner recursive: bool agentPath: str @dataclass(frozen=True, kw_only=True) class FindThreadSpawnByPathResponse: threadId: str | None = None class ThreadStoreBridgeService(Protocol): async def create_thread(self, request: CreateThreadRequest) -> None: ... async def resume_thread_recorder(self, request: ResumeThreadRecorderRequest) -> None: ... async def append_thread_items(self, request: AppendThreadRequest) -> None: ... async def load_thread_history(self, request: LoadThreadHistoryRequest) -> LoadThreadHistoryResponse: ... async def read_thread(self, request: ReadThreadRequest) -> ReadThreadResponse: ... async def list_threads(self, request: ListThreadsRequest) -> ListThreadsResponse: ... async def find_thread_by_name(self, request: FindThreadByNameRequest) -> FindThreadByNameResponse: ... async def set_thread_name(self, request: SetThreadNameRequest) -> None: ... async def update_thread_metadata(self, request: UpdateThreadMetadataRequest) -> ReadThreadResponse: ... async def archive_thread(self, request: ArchiveThreadRequest) -> None: ... async def unarchive_thread(self, request: ArchiveThreadRequest) -> ReadThreadResponse: ... async def dynamic_tools(self, request: DynamicToolsRequest) -> DynamicToolsResponse: ... async def memory_mode(self, request: MemoryModeRequest) -> MemoryModeResponse: ... async def set_memory_mode(self, request: SetMemoryModeRequest) -> None: ... async def mark_memory_mode_polluted(self, request: MemoryModeRequest) -> None: ... async def upsert_thread_spawn_edge(self, request: ThreadSpawnEdgeRecord) -> None: ... async def list_thread_spawn_edges(self, request: ListThreadSpawnEdgesRequest) -> ListThreadSpawnEdgesResponse: ... async def find_thread_spawn_by_path(self, request: FindThreadSpawnByPathRequest) -> FindThreadSpawnByPathResponse: ...