feat(session): persist optional time zones

This commit is contained in:
pku-xht
2026-08-06 05:06:57 +08:00
committed by Tianyi Cui
parent d61059364e
commit a667ec55d6
25 changed files with 516 additions and 70 deletions

View File

@@ -35,6 +35,7 @@ export interface HeaderLine {
id: SessionId
createdAt: number
cwd?: string
timeZone?: string
parentSession?: SessionId
seedLength?: number
origin?: 'subagent'
@@ -53,6 +54,7 @@ export function toHeaderLine(header: SessionHeader): HeaderLine {
id: header.id,
createdAt: header.createdAt,
...header.cwd !== undefined ? { cwd: header.cwd } : {},
...header.timeZone !== undefined ? { timeZone: header.timeZone } : {},
...header.parentSession !== undefined ? { parentSession: header.parentSession } : {},
...header.seedLength !== undefined ? { seedLength: header.seedLength } : {},
...header.origin !== undefined ? { origin: header.origin } : {},
@@ -74,6 +76,7 @@ export function fromHeaderLine(line: HeaderLine): SessionHeader {
id: line.id,
createdAt: line.createdAt,
...line.cwd !== undefined ? { cwd: line.cwd } : {},
...line.timeZone !== undefined ? { timeZone: line.timeZone } : {},
...line.parentSession !== undefined ? { parentSession: line.parentSession } : {},
...line.seedLength !== undefined ? { seedLength: line.seedLength } : {},
...line.origin !== undefined ? { origin: line.origin } : {},
@@ -92,6 +95,8 @@ function isHeaderLine(value: unknown): value is HeaderLine {
&& Number.isSafeInteger((value as { createdAt: number }).createdAt)
&& (value as { createdAt: number }).createdAt >= 0
&& !Object.is((value as { createdAt: number }).createdAt, -0)
&& ((value as { timeZone?: unknown }).timeZone === undefined
|| typeof (value as { timeZone?: unknown }).timeZone === 'string')
&& typeof (value as { delegationDepth?: unknown }).delegationDepth === 'number'
&& Number.isSafeInteger((value as { delegationDepth: number }).delegationDepth)
&& (value as { delegationDepth: number }).delegationDepth >= 0