@etohq/workflows-input-schema 0.0.1-next-20260318155517
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/spec.d.ts +347 -0
- package/dist/spec.d.ts.map +1 -0
- package/dist/spec.js +3 -0
- package/dist/spec.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +27 -0
package/README.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# @etohq/workflows-input-schema
|
|
2
|
+
|
|
3
|
+
Canonical, renderer-agnostic input schema spec for Eto Workflows.
|
|
4
|
+
|
|
5
|
+
This package only contains types: the executable runtime lives in
|
|
6
|
+
`@etohq/workflows-input-schema-runtime`, and the builder/editor model lives in
|
|
7
|
+
`@etohq/workflows-input-schema-builder`.
|
|
8
|
+
|
|
9
|
+
## Core Ideas
|
|
10
|
+
|
|
11
|
+
- **JSON-safe values**: submissions and rule operands use `InputValue` (scalars + tagged wrappers).
|
|
12
|
+
- **Canonical logic AST**: rules use `PredicateSpec` (`and/or/not/op`) + `PredicateRef`.
|
|
13
|
+
- **Deterministic semantics**: avoid UI-specific behavior in the spec.
|
|
14
|
+
|
|
15
|
+
## Minimal Example
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import type { InputSchemaSpec } from "@etohq/workflows-input-schema"
|
|
19
|
+
|
|
20
|
+
export const schema: InputSchemaSpec = {
|
|
21
|
+
id: "schema_1",
|
|
22
|
+
version: 1,
|
|
23
|
+
name: "Onboarding",
|
|
24
|
+
fields: [
|
|
25
|
+
{ key: "name", value_type: "string", required: true },
|
|
26
|
+
{ key: "dob", value_type: "date", required: false },
|
|
27
|
+
],
|
|
28
|
+
layout: [
|
|
29
|
+
{ type: "section", id: "s1", children: [{ type: "field", field_key: "name" }] },
|
|
30
|
+
{ type: "ending", id: "done", title: { default: "Done" } },
|
|
31
|
+
],
|
|
32
|
+
rules: [
|
|
33
|
+
{
|
|
34
|
+
id: "end_when_name_present",
|
|
35
|
+
scope: { node_id: "s1" },
|
|
36
|
+
when: { type: "op", op: "is_present", left: { type: "field", field_key: "name" } },
|
|
37
|
+
then: [{ type: "end", ending_id: "done" }],
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Notes
|
|
44
|
+
|
|
45
|
+
- `RuleSpec.scope` is **node-scoped** only (`{ node_id }`). Field scoping (if needed) is a
|
|
46
|
+
builder-only convenience that compiles into `node_id`.
|
|
47
|
+
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./spec"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAsB"}
|
package/dist/spec.d.ts
ADDED
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
export type I18nText = {
|
|
2
|
+
default: string;
|
|
3
|
+
translations?: Record<string, string>;
|
|
4
|
+
};
|
|
5
|
+
export type InputLanguageSpec = {
|
|
6
|
+
code: string;
|
|
7
|
+
enabled: boolean;
|
|
8
|
+
is_default?: boolean;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Canonical value kinds used by `FieldSpec.value_type`.
|
|
12
|
+
*
|
|
13
|
+
* This is intentionally domain-agnostic and renderer-agnostic: UI widgets can be
|
|
14
|
+
* hinted via `FieldSpec.widget_hint`, but the persisted value shape remains stable.
|
|
15
|
+
*/
|
|
16
|
+
export type InputValueType = "string" | "number" | "boolean" | "date" | "enum" | "json" | "file" | "object" | "array";
|
|
17
|
+
export type InputScalar = string | number | boolean;
|
|
18
|
+
export type JsonPrimitive = string | number | boolean | null;
|
|
19
|
+
export type JsonValue = JsonPrimitive | JsonValue[] | {
|
|
20
|
+
[key: string]: JsonValue;
|
|
21
|
+
};
|
|
22
|
+
export type ISODateString = string;
|
|
23
|
+
/**
|
|
24
|
+
* JSON-serializable value used by submissions and by rule evaluation.
|
|
25
|
+
*
|
|
26
|
+
* Scalars are represented directly; richer values use tagged wrappers so we
|
|
27
|
+
* can remain JSON-safe and cross-platform.
|
|
28
|
+
*/
|
|
29
|
+
export type InputValue = null | InputScalar | {
|
|
30
|
+
type: "date";
|
|
31
|
+
value: ISODateString;
|
|
32
|
+
} | {
|
|
33
|
+
type: "enum";
|
|
34
|
+
value: string;
|
|
35
|
+
} | {
|
|
36
|
+
type: "json";
|
|
37
|
+
value: JsonValue;
|
|
38
|
+
} | {
|
|
39
|
+
type: "file";
|
|
40
|
+
value: InputFileValue;
|
|
41
|
+
} | {
|
|
42
|
+
type: "object";
|
|
43
|
+
value: Record<string, InputValue>;
|
|
44
|
+
} | {
|
|
45
|
+
type: "array";
|
|
46
|
+
value: InputValue[];
|
|
47
|
+
};
|
|
48
|
+
export type InputFileValue = {
|
|
49
|
+
filename: string;
|
|
50
|
+
content_type: string;
|
|
51
|
+
size_bytes: number;
|
|
52
|
+
storage_key?: string | null;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Field-level validation constraints.
|
|
56
|
+
*
|
|
57
|
+
* Some constraints (like uniqueness) are declarative here and evaluated by
|
|
58
|
+
* a persistence layer or dataset-aware service.
|
|
59
|
+
*/
|
|
60
|
+
export type InputConstraint = {
|
|
61
|
+
type: "min";
|
|
62
|
+
value: number;
|
|
63
|
+
} | {
|
|
64
|
+
type: "max";
|
|
65
|
+
value: number;
|
|
66
|
+
} | {
|
|
67
|
+
type: "min_length";
|
|
68
|
+
value: number;
|
|
69
|
+
} | {
|
|
70
|
+
type: "max_length";
|
|
71
|
+
value: number;
|
|
72
|
+
} | {
|
|
73
|
+
type: "regex";
|
|
74
|
+
pattern: string;
|
|
75
|
+
flags?: string | null;
|
|
76
|
+
} | {
|
|
77
|
+
type: "allowed_values";
|
|
78
|
+
values: string[];
|
|
79
|
+
} | {
|
|
80
|
+
type: "unique";
|
|
81
|
+
scope: "schema" | "dataset" | "tenant";
|
|
82
|
+
};
|
|
83
|
+
export type InputTransform = {
|
|
84
|
+
type: "trim";
|
|
85
|
+
} | {
|
|
86
|
+
type: "normalize_whitespace";
|
|
87
|
+
} | {
|
|
88
|
+
type: "lowercase";
|
|
89
|
+
} | {
|
|
90
|
+
type: "uppercase";
|
|
91
|
+
} | {
|
|
92
|
+
type: "regex_replace";
|
|
93
|
+
pattern: string;
|
|
94
|
+
replace_with: string;
|
|
95
|
+
flags?: string | null;
|
|
96
|
+
} | {
|
|
97
|
+
type: "parse_number";
|
|
98
|
+
} | {
|
|
99
|
+
type: "parse_date";
|
|
100
|
+
format?: string | null;
|
|
101
|
+
} | {
|
|
102
|
+
type: "parse_json";
|
|
103
|
+
};
|
|
104
|
+
export type FieldWidgetHint = {
|
|
105
|
+
type: "text";
|
|
106
|
+
} | {
|
|
107
|
+
type: "textarea";
|
|
108
|
+
} | {
|
|
109
|
+
type: "select";
|
|
110
|
+
} | {
|
|
111
|
+
type: "radio";
|
|
112
|
+
} | {
|
|
113
|
+
type: "checkbox";
|
|
114
|
+
} | {
|
|
115
|
+
type: "date_picker";
|
|
116
|
+
} | {
|
|
117
|
+
type: "file_upload";
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* A single user-editable field.
|
|
121
|
+
*
|
|
122
|
+
* `key` is the stable identifier used in submissions and rule references.
|
|
123
|
+
*/
|
|
124
|
+
export type FieldSpec = {
|
|
125
|
+
key: string;
|
|
126
|
+
value_type: InputValueType;
|
|
127
|
+
label?: I18nText | null;
|
|
128
|
+
description?: I18nText | null;
|
|
129
|
+
required: boolean;
|
|
130
|
+
default_value?: InputValue;
|
|
131
|
+
constraints?: InputConstraint[];
|
|
132
|
+
transforms?: InputTransform[];
|
|
133
|
+
widget_hint?: FieldWidgetHint | null;
|
|
134
|
+
metadata?: Record<string, unknown> | null;
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* A mutable runtime variable used by rules (e.g. totals, counters, derived values).
|
|
138
|
+
*
|
|
139
|
+
* Variables are separate from fields: they don't necessarily have a UI representation.
|
|
140
|
+
*/
|
|
141
|
+
export type VariableSpec = {
|
|
142
|
+
id: string;
|
|
143
|
+
name: string;
|
|
144
|
+
value_type: "number";
|
|
145
|
+
default_value: number;
|
|
146
|
+
} | {
|
|
147
|
+
id: string;
|
|
148
|
+
name: string;
|
|
149
|
+
value_type: "text";
|
|
150
|
+
default_value: string;
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* Renderer-agnostic layout tree for grouping, ordering, and endings.
|
|
154
|
+
*
|
|
155
|
+
* UIs are free to ignore layout, but it provides a portable default structure.
|
|
156
|
+
*/
|
|
157
|
+
export type LayoutNode = {
|
|
158
|
+
type: "field";
|
|
159
|
+
field_key: string;
|
|
160
|
+
} | {
|
|
161
|
+
type: "section";
|
|
162
|
+
id: string;
|
|
163
|
+
title?: I18nText | null;
|
|
164
|
+
children: LayoutNode[];
|
|
165
|
+
} | {
|
|
166
|
+
type: "card";
|
|
167
|
+
id: string;
|
|
168
|
+
title?: I18nText | null;
|
|
169
|
+
body?: I18nText | null;
|
|
170
|
+
children: LayoutNode[];
|
|
171
|
+
} | {
|
|
172
|
+
type: "ending";
|
|
173
|
+
id: string;
|
|
174
|
+
title?: I18nText | null;
|
|
175
|
+
body?: I18nText | null;
|
|
176
|
+
};
|
|
177
|
+
export type ThemeTokenSpec = {
|
|
178
|
+
brand_color?: string | null;
|
|
179
|
+
background_color?: string | null;
|
|
180
|
+
text_color?: string | null;
|
|
181
|
+
border_radius?: "none" | "sm" | "md" | "lg" | null;
|
|
182
|
+
spacing_scale?: "compact" | "comfortable" | null;
|
|
183
|
+
};
|
|
184
|
+
/**
|
|
185
|
+
* Canonical, executable input schema.
|
|
186
|
+
*
|
|
187
|
+
* The builder/editor format (if any) should compile down into this spec so runtime
|
|
188
|
+
* logic stays stable across apps and platforms.
|
|
189
|
+
*/
|
|
190
|
+
export type InputSchemaSpec = {
|
|
191
|
+
id: string;
|
|
192
|
+
version: number;
|
|
193
|
+
name: string;
|
|
194
|
+
description?: I18nText | null;
|
|
195
|
+
languages?: InputLanguageSpec[] | null;
|
|
196
|
+
fields: FieldSpec[];
|
|
197
|
+
variables?: VariableSpec[] | null;
|
|
198
|
+
layout?: LayoutNode[] | null;
|
|
199
|
+
theme?: ThemeTokenSpec | null;
|
|
200
|
+
rules?: RuleSpec[] | null;
|
|
201
|
+
validators?: ValidatorPluginSpec[] | null;
|
|
202
|
+
metadata?: Record<string, unknown> | null;
|
|
203
|
+
};
|
|
204
|
+
/**
|
|
205
|
+
* A user's answers (plus optional context) for a specific schema version.
|
|
206
|
+
*
|
|
207
|
+
* Context is where platforms can provide extra values for rules (e.g. interaction
|
|
208
|
+
* flags, imported values, external lookups). Context is not necessarily persisted.
|
|
209
|
+
*/
|
|
210
|
+
export type InputSubmission = {
|
|
211
|
+
schema_id: string;
|
|
212
|
+
schema_version: number;
|
|
213
|
+
values: Record<string, InputValue>;
|
|
214
|
+
context?: Record<string, InputValue> | null;
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Operand reference for predicates.
|
|
218
|
+
*
|
|
219
|
+
* This is the canonical ref AST used in `PredicateSpec`. Builder/editor formats
|
|
220
|
+
* should compile into this.
|
|
221
|
+
*/
|
|
222
|
+
export type PredicateRef = {
|
|
223
|
+
type: "field";
|
|
224
|
+
field_key: string;
|
|
225
|
+
} | {
|
|
226
|
+
type: "var";
|
|
227
|
+
name: string;
|
|
228
|
+
} | {
|
|
229
|
+
type: "variable";
|
|
230
|
+
variable_id: string;
|
|
231
|
+
} | {
|
|
232
|
+
type: "hidden_field";
|
|
233
|
+
key: string;
|
|
234
|
+
} | {
|
|
235
|
+
type: "context";
|
|
236
|
+
key: string;
|
|
237
|
+
} | {
|
|
238
|
+
type: "const";
|
|
239
|
+
value: InputValue;
|
|
240
|
+
};
|
|
241
|
+
/**
|
|
242
|
+
* Canonical operator set for `PredicateSpec`.
|
|
243
|
+
*
|
|
244
|
+
* This list intentionally includes "interaction" operators; those are resolved from
|
|
245
|
+
* `InputSubmission.context` by convention in the runtime package.
|
|
246
|
+
*/
|
|
247
|
+
export type PredicateOperator = "equals" | "does_not_equal" | "contains" | "does_not_contain" | "starts_with" | "does_not_start_with" | "ends_with" | "does_not_end_with" | "is_greater_than" | "is_less_than" | "is_greater_than_or_equal" | "is_less_than_or_equal" | "is_empty" | "is_present" | "equals_one_of" | "includes_all_of" | "includes_one_of" | "does_not_include_one_of" | "does_not_include_all_of" | "is_submitted" | "is_skipped" | "is_clicked" | "is_accepted" | "is_booked" | "is_partially_submitted" | "is_completely_submitted" | "is_before" | "is_after";
|
|
248
|
+
/**
|
|
249
|
+
* Canonical boolean logic AST.
|
|
250
|
+
*
|
|
251
|
+
* Notes:
|
|
252
|
+
* - `type: "op"` is the leaf node; other nodes compose it.
|
|
253
|
+
* - Some operators intentionally have no right-hand operand.
|
|
254
|
+
*/
|
|
255
|
+
export type PredicateSpec = {
|
|
256
|
+
type: "op";
|
|
257
|
+
op: PredicateOperator;
|
|
258
|
+
left: PredicateRef;
|
|
259
|
+
right?: PredicateRef;
|
|
260
|
+
} | {
|
|
261
|
+
type: "and";
|
|
262
|
+
items: PredicateSpec[];
|
|
263
|
+
} | {
|
|
264
|
+
type: "or";
|
|
265
|
+
items: PredicateSpec[];
|
|
266
|
+
} | {
|
|
267
|
+
type: "not";
|
|
268
|
+
item: PredicateSpec;
|
|
269
|
+
};
|
|
270
|
+
export type VariableCalculateOperatorText = "assign" | "concat";
|
|
271
|
+
export type VariableCalculateOperatorNumber = "add" | "subtract" | "multiply" | "divide" | "assign";
|
|
272
|
+
/**
|
|
273
|
+
* Side-effects produced when a rule matches.
|
|
274
|
+
*
|
|
275
|
+
* Runtimes should treat effects as pure "state mutations" over a `RuleEvaluationResult`.
|
|
276
|
+
*/
|
|
277
|
+
export type EffectSpec = {
|
|
278
|
+
type: "set_required";
|
|
279
|
+
field_key: string;
|
|
280
|
+
required: boolean;
|
|
281
|
+
} | {
|
|
282
|
+
type: "set_visible";
|
|
283
|
+
field_key: string;
|
|
284
|
+
visible: boolean;
|
|
285
|
+
} | {
|
|
286
|
+
type: "set_value";
|
|
287
|
+
field_key: string;
|
|
288
|
+
value: InputValue;
|
|
289
|
+
} | {
|
|
290
|
+
type: "calculate_variable";
|
|
291
|
+
variable_id: string;
|
|
292
|
+
operator: VariableCalculateOperatorText | VariableCalculateOperatorNumber;
|
|
293
|
+
value: PredicateRef;
|
|
294
|
+
} | {
|
|
295
|
+
type: "skip_to";
|
|
296
|
+
node_id: string;
|
|
297
|
+
} | {
|
|
298
|
+
type: "end";
|
|
299
|
+
ending_id: string;
|
|
300
|
+
};
|
|
301
|
+
/**
|
|
302
|
+
* A single rule: when predicate is true, apply effects in order.
|
|
303
|
+
*/
|
|
304
|
+
export type RuleSpec = {
|
|
305
|
+
id: string;
|
|
306
|
+
scope?: RuleScopeSpec | null;
|
|
307
|
+
when: PredicateSpec;
|
|
308
|
+
then: EffectSpec[];
|
|
309
|
+
};
|
|
310
|
+
/**
|
|
311
|
+
* Optional rule scope for tying a rule to a specific layout node.
|
|
312
|
+
*
|
|
313
|
+
* This enables static analysis (e.g. cycle detection for `skip_to`) and allows
|
|
314
|
+
* renderers to apply rules only when the user is within a given node.
|
|
315
|
+
*/
|
|
316
|
+
export type RuleScopeSpec = {
|
|
317
|
+
node_id: string;
|
|
318
|
+
};
|
|
319
|
+
/**
|
|
320
|
+
* Generic issue type used by schema/builder/runtime validators.
|
|
321
|
+
*/
|
|
322
|
+
export type ValidationIssue = {
|
|
323
|
+
code: string;
|
|
324
|
+
message: string;
|
|
325
|
+
path?: string[] | null;
|
|
326
|
+
severity?: "error" | "warning" | null;
|
|
327
|
+
metadata?: Record<string, unknown> | null;
|
|
328
|
+
};
|
|
329
|
+
/**
|
|
330
|
+
* Generic validator result type used across schema/builder/runtime packages.
|
|
331
|
+
*/
|
|
332
|
+
export type ValidationResult = {
|
|
333
|
+
status: "valid" | "invalid" | "warning";
|
|
334
|
+
issues: ValidationIssue[];
|
|
335
|
+
enriched_values?: Record<string, InputValue> | null;
|
|
336
|
+
};
|
|
337
|
+
/**
|
|
338
|
+
* Contract for pluggable validators that run in a higher-level service layer.
|
|
339
|
+
*
|
|
340
|
+
* Runtime packages define the shape, but do not execute plugins directly.
|
|
341
|
+
*/
|
|
342
|
+
export type ValidatorPluginSpec = {
|
|
343
|
+
name: string;
|
|
344
|
+
config?: Record<string, unknown> | null;
|
|
345
|
+
required?: boolean;
|
|
346
|
+
};
|
|
347
|
+
//# sourceMappingURL=spec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
|
package/dist/spec.js
ADDED
package/dist/spec.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../src/index.ts","../src/spec.ts"],"version":"5.8.3"}
|
package/package.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@etohq/workflows-input-schema",
|
|
3
|
+
"version": "0.0.1-next-20260318155517",
|
|
4
|
+
"description": "Renderer-agnostic input schema spec + logic AST + validation plugin contracts",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"require": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@types/node": "22.10.5",
|
|
19
|
+
"rimraf": "5.0.2",
|
|
20
|
+
"typescript": "5.8.3"
|
|
21
|
+
},
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "rimraf dist && tsc --build",
|
|
24
|
+
"watch": "tsc --build --watch",
|
|
25
|
+
"test": "exit 0"
|
|
26
|
+
}
|
|
27
|
+
}
|