@xyne/workflow-sdk 3.2.38 → 3.2.40
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/builder/index.d.ts +3 -1
- package/dist/builder/index.d.ts.map +1 -1
- package/dist/builder/index.js +7 -1
- package/dist/builder/index.js.map +1 -1
- package/dist/client/types.d.ts +13 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client/workflow-client.d.ts.map +1 -1
- package/dist/client/workflow-client.js +8 -0
- package/dist/client/workflow-client.js.map +1 -1
- package/dist/common/citation-ref.d.ts +36 -36
- package/dist/connectors/builtin/builtin-connector.d.ts +1 -0
- package/dist/connectors/builtin/builtin-connector.d.ts.map +1 -1
- package/dist/connectors/builtin/builtin-connector.js +1 -0
- package/dist/connectors/builtin/builtin-connector.js.map +1 -1
- package/dist/connectors/builtin/steps/http-request.step.d.ts +2 -2
- package/dist/connectors/builtin/steps/switch.step.d.ts +12 -12
- package/dist/connectors/builtin/steps/wait.step.d.ts +90 -90
- package/dist/connectors/builtin/triggers/default-cron-trigger.d.ts +9 -1
- package/dist/connectors/builtin/triggers/default-cron-trigger.d.ts.map +1 -1
- package/dist/connectors/builtin/triggers/default-cron-trigger.js +3 -3
- package/dist/connectors/builtin/triggers/default-cron-trigger.js.map +1 -1
- package/dist/connectors/builtin/triggers/default-event-trigger.d.ts +12 -1
- package/dist/connectors/builtin/triggers/default-event-trigger.d.ts.map +1 -1
- package/dist/connectors/builtin/triggers/default-event-trigger.js +13 -1
- package/dist/connectors/builtin/triggers/default-event-trigger.js.map +1 -1
- package/dist/connectors/builtin/triggers/default-manual-trigger.d.ts +4 -1
- package/dist/connectors/builtin/triggers/default-manual-trigger.d.ts.map +1 -1
- package/dist/connectors/builtin/triggers/default-manual-trigger.js +3 -1
- package/dist/connectors/builtin/triggers/default-manual-trigger.js.map +1 -1
- package/dist/connectors/core/base-connector.d.ts +5 -0
- package/dist/connectors/core/base-connector.d.ts.map +1 -1
- package/dist/connectors/core/base-connector.js +5 -0
- package/dist/connectors/core/base-connector.js.map +1 -1
- package/dist/connectors/core/connector-registry.d.ts.map +1 -1
- package/dist/connectors/core/connector-registry.js +26 -12
- package/dist/connectors/core/connector-registry.js.map +1 -1
- package/dist/engine/condition-evaluator.d.ts.map +1 -1
- package/dist/engine/condition-evaluator.js +41 -5
- package/dist/engine/condition-evaluator.js.map +1 -1
- package/dist/engine/config-validator.d.ts +8 -0
- package/dist/engine/config-validator.d.ts.map +1 -1
- package/dist/engine/config-validator.js +61 -4
- package/dist/engine/config-validator.js.map +1 -1
- package/dist/engine/workflow-executor.d.ts.map +1 -1
- package/dist/engine/workflow-executor.js +5 -28
- package/dist/engine/workflow-executor.js.map +1 -1
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/ingest/start-policy.d.ts +202 -0
- package/dist/ingest/start-policy.d.ts.map +1 -0
- package/dist/ingest/start-policy.js +199 -0
- package/dist/ingest/start-policy.js.map +1 -0
- package/dist/ingest/types.d.ts +25 -6
- package/dist/ingest/types.d.ts.map +1 -1
- package/dist/persistence/in-memory-adapter.d.ts +4 -2
- package/dist/persistence/in-memory-adapter.d.ts.map +1 -1
- package/dist/persistence/in-memory-adapter.js +9 -1
- package/dist/persistence/in-memory-adapter.js.map +1 -1
- package/dist/persistence/types.d.ts +53 -1
- package/dist/persistence/types.d.ts.map +1 -1
- package/dist/router/types.d.ts +1 -0
- package/dist/router/types.d.ts.map +1 -1
- package/dist/router/workflow-router.d.ts.map +1 -1
- package/dist/router/workflow-router.js +57 -5
- package/dist/router/workflow-router.js.map +1 -1
- package/dist/runtime/types.d.ts +5 -0
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/workflow-runtime.d.ts +121 -7
- package/dist/runtime/workflow-runtime.d.ts.map +1 -1
- package/dist/runtime/workflow-runtime.js +430 -57
- package/dist/runtime/workflow-runtime.js.map +1 -1
- package/dist/schema/options.d.ts +101 -0
- package/dist/schema/options.d.ts.map +1 -0
- package/dist/schema/options.js +14 -0
- package/dist/schema/options.js.map +1 -0
- package/dist/steps/base-step.d.ts +12 -1
- package/dist/steps/base-step.d.ts.map +1 -1
- package/dist/steps/base-step.js +1 -0
- package/dist/steps/base-step.js.map +1 -1
- package/dist/steps/step-descriptor.d.ts +2 -0
- package/dist/steps/step-descriptor.d.ts.map +1 -1
- package/dist/steps/step-descriptor.js +1 -0
- package/dist/steps/step-descriptor.js.map +1 -1
- package/dist/triggers/api-trigger.d.ts +1 -1
- package/dist/triggers/api-trigger.d.ts.map +1 -1
- package/dist/triggers/api-trigger.js.map +1 -1
- package/dist/triggers/base-trigger.d.ts +67 -8
- package/dist/triggers/base-trigger.d.ts.map +1 -1
- package/dist/triggers/base-trigger.js +15 -3
- package/dist/triggers/base-trigger.js.map +1 -1
- package/dist/triggers/cron-trigger.d.ts +1 -1
- package/dist/triggers/cron-trigger.d.ts.map +1 -1
- package/dist/triggers/cron-trigger.js.map +1 -1
- package/dist/triggers/event-trigger.d.ts +3 -3
- package/dist/triggers/event-trigger.d.ts.map +1 -1
- package/dist/triggers/event-trigger.js +2 -2
- package/dist/triggers/event-trigger.js.map +1 -1
- package/dist/triggers/manual-trigger.d.ts +1 -1
- package/dist/triggers/manual-trigger.d.ts.map +1 -1
- package/dist/triggers/manual-trigger.js.map +1 -1
- package/dist/triggers/trigger-descriptor.d.ts +2 -0
- package/dist/triggers/trigger-descriptor.d.ts.map +1 -1
- package/dist/triggers/trigger-descriptor.js +1 -0
- package/dist/triggers/trigger-descriptor.js.map +1 -1
- package/dist/triggers/webhook-trigger.d.ts +25 -6
- package/dist/triggers/webhook-trigger.d.ts.map +1 -1
- package/dist/triggers/webhook-trigger.js +23 -2
- package/dist/triggers/webhook-trigger.js.map +1 -1
- package/dist/types/config-path.d.ts +24 -0
- package/dist/types/config-path.d.ts.map +1 -0
- package/dist/types/config-path.js +18 -0
- package/dist/types/config-path.js.map +1 -0
- package/dist/types/context.d.ts.map +1 -1
- package/dist/types/operators.d.ts +15 -1
- package/dist/types/operators.d.ts.map +1 -1
- package/dist/types/operators.js +21 -0
- package/dist/types/operators.js.map +1 -1
- package/dist/types/workflow-config.d.ts +13 -0
- package/dist/types/workflow-config.d.ts.map +1 -1
- package/dist/types/workflow-config.js +9 -7
- package/dist/types/workflow-config.js.map +1 -1
- package/dist/util/option-mark.d.ts +44 -0
- package/dist/util/option-mark.d.ts.map +1 -0
- package/dist/util/option-mark.js +132 -0
- package/dist/util/option-mark.js.map +1 -0
- package/dist/util/schema-convert.d.ts +5 -0
- package/dist/util/schema-convert.d.ts.map +1 -1
- package/dist/util/schema-convert.js +7 -1
- package/dist/util/schema-convert.js.map +1 -1
- package/dist/util/schema-marks.d.ts +58 -0
- package/dist/util/schema-marks.d.ts.map +1 -0
- package/dist/util/schema-marks.js +161 -0
- package/dist/util/schema-marks.js.map +1 -0
- package/dist/util/variable-ref.d.ts +0 -5
- package/dist/util/variable-ref.d.ts.map +1 -1
- package/dist/util/variable-ref.js +0 -5
- package/dist/util/variable-ref.js.map +1 -1
- package/package.json +1 -1
- package/dist/runtime/execution-event-bus.d.ts +0 -38
- package/dist/runtime/execution-event-bus.d.ts.map +0 -1
- package/dist/runtime/execution-event-bus.js +0 -87
- package/dist/runtime/execution-event-bus.js.map +0 -1
- package/dist/steps/builtin/code.step.d.ts +0 -99
- package/dist/steps/builtin/code.step.d.ts.map +0 -1
- package/dist/steps/builtin/code.step.js +0 -152
- package/dist/steps/builtin/code.step.js.map +0 -1
- package/dist/steps/builtin/conditional.step.d.ts +0 -182
- package/dist/steps/builtin/conditional.step.d.ts.map +0 -1
- package/dist/steps/builtin/conditional.step.js +0 -82
- package/dist/steps/builtin/conditional.step.js.map +0 -1
- package/dist/steps/builtin/dedup.step.d.ts +0 -65
- package/dist/steps/builtin/dedup.step.d.ts.map +0 -1
- package/dist/steps/builtin/dedup.step.js +0 -61
- package/dist/steps/builtin/dedup.step.js.map +0 -1
- package/dist/steps/builtin/http-request.step.d.ts +0 -1020
- package/dist/steps/builtin/http-request.step.d.ts.map +0 -1
- package/dist/steps/builtin/http-request.step.js +0 -491
- package/dist/steps/builtin/http-request.step.js.map +0 -1
- package/dist/steps/builtin/loop.step.d.ts +0 -100
- package/dist/steps/builtin/loop.step.d.ts.map +0 -1
- package/dist/steps/builtin/loop.step.js +0 -73
- package/dist/steps/builtin/loop.step.js.map +0 -1
- package/dist/steps/builtin/map.step.d.ts +0 -148
- package/dist/steps/builtin/map.step.d.ts.map +0 -1
- package/dist/steps/builtin/map.step.js +0 -111
- package/dist/steps/builtin/map.step.js.map +0 -1
- package/dist/steps/builtin/parallel.step.d.ts +0 -246
- package/dist/steps/builtin/parallel.step.d.ts.map +0 -1
- package/dist/steps/builtin/parallel.step.js +0 -175
- package/dist/steps/builtin/parallel.step.js.map +0 -1
- package/dist/steps/builtin/ssrf-guard.d.ts +0 -9
- package/dist/steps/builtin/ssrf-guard.d.ts.map +0 -1
- package/dist/steps/builtin/ssrf-guard.js +0 -115
- package/dist/steps/builtin/ssrf-guard.js.map +0 -1
- package/dist/steps/builtin/switch.step.d.ts +0 -235
- package/dist/steps/builtin/switch.step.d.ts.map +0 -1
- package/dist/steps/builtin/switch.step.js +0 -101
- package/dist/steps/builtin/switch.step.js.map +0 -1
- package/dist/steps/builtin/wait.step.d.ts +0 -1072
- package/dist/steps/builtin/wait.step.d.ts.map +0 -1
- package/dist/steps/builtin/wait.step.js +0 -254
- package/dist/steps/builtin/wait.step.js.map +0 -1
- package/dist/steps/step-registry.d.ts +0 -62
- package/dist/steps/step-registry.d.ts.map +0 -1
- package/dist/steps/step-registry.js +0 -103
- package/dist/steps/step-registry.js.map +0 -1
- package/dist/triggers/builtin/default-cron-trigger.d.ts +0 -44
- package/dist/triggers/builtin/default-cron-trigger.d.ts.map +0 -1
- package/dist/triggers/builtin/default-cron-trigger.js +0 -31
- package/dist/triggers/builtin/default-cron-trigger.js.map +0 -1
- package/dist/triggers/builtin/default-event-trigger.d.ts +0 -32
- package/dist/triggers/builtin/default-event-trigger.d.ts.map +0 -1
- package/dist/triggers/builtin/default-event-trigger.js +0 -21
- package/dist/triggers/builtin/default-event-trigger.js.map +0 -1
- package/dist/triggers/builtin/default-manual-trigger.d.ts +0 -45
- package/dist/triggers/builtin/default-manual-trigger.d.ts.map +0 -1
- package/dist/triggers/builtin/default-manual-trigger.js +0 -51
- package/dist/triggers/builtin/default-manual-trigger.js.map +0 -1
- package/dist/triggers/builtin/default-webhook-trigger.d.ts +0 -72
- package/dist/triggers/builtin/default-webhook-trigger.d.ts.map +0 -1
- package/dist/triggers/builtin/default-webhook-trigger.js +0 -91
- package/dist/triggers/builtin/default-webhook-trigger.js.map +0 -1
- package/dist/triggers/builtin/default-webhook-v2-trigger.d.ts +0 -29
- package/dist/triggers/builtin/default-webhook-v2-trigger.d.ts.map +0 -1
- package/dist/triggers/builtin/default-webhook-v2-trigger.js +0 -38
- package/dist/triggers/builtin/default-webhook-v2-trigger.js.map +0 -1
- package/dist/triggers/trigger-registry.d.ts +0 -48
- package/dist/triggers/trigger-registry.d.ts.map +0 -1
- package/dist/triggers/trigger-registry.js +0 -83
- package/dist/triggers/trigger-registry.js.map +0 -1
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marking a config field as one whose values the owning component can list.
|
|
3
|
+
*
|
|
4
|
+
* The mark rides on the Zod schema and is projected into the generated JSON
|
|
5
|
+
* Schema by `zod-to-json-schema`'s `postProcess` hook, which fires once per
|
|
6
|
+
* converted node. That is the entire mechanism. Because the converter already
|
|
7
|
+
* recurses, nesting, arrays, arrays-of-objects and union variants need no code
|
|
8
|
+
* here — and because nothing is addressed by name, there is no path to typo and
|
|
9
|
+
* no second traversal that could disagree with the first.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Anchored on `globalThis` rather than module scope.
|
|
13
|
+
*
|
|
14
|
+
* A config schema is DECLARED in a connector package and CONVERTED in this one.
|
|
15
|
+
* Were two copies of the SDK ever loaded, a module-local set would lose every
|
|
16
|
+
* mark and quietly render plain text boxes — the precise failure this feature
|
|
17
|
+
* exists to prevent.
|
|
18
|
+
*/
|
|
19
|
+
const MARK_KEY = Symbol.for('@xyne/workflow-sdk:option-marks');
|
|
20
|
+
const marks = (() => {
|
|
21
|
+
const g = globalThis;
|
|
22
|
+
const existing = g[MARK_KEY];
|
|
23
|
+
if (existing instanceof WeakSet)
|
|
24
|
+
return existing;
|
|
25
|
+
const created = new WeakSet();
|
|
26
|
+
g[MARK_KEY] = created;
|
|
27
|
+
return created;
|
|
28
|
+
})();
|
|
29
|
+
/**
|
|
30
|
+
* Declare that this field's values are drawn from a set the component can
|
|
31
|
+
* enumerate — the difference between pasting a repository id and picking one.
|
|
32
|
+
*
|
|
33
|
+
* Wrap the innermost schema: `withOptions(z.string()).optional()`, not
|
|
34
|
+
* `withOptions(z.string().optional())`, so the mark lands on the node the
|
|
35
|
+
* converter actually emits for the field.
|
|
36
|
+
*
|
|
37
|
+
* A suggestion, not a constraint. Free text and `{{trigger.x}}` references stay
|
|
38
|
+
* legal, which is why this is not `z.enum` — it says where good values come
|
|
39
|
+
* from, not which values are allowed. The component answers with `getOptions`,
|
|
40
|
+
* and `ctx.field` tells it which field is asking.
|
|
41
|
+
*/
|
|
42
|
+
export function withOptions(inner) {
|
|
43
|
+
// Cloned rather than marked in place: a schema held in a `const` and reused
|
|
44
|
+
// across several fields would otherwise light up every field it appears in.
|
|
45
|
+
const def = { ...inner._def };
|
|
46
|
+
const Ctor = inner.constructor;
|
|
47
|
+
const clone = new Ctor(def);
|
|
48
|
+
marks.add(def);
|
|
49
|
+
return clone;
|
|
50
|
+
}
|
|
51
|
+
/** Whether {@link withOptions} marked the schema this def belongs to. */
|
|
52
|
+
export function isOptionMarked(def) {
|
|
53
|
+
return marks.has(def);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Projects the mark onto the generated JSON Schema as `hasOptions: true`.
|
|
57
|
+
*
|
|
58
|
+
* Passed to every conversion in `zodToJsonSchemaRecord`, so a component never
|
|
59
|
+
* has to know the editor's vocabulary, and `decorateConfigSchema` is left alone.
|
|
60
|
+
*/
|
|
61
|
+
export const markOptions = (jsonSchema, def) => {
|
|
62
|
+
if (jsonSchema === undefined)
|
|
63
|
+
return jsonSchema;
|
|
64
|
+
const node = jsonSchema;
|
|
65
|
+
const found = marks.has(def) || variantMarked(node) || innerMarked(def);
|
|
66
|
+
return found ? { ...jsonSchema, hasOptions: true } : jsonSchema;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Whether a union variant carries the mark.
|
|
70
|
+
*
|
|
71
|
+
* `.nullable()` and {@link variableRef} emit the field as an `anyOf`, which puts
|
|
72
|
+
* the marked node one level below the property the editor reads. The field is
|
|
73
|
+
* still a picker, so the mark is lifted to where it will be seen. Only a
|
|
74
|
+
* variant's OWN mark lifts — an object variant holding a marked property does
|
|
75
|
+
* not make the object itself a picker.
|
|
76
|
+
*/
|
|
77
|
+
function variantMarked(node) {
|
|
78
|
+
for (const key of ['anyOf', 'oneOf']) {
|
|
79
|
+
const variants = node[key];
|
|
80
|
+
if (!Array.isArray(variants))
|
|
81
|
+
continue;
|
|
82
|
+
const any = variants.some((v) => typeof v === 'object' && v !== null && v['hasOptions'] === true);
|
|
83
|
+
if (any)
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Whether a modifier is wrapping a marked schema.
|
|
90
|
+
*
|
|
91
|
+
* `.optional()`, `.nullable()` and `.default()` each decide for themselves which
|
|
92
|
+
* node reaches the output: optional emits the INNER type's node and records the
|
|
93
|
+
* name in `required`, while a nullable primitive collapses to
|
|
94
|
+
* `type: ['string','null']` emitted from the OUTER def. So neither "wrap
|
|
95
|
+
* innermost" nor "wrap outermost" is universally right, and an author should not
|
|
96
|
+
* have to know which is which — the mark is looked for in both directions
|
|
97
|
+
* instead.
|
|
98
|
+
*
|
|
99
|
+
* Bounded at three wrappers: `.optional().nullable().default(x)` is already more
|
|
100
|
+
* than a config field should need, and an unbounded walk over internals is a
|
|
101
|
+
* cost paid on every conversion.
|
|
102
|
+
*/
|
|
103
|
+
function innerMarked(def) {
|
|
104
|
+
let current = def;
|
|
105
|
+
for (let depth = 0; depth < 3; depth += 1) {
|
|
106
|
+
const inner = current.innerType?._def;
|
|
107
|
+
if (typeof inner !== 'object' || inner === null)
|
|
108
|
+
return false;
|
|
109
|
+
if (marks.has(inner))
|
|
110
|
+
return true;
|
|
111
|
+
current = inner;
|
|
112
|
+
}
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Whether any field in a converted schema offers choices.
|
|
117
|
+
*
|
|
118
|
+
* Asks the generated JSON Schema rather than the Zod tree, because that is what
|
|
119
|
+
* the editor reads: a mark that failed to survive conversion is not a picker,
|
|
120
|
+
* whatever the declaration said.
|
|
121
|
+
*/
|
|
122
|
+
export function schemaOffersOptions(node) {
|
|
123
|
+
if (Array.isArray(node))
|
|
124
|
+
return node.some(schemaOffersOptions);
|
|
125
|
+
if (typeof node !== 'object' || node === null)
|
|
126
|
+
return false;
|
|
127
|
+
const record = node;
|
|
128
|
+
if (record['hasOptions'] === true)
|
|
129
|
+
return true;
|
|
130
|
+
return Object.values(record).some(schemaOffersOptions);
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=option-mark.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"option-mark.js","sourceRoot":"","sources":["../../src/util/option-mark.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,11 @@ import type { z } from 'zod';
|
|
|
9
9
|
*
|
|
10
10
|
* Returns `Record<string, unknown>` so callers don't need to
|
|
11
11
|
* depend on the `zod-to-json-schema` package directly.
|
|
12
|
+
*
|
|
13
|
+
* Every conversion carries {@link applyMarks}, so a field declared with
|
|
14
|
+
* `withOptions` or `variableRef` arrives marked wherever it sits — the
|
|
15
|
+
* converter's own recursion does the walking, and nothing here has to know the
|
|
16
|
+
* shape of the schema.
|
|
12
17
|
*/
|
|
13
18
|
export declare function zodToJsonSchemaRecord(schema: z.ZodTypeAny): Record<string, unknown>;
|
|
14
19
|
//# sourceMappingURL=schema-convert.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-convert.d.ts","sourceRoot":"","sources":["../../src/util/schema-convert.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"schema-convert.d.ts","sourceRoot":"","sources":["../../src/util/schema-convert.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,CAAC,CAAC,UAAU,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB"}
|
|
@@ -4,13 +4,19 @@
|
|
|
4
4
|
* Centralised so the conversion options stay consistent across the SDK.
|
|
5
5
|
*/
|
|
6
6
|
import { zodToJsonSchema } from 'zod-to-json-schema';
|
|
7
|
+
import { applyMarks } from './schema-marks.js';
|
|
7
8
|
/**
|
|
8
9
|
* Convert a Zod schema to a plain JSON Schema object.
|
|
9
10
|
*
|
|
10
11
|
* Returns `Record<string, unknown>` so callers don't need to
|
|
11
12
|
* depend on the `zod-to-json-schema` package directly.
|
|
13
|
+
*
|
|
14
|
+
* Every conversion carries {@link applyMarks}, so a field declared with
|
|
15
|
+
* `withOptions` or `variableRef` arrives marked wherever it sits — the
|
|
16
|
+
* converter's own recursion does the walking, and nothing here has to know the
|
|
17
|
+
* shape of the schema.
|
|
12
18
|
*/
|
|
13
19
|
export function zodToJsonSchemaRecord(schema) {
|
|
14
|
-
return zodToJsonSchema(schema);
|
|
20
|
+
return zodToJsonSchema(schema, { postProcess: applyMarks });
|
|
15
21
|
}
|
|
16
22
|
//# sourceMappingURL=schema-convert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-convert.js","sourceRoot":"","sources":["../../src/util/schema-convert.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"schema-convert.js","sourceRoot":"","sources":["../../src/util/schema-convert.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAoB;IAEpB,OAAO,eAAe,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAA4B,CAAC;AACzF,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Facts a config field carries from its Zod declaration into the JSON Schema the
|
|
3
|
+
* editor reads.
|
|
4
|
+
*
|
|
5
|
+
* Two of them cannot be said in JSON Schema's own vocabulary: that a field's
|
|
6
|
+
* values can be listed by the component that owns it, and that a field also
|
|
7
|
+
* accepts a `{{...}}` reference. Both are declared AT the field, in Zod, and
|
|
8
|
+
* projected onto the generated document by `zod-to-json-schema`'s `postProcess`
|
|
9
|
+
* hook, which fires once per converted node. The converter's own recursion does
|
|
10
|
+
* all the walking, so nesting, arrays, arrays-of-objects and union variants need
|
|
11
|
+
* no code here.
|
|
12
|
+
*
|
|
13
|
+
* They share one registry because `postProcess` takes exactly one callback. A
|
|
14
|
+
* mark's name is the JSON Schema key it becomes, so nothing translates between
|
|
15
|
+
* the two sides.
|
|
16
|
+
*
|
|
17
|
+
* This replaced a sentinel prefix stuffed into `description` — a field meant for
|
|
18
|
+
* the author's own words, which the marker overwrote and every reader then had
|
|
19
|
+
* to parse back out.
|
|
20
|
+
*/
|
|
21
|
+
import type { z } from 'zod';
|
|
22
|
+
import type { PostProcessCallback } from 'zod-to-json-schema';
|
|
23
|
+
/** Each becomes a boolean of the same name on the generated schema. */
|
|
24
|
+
export type SchemaMark = 'hasOptions' | 'isVariableRef';
|
|
25
|
+
/**
|
|
26
|
+
* A copy of `inner` carrying `mark`.
|
|
27
|
+
*
|
|
28
|
+
* Copied rather than marked in place: a schema held in a `const` and reused
|
|
29
|
+
* across several fields would otherwise light up every field it appears in.
|
|
30
|
+
* Marks already on the original come along, so wrapping twice —
|
|
31
|
+
* `withOptions(variableRef(x))` — keeps both.
|
|
32
|
+
*/
|
|
33
|
+
export declare function markSchema<T extends z.ZodTypeAny>(inner: T, mark: SchemaMark): T;
|
|
34
|
+
/** Whether this def's schema was marked. */
|
|
35
|
+
export declare function isMarked(def: object, mark: SchemaMark): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Declare that this field's values are drawn from a set the component can
|
|
38
|
+
* enumerate — the difference between pasting a repository id and picking one.
|
|
39
|
+
*
|
|
40
|
+
* A suggestion, not a constraint. Free text and `{{trigger.x}}` references stay
|
|
41
|
+
* legal, which is why this is not `z.enum` — it says where good values come
|
|
42
|
+
* from, not which values are allowed. The component answers with `getOptions`,
|
|
43
|
+
* and `ctx.field` tells it which field is asking.
|
|
44
|
+
*/
|
|
45
|
+
export declare function withOptions<T extends z.ZodTypeAny>(inner: T): T;
|
|
46
|
+
/** Whether {@link withOptions} marked the schema this def belongs to. */
|
|
47
|
+
export declare function isOptionMarked(def: object): boolean;
|
|
48
|
+
/** Projects every mark a node carries onto the generated JSON Schema. */
|
|
49
|
+
export declare const applyMarks: PostProcessCallback;
|
|
50
|
+
/**
|
|
51
|
+
* Whether any field in a converted schema offers choices.
|
|
52
|
+
*
|
|
53
|
+
* Asks the generated JSON Schema rather than the Zod tree, because that is what
|
|
54
|
+
* the editor reads: a mark that failed to survive conversion is not a picker,
|
|
55
|
+
* whatever the declaration said.
|
|
56
|
+
*/
|
|
57
|
+
export declare function schemaOffersOptions(node: unknown): boolean;
|
|
58
|
+
//# sourceMappingURL=schema-marks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-marks.d.ts","sourceRoot":"","sources":["../../src/util/schema-marks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,uEAAuE;AACvE,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,eAAe,CAAC;AAuBxD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,CAAC,CAShF;AAED,4CAA4C;AAC5C,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAE/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAE/D;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,yEAAyE;AACzE,eAAO,MAAM,UAAU,EAAE,mBAaxB,CAAC;AAwDF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAM1D"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Facts a config field carries from its Zod declaration into the JSON Schema the
|
|
3
|
+
* editor reads.
|
|
4
|
+
*
|
|
5
|
+
* Two of them cannot be said in JSON Schema's own vocabulary: that a field's
|
|
6
|
+
* values can be listed by the component that owns it, and that a field also
|
|
7
|
+
* accepts a `{{...}}` reference. Both are declared AT the field, in Zod, and
|
|
8
|
+
* projected onto the generated document by `zod-to-json-schema`'s `postProcess`
|
|
9
|
+
* hook, which fires once per converted node. The converter's own recursion does
|
|
10
|
+
* all the walking, so nesting, arrays, arrays-of-objects and union variants need
|
|
11
|
+
* no code here.
|
|
12
|
+
*
|
|
13
|
+
* They share one registry because `postProcess` takes exactly one callback. A
|
|
14
|
+
* mark's name is the JSON Schema key it becomes, so nothing translates between
|
|
15
|
+
* the two sides.
|
|
16
|
+
*
|
|
17
|
+
* This replaced a sentinel prefix stuffed into `description` — a field meant for
|
|
18
|
+
* the author's own words, which the marker overwrote and every reader then had
|
|
19
|
+
* to parse back out.
|
|
20
|
+
*/
|
|
21
|
+
const ALL_MARKS = ['hasOptions', 'isVariableRef'];
|
|
22
|
+
/**
|
|
23
|
+
* Anchored on `globalThis` rather than module scope.
|
|
24
|
+
*
|
|
25
|
+
* A config schema is DECLARED in a connector package and CONVERTED in this one.
|
|
26
|
+
* Were two copies of the SDK ever loaded, a module-local registry would lose
|
|
27
|
+
* every mark and quietly render plain text boxes — the precise failure these
|
|
28
|
+
* marks exist to prevent.
|
|
29
|
+
*/
|
|
30
|
+
const REGISTRY_KEY = Symbol.for('@xyne/workflow-sdk:schema-marks');
|
|
31
|
+
const registry = (() => {
|
|
32
|
+
const global = globalThis;
|
|
33
|
+
const existing = global[REGISTRY_KEY];
|
|
34
|
+
if (existing instanceof WeakMap)
|
|
35
|
+
return existing;
|
|
36
|
+
const created = new WeakMap();
|
|
37
|
+
global[REGISTRY_KEY] = created;
|
|
38
|
+
return created;
|
|
39
|
+
})();
|
|
40
|
+
/**
|
|
41
|
+
* A copy of `inner` carrying `mark`.
|
|
42
|
+
*
|
|
43
|
+
* Copied rather than marked in place: a schema held in a `const` and reused
|
|
44
|
+
* across several fields would otherwise light up every field it appears in.
|
|
45
|
+
* Marks already on the original come along, so wrapping twice —
|
|
46
|
+
* `withOptions(variableRef(x))` — keeps both.
|
|
47
|
+
*/
|
|
48
|
+
export function markSchema(inner, mark) {
|
|
49
|
+
const def = { ...inner._def };
|
|
50
|
+
const Ctor = inner.constructor;
|
|
51
|
+
const clone = new Ctor(def);
|
|
52
|
+
const carried = new Set(registry.get(inner._def) ?? []);
|
|
53
|
+
carried.add(mark);
|
|
54
|
+
registry.set(def, carried);
|
|
55
|
+
return clone;
|
|
56
|
+
}
|
|
57
|
+
/** Whether this def's schema was marked. */
|
|
58
|
+
export function isMarked(def, mark) {
|
|
59
|
+
return registry.get(def)?.has(mark) === true;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Declare that this field's values are drawn from a set the component can
|
|
63
|
+
* enumerate — the difference between pasting a repository id and picking one.
|
|
64
|
+
*
|
|
65
|
+
* A suggestion, not a constraint. Free text and `{{trigger.x}}` references stay
|
|
66
|
+
* legal, which is why this is not `z.enum` — it says where good values come
|
|
67
|
+
* from, not which values are allowed. The component answers with `getOptions`,
|
|
68
|
+
* and `ctx.field` tells it which field is asking.
|
|
69
|
+
*/
|
|
70
|
+
export function withOptions(inner) {
|
|
71
|
+
return markSchema(inner, 'hasOptions');
|
|
72
|
+
}
|
|
73
|
+
/** Whether {@link withOptions} marked the schema this def belongs to. */
|
|
74
|
+
export function isOptionMarked(def) {
|
|
75
|
+
return isMarked(def, 'hasOptions');
|
|
76
|
+
}
|
|
77
|
+
/** Projects every mark a node carries onto the generated JSON Schema. */
|
|
78
|
+
export const applyMarks = (jsonSchema, def) => {
|
|
79
|
+
if (jsonSchema === undefined)
|
|
80
|
+
return jsonSchema;
|
|
81
|
+
const node = jsonSchema;
|
|
82
|
+
let marked;
|
|
83
|
+
for (const mark of ALL_MARKS) {
|
|
84
|
+
if (node[mark] === true)
|
|
85
|
+
continue;
|
|
86
|
+
if (!carries(def, node, mark))
|
|
87
|
+
continue;
|
|
88
|
+
marked = { ...(marked ?? node), [mark]: true };
|
|
89
|
+
}
|
|
90
|
+
return (marked ?? jsonSchema);
|
|
91
|
+
};
|
|
92
|
+
function carries(def, node, mark) {
|
|
93
|
+
return isMarked(def, mark) || variantMarked(node, mark) || innerMarked(def, mark);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Whether a union variant carries the mark.
|
|
97
|
+
*
|
|
98
|
+
* `.nullable()` and `variableRef()` emit the field as an `anyOf`, which puts the
|
|
99
|
+
* marked node one level below the property the editor reads. The field is still
|
|
100
|
+
* the thing it was marked as, so the mark is lifted to where it will be seen.
|
|
101
|
+
* Only a variant's OWN mark lifts — an object variant holding a marked property
|
|
102
|
+
* does not make the object itself a picker.
|
|
103
|
+
*/
|
|
104
|
+
function variantMarked(node, mark) {
|
|
105
|
+
for (const key of ['anyOf', 'oneOf']) {
|
|
106
|
+
const variants = node[key];
|
|
107
|
+
if (!Array.isArray(variants))
|
|
108
|
+
continue;
|
|
109
|
+
const any = variants.some((variant) => typeof variant === 'object' &&
|
|
110
|
+
variant !== null &&
|
|
111
|
+
variant[mark] === true);
|
|
112
|
+
if (any)
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Whether a modifier is wrapping a marked schema.
|
|
119
|
+
*
|
|
120
|
+
* `.optional()`, `.nullable()` and `.default()` each decide for themselves which
|
|
121
|
+
* node reaches the output: optional emits the INNER type's node and records the
|
|
122
|
+
* name in `required`, while a nullable primitive collapses to
|
|
123
|
+
* `type: ['string','null']` emitted from the OUTER def. So neither "wrap
|
|
124
|
+
* innermost" nor "wrap outermost" is universally right, and an author should not
|
|
125
|
+
* have to know which is which — the mark is looked for in both directions
|
|
126
|
+
* instead.
|
|
127
|
+
*
|
|
128
|
+
* Bounded at three wrappers: `.optional().nullable().default(x)` is already more
|
|
129
|
+
* than a config field should need, and an unbounded walk over internals is a
|
|
130
|
+
* cost paid on every conversion.
|
|
131
|
+
*/
|
|
132
|
+
function innerMarked(def, mark) {
|
|
133
|
+
let current = def;
|
|
134
|
+
for (let depth = 0; depth < 3; depth += 1) {
|
|
135
|
+
const inner = current.innerType?._def;
|
|
136
|
+
if (typeof inner !== 'object' || inner === null)
|
|
137
|
+
return false;
|
|
138
|
+
if (isMarked(inner, mark))
|
|
139
|
+
return true;
|
|
140
|
+
current = inner;
|
|
141
|
+
}
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Whether any field in a converted schema offers choices.
|
|
146
|
+
*
|
|
147
|
+
* Asks the generated JSON Schema rather than the Zod tree, because that is what
|
|
148
|
+
* the editor reads: a mark that failed to survive conversion is not a picker,
|
|
149
|
+
* whatever the declaration said.
|
|
150
|
+
*/
|
|
151
|
+
export function schemaOffersOptions(node) {
|
|
152
|
+
if (Array.isArray(node))
|
|
153
|
+
return node.some(schemaOffersOptions);
|
|
154
|
+
if (typeof node !== 'object' || node === null)
|
|
155
|
+
return false;
|
|
156
|
+
const record = node;
|
|
157
|
+
if (record['hasOptions'] === true)
|
|
158
|
+
return true;
|
|
159
|
+
return Object.values(record).some(schemaOffersOptions);
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=schema-marks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-marks.js","sourceRoot":"","sources":["../../src/util/schema-marks.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,11 +11,6 @@ import type { WorkflowConfig } from '../types/workflow-config.js';
|
|
|
11
11
|
* The `context.` prefix is optional.
|
|
12
12
|
*/
|
|
13
13
|
export declare const VARIABLE_REF_REGEX: RegExp;
|
|
14
|
-
/**
|
|
15
|
-
* Sentinel prefix for Zod `.describe()` — lets JSON Schema consumers detect
|
|
16
|
-
* "this is a variableRef-wrapped field" without inspecting the Zod tree.
|
|
17
|
-
*/
|
|
18
|
-
export declare const VARIABLE_REF_DESCRIPTION_PREFIX = "__variableRef__";
|
|
19
14
|
export type VariableRefToken = {
|
|
20
15
|
kind: 'literal';
|
|
21
16
|
text: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variable-ref.d.ts","sourceRoot":"","sources":["../../src/util/variable-ref.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,6BAA6B,CAAC;AAEtF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAkC,CAAC;AAElE
|
|
1
|
+
{"version":3,"file":"variable-ref.d.ts","sourceRoot":"","sources":["../../src/util/variable-ref.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,6BAA6B,CAAC;AAEtF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAkC,CAAC;AAElE,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAK/C;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAoB1D;AAED,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG3D;AAED,MAAM,WAAW,QAAQ;IACvB,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CAItE;AA0BD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACjD,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED,6EAA6E;AAC7E,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAoBnD;AAkED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAWrF"}
|
|
@@ -10,11 +10,6 @@
|
|
|
10
10
|
* The `context.` prefix is optional.
|
|
11
11
|
*/
|
|
12
12
|
export const VARIABLE_REF_REGEX = /^\{\{(?:context\.)?[^}]+\}\}$/;
|
|
13
|
-
/**
|
|
14
|
-
* Sentinel prefix for Zod `.describe()` — lets JSON Schema consumers detect
|
|
15
|
-
* "this is a variableRef-wrapped field" without inspecting the Zod tree.
|
|
16
|
-
*/
|
|
17
|
-
export const VARIABLE_REF_DESCRIPTION_PREFIX = '__variableRef__';
|
|
18
13
|
/** Global regex — captures the dotted path inside `{{...}}`. */
|
|
19
14
|
const TOKEN_REGEX = /\{\{(?:context\.)?([^}]+)\}\}/g;
|
|
20
15
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variable-ref.js","sourceRoot":"","sources":["../../src/util/variable-ref.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"variable-ref.js","sourceRoot":"","sources":["../../src/util/variable-ref.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ExecutionEventBus — in-memory pub/sub for execution stream events.
|
|
3
|
-
*
|
|
4
|
-
* The executor emits events at state transitions (step started/completed/failed,
|
|
5
|
-
* execution paused/completed/failed). The SSE route subscribes per-executionId
|
|
6
|
-
* and streams them to the client.
|
|
7
|
-
*/
|
|
8
|
-
import type { ExecutionStreamEvent } from './types.js';
|
|
9
|
-
type EventCallback = (event: ExecutionStreamEvent) => void;
|
|
10
|
-
export declare class ExecutionEventBus {
|
|
11
|
-
private readonly listeners;
|
|
12
|
-
/**
|
|
13
|
-
* Subscribe to events for a specific execution.
|
|
14
|
-
* Returns an unsubscribe function.
|
|
15
|
-
*/
|
|
16
|
-
subscribe(executionId: string, cb: EventCallback): () => void;
|
|
17
|
-
/**
|
|
18
|
-
* Emit an event to all listeners for the given execution.
|
|
19
|
-
*/
|
|
20
|
-
emit(executionId: string, event: ExecutionStreamEvent): void;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Bridges push-based event bus callbacks to an AsyncIterable.
|
|
24
|
-
*
|
|
25
|
-
* Usage:
|
|
26
|
-
* const ch = createEventChannel<ExecutionStreamEvent>();
|
|
27
|
-
* const unsub = eventBus.subscribe(execId, ch.push);
|
|
28
|
-
* for await (const event of ch) { ... }
|
|
29
|
-
* ch.end(); // terminates the iterator
|
|
30
|
-
*/
|
|
31
|
-
export interface EventChannel<T> {
|
|
32
|
-
push: (value: T) => void;
|
|
33
|
-
end: () => void;
|
|
34
|
-
[Symbol.asyncIterator](): AsyncIterator<T>;
|
|
35
|
-
}
|
|
36
|
-
export declare function createEventChannel<T>(): EventChannel<T>;
|
|
37
|
-
export {};
|
|
38
|
-
//# sourceMappingURL=execution-event-bus.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"execution-event-bus.d.ts","sourceRoot":"","sources":["../../src/runtime/execution-event-bus.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAE3D,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IAEnE;;;OAGG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,GAAG,MAAM,IAAI;IAgB7D;;OAEG;IACH,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,IAAI;CAW7D;AAID;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACzB,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;CAC5C;AAED,wBAAgB,kBAAkB,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,CA0CvD"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ExecutionEventBus — in-memory pub/sub for execution stream events.
|
|
3
|
-
*
|
|
4
|
-
* The executor emits events at state transitions (step started/completed/failed,
|
|
5
|
-
* execution paused/completed/failed). The SSE route subscribes per-executionId
|
|
6
|
-
* and streams them to the client.
|
|
7
|
-
*/
|
|
8
|
-
export class ExecutionEventBus {
|
|
9
|
-
listeners = new Map();
|
|
10
|
-
/**
|
|
11
|
-
* Subscribe to events for a specific execution.
|
|
12
|
-
* Returns an unsubscribe function.
|
|
13
|
-
*/
|
|
14
|
-
subscribe(executionId, cb) {
|
|
15
|
-
let set = this.listeners.get(executionId);
|
|
16
|
-
if (!set) {
|
|
17
|
-
set = new Set();
|
|
18
|
-
this.listeners.set(executionId, set);
|
|
19
|
-
}
|
|
20
|
-
set.add(cb);
|
|
21
|
-
return () => {
|
|
22
|
-
set.delete(cb);
|
|
23
|
-
if (set.size === 0) {
|
|
24
|
-
this.listeners.delete(executionId);
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Emit an event to all listeners for the given execution.
|
|
30
|
-
*/
|
|
31
|
-
emit(executionId, event) {
|
|
32
|
-
const set = this.listeners.get(executionId);
|
|
33
|
-
if (!set)
|
|
34
|
-
return;
|
|
35
|
-
for (const cb of set) {
|
|
36
|
-
try {
|
|
37
|
-
cb(event);
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
// Never let a listener error break the executor
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
export function createEventChannel() {
|
|
46
|
-
const queue = [];
|
|
47
|
-
let resolve = null;
|
|
48
|
-
let done = false;
|
|
49
|
-
return {
|
|
50
|
-
push(value) {
|
|
51
|
-
if (done)
|
|
52
|
-
return;
|
|
53
|
-
if (resolve) {
|
|
54
|
-
const r = resolve;
|
|
55
|
-
resolve = null;
|
|
56
|
-
r({ value, done: false });
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
queue.push(value);
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
end() {
|
|
63
|
-
done = true;
|
|
64
|
-
if (resolve) {
|
|
65
|
-
const r = resolve;
|
|
66
|
-
resolve = null;
|
|
67
|
-
r({ value: undefined, done: true });
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
[Symbol.asyncIterator]() {
|
|
71
|
-
return {
|
|
72
|
-
next() {
|
|
73
|
-
if (queue.length > 0) {
|
|
74
|
-
return Promise.resolve({ value: queue.shift(), done: false });
|
|
75
|
-
}
|
|
76
|
-
if (done) {
|
|
77
|
-
return Promise.resolve({ value: undefined, done: true });
|
|
78
|
-
}
|
|
79
|
-
return new Promise((r) => {
|
|
80
|
-
resolve = r;
|
|
81
|
-
});
|
|
82
|
-
},
|
|
83
|
-
};
|
|
84
|
-
},
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=execution-event-bus.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"execution-event-bus.js","sourceRoot":"","sources":["../../src/runtime/execution-event-bus.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,OAAO,iBAAiB;IACX,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEnE;;;OAGG;IACH,SAAS,CAAC,WAAmB,EAAE,EAAiB;QAC9C,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEZ,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACf,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,WAAmB,EAAE,KAA2B;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,EAAE,CAAC,KAAK,CAAC,CAAC;YACZ,CAAC;YAAC,MAAM,CAAC;gBACP,gDAAgD;YAClD,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAmBD,MAAM,UAAU,kBAAkB;IAChC,MAAM,KAAK,GAAQ,EAAE,CAAC;IACtB,IAAI,OAAO,GAAiD,IAAI,CAAC;IACjE,IAAI,IAAI,GAAG,KAAK,CAAC;IAEjB,OAAO;QACL,IAAI,CAAC,KAAQ;YACX,IAAI,IAAI;gBAAE,OAAO;YACjB,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,GAAG,OAAO,CAAC;gBAClB,OAAO,GAAG,IAAI,CAAC;gBACf,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAED,GAAG;YACD,IAAI,GAAG,IAAI,CAAC;YACZ,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,GAAG,OAAO,CAAC;gBAClB,OAAO,GAAG,IAAI,CAAC;gBACf,CAAC,CAAC,EAAE,KAAK,EAAE,SAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,CAAC,MAAM,CAAC,aAAa,CAAC;YACpB,OAAO;gBACL,IAAI;oBACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACrB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;oBACjE,CAAC;oBACD,IAAI,IAAI,EAAE,CAAC;wBACT,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBAChE,CAAC;oBACD,OAAO,IAAI,OAAO,CAAoB,CAAC,CAAC,EAAE,EAAE;wBAC1C,OAAO,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;gBACL,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|