Resolve a query to a full session id. ``query`` may be: - ``"__latest__"`` — returns the most recently updated session id. - A full session id — returned as-is if it exists. - A unique prefix of a session id — expanded to the full id. Returns ``None`` if no session matches. Rai
(kb_dir: Path, query: str)
| 218 | |
| 219 | |
| 220 | def resolve_session_id(kb_dir: Path, query: str) -> str | None: |
| 221 | """Resolve a query to a full session id. |
| 222 | |
| 223 | ``query`` may be: |
| 224 | - ``"__latest__"`` — returns the most recently updated session id. |
| 225 | - A full session id — returned as-is if it exists. |
| 226 | - A unique prefix of a session id — expanded to the full id. |
| 227 | |
| 228 | Returns ``None`` if no session matches. Raises ``ValueError`` when a |
| 229 | prefix is ambiguous. |
| 230 | """ |
| 231 | sessions = list_sessions(kb_dir) |
| 232 | if not sessions: |
| 233 | return None |
| 234 | if query == "__latest__": |
| 235 | return sessions[0]["id"] |
| 236 | for s in sessions: |
| 237 | if s["id"] == query: |
| 238 | return s["id"] |
| 239 | matches = [s["id"] for s in sessions if s["id"].startswith(query)] |
| 240 | if len(matches) == 1: |
| 241 | return matches[0] |
| 242 | if len(matches) > 1: |
| 243 | raise ValueError(f"Ambiguous session prefix '{query}' matches: {', '.join(matches)}") |
| 244 | return None |
| 245 | |
| 246 | |
| 247 | def delete_session(kb_dir: Path, session_id: str) -> bool: |