@yolk-sdk/vercel-workflows 0.1.0-canary.25 → 0.1.0-canary.26

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
@@ -23,8 +23,10 @@ Import Workflow APIs from the package root:
23
23
 
24
24
  ```ts
25
25
  import {
26
+ makeDurableAgentEventSequencerState,
26
27
  noWorkflowStepRetry,
27
- runVercelAgentWorkflow
28
+ runVercelAgentWorkflow,
29
+ writeDurableAgentEvent
28
30
  } from '@yolk-sdk/vercel-workflows'
29
31
  ```
30
32
 
@@ -88,7 +90,33 @@ tokens that the resume side can reconstruct or store.
88
90
 
89
91
  ## Retry policy
90
92
 
91
- Default retry policy is `noWorkflowStepRetry` (`maxAttempts: 1`). Retries are opt-in because streamed retries can duplicate chunks unless host/client de-dupe is ready.
93
+ Default retry policy is `noWorkflowStepRetry` (`maxAttempts: 1`). Retries are opt-in because
94
+ streamed retries can duplicate chunks unless host/client de-dupe is ready.
95
+
96
+ ## Durable stream events
97
+
98
+ Workflow streams can replay old chunks after retries or reconnects. Durable streams should emit an
99
+ `eventId` on every JSON-serializable event, typically `AgentEvent`, including errors. Clients should
100
+ track seen ids.
101
+
102
+ Use `writeDurableAgentEvent` to assign deterministic ids and write NDJSON:
103
+
104
+ ```ts
105
+ const state = makeDurableAgentEventSequencerState(eventSequence)
106
+ const sequenced = await writeDurableAgentEvent({
107
+ writer,
108
+ event,
109
+ streamId: 'workflow',
110
+ turn,
111
+ state
112
+ })
113
+
114
+ eventSequence = sequenced.nextEventSequence
115
+ ```
116
+
117
+ The id format is `${streamId}:${turn}:${eventSequence}`. Keep `eventSequence` in Workflow state.
118
+ Resume route reads should use `startIndex` when available. Host apps still own active-run locking,
119
+ stale-run guards, and cancellation behavior.
92
120
 
93
121
  ## Host responsibilities
94
122
 
@@ -97,6 +125,7 @@ Default retry policy is `noWorkflowStepRetry` (`maxAttempts: 1`). Retries are op
97
125
  - Preserve tool result order and never advance the next model step with dangling host tool calls.
98
126
  - Decide cancellation/resume/conflict UX.
99
127
  - Own hook tokens and response validation for HITL resume.
128
+ - Emit replay-safe event ids for durable streams and de-dupe by `eventId` client-side.
100
129
  - Test directive behavior with `@workflow/vitest` when changing package-owned Workflow files.
101
130
 
102
131
  ## Boundaries
package/dist/index.d.mts CHANGED
@@ -1,2 +1,3 @@
1
1
  import { SerializableWorkflowState, VercelAgentWorkflowAwaitingInput, VercelAgentWorkflowInput, VercelAgentWorkflowLoopConfig, VercelAgentWorkflowModelStepInput, VercelAgentWorkflowModelStepResult, VercelAgentWorkflowRunResult, VercelAgentWorkflowStepRetryPolicy, VercelAgentWorkflowToolBatchStepInput, VercelAgentWorkflowToolBatchStepResult, WorkflowStepResult, defaultMaxWorkflowTurns, noWorkflowStepRetry, retryWorkflowStep, runVercelAgentWorkflow, settleWorkflowStep } from "./workflow-loop.mjs";
2
- export { type SerializableWorkflowState, type VercelAgentWorkflowAwaitingInput, type VercelAgentWorkflowInput, type VercelAgentWorkflowLoopConfig, type VercelAgentWorkflowModelStepInput, type VercelAgentWorkflowModelStepResult, type VercelAgentWorkflowRunResult, type VercelAgentWorkflowStepRetryPolicy, type VercelAgentWorkflowToolBatchStepInput, type VercelAgentWorkflowToolBatchStepResult, type WorkflowStepResult, defaultMaxWorkflowTurns, noWorkflowStepRetry, retryWorkflowStep, runVercelAgentWorkflow, settleWorkflowStep };
2
+ import { DurableAgentEvent, DurableAgentEventIdInput, DurableAgentEventSequencerState, SequenceDurableAgentEventInput, SequencedDurableAgentEvent, WriteDurableAgentEventInput, durableAgentEventId, makeDurableAgentEventSequencerState, sequenceDurableAgentEvent, writeDurableAgentEvent } from "./workflow-events.mjs";
3
+ export { type DurableAgentEvent, type DurableAgentEventIdInput, type DurableAgentEventSequencerState, type SequenceDurableAgentEventInput, type SequencedDurableAgentEvent, type SerializableWorkflowState, type VercelAgentWorkflowAwaitingInput, type VercelAgentWorkflowInput, type VercelAgentWorkflowLoopConfig, type VercelAgentWorkflowModelStepInput, type VercelAgentWorkflowModelStepResult, type VercelAgentWorkflowRunResult, type VercelAgentWorkflowStepRetryPolicy, type VercelAgentWorkflowToolBatchStepInput, type VercelAgentWorkflowToolBatchStepResult, type WorkflowStepResult, type WriteDurableAgentEventInput, defaultMaxWorkflowTurns, durableAgentEventId, makeDurableAgentEventSequencerState, noWorkflowStepRetry, retryWorkflowStep, runVercelAgentWorkflow, sequenceDurableAgentEvent, settleWorkflowStep, writeDurableAgentEvent };
package/dist/index.mjs CHANGED
@@ -1,2 +1,3 @@
1
1
  import { defaultMaxWorkflowTurns, noWorkflowStepRetry, retryWorkflowStep, runVercelAgentWorkflow, settleWorkflowStep } from "./workflow-loop.mjs";
2
- export { defaultMaxWorkflowTurns, noWorkflowStepRetry, retryWorkflowStep, runVercelAgentWorkflow, settleWorkflowStep };
2
+ import { durableAgentEventId, makeDurableAgentEventSequencerState, sequenceDurableAgentEvent, writeDurableAgentEvent } from "./workflow-events.mjs";
3
+ export { defaultMaxWorkflowTurns, durableAgentEventId, makeDurableAgentEventSequencerState, noWorkflowStepRetry, retryWorkflowStep, runVercelAgentWorkflow, sequenceDurableAgentEvent, settleWorkflowStep, writeDurableAgentEvent };
@@ -0,0 +1,36 @@
1
+ //#region src/workflow-events.d.ts
2
+ type DurableAgentEventSequencerState = {
3
+ readonly eventSequence: number;
4
+ };
5
+ type DurableAgentEvent<Event extends object = object> = Event & {
6
+ readonly eventId: string;
7
+ readonly createdAtMs?: number;
8
+ };
9
+ type DurableAgentEventIdInput = {
10
+ readonly streamId: string;
11
+ readonly turn: number;
12
+ readonly eventSequence: number;
13
+ };
14
+ type SequenceDurableAgentEventInput<Event extends object = object> = {
15
+ readonly state: DurableAgentEventSequencerState;
16
+ readonly streamId: string;
17
+ readonly turn: number;
18
+ readonly event: Event;
19
+ readonly createdAtMs?: number;
20
+ };
21
+ type SequencedDurableAgentEvent<Event extends object = object> = {
22
+ readonly event: DurableAgentEvent<Event>;
23
+ readonly eventSequence: number;
24
+ readonly nextEventSequence: number;
25
+ readonly nextState: DurableAgentEventSequencerState;
26
+ };
27
+ type WriteDurableAgentEventInput<Event extends object = object> = SequenceDurableAgentEventInput<Event> & {
28
+ readonly writer: WritableStreamDefaultWriter<Uint8Array>;
29
+ };
30
+ declare const makeDurableAgentEventSequencerState: (eventSequence?: number) => DurableAgentEventSequencerState;
31
+ declare const durableAgentEventId: (input: DurableAgentEventIdInput) => string;
32
+ declare const sequenceDurableAgentEvent: <Event extends object>(input: SequenceDurableAgentEventInput<Event>) => SequencedDurableAgentEvent<Event>;
33
+ declare const writeDurableAgentEvent: <Event extends object>(input: WriteDurableAgentEventInput<Event>) => Promise<SequencedDurableAgentEvent<Event>>;
34
+ //#endregion
35
+ export { DurableAgentEvent, DurableAgentEventIdInput, DurableAgentEventSequencerState, SequenceDurableAgentEventInput, SequencedDurableAgentEvent, WriteDurableAgentEventInput, durableAgentEventId, makeDurableAgentEventSequencerState, sequenceDurableAgentEvent, writeDurableAgentEvent };
36
+ //# sourceMappingURL=workflow-events.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-events.d.mts","names":[],"sources":["../src/workflow-events.ts"],"mappings":";KAAY,+BAAA;EAAA,SACD,aAAa;AAAA;AAAA,KAGZ,iBAAA,kCAAmD,KAAK;EAAA,SACzD,OAAA;EAAA,SACA,WAAA;AAAA;AAAA,KAGC,wBAAA;EAAA,SACD,QAAA;EAAA,SACA,IAAA;EAAA,SACA,aAAA;AAAA;AAAA,KAGC,8BAAA;EAAA,SACD,KAAA,EAAO,+BAAA;EAAA,SACP,QAAA;EAAA,SACA,IAAA;EAAA,SACA,KAAA,EAAO,KAAK;EAAA,SACZ,WAAA;AAAA;AAAA,KAGC,0BAAA;EAAA,SACD,KAAA,EAAO,iBAAA,CAAkB,KAAA;EAAA,SACzB,aAAA;EAAA,SACA,iBAAA;EAAA,SACA,SAAA,EAAW,+BAAA;AAAA;AAAA,KAGV,2BAAA,kCACV,8BAAA,CAA+B,KAAA;EAAA,SACpB,MAAA,EAAQ,2BAAA,CAA4B,UAAA;AAAA;AAAA,cAKpC,mCAAA,GACX,aAAA,cACC,+BAAsD;AAAA,cAE5C,mBAAA,GAAuB,KAA+B,EAAxB,wBAAwB;AAAA,cAGtD,yBAAA,yBACX,KAAA,EAAO,8BAAA,CAA+B,KAAA,MACrC,0BAAA,CAA2B,KAAA;AAAA,cA0BjB,sBAAA,yBACX,KAAA,EAAO,2BAAA,CAA4B,KAAA,MAClC,OAAA,CAAQ,0BAAA,CAA2B,KAAA"}
@@ -0,0 +1,32 @@
1
+ //#region src/workflow-events.ts
2
+ const textEncoder = new TextEncoder();
3
+ const makeDurableAgentEventSequencerState = (eventSequence = 0) => ({ eventSequence });
4
+ const durableAgentEventId = (input) => `${input.streamId}:${input.turn}:${input.eventSequence}`;
5
+ const sequenceDurableAgentEvent = (input) => {
6
+ const eventSequence = input.state.eventSequence;
7
+ const nextEventSequence = eventSequence + 1;
8
+ return {
9
+ event: {
10
+ ...input.event,
11
+ eventId: durableAgentEventId({
12
+ streamId: input.streamId,
13
+ turn: input.turn,
14
+ eventSequence
15
+ }),
16
+ ...input.createdAtMs === void 0 ? {} : { createdAtMs: input.createdAtMs }
17
+ },
18
+ eventSequence,
19
+ nextEventSequence,
20
+ nextState: makeDurableAgentEventSequencerState(nextEventSequence)
21
+ };
22
+ };
23
+ const encodeDurableAgentEventNdjson = (event) => textEncoder.encode(`${JSON.stringify(event)}\n`);
24
+ const writeDurableAgentEvent = async (input) => {
25
+ const sequenced = sequenceDurableAgentEvent(input);
26
+ await input.writer.write(encodeDurableAgentEventNdjson(sequenced.event));
27
+ return sequenced;
28
+ };
29
+ //#endregion
30
+ export { durableAgentEventId, makeDurableAgentEventSequencerState, sequenceDurableAgentEvent, writeDurableAgentEvent };
31
+
32
+ //# sourceMappingURL=workflow-events.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-events.mjs","names":[],"sources":["../src/workflow-events.ts"],"sourcesContent":["export type DurableAgentEventSequencerState = {\n readonly eventSequence: number\n}\n\nexport type DurableAgentEvent<Event extends object = object> = Event & {\n readonly eventId: string\n readonly createdAtMs?: number\n}\n\nexport type DurableAgentEventIdInput = {\n readonly streamId: string\n readonly turn: number\n readonly eventSequence: number\n}\n\nexport type SequenceDurableAgentEventInput<Event extends object = object> = {\n readonly state: DurableAgentEventSequencerState\n readonly streamId: string\n readonly turn: number\n readonly event: Event\n readonly createdAtMs?: number\n}\n\nexport type SequencedDurableAgentEvent<Event extends object = object> = {\n readonly event: DurableAgentEvent<Event>\n readonly eventSequence: number\n readonly nextEventSequence: number\n readonly nextState: DurableAgentEventSequencerState\n}\n\nexport type WriteDurableAgentEventInput<Event extends object = object> =\n SequenceDurableAgentEventInput<Event> & {\n readonly writer: WritableStreamDefaultWriter<Uint8Array>\n }\n\nconst textEncoder = new TextEncoder()\n\nexport const makeDurableAgentEventSequencerState = (\n eventSequence = 0\n): DurableAgentEventSequencerState => ({ eventSequence })\n\nexport const durableAgentEventId = (input: DurableAgentEventIdInput) =>\n `${input.streamId}:${input.turn}:${input.eventSequence}`\n\nexport const sequenceDurableAgentEvent = <Event extends object>(\n input: SequenceDurableAgentEventInput<Event>\n): SequencedDurableAgentEvent<Event> => {\n const eventSequence = input.state.eventSequence\n const nextEventSequence = eventSequence + 1\n const event = {\n ...input.event,\n eventId: durableAgentEventId({\n streamId: input.streamId,\n turn: input.turn,\n eventSequence\n }),\n ...(input.createdAtMs === undefined ? {} : { createdAtMs: input.createdAtMs })\n }\n\n return {\n event,\n eventSequence,\n nextEventSequence,\n nextState: makeDurableAgentEventSequencerState(nextEventSequence)\n }\n}\n\nconst encodeDurableAgentEventNdjson = <Event extends object>(\n event: DurableAgentEvent<Event>\n) =>\n textEncoder.encode(`${JSON.stringify(event)}\\n`)\n\nexport const writeDurableAgentEvent = async <Event extends object>(\n input: WriteDurableAgentEventInput<Event>\n): Promise<SequencedDurableAgentEvent<Event>> => {\n const sequenced = sequenceDurableAgentEvent(input)\n await input.writer.write(encodeDurableAgentEventNdjson(sequenced.event))\n\n return sequenced\n}\n"],"mappings":";AAmCA,MAAM,cAAc,IAAI,YAAY;AAEpC,MAAa,uCACX,gBAAgB,OACqB,EAAE,cAAc;AAEvD,MAAa,uBAAuB,UAClC,GAAG,MAAM,SAAS,GAAG,MAAM,KAAK,GAAG,MAAM;AAE3C,MAAa,6BACX,UACsC;CACtC,MAAM,gBAAgB,MAAM,MAAM;CAClC,MAAM,oBAAoB,gBAAgB;CAW1C,OAAO;EACL,OAAA;GAVA,GAAG,MAAM;GACT,SAAS,oBAAoB;IAC3B,UAAU,MAAM;IAChB,MAAM,MAAM;IACZ;GACF,CAAC;GACD,GAAI,MAAM,gBAAgB,KAAA,IAAY,CAAC,IAAI,EAAE,aAAa,MAAM,YAAY;EAIxE;EACJ;EACA;EACA,WAAW,oCAAoC,iBAAiB;CAClE;AACF;AAEA,MAAM,iCACJ,UAEA,YAAY,OAAO,GAAG,KAAK,UAAU,KAAK,EAAE,GAAG;AAEjD,MAAa,yBAAyB,OACpC,UAC+C;CAC/C,MAAM,YAAY,0BAA0B,KAAK;CACjD,MAAM,MAAM,OAAO,MAAM,8BAA8B,UAAU,KAAK,CAAC;CAEvE,OAAO;AACT"}
@@ -1,2 +1,3 @@
1
1
  import { SerializableWorkflowState, VercelAgentWorkflowAwaitingInput, VercelAgentWorkflowInput, VercelAgentWorkflowLoopConfig, VercelAgentWorkflowModelStepInput, VercelAgentWorkflowModelStepResult, VercelAgentWorkflowRunResult, VercelAgentWorkflowStepRetryPolicy, VercelAgentWorkflowToolBatchStepInput, VercelAgentWorkflowToolBatchStepResult, WorkflowStepResult, defaultMaxWorkflowTurns, noWorkflowStepRetry, retryWorkflowStep, runVercelAgentWorkflow, settleWorkflowStep } from "./workflow-loop.mjs";
2
- export { type SerializableWorkflowState, type VercelAgentWorkflowAwaitingInput, type VercelAgentWorkflowInput, type VercelAgentWorkflowLoopConfig, type VercelAgentWorkflowModelStepInput, type VercelAgentWorkflowModelStepResult, type VercelAgentWorkflowRunResult, type VercelAgentWorkflowStepRetryPolicy, type VercelAgentWorkflowToolBatchStepInput, type VercelAgentWorkflowToolBatchStepResult, type WorkflowStepResult, defaultMaxWorkflowTurns, noWorkflowStepRetry, retryWorkflowStep, runVercelAgentWorkflow, settleWorkflowStep };
2
+ import { DurableAgentEvent, DurableAgentEventIdInput, DurableAgentEventSequencerState, SequenceDurableAgentEventInput, SequencedDurableAgentEvent, WriteDurableAgentEventInput, durableAgentEventId, makeDurableAgentEventSequencerState, sequenceDurableAgentEvent, writeDurableAgentEvent } from "./workflow-events.mjs";
3
+ export { type DurableAgentEvent, type DurableAgentEventIdInput, type DurableAgentEventSequencerState, type SequenceDurableAgentEventInput, type SequencedDurableAgentEvent, type SerializableWorkflowState, type VercelAgentWorkflowAwaitingInput, type VercelAgentWorkflowInput, type VercelAgentWorkflowLoopConfig, type VercelAgentWorkflowModelStepInput, type VercelAgentWorkflowModelStepResult, type VercelAgentWorkflowRunResult, type VercelAgentWorkflowStepRetryPolicy, type VercelAgentWorkflowToolBatchStepInput, type VercelAgentWorkflowToolBatchStepResult, type WorkflowStepResult, type WriteDurableAgentEventInput, defaultMaxWorkflowTurns, durableAgentEventId, makeDurableAgentEventSequencerState, noWorkflowStepRetry, retryWorkflowStep, runVercelAgentWorkflow, sequenceDurableAgentEvent, settleWorkflowStep, writeDurableAgentEvent };
package/dist/workflow.mjs CHANGED
@@ -1,2 +1,3 @@
1
1
  import { defaultMaxWorkflowTurns, noWorkflowStepRetry, retryWorkflowStep, runVercelAgentWorkflow, settleWorkflowStep } from "./workflow-loop.mjs";
2
- export { defaultMaxWorkflowTurns, noWorkflowStepRetry, retryWorkflowStep, runVercelAgentWorkflow, settleWorkflowStep };
2
+ import { durableAgentEventId, makeDurableAgentEventSequencerState, sequenceDurableAgentEvent, writeDurableAgentEvent } from "./workflow-events.mjs";
3
+ export { defaultMaxWorkflowTurns, durableAgentEventId, makeDurableAgentEventSequencerState, noWorkflowStepRetry, retryWorkflowStep, runVercelAgentWorkflow, sequenceDurableAgentEvent, settleWorkflowStep, writeDurableAgentEvent };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yolk-sdk/vercel-workflows",
3
- "version": "0.1.0-canary.25",
3
+ "version": "0.1.0-canary.26",
4
4
  "description": "Vercel Workflow orchestration primitives for Yolk agent loops.",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/index.ts CHANGED
@@ -1,11 +1,20 @@
1
1
  export {
2
+ durableAgentEventId,
2
3
  defaultMaxWorkflowTurns,
4
+ makeDurableAgentEventSequencerState,
3
5
  noWorkflowStepRetry,
4
6
  retryWorkflowStep,
5
7
  runVercelAgentWorkflow,
6
- settleWorkflowStep
8
+ sequenceDurableAgentEvent,
9
+ settleWorkflowStep,
10
+ writeDurableAgentEvent
7
11
  } from './workflow.ts'
8
12
  export type {
13
+ DurableAgentEvent,
14
+ DurableAgentEventIdInput,
15
+ DurableAgentEventSequencerState,
16
+ SequenceDurableAgentEventInput,
17
+ SequencedDurableAgentEvent,
9
18
  SerializableWorkflowState,
10
19
  VercelAgentWorkflowAwaitingInput,
11
20
  VercelAgentWorkflowInput,
@@ -16,5 +25,6 @@ export type {
16
25
  VercelAgentWorkflowStepRetryPolicy,
17
26
  VercelAgentWorkflowToolBatchStepInput,
18
27
  VercelAgentWorkflowToolBatchStepResult,
19
- WorkflowStepResult
28
+ WorkflowStepResult,
29
+ WriteDurableAgentEventInput
20
30
  } from './workflow.ts'
@@ -0,0 +1,80 @@
1
+ export type DurableAgentEventSequencerState = {
2
+ readonly eventSequence: number
3
+ }
4
+
5
+ export type DurableAgentEvent<Event extends object = object> = Event & {
6
+ readonly eventId: string
7
+ readonly createdAtMs?: number
8
+ }
9
+
10
+ export type DurableAgentEventIdInput = {
11
+ readonly streamId: string
12
+ readonly turn: number
13
+ readonly eventSequence: number
14
+ }
15
+
16
+ export type SequenceDurableAgentEventInput<Event extends object = object> = {
17
+ readonly state: DurableAgentEventSequencerState
18
+ readonly streamId: string
19
+ readonly turn: number
20
+ readonly event: Event
21
+ readonly createdAtMs?: number
22
+ }
23
+
24
+ export type SequencedDurableAgentEvent<Event extends object = object> = {
25
+ readonly event: DurableAgentEvent<Event>
26
+ readonly eventSequence: number
27
+ readonly nextEventSequence: number
28
+ readonly nextState: DurableAgentEventSequencerState
29
+ }
30
+
31
+ export type WriteDurableAgentEventInput<Event extends object = object> =
32
+ SequenceDurableAgentEventInput<Event> & {
33
+ readonly writer: WritableStreamDefaultWriter<Uint8Array>
34
+ }
35
+
36
+ const textEncoder = new TextEncoder()
37
+
38
+ export const makeDurableAgentEventSequencerState = (
39
+ eventSequence = 0
40
+ ): DurableAgentEventSequencerState => ({ eventSequence })
41
+
42
+ export const durableAgentEventId = (input: DurableAgentEventIdInput) =>
43
+ `${input.streamId}:${input.turn}:${input.eventSequence}`
44
+
45
+ export const sequenceDurableAgentEvent = <Event extends object>(
46
+ input: SequenceDurableAgentEventInput<Event>
47
+ ): SequencedDurableAgentEvent<Event> => {
48
+ const eventSequence = input.state.eventSequence
49
+ const nextEventSequence = eventSequence + 1
50
+ const event = {
51
+ ...input.event,
52
+ eventId: durableAgentEventId({
53
+ streamId: input.streamId,
54
+ turn: input.turn,
55
+ eventSequence
56
+ }),
57
+ ...(input.createdAtMs === undefined ? {} : { createdAtMs: input.createdAtMs })
58
+ }
59
+
60
+ return {
61
+ event,
62
+ eventSequence,
63
+ nextEventSequence,
64
+ nextState: makeDurableAgentEventSequencerState(nextEventSequence)
65
+ }
66
+ }
67
+
68
+ const encodeDurableAgentEventNdjson = <Event extends object>(
69
+ event: DurableAgentEvent<Event>
70
+ ) =>
71
+ textEncoder.encode(`${JSON.stringify(event)}\n`)
72
+
73
+ export const writeDurableAgentEvent = async <Event extends object>(
74
+ input: WriteDurableAgentEventInput<Event>
75
+ ): Promise<SequencedDurableAgentEvent<Event>> => {
76
+ const sequenced = sequenceDurableAgentEvent(input)
77
+ await input.writer.write(encodeDurableAgentEventNdjson(sequenced.event))
78
+
79
+ return sequenced
80
+ }
package/src/workflow.ts CHANGED
@@ -5,6 +5,12 @@ export {
5
5
  runVercelAgentWorkflow,
6
6
  settleWorkflowStep
7
7
  } from './workflow-loop.ts'
8
+ export {
9
+ durableAgentEventId,
10
+ makeDurableAgentEventSequencerState,
11
+ sequenceDurableAgentEvent,
12
+ writeDurableAgentEvent
13
+ } from './workflow-events.ts'
8
14
  export type {
9
15
  SerializableWorkflowState,
10
16
  VercelAgentWorkflowAwaitingInput,
@@ -18,3 +24,11 @@ export type {
18
24
  VercelAgentWorkflowToolBatchStepResult,
19
25
  WorkflowStepResult
20
26
  } from './workflow-loop.ts'
27
+ export type {
28
+ DurableAgentEvent,
29
+ DurableAgentEventIdInput,
30
+ DurableAgentEventSequencerState,
31
+ SequenceDurableAgentEventInput,
32
+ SequencedDurableAgentEvent,
33
+ WriteDurableAgentEventInput
34
+ } from './workflow-events.ts'