github-issue-tower-defence-management 1.126.2 → 1.126.3
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 +7 -0
- package/bin/adapter/repositories/FileSystemSessionOutputActivityRepository.js +49 -24
- package/bin/adapter/repositories/FileSystemSessionOutputActivityRepository.js.map +1 -1
- package/bin/domain/usecases/NotifySilentLiveSessionsUseCase.js +33 -2
- package/bin/domain/usecases/NotifySilentLiveSessionsUseCase.js.map +1 -1
- package/package.json +4 -4
- package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleOperations.test.ts +5 -2
- package/src/adapter/repositories/FileSystemSessionOutputActivityRepository.test.ts +183 -18
- package/src/adapter/repositories/FileSystemSessionOutputActivityRepository.ts +59 -26
- package/src/domain/entities/LiveSessionActivitySnapshot.ts +1 -0
- package/src/domain/entities/LiveSessionOutputActivity.ts +1 -0
- package/src/domain/usecases/NotifySilentLiveSessionsUseCase.test.ts +70 -0
- package/src/domain/usecases/NotifySilentLiveSessionsUseCase.ts +37 -1
- package/types/adapter/repositories/FileSystemSessionOutputActivityRepository.d.ts +1 -11
- package/types/adapter/repositories/FileSystemSessionOutputActivityRepository.d.ts.map +1 -1
- package/types/domain/entities/LiveSessionActivitySnapshot.d.ts +1 -0
- package/types/domain/entities/LiveSessionActivitySnapshot.d.ts.map +1 -1
- package/types/domain/entities/LiveSessionOutputActivity.d.ts +1 -0
- package/types/domain/entities/LiveSessionOutputActivity.d.ts.map +1 -1
- package/types/domain/usecases/NotifySilentLiveSessionsUseCase.d.ts +1 -0
- package/types/domain/usecases/NotifySilentLiveSessionsUseCase.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [1.126.3](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.126.2...v1.126.3) (2026-07-22)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **silent-monitor:** compute main-session last activity from the last assistant line only ([#1242](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1242)) ([1f11221](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/1f11221dc8ef8d8c3c2c137e1b728297ccb4ddf2)), closes [#1241](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1241) [#1241](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1241) [#1241](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1241)
|
|
7
|
+
|
|
1
8
|
## [1.126.2](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.126.1...v1.126.2) (2026-07-20)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -47,37 +47,42 @@ const parseEpochMilliseconds = (timestamp) => {
|
|
|
47
47
|
const parsed = Date.parse(timestamp);
|
|
48
48
|
return Number.isNaN(parsed) ? null : parsed;
|
|
49
49
|
};
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
* entry with a parseable timestamp counts as activity, so a working session is
|
|
58
|
-
* not mistaken for a silent one.
|
|
59
|
-
*/
|
|
50
|
+
const readContentBlocks = (message) => {
|
|
51
|
+
const content = message.content;
|
|
52
|
+
if (!Array.isArray(content)) {
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
return content.filter(isRecord);
|
|
56
|
+
};
|
|
60
57
|
class FileSystemSessionOutputActivityRepository {
|
|
61
58
|
constructor() {
|
|
62
59
|
this.listSessionOutputActivities = async (transcriptPathBySessionName) => {
|
|
63
60
|
const activities = [];
|
|
64
61
|
for (const [sessionName, transcriptPath] of transcriptPathBySessionName) {
|
|
65
|
-
const
|
|
66
|
-
if (
|
|
67
|
-
activities.push({
|
|
62
|
+
const { lastAssistantOutputEpochSeconds, hasInProgressToolCall } = this.readTranscriptActivity(transcriptPath);
|
|
63
|
+
if (lastAssistantOutputEpochSeconds !== null) {
|
|
64
|
+
activities.push({
|
|
65
|
+
sessionName,
|
|
66
|
+
lastOutputEpochSeconds: lastAssistantOutputEpochSeconds,
|
|
67
|
+
hasInProgressToolCall,
|
|
68
|
+
});
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
return activities;
|
|
71
72
|
};
|
|
72
|
-
this.
|
|
73
|
+
this.readTranscriptActivity = (transcriptPath) => {
|
|
73
74
|
let content;
|
|
74
75
|
try {
|
|
75
76
|
content = fs.readFileSync(transcriptPath, 'utf8');
|
|
76
77
|
}
|
|
77
78
|
catch {
|
|
78
|
-
return
|
|
79
|
+
return {
|
|
80
|
+
lastAssistantOutputEpochSeconds: null,
|
|
81
|
+
hasInProgressToolCall: false,
|
|
82
|
+
};
|
|
79
83
|
}
|
|
80
|
-
let
|
|
84
|
+
let lastAssistantOutputEpochMs = null;
|
|
85
|
+
const pendingToolUseIds = new Set();
|
|
81
86
|
for (const line of content.split('\n')) {
|
|
82
87
|
const trimmed = line.trim();
|
|
83
88
|
if (trimmed.length === 0) {
|
|
@@ -93,18 +98,38 @@ class FileSystemSessionOutputActivityRepository {
|
|
|
93
98
|
if (!isRecord(parsed)) {
|
|
94
99
|
continue;
|
|
95
100
|
}
|
|
96
|
-
const
|
|
97
|
-
if (
|
|
101
|
+
const message = parsed.message;
|
|
102
|
+
if (readString(parsed, 'type') === 'assistant') {
|
|
103
|
+
const epochMs = parseEpochMilliseconds(readString(parsed, 'timestamp'));
|
|
104
|
+
if (epochMs !== null) {
|
|
105
|
+
lastAssistantOutputEpochMs = epochMs;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (!isRecord(message)) {
|
|
98
109
|
continue;
|
|
99
110
|
}
|
|
100
|
-
|
|
101
|
-
|
|
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
|
+
}
|
|
102
125
|
}
|
|
103
126
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
127
|
+
return {
|
|
128
|
+
lastAssistantOutputEpochSeconds: lastAssistantOutputEpochMs === null
|
|
129
|
+
? null
|
|
130
|
+
: Math.floor(lastAssistantOutputEpochMs / 1000),
|
|
131
|
+
hasInProgressToolCall: pendingToolUseIds.size > 0,
|
|
132
|
+
};
|
|
108
133
|
};
|
|
109
134
|
}
|
|
110
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileSystemSessionOutputActivityRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/FileSystemSessionOutputActivityRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AAIzB,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AAE9C,MAAM,UAAU,GAAG,CACjB,KAA8B,EAC9B,GAAW,EACI,EAAE;IACjB,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAAC,SAAwB,EAAiB,EAAE;IACzE,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9C,CAAC,CAAC;AAEF
|
|
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.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.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;
|
|
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,6 +13,15 @@ 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;
|
|
16
25
|
const GITHUB_ISSUE_OR_PULL_URL_PATTERN = /^https:\/\/github\.com\/([^/]+)\/([^/]+)\/(?:issues|pull)\/(\d+)$/;
|
|
17
26
|
const GITHUB_TMUX_SESSION_NAME_PATTERN = /^https_\/\/github_com\/([^/]+)\/([^/]+)\/(?:issues|pull)\/(\d+)$/;
|
|
18
27
|
const parseHubTaskIssueUrlFromSessionName = (sessionName) => {
|
|
@@ -184,8 +193,10 @@ class NotifySilentLiveSessionsUseCase {
|
|
|
184
193
|
const sessionNames = interactiveSessions.map((session) => session.sessionName);
|
|
185
194
|
const activities = await this.sessionOutputActivityRepository.listSessionOutputActivities(transcriptPathBySessionName);
|
|
186
195
|
const lastOutputBySessionName = new Map();
|
|
196
|
+
const inProgressToolCallBySessionName = new Map();
|
|
187
197
|
for (const activity of activities) {
|
|
188
198
|
lastOutputBySessionName.set(activity.sessionName, activity.lastOutputEpochSeconds);
|
|
199
|
+
inProgressToolCallBySessionName.set(activity.sessionName, activity.hasInProgressToolCall);
|
|
189
200
|
}
|
|
190
201
|
const subAgentsBySessionName = await this.subAgentActivityRepository.listSubAgentActivitiesBySessionName(sessionNames, transcriptPathBySessionName);
|
|
191
202
|
const unansweredOwnerCallEpochSecondsBySessionName = await this.ownerCallStatusProvider.listUnansweredOwnerCallEpochSecondsBySessionName(transcriptPathBySessionName);
|
|
@@ -199,6 +210,7 @@ class NotifySilentLiveSessionsUseCase {
|
|
|
199
210
|
return {
|
|
200
211
|
sessionName,
|
|
201
212
|
mainSilentSeconds,
|
|
213
|
+
mainHasInProgressToolCall: inProgressToolCallBySessionName.get(sessionName) ?? false,
|
|
202
214
|
subAgents: subAgentsBySessionName.get(sessionName) ?? [],
|
|
203
215
|
unansweredOwnerCallAgeSeconds: unansweredOwnerCallEpochSeconds === undefined
|
|
204
216
|
? null
|
|
@@ -220,9 +232,28 @@ class NotifySilentLiveSessionsUseCase {
|
|
|
220
232
|
// is retained in the parameters only for backward compatibility of the
|
|
221
233
|
// call signature and is intentionally ignored (treated as infinite).
|
|
222
234
|
const suppressedByUnansweredOwnerCall = unansweredOwnerCallAgeSeconds !== null;
|
|
235
|
+
// A session whose transcript tail is an assistant tool_use with no matching
|
|
236
|
+
// tool_result is legitimately busy running one long tool call (e.g. a Bash
|
|
237
|
+
// command near its timeout, or a Monitor waiting up to an hour): it appends
|
|
238
|
+
// no new assistant line while the tool runs, so mainSilentSeconds crosses
|
|
239
|
+
// the threshold even though the session is working, not stalled. Suppress
|
|
240
|
+
// the main-stall reminder in that case. Genuine thrashing silence — where
|
|
241
|
+
// the last assistant tool_use was already answered (or there is none) — has
|
|
242
|
+
// no pending tool call and is still flagged.
|
|
243
|
+
// The suppression is bounded by the pending tool call's own age
|
|
244
|
+
// (mainSilentSeconds, which for an in-progress tool call equals the age of
|
|
245
|
+
// the pending tool_use line) so it cannot last forever: a session stuck
|
|
246
|
+
// inside a tool call that never returns is reminded once that age exceeds
|
|
247
|
+
// IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS, restoring the ~10-minute
|
|
248
|
+
// stall reminder for a truly hung session instead of suppressing it
|
|
249
|
+
// indefinitely.
|
|
250
|
+
const suppressedByInProgressToolCall = snapshot.mainHasInProgressToolCall &&
|
|
251
|
+
mainSilentSeconds !== null &&
|
|
252
|
+
mainSilentSeconds < exports.IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS;
|
|
223
253
|
const mainTriggered = mainSilentSeconds !== null &&
|
|
224
254
|
mainSilentSeconds >= thresholds.mainSilentThresholdSeconds &&
|
|
225
|
-
!suppressedByUnansweredOwnerCall
|
|
255
|
+
!suppressedByUnansweredOwnerCall &&
|
|
256
|
+
!suppressedByInProgressToolCall;
|
|
226
257
|
if (mainTriggered) {
|
|
227
258
|
sections.push(this.messageComposer.composeMainStalledSection(mainSilentSeconds));
|
|
228
259
|
sectionLabels.push('main-stalled');
|
|
@@ -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.126.
|
|
3
|
+
"version": "1.126.3",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "bin/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"@testing-library/react": "16.3.2",
|
|
66
66
|
"@jest/globals": "^29.7.0",
|
|
67
67
|
"@types/better-sqlite3": "7.6.13",
|
|
68
|
-
"@types/jest": "^
|
|
68
|
+
"@types/jest": "^30.0.0",
|
|
69
69
|
"@types/node": "^20.5.1",
|
|
70
70
|
"@types/react": "^19.1.0",
|
|
71
71
|
"@types/react-dom": "^19.1.0",
|
|
@@ -82,8 +82,8 @@
|
|
|
82
82
|
"eslint": "^10.5.0",
|
|
83
83
|
"eslint-plugin-import-x": "^4.0.0",
|
|
84
84
|
"eslint-plugin-unused-imports": "^4.4.1",
|
|
85
|
-
"jest": "^
|
|
86
|
-
"jest-environment-jsdom": "
|
|
85
|
+
"jest": "^30.4.2",
|
|
86
|
+
"jest-environment-jsdom": "30.4.1",
|
|
87
87
|
"jest-html-reporter": "^4.4.0",
|
|
88
88
|
"jest-junit": "^17.0.0",
|
|
89
89
|
"jest-mock-extended": "^4.0.0-beta1",
|
package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleOperations.test.ts
CHANGED
|
@@ -36,8 +36,11 @@ const captureFetch = (): jest.Mock => {
|
|
|
36
36
|
return fetchMock;
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
-
const lastBody = (fetchMock: jest.Mock): Record<string, unknown> =>
|
|
40
|
-
|
|
39
|
+
const lastBody = (fetchMock: jest.Mock): Record<string, unknown> => {
|
|
40
|
+
const lastCall = fetchMock.mock.calls.at(-1);
|
|
41
|
+
if (!lastCall) throw new Error('No fetch calls found');
|
|
42
|
+
return JSON.parse((lastCall[1] as { body: string }).body);
|
|
43
|
+
};
|
|
41
44
|
|
|
42
45
|
const setup = () => {
|
|
43
46
|
localStorage.clear();
|
|
@@ -25,6 +25,14 @@ describe('FileSystemSessionOutputActivityRepository', () => {
|
|
|
25
25
|
},
|
|
26
26
|
});
|
|
27
27
|
|
|
28
|
+
const assistantEntryWithoutTimestamp = (): object => ({
|
|
29
|
+
type: 'assistant',
|
|
30
|
+
message: {
|
|
31
|
+
role: 'assistant',
|
|
32
|
+
content: [{ type: 'text', text: 'no timestamp on this entry' }],
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
|
|
28
36
|
const userEntry = (timestamp: string): object => ({
|
|
29
37
|
type: 'user',
|
|
30
38
|
timestamp,
|
|
@@ -37,6 +45,51 @@ describe('FileSystemSessionOutputActivityRepository', () => {
|
|
|
37
45
|
toolUseResult: { stdout: 'done', stderr: '' },
|
|
38
46
|
});
|
|
39
47
|
|
|
48
|
+
const systemEntry = (timestamp: string): object => ({
|
|
49
|
+
type: 'system',
|
|
50
|
+
timestamp,
|
|
51
|
+
content: 'Compacting conversation history',
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
const assistantEntryWithToolUse = (
|
|
55
|
+
timestamp: string,
|
|
56
|
+
toolUseId: string,
|
|
57
|
+
): object => ({
|
|
58
|
+
type: 'assistant',
|
|
59
|
+
timestamp,
|
|
60
|
+
message: {
|
|
61
|
+
role: 'assistant',
|
|
62
|
+
stop_reason: 'tool_use',
|
|
63
|
+
content: [
|
|
64
|
+
{ type: 'text', text: 'running a command' },
|
|
65
|
+
{
|
|
66
|
+
type: 'tool_use',
|
|
67
|
+
id: toolUseId,
|
|
68
|
+
name: 'Bash',
|
|
69
|
+
input: { command: 'sleep 590' },
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
const toolResultUserEntry = (
|
|
76
|
+
timestamp: string,
|
|
77
|
+
toolUseId: string,
|
|
78
|
+
): object => ({
|
|
79
|
+
type: 'user',
|
|
80
|
+
timestamp,
|
|
81
|
+
message: {
|
|
82
|
+
role: 'user',
|
|
83
|
+
content: [
|
|
84
|
+
{
|
|
85
|
+
type: 'tool_result',
|
|
86
|
+
tool_use_id: toolUseId,
|
|
87
|
+
content: 'done',
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
|
|
40
93
|
const untimestampedEntry = (): object => ({
|
|
41
94
|
type: 'summary',
|
|
42
95
|
summary: 'no timestamp on this entry',
|
|
@@ -52,11 +105,56 @@ describe('FileSystemSessionOutputActivityRepository', () => {
|
|
|
52
105
|
return filePath;
|
|
53
106
|
};
|
|
54
107
|
|
|
55
|
-
it('returns the
|
|
108
|
+
it('returns the old last-assistant timestamp when recent system and tool entries follow it', async () => {
|
|
109
|
+
const transcriptPath = writeTranscript('thrashing.jsonl', [
|
|
110
|
+
assistantEntry('2026-06-27T01:00:00.000Z'),
|
|
111
|
+
systemEntry('2026-06-27T09:30:00.000Z'),
|
|
112
|
+
toolResultEntry('2026-06-27T09:45:00.000Z'),
|
|
113
|
+
systemEntry('2026-06-27T10:00:00.000Z'),
|
|
114
|
+
]);
|
|
115
|
+
const repository = new FileSystemSessionOutputActivityRepository();
|
|
116
|
+
|
|
117
|
+
const result = await repository.listSessionOutputActivities(
|
|
118
|
+
new Map([['thrashing', transcriptPath]]),
|
|
119
|
+
);
|
|
120
|
+
|
|
121
|
+
expect(result).toEqual([
|
|
122
|
+
{
|
|
123
|
+
sessionName: 'thrashing',
|
|
124
|
+
lastOutputEpochSeconds: Math.floor(
|
|
125
|
+
Date.parse('2026-06-27T01:00:00.000Z') / 1000,
|
|
126
|
+
),
|
|
127
|
+
hasInProgressToolCall: false,
|
|
128
|
+
},
|
|
129
|
+
]);
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it('returns the recent timestamp when the latest assistant entry is recent', async () => {
|
|
133
|
+
const transcriptPath = writeTranscript('working.jsonl', [
|
|
134
|
+
userEntry('2026-06-27T09:00:00.000Z'),
|
|
135
|
+
assistantEntry('2026-06-27T09:55:00.000Z'),
|
|
136
|
+
]);
|
|
137
|
+
const repository = new FileSystemSessionOutputActivityRepository();
|
|
138
|
+
|
|
139
|
+
const result = await repository.listSessionOutputActivities(
|
|
140
|
+
new Map([['working', transcriptPath]]),
|
|
141
|
+
);
|
|
142
|
+
|
|
143
|
+
expect(result).toEqual([
|
|
144
|
+
{
|
|
145
|
+
sessionName: 'working',
|
|
146
|
+
lastOutputEpochSeconds: Math.floor(
|
|
147
|
+
Date.parse('2026-06-27T09:55:00.000Z') / 1000,
|
|
148
|
+
),
|
|
149
|
+
hasInProgressToolCall: false,
|
|
150
|
+
},
|
|
151
|
+
]);
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
it('ignores a later user entry and returns the last assistant timestamp', async () => {
|
|
56
155
|
const transcriptPath = writeTranscript('workbench.jsonl', [
|
|
57
156
|
assistantEntry('2026-06-27T10:00:00.000Z'),
|
|
58
|
-
userEntry('2026-06-
|
|
59
|
-
assistantEntry('2026-06-27T10:05:00.000Z'),
|
|
157
|
+
userEntry('2026-06-27T11:00:00.000Z'),
|
|
60
158
|
]);
|
|
61
159
|
const repository = new FileSystemSessionOutputActivityRepository();
|
|
62
160
|
|
|
@@ -68,16 +166,41 @@ describe('FileSystemSessionOutputActivityRepository', () => {
|
|
|
68
166
|
{
|
|
69
167
|
sessionName: 'workbench',
|
|
70
168
|
lastOutputEpochSeconds: Math.floor(
|
|
71
|
-
Date.parse('2026-06-27T10:
|
|
169
|
+
Date.parse('2026-06-27T10:00:00.000Z') / 1000,
|
|
72
170
|
),
|
|
171
|
+
hasInProgressToolCall: false,
|
|
73
172
|
},
|
|
74
173
|
]);
|
|
75
174
|
});
|
|
76
175
|
|
|
77
|
-
it('
|
|
176
|
+
it('ignores a later tool_result entry and returns the last assistant timestamp', async () => {
|
|
78
177
|
const transcriptPath = writeTranscript('workbench.jsonl', [
|
|
79
178
|
assistantEntry('2026-06-27T10:00:00.000Z'),
|
|
80
|
-
|
|
179
|
+
toolResultEntry('2026-06-27T10:45:00.000Z'),
|
|
180
|
+
]);
|
|
181
|
+
const repository = new FileSystemSessionOutputActivityRepository();
|
|
182
|
+
|
|
183
|
+
const result = await repository.listSessionOutputActivities(
|
|
184
|
+
new Map([['workbench', transcriptPath]]),
|
|
185
|
+
);
|
|
186
|
+
|
|
187
|
+
expect(result).toEqual([
|
|
188
|
+
{
|
|
189
|
+
sessionName: 'workbench',
|
|
190
|
+
lastOutputEpochSeconds: Math.floor(
|
|
191
|
+
Date.parse('2026-06-27T10:00:00.000Z') / 1000,
|
|
192
|
+
),
|
|
193
|
+
hasInProgressToolCall: false,
|
|
194
|
+
},
|
|
195
|
+
]);
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
it('returns the last assistant entry timestamp when several entry types interleave', async () => {
|
|
199
|
+
const transcriptPath = writeTranscript('workbench.jsonl', [
|
|
200
|
+
assistantEntry('2026-06-27T10:00:00.000Z'),
|
|
201
|
+
userEntry('2026-06-27T10:10:00.000Z'),
|
|
202
|
+
assistantEntry('2026-06-27T10:05:00.000Z'),
|
|
203
|
+
systemEntry('2026-06-27T10:40:00.000Z'),
|
|
81
204
|
]);
|
|
82
205
|
const repository = new FileSystemSessionOutputActivityRepository();
|
|
83
206
|
|
|
@@ -89,16 +212,17 @@ describe('FileSystemSessionOutputActivityRepository', () => {
|
|
|
89
212
|
{
|
|
90
213
|
sessionName: 'workbench',
|
|
91
214
|
lastOutputEpochSeconds: Math.floor(
|
|
92
|
-
Date.parse('2026-06-
|
|
215
|
+
Date.parse('2026-06-27T10:05:00.000Z') / 1000,
|
|
93
216
|
),
|
|
217
|
+
hasInProgressToolCall: false,
|
|
94
218
|
},
|
|
95
219
|
]);
|
|
96
220
|
});
|
|
97
221
|
|
|
98
|
-
it('
|
|
222
|
+
it('falls back to the last assistant entry that has a parseable timestamp', async () => {
|
|
99
223
|
const transcriptPath = writeTranscript('workbench.jsonl', [
|
|
100
224
|
assistantEntry('2026-06-27T10:00:00.000Z'),
|
|
101
|
-
|
|
225
|
+
assistantEntryWithoutTimestamp(),
|
|
102
226
|
]);
|
|
103
227
|
const repository = new FileSystemSessionOutputActivityRepository();
|
|
104
228
|
|
|
@@ -110,8 +234,9 @@ describe('FileSystemSessionOutputActivityRepository', () => {
|
|
|
110
234
|
{
|
|
111
235
|
sessionName: 'workbench',
|
|
112
236
|
lastOutputEpochSeconds: Math.floor(
|
|
113
|
-
Date.parse('2026-06-27T10:
|
|
237
|
+
Date.parse('2026-06-27T10:00:00.000Z') / 1000,
|
|
114
238
|
),
|
|
239
|
+
hasInProgressToolCall: false,
|
|
115
240
|
},
|
|
116
241
|
]);
|
|
117
242
|
});
|
|
@@ -135,13 +260,29 @@ describe('FileSystemSessionOutputActivityRepository', () => {
|
|
|
135
260
|
lastOutputEpochSeconds: Math.floor(
|
|
136
261
|
Date.parse('2026-06-27T10:00:00.000Z') / 1000,
|
|
137
262
|
),
|
|
263
|
+
hasInProgressToolCall: false,
|
|
138
264
|
},
|
|
139
265
|
]);
|
|
140
266
|
});
|
|
141
267
|
|
|
142
|
-
it('
|
|
268
|
+
it('omits a transcript whose only entries are non-assistant entries', async () => {
|
|
143
269
|
const transcriptPath = writeTranscript('workbench.jsonl', [
|
|
144
270
|
userEntry('2026-06-27T10:00:00.000Z'),
|
|
271
|
+
toolResultEntry('2026-06-27T10:05:00.000Z'),
|
|
272
|
+
systemEntry('2026-06-27T10:10:00.000Z'),
|
|
273
|
+
]);
|
|
274
|
+
const repository = new FileSystemSessionOutputActivityRepository();
|
|
275
|
+
|
|
276
|
+
const result = await repository.listSessionOutputActivities(
|
|
277
|
+
new Map([['workbench', transcriptPath]]),
|
|
278
|
+
);
|
|
279
|
+
|
|
280
|
+
expect(result).toEqual([]);
|
|
281
|
+
});
|
|
282
|
+
|
|
283
|
+
it('omits sessions whose transcript has no parseable timestamp', async () => {
|
|
284
|
+
const transcriptPath = writeTranscript('workbench.jsonl', [
|
|
285
|
+
untimestampedEntry(),
|
|
145
286
|
]);
|
|
146
287
|
const repository = new FileSystemSessionOutputActivityRepository();
|
|
147
288
|
|
|
@@ -149,27 +290,51 @@ describe('FileSystemSessionOutputActivityRepository', () => {
|
|
|
149
290
|
new Map([['workbench', transcriptPath]]),
|
|
150
291
|
);
|
|
151
292
|
|
|
293
|
+
expect(result).toEqual([]);
|
|
294
|
+
});
|
|
295
|
+
|
|
296
|
+
it('flags a session as waiting on a running tool when the last assistant tool_use has no matching tool_result', async () => {
|
|
297
|
+
const transcriptPath = writeTranscript('busy.jsonl', [
|
|
298
|
+
assistantEntry('2026-06-27T09:00:00.000Z'),
|
|
299
|
+
assistantEntryWithToolUse('2026-06-27T09:01:00.000Z', 'toolu_running'),
|
|
300
|
+
]);
|
|
301
|
+
const repository = new FileSystemSessionOutputActivityRepository();
|
|
302
|
+
|
|
303
|
+
const result = await repository.listSessionOutputActivities(
|
|
304
|
+
new Map([['busy', transcriptPath]]),
|
|
305
|
+
);
|
|
306
|
+
|
|
152
307
|
expect(result).toEqual([
|
|
153
308
|
{
|
|
154
|
-
sessionName: '
|
|
309
|
+
sessionName: 'busy',
|
|
155
310
|
lastOutputEpochSeconds: Math.floor(
|
|
156
|
-
Date.parse('2026-06-
|
|
311
|
+
Date.parse('2026-06-27T09:01:00.000Z') / 1000,
|
|
157
312
|
),
|
|
313
|
+
hasInProgressToolCall: true,
|
|
158
314
|
},
|
|
159
315
|
]);
|
|
160
316
|
});
|
|
161
317
|
|
|
162
|
-
it('
|
|
163
|
-
const transcriptPath = writeTranscript('
|
|
164
|
-
|
|
318
|
+
it('does not flag a session once the matching tool_result for its last tool_use is appended', async () => {
|
|
319
|
+
const transcriptPath = writeTranscript('completed.jsonl', [
|
|
320
|
+
assistantEntryWithToolUse('2026-06-27T09:01:00.000Z', 'toolu_done'),
|
|
321
|
+
toolResultUserEntry('2026-06-27T09:05:00.000Z', 'toolu_done'),
|
|
165
322
|
]);
|
|
166
323
|
const repository = new FileSystemSessionOutputActivityRepository();
|
|
167
324
|
|
|
168
325
|
const result = await repository.listSessionOutputActivities(
|
|
169
|
-
new Map([['
|
|
326
|
+
new Map([['completed', transcriptPath]]),
|
|
170
327
|
);
|
|
171
328
|
|
|
172
|
-
expect(result).toEqual([
|
|
329
|
+
expect(result).toEqual([
|
|
330
|
+
{
|
|
331
|
+
sessionName: 'completed',
|
|
332
|
+
lastOutputEpochSeconds: Math.floor(
|
|
333
|
+
Date.parse('2026-06-27T09:01:00.000Z') / 1000,
|
|
334
|
+
),
|
|
335
|
+
hasInProgressToolCall: false,
|
|
336
|
+
},
|
|
337
|
+
]);
|
|
173
338
|
});
|
|
174
339
|
|
|
175
340
|
it('returns an empty list when no sessions are requested', async () => {
|
|
@@ -21,41 +21,54 @@ const parseEpochMilliseconds = (timestamp: string | null): number | null => {
|
|
|
21
21
|
return Number.isNaN(parsed) ? null : parsed;
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
+
|
|
34
39
|
export class FileSystemSessionOutputActivityRepository implements SessionOutputActivityRepository {
|
|
35
40
|
listSessionOutputActivities = async (
|
|
36
41
|
transcriptPathBySessionName: Map<string, string>,
|
|
37
42
|
): Promise<LiveSessionOutputActivity[]> => {
|
|
38
43
|
const activities: LiveSessionOutputActivity[] = [];
|
|
39
44
|
for (const [sessionName, transcriptPath] of transcriptPathBySessionName) {
|
|
40
|
-
const
|
|
41
|
-
this.
|
|
42
|
-
if (
|
|
43
|
-
activities.push({
|
|
45
|
+
const { lastAssistantOutputEpochSeconds, hasInProgressToolCall } =
|
|
46
|
+
this.readTranscriptActivity(transcriptPath);
|
|
47
|
+
if (lastAssistantOutputEpochSeconds !== null) {
|
|
48
|
+
activities.push({
|
|
49
|
+
sessionName,
|
|
50
|
+
lastOutputEpochSeconds: lastAssistantOutputEpochSeconds,
|
|
51
|
+
hasInProgressToolCall,
|
|
52
|
+
});
|
|
44
53
|
}
|
|
45
54
|
}
|
|
46
55
|
return activities;
|
|
47
56
|
};
|
|
48
57
|
|
|
49
|
-
private
|
|
58
|
+
private readTranscriptActivity = (
|
|
50
59
|
transcriptPath: string,
|
|
51
|
-
):
|
|
60
|
+
): TranscriptActivity => {
|
|
52
61
|
let content: string;
|
|
53
62
|
try {
|
|
54
63
|
content = fs.readFileSync(transcriptPath, 'utf8');
|
|
55
64
|
} catch {
|
|
56
|
-
return
|
|
65
|
+
return {
|
|
66
|
+
lastAssistantOutputEpochSeconds: null,
|
|
67
|
+
hasInProgressToolCall: false,
|
|
68
|
+
};
|
|
57
69
|
}
|
|
58
|
-
let
|
|
70
|
+
let lastAssistantOutputEpochMs: number | null = null;
|
|
71
|
+
const pendingToolUseIds = new Set<string>();
|
|
59
72
|
for (const line of content.split('\n')) {
|
|
60
73
|
const trimmed = line.trim();
|
|
61
74
|
if (trimmed.length === 0) {
|
|
@@ -70,17 +83,37 @@ export class FileSystemSessionOutputActivityRepository implements SessionOutputA
|
|
|
70
83
|
if (!isRecord(parsed)) {
|
|
71
84
|
continue;
|
|
72
85
|
}
|
|
73
|
-
const
|
|
74
|
-
if (
|
|
86
|
+
const message = parsed.message;
|
|
87
|
+
if (readString(parsed, 'type') === 'assistant') {
|
|
88
|
+
const epochMs = parseEpochMilliseconds(readString(parsed, 'timestamp'));
|
|
89
|
+
if (epochMs !== null) {
|
|
90
|
+
lastAssistantOutputEpochMs = epochMs;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (!isRecord(message)) {
|
|
75
94
|
continue;
|
|
76
95
|
}
|
|
77
|
-
|
|
78
|
-
|
|
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
|
+
}
|
|
79
109
|
}
|
|
80
110
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
111
|
+
return {
|
|
112
|
+
lastAssistantOutputEpochSeconds:
|
|
113
|
+
lastAssistantOutputEpochMs === null
|
|
114
|
+
? null
|
|
115
|
+
: Math.floor(lastAssistantOutputEpochMs / 1000),
|
|
116
|
+
hasInProgressToolCall: pendingToolUseIds.size > 0,
|
|
117
|
+
};
|
|
85
118
|
};
|
|
86
119
|
}
|
|
@@ -8,6 +8,7 @@ export type SubAgentActivity = {
|
|
|
8
8
|
export type LiveSessionActivitySnapshot = {
|
|
9
9
|
sessionName: string;
|
|
10
10
|
mainSilentSeconds: number | null;
|
|
11
|
+
mainHasInProgressToolCall: boolean;
|
|
11
12
|
subAgents: SubAgentActivity[];
|
|
12
13
|
unansweredOwnerCallAgeSeconds: number | null;
|
|
13
14
|
};
|
|
@@ -10,6 +10,7 @@ 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,
|
|
13
14
|
} from './NotifySilentLiveSessionsUseCase';
|
|
14
15
|
import { Issue } from '../entities/Issue';
|
|
15
16
|
import { LiveSessionProcessSnapshotProvider } from './adapter-interfaces/LiveSessionProcessSnapshotProvider';
|
|
@@ -244,6 +245,7 @@ describe('NotifySilentLiveSessionsUseCase', () => {
|
|
|
244
245
|
sessionName,
|
|
245
246
|
lastOutputEpochSeconds:
|
|
246
247
|
nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
|
|
248
|
+
hasInProgressToolCall: false,
|
|
247
249
|
},
|
|
248
250
|
],
|
|
249
251
|
);
|
|
@@ -274,6 +276,7 @@ describe('NotifySilentLiveSessionsUseCase', () => {
|
|
|
274
276
|
sessionName: GITHUB_SESSION,
|
|
275
277
|
lastOutputEpochSeconds:
|
|
276
278
|
nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
|
|
279
|
+
hasInProgressToolCall: false,
|
|
277
280
|
},
|
|
278
281
|
],
|
|
279
282
|
);
|
|
@@ -297,6 +300,7 @@ describe('NotifySilentLiveSessionsUseCase', () => {
|
|
|
297
300
|
sessionName: pullRequestSession,
|
|
298
301
|
lastOutputEpochSeconds:
|
|
299
302
|
nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
|
|
303
|
+
hasInProgressToolCall: false,
|
|
300
304
|
},
|
|
301
305
|
],
|
|
302
306
|
);
|
|
@@ -318,6 +322,7 @@ describe('NotifySilentLiveSessionsUseCase', () => {
|
|
|
318
322
|
sessionName: 'workbench',
|
|
319
323
|
lastOutputEpochSeconds:
|
|
320
324
|
nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
|
|
325
|
+
hasInProgressToolCall: false,
|
|
321
326
|
},
|
|
322
327
|
],
|
|
323
328
|
);
|
|
@@ -351,11 +356,13 @@ describe('NotifySilentLiveSessionsUseCase', () => {
|
|
|
351
356
|
sessionName: GITHUB_SESSION,
|
|
352
357
|
lastOutputEpochSeconds:
|
|
353
358
|
nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
|
|
359
|
+
hasInProgressToolCall: false,
|
|
354
360
|
},
|
|
355
361
|
{
|
|
356
362
|
sessionName: 'orchestrator',
|
|
357
363
|
lastOutputEpochSeconds:
|
|
358
364
|
nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
|
|
365
|
+
hasInProgressToolCall: false,
|
|
359
366
|
},
|
|
360
367
|
],
|
|
361
368
|
);
|
|
@@ -471,6 +478,7 @@ describe('NotifySilentLiveSessionsUseCase', () => {
|
|
|
471
478
|
sessionName: GITHUB_SESSION,
|
|
472
479
|
lastOutputEpochSeconds:
|
|
473
480
|
nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS + 1,
|
|
481
|
+
hasInProgressToolCall: false,
|
|
474
482
|
},
|
|
475
483
|
],
|
|
476
484
|
);
|
|
@@ -498,6 +506,7 @@ describe('NotifySilentLiveSessionsUseCase', () => {
|
|
|
498
506
|
sessionName: GITHUB_SESSION,
|
|
499
507
|
lastOutputEpochSeconds:
|
|
500
508
|
nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
|
|
509
|
+
hasInProgressToolCall: false,
|
|
501
510
|
},
|
|
502
511
|
],
|
|
503
512
|
);
|
|
@@ -518,6 +527,59 @@ describe('NotifySilentLiveSessionsUseCase', () => {
|
|
|
518
527
|
).toHaveBeenCalledWith(GITHUB_SESSION, MAIN_STALLED_SECTION);
|
|
519
528
|
});
|
|
520
529
|
|
|
530
|
+
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 () => {
|
|
531
|
+
setupLiveInteractiveSession(GITHUB_SESSION);
|
|
532
|
+
mockSessionOutputActivityRepository.listSessionOutputActivities.mockResolvedValue(
|
|
533
|
+
[
|
|
534
|
+
{
|
|
535
|
+
sessionName: GITHUB_SESSION,
|
|
536
|
+
lastOutputEpochSeconds:
|
|
537
|
+
nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
|
|
538
|
+
hasInProgressToolCall: true,
|
|
539
|
+
},
|
|
540
|
+
],
|
|
541
|
+
);
|
|
542
|
+
mockOwnerCallStatusProvider.listUnansweredOwnerCallEpochSecondsBySessionName.mockResolvedValue(
|
|
543
|
+
new Map<string, number>(),
|
|
544
|
+
);
|
|
545
|
+
|
|
546
|
+
await useCase.run(runParams());
|
|
547
|
+
|
|
548
|
+
expect(
|
|
549
|
+
mockMessageComposer.composeMainStalledSection,
|
|
550
|
+
).not.toHaveBeenCalled();
|
|
551
|
+
expect(
|
|
552
|
+
mockNotificationRepository.sendSelfCheckNotification,
|
|
553
|
+
).not.toHaveBeenCalled();
|
|
554
|
+
});
|
|
555
|
+
|
|
556
|
+
it('sends the main stalled section when the in-progress tool call has been pending longer than the suppression bound', async () => {
|
|
557
|
+
setupLiveInteractiveSession(GITHUB_SESSION);
|
|
558
|
+
const pendingToolCallAgeSeconds =
|
|
559
|
+
IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS + 60 * 60;
|
|
560
|
+
mockSessionOutputActivityRepository.listSessionOutputActivities.mockResolvedValue(
|
|
561
|
+
[
|
|
562
|
+
{
|
|
563
|
+
sessionName: GITHUB_SESSION,
|
|
564
|
+
lastOutputEpochSeconds: nowEpochSeconds - pendingToolCallAgeSeconds,
|
|
565
|
+
hasInProgressToolCall: true,
|
|
566
|
+
},
|
|
567
|
+
],
|
|
568
|
+
);
|
|
569
|
+
mockOwnerCallStatusProvider.listUnansweredOwnerCallEpochSecondsBySessionName.mockResolvedValue(
|
|
570
|
+
new Map<string, number>(),
|
|
571
|
+
);
|
|
572
|
+
|
|
573
|
+
await useCase.run(runParams());
|
|
574
|
+
|
|
575
|
+
expect(mockMessageComposer.composeMainStalledSection).toHaveBeenCalledWith(
|
|
576
|
+
pendingToolCallAgeSeconds,
|
|
577
|
+
);
|
|
578
|
+
expect(
|
|
579
|
+
mockNotificationRepository.sendSelfCheckNotification,
|
|
580
|
+
).toHaveBeenCalledWith(GITHUB_SESSION, MAIN_STALLED_SECTION);
|
|
581
|
+
});
|
|
582
|
+
|
|
521
583
|
it('does not send the main stalled section when output is within the threshold', async () => {
|
|
522
584
|
setupLiveInteractiveSession(GITHUB_SESSION);
|
|
523
585
|
mockSessionOutputActivityRepository.listSessionOutputActivities.mockResolvedValue(
|
|
@@ -526,6 +588,7 @@ describe('NotifySilentLiveSessionsUseCase', () => {
|
|
|
526
588
|
sessionName: GITHUB_SESSION,
|
|
527
589
|
lastOutputEpochSeconds:
|
|
528
590
|
nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS + 1,
|
|
591
|
+
hasInProgressToolCall: false,
|
|
529
592
|
},
|
|
530
593
|
],
|
|
531
594
|
);
|
|
@@ -651,6 +714,7 @@ describe('NotifySilentLiveSessionsUseCase', () => {
|
|
|
651
714
|
sessionName: GITHUB_SESSION,
|
|
652
715
|
lastOutputEpochSeconds:
|
|
653
716
|
nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
|
|
717
|
+
hasInProgressToolCall: false,
|
|
654
718
|
},
|
|
655
719
|
],
|
|
656
720
|
);
|
|
@@ -678,6 +742,7 @@ describe('NotifySilentLiveSessionsUseCase', () => {
|
|
|
678
742
|
sessionName: GITHUB_SESSION,
|
|
679
743
|
lastOutputEpochSeconds:
|
|
680
744
|
nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
|
|
745
|
+
hasInProgressToolCall: false,
|
|
681
746
|
},
|
|
682
747
|
],
|
|
683
748
|
);
|
|
@@ -944,11 +1009,13 @@ describe('NotifySilentLiveSessionsUseCase', () => {
|
|
|
944
1009
|
sessionName: GITHUB_SESSION_ALPHA,
|
|
945
1010
|
lastOutputEpochSeconds:
|
|
946
1011
|
nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
|
|
1012
|
+
hasInProgressToolCall: false,
|
|
947
1013
|
},
|
|
948
1014
|
{
|
|
949
1015
|
sessionName: GITHUB_SESSION_BRAVO,
|
|
950
1016
|
lastOutputEpochSeconds:
|
|
951
1017
|
nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
|
|
1018
|
+
hasInProgressToolCall: false,
|
|
952
1019
|
},
|
|
953
1020
|
],
|
|
954
1021
|
);
|
|
@@ -984,6 +1051,7 @@ describe('NotifySilentLiveSessionsUseCase', () => {
|
|
|
984
1051
|
sessionName: GITHUB_SESSION,
|
|
985
1052
|
lastOutputEpochSeconds:
|
|
986
1053
|
nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
|
|
1054
|
+
hasInProgressToolCall: false,
|
|
987
1055
|
},
|
|
988
1056
|
],
|
|
989
1057
|
);
|
|
@@ -1525,11 +1593,13 @@ describe('NotifySilentLiveSessionsUseCase', () => {
|
|
|
1525
1593
|
sessionName: GITHUB_SESSION_ALPHA,
|
|
1526
1594
|
lastOutputEpochSeconds:
|
|
1527
1595
|
nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
|
|
1596
|
+
hasInProgressToolCall: false,
|
|
1528
1597
|
},
|
|
1529
1598
|
{
|
|
1530
1599
|
sessionName: GITHUB_SESSION_BRAVO,
|
|
1531
1600
|
lastOutputEpochSeconds:
|
|
1532
1601
|
nowEpochSeconds - DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS,
|
|
1602
|
+
hasInProgressToolCall: false,
|
|
1533
1603
|
},
|
|
1534
1604
|
],
|
|
1535
1605
|
);
|
|
@@ -25,6 +25,15 @@ export const DEFAULT_SUBAGENT_RUNNING_THRESHOLD_SECONDS = 15 * 60;
|
|
|
25
25
|
export const DEFAULT_NOTIFICATION_STAGGER_SECONDS = 25;
|
|
26
26
|
export const DEFAULT_CANDIDATE_DEBOUNCE_RECENCY_WINDOW_SECONDS = 15 * 60;
|
|
27
27
|
export const DEFAULT_HUB_TASK_STATUS_CACHE_TTL_SECONDS = 5 * 60;
|
|
28
|
+
// Upper bound on how long an in-progress tool call suppresses the main-stall
|
|
29
|
+
// reminder. Set to 2 hours: comfortably above the ~1-hour maximum duration of
|
|
30
|
+
// the longest legitimate single tool call (the Monitor tool's own timeout
|
|
31
|
+
// ceiling), so every legitimate long-running tool call is still suppressed,
|
|
32
|
+
// while a session whose transcript tail has been an unanswered tool_use for
|
|
33
|
+
// longer than this — for example because the tool call itself hung and never
|
|
34
|
+
// returned — still receives the stall reminder instead of being suppressed
|
|
35
|
+
// forever.
|
|
36
|
+
export const IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS = 2 * 60 * 60;
|
|
28
37
|
|
|
29
38
|
const GITHUB_ISSUE_OR_PULL_URL_PATTERN =
|
|
30
39
|
/^https:\/\/github\.com\/([^/]+)\/([^/]+)\/(?:issues|pull)\/(\d+)$/;
|
|
@@ -336,11 +345,16 @@ export class NotifySilentLiveSessionsUseCase {
|
|
|
336
345
|
transcriptPathBySessionName,
|
|
337
346
|
);
|
|
338
347
|
const lastOutputBySessionName = new Map<string, number>();
|
|
348
|
+
const inProgressToolCallBySessionName = new Map<string, boolean>();
|
|
339
349
|
for (const activity of activities) {
|
|
340
350
|
lastOutputBySessionName.set(
|
|
341
351
|
activity.sessionName,
|
|
342
352
|
activity.lastOutputEpochSeconds,
|
|
343
353
|
);
|
|
354
|
+
inProgressToolCallBySessionName.set(
|
|
355
|
+
activity.sessionName,
|
|
356
|
+
activity.hasInProgressToolCall,
|
|
357
|
+
);
|
|
344
358
|
}
|
|
345
359
|
|
|
346
360
|
const subAgentsBySessionName =
|
|
@@ -366,6 +380,8 @@ export class NotifySilentLiveSessionsUseCase {
|
|
|
366
380
|
return {
|
|
367
381
|
sessionName,
|
|
368
382
|
mainSilentSeconds,
|
|
383
|
+
mainHasInProgressToolCall:
|
|
384
|
+
inProgressToolCallBySessionName.get(sessionName) ?? false,
|
|
369
385
|
subAgents: subAgentsBySessionName.get(sessionName) ?? [],
|
|
370
386
|
unansweredOwnerCallAgeSeconds:
|
|
371
387
|
unansweredOwnerCallEpochSeconds === undefined
|
|
@@ -401,10 +417,30 @@ export class NotifySilentLiveSessionsUseCase {
|
|
|
401
417
|
// call signature and is intentionally ignored (treated as infinite).
|
|
402
418
|
const suppressedByUnansweredOwnerCall =
|
|
403
419
|
unansweredOwnerCallAgeSeconds !== null;
|
|
420
|
+
// A session whose transcript tail is an assistant tool_use with no matching
|
|
421
|
+
// tool_result is legitimately busy running one long tool call (e.g. a Bash
|
|
422
|
+
// command near its timeout, or a Monitor waiting up to an hour): it appends
|
|
423
|
+
// no new assistant line while the tool runs, so mainSilentSeconds crosses
|
|
424
|
+
// the threshold even though the session is working, not stalled. Suppress
|
|
425
|
+
// the main-stall reminder in that case. Genuine thrashing silence — where
|
|
426
|
+
// the last assistant tool_use was already answered (or there is none) — has
|
|
427
|
+
// no pending tool call and is still flagged.
|
|
428
|
+
// The suppression is bounded by the pending tool call's own age
|
|
429
|
+
// (mainSilentSeconds, which for an in-progress tool call equals the age of
|
|
430
|
+
// the pending tool_use line) so it cannot last forever: a session stuck
|
|
431
|
+
// inside a tool call that never returns is reminded once that age exceeds
|
|
432
|
+
// IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS, restoring the ~10-minute
|
|
433
|
+
// stall reminder for a truly hung session instead of suppressing it
|
|
434
|
+
// indefinitely.
|
|
435
|
+
const suppressedByInProgressToolCall =
|
|
436
|
+
snapshot.mainHasInProgressToolCall &&
|
|
437
|
+
mainSilentSeconds !== null &&
|
|
438
|
+
mainSilentSeconds < IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS;
|
|
404
439
|
const mainTriggered =
|
|
405
440
|
mainSilentSeconds !== null &&
|
|
406
441
|
mainSilentSeconds >= thresholds.mainSilentThresholdSeconds &&
|
|
407
|
-
!suppressedByUnansweredOwnerCall
|
|
442
|
+
!suppressedByUnansweredOwnerCall &&
|
|
443
|
+
!suppressedByInProgressToolCall;
|
|
408
444
|
if (mainTriggered) {
|
|
409
445
|
sections.push(
|
|
410
446
|
this.messageComposer.composeMainStalledSection(mainSilentSeconds),
|
|
@@ -1,17 +1,7 @@
|
|
|
1
1
|
import { LiveSessionOutputActivity } from '../../domain/entities/LiveSessionOutputActivity';
|
|
2
2
|
import { SessionOutputActivityRepository } from '../../domain/usecases/adapter-interfaces/SessionOutputActivityRepository';
|
|
3
|
-
/**
|
|
4
|
-
* Reads the last main-session activity time for each live session from its
|
|
5
|
-
* already-resolved transcript path. Idle time is computed from the timestamp of
|
|
6
|
-
* the latest entry of any kind (assistant text, owner replies, tool results, or
|
|
7
|
-
* any other entry type) rather than from the transcript file modification time.
|
|
8
|
-
* Because a session that is actively running tool calls keeps appending entries
|
|
9
|
-
* such as `user` and `tool_result` even while it emits no assistant text, every
|
|
10
|
-
* entry with a parseable timestamp counts as activity, so a working session is
|
|
11
|
-
* not mistaken for a silent one.
|
|
12
|
-
*/
|
|
13
3
|
export declare class FileSystemSessionOutputActivityRepository implements SessionOutputActivityRepository {
|
|
14
4
|
listSessionOutputActivities: (transcriptPathBySessionName: Map<string, string>) => Promise<LiveSessionOutputActivity[]>;
|
|
15
|
-
private
|
|
5
|
+
private readTranscriptActivity;
|
|
16
6
|
}
|
|
17
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;
|
|
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 +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,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,yBAAyB,EAAE,OAAO,CAAC;IACnC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,6BAA6B,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9C,CAAC"}
|
|
@@ -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;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;IAC/B,qBAAqB,EAAE,OAAO,CAAC;CAChC,CAAC"}
|
|
@@ -17,6 +17,7 @@ export declare const DEFAULT_SUBAGENT_RUNNING_THRESHOLD_SECONDS: number;
|
|
|
17
17
|
export declare const DEFAULT_NOTIFICATION_STAGGER_SECONDS = 25;
|
|
18
18
|
export declare const DEFAULT_CANDIDATE_DEBOUNCE_RECENCY_WINDOW_SECONDS: number;
|
|
19
19
|
export declare const DEFAULT_HUB_TASK_STATUS_CACHE_TTL_SECONDS: number;
|
|
20
|
+
export declare const IN_PROGRESS_TOOL_CALL_MAX_SUPPRESS_SECONDS: number;
|
|
20
21
|
export declare const parseHubTaskIssueUrlFromSessionName: (sessionName: string) => string | null;
|
|
21
22
|
export declare const isGitHubIssueOrPullRequestSessionName: (sessionName: string) => boolean;
|
|
22
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":"AAEA,OAAO,EAAE,kCAAkC,EAAE,MAAM,yDAAyD,CAAC;AAC7G,OAAO,EAAE,wCAAwC,EAAE,MAAM,+DAA+D,CAAC;AACzH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,+BAA+B,EAAE,MAAM,sDAAsD,CAAC;AACvG,OAAO,EAAE,iCAAiC,EAAE,MAAM,wDAAwD,CAAC;AAC3G,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,mCAAmC,EAAE,MAAM,0DAA0D,CAAC;AAC/G,OAAO,EAAE,qCAAqC,EAAE,MAAM,4DAA4D,CAAC;AACnH,OAAO,EAAE,yCAAyC,EAAE,MAAM,gEAAgE,CAAC;AAC3H,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAGvE,eAAO,MAAM,qCAAqC,QAAU,CAAC;AAK7D,eAAO,MAAM,2CAA2C,QAAU,CAAC;AACnE,eAAO,MAAM,yCAAyC,QAAS,CAAC;AAChE,eAAO,MAAM,0CAA0C,QAAU,CAAC;AAClE,eAAO,MAAM,oCAAoC,KAAK,CAAC;AACvD,eAAO,MAAM,iDAAiD,QAAU,CAAC;AACzE,eAAO,MAAM,yCAAyC,QAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"NotifySilentLiveSessionsUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/NotifySilentLiveSessionsUseCase.ts"],"names":[],"mappings":"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"}
|