@ouispec/agent-worker 0.4.0 → 0.8.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.
Files changed (97) hide show
  1. package/README.md +57 -2
  2. package/dist/approvals/client.d.ts +8 -1
  3. package/dist/approvals/client.d.ts.map +1 -1
  4. package/dist/approvals/client.js +10 -0
  5. package/dist/approvals/client.js.map +1 -1
  6. package/dist/approvals/continuation.d.ts +13 -1
  7. package/dist/approvals/continuation.d.ts.map +1 -1
  8. package/dist/approvals/continuation.js +35 -0
  9. package/dist/approvals/continuation.js.map +1 -1
  10. package/dist/approvals/preview.d.ts +2 -2
  11. package/dist/approvals/preview.d.ts.map +1 -1
  12. package/dist/approvals/preview.js +20 -3
  13. package/dist/approvals/preview.js.map +1 -1
  14. package/dist/attachments/content.d.ts +68 -0
  15. package/dist/attachments/content.d.ts.map +1 -0
  16. package/dist/attachments/content.js +318 -0
  17. package/dist/attachments/content.js.map +1 -0
  18. package/dist/attachments/guard.d.ts +69 -0
  19. package/dist/attachments/guard.d.ts.map +1 -0
  20. package/dist/attachments/guard.js +86 -0
  21. package/dist/attachments/guard.js.map +1 -0
  22. package/dist/attachments/limits.d.ts +46 -0
  23. package/dist/attachments/limits.d.ts.map +1 -0
  24. package/dist/attachments/limits.js +64 -0
  25. package/dist/attachments/limits.js.map +1 -0
  26. package/dist/attachments/store.d.ts +85 -0
  27. package/dist/attachments/store.d.ts.map +1 -0
  28. package/dist/attachments/store.js +2 -0
  29. package/dist/attachments/store.js.map +1 -0
  30. package/dist/attachments/tools.d.ts +12 -0
  31. package/dist/attachments/tools.d.ts.map +1 -0
  32. package/dist/attachments/tools.js +216 -0
  33. package/dist/attachments/tools.js.map +1 -0
  34. package/dist/authz/tool-policy.d.ts +6 -0
  35. package/dist/authz/tool-policy.d.ts.map +1 -1
  36. package/dist/authz/tool-policy.js.map +1 -1
  37. package/dist/index.d.ts +12 -3
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +10 -1
  40. package/dist/index.js.map +1 -1
  41. package/dist/lambda/handler.d.ts +2 -2
  42. package/dist/lambda/handler.d.ts.map +1 -1
  43. package/dist/lambda/handler.js +3 -2
  44. package/dist/lambda/handler.js.map +1 -1
  45. package/dist/orchestrator.d.ts.map +1 -1
  46. package/dist/orchestrator.js +613 -101
  47. package/dist/orchestrator.js.map +1 -1
  48. package/dist/prompt/clock.d.ts +0 -17
  49. package/dist/prompt/clock.d.ts.map +1 -1
  50. package/dist/prompt/clock.js +19 -2
  51. package/dist/prompt/clock.js.map +1 -1
  52. package/dist/prompt/user-text.d.ts +19 -0
  53. package/dist/prompt/user-text.d.ts.map +1 -0
  54. package/dist/prompt/user-text.js +20 -0
  55. package/dist/prompt/user-text.js.map +1 -0
  56. package/dist/runtime/turn-runner.d.ts +29 -2
  57. package/dist/runtime/turn-runner.d.ts.map +1 -1
  58. package/dist/runtime/turn-runner.js +118 -9
  59. package/dist/runtime/turn-runner.js.map +1 -1
  60. package/dist/runtime/types.d.ts +84 -6
  61. package/dist/runtime/types.d.ts.map +1 -1
  62. package/dist/stop/partial.d.ts +49 -0
  63. package/dist/stop/partial.d.ts.map +1 -0
  64. package/dist/stop/partial.js +73 -0
  65. package/dist/stop/partial.js.map +1 -0
  66. package/dist/stop/results.d.ts +20 -0
  67. package/dist/stop/results.d.ts.map +1 -0
  68. package/dist/stop/results.js +46 -0
  69. package/dist/stop/results.js.map +1 -0
  70. package/dist/stop/turn-stop.d.ts +114 -0
  71. package/dist/stop/turn-stop.d.ts.map +1 -0
  72. package/dist/stop/turn-stop.js +159 -0
  73. package/dist/stop/turn-stop.js.map +1 -0
  74. package/dist/tools/input-validation.d.ts.map +1 -1
  75. package/dist/tools/input-validation.js +3 -0
  76. package/dist/tools/input-validation.js.map +1 -1
  77. package/dist/tools/types.d.ts +19 -0
  78. package/dist/tools/types.d.ts.map +1 -1
  79. package/dist/tools/types.js.map +1 -1
  80. package/dist/turn-policy.d.ts +14 -0
  81. package/dist/turn-policy.d.ts.map +1 -1
  82. package/dist/turn-policy.js.map +1 -1
  83. package/dist/types.d.ts +84 -3
  84. package/dist/types.d.ts.map +1 -1
  85. package/dist/ui/knowledge.d.ts +28 -2
  86. package/dist/ui/knowledge.d.ts.map +1 -1
  87. package/dist/ui/knowledge.js +117 -13
  88. package/dist/ui/knowledge.js.map +1 -1
  89. package/dist/ui/newest-page-state.d.ts +25 -0
  90. package/dist/ui/newest-page-state.d.ts.map +1 -0
  91. package/dist/ui/newest-page-state.js +91 -0
  92. package/dist/ui/newest-page-state.js.map +1 -0
  93. package/dist/ui/ui-tools.d.ts +20 -2
  94. package/dist/ui/ui-tools.d.ts.map +1 -1
  95. package/dist/ui/ui-tools.js +65 -6
  96. package/dist/ui/ui-tools.js.map +1 -1
  97. package/package.json +6 -6
@@ -6,16 +6,23 @@
6
6
  * decides how a turn arrives and what a failure means to its transport.
7
7
  */
8
8
  import { APICallError, RetryError } from 'ai';
9
- import { AGENT_SOCKET_EVENTS } from '@ouispec/agent-core';
9
+ import { AGENT_SOCKET_EVENTS, isAttachmentId } from '@ouispec/agent-core';
10
10
  import { runAgentTurn } from '../orchestrator.js';
11
11
  import { createHttpEmitAdapter } from '../emit/http-adapter.js';
12
12
  import { createHttpUIActionChannel } from '../ui/channel.js';
13
13
  import { createHttpApprovalStoreClient } from '../approvals/client.js';
14
+ import { createHttpTurnStopClient, watchTurnStop } from '../stop/turn-stop.js';
14
15
  import { withoutClientUI } from '../ui/snapshot.js';
15
16
  import { createToolRegistry } from '../tools/types.js';
16
17
  import { buildAgentSystemPrompt } from '../prompt/index.js';
17
18
  import { describeModel } from '../model.js';
18
19
  import { assertAgentRuntimeConfig } from './config.js';
20
+ /**
21
+ * The failure code of a turn that ran out of time and whose stop path could
22
+ * not store what it had produced (ADR-0252 §6.4): a host records it as
23
+ * `deadline_exceeded`, not as stopped.
24
+ */
25
+ export const TURN_DEADLINE_EXCEEDED = 'TURN_DEADLINE_EXCEEDED';
19
26
  const DEFAULT_LOGGER = {
20
27
  info: (msg, data) => console.log(JSON.stringify({ level: 'info', msg, ...data })),
21
28
  warn: (msg, data) => console.warn(JSON.stringify({ level: 'warn', msg, ...data })),
@@ -38,6 +45,9 @@ export function payloadRefusal(payload) {
38
45
  return 'context must be an object';
39
46
  if (p.userToken !== undefined && typeof p.userToken !== 'string')
40
47
  return 'userToken must be a string';
48
+ if (p.supersedes !== undefined && !(Array.isArray(p.supersedes) && p.supersedes.every((id) => typeof id === 'string' && id))) {
49
+ return 'supersedes must be a list of turn ids';
50
+ }
41
51
  if (p.approval !== undefined) {
42
52
  const a = p.approval;
43
53
  if (!a || typeof a !== 'object' || typeof a.approvalId !== 'string' || !a.approvalId)
@@ -69,14 +79,39 @@ export function createAgentTurnRunner(config) {
69
79
  const uiChannel = config.uiActions?.channel ?? createHttpUIActionChannel({ url: config.realtime.url, apiKey: config.realtime.apiKey });
70
80
  // Approvals are kept by the same realtime server (ADR-0228 §2.4).
71
81
  const approvals = config.approvals?.store ?? createHttpApprovalStoreClient({ url: config.realtime.url, apiKey: config.realtime.apiKey });
82
+ // A stop is kept by the same realtime server (ADR-0252 §2.1).
83
+ /** Said once for the life of the process, not once a turn. */
84
+ let stopsUnsupported = false;
85
+ const stops = config.stops?.client ??
86
+ createHttpTurnStopClient({
87
+ url: config.realtime.url,
88
+ apiKey: config.realtime.apiKey,
89
+ onError: (error, attempt) => logger.warn('[agent-sdk] Could not ask whether the turn was stopped; asking again', { attempt, error: messageOf(error) }),
90
+ onUnsupported: () => {
91
+ if (stopsUnsupported)
92
+ return;
93
+ stopsUnsupported = true;
94
+ logger.warn('[agent-sdk] The realtime server keeps no turn stops (it answered 404): turns cannot be stopped until it is updated');
95
+ },
96
+ });
72
97
  const resolveTools = async (ctx) => createToolRegistry(typeof config.tools === 'function' ? await config.tools(ctx) : config.tools);
73
98
  logger.info('[agent-sdk] Runtime ready', { model, maxRounds, maxTokens, turnDeadlineMs });
74
99
  return {
75
100
  model,
76
101
  logger,
77
- async run(payload) {
102
+ async run(payload, host = {}) {
78
103
  const { turnId, conversationId, userId, accountId, socketRoom, content, context, userToken, approval } = payload;
79
- logger.info('[agent-sdk] Processing turn', { turnId, conversationId, userId });
104
+ const supersedes = Array.isArray(payload.supersedes) ? payload.supersedes.filter((id) => typeof id === 'string' && id) : [];
105
+ // The message's files, by reference: anything that is not one is left out.
106
+ // Each file once.
107
+ const attachments = Array.isArray(payload.attachments)
108
+ ? [
109
+ ...new Map(payload.attachments
110
+ .filter((ref) => !!ref && typeof ref === 'object' && isAttachmentId(ref.id) && typeof ref.name === 'string')
111
+ .map((ref) => [ref.id, ref])).values(),
112
+ ]
113
+ : [];
114
+ logger.info('[agent-sdk] Processing turn', { turnId, conversationId, userId, ...(supersedes.length ? { supersedes } : {}) });
80
115
  let db;
81
116
  try {
82
117
  db = await config.getDb();
@@ -87,14 +122,34 @@ export function createAgentTurnRunner(config) {
87
122
  }
88
123
  if (config.recordTurnStart) {
89
124
  try {
90
- await config.recordTurnStart({ turnId, conversationId, userId, accountId, model, db });
125
+ const claim = await config.recordTurnStart({ turnId, conversationId, userId, accountId, model, db });
126
+ if (claim && claim.run === false) {
127
+ // The host's record says this turn already ended or was given up on: a queue's
128
+ // redelivery. It does nothing, and says nothing to a client that has moved on.
129
+ logger.warn('[agent-sdk] Turn refused by its record; nothing was run', { turnId, reason: claim.reason });
130
+ return { status: 'refused', turnId, reason: claim.reason };
131
+ }
91
132
  }
92
133
  catch (err) {
93
134
  logger.warn('[agent-sdk] recordTurnStart failed', { error: messageOf(err) });
94
135
  }
95
136
  }
137
+ // Open before history is read: a stop asked for while the turn waited in the
138
+ // queue, or waits now for the turns it supersedes, is the first thing it hears.
139
+ const stopWatch = watchTurnStop(stops, turnId, userId);
140
+ const waiting = new AbortController();
141
+ stopWatch.onStop(() => waiting.abort());
96
142
  try {
97
- const history = await config.getHistory(conversationId, db);
143
+ let history;
144
+ try {
145
+ history = await config.getHistory(conversationId, db, { turnId, supersedes, signal: waiting.signal });
146
+ }
147
+ catch (err) {
148
+ // Stopped while it waited: it reads nothing, and stores only that it was stopped.
149
+ if (!stopWatch.current())
150
+ throw err;
151
+ history = [];
152
+ }
98
153
  // What the client's UI sent for the worker is not the host's prompt
99
154
  // text: its snapshot becomes the turn's UI tools, and its knowledge is
100
155
  // rendered after the host's prompt (orchestrator).
@@ -113,6 +168,9 @@ export function createAgentTurnRunner(config) {
113
168
  history,
114
169
  userToken,
115
170
  ...(approval ? { approval } : {}),
171
+ ...(attachments.length > 0 ? { attachments } : {}),
172
+ stopWatch,
173
+ ...(host.remainingMs ? { remainingMs: host.remainingMs } : {}),
116
174
  };
117
175
  const tools = await resolveTools({ userId, accountId, turnId });
118
176
  // The turn's messages are stored before the client is told it is complete
@@ -120,13 +178,28 @@ export function createAgentTurnRunner(config) {
120
178
  let persisted = false;
121
179
  /** Whether the host's store took the messages: a claimed expiry is confirmed only then. */
122
180
  let stored = false;
181
+ /** Whether the host's store failed (threw), as opposed to finding the turn given up on. */
182
+ let storeFailed = false;
123
183
  const persist = async (turn) => {
124
184
  persisted = true;
125
185
  try {
126
- await config.persistMessages({ turnId, conversationId, messages: turn.newMessages, usage: turn.usage, db });
186
+ const answer = await config.persistMessages({
187
+ turnId,
188
+ conversationId,
189
+ messages: turn.newMessages,
190
+ usage: turn.usage,
191
+ ...(turn.stopped ? { stopped: turn.stopped } : {}),
192
+ db,
193
+ });
194
+ // The host found the turn given up on by a newer one, and stored nothing.
195
+ if (answer && answer.stored === false) {
196
+ logger.warn('[agent-sdk] The turn was given up on before it stored; nothing was stored', { turnId });
197
+ return;
198
+ }
127
199
  stored = true;
128
200
  }
129
201
  catch (err) {
202
+ storeFailed = true;
130
203
  logger.error('[agent-sdk] persistMessages failed', { turnId, error: messageOf(err) });
131
204
  }
132
205
  };
@@ -147,22 +220,53 @@ export function createAgentTurnRunner(config) {
147
220
  turnPolicy: config.turnPolicy,
148
221
  toolPolicy: config.toolPolicy,
149
222
  approvals,
223
+ stopGraceMs: config.stops?.graceMs,
150
224
  ui: {
151
225
  channel: uiChannel,
152
226
  resultTimeoutMs: config.uiActions?.resultTimeoutMs,
227
+ jobWaitMs: config.uiActions?.jobWaitMs,
153
228
  maxObservationChars: config.uiActions?.maxObservationChars,
154
229
  maxIndexChars: config.uiActions?.maxIndexChars,
155
230
  },
231
+ ...(config.attachments ? { attachments: config.attachments } : {}),
156
232
  }, turnInput);
157
- logger.info('[agent-sdk] Turn completed', {
233
+ logger.info(result.stopped ? '[agent-sdk] Turn stopped' : '[agent-sdk] Turn completed', {
158
234
  turnId,
235
+ ...(result.stopped ? { stopReason: result.stopped.reason } : {}),
159
236
  rounds: result.rounds,
160
237
  maxRoundsReached: result.maxRoundsReached,
161
238
  usage: result.usage,
162
239
  });
240
+ // A turn that ran out of time and could not store what it had is not a stopped turn:
241
+ // nothing of it was kept. It is recorded as having run out of time (ADR-0252 §6.4).
242
+ if (result.stopped?.reason === 'deadline' && (result.stored === false || storeFailed)) {
243
+ const categorized = {
244
+ code: TURN_DEADLINE_EXCEEDED,
245
+ message: 'The turn ran out of time, and what it had done could not be stored.',
246
+ recoverable: false,
247
+ };
248
+ logger.error('[agent-sdk] Turn ran out of time and its store failed', { turnId, rounds: result.rounds });
249
+ if (config.recordTurnFailure) {
250
+ try {
251
+ await config.recordTurnFailure({ turnId, conversationId, error: categorized, db });
252
+ }
253
+ catch (err) {
254
+ logger.warn('[agent-sdk] recordTurnFailure failed', { error: messageOf(err) });
255
+ }
256
+ }
257
+ return { status: 'stopped', turnId, rounds: result.rounds, stopReason: 'deadline', stored: false };
258
+ }
163
259
  if (config.recordTurnComplete) {
164
260
  try {
165
- await config.recordTurnComplete({ turnId, conversationId, rounds: result.rounds, usage: result.usage, db });
261
+ await config.recordTurnComplete({
262
+ turnId,
263
+ conversationId,
264
+ rounds: result.rounds,
265
+ usage: result.usage,
266
+ ...(result.stopped ? { stopReason: result.stopped.reason } : {}),
267
+ ...(result.attachments ? { attachments: result.attachments } : {}),
268
+ db,
269
+ });
166
270
  }
167
271
  catch (err) {
168
272
  logger.warn('[agent-sdk] recordTurnComplete failed', { error: messageOf(err) });
@@ -183,7 +287,9 @@ export function createAgentTurnRunner(config) {
183
287
  }
184
288
  }
185
289
  }
186
- return { status: 'completed', turnId, rounds: result.rounds };
290
+ return result.stopped
291
+ ? { status: 'stopped', turnId, rounds: result.rounds, stopReason: result.stopped.reason }
292
+ : { status: 'completed', turnId, rounds: result.rounds };
187
293
  }
188
294
  catch (error) {
189
295
  return fail(payload, error, async (categorized) => {
@@ -197,6 +303,9 @@ export function createAgentTurnRunner(config) {
197
303
  }
198
304
  });
199
305
  }
306
+ finally {
307
+ stopWatch.close();
308
+ }
200
309
  },
201
310
  };
202
311
  /** Reports a failed turn to the client first, so the UI stops streaming, then to the host. */
@@ -1 +1 @@
1
- {"version":3,"file":"turn-runner.js","sourceRoot":"","sources":["../../src/runtime/turn-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"turn-runner.js","sourceRoot":"","sources":["../../src/runtime/turn-runner.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,10 @@ import type { ToolPolicy } from '../authz/tool-policy.js';
16
16
  import type { UIActionChannel } from '../ui/channel.js';
17
17
  import type { LanguageModel, ProviderOptions } from '../model.js';
18
18
  import type { ApprovalStoreClient } from '../approvals/client.js';
19
- import type { ApprovalContinuation } from '@ouispec/agent-core';
19
+ import type { ApprovalContinuation, AttachmentRef, TurnStoppedReason, TurnStoppedMarker } from '@ouispec/agent-core';
20
+ import type { AttachmentWorkerConfig } from '../attachments/store.js';
21
+ import type { AttachmentUsage } from '../attachments/guard.js';
22
+ import type { TurnStopClient } from '../stop/turn-stop.js';
20
23
  /**
21
24
  * Database handle — opaque to the SDK. The integrator's callbacks receive
22
25
  * whatever they return from `getDb` so they can use it directly.
@@ -41,6 +44,30 @@ export interface AgentTurnPayload {
41
44
  * token to redeem, or that they declined (ADR-0228 §2.2.5).
42
45
  */
43
46
  approval?: ApprovalContinuation;
47
+ /**
48
+ * The turns of this conversation that this turn supersedes (ADR-0252 §2.5):
49
+ * the host asked each to stop when this turn's message arrived. The host's
50
+ * `getHistory` is given them, to wait until each is stored before it reads.
51
+ */
52
+ supersedes?: string[];
53
+ /**
54
+ * The files attached to the turn's message, by reference (ADR-0252 §2.8).
55
+ * The host checked each is ready and is this conversation's before it
56
+ * enqueued the turn; the worker reads them through `attachments.store`.
57
+ */
58
+ attachments?: AttachmentRef[];
59
+ }
60
+ /** What `getHistory` is told of the turn it reads for. */
61
+ export interface HistoryRequest {
62
+ turnId: string;
63
+ /** The turns this one supersedes, which must be stored (or given up on) before history is read. */
64
+ supersedes: readonly string[];
65
+ /**
66
+ * Aborts when this turn is itself asked to stop while it waits: a wait for
67
+ * earlier turns should end then, since the turn will store only that it was
68
+ * stopped and reads no history.
69
+ */
70
+ signal: AbortSignal;
44
71
  }
45
72
  /**
46
73
  * Configuration for the agent runtime, whichever adapter hosts it.
@@ -151,6 +178,14 @@ export interface AgentRuntimeConfig<TDb = IntegratorDb> {
151
178
  channel?: UIActionChannel;
152
179
  /** How long a UI tool waits for the client's answer. Default 20 s. */
153
180
  resultTimeoutMs?: number;
181
+ /**
182
+ * The longest a UI tool waits, in the call, for the outcome of work its
183
+ * action started (a GPU job, an export). Work that ends within it is
184
+ * reported done; work that does not is reported still running, and the
185
+ * turn ends: its outcome is in the page state the next turn reads.
186
+ * Default 20 s (`DEFAULT_JOB_WAIT_MS`).
187
+ */
188
+ jobWaitMs?: number;
154
189
  /** Largest page-state payload given to the model, in characters. Default 12000 (`DEFAULT_PAGE_STATE_CHARS`). */
155
190
  maxObservationChars?: number;
156
191
  /** Longest the page's index is in the model's context, in characters, before its furthest surfaces are listed by action id only. Default 60000 (`DEFAULT_INDEX_CHARS`, ADR-0245). */
@@ -163,6 +198,20 @@ export interface AgentRuntimeConfig<TDb = IntegratorDb> {
163
198
  approvals?: {
164
199
  store?: ApprovalStoreClient;
165
200
  };
201
+ /**
202
+ * Stopping a turn (ADR-0252). The stop request is kept by the realtime
203
+ * server, and the turn asks for it there unless `client` says otherwise.
204
+ */
205
+ stops?: {
206
+ client?: TurnStopClient;
207
+ /** How long after a stop an answer already on its way is still waited for. Default 2 s. */
208
+ graceMs?: number;
209
+ };
210
+ /**
211
+ * The host's file area (ADR-0252 §3): with it, a turn's files are given to
212
+ * the model, and the attachment tools reach the conversation's files.
213
+ */
214
+ attachments?: AttachmentWorkerConfig;
166
215
  /**
167
216
  * Returns a database client/handle. Called once per invocation.
168
217
  * The returned value is passed to `getHistory` and `persistMessages`.
@@ -176,10 +225,17 @@ export interface AgentRuntimeConfig<TDb = IntegratorDb> {
176
225
  *
177
226
  * The SDK handles appending the current user message — don't include it.
178
227
  */
179
- getHistory: (conversationId: string, db: TDb) => Promise<TurnHistoryMessage[]>;
228
+ getHistory: (conversationId: string, db: TDb, turn: HistoryRequest) => Promise<TurnHistoryMessage[]>;
180
229
  /**
181
- * Persists the new messages generated during this turn.
182
- * Called after the turn completes successfully.
230
+ * Persists the new messages generated during this turn. Called once, before
231
+ * the client is told the turn ended, whether it ended by itself or was
232
+ * stopped (`stopped` is then set, and the last assistant message carries the
233
+ * same marker: ADR-0252 §2.3).
234
+ *
235
+ * A host that lets a newer turn give up on this one (ADR-0252 §2.5) answers
236
+ * `{ stored: false }` when it found the turn already given up on and stored
237
+ * nothing. The turn is still announced, and nothing that depends on its
238
+ * messages being stored (an expired approval's confirmation) is done.
183
239
  */
184
240
  persistMessages: (input: {
185
241
  turnId: string;
@@ -190,11 +246,20 @@ export interface AgentRuntimeConfig<TDb = IntegratorDb> {
190
246
  completionTokens: number;
191
247
  totalTokens: number;
192
248
  };
249
+ stopped?: TurnStoppedMarker;
193
250
  db: TDb;
194
- }) => Promise<void>;
251
+ }) => Promise<void | {
252
+ stored: false;
253
+ }>;
195
254
  /**
196
255
  * Optional: record turn start in your database. Receives the db handle.
197
256
  * Default: no-op (the SDK still emits `agent:turn_started` to realtime).
257
+ *
258
+ * A host that keeps a row per turn claims it here. Answering
259
+ * `{ run: false, reason }` says the turn must not run: its row shows it
260
+ * already ended or was given up on, which is what a queue's redelivery of
261
+ * an old turn finds (ADR-0252 §2.5). The turn then does nothing: no model
262
+ * call, no UI action, no event to the client.
198
263
  */
199
264
  recordTurnStart?: (input: {
200
265
  turnId: string;
@@ -203,7 +268,10 @@ export interface AgentRuntimeConfig<TDb = IntegratorDb> {
203
268
  accountId: string;
204
269
  model: string;
205
270
  db: TDb;
206
- }) => Promise<void>;
271
+ }) => Promise<void | {
272
+ run: false;
273
+ reason: string;
274
+ }>;
207
275
  /**
208
276
  * Optional: record turn completion. Default: no-op.
209
277
  */
@@ -216,10 +284,20 @@ export interface AgentRuntimeConfig<TDb = IntegratorDb> {
216
284
  completionTokens: number;
217
285
  totalTokens: number;
218
286
  };
287
+ /** Set when the turn was stopped rather than ending by itself (ADR-0252). */
288
+ stopReason?: TurnStoppedReason;
289
+ /** What the turn gave the model of its files: a host keeps `estimatedTokens` for the conversation's cap. */
290
+ attachments?: AttachmentUsage;
219
291
  db: TDb;
220
292
  }) => Promise<void>;
221
293
  /**
222
294
  * Optional: record turn failure. Default: no-op.
295
+ *
296
+ * `error.code` is `TURN_DEADLINE_EXCEEDED` for a turn that ran out of time
297
+ * and whose stop path could not store what it had (ADR-0252 §6.4). When the
298
+ * store did not finish in time it may still finish after this is called, so
299
+ * record the failure only over a turn that is still running (a conditional
300
+ * update from `running`): a turn whose messages did get stored keeps that.
223
301
  */
224
302
  recordTurnFailure?: (input: {
225
303
  turnId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * What a stopped turn stores (ADR-0252 §2.3): the steps it finished, the step
3
+ * it was in, and a marker on its last assistant message.
4
+ *
5
+ * It is built from what the worker itself recorded as the turn ran: the text
6
+ * it streamed, the steps it saw end, and the calls its tools were asked to
7
+ * run. Nothing here reads the model stream's own results, which do not
8
+ * survive an abort, so it is the same whatever way the abort surfaces.
9
+ */
10
+ import { type TurnStoppedMarker } from '@ouispec/agent-core';
11
+ import type { TurnMessage } from '../types.js';
12
+ /** A step the turn saw end: its text, and the calls the model made in it. */
13
+ export interface RecordedStep {
14
+ text: string;
15
+ toolCalls: ReadonlyArray<{
16
+ toolCallId: string;
17
+ toolName: string;
18
+ input: unknown;
19
+ }>;
20
+ }
21
+ /** A call a tool of the turn was asked to run, in the order the calls arrived. */
22
+ export interface RecordedCall {
23
+ toolCallId: string;
24
+ /** The tool as the model called it (`ui_act` for a page action). */
25
+ toolName: string;
26
+ input: unknown;
27
+ /** Its result as the model would read it; null while it has not settled. */
28
+ text: string | null;
29
+ }
30
+ /**
31
+ * The stopped turn's messages, each call with exactly one result:
32
+ * - a call that settled keeps the result it gave, which for a call the stop
33
+ * cut short already says so (not run, or sent with its outcome unknown);
34
+ * - a call still unsettled when the grace ended is stored as running when the
35
+ * turn was stopped, its outcome unknown.
36
+ *
37
+ * The last assistant message carries the marker. A turn that produced no
38
+ * text and no call still stores one assistant message, whose text is the
39
+ * marker's line: a model provider refuses an empty text block, and the
40
+ * conversation never holds two user messages with nothing between them.
41
+ */
42
+ export declare function stoppedTurnMessages(recorded: {
43
+ steps: readonly RecordedStep[];
44
+ calls: readonly RecordedCall[];
45
+ /** Every piece of reply text the turn streamed, in order. */
46
+ streamedText: string;
47
+ marker: TurnStoppedMarker;
48
+ }): TurnMessage[];
49
+ //# sourceMappingURL=partial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partial.d.ts","sourceRoot":"","sources":["../../src/stop/partial.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,aAAa,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACpF;AAED,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,4EAA4E;IAC5E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAKD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE;IAC5C,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,iBAAiB,CAAC;CAC3B,GAAG,WAAW,EAAE,CAgDhB"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * What a stopped turn stores (ADR-0252 §2.3): the steps it finished, the step
3
+ * it was in, and a marker on its last assistant message.
4
+ *
5
+ * It is built from what the worker itself recorded as the turn ran: the text
6
+ * it streamed, the steps it saw end, and the calls its tools were asked to
7
+ * run. Nothing here reads the model stream's own results, which do not
8
+ * survive an abort, so it is the same whatever way the abort surfaces.
9
+ */
10
+ import { turnStoppedNote } from '@ouispec/agent-core';
11
+ import { resultText, stoppedWhileRunning } from './results.js';
12
+ const asArguments = (input) => input && typeof input === 'object' && !Array.isArray(input) ? input : {};
13
+ /**
14
+ * The stopped turn's messages, each call with exactly one result:
15
+ * - a call that settled keeps the result it gave, which for a call the stop
16
+ * cut short already says so (not run, or sent with its outcome unknown);
17
+ * - a call still unsettled when the grace ended is stored as running when the
18
+ * turn was stopped, its outcome unknown.
19
+ *
20
+ * The last assistant message carries the marker. A turn that produced no
21
+ * text and no call still stores one assistant message, whose text is the
22
+ * marker's line: a model provider refuses an empty text block, and the
23
+ * conversation never holds two user messages with nothing between them.
24
+ */
25
+ export function stoppedTurnMessages(recorded) {
26
+ const { steps, calls, streamedText, marker } = recorded;
27
+ const byId = new Map(calls.map((call) => [call.toolCallId, call]));
28
+ const messages = [];
29
+ const push = (text, stepCalls) => {
30
+ // Whitespace alone is no text: a provider refuses that block too.
31
+ const content = text.trim() ? text : null;
32
+ if (content === null && stepCalls.length === 0)
33
+ return;
34
+ messages.push({
35
+ role: 'assistant',
36
+ content,
37
+ ...(stepCalls.length > 0
38
+ ? { toolCalls: stepCalls.map((c) => ({ id: c.toolCallId, name: c.toolName, arguments: asArguments(c.input) })) }
39
+ : {}),
40
+ });
41
+ for (const call of stepCalls) {
42
+ messages.push({
43
+ role: 'tool',
44
+ content: byId.get(call.toolCallId)?.text ?? resultText(stoppedWhileRunning(call.toolName)),
45
+ toolCallId: call.toolCallId,
46
+ name: call.toolName,
47
+ });
48
+ }
49
+ };
50
+ const finished = new Set();
51
+ let finishedText = 0;
52
+ for (const step of steps) {
53
+ push(step.text, step.toolCalls);
54
+ finishedText += step.text.length;
55
+ for (const call of step.toolCalls)
56
+ finished.add(call.toolCallId);
57
+ }
58
+ // The step the turn was in: the text streamed since the last step ended, and
59
+ // the calls no finished step holds.
60
+ push(streamedText.length > finishedText ? streamedText.slice(finishedText) : '', calls.filter((call) => !finished.has(call.toolCallId)));
61
+ let last;
62
+ for (let i = messages.length - 1; i >= 0 && !last; i--)
63
+ if (messages[i].role === 'assistant')
64
+ last = messages[i];
65
+ if (!last) {
66
+ messages.push({ role: 'assistant', content: turnStoppedNote(marker), stopped: marker });
67
+ }
68
+ else {
69
+ last.stopped = marker;
70
+ }
71
+ return messages;
72
+ }
73
+ //# sourceMappingURL=partial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partial.js","sourceRoot":"","sources":["../../src/stop/partial.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * What a call's result says when its turn was stopped before the call ended
3
+ * (ADR-0252 §2.2). Every call the model made keeps exactly one result, so the
4
+ * stored conversation is one a model accepts, and a later turn reads what
5
+ * became of each call instead of guessing.
6
+ */
7
+ import type { ToolExecutionResult } from '../tools/types.js';
8
+ /** The call never left the worker: nothing ran. */
9
+ export declare function stoppedNotRun(what: string): ToolExecutionResult;
10
+ /** The request went out, tabs answered that they got it, and none took it: it did not run. */
11
+ export declare function stoppedNotTaken(what: string): ToolExecutionResult;
12
+ /** The call was sent to the page and no answer came back before the turn ended. */
13
+ export declare function stoppedOutcomeUnknown(what: string): ToolExecutionResult;
14
+ /** A tool was running when the turn was stopped, and did not finish in time to say what it did. */
15
+ export declare function stoppedWhileRunning(what: string): ToolExecutionResult;
16
+ /** A read of the page that the stop cut short: nothing was changed, and nothing was learned. */
17
+ export declare function stoppedBeforeAnswer(what: string): ToolExecutionResult;
18
+ /** The text of a result, as a stored tool message carries it. */
19
+ export declare function resultText(result: ToolExecutionResult): string;
20
+ //# sourceMappingURL=results.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../src/stop/results.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,mDAAmD;AACnD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAM/D;AAED,8FAA8F;AAC9F,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAMjE;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAQvE;AAED,mGAAmG;AACnG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAMrE;AAED,gGAAgG;AAChG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAMrE;AAED,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAE9D"}