ai-workflows 2.1.3 → 2.4.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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +14 -1
- package/README.md +2 -0
- package/dist/barrier.d.ts +6 -0
- package/dist/barrier.d.ts.map +1 -1
- package/dist/barrier.js +45 -7
- package/dist/barrier.js.map +1 -1
- package/dist/cascade-context.d.ts.map +1 -1
- package/dist/cascade-context.js +25 -25
- package/dist/cascade-context.js.map +1 -1
- package/dist/cascade-executor.d.ts.map +1 -1
- package/dist/cascade-executor.js +1 -1
- package/dist/cascade-executor.js.map +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +23 -7
- package/dist/context.js.map +1 -1
- package/dist/cron-parser.d.ts +65 -0
- package/dist/cron-parser.d.ts.map +1 -0
- package/dist/cron-parser.js +294 -0
- package/dist/cron-parser.js.map +1 -0
- package/dist/cron-scheduler.d.ts +117 -0
- package/dist/cron-scheduler.d.ts.map +1 -0
- package/dist/cron-scheduler.js +176 -0
- package/dist/cron-scheduler.js.map +1 -0
- package/dist/database-context.d.ts +184 -0
- package/dist/database-context.d.ts.map +1 -0
- package/dist/database-context.js +428 -0
- package/dist/database-context.js.map +1 -0
- package/dist/digital-objects-adapter.d.ts +159 -0
- package/dist/digital-objects-adapter.d.ts.map +1 -0
- package/dist/digital-objects-adapter.js +229 -0
- package/dist/digital-objects-adapter.js.map +1 -0
- package/dist/durable-execution-cloudflare.d.ts +427 -0
- package/dist/durable-execution-cloudflare.d.ts.map +1 -0
- package/dist/durable-execution-cloudflare.js +510 -0
- package/dist/durable-execution-cloudflare.js.map +1 -0
- package/dist/durable-execution.d.ts +482 -0
- package/dist/durable-execution.d.ts.map +1 -0
- package/dist/durable-execution.js +594 -0
- package/dist/durable-execution.js.map +1 -0
- package/dist/durable-workflow.d.ts +176 -0
- package/dist/durable-workflow.d.ts.map +1 -0
- package/dist/durable-workflow.js +552 -0
- package/dist/durable-workflow.js.map +1 -0
- package/dist/graph/topological-sort.d.ts.map +1 -1
- package/dist/graph/topological-sort.js +5 -5
- package/dist/graph/topological-sort.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +101 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +115 -0
- package/dist/logger.js.map +1 -0
- package/dist/on.d.ts.map +1 -1
- package/dist/on.js +3 -3
- package/dist/on.js.map +1 -1
- package/dist/runtime.d.ts +169 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +275 -0
- package/dist/runtime.js.map +1 -0
- package/dist/send.d.ts.map +1 -1
- package/dist/send.js +4 -3
- package/dist/send.js.map +1 -1
- package/dist/telemetry.d.ts +150 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +388 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/timer-registry.d.ts +25 -0
- package/dist/timer-registry.d.ts.map +1 -1
- package/dist/timer-registry.js +42 -8
- package/dist/timer-registry.js.map +1 -1
- package/dist/types.d.ts +17 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/worker/durable-step.d.ts +481 -0
- package/dist/worker/durable-step.d.ts.map +1 -0
- package/dist/worker/durable-step.js +606 -0
- package/dist/worker/durable-step.js.map +1 -0
- package/dist/worker/index.d.ts +106 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +124 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/worker/state-adapter.d.ts +230 -0
- package/dist/worker/state-adapter.d.ts.map +1 -0
- package/dist/worker/state-adapter.js +409 -0
- package/dist/worker/state-adapter.js.map +1 -0
- package/dist/worker/topological-executor.d.ts +282 -0
- package/dist/worker/topological-executor.d.ts.map +1 -0
- package/dist/worker/topological-executor.js +396 -0
- package/dist/worker/topological-executor.js.map +1 -0
- package/dist/worker/workflow-builder.d.ts +286 -0
- package/dist/worker/workflow-builder.d.ts.map +1 -0
- package/dist/worker/workflow-builder.js +565 -0
- package/dist/worker/workflow-builder.js.map +1 -0
- package/dist/worker.d.ts +800 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +2428 -0
- package/dist/worker.js.map +1 -0
- package/dist/workflow-builder.d.ts +287 -0
- package/dist/workflow-builder.d.ts.map +1 -0
- package/dist/workflow-builder.js +762 -0
- package/dist/workflow-builder.js.map +1 -0
- package/dist/workflow.d.ts +14 -30
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +132 -292
- package/dist/workflow.js.map +1 -1
- package/examples/01-ecommerce-order-pipeline.ts +358 -0
- package/examples/02-content-moderation-cascade.ts +454 -0
- package/examples/03-scheduled-reporting-dependencies.ts +479 -0
- package/examples/04-database-persistence.ts +518 -0
- package/examples/README.md +173 -0
- package/package.json +30 -13
- package/src/__tests__/digital-objects-adapter.test.ts +274 -0
- package/src/__tests__/durable-workflow.test.ts +297 -0
- package/src/barrier.ts +48 -7
- package/src/cascade-context.ts +36 -29
- package/src/cascade-executor.ts +3 -2
- package/src/context.ts +41 -12
- package/src/cron-parser.ts +347 -0
- package/src/cron-scheduler.ts +239 -0
- package/src/database-context.ts +658 -0
- package/src/digital-objects-adapter.ts +351 -0
- package/src/durable-execution-cloudflare.ts +855 -0
- package/src/durable-execution.ts +1042 -0
- package/src/durable-workflow.ts +717 -0
- package/src/graph/topological-sort.ts +6 -8
- package/src/index.ts +69 -0
- package/src/logger.ts +148 -0
- package/src/on.ts +8 -9
- package/src/runtime.ts +436 -0
- package/src/send.ts +4 -5
- package/src/telemetry.ts +577 -0
- package/src/timer-registry.ts +44 -10
- package/src/types.ts +32 -17
- package/src/worker/durable-step.ts +976 -0
- package/src/worker/index.ts +216 -0
- package/src/worker/state-adapter.ts +589 -0
- package/src/worker/topological-executor.ts +625 -0
- package/src/worker/workflow-builder.ts +871 -0
- package/src/worker.ts +2906 -0
- package/src/workflow-builder.ts +1068 -0
- package/src/workflow.ts +188 -351
- package/test/barrier-join.test.ts +32 -24
- package/test/cascade-executor.test.ts +9 -16
- package/test/cron-parser.test.ts +314 -0
- package/test/cron-scheduler.test.ts +291 -0
- package/test/database-context.test.ts +770 -0
- package/test/db-provider-adapter.test.ts +862 -0
- package/test/durable-execution-cloudflare.test.ts +606 -0
- package/test/durable-execution-in-process.test.ts +286 -0
- package/test/durable-execution.test.ts +247 -0
- package/test/e2e/workflow-scenarios.e2e.test.ts +1039 -0
- package/test/integration.test.ts +442 -0
- package/test/rpc-surface.test.ts +946 -0
- package/test/runtime.test.ts +262 -0
- package/test/schedule-timer-cleanup.test.ts +30 -21
- package/test/send-race-conditions.test.ts +30 -40
- package/test/worker/durable-cascade.test.ts +1117 -0
- package/test/worker/durable-step.test.ts +723 -0
- package/test/worker/topological-executor.test.ts +1240 -0
- package/test/worker/workflow-builder.test.ts +1067 -0
- package/test/worker.test.ts +608 -0
- package/test/workflow-builder.test.ts +1670 -0
- package/test/workflow-cron.test.ts +256 -0
- package/test/workflow-state-adapter.test.ts +923 -0
- package/test/workflow.test.ts +25 -22
- package/tsconfig.json +3 -1
- package/vitest.config.ts +38 -1
- package/vitest.workers.config.ts +44 -0
- package/wrangler.jsonc +22 -0
- package/.turbo/turbo-test.log +0 -169
- package/LICENSE +0 -21
- package/src/context.js +0 -83
- package/src/every.js +0 -267
- package/src/index.js +0 -71
- package/src/on.js +0 -79
- package/src/send.js +0 -111
- package/src/types.js +0 -4
- package/src/workflow.js +0 -455
- package/test/context.test.js +0 -116
- package/test/every.test.js +0 -282
- package/test/on.test.js +0 -80
- package/test/send.test.js +0 -89
- package/test/workflow.test.js +0 -224
- package/vitest.config.js +0 -7
package/dist/runtime.js
ADDED
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkflowRuntime - Owns the `$` runtime contract
|
|
3
|
+
*
|
|
4
|
+
* Purpose: Single module that owns end-to-end construction of the `$` context
|
|
5
|
+
* a workflow handler receives. Before this module existed the answer to
|
|
6
|
+
* "what does the handler see when it runs?" was stitched together from three
|
|
7
|
+
* separate modules:
|
|
8
|
+
*
|
|
9
|
+
* - cascade-context.ts (5W+H tracing)
|
|
10
|
+
* - database-context.ts (DB injection)
|
|
11
|
+
* - on.ts / send.ts / every.ts (event dispatch)
|
|
12
|
+
*
|
|
13
|
+
* Callers reading `$.on.Order.placed(...)` had no single place to discover
|
|
14
|
+
* what `$` contains. Tests had to assemble three contexts independently to
|
|
15
|
+
* exercise a handler.
|
|
16
|
+
*
|
|
17
|
+
* `WorkflowRuntime` collapses these into one port:
|
|
18
|
+
*
|
|
19
|
+
* - {@link createWorkflowRuntime} builds the runtime, owning the event/
|
|
20
|
+
* schedule registries, the optional `DatabaseContext` injection, and the
|
|
21
|
+
* optional cascade context.
|
|
22
|
+
* - The runtime exposes `$` (a {@link WorkflowContext}) and `dispatch()` —
|
|
23
|
+
* the latter is the test surface for exercising a handler against an
|
|
24
|
+
* event without spinning up a full {@link Workflow}.
|
|
25
|
+
*
|
|
26
|
+
* The cascade-context, database-context, and on/send/every modules continue
|
|
27
|
+
* to exist as **internal seams** — private adapters the runtime composes.
|
|
28
|
+
* `DatabaseContext` stays as an injected port so callers can wire either
|
|
29
|
+
* `ai-database`'s adapter or an in-memory adapter; this keeps `ai-workflows`
|
|
30
|
+
* Layer 0.
|
|
31
|
+
*
|
|
32
|
+
* @example Basic usage
|
|
33
|
+
* ```ts
|
|
34
|
+
* import { createWorkflowRuntime } from 'ai-workflows'
|
|
35
|
+
*
|
|
36
|
+
* const runtime = createWorkflowRuntime()
|
|
37
|
+
* runtime.register('Customer', 'created', async (customer, $) => {
|
|
38
|
+
* $.log('New customer:', customer)
|
|
39
|
+
* })
|
|
40
|
+
* await runtime.dispatch('Customer.created', { id: '123' })
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @example With injected DatabaseContext
|
|
44
|
+
* ```ts
|
|
45
|
+
* import { createWorkflowRuntime, createMemoryDatabaseContext } from 'ai-workflows'
|
|
46
|
+
*
|
|
47
|
+
* const runtime = createWorkflowRuntime({ db: createMemoryDatabaseContext() })
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @example Direct handler dispatch (test surface)
|
|
51
|
+
* ```ts
|
|
52
|
+
* const runtime = createWorkflowRuntime()
|
|
53
|
+
* const handler = vi.fn()
|
|
54
|
+
* runtime.register('Order', 'placed', handler)
|
|
55
|
+
* await runtime.dispatch('Order.placed', { id: 'o-1' })
|
|
56
|
+
* expect(handler).toHaveBeenCalled()
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* @packageDocumentation
|
|
60
|
+
*/
|
|
61
|
+
import { createTypedOnProxy } from './on.js';
|
|
62
|
+
import { createTypedEveryProxy } from './every.js';
|
|
63
|
+
import { createCascadeContext } from './cascade-context.js';
|
|
64
|
+
import { getLogger } from './logger.js';
|
|
65
|
+
/**
|
|
66
|
+
* Parse an event string in `Noun.event` form. Returns `null` for invalid
|
|
67
|
+
* input. Lives on the runtime because dispatch is the only thing that needs
|
|
68
|
+
* to crack event names; `workflow.ts` re-exports it for back-compat.
|
|
69
|
+
*/
|
|
70
|
+
export function parseEvent(event) {
|
|
71
|
+
const parts = event.split('.');
|
|
72
|
+
if (parts.length !== 2) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
const [noun, eventName] = parts;
|
|
76
|
+
if (!noun || !eventName) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
return { noun, event: eventName };
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Internal: append a history entry with the current timestamp.
|
|
83
|
+
*/
|
|
84
|
+
function pushHistory(state, entry) {
|
|
85
|
+
state.history.push({ ...entry, timestamp: Date.now() });
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Construct a {@link WorkflowRuntime}.
|
|
89
|
+
*
|
|
90
|
+
* The runtime is the single owner of the `$` contract — it composes:
|
|
91
|
+
*
|
|
92
|
+
* 1. Event/schedule registries (the dispatch half of on/send/every).
|
|
93
|
+
* 2. The optional injected `DatabaseContext` for durable record-keeping.
|
|
94
|
+
* 3. A cascade context for 5W+H tracing.
|
|
95
|
+
*
|
|
96
|
+
* The returned `runtime.$` is what handlers receive; `runtime.dispatch` is
|
|
97
|
+
* the canonical test surface.
|
|
98
|
+
*/
|
|
99
|
+
export function createWorkflowRuntime(options = {}) {
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
// State + registries (the runtime is the sole owner)
|
|
102
|
+
// ---------------------------------------------------------------------------
|
|
103
|
+
const state = {
|
|
104
|
+
context: { ...(options.context ?? {}) },
|
|
105
|
+
history: [],
|
|
106
|
+
};
|
|
107
|
+
const eventRegistry = [];
|
|
108
|
+
const scheduleRegistry = [];
|
|
109
|
+
// Cascade context (auto-created if not supplied)
|
|
110
|
+
const cascade = options.cascade ??
|
|
111
|
+
createCascadeContext(options.name !== undefined ? { name: options.name } : {});
|
|
112
|
+
const db = options.db;
|
|
113
|
+
// ---------------------------------------------------------------------------
|
|
114
|
+
// Registration (these are the "right halves" of on / every — the registry
|
|
115
|
+
// halves. The proxy halves live in on.ts/every.ts as factories we reuse.)
|
|
116
|
+
// ---------------------------------------------------------------------------
|
|
117
|
+
const register = (noun, event, handler, dependencies) => {
|
|
118
|
+
eventRegistry.push({
|
|
119
|
+
noun,
|
|
120
|
+
event,
|
|
121
|
+
handler,
|
|
122
|
+
source: handler.toString(),
|
|
123
|
+
...(dependencies !== undefined && { dependencies }),
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
const registerSchedule = (interval, handler) => {
|
|
127
|
+
scheduleRegistry.push({
|
|
128
|
+
interval,
|
|
129
|
+
handler,
|
|
130
|
+
source: handler.toString(),
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
// ---------------------------------------------------------------------------
|
|
134
|
+
// Dispatch (the runtime's core: take an event, find handlers, run them)
|
|
135
|
+
// ---------------------------------------------------------------------------
|
|
136
|
+
const findMatching = (event) => {
|
|
137
|
+
const parsed = parseEvent(event);
|
|
138
|
+
if (!parsed) {
|
|
139
|
+
getLogger().warn(`Invalid event format: ${event}. Expected Noun.event`);
|
|
140
|
+
return [];
|
|
141
|
+
}
|
|
142
|
+
return eventRegistry
|
|
143
|
+
.filter((h) => h.noun === parsed.noun && h.event === parsed.event)
|
|
144
|
+
.map((h) => h.handler);
|
|
145
|
+
};
|
|
146
|
+
const dispatch = async (event, data) => {
|
|
147
|
+
const matching = findMatching(event);
|
|
148
|
+
if (matching.length === 0)
|
|
149
|
+
return;
|
|
150
|
+
await Promise.all(matching.map(async (handler) => {
|
|
151
|
+
try {
|
|
152
|
+
await handler(data, $);
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
getLogger().error(`Error in handler for ${event}:`, error);
|
|
156
|
+
}
|
|
157
|
+
}));
|
|
158
|
+
};
|
|
159
|
+
const execute = async (event, data, durable) => {
|
|
160
|
+
const parsed = parseEvent(event);
|
|
161
|
+
if (!parsed) {
|
|
162
|
+
throw new Error(`Invalid event format: ${event}. Expected Noun.event`);
|
|
163
|
+
}
|
|
164
|
+
const matching = eventRegistry.filter((h) => h.noun === parsed.noun && h.event === parsed.event);
|
|
165
|
+
if (matching.length === 0) {
|
|
166
|
+
throw new Error(`No handler registered for ${event}`);
|
|
167
|
+
}
|
|
168
|
+
const { handler } = matching[0];
|
|
169
|
+
if (durable && db) {
|
|
170
|
+
await db.createAction({
|
|
171
|
+
actor: 'workflow',
|
|
172
|
+
object: event,
|
|
173
|
+
action: 'execute',
|
|
174
|
+
metadata: { data },
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
try {
|
|
178
|
+
const result = await handler(data, $);
|
|
179
|
+
return result;
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
if (durable) {
|
|
183
|
+
getLogger().error(`[runtime] Durable action failed for ${event}:`, error);
|
|
184
|
+
}
|
|
185
|
+
throw error;
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
// ---------------------------------------------------------------------------
|
|
189
|
+
// Build the `$` context. This is the WHOLE answer to "what does a handler
|
|
190
|
+
// see when it runs?" — every property below is a deliberate part of the
|
|
191
|
+
// handler-facing surface.
|
|
192
|
+
// ---------------------------------------------------------------------------
|
|
193
|
+
const onProxy = createTypedOnProxy((noun, event, handler, deps) => {
|
|
194
|
+
register(noun, event, handler, deps);
|
|
195
|
+
});
|
|
196
|
+
const everyProxy = createTypedEveryProxy((interval, handler) => {
|
|
197
|
+
registerSchedule(interval, handler);
|
|
198
|
+
});
|
|
199
|
+
const $ = {
|
|
200
|
+
track(event, data) {
|
|
201
|
+
try {
|
|
202
|
+
pushHistory(state, { type: 'event', name: `track:${event}`, data });
|
|
203
|
+
dispatch(event, data).catch(() => {
|
|
204
|
+
// track() swallows errors by design
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
// Silently swallow errors
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
send(event, data) {
|
|
212
|
+
const eventId = crypto.randomUUID();
|
|
213
|
+
pushHistory(state, { type: 'event', name: event, data });
|
|
214
|
+
const payload = { ...data, _eventId: eventId };
|
|
215
|
+
// Persist if a DatabaseContext is wired
|
|
216
|
+
if (db) {
|
|
217
|
+
db.recordEvent(event, payload).catch((err) => {
|
|
218
|
+
getLogger().error(`[runtime] Failed to record event ${event}:`, err);
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
// Deliver
|
|
222
|
+
dispatch(event, payload).catch((err) => {
|
|
223
|
+
getLogger().error(`[runtime] Failed to deliver event ${event}:`, err);
|
|
224
|
+
});
|
|
225
|
+
return eventId;
|
|
226
|
+
},
|
|
227
|
+
async do(event, data) {
|
|
228
|
+
pushHistory(state, { type: 'action', name: `do:${event}`, data });
|
|
229
|
+
if (db) {
|
|
230
|
+
await db.recordEvent(event, data);
|
|
231
|
+
}
|
|
232
|
+
return execute(event, data, true);
|
|
233
|
+
},
|
|
234
|
+
async try(event, data) {
|
|
235
|
+
pushHistory(state, { type: 'action', name: `try:${event}`, data });
|
|
236
|
+
return execute(event, data, false);
|
|
237
|
+
},
|
|
238
|
+
on: onProxy,
|
|
239
|
+
every: everyProxy,
|
|
240
|
+
state: state.context,
|
|
241
|
+
getState() {
|
|
242
|
+
return structuredClone({
|
|
243
|
+
...(state.current !== undefined && { current: state.current }),
|
|
244
|
+
context: state.context,
|
|
245
|
+
history: state.history,
|
|
246
|
+
});
|
|
247
|
+
},
|
|
248
|
+
set(key, value) {
|
|
249
|
+
state.context[key] = value;
|
|
250
|
+
},
|
|
251
|
+
get(key) {
|
|
252
|
+
return state.context[key];
|
|
253
|
+
},
|
|
254
|
+
log(message, data) {
|
|
255
|
+
pushHistory(state, { type: 'action', name: 'log', data: { message, data } });
|
|
256
|
+
getLogger().log(`[workflow] ${message}`, data ?? '');
|
|
257
|
+
},
|
|
258
|
+
...(db !== undefined && { db }),
|
|
259
|
+
};
|
|
260
|
+
// ---------------------------------------------------------------------------
|
|
261
|
+
// Public surface
|
|
262
|
+
// ---------------------------------------------------------------------------
|
|
263
|
+
return {
|
|
264
|
+
$,
|
|
265
|
+
cascade,
|
|
266
|
+
register,
|
|
267
|
+
registerSchedule,
|
|
268
|
+
dispatch,
|
|
269
|
+
execute,
|
|
270
|
+
getEventRegistry: () => eventRegistry,
|
|
271
|
+
getScheduleRegistry: () => scheduleRegistry,
|
|
272
|
+
state,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/send.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../src/send.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../src/send.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH;;GAEG;AACH,cAAM,QAAQ;IACZ,OAAO,CAAC,OAAO,CAA8C;IAC7D,OAAO,CAAC,UAAU,CAAQ;IAE1B;;OAEG;IACG,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvD;;OAEG;YACW,OAAO;IAWrB;;OAEG;YACW,OAAO;CA6BtB;AAOD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7E;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAEtC"}
|
package/dist/send.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { getEventHandlers } from './on.js';
|
|
9
9
|
import { createWorkflowContext } from './context.js';
|
|
10
10
|
import { parseEvent } from './workflow.js';
|
|
11
|
+
import { getLogger } from './logger.js';
|
|
11
12
|
/**
|
|
12
13
|
* Event bus for managing event delivery
|
|
13
14
|
*/
|
|
@@ -40,11 +41,11 @@ class EventBus {
|
|
|
40
41
|
async deliver(event, data) {
|
|
41
42
|
const parsed = parseEvent(event);
|
|
42
43
|
if (!parsed) {
|
|
43
|
-
|
|
44
|
+
getLogger().warn(`Invalid event format: ${event}. Expected Noun.event`);
|
|
44
45
|
return;
|
|
45
46
|
}
|
|
46
47
|
const handlers = getEventHandlers();
|
|
47
|
-
const matching = handlers.filter(h => h.noun === parsed.noun && h.event === parsed.event);
|
|
48
|
+
const matching = handlers.filter((h) => h.noun === parsed.noun && h.event === parsed.event);
|
|
48
49
|
if (matching.length === 0) {
|
|
49
50
|
// No handlers registered - that's okay, event is just not handled
|
|
50
51
|
return;
|
|
@@ -57,7 +58,7 @@ class EventBus {
|
|
|
57
58
|
await handler(data, ctx);
|
|
58
59
|
}
|
|
59
60
|
catch (error) {
|
|
60
|
-
|
|
61
|
+
getLogger().error(`Error in handler for ${event}:`, error);
|
|
61
62
|
}
|
|
62
63
|
}));
|
|
63
64
|
}
|
package/dist/send.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.js","sourceRoot":"","sources":["../src/send.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../src/send.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC;;GAEG;AACH,MAAM,QAAQ;IACJ,OAAO,GAA4C,EAAE,CAAA;IACrD,UAAU,GAAG,KAAK,CAAA;IAE1B;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,IAAa;QACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAElC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;QACtB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QAEtB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAG,CAAA;YAClC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3C,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;IACzB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,IAAa;QAChD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;QAChC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS,EAAE,CAAC,IAAI,CAAC,yBAAyB,KAAK,uBAAuB,CAAC,CAAA;YACvE,OAAM;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAA;QACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAA;QAE3F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,kEAAkE;YAClE,OAAM;QACR,CAAC;QAED,uCAAuC;QACvC,MAAM,GAAG,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;QAEvC,gCAAgC;QAChC,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YACjC,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,EAAE,CAAC,KAAK,CAAC,wBAAwB,KAAK,GAAG,EAAE,KAAK,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC,CAAC,CACH,CAAA;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,cAAc,GAAG,IAAI,QAAQ,EAAE,CAAA;AAErC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAc,KAAa,EAAE,IAAO;IAC5D,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,cAAc,CAAA;AACvB,CAAC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenTelemetry Integration for ai-workflows
|
|
3
|
+
*
|
|
4
|
+
* Provides instrumented wrappers and telemetry utilities for workflow execution.
|
|
5
|
+
* Integrates with cascade-context for distributed tracing support.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { Workflow } from 'ai-workflows'
|
|
10
|
+
* import { withWorkflowTelemetry, instrumentWorkflow } from 'ai-workflows/telemetry'
|
|
11
|
+
*
|
|
12
|
+
* // Enable telemetry globally
|
|
13
|
+
* withWorkflowTelemetry({ provider: createConsoleTelemetryProvider() }, async () => {
|
|
14
|
+
* const workflow = Workflow($ => {
|
|
15
|
+
* $.on.Customer.created(async (customer) => {
|
|
16
|
+
* // Traced automatically
|
|
17
|
+
* })
|
|
18
|
+
* })
|
|
19
|
+
* await workflow.start()
|
|
20
|
+
* })
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @packageDocumentation
|
|
24
|
+
*/
|
|
25
|
+
import { type Tracer, type Meter, type Logger, type Span, type SpanAttributes, type TelemetryProvider, type TraceContext, type Counter, type Histogram } from '@org.ai/types';
|
|
26
|
+
import type { CascadeContext, CascadeStep } from './cascade-context.js';
|
|
27
|
+
/**
|
|
28
|
+
* Get the tracer for ai-workflows
|
|
29
|
+
*/
|
|
30
|
+
export declare function getWorkflowTracer(): Tracer;
|
|
31
|
+
/**
|
|
32
|
+
* Get the meter for ai-workflows
|
|
33
|
+
*/
|
|
34
|
+
export declare function getWorkflowMeter(): Meter;
|
|
35
|
+
/**
|
|
36
|
+
* Get the logger for ai-workflows
|
|
37
|
+
*/
|
|
38
|
+
export declare function getWorkflowLogger(): Logger;
|
|
39
|
+
/**
|
|
40
|
+
* Create workflow-specific metrics
|
|
41
|
+
*/
|
|
42
|
+
export declare function createWorkflowMetrics(meter: Meter): {
|
|
43
|
+
stepDuration: Histogram;
|
|
44
|
+
stepTotal: Counter;
|
|
45
|
+
stepErrors: Counter;
|
|
46
|
+
eventHandlers: Counter;
|
|
47
|
+
scheduleHandlers: Counter;
|
|
48
|
+
cascadeDepth: Histogram;
|
|
49
|
+
cascadeDuration: Histogram;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Get workflow metrics for the package
|
|
53
|
+
*/
|
|
54
|
+
export declare function getWorkflowMetrics(): {
|
|
55
|
+
stepDuration: Histogram;
|
|
56
|
+
stepTotal: Counter;
|
|
57
|
+
stepErrors: Counter;
|
|
58
|
+
eventHandlers: Counter;
|
|
59
|
+
scheduleHandlers: Counter;
|
|
60
|
+
cascadeDepth: Histogram;
|
|
61
|
+
cascadeDuration: Histogram;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Reset cached telemetry instances
|
|
65
|
+
*/
|
|
66
|
+
export declare function resetTelemetry(): void;
|
|
67
|
+
/**
|
|
68
|
+
* Options for withWorkflowTelemetry
|
|
69
|
+
*/
|
|
70
|
+
export interface WithWorkflowTelemetryOptions {
|
|
71
|
+
/** Telemetry provider to use */
|
|
72
|
+
provider?: TelemetryProvider;
|
|
73
|
+
/** Workflow name for labeling */
|
|
74
|
+
workflowName?: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Execute a function with workflow telemetry enabled
|
|
78
|
+
*/
|
|
79
|
+
export declare function withWorkflowTelemetry<T>(options: WithWorkflowTelemetryOptions, fn: () => Promise<T>): Promise<T>;
|
|
80
|
+
/**
|
|
81
|
+
* Create a span from a CascadeContext
|
|
82
|
+
*
|
|
83
|
+
* This bridges the cascade-context W3C Trace Context support with OpenTelemetry.
|
|
84
|
+
*/
|
|
85
|
+
export declare function spanFromCascadeContext(ctx: CascadeContext, name?: string): Span;
|
|
86
|
+
/**
|
|
87
|
+
* Create a TraceContext from a span
|
|
88
|
+
*
|
|
89
|
+
* Allows propagating span context to cascade-context.
|
|
90
|
+
*/
|
|
91
|
+
export declare function traceContextFromSpan(span: Span): TraceContext;
|
|
92
|
+
/**
|
|
93
|
+
* Record a CascadeStep as a span event
|
|
94
|
+
*/
|
|
95
|
+
export declare function recordStepAsSpanEvent(span: Span, step: CascadeStep): void;
|
|
96
|
+
/**
|
|
97
|
+
* Convert CascadeContext steps to span events
|
|
98
|
+
*/
|
|
99
|
+
export declare function cascadeStepsToSpanEvents(span: Span, ctx: CascadeContext): void;
|
|
100
|
+
/**
|
|
101
|
+
* Record an event handler invocation
|
|
102
|
+
*/
|
|
103
|
+
export declare function recordEventHandler(params: {
|
|
104
|
+
event: string;
|
|
105
|
+
durationMs: number;
|
|
106
|
+
success: boolean;
|
|
107
|
+
}): void;
|
|
108
|
+
/**
|
|
109
|
+
* Record a schedule handler invocation
|
|
110
|
+
*/
|
|
111
|
+
export declare function recordScheduleHandler(params: {
|
|
112
|
+
schedule: string;
|
|
113
|
+
durationMs: number;
|
|
114
|
+
success: boolean;
|
|
115
|
+
}): void;
|
|
116
|
+
/**
|
|
117
|
+
* Create a traced event handler
|
|
118
|
+
*/
|
|
119
|
+
export declare function tracedEventHandler<TData, TResult>(event: string, handler: (data: TData, ctx: any) => Promise<TResult>): (data: TData, ctx: any) => Promise<TResult>;
|
|
120
|
+
/**
|
|
121
|
+
* Create a traced schedule handler
|
|
122
|
+
*/
|
|
123
|
+
export declare function tracedScheduleHandler<TResult>(schedule: string, handler: (ctx: any) => Promise<TResult>): (ctx: any) => Promise<TResult>;
|
|
124
|
+
/**
|
|
125
|
+
* Record a workflow step
|
|
126
|
+
*/
|
|
127
|
+
export declare function recordWorkflowStep(params: {
|
|
128
|
+
step: string;
|
|
129
|
+
workflow?: string | undefined;
|
|
130
|
+
durationMs: number;
|
|
131
|
+
success: boolean;
|
|
132
|
+
tier?: string | undefined;
|
|
133
|
+
}): void;
|
|
134
|
+
/**
|
|
135
|
+
* Create a traced workflow step
|
|
136
|
+
*/
|
|
137
|
+
export declare function tracedStep<TArgs extends unknown[], TResult>(stepName: string, fn: (...args: TArgs) => Promise<TResult>, options?: {
|
|
138
|
+
workflowName?: string;
|
|
139
|
+
tier?: string;
|
|
140
|
+
}): (...args: TArgs) => Promise<TResult>;
|
|
141
|
+
/**
|
|
142
|
+
* Start a span for a workflow operation
|
|
143
|
+
*/
|
|
144
|
+
export declare function startWorkflowSpan(name: string, attributes?: SpanAttributes): Span;
|
|
145
|
+
/**
|
|
146
|
+
* Execute code within a workflow span
|
|
147
|
+
*/
|
|
148
|
+
export declare function withWorkflowSpan<T>(name: string, fn: (span: Span) => Promise<T>, attributes?: SpanAttributes): Promise<T>;
|
|
149
|
+
export { type Tracer, type Meter, type Logger, type Span, type SpanAttributes, type TelemetryProvider, type TraceContext, type Counter, type Histogram, getTracer, getMeter, getLogger, setTelemetryProvider, getTelemetryProvider, createTraceparent, parseTraceparent, generateTraceId, generateSpanId, SemanticAttributes, MetricNames, createHandlerMetrics, } from '@org.ai/types';
|
|
150
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|