Metadata about a session
| 837 | |
| 838 | @dataclass |
| 839 | class SessionMetadata: |
| 840 | """Metadata about a session""" |
| 841 | |
| 842 | session_id: str # Session identifier |
| 843 | start_time: datetime # Timestamp when session was created |
| 844 | modified_time: datetime # Timestamp when session was last modified |
| 845 | is_remote: bool # Whether the session is remote |
| 846 | summary: str | None = None # Optional summary of the session |
| 847 | context: SessionContext | None = None # Working directory context |
| 848 | |
| 849 | @staticmethod |
| 850 | def from_dict(obj: Any) -> SessionMetadata: |
| 851 | assert isinstance(obj, dict) |
| 852 | session_id = obj.get("sessionId") |
| 853 | start_time = obj.get("startTime") |
| 854 | modified_time = obj.get("modifiedTime") |
| 855 | is_remote = obj.get("isRemote") |
| 856 | if session_id is None or start_time is None or modified_time is None or is_remote is None: |
| 857 | raise ValueError( |
| 858 | f"Missing required fields in SessionMetadata: sessionId={session_id}, " |
| 859 | f"startTime={start_time}, modifiedTime={modified_time}, isRemote={is_remote}" |
| 860 | ) |
| 861 | summary = obj.get("summary") |
| 862 | context_dict = obj.get("context") |
| 863 | context = SessionContext.from_dict(context_dict) if context_dict else None |
| 864 | return SessionMetadata( |
| 865 | session_id=str(session_id), |
| 866 | start_time=_parse_session_timestamp(start_time), |
| 867 | modified_time=_parse_session_timestamp(modified_time), |
| 868 | is_remote=bool(is_remote), |
| 869 | summary=summary, |
| 870 | context=context, |
| 871 | ) |
| 872 | |
| 873 | def to_dict(self) -> dict: |
| 874 | result: dict = {} |
| 875 | result["sessionId"] = self.session_id |
| 876 | result["startTime"] = self.start_time.isoformat() |
| 877 | result["modifiedTime"] = self.modified_time.isoformat() |
| 878 | result["isRemote"] = self.is_remote |
| 879 | if self.summary is not None: |
| 880 | result["summary"] = self.summary |
| 881 | if self.context is not None: |
| 882 | result["context"] = self.context.to_dict() |
| 883 | return result |
| 884 | |
| 885 | |
| 886 | def _parse_session_timestamp(value: Any) -> datetime: |
no outgoing calls
no test coverage detected
searching dependent graphs…