@kylebegeman/pulse 0.3.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/README.md +1078 -0
- package/dist/cron.d.ts +16 -0
- package/dist/cron.d.ts.map +1 -0
- package/dist/cron.js +32 -0
- package/dist/cron.js.map +1 -0
- package/dist/executor.d.ts +43 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/executor.js +333 -0
- package/dist/executor.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +198 -0
- package/dist/index.js.map +1 -0
- package/dist/logs.d.ts +11 -0
- package/dist/logs.d.ts.map +1 -0
- package/dist/logs.js +25 -0
- package/dist/logs.js.map +1 -0
- package/dist/matcher.d.ts +23 -0
- package/dist/matcher.d.ts.map +1 -0
- package/dist/matcher.js +184 -0
- package/dist/matcher.js.map +1 -0
- package/dist/queue.d.ts +42 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +85 -0
- package/dist/queue.js.map +1 -0
- package/dist/registry.d.ts +23 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +33 -0
- package/dist/registry.js.map +1 -0
- package/dist/replay.d.ts +10 -0
- package/dist/replay.d.ts.map +1 -0
- package/dist/replay.js +24 -0
- package/dist/replay.js.map +1 -0
- package/dist/runs.d.ts +37 -0
- package/dist/runs.d.ts.map +1 -0
- package/dist/runs.js +296 -0
- package/dist/runs.js.map +1 -0
- package/dist/scheduler.d.ts +21 -0
- package/dist/scheduler.d.ts.map +1 -0
- package/dist/scheduler.js +67 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/schema/migrate.d.ts +3 -0
- package/dist/schema/migrate.d.ts.map +1 -0
- package/dist/schema/migrate.js +56 -0
- package/dist/schema/migrate.js.map +1 -0
- package/dist/schema/tables.d.ts +10 -0
- package/dist/schema/tables.d.ts.map +1 -0
- package/dist/schema/tables.js +123 -0
- package/dist/schema/tables.js.map +1 -0
- package/dist/types.d.ts +186 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/errors.d.ts +30 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +61 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/ids.d.ts +2 -0
- package/dist/utils/ids.d.ts.map +1 -0
- package/dist/utils/ids.js +6 -0
- package/dist/utils/ids.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
const VALID_PREFIX = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
|
|
2
|
+
function validatePrefix(prefix) {
|
|
3
|
+
if (!VALID_PREFIX.test(prefix)) {
|
|
4
|
+
throw new Error(`Invalid table prefix "${prefix}": must contain only letters, digits, and underscores, and start with a letter or underscore`);
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export function getTableNames(prefix) {
|
|
8
|
+
validatePrefix(prefix);
|
|
9
|
+
return {
|
|
10
|
+
triggers: `${prefix}triggers`,
|
|
11
|
+
workflowDefinitions: `${prefix}workflow_definitions`,
|
|
12
|
+
workflowRuns: `${prefix}workflow_runs`,
|
|
13
|
+
workflowStepRuns: `${prefix}workflow_step_runs`,
|
|
14
|
+
executionLogs: `${prefix}execution_logs`,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function getMigrationSQL(prefix) {
|
|
18
|
+
validatePrefix(prefix);
|
|
19
|
+
const t = getTableNames(prefix);
|
|
20
|
+
return `
|
|
21
|
+
CREATE TABLE IF NOT EXISTS ${t.triggers} (
|
|
22
|
+
id TEXT PRIMARY KEY,
|
|
23
|
+
tenant_id TEXT NOT NULL,
|
|
24
|
+
source TEXT NOT NULL,
|
|
25
|
+
type TEXT NOT NULL,
|
|
26
|
+
resource_type TEXT,
|
|
27
|
+
resource_id TEXT,
|
|
28
|
+
environment TEXT,
|
|
29
|
+
payload JSONB DEFAULT '{}',
|
|
30
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
CREATE INDEX IF NOT EXISTS idx_${t.triggers}_tenant_type
|
|
34
|
+
ON ${t.triggers} (tenant_id, type);
|
|
35
|
+
|
|
36
|
+
CREATE INDEX IF NOT EXISTS idx_${t.triggers}_created
|
|
37
|
+
ON ${t.triggers} (created_at);
|
|
38
|
+
|
|
39
|
+
CREATE TABLE IF NOT EXISTS ${t.workflowDefinitions} (
|
|
40
|
+
id TEXT PRIMARY KEY,
|
|
41
|
+
tenant_id TEXT NOT NULL,
|
|
42
|
+
name TEXT NOT NULL,
|
|
43
|
+
description TEXT,
|
|
44
|
+
trigger_type TEXT NOT NULL,
|
|
45
|
+
environment_filter TEXT,
|
|
46
|
+
resource_type_filter TEXT,
|
|
47
|
+
steps JSONB NOT NULL DEFAULT '[]',
|
|
48
|
+
config JSONB NOT NULL DEFAULT '{}',
|
|
49
|
+
is_enabled BOOLEAN NOT NULL DEFAULT true,
|
|
50
|
+
cron_expression TEXT,
|
|
51
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
52
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
CREATE INDEX IF NOT EXISTS idx_${t.workflowDefinitions}_tenant_trigger
|
|
56
|
+
ON ${t.workflowDefinitions} (tenant_id, trigger_type, is_enabled);
|
|
57
|
+
|
|
58
|
+
CREATE TABLE IF NOT EXISTS ${t.workflowRuns} (
|
|
59
|
+
id TEXT PRIMARY KEY,
|
|
60
|
+
definition_id TEXT NOT NULL REFERENCES ${t.workflowDefinitions}(id),
|
|
61
|
+
tenant_id TEXT NOT NULL,
|
|
62
|
+
trigger_id TEXT NOT NULL REFERENCES ${t.triggers}(id),
|
|
63
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
64
|
+
context JSONB NOT NULL DEFAULT '{}',
|
|
65
|
+
current_step_index INTEGER NOT NULL DEFAULT 0,
|
|
66
|
+
is_replay BOOLEAN NOT NULL DEFAULT false,
|
|
67
|
+
definition_snapshot JSONB NOT NULL DEFAULT '{}',
|
|
68
|
+
started_at TIMESTAMPTZ,
|
|
69
|
+
completed_at TIMESTAMPTZ,
|
|
70
|
+
failed_at TIMESTAMPTZ,
|
|
71
|
+
canceled_at TIMESTAMPTZ,
|
|
72
|
+
cancel_reason TEXT,
|
|
73
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
74
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
CREATE INDEX IF NOT EXISTS idx_${t.workflowRuns}_tenant_status
|
|
78
|
+
ON ${t.workflowRuns} (tenant_id, status);
|
|
79
|
+
|
|
80
|
+
CREATE INDEX IF NOT EXISTS idx_${t.workflowRuns}_trigger
|
|
81
|
+
ON ${t.workflowRuns} (trigger_id);
|
|
82
|
+
|
|
83
|
+
CREATE TABLE IF NOT EXISTS ${t.workflowStepRuns} (
|
|
84
|
+
id TEXT PRIMARY KEY,
|
|
85
|
+
run_id TEXT NOT NULL REFERENCES ${t.workflowRuns}(id),
|
|
86
|
+
tenant_id TEXT NOT NULL,
|
|
87
|
+
step_index INTEGER NOT NULL,
|
|
88
|
+
step_type TEXT NOT NULL,
|
|
89
|
+
step_name TEXT NOT NULL,
|
|
90
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
91
|
+
scheduled_for TIMESTAMPTZ,
|
|
92
|
+
started_at TIMESTAMPTZ,
|
|
93
|
+
completed_at TIMESTAMPTZ,
|
|
94
|
+
result JSONB,
|
|
95
|
+
error_message TEXT,
|
|
96
|
+
branch_index INTEGER,
|
|
97
|
+
parent_step_run_id TEXT,
|
|
98
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
CREATE INDEX IF NOT EXISTS idx_${t.workflowStepRuns}_run
|
|
102
|
+
ON ${t.workflowStepRuns} (run_id, step_index);
|
|
103
|
+
|
|
104
|
+
CREATE INDEX IF NOT EXISTS idx_${t.workflowStepRuns}_scheduled
|
|
105
|
+
ON ${t.workflowStepRuns} (status, scheduled_for)
|
|
106
|
+
WHERE status = 'scheduled';
|
|
107
|
+
|
|
108
|
+
CREATE TABLE IF NOT EXISTS ${t.executionLogs} (
|
|
109
|
+
id TEXT PRIMARY KEY,
|
|
110
|
+
run_id TEXT NOT NULL REFERENCES ${t.workflowRuns}(id),
|
|
111
|
+
step_run_id TEXT REFERENCES ${t.workflowStepRuns}(id),
|
|
112
|
+
tenant_id TEXT NOT NULL,
|
|
113
|
+
level TEXT NOT NULL DEFAULT 'info',
|
|
114
|
+
message TEXT NOT NULL,
|
|
115
|
+
data JSONB,
|
|
116
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
CREATE INDEX IF NOT EXISTS idx_${t.executionLogs}_run
|
|
120
|
+
ON ${t.executionLogs} (run_id, created_at);
|
|
121
|
+
`;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=tables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../src/schema/tables.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG,0BAA0B,CAAA;AAE/C,SAAS,cAAc,CAAC,MAAc;IACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,yBAAyB,MAAM,8FAA8F,CAC9H,CAAA;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,cAAc,CAAC,MAAM,CAAC,CAAA;IACtB,OAAO;QACL,QAAQ,EAAE,GAAG,MAAM,UAAU;QAC7B,mBAAmB,EAAE,GAAG,MAAM,sBAAsB;QACpD,YAAY,EAAE,GAAG,MAAM,eAAe;QACtC,gBAAgB,EAAE,GAAG,MAAM,oBAAoB;QAC/C,aAAa,EAAE,GAAG,MAAM,gBAAgB;KAChC,CAAA;AACZ,CAAC;AAID,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,cAAc,CAAC,MAAM,CAAC,CAAA;IACtB,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IAE/B,OAAO;iCACwB,CAAC,CAAC,QAAQ;;;;;;;;;;;;qCAYN,CAAC,CAAC,QAAQ;WACpC,CAAC,CAAC,QAAQ;;qCAEgB,CAAC,CAAC,QAAQ;WACpC,CAAC,CAAC,QAAQ;;iCAEY,CAAC,CAAC,mBAAmB;;;;;;;;;;;;;;;;qCAgBjB,CAAC,CAAC,mBAAmB;WAC/C,CAAC,CAAC,mBAAmB;;iCAEC,CAAC,CAAC,YAAY;;+CAEA,CAAC,CAAC,mBAAmB;;4CAExB,CAAC,CAAC,QAAQ;;;;;;;;;;;;;;;qCAejB,CAAC,CAAC,YAAY;WACxC,CAAC,CAAC,YAAY;;qCAEY,CAAC,CAAC,YAAY;WACxC,CAAC,CAAC,YAAY;;iCAEQ,CAAC,CAAC,gBAAgB;;wCAEX,CAAC,CAAC,YAAY;;;;;;;;;;;;;;;;qCAgBjB,CAAC,CAAC,gBAAgB;WAC5C,CAAC,CAAC,gBAAgB;;qCAEQ,CAAC,CAAC,gBAAgB;WAC5C,CAAC,CAAC,gBAAgB;;;iCAGI,CAAC,CAAC,aAAa;;wCAER,CAAC,CAAC,YAAY;oCAClB,CAAC,CAAC,gBAAgB;;;;;;;;qCAQjB,CAAC,CAAC,aAAa;WACzC,CAAC,CAAC,aAAa;GACvB,CAAA;AACH,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import type { Pool } from 'pg';
|
|
2
|
+
import type { ZodSchema } from 'zod';
|
|
3
|
+
export interface TriggerInput {
|
|
4
|
+
tenantId: string;
|
|
5
|
+
source: string;
|
|
6
|
+
type: string;
|
|
7
|
+
resourceType?: string;
|
|
8
|
+
resourceId?: string;
|
|
9
|
+
environment?: string;
|
|
10
|
+
payload?: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export interface TriggerEnvelope extends TriggerInput {
|
|
13
|
+
id: string;
|
|
14
|
+
createdAt: Date;
|
|
15
|
+
}
|
|
16
|
+
export interface TriggerRegistration {
|
|
17
|
+
source: string;
|
|
18
|
+
resourceType?: string;
|
|
19
|
+
payloadSchema?: ZodSchema;
|
|
20
|
+
}
|
|
21
|
+
export type StepType = 'action' | 'condition' | 'delay' | 'parallel';
|
|
22
|
+
export interface RetryPolicy {
|
|
23
|
+
maxAttempts: number;
|
|
24
|
+
backoffMs: number;
|
|
25
|
+
}
|
|
26
|
+
export interface WorkflowStep {
|
|
27
|
+
type: StepType;
|
|
28
|
+
name: string;
|
|
29
|
+
config?: Record<string, unknown>;
|
|
30
|
+
/** Delay duration in milliseconds (only for 'delay' steps) */
|
|
31
|
+
delayMs?: number;
|
|
32
|
+
/** Step execution timeout in milliseconds */
|
|
33
|
+
timeoutMs?: number;
|
|
34
|
+
/** Retry policy for failed action steps */
|
|
35
|
+
retryPolicy?: RetryPolicy;
|
|
36
|
+
/** Behavior when a condition returns false: 'complete' (default), 'skip' (skip next step), number (skip N steps) */
|
|
37
|
+
onFalse?: 'complete' | 'skip' | number;
|
|
38
|
+
/** Parallel branches — each branch is an array of steps executed concurrently (only for 'parallel' steps) */
|
|
39
|
+
branches?: WorkflowStep[][];
|
|
40
|
+
}
|
|
41
|
+
export interface WorkflowDefinition {
|
|
42
|
+
id: string;
|
|
43
|
+
tenantId: string;
|
|
44
|
+
name: string;
|
|
45
|
+
description?: string;
|
|
46
|
+
triggerType: string;
|
|
47
|
+
environmentFilter?: string;
|
|
48
|
+
resourceTypeFilter?: string;
|
|
49
|
+
steps: WorkflowStep[];
|
|
50
|
+
config: Record<string, unknown>;
|
|
51
|
+
isEnabled: boolean;
|
|
52
|
+
cronExpression?: string;
|
|
53
|
+
createdAt: Date;
|
|
54
|
+
updatedAt: Date;
|
|
55
|
+
}
|
|
56
|
+
export type WorkflowStatus = 'pending' | 'running' | 'waiting' | 'completed' | 'failed' | 'canceled';
|
|
57
|
+
export interface DefinitionSnapshot {
|
|
58
|
+
steps: WorkflowStep[];
|
|
59
|
+
config: Record<string, unknown>;
|
|
60
|
+
triggerType: string;
|
|
61
|
+
}
|
|
62
|
+
export interface WorkflowRun {
|
|
63
|
+
id: string;
|
|
64
|
+
definitionId: string;
|
|
65
|
+
tenantId: string;
|
|
66
|
+
triggerId: string;
|
|
67
|
+
status: WorkflowStatus;
|
|
68
|
+
context: Record<string, unknown>;
|
|
69
|
+
currentStepIndex: number;
|
|
70
|
+
isReplay: boolean;
|
|
71
|
+
definitionSnapshot: DefinitionSnapshot;
|
|
72
|
+
startedAt?: Date;
|
|
73
|
+
completedAt?: Date;
|
|
74
|
+
failedAt?: Date;
|
|
75
|
+
canceledAt?: Date;
|
|
76
|
+
cancelReason?: string;
|
|
77
|
+
createdAt: Date;
|
|
78
|
+
updatedAt: Date;
|
|
79
|
+
}
|
|
80
|
+
export type StepStatus = 'pending' | 'scheduled' | 'running' | 'completed' | 'failed' | 'skipped';
|
|
81
|
+
export interface WorkflowStepRun {
|
|
82
|
+
id: string;
|
|
83
|
+
runId: string;
|
|
84
|
+
tenantId: string;
|
|
85
|
+
stepIndex: number;
|
|
86
|
+
stepType: StepType;
|
|
87
|
+
stepName: string;
|
|
88
|
+
status: StepStatus;
|
|
89
|
+
scheduledFor?: Date;
|
|
90
|
+
startedAt?: Date;
|
|
91
|
+
completedAt?: Date;
|
|
92
|
+
result?: Record<string, unknown>;
|
|
93
|
+
errorMessage?: string;
|
|
94
|
+
/** Branch index for parallel step branches (null for top-level steps) */
|
|
95
|
+
branchIndex?: number;
|
|
96
|
+
/** Parent step run ID for parallel branch steps */
|
|
97
|
+
parentStepRunId?: string;
|
|
98
|
+
createdAt: Date;
|
|
99
|
+
}
|
|
100
|
+
export interface WorkflowContext {
|
|
101
|
+
tenantId: string;
|
|
102
|
+
trigger: TriggerEnvelope;
|
|
103
|
+
run: WorkflowRun;
|
|
104
|
+
step: WorkflowStepRun;
|
|
105
|
+
config: Record<string, unknown>;
|
|
106
|
+
isReplay: boolean;
|
|
107
|
+
emit: (trigger: TriggerInput) => Promise<TriggerEnvelope>;
|
|
108
|
+
log: (message: string, data?: Record<string, unknown>) => void;
|
|
109
|
+
}
|
|
110
|
+
export type ActionHandler = (ctx: WorkflowContext) => Promise<ActionResult>;
|
|
111
|
+
export interface ActionResult {
|
|
112
|
+
success: boolean;
|
|
113
|
+
data?: Record<string, unknown>;
|
|
114
|
+
error?: string;
|
|
115
|
+
}
|
|
116
|
+
export type ConditionHandler = (ctx: WorkflowContext) => Promise<boolean>;
|
|
117
|
+
export interface ActionOptions {
|
|
118
|
+
replaySafe: boolean;
|
|
119
|
+
}
|
|
120
|
+
export type LifecycleHook<T> = (event: T) => void | Promise<void>;
|
|
121
|
+
export interface StepCompleteEvent {
|
|
122
|
+
run: WorkflowRun;
|
|
123
|
+
step: WorkflowStepRun;
|
|
124
|
+
}
|
|
125
|
+
export interface RunCompleteEvent {
|
|
126
|
+
run: WorkflowRun;
|
|
127
|
+
status: 'completed' | 'failed' | 'canceled';
|
|
128
|
+
}
|
|
129
|
+
export interface EngineConfig {
|
|
130
|
+
db: Pool;
|
|
131
|
+
/** ioredis instance or compatible connection */
|
|
132
|
+
redis: unknown;
|
|
133
|
+
/** Table prefix (default: 'pulse_') */
|
|
134
|
+
tablePrefix?: string;
|
|
135
|
+
/** BullMQ queue prefix (default: 'pulse') */
|
|
136
|
+
queuePrefix?: string;
|
|
137
|
+
/** Concurrency for step workers (default: 5) */
|
|
138
|
+
concurrency?: number;
|
|
139
|
+
/** Called after each step completes, fails, or is skipped */
|
|
140
|
+
onStepComplete?: LifecycleHook<StepCompleteEvent>;
|
|
141
|
+
/** Called when a run reaches completed or failed status */
|
|
142
|
+
onRunComplete?: LifecycleHook<RunCompleteEvent>;
|
|
143
|
+
}
|
|
144
|
+
export interface EngineInstance {
|
|
145
|
+
registerTrigger: (type: string, registration: TriggerRegistration) => void;
|
|
146
|
+
registerAction: (name: string, handler: ActionHandler, options?: ActionOptions) => void;
|
|
147
|
+
registerCondition: (name: string, handler: ConditionHandler) => void;
|
|
148
|
+
emit: (trigger: TriggerInput) => Promise<TriggerEnvelope>;
|
|
149
|
+
start: () => Promise<void>;
|
|
150
|
+
stop: () => Promise<void>;
|
|
151
|
+
getRun: (runId: string) => Promise<WorkflowRun | null>;
|
|
152
|
+
getRunSteps: (runId: string) => Promise<WorkflowStepRun[]>;
|
|
153
|
+
getRunsByTrigger: (triggerId: string) => Promise<WorkflowRun[]>;
|
|
154
|
+
getTrigger: (triggerId: string) => Promise<TriggerEnvelope | null>;
|
|
155
|
+
getRunTimeline: (runId: string) => Promise<RunTimelineEntry[]>;
|
|
156
|
+
cancelRun: (runId: string, reason?: string) => Promise<WorkflowRun>;
|
|
157
|
+
retryRun: (runId: string) => Promise<WorkflowRun>;
|
|
158
|
+
getFailedRuns: (tenantId?: string) => Promise<WorkflowRun[]>;
|
|
159
|
+
replay: (triggerId: string, options?: ReplayOptions) => Promise<WorkflowRun[]>;
|
|
160
|
+
createWorkflow: (definition: Omit<WorkflowDefinition, 'id' | 'createdAt' | 'updatedAt'>) => Promise<WorkflowDefinition>;
|
|
161
|
+
enableWorkflow: (definitionId: string) => Promise<void>;
|
|
162
|
+
disableWorkflow: (definitionId: string) => Promise<void>;
|
|
163
|
+
migrate: () => Promise<void>;
|
|
164
|
+
}
|
|
165
|
+
export interface ReplayOptions {
|
|
166
|
+
dryRun?: boolean;
|
|
167
|
+
}
|
|
168
|
+
export interface RunTimelineEntry {
|
|
169
|
+
timestamp: Date;
|
|
170
|
+
type: 'run_created' | 'step_scheduled' | 'step_started' | 'step_completed' | 'step_failed' | 'step_skipped' | 'run_completed' | 'run_failed' | 'run_canceled' | 'log';
|
|
171
|
+
stepIndex?: number;
|
|
172
|
+
stepName?: string;
|
|
173
|
+
stepType?: string;
|
|
174
|
+
detail?: Record<string, unknown>;
|
|
175
|
+
}
|
|
176
|
+
export interface ExecutionLog {
|
|
177
|
+
id: string;
|
|
178
|
+
runId: string;
|
|
179
|
+
stepRunId?: string;
|
|
180
|
+
tenantId: string;
|
|
181
|
+
level: 'info' | 'warn' | 'error';
|
|
182
|
+
message: string;
|
|
183
|
+
data?: Record<string, unknown>;
|
|
184
|
+
createdAt: Date;
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare class PulseError extends Error {
|
|
2
|
+
code: string;
|
|
3
|
+
details?: Record<string, unknown> | undefined;
|
|
4
|
+
constructor(message: string, code: string, details?: Record<string, unknown> | undefined);
|
|
5
|
+
}
|
|
6
|
+
export declare class TriggerValidationError extends PulseError {
|
|
7
|
+
constructor(triggerType: string, details?: Record<string, unknown>);
|
|
8
|
+
}
|
|
9
|
+
export declare class UnregisteredTriggerError extends PulseError {
|
|
10
|
+
constructor(triggerType: string);
|
|
11
|
+
}
|
|
12
|
+
export declare class UnregisteredActionError extends PulseError {
|
|
13
|
+
constructor(actionName: string, runId?: string, stepIndex?: number);
|
|
14
|
+
}
|
|
15
|
+
export declare class UnregisteredConditionError extends PulseError {
|
|
16
|
+
constructor(conditionName: string, runId?: string, stepIndex?: number);
|
|
17
|
+
}
|
|
18
|
+
export declare class WorkflowRunError extends PulseError {
|
|
19
|
+
constructor(runId: string, message: string);
|
|
20
|
+
}
|
|
21
|
+
export declare class ReplayError extends PulseError {
|
|
22
|
+
constructor(triggerId: string, message: string);
|
|
23
|
+
}
|
|
24
|
+
export declare class CircularTriggerError extends PulseError {
|
|
25
|
+
constructor(triggerId: string, depth: number);
|
|
26
|
+
}
|
|
27
|
+
export declare class WorkflowValidationError extends PulseError {
|
|
28
|
+
constructor(message: string, details?: Record<string, unknown>);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAW,SAAQ,KAAK;IAG1B,IAAI,EAAE,MAAM;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFxC,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAK3C;AAED,qBAAa,sBAAuB,SAAQ,UAAU;gBACxC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQnE;AAED,qBAAa,wBAAyB,SAAQ,UAAU;gBAC1C,WAAW,EAAE,MAAM;CAQhC;AAED,qBAAa,uBAAwB,SAAQ,UAAU;gBACzC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CASnE;AAED,qBAAa,0BAA2B,SAAQ,UAAU;gBAC5C,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAStE;AAED,qBAAa,gBAAiB,SAAQ,UAAU;gBAClC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI3C;AAED,qBAAa,WAAY,SAAQ,UAAU;gBAC7B,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI/C;AAED,qBAAa,oBAAqB,SAAQ,UAAU;gBACtC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAQ7C;AAED,qBAAa,uBAAwB,SAAQ,UAAU;gBACzC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export class PulseError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
details;
|
|
4
|
+
constructor(message, code, details) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.code = code;
|
|
7
|
+
this.details = details;
|
|
8
|
+
this.name = 'PulseError';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class TriggerValidationError extends PulseError {
|
|
12
|
+
constructor(triggerType, details) {
|
|
13
|
+
super(`Trigger validation failed for type "${triggerType}"`, 'TRIGGER_VALIDATION_ERROR', details);
|
|
14
|
+
this.name = 'TriggerValidationError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export class UnregisteredTriggerError extends PulseError {
|
|
18
|
+
constructor(triggerType) {
|
|
19
|
+
super(`No trigger registered for type "${triggerType}"`, 'UNREGISTERED_TRIGGER', { triggerType });
|
|
20
|
+
this.name = 'UnregisteredTriggerError';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export class UnregisteredActionError extends PulseError {
|
|
24
|
+
constructor(actionName, runId, stepIndex) {
|
|
25
|
+
const context = runId ? ` (run=${runId}, stepIndex=${stepIndex})` : '';
|
|
26
|
+
super(`No action registered with name "${actionName}"${context}`, 'UNREGISTERED_ACTION', { actionName, runId, stepIndex });
|
|
27
|
+
this.name = 'UnregisteredActionError';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export class UnregisteredConditionError extends PulseError {
|
|
31
|
+
constructor(conditionName, runId, stepIndex) {
|
|
32
|
+
const context = runId ? ` (run=${runId}, stepIndex=${stepIndex})` : '';
|
|
33
|
+
super(`No condition registered with name "${conditionName}"${context}`, 'UNREGISTERED_CONDITION', { conditionName, runId, stepIndex });
|
|
34
|
+
this.name = 'UnregisteredConditionError';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export class WorkflowRunError extends PulseError {
|
|
38
|
+
constructor(runId, message) {
|
|
39
|
+
super(message, 'WORKFLOW_RUN_ERROR', { runId });
|
|
40
|
+
this.name = 'WorkflowRunError';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export class ReplayError extends PulseError {
|
|
44
|
+
constructor(triggerId, message) {
|
|
45
|
+
super(message, 'REPLAY_ERROR', { triggerId });
|
|
46
|
+
this.name = 'ReplayError';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export class CircularTriggerError extends PulseError {
|
|
50
|
+
constructor(triggerId, depth) {
|
|
51
|
+
super(`Circular trigger detected: emit depth ${depth} exceeds maximum. Trigger "${triggerId}" was emitted from within a handler chain that is too deep.`, 'CIRCULAR_TRIGGER', { triggerId, depth });
|
|
52
|
+
this.name = 'CircularTriggerError';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export class WorkflowValidationError extends PulseError {
|
|
56
|
+
constructor(message, details) {
|
|
57
|
+
super(message, 'WORKFLOW_VALIDATION_ERROR', details);
|
|
58
|
+
this.name = 'WorkflowValidationError';
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAW,SAAQ,KAAK;IAG1B;IACA;IAHT,YACE,OAAe,EACR,IAAY,EACZ,OAAiC;QAExC,KAAK,CAAC,OAAO,CAAC,CAAA;QAHP,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAA0B;QAGxC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAA;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,UAAU;IACpD,YAAY,WAAmB,EAAE,OAAiC;QAChE,KAAK,CACH,uCAAuC,WAAW,GAAG,EACrD,0BAA0B,EAC1B,OAAO,CACR,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;IACtC,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,UAAU;IACtD,YAAY,WAAmB;QAC7B,KAAK,CACH,mCAAmC,WAAW,GAAG,EACjD,sBAAsB,EACtB,EAAE,WAAW,EAAE,CAChB,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAA;IACxC,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,UAAU;IACrD,YAAY,UAAkB,EAAE,KAAc,EAAE,SAAkB;QAChE,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,eAAe,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QACtE,KAAK,CACH,mCAAmC,UAAU,IAAI,OAAO,EAAE,EAC1D,qBAAqB,EACrB,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CACjC,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAA;IACvC,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,UAAU;IACxD,YAAY,aAAqB,EAAE,KAAc,EAAE,SAAkB;QACnE,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,eAAe,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QACtE,KAAK,CACH,sCAAsC,aAAa,IAAI,OAAO,EAAE,EAChE,wBAAwB,EACxB,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,CACpC,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAA;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAC9C,YAAY,KAAa,EAAE,OAAe;QACxC,KAAK,CAAC,OAAO,EAAE,oBAAoB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAC/C,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAA;IAChC,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,UAAU;IACzC,YAAY,SAAiB,EAAE,OAAe;QAC5C,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;QAC7C,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,UAAU;IAClD,YAAY,SAAiB,EAAE,KAAa;QAC1C,KAAK,CACH,yCAAyC,KAAK,8BAA8B,SAAS,6DAA6D,EAClJ,kBAAkB,EAClB,EAAE,SAAS,EAAE,KAAK,EAAE,CACrB,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAA;IACpC,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,UAAU;IACrD,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,CAAC,CAAA;QACpD,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAA;IACvC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/utils/ids.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAGlD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/utils/ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,UAAU,UAAU,CAAC,MAAe;IACxC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;IACrB,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AACxC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@kylebegeman/pulse",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "Universal workflow engine — signal-driven automation for multi-tenant applications",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"dev": "tsc --watch",
|
|
20
|
+
"test": "vitest run",
|
|
21
|
+
"test:watch": "vitest",
|
|
22
|
+
"clean": "rm -rf dist",
|
|
23
|
+
"prepublishOnly": "npm run clean && npm run build"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"workflow",
|
|
27
|
+
"engine",
|
|
28
|
+
"automation",
|
|
29
|
+
"signals",
|
|
30
|
+
"multi-tenant",
|
|
31
|
+
"bullmq"
|
|
32
|
+
],
|
|
33
|
+
"license": "MIT",
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"bullmq": "^5.0.0",
|
|
36
|
+
"nanoid": "^5.0.0",
|
|
37
|
+
"pg": "^8.0.0",
|
|
38
|
+
"zod": "^3.0.0"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/pg": "^8.0.0",
|
|
42
|
+
"typescript": "^5.7.0",
|
|
43
|
+
"vitest": "^3.0.0"
|
|
44
|
+
}
|
|
45
|
+
}
|