@amalgm/chat 0.2.9-preview.35320975700 → 0.2.9-preview.35480111675
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/AGENTS.md +7 -6
- package/PURPOSE.md +21 -9
- package/dist/api/conversations.d.ts +5 -19
- package/dist/api/conversations.d.ts.map +1 -1
- package/dist/api/conversations.js +3 -23
- package/dist/api/conversations.js.map +1 -1
- package/dist/api/index.d.ts +1 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js.map +1 -1
- package/dist/conversations/types.d.ts +2 -0
- package/dist/conversations/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/sessions/chat.d.ts +14 -0
- package/dist/sessions/chat.d.ts.map +1 -1
- package/dist/sessions/chat.js +223 -112
- package/dist/sessions/chat.js.map +1 -1
- package/dist/sessions/contracts.d.ts +13 -5
- package/dist/sessions/contracts.d.ts.map +1 -1
- package/dist/sessions/errors.d.ts +4 -4
- package/dist/sessions/errors.d.ts.map +1 -1
- package/dist/sessions/errors.js +7 -7
- package/dist/sessions/errors.js.map +1 -1
- package/dist/sessions/index.d.ts +2 -2
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +1 -1
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/queue.d.ts +2 -0
- package/dist/sessions/queue.d.ts.map +1 -1
- package/dist/sessions/queue.js +6 -2
- package/dist/sessions/queue.js.map +1 -1
- package/docs/contracts/queued-input.md +10 -7
- package/host/auth.js +26 -3
- package/host/http.js +10 -25
- package/host/index.d.ts +6 -0
- package/host/index.js +1 -0
- package/host/sqlite/index.js +1 -1
- package/host/sqlite/rows.js +1 -0
- package/package.json +4 -4
- package/skills/chat/SKILL.md +1 -4
package/dist/sessions/chat.js
CHANGED
|
@@ -9,7 +9,7 @@ import { ChatTurnStream } from './streams.js';
|
|
|
9
9
|
import { RuntimePump } from './pump.js';
|
|
10
10
|
import { TurnSubscriptions } from './subscriptions.js';
|
|
11
11
|
import { nonEmpty, cleanTitle, cleanCursor, errorRecord } from './values.js';
|
|
12
|
-
import { SessionNotFoundError, SessionBusyError,
|
|
12
|
+
import { ChatClosedError, SessionNotFoundError, SessionBusyError, TurnStreamError, StopUnsupportedError } from './errors.js';
|
|
13
13
|
export { ChatSession } from './session.js';
|
|
14
14
|
export { ChatTurnStream } from './streams.js';
|
|
15
15
|
export * from './errors.js';
|
|
@@ -25,13 +25,24 @@ export class Chat {
|
|
|
25
25
|
#journalBatch;
|
|
26
26
|
#sessions = new Map();
|
|
27
27
|
#sessionAdmissions = new Map();
|
|
28
|
+
/** Concurrent controls share one result even if the turn seals during admission. */
|
|
29
|
+
#stops = new Map();
|
|
30
|
+
/** Sends past validation that have not landed or failed yet, each with its conversation: work this process owns. */
|
|
31
|
+
#sends = new Map();
|
|
32
|
+
/** Conversations this process created whose provider session has not started yet. */
|
|
33
|
+
#unstarted = new Set();
|
|
34
|
+
/** One provider attachment per conversation at a time; concurrent callers share it. */
|
|
35
|
+
#attachments = new Map();
|
|
28
36
|
#queue = new ConversationQueue();
|
|
37
|
+
/** Queued turns this process owns, each with the exact execution it will run. */
|
|
29
38
|
#queuedExecutions = new Map();
|
|
30
39
|
#completions = new Map();
|
|
31
40
|
#recoveries = new Map();
|
|
32
41
|
#turns = new Map();
|
|
33
42
|
#subscriptions;
|
|
34
43
|
#pump;
|
|
44
|
+
/** Set once close is accepted: nothing new is admitted while the last scheduling passes return. */
|
|
45
|
+
#closed = false;
|
|
35
46
|
constructor(options) {
|
|
36
47
|
this.#runtime = options.runtime;
|
|
37
48
|
this.#ownerUserId = nonEmpty(options.ownerUserId, 'ownerUserId');
|
|
@@ -71,73 +82,88 @@ export class Chat {
|
|
|
71
82
|
...(capabilities ? { capabilities } : {}),
|
|
72
83
|
});
|
|
73
84
|
}
|
|
85
|
+
/** Create a conversation, or rejoin it when it already exists, without admitting input. */
|
|
74
86
|
async startSession(options) {
|
|
75
87
|
const execution = this.#executions.resolve(options.execution);
|
|
76
88
|
const sessionId = options.sessionId?.trim() || this.#uuid();
|
|
77
|
-
|
|
89
|
+
await this.#admitSession(sessionId, () => this.#conversationScope(sessionId, execution, options));
|
|
90
|
+
await this.#attachRecord(sessionId, execution);
|
|
91
|
+
return new ChatSession(this, sessionId);
|
|
78
92
|
}
|
|
79
|
-
|
|
80
|
-
|
|
93
|
+
/** The durable conversation behind an id: found, or created from its attributes with no provider work. */
|
|
94
|
+
async #conversationScope(sessionId, execution, conversation) {
|
|
81
95
|
const prior = await this.#conversations.getConversationForOwner(this.#ownerUserId, sessionId, true);
|
|
82
|
-
if (prior)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
96
|
+
if (prior)
|
|
97
|
+
return prior.scope;
|
|
98
|
+
if (!conversation)
|
|
99
|
+
throw new SessionNotFoundError(sessionId);
|
|
100
|
+
const scope = this.#scope(execution);
|
|
86
101
|
await this.#conversations.createConversation({
|
|
87
102
|
...scope,
|
|
88
103
|
id: sessionId,
|
|
89
104
|
agentRevisionId: execution.contract.agent.revisionId,
|
|
90
105
|
adapterId: execution.contract.agent.adapterId,
|
|
91
|
-
title: cleanTitle(
|
|
92
|
-
origin:
|
|
93
|
-
originId:
|
|
106
|
+
title: cleanTitle(conversation.title),
|
|
107
|
+
origin: conversation.origin?.trim() || null,
|
|
108
|
+
originId: conversation.originId?.trim() || null,
|
|
94
109
|
lastExecutionComputerId: execution.contract.computerId,
|
|
95
|
-
metadata: Object.freeze({ ...(
|
|
110
|
+
metadata: Object.freeze({ ...(conversation.metadata || {}), 'amalgm.initialExecution': execution.contract }),
|
|
96
111
|
createdAt: this.#clockIso(),
|
|
97
112
|
});
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
id: sessionId,
|
|
101
|
-
scope,
|
|
102
|
-
runtimeSession,
|
|
103
|
-
execution,
|
|
104
|
-
busyTurnId: null,
|
|
105
|
-
});
|
|
106
|
-
return new ChatSession(this, sessionId);
|
|
113
|
+
this.#unstarted.add(sessionId);
|
|
114
|
+
return scope;
|
|
107
115
|
}
|
|
108
116
|
async resumeSession(options) {
|
|
109
117
|
const execution = this.#executions.resolve(options.execution);
|
|
110
|
-
|
|
118
|
+
const sessionId = nonEmpty(options.sessionId, 'sessionId');
|
|
119
|
+
await this.#attachRecord(sessionId, execution);
|
|
120
|
+
return new ChatSession(this, sessionId);
|
|
111
121
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
122
|
+
/**
|
|
123
|
+
* The live provider session behind a durable conversation. A conversation this
|
|
124
|
+
* process created starts its provider session once (a failed start retries as
|
|
125
|
+
* a resume); every other attachment resumes from committed history. Concurrent
|
|
126
|
+
* callers share one attempt, and none of them holds the admission lock.
|
|
127
|
+
*/
|
|
128
|
+
#attachRecord(sessionId, execution) {
|
|
129
|
+
const existing = this.#sessions.get(sessionId);
|
|
130
|
+
if (existing)
|
|
131
|
+
return Promise.resolve(existing);
|
|
132
|
+
const pending = this.#attachments.get(sessionId);
|
|
133
|
+
if (pending)
|
|
134
|
+
return pending;
|
|
135
|
+
const attaching = this.#attach(sessionId, execution).finally(() => this.#attachments.delete(sessionId));
|
|
136
|
+
this.#attachments.set(sessionId, attaching);
|
|
137
|
+
return attaching;
|
|
138
|
+
}
|
|
139
|
+
async #attach(sessionId, execution) {
|
|
140
|
+
// A creation still committing under admission lands first; provider work then runs outside the lock.
|
|
141
|
+
const { scope } = await this.#admitSession(sessionId, () => this.#storedConversation(sessionId));
|
|
142
|
+
const runtimeSession = this.#unstarted.delete(sessionId)
|
|
143
|
+
? await this.#runtime.startSession({ sessionId, execution })
|
|
144
|
+
: await this.#resumeRuntime(scope, sessionId, execution);
|
|
145
|
+
const record = { id: sessionId, scope, runtimeSession, execution, busyTurnId: null };
|
|
146
|
+
this.#sessions.set(sessionId, record);
|
|
147
|
+
return record;
|
|
148
|
+
}
|
|
149
|
+
async #resumeRuntime(scope, sessionId, execution) {
|
|
118
150
|
if (!this.#runtime.resumeSession)
|
|
119
|
-
throw new SessionNotFoundError(
|
|
151
|
+
throw new SessionNotFoundError(sessionId);
|
|
120
152
|
const [checkpoint, messages, queued] = await Promise.all([
|
|
121
|
-
this.#conversations.getProviderCheckpoint(scope,
|
|
122
|
-
this.#conversations.listMessages(scope,
|
|
123
|
-
this.#conversations.pendingTurns(this.#ownerUserId,
|
|
153
|
+
this.#conversations.getProviderCheckpoint(scope, sessionId, execution.revision),
|
|
154
|
+
this.#conversations.listMessages(scope, sessionId),
|
|
155
|
+
this.#conversations.pendingTurns(this.#ownerUserId, sessionId),
|
|
124
156
|
]);
|
|
125
|
-
|
|
126
|
-
sessionId
|
|
157
|
+
return this.#runtime.resumeSession({
|
|
158
|
+
sessionId,
|
|
127
159
|
execution,
|
|
128
160
|
checkpoint: checkpoint?.checkpoint ?? null,
|
|
129
161
|
messages: messages.filter(message => !queued.some(turn => turn.id === message.turnId)),
|
|
130
162
|
});
|
|
131
|
-
this.#sessions.set(options.sessionId, {
|
|
132
|
-
id: options.sessionId,
|
|
133
|
-
scope,
|
|
134
|
-
runtimeSession,
|
|
135
|
-
execution,
|
|
136
|
-
busyTurnId: null,
|
|
137
|
-
});
|
|
138
|
-
return new ChatSession(this, options.sessionId);
|
|
139
163
|
}
|
|
140
164
|
async #admitSession(sessionId, operation) {
|
|
165
|
+
if (this.#closed)
|
|
166
|
+
throw new ChatClosedError();
|
|
141
167
|
const previous = this.#sessionAdmissions.get(sessionId) ?? Promise.resolve();
|
|
142
168
|
const pending = previous.catch(() => { }).then(operation);
|
|
143
169
|
this.#sessionAdmissions.set(sessionId, pending);
|
|
@@ -155,8 +181,9 @@ export class Chat {
|
|
|
155
181
|
const active = this.#sessions.get(id);
|
|
156
182
|
if (active) {
|
|
157
183
|
const latestTurn = await this.#conversations.getLatestTurn(active.scope, id);
|
|
158
|
-
// A queued selection is already durable even while
|
|
159
|
-
const selected = latestTurn && (this.#queuedExecutions.get(latestTurn.id)
|
|
184
|
+
// A queued or running selection is already durable even while the provider is still adopting it.
|
|
185
|
+
const selected = latestTurn && (this.#queuedExecutions.get(latestTurn.id)?.execution
|
|
186
|
+
?? this.#turns.get(latestTurn.id)?.execution
|
|
160
187
|
?? (executionRevision(latestTurn.execution, this.#sha256Hex)
|
|
161
188
|
=== executionRevision(active.execution.contract, this.#sha256Hex) ? active.execution : null));
|
|
162
189
|
const execution = latestTurn && !selected
|
|
@@ -179,25 +206,42 @@ export class Chat {
|
|
|
179
206
|
const session = await this.resumeSession({ sessionId: id, execution });
|
|
180
207
|
return Object.freeze({ session, execution, latestTurn });
|
|
181
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* The hot path. Validate input, then admit one turn into the durable queue with
|
|
211
|
+
* no provider work: a conversation that does not exist yet is created from
|
|
212
|
+
* `options.conversation`, and the provider attaches when the queue drains.
|
|
213
|
+
*/
|
|
182
214
|
async send(sessionId, options) {
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
const
|
|
188
|
-
|
|
189
|
-
userMessageId: options.userMessageId ?? `${turnId}:user`,
|
|
190
|
-
assistantMessageId: options.assistantMessageId ?? `${turnId}:assistant`,
|
|
191
|
-
prompt: normalizePrompt(options.prompt), execution: execution.contract,
|
|
192
|
-
executionFingerprint: execution.fingerprint ?? null, createdAt: this.#clockIso(),
|
|
193
|
-
});
|
|
194
|
-
if (accepted.status === 'queued')
|
|
195
|
-
this.#queuedExecutions.set(turnId, execution);
|
|
196
|
-
return accepted;
|
|
215
|
+
const id = nonEmpty(sessionId, 'sessionId');
|
|
216
|
+
const execution = this.#executions.resolve(options.execution);
|
|
217
|
+
const input = this.#turnInput(options);
|
|
218
|
+
const admission = this.#admitSession(id, async () => {
|
|
219
|
+
const scope = this.#sessions.get(id)?.scope ?? await this.#conversationScope(id, execution, options.conversation ?? null);
|
|
220
|
+
return this.#admitTurn(id, scope, execution, input);
|
|
197
221
|
});
|
|
222
|
+
this.#sends.set(admission, id);
|
|
223
|
+
const turn = await admission.finally(() => this.#sends.delete(admission));
|
|
198
224
|
const completion = this.#turnCompletion(turn);
|
|
199
|
-
this.#drain(
|
|
200
|
-
return new ChatTurnStream(
|
|
225
|
+
this.#drain(id);
|
|
226
|
+
return new ChatTurnStream(id, turn.id, completion, (afterSequence) => this.reconnectTurn(id, turn.id, afterSequence));
|
|
227
|
+
}
|
|
228
|
+
#turnInput(input) {
|
|
229
|
+
const turnId = input.clientTurnId === undefined ? this.#uuid() : nonEmpty(input.clientTurnId, 'clientTurnId');
|
|
230
|
+
return {
|
|
231
|
+
turnId,
|
|
232
|
+
userMessageId: input.userMessageId ?? `${turnId}:user`,
|
|
233
|
+
assistantMessageId: input.assistantMessageId ?? `${turnId}:assistant`,
|
|
234
|
+
prompt: normalizePrompt(input.prompt),
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
async #admitTurn(conversationId, scope, execution, input) {
|
|
238
|
+
const accepted = await this.#conversations.enqueueTurn({
|
|
239
|
+
...scope, conversationId, ...input, execution: execution.contract,
|
|
240
|
+
executionFingerprint: execution.fingerprint ?? null, createdAt: this.#clockIso(),
|
|
241
|
+
});
|
|
242
|
+
if (accepted.status === 'queued')
|
|
243
|
+
this.#queuedExecutions.set(input.turnId, { conversationId, execution });
|
|
244
|
+
return accepted;
|
|
201
245
|
}
|
|
202
246
|
async #turnCompletion(turn) {
|
|
203
247
|
if (turn.status !== 'queued' && turn.status !== 'running')
|
|
@@ -222,27 +266,22 @@ export class Chat {
|
|
|
222
266
|
}
|
|
223
267
|
#drain(sessionId) {
|
|
224
268
|
this.#queue.run(sessionId, async () => {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
return null;
|
|
229
|
-
const [turn] = await this.#conversations.pendingTurns(this.#ownerUserId, sessionId);
|
|
230
|
-
if (!turn)
|
|
231
|
-
return null;
|
|
232
|
-
const execution = this.#queuedExecutions.get(turn.id);
|
|
233
|
-
if (!execution)
|
|
234
|
-
return null; // Recovery must restore the exact binding before scheduling.
|
|
235
|
-
await this.#conversations.claimTurn(record.scope, turn.id, this.#clockIso());
|
|
236
|
-
record.busyTurnId = turn.id;
|
|
237
|
-
let releaseInvocation;
|
|
238
|
-
const invocationReady = new Promise(resolve => { releaseInvocation = resolve; });
|
|
239
|
-
this.#turns.set(turn.id, { invocationReady, releaseInvocation, conversationId: sessionId, scope: record.scope, execution,
|
|
240
|
-
phase: 'running', outcome: null, yieldRequested: false, stopAttempt: null });
|
|
241
|
-
return { record, turn, execution };
|
|
242
|
-
});
|
|
269
|
+
if (this.#closed)
|
|
270
|
+
return false; // An accepted close owns the store; this pass ends without touching it.
|
|
271
|
+
const work = await this.#admitSession(sessionId, () => this.#claimNext(sessionId));
|
|
243
272
|
if (!work)
|
|
244
273
|
return false;
|
|
245
274
|
const { record, turn, execution } = work;
|
|
275
|
+
if (!record) {
|
|
276
|
+
// The provider attaches outside admission, so sends, deletes and steers stay responsive while an agent starts.
|
|
277
|
+
try {
|
|
278
|
+
await this.#attachRecord(sessionId, execution);
|
|
279
|
+
}
|
|
280
|
+
catch (error) {
|
|
281
|
+
await this.#failQueued(turn, error, 'SESSION_ATTACH_FAILED');
|
|
282
|
+
}
|
|
283
|
+
return true;
|
|
284
|
+
}
|
|
246
285
|
try {
|
|
247
286
|
await this.#pump.run(record, turn.id, turn.assistantMessageId ?? `${turn.id}:assistant`, turn.prompt, execution);
|
|
248
287
|
}
|
|
@@ -255,7 +294,6 @@ export class Chat {
|
|
|
255
294
|
return false;
|
|
256
295
|
}
|
|
257
296
|
finally {
|
|
258
|
-
this.#queuedExecutions.delete(turn.id);
|
|
259
297
|
this.#turns.delete(turn.id);
|
|
260
298
|
}
|
|
261
299
|
return true;
|
|
@@ -271,6 +309,38 @@ export class Chat {
|
|
|
271
309
|
}
|
|
272
310
|
});
|
|
273
311
|
}
|
|
312
|
+
/** The next pending turn: claimed for the pump when the provider is live, otherwise the attachment it is waiting for. */
|
|
313
|
+
async #claimNext(sessionId) {
|
|
314
|
+
const record = this.#sessions.get(sessionId) ?? null;
|
|
315
|
+
if (record?.busyTurnId || this.#recoveries.has(sessionId))
|
|
316
|
+
return null;
|
|
317
|
+
const [turn] = await this.#conversations.pendingTurns(this.#ownerUserId, sessionId);
|
|
318
|
+
const execution = turn && this.#queuedExecutions.get(turn.id)?.execution;
|
|
319
|
+
if (!turn || !execution)
|
|
320
|
+
return null; // Recovery must restore the exact binding before scheduling.
|
|
321
|
+
if (!record)
|
|
322
|
+
return { record, turn, execution };
|
|
323
|
+
await this.#conversations.claimTurn(record.scope, turn.id, this.#clockIso());
|
|
324
|
+
record.busyTurnId = turn.id;
|
|
325
|
+
this.#queuedExecutions.delete(turn.id); // Ownership moves from the queue to the busy session.
|
|
326
|
+
let releaseInvocation;
|
|
327
|
+
const invocationReady = new Promise(resolve => { releaseInvocation = resolve; });
|
|
328
|
+
this.#turns.set(turn.id, { invocationReady, releaseInvocation, conversationId: sessionId, scope: record.scope, execution,
|
|
329
|
+
phase: 'running', outcome: null, yieldRequested: false, stopAttempt: null });
|
|
330
|
+
return { record, turn, execution };
|
|
331
|
+
}
|
|
332
|
+
/** Seal a turn that never reached the provider as failed, keeping the reason the user can act on. */
|
|
333
|
+
async #failQueued(turn, error, code) {
|
|
334
|
+
await retryJournal(async () => {
|
|
335
|
+
const stored = await this.#storedConversation(turn.conversationId);
|
|
336
|
+
const failed = await this.#conversations.failQueuedTurn({ ...stored.scope, conversationId: turn.conversationId,
|
|
337
|
+
turnId: turn.id, assistantMessageId: turn.assistantMessageId ?? `${turn.id}:assistant`,
|
|
338
|
+
assistantParts: [], modelId: turn.execution.model.modelId,
|
|
339
|
+
error: errorRecord(error, code), providerCheckpoint: null, completedAt: this.#clockIso() });
|
|
340
|
+
this.#queuedExecutions.delete(turn.id);
|
|
341
|
+
this.#announceTerminal(turn.id, failed);
|
|
342
|
+
});
|
|
343
|
+
}
|
|
274
344
|
async queuedTurns(sessionId) {
|
|
275
345
|
await this.#storedConversation(sessionId);
|
|
276
346
|
return this.#conversations.pendingTurns(this.#ownerUserId, sessionId);
|
|
@@ -283,29 +353,33 @@ export class Chat {
|
|
|
283
353
|
throw new SessionNotFoundError(sessionId);
|
|
284
354
|
if (turn.status !== 'queued')
|
|
285
355
|
return false;
|
|
286
|
-
|
|
287
|
-
this.#queuedExecutions.delete(turnId);
|
|
288
|
-
this.#announceTerminal(turnId, cancelled);
|
|
356
|
+
await this.#cancelQueued(stored.scope, turnId);
|
|
289
357
|
return true;
|
|
290
358
|
});
|
|
291
359
|
// A stale Delete must never turn into a provider Stop after the queue drains.
|
|
292
360
|
return queued ? { accepted: true, turnId } : { accepted: false, turnId: null };
|
|
293
361
|
}
|
|
362
|
+
async #cancelQueued(scope, turnId) {
|
|
363
|
+
const cancelled = await this.#conversations.cancelQueuedTurn(scope, turnId, this.#clockIso());
|
|
364
|
+
this.#queuedExecutions.delete(turnId);
|
|
365
|
+
this.#announceTerminal(turnId, cancelled);
|
|
366
|
+
}
|
|
294
367
|
async steerTurn(sessionId, turnId, expectedTurnId) {
|
|
295
368
|
nonEmpty(expectedTurnId, 'expectedTurnId');
|
|
296
369
|
return this.#admitSession(sessionId, async () => {
|
|
297
|
-
const
|
|
298
|
-
const queued = await this.#conversations.getTurn(
|
|
370
|
+
const { scope } = await this.#storedConversation(sessionId);
|
|
371
|
+
const queued = await this.#conversations.getTurn(scope, turnId);
|
|
299
372
|
if (!queued || queued.conversationId !== sessionId || queued.status !== 'queued') {
|
|
300
373
|
throw Object.assign(new Error('Steering requires a queued turn'), { code: 'TURN_NOT_QUEUED' });
|
|
301
374
|
}
|
|
302
|
-
const
|
|
303
|
-
|
|
375
|
+
const record = this.#sessions.get(sessionId);
|
|
376
|
+
const context = record?.busyTurnId === expectedTurnId ? this.#turns.get(expectedTurnId) : undefined;
|
|
377
|
+
if (record && context?.phase === 'running' && this.#runtime.canYieldTurn?.({
|
|
304
378
|
sessionId, turnId: expectedTurnId, session: record.runtimeSession, execution: context.execution,
|
|
305
379
|
}) !== true) {
|
|
306
380
|
throw Object.assign(new Error('This adapter does not support step-boundary steering'), { code: 'STEER_UNSUPPORTED' });
|
|
307
381
|
}
|
|
308
|
-
await this.#conversations.prioritizeTurn(
|
|
382
|
+
await this.#conversations.prioritizeTurn(scope, turnId);
|
|
309
383
|
// Priority survives the expected turn finishing. A stale control cannot yield
|
|
310
384
|
// its successor. The adapter reads this intent only at its safe boundary.
|
|
311
385
|
if (context?.phase === 'running')
|
|
@@ -340,6 +414,30 @@ export class Chat {
|
|
|
340
414
|
}
|
|
341
415
|
stopTurn(sessionId, expectedTurnId) {
|
|
342
416
|
nonEmpty(expectedTurnId, 'expectedTurnId');
|
|
417
|
+
const key = JSON.stringify([sessionId, expectedTurnId]);
|
|
418
|
+
const pending = this.#stops.get(key);
|
|
419
|
+
if (pending)
|
|
420
|
+
return pending;
|
|
421
|
+
const attempt = this.#stopAdmitted(sessionId, expectedTurnId).finally(() => this.#stops.delete(key));
|
|
422
|
+
this.#stops.set(key, attempt);
|
|
423
|
+
return attempt;
|
|
424
|
+
}
|
|
425
|
+
async #stopAdmitted(sessionId, expectedTurnId) {
|
|
426
|
+
// Admission and claiming share this lock: clients never have to guess whether
|
|
427
|
+
// the same identity is still queued or has reached the provider.
|
|
428
|
+
const control = await this.#admitSession(sessionId, async () => {
|
|
429
|
+
const stored = await this.#storedConversation(sessionId);
|
|
430
|
+
const turn = await this.#conversations.getTurn(stored.scope, expectedTurnId);
|
|
431
|
+
if (turn?.conversationId === sessionId && turn.status === 'queued') {
|
|
432
|
+
await this.#cancelQueued(stored.scope, expectedTurnId);
|
|
433
|
+
return { result: { accepted: true, turnId: expectedTurnId } };
|
|
434
|
+
}
|
|
435
|
+
// Never hold admission while awaiting provider startup or cancellation.
|
|
436
|
+
return { result: this.#stopRunning(sessionId, expectedTurnId) };
|
|
437
|
+
});
|
|
438
|
+
return control.result;
|
|
439
|
+
}
|
|
440
|
+
#stopRunning(sessionId, expectedTurnId) {
|
|
343
441
|
const record = this.#sessions.get(sessionId);
|
|
344
442
|
const turnId = record?.busyTurnId;
|
|
345
443
|
if (!record || turnId !== expectedTurnId)
|
|
@@ -426,24 +524,19 @@ export class Chat {
|
|
|
426
524
|
if (turn.executionFingerprint && turn.executionFingerprint !== prepared.fingerprint) {
|
|
427
525
|
throw Object.assign(new Error('The queued execution facts changed; send a newly prepared message'), { code: 'QUEUE_EXECUTION_CHANGED' });
|
|
428
526
|
}
|
|
429
|
-
await this.#admitSession(turn.conversationId, async () => {
|
|
430
|
-
const
|
|
527
|
+
const restored = await this.#admitSession(turn.conversationId, async () => {
|
|
528
|
+
const { scope } = await this.#storedConversation(turn.conversationId);
|
|
529
|
+
const current = await this.#conversations.getTurn(scope, turn.id);
|
|
431
530
|
if (current?.status !== 'queued')
|
|
432
|
-
return; // Delete may win during preparation.
|
|
433
|
-
|
|
434
|
-
|
|
531
|
+
return false; // Delete may win during preparation.
|
|
532
|
+
this.#queuedExecutions.set(turn.id, { conversationId: turn.conversationId, execution: prepared });
|
|
533
|
+
return true;
|
|
435
534
|
});
|
|
535
|
+
if (restored)
|
|
536
|
+
await this.#attachRecord(turn.conversationId, prepared);
|
|
436
537
|
}
|
|
437
538
|
catch (error) {
|
|
438
|
-
await
|
|
439
|
-
const stored = await this.#storedConversation(turn.conversationId);
|
|
440
|
-
const failed = await this.#conversations.failQueuedTurn({ ...stored.scope, conversationId: turn.conversationId,
|
|
441
|
-
turnId: turn.id, assistantMessageId: turn.assistantMessageId ?? `${turn.id}:assistant`,
|
|
442
|
-
assistantParts: [], modelId: turn.execution.model.modelId,
|
|
443
|
-
error: errorRecord(error, 'QUEUE_RECOVERY_FAILED'), providerCheckpoint: null, completedAt: this.#clockIso() });
|
|
444
|
-
this.#announceTerminal(turn.id, failed);
|
|
445
|
-
});
|
|
446
|
-
this.#queuedExecutions.delete(turn.id);
|
|
539
|
+
await this.#failQueued(turn, error, 'QUEUE_RECOVERY_FAILED');
|
|
447
540
|
}
|
|
448
541
|
}
|
|
449
542
|
}
|
|
@@ -456,19 +549,42 @@ export class Chat {
|
|
|
456
549
|
this.#sessions.delete(sessionId);
|
|
457
550
|
});
|
|
458
551
|
}
|
|
552
|
+
/**
|
|
553
|
+
* Release this process's runtime sessions and store. Work this process owns is
|
|
554
|
+
* refused, never abandoned: a send or provider attachment in flight, a queued or
|
|
555
|
+
* running turn, or queue recovery keeps Chat open, and a turn's completion is
|
|
556
|
+
* the moment its conversation stops owning it. Once accepted, nothing new is
|
|
557
|
+
* admitted; the scheduling passes and controls already admitted own nothing and
|
|
558
|
+
* finish against the open store, which closes only after they have returned.
|
|
559
|
+
*/
|
|
459
560
|
async close() {
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
561
|
+
const owned = this.#ownedWork();
|
|
562
|
+
if (owned !== undefined)
|
|
563
|
+
throw new SessionBusyError(owned);
|
|
564
|
+
this.#closed = true;
|
|
565
|
+
await Promise.allSettled(this.#sessionAdmissions.values());
|
|
566
|
+
await this.#queue.settled();
|
|
466
567
|
for (const record of this.#sessions.values()) {
|
|
467
568
|
await this.#runtime.closeSession?.(record.id, record.runtimeSession);
|
|
468
569
|
}
|
|
469
570
|
this.#sessions.clear();
|
|
470
571
|
await this.#conversations.close?.();
|
|
471
572
|
}
|
|
573
|
+
/** The first conversation with work this process still owns, if any. */
|
|
574
|
+
#ownedWork() {
|
|
575
|
+
for (const id of this.#recoveries.keys())
|
|
576
|
+
return id;
|
|
577
|
+
for (const id of this.#sends.values())
|
|
578
|
+
return id;
|
|
579
|
+
for (const id of this.#attachments.keys())
|
|
580
|
+
return id;
|
|
581
|
+
for (const queued of this.#queuedExecutions.values())
|
|
582
|
+
return queued.conversationId;
|
|
583
|
+
for (const record of this.#sessions.values())
|
|
584
|
+
if (record.busyTurnId)
|
|
585
|
+
return record.id;
|
|
586
|
+
return undefined;
|
|
587
|
+
}
|
|
472
588
|
async *#reconnectTurn(sessionId, turnId, afterSequence) {
|
|
473
589
|
const stored = await this.#storedConversation(sessionId);
|
|
474
590
|
const turn = await this.#conversations.getTurn(stored.scope, turnId);
|
|
@@ -498,11 +614,6 @@ export class Chat {
|
|
|
498
614
|
throw new SessionNotFoundError(id);
|
|
499
615
|
return found;
|
|
500
616
|
}
|
|
501
|
-
#assertInstallation(scope, execution, sessionId) {
|
|
502
|
-
if (scope.agentInstallationId !== execution.contract.agent.installationId) {
|
|
503
|
-
throw new SessionAgentMismatchError(sessionId);
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
617
|
#requireSession(sessionId) {
|
|
507
618
|
const record = this.#sessions.get(sessionId);
|
|
508
619
|
if (!record)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/sessions/chat.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/sessions/chat.ts"],"names":[],"mappings":"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"}
|