@@ -1253,6 +1253,35 @@ describe("gateway server sessions", () => {
12531253 ws . close ( ) ;
12541254 } ) ;
12551255
1256+ test ( "sessions.reset can use a separate hookSourceKey for command:new context" , async ( ) => {
1257+ const { dir } = await createSessionStoreDir ( ) ;
1258+ await writeSingleLineSession ( dir , "sess-main" , "hello" ) ;
1259+
1260+ await writeSessionStore ( {
1261+ entries : {
1262+ main : { sessionId : "sess-main" , updatedAt : Date . now ( ) } ,
1263+ } ,
1264+ } ) ;
1265+
1266+ const { ws } = await openClient ( ) ;
1267+ const reset = await rpcReq < { ok : true ; key : string } > ( ws , "sessions.reset" , {
1268+ key : "agent:main:tui-hook-target" ,
1269+ reason : "new" ,
1270+ hookSourceKey : "main" ,
1271+ } ) ;
1272+ expect ( reset . ok ) . toBe ( true ) ;
1273+ expect ( sessionHookMocks . triggerInternalHook ) . toHaveBeenCalledTimes ( 1 ) ;
1274+ const event = (
1275+ sessionHookMocks . triggerInternalHook . mock . calls as unknown as Array < [ unknown ] >
1276+ ) [ 0 ] ?. [ 0 ] as { sessionKey ?: string ; context ?: { previousSessionEntry ?: unknown } } | undefined ;
1277+ if ( ! event ) {
1278+ throw new Error ( "expected session hook event" ) ;
1279+ }
1280+ expect ( event . sessionKey ) . toBe ( "agent:main:tui-hook-target" ) ;
1281+ expect ( event . context ?. previousSessionEntry ) . toMatchObject ( { sessionId : "sess-main" } ) ;
1282+ ws . close ( ) ;
1283+ } ) ;
1284+
12561285 test ( "sessions.reset returns unavailable when active run does not stop" , async ( ) => {
12571286 const { dir, storePath } = await seedActiveMainSession ( ) ;
12581287 const waitCallCountAtSnapshotClear : number [ ] = [ ] ;
0 commit comments