@db-lyon/flowkit 0.5.0 → 0.5.2
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/dist/config/schema.d.ts +612 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +19 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/flow/references.d.ts +34 -0
- package/dist/flow/references.d.ts.map +1 -0
- package/dist/flow/references.js +87 -0
- package/dist/flow/references.js.map +1 -0
- package/dist/flow/runner.d.ts +32 -6
- package/dist/flow/runner.d.ts.map +1 -1
- package/dist/flow/runner.js +278 -85
- package/dist/flow/runner.js.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/task/agent-prompt-task.d.ts +23 -0
- package/dist/task/agent-prompt-task.d.ts.map +1 -0
- package/dist/task/agent-prompt-task.js +43 -0
- package/dist/task/agent-prompt-task.js.map +1 -0
- package/dist/task/base-task.d.ts +10 -0
- package/dist/task/base-task.d.ts.map +1 -1
- package/dist/task/base-task.js.map +1 -1
- package/dist/task/llm-provider.d.ts +36 -0
- package/dist/task/llm-provider.d.ts.map +1 -0
- package/dist/task/llm-provider.js +7 -0
- package/dist/task/llm-provider.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB,wCAAwB,CAAC;AAEvD,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB,wCAAwB,CAAC;AAEvD,eAAO,MAAM,oBAAoB;;;;;IAK/B,sEAAsE;;;;;;;;;;;;;;;;;EAGtE,CAAC;AAEH,eAAO,MAAM,cAAc;;;;IAKvB,0DAA0D;;IAE1D,8CAA8C;;IAE9C,iEAAiE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASlE,CAAC;AAEJ,eAAO,MAAM,oBAAoB;;;;;;QAf7B,0DAA0D;;QAE1D,8CAA8C;;QAE9C,iEAAiE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAcnE,+EAA+E;;;;;QAlB7E,0DAA0D;;QAE1D,8CAA8C;;QAE9C,iEAAiE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgBnE,oCAAoC;;;;;QApBlC,0DAA0D;;QAE1D,8CAA8C;;QAE9C,iEAAiE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkBnE,gCAAgC;;;;;QAtB9B,0DAA0D;;QAE1D,8CAA8C;;QAE9C,iEAAiE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoBnE,kEAAkE;;;;;QAxBhE,0DAA0D;;QAE1D,8CAA8C;;QAE9C,iEAAiE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsBnE,yFAAyF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEzF,CAAC;AAEH,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB;;;;;;QAzC7B,sEAAsE;;;;;;;;;;;;;;;;;;;;;;;;YAUpE,0DAA0D;;YAE1D,8CAA8C;;YAE9C,iEAAiE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAcnE,+EAA+E;;;;;YAlB7E,0DAA0D;;YAE1D,8CAA8C;;YAE9C,iEAAiE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAgBnE,oCAAoC;;;;;YApBlC,0DAA0D;;YAE1D,8CAA8C;;YAE9C,iEAAiE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkBnE,gCAAgC;;;;;YAtB9B,0DAA0D;;YAE1D,8CAA8C;;YAE9C,iEAAiE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoBnE,kEAAkE;;;;;YAxBhE,0DAA0D;;YAE1D,8CAA8C;;YAE9C,iEAAiE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAsBnE,yFAAyF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQzF,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|
package/dist/config/schema.js
CHANGED
|
@@ -5,12 +5,21 @@ export const TaskDefinitionSchema = z.object({
|
|
|
5
5
|
description: z.string().optional(),
|
|
6
6
|
group: z.string().optional(),
|
|
7
7
|
options: TaskOptionsSchema.optional().default({}),
|
|
8
|
+
/** Declarative hints surfaced in listings; not used by the runner. */
|
|
9
|
+
idempotent: z.boolean().optional(),
|
|
10
|
+
reversible: z.boolean().optional(),
|
|
8
11
|
});
|
|
9
12
|
export const FlowStepSchema = z
|
|
10
13
|
.object({
|
|
11
14
|
task: z.string().optional(),
|
|
12
15
|
flow: z.string().optional(),
|
|
13
16
|
options: TaskOptionsSchema.optional(),
|
|
17
|
+
/** Retry the step up to N additional times on failure. */
|
|
18
|
+
retries: z.number().int().nonnegative().optional(),
|
|
19
|
+
/** Delay between retries, in milliseconds. */
|
|
20
|
+
retryDelay: z.number().int().nonnegative().optional(),
|
|
21
|
+
/** Only retry when the error message contains this substring. */
|
|
22
|
+
retryOn: z.string().optional(),
|
|
14
23
|
})
|
|
15
24
|
.refine((data) => {
|
|
16
25
|
if (data.task === 'None')
|
|
@@ -20,6 +29,16 @@ export const FlowStepSchema = z
|
|
|
20
29
|
export const FlowDefinitionSchema = z.object({
|
|
21
30
|
description: z.string(),
|
|
22
31
|
steps: z.record(z.coerce.string(), FlowStepSchema),
|
|
32
|
+
/** Runs before the first step. Failure fails the flow before steps execute. */
|
|
33
|
+
on_start: z.array(FlowStepSchema).optional(),
|
|
34
|
+
/** Runs after all steps succeed. */
|
|
35
|
+
on_success: z.array(FlowStepSchema).optional(),
|
|
36
|
+
/** Runs on any step failure. */
|
|
37
|
+
on_failure: z.array(FlowStepSchema).optional(),
|
|
38
|
+
/** Runs after success or failure, after on_success/on_failure. */
|
|
39
|
+
finally: z.array(FlowStepSchema).optional(),
|
|
40
|
+
/** If true, invoke rollback records from completed steps in reverse order on failure. */
|
|
41
|
+
rollback_on_failure: z.boolean().optional(),
|
|
23
42
|
});
|
|
24
43
|
/** Minimal config shape the engine requires. Consumers extend with their own sections. */
|
|
25
44
|
export const EngineConfigSchema = z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reference resolution for flow option values.
|
|
3
|
+
*
|
|
4
|
+
* Option values may contain two reference namespaces, delimited by `${...}`:
|
|
5
|
+
*
|
|
6
|
+
* ${steps.<id>.<path>} → value from a previously completed step
|
|
7
|
+
* ${error.<path>} → error info, only inside on_failure / finally hooks
|
|
8
|
+
*
|
|
9
|
+
* `<id>` is a step number ("3") or a task name ("level.place_actor"). Task
|
|
10
|
+
* names match the most recently completed step with that name. Longest-prefix
|
|
11
|
+
* match wins when a task name shares a prefix with a path segment.
|
|
12
|
+
*
|
|
13
|
+
* A reference that fills the entire string is replaced with the raw value
|
|
14
|
+
* (preserving object/array/number types). Embedded references are stringified.
|
|
15
|
+
*/
|
|
16
|
+
export interface ReferenceableStep {
|
|
17
|
+
stepNumber: number;
|
|
18
|
+
name: string;
|
|
19
|
+
result?: {
|
|
20
|
+
data?: unknown;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export interface ReferenceContext {
|
|
24
|
+
steps: ReferenceableStep[];
|
|
25
|
+
/** Present inside on_failure / finally hooks. */
|
|
26
|
+
error?: {
|
|
27
|
+
message: string;
|
|
28
|
+
name: string;
|
|
29
|
+
stack?: string;
|
|
30
|
+
step?: string;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export declare function resolveReferences<T>(value: T, ctx: ReferenceContext): T;
|
|
34
|
+
//# sourceMappingURL=references.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../src/flow/references.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,iDAAiD;IACjD,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1E;AAKD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,gBAAgB,GAAG,CAAC,CAcvE"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reference resolution for flow option values.
|
|
3
|
+
*
|
|
4
|
+
* Option values may contain two reference namespaces, delimited by `${...}`:
|
|
5
|
+
*
|
|
6
|
+
* ${steps.<id>.<path>} → value from a previously completed step
|
|
7
|
+
* ${error.<path>} → error info, only inside on_failure / finally hooks
|
|
8
|
+
*
|
|
9
|
+
* `<id>` is a step number ("3") or a task name ("level.place_actor"). Task
|
|
10
|
+
* names match the most recently completed step with that name. Longest-prefix
|
|
11
|
+
* match wins when a task name shares a prefix with a path segment.
|
|
12
|
+
*
|
|
13
|
+
* A reference that fills the entire string is replaced with the raw value
|
|
14
|
+
* (preserving object/array/number types). Embedded references are stringified.
|
|
15
|
+
*/
|
|
16
|
+
const WHOLE_VALUE = /^\$\{(steps|error)\.([^}]+)\}$/;
|
|
17
|
+
const EMBEDDED = /\$\{(steps|error)\.([^}]+)\}/g;
|
|
18
|
+
export function resolveReferences(value, ctx) {
|
|
19
|
+
if (value == null)
|
|
20
|
+
return value;
|
|
21
|
+
if (typeof value === 'string')
|
|
22
|
+
return resolveString(value, ctx);
|
|
23
|
+
if (Array.isArray(value)) {
|
|
24
|
+
return value.map((v) => resolveReferences(v, ctx));
|
|
25
|
+
}
|
|
26
|
+
if (typeof value === 'object') {
|
|
27
|
+
const out = {};
|
|
28
|
+
for (const [k, v] of Object.entries(value)) {
|
|
29
|
+
out[k] = resolveReferences(v, ctx);
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
function resolveString(str, ctx) {
|
|
36
|
+
const whole = str.match(WHOLE_VALUE);
|
|
37
|
+
if (whole)
|
|
38
|
+
return resolveRef(whole[1], whole[2], ctx);
|
|
39
|
+
if (!str.includes('${'))
|
|
40
|
+
return str;
|
|
41
|
+
return str.replace(EMBEDDED, (_match, ns, ref) => {
|
|
42
|
+
const v = resolveRef(ns, ref, ctx);
|
|
43
|
+
if (v == null)
|
|
44
|
+
return '';
|
|
45
|
+
if (typeof v === 'object')
|
|
46
|
+
return JSON.stringify(v);
|
|
47
|
+
return String(v);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
function resolveRef(namespace, ref, ctx) {
|
|
51
|
+
if (namespace === 'error') {
|
|
52
|
+
if (!ctx.error) {
|
|
53
|
+
throw new Error(`\${error.${ref}} referenced outside on_failure/finally — error context not available`);
|
|
54
|
+
}
|
|
55
|
+
return getPath(ctx.error, ref.split('.'));
|
|
56
|
+
}
|
|
57
|
+
// steps namespace
|
|
58
|
+
const segments = ref.split('.');
|
|
59
|
+
for (let i = segments.length; i >= 1; i--) {
|
|
60
|
+
const idCandidate = segments.slice(0, i).join('.');
|
|
61
|
+
const match = findStep(idCandidate, ctx.steps);
|
|
62
|
+
if (match) {
|
|
63
|
+
return getPath(match.result?.data, segments.slice(i));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
throw new Error(`Unresolvable step reference: \${steps.${ref}} — no completed step matches "${segments[0]}"`);
|
|
67
|
+
}
|
|
68
|
+
function findStep(id, steps) {
|
|
69
|
+
if (/^\d+$/.test(id)) {
|
|
70
|
+
return steps.find((s) => String(s.stepNumber) === id);
|
|
71
|
+
}
|
|
72
|
+
for (let i = steps.length - 1; i >= 0; i--) {
|
|
73
|
+
if (steps[i].name === id)
|
|
74
|
+
return steps[i];
|
|
75
|
+
}
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
function getPath(obj, segments) {
|
|
79
|
+
let cur = obj;
|
|
80
|
+
for (const seg of segments) {
|
|
81
|
+
if (cur == null || typeof cur !== 'object')
|
|
82
|
+
return undefined;
|
|
83
|
+
cur = cur[seg];
|
|
84
|
+
}
|
|
85
|
+
return cur;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=references.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/flow/references.ts"],"names":[],"mappings":"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"}
|
package/dist/flow/runner.d.ts
CHANGED
|
@@ -3,12 +3,15 @@ import type { TaskDefinition, FlowDefinition } from '../config/schema.js';
|
|
|
3
3
|
import type { TaskResult } from '../task/base-task.js';
|
|
4
4
|
import type { TaskContext } from '../task/base-task.js';
|
|
5
5
|
import type { TaskRegistry } from '../task/registry.js';
|
|
6
|
+
export type HookPhase = 'on_start' | 'on_success' | 'on_failure' | 'finally';
|
|
6
7
|
export interface FlowRunOptions {
|
|
7
8
|
flowName: string;
|
|
8
9
|
skip?: string[];
|
|
9
10
|
plan?: boolean;
|
|
10
11
|
/** Runtime parameters — merged into every step's options with highest priority. */
|
|
11
12
|
params?: Record<string, unknown>;
|
|
13
|
+
/** If true, invoke rollback records from completed steps in reverse order on failure. */
|
|
14
|
+
rollback_on_failure?: boolean;
|
|
12
15
|
}
|
|
13
16
|
export interface FlowStepResult {
|
|
14
17
|
stepNumber: number;
|
|
@@ -17,12 +20,31 @@ export interface FlowStepResult {
|
|
|
17
20
|
result?: TaskResult;
|
|
18
21
|
skipped: boolean;
|
|
19
22
|
duration: number;
|
|
23
|
+
/** Number of attempts including the first try (≥1 when executed). */
|
|
24
|
+
attempts?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface HookError {
|
|
27
|
+
phase: HookPhase;
|
|
28
|
+
name: string;
|
|
29
|
+
error: Error;
|
|
30
|
+
}
|
|
31
|
+
export interface RollbackResult {
|
|
32
|
+
attempted: number;
|
|
33
|
+
succeeded: number;
|
|
34
|
+
errors: {
|
|
35
|
+
taskName: string;
|
|
36
|
+
error: Error;
|
|
37
|
+
}[];
|
|
20
38
|
}
|
|
21
39
|
export interface FlowRunResult {
|
|
22
40
|
success: boolean;
|
|
23
41
|
steps: FlowStepResult[];
|
|
24
42
|
duration: number;
|
|
25
43
|
error?: Error;
|
|
44
|
+
/** Failures from hook steps (on_start / on_success / on_failure / finally). */
|
|
45
|
+
hookErrors?: HookError[];
|
|
46
|
+
/** Populated when rollback_on_failure ran. */
|
|
47
|
+
rollback?: RollbackResult;
|
|
26
48
|
}
|
|
27
49
|
export interface PlanStep {
|
|
28
50
|
stepNumber: number;
|
|
@@ -30,17 +52,17 @@ export interface PlanStep {
|
|
|
30
52
|
name: string;
|
|
31
53
|
skipped: boolean;
|
|
32
54
|
options?: Record<string, unknown>;
|
|
55
|
+
retries?: number;
|
|
56
|
+
retryDelay?: number;
|
|
57
|
+
retryOn?: string;
|
|
58
|
+
/** For hook steps: the phase they belong to. Undefined for main steps. */
|
|
59
|
+
phase?: HookPhase;
|
|
33
60
|
}
|
|
34
61
|
export interface FlowRunnerHooks {
|
|
35
|
-
/** Fires once before the top-level flow starts (not for nested flows). */
|
|
36
62
|
beforeRun?(flowName: string, plan: PlanStep[]): Promise<void>;
|
|
37
|
-
/** Fires once after the top-level flow completes (success or failure). */
|
|
38
63
|
afterRun?(result: FlowRunResult): Promise<void>;
|
|
39
|
-
/** Fires before every step (including steps inside nested flows). */
|
|
40
64
|
beforeStep?(step: PlanStep): Promise<void>;
|
|
41
|
-
/** Fires after every step. */
|
|
42
65
|
afterStep?(step: PlanStep, result: FlowStepResult): Promise<void>;
|
|
43
|
-
/** Fires when a step fails — before afterRun. */
|
|
44
66
|
onStepError?(step: PlanStep, error: Error, completed: FlowStepResult[]): Promise<void>;
|
|
45
67
|
}
|
|
46
68
|
export interface FlowRunnerConfig {
|
|
@@ -61,10 +83,14 @@ export declare class FlowRunner {
|
|
|
61
83
|
private runDepth;
|
|
62
84
|
constructor(config: FlowRunnerConfig);
|
|
63
85
|
run(options: FlowRunOptions): Promise<FlowRunResult>;
|
|
64
|
-
/** Flatten a flow definition into an ordered execution plan. */
|
|
65
86
|
resolveExecutionPlan(flow: FlowDefinition, skipSet: Set<string>): PlanStep[];
|
|
87
|
+
private planStepFromDef;
|
|
88
|
+
private planHookSteps;
|
|
66
89
|
private executeFlow;
|
|
90
|
+
private runHookStep;
|
|
91
|
+
private executeTaskStepWithRetry;
|
|
67
92
|
private executeTaskStep;
|
|
93
|
+
private performRollback;
|
|
68
94
|
private resolveTaskDefinition;
|
|
69
95
|
}
|
|
70
96
|
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/flow/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAY,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/flow/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAY,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOxD,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,CAAC;AAE7E,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,yFAAyF;IACzF,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,+EAA+E;IAC/E,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,QAAQ,CAAC,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,UAAU,CAAC,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,SAAS,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,WAAW,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxF;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACtC,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,QAAQ,CAAK;gBAET,MAAM,EAAE,gBAAgB;IAS9B,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAU1D,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,QAAQ,EAAE;IAQ5E,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,aAAa;YAiBP,WAAW;YAiOX,WAAW;YAmDX,wBAAwB;YAiCxB,eAAe;YAwCf,eAAe;IAkC7B,OAAO,CAAC,qBAAqB;CAU9B"}
|