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

@@ -997,6 +997,7 @@ describe('Session', () => {
id: SessionId('header-owned'),
createdAt: 123,
cwd: '/accepted',
timeZone: 'Caller/Canonical',
parentSession: SessionId('parent'),
seedLength: 2,
}
@@ -1009,6 +1010,7 @@ describe('Session', () => {
id: 'header-owned',
createdAt: 123,
cwd: '/accepted',
timeZone: 'Caller/Canonical',
parentSession: 'parent',
seedLength: 2,
})
@@ -1063,6 +1065,7 @@ describe('Session', () => {
{ header: { ...base, createdAt: '123' }, error: /createdAt must be a non-negative safe integer/ },
{ header: { ...base, cwd: 1 }, error: /header cwd must be a string/ },
{ header: { ...base, cwd: 'relative' }, error: /header cwd must be an absolute path/ },
{ header: { ...base, timeZone: 1 }, error: /header timeZone must be a string/ },
{ header: { ...base, parentSession: 1 }, error: /header parentSession must be a string/ },
{ header: { ...base, seedLength: '1' }, error: /seedLength must be a non-negative safe integer/ },
{ header: { ...base, seedLength: 0.5 }, error: /seedLength must be a non-negative safe integer/ },
@@ -1273,16 +1276,17 @@ describe('SessionStore', () => {
expect(session.header.parentSession).toBeUndefined()
})
it('attaches cwd and parentSession from meta to the header', async () => {
it('attaches cwd, timeZone, and parentSession from meta to the header', async () => {
const ctx = new Context()
await ctx.plugin(SessionStore)
const session = ctx.sessions.create(SessionId('child'), {
meta: { cwd: '/work/project', parentSession: SessionId('parent') },
meta: { cwd: '/work/project', timeZone: 'Asia/Shanghai', parentSession: SessionId('parent') },
})
expect(session.header).toMatchObject({
version: SESSION_FORMAT_VERSION,
id: 'child',
cwd: '/work/project',
timeZone: 'Asia/Shanghai',
parentSession: 'parent',
})
})
@@ -1307,6 +1311,7 @@ describe('SessionStore', () => {
const cases: Array<{ meta: unknown; error: RegExp }> = [
{ meta: { parentSession: 1n }, error: /header is not losslessly JSON-serializable/ },
{ meta: { cwd: 1 }, error: /header cwd must be a string/ },
{ meta: { timeZone: 1 }, error: /header timeZone must be a string/ },
{ meta: { parentSession: 1 }, error: /header parentSession must be a string/ },
{ meta: { createdAt: '123' }, error: /header createdAt must be a non-negative safe integer/ },
{ meta: { createdAt: 1.5 }, error: /header createdAt must be a non-negative safe integer/ },