github-issue-tower-defence-management 1.122.4 → 1.122.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +5 -1
  3. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +14 -2
  4. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
  5. package/bin/adapter/entry-points/handlers/notifySilentTmuxSessions.js +3 -1
  6. package/bin/adapter/entry-points/handlers/notifySilentTmuxSessions.js.map +1 -1
  7. package/bin/adapter/repositories/ConfigurableSilentSessionMessageComposer.js +6 -0
  8. package/bin/adapter/repositories/ConfigurableSilentSessionMessageComposer.js.map +1 -1
  9. package/bin/adapter/repositories/NoUnansweredOwnerCallStatusProvider.js +2 -2
  10. package/bin/adapter/repositories/NoUnansweredOwnerCallStatusProvider.js.map +1 -1
  11. package/bin/adapter/repositories/TranscriptOwnerCallStatusProvider.js +14 -11
  12. package/bin/adapter/repositories/TranscriptOwnerCallStatusProvider.js.map +1 -1
  13. package/bin/domain/usecases/DefaultSilentSessionMessageComposer.js +13 -0
  14. package/bin/domain/usecases/DefaultSilentSessionMessageComposer.js.map +1 -1
  15. package/bin/domain/usecases/NotifySilentLiveSessionsUseCase.js +15 -5
  16. package/bin/domain/usecases/NotifySilentLiveSessionsUseCase.js.map +1 -1
  17. package/package.json +1 -1
  18. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +11 -0
  19. package/src/adapter/entry-points/handlers/notifySilentTmuxSessions.test.ts +46 -7
  20. package/src/adapter/entry-points/handlers/notifySilentTmuxSessions.ts +5 -0
  21. package/src/adapter/repositories/ConfigurableSilentSessionMessageComposer.test.ts +42 -0
  22. package/src/adapter/repositories/ConfigurableSilentSessionMessageComposer.ts +16 -0
  23. package/src/adapter/repositories/FileSystemInteractiveLiveSessionTranscriptResolver.test.ts +1 -1
  24. package/src/adapter/repositories/NoUnansweredOwnerCallStatusProvider.test.ts +7 -6
  25. package/src/adapter/repositories/NoUnansweredOwnerCallStatusProvider.ts +3 -3
  26. package/src/adapter/repositories/TranscriptOwnerCallStatusProvider.test.ts +99 -49
  27. package/src/adapter/repositories/TranscriptOwnerCallStatusProvider.ts +24 -14
  28. package/src/domain/entities/LiveSessionActivitySnapshot.ts +1 -1
  29. package/src/domain/usecases/DefaultSilentSessionMessageComposer.test.ts +75 -0
  30. package/src/domain/usecases/DefaultSilentSessionMessageComposer.ts +26 -0
  31. package/src/domain/usecases/NotifySilentLiveSessionsUseCase.test.ts +106 -10
  32. package/src/domain/usecases/NotifySilentLiveSessionsUseCase.ts +24 -6
  33. package/src/domain/usecases/adapter-interfaces/OwnerCallStatusProvider.ts +2 -2
  34. package/src/domain/usecases/adapter-interfaces/SilentSessionMessageComposer.ts +4 -0
  35. package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
  36. package/types/adapter/entry-points/handlers/notifySilentTmuxSessions.d.ts +2 -0
  37. package/types/adapter/entry-points/handlers/notifySilentTmuxSessions.d.ts.map +1 -1
  38. package/types/adapter/repositories/ConfigurableSilentSessionMessageComposer.d.ts +2 -0
  39. package/types/adapter/repositories/ConfigurableSilentSessionMessageComposer.d.ts.map +1 -1
  40. package/types/adapter/repositories/NoUnansweredOwnerCallStatusProvider.d.ts +1 -1
  41. package/types/adapter/repositories/NoUnansweredOwnerCallStatusProvider.d.ts.map +1 -1
  42. package/types/adapter/repositories/TranscriptOwnerCallStatusProvider.d.ts +2 -2
  43. package/types/adapter/repositories/TranscriptOwnerCallStatusProvider.d.ts.map +1 -1
  44. package/types/domain/entities/LiveSessionActivitySnapshot.d.ts +1 -1
  45. package/types/domain/entities/LiveSessionActivitySnapshot.d.ts.map +1 -1
  46. package/types/domain/usecases/DefaultSilentSessionMessageComposer.d.ts +1 -0
  47. package/types/domain/usecases/DefaultSilentSessionMessageComposer.d.ts.map +1 -1
  48. package/types/domain/usecases/NotifySilentLiveSessionsUseCase.d.ts +2 -0
  49. package/types/domain/usecases/NotifySilentLiveSessionsUseCase.d.ts.map +1 -1
  50. package/types/domain/usecases/adapter-interfaces/OwnerCallStatusProvider.d.ts +1 -1
  51. package/types/domain/usecases/adapter-interfaces/OwnerCallStatusProvider.d.ts.map +1 -1
  52. package/types/domain/usecases/adapter-interfaces/SilentSessionMessageComposer.d.ts +1 -0
  53. package/types/domain/usecases/adapter-interfaces/SilentSessionMessageComposer.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"NotifySilentLiveSessionsUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/NotifySilentLiveSessionsUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NotifySilentLiveSessionsUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/NotifySilentLiveSessionsUseCase.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-issue-tower-defence-management",
3
- "version": "1.122.4",
3
+ "version": "1.122.5",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -115,6 +115,7 @@ export class HandleScheduledEventUseCaseHandler {
115
115
  subAgentProcessMatchPattern?: string;
116
116
  subAgentTranscriptRootDirectory?: string;
117
117
  mainSilentThresholdSeconds?: number;
118
+ unansweredOwnerCallGraceSeconds?: number;
118
119
  subAgentSilentThresholdSeconds?: number;
119
120
  subAgentRunningThresholdSeconds?: number;
120
121
  silentNotificationStaggerSeconds?: number;
@@ -124,6 +125,7 @@ export class HandleScheduledEventUseCaseHandler {
124
125
  hubTaskStatusCacheStateFilePath?: string;
125
126
  hubTaskStatusCacheTtlSeconds?: number;
126
127
  silentMainStalledMessage?: string;
128
+ silentMainStalledStaleOwnerCallMessage?: string;
127
129
  silentSubAgentIdleMessageHeader?: string;
128
130
  silentSubAgentIdleMessageFooter?: string;
129
131
  silentSubAgentLongRunningMessageHeader?: string;
@@ -599,6 +601,11 @@ export class HandleScheduledEventUseCaseHandler {
599
601
  process.env.TDPM_MAIN_SILENT_THRESHOLD_SECONDS,
600
602
  DEFAULT_NOTIFY_SILENT_TMUX_SESSIONS_PARAMS.mainSilentThresholdSeconds,
601
603
  ),
604
+ unansweredOwnerCallGraceSeconds: readSilentSeconds(
605
+ mergedInput.unansweredOwnerCallGraceSeconds,
606
+ process.env.TDPM_SILENT_UNANSWERED_OWNER_CALL_GRACE_SECONDS,
607
+ DEFAULT_NOTIFY_SILENT_TMUX_SESSIONS_PARAMS.unansweredOwnerCallGraceSeconds,
608
+ ),
602
609
  subAgentSilentThresholdSeconds: readSilentSeconds(
603
610
  mergedInput.subAgentSilentThresholdSeconds,
604
611
  process.env.TDPM_SUBAGENT_SILENT_THRESHOLD_SECONDS,
@@ -642,6 +649,10 @@ export class HandleScheduledEventUseCaseHandler {
642
649
  mergedInput.silentMainStalledMessage ??
643
650
  process.env.TDPM_SILENT_MAIN_STALLED_MESSAGE ??
644
651
  null,
652
+ mainStalledStaleOwnerCallMessage:
653
+ mergedInput.silentMainStalledStaleOwnerCallMessage ??
654
+ process.env.TDPM_SILENT_MAIN_STALLED_STALE_OWNER_CALL_MESSAGE ??
655
+ null,
645
656
  subAgentIdleMessageHeader:
646
657
  mergedInput.silentSubAgentIdleMessageHeader ??
647
658
  process.env.TDPM_SILENT_SUBAGENT_IDLE_MESSAGE_HEADER ??
@@ -20,6 +20,7 @@ const CLAUDE_PID = 201;
20
20
 
21
21
  const EMPTY_TEMPLATES: SilentSessionMessageTemplates = {
22
22
  mainStalledMessage: null,
23
+ mainStalledStaleOwnerCallMessage: null,
23
24
  subAgentIdleMessageHeader: null,
24
25
  subAgentIdleMessageFooter: null,
25
26
  subAgentLongRunningMessageHeader: null,
@@ -221,11 +222,8 @@ describe('notifySilentTmuxSessions', () => {
221
222
  await notifySilentTmuxSessions({
222
223
  ...baseParams(runner),
223
224
  messageTemplates: {
225
+ ...EMPTY_TEMPLATES,
224
226
  mainStalledMessage: 'CUSTOM_MAIN_TEMPLATE',
225
- subAgentIdleMessageHeader: null,
226
- subAgentIdleMessageFooter: null,
227
- subAgentLongRunningMessageHeader: null,
228
- subAgentLongRunningMessageFooter: null,
229
227
  },
230
228
  });
231
229
 
@@ -240,8 +238,8 @@ describe('notifySilentTmuxSessions', () => {
240
238
  );
241
239
  });
242
240
 
243
- it('suppresses the notification whenever an owner call is unanswered, regardless of how long the session has been silent', async () => {
244
- const stalePendingOwnerCall = new Date(
241
+ it('suppresses the notification while the unanswered owner call is younger than the grace period', async () => {
242
+ const recentPendingOwnerCall = new Date(
245
243
  (NOW_EPOCH_SECONDS - 11 * 60) * 1000,
246
244
  ).toISOString();
247
245
  writeTranscript([
@@ -252,7 +250,7 @@ describe('notifySilentTmuxSessions', () => {
252
250
  },
253
251
  {
254
252
  type: 'assistant',
255
- timestamp: stalePendingOwnerCall,
253
+ timestamp: recentPendingOwnerCall,
256
254
  message: {
257
255
  role: 'assistant',
258
256
  stop_reason: 'end_turn',
@@ -262,6 +260,7 @@ describe('notifySilentTmuxSessions', () => {
262
260
  },
263
261
  },
264
262
  ]);
263
+ seedPreviousCandidates([SESSION_NAME]);
265
264
  const runner = liveSessionRunner();
266
265
 
267
266
  await notifySilentTmuxSessions({
@@ -275,6 +274,46 @@ describe('notifySilentTmuxSessions', () => {
275
274
  expect(sendCall).toBeUndefined();
276
275
  });
277
276
 
277
+ it('sends the stale-owner-call reminder once the unanswered owner call is older than the grace period', async () => {
278
+ const stalePendingOwnerCall = new Date(
279
+ (NOW_EPOCH_SECONDS - 2 * 60 * 60) * 1000,
280
+ ).toISOString();
281
+ writeTranscript([
282
+ {
283
+ type: 'user',
284
+ timestamp: '2026-06-25T20:00:00.000Z',
285
+ message: { role: 'user', content: 'go ahead' },
286
+ },
287
+ {
288
+ type: 'assistant',
289
+ timestamp: stalePendingOwnerCall,
290
+ message: {
291
+ role: 'assistant',
292
+ stop_reason: 'end_turn',
293
+ content: [
294
+ { type: 'text', text: 'waiting <<OWNER_CALL>> please decide' },
295
+ ],
296
+ },
297
+ },
298
+ ]);
299
+ seedPreviousCandidates([SESSION_NAME]);
300
+ const runner = liveSessionRunner();
301
+
302
+ await notifySilentTmuxSessions({
303
+ ...baseParams(runner),
304
+ ownerCallMarker: '<<OWNER_CALL>>',
305
+ });
306
+
307
+ const sendCall = runner.runCommand.mock.calls.find(
308
+ (call) => call[0] === 'tmux' && call[1][0] === 'send-keys',
309
+ );
310
+ expect(sendCall?.[1][2]).toBe(SESSION_NAME);
311
+ expect(sendCall?.[1][4]).toContain('is still unanswered');
312
+ expect(sendCall?.[1][4]).toContain(
313
+ 're-raise your pending ask NOW as a fresh owner call',
314
+ );
315
+ });
316
+
278
317
  it('defers the first cycle then notifies on the next cycle once the persisted candidate state confirms a second consecutive cycle', async () => {
279
318
  silentAssistantTranscript();
280
319
  const firstRunner = liveSessionRunner();
@@ -6,6 +6,7 @@ import {
6
6
  NotifySilentLiveSessionsUseCase,
7
7
  HubTaskStatusResolver,
8
8
  DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
9
+ DEFAULT_UNANSWERED_OWNER_CALL_GRACE_SECONDS,
9
10
  DEFAULT_SUBAGENT_SILENT_THRESHOLD_SECONDS,
10
11
  DEFAULT_SUBAGENT_RUNNING_THRESHOLD_SECONDS,
11
12
  DEFAULT_NOTIFICATION_STAGGER_SECONDS,
@@ -42,6 +43,7 @@ export type NotifySilentTmuxSessionsParams = {
42
43
  subAgentProcessMatchPattern: string | null;
43
44
  subAgentTranscriptRootDirectory: string | null;
44
45
  mainSilentThresholdSeconds: number;
46
+ unansweredOwnerCallGraceSeconds: number;
45
47
  subAgentSilentThresholdSeconds: number;
46
48
  subAgentRunningThresholdSeconds: number;
47
49
  staggerSeconds: number;
@@ -102,6 +104,7 @@ export const notifySilentTmuxSessions = async (
102
104
  subAgentProcessMatchPattern,
103
105
  subAgentTranscriptRootDirectory,
104
106
  mainSilentThresholdSeconds,
107
+ unansweredOwnerCallGraceSeconds,
105
108
  subAgentSilentThresholdSeconds,
106
109
  subAgentRunningThresholdSeconds,
107
110
  staggerSeconds,
@@ -157,6 +160,7 @@ export const notifySilentTmuxSessions = async (
157
160
  );
158
161
  await useCase.run({
159
162
  mainSilentThresholdSeconds,
163
+ unansweredOwnerCallGraceSeconds,
160
164
  subAgentSilentThresholdSeconds,
161
165
  subAgentRunningThresholdSeconds,
162
166
  staggerSeconds,
@@ -169,6 +173,7 @@ export const notifySilentTmuxSessions = async (
169
173
 
170
174
  export const DEFAULT_NOTIFY_SILENT_TMUX_SESSIONS_PARAMS = {
171
175
  mainSilentThresholdSeconds: DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
176
+ unansweredOwnerCallGraceSeconds: DEFAULT_UNANSWERED_OWNER_CALL_GRACE_SECONDS,
172
177
  subAgentSilentThresholdSeconds: DEFAULT_SUBAGENT_SILENT_THRESHOLD_SECONDS,
173
178
  subAgentRunningThresholdSeconds: DEFAULT_SUBAGENT_RUNNING_THRESHOLD_SECONDS,
174
179
  staggerSeconds: DEFAULT_NOTIFICATION_STAGGER_SECONDS,
@@ -6,11 +6,15 @@ type Mocked<T> = jest.Mocked<T> & jest.MockedObject<T>;
6
6
 
7
7
  const createFallback = (): Mocked<SilentSessionMessageComposer> => ({
8
8
  composeMainStalledSection: jest.fn().mockReturnValue('FALLBACK_MAIN'),
9
+ composeMainStalledWithStaleOwnerCallSection: jest
10
+ .fn()
11
+ .mockReturnValue('FALLBACK_STALE_OWNER_CALL'),
9
12
  composeSubAgentSection: jest.fn().mockReturnValue('FALLBACK_SUB'),
10
13
  });
11
14
 
12
15
  const noTemplates = {
13
16
  mainStalledMessage: null,
17
+ mainStalledStaleOwnerCallMessage: null,
14
18
  subAgentIdleMessageHeader: null,
15
19
  subAgentIdleMessageFooter: null,
16
20
  subAgentLongRunningMessageHeader: null,
@@ -67,6 +71,44 @@ describe('ConfigurableSilentSessionMessageComposer', () => {
67
71
  );
68
72
  });
69
73
 
74
+ it('uses the fallback stale-owner-call section when no stale-owner-call template is configured', () => {
75
+ const fallback = createFallback();
76
+ const composer = new ConfigurableSilentSessionMessageComposer(
77
+ noTemplates,
78
+ fallback,
79
+ );
80
+ expect(
81
+ composer.composeMainStalledWithStaleOwnerCallSection(600, 3600),
82
+ ).toBe('FALLBACK_STALE_OWNER_CALL');
83
+ expect(
84
+ fallback.composeMainStalledWithStaleOwnerCallSection,
85
+ ).toHaveBeenCalledWith(600, 3600);
86
+ });
87
+
88
+ it('uses the configured stale-owner-call template when provided', () => {
89
+ const fallback = createFallback();
90
+ const composer = new ConfigurableSilentSessionMessageComposer(
91
+ {
92
+ ...noTemplates,
93
+ mainStalledStaleOwnerCallMessage: 'CUSTOM_STALE_OWNER_CALL',
94
+ },
95
+ fallback,
96
+ '<<OWNER_CALL>>',
97
+ );
98
+ const section = composer.composeMainStalledWithStaleOwnerCallSection(
99
+ 600,
100
+ 3600,
101
+ );
102
+ expect(section).toContain('CUSTOM_STALE_OWNER_CALL');
103
+ expect(section).toContain(SILENT_SESSION_REMINDER_SENTINEL);
104
+ expect(section).toContain(
105
+ 'the configured owner-call marker tag "<<OWNER_CALL>>" as a complete matching pair',
106
+ );
107
+ expect(
108
+ fallback.composeMainStalledWithStaleOwnerCallSection,
109
+ ).not.toHaveBeenCalled();
110
+ });
111
+
70
112
  it('uses the fallback sub-agent section when no sub-agent template is configured', () => {
71
113
  const fallback = createFallback();
72
114
  const composer = new ConfigurableSilentSessionMessageComposer(
@@ -13,6 +13,7 @@ const withReminderSentinel = (message: string): string =>
13
13
 
14
14
  export type SilentSessionMessageTemplates = {
15
15
  mainStalledMessage: string | null;
16
+ mainStalledStaleOwnerCallMessage: string | null;
16
17
  subAgentIdleMessageHeader: string | null;
17
18
  subAgentIdleMessageFooter: string | null;
18
19
  subAgentLongRunningMessageHeader: string | null;
@@ -40,6 +41,21 @@ export class ConfigurableSilentSessionMessageComposer implements SilentSessionMe
40
41
  );
41
42
  };
42
43
 
44
+ composeMainStalledWithStaleOwnerCallSection = (
45
+ mainSilentSeconds: number,
46
+ unansweredOwnerCallAgeSeconds: number,
47
+ ): string => {
48
+ if (this.templates.mainStalledStaleOwnerCallMessage === null) {
49
+ return this.fallback.composeMainStalledWithStaleOwnerCallSection(
50
+ mainSilentSeconds,
51
+ unansweredOwnerCallAgeSeconds,
52
+ );
53
+ }
54
+ return withReminderSentinel(
55
+ `${this.templates.mainStalledStaleOwnerCallMessage} ${composeOwnerCallFormatGuidance(this.ownerCallMarker)}`,
56
+ );
57
+ };
58
+
43
59
  composeSubAgentSection = (stallSections: SubAgentStallSections): string => {
44
60
  const hasIdleTemplate =
45
61
  this.templates.subAgentIdleMessageHeader !== null ||
@@ -506,7 +506,7 @@ describe('parent transcript resolution feeding owner-call detection', () => {
506
506
  ]);
507
507
 
508
508
  return ownerCallStatusProvider
509
- .listSessionNamesWithUnansweredOwnerCall(transcriptPaths)
509
+ .listUnansweredOwnerCallEpochSecondsBySessionName(transcriptPaths)
510
510
  .then((waiting) => {
511
511
  expect(waiting.has('waiting')).toBe(true);
512
512
  });
@@ -3,12 +3,13 @@ import { NoUnansweredOwnerCallStatusProvider } from './NoUnansweredOwnerCallStat
3
3
  describe('NoUnansweredOwnerCallStatusProvider', () => {
4
4
  it('always reports no session as having an unanswered owner call', async () => {
5
5
  const provider = new NoUnansweredOwnerCallStatusProvider();
6
- const result = await provider.listSessionNamesWithUnansweredOwnerCall(
7
- new Map([
8
- ['session-a', '/transcripts/a.jsonl'],
9
- ['session-b', '/transcripts/b.jsonl'],
10
- ]),
11
- );
6
+ const result =
7
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
8
+ new Map([
9
+ ['session-a', '/transcripts/a.jsonl'],
10
+ ['session-b', '/transcripts/b.jsonl'],
11
+ ]),
12
+ );
12
13
  expect(result.size).toBe(0);
13
14
  });
14
15
  });
@@ -1,9 +1,9 @@
1
1
  import { OwnerCallStatusProvider } from '../../domain/usecases/adapter-interfaces/OwnerCallStatusProvider';
2
2
 
3
3
  export class NoUnansweredOwnerCallStatusProvider implements OwnerCallStatusProvider {
4
- listSessionNamesWithUnansweredOwnerCall = (
4
+ listUnansweredOwnerCallEpochSecondsBySessionName = (
5
5
  _transcriptPathBySessionName: Map<string, string>,
6
- ): Promise<Set<string>> => {
7
- return Promise.resolve(new Set<string>());
6
+ ): Promise<Map<string, number>> => {
7
+ return Promise.resolve(new Map<string, number>());
8
8
  };
9
9
  }
@@ -129,13 +129,48 @@ describe('TranscriptOwnerCallStatusProvider', () => {
129
129
  ]);
130
130
  const provider = new TranscriptOwnerCallStatusProvider('<<OWNER_CALL>>');
131
131
 
132
- const result = await provider.listSessionNamesWithUnansweredOwnerCall(
133
- new Map([[sessionName, transcriptPath]]),
134
- );
132
+ const result =
133
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
134
+ new Map([[sessionName, transcriptPath]]),
135
+ );
135
136
 
136
137
  expect(result.has(sessionName)).toBe(true);
137
138
  });
138
139
 
140
+ it('exposes the epoch seconds of the unanswered owner call so its age can be computed', async () => {
141
+ const transcriptPath = writeTranscript('workbench.jsonl', [
142
+ ownerReply('2026-06-27T10:00:00.000Z'),
143
+ assistantWithMarker('2026-06-27T10:05:00.000Z'),
144
+ ]);
145
+ const provider = new TranscriptOwnerCallStatusProvider('<<OWNER_CALL>>');
146
+
147
+ const result =
148
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
149
+ new Map([[sessionName, transcriptPath]]),
150
+ );
151
+
152
+ expect(result.get(sessionName)).toBe(
153
+ Math.floor(Date.parse('2026-06-27T10:05:00.000Z') / 1000),
154
+ );
155
+ });
156
+
157
+ it('exposes the epoch seconds of the latest owner call when several calls are unanswered', async () => {
158
+ const transcriptPath = writeTranscript('workbench.jsonl', [
159
+ assistantWithMarker('2026-06-27T09:00:00.000Z'),
160
+ assistantWithMarker('2026-06-27T10:05:00.000Z'),
161
+ ]);
162
+ const provider = new TranscriptOwnerCallStatusProvider('<<OWNER_CALL>>');
163
+
164
+ const result =
165
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
166
+ new Map([[sessionName, transcriptPath]]),
167
+ );
168
+
169
+ expect(result.get(sessionName)).toBe(
170
+ Math.floor(Date.parse('2026-06-27T10:05:00.000Z') / 1000),
171
+ );
172
+ });
173
+
139
174
  it('does not report a session as waiting when a later owner reply followed the call', async () => {
140
175
  const transcriptPath = writeTranscript('workbench.jsonl', [
141
176
  assistantWithMarker('2026-06-27T10:00:00.000Z'),
@@ -143,9 +178,10 @@ describe('TranscriptOwnerCallStatusProvider', () => {
143
178
  ]);
144
179
  const provider = new TranscriptOwnerCallStatusProvider('<<OWNER_CALL>>');
145
180
 
146
- const result = await provider.listSessionNamesWithUnansweredOwnerCall(
147
- new Map([[sessionName, transcriptPath]]),
148
- );
181
+ const result =
182
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
183
+ new Map([[sessionName, transcriptPath]]),
184
+ );
149
185
 
150
186
  expect(result.has(sessionName)).toBe(false);
151
187
  });
@@ -157,9 +193,10 @@ describe('TranscriptOwnerCallStatusProvider', () => {
157
193
  ]);
158
194
  const provider = new TranscriptOwnerCallStatusProvider('<<OWNER_CALL>>');
159
195
 
160
- const result = await provider.listSessionNamesWithUnansweredOwnerCall(
161
- new Map([[sessionName, transcriptPath]]),
162
- );
196
+ const result =
197
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
198
+ new Map([[sessionName, transcriptPath]]),
199
+ );
163
200
 
164
201
  expect(result.has(sessionName)).toBe(false);
165
202
  });
@@ -171,9 +208,10 @@ describe('TranscriptOwnerCallStatusProvider', () => {
171
208
  ]);
172
209
  const provider = new TranscriptOwnerCallStatusProvider('<<OWNER_CALL>>');
173
210
 
174
- const result = await provider.listSessionNamesWithUnansweredOwnerCall(
175
- new Map([[sessionName, transcriptPath]]),
176
- );
211
+ const result =
212
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
213
+ new Map([[sessionName, transcriptPath]]),
214
+ );
177
215
 
178
216
  expect(result.has(sessionName)).toBe(true);
179
217
  });
@@ -185,9 +223,10 @@ describe('TranscriptOwnerCallStatusProvider', () => {
185
223
  ]);
186
224
  const provider = new TranscriptOwnerCallStatusProvider('<<OWNER_CALL>>');
187
225
 
188
- const result = await provider.listSessionNamesWithUnansweredOwnerCall(
189
- new Map([[sessionName, transcriptPath]]),
190
- );
226
+ const result =
227
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
228
+ new Map([[sessionName, transcriptPath]]),
229
+ );
191
230
 
192
231
  expect(result.has(sessionName)).toBe(true);
193
232
  });
@@ -199,9 +238,10 @@ describe('TranscriptOwnerCallStatusProvider', () => {
199
238
  ]);
200
239
  const provider = new TranscriptOwnerCallStatusProvider('<<OWNER_CALL>>');
201
240
 
202
- const result = await provider.listSessionNamesWithUnansweredOwnerCall(
203
- new Map([[sessionName, transcriptPath]]),
204
- );
241
+ const result =
242
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
243
+ new Map([[sessionName, transcriptPath]]),
244
+ );
205
245
 
206
246
  expect(result.has(sessionName)).toBe(true);
207
247
  });
@@ -214,9 +254,10 @@ describe('TranscriptOwnerCallStatusProvider', () => {
214
254
  ]);
215
255
  const provider = new TranscriptOwnerCallStatusProvider('<<OWNER_CALL>>');
216
256
 
217
- const result = await provider.listSessionNamesWithUnansweredOwnerCall(
218
- new Map([[sessionName, transcriptPath]]),
219
- );
257
+ const result =
258
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
259
+ new Map([[sessionName, transcriptPath]]),
260
+ );
220
261
 
221
262
  expect(result.has(sessionName)).toBe(false);
222
263
  });
@@ -228,9 +269,10 @@ describe('TranscriptOwnerCallStatusProvider', () => {
228
269
  ]);
229
270
  const provider = new TranscriptOwnerCallStatusProvider('<<OWNER_CALL>>');
230
271
 
231
- const result = await provider.listSessionNamesWithUnansweredOwnerCall(
232
- new Map([[sessionName, transcriptPath]]),
233
- );
272
+ const result =
273
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
274
+ new Map([[sessionName, transcriptPath]]),
275
+ );
234
276
 
235
277
  expect(result.has(sessionName)).toBe(true);
236
278
  });
@@ -242,9 +284,10 @@ describe('TranscriptOwnerCallStatusProvider', () => {
242
284
  ]);
243
285
  const provider = new TranscriptOwnerCallStatusProvider('<<OWNER_CALL>>');
244
286
 
245
- const result = await provider.listSessionNamesWithUnansweredOwnerCall(
246
- new Map([[sessionName, transcriptPath]]),
247
- );
287
+ const result =
288
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
289
+ new Map([[sessionName, transcriptPath]]),
290
+ );
248
291
 
249
292
  expect(result.has(sessionName)).toBe(true);
250
293
  });
@@ -256,9 +299,10 @@ describe('TranscriptOwnerCallStatusProvider', () => {
256
299
  ]);
257
300
  const provider = new TranscriptOwnerCallStatusProvider('<<OWNER_CALL>>');
258
301
 
259
- const result = await provider.listSessionNamesWithUnansweredOwnerCall(
260
- new Map([[sessionName, transcriptPath]]),
261
- );
302
+ const result =
303
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
304
+ new Map([[sessionName, transcriptPath]]),
305
+ );
262
306
 
263
307
  expect(result.has(sessionName)).toBe(false);
264
308
  });
@@ -271,9 +315,10 @@ describe('TranscriptOwnerCallStatusProvider', () => {
271
315
  ]);
272
316
  const provider = new TranscriptOwnerCallStatusProvider('<<OWNER_CALL>>');
273
317
 
274
- const result = await provider.listSessionNamesWithUnansweredOwnerCall(
275
- new Map([[sessionName, transcriptPath]]),
276
- );
318
+ const result =
319
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
320
+ new Map([[sessionName, transcriptPath]]),
321
+ );
277
322
 
278
323
  expect(result.has(sessionName)).toBe(false);
279
324
  });
@@ -285,23 +330,25 @@ describe('TranscriptOwnerCallStatusProvider', () => {
285
330
  ]);
286
331
  const provider = new TranscriptOwnerCallStatusProvider('<<OWNER_CALL>>');
287
332
 
288
- const result = await provider.listSessionNamesWithUnansweredOwnerCall(
289
- new Map([[sessionName, transcriptPath]]),
290
- );
333
+ const result =
334
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
335
+ new Map([[sessionName, transcriptPath]]),
336
+ );
291
337
 
292
338
  expect(result.has(sessionName)).toBe(false);
293
339
  });
294
340
 
295
- it('returns an empty set when the marker is null', async () => {
341
+ it('returns an empty map when the marker is null', async () => {
296
342
  const transcriptPath = writeTranscript('workbench.jsonl', [
297
343
  ownerReply('2026-06-27T10:00:00.000Z'),
298
344
  assistantWithMarker('2026-06-27T10:05:00.000Z'),
299
345
  ]);
300
346
  const provider = new TranscriptOwnerCallStatusProvider(null);
301
347
 
302
- const result = await provider.listSessionNamesWithUnansweredOwnerCall(
303
- new Map([[sessionName, transcriptPath]]),
304
- );
348
+ const result =
349
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
350
+ new Map([[sessionName, transcriptPath]]),
351
+ );
305
352
 
306
353
  expect(result.size).toBe(0);
307
354
  });
@@ -309,9 +356,10 @@ describe('TranscriptOwnerCallStatusProvider', () => {
309
356
  it('ignores a session whose transcript file is missing', async () => {
310
357
  const provider = new TranscriptOwnerCallStatusProvider('<<OWNER_CALL>>');
311
358
 
312
- const result = await provider.listSessionNamesWithUnansweredOwnerCall(
313
- new Map([[sessionName, path.join(rootDirectory, 'missing.jsonl')]]),
314
- );
359
+ const result =
360
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
361
+ new Map([[sessionName, path.join(rootDirectory, 'missing.jsonl')]]),
362
+ );
315
363
 
316
364
  expect(result.size).toBe(0);
317
365
  });
@@ -328,9 +376,10 @@ describe('TranscriptOwnerCallStatusProvider', () => {
328
376
  );
329
377
  const provider = new TranscriptOwnerCallStatusProvider('<<OWNER_CALL>>');
330
378
 
331
- const result = await provider.listSessionNamesWithUnansweredOwnerCall(
332
- new Map([[sessionName, filePath]]),
333
- );
379
+ const result =
380
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
381
+ new Map([[sessionName, filePath]]),
382
+ );
334
383
 
335
384
  expect(result.has(sessionName)).toBe(true);
336
385
  });
@@ -348,9 +397,10 @@ describe('TranscriptOwnerCallStatusProvider', () => {
348
397
  ]);
349
398
  const provider = new TranscriptOwnerCallStatusProvider('<call-to-user>');
350
399
 
351
- const result = await provider.listSessionNamesWithUnansweredOwnerCall(
352
- new Map([[sessionName, transcriptPath]]),
353
- );
400
+ const result =
401
+ await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
402
+ new Map([[sessionName, transcriptPath]]),
403
+ );
354
404
 
355
405
  expect(result.has(sessionName)).toBe(true);
356
406
  });