11import { execFileSync } from 'node:child_process' ;
22import { basename } from 'node:path' ;
3- import { getDb } from '../../db ' ;
3+ import { getSessionRecord , getClaimedAgentIds , setAgentIdIfNull } from '../session-repository ' ;
44import { logger } from '../../logger' ;
55import {
66 parseGeminiSessionList ,
@@ -45,20 +45,11 @@ export function scheduleGeminiSessionCapture(
4545) : void {
4646 const deadline = Date . now ( ) + 15_000 ;
4747 const poll = async ( ) : Promise < void > => {
48- const db = getDb ( ) ;
49- const row = db . prepare (
50- 'SELECT session_type, gemini_session_id FROM sessions WHERE session_id = ?' ,
51- ) . get ( input . sessionId ) as { session_type : string ; gemini_session_id : string | null } | undefined ;
52- if ( ! row || row . session_type !== 'gemini' || row . gemini_session_id ) return ;
48+ const record = getSessionRecord ( input . sessionId ) ;
49+ if ( ! record || record . session_type !== 'gemini' || record . gemini_session_id ) return ;
5350
5451 try {
55- const claimedSessionIds = new Set (
56- (
57- db . prepare (
58- 'SELECT gemini_session_id FROM sessions WHERE gemini_session_id IS NOT NULL AND session_id != ?' ,
59- ) . all ( input . sessionId ) as { gemini_session_id : string } [ ]
60- ) . map ( ( entry ) => entry . gemini_session_id ) ,
61- ) ;
52+ const claimedSessionIds = getClaimedAgentIds ( 'gemini_session_id' , input . sessionId ) ;
6253
6354 const entries = listGeminiSessions ( input . command , input . cwd ) ;
6455 const match = selectGeminiSessionCandidate ( entries , {
@@ -67,10 +58,8 @@ export function scheduleGeminiSessionCapture(
6758 } ) ;
6859
6960 if ( match ) {
70- const result = db . prepare (
71- 'UPDATE sessions SET gemini_session_id = ? WHERE session_id = ? AND gemini_session_id IS NULL' ,
72- ) . run ( match . geminiSessionId , input . sessionId ) ;
73- if ( result . changes > 0 ) {
61+ const claimed = setAgentIdIfNull ( input . sessionId , 'gemini_session_id' , match . geminiSessionId ) ;
62+ if ( claimed ) {
7463 logger . info ( 'session' , 'Captured Gemini session ID' , {
7564 sessionId : input . sessionId ,
7665 geminiSessionId : match . geminiSessionId ,
0 commit comments