@elsium-ai/workflows 0.7.0 → 0.9.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 +77 -0
- package/dist/checkpoint.d.ts +34 -0
- package/dist/checkpoint.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +152 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -492,6 +492,83 @@ const result = await router.run({ type: 'text', content: 'Hello world' })
|
|
|
492
492
|
|
|
493
493
|
---
|
|
494
494
|
|
|
495
|
+
## Resumable Workflows
|
|
496
|
+
|
|
497
|
+
### `defineResumableWorkflow`
|
|
498
|
+
|
|
499
|
+
Creates a workflow that persists its progress to a checkpoint store after each step. If the process crashes or is interrupted, the workflow can be resumed from the last successful checkpoint.
|
|
500
|
+
|
|
501
|
+
```ts
|
|
502
|
+
function defineResumableWorkflow(config: {
|
|
503
|
+
name: string
|
|
504
|
+
checkpointStore: CheckpointStore
|
|
505
|
+
steps: StepConfig[]
|
|
506
|
+
onStepComplete?: (result: StepResult) => void | Promise<void>
|
|
507
|
+
onComplete?: (result: WorkflowResult) => void | Promise<void>
|
|
508
|
+
}): ResumableWorkflow
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
| Parameter | Type | Description |
|
|
512
|
+
| --- | --- | --- |
|
|
513
|
+
| `config.name` | `string` | Identifier for the workflow. |
|
|
514
|
+
| `config.checkpointStore` | `CheckpointStore` | Storage backend for persisting step results. |
|
|
515
|
+
| `config.steps` | `StepConfig[]` | Ordered list of steps to execute sequentially. |
|
|
516
|
+
| `config.onStepComplete` | `(result: StepResult) => void \| Promise<void>` | Optional callback fired after each step completes. |
|
|
517
|
+
| `config.onComplete` | `(result: WorkflowResult) => void \| Promise<void>` | Optional callback fired when the workflow finishes. |
|
|
518
|
+
|
|
519
|
+
**Returns:** `ResumableWorkflow`
|
|
520
|
+
|
|
521
|
+
```ts
|
|
522
|
+
interface ResumableWorkflow extends Workflow {
|
|
523
|
+
resume(workflowId: string, options?: WorkflowRunOptions): Promise<WorkflowResult>
|
|
524
|
+
}
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
The `resume(workflowId)` method reloads the checkpoint for the given workflow run and continues execution from the first incomplete step, reusing outputs from previously completed steps.
|
|
528
|
+
|
|
529
|
+
### `createInMemoryCheckpointStore`
|
|
530
|
+
|
|
531
|
+
Creates an in-memory checkpoint store for development and testing.
|
|
532
|
+
|
|
533
|
+
```ts
|
|
534
|
+
function createInMemoryCheckpointStore(): CheckpointStore
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
```ts
|
|
538
|
+
import { defineResumableWorkflow, createInMemoryCheckpointStore, step } from '@elsium-ai/workflows'
|
|
539
|
+
|
|
540
|
+
const checkpointStore = createInMemoryCheckpointStore()
|
|
541
|
+
|
|
542
|
+
const workflow = defineResumableWorkflow({
|
|
543
|
+
name: 'data-pipeline',
|
|
544
|
+
checkpointStore,
|
|
545
|
+
steps: [
|
|
546
|
+
step('fetch', {
|
|
547
|
+
handler: async (input: { url: string }) => {
|
|
548
|
+
return await fetch(input.url).then((r) => r.json())
|
|
549
|
+
},
|
|
550
|
+
}),
|
|
551
|
+
step('transform', {
|
|
552
|
+
handler: async (data: unknown) => {
|
|
553
|
+
return transformData(data)
|
|
554
|
+
},
|
|
555
|
+
}),
|
|
556
|
+
step('store', {
|
|
557
|
+
handler: async (transformed: unknown) => {
|
|
558
|
+
await saveToDatabase(transformed)
|
|
559
|
+
return { stored: true }
|
|
560
|
+
},
|
|
561
|
+
}),
|
|
562
|
+
],
|
|
563
|
+
})
|
|
564
|
+
|
|
565
|
+
const result = await workflow.run({ url: 'https://api.example.com/data' })
|
|
566
|
+
|
|
567
|
+
const resumed = await workflow.resume(result.name)
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
---
|
|
571
|
+
|
|
495
572
|
## Part of ElsiumAI
|
|
496
573
|
|
|
497
574
|
This package is the workflow layer of the [ElsiumAI](https://github.com/elsium-ai/elsium-ai) framework. See the [full documentation](https://github.com/elsium-ai/elsium-ai) for guides and examples.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { StepResult, WorkflowConfig, WorkflowResult, WorkflowRunOptions } from './types';
|
|
2
|
+
export interface WorkflowCheckpoint {
|
|
3
|
+
workflowId: string;
|
|
4
|
+
workflowName: string;
|
|
5
|
+
status: 'running' | 'completed' | 'failed' | 'paused';
|
|
6
|
+
input: unknown;
|
|
7
|
+
currentStepIndex: number;
|
|
8
|
+
stepResults: StepResult[];
|
|
9
|
+
outputs: Record<string, unknown>;
|
|
10
|
+
createdAt: number;
|
|
11
|
+
updatedAt: number;
|
|
12
|
+
}
|
|
13
|
+
export interface CheckpointStore {
|
|
14
|
+
save(checkpoint: WorkflowCheckpoint): Promise<void>;
|
|
15
|
+
load(workflowId: string): Promise<WorkflowCheckpoint | null>;
|
|
16
|
+
delete(workflowId: string): Promise<void>;
|
|
17
|
+
list(workflowName?: string): Promise<WorkflowCheckpoint[]>;
|
|
18
|
+
}
|
|
19
|
+
export declare function createInMemoryCheckpointStore(): CheckpointStore;
|
|
20
|
+
export interface ResumableWorkflowConfig extends WorkflowConfig {
|
|
21
|
+
checkpointStore: CheckpointStore;
|
|
22
|
+
}
|
|
23
|
+
export interface ResumableWorkflow {
|
|
24
|
+
readonly name: string;
|
|
25
|
+
run(input: unknown, options?: ResumableWorkflowRunOptions): Promise<WorkflowResult>;
|
|
26
|
+
resume(workflowId: string, options?: WorkflowRunOptions): Promise<WorkflowResult>;
|
|
27
|
+
getCheckpoint(workflowId: string): Promise<WorkflowCheckpoint | null>;
|
|
28
|
+
listCheckpoints(): Promise<WorkflowCheckpoint[]>;
|
|
29
|
+
}
|
|
30
|
+
export interface ResumableWorkflowRunOptions extends WorkflowRunOptions {
|
|
31
|
+
workflowId?: string;
|
|
32
|
+
}
|
|
33
|
+
export declare function defineResumableWorkflow(config: ResumableWorkflowConfig): ResumableWorkflow;
|
|
34
|
+
//# sourceMappingURL=checkpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEX,UAAU,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,MAAM,SAAS,CAAA;AAEhB,MAAM,WAAW,kBAAkB;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACrD,KAAK,EAAE,OAAO,CAAA;IACd,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC/B,IAAI,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnD,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAA;IAC5D,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzC,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAA;CAC1D;AAED,wBAAgB,6BAA6B,IAAI,eAAe,CAuB/D;AAED,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC9D,eAAe,EAAE,eAAe,CAAA;CAChC;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;IACnF,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;IACjF,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAA;IACrE,eAAe,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAA;CAChD;AAED,MAAM,WAAW,2BAA4B,SAAQ,kBAAkB;IACtE,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAOD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CAsJ1F"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,5 +2,7 @@ export { step, executeStep } from './step';
|
|
|
2
2
|
export { defineWorkflow, defineParallelWorkflow, defineBranchWorkflow } from './workflow';
|
|
3
3
|
export type { Workflow, ParallelWorkflowConfig, BranchConfig } from './workflow';
|
|
4
4
|
export { defineDagWorkflow } from './dag';
|
|
5
|
+
export { defineResumableWorkflow, createInMemoryCheckpointStore } from './checkpoint';
|
|
6
|
+
export type { ResumableWorkflow, ResumableWorkflowConfig, ResumableWorkflowRunOptions, WorkflowCheckpoint, CheckpointStore, } from './checkpoint';
|
|
5
7
|
export type { StepConfig, StepContext, StepResult, StepStatus, RetryConfig, WorkflowConfig, WorkflowResult, WorkflowStatus, WorkflowRunOptions, DagStepConfig, DagWorkflowConfig, } from './types';
|
|
6
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAG1C,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACzF,YAAY,EAAE,QAAQ,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAGzC,YAAY,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,iBAAiB,GACjB,MAAM,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAG1C,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACzF,YAAY,EAAE,QAAQ,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAGzC,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAA;AACrF,YAAY,EACX,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,kBAAkB,EAClB,eAAe,GACf,MAAM,cAAc,CAAA;AAGrB,YAAY,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,iBAAiB,GACjB,MAAM,SAAS,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -88,6 +88,15 @@ class ElsiumError extends Error {
|
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
// ../core/src/utils.ts
|
|
91
|
+
import { randomBytes } from "node:crypto";
|
|
92
|
+
function cryptoHex(bytes) {
|
|
93
|
+
return randomBytes(bytes).toString("hex");
|
|
94
|
+
}
|
|
95
|
+
function generateId(prefix = "els") {
|
|
96
|
+
const timestamp = Date.now().toString(36);
|
|
97
|
+
const random = cryptoHex(4);
|
|
98
|
+
return `${prefix}_${timestamp}_${random}`;
|
|
99
|
+
}
|
|
91
100
|
async function sleep(ms) {
|
|
92
101
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
93
102
|
}
|
|
@@ -489,11 +498,153 @@ function defineDagWorkflow(config) {
|
|
|
489
498
|
}
|
|
490
499
|
};
|
|
491
500
|
}
|
|
501
|
+
// src/checkpoint.ts
|
|
502
|
+
function createInMemoryCheckpointStore() {
|
|
503
|
+
const store = new Map;
|
|
504
|
+
return {
|
|
505
|
+
async save(checkpoint) {
|
|
506
|
+
store.set(checkpoint.workflowId, { ...checkpoint });
|
|
507
|
+
},
|
|
508
|
+
async load(workflowId) {
|
|
509
|
+
const cp = store.get(workflowId);
|
|
510
|
+
return cp ? { ...cp } : null;
|
|
511
|
+
},
|
|
512
|
+
async delete(workflowId) {
|
|
513
|
+
store.delete(workflowId);
|
|
514
|
+
},
|
|
515
|
+
async list(workflowName) {
|
|
516
|
+
const all = Array.from(store.values());
|
|
517
|
+
if (workflowName)
|
|
518
|
+
return all.filter((c) => c.workflowName === workflowName);
|
|
519
|
+
return all;
|
|
520
|
+
}
|
|
521
|
+
};
|
|
522
|
+
}
|
|
523
|
+
async function getCreatedAt(store, workflowId) {
|
|
524
|
+
const existing = await store.load(workflowId);
|
|
525
|
+
return existing?.createdAt ?? Date.now();
|
|
526
|
+
}
|
|
527
|
+
function defineResumableWorkflow(config) {
|
|
528
|
+
const { checkpointStore } = config;
|
|
529
|
+
async function executeFromStep(workflowId, input, startIndex, existingResults, existingOutputs, options) {
|
|
530
|
+
const startTime = performance.now();
|
|
531
|
+
const stepResults = [...existingResults];
|
|
532
|
+
const outputs = { ...existingOutputs };
|
|
533
|
+
let currentInput = startIndex > 0 ? outputs[config.steps[startIndex - 1].name] ?? input : input;
|
|
534
|
+
const createdAt = await getCreatedAt(checkpointStore, workflowId);
|
|
535
|
+
for (let i = startIndex;i < config.steps.length; i++) {
|
|
536
|
+
const stepConfig = config.steps[i];
|
|
537
|
+
await checkpointStore.save({
|
|
538
|
+
workflowId,
|
|
539
|
+
workflowName: config.name,
|
|
540
|
+
status: "running",
|
|
541
|
+
input,
|
|
542
|
+
currentStepIndex: i,
|
|
543
|
+
stepResults: [...stepResults],
|
|
544
|
+
outputs: { ...outputs },
|
|
545
|
+
createdAt,
|
|
546
|
+
updatedAt: Date.now()
|
|
547
|
+
});
|
|
548
|
+
const context = {
|
|
549
|
+
workflowName: config.name,
|
|
550
|
+
stepIndex: i,
|
|
551
|
+
previousOutputs: { ...outputs },
|
|
552
|
+
signal: options?.signal
|
|
553
|
+
};
|
|
554
|
+
const result = await executeStep(stepConfig, currentInput, context);
|
|
555
|
+
stepResults.push(result);
|
|
556
|
+
if (result.status === "completed" && result.data !== undefined) {
|
|
557
|
+
outputs[stepConfig.name] = result.data;
|
|
558
|
+
currentInput = result.data;
|
|
559
|
+
}
|
|
560
|
+
await config.onStepComplete?.(result);
|
|
561
|
+
if (result.status === "failed") {
|
|
562
|
+
await config.onStepError?.(new Error(result.error ?? "Step failed"), stepConfig.name);
|
|
563
|
+
await checkpointStore.save({
|
|
564
|
+
workflowId,
|
|
565
|
+
workflowName: config.name,
|
|
566
|
+
status: "failed",
|
|
567
|
+
input,
|
|
568
|
+
currentStepIndex: i,
|
|
569
|
+
stepResults: [...stepResults],
|
|
570
|
+
outputs: { ...outputs },
|
|
571
|
+
createdAt,
|
|
572
|
+
updatedAt: Date.now()
|
|
573
|
+
});
|
|
574
|
+
const workflowResult2 = {
|
|
575
|
+
name: config.name,
|
|
576
|
+
status: "failed",
|
|
577
|
+
steps: stepResults,
|
|
578
|
+
totalDurationMs: Math.round(performance.now() - startTime),
|
|
579
|
+
outputs
|
|
580
|
+
};
|
|
581
|
+
await config.onComplete?.(workflowResult2);
|
|
582
|
+
return workflowResult2;
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
await checkpointStore.save({
|
|
586
|
+
workflowId,
|
|
587
|
+
workflowName: config.name,
|
|
588
|
+
status: "completed",
|
|
589
|
+
input,
|
|
590
|
+
currentStepIndex: config.steps.length,
|
|
591
|
+
stepResults: [...stepResults],
|
|
592
|
+
outputs: { ...outputs },
|
|
593
|
+
createdAt,
|
|
594
|
+
updatedAt: Date.now()
|
|
595
|
+
});
|
|
596
|
+
const workflowResult = {
|
|
597
|
+
name: config.name,
|
|
598
|
+
status: "completed",
|
|
599
|
+
steps: stepResults,
|
|
600
|
+
totalDurationMs: Math.round(performance.now() - startTime),
|
|
601
|
+
outputs
|
|
602
|
+
};
|
|
603
|
+
await config.onComplete?.(workflowResult);
|
|
604
|
+
return workflowResult;
|
|
605
|
+
}
|
|
606
|
+
return {
|
|
607
|
+
name: config.name,
|
|
608
|
+
async run(input, options = {}) {
|
|
609
|
+
const workflowId = options.workflowId ?? generateId("wf");
|
|
610
|
+
return executeFromStep(workflowId, input, 0, [], {}, options);
|
|
611
|
+
},
|
|
612
|
+
async resume(workflowId, options = {}) {
|
|
613
|
+
const checkpoint = await checkpointStore.load(workflowId);
|
|
614
|
+
if (!checkpoint) {
|
|
615
|
+
throw new ElsiumError({
|
|
616
|
+
code: "VALIDATION_ERROR",
|
|
617
|
+
message: `No checkpoint found for workflow "${workflowId}"`,
|
|
618
|
+
retryable: false
|
|
619
|
+
});
|
|
620
|
+
}
|
|
621
|
+
if (checkpoint.status === "completed") {
|
|
622
|
+
return {
|
|
623
|
+
name: config.name,
|
|
624
|
+
status: "completed",
|
|
625
|
+
steps: checkpoint.stepResults,
|
|
626
|
+
totalDurationMs: 0,
|
|
627
|
+
outputs: checkpoint.outputs
|
|
628
|
+
};
|
|
629
|
+
}
|
|
630
|
+
const resumeIndex = checkpoint.currentStepIndex;
|
|
631
|
+
return executeFromStep(workflowId, checkpoint.input, resumeIndex, checkpoint.stepResults.slice(0, resumeIndex), checkpoint.outputs, options);
|
|
632
|
+
},
|
|
633
|
+
async getCheckpoint(workflowId) {
|
|
634
|
+
return checkpointStore.load(workflowId);
|
|
635
|
+
},
|
|
636
|
+
async listCheckpoints() {
|
|
637
|
+
return checkpointStore.list(config.name);
|
|
638
|
+
}
|
|
639
|
+
};
|
|
640
|
+
}
|
|
492
641
|
export {
|
|
493
642
|
step,
|
|
494
643
|
executeStep,
|
|
495
644
|
defineWorkflow,
|
|
645
|
+
defineResumableWorkflow,
|
|
496
646
|
defineParallelWorkflow,
|
|
497
647
|
defineDagWorkflow,
|
|
498
|
-
defineBranchWorkflow
|
|
648
|
+
defineBranchWorkflow,
|
|
649
|
+
createInMemoryCheckpointStore
|
|
499
650
|
};
|
package/dist/types.d.ts
CHANGED
|
@@ -29,7 +29,7 @@ export interface RetryConfig {
|
|
|
29
29
|
maxDelayMs?: number;
|
|
30
30
|
shouldRetry?: (error: Error) => boolean;
|
|
31
31
|
}
|
|
32
|
-
export type WorkflowStatus = 'pending' | 'running' | 'completed' | 'failed';
|
|
32
|
+
export type WorkflowStatus = 'pending' | 'running' | 'completed' | 'failed' | 'paused';
|
|
33
33
|
export interface WorkflowConfig {
|
|
34
34
|
name: string;
|
|
35
35
|
steps: StepConfig[];
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAI5B,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAA;AAEnF,MAAM,WAAW,UAAU,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAC9D,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACzB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAClE,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAA;IAC5D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACxC,MAAM,CAAC,EAAE,WAAW,CAAA;CACpB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,UAAU,CAAA;IAClB,IAAI,CAAC,EAAE,CAAC,CAAA;IACR,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CAClB;AAID,MAAM,WAAW,WAAW;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;CACvC;AAID,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elsium-ai/workflows",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Multi-step workflow pipelines and DAG execution for ElsiumAI",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Eric Utrera <ebutrera9103@gmail.com>",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"dev": "bun --watch src/index.ts"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@elsium-ai/core": "^0.
|
|
29
|
+
"@elsium-ai/core": "^0.9.0",
|
|
30
30
|
"zod": "^3.24.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|