github-issue-tower-defence-management 1.140.0 → 1.140.1

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [1.140.1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.140.0...v1.140.1) (2026-07-26)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * always remind genuinely-silent sessions, remove in-progress-tool-call suppression ([#1281](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1281)) ([6d13212](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/6d1321225687e02db713a8795e3eb1a91eb0c1fe)), closes [#1279](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1279)
7
+
1
8
  # [1.140.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.139.1...v1.140.0) (2026-07-26)
2
9
 
3
10
 
@@ -47,42 +47,30 @@ const parseEpochMilliseconds = (timestamp) => {
47
47
  const parsed = Date.parse(timestamp);
48
48
  return Number.isNaN(parsed) ? null : parsed;
49
49
  };
50
- const readContentBlocks = (message) => {
51
- const content = message.content;
52
- if (!Array.isArray(content)) {
53
- return [];
54
- }
55
- return content.filter(isRecord);
56
- };
57
50
  class FileSystemSessionOutputActivityRepository {
58
51
  constructor() {
59
52
  this.listSessionOutputActivities = async (transcriptPathBySessionName) => {
60
53
  const activities = [];
61
54
  for (const [sessionName, transcriptPath] of transcriptPathBySessionName) {
62
- const { lastAssistantOutputEpochSeconds, hasInProgressToolCall } = this.readTranscriptActivity(transcriptPath);
55
+ const lastAssistantOutputEpochSeconds = this.readLastAssistantOutputEpochSeconds(transcriptPath);
63
56
  if (lastAssistantOutputEpochSeconds !== null) {
64
57
  activities.push({
65
58
  sessionName,
66
59
  lastOutputEpochSeconds: lastAssistantOutputEpochSeconds,
67
- hasInProgressToolCall,
68
60
  });
69
61
  }
70
62
  }
71
63
  return activities;
72
64
  };
73
- this.readTranscriptActivity = (transcriptPath) => {
65
+ this.readLastAssistantOutputEpochSeconds = (transcriptPath) => {
74
66
  let content;
75
67
  try {
76
68
  content = fs.readFileSync(transcriptPath, 'utf8');
77
69
  }
78
70
  catch {
79
- return {
80
- lastAssistantOutputEpochSeconds: null,
81
- hasInProgressToolCall: false,
82
- };
71
+ return null;
83
72
  }
84
73
  let lastAssistantOutputEpochMs = null;
85
- const pendingToolUseIds = new Set();
86
74
  for (const line of content.split('\n')) {
87
75
  const trimmed = line.trim();
88
76
  if (trimmed.length === 0) {
@@ -98,38 +86,16 @@ class FileSystemSessionOutputActivityRepository {
98
86
  if (!isRecord(parsed)) {
99
87
  continue;
100
88
  }
101
- const message = parsed.message;
102
89
  if (readString(parsed, 'type') === 'assistant') {
103
90
  const epochMs = parseEpochMilliseconds(readString(parsed, 'timestamp'));
104
91
  if (epochMs !== null) {
105
92
  lastAssistantOutputEpochMs = epochMs;
106
93
  }
107
94
  }
108
- if (!isRecord(message)) {
109
- continue;
110
- }
111
- for (const block of readContentBlocks(message)) {
112
- const blockType = readString(block, 'type');
113
- if (blockType === 'tool_use') {
114
- const toolUseId = readString(block, 'id');
115
- if (toolUseId !== null) {
116
- pendingToolUseIds.add(toolUseId);
117
- }
118
- }
119
- else if (blockType === 'tool_result') {
120
- const toolUseId = readString(block, 'tool_use_id');
121
- if (toolUseId !== null) {
122
- pendingToolUseIds.delete(toolUseId);
123
- }
124
- }
125
- }
126
95
  }
127
- return {
128
- lastAssistantOutputEpochSeconds: lastAssistantOutputEpochMs === null
129
- ? null
130
- : Math.floor(lastAssistantOutputEpochMs / 1000),
131
- hasInProgressToolCall: pendingToolUseIds.size > 0,
132
- };
96
+ return lastAssistantOutputEpochMs === null
97
+ ? null
98
+ : Math.floor(lastAssistantOutputEpochMs / 1000);
133
99
  };
134
100
  }
135
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FileSystemSessionOutputActivityRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/FileSystemSessionOutputActivityRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileSystemSessionOutputActivityRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/FileSystemSessionOutputActivityRepository.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NotifySilentLiveSessionsUseCase = exports.isGitHubIssueOrPullRequestSessionName = exports.parseHubTaskIssueUrlFromSessionName = exports.IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS = exports.DEFAULT_HUB_TASK_STATUS_CACHE_TTL_SECONDS = exports.DEFAULT_CANDIDATE_DEBOUNCE_RECENCY_WINDOW_SECONDS = exports.DEFAULT_NOTIFICATION_STAGGER_SECONDS = exports.DEFAULT_SUBAGENT_RUNNING_THRESHOLD_SECONDS = exports.DEFAULT_SUBAGENT_SILENT_THRESHOLD_SECONDS = exports.DEFAULT_UNANSWERED_OWNER_CALL_GRACE_SECONDS = exports.DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS = void 0;
3
+ exports.NotifySilentLiveSessionsUseCase = exports.isGitHubIssueOrPullRequestSessionName = exports.parseHubTaskIssueUrlFromSessionName = exports.DEFAULT_HUB_TASK_STATUS_CACHE_TTL_SECONDS = exports.DEFAULT_CANDIDATE_DEBOUNCE_RECENCY_WINDOW_SECONDS = exports.DEFAULT_NOTIFICATION_STAGGER_SECONDS = exports.DEFAULT_SUBAGENT_RUNNING_THRESHOLD_SECONDS = exports.DEFAULT_SUBAGENT_SILENT_THRESHOLD_SECONDS = exports.DEFAULT_UNANSWERED_OWNER_CALL_GRACE_SECONDS = exports.DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS = void 0;
4
4
  const ResolveInteractiveLiveSessionsUseCase_1 = require("./ResolveInteractiveLiveSessionsUseCase");
5
5
  exports.DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS = 10 * 60;
6
6
  // Retained only for backward compatibility of the configuration surface
@@ -13,15 +13,6 @@ exports.DEFAULT_SUBAGENT_RUNNING_THRESHOLD_SECONDS = 15 * 60;
13
13
  exports.DEFAULT_NOTIFICATION_STAGGER_SECONDS = 25;
14
14
  exports.DEFAULT_CANDIDATE_DEBOUNCE_RECENCY_WINDOW_SECONDS = 15 * 60;
15
15
  exports.DEFAULT_HUB_TASK_STATUS_CACHE_TTL_SECONDS = 5 * 60;
16
- // Upper bound on how long an in-progress tool call suppresses the main-stall
17
- // reminder. Set to 2 hours: comfortably above the ~1-hour maximum duration of
18
- // the longest legitimate single tool call (the Monitor tool's own timeout
19
- // ceiling), so every legitimate long-running tool call is still suppressed,
20
- // while a session whose transcript tail has been an unanswered tool_use for
21
- // longer than this — for example because the tool call itself hung and never
22
- // returned — still receives the stall reminder instead of being suppressed
23
- // forever.
24
- exports.IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS = 2 * 60 * 60;
25
16
  const GITHUB_ISSUE_OR_PULL_URL_PATTERN = /^https:\/\/github\.com\/([^/]+)\/([^/]+)\/(?:issues|pull)\/(\d+)$/;
26
17
  const GITHUB_TMUX_SESSION_NAME_PATTERN = /^https_\/\/github_com\/([^/]+)\/([^/]+)\/(?:issues|pull)\/(\d+)$/;
27
18
  const parseHubTaskIssueUrlFromSessionName = (sessionName) => {
@@ -124,18 +115,6 @@ class NotifySilentLiveSessionsUseCase {
124
115
  console.log(`Skipping ${candidate.sessionName}: the current silent-episode reminder was already delivered; not re-injecting until the condition resolves and re-arises.`);
125
116
  continue;
126
117
  }
127
- // Input-state gating: a session whose main REPL is mid-turn — currently
128
- // running an in-progress tool call, which includes waiting on a
129
- // long-running sub-agent — cannot accept an injected prompt cleanly, so
130
- // the reminder is deferred rather than piled into a busy input box. The
131
- // session stays a candidate, so it is reminded once it becomes
132
- // input-ready. A tool call pending past
133
- // IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS is treated as hung and no
134
- // longer counts as busy (see composeCandidate).
135
- if (candidate.mainInputBusy) {
136
- console.log(`Skipping ${candidate.sessionName}: main REPL is not in an input-accepting state (in-progress tool call); deferring reminder until it is idle.`);
137
- continue;
138
- }
139
118
  if (!(await this.isHubTaskActive(candidate.sessionName, params.activeHubTaskStatus, params.hubTaskStatusCacheTtlSeconds, params.now))) {
140
119
  continue;
141
120
  }
@@ -239,10 +218,8 @@ class NotifySilentLiveSessionsUseCase {
239
218
  const sessionNames = interactiveSessions.map((session) => session.sessionName);
240
219
  const activities = await this.sessionOutputActivityRepository.listSessionOutputActivities(transcriptPathBySessionName);
241
220
  const lastOutputBySessionName = new Map();
242
- const inProgressToolCallBySessionName = new Map();
243
221
  for (const activity of activities) {
244
222
  lastOutputBySessionName.set(activity.sessionName, activity.lastOutputEpochSeconds);
245
- inProgressToolCallBySessionName.set(activity.sessionName, activity.hasInProgressToolCall);
246
223
  }
247
224
  const subAgentsBySessionName = await this.subAgentActivityRepository.listSubAgentActivitiesBySessionName(sessionNames, transcriptPathBySessionName);
248
225
  const unansweredOwnerCallEpochSecondsBySessionName = await this.ownerCallStatusProvider.listUnansweredOwnerCallEpochSecondsBySessionName(transcriptPathBySessionName);
@@ -256,7 +233,6 @@ class NotifySilentLiveSessionsUseCase {
256
233
  return {
257
234
  sessionName,
258
235
  mainSilentSeconds,
259
- mainHasInProgressToolCall: inProgressToolCallBySessionName.get(sessionName) ?? false,
260
236
  subAgents: subAgentsBySessionName.get(sessionName) ?? [],
261
237
  unansweredOwnerCallAgeSeconds: unansweredOwnerCallEpochSeconds === undefined
262
238
  ? null
@@ -278,28 +254,16 @@ class NotifySilentLiveSessionsUseCase {
278
254
  // is retained in the parameters only for backward compatibility of the
279
255
  // call signature and is intentionally ignored (treated as infinite).
280
256
  const suppressedByUnansweredOwnerCall = unansweredOwnerCallAgeSeconds !== null;
281
- // A session whose transcript tail is an assistant tool_use with no matching
282
- // tool_result is legitimately busy running one long tool call (e.g. a Bash
283
- // command near its timeout, or a Monitor waiting up to an hour): it appends
284
- // no new assistant line while the tool runs, so mainSilentSeconds crosses
285
- // the threshold even though the session is working, not stalled. Suppress
286
- // the main-stall reminder in that case. Genuine thrashing silence — where
287
- // the last assistant tool_use was already answered (or there is none) has
288
- // no pending tool call and is still flagged.
289
- // The suppression is bounded by the pending tool call's own age
290
- // (mainSilentSeconds, which for an in-progress tool call equals the age of
291
- // the pending tool_use line) so it cannot last forever: a session stuck
292
- // inside a tool call that never returns is reminded once that age exceeds
293
- // IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS, restoring the ~10-minute
294
- // stall reminder for a truly hung session instead of suppressing it
295
- // indefinitely.
296
- const suppressedByInProgressToolCall = snapshot.mainHasInProgressToolCall &&
297
- mainSilentSeconds !== null &&
298
- mainSilentSeconds < exports.IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS;
257
+ // The main-stall reminder is driven purely by silence: a session that has
258
+ // produced no assistant output for longer than the threshold is reminded
259
+ // regardless of whether its transcript tail is an in-progress tool_use. A
260
+ // session that merely looks busy (mid-tool-call) can in fact be stuck, so
261
+ // its apparent busyness MUST NOT suppress the reminder; the reminder queues
262
+ // cleanly into the session even when it is mid-turn. The only main-stall
263
+ // suppression is an unanswered owner call, which is a real wait on the owner.
299
264
  const mainTriggered = mainSilentSeconds !== null &&
300
265
  mainSilentSeconds >= thresholds.mainSilentThresholdSeconds &&
301
- !suppressedByUnansweredOwnerCall &&
302
- !suppressedByInProgressToolCall;
266
+ !suppressedByUnansweredOwnerCall;
303
267
  if (mainTriggered) {
304
268
  sections.push(this.messageComposer.composeMainStalledSection(mainSilentSeconds));
305
269
  sectionLabels.push('main-stalled');
@@ -335,7 +299,6 @@ class NotifySilentLiveSessionsUseCase {
335
299
  sessionName: snapshot.sessionName,
336
300
  message: sections.join('\n\n'),
337
301
  sectionLabels,
338
- mainInputBusy: suppressedByInProgressToolCall,
339
302
  };
340
303
  };
341
304
  }
@@ -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.140.0",
3
+ "version": "1.140.1",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -124,7 +124,6 @@ describe('FileSystemSessionOutputActivityRepository', () => {
124
124
  lastOutputEpochSeconds: Math.floor(
125
125
  Date.parse('2026-06-27T01:00:00.000Z') / 1000,
126
126
  ),
127
- hasInProgressToolCall: false,
128
127
  },
129
128
  ]);
130
129
  });
@@ -146,7 +145,6 @@ describe('FileSystemSessionOutputActivityRepository', () => {
146
145
  lastOutputEpochSeconds: Math.floor(
147
146
  Date.parse('2026-06-27T09:55:00.000Z') / 1000,
148
147
  ),
149
- hasInProgressToolCall: false,
150
148
  },
151
149
  ]);
152
150
  });
@@ -168,7 +166,6 @@ describe('FileSystemSessionOutputActivityRepository', () => {
168
166
  lastOutputEpochSeconds: Math.floor(
169
167
  Date.parse('2026-06-27T10:00:00.000Z') / 1000,
170
168
  ),
171
- hasInProgressToolCall: false,
172
169
  },
173
170
  ]);
174
171
  });
@@ -190,7 +187,6 @@ describe('FileSystemSessionOutputActivityRepository', () => {
190
187
  lastOutputEpochSeconds: Math.floor(
191
188
  Date.parse('2026-06-27T10:00:00.000Z') / 1000,
192
189
  ),
193
- hasInProgressToolCall: false,
194
190
  },
195
191
  ]);
196
192
  });
@@ -214,7 +210,6 @@ describe('FileSystemSessionOutputActivityRepository', () => {
214
210
  lastOutputEpochSeconds: Math.floor(
215
211
  Date.parse('2026-06-27T10:05:00.000Z') / 1000,
216
212
  ),
217
- hasInProgressToolCall: false,
218
213
  },
219
214
  ]);
220
215
  });
@@ -236,7 +231,6 @@ describe('FileSystemSessionOutputActivityRepository', () => {
236
231
  lastOutputEpochSeconds: Math.floor(
237
232
  Date.parse('2026-06-27T10:00:00.000Z') / 1000,
238
233
  ),
239
- hasInProgressToolCall: false,
240
234
  },
241
235
  ]);
242
236
  });
@@ -260,7 +254,6 @@ describe('FileSystemSessionOutputActivityRepository', () => {
260
254
  lastOutputEpochSeconds: Math.floor(
261
255
  Date.parse('2026-06-27T10:00:00.000Z') / 1000,
262
256
  ),
263
- hasInProgressToolCall: false,
264
257
  },
265
258
  ]);
266
259
  });
@@ -293,7 +286,7 @@ describe('FileSystemSessionOutputActivityRepository', () => {
293
286
  expect(result).toEqual([]);
294
287
  });
295
288
 
296
- it('flags a session as waiting on a running tool when the last assistant tool_use has no matching tool_result', async () => {
289
+ it('reports the assistant tool_use timestamp as the last output even when no tool_result has arrived, without any in-progress flagging', async () => {
297
290
  const transcriptPath = writeTranscript('busy.jsonl', [
298
291
  assistantEntry('2026-06-27T09:00:00.000Z'),
299
292
  assistantEntryWithToolUse('2026-06-27T09:01:00.000Z', 'toolu_running'),
@@ -310,12 +303,11 @@ describe('FileSystemSessionOutputActivityRepository', () => {
310
303
  lastOutputEpochSeconds: Math.floor(
311
304
  Date.parse('2026-06-27T09:01:00.000Z') / 1000,
312
305
  ),
313
- hasInProgressToolCall: true,
314
306
  },
315
307
  ]);
316
308
  });
317
309
 
318
- it('does not flag a session once the matching tool_result for its last tool_use is appended', async () => {
310
+ it('reports the assistant tool_use timestamp as the last output when a later tool_result user entry follows it', async () => {
319
311
  const transcriptPath = writeTranscript('completed.jsonl', [
320
312
  assistantEntryWithToolUse('2026-06-27T09:01:00.000Z', 'toolu_done'),
321
313
  toolResultUserEntry('2026-06-27T09:05:00.000Z', 'toolu_done'),
@@ -332,7 +324,28 @@ describe('FileSystemSessionOutputActivityRepository', () => {
332
324
  lastOutputEpochSeconds: Math.floor(
333
325
  Date.parse('2026-06-27T09:01:00.000Z') / 1000,
334
326
  ),
335
- hasInProgressToolCall: false,
327
+ },
328
+ ]);
329
+ });
330
+
331
+ it('reports the later assistant text timestamp when an orphaned tool_use is followed by a resumed assistant turn, carrying no in-progress state', async () => {
332
+ const transcriptPath = writeTranscript('orphaned.jsonl', [
333
+ assistantEntryWithToolUse('2026-06-27T09:00:00.000Z', 'toolu_orphaned'),
334
+ assistantEntry('2026-06-27T09:46:53.000Z'),
335
+ userEntry('2026-06-27T09:47:00.000Z'),
336
+ ]);
337
+ const repository = new FileSystemSessionOutputActivityRepository();
338
+
339
+ const result = await repository.listSessionOutputActivities(
340
+ new Map([['orphaned', transcriptPath]]),
341
+ );
342
+
343
+ expect(result).toEqual([
344
+ {
345
+ sessionName: 'orphaned',
346
+ lastOutputEpochSeconds: Math.floor(
347
+ Date.parse('2026-06-27T09:46:53.000Z') / 1000,
348
+ ),
336
349
  },
337
350
  ]);
338
351
  });
@@ -21,54 +21,34 @@ const parseEpochMilliseconds = (timestamp: string | null): number | null => {
21
21
  return Number.isNaN(parsed) ? null : parsed;
22
22
  };
23
23
 
24
- const readContentBlocks = (
25
- message: Record<string, unknown>,
26
- ): Record<string, unknown>[] => {
27
- const content = message.content;
28
- if (!Array.isArray(content)) {
29
- return [];
30
- }
31
- return content.filter(isRecord);
32
- };
33
-
34
- type TranscriptActivity = {
35
- lastAssistantOutputEpochSeconds: number | null;
36
- hasInProgressToolCall: boolean;
37
- };
38
-
39
24
  export class FileSystemSessionOutputActivityRepository implements SessionOutputActivityRepository {
40
25
  listSessionOutputActivities = async (
41
26
  transcriptPathBySessionName: Map<string, string>,
42
27
  ): Promise<LiveSessionOutputActivity[]> => {
43
28
  const activities: LiveSessionOutputActivity[] = [];
44
29
  for (const [sessionName, transcriptPath] of transcriptPathBySessionName) {
45
- const { lastAssistantOutputEpochSeconds, hasInProgressToolCall } =
46
- this.readTranscriptActivity(transcriptPath);
30
+ const lastAssistantOutputEpochSeconds =
31
+ this.readLastAssistantOutputEpochSeconds(transcriptPath);
47
32
  if (lastAssistantOutputEpochSeconds !== null) {
48
33
  activities.push({
49
34
  sessionName,
50
35
  lastOutputEpochSeconds: lastAssistantOutputEpochSeconds,
51
- hasInProgressToolCall,
52
36
  });
53
37
  }
54
38
  }
55
39
  return activities;
56
40
  };
57
41
 
58
- private readTranscriptActivity = (
42
+ private readLastAssistantOutputEpochSeconds = (
59
43
  transcriptPath: string,
60
- ): TranscriptActivity => {
44
+ ): number | null => {
61
45
  let content: string;
62
46
  try {
63
47
  content = fs.readFileSync(transcriptPath, 'utf8');
64
48
  } catch {
65
- return {
66
- lastAssistantOutputEpochSeconds: null,
67
- hasInProgressToolCall: false,
68
- };
49
+ return null;
69
50
  }
70
51
  let lastAssistantOutputEpochMs: number | null = null;
71
- const pendingToolUseIds = new Set<string>();
72
52
  for (const line of content.split('\n')) {
73
53
  const trimmed = line.trim();
74
54
  if (trimmed.length === 0) {
@@ -83,37 +63,15 @@ export class FileSystemSessionOutputActivityRepository implements SessionOutputA
83
63
  if (!isRecord(parsed)) {
84
64
  continue;
85
65
  }
86
- const message = parsed.message;
87
66
  if (readString(parsed, 'type') === 'assistant') {
88
67
  const epochMs = parseEpochMilliseconds(readString(parsed, 'timestamp'));
89
68
  if (epochMs !== null) {
90
69
  lastAssistantOutputEpochMs = epochMs;
91
70
  }
92
71
  }
93
- if (!isRecord(message)) {
94
- continue;
95
- }
96
- for (const block of readContentBlocks(message)) {
97
- const blockType = readString(block, 'type');
98
- if (blockType === 'tool_use') {
99
- const toolUseId = readString(block, 'id');
100
- if (toolUseId !== null) {
101
- pendingToolUseIds.add(toolUseId);
102
- }
103
- } else if (blockType === 'tool_result') {
104
- const toolUseId = readString(block, 'tool_use_id');
105
- if (toolUseId !== null) {
106
- pendingToolUseIds.delete(toolUseId);
107
- }
108
- }
109
- }
110
72
  }
111
- return {
112
- lastAssistantOutputEpochSeconds:
113
- lastAssistantOutputEpochMs === null
114
- ? null
115
- : Math.floor(lastAssistantOutputEpochMs / 1000),
116
- hasInProgressToolCall: pendingToolUseIds.size > 0,
117
- };
73
+ return lastAssistantOutputEpochMs === null
74
+ ? null
75
+ : Math.floor(lastAssistantOutputEpochMs / 1000);
118
76
  };
119
77
  }
@@ -8,7 +8,6 @@ export type SubAgentActivity = {
8
8
  export type LiveSessionActivitySnapshot = {
9
9
  sessionName: string;
10
10
  mainSilentSeconds: number | null;
11
- mainHasInProgressToolCall: boolean;
12
11
  subAgents: SubAgentActivity[];
13
12
  unansweredOwnerCallAgeSeconds: number | null;
14
13
  };
@@ -1,5 +1,4 @@
1
1
  export type LiveSessionOutputActivity = {
2
2
  sessionName: string;
3
3
  lastOutputEpochSeconds: number;
4
- hasInProgressToolCall: boolean;
5
4
  };
@@ -10,7 +10,6 @@ import {
10
10
  DEFAULT_NOTIFICATION_STAGGER_SECONDS,
11
11
  DEFAULT_CANDIDATE_DEBOUNCE_RECENCY_WINDOW_SECONDS,
12
12
  DEFAULT_HUB_TASK_STATUS_CACHE_TTL_SECONDS,
13
- IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS,
14
13
  } from './NotifySilentLiveSessionsUseCase';
15
14
  import { Issue } from '../entities/Issue';
16
15
  import { LiveSessionProcessSnapshotProvider } from './adapter-interfaces/LiveSessionProcessSnapshotProvider';
@@ -268,7 +267,6 @@ describe('NotifySilentLiveSessionsUseCase', () => {
268
267
  sessionName,
269
268
  lastOutputEpochSeconds:
270
269
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
271
- hasInProgressToolCall: false,
272
270
  },
273
271
  ],
274
272
  );
@@ -299,7 +297,6 @@ describe('NotifySilentLiveSessionsUseCase', () => {
299
297
  sessionName: GITHUB_SESSION,
300
298
  lastOutputEpochSeconds:
301
299
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
302
- hasInProgressToolCall: false,
303
300
  },
304
301
  ],
305
302
  );
@@ -323,7 +320,6 @@ describe('NotifySilentLiveSessionsUseCase', () => {
323
320
  sessionName: pullRequestSession,
324
321
  lastOutputEpochSeconds:
325
322
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
326
- hasInProgressToolCall: false,
327
323
  },
328
324
  ],
329
325
  );
@@ -345,7 +341,6 @@ describe('NotifySilentLiveSessionsUseCase', () => {
345
341
  sessionName: 'workbench',
346
342
  lastOutputEpochSeconds:
347
343
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
348
- hasInProgressToolCall: false,
349
344
  },
350
345
  ],
351
346
  );
@@ -379,13 +374,11 @@ describe('NotifySilentLiveSessionsUseCase', () => {
379
374
  sessionName: GITHUB_SESSION,
380
375
  lastOutputEpochSeconds:
381
376
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
382
- hasInProgressToolCall: false,
383
377
  },
384
378
  {
385
379
  sessionName: 'orchestrator',
386
380
  lastOutputEpochSeconds:
387
381
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
388
- hasInProgressToolCall: false,
389
382
  },
390
383
  ],
391
384
  );
@@ -501,7 +494,6 @@ describe('NotifySilentLiveSessionsUseCase', () => {
501
494
  sessionName: GITHUB_SESSION,
502
495
  lastOutputEpochSeconds:
503
496
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS + 1,
504
- hasInProgressToolCall: false,
505
497
  },
506
498
  ],
507
499
  );
@@ -529,7 +521,6 @@ describe('NotifySilentLiveSessionsUseCase', () => {
529
521
  sessionName: GITHUB_SESSION,
530
522
  lastOutputEpochSeconds:
531
523
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
532
- hasInProgressToolCall: false,
533
524
  },
534
525
  ],
535
526
  );
@@ -550,7 +541,7 @@ describe('NotifySilentLiveSessionsUseCase', () => {
550
541
  ).toHaveBeenCalledWith(GITHUB_SESSION, MAIN_STALLED_SECTION);
551
542
  });
552
543
 
553
- it('does not send the main stalled section when the session is silent past the threshold but is waiting on a running tool call', async () => {
544
+ it('sends the main stalled section for a session silent past the threshold regardless of any in-progress tool call, because apparent busyness never suppresses the reminder', async () => {
554
545
  setupLiveInteractiveSession(GITHUB_SESSION);
555
546
  mockSessionOutputActivityRepository.listSessionOutputActivities.mockResolvedValue(
556
547
  [
@@ -558,34 +549,6 @@ describe('NotifySilentLiveSessionsUseCase', () => {
558
549
  sessionName: GITHUB_SESSION,
559
550
  lastOutputEpochSeconds:
560
551
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
561
- hasInProgressToolCall: true,
562
- },
563
- ],
564
- );
565
- mockOwnerCallStatusProvider.listUnansweredOwnerCallEpochSecondsBySessionName.mockResolvedValue(
566
- new Map<string, number>(),
567
- );
568
-
569
- await useCase.run(runParams());
570
-
571
- expect(
572
- mockMessageComposer.composeMainStalledSection,
573
- ).not.toHaveBeenCalled();
574
- expect(
575
- mockNotificationRepository.sendSelfCheckNotification,
576
- ).not.toHaveBeenCalled();
577
- });
578
-
579
- it('sends the main stalled section when the in-progress tool call has been pending longer than the suppression bound', async () => {
580
- setupLiveInteractiveSession(GITHUB_SESSION);
581
- const pendingToolCallAgeSeconds =
582
- IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS + 60 * 60;
583
- mockSessionOutputActivityRepository.listSessionOutputActivities.mockResolvedValue(
584
- [
585
- {
586
- sessionName: GITHUB_SESSION,
587
- lastOutputEpochSeconds: nowEpochSeconds - pendingToolCallAgeSeconds,
588
- hasInProgressToolCall: true,
589
552
  },
590
553
  ],
591
554
  );
@@ -596,7 +559,7 @@ describe('NotifySilentLiveSessionsUseCase', () => {
596
559
  await useCase.run(runParams());
597
560
 
598
561
  expect(mockMessageComposer.composeMainStalledSection).toHaveBeenCalledWith(
599
- pendingToolCallAgeSeconds,
562
+ DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
600
563
  );
601
564
  expect(
602
565
  mockNotificationRepository.sendSelfCheckNotification,
@@ -611,7 +574,6 @@ describe('NotifySilentLiveSessionsUseCase', () => {
611
574
  sessionName: GITHUB_SESSION,
612
575
  lastOutputEpochSeconds:
613
576
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS + 1,
614
- hasInProgressToolCall: false,
615
577
  },
616
578
  ],
617
579
  );
@@ -738,7 +700,6 @@ describe('NotifySilentLiveSessionsUseCase', () => {
738
700
  sessionName: GITHUB_SESSION,
739
701
  lastOutputEpochSeconds:
740
702
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
741
- hasInProgressToolCall: false,
742
703
  },
743
704
  ],
744
705
  );
@@ -763,14 +724,12 @@ describe('NotifySilentLiveSessionsUseCase', () => {
763
724
  sessionName: GITHUB_SESSION,
764
725
  lastOutputEpochSeconds:
765
726
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
766
- hasInProgressToolCall: false,
767
727
  },
768
728
  ];
769
729
  const active = [
770
730
  {
771
731
  sessionName: GITHUB_SESSION,
772
732
  lastOutputEpochSeconds: nowEpochSeconds,
773
- hasInProgressToolCall: false,
774
733
  },
775
734
  ];
776
735
 
@@ -808,7 +767,6 @@ describe('NotifySilentLiveSessionsUseCase', () => {
808
767
  sessionName: GITHUB_SESSION,
809
768
  lastOutputEpochSeconds:
810
769
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
811
- hasInProgressToolCall: false,
812
770
  },
813
771
  ],
814
772
  );
@@ -898,7 +856,7 @@ describe('NotifySilentLiveSessionsUseCase', () => {
898
856
  });
899
857
  });
900
858
 
901
- describe('fire-once latch and input-state gating', () => {
859
+ describe('fire-once latch', () => {
902
860
  const setupSilentGithubSession = (): void => {
903
861
  setupLiveInteractiveSession(GITHUB_SESSION);
904
862
  mockSessionOutputActivityRepository.listSessionOutputActivities.mockResolvedValue(
@@ -907,19 +865,11 @@ describe('NotifySilentLiveSessionsUseCase', () => {
907
865
  sessionName: GITHUB_SESSION,
908
866
  lastOutputEpochSeconds:
909
867
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
910
- hasInProgressToolCall: false,
911
868
  },
912
869
  ],
913
870
  );
914
871
  };
915
872
 
916
- const idleSubAgent = (label: string): SubAgentActivity => ({
917
- label,
918
- silentSeconds: DEFAULT_SUBAGENT_SILENT_THRESHOLD_SECONDS,
919
- runningSeconds: 60,
920
- waitingOnExternalProcess: false,
921
- });
922
-
923
873
  it('loads the fire-once latch using the configured recency window', async () => {
924
874
  setupSilentGithubSession();
925
875
 
@@ -973,69 +923,17 @@ describe('NotifySilentLiveSessionsUseCase', () => {
973
923
  ).toHaveBeenCalledWith({ sessionNames: [], now });
974
924
  });
975
925
 
976
- it('does not inject into a session whose main REPL has an in-progress tool call even when a sub-agent advisory qualifies', async () => {
977
- setupLiveInteractiveSession(GITHUB_SESSION);
978
- mockSessionOutputActivityRepository.listSessionOutputActivities.mockResolvedValue(
979
- [
980
- {
981
- sessionName: GITHUB_SESSION,
982
- lastOutputEpochSeconds: nowEpochSeconds,
983
- hasInProgressToolCall: true,
984
- },
985
- ],
986
- );
987
- mockSubAgentActivityRepository.listSubAgentActivitiesBySessionName.mockResolvedValue(
988
- new Map([[GITHUB_SESSION, [idleSubAgent('sub-process-1')]]]),
989
- );
926
+ it('sends the reminder for a silent session even when its main REPL is mid-turn, because apparent busyness no longer defers delivery', async () => {
927
+ setupSilentGithubSession();
990
928
 
991
929
  await useCase.run(runParams());
992
930
 
993
- expect(mockMessageComposer.composeSubAgentSection).toHaveBeenCalled();
994
931
  expect(
995
932
  mockNotificationRepository.sendSelfCheckNotification,
996
- ).not.toHaveBeenCalled();
933
+ ).toHaveBeenCalledWith(GITHUB_SESSION, MAIN_STALLED_SECTION);
997
934
  expect(
998
935
  mockNotifiedStateRepository.saveNotifiedSessionNames,
999
- ).toHaveBeenCalledWith({ sessionNames: [], now });
1000
- });
1001
-
1002
- it('delivers the deferred reminder once the main REPL becomes input-ready', async () => {
1003
- wireStatefulNotifiedLatch();
1004
- setupLiveInteractiveSession(GITHUB_SESSION);
1005
- mockSubAgentActivityRepository.listSubAgentActivitiesBySessionName.mockResolvedValue(
1006
- new Map([[GITHUB_SESSION, [idleSubAgent('sub-process-1')]]]),
1007
- );
1008
-
1009
- mockSessionOutputActivityRepository.listSessionOutputActivities.mockResolvedValue(
1010
- [
1011
- {
1012
- sessionName: GITHUB_SESSION,
1013
- lastOutputEpochSeconds: nowEpochSeconds,
1014
- hasInProgressToolCall: true,
1015
- },
1016
- ],
1017
- );
1018
- await useCase.run(runParams());
1019
- expect(
1020
- mockNotificationRepository.sendSelfCheckNotification,
1021
- ).not.toHaveBeenCalled();
1022
-
1023
- mockSessionOutputActivityRepository.listSessionOutputActivities.mockResolvedValue(
1024
- [
1025
- {
1026
- sessionName: GITHUB_SESSION,
1027
- lastOutputEpochSeconds: nowEpochSeconds,
1028
- hasInProgressToolCall: false,
1029
- },
1030
- ],
1031
- );
1032
- await useCase.run(runParams());
1033
- expect(
1034
- mockNotificationRepository.sendSelfCheckNotification,
1035
- ).toHaveBeenCalledTimes(1);
1036
- expect(
1037
- mockNotificationRepository.sendSelfCheckNotification,
1038
- ).toHaveBeenCalledWith(GITHUB_SESSION, SUBAGENT_SECTION);
936
+ ).toHaveBeenCalledWith({ sessionNames: [GITHUB_SESSION], now });
1039
937
  });
1040
938
  });
1041
939
 
@@ -1218,13 +1116,11 @@ describe('NotifySilentLiveSessionsUseCase', () => {
1218
1116
  sessionName: GITHUB_SESSION_ALPHA,
1219
1117
  lastOutputEpochSeconds:
1220
1118
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
1221
- hasInProgressToolCall: false,
1222
1119
  },
1223
1120
  {
1224
1121
  sessionName: GITHUB_SESSION_BRAVO,
1225
1122
  lastOutputEpochSeconds:
1226
1123
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
1227
- hasInProgressToolCall: false,
1228
1124
  },
1229
1125
  ],
1230
1126
  );
@@ -1260,7 +1156,6 @@ describe('NotifySilentLiveSessionsUseCase', () => {
1260
1156
  sessionName: GITHUB_SESSION,
1261
1157
  lastOutputEpochSeconds:
1262
1158
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
1263
- hasInProgressToolCall: false,
1264
1159
  },
1265
1160
  ],
1266
1161
  );
@@ -1802,13 +1697,11 @@ describe('NotifySilentLiveSessionsUseCase', () => {
1802
1697
  sessionName: GITHUB_SESSION_ALPHA,
1803
1698
  lastOutputEpochSeconds:
1804
1699
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
1805
- hasInProgressToolCall: false,
1806
1700
  },
1807
1701
  {
1808
1702
  sessionName: GITHUB_SESSION_BRAVO,
1809
1703
  lastOutputEpochSeconds:
1810
1704
  nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
1811
- hasInProgressToolCall: false,
1812
1705
  },
1813
1706
  ],
1814
1707
  );
@@ -26,15 +26,6 @@ export const DEFAULT_SUBAGENT_RUNNING_THRESHOLD_SECONDS = 15 * 60;
26
26
  export const DEFAULT_NOTIFICATION_STAGGER_SECONDS = 25;
27
27
  export const DEFAULT_CANDIDATE_DEBOUNCE_RECENCY_WINDOW_SECONDS = 15 * 60;
28
28
  export const DEFAULT_HUB_TASK_STATUS_CACHE_TTL_SECONDS = 5 * 60;
29
- // Upper bound on how long an in-progress tool call suppresses the main-stall
30
- // reminder. Set to 2 hours: comfortably above the ~1-hour maximum duration of
31
- // the longest legitimate single tool call (the Monitor tool's own timeout
32
- // ceiling), so every legitimate long-running tool call is still suppressed,
33
- // while a session whose transcript tail has been an unanswered tool_use for
34
- // longer than this — for example because the tool call itself hung and never
35
- // returned — still receives the stall reminder instead of being suppressed
36
- // forever.
37
- export const IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS = 2 * 60 * 60;
38
29
 
39
30
  const GITHUB_ISSUE_OR_PULL_URL_PATTERN =
40
31
  /^https:\/\/github\.com\/([^/]+)\/([^/]+)\/(?:issues|pull)\/(\d+)$/;
@@ -71,7 +62,6 @@ type NotifyCandidate = {
71
62
  sessionName: string;
72
63
  message: string;
73
64
  sectionLabels: string[];
74
- mainInputBusy: boolean;
75
65
  };
76
66
 
77
67
  export class NotifySilentLiveSessionsUseCase {
@@ -212,20 +202,6 @@ export class NotifySilentLiveSessionsUseCase {
212
202
  );
213
203
  continue;
214
204
  }
215
- // Input-state gating: a session whose main REPL is mid-turn — currently
216
- // running an in-progress tool call, which includes waiting on a
217
- // long-running sub-agent — cannot accept an injected prompt cleanly, so
218
- // the reminder is deferred rather than piled into a busy input box. The
219
- // session stays a candidate, so it is reminded once it becomes
220
- // input-ready. A tool call pending past
221
- // IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS is treated as hung and no
222
- // longer counts as busy (see composeCandidate).
223
- if (candidate.mainInputBusy) {
224
- console.log(
225
- `Skipping ${candidate.sessionName}: main REPL is not in an input-accepting state (in-progress tool call); deferring reminder until it is idle.`,
226
- );
227
- continue;
228
- }
229
205
  if (
230
206
  !(await this.isHubTaskActive(
231
207
  candidate.sessionName,
@@ -404,16 +380,11 @@ export class NotifySilentLiveSessionsUseCase {
404
380
  transcriptPathBySessionName,
405
381
  );
406
382
  const lastOutputBySessionName = new Map<string, number>();
407
- const inProgressToolCallBySessionName = new Map<string, boolean>();
408
383
  for (const activity of activities) {
409
384
  lastOutputBySessionName.set(
410
385
  activity.sessionName,
411
386
  activity.lastOutputEpochSeconds,
412
387
  );
413
- inProgressToolCallBySessionName.set(
414
- activity.sessionName,
415
- activity.hasInProgressToolCall,
416
- );
417
388
  }
418
389
 
419
390
  const subAgentsBySessionName =
@@ -439,8 +410,6 @@ export class NotifySilentLiveSessionsUseCase {
439
410
  return {
440
411
  sessionName,
441
412
  mainSilentSeconds,
442
- mainHasInProgressToolCall:
443
- inProgressToolCallBySessionName.get(sessionName) ?? false,
444
413
  subAgents: subAgentsBySessionName.get(sessionName) ?? [],
445
414
  unansweredOwnerCallAgeSeconds:
446
415
  unansweredOwnerCallEpochSeconds === undefined
@@ -476,30 +445,17 @@ export class NotifySilentLiveSessionsUseCase {
476
445
  // call signature and is intentionally ignored (treated as infinite).
477
446
  const suppressedByUnansweredOwnerCall =
478
447
  unansweredOwnerCallAgeSeconds !== null;
479
- // A session whose transcript tail is an assistant tool_use with no matching
480
- // tool_result is legitimately busy running one long tool call (e.g. a Bash
481
- // command near its timeout, or a Monitor waiting up to an hour): it appends
482
- // no new assistant line while the tool runs, so mainSilentSeconds crosses
483
- // the threshold even though the session is working, not stalled. Suppress
484
- // the main-stall reminder in that case. Genuine thrashing silence — where
485
- // the last assistant tool_use was already answered (or there is none) has
486
- // no pending tool call and is still flagged.
487
- // The suppression is bounded by the pending tool call's own age
488
- // (mainSilentSeconds, which for an in-progress tool call equals the age of
489
- // the pending tool_use line) so it cannot last forever: a session stuck
490
- // inside a tool call that never returns is reminded once that age exceeds
491
- // IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS, restoring the ~10-minute
492
- // stall reminder for a truly hung session instead of suppressing it
493
- // indefinitely.
494
- const suppressedByInProgressToolCall =
495
- snapshot.mainHasInProgressToolCall &&
496
- mainSilentSeconds !== null &&
497
- mainSilentSeconds < IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS;
448
+ // The main-stall reminder is driven purely by silence: a session that has
449
+ // produced no assistant output for longer than the threshold is reminded
450
+ // regardless of whether its transcript tail is an in-progress tool_use. A
451
+ // session that merely looks busy (mid-tool-call) can in fact be stuck, so
452
+ // its apparent busyness MUST NOT suppress the reminder; the reminder queues
453
+ // cleanly into the session even when it is mid-turn. The only main-stall
454
+ // suppression is an unanswered owner call, which is a real wait on the owner.
498
455
  const mainTriggered =
499
456
  mainSilentSeconds !== null &&
500
457
  mainSilentSeconds >= thresholds.mainSilentThresholdSeconds &&
501
- !suppressedByUnansweredOwnerCall &&
502
- !suppressedByInProgressToolCall;
458
+ !suppressedByUnansweredOwnerCall;
503
459
  if (mainTriggered) {
504
460
  sections.push(
505
461
  this.messageComposer.composeMainStalledSection(mainSilentSeconds),
@@ -547,7 +503,6 @@ export class NotifySilentLiveSessionsUseCase {
547
503
  sessionName: snapshot.sessionName,
548
504
  message: sections.join('\n\n'),
549
505
  sectionLabels,
550
- mainInputBusy: suppressedByInProgressToolCall,
551
506
  };
552
507
  };
553
508
  }
@@ -2,6 +2,6 @@ import { LiveSessionOutputActivity } from '../../domain/entities/LiveSessionOutp
2
2
  import { SessionOutputActivityRepository } from '../../domain/usecases/adapter-interfaces/SessionOutputActivityRepository';
3
3
  export declare class FileSystemSessionOutputActivityRepository implements SessionOutputActivityRepository {
4
4
  listSessionOutputActivities: (transcriptPathBySessionName: Map<string, string>) => Promise<LiveSessionOutputActivity[]>;
5
- private readTranscriptActivity;
5
+ private readLastAssistantOutputEpochSeconds;
6
6
  }
7
7
  //# sourceMappingURL=FileSystemSessionOutputActivityRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileSystemSessionOutputActivityRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/FileSystemSessionOutputActivityRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AAC5F,OAAO,EAAE,+BAA+B,EAAE,MAAM,0EAA0E,CAAC;AAoC3H,qBAAa,yCAA0C,YAAW,+BAA+B;IAC/F,2BAA2B,GACzB,6BAA6B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAC/C,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAcrC;IAEF,OAAO,CAAC,sBAAsB,CA4D5B;CACH"}
1
+ {"version":3,"file":"FileSystemSessionOutputActivityRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/FileSystemSessionOutputActivityRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AAC5F,OAAO,EAAE,+BAA+B,EAAE,MAAM,0EAA0E,CAAC;AAqB3H,qBAAa,yCAA0C,YAAW,+BAA+B;IAC/F,2BAA2B,GACzB,6BAA6B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAC/C,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAarC;IAEF,OAAO,CAAC,mCAAmC,CAkCzC;CACH"}
@@ -7,7 +7,6 @@ export type SubAgentActivity = {
7
7
  export type LiveSessionActivitySnapshot = {
8
8
  sessionName: string;
9
9
  mainSilentSeconds: number | null;
10
- mainHasInProgressToolCall: boolean;
11
10
  subAgents: SubAgentActivity[];
12
11
  unansweredOwnerCallAgeSeconds: number | null;
13
12
  };
@@ -1 +1 @@
1
- {"version":3,"file":"LiveSessionActivitySnapshot.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/LiveSessionActivitySnapshot.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,wBAAwB,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,yBAAyB,EAAE,OAAO,CAAC;IACnC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,6BAA6B,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9C,CAAC"}
1
+ {"version":3,"file":"LiveSessionActivitySnapshot.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/LiveSessionActivitySnapshot.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,wBAAwB,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,6BAA6B,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9C,CAAC"}
@@ -1,6 +1,5 @@
1
1
  export type LiveSessionOutputActivity = {
2
2
  sessionName: string;
3
3
  lastOutputEpochSeconds: number;
4
- hasInProgressToolCall: boolean;
5
4
  };
6
5
  //# sourceMappingURL=LiveSessionOutputActivity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LiveSessionOutputActivity.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/LiveSessionOutputActivity.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,EAAE,OAAO,CAAC;CAChC,CAAC"}
1
+ {"version":3,"file":"LiveSessionOutputActivity.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/LiveSessionOutputActivity.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,EAAE,MAAM,CAAC;CAChC,CAAC"}
@@ -18,7 +18,6 @@ export declare const DEFAULT_SUBAGENT_RUNNING_THRESHOLD_SECONDS: number;
18
18
  export declare const DEFAULT_NOTIFICATION_STAGGER_SECONDS = 25;
19
19
  export declare const DEFAULT_CANDIDATE_DEBOUNCE_RECENCY_WINDOW_SECONDS: number;
20
20
  export declare const DEFAULT_HUB_TASK_STATUS_CACHE_TTL_SECONDS: number;
21
- export declare const IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS: number;
22
21
  export declare const parseHubTaskIssueUrlFromSessionName: (sessionName: string) => string | null;
23
22
  export declare const isGitHubIssueOrPullRequestSessionName: (sessionName: string) => boolean;
24
23
  export type HubTaskStatusResolver = Pick<IssueRepository, 'getIssueByUrl'>;
@@ -1 +1 @@
1
- {"version":3,"file":"NotifySilentLiveSessionsUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/NotifySilentLiveSessionsUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NotifySilentLiveSessionsUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/NotifySilentLiveSessionsUseCase.ts"],"names":[],"mappings":"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"}