fix: serialize model/permissions/restoredAt fields in metadata read/write

The session-manager already writes model, permissions, and restoredAt to
metadata during spawn() and restore(), but writeMetadata() and
readMetadata() silently dropped these fields during serialization.

This caused session.metadata?.["model"] and session.metadata?.["permissions"]
to always be undefined when reading back from disk, preventing restored
sessions from preserving their original agent configuration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Prateek 2026-02-20 19:32:05 +05:30
parent 40c1906d41
commit 6cf195bbbd
2 changed files with 8 additions and 0 deletions

View File

@ -99,6 +99,9 @@ export function readMetadata(dataDir: string, sessionId: SessionId): SessionMeta
project: raw["project"],
createdAt: raw["createdAt"],
runtimeHandle: raw["runtimeHandle"],
permissions: raw["permissions"],
model: raw["model"],
restoredAt: raw["restoredAt"],
dashboardPort: raw["dashboardPort"] ? Number(raw["dashboardPort"]) : undefined,
terminalWsPort: raw["terminalWsPort"] ? Number(raw["terminalWsPort"]) : undefined,
directTerminalWsPort: raw["directTerminalWsPort"] ? Number(raw["directTerminalWsPort"]) : undefined,
@ -141,6 +144,9 @@ export function writeMetadata(
if (metadata.project) data["project"] = metadata.project;
if (metadata.createdAt) data["createdAt"] = metadata.createdAt;
if (metadata.runtimeHandle) data["runtimeHandle"] = metadata.runtimeHandle;
if (metadata.permissions) data["permissions"] = metadata.permissions;
if (metadata.model) data["model"] = metadata.model;
if (metadata.restoredAt) data["restoredAt"] = metadata.restoredAt;
if (metadata.dashboardPort !== undefined)
data["dashboardPort"] = String(metadata.dashboardPort);
if (metadata.terminalWsPort !== undefined)

View File

@ -965,6 +965,8 @@ export interface SessionMetadata {
project?: string;
createdAt?: string;
runtimeHandle?: string;
permissions?: string;
model?: string;
restoredAt?: string;
dashboardPort?: number;
terminalWsPort?: number;