fix(hub): pass resumeSessionId when resuming session (#337)

This commit is contained in:
xyzhang626
2026-03-22 06:49:14 +08:00
committed by GitHub
parent 895654ddf6
commit b6ecdc7b44
2 changed files with 58 additions and 0 deletions
+57
View File
@@ -180,4 +180,61 @@ describe('session model', () => {
engine.stop()
}
})
it('passes resume session ID to rpc gateway when resuming claude session', async () => {
const store = new Store(':memory:')
const engine = new SyncEngine(
store,
{} as never,
new RpcRegistry(),
{ broadcast() {} } as never
)
try {
const session = engine.getOrCreateSession(
'session-claude-resume',
{
path: '/tmp/project',
host: 'localhost',
machineId: 'machine-1',
flavor: 'claude',
claudeSessionId: 'claude-session-1'
},
null,
'default',
'sonnet'
)
engine.getOrCreateMachine(
'machine-1',
{ host: 'localhost', platform: 'linux', happyCliVersion: '0.1.0' },
null,
'default'
)
engine.handleMachineAlive({ machineId: 'machine-1', time: Date.now() })
let capturedResumeSessionId: string | undefined
;(engine as any).rpcGateway.spawnSession = async (
_machineId: string,
_directory: string,
_agent: string,
_model?: string,
_modelReasoningEffort?: string,
_yolo?: boolean,
_sessionType?: 'simple' | 'worktree',
_worktreeName?: string,
resumeSessionId?: string
) => {
capturedResumeSessionId = resumeSessionId
return { type: 'success', sessionId: session.id }
}
;(engine as any).waitForSessionActive = async () => true
const result = await engine.resumeSession(session.id, 'default')
expect(result).toEqual({ type: 'success', sessionId: session.id })
expect(capturedResumeSessionId).toBe('claude-session-1')
} finally {
engine.stop()
}
})
})
+1
View File
@@ -385,6 +385,7 @@ export class SyncEngine {
undefined,
undefined,
undefined,
undefined,
resumeToken
)