github-issue-tower-defence-management 1.148.12 → 1.148.13
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/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +6 -0
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
- package/bin/adapter/entry-points/handlers/notifySilentTmuxSessions.js +3 -3
- package/bin/adapter/entry-points/handlers/notifySilentTmuxSessions.js.map +1 -1
- package/bin/adapter/entry-points/handlers/ownerReplyMarkerDirectoryResolve.js +64 -0
- package/bin/adapter/entry-points/handlers/ownerReplyMarkerDirectoryResolve.js.map +1 -0
- package/bin/adapter/repositories/TranscriptOwnerCallStatusProvider.js +71 -3
- package/bin/adapter/repositories/TranscriptOwnerCallStatusProvider.js.map +1 -1
- package/package.json +1 -1
- package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +11 -0
- package/src/adapter/entry-points/handlers/notifySilentTmuxSessions.ts +10 -2
- package/src/adapter/entry-points/handlers/ownerReplyMarkerDirectoryResolve.test.ts +55 -0
- package/src/adapter/entry-points/handlers/ownerReplyMarkerDirectoryResolve.ts +36 -0
- package/src/adapter/repositories/TranscriptOwnerCallStatusProvider.queuedReply.test.ts +171 -0
- package/src/adapter/repositories/TranscriptOwnerCallStatusProvider.ts +90 -3
- package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
- package/types/adapter/entry-points/handlers/notifySilentTmuxSessions.d.ts +1 -0
- package/types/adapter/entry-points/handlers/notifySilentTmuxSessions.d.ts.map +1 -1
- package/types/adapter/entry-points/handlers/ownerReplyMarkerDirectoryResolve.d.ts +2 -0
- package/types/adapter/entry-points/handlers/ownerReplyMarkerDirectoryResolve.d.ts.map +1 -0
- package/types/adapter/repositories/TranscriptOwnerCallStatusProvider.d.ts +3 -1
- package/types/adapter/repositories/TranscriptOwnerCallStatusProvider.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [1.148.13](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.148.12...v1.148.13) (2026-08-10)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **silent-monitor:** count the owner reply typed mid-turn so a stalled session is reminded ([#1493](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1493)) ([f93e97d](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/f93e97de1cede491449a2892245f7a893dcea079))
|
|
7
|
+
|
|
1
8
|
## [1.148.12](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.148.11...v1.148.12) (2026-08-10)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -18,6 +18,7 @@ const inTmuxByHumanSessionReconciler_1 = require("./inTmuxByHumanSessionReconcil
|
|
|
18
18
|
const tokenExhaustionHandover_1 = require("./tokenExhaustionHandover");
|
|
19
19
|
const staleTmuxSessionCleaner_1 = require("./staleTmuxSessionCleaner");
|
|
20
20
|
const notifySilentTmuxSessions_1 = require("./notifySilentTmuxSessions");
|
|
21
|
+
const ownerReplyMarkerDirectoryResolve_1 = require("./ownerReplyMarkerDirectoryResolve");
|
|
21
22
|
const resetDegeneratedTmuxSessions_1 = require("./resetDegeneratedTmuxSessions");
|
|
22
23
|
const rotationOrderFileWriter_1 = require("./rotationOrderFileWriter");
|
|
23
24
|
const projectConfig_1 = require("../cli/projectConfig");
|
|
@@ -390,6 +391,10 @@ class HandleScheduledEventUseCaseHandler {
|
|
|
390
391
|
process.env.TDPM_SUBAGENT_TRANSCRIPT_ROOT_DIRECTORY ??
|
|
391
392
|
null;
|
|
392
393
|
const getuid = process.getuid?.bind(process);
|
|
394
|
+
// The status line writes the reply time it renders here, and the owner sees only that
|
|
395
|
+
// status line, so reading the same file keeps the reminder decision and the owner's view
|
|
396
|
+
// of it from disagreeing.
|
|
397
|
+
const ownerReplyMarkerDirectory = (0, ownerReplyMarkerDirectoryResolve_1.ownerReplyMarkerDirectoryResolve)(mergedInput.ownerReplyMarkerDirectory ?? null, process.env, getuid === undefined ? null : getuid());
|
|
393
398
|
const subAgentRuntimeRootDirectory = mergedInput.subAgentRuntimeRootDirectory ??
|
|
394
399
|
process.env.TDPM_SUBAGENT_RUNTIME_ROOT_DIRECTORY ??
|
|
395
400
|
(getuid === undefined
|
|
@@ -399,6 +404,7 @@ class HandleScheduledEventUseCaseHandler {
|
|
|
399
404
|
enabled: silentNotificationEnabled,
|
|
400
405
|
localCommandRunner: nodeLocalCommandRunner,
|
|
401
406
|
ownerCallMarker,
|
|
407
|
+
ownerReplyMarkerDirectory,
|
|
402
408
|
subAgentOutputRootDirectory,
|
|
403
409
|
subAgentProcessMatchPattern,
|
|
404
410
|
subAgentTranscriptRootDirectory,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandleScheduledEventUseCaseHandler.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HandleScheduledEventUseCaseHandler.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,9 +21,9 @@ const ConfigurableSilentSessionMessageComposer_1 = require("../../repositories/C
|
|
|
21
21
|
const RealSleeper_1 = require("../../repositories/RealSleeper");
|
|
22
22
|
const FileSystemSilentSessionCandidateStateRepository_1 = require("../../repositories/FileSystemSilentSessionCandidateStateRepository");
|
|
23
23
|
const FileSystemSilentSessionHubTaskStatusCacheRepository_1 = require("../../repositories/FileSystemSilentSessionHubTaskStatusCacheRepository");
|
|
24
|
-
const createOwnerCallStatusProvider = (ownerCallMarker) => {
|
|
24
|
+
const createOwnerCallStatusProvider = (ownerCallMarker, ownerReplyMarkerDirectory) => {
|
|
25
25
|
if (ownerCallMarker !== null && ownerCallMarker.length > 0) {
|
|
26
|
-
return new TranscriptOwnerCallStatusProvider_1.TranscriptOwnerCallStatusProvider(ownerCallMarker);
|
|
26
|
+
return new TranscriptOwnerCallStatusProvider_1.TranscriptOwnerCallStatusProvider(ownerCallMarker, ownerReplyMarkerDirectory);
|
|
27
27
|
}
|
|
28
28
|
return new NoUnansweredOwnerCallStatusProvider_1.NoUnansweredOwnerCallStatusProvider();
|
|
29
29
|
};
|
|
@@ -40,7 +40,7 @@ const notifySilentTmuxSessions = async (params) => {
|
|
|
40
40
|
return;
|
|
41
41
|
}
|
|
42
42
|
const messageComposer = new ConfigurableSilentSessionMessageComposer_1.ConfigurableSilentSessionMessageComposer(messageTemplates, new DefaultSilentSessionMessageComposer_1.DefaultSilentSessionMessageComposer());
|
|
43
|
-
const useCase = new NotifySilentLiveSessionsUseCase_1.NotifySilentLiveSessionsUseCase(new LocalProcessLiveSessionProcessSnapshotProvider_1.LocalProcessLiveSessionProcessSnapshotProvider(localCommandRunner, processEnvironReader ?? new ProcFsProcessEnvironReader_1.ProcFsProcessEnvironReader()), new FileSystemInteractiveLiveSessionTranscriptResolver_1.FileSystemInteractiveLiveSessionTranscriptResolver(), new FileSystemSessionOutputActivityRepository_1.FileSystemSessionOutputActivityRepository(), createSubAgentActivityRepository(subAgentTranscriptRootDirectory, subAgentRuntimeRootDirectory, subAgentProcessMatchPattern, subAgentOutputRootDirectory, localCommandRunner, now), createOwnerCallStatusProvider(ownerCallMarker), new TmuxSilentSessionNotificationRepository_1.TmuxSilentSessionNotificationRepository(localCommandRunner, new RealSleeper_1.RealSleeper(), TmuxSilentSessionNotificationRepository_1.DEFAULT_SUBMIT_PUSH_OUT_ATTEMPT_LIMIT, submitPushOutWaitMilliseconds ??
|
|
43
|
+
const useCase = new NotifySilentLiveSessionsUseCase_1.NotifySilentLiveSessionsUseCase(new LocalProcessLiveSessionProcessSnapshotProvider_1.LocalProcessLiveSessionProcessSnapshotProvider(localCommandRunner, processEnvironReader ?? new ProcFsProcessEnvironReader_1.ProcFsProcessEnvironReader()), new FileSystemInteractiveLiveSessionTranscriptResolver_1.FileSystemInteractiveLiveSessionTranscriptResolver(), new FileSystemSessionOutputActivityRepository_1.FileSystemSessionOutputActivityRepository(), createSubAgentActivityRepository(subAgentTranscriptRootDirectory, subAgentRuntimeRootDirectory, subAgentProcessMatchPattern, subAgentOutputRootDirectory, localCommandRunner, now), createOwnerCallStatusProvider(ownerCallMarker, params.ownerReplyMarkerDirectory ?? null), new TmuxSilentSessionNotificationRepository_1.TmuxSilentSessionNotificationRepository(localCommandRunner, new RealSleeper_1.RealSleeper(), TmuxSilentSessionNotificationRepository_1.DEFAULT_SUBMIT_PUSH_OUT_ATTEMPT_LIMIT, submitPushOutWaitMilliseconds ??
|
|
44
44
|
TmuxSilentSessionNotificationRepository_1.DEFAULT_SUBMIT_PUSH_OUT_WAIT_MILLISECONDS), candidateDebounceStateFilePath !== null
|
|
45
45
|
? new FileSystemSilentSessionCandidateStateRepository_1.FileSystemSilentSessionCandidateStateRepository(candidateDebounceStateFilePath)
|
|
46
46
|
: new FileSystemSilentSessionCandidateStateRepository_1.FileSystemSilentSessionCandidateStateRepository(), messageComposer, new RealSleeper_1.RealSleeper(), hubTaskStatusResolver, hubTaskStatusCacheStateFilePath !== null
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifySilentTmuxSessions.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/notifySilentTmuxSessions.ts"],"names":[],"mappings":";;;AAIA,8GAUkE;AAClE,sHAAmH;AACnH,sIAAmI;AACnI,8FAA2F;AAC3F,8IAA2I;AAC3I,4HAAyH;AACzH,wHAIoE;AACpE,gHAA6G;AAC7G,4GAAyG;AACzG,gHAA6G;AAC7G,kIAA+H;AAC/H,gIAA6H;AAC7H,oIAAiI;AACjI,8GAA2G;AAC3G,4FAAyF;AACzF,wHAAqH;AACrH,0HAGqE;AACrE,gEAA6D;AAC7D,wIAAqI;AACrI,gJAA6I;
|
|
1
|
+
{"version":3,"file":"notifySilentTmuxSessions.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/notifySilentTmuxSessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ownerReplyMarkerDirectoryResolve = void 0;
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
// The status line writes each session's rendered reply time to
|
|
39
|
+
// `<STATUS_LINE_MARKER_ROOT_DIRECTORY>/claude-statusline-call-<uid>/<sessionId>.reply_ts`, and it
|
|
40
|
+
// resolves that root without consulting TMPDIR. The silent-session monitor runs from a daemon whose
|
|
41
|
+
// TMPDIR points at a separate volume, so resolving the same directory through the operating
|
|
42
|
+
// system temporary directory would send the reader to a path the writer never uses and the marker
|
|
43
|
+
// would silently never be found. CLAUDE_STATUSLINE_CALL_DIR is the single override both sides honour.
|
|
44
|
+
const STATUS_LINE_MARKER_ROOT_DIRECTORY = '/tmp';
|
|
45
|
+
const STATUS_LINE_MARKER_DIRECTORY_NAME_PREFIX = 'claude-statusline-call-';
|
|
46
|
+
const ownerReplyMarkerDirectoryResolve = (configuredDirectory, environment, userId) => {
|
|
47
|
+
if (configuredDirectory !== null) {
|
|
48
|
+
return configuredDirectory;
|
|
49
|
+
}
|
|
50
|
+
const tdpmEnvironmentDirectory = environment.TDPM_SILENT_OWNER_REPLY_MARKER_DIRECTORY;
|
|
51
|
+
if (tdpmEnvironmentDirectory !== undefined) {
|
|
52
|
+
return tdpmEnvironmentDirectory;
|
|
53
|
+
}
|
|
54
|
+
const statusLineEnvironmentDirectory = environment.CLAUDE_STATUSLINE_CALL_DIR;
|
|
55
|
+
if (statusLineEnvironmentDirectory !== undefined) {
|
|
56
|
+
return statusLineEnvironmentDirectory;
|
|
57
|
+
}
|
|
58
|
+
if (userId === null) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
return path.join(STATUS_LINE_MARKER_ROOT_DIRECTORY, `${STATUS_LINE_MARKER_DIRECTORY_NAME_PREFIX}${userId}`);
|
|
62
|
+
};
|
|
63
|
+
exports.ownerReplyMarkerDirectoryResolve = ownerReplyMarkerDirectoryResolve;
|
|
64
|
+
//# sourceMappingURL=ownerReplyMarkerDirectoryResolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ownerReplyMarkerDirectoryResolve.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/ownerReplyMarkerDirectoryResolve.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAE7B,+DAA+D;AAC/D,kGAAkG;AAClG,oGAAoG;AACpG,4FAA4F;AAC5F,kGAAkG;AAClG,sGAAsG;AACtG,MAAM,iCAAiC,GAAG,MAAM,CAAC;AACjD,MAAM,wCAAwC,GAAG,yBAAyB,CAAC;AAEpE,MAAM,gCAAgC,GAAG,CAC9C,mBAAkC,EAClC,WAA8B,EAC9B,MAAqB,EACN,EAAE;IACjB,IAAI,mBAAmB,KAAK,IAAI,EAAE,CAAC;QACjC,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,MAAM,wBAAwB,GAC5B,WAAW,CAAC,wCAAwC,CAAC;IACvD,IAAI,wBAAwB,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,wBAAwB,CAAC;IAClC,CAAC;IACD,MAAM,8BAA8B,GAAG,WAAW,CAAC,0BAA0B,CAAC;IAC9E,IAAI,8BAA8B,KAAK,SAAS,EAAE,CAAC;QACjD,OAAO,8BAA8B,CAAC;IACxC,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CACd,iCAAiC,EACjC,GAAG,wCAAwC,GAAG,MAAM,EAAE,CACvD,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,gCAAgC,oCAwB3C"}
|
|
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.TranscriptOwnerCallStatusProvider = exports.ownerCallMarkerFamilyResolve = void 0;
|
|
37
37
|
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
38
39
|
const silentSessionReminderSentinel_1 = require("../../domain/usecases/silentSessionReminderSentinel");
|
|
39
40
|
const isRecord = (value) => typeof value === 'object' && value !== null;
|
|
40
41
|
const readString = (value, key) => {
|
|
@@ -120,8 +121,40 @@ const ownerCallMarkerFamilyResolve = (marker) => marker.endsWith(OWNER_CALL_TAG_
|
|
|
120
121
|
]
|
|
121
122
|
: [marker];
|
|
122
123
|
exports.ownerCallMarkerFamilyResolve = ownerCallMarkerFamilyResolve;
|
|
124
|
+
// A reply the owner types while the agent is still working is NOT written as a `user` entry: the
|
|
125
|
+
// running turn consumes it from the queue, and the transcript keeps only
|
|
126
|
+
// {"type":"queue-operation","operation":"enqueue","content":"<the text>"} plus its `remove` twin.
|
|
127
|
+
// Reading `user` entries alone therefore misses every mid-turn reply, leaves the call outstanding
|
|
128
|
+
// for the rest of the session, and suppresses the stall reminder of a session the owner has
|
|
129
|
+
// already answered. The exclusions match the ones the status line applies to the same entries, so
|
|
130
|
+
// a system-injected enqueue never counts as an owner reply.
|
|
131
|
+
const INJECTED_ENQUEUE_CONTENT_MARKERS = [
|
|
132
|
+
silentSessionReminderSentinel_1.SILENT_SESSION_REMINDER_SENTINEL,
|
|
133
|
+
'<system-reminder>',
|
|
134
|
+
'UserPromptSubmit hook',
|
|
135
|
+
'<task-notification>',
|
|
136
|
+
'SYSTEM NOTIFICATION',
|
|
137
|
+
'<local-command-stdout>',
|
|
138
|
+
'<local-command-caveat>',
|
|
139
|
+
'<command-name>',
|
|
140
|
+
'This session is being continued from a previous conversation',
|
|
141
|
+
];
|
|
142
|
+
const isOwnerEnqueuedReply = (parsed) => {
|
|
143
|
+
if (readString(parsed, 'operation') !== 'enqueue') {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
const content = readString(parsed, 'content');
|
|
147
|
+
if (content === null || content.length === 0) {
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
return !INJECTED_ENQUEUE_CONTENT_MARKERS.some((injectedMarker) => content.includes(injectedMarker));
|
|
151
|
+
};
|
|
152
|
+
const TRANSCRIPT_FILE_EXTENSION = '.jsonl';
|
|
153
|
+
const OWNER_REPLY_MARKER_FILE_EXTENSION = '.reply_ts';
|
|
154
|
+
const UNSAFE_SESSION_ID_CHARACTER_PATTERN = /[^A-Za-z0-9._-]/g;
|
|
123
155
|
class TranscriptOwnerCallStatusProvider {
|
|
124
|
-
constructor(ownerCallMarker) {
|
|
156
|
+
constructor(ownerCallMarker, ownerReplyMarkerDirectory = null) {
|
|
157
|
+
this.ownerReplyMarkerDirectory = ownerReplyMarkerDirectory;
|
|
125
158
|
this.listUnansweredOwnerCallEpochSecondsBySessionName = async (transcriptPathBySessionName) => {
|
|
126
159
|
const unansweredOwnerCallEpochSecondsBySessionName = new Map();
|
|
127
160
|
if (this.ownerCallMarkerFamily.length === 0) {
|
|
@@ -178,15 +211,50 @@ class TranscriptOwnerCallStatusProvider {
|
|
|
178
211
|
hasOwnerTextReply(messageContent)) {
|
|
179
212
|
lastOwnerReplyEpochMs = epochMs;
|
|
180
213
|
}
|
|
214
|
+
if (type === 'queue-operation' && isOwnerEnqueuedReply(parsed)) {
|
|
215
|
+
lastOwnerReplyEpochMs =
|
|
216
|
+
lastOwnerReplyEpochMs === null || epochMs > lastOwnerReplyEpochMs
|
|
217
|
+
? epochMs
|
|
218
|
+
: lastOwnerReplyEpochMs;
|
|
219
|
+
}
|
|
181
220
|
}
|
|
182
221
|
if (lastOwnerCallEpochMs === null) {
|
|
183
222
|
return null;
|
|
184
223
|
}
|
|
185
|
-
|
|
186
|
-
|
|
224
|
+
const markerReplyEpochMs = this.readOwnerReplyMarkerEpochMs(transcriptPath);
|
|
225
|
+
const resolvedReplyEpochMs = markerReplyEpochMs !== null &&
|
|
226
|
+
(lastOwnerReplyEpochMs === null ||
|
|
227
|
+
markerReplyEpochMs > lastOwnerReplyEpochMs)
|
|
228
|
+
? markerReplyEpochMs
|
|
229
|
+
: lastOwnerReplyEpochMs;
|
|
230
|
+
return resolvedReplyEpochMs === null ||
|
|
231
|
+
lastOwnerCallEpochMs > resolvedReplyEpochMs
|
|
187
232
|
? lastOwnerCallEpochMs
|
|
188
233
|
: null;
|
|
189
234
|
};
|
|
235
|
+
// The owner sees only the status line, so the reply time it renders is the value the owner
|
|
236
|
+
// believes the fleet is acting on. The status line writes that value to a per-session marker
|
|
237
|
+
// file, and reading it here keeps this decision and the owner's own view of it from diverging.
|
|
238
|
+
// The transcript-derived value still stands on its own: an absent, unreadable, or older marker
|
|
239
|
+
// changes nothing, so a fresh host with no markers yet behaves exactly as before.
|
|
240
|
+
this.readOwnerReplyMarkerEpochMs = (transcriptPath) => {
|
|
241
|
+
if (this.ownerReplyMarkerDirectory === null) {
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
const fileName = path.basename(transcriptPath);
|
|
245
|
+
const sessionId = fileName.endsWith(TRANSCRIPT_FILE_EXTENSION)
|
|
246
|
+
? fileName.slice(0, -TRANSCRIPT_FILE_EXTENSION.length)
|
|
247
|
+
: fileName;
|
|
248
|
+
const safeSessionId = sessionId.replace(UNSAFE_SESSION_ID_CHARACTER_PATTERN, '_');
|
|
249
|
+
let markerContent;
|
|
250
|
+
try {
|
|
251
|
+
markerContent = fs.readFileSync(path.join(this.ownerReplyMarkerDirectory, `${safeSessionId}${OWNER_REPLY_MARKER_FILE_EXTENSION}`), 'utf8');
|
|
252
|
+
}
|
|
253
|
+
catch {
|
|
254
|
+
return null;
|
|
255
|
+
}
|
|
256
|
+
return parseEpochMilliseconds(markerContent.split('\n')[0].trim());
|
|
257
|
+
};
|
|
190
258
|
this.ownerCallMarkerFamily =
|
|
191
259
|
ownerCallMarker === null || ownerCallMarker.length === 0
|
|
192
260
|
? []
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TranscriptOwnerCallStatusProvider.js","sourceRoot":"","sources":["../../../src/adapter/repositories/TranscriptOwnerCallStatusProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;
|
|
1
|
+
{"version":3,"file":"TranscriptOwnerCallStatusProvider.js","sourceRoot":"","sources":["../../../src/adapter/repositories/TranscriptOwnerCallStatusProvider.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
notifySilentTmuxSessions,
|
|
19
19
|
DEFAULT_NOTIFY_SILENT_TMUX_SESSIONS_PARAMS,
|
|
20
20
|
} from './notifySilentTmuxSessions';
|
|
21
|
+
import { ownerReplyMarkerDirectoryResolve } from './ownerReplyMarkerDirectoryResolve';
|
|
21
22
|
import {
|
|
22
23
|
resetDegeneratedTmuxSessions,
|
|
23
24
|
DEFAULT_RESET_DEGENERATED_TMUX_SESSIONS_PARAMS,
|
|
@@ -132,6 +133,7 @@ export class HandleScheduledEventUseCaseHandler {
|
|
|
132
133
|
tokenExhaustionHandoverStateFilePath?: string;
|
|
133
134
|
silentNotificationEnabled?: boolean;
|
|
134
135
|
ownerCallMarker?: string;
|
|
136
|
+
ownerReplyMarkerDirectory?: string;
|
|
135
137
|
subAgentOutputRootDirectory?: string;
|
|
136
138
|
subAgentProcessMatchPattern?: string;
|
|
137
139
|
subAgentTranscriptRootDirectory?: string;
|
|
@@ -732,6 +734,14 @@ export class HandleScheduledEventUseCaseHandler {
|
|
|
732
734
|
process.env.TDPM_SUBAGENT_TRANSCRIPT_ROOT_DIRECTORY ??
|
|
733
735
|
null;
|
|
734
736
|
const getuid = process.getuid?.bind(process);
|
|
737
|
+
// The status line writes the reply time it renders here, and the owner sees only that
|
|
738
|
+
// status line, so reading the same file keeps the reminder decision and the owner's view
|
|
739
|
+
// of it from disagreeing.
|
|
740
|
+
const ownerReplyMarkerDirectory = ownerReplyMarkerDirectoryResolve(
|
|
741
|
+
mergedInput.ownerReplyMarkerDirectory ?? null,
|
|
742
|
+
process.env,
|
|
743
|
+
getuid === undefined ? null : getuid(),
|
|
744
|
+
);
|
|
735
745
|
const subAgentRuntimeRootDirectory =
|
|
736
746
|
mergedInput.subAgentRuntimeRootDirectory ??
|
|
737
747
|
process.env.TDPM_SUBAGENT_RUNTIME_ROOT_DIRECTORY ??
|
|
@@ -742,6 +752,7 @@ export class HandleScheduledEventUseCaseHandler {
|
|
|
742
752
|
enabled: silentNotificationEnabled,
|
|
743
753
|
localCommandRunner: nodeLocalCommandRunner,
|
|
744
754
|
ownerCallMarker,
|
|
755
|
+
ownerReplyMarkerDirectory,
|
|
745
756
|
subAgentOutputRootDirectory,
|
|
746
757
|
subAgentProcessMatchPattern,
|
|
747
758
|
subAgentTranscriptRootDirectory,
|
|
@@ -45,6 +45,7 @@ export type NotifySilentTmuxSessionsParams = {
|
|
|
45
45
|
localCommandRunner: LocalCommandRunner;
|
|
46
46
|
processEnvironReader?: ProcessEnvironReader;
|
|
47
47
|
ownerCallMarker: string | null;
|
|
48
|
+
ownerReplyMarkerDirectory?: string | null;
|
|
48
49
|
subAgentOutputRootDirectory: string | null;
|
|
49
50
|
subAgentProcessMatchPattern: string | null;
|
|
50
51
|
subAgentTranscriptRootDirectory: string | null;
|
|
@@ -67,9 +68,13 @@ export type NotifySilentTmuxSessionsParams = {
|
|
|
67
68
|
|
|
68
69
|
const createOwnerCallStatusProvider = (
|
|
69
70
|
ownerCallMarker: string | null,
|
|
71
|
+
ownerReplyMarkerDirectory: string | null,
|
|
70
72
|
): OwnerCallStatusProvider => {
|
|
71
73
|
if (ownerCallMarker !== null && ownerCallMarker.length > 0) {
|
|
72
|
-
return new TranscriptOwnerCallStatusProvider(
|
|
74
|
+
return new TranscriptOwnerCallStatusProvider(
|
|
75
|
+
ownerCallMarker,
|
|
76
|
+
ownerReplyMarkerDirectory,
|
|
77
|
+
);
|
|
73
78
|
}
|
|
74
79
|
return new NoUnansweredOwnerCallStatusProvider();
|
|
75
80
|
};
|
|
@@ -154,7 +159,10 @@ export const notifySilentTmuxSessions = async (
|
|
|
154
159
|
localCommandRunner,
|
|
155
160
|
now,
|
|
156
161
|
),
|
|
157
|
-
createOwnerCallStatusProvider(
|
|
162
|
+
createOwnerCallStatusProvider(
|
|
163
|
+
ownerCallMarker,
|
|
164
|
+
params.ownerReplyMarkerDirectory ?? null,
|
|
165
|
+
),
|
|
158
166
|
new TmuxSilentSessionNotificationRepository(
|
|
159
167
|
localCommandRunner,
|
|
160
168
|
new RealSleeper(),
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { ownerReplyMarkerDirectoryResolve } from './ownerReplyMarkerDirectoryResolve';
|
|
2
|
+
|
|
3
|
+
describe('ownerReplyMarkerDirectoryResolve', () => {
|
|
4
|
+
const userId = 1000;
|
|
5
|
+
|
|
6
|
+
it('returns the directory the configuration supplies', () => {
|
|
7
|
+
expect(
|
|
8
|
+
ownerReplyMarkerDirectoryResolve(
|
|
9
|
+
'/configured/markers',
|
|
10
|
+
{
|
|
11
|
+
TDPM_SILENT_OWNER_REPLY_MARKER_DIRECTORY: '/from/tdpm/environment',
|
|
12
|
+
CLAUDE_STATUSLINE_CALL_DIR: '/from/status/line/environment',
|
|
13
|
+
},
|
|
14
|
+
userId,
|
|
15
|
+
),
|
|
16
|
+
).toBe('/configured/markers');
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('returns the directory the tdpm environment variable supplies when the configuration has none', () => {
|
|
20
|
+
expect(
|
|
21
|
+
ownerReplyMarkerDirectoryResolve(
|
|
22
|
+
null,
|
|
23
|
+
{
|
|
24
|
+
TDPM_SILENT_OWNER_REPLY_MARKER_DIRECTORY: '/from/tdpm/environment',
|
|
25
|
+
CLAUDE_STATUSLINE_CALL_DIR: '/from/status/line/environment',
|
|
26
|
+
},
|
|
27
|
+
userId,
|
|
28
|
+
),
|
|
29
|
+
).toBe('/from/tdpm/environment');
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('returns the directory the status line override supplies, so both sides move together', () => {
|
|
33
|
+
expect(
|
|
34
|
+
ownerReplyMarkerDirectoryResolve(
|
|
35
|
+
null,
|
|
36
|
+
{ CLAUDE_STATUSLINE_CALL_DIR: '/from/status/line/environment' },
|
|
37
|
+
userId,
|
|
38
|
+
),
|
|
39
|
+
).toBe('/from/status/line/environment');
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it('resolves the directory the status line writes to and ignores a redirected temporary directory', () => {
|
|
43
|
+
expect(
|
|
44
|
+
ownerReplyMarkerDirectoryResolve(
|
|
45
|
+
null,
|
|
46
|
+
{ TMPDIR: '/mnt/storage/tmp' },
|
|
47
|
+
userId,
|
|
48
|
+
),
|
|
49
|
+
).toBe('/tmp/claude-statusline-call-1000');
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it('returns null when the user id is unknown, because the directory name carries it', () => {
|
|
53
|
+
expect(ownerReplyMarkerDirectoryResolve(null, {}, null)).toBeNull();
|
|
54
|
+
});
|
|
55
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
|
|
3
|
+
// The status line writes each session's rendered reply time to
|
|
4
|
+
// `<STATUS_LINE_MARKER_ROOT_DIRECTORY>/claude-statusline-call-<uid>/<sessionId>.reply_ts`, and it
|
|
5
|
+
// resolves that root without consulting TMPDIR. The silent-session monitor runs from a daemon whose
|
|
6
|
+
// TMPDIR points at a separate volume, so resolving the same directory through the operating
|
|
7
|
+
// system temporary directory would send the reader to a path the writer never uses and the marker
|
|
8
|
+
// would silently never be found. CLAUDE_STATUSLINE_CALL_DIR is the single override both sides honour.
|
|
9
|
+
const STATUS_LINE_MARKER_ROOT_DIRECTORY = '/tmp';
|
|
10
|
+
const STATUS_LINE_MARKER_DIRECTORY_NAME_PREFIX = 'claude-statusline-call-';
|
|
11
|
+
|
|
12
|
+
export const ownerReplyMarkerDirectoryResolve = (
|
|
13
|
+
configuredDirectory: string | null,
|
|
14
|
+
environment: NodeJS.ProcessEnv,
|
|
15
|
+
userId: number | null,
|
|
16
|
+
): string | null => {
|
|
17
|
+
if (configuredDirectory !== null) {
|
|
18
|
+
return configuredDirectory;
|
|
19
|
+
}
|
|
20
|
+
const tdpmEnvironmentDirectory =
|
|
21
|
+
environment.TDPM_SILENT_OWNER_REPLY_MARKER_DIRECTORY;
|
|
22
|
+
if (tdpmEnvironmentDirectory !== undefined) {
|
|
23
|
+
return tdpmEnvironmentDirectory;
|
|
24
|
+
}
|
|
25
|
+
const statusLineEnvironmentDirectory = environment.CLAUDE_STATUSLINE_CALL_DIR;
|
|
26
|
+
if (statusLineEnvironmentDirectory !== undefined) {
|
|
27
|
+
return statusLineEnvironmentDirectory;
|
|
28
|
+
}
|
|
29
|
+
if (userId === null) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
return path.join(
|
|
33
|
+
STATUS_LINE_MARKER_ROOT_DIRECTORY,
|
|
34
|
+
`${STATUS_LINE_MARKER_DIRECTORY_NAME_PREFIX}${userId}`,
|
|
35
|
+
);
|
|
36
|
+
};
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as os from 'os';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import { TranscriptOwnerCallStatusProvider } from './TranscriptOwnerCallStatusProvider';
|
|
5
|
+
import { SILENT_SESSION_REMINDER_SENTINEL } from '../../domain/usecases/silentSessionReminderSentinel';
|
|
6
|
+
|
|
7
|
+
describe('TranscriptOwnerCallStatusProvider owner reply typed mid-turn', () => {
|
|
8
|
+
let rootDirectory: string;
|
|
9
|
+
let markerDirectory: string;
|
|
10
|
+
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
rootDirectory = fs.mkdtempSync(path.join(os.tmpdir(), 'queued-reply-'));
|
|
13
|
+
markerDirectory = path.join(rootDirectory, 'markers');
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
afterEach(() => {
|
|
17
|
+
fs.rmSync(rootDirectory, { force: true, recursive: true });
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
const sessionId = 'e7a58bf9-4d13-4e27-b446-52c3b017ad79';
|
|
21
|
+
const callTimestamp = '2026-08-10T11:04:26.331Z';
|
|
22
|
+
const earlierReplyTimestamp = '2026-08-10T11:02:40.286Z';
|
|
23
|
+
const laterReplyTimestamp = '2026-08-10T11:05:53.576Z';
|
|
24
|
+
|
|
25
|
+
const writeTranscript = (lines: object[]): string => {
|
|
26
|
+
const filePath = path.join(rootDirectory, `${sessionId}.jsonl`);
|
|
27
|
+
fs.writeFileSync(
|
|
28
|
+
filePath,
|
|
29
|
+
lines.map((line) => JSON.stringify(line)).join('\n'),
|
|
30
|
+
'utf8',
|
|
31
|
+
);
|
|
32
|
+
return filePath;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const writeReplyMarker = (timestamp: string): void => {
|
|
36
|
+
fs.mkdirSync(markerDirectory, { recursive: true });
|
|
37
|
+
fs.writeFileSync(
|
|
38
|
+
path.join(markerDirectory, `${sessionId}.reply_ts`),
|
|
39
|
+
`${timestamp}\n`,
|
|
40
|
+
'utf8',
|
|
41
|
+
);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const ownerCall = (timestamp: string): object => ({
|
|
45
|
+
type: 'assistant',
|
|
46
|
+
timestamp,
|
|
47
|
+
message: {
|
|
48
|
+
role: 'assistant',
|
|
49
|
+
content: [{ type: 'text', text: 'Please decide <<OWNER_CALL>>' }],
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
const typedReply = (timestamp: string, text: string): object => ({
|
|
54
|
+
type: 'user',
|
|
55
|
+
timestamp,
|
|
56
|
+
promptSource: 'typed',
|
|
57
|
+
origin: { kind: 'human' },
|
|
58
|
+
message: { role: 'user', content: text },
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
const enqueued = (timestamp: string, content: string): object => ({
|
|
62
|
+
type: 'queue-operation',
|
|
63
|
+
operation: 'enqueue',
|
|
64
|
+
timestamp,
|
|
65
|
+
sessionId,
|
|
66
|
+
content,
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
const removed = (timestamp: string, content: string): object => ({
|
|
70
|
+
type: 'queue-operation',
|
|
71
|
+
operation: 'remove',
|
|
72
|
+
timestamp,
|
|
73
|
+
sessionId,
|
|
74
|
+
content,
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
const unansweredSecondsOf = async (
|
|
78
|
+
transcriptPath: string,
|
|
79
|
+
replyMarkerDirectory: string | null,
|
|
80
|
+
): Promise<number | undefined> => {
|
|
81
|
+
const provider = new TranscriptOwnerCallStatusProvider(
|
|
82
|
+
'<<OWNER_CALL>>',
|
|
83
|
+
replyMarkerDirectory,
|
|
84
|
+
);
|
|
85
|
+
const result =
|
|
86
|
+
await provider.listUnansweredOwnerCallEpochSecondsBySessionName(
|
|
87
|
+
new Map([['session', transcriptPath]]),
|
|
88
|
+
);
|
|
89
|
+
return result.get('session');
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
it('treats a reply enqueued while the agent was working as an answer to the call', async () => {
|
|
93
|
+
const transcriptPath = writeTranscript([
|
|
94
|
+
typedReply(earlierReplyTimestamp, 'an earlier answer'),
|
|
95
|
+
ownerCall(callTimestamp),
|
|
96
|
+
enqueued(laterReplyTimestamp, 'CI が通っていないのに許可はできません'),
|
|
97
|
+
removed(
|
|
98
|
+
'2026-08-10T11:06:07.885Z',
|
|
99
|
+
'CI が通っていないのに許可はできません',
|
|
100
|
+
),
|
|
101
|
+
]);
|
|
102
|
+
|
|
103
|
+
expect(await unansweredSecondsOf(transcriptPath, null)).toBeUndefined();
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
it('keeps the call unanswered when the only later enqueue is a task notification', async () => {
|
|
107
|
+
const transcriptPath = writeTranscript([
|
|
108
|
+
typedReply(earlierReplyTimestamp, 'an earlier answer'),
|
|
109
|
+
ownerCall(callTimestamp),
|
|
110
|
+
enqueued(
|
|
111
|
+
laterReplyTimestamp,
|
|
112
|
+
'<task-notification><task-id>abc</task-id></task-notification>',
|
|
113
|
+
),
|
|
114
|
+
]);
|
|
115
|
+
|
|
116
|
+
expect(await unansweredSecondsOf(transcriptPath, null)).toBe(
|
|
117
|
+
Math.floor(Date.parse(callTimestamp) / 1000),
|
|
118
|
+
);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
it('keeps the call unanswered when the only later enqueue is an injected reminder', async () => {
|
|
122
|
+
const transcriptPath = writeTranscript([
|
|
123
|
+
typedReply(earlierReplyTimestamp, 'an earlier answer'),
|
|
124
|
+
ownerCall(callTimestamp),
|
|
125
|
+
enqueued(
|
|
126
|
+
laterReplyTimestamp,
|
|
127
|
+
`${SILENT_SESSION_REMINDER_SENTINEL} check yourself`,
|
|
128
|
+
),
|
|
129
|
+
]);
|
|
130
|
+
|
|
131
|
+
expect(await unansweredSecondsOf(transcriptPath, null)).toBe(
|
|
132
|
+
Math.floor(Date.parse(callTimestamp) / 1000),
|
|
133
|
+
);
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
it('treats the reply time recorded by the status line marker as an answer to the call', async () => {
|
|
137
|
+
const transcriptPath = writeTranscript([
|
|
138
|
+
typedReply(earlierReplyTimestamp, 'an earlier answer'),
|
|
139
|
+
ownerCall(callTimestamp),
|
|
140
|
+
]);
|
|
141
|
+
writeReplyMarker(laterReplyTimestamp);
|
|
142
|
+
|
|
143
|
+
expect(
|
|
144
|
+
await unansweredSecondsOf(transcriptPath, markerDirectory),
|
|
145
|
+
).toBeUndefined();
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
it('keeps the call unanswered when the status line marker predates the call', async () => {
|
|
149
|
+
const transcriptPath = writeTranscript([
|
|
150
|
+
typedReply(earlierReplyTimestamp, 'an earlier answer'),
|
|
151
|
+
ownerCall(callTimestamp),
|
|
152
|
+
]);
|
|
153
|
+
writeReplyMarker(earlierReplyTimestamp);
|
|
154
|
+
|
|
155
|
+
expect(await unansweredSecondsOf(transcriptPath, markerDirectory)).toBe(
|
|
156
|
+
Math.floor(Date.parse(callTimestamp) / 1000),
|
|
157
|
+
);
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
it('keeps the call unanswered when no marker file exists for the session', async () => {
|
|
161
|
+
const transcriptPath = writeTranscript([
|
|
162
|
+
typedReply(earlierReplyTimestamp, 'an earlier answer'),
|
|
163
|
+
ownerCall(callTimestamp),
|
|
164
|
+
]);
|
|
165
|
+
fs.mkdirSync(markerDirectory, { recursive: true });
|
|
166
|
+
|
|
167
|
+
expect(await unansweredSecondsOf(transcriptPath, markerDirectory)).toBe(
|
|
168
|
+
Math.floor(Date.parse(callTimestamp) / 1000),
|
|
169
|
+
);
|
|
170
|
+
});
|
|
171
|
+
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
2
3
|
import { OwnerCallStatusProvider } from '../../domain/usecases/adapter-interfaces/OwnerCallStatusProvider';
|
|
3
4
|
import { SILENT_SESSION_REMINDER_SENTINEL } from '../../domain/usecases/silentSessionReminderSentinel';
|
|
4
5
|
|
|
@@ -100,10 +101,49 @@ export const ownerCallMarkerFamilyResolve = (marker: string): string[] =>
|
|
|
100
101
|
]
|
|
101
102
|
: [marker];
|
|
102
103
|
|
|
104
|
+
// A reply the owner types while the agent is still working is NOT written as a `user` entry: the
|
|
105
|
+
// running turn consumes it from the queue, and the transcript keeps only
|
|
106
|
+
// {"type":"queue-operation","operation":"enqueue","content":"<the text>"} plus its `remove` twin.
|
|
107
|
+
// Reading `user` entries alone therefore misses every mid-turn reply, leaves the call outstanding
|
|
108
|
+
// for the rest of the session, and suppresses the stall reminder of a session the owner has
|
|
109
|
+
// already answered. The exclusions match the ones the status line applies to the same entries, so
|
|
110
|
+
// a system-injected enqueue never counts as an owner reply.
|
|
111
|
+
const INJECTED_ENQUEUE_CONTENT_MARKERS = [
|
|
112
|
+
SILENT_SESSION_REMINDER_SENTINEL,
|
|
113
|
+
'<system-reminder>',
|
|
114
|
+
'UserPromptSubmit hook',
|
|
115
|
+
'<task-notification>',
|
|
116
|
+
'SYSTEM NOTIFICATION',
|
|
117
|
+
'<local-command-stdout>',
|
|
118
|
+
'<local-command-caveat>',
|
|
119
|
+
'<command-name>',
|
|
120
|
+
'This session is being continued from a previous conversation',
|
|
121
|
+
];
|
|
122
|
+
|
|
123
|
+
const isOwnerEnqueuedReply = (parsed: Record<string, unknown>): boolean => {
|
|
124
|
+
if (readString(parsed, 'operation') !== 'enqueue') {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
const content = readString(parsed, 'content');
|
|
128
|
+
if (content === null || content.length === 0) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
return !INJECTED_ENQUEUE_CONTENT_MARKERS.some((injectedMarker) =>
|
|
132
|
+
content.includes(injectedMarker),
|
|
133
|
+
);
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
const TRANSCRIPT_FILE_EXTENSION = '.jsonl';
|
|
137
|
+
const OWNER_REPLY_MARKER_FILE_EXTENSION = '.reply_ts';
|
|
138
|
+
const UNSAFE_SESSION_ID_CHARACTER_PATTERN = /[^A-Za-z0-9._-]/g;
|
|
139
|
+
|
|
103
140
|
export class TranscriptOwnerCallStatusProvider implements OwnerCallStatusProvider {
|
|
104
141
|
private readonly ownerCallMarkerFamily: string[];
|
|
105
142
|
|
|
106
|
-
constructor(
|
|
143
|
+
constructor(
|
|
144
|
+
ownerCallMarker: string | null,
|
|
145
|
+
private readonly ownerReplyMarkerDirectory: string | null = null,
|
|
146
|
+
) {
|
|
107
147
|
this.ownerCallMarkerFamily =
|
|
108
148
|
ownerCallMarker === null || ownerCallMarker.length === 0
|
|
109
149
|
? []
|
|
@@ -181,13 +221,60 @@ export class TranscriptOwnerCallStatusProvider implements OwnerCallStatusProvide
|
|
|
181
221
|
) {
|
|
182
222
|
lastOwnerReplyEpochMs = epochMs;
|
|
183
223
|
}
|
|
224
|
+
if (type === 'queue-operation' && isOwnerEnqueuedReply(parsed)) {
|
|
225
|
+
lastOwnerReplyEpochMs =
|
|
226
|
+
lastOwnerReplyEpochMs === null || epochMs > lastOwnerReplyEpochMs
|
|
227
|
+
? epochMs
|
|
228
|
+
: lastOwnerReplyEpochMs;
|
|
229
|
+
}
|
|
184
230
|
}
|
|
185
231
|
if (lastOwnerCallEpochMs === null) {
|
|
186
232
|
return null;
|
|
187
233
|
}
|
|
188
|
-
|
|
189
|
-
|
|
234
|
+
const markerReplyEpochMs = this.readOwnerReplyMarkerEpochMs(transcriptPath);
|
|
235
|
+
const resolvedReplyEpochMs =
|
|
236
|
+
markerReplyEpochMs !== null &&
|
|
237
|
+
(lastOwnerReplyEpochMs === null ||
|
|
238
|
+
markerReplyEpochMs > lastOwnerReplyEpochMs)
|
|
239
|
+
? markerReplyEpochMs
|
|
240
|
+
: lastOwnerReplyEpochMs;
|
|
241
|
+
return resolvedReplyEpochMs === null ||
|
|
242
|
+
lastOwnerCallEpochMs > resolvedReplyEpochMs
|
|
190
243
|
? lastOwnerCallEpochMs
|
|
191
244
|
: null;
|
|
192
245
|
};
|
|
246
|
+
|
|
247
|
+
// The owner sees only the status line, so the reply time it renders is the value the owner
|
|
248
|
+
// believes the fleet is acting on. The status line writes that value to a per-session marker
|
|
249
|
+
// file, and reading it here keeps this decision and the owner's own view of it from diverging.
|
|
250
|
+
// The transcript-derived value still stands on its own: an absent, unreadable, or older marker
|
|
251
|
+
// changes nothing, so a fresh host with no markers yet behaves exactly as before.
|
|
252
|
+
private readOwnerReplyMarkerEpochMs = (
|
|
253
|
+
transcriptPath: string,
|
|
254
|
+
): number | null => {
|
|
255
|
+
if (this.ownerReplyMarkerDirectory === null) {
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
const fileName = path.basename(transcriptPath);
|
|
259
|
+
const sessionId = fileName.endsWith(TRANSCRIPT_FILE_EXTENSION)
|
|
260
|
+
? fileName.slice(0, -TRANSCRIPT_FILE_EXTENSION.length)
|
|
261
|
+
: fileName;
|
|
262
|
+
const safeSessionId = sessionId.replace(
|
|
263
|
+
UNSAFE_SESSION_ID_CHARACTER_PATTERN,
|
|
264
|
+
'_',
|
|
265
|
+
);
|
|
266
|
+
let markerContent: string;
|
|
267
|
+
try {
|
|
268
|
+
markerContent = fs.readFileSync(
|
|
269
|
+
path.join(
|
|
270
|
+
this.ownerReplyMarkerDirectory,
|
|
271
|
+
`${safeSessionId}${OWNER_REPLY_MARKER_FILE_EXTENSION}`,
|
|
272
|
+
),
|
|
273
|
+
'utf8',
|
|
274
|
+
);
|
|
275
|
+
} catch {
|
|
276
|
+
return null;
|
|
277
|
+
}
|
|
278
|
+
return parseEpochMilliseconds(markerContent.split('\n')[0].trim());
|
|
279
|
+
};
|
|
193
280
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandleScheduledEventUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HandleScheduledEventUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"AA4CA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAoD3D,qBAAa,kCAAkC;IAC7C,MAAM,GACJ,gBAAgB,MAAM,EACtB,UAAU,OAAO,EACjB,6BAA4B,MAAM,EAAE,GAAG,IAAW,KACjD,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,IAAI,EAAE,CAAC;KACzB,GAAG,IAAI,CAAC,CAowBP;CACH"}
|
|
@@ -7,6 +7,7 @@ export type NotifySilentTmuxSessionsParams = {
|
|
|
7
7
|
localCommandRunner: LocalCommandRunner;
|
|
8
8
|
processEnvironReader?: ProcessEnvironReader;
|
|
9
9
|
ownerCallMarker: string | null;
|
|
10
|
+
ownerReplyMarkerDirectory?: string | null;
|
|
10
11
|
subAgentOutputRootDirectory: string | null;
|
|
11
12
|
subAgentProcessMatchPattern: string | null;
|
|
12
13
|
subAgentTranscriptRootDirectory: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifySilentTmuxSessions.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/notifySilentTmuxSessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gEAAgE,CAAC;AAGpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kEAAkE,CAAC;AACxG,OAAO,EAEL,qBAAqB,EAQtB,MAAM,0DAA0D,CAAC;AAoBlE,OAAO,EAEL,6BAA6B,EAC9B,MAAM,6DAA6D,CAAC;AAKrE,MAAM,MAAM,8BAA8B,GAAG;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,+BAA+B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,4BAA4B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,0BAA0B,EAAE,MAAM,CAAC;IACnC,+BAA+B,EAAE,MAAM,CAAC;IACxC,8BAA8B,EAAE,MAAM,CAAC;IACvC,+BAA+B,EAAE,MAAM,CAAC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,qCAAqC,EAAE,MAAM,CAAC;IAC9C,8BAA8B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,qBAAqB,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACpD,+BAA+B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,4BAA4B,EAAE,MAAM,CAAC;IACrC,gBAAgB,EAAE,6BAA6B,CAAC;IAChD,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,GAAG,EAAE,IAAI,CAAC;CACX,CAAC;
|
|
1
|
+
{"version":3,"file":"notifySilentTmuxSessions.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/notifySilentTmuxSessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gEAAgE,CAAC;AAGpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kEAAkE,CAAC;AACxG,OAAO,EAEL,qBAAqB,EAQtB,MAAM,0DAA0D,CAAC;AAoBlE,OAAO,EAEL,6BAA6B,EAC9B,MAAM,6DAA6D,CAAC;AAKrE,MAAM,MAAM,8BAA8B,GAAG;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,yBAAyB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,+BAA+B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,4BAA4B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,0BAA0B,EAAE,MAAM,CAAC;IACnC,+BAA+B,EAAE,MAAM,CAAC;IACxC,8BAA8B,EAAE,MAAM,CAAC;IACvC,+BAA+B,EAAE,MAAM,CAAC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,qCAAqC,EAAE,MAAM,CAAC;IAC9C,8BAA8B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,qBAAqB,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACpD,+BAA+B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,4BAA4B,EAAE,MAAM,CAAC;IACrC,gBAAgB,EAAE,6BAA6B,CAAC;IAChD,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,GAAG,EAAE,IAAI,CAAC;CACX,CAAC;AA2CF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,8BAA8B,KACrC,OAAO,CAAC,IAAI,CAuFd,CAAC;AAEF,eAAO,MAAM,0CAA0C;;;;;;;;CAS7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ownerReplyMarkerDirectoryResolve.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/ownerReplyMarkerDirectoryResolve.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,gCAAgC,GAC3C,qBAAqB,MAAM,GAAG,IAAI,EAClC,aAAa,MAAM,CAAC,UAAU,EAC9B,QAAQ,MAAM,GAAG,IAAI,KACpB,MAAM,GAAG,IAoBX,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { OwnerCallStatusProvider } from '../../domain/usecases/adapter-interfaces/OwnerCallStatusProvider';
|
|
2
2
|
export declare const ownerCallMarkerFamilyResolve: (marker: string) => string[];
|
|
3
3
|
export declare class TranscriptOwnerCallStatusProvider implements OwnerCallStatusProvider {
|
|
4
|
+
private readonly ownerReplyMarkerDirectory;
|
|
4
5
|
private readonly ownerCallMarkerFamily;
|
|
5
|
-
constructor(ownerCallMarker: string | null);
|
|
6
|
+
constructor(ownerCallMarker: string | null, ownerReplyMarkerDirectory?: string | null);
|
|
6
7
|
listUnansweredOwnerCallEpochSecondsBySessionName: (transcriptPathBySessionName: Map<string, string>) => Promise<Map<string, number>>;
|
|
7
8
|
private findUnansweredOwnerCallEpochMs;
|
|
9
|
+
private readOwnerReplyMarkerEpochMs;
|
|
8
10
|
}
|
|
9
11
|
//# sourceMappingURL=TranscriptOwnerCallStatusProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TranscriptOwnerCallStatusProvider.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/TranscriptOwnerCallStatusProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TranscriptOwnerCallStatusProvider.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/TranscriptOwnerCallStatusProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kEAAkE,CAAC;AA6F3G,eAAO,MAAM,4BAA4B,GAAI,QAAQ,MAAM,KAAG,MAAM,EAMtD,CAAC;AAsCf,qBAAa,iCAAkC,YAAW,uBAAuB;IAK7E,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAJ5C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAW;gBAG/C,eAAe,EAAE,MAAM,GAAG,IAAI,EACb,yBAAyB,GAAE,MAAM,GAAG,IAAW;IAQlE,gDAAgD,GAC9C,6BAA6B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAC/C,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAqB7B;IAEF,OAAO,CAAC,8BAA8B,CAmEpC;IAOF,OAAO,CAAC,2BAA2B,CA2BjC;CACH"}
|