@multiplier-labs/stepflow 0.3.1
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/.github/workflows/publish.yml +30 -0
- package/README.md +408 -0
- package/dist/chunk-FQCT3I2A.js +1512 -0
- package/dist/chunk-FQCT3I2A.js.map +1 -0
- package/dist/chunk-GXY66V7Q.js +111 -0
- package/dist/chunk-GXY66V7Q.js.map +1 -0
- package/dist/chunk-U5QGN3RT.js +715 -0
- package/dist/chunk-U5QGN3RT.js.map +1 -0
- package/dist/chunk-XCF4PLN7.js +575 -0
- package/dist/chunk-XCF4PLN7.js.map +1 -0
- package/dist/events/index.d.ts +346 -0
- package/dist/events/index.js +11 -0
- package/dist/events/index.js.map +1 -0
- package/dist/index-CPfGsmrp.d.ts +567 -0
- package/dist/index.d.ts +748 -0
- package/dist/index.js +1707 -0
- package/dist/index.js.map +1 -0
- package/dist/scheduler/index.d.ts +6 -0
- package/dist/scheduler/index.js +12 -0
- package/dist/scheduler/index.js.map +1 -0
- package/dist/storage/index.d.ts +402 -0
- package/dist/storage/index.js +13 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/types-BVShq7zT.d.ts +150 -0
- package/dist/types-BlwFEGzj.d.ts +276 -0
- package/dist/types-DzkEqnQJ.d.ts +75 -0
- package/docs/github-packages-setup.md +97 -0
- package/docs/stepflow-api-reference.md +1662 -0
- package/package.json +85 -0
- package/src/core/engine.test.ts +1421 -0
- package/src/core/engine.ts +717 -0
- package/src/core/index.ts +7 -0
- package/src/core/orchestrator.ts +590 -0
- package/src/core/types.ts +242 -0
- package/src/events/index.ts +8 -0
- package/src/events/memory.test.ts +109 -0
- package/src/events/memory.ts +95 -0
- package/src/events/socketio.test.ts +428 -0
- package/src/events/socketio.ts +269 -0
- package/src/events/types.ts +121 -0
- package/src/events/webhook.test.ts +695 -0
- package/src/events/webhook.ts +591 -0
- package/src/index.ts +270 -0
- package/src/planning/index.ts +52 -0
- package/src/planning/planner.ts +601 -0
- package/src/planning/planning.test.ts +790 -0
- package/src/planning/registry.test.ts +445 -0
- package/src/planning/registry.ts +369 -0
- package/src/planning/types.ts +570 -0
- package/src/scheduler/cron.test.ts +480 -0
- package/src/scheduler/cron.ts +449 -0
- package/src/scheduler/index.ts +18 -0
- package/src/scheduler/postgres-persistence.test.ts +906 -0
- package/src/scheduler/postgres-persistence.ts +546 -0
- package/src/scheduler/sqlite-persistence.test.ts +235 -0
- package/src/scheduler/sqlite-persistence.ts +268 -0
- package/src/scheduler/types.ts +78 -0
- package/src/storage/index.ts +27 -0
- package/src/storage/memory.test.ts +399 -0
- package/src/storage/memory.ts +248 -0
- package/src/storage/postgres.ts +1550 -0
- package/src/storage/sqlite.test.ts +593 -0
- package/src/storage/sqlite.ts +662 -0
- package/src/storage/types.ts +368 -0
- package/src/utils/errors.test.ts +152 -0
- package/src/utils/errors.ts +191 -0
- package/src/utils/id.ts +21 -0
- package/src/utils/index.ts +8 -0
- package/src/utils/logger.test.ts +127 -0
- package/src/utils/logger.ts +96 -0
- package/src/utils/postgres-deps.ts +63 -0
- package/src/utils/retry.test.ts +197 -0
- package/src/utils/retry.ts +121 -0
- package/tsconfig.json +21 -0
- package/tsup.config.ts +14 -0
- package/vitest.config.ts +9 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event system types for the workflow engine.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { WorkflowKind } from "../core/types";
|
|
6
|
+
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Event Types
|
|
9
|
+
// ============================================================================
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Built-in event types emitted by the workflow engine.
|
|
13
|
+
*/
|
|
14
|
+
export type BuiltInEventType =
|
|
15
|
+
| "run.created"
|
|
16
|
+
| "run.queued"
|
|
17
|
+
| "run.dequeued"
|
|
18
|
+
| "run.started"
|
|
19
|
+
| "run.resumed"
|
|
20
|
+
| "run.completed"
|
|
21
|
+
| "run.failed"
|
|
22
|
+
| "run.canceled"
|
|
23
|
+
| "run.timeout"
|
|
24
|
+
| "step.started"
|
|
25
|
+
| "step.completed"
|
|
26
|
+
| "step.failed"
|
|
27
|
+
| "step.skipped"
|
|
28
|
+
| "step.retry";
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Event types emitted by the workflow engine.
|
|
32
|
+
* Includes built-in types and allows custom events via string.
|
|
33
|
+
*/
|
|
34
|
+
export type WorkflowEventType = BuiltInEventType | (string & {});
|
|
35
|
+
|
|
36
|
+
// ============================================================================
|
|
37
|
+
// Event Payload
|
|
38
|
+
// ============================================================================
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Workflow event payload structure.
|
|
42
|
+
*/
|
|
43
|
+
export interface WorkflowEvent {
|
|
44
|
+
/** Unique run identifier */
|
|
45
|
+
runId: string;
|
|
46
|
+
|
|
47
|
+
/** Workflow type */
|
|
48
|
+
kind: WorkflowKind;
|
|
49
|
+
|
|
50
|
+
/** Type of event */
|
|
51
|
+
eventType: WorkflowEventType;
|
|
52
|
+
|
|
53
|
+
/** Step key (for step-related events) */
|
|
54
|
+
stepKey?: string;
|
|
55
|
+
|
|
56
|
+
/** When the event occurred */
|
|
57
|
+
timestamp: Date;
|
|
58
|
+
|
|
59
|
+
/** Event-specific data */
|
|
60
|
+
payload?: unknown;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// ============================================================================
|
|
64
|
+
// Event Callback Types
|
|
65
|
+
// ============================================================================
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Callback function for handling workflow events.
|
|
69
|
+
*/
|
|
70
|
+
export type EventCallback = (event: WorkflowEvent) => void;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Unsubscribe function returned when subscribing to events.
|
|
74
|
+
*/
|
|
75
|
+
export type Unsubscribe = () => void;
|
|
76
|
+
|
|
77
|
+
// ============================================================================
|
|
78
|
+
// Event Transport Interface
|
|
79
|
+
// ============================================================================
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Event transport interface.
|
|
83
|
+
* Implement this to customize how events are delivered.
|
|
84
|
+
*/
|
|
85
|
+
export interface EventTransport {
|
|
86
|
+
/**
|
|
87
|
+
* Emit an event to all subscribers.
|
|
88
|
+
*/
|
|
89
|
+
emit(event: WorkflowEvent): void;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Subscribe to events for a specific run.
|
|
93
|
+
* @returns Unsubscribe function
|
|
94
|
+
*/
|
|
95
|
+
subscribe(runId: string, callback: EventCallback): Unsubscribe;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Subscribe to all events.
|
|
99
|
+
* @returns Unsubscribe function
|
|
100
|
+
*/
|
|
101
|
+
subscribeAll(callback: EventCallback): Unsubscribe;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Optional: Filter events by type.
|
|
105
|
+
* @returns Unsubscribe function
|
|
106
|
+
*/
|
|
107
|
+
subscribeToType?(
|
|
108
|
+
eventType: WorkflowEventType,
|
|
109
|
+
callback: EventCallback,
|
|
110
|
+
): Unsubscribe;
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Optional: Persist event for later retrieval.
|
|
114
|
+
*/
|
|
115
|
+
persist?(event: WorkflowEvent): Promise<void>;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Optional: Close/cleanup the transport.
|
|
119
|
+
*/
|
|
120
|
+
close?(): void;
|
|
121
|
+
}
|