mirror of
https://github.com/HKUDS/OpenSpace.git
synced 2026-08-28 05:15:00 +00:00
91 lines
2.6 KiB
Python
91 lines
2.6 KiB
Python
"""Public persistence API for OpenSpace.
|
|
|
|
``SessionStorage`` is the canonical and only session store.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from collections.abc import Awaitable, Callable
|
|
from dataclasses import dataclass
|
|
from typing import Any
|
|
|
|
from openspace.services.session.storage import (
|
|
SessionLoadResult,
|
|
SessionMetadata,
|
|
SessionStorage,
|
|
SessionSummary as StorageSessionSummary,
|
|
TranscriptEntry,
|
|
find_session_dir,
|
|
get_project_dir,
|
|
get_project_key,
|
|
get_projects_dir,
|
|
get_session_dir,
|
|
get_sessions_dir,
|
|
list_sessions,
|
|
load_session,
|
|
)
|
|
|
|
from .file_history import (
|
|
FileDiff,
|
|
FileHistory,
|
|
FileHistoryBackup,
|
|
FileSnapshot,
|
|
RevertResult,
|
|
copy_file_history_for_resume,
|
|
)
|
|
|
|
SessionPrepare = Callable[[dict[str, Any]], Awaitable[str]]
|
|
SessionPersist = Callable[[dict[str, Any], dict[str, Any]], Awaitable[None]]
|
|
SessionRestore = Callable[[str], Awaitable[dict[str, Any]]]
|
|
SessionFork = Callable[[str], Awaitable[dict[str, Any]]]
|
|
SessionRewind = Callable[[str, list[dict[str, Any]]], Awaitable[dict[str, Any]]]
|
|
SessionDiscover = Callable[..., Awaitable[dict[str, Any]]]
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class RuntimeSessionAPI:
|
|
"""Persistence public API consumed by ``openspace.runtime.SessionRuntime``."""
|
|
|
|
prepare_session: SessionPrepare | None = None
|
|
persist_session: SessionPersist | None = None
|
|
restore_session: SessionRestore | None = None
|
|
fork_session: SessionFork | None = None
|
|
rewind_session: SessionRewind | None = None
|
|
discover_sessions: SessionDiscover | None = None
|
|
|
|
@classmethod
|
|
def from_runtime(cls, runtime: Any) -> "RuntimeSessionAPI":
|
|
"""Bridge an OpenSpaceRuntime into the persistence API surface."""
|
|
|
|
return cls(
|
|
prepare_session=getattr(runtime, "prepare_session", None),
|
|
persist_session=getattr(runtime, "persist_session", None),
|
|
restore_session=getattr(runtime, "restore_session", None),
|
|
fork_session=getattr(runtime, "fork_session", None),
|
|
rewind_session=getattr(runtime, "rewind_session", None),
|
|
discover_sessions=getattr(runtime, "discover_sessions", None),
|
|
)
|
|
|
|
|
|
__all__ = [
|
|
"FileDiff",
|
|
"FileHistory",
|
|
"FileHistoryBackup",
|
|
"FileSnapshot",
|
|
"RevertResult",
|
|
"RuntimeSessionAPI",
|
|
"SessionLoadResult",
|
|
"SessionMetadata",
|
|
"SessionStorage",
|
|
"StorageSessionSummary",
|
|
"TranscriptEntry",
|
|
"copy_file_history_for_resume",
|
|
"find_session_dir",
|
|
"get_project_dir",
|
|
"get_project_key",
|
|
"get_projects_dir",
|
|
"get_session_dir",
|
|
"get_sessions_dir",
|
|
"list_sessions",
|
|
"load_session",
|
|
]
|