github-issue-tower-defence-management 2.38.1 → 2.40.0
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/README.md +6 -14
- package/bin/adapter/entry-points/console/ui-dist/assets/{index-D_VYQ4O7.css → index-C23_HNwW.css} +1 -1
- package/bin/adapter/entry-points/console/ui-dist/assets/{index-C3JxGywh.js → index-CqVIONFD.js} +1 -1
- package/bin/adapter/entry-points/console/ui-dist/index.html +2 -2
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +0 -22
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
- package/bin/adapter/entry-points/handlers/notifySilentTmuxSessions.js +2 -7
- package/bin/adapter/entry-points/handlers/notifySilentTmuxSessions.js.map +1 -1
- package/bin/adapter/repositories/ConfigurableSilentSessionMessageComposer.js +0 -13
- package/bin/adapter/repositories/ConfigurableSilentSessionMessageComposer.js.map +1 -1
- package/bin/domain/usecases/DefaultSilentSessionMessageComposer.js +1 -31
- package/bin/domain/usecases/DefaultSilentSessionMessageComposer.js.map +1 -1
- package/bin/domain/usecases/NotifySilentLiveSessionsUseCase.js +13 -65
- package/bin/domain/usecases/NotifySilentLiveSessionsUseCase.js.map +1 -1
- package/package.json +1 -1
- package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
- package/types/adapter/entry-points/handlers/notifySilentTmuxSessions.d.ts +0 -6
- package/types/adapter/entry-points/handlers/notifySilentTmuxSessions.d.ts.map +1 -1
- package/types/adapter/repositories/ConfigurableSilentSessionMessageComposer.d.ts +0 -4
- package/types/adapter/repositories/ConfigurableSilentSessionMessageComposer.d.ts.map +1 -1
- package/types/domain/entities/LiveSessionActivitySnapshot.d.ts +0 -2
- package/types/domain/entities/LiveSessionActivitySnapshot.d.ts.map +1 -1
- package/types/domain/usecases/DefaultSilentSessionMessageComposer.d.ts +0 -3
- package/types/domain/usecases/DefaultSilentSessionMessageComposer.d.ts.map +1 -1
- package/types/domain/usecases/NotifySilentLiveSessionsUseCase.d.ts +1 -9
- package/types/domain/usecases/NotifySilentLiveSessionsUseCase.d.ts.map +1 -1
- package/types/domain/usecases/adapter-interfaces/SilentSessionMessageComposer.d.ts +0 -2
- package/types/domain/usecases/adapter-interfaces/SilentSessionMessageComposer.d.ts.map +1 -1
- package/bin/adapter/entry-points/handlers/ownerReplyMarkerDirectoryResolve.js +0 -64
- package/bin/adapter/entry-points/handlers/ownerReplyMarkerDirectoryResolve.js.map +0 -1
- package/bin/adapter/repositories/FileSystemSessionOutputActivityRepository.js +0 -103
- package/bin/adapter/repositories/FileSystemSessionOutputActivityRepository.js.map +0 -1
- package/bin/adapter/repositories/NoUnansweredOwnerCallStatusProvider.js +0 -12
- package/bin/adapter/repositories/NoUnansweredOwnerCallStatusProvider.js.map +0 -1
- package/bin/adapter/repositories/TranscriptOwnerCallStatusProvider.js +0 -322
- package/bin/adapter/repositories/TranscriptOwnerCallStatusProvider.js.map +0 -1
- package/bin/domain/entities/LiveSessionOutputActivity.js +0 -3
- package/bin/domain/entities/LiveSessionOutputActivity.js.map +0 -1
- package/bin/domain/usecases/adapter-interfaces/OwnerCallStatusProvider.js +0 -3
- package/bin/domain/usecases/adapter-interfaces/OwnerCallStatusProvider.js.map +0 -1
- package/bin/domain/usecases/adapter-interfaces/SessionOutputActivityRepository.js +0 -3
- package/bin/domain/usecases/adapter-interfaces/SessionOutputActivityRepository.js.map +0 -1
- package/types/adapter/entry-points/handlers/ownerReplyMarkerDirectoryResolve.d.ts +0 -2
- package/types/adapter/entry-points/handlers/ownerReplyMarkerDirectoryResolve.d.ts.map +0 -1
- package/types/adapter/repositories/FileSystemSessionOutputActivityRepository.d.ts +0 -7
- package/types/adapter/repositories/FileSystemSessionOutputActivityRepository.d.ts.map +0 -1
- package/types/adapter/repositories/NoUnansweredOwnerCallStatusProvider.d.ts +0 -5
- package/types/adapter/repositories/NoUnansweredOwnerCallStatusProvider.d.ts.map +0 -1
- package/types/adapter/repositories/TranscriptOwnerCallStatusProvider.d.ts +0 -18
- package/types/adapter/repositories/TranscriptOwnerCallStatusProvider.d.ts.map +0 -1
- package/types/domain/entities/LiveSessionOutputActivity.d.ts +0 -5
- package/types/domain/entities/LiveSessionOutputActivity.d.ts.map +0 -1
- package/types/domain/usecases/adapter-interfaces/OwnerCallStatusProvider.d.ts +0 -4
- package/types/domain/usecases/adapter-interfaces/OwnerCallStatusProvider.d.ts.map +0 -1
- package/types/domain/usecases/adapter-interfaces/SessionOutputActivityRepository.d.ts +0 -5
- package/types/domain/usecases/adapter-interfaces/SessionOutputActivityRepository.d.ts.map +0 -1
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { SubAgentActivity } from '../entities/LiveSessionActivitySnapshot';
|
|
2
2
|
import { SilentSessionMessageComposer, SubAgentStallSections } from './adapter-interfaces/SilentSessionMessageComposer';
|
|
3
|
-
export declare const composeOwnerCallFormatGuidance: () => string;
|
|
4
3
|
export declare class DefaultSilentSessionMessageComposer implements SilentSessionMessageComposer {
|
|
5
|
-
composeMainStalledSection: (mainSilentSeconds: number) => string;
|
|
6
|
-
composeMainStalledWithStaleOwnerCallSection: (mainSilentSeconds: number, unansweredOwnerCallAgeSeconds: number) => string;
|
|
7
4
|
composeSubAgentSection: (stallSections: SubAgentStallSections) => string;
|
|
8
5
|
composeSubAgentUnconsumedResultSection: (unconsumedResultSubAgents: SubAgentActivity[]) => string;
|
|
9
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultSilentSessionMessageComposer.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/DefaultSilentSessionMessageComposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EACL,4BAA4B,EAC5B,qBAAqB,EACtB,MAAM,mDAAmD,CAAC;AAwD3D,
|
|
1
|
+
{"version":3,"file":"DefaultSilentSessionMessageComposer.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/DefaultSilentSessionMessageComposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EACL,4BAA4B,EAC5B,qBAAqB,EACtB,MAAM,mDAAmD,CAAC;AAwD3D,qBAAa,mCAAoC,YAAW,4BAA4B;IACtF,sBAAsB,GAAI,eAAe,qBAAqB,KAAG,MAAM,CAWrE;IAEF,sCAAsC,GACpC,2BAA2B,gBAAgB,EAAE,KAC5C,MAAM,CAC2D;CACrE"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { LiveSessionProcessSnapshotProvider } from './adapter-interfaces/LiveSessionProcessSnapshotProvider';
|
|
2
2
|
import { InteractiveLiveSessionTranscriptResolver } from './adapter-interfaces/InteractiveLiveSessionTranscriptResolver';
|
|
3
|
-
import { OwnerCallStatusProvider } from './adapter-interfaces/OwnerCallStatusProvider';
|
|
4
3
|
import { RefusalTailStatusProvider } from './adapter-interfaces/RefusalTailStatusProvider';
|
|
5
|
-
import { SessionOutputActivityRepository } from './adapter-interfaces/SessionOutputActivityRepository';
|
|
6
4
|
import { SessionSubAgentActivityRepository } from './adapter-interfaces/SessionSubAgentActivityRepository';
|
|
7
5
|
import { SilentSessionMessageComposer } from './adapter-interfaces/SilentSessionMessageComposer';
|
|
8
6
|
import { SilentSessionNotificationRepository } from './adapter-interfaces/SilentSessionNotificationRepository';
|
|
@@ -10,8 +8,6 @@ import { SilentSessionCandidateStateRepository } from './adapter-interfaces/Sile
|
|
|
10
8
|
import { SilentSessionHubTaskStatusCacheRepository } from './adapter-interfaces/SilentSessionHubTaskStatusCacheRepository';
|
|
11
9
|
import { Sleeper } from './adapter-interfaces/Sleeper';
|
|
12
10
|
import { IssueRepository } from './adapter-interfaces/IssueRepository';
|
|
13
|
-
export declare const DEFAULT_MAIN_SILENT_THRESHOLD_SECONDS: number;
|
|
14
|
-
export declare const DEFAULT_UNANSWERED_OWNER_CALL_GRACE_SECONDS: number;
|
|
15
11
|
export declare const DEFAULT_SUBAGENT_SILENT_THRESHOLD_SECONDS: number;
|
|
16
12
|
export declare const DEFAULT_SUBAGENT_RUNNING_THRESHOLD_SECONDS: number;
|
|
17
13
|
export declare const DEFAULT_NOTIFICATION_STAGGER_SECONDS = 25;
|
|
@@ -23,9 +19,7 @@ export type HubTaskStatusResolver = Pick<IssueRepository, 'getIssueByUrl'>;
|
|
|
23
19
|
export declare class NotifySilentLiveSessionsUseCase {
|
|
24
20
|
private readonly liveSessionProcessSnapshotProvider;
|
|
25
21
|
private readonly interactiveLiveSessionTranscriptResolver;
|
|
26
|
-
private readonly sessionOutputActivityRepository;
|
|
27
22
|
private readonly subAgentActivityRepository;
|
|
28
|
-
private readonly ownerCallStatusProvider;
|
|
29
23
|
private readonly notificationRepository;
|
|
30
24
|
private readonly candidateStateRepository;
|
|
31
25
|
private readonly messageComposer;
|
|
@@ -34,10 +28,8 @@ export declare class NotifySilentLiveSessionsUseCase {
|
|
|
34
28
|
private readonly hubTaskStatusCacheRepository;
|
|
35
29
|
private readonly refusalTailStatusProvider;
|
|
36
30
|
private readonly resolveInteractiveLiveSessions;
|
|
37
|
-
constructor(liveSessionProcessSnapshotProvider: LiveSessionProcessSnapshotProvider, interactiveLiveSessionTranscriptResolver: InteractiveLiveSessionTranscriptResolver,
|
|
31
|
+
constructor(liveSessionProcessSnapshotProvider: LiveSessionProcessSnapshotProvider, interactiveLiveSessionTranscriptResolver: InteractiveLiveSessionTranscriptResolver, subAgentActivityRepository: SessionSubAgentActivityRepository, notificationRepository: SilentSessionNotificationRepository, candidateStateRepository: SilentSessionCandidateStateRepository, messageComposer: SilentSessionMessageComposer, sleeper: Sleeper, hubTaskStatusResolver?: HubTaskStatusResolver | null, hubTaskStatusCacheRepository?: SilentSessionHubTaskStatusCacheRepository | null, refusalTailStatusProvider?: RefusalTailStatusProvider | null);
|
|
38
32
|
run: (params: {
|
|
39
|
-
mainSilentThresholdSeconds: number;
|
|
40
|
-
unansweredOwnerCallGraceSeconds: number;
|
|
41
33
|
subAgentSilentThresholdSeconds: number;
|
|
42
34
|
subAgentRunningThresholdSeconds: number;
|
|
43
35
|
staggerSeconds: number;
|
|
@@ -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,
|
|
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,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,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,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;AAQhE,eAAO,MAAM,mCAAmC,GAC9C,aAAa,MAAM,KAClB,MAAM,GAAG,IAWX,CAAC;AAKF,eAAO,MAAM,qCAAqC,GAChD,aAAa,MAAM,KAClB,OACkE,CAAC;AAEtE,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;AAQ3E,qBAAa,+BAA+B;IAKxC,OAAO,CAAC,QAAQ,CAAC,kCAAkC;IACnD,OAAO,CAAC,QAAQ,CAAC,wCAAwC;IACzD,OAAO,CAAC,QAAQ,CAAC,0BAA0B;IAC3C,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,wBAAwB;IACzC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,4BAA4B;IAC7C,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAb5C,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CACD;gBAG3B,kCAAkC,EAAE,kCAAkC,EACtE,wCAAwC,EAAE,wCAAwC,EAClF,0BAA0B,EAAE,iCAAiC,EAC7D,sBAAsB,EAAE,mCAAmC,EAC3D,wBAAwB,EAAE,qCAAqC,EAC/D,eAAe,EAAE,4BAA4B,EAC7C,OAAO,EAAE,OAAO,EAChB,qBAAqB,GAAE,qBAAqB,GAAG,IAAW,EAC1D,4BAA4B,GAAE,yCAAyC,GAAG,IAAW,EACrF,yBAAyB,GAAE,yBAAyB,GAAG,IAAW;IAGrF,GAAG,GAAU,QAAQ;QACnB,8BAA8B,EAAE,MAAM,CAAC;QACvC,+BAA+B,EAAE,MAAM,CAAC;QACxC,cAAc,EAAE,MAAM,CAAC;QACvB,qCAAqC,EAAE,MAAM,CAAC;QAC9C,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,4BAA4B,EAAE,MAAM,CAAC;QACrC,GAAG,EAAE,IAAI,CAAC;KACX,KAAG,OAAO,CAAC,IAAI,CAAC,CA6Hf;IAEF,OAAO,CAAC,eAAe,CAiErB;IAEF,OAAO,CAAC,yBAAyB,CA0C/B;IAEF,OAAO,CAAC,sBAAsB,CAImC;IAEjE,OAAO,CAAC,gBAAgB,CAkBtB;IAEF,OAAO,CAAC,gBAAgB,CA6DtB;CACH"}
|
|
@@ -4,8 +4,6 @@ export type SubAgentStallSections = {
|
|
|
4
4
|
longRunningSubAgents: SubAgentActivity[];
|
|
5
5
|
};
|
|
6
6
|
export interface SilentSessionMessageComposer {
|
|
7
|
-
composeMainStalledSection: (mainSilentSeconds: number) => string;
|
|
8
|
-
composeMainStalledWithStaleOwnerCallSection: (mainSilentSeconds: number, unansweredOwnerCallAgeSeconds: number) => string;
|
|
9
7
|
composeSubAgentSection: (sections: SubAgentStallSections) => string;
|
|
10
8
|
composeSubAgentUnconsumedResultSection: (unconsumedResultSubAgents: SubAgentActivity[]) => string;
|
|
11
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SilentSessionMessageComposer.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/adapter-interfaces/SilentSessionMessageComposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAE9E,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,oBAAoB,EAAE,gBAAgB,EAAE,CAAC;CAC1C,CAAC;AAEF,MAAM,WAAW,4BAA4B;IAC3C,
|
|
1
|
+
{"version":3,"file":"SilentSessionMessageComposer.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/adapter-interfaces/SilentSessionMessageComposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAE9E,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,oBAAoB,EAAE,gBAAgB,EAAE,CAAC;CAC1C,CAAC;AAEF,MAAM,WAAW,4BAA4B;IAC3C,sBAAsB,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,MAAM,CAAC;IACpE,sCAAsC,EAAE,CACtC,yBAAyB,EAAE,gBAAgB,EAAE,KAC1C,MAAM,CAAC;CACb"}
|
|
@@ -1,64 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,103 +0,0 @@
|
|
|
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.FileSystemSessionOutputActivityRepository = void 0;
|
|
37
|
-
const fs = __importStar(require("fs"));
|
|
38
|
-
const isRecord = (value) => typeof value === 'object' && value !== null;
|
|
39
|
-
const readString = (value, key) => {
|
|
40
|
-
const candidate = value[key];
|
|
41
|
-
return typeof candidate === 'string' ? candidate : null;
|
|
42
|
-
};
|
|
43
|
-
const parseEpochMilliseconds = (timestamp) => {
|
|
44
|
-
if (timestamp === null) {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
const parsed = Date.parse(timestamp);
|
|
48
|
-
return Number.isNaN(parsed) ? null : parsed;
|
|
49
|
-
};
|
|
50
|
-
class FileSystemSessionOutputActivityRepository {
|
|
51
|
-
constructor() {
|
|
52
|
-
this.listSessionOutputActivities = async (transcriptPathBySessionName) => {
|
|
53
|
-
const activities = [];
|
|
54
|
-
for (const [sessionName, transcriptPath] of transcriptPathBySessionName) {
|
|
55
|
-
const lastAssistantOutputEpochSeconds = this.readLastAssistantOutputEpochSeconds(transcriptPath);
|
|
56
|
-
if (lastAssistantOutputEpochSeconds !== null) {
|
|
57
|
-
activities.push({
|
|
58
|
-
sessionName,
|
|
59
|
-
lastOutputEpochSeconds: lastAssistantOutputEpochSeconds,
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
return activities;
|
|
64
|
-
};
|
|
65
|
-
this.readLastAssistantOutputEpochSeconds = (transcriptPath) => {
|
|
66
|
-
let content;
|
|
67
|
-
try {
|
|
68
|
-
content = fs.readFileSync(transcriptPath, 'utf8');
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
let lastAssistantOutputEpochMs = null;
|
|
74
|
-
for (const line of content.split('\n')) {
|
|
75
|
-
const trimmed = line.trim();
|
|
76
|
-
if (trimmed.length === 0) {
|
|
77
|
-
continue;
|
|
78
|
-
}
|
|
79
|
-
let parsed;
|
|
80
|
-
try {
|
|
81
|
-
parsed = JSON.parse(trimmed);
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
continue;
|
|
85
|
-
}
|
|
86
|
-
if (!isRecord(parsed)) {
|
|
87
|
-
continue;
|
|
88
|
-
}
|
|
89
|
-
if (readString(parsed, 'type') === 'assistant') {
|
|
90
|
-
const epochMs = parseEpochMilliseconds(readString(parsed, 'timestamp'));
|
|
91
|
-
if (epochMs !== null) {
|
|
92
|
-
lastAssistantOutputEpochMs = epochMs;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return lastAssistantOutputEpochMs === null
|
|
97
|
-
? null
|
|
98
|
-
: Math.floor(lastAssistantOutputEpochMs / 1000);
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
exports.FileSystemSessionOutputActivityRepository = FileSystemSessionOutputActivityRepository;
|
|
103
|
-
//# sourceMappingURL=FileSystemSessionOutputActivityRepository.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FileSystemSessionOutputActivityRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/FileSystemSessionOutputActivityRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NoUnansweredOwnerCallStatusProvider = void 0;
|
|
4
|
-
class NoUnansweredOwnerCallStatusProvider {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.listUnansweredOwnerCallEpochSecondsBySessionName = (_transcriptPathBySessionName) => {
|
|
7
|
-
return Promise.resolve(new Map());
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
exports.NoUnansweredOwnerCallStatusProvider = NoUnansweredOwnerCallStatusProvider;
|
|
12
|
-
//# sourceMappingURL=NoUnansweredOwnerCallStatusProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NoUnansweredOwnerCallStatusProvider.js","sourceRoot":"","sources":["../../../src/adapter/repositories/NoUnansweredOwnerCallStatusProvider.ts"],"names":[],"mappings":";;;AAEA,MAAa,mCAAmC;IAAhD;QACE,qDAAgD,GAAG,CACjD,4BAAiD,EACnB,EAAE;YAChC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,EAAkB,CAAC,CAAC;QACpD,CAAC,CAAC;IACJ,CAAC;CAAA;AAND,kFAMC"}
|
|
@@ -1,322 +0,0 @@
|
|
|
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.TranscriptOwnerCallStatusProvider = exports.ownerCallMarkerFamilyResolve = void 0;
|
|
37
|
-
const fs = __importStar(require("fs"));
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
const silentSessionReminderSentinel_1 = require("../../domain/usecases/silentSessionReminderSentinel");
|
|
40
|
-
const isRecord = (value) => typeof value === 'object' && value !== null;
|
|
41
|
-
const readString = (value, key) => {
|
|
42
|
-
const candidate = value[key];
|
|
43
|
-
return typeof candidate === 'string' ? candidate : null;
|
|
44
|
-
};
|
|
45
|
-
const parseEpochMilliseconds = (timestamp) => {
|
|
46
|
-
if (timestamp === null) {
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
const parsed = Date.parse(timestamp);
|
|
50
|
-
return Number.isNaN(parsed) ? null : parsed;
|
|
51
|
-
};
|
|
52
|
-
const extractText = (content) => {
|
|
53
|
-
if (typeof content === 'string') {
|
|
54
|
-
return content;
|
|
55
|
-
}
|
|
56
|
-
if (!Array.isArray(content)) {
|
|
57
|
-
return '';
|
|
58
|
-
}
|
|
59
|
-
const texts = [];
|
|
60
|
-
for (const block of content) {
|
|
61
|
-
if (isRecord(block) && block.type === 'text') {
|
|
62
|
-
const text = readString(block, 'text');
|
|
63
|
-
if (text !== null) {
|
|
64
|
-
texts.push(text);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return texts.join('\n');
|
|
69
|
-
};
|
|
70
|
-
// A transcript user entry is only a genuine owner reply when it was actually
|
|
71
|
-
// typed (or queued) by the human owner. Claude Code records the provenance of
|
|
72
|
-
// each user entry on the top-level `origin` and `promptSource` fields. A
|
|
73
|
-
// genuine human prompt is identified by EITHER `origin.kind === 'human'` OR a
|
|
74
|
-
// `promptSource` of `typed`/`queued`; the second condition is required because
|
|
75
|
-
// older-format transcripts record genuine human replies with a `promptSource`
|
|
76
|
-
// of `queued`/`typed` but no `origin` field, and dropping those would leave a
|
|
77
|
-
// real owner reply uncounted and the session waiting forever. Every
|
|
78
|
-
// system-injected user entry, by contrast, uses a `promptSource` of `system`
|
|
79
|
-
// (sub-agent `task-notification` notices, cross-session `peer` messages) or
|
|
80
|
-
// `sdk` (spawn prompts), or has neither field (tool results, skill/meta
|
|
81
|
-
// entries) — none of which match. Only a genuine human entry may clear an
|
|
82
|
-
// outstanding call-to-user; otherwise a system-injected entry would be
|
|
83
|
-
// miscounted as the owner answering and a genuinely waiting session would stop
|
|
84
|
-
// being suppressed.
|
|
85
|
-
const isGenuineHumanEntry = (parsed) => {
|
|
86
|
-
const origin = parsed.origin;
|
|
87
|
-
if (isRecord(origin) && readString(origin, 'kind') === 'human') {
|
|
88
|
-
return true;
|
|
89
|
-
}
|
|
90
|
-
const promptSource = readString(parsed, 'promptSource');
|
|
91
|
-
return promptSource === 'typed' || promptSource === 'queued';
|
|
92
|
-
};
|
|
93
|
-
const hasOwnerTextReply = (content) => {
|
|
94
|
-
if (typeof content === 'string') {
|
|
95
|
-
if (content.length === 0) {
|
|
96
|
-
return false;
|
|
97
|
-
}
|
|
98
|
-
// A monitor-injected self-check reminder lands in the target session's
|
|
99
|
-
// transcript as a user text entry. It carries the reminder sentinel, so it
|
|
100
|
-
// is the monitor talking to the session, not the owner replying. It MUST NOT
|
|
101
|
-
// advance the last-owner-reply time, otherwise an outstanding call-to-user
|
|
102
|
-
// is wrongly treated as answered and the session stops being suppressed.
|
|
103
|
-
return !content.includes(silentSessionReminderSentinel_1.SILENT_SESSION_REMINDER_SENTINEL);
|
|
104
|
-
}
|
|
105
|
-
if (!Array.isArray(content)) {
|
|
106
|
-
return false;
|
|
107
|
-
}
|
|
108
|
-
const hasTextBlock = content.some((block) => isRecord(block) && block.type === 'text');
|
|
109
|
-
if (!hasTextBlock) {
|
|
110
|
-
return false;
|
|
111
|
-
}
|
|
112
|
-
return !extractText(content).includes(silentSessionReminderSentinel_1.SILENT_SESSION_REMINDER_SENTINEL);
|
|
113
|
-
};
|
|
114
|
-
const OWNER_CALL_TAG_TERMINATOR = '>';
|
|
115
|
-
const OWNER_CALL_CANDIDATE_TAG_INFIX = '-pending';
|
|
116
|
-
const OWNER_CALL_CANDIDATE_TAG_SUFFIX = `${OWNER_CALL_CANDIDATE_TAG_INFIX}${OWNER_CALL_TAG_TERMINATOR}`;
|
|
117
|
-
const ownerCallMarkerFamilyResolve = (marker) => marker.endsWith(OWNER_CALL_TAG_TERMINATOR)
|
|
118
|
-
? [
|
|
119
|
-
marker,
|
|
120
|
-
`${marker.slice(0, -OWNER_CALL_TAG_TERMINATOR.length)}${OWNER_CALL_CANDIDATE_TAG_SUFFIX}`,
|
|
121
|
-
]
|
|
122
|
-
: [marker];
|
|
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 SUPPRESSED_OWNER_CALL_MARKER_FILE_EXTENSION = '.suppress_ts';
|
|
155
|
-
const APPROVED_OWNER_CALL_MARKER_FILE_EXTENSION = '.call_ts';
|
|
156
|
-
const EMITTED_OWNER_CALL_MARKER_FILE_EXTENSION = '.call_emitted';
|
|
157
|
-
const UNSAFE_SESSION_ID_CHARACTER_PATTERN = /[^A-Za-z0-9._-]/g;
|
|
158
|
-
const isCandidateOwnerCallMarker = (marker) => marker.endsWith(OWNER_CALL_CANDIDATE_TAG_SUFFIX);
|
|
159
|
-
class TranscriptOwnerCallStatusProvider {
|
|
160
|
-
constructor(ownerCallMarker, ownerReplyMarkerDirectory = null) {
|
|
161
|
-
this.ownerReplyMarkerDirectory = ownerReplyMarkerDirectory;
|
|
162
|
-
this.transcriptScanByPath = new Map();
|
|
163
|
-
this.listUnansweredOwnerCallEpochSecondsBySessionName = async (transcriptPathBySessionName) => {
|
|
164
|
-
const unansweredOwnerCallEpochSecondsBySessionName = new Map();
|
|
165
|
-
if (this.ownerCallMarkerFamily.length === 0) {
|
|
166
|
-
return unansweredOwnerCallEpochSecondsBySessionName;
|
|
167
|
-
}
|
|
168
|
-
for (const [sessionName, transcriptPath] of transcriptPathBySessionName) {
|
|
169
|
-
const unansweredOwnerCallEpochMs = this.findUnansweredOwnerCallEpochMs(transcriptPath);
|
|
170
|
-
if (unansweredOwnerCallEpochMs !== null) {
|
|
171
|
-
unansweredOwnerCallEpochSecondsBySessionName.set(sessionName, Math.floor(unansweredOwnerCallEpochMs / 1000));
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
return unansweredOwnerCallEpochSecondsBySessionName;
|
|
175
|
-
};
|
|
176
|
-
this.scanTranscript = (transcriptPath) => {
|
|
177
|
-
const alreadyScanned = this.transcriptScanByPath.get(transcriptPath);
|
|
178
|
-
if (alreadyScanned !== undefined) {
|
|
179
|
-
return alreadyScanned;
|
|
180
|
-
}
|
|
181
|
-
const scan = this.readTranscriptScan(transcriptPath);
|
|
182
|
-
this.transcriptScanByPath.set(transcriptPath, scan);
|
|
183
|
-
return scan;
|
|
184
|
-
};
|
|
185
|
-
this.readTranscriptScan = (transcriptPath) => {
|
|
186
|
-
const markerFamily = this.ownerCallMarkerFamily;
|
|
187
|
-
let content;
|
|
188
|
-
try {
|
|
189
|
-
content = fs.readFileSync(transcriptPath, 'utf8');
|
|
190
|
-
}
|
|
191
|
-
catch {
|
|
192
|
-
return null;
|
|
193
|
-
}
|
|
194
|
-
const ownerCalls = [];
|
|
195
|
-
let lastOwnerReplyEpochMs = null;
|
|
196
|
-
for (const line of content.split('\n')) {
|
|
197
|
-
const trimmed = line.trim();
|
|
198
|
-
if (trimmed.length === 0) {
|
|
199
|
-
continue;
|
|
200
|
-
}
|
|
201
|
-
let parsed;
|
|
202
|
-
try {
|
|
203
|
-
parsed = JSON.parse(trimmed);
|
|
204
|
-
}
|
|
205
|
-
catch {
|
|
206
|
-
continue;
|
|
207
|
-
}
|
|
208
|
-
if (!isRecord(parsed)) {
|
|
209
|
-
continue;
|
|
210
|
-
}
|
|
211
|
-
const epochMs = parseEpochMilliseconds(readString(parsed, 'timestamp'));
|
|
212
|
-
if (epochMs === null) {
|
|
213
|
-
continue;
|
|
214
|
-
}
|
|
215
|
-
const type = readString(parsed, 'type');
|
|
216
|
-
const message = parsed.message;
|
|
217
|
-
const messageContent = isRecord(message) ? message.content : null;
|
|
218
|
-
if (type === 'assistant') {
|
|
219
|
-
const assistantText = extractText(messageContent);
|
|
220
|
-
const matchedMarkers = markerFamily.filter((marker) => assistantText.includes(marker));
|
|
221
|
-
if (matchedMarkers.length > 0) {
|
|
222
|
-
ownerCalls.push({
|
|
223
|
-
epochMs,
|
|
224
|
-
candidateOnly: matchedMarkers.every(isCandidateOwnerCallMarker),
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
if (type === 'user' &&
|
|
229
|
-
isGenuineHumanEntry(parsed) &&
|
|
230
|
-
hasOwnerTextReply(messageContent)) {
|
|
231
|
-
lastOwnerReplyEpochMs = epochMs;
|
|
232
|
-
}
|
|
233
|
-
if (type === 'queue-operation' && isOwnerEnqueuedReply(parsed)) {
|
|
234
|
-
lastOwnerReplyEpochMs =
|
|
235
|
-
lastOwnerReplyEpochMs === null || epochMs > lastOwnerReplyEpochMs
|
|
236
|
-
? epochMs
|
|
237
|
-
: lastOwnerReplyEpochMs;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
return { ownerCalls, lastOwnerReplyEpochMs };
|
|
241
|
-
};
|
|
242
|
-
this.resolveReplyEpochMs = (transcriptPath, lastOwnerReplyEpochMs) => {
|
|
243
|
-
const markerReplyEpochMs = this.readOwnerReplyMarkerEpochMs(transcriptPath);
|
|
244
|
-
return markerReplyEpochMs !== null &&
|
|
245
|
-
(lastOwnerReplyEpochMs === null ||
|
|
246
|
-
markerReplyEpochMs > lastOwnerReplyEpochMs)
|
|
247
|
-
? markerReplyEpochMs
|
|
248
|
-
: lastOwnerReplyEpochMs;
|
|
249
|
-
};
|
|
250
|
-
this.findUnansweredOwnerCallEpochMs = (transcriptPath) => {
|
|
251
|
-
const transcript = this.scanTranscript(transcriptPath);
|
|
252
|
-
if (transcript === null) {
|
|
253
|
-
return null;
|
|
254
|
-
}
|
|
255
|
-
const lastOwnerCall = transcript.ownerCalls[transcript.ownerCalls.length - 1] ?? null;
|
|
256
|
-
if (lastOwnerCall === null) {
|
|
257
|
-
return null;
|
|
258
|
-
}
|
|
259
|
-
const lastOwnerCallEpochMs = lastOwnerCall.epochMs;
|
|
260
|
-
if (this.isCallSuppressedUndelivered(transcriptPath, lastOwnerCallEpochMs)) {
|
|
261
|
-
return null;
|
|
262
|
-
}
|
|
263
|
-
if (lastOwnerCall.candidateOnly &&
|
|
264
|
-
!this.isCandidateCallDelivered(transcriptPath, lastOwnerCallEpochMs)) {
|
|
265
|
-
return null;
|
|
266
|
-
}
|
|
267
|
-
const resolvedReplyEpochMs = this.resolveReplyEpochMs(transcriptPath, transcript.lastOwnerReplyEpochMs);
|
|
268
|
-
return resolvedReplyEpochMs === null ||
|
|
269
|
-
lastOwnerCallEpochMs > resolvedReplyEpochMs
|
|
270
|
-
? lastOwnerCallEpochMs
|
|
271
|
-
: null;
|
|
272
|
-
};
|
|
273
|
-
// The owner sees only the status line, so the reply time it renders is the value the owner
|
|
274
|
-
// believes the fleet is acting on. The status line writes that value to a per-session marker
|
|
275
|
-
// file, and reading it here keeps this decision and the owner's own view of it from diverging.
|
|
276
|
-
// The transcript-derived value still stands on its own: an absent, unreadable, or older marker
|
|
277
|
-
// changes nothing, so a fresh host with no markers yet behaves exactly as before.
|
|
278
|
-
this.readOwnerReplyMarkerEpochMs = (transcriptPath) => this.readMarkerEpochMs(transcriptPath, OWNER_REPLY_MARKER_FILE_EXTENSION);
|
|
279
|
-
this.isCallSuppressedUndelivered = (transcriptPath, ownerCallEpochMs) => {
|
|
280
|
-
const suppressedEpochMs = this.readMarkerEpochMs(transcriptPath, SUPPRESSED_OWNER_CALL_MARKER_FILE_EXTENSION);
|
|
281
|
-
if (suppressedEpochMs === null || suppressedEpochMs !== ownerCallEpochMs) {
|
|
282
|
-
return false;
|
|
283
|
-
}
|
|
284
|
-
const approvedEpochMs = this.readMarkerEpochMs(transcriptPath, APPROVED_OWNER_CALL_MARKER_FILE_EXTENSION);
|
|
285
|
-
return approvedEpochMs !== suppressedEpochMs;
|
|
286
|
-
};
|
|
287
|
-
this.isCandidateCallDelivered = (transcriptPath, ownerCallEpochMs) => {
|
|
288
|
-
if (this.ownerReplyMarkerDirectory === null) {
|
|
289
|
-
return true;
|
|
290
|
-
}
|
|
291
|
-
const emittedEpochMs = this.readMarkerEpochMs(transcriptPath, EMITTED_OWNER_CALL_MARKER_FILE_EXTENSION);
|
|
292
|
-
if (emittedEpochMs === ownerCallEpochMs) {
|
|
293
|
-
return true;
|
|
294
|
-
}
|
|
295
|
-
return (this.readMarkerEpochMs(transcriptPath, APPROVED_OWNER_CALL_MARKER_FILE_EXTENSION) === ownerCallEpochMs);
|
|
296
|
-
};
|
|
297
|
-
this.readMarkerEpochMs = (transcriptPath, markerFileExtension) => {
|
|
298
|
-
if (this.ownerReplyMarkerDirectory === null) {
|
|
299
|
-
return null;
|
|
300
|
-
}
|
|
301
|
-
const fileName = path.basename(transcriptPath);
|
|
302
|
-
const sessionId = fileName.endsWith(TRANSCRIPT_FILE_EXTENSION)
|
|
303
|
-
? fileName.slice(0, -TRANSCRIPT_FILE_EXTENSION.length)
|
|
304
|
-
: fileName;
|
|
305
|
-
const safeSessionId = sessionId.replace(UNSAFE_SESSION_ID_CHARACTER_PATTERN, '_');
|
|
306
|
-
let markerContent;
|
|
307
|
-
try {
|
|
308
|
-
markerContent = fs.readFileSync(path.join(this.ownerReplyMarkerDirectory, `${safeSessionId}${markerFileExtension}`), 'utf8');
|
|
309
|
-
}
|
|
310
|
-
catch {
|
|
311
|
-
return null;
|
|
312
|
-
}
|
|
313
|
-
return parseEpochMilliseconds(markerContent.split('\n')[0].trim());
|
|
314
|
-
};
|
|
315
|
-
this.ownerCallMarkerFamily =
|
|
316
|
-
ownerCallMarker === null || ownerCallMarker.length === 0
|
|
317
|
-
? []
|
|
318
|
-
: (0, exports.ownerCallMarkerFamilyResolve)(ownerCallMarker);
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
exports.TranscriptOwnerCallStatusProvider = TranscriptOwnerCallStatusProvider;
|
|
322
|
-
//# sourceMappingURL=TranscriptOwnerCallStatusProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TranscriptOwnerCallStatusProvider.js","sourceRoot":"","sources":["../../../src/adapter/repositories/TranscriptOwnerCallStatusProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LiveSessionOutputActivity.js","sourceRoot":"","sources":["../../../src/domain/entities/LiveSessionOutputActivity.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OwnerCallStatusProvider.js","sourceRoot":"","sources":["../../../../src/domain/usecases/adapter-interfaces/OwnerCallStatusProvider.ts"],"names":[],"mappings":""}
|