@manifesto-ai/core 2.5.0 → 2.6.1

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.
Files changed (182) hide show
  1. package/README.md +8 -7
  2. package/dist/index.d.ts +1749 -19
  3. package/dist/index.js +18456 -36
  4. package/dist/index.js.map +1 -1
  5. package/package.json +2 -2
  6. package/dist/__tests__/apply.test.d.ts +0 -2
  7. package/dist/__tests__/apply.test.d.ts.map +0 -1
  8. package/dist/__tests__/apply.test.js +0 -279
  9. package/dist/__tests__/apply.test.js.map +0 -1
  10. package/dist/__tests__/defaults.test.d.ts +0 -2
  11. package/dist/__tests__/defaults.test.d.ts.map +0 -1
  12. package/dist/__tests__/defaults.test.js +0 -74
  13. package/dist/__tests__/defaults.test.js.map +0 -1
  14. package/dist/__tests__/jcs.test.d.ts +0 -2
  15. package/dist/__tests__/jcs.test.d.ts.map +0 -1
  16. package/dist/__tests__/jcs.test.js +0 -45
  17. package/dist/__tests__/jcs.test.js.map +0 -1
  18. package/dist/core/apply.d.ts +0 -17
  19. package/dist/core/apply.d.ts.map +0 -1
  20. package/dist/core/apply.js +0 -198
  21. package/dist/core/apply.js.map +0 -1
  22. package/dist/core/compute.d.ts +0 -17
  23. package/dist/core/compute.d.ts.map +0 -1
  24. package/dist/core/compute.js +0 -305
  25. package/dist/core/compute.js.map +0 -1
  26. package/dist/core/compute.test.d.ts +0 -2
  27. package/dist/core/compute.test.d.ts.map +0 -1
  28. package/dist/core/compute.test.js +0 -950
  29. package/dist/core/compute.test.js.map +0 -1
  30. package/dist/core/explain.d.ts +0 -14
  31. package/dist/core/explain.d.ts.map +0 -1
  32. package/dist/core/explain.js +0 -78
  33. package/dist/core/explain.js.map +0 -1
  34. package/dist/core/index.d.ts +0 -5
  35. package/dist/core/index.d.ts.map +0 -1
  36. package/dist/core/index.js +0 -5
  37. package/dist/core/index.js.map +0 -1
  38. package/dist/core/validate.d.ts +0 -16
  39. package/dist/core/validate.d.ts.map +0 -1
  40. package/dist/core/validate.js +0 -361
  41. package/dist/core/validate.js.map +0 -1
  42. package/dist/core/validate.test.d.ts +0 -2
  43. package/dist/core/validate.test.d.ts.map +0 -1
  44. package/dist/core/validate.test.js +0 -638
  45. package/dist/core/validate.test.js.map +0 -1
  46. package/dist/core/validation-utils.d.ts +0 -20
  47. package/dist/core/validation-utils.d.ts.map +0 -1
  48. package/dist/core/validation-utils.js +0 -292
  49. package/dist/core/validation-utils.js.map +0 -1
  50. package/dist/errors.d.ts +0 -30
  51. package/dist/errors.d.ts.map +0 -1
  52. package/dist/errors.js +0 -51
  53. package/dist/errors.js.map +0 -1
  54. package/dist/evaluator/computed.d.ts +0 -14
  55. package/dist/evaluator/computed.d.ts.map +0 -1
  56. package/dist/evaluator/computed.js +0 -60
  57. package/dist/evaluator/computed.js.map +0 -1
  58. package/dist/evaluator/context.d.ts +0 -62
  59. package/dist/evaluator/context.d.ts.map +0 -1
  60. package/dist/evaluator/context.js +0 -44
  61. package/dist/evaluator/context.js.map +0 -1
  62. package/dist/evaluator/dag.d.ts +0 -30
  63. package/dist/evaluator/dag.d.ts.map +0 -1
  64. package/dist/evaluator/dag.js +0 -121
  65. package/dist/evaluator/dag.js.map +0 -1
  66. package/dist/evaluator/expr.d.ts +0 -11
  67. package/dist/evaluator/expr.d.ts.map +0 -1
  68. package/dist/evaluator/expr.js +0 -667
  69. package/dist/evaluator/expr.js.map +0 -1
  70. package/dist/evaluator/expr.test.d.ts +0 -2
  71. package/dist/evaluator/expr.test.d.ts.map +0 -1
  72. package/dist/evaluator/expr.test.js +0 -508
  73. package/dist/evaluator/expr.test.js.map +0 -1
  74. package/dist/evaluator/flow.d.ts +0 -36
  75. package/dist/evaluator/flow.d.ts.map +0 -1
  76. package/dist/evaluator/flow.js +0 -390
  77. package/dist/evaluator/flow.js.map +0 -1
  78. package/dist/evaluator/flow.test.d.ts +0 -2
  79. package/dist/evaluator/flow.test.d.ts.map +0 -1
  80. package/dist/evaluator/flow.test.js +0 -499
  81. package/dist/evaluator/flow.test.js.map +0 -1
  82. package/dist/evaluator/index.d.ts +0 -6
  83. package/dist/evaluator/index.d.ts.map +0 -1
  84. package/dist/evaluator/index.js +0 -6
  85. package/dist/evaluator/index.js.map +0 -1
  86. package/dist/factories.d.ts +0 -22
  87. package/dist/factories.d.ts.map +0 -1
  88. package/dist/factories.js +0 -44
  89. package/dist/factories.js.map +0 -1
  90. package/dist/index.d.ts.map +0 -1
  91. package/dist/index.test.d.ts +0 -2
  92. package/dist/index.test.d.ts.map +0 -1
  93. package/dist/index.test.js +0 -14
  94. package/dist/index.test.js.map +0 -1
  95. package/dist/schema/action.d.ts +0 -14
  96. package/dist/schema/action.d.ts.map +0 -1
  97. package/dist/schema/action.js +0 -30
  98. package/dist/schema/action.js.map +0 -1
  99. package/dist/schema/common.d.ts +0 -37
  100. package/dist/schema/common.d.ts.map +0 -1
  101. package/dist/schema/common.js +0 -20
  102. package/dist/schema/common.js.map +0 -1
  103. package/dist/schema/computed.d.ts +0 -23
  104. package/dist/schema/computed.d.ts.map +0 -1
  105. package/dist/schema/computed.js +0 -34
  106. package/dist/schema/computed.js.map +0 -1
  107. package/dist/schema/defaults.d.ts +0 -12
  108. package/dist/schema/defaults.d.ts.map +0 -1
  109. package/dist/schema/defaults.js +0 -19
  110. package/dist/schema/defaults.js.map +0 -1
  111. package/dist/schema/domain.d.ts +0 -50
  112. package/dist/schema/domain.d.ts.map +0 -1
  113. package/dist/schema/domain.js +0 -60
  114. package/dist/schema/domain.js.map +0 -1
  115. package/dist/schema/expr.d.ts +0 -310
  116. package/dist/schema/expr.d.ts.map +0 -1
  117. package/dist/schema/expr.js +0 -289
  118. package/dist/schema/expr.js.map +0 -1
  119. package/dist/schema/field.d.ts +0 -48
  120. package/dist/schema/field.d.ts.map +0 -1
  121. package/dist/schema/field.js +0 -31
  122. package/dist/schema/field.js.map +0 -1
  123. package/dist/schema/flow.d.ts +0 -103
  124. package/dist/schema/flow.d.ts.map +0 -1
  125. package/dist/schema/flow.js +0 -82
  126. package/dist/schema/flow.js.map +0 -1
  127. package/dist/schema/host-context.d.ts +0 -12
  128. package/dist/schema/host-context.d.ts.map +0 -1
  129. package/dist/schema/host-context.js +0 -23
  130. package/dist/schema/host-context.js.map +0 -1
  131. package/dist/schema/index.d.ts +0 -15
  132. package/dist/schema/index.d.ts.map +0 -1
  133. package/dist/schema/index.js +0 -28
  134. package/dist/schema/index.js.map +0 -1
  135. package/dist/schema/patch.d.ts +0 -59
  136. package/dist/schema/patch.d.ts.map +0 -1
  137. package/dist/schema/patch.js +0 -60
  138. package/dist/schema/patch.js.map +0 -1
  139. package/dist/schema/result.d.ts +0 -142
  140. package/dist/schema/result.d.ts.map +0 -1
  141. package/dist/schema/result.js +0 -94
  142. package/dist/schema/result.js.map +0 -1
  143. package/dist/schema/snapshot.d.ts +0 -153
  144. package/dist/schema/snapshot.d.ts.map +0 -1
  145. package/dist/schema/snapshot.js +0 -160
  146. package/dist/schema/snapshot.js.map +0 -1
  147. package/dist/schema/trace.d.ts +0 -98
  148. package/dist/schema/trace.d.ts.map +0 -1
  149. package/dist/schema/trace.js +0 -90
  150. package/dist/schema/trace.js.map +0 -1
  151. package/dist/schema/type-spec.d.ts +0 -34
  152. package/dist/schema/type-spec.d.ts.map +0 -1
  153. package/dist/schema/type-spec.js +0 -40
  154. package/dist/schema/type-spec.js.map +0 -1
  155. package/dist/utils/canonical.d.ts +0 -37
  156. package/dist/utils/canonical.d.ts.map +0 -1
  157. package/dist/utils/canonical.js +0 -122
  158. package/dist/utils/canonical.js.map +0 -1
  159. package/dist/utils/canonical.test.d.ts +0 -2
  160. package/dist/utils/canonical.test.d.ts.map +0 -1
  161. package/dist/utils/canonical.test.js +0 -183
  162. package/dist/utils/canonical.test.js.map +0 -1
  163. package/dist/utils/hash.d.ts +0 -55
  164. package/dist/utils/hash.d.ts.map +0 -1
  165. package/dist/utils/hash.js +0 -183
  166. package/dist/utils/hash.js.map +0 -1
  167. package/dist/utils/hash.test.d.ts +0 -2
  168. package/dist/utils/hash.test.d.ts.map +0 -1
  169. package/dist/utils/hash.test.js +0 -253
  170. package/dist/utils/hash.test.js.map +0 -1
  171. package/dist/utils/index.d.ts +0 -4
  172. package/dist/utils/index.d.ts.map +0 -1
  173. package/dist/utils/index.js +0 -4
  174. package/dist/utils/index.js.map +0 -1
  175. package/dist/utils/path.d.ts +0 -40
  176. package/dist/utils/path.d.ts.map +0 -1
  177. package/dist/utils/path.js +0 -132
  178. package/dist/utils/path.js.map +0 -1
  179. package/dist/utils/path.test.d.ts +0 -2
  180. package/dist/utils/path.test.d.ts.map +0 -1
  181. package/dist/utils/path.test.js +0 -191
  182. package/dist/utils/path.test.js.map +0 -1
@@ -1,638 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { validate } from "./validate.js";
3
- import { hashSchemaSync } from "../utils/hash.js";
4
- const BASE_STATE_FIELDS = {
5
- dummy: { type: "string", required: true },
6
- a: { type: "number", required: true },
7
- b: { type: "number", required: true },
8
- x: { type: "number", required: true },
9
- count: { type: "number", required: true },
10
- balance: { type: "number", required: true },
11
- flag: { type: "boolean", required: true },
12
- result: { type: "string", required: true },
13
- items: {
14
- type: "array",
15
- required: true,
16
- items: {
17
- type: "object",
18
- required: true,
19
- fields: {
20
- active: { type: "boolean", required: true },
21
- },
22
- },
23
- },
24
- };
25
- const BASE_COMPUTED_FIELDS = {
26
- "computed.dummy": {
27
- expr: { kind: "get", path: "dummy" },
28
- deps: ["dummy"],
29
- },
30
- };
31
- const BASE_ACTIONS = {
32
- noop: { flow: { kind: "halt", reason: "noop" } },
33
- };
34
- // Helper to create a valid minimal schema
35
- function createValidSchema(overrides = {}) {
36
- const { state, computed, actions: overrideActions, hash, types, ...restOverrides } = overrides;
37
- const stateFields = {
38
- ...BASE_STATE_FIELDS,
39
- ...(state?.fields ?? {}),
40
- };
41
- const computedFields = {
42
- ...BASE_COMPUTED_FIELDS,
43
- ...(computed?.fields ?? {}),
44
- };
45
- const actions = {
46
- ...BASE_ACTIONS,
47
- ...(overrideActions ?? {}),
48
- };
49
- const schemaWithoutHash = {
50
- id: "manifesto:test",
51
- version: "1.0.0",
52
- ...restOverrides,
53
- types: types ?? {},
54
- state: { fields: stateFields },
55
- computed: { fields: computedFields },
56
- actions,
57
- };
58
- return {
59
- ...schemaWithoutHash,
60
- hash: hash ?? hashSchemaSync(schemaWithoutHash),
61
- };
62
- }
63
- describe("validate", () => {
64
- describe("Basic Schema Validation", () => {
65
- it("should validate a valid schema", () => {
66
- const schema = createValidSchema();
67
- const result = validate(schema);
68
- expect(result.valid).toBe(true);
69
- expect(result.errors).toEqual([]);
70
- });
71
- it("should reject non-object input", () => {
72
- const result = validate(null);
73
- expect(result.valid).toBe(false);
74
- expect(result.errors.length).toBeGreaterThan(0);
75
- });
76
- it("should reject schema without required fields", () => {
77
- const result = validate({});
78
- expect(result.valid).toBe(false);
79
- expect(result.errors.some((e) => e.code === "SCHEMA_ERROR")).toBe(true);
80
- });
81
- it("should reject schema with invalid version format", () => {
82
- const result = validate({
83
- id: "manifesto:test",
84
- version: 123, // Should be string
85
- hash: "test-hash",
86
- state: { fields: {} },
87
- computed: { fields: {} },
88
- actions: {},
89
- });
90
- expect(result.valid).toBe(false);
91
- });
92
- it("should reject schema with invalid id", () => {
93
- const schema = createValidSchema({ id: "not-a-uri" });
94
- const result = validate(schema);
95
- expect(result.valid).toBe(false);
96
- expect(result.errors.some((e) => e.path === "id")).toBe(true);
97
- });
98
- it("should reject schema with invalid semver", () => {
99
- const schema = createValidSchema({ version: "1.0" });
100
- const result = validate(schema);
101
- expect(result.valid).toBe(false);
102
- expect(result.errors.some((e) => e.path === "version")).toBe(true);
103
- });
104
- it("should reject schema with empty computed fields", () => {
105
- const schema = createValidSchema();
106
- schema.computed = { fields: {} };
107
- const result = validate(schema);
108
- expect(result.valid).toBe(false);
109
- expect(result.errors.some((e) => e.path === "computed.fields")).toBe(true);
110
- });
111
- it("should reject schema with hash mismatch", () => {
112
- const schema = createValidSchema({ hash: "bad-hash" });
113
- const result = validate(schema);
114
- expect(result.valid).toBe(false);
115
- expect(result.errors.some((e) => e.code === "V-008")).toBe(true);
116
- });
117
- it("should accept schemas with extra compiler fields when hash matches raw canonical", () => {
118
- const schemaWithoutHash = {
119
- id: "manifesto:test",
120
- version: "1.0.0",
121
- state: { fields: BASE_STATE_FIELDS },
122
- computed: { fields: BASE_COMPUTED_FIELDS },
123
- actions: BASE_ACTIONS,
124
- types: {
125
- CustomType: {
126
- name: "CustomType",
127
- definition: {
128
- kind: "object",
129
- fields: {
130
- a: { type: { kind: "primitive", type: "string" }, optional: false },
131
- b: { type: { kind: "primitive", type: "number" }, optional: false },
132
- },
133
- },
134
- },
135
- },
136
- };
137
- const schema = {
138
- ...schemaWithoutHash,
139
- hash: hashSchemaSync(schemaWithoutHash),
140
- };
141
- const result = validate(schema);
142
- expect(result.valid).toBe(true);
143
- });
144
- });
145
- describe("Computed Field Validation", () => {
146
- it("should validate schema with computed fields", () => {
147
- const schema = createValidSchema({
148
- computed: {
149
- fields: {
150
- "computed.total": {
151
- expr: { kind: "add", left: { kind: "get", path: "a" }, right: { kind: "get", path: "b" } },
152
- deps: ["a", "b"],
153
- },
154
- },
155
- },
156
- });
157
- const result = validate(schema);
158
- expect(result.valid).toBe(true);
159
- });
160
- it("should require deps to cover all expression paths", () => {
161
- const schema = createValidSchema({
162
- computed: {
163
- fields: {
164
- "computed.sum": {
165
- expr: { kind: "add", left: { kind: "get", path: "a" }, right: { kind: "get", path: "b" } },
166
- deps: ["a"],
167
- },
168
- },
169
- },
170
- });
171
- const result = validate(schema);
172
- expect(result.valid).toBe(false);
173
- expect(result.errors.some((e) => e.message.includes("Missing dependency"))).toBe(true);
174
- });
175
- it("should reject deps with unknown paths", () => {
176
- const schema = createValidSchema({
177
- computed: {
178
- fields: {
179
- "computed.sum": {
180
- expr: { kind: "get", path: "a" },
181
- deps: ["a", "missing.path"],
182
- },
183
- },
184
- },
185
- });
186
- const result = validate(schema);
187
- expect(result.valid).toBe(false);
188
- expect(result.errors.some((e) => e.code === "V-001")).toBe(true);
189
- expect(result.errors.some((e) => e.message.includes("missing.path"))).toBe(true);
190
- });
191
- it("should reject computed expressions that read system paths", () => {
192
- const schema = createValidSchema({
193
- computed: {
194
- fields: {
195
- "computed.invalid": {
196
- expr: { kind: "get", path: "system.status" },
197
- deps: ["dummy"],
198
- },
199
- },
200
- },
201
- });
202
- const result = validate(schema);
203
- expect(result.valid).toBe(false);
204
- expect(result.errors.some((e) => e.code === "V-003")).toBe(true);
205
- expect(result.errors.some((e) => e.message.includes("system.status"))).toBe(true);
206
- });
207
- it("should detect cyclic dependencies in computed fields (V-002)", () => {
208
- const schema = createValidSchema({
209
- computed: {
210
- fields: {
211
- "computed.a": {
212
- expr: { kind: "get", path: "computed.b" },
213
- deps: ["computed.b"],
214
- },
215
- "computed.b": {
216
- expr: { kind: "get", path: "computed.a" },
217
- deps: ["computed.a"],
218
- },
219
- },
220
- },
221
- });
222
- const result = validate(schema);
223
- expect(result.valid).toBe(false);
224
- expect(result.errors.some((e) => e.code === "V-002")).toBe(true);
225
- });
226
- it("should detect self-referential computed fields", () => {
227
- const schema = createValidSchema({
228
- computed: {
229
- fields: {
230
- "computed.self": {
231
- expr: { kind: "get", path: "computed.self" },
232
- deps: ["computed.self"],
233
- },
234
- },
235
- },
236
- });
237
- const result = validate(schema);
238
- expect(result.valid).toBe(false);
239
- expect(result.errors.some((e) => e.code === "V-002")).toBe(true);
240
- });
241
- it("should detect complex cyclic dependencies", () => {
242
- const schema = createValidSchema({
243
- computed: {
244
- fields: {
245
- "computed.a": {
246
- expr: { kind: "get", path: "computed.b" },
247
- deps: ["computed.b"],
248
- },
249
- "computed.b": {
250
- expr: { kind: "get", path: "computed.c" },
251
- deps: ["computed.c"],
252
- },
253
- "computed.c": {
254
- expr: { kind: "get", path: "computed.a" },
255
- deps: ["computed.a"],
256
- },
257
- },
258
- },
259
- });
260
- const result = validate(schema);
261
- expect(result.valid).toBe(false);
262
- expect(result.errors.some((e) => e.code === "V-002")).toBe(true);
263
- });
264
- it("should allow valid dependency chains", () => {
265
- const schema = createValidSchema({
266
- computed: {
267
- fields: {
268
- "computed.a": {
269
- expr: { kind: "get", path: "x" },
270
- deps: ["x"],
271
- },
272
- "computed.b": {
273
- expr: { kind: "get", path: "computed.a" },
274
- deps: ["computed.a"],
275
- },
276
- "computed.c": {
277
- expr: { kind: "get", path: "computed.b" },
278
- deps: ["computed.b"],
279
- },
280
- },
281
- },
282
- });
283
- const result = validate(schema);
284
- expect(result.valid).toBe(true);
285
- });
286
- });
287
- describe("Action Validation", () => {
288
- it("should validate schema with actions", () => {
289
- const schema = createValidSchema({
290
- actions: {
291
- increment: {
292
- flow: {
293
- kind: "patch",
294
- op: "set",
295
- path: "count",
296
- value: { kind: "lit", value: 1 },
297
- },
298
- },
299
- },
300
- });
301
- const result = validate(schema);
302
- expect(result.valid).toBe(true);
303
- });
304
- it("should validate action with availability condition", () => {
305
- const schema = createValidSchema({
306
- actions: {
307
- withdraw: {
308
- available: {
309
- kind: "gt",
310
- left: { kind: "get", path: "balance" },
311
- right: { kind: "lit", value: 0 },
312
- },
313
- flow: {
314
- kind: "patch",
315
- op: "set",
316
- path: "balance",
317
- value: { kind: "lit", value: 0 },
318
- },
319
- },
320
- },
321
- });
322
- const result = validate(schema);
323
- expect(result.valid).toBe(true);
324
- });
325
- it("should allow meta paths in action flow", () => {
326
- const schema = createValidSchema({
327
- actions: {
328
- mark: {
329
- flow: {
330
- kind: "patch",
331
- op: "set",
332
- path: "dummy",
333
- value: { kind: "get", path: "meta.intentId" },
334
- },
335
- },
336
- },
337
- });
338
- const result = validate(schema);
339
- expect(result.valid).toBe(true);
340
- });
341
- it("should reject unknown input paths in action expressions", () => {
342
- const schema = createValidSchema({
343
- actions: {
344
- update: {
345
- input: {
346
- type: "object",
347
- required: true,
348
- fields: {
349
- value: { type: "string", required: true },
350
- },
351
- },
352
- flow: {
353
- kind: "patch",
354
- op: "set",
355
- path: "dummy",
356
- value: { kind: "get", path: "input.missing" },
357
- },
358
- },
359
- },
360
- });
361
- const result = validate(schema);
362
- expect(result.valid).toBe(false);
363
- expect(result.errors.some((e) => e.code === "V-003")).toBe(true);
364
- expect(result.errors.some((e) => e.message.includes("input.missing"))).toBe(true);
365
- });
366
- });
367
- describe("Call Reference Validation (V-004)", () => {
368
- it("should detect unknown call references", () => {
369
- const schema = createValidSchema({
370
- actions: {
371
- main: {
372
- flow: {
373
- kind: "call",
374
- flow: "nonexistent",
375
- },
376
- },
377
- },
378
- });
379
- const result = validate(schema);
380
- expect(result.valid).toBe(false);
381
- expect(result.errors.some((e) => e.code === "V-004")).toBe(true);
382
- expect(result.errors.some((e) => e.message.includes("nonexistent"))).toBe(true);
383
- });
384
- it("should allow valid call references", () => {
385
- const schema = createValidSchema({
386
- actions: {
387
- helper: {
388
- flow: { kind: "patch", op: "set", path: "x", value: { kind: "lit", value: 1 } },
389
- },
390
- main: {
391
- flow: {
392
- kind: "call",
393
- flow: "helper",
394
- },
395
- },
396
- },
397
- });
398
- const result = validate(schema);
399
- expect(result.valid).toBe(true);
400
- });
401
- it("should detect unknown calls in nested flows", () => {
402
- const schema = createValidSchema({
403
- actions: {
404
- main: {
405
- flow: {
406
- kind: "seq",
407
- steps: [
408
- { kind: "patch", op: "set", path: "x", value: { kind: "lit", value: 1 } },
409
- {
410
- kind: "if",
411
- cond: { kind: "lit", value: true },
412
- then: { kind: "call", flow: "unknown" },
413
- },
414
- ],
415
- },
416
- },
417
- },
418
- });
419
- const result = validate(schema);
420
- expect(result.valid).toBe(false);
421
- expect(result.errors.some((e) => e.code === "V-004")).toBe(true);
422
- });
423
- });
424
- describe("Call Graph Cycle Detection (V-005)", () => {
425
- it("should detect direct recursive calls", () => {
426
- const schema = createValidSchema({
427
- actions: {
428
- recursive: {
429
- flow: {
430
- kind: "call",
431
- flow: "recursive",
432
- },
433
- },
434
- },
435
- });
436
- const result = validate(schema);
437
- expect(result.valid).toBe(false);
438
- expect(result.errors.some((e) => e.code === "V-005")).toBe(true);
439
- });
440
- it("should detect indirect recursive calls", () => {
441
- const schema = createValidSchema({
442
- actions: {
443
- a: {
444
- flow: { kind: "call", flow: "b" },
445
- },
446
- b: {
447
- flow: { kind: "call", flow: "c" },
448
- },
449
- c: {
450
- flow: { kind: "call", flow: "a" },
451
- },
452
- },
453
- });
454
- const result = validate(schema);
455
- expect(result.valid).toBe(false);
456
- expect(result.errors.some((e) => e.code === "V-005")).toBe(true);
457
- });
458
- it("should allow non-recursive call chains", () => {
459
- const schema = createValidSchema({
460
- actions: {
461
- step1: {
462
- flow: { kind: "patch", op: "set", path: "x", value: { kind: "lit", value: 1 } },
463
- },
464
- step2: {
465
- flow: { kind: "call", flow: "step1" },
466
- },
467
- main: {
468
- flow: {
469
- kind: "seq",
470
- steps: [
471
- { kind: "call", flow: "step1" },
472
- { kind: "call", flow: "step2" },
473
- ],
474
- },
475
- },
476
- },
477
- });
478
- const result = validate(schema);
479
- expect(result.valid).toBe(true);
480
- });
481
- });
482
- describe("Flow Node Validation", () => {
483
- it("should validate seq flow", () => {
484
- const schema = createValidSchema({
485
- actions: {
486
- test: {
487
- flow: {
488
- kind: "seq",
489
- steps: [
490
- { kind: "patch", op: "set", path: "a", value: { kind: "lit", value: 1 } },
491
- { kind: "patch", op: "set", path: "b", value: { kind: "lit", value: 2 } },
492
- ],
493
- },
494
- },
495
- },
496
- });
497
- const result = validate(schema);
498
- expect(result.valid).toBe(true);
499
- });
500
- it("should validate if flow", () => {
501
- const schema = createValidSchema({
502
- actions: {
503
- test: {
504
- flow: {
505
- kind: "if",
506
- cond: { kind: "get", path: "flag" },
507
- then: { kind: "patch", op: "set", path: "result", value: { kind: "lit", value: "yes" } },
508
- else: { kind: "patch", op: "set", path: "result", value: { kind: "lit", value: "no" } },
509
- },
510
- },
511
- },
512
- });
513
- const result = validate(schema);
514
- expect(result.valid).toBe(true);
515
- });
516
- it("should validate effect flow", () => {
517
- const schema = createValidSchema({
518
- actions: {
519
- test: {
520
- flow: {
521
- kind: "effect",
522
- type: "http",
523
- params: {
524
- url: { kind: "lit", value: "https://api.example.com" },
525
- },
526
- },
527
- },
528
- },
529
- });
530
- const result = validate(schema);
531
- expect(result.valid).toBe(true);
532
- });
533
- it("should validate halt flow", () => {
534
- const schema = createValidSchema({
535
- actions: {
536
- test: {
537
- flow: { kind: "halt", reason: "stopped" },
538
- },
539
- },
540
- });
541
- const result = validate(schema);
542
- expect(result.valid).toBe(true);
543
- });
544
- it("should validate fail flow", () => {
545
- const schema = createValidSchema({
546
- actions: {
547
- test: {
548
- flow: {
549
- kind: "fail",
550
- code: "ERROR",
551
- message: { kind: "lit", value: "Something went wrong" },
552
- },
553
- },
554
- },
555
- });
556
- const result = validate(schema);
557
- expect(result.valid).toBe(true);
558
- });
559
- });
560
- describe("Expression Validation", () => {
561
- it("should validate nested expressions", () => {
562
- const schema = createValidSchema({
563
- computed: {
564
- fields: {
565
- "computed.complex": {
566
- expr: {
567
- kind: "if",
568
- cond: {
569
- kind: "and",
570
- args: [
571
- { kind: "gt", left: { kind: "get", path: "x" }, right: { kind: "lit", value: 0 } },
572
- { kind: "lt", left: { kind: "get", path: "x" }, right: { kind: "lit", value: 100 } },
573
- ],
574
- },
575
- then: {
576
- kind: "mul",
577
- left: { kind: "get", path: "x" },
578
- right: { kind: "lit", value: 2 },
579
- },
580
- else: { kind: "lit", value: 0 },
581
- },
582
- deps: ["x"],
583
- },
584
- },
585
- },
586
- });
587
- const result = validate(schema);
588
- expect(result.valid).toBe(true);
589
- });
590
- it("should validate collection expressions", () => {
591
- const schema = createValidSchema({
592
- computed: {
593
- fields: {
594
- "computed.filtered": {
595
- expr: {
596
- kind: "filter",
597
- array: { kind: "get", path: "items" },
598
- predicate: { kind: "get", path: "$item.active" },
599
- },
600
- deps: ["items"],
601
- },
602
- },
603
- },
604
- });
605
- const result = validate(schema);
606
- expect(result.valid).toBe(true);
607
- });
608
- });
609
- describe("Multiple Errors", () => {
610
- it("should report multiple validation errors", () => {
611
- const schema = createValidSchema({
612
- computed: {
613
- fields: {
614
- "computed.a": {
615
- expr: { kind: "get", path: "computed.b" },
616
- deps: ["computed.b"],
617
- },
618
- "computed.b": {
619
- expr: { kind: "get", path: "computed.a" },
620
- deps: ["computed.a"],
621
- },
622
- },
623
- },
624
- actions: {
625
- test: {
626
- flow: { kind: "call", flow: "nonexistent" },
627
- },
628
- },
629
- });
630
- const result = validate(schema);
631
- expect(result.valid).toBe(false);
632
- // Should have both cycle error and unknown flow error
633
- expect(result.errors.some((e) => e.code === "V-002")).toBe(true);
634
- expect(result.errors.some((e) => e.code === "V-004")).toBe(true);
635
- });
636
- });
637
- });
638
- //# sourceMappingURL=validate.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate.test.js","sourceRoot":"","sources":["../../src/core/validate.test.ts"],"names":[],"mappings":"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"}