dev-sessions 0.2.1 → 0.2.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/README.md +124 -77
- package/dist/backends/backend.d.ts +42 -0
- package/dist/backends/backend.js +3 -0
- package/dist/backends/backend.js.map +1 -0
- package/dist/backends/claude-backend.d.ts +22 -0
- package/dist/backends/claude-backend.js +161 -0
- package/dist/backends/claude-backend.js.map +1 -0
- package/dist/backends/claude-tmux.d.ts +1 -3
- package/dist/backends/claude-tmux.js +15 -24
- package/dist/backends/claude-tmux.js.map +1 -1
- package/dist/backends/codex-appserver.d.ts +46 -6
- package/dist/backends/codex-appserver.js +299 -130
- package/dist/backends/codex-appserver.js.map +1 -1
- package/dist/backends/codex-backend.d.ts +21 -0
- package/dist/backends/codex-backend.js +224 -0
- package/dist/backends/codex-backend.js.map +1 -0
- package/dist/cli.d.ts +3 -1
- package/dist/cli.js +31 -3
- package/dist/cli.js.map +1 -1
- package/dist/gateway/client.d.ts +3 -1
- package/dist/gateway/client.js +24 -2
- package/dist/gateway/client.js.map +1 -1
- package/dist/gateway/server.js +45 -2
- package/dist/gateway/server.js.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/session-manager.d.ts +7 -9
- package/dist/session-manager.js +122 -367
- package/dist/session-manager.js.map +1 -1
- package/dist/session-store.js +16 -4
- package/dist/session-store.js.map +1 -1
- package/dist/transcript/claude-parser.d.ts +1 -0
- package/dist/transcript/claude-parser.js +4 -0
- package/dist/transcript/claude-parser.js.map +1 -1
- package/dist/types.d.ts +6 -1
- package/package.json +1 -1
- package/skills/delegate/SKILL.md +77 -0
- package/skills/dev-sessions/SKILL.md +5 -13
package/dist/session-manager.js
CHANGED
|
@@ -6,391 +6,163 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.SessionManager = void 0;
|
|
7
7
|
exports.shouldUseGatewaySessionManager = shouldUseGatewaySessionManager;
|
|
8
8
|
exports.createDefaultSessionManager = createDefaultSessionManager;
|
|
9
|
-
const node_crypto_1 = require("node:crypto");
|
|
10
|
-
const promises_1 = require("node:fs/promises");
|
|
11
9
|
const node_path_1 = __importDefault(require("node:path"));
|
|
12
10
|
const champion_ids_1 = require("./champion-ids");
|
|
11
|
+
const claude_backend_1 = require("./backends/claude-backend");
|
|
13
12
|
const claude_tmux_1 = require("./backends/claude-tmux");
|
|
13
|
+
const codex_backend_1 = require("./backends/codex-backend");
|
|
14
14
|
const codex_appserver_1 = require("./backends/codex-appserver");
|
|
15
15
|
const client_1 = require("./gateway/client");
|
|
16
16
|
const session_store_1 = require("./session-store");
|
|
17
|
-
const claude_parser_1 = require("./transcript/claude-parser");
|
|
18
17
|
class SessionManager {
|
|
19
18
|
store;
|
|
20
|
-
|
|
21
|
-
codexBackend
|
|
22
|
-
constructor(store, claudeBackend, codexBackend = new codex_appserver_1.CodexAppServerBackend()) {
|
|
19
|
+
backends;
|
|
20
|
+
constructor(store, claudeBackend, codexBackend) {
|
|
23
21
|
this.store = store;
|
|
24
|
-
this.
|
|
25
|
-
|
|
22
|
+
this.backends = new Map([
|
|
23
|
+
['claude', claudeBackend],
|
|
24
|
+
['codex', codexBackend]
|
|
25
|
+
]);
|
|
26
|
+
}
|
|
27
|
+
getBackend(cli) {
|
|
28
|
+
const backend = this.backends.get(cli);
|
|
29
|
+
if (!backend) {
|
|
30
|
+
throw new Error(`No backend registered for cli: ${cli}`);
|
|
31
|
+
}
|
|
32
|
+
return backend;
|
|
26
33
|
}
|
|
27
34
|
async createSession(options) {
|
|
28
35
|
const workspacePath = node_path_1.default.resolve(options.path ?? process.cwd());
|
|
29
36
|
const cli = options.cli ?? 'claude';
|
|
37
|
+
const backend = this.getBackend(cli);
|
|
30
38
|
const championId = await this.findAvailableChampionId();
|
|
31
39
|
const timestamp = new Date().toISOString();
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const tmuxSessionName = (0, champion_ids_1.toTmuxSessionName)(championId);
|
|
56
|
-
const internalId = (0, node_crypto_1.randomUUID)();
|
|
57
|
-
await this.claudeBackend.createSession(tmuxSessionName, workspacePath, mode, internalId);
|
|
58
|
-
session = {
|
|
59
|
-
championId,
|
|
60
|
-
internalId,
|
|
61
|
-
cli: 'claude',
|
|
62
|
-
mode,
|
|
63
|
-
path: workspacePath,
|
|
64
|
-
description: options.description,
|
|
65
|
-
status: 'active',
|
|
66
|
-
createdAt: timestamp,
|
|
67
|
-
lastUsed: timestamp
|
|
68
|
-
};
|
|
69
|
-
}
|
|
40
|
+
const result = await backend.create({
|
|
41
|
+
championId,
|
|
42
|
+
workspacePath,
|
|
43
|
+
description: options.description,
|
|
44
|
+
mode: options.mode,
|
|
45
|
+
model: options.model
|
|
46
|
+
});
|
|
47
|
+
const session = {
|
|
48
|
+
championId,
|
|
49
|
+
internalId: result.internalId,
|
|
50
|
+
cli,
|
|
51
|
+
mode: result.mode,
|
|
52
|
+
path: workspacePath,
|
|
53
|
+
description: options.description,
|
|
54
|
+
status: 'active',
|
|
55
|
+
appServerPid: result.appServerPid,
|
|
56
|
+
appServerPort: result.appServerPort,
|
|
57
|
+
model: result.model,
|
|
58
|
+
codexTurnInProgress: result.codexTurnInProgress,
|
|
59
|
+
lastAssistantMessages: result.lastAssistantMessages,
|
|
60
|
+
createdAt: timestamp,
|
|
61
|
+
lastUsed: timestamp
|
|
62
|
+
};
|
|
70
63
|
await this.store.upsertSession(session);
|
|
71
64
|
return session;
|
|
72
65
|
}
|
|
73
66
|
async sendMessage(championId, message) {
|
|
74
67
|
const session = await this.requireSession(championId);
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
});
|
|
91
|
-
let sendResult;
|
|
92
|
-
try {
|
|
93
|
-
sendResult = await this.codexBackend.sendMessage(latestSession.championId, latestSession.internalId, message, {
|
|
94
|
-
workspacePath: latestSession.path,
|
|
95
|
-
model: latestSession.model
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
catch (error) {
|
|
99
|
-
if (error instanceof Error) {
|
|
100
|
-
const latestSession = await this.store.getSession(championId);
|
|
101
|
-
if (latestSession?.cli === 'codex' && latestSession.codexTurnInProgress === true) {
|
|
102
|
-
await this.store.updateSession(championId, {
|
|
103
|
-
codexTurnInProgress: false,
|
|
104
|
-
lastTurnStatus: 'failed',
|
|
105
|
-
lastTurnError: error.message,
|
|
106
|
-
lastUsed: new Date().toISOString()
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
throw error;
|
|
111
|
-
}
|
|
112
|
-
const nextAssistantMessages = sendResult.assistantMessage.length > 0
|
|
113
|
-
? [...(latestSession.lastAssistantMessages ?? []), sendResult.assistantMessage]
|
|
114
|
-
: [...(latestSession.lastAssistantMessages ?? [])];
|
|
115
|
-
const completionTime = new Date().toISOString();
|
|
116
|
-
const turnStillInProgress = sendResult.timedOut;
|
|
117
|
-
await this.store.updateSession(championId, {
|
|
118
|
-
internalId: sendResult.threadId,
|
|
119
|
-
appServerPid: sendResult.appServerPid,
|
|
120
|
-
appServerPort: sendResult.appServerPort,
|
|
121
|
-
lastUsed: completionTime,
|
|
122
|
-
status: 'active',
|
|
123
|
-
codexTurnInProgress: turnStillInProgress,
|
|
124
|
-
codexLastCompletedAt: turnStillInProgress ? latestSession.codexLastCompletedAt : completionTime,
|
|
125
|
-
lastTurnStatus: sendResult.status,
|
|
126
|
-
lastTurnError: sendResult.errorMessage,
|
|
127
|
-
lastAssistantMessages: nextAssistantMessages
|
|
128
|
-
});
|
|
129
|
-
if (sendResult.timedOut || sendResult.status === 'interrupted') {
|
|
130
|
-
throw new Error(sendResult.errorMessage ?? `Codex turn timed out for ${championId}`);
|
|
131
|
-
}
|
|
132
|
-
if (sendResult.status === 'failed') {
|
|
133
|
-
const messageText = sendResult.errorMessage
|
|
134
|
-
? `Codex turn failed: ${sendResult.errorMessage}`
|
|
135
|
-
: 'Codex turn failed';
|
|
136
|
-
throw new Error(messageText);
|
|
68
|
+
const backend = this.getBackend(session.cli);
|
|
69
|
+
const sendTime = new Date().toISOString();
|
|
70
|
+
const preSendFields = backend.preSendStoreFields(session, sendTime);
|
|
71
|
+
if (Object.keys(preSendFields).length > 0) {
|
|
72
|
+
await this.store.updateSession(championId, preSendFields);
|
|
73
|
+
}
|
|
74
|
+
let postSendFields;
|
|
75
|
+
try {
|
|
76
|
+
postSendFields = await backend.send(session, message);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
80
|
+
const errorFields = backend.onSendError(session, err);
|
|
81
|
+
if (Object.keys(errorFields).length > 0) {
|
|
82
|
+
await this.store.updateSession(championId, errorFields);
|
|
137
83
|
}
|
|
138
|
-
|
|
84
|
+
throw error;
|
|
85
|
+
}
|
|
86
|
+
if (Object.keys(postSendFields).length > 0) {
|
|
87
|
+
await this.store.updateSession(championId, postSendFields);
|
|
139
88
|
}
|
|
140
|
-
const tmuxSessionName = (0, champion_ids_1.toTmuxSessionName)(session.championId);
|
|
141
|
-
const sendTime = new Date().toISOString();
|
|
142
|
-
await this.claudeBackend.sendMessage(tmuxSessionName, message);
|
|
143
|
-
await this.store.updateSession(championId, {
|
|
144
|
-
lastUsed: sendTime,
|
|
145
|
-
status: 'active',
|
|
146
|
-
lastTurnStatus: undefined,
|
|
147
|
-
lastTurnError: undefined
|
|
148
|
-
});
|
|
149
89
|
}
|
|
150
90
|
async killSession(championId) {
|
|
151
91
|
const session = await this.requireSession(championId);
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
const tmuxSessionName = (0, champion_ids_1.toTmuxSessionName)(session.championId);
|
|
157
|
-
try {
|
|
158
|
-
await this.claudeBackend.killSession(tmuxSessionName);
|
|
159
|
-
}
|
|
160
|
-
catch (error) {
|
|
161
|
-
if (!(error instanceof Error) ||
|
|
162
|
-
!/failed to connect server|no server running|can't find session/i.test(error.message)) {
|
|
163
|
-
throw error;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
92
|
+
const backend = this.getBackend(session.cli);
|
|
93
|
+
await backend.kill(session);
|
|
167
94
|
await this.store.deleteSession(championId);
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
95
|
+
const remainingActive = (await this.store.listSessions()).filter((s) => s.status === 'active');
|
|
96
|
+
await backend.afterKill(remainingActive);
|
|
171
97
|
}
|
|
172
98
|
async listSessions() {
|
|
173
99
|
const sessions = (await this.store.listSessions()).filter((session) => session.status === 'active');
|
|
174
|
-
const livenessChecks = await Promise.all(sessions.map(async (session) =>
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
.
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
}));
|
|
100
|
+
const livenessChecks = await Promise.all(sessions.map(async (session) => {
|
|
101
|
+
const backend = this.getBackend(session.cli);
|
|
102
|
+
const liveness = await backend.exists(session);
|
|
103
|
+
return { championId: session.championId, cli: session.cli, liveness };
|
|
104
|
+
}));
|
|
105
|
+
for (const check of livenessChecks) {
|
|
106
|
+
if (check.liveness === 'unknown') {
|
|
107
|
+
console.warn(`[dev-sessions] tmux returned an unexpected error for session ${check.championId}; keeping session record`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
const deadSessions = sessions.filter((session) => livenessChecks.some((check) => check.championId === session.championId && check.liveness === 'dead'));
|
|
111
|
+
const deadDeactivateIds = deadSessions
|
|
112
|
+
.filter((s) => this.getBackend(s.cli).deadSessionPolicy === 'deactivate')
|
|
113
|
+
.map((s) => s.championId);
|
|
114
|
+
const deadPruneIds = deadSessions
|
|
115
|
+
.filter((s) => this.getBackend(s.cli).deadSessionPolicy === 'prune')
|
|
116
|
+
.map((s) => s.championId);
|
|
117
|
+
if (deadDeactivateIds.length > 0) {
|
|
118
|
+
await Promise.all(deadDeactivateIds.map((id) => this.store.updateSession(id, { status: 'inactive', codexTurnInProgress: false })));
|
|
194
119
|
}
|
|
195
|
-
if (
|
|
196
|
-
await this.store.pruneSessions(
|
|
120
|
+
if (deadPruneIds.length > 0) {
|
|
121
|
+
await this.store.pruneSessions(deadPruneIds);
|
|
197
122
|
}
|
|
198
123
|
return (await this.store.listSessions()).filter((session) => session.status === 'active');
|
|
199
124
|
}
|
|
200
125
|
async getLastAssistantTextBlocks(championId, count) {
|
|
201
126
|
const session = await this.requireSession(championId);
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
const sessionMessages = session.lastAssistantMessages ?? [];
|
|
205
|
-
if (sessionMessages.length > 0) {
|
|
206
|
-
return sessionMessages.slice(-safeCount);
|
|
207
|
-
}
|
|
208
|
-
return await this.codexBackend.getLastAssistantMessages(championId, session.internalId, safeCount);
|
|
209
|
-
}
|
|
210
|
-
const transcriptPath = (0, claude_parser_1.getClaudeTranscriptPath)(session.path, session.internalId);
|
|
211
|
-
const transcriptEntries = await (0, claude_parser_1.readClaudeTranscript)(transcriptPath);
|
|
212
|
-
const blocks = (0, claude_parser_1.getAssistantTextBlocks)(transcriptEntries);
|
|
213
|
-
return blocks.slice(-Math.max(1, count));
|
|
127
|
+
const backend = this.getBackend(session.cli);
|
|
128
|
+
return backend.getLastMessages(session, count);
|
|
214
129
|
}
|
|
215
130
|
async getSessionStatus(championId) {
|
|
216
131
|
const session = await this.requireSession(championId);
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
try {
|
|
225
|
-
liveStatus = await this.codexBackend.getThreadRuntimeStatus(session.internalId);
|
|
226
|
-
}
|
|
227
|
-
catch {
|
|
228
|
-
liveStatus = 'unknown';
|
|
229
|
-
}
|
|
230
|
-
if (liveStatus === 'active') {
|
|
231
|
-
return 'working';
|
|
232
|
-
}
|
|
233
|
-
if (liveStatus === 'idle' || liveStatus === 'notLoaded') {
|
|
234
|
-
await this.store.updateSession(championId, { lastTurnStatus: 'completed', lastTurnError: undefined });
|
|
235
|
-
return 'idle';
|
|
236
|
-
}
|
|
237
|
-
// Truly failed, unknown, or couldn't connect — report cached error
|
|
238
|
-
const suffix = session.lastTurnError ? `: ${session.lastTurnError}` : '';
|
|
239
|
-
throw new Error(`Codex turn failed${suffix}`);
|
|
240
|
-
}
|
|
241
|
-
return 'idle';
|
|
132
|
+
const backend = this.getBackend(session.cli);
|
|
133
|
+
const result = await backend.status(session);
|
|
134
|
+
if (result.storeUpdate && Object.keys(result.storeUpdate).length > 0) {
|
|
135
|
+
await this.store.updateSession(championId, result.storeUpdate);
|
|
136
|
+
}
|
|
137
|
+
if (result.errorToThrow) {
|
|
138
|
+
throw result.errorToThrow;
|
|
242
139
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
140
|
+
return result.status;
|
|
141
|
+
}
|
|
142
|
+
async getSessionLogs(championId) {
|
|
143
|
+
const session = await this.requireSession(championId);
|
|
144
|
+
const backend = this.getBackend(session.cli);
|
|
145
|
+
return backend.getLogs(session);
|
|
146
|
+
}
|
|
147
|
+
async inspectSession(championId) {
|
|
148
|
+
return this.requireSession(championId);
|
|
246
149
|
}
|
|
247
150
|
async waitForSession(championId, options = {}) {
|
|
248
151
|
const session = await this.requireSession(championId);
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
liveStatus = await this.codexBackend.getThreadRuntimeStatus(session.internalId);
|
|
256
|
-
}
|
|
257
|
-
catch {
|
|
258
|
-
liveStatus = 'unknown';
|
|
259
|
-
}
|
|
260
|
-
if (liveStatus === 'idle' || liveStatus === 'notLoaded') {
|
|
261
|
-
await this.store.updateSession(championId, { lastTurnStatus: 'completed', lastTurnError: undefined });
|
|
262
|
-
return { completed: true, timedOut: false, elapsedMs: 0 };
|
|
263
|
-
}
|
|
264
|
-
if (liveStatus !== 'active') {
|
|
265
|
-
// Couldn't determine live status or truly failed — report cached error
|
|
266
|
-
const message = session.lastTurnError
|
|
267
|
-
? `Codex turn failed: ${session.lastTurnError}`
|
|
268
|
-
: 'Codex turn failed';
|
|
269
|
-
throw new Error(message);
|
|
270
|
-
}
|
|
271
|
-
// Thread is active — fall through to waitForThread below
|
|
272
|
-
}
|
|
273
|
-
await this.store.updateSession(championId, {
|
|
274
|
-
lastUsed: new Date().toISOString()
|
|
275
|
-
});
|
|
276
|
-
if (!session.codexTurnInProgress) {
|
|
277
|
-
if (session.lastTurnStatus === 'interrupted') {
|
|
278
|
-
return {
|
|
279
|
-
completed: false,
|
|
280
|
-
timedOut: true,
|
|
281
|
-
elapsedMs: timeoutMs
|
|
282
|
-
};
|
|
283
|
-
}
|
|
284
|
-
return {
|
|
285
|
-
completed: true,
|
|
286
|
-
timedOut: false,
|
|
287
|
-
elapsedMs: 0
|
|
288
|
-
};
|
|
289
|
-
}
|
|
290
|
-
let waitResult;
|
|
291
|
-
try {
|
|
292
|
-
waitResult = await this.codexBackend.waitForThread(championId, session.internalId, timeoutMs);
|
|
293
|
-
}
|
|
294
|
-
catch (error) {
|
|
295
|
-
if (error instanceof Error) {
|
|
296
|
-
const latestSession = await this.store.getSession(championId);
|
|
297
|
-
if (latestSession?.cli === 'codex' && latestSession.codexTurnInProgress === true) {
|
|
298
|
-
await this.store.updateSession(championId, {
|
|
299
|
-
codexTurnInProgress: false,
|
|
300
|
-
lastTurnStatus: 'failed',
|
|
301
|
-
lastTurnError: error.message,
|
|
302
|
-
lastUsed: new Date().toISOString()
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
throw error;
|
|
307
|
-
}
|
|
308
|
-
const completionTime = new Date().toISOString();
|
|
309
|
-
const turnStillInProgress = waitResult.timedOut;
|
|
310
|
-
await this.store.updateSession(championId, {
|
|
311
|
-
lastUsed: completionTime,
|
|
312
|
-
codexTurnInProgress: turnStillInProgress,
|
|
313
|
-
codexLastCompletedAt: turnStillInProgress ? session.codexLastCompletedAt : completionTime,
|
|
314
|
-
lastTurnStatus: waitResult.status,
|
|
315
|
-
lastTurnError: waitResult.errorMessage
|
|
316
|
-
});
|
|
317
|
-
if (waitResult.status === 'failed') {
|
|
318
|
-
const message = waitResult.errorMessage ? `Codex turn failed: ${waitResult.errorMessage}` : 'Codex turn failed';
|
|
319
|
-
throw new Error(message);
|
|
320
|
-
}
|
|
321
|
-
return {
|
|
322
|
-
completed: !waitResult.timedOut && waitResult.status !== 'interrupted',
|
|
323
|
-
timedOut: waitResult.timedOut || waitResult.status === 'interrupted',
|
|
324
|
-
elapsedMs: waitResult.elapsedMs
|
|
325
|
-
};
|
|
152
|
+
const backend = this.getBackend(session.cli);
|
|
153
|
+
const timeoutMs = Math.max(0.05, options.timeoutSeconds ?? 300) * 1000;
|
|
154
|
+
const intervalMs = Math.max(0.05, options.intervalSeconds ?? 2) * 1000;
|
|
155
|
+
const result = await backend.wait(session, timeoutMs, intervalMs);
|
|
156
|
+
if (Object.keys(result.storeUpdate).length > 0) {
|
|
157
|
+
await this.store.updateSession(championId, result.storeUpdate);
|
|
326
158
|
}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
const intervalMs = Math.max(1, options.intervalSeconds ?? 2) * 1000;
|
|
330
|
-
const startTime = Date.now();
|
|
331
|
-
const deadline = startTime + timeoutMs;
|
|
332
|
-
const latestSendMs = Date.parse(session.lastUsed);
|
|
333
|
-
const initialEntries = await (0, claude_parser_1.readClaudeTranscript)(transcriptPath);
|
|
334
|
-
const baselineAssistantCount = (0, claude_parser_1.countAssistantMessages)(initialEntries);
|
|
335
|
-
const baselineSystemCount = (0, claude_parser_1.countSystemEntries)(initialEntries);
|
|
336
|
-
let lastMtimeMs = -1;
|
|
337
|
-
let shouldReadTranscript = false;
|
|
338
|
-
let cachedEntries = initialEntries;
|
|
339
|
-
while (Date.now() <= deadline) {
|
|
340
|
-
try {
|
|
341
|
-
const fileStat = await (0, promises_1.stat)(transcriptPath);
|
|
342
|
-
if (fileStat.mtimeMs !== lastMtimeMs) {
|
|
343
|
-
lastMtimeMs = fileStat.mtimeMs;
|
|
344
|
-
shouldReadTranscript = true;
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
catch (error) {
|
|
348
|
-
if (error.code !== 'ENOENT') {
|
|
349
|
-
throw error;
|
|
350
|
-
}
|
|
351
|
-
shouldReadTranscript = true;
|
|
352
|
-
cachedEntries = [];
|
|
353
|
-
}
|
|
354
|
-
if (shouldReadTranscript) {
|
|
355
|
-
cachedEntries = await (0, claude_parser_1.readClaudeTranscript)(transcriptPath);
|
|
356
|
-
shouldReadTranscript = false;
|
|
357
|
-
}
|
|
358
|
-
const status = (0, claude_parser_1.inferTranscriptStatus)(cachedEntries);
|
|
359
|
-
const hasNewSystemEntry = (0, claude_parser_1.countSystemEntries)(cachedEntries) > baselineSystemCount;
|
|
360
|
-
const hasNewAssistant = (0, claude_parser_1.countAssistantMessages)(cachedEntries) > baselineAssistantCount;
|
|
361
|
-
const hasRecentAssistant = this.hasAssistantResponseAtOrAfter(cachedEntries, latestSendMs);
|
|
362
|
-
// Primary signal: a new 'system' entry marks the definitive end of a Claude Code turn.
|
|
363
|
-
// This avoids false positives from intermediate tool_use assistant entries.
|
|
364
|
-
if (hasNewSystemEntry && (hasNewAssistant || hasRecentAssistant)) {
|
|
365
|
-
await this.store.updateSession(championId, {
|
|
366
|
-
lastUsed: new Date().toISOString()
|
|
367
|
-
});
|
|
368
|
-
return {
|
|
369
|
-
completed: true,
|
|
370
|
-
timedOut: false,
|
|
371
|
-
elapsedMs: Date.now() - startTime
|
|
372
|
-
};
|
|
373
|
-
}
|
|
374
|
-
// Fallback: if inferTranscriptStatus reports idle/waiting and we have new assistant
|
|
375
|
-
// entries, the turn is complete. This handles transcripts that may not have system entries.
|
|
376
|
-
if ((status === 'idle' || status === 'waiting_for_input') &&
|
|
377
|
-
(0, claude_parser_1.hasAssistantResponseAfterLatestUser)(cachedEntries) &&
|
|
378
|
-
(hasNewAssistant || hasRecentAssistant)) {
|
|
379
|
-
await this.store.updateSession(championId, {
|
|
380
|
-
lastUsed: new Date().toISOString()
|
|
381
|
-
});
|
|
382
|
-
return {
|
|
383
|
-
completed: true,
|
|
384
|
-
timedOut: false,
|
|
385
|
-
elapsedMs: Date.now() - startTime
|
|
386
|
-
};
|
|
387
|
-
}
|
|
388
|
-
await this.sleep(intervalMs);
|
|
159
|
+
if (result.errorToThrow) {
|
|
160
|
+
throw result.errorToThrow;
|
|
389
161
|
}
|
|
390
162
|
return {
|
|
391
|
-
completed:
|
|
392
|
-
timedOut:
|
|
393
|
-
elapsedMs:
|
|
163
|
+
completed: result.completed,
|
|
164
|
+
timedOut: result.timedOut,
|
|
165
|
+
elapsedMs: result.elapsedMs
|
|
394
166
|
};
|
|
395
167
|
}
|
|
396
168
|
async requireSession(championId) {
|
|
@@ -401,43 +173,26 @@ class SessionManager {
|
|
|
401
173
|
return session;
|
|
402
174
|
}
|
|
403
175
|
async findAvailableChampionId(maxAttempts = 250) {
|
|
176
|
+
const allBackends = [...this.backends.values()];
|
|
404
177
|
for (let attempt = 0; attempt < maxAttempts; attempt += 1) {
|
|
405
178
|
const candidate = (0, champion_ids_1.generateChampionId)();
|
|
406
179
|
if (await this.store.getSession(candidate)) {
|
|
407
180
|
continue;
|
|
408
181
|
}
|
|
409
|
-
|
|
182
|
+
let taken = false;
|
|
183
|
+
for (const b of allBackends) {
|
|
184
|
+
if (await b.isChampionIdTaken(candidate)) {
|
|
185
|
+
taken = true;
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (taken) {
|
|
410
190
|
continue;
|
|
411
191
|
}
|
|
412
192
|
return candidate;
|
|
413
193
|
}
|
|
414
194
|
throw new Error('Unable to allocate a unique champion ID');
|
|
415
195
|
}
|
|
416
|
-
async sleep(ms) {
|
|
417
|
-
await new Promise((resolve) => {
|
|
418
|
-
setTimeout(resolve, ms);
|
|
419
|
-
});
|
|
420
|
-
}
|
|
421
|
-
async hasActiveCodexSessions() {
|
|
422
|
-
const sessions = await this.store.listSessions();
|
|
423
|
-
return sessions.some((session) => session.status === 'active' && session.cli === 'codex');
|
|
424
|
-
}
|
|
425
|
-
hasAssistantResponseAtOrAfter(entries, thresholdMs) {
|
|
426
|
-
if (!Number.isFinite(thresholdMs)) {
|
|
427
|
-
return false;
|
|
428
|
-
}
|
|
429
|
-
return entries.some((entry) => {
|
|
430
|
-
if (entry.type?.toLowerCase() !== 'assistant') {
|
|
431
|
-
return false;
|
|
432
|
-
}
|
|
433
|
-
const timestamp = entry.timestamp;
|
|
434
|
-
if (typeof timestamp !== 'string') {
|
|
435
|
-
return false;
|
|
436
|
-
}
|
|
437
|
-
const parsed = Date.parse(timestamp);
|
|
438
|
-
return !Number.isNaN(parsed) && parsed >= thresholdMs;
|
|
439
|
-
});
|
|
440
|
-
}
|
|
441
196
|
}
|
|
442
197
|
exports.SessionManager = SessionManager;
|
|
443
198
|
function shouldUseGatewaySessionManager(env = process.env) {
|
|
@@ -449,6 +204,6 @@ function createDefaultSessionManager(env = process.env) {
|
|
|
449
204
|
baseUrl: (0, client_1.resolveGatewayBaseUrl)(env)
|
|
450
205
|
});
|
|
451
206
|
}
|
|
452
|
-
return new SessionManager((0, session_store_1.createDefaultSessionStore)(), new claude_tmux_1.ClaudeTmuxBackend(), new codex_appserver_1.CodexAppServerBackend());
|
|
207
|
+
return new SessionManager((0, session_store_1.createDefaultSessionStore)(), new claude_backend_1.ClaudeBackend(new claude_tmux_1.ClaudeTmuxBackend()), new codex_backend_1.CodexBackend(new codex_appserver_1.CodexAppServerBackend()));
|
|
453
208
|
}
|
|
454
209
|
//# sourceMappingURL=session-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"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"}
|