@xyne/workflow-sdk 2.4.0 → 2.6.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/dist/ai-builder/client.d.ts +5 -2
- package/dist/ai-builder/client.d.ts.map +1 -1
- package/dist/ai-builder/client.js +7 -0
- package/dist/ai-builder/client.js.map +1 -1
- package/dist/ai-builder/index.d.ts +1 -1
- package/dist/ai-builder/index.d.ts.map +1 -1
- package/dist/ai-builder/index.js.map +1 -1
- package/dist/ai-builder/types.d.ts +19 -6
- package/dist/ai-builder/types.d.ts.map +1 -1
- package/dist/builder/index.d.ts +6 -3
- package/dist/builder/index.d.ts.map +1 -1
- package/dist/builder/index.js +4 -1
- package/dist/builder/index.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 +38 -15
- package/dist/engine/config-validator.js.map +1 -1
- package/dist/engine/variable-resolver.d.ts +9 -0
- package/dist/engine/variable-resolver.d.ts.map +1 -1
- package/dist/engine/variable-resolver.js +76 -0
- package/dist/engine/variable-resolver.js.map +1 -1
- package/dist/engine/workflow-executor.d.ts.map +1 -1
- package/dist/engine/workflow-executor.js +3 -3
- package/dist/engine/workflow-executor.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/persistence/in-memory-adapter.d.ts.map +1 -1
- package/dist/persistence/in-memory-adapter.js +5 -3
- package/dist/persistence/in-memory-adapter.js.map +1 -1
- package/dist/router/workflow-router.d.ts.map +1 -1
- package/dist/router/workflow-router.js +127 -6
- package/dist/router/workflow-router.js.map +1 -1
- package/dist/runtime/workflow-runtime.d.ts.map +1 -1
- package/dist/runtime/workflow-runtime.js +2 -2
- package/dist/runtime/workflow-runtime.js.map +1 -1
- package/dist/steps/builtin/wait.step.d.ts +11 -0
- package/dist/steps/builtin/wait.step.d.ts.map +1 -1
- package/dist/steps/builtin/wait.step.js +31 -0
- package/dist/steps/builtin/wait.step.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/workflow-config.d.ts +20 -0
- package/dist/types/workflow-config.d.ts.map +1 -1
- package/dist/types/workflow-config.js.map +1 -1
- package/dist/util/citation-path.d.ts +39 -0
- package/dist/util/citation-path.d.ts.map +1 -0
- package/dist/util/citation-path.js +133 -0
- package/dist/util/citation-path.js.map +1 -0
- package/dist/util/pause-form-schema.d.ts +20 -0
- package/dist/util/pause-form-schema.d.ts.map +1 -0
- package/dist/util/pause-form-schema.js +25 -0
- package/dist/util/pause-form-schema.js.map +1 -0
- package/dist/util/type-compat.d.ts +35 -0
- package/dist/util/type-compat.d.ts.map +1 -0
- package/dist/util/type-compat.js +54 -0
- package/dist/util/type-compat.js.map +1 -0
- package/dist/util/variable-ref.d.ts +22 -0
- package/dist/util/variable-ref.d.ts.map +1 -1
- package/dist/util/variable-ref.js +23 -4
- package/dist/util/variable-ref.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-config.js","sourceRoot":"","sources":["../../src/types/workflow-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EACL,kBAAkB,EAClB,+BAA+B,GAChC,MAAM,yBAAyB,CAAC;AAEjC,qCAAqC;AAErC,MAAM,uBAAuB,GAAG,CAAC;KAC9B,MAAM,EAAE;KACR,KAAK,CAAC,kBAAkB,EAAE,wCAAwC,CAAC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,KAAQ;IAER,OAAO,CAAC;SACL,KAAK,CAAC,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;SACvC,QAAQ,CACP,GAAG,+BAA+B,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAChD,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAoB;IAEpB,IACE,MAAM,YAAY,CAAC,CAAC,QAAQ;QAC5B,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;QACtC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,+BAA+B,CAAC,EAC9D,CAAC;QACD,MAAM,OAAO,GAAI,MAAmD,CAAC,IAAI;aACtE,OAAO,CAAC;QACX,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAeD,MAAM,CAAC,MAAM,mBAAmB,GAA6B,CAAC,CAAC,MAAM,CAAC;IACpE,QAAQ,EAAE,uBAAuB;IACjC,QAAQ,EAAE,uBAAuB;IACjC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAyB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAC/D,CAAC,CAAC,KAAK,CAAC;IACN,mBAAmB;IACnB,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;IAC3C,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;CAC5C,CAAC,CACH,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-config.js","sourceRoot":"","sources":["../../src/types/workflow-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable addressing for author citations into a step's `config`.
|
|
3
|
+
*
|
|
4
|
+
* Citations are a documentation overlay stored on the step
|
|
5
|
+
* (`StepConfigBase.citations`), keyed by a **CitationPath** — a dotted path into
|
|
6
|
+
* `config` where array elements are addressed by a *stable* key (their `id`, else
|
|
7
|
+
* `name`), never by numeric index. This keeps citations attached across reorders
|
|
8
|
+
* and renames.
|
|
9
|
+
*
|
|
10
|
+
* reason
|
|
11
|
+
* form.fields[acha]
|
|
12
|
+
* display[sec_amt].value
|
|
13
|
+
*
|
|
14
|
+
* This module is the single source of truth for the CitationPath grammar — the
|
|
15
|
+
* contract between the builder (writer) and the reviewer/validator (readers) —
|
|
16
|
+
* sitting beside the `{{ref}}` grammar in `variable-ref.ts`.
|
|
17
|
+
*/
|
|
18
|
+
export declare function ensureCitationPath(config: Record<string, unknown>, fieldPath: string, idGen?: () => string): string | null;
|
|
19
|
+
/**
|
|
20
|
+
* Read-only counterpart of {@link ensureCitationPath}: compute the stable path
|
|
21
|
+
* using *existing* `id`/`name` keys only — never mutates. Returns `null` if an
|
|
22
|
+
* array element along the path has no stable key yet (i.e. nothing was cited there).
|
|
23
|
+
* Used at render time to look up a field's citations.
|
|
24
|
+
*/
|
|
25
|
+
export declare function tryCitationPath(config: Record<string, unknown>, fieldPath: string): string | null;
|
|
26
|
+
interface PathToken {
|
|
27
|
+
kind: 'key' | 'elem';
|
|
28
|
+
value: string;
|
|
29
|
+
}
|
|
30
|
+
/** Parse a CitationPath into ordered tokens (object keys + array-element ids). */
|
|
31
|
+
export declare function parseCitationPath(path: string): PathToken[];
|
|
32
|
+
/**
|
|
33
|
+
* Resolve a {@link CitationPath} against a step `config`, returning the addressed
|
|
34
|
+
* node (or `undefined` if it no longer exists). Read-only — used by the reviewer
|
|
35
|
+
* and validator. Robust to reorder because array elements are matched by stable key.
|
|
36
|
+
*/
|
|
37
|
+
export declare function resolveCitationPath(config: Record<string, unknown>, path: string): unknown;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=citation-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"citation-path.d.ts","sourceRoot":"","sources":["../../src/util/citation-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAqEH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,MAAM,MAAqB,GACjC,MAAM,GAAG,IAAI,CAEf;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAEf;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAID,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAS3D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAa1F"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable addressing for author citations into a step's `config`.
|
|
3
|
+
*
|
|
4
|
+
* Citations are a documentation overlay stored on the step
|
|
5
|
+
* (`StepConfigBase.citations`), keyed by a **CitationPath** — a dotted path into
|
|
6
|
+
* `config` where array elements are addressed by a *stable* key (their `id`, else
|
|
7
|
+
* `name`), never by numeric index. This keeps citations attached across reorders
|
|
8
|
+
* and renames.
|
|
9
|
+
*
|
|
10
|
+
* reason
|
|
11
|
+
* form.fields[acha]
|
|
12
|
+
* display[sec_amt].value
|
|
13
|
+
*
|
|
14
|
+
* This module is the single source of truth for the CitationPath grammar — the
|
|
15
|
+
* contract between the builder (writer) and the reviewer/validator (readers) —
|
|
16
|
+
* sitting beside the `{{ref}}` grammar in `variable-ref.ts`.
|
|
17
|
+
*/
|
|
18
|
+
function isPlainObject(v) {
|
|
19
|
+
return v !== null && typeof v === 'object' && !Array.isArray(v);
|
|
20
|
+
}
|
|
21
|
+
/** Stable key for an array element: its `id`, else `name`. Undefined if neither. */
|
|
22
|
+
function stableKey(el) {
|
|
23
|
+
if (!isPlainObject(el))
|
|
24
|
+
return undefined;
|
|
25
|
+
const id = el['id'];
|
|
26
|
+
if (typeof id === 'string' && id.length > 0)
|
|
27
|
+
return id;
|
|
28
|
+
const name = el['name'];
|
|
29
|
+
if (typeof name === 'string' && name.length > 0)
|
|
30
|
+
return name;
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
function defaultIdGen() {
|
|
34
|
+
return `c_${Math.random().toString(36).slice(2, 9)}`;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Convert a builder field path (dotted, array-index based — e.g. `display.0.value`)
|
|
38
|
+
* into a stable {@link CitationPath} (e.g. `display[sec_amt].value`).
|
|
39
|
+
*
|
|
40
|
+
* Array elements are keyed by their `id`/`name`; if a cited element has neither, a
|
|
41
|
+
* stable `id` is **stamped onto it** (mutating `config`) via `idGen`. Used by the
|
|
42
|
+
* builder at authoring time. Returns `null` if the field path doesn't resolve.
|
|
43
|
+
*
|
|
44
|
+
* Contract for step authors: any array field whose elements may be cited must
|
|
45
|
+
* declare an `id` (or already carry a `name`) in its config schema. Otherwise the
|
|
46
|
+
* stamped `id` is an undeclared key that Zod strips on parse (or rejects under
|
|
47
|
+
* `.strict()`), breaking the citation link. Builtin example: WAIT's display rows
|
|
48
|
+
* declare `id?: string` precisely for this.
|
|
49
|
+
*/
|
|
50
|
+
function buildPath(config, fieldPath, idGen) {
|
|
51
|
+
const segments = fieldPath.split('.').filter((s) => s.length > 0);
|
|
52
|
+
let node = config;
|
|
53
|
+
let path = '';
|
|
54
|
+
for (const seg of segments) {
|
|
55
|
+
if (Array.isArray(node)) {
|
|
56
|
+
const idx = Number(seg);
|
|
57
|
+
if (!Number.isInteger(idx) || idx < 0 || idx >= node.length)
|
|
58
|
+
return null;
|
|
59
|
+
const el = node[idx];
|
|
60
|
+
let key = stableKey(el);
|
|
61
|
+
if (key === undefined) {
|
|
62
|
+
if (idGen === null)
|
|
63
|
+
return null; // read-only: no stable key available
|
|
64
|
+
if (!isPlainObject(el))
|
|
65
|
+
return null; // can't stamp a scalar array element
|
|
66
|
+
key = idGen();
|
|
67
|
+
el['id'] = key;
|
|
68
|
+
}
|
|
69
|
+
path += `[${key}]`;
|
|
70
|
+
node = el;
|
|
71
|
+
}
|
|
72
|
+
else if (isPlainObject(node)) {
|
|
73
|
+
if (!(seg in node))
|
|
74
|
+
return null;
|
|
75
|
+
path += path === '' ? seg : `.${seg}`;
|
|
76
|
+
node = node[seg];
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return path;
|
|
83
|
+
}
|
|
84
|
+
export function ensureCitationPath(config, fieldPath, idGen = defaultIdGen) {
|
|
85
|
+
return buildPath(config, fieldPath, idGen);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Read-only counterpart of {@link ensureCitationPath}: compute the stable path
|
|
89
|
+
* using *existing* `id`/`name` keys only — never mutates. Returns `null` if an
|
|
90
|
+
* array element along the path has no stable key yet (i.e. nothing was cited there).
|
|
91
|
+
* Used at render time to look up a field's citations.
|
|
92
|
+
*/
|
|
93
|
+
export function tryCitationPath(config, fieldPath) {
|
|
94
|
+
return buildPath(config, fieldPath, null);
|
|
95
|
+
}
|
|
96
|
+
const PATH_TOKEN_REGEX = /([^.[\]]+)|\[([^\]]+)\]/g;
|
|
97
|
+
/** Parse a CitationPath into ordered tokens (object keys + array-element ids). */
|
|
98
|
+
export function parseCitationPath(path) {
|
|
99
|
+
const tokens = [];
|
|
100
|
+
PATH_TOKEN_REGEX.lastIndex = 0;
|
|
101
|
+
let m;
|
|
102
|
+
while ((m = PATH_TOKEN_REGEX.exec(path)) !== null) {
|
|
103
|
+
if (m[2] !== undefined)
|
|
104
|
+
tokens.push({ kind: 'elem', value: m[2] });
|
|
105
|
+
else if (m[1] !== undefined)
|
|
106
|
+
tokens.push({ kind: 'key', value: m[1] });
|
|
107
|
+
}
|
|
108
|
+
return tokens;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Resolve a {@link CitationPath} against a step `config`, returning the addressed
|
|
112
|
+
* node (or `undefined` if it no longer exists). Read-only — used by the reviewer
|
|
113
|
+
* and validator. Robust to reorder because array elements are matched by stable key.
|
|
114
|
+
*/
|
|
115
|
+
export function resolveCitationPath(config, path) {
|
|
116
|
+
let node = config;
|
|
117
|
+
for (const tok of parseCitationPath(path)) {
|
|
118
|
+
if (node === null || node === undefined)
|
|
119
|
+
return undefined;
|
|
120
|
+
if (tok.kind === 'key') {
|
|
121
|
+
if (!isPlainObject(node))
|
|
122
|
+
return undefined;
|
|
123
|
+
node = node[tok.value];
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
if (!Array.isArray(node))
|
|
127
|
+
return undefined;
|
|
128
|
+
node = node.find((el) => stableKey(el) === tok.value);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return node;
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=citation-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"citation-path.js","sourceRoot":"","sources":["../../src/util/citation-path.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pause-form-schema — derive a JSON Schema from a pause/approval form.
|
|
3
|
+
*
|
|
4
|
+
* The SDK owns both the `PauseForm` shape and the `ResumePayload` it produces,
|
|
5
|
+
* so the mapping from "the form the user fills in" to "the type of the submitted
|
|
6
|
+
* values" lives here once, reusable by any step that surfaces a `PauseForm`
|
|
7
|
+
* (today the WAIT step, via its `resolveOutputJsonSchema`). Form values are
|
|
8
|
+
* submitted under `ResumePayload.data` keyed by each field's `name`, so the
|
|
9
|
+
* returned schema is the shape of that `data` object.
|
|
10
|
+
*/
|
|
11
|
+
import type { PauseForm, PauseFormField } from '../types/pause-state.js';
|
|
12
|
+
/** Map a pause-form field type to the JSON Schema scalar kind of its value. */
|
|
13
|
+
export declare function jsonTypeForFormField(type: PauseFormField['type']): string;
|
|
14
|
+
/**
|
|
15
|
+
* JSON Schema for the values submitted by a `PauseForm` — an object keyed by
|
|
16
|
+
* each field's `name`. Left open (`additionalProperties: true`) since a host
|
|
17
|
+
* may include extra keys beyond the declared fields.
|
|
18
|
+
*/
|
|
19
|
+
export declare function pauseFormToJsonSchema(form: PauseForm): Record<string, unknown>;
|
|
20
|
+
//# sourceMappingURL=pause-form-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pause-form-schema.d.ts","sourceRoot":"","sources":["../../src/util/pause-form-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzE,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,CAUzE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM9E"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** Map a pause-form field type to the JSON Schema scalar kind of its value. */
|
|
2
|
+
export function jsonTypeForFormField(type) {
|
|
3
|
+
switch (type) {
|
|
4
|
+
case 'number':
|
|
5
|
+
return 'number';
|
|
6
|
+
case 'checkbox':
|
|
7
|
+
return 'boolean';
|
|
8
|
+
// text / textarea / select all submit string values
|
|
9
|
+
default:
|
|
10
|
+
return 'string';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* JSON Schema for the values submitted by a `PauseForm` — an object keyed by
|
|
15
|
+
* each field's `name`. Left open (`additionalProperties: true`) since a host
|
|
16
|
+
* may include extra keys beyond the declared fields.
|
|
17
|
+
*/
|
|
18
|
+
export function pauseFormToJsonSchema(form) {
|
|
19
|
+
const properties = {};
|
|
20
|
+
for (const field of form.fields) {
|
|
21
|
+
properties[field.name] = { type: jsonTypeForFormField(field.type), title: field.name };
|
|
22
|
+
}
|
|
23
|
+
return { type: 'object', properties, additionalProperties: true };
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=pause-form-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pause-form-schema.js","sourceRoot":"","sources":["../../src/util/pause-form-schema.ts"],"names":[],"mappings":"AAYA,+EAA+E;AAC/E,MAAM,UAAU,oBAAoB,CAAC,IAA4B;IAC/D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,SAAS,CAAC;QACnB,oDAAoD;QACpD;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAe;IACnD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IACzF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* type-compat — the single source of truth for "can a `{{ref}}` of one type be
|
|
3
|
+
* bound into a field of another type?"
|
|
4
|
+
*
|
|
5
|
+
* This rule is enforced in three layers that must never drift:
|
|
6
|
+
* - the builder's variable picker (UI, JSON-Schema side) — which refs to offer;
|
|
7
|
+
* - the config validator (`TYPE_MISMATCH`, JSON-Schema source vs Zod consumer);
|
|
8
|
+
* - the runtime (coercion before `safeParse`).
|
|
9
|
+
*
|
|
10
|
+
* It is expressed over a **neutral** `TypeKind`, NOT Zod or JSON-Schema types,
|
|
11
|
+
* because it straddles both worlds: the consumer side is Zod, but the source
|
|
12
|
+
* side is JSON Schema that crosses the wire to the browser (no Zod instance
|
|
13
|
+
* there). Each world maps *into* `TypeKind` via its own adapter
|
|
14
|
+
* (`jsonSchemaKind` / `zodConsumerKind` in the validator); this module never
|
|
15
|
+
* touches a schema object. This is a deliberate anti-corruption boundary, and
|
|
16
|
+
* keeps the predicate serializable and Zod-version-agnostic.
|
|
17
|
+
*/
|
|
18
|
+
/** The neutral, coarse type vocabulary both schema worlds normalize into. */
|
|
19
|
+
export declare const TYPE_KINDS: readonly ["string", "number", "boolean", "array", "object", "scalar", "unknown"];
|
|
20
|
+
export type TypeKind = (typeof TYPE_KINDS)[number];
|
|
21
|
+
/**
|
|
22
|
+
* Can a value of `source` kind be bound into a `target` (consumer) kind field?
|
|
23
|
+
*
|
|
24
|
+
* Loose by design (matches the validator's long-standing rule):
|
|
25
|
+
* - `unknown`/freeform on either side is always compatible (can't be checked);
|
|
26
|
+
* - any source coerces into a `string` target — string is the universal sink
|
|
27
|
+
* (templates stringify, and the runtime stringifies pure refs too);
|
|
28
|
+
* - equal kinds are compatible;
|
|
29
|
+
* - scalar↔scalar is compatible (number↔enum, etc.).
|
|
30
|
+
*
|
|
31
|
+
* Notably strict: `array`/`object` only accept their own kind (or a `string`
|
|
32
|
+
* target, or an `unknown` either side).
|
|
33
|
+
*/
|
|
34
|
+
export declare function kindsCompatible(source: TypeKind, target: TypeKind): boolean;
|
|
35
|
+
//# sourceMappingURL=type-compat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-compat.d.ts","sourceRoot":"","sources":["../../src/util/type-compat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,UAAU,kFAWb,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAInD;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAK3E"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* type-compat — the single source of truth for "can a `{{ref}}` of one type be
|
|
3
|
+
* bound into a field of another type?"
|
|
4
|
+
*
|
|
5
|
+
* This rule is enforced in three layers that must never drift:
|
|
6
|
+
* - the builder's variable picker (UI, JSON-Schema side) — which refs to offer;
|
|
7
|
+
* - the config validator (`TYPE_MISMATCH`, JSON-Schema source vs Zod consumer);
|
|
8
|
+
* - the runtime (coercion before `safeParse`).
|
|
9
|
+
*
|
|
10
|
+
* It is expressed over a **neutral** `TypeKind`, NOT Zod or JSON-Schema types,
|
|
11
|
+
* because it straddles both worlds: the consumer side is Zod, but the source
|
|
12
|
+
* side is JSON Schema that crosses the wire to the browser (no Zod instance
|
|
13
|
+
* there). Each world maps *into* `TypeKind` via its own adapter
|
|
14
|
+
* (`jsonSchemaKind` / `zodConsumerKind` in the validator); this module never
|
|
15
|
+
* touches a schema object. This is a deliberate anti-corruption boundary, and
|
|
16
|
+
* keeps the predicate serializable and Zod-version-agnostic.
|
|
17
|
+
*/
|
|
18
|
+
/** The neutral, coarse type vocabulary both schema worlds normalize into. */
|
|
19
|
+
export const TYPE_KINDS = [
|
|
20
|
+
'string',
|
|
21
|
+
'number',
|
|
22
|
+
'boolean',
|
|
23
|
+
'array',
|
|
24
|
+
'object',
|
|
25
|
+
// `scalar` is an intentional coarsening bucket (enum / literal / date) so the
|
|
26
|
+
// loose scalar↔scalar rule below has a single home.
|
|
27
|
+
'scalar',
|
|
28
|
+
// `unknown` = freeform / no declared type / union — unverifiable, so wildcard.
|
|
29
|
+
'unknown',
|
|
30
|
+
];
|
|
31
|
+
const SCALAR_KINDS = new Set(['string', 'number', 'boolean', 'scalar']);
|
|
32
|
+
/**
|
|
33
|
+
* Can a value of `source` kind be bound into a `target` (consumer) kind field?
|
|
34
|
+
*
|
|
35
|
+
* Loose by design (matches the validator's long-standing rule):
|
|
36
|
+
* - `unknown`/freeform on either side is always compatible (can't be checked);
|
|
37
|
+
* - any source coerces into a `string` target — string is the universal sink
|
|
38
|
+
* (templates stringify, and the runtime stringifies pure refs too);
|
|
39
|
+
* - equal kinds are compatible;
|
|
40
|
+
* - scalar↔scalar is compatible (number↔enum, etc.).
|
|
41
|
+
*
|
|
42
|
+
* Notably strict: `array`/`object` only accept their own kind (or a `string`
|
|
43
|
+
* target, or an `unknown` either side).
|
|
44
|
+
*/
|
|
45
|
+
export function kindsCompatible(source, target) {
|
|
46
|
+
if (source === 'unknown' || target === 'unknown')
|
|
47
|
+
return true;
|
|
48
|
+
if (target === 'string')
|
|
49
|
+
return true;
|
|
50
|
+
if (source === target)
|
|
51
|
+
return true;
|
|
52
|
+
return SCALAR_KINDS.has(source) && SCALAR_KINDS.has(target);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=type-compat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-compat.js","sourceRoot":"","sources":["../../src/util/type-compat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,6EAA6E;AAC7E,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,OAAO;IACP,QAAQ;IACR,8EAA8E;IAC9E,oDAAoD;IACpD,QAAQ;IACR,+EAA+E;IAC/E,SAAS;CACD,CAAC;AAIX,MAAM,YAAY,GAAG,IAAI,GAAG,CAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAElF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,MAAgB,EAAE,MAAgB;IAChE,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC9D,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -50,6 +50,28 @@ export interface FoundRef {
|
|
|
50
50
|
* (strings, arrays, objects). Used by the config validator to flag unresolvable refs.
|
|
51
51
|
*/
|
|
52
52
|
export declare function collectRefs(value: unknown, prefix: string): FoundRef[];
|
|
53
|
+
/**
|
|
54
|
+
* Parsed view of a ref path's head. Mirrors the branching in
|
|
55
|
+
* `resolvePath` (engine/variable-resolver.ts) — the single rule for how a
|
|
56
|
+
* dotted ref maps to a source:
|
|
57
|
+
*
|
|
58
|
+
* trigger.x.y → { source: 'trigger', path: 'x.y' }
|
|
59
|
+
* workflow.id → { source: 'workflow', path: 'id' }
|
|
60
|
+
* steps.stepId.output.field → { source: 'step', stepId, path: 'output.field' }
|
|
61
|
+
* stepId.output.field → { source: 'step', stepId, path: 'output.field' } (shorthand)
|
|
62
|
+
*
|
|
63
|
+
* Transient/derived — never persisted. `path` is the remainder after the head
|
|
64
|
+
* (and stepId for step refs), e.g. `output.body.status`.
|
|
65
|
+
*/
|
|
66
|
+
export interface ParsedRef {
|
|
67
|
+
source: 'step' | 'trigger' | 'workflow';
|
|
68
|
+
/** Producing step id — present iff `source === 'step'`. */
|
|
69
|
+
stepId?: string | undefined;
|
|
70
|
+
/** Sub-path after the head/stepId, e.g. `output.body.status` or `rrn`. */
|
|
71
|
+
path?: string | undefined;
|
|
72
|
+
}
|
|
73
|
+
/** Parse a dotted ref path into its source/stepId/path. Pure; no context. */
|
|
74
|
+
export declare function parseRef(refPath: string): ParsedRef;
|
|
53
75
|
/**
|
|
54
76
|
* Find the ids of every step whose config references `stepId`'s output
|
|
55
77
|
* (e.g. `{{stepId.output.x}}`). Used to warn before deleting a referenced step.
|
|
@@ -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;;;GAGG;AACH,eAAO,MAAM,+BAA+B,oBAAoB,CAAC;AAEjE,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;
|
|
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;;;GAGG;AACH,eAAO,MAAM,+BAA+B,oBAAoB,CAAC;AAEjE,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,CAAC;IACxC,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"}
|
|
@@ -86,6 +86,27 @@ function walk(value, prefix, out) {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
+
/** Parse a dotted ref path into its source/stepId/path. Pure; no context. */
|
|
90
|
+
export function parseRef(refPath) {
|
|
91
|
+
const segments = refPath.split('.').filter((s) => s.length > 0);
|
|
92
|
+
const head = segments[0];
|
|
93
|
+
if (head === 'trigger' || head === 'workflow') {
|
|
94
|
+
return { source: head, path: segments.slice(1).join('.') || undefined };
|
|
95
|
+
}
|
|
96
|
+
if (head === 'steps') {
|
|
97
|
+
return {
|
|
98
|
+
source: 'step',
|
|
99
|
+
stepId: segments[1],
|
|
100
|
+
path: segments.slice(2).join('.') || undefined,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
// Shorthand: bare step id → context.steps[id]
|
|
104
|
+
return {
|
|
105
|
+
source: 'step',
|
|
106
|
+
stepId: head,
|
|
107
|
+
path: segments.slice(1).join('.') || undefined,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
89
110
|
// ─── Reference integrity (who points at a given step) ───
|
|
90
111
|
function isStepLike(v) {
|
|
91
112
|
return (!!v &&
|
|
@@ -95,10 +116,8 @@ function isStepLike(v) {
|
|
|
95
116
|
}
|
|
96
117
|
/** True if a ref path targets `stepId` (`stepId.…` shorthand or `steps.stepId.…`). */
|
|
97
118
|
function refTargetsStep(refPath, stepId) {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
refPath === `steps.${stepId}` ||
|
|
101
|
-
refPath.startsWith(`steps.${stepId}.`));
|
|
119
|
+
const parsed = parseRef(refPath);
|
|
120
|
+
return parsed.source === 'step' && parsed.stepId === stepId;
|
|
102
121
|
}
|
|
103
122
|
/**
|
|
104
123
|
* Collect ref paths from a step's OWN config, NOT descending into nested step
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variable-ref.js","sourceRoot":"","sources":["../../src/util/variable-ref.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"variable-ref.js","sourceRoot":"","sources":["../../src/util/variable-ref.ts"],"names":[],"mappings":"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"}
|