feat: harden runtime readiness and session workflow
This commit is contained in:
@@ -29,7 +29,7 @@ class _YamlModel(BaseModel):
|
||||
class SessionManifest(_YamlModel):
|
||||
id: str
|
||||
created_at: datetime
|
||||
status: Literal["open", "closed", "finalized"] = "open"
|
||||
status: Literal["open", "closed", "failed", "finalized"] = "open"
|
||||
question: str
|
||||
database: str
|
||||
db_schema: str = Field(alias="schema")
|
||||
|
||||
@@ -242,6 +242,25 @@ def close_session(session_id: str, sessions_root: Path) -> SessionManifest:
|
||||
return manifest
|
||||
|
||||
|
||||
def fail_session(session_id: str, sessions_root: Path) -> SessionManifest:
|
||||
"""Record a fatal managed-runtime failure without losing phase artifacts."""
|
||||
manifest = load_session(session_id, sessions_root)
|
||||
manifest.status = "failed"
|
||||
manifest.updated_at = datetime.now(UTC)
|
||||
manifest.updated_by = current_author()
|
||||
manifest.to_yaml(sessions_root / session_id / MANIFEST)
|
||||
return manifest
|
||||
|
||||
def reopen_session(session_id: str, sessions_root: Path) -> SessionManifest:
|
||||
"""Mark a manually resumed session active again."""
|
||||
manifest = load_session(session_id, sessions_root)
|
||||
manifest.status = "open"
|
||||
manifest.updated_at = datetime.now(UTC)
|
||||
manifest.updated_by = current_author()
|
||||
manifest.to_yaml(sessions_root / session_id / MANIFEST)
|
||||
return manifest
|
||||
|
||||
|
||||
def _save_touched(manifest: SessionManifest, sessions_root: Path) -> SessionManifest:
|
||||
"""Persist `manifest` updating updated_at/updated_by (single save path for mutations)."""
|
||||
manifest.updated_at = datetime.now(UTC)
|
||||
|
||||
Reference in New Issue
Block a user