@dbos-inc/vercel-ai 0.3.7 → 0.5.4

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 CHANGED
@@ -42,7 +42,7 @@ console.log(await researchAgent('Why did the agent cross the road?'));
42
42
  npm install @dbos-inc/vercel-ai @dbos-inc/dbos-sdk ai
43
43
  ```
44
44
 
45
- Requires DBOS v4.21+ or v5, AI SDK v7+, and a Postgres database for DBOS.
45
+ Requires DBOS v4.27+ or v5, AI SDK v7+, and a Postgres database for DBOS.
46
46
 
47
47
  ## Durable Model Calls
48
48
 
@@ -80,42 +80,10 @@ durableCalls({
80
80
  shouldRetry?: (error: unknown) => boolean; // default: skip provider-declared non-retryable errors and aborts
81
81
  timeoutMS?: number; // per-attempt timeout
82
82
  durableStream?: string; // stream each call's output to this durable stream
83
+ include?: { requestBody?: boolean; responseBody?: boolean }; // checkpoint raw provider bodies; match generateText's `include` (default: false)
83
84
  });
84
85
  ```
85
86
 
86
- ## Durable Streams
87
-
88
- You can **durably stream** agent or model output so it can be read by an external client or UI.
89
- To do this, configure `durableCalls` or `durableTools`/`durableMCPTools` with a durable stream name:
90
-
91
- ```ts
92
- import { createUIMessageStreamResponse, streamText } from 'ai';
93
- import { durableCalls, durableTools, readDurableStream } from '@dbos-inc/vercel-ai';
94
-
95
- const model = wrapLanguageModel({ model: openai('gpt-5'), middleware: durableCalls({ durableStream: 'ui' }) });
96
- const tools = durableTools(myTools, { durableStream: 'ui' });
97
-
98
- const chatTurn = DBOS.registerWorkflow(async (messages: ModelMessage[]) => {
99
- const result = streamText({ model, messages, tools, stopWhen: stepCountIs(10) });
100
- return await result.text;
101
- }, { name: 'chatTurn' });
102
-
103
- const handle = await DBOS.startWorkflow(chatTurn)(messages);
104
- return createUIMessageStreamResponse({
105
- stream: readDurableStream({ workflowID: handle.workflowID, key: 'ui', messageId }),
106
- });
107
- ```
108
-
109
- You can read from a durable stream using `readDurableStream`, for example to stream it to a UI.
110
- It emits a stream of AI SDK `UIMessageChunk`.
111
- You can also pass a `DBOSClient` into `readDurableStream` to read it from a different process.
112
-
113
- You can write your own data to a stream with `writeDurableStream(key, chunks)`.
114
- Your streams are closed when your workflow finishes; you can also close a stream early using `closeDurableStream`.
115
-
116
- If a workflow is interrupted during a model call, when the workflow recovers, it restarts the model call and streams its output again.
117
- Readers that connect afterwards see the model's output once; live readers receive a transient `data-dbos-superseded` chunk indicating the model call has been restarted.
118
-
119
87
  ## Durable Tools
120
88
 
121
89
  To durably checkpoint your agents' tool calls, wrap them in `durableTools`:
@@ -154,6 +122,73 @@ const tools = durableTools(myTools, {
154
122
 
155
123
  When using durable tools, to ensure the ordering of parallel tool calls is consistent during recovery, do not await I/O in callbacks that run before a tool executes, such as `onToolExecutionStart`.
156
124
 
125
+ ## Durable Streams
126
+
127
+ You can **durably stream** agent or model output so it can be read by an external client or UI.
128
+ To do this, configure `durableCalls` or `durableTools`/`durableMCPTools` with a durable stream name:
129
+
130
+ ```ts
131
+ import { createUIMessageStreamResponse, streamText } from 'ai';
132
+ import { durableCalls, durableTools, readDurableStream } from '@dbos-inc/vercel-ai';
133
+
134
+ const model = wrapLanguageModel({ model: openai('gpt-5'), middleware: durableCalls({ durableStream: 'ui' }) });
135
+ const tools = durableTools(myTools, { durableStream: 'ui' });
136
+
137
+ const chatTurn = DBOS.registerWorkflow(async (messages: ModelMessage[]) => {
138
+ const result = streamText({ model, messages, tools, stopWhen: stepCountIs(10) });
139
+ return await result.text;
140
+ }, { name: 'chatTurn' });
141
+
142
+ export async function POST(req: Request) {
143
+ const { messages, messageId } = (await req.json()) as { messages: ModelMessage[]; messageId: string };
144
+ const handle = await DBOS.startWorkflow(chatTurn)(messages);
145
+ return createUIMessageStreamResponse({
146
+ stream: readDurableStream({ workflowID: handle.workflowID, key: 'ui', messageId }),
147
+ });
148
+ }
149
+ ```
150
+
151
+ You can read from a durable stream using `readDurableStream`, for example to stream it to a UI.
152
+ It emits a stream of AI SDK `UIMessageChunk`.
153
+ You can also pass a `DBOSClient` into `readDurableStream` to read it from a different process.
154
+
155
+ You can write your own data to a stream with `writeDurableStream(key, chunks)`.
156
+ Tools can also write chunks with `toolWriter()`, which returns a `UIMessageStreamWriter` bound to the current tool call.
157
+ Chunks from a tool call are written when the tool call succeeds (`transient: true` data parts are written live instead).
158
+ To also include them in the response message your workflow builds, pass your `createUIMessageStream` writer to `durableTools`:
159
+
160
+ ```ts
161
+ import { consumeStream, createUIMessageStream, streamText } from 'ai';
162
+ import { durableTools, toolWriter } from '@dbos-inc/vercel-ai';
163
+
164
+ const search = tool({
165
+ inputSchema: z.object({ q: z.string() }),
166
+ execute: async ({ q }) => {
167
+ const writer = toolWriter();
168
+ writer.write({ type: 'data-progress', data: { pct: 50 }, transient: true });
169
+ writer.write({ type: 'source-url', sourceId: 's1', url: 'https://example.com' });
170
+ return runSearch(q);
171
+ },
172
+ });
173
+
174
+ const chatTurn = DBOS.registerWorkflow(async (messages: ModelMessage[]) => {
175
+ const stream = createUIMessageStream({
176
+ execute: ({ writer }) => {
177
+ const tools = durableTools({ search }, { durableStream: 'ui', writer });
178
+ writer.merge(streamText({ model, messages, tools, stopWhen: stepCountIs(10) }).toUIMessageStream());
179
+ },
180
+ onFinish: ({ responseMessage }) => saveMessage(responseMessage),
181
+ });
182
+ await consumeStream({ stream });
183
+ }, { name: 'chatTurn' });
184
+ ```
185
+
186
+ Your streams are closed when your workflow finishes; you can also close a stream early using `closeDurableStream`.
187
+
188
+ If a workflow is interrupted during a model call, when the workflow recovers, it restarts the model call and streams its output again.
189
+ Readers that connect afterwards see the model's output once; live readers, including readers resumed from an `offset`, receive a transient `data-dbos-superseded` chunk indicating the model call has been restarted.
190
+ Likewise, if a tool call is re-executed and writes different chunks, readers that connect afterwards see only the re-execution's chunks; live readers receive a transient `data-dbos-tool-superseded` chunk naming the `toolCallId` whose earlier chunks to discard.
191
+
157
192
  ### Durable MCP Tools
158
193
 
159
194
  `durableMCPTools` wraps an [MCP](https://modelcontextprotocol.io/) client (for example, from [`@ai-sdk/mcp`](https://www.npmjs.com/package/@ai-sdk/mcp)) so both the tool listing and every tool call run as durable steps:
@@ -164,9 +199,13 @@ import { durableMCPTools } from '@dbos-inc/vercel-ai';
164
199
 
165
200
  const agent = DBOS.registerWorkflow(async (question: string) => {
166
201
  const mcpClient = await createMCPClient({ transport: { type: 'http', url: MCP_URL } });
167
- const tools = await durableMCPTools(mcpClient);
168
- const result = await generateText({ model, prompt: question, tools, stopWhen: stepCountIs(10) });
169
- return result.text;
202
+ try {
203
+ const tools = await durableMCPTools(mcpClient);
204
+ const result = await generateText({ model, prompt: question, tools, stopWhen: stepCountIs(10) });
205
+ return result.text;
206
+ } finally {
207
+ await mcpClient.close();
208
+ }
170
209
  }, { name: 'mcpAgent' });
171
210
  ```
172
211
 
@@ -218,7 +257,10 @@ const embeddingModel = wrapEmbeddingModel({
218
257
  middleware: durableEmbeddingCalls({ retriesAllowed: true }),
219
258
  });
220
259
 
221
- const { embeddings } = await embedMany({ model: embeddingModel, values: chunks });
260
+ const embedChunks = DBOS.registerWorkflow(async (chunks: string[]) => {
261
+ const { embeddings } = await embedMany({ model: embeddingModel, values: chunks });
262
+ return embeddings;
263
+ }, { name: 'embedChunks' });
222
264
  ```
223
265
 
224
266
  ## Durable Image Models
@@ -231,6 +273,9 @@ import { durableImageCalls } from '@dbos-inc/vercel-ai';
231
273
 
232
274
  const imageModel = wrapImageModel({ model: openai.imageModel('gpt-image-1'), middleware: durableImageCalls() });
233
275
 
234
- const { images } = await generateImage({ model: imageModel, prompt: 'a durable cat' });
276
+ const drawImage = DBOS.registerWorkflow(async (prompt: string) => {
277
+ const { images } = await generateImage({ model: imageModel, prompt });
278
+ return images.map((image) => image.base64);
279
+ }, { name: 'drawImage' });
235
280
  ```
236
281
 
@@ -25,6 +25,7 @@ export type DurableStreamRecord = {
25
25
  toolCallId: string;
26
26
  output?: unknown;
27
27
  errorText?: string;
28
+ chunks?: UIMessageChunk[];
28
29
  } | {
29
30
  kind: 'ui';
30
31
  step?: number;
@@ -62,12 +63,12 @@ export declare class ModelStreamWriter {
62
63
  private flush;
63
64
  private write;
64
65
  }
65
- /** Records a tool call's outcome from inside its step. */
66
+ /** Records a tool call's outcome, with the message chunks it wrote, from inside its step. */
66
67
  export declare function writeToolRecord(key: string, toolCallId: string, outcome: {
67
68
  output: unknown;
68
69
  } | {
69
70
  errorText: string;
70
- }): Promise<void>;
71
+ }, chunks?: UIMessageChunk[]): Promise<void>;
71
72
  /**
72
73
  * Appends UI message chunks to a durable stream. From a step the write is cheap and at-least-once, so give data parts
73
74
  * stable ids; from workflow code it is a checkpointed step, so the number of calls must be deterministic.
@@ -95,7 +96,10 @@ export interface ReadDurableStreamOptions {
95
96
  key: string;
96
97
  /** Id for the `start` chunk; omitted on a resume (`offset` > 0). */
97
98
  messageId?: string;
98
- /** Number of records already consumed, from the last `data-dbos-offset` chunk. */
99
+ /**
100
+ * Number of records already consumed, from the last `data-dbos-offset` chunk. A resume from mid-text can't be applied
101
+ * to a partial message by the AI SDK (it has no record of the open part); to rebuild a message, read from 0 instead.
102
+ */
99
103
  offset?: number;
100
104
  /** Defaults to `DBOS`; pass a `DBOSClient` to read from a process that has not launched DBOS. */
101
105
  client?: DurableStreamSource;
@@ -1 +1 @@
1
- {"version":3,"file":"durable-stream.d.ts","sourceRoot":"","sources":["../src/durable-stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"durable-stream.d.ts","sourceRoot":"","sources":["../src/durable-stream.ts"],"names":[],"mappings":"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"}
@@ -17,17 +17,24 @@ function resolveDurableStream(options) {
17
17
  function stepInfo() {
18
18
  return { step: dbos_sdk_1.DBOS.stepID ?? -1, attempt: dbos_sdk_1.DBOS.stepStatus?.currentAttempt ?? 1 };
19
19
  }
20
- // Parts the reader can render; framing, metadata and terminal parts are recorded elsewhere or not at all.
20
+ // Only the parts toUIChunk renders; anything else would be written and never read.
21
21
  function isContentPart(part) {
22
22
  switch (part.type) {
23
- case 'stream-start':
24
- case 'response-metadata':
25
- case 'finish':
26
- case 'error':
27
- case 'raw':
28
- return false;
29
- default:
23
+ case 'text-start':
24
+ case 'text-delta':
25
+ case 'text-end':
26
+ case 'reasoning-start':
27
+ case 'reasoning-delta':
28
+ case 'reasoning-end':
29
+ case 'tool-input-start':
30
+ case 'tool-input-delta':
31
+ case 'tool-call':
32
+ case 'tool-result':
33
+ case 'source':
34
+ case 'file':
30
35
  return true;
36
+ default:
37
+ return false;
31
38
  }
32
39
  }
33
40
  // Bytes become base64 so a file part stays compact in Postgres.
@@ -105,9 +112,9 @@ class ModelStreamWriter {
105
112
  }
106
113
  }
107
114
  exports.ModelStreamWriter = ModelStreamWriter;
108
- /** Records a tool call's outcome from inside its step. */
109
- function writeToolRecord(key, toolCallId, outcome) {
110
- const record = { kind: 'tool', ...stepInfo(), toolCallId, ...outcome };
115
+ /** Records a tool call's outcome, with the message chunks it wrote, from inside its step. */
116
+ function writeToolRecord(key, toolCallId, outcome, chunks = []) {
117
+ const record = { kind: 'tool', ...stepInfo(), toolCallId, ...outcome, ...(chunks.length > 0 && { chunks }) };
111
118
  return dbos_sdk_1.DBOS.writeStream(key, record);
112
119
  }
113
120
  /**
@@ -146,12 +153,15 @@ async function* uiChunks(options) {
146
153
  const client = options.client ?? dbos_sdk_1.DBOS;
147
154
  const state = {
148
155
  offset: options.offset ?? 0,
149
- resumed: (options.offset ?? 0) > 0,
150
156
  openParts: new Map(),
157
+ detachedParts: new Set(),
158
+ toolChunksSent: new Map(),
151
159
  ended: false,
152
160
  };
153
161
  if (state.offset === 0)
154
162
  yield { type: 'start', messageId: options.messageId };
163
+ else
164
+ await restoreOpenCall(client, workflowID, key, state);
155
165
  const emit = (record) => emitRecord(state, record, { sendReasoning, sendSources, onError });
156
166
  // Phase 1: everything already stored, one value per query until an offset is empty; a superseded attempt is skipped whole.
157
167
  const history = [];
@@ -166,13 +176,18 @@ async function* uiChunks(options) {
166
176
  }
167
177
  }
168
178
  const finalAttempt = new Map();
169
- for (const record of history) {
179
+ // A re-executed tool call writes another record; the last one matches its checkpoint, so only its chunks (if any) are shown.
180
+ const finalToolRecord = new Map();
181
+ history.forEach((record, index) => {
170
182
  if (record.kind === 'model' || record.kind === 'model-end')
171
183
  finalAttempt.set(record.step, record.attempt);
172
- }
173
- for (const record of history) {
184
+ if (record.kind === 'tool')
185
+ finalToolRecord.set(toolKey(record), index);
186
+ });
187
+ for (const [index, record] of history.entries()) {
174
188
  const stale = (record.kind === 'model' || record.kind === 'model-end') && finalAttempt.get(record.step) !== record.attempt;
175
- yield* stale ? skipRecord(state) : emit(record);
189
+ const staleChunks = record.kind === 'tool' && record.chunks !== undefined && finalToolRecord.get(toolKey(record)) !== index;
190
+ yield* stale ? skipRecord(state) : emit(staleChunks ? { ...record, chunks: undefined } : record);
176
191
  if (state.ended)
177
192
  return;
178
193
  }
@@ -198,6 +213,10 @@ async function* uiChunks(options) {
198
213
  yield { type: 'finish', finishReason: 'error' };
199
214
  }
200
215
  }
216
+ // A step's function id survives re-execution, and with it tell apart calls that reuse a provider's tool call id.
217
+ function toolKey(record) {
218
+ return `${record.step}:${record.toolCallId}`;
219
+ }
201
220
  function offsetChunk(state) {
202
221
  return { type: 'data-dbos-offset', data: { offset: state.offset }, transient: true };
203
222
  }
@@ -211,17 +230,96 @@ function* closeStep(state) {
211
230
  state.openStep = undefined;
212
231
  state.openAttempt = undefined;
213
232
  state.openParts.clear();
233
+ state.detachedParts.clear();
234
+ }
235
+ // Records outside the open model call a resume reads past before giving up; a reconnect mid-call finds it at once.
236
+ const RESTORE_SCAN_LIMIT = 100;
237
+ /**
238
+ * On resume, rebuild the model call that was open at `offset` by reading back to its start, so the reader continues
239
+ * exactly as an uninterrupted one would: a re-executed attempt is superseded, and step boundaries fall in the same place.
240
+ * Past RESTORE_SCAN_LIMIT unrelated records it gives up, and the resumed stream only lacks that step's `finish-step`.
241
+ */
242
+ async function restoreOpenCall(client, workflowID, key, state) {
243
+ let step;
244
+ let attempt;
245
+ // Set once an earlier step's record is reached: the open call is fully read, and only a finish reason is still wanted.
246
+ let callRead = false;
247
+ let budget = RESTORE_SCAN_LIMIT;
248
+ const ended = new Set();
249
+ for (let index = state.offset - 1; index >= 0; index--) {
250
+ let record;
251
+ try {
252
+ record = await client.readStreamOffset(workflowID, key, index, { timeoutSeconds: 0 });
253
+ }
254
+ catch (error) {
255
+ // A real offset never passes the stored records, so a gap means there is nothing to restore.
256
+ if (dbos_sdk_1.Error.isStreamTimeoutError(error))
257
+ break;
258
+ throw error;
259
+ }
260
+ if (record.kind === 'end')
261
+ break;
262
+ const model = record.kind === 'model' || record.kind === 'model-end' ? record : undefined;
263
+ if (model && step === undefined) {
264
+ step = model.step;
265
+ attempt = model.attempt;
266
+ }
267
+ if (model && !callRead && model.step === step) {
268
+ if (model.attempt === attempt)
269
+ restorePart(state, ended, model);
270
+ continue;
271
+ }
272
+ if (model)
273
+ callRead = true;
274
+ // As in an uninterrupted read, the finish reason carries over from the latest earlier call that ended.
275
+ if (callRead && (state.finishReason !== undefined || model?.kind === 'model-end')) {
276
+ if (model?.kind === 'model-end')
277
+ state.finishReason ??= finishReasonOf(model);
278
+ break;
279
+ }
280
+ if (--budget === 0)
281
+ break;
282
+ }
283
+ if (step === undefined)
284
+ return;
285
+ state.openStep = step;
286
+ state.openAttempt = attempt;
287
+ }
288
+ function finishReasonOf(record) {
289
+ return record.aborted ? 'other' : record.finishReason?.unified;
290
+ }
291
+ // One record of the open call, read backward: a part is open if its start comes before (i.e. is read after) any end.
292
+ function restorePart(state, ended, record) {
293
+ if (record.kind === 'model-end') {
294
+ state.finishReason ??= finishReasonOf(record);
295
+ return;
296
+ }
297
+ for (const part of [...record.parts].reverse()) {
298
+ const kind = part.type === 'text-start' || part.type === 'text-end' ? 'text' : part.type === 'reasoning-start' || part.type === 'reasoning-end' ? 'reasoning' : undefined;
299
+ if (kind === undefined || !('id' in part))
300
+ continue;
301
+ const id = `${record.attempt}:${part.id}`;
302
+ if (part.type.endsWith('-end'))
303
+ ended.add(id);
304
+ else if (!ended.has(id)) {
305
+ state.openParts.set(id, kind);
306
+ state.detachedParts.add(id);
307
+ }
308
+ }
214
309
  }
215
310
  // A live re-execution of the open step: end the stale attempt's parts and tell the client which ones to discard.
216
311
  function* supersede(state, attempt) {
217
- for (const [id, kind] of state.openParts)
218
- yield { type: kind === 'text' ? 'text-end' : 'reasoning-end', id };
312
+ for (const [id, kind] of state.openParts) {
313
+ if (!state.detachedParts.has(id))
314
+ yield { type: kind === 'text' ? 'text-end' : 'reasoning-end', id };
315
+ }
219
316
  yield {
220
317
  type: 'data-dbos-superseded',
221
318
  data: { attempt: state.openAttempt, parts: [...state.openParts.keys()] },
222
319
  transient: true,
223
320
  };
224
321
  state.openParts.clear();
322
+ state.detachedParts.clear();
225
323
  state.openAttempt = attempt;
226
324
  }
227
325
  function* emitRecord(state, record, filter) {
@@ -230,9 +328,7 @@ function* emitRecord(state, record, filter) {
230
328
  case 'model': {
231
329
  if (state.openStep !== record.step) {
232
330
  yield* closeStep(state);
233
- if (!state.resumed)
234
- yield { type: 'start-step' };
235
- state.resumed = false;
331
+ yield { type: 'start-step' };
236
332
  state.openStep = record.step;
237
333
  state.openAttempt = record.attempt;
238
334
  }
@@ -258,14 +354,28 @@ function* emitRecord(state, record, filter) {
258
354
  case 'model-end':
259
355
  // The stream outlives the call: the workflow may run more calls, so only its end (or closeDurableStream) ends the turn.
260
356
  if (record.attempt === state.openAttempt)
261
- state.finishReason = record.aborted ? 'other' : record.finishReason?.unified;
357
+ state.finishReason = finishReasonOf(record);
262
358
  break;
263
- case 'tool':
359
+ case 'tool': {
360
+ const key = toolKey(record);
361
+ const chunks = record.chunks ?? [];
362
+ const sent = state.toolChunksSent.get(key);
363
+ // A live re-execution that wrote the same chunks changes nothing; different ones (or none) replace what the client has.
364
+ if (chunks.length > 0 || sent !== undefined) {
365
+ const digest = (0, node_crypto_1.createHash)('sha256').update(JSON.stringify(chunks)).digest('base64');
366
+ if (sent !== digest) {
367
+ if (sent !== undefined)
368
+ yield { type: 'data-dbos-tool-superseded', data: { toolCallId: record.toolCallId }, transient: true };
369
+ state.toolChunksSent.set(key, digest);
370
+ yield* chunks;
371
+ }
372
+ }
264
373
  // Local tool errors are masked like the AI SDK does; provider-executed ones (in model records) pass through verbatim.
265
374
  yield record.errorText !== undefined
266
375
  ? { type: 'tool-output-error', toolCallId: record.toolCallId, errorText: filter.onError(new Error(record.errorText)) }
267
376
  : { type: 'tool-output-available', toolCallId: record.toolCallId, output: record.output };
268
377
  break;
378
+ }
269
379
  case 'ui':
270
380
  yield* record.chunks;
271
381
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"durable-stream.js","sourceRoot":"","sources":["../src/durable-stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"durable-stream.js","sourceRoot":"","sources":["../src/durable-stream.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { durableCalls, DurableCallsOptions, durableEmbeddingCalls, durableImageCalls } from './middleware';
2
2
  export { durableMCPTools, DurableMCPToolsOptions, MCPClientLike } from './mcp';
3
- export { durableTools, DurableToolsOptions } from './tools';
3
+ export { durableTools, DurableToolsOptions, toolWriter } from './tools';
4
4
  export { closeDurableStream, DurableStreamOptions, DurableStreamRecord, DurableStreamSource, ReadDurableStreamOptions, readDurableStream, writeDurableStream, } from './durable-stream';
5
5
  export { agentTool, AgentTool, AgentToolOptions } from './agent-tool';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC3G,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC3G,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.agentTool = exports.writeDurableStream = exports.readDurableStream = exports.closeDurableStream = exports.durableTools = exports.durableMCPTools = exports.durableImageCalls = exports.durableEmbeddingCalls = exports.durableCalls = void 0;
3
+ exports.agentTool = exports.writeDurableStream = exports.readDurableStream = exports.closeDurableStream = exports.toolWriter = exports.durableTools = exports.durableMCPTools = exports.durableImageCalls = exports.durableEmbeddingCalls = exports.durableCalls = void 0;
4
4
  var middleware_1 = require("./middleware");
5
5
  Object.defineProperty(exports, "durableCalls", { enumerable: true, get: function () { return middleware_1.durableCalls; } });
6
6
  Object.defineProperty(exports, "durableEmbeddingCalls", { enumerable: true, get: function () { return middleware_1.durableEmbeddingCalls; } });
@@ -9,6 +9,7 @@ var mcp_1 = require("./mcp");
9
9
  Object.defineProperty(exports, "durableMCPTools", { enumerable: true, get: function () { return mcp_1.durableMCPTools; } });
10
10
  var tools_1 = require("./tools");
11
11
  Object.defineProperty(exports, "durableTools", { enumerable: true, get: function () { return tools_1.durableTools; } });
12
+ Object.defineProperty(exports, "toolWriter", { enumerable: true, get: function () { return tools_1.toolWriter; } });
12
13
  var durable_stream_1 = require("./durable-stream");
13
14
  Object.defineProperty(exports, "closeDurableStream", { enumerable: true, get: function () { return durable_stream_1.closeDurableStream; } });
14
15
  Object.defineProperty(exports, "readDurableStream", { enumerable: true, get: function () { return durable_stream_1.readDurableStream; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2CAA2G;AAAlG,0GAAA,YAAY,OAAA;AAAuB,mHAAA,qBAAqB,OAAA;AAAE,+GAAA,iBAAiB,OAAA;AACpF,6BAA+E;AAAtE,sGAAA,eAAe,OAAA;AACxB,iCAA4D;AAAnD,qGAAA,YAAY,OAAA;AACrB,mDAQ0B;AAPxB,oHAAA,kBAAkB,OAAA;AAKlB,mHAAA,iBAAiB,OAAA;AACjB,oHAAA,kBAAkB,OAAA;AAEpB,2CAAsE;AAA7D,uGAAA,SAAS,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2CAA2G;AAAlG,0GAAA,YAAY,OAAA;AAAuB,mHAAA,qBAAqB,OAAA;AAAE,+GAAA,iBAAiB,OAAA;AACpF,6BAA+E;AAAtE,sGAAA,eAAe,OAAA;AACxB,iCAAwE;AAA/D,qGAAA,YAAY,OAAA;AAAuB,mGAAA,UAAU,OAAA;AACtD,mDAQ0B;AAPxB,oHAAA,kBAAkB,OAAA;AAKlB,mHAAA,iBAAiB,OAAA;AACjB,oHAAA,kBAAkB,OAAA;AAEpB,2CAAsE;AAA7D,uGAAA,SAAS,OAAA"}
@@ -2,6 +2,15 @@ import { StepConfig } from '@dbos-inc/dbos-sdk';
2
2
  export declare function isInWorkflowFunction(): boolean;
3
3
  export declare function assertNotInTransaction(operation: string): void;
4
4
  export declare function runDurableStep<T>(name: string, fn: () => Promise<T>, config: StepConfig): Promise<T>;
5
+ export declare function stepCancelSignal(): AbortSignal | undefined;
6
+ /**
7
+ * DBOS discards a timed-out attempt's result, so a stream record of it would contradict the checkpoint. Returns the
8
+ * outcome to record instead: the timeout when the step ends with it, `null` when a retry follows, `undefined` if not timed out.
9
+ */
10
+ export declare function timedOutOutcome(shouldRetry: StepConfig['shouldRetry']): Promise<{
11
+ errorText: string;
12
+ } | null | undefined>;
13
+ export declare function anySignal(...signals: (AbortSignal | undefined)[]): AbortSignal | undefined;
5
14
  export declare function isAsyncIterable(value: unknown): value is AsyncIterable<unknown>;
6
15
  export declare function restoreAISDKErrorIdentity(error: unknown): unknown;
7
16
  export declare function withErrorClassification(options: StepConfig): StepConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEtD,wBAAgB,oBAAoB,IAAI,OAAO,CAG9C;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAI9D;AAGD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAOpG;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAAC,OAAO,CAAC,CAE/E;AA2BD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAejE;AAKD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,CAMvE"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEtD,wBAAgB,oBAAoB,IAAI,OAAO,CAG9C;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAI9D;AAGD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAOpG;AAGD,wBAAgB,gBAAgB,IAAI,WAAW,GAAG,SAAS,CAE1D;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,CAAC,CAQ/H;AAGD,wBAAgB,SAAS,CAAC,GAAG,OAAO,EAAE,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,GAAG,WAAW,GAAG,SAAS,CAG1F;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAAC,OAAO,CAAC,CAE/E;AA2BD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAejE;AAKD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,CAMvE"}
package/dist/internal.js CHANGED
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isInWorkflowFunction = isInWorkflowFunction;
4
4
  exports.assertNotInTransaction = assertNotInTransaction;
5
5
  exports.runDurableStep = runDurableStep;
6
+ exports.stepCancelSignal = stepCancelSignal;
7
+ exports.timedOutOutcome = timedOutOutcome;
8
+ exports.anySignal = anySignal;
6
9
  exports.isAsyncIterable = isAsyncIterable;
7
10
  exports.restoreAISDKErrorIdentity = restoreAISDKErrorIdentity;
8
11
  exports.withErrorClassification = withErrorClassification;
@@ -26,6 +29,29 @@ function runDurableStep(name, fn, config) {
26
29
  throw restoreAISDKErrorIdentity(error);
27
30
  });
28
31
  }
32
+ // DBOS 5.1+ fires stepStatus.cancelSignal when the step's workflow is cancelled; older versions have none.
33
+ function stepCancelSignal() {
34
+ return dbos_sdk_1.DBOS.stepStatus?.cancelSignal;
35
+ }
36
+ /**
37
+ * DBOS discards a timed-out attempt's result, so a stream record of it would contradict the checkpoint. Returns the
38
+ * outcome to record instead: the timeout when the step ends with it, `null` when a retry follows, `undefined` if not timed out.
39
+ */
40
+ async function timedOutOutcome(shouldRetry) {
41
+ const status = dbos_sdk_1.DBOS.stepStatus;
42
+ if (status?.timeoutSignal?.aborted !== true)
43
+ return undefined;
44
+ const reason = status.timeoutSignal.reason;
45
+ const lastAttempt = status.currentAttempt === undefined || status.currentAttempt >= (status.maxAttempts ?? 1);
46
+ // DBOS asks the step's shouldRetry about this same error (the signal's reason) before retrying; a throw ends the step.
47
+ const retried = !lastAttempt && (await Promise.resolve(shouldRetry ? shouldRetry(reason) : true).catch(() => false));
48
+ return retried ? null : { errorText: reason instanceof Error ? reason.message : 'The step timed out.' };
49
+ }
50
+ // Fires when any given signal does; a lone signal is returned as-is.
51
+ function anySignal(...signals) {
52
+ const defined = signals.filter((s) => s !== undefined);
53
+ return defined.length <= 1 ? defined[0] : AbortSignal.any(defined);
54
+ }
29
55
  function isAsyncIterable(value) {
30
56
  return typeof value?.[Symbol.asyncIterator] === 'function';
31
57
  }