@manifesto-ai/core 0.3.0 → 1.0.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.
Files changed (259) hide show
  1. package/README.md +129 -499
  2. package/dist/core/apply.d.ts +16 -0
  3. package/dist/core/apply.d.ts.map +1 -0
  4. package/dist/core/apply.js +52 -0
  5. package/dist/core/apply.js.map +1 -0
  6. package/dist/core/compute.d.ts +17 -0
  7. package/dist/core/compute.d.ts.map +1 -0
  8. package/dist/core/compute.js +197 -0
  9. package/dist/core/compute.js.map +1 -0
  10. package/dist/core/compute.test.d.ts +2 -0
  11. package/dist/core/compute.test.d.ts.map +1 -0
  12. package/dist/core/compute.test.js +400 -0
  13. package/dist/core/compute.test.js.map +1 -0
  14. package/dist/core/explain.d.ts +14 -0
  15. package/dist/core/explain.d.ts.map +1 -0
  16. package/dist/core/explain.js +74 -0
  17. package/dist/core/explain.js.map +1 -0
  18. package/dist/core/index.d.ts +5 -0
  19. package/dist/core/index.d.ts.map +1 -0
  20. package/dist/core/index.js +5 -0
  21. package/dist/core/index.js.map +1 -0
  22. package/dist/core/validate.d.ts +15 -0
  23. package/dist/core/validate.d.ts.map +1 -0
  24. package/dist/core/validate.js +143 -0
  25. package/dist/core/validate.js.map +1 -0
  26. package/dist/core/validate.test.d.ts +2 -0
  27. package/dist/core/validate.test.d.ts.map +1 -0
  28. package/dist/core/validate.test.js +450 -0
  29. package/dist/core/validate.test.js.map +1 -0
  30. package/dist/errors.d.ts +30 -0
  31. package/dist/errors.d.ts.map +1 -0
  32. package/dist/errors.js +51 -0
  33. package/dist/errors.js.map +1 -0
  34. package/dist/evaluator/computed.d.ts +14 -0
  35. package/dist/evaluator/computed.d.ts.map +1 -0
  36. package/dist/evaluator/computed.js +57 -0
  37. package/dist/evaluator/computed.js.map +1 -0
  38. package/dist/evaluator/context.d.ts +46 -0
  39. package/dist/evaluator/context.d.ts.map +1 -0
  40. package/dist/evaluator/context.js +35 -0
  41. package/dist/evaluator/context.js.map +1 -0
  42. package/dist/evaluator/dag.d.ts +30 -0
  43. package/dist/evaluator/dag.d.ts.map +1 -0
  44. package/dist/evaluator/dag.js +121 -0
  45. package/dist/evaluator/dag.js.map +1 -0
  46. package/dist/evaluator/expr.d.ts +11 -0
  47. package/dist/evaluator/expr.d.ts.map +1 -0
  48. package/dist/evaluator/expr.js +498 -0
  49. package/dist/evaluator/expr.js.map +1 -0
  50. package/dist/evaluator/expr.test.d.ts +2 -0
  51. package/dist/evaluator/expr.test.d.ts.map +1 -0
  52. package/dist/evaluator/expr.test.js +426 -0
  53. package/dist/evaluator/expr.test.js.map +1 -0
  54. package/dist/evaluator/flow.d.ts +35 -0
  55. package/dist/evaluator/flow.d.ts.map +1 -0
  56. package/dist/evaluator/flow.js +234 -0
  57. package/dist/evaluator/flow.js.map +1 -0
  58. package/dist/evaluator/flow.test.d.ts +2 -0
  59. package/dist/evaluator/flow.test.d.ts.map +1 -0
  60. package/dist/evaluator/flow.test.js +446 -0
  61. package/dist/evaluator/flow.test.js.map +1 -0
  62. package/dist/evaluator/index.d.ts +6 -0
  63. package/dist/evaluator/index.d.ts.map +1 -0
  64. package/dist/evaluator/index.js +6 -0
  65. package/dist/evaluator/index.js.map +1 -0
  66. package/dist/factories.d.ts +20 -0
  67. package/dist/factories.d.ts.map +1 -0
  68. package/dist/factories.js +43 -0
  69. package/dist/factories.js.map +1 -0
  70. package/dist/index.d.ts +46 -11
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +30 -45
  73. package/dist/index.js.map +1 -1
  74. package/dist/index.test.d.ts +2 -0
  75. package/dist/index.test.d.ts.map +1 -0
  76. package/dist/index.test.js +13 -0
  77. package/dist/index.test.js.map +1 -0
  78. package/dist/schema/action.d.ts +14 -0
  79. package/dist/schema/action.d.ts.map +1 -0
  80. package/dist/schema/action.js +30 -0
  81. package/dist/schema/action.js.map +1 -0
  82. package/dist/schema/common.d.ts +37 -0
  83. package/dist/schema/common.d.ts.map +1 -0
  84. package/dist/schema/common.js +20 -0
  85. package/dist/schema/common.js.map +1 -0
  86. package/dist/schema/computed.d.ts +23 -0
  87. package/dist/schema/computed.d.ts.map +1 -0
  88. package/dist/schema/computed.js +34 -0
  89. package/dist/schema/computed.js.map +1 -0
  90. package/dist/schema/domain.d.ts +46 -0
  91. package/dist/schema/domain.d.ts.map +1 -0
  92. package/dist/schema/domain.js +54 -0
  93. package/dist/schema/domain.js.map +1 -0
  94. package/dist/schema/expr.d.ts +260 -0
  95. package/dist/schema/expr.d.ts.map +1 -0
  96. package/dist/schema/expr.js +247 -0
  97. package/dist/schema/expr.js.map +1 -0
  98. package/dist/schema/field.d.ts +48 -0
  99. package/dist/schema/field.d.ts.map +1 -0
  100. package/dist/schema/field.js +31 -0
  101. package/dist/schema/field.js.map +1 -0
  102. package/dist/schema/flow.d.ts +103 -0
  103. package/dist/schema/flow.d.ts.map +1 -0
  104. package/dist/schema/flow.js +82 -0
  105. package/dist/schema/flow.js.map +1 -0
  106. package/dist/schema/index.d.ts +11 -2
  107. package/dist/schema/index.d.ts.map +1 -1
  108. package/dist/schema/index.js +22 -2
  109. package/dist/schema/index.js.map +1 -1
  110. package/dist/schema/patch.d.ts +59 -0
  111. package/dist/schema/patch.d.ts.map +1 -0
  112. package/dist/schema/patch.js +60 -0
  113. package/dist/schema/patch.js.map +1 -0
  114. package/dist/schema/result.d.ts +130 -0
  115. package/dist/schema/result.d.ts.map +1 -0
  116. package/dist/schema/result.js +90 -0
  117. package/dist/schema/result.js.map +1 -0
  118. package/dist/schema/snapshot.d.ts +151 -0
  119. package/dist/schema/snapshot.d.ts.map +1 -0
  120. package/dist/schema/snapshot.js +156 -0
  121. package/dist/schema/snapshot.js.map +1 -0
  122. package/dist/schema/trace.d.ts +87 -0
  123. package/dist/schema/trace.d.ts.map +1 -0
  124. package/dist/schema/trace.js +79 -0
  125. package/dist/schema/trace.js.map +1 -0
  126. package/dist/utils/canonical.d.ts +29 -0
  127. package/dist/utils/canonical.d.ts.map +1 -0
  128. package/dist/utils/canonical.js +56 -0
  129. package/dist/utils/canonical.js.map +1 -0
  130. package/dist/utils/canonical.test.d.ts +2 -0
  131. package/dist/utils/canonical.test.d.ts.map +1 -0
  132. package/dist/utils/canonical.test.js +153 -0
  133. package/dist/utils/canonical.test.js.map +1 -0
  134. package/dist/utils/hash.d.ts +20 -0
  135. package/dist/utils/hash.d.ts.map +1 -0
  136. package/dist/utils/hash.js +38 -0
  137. package/dist/utils/hash.js.map +1 -0
  138. package/dist/utils/hash.test.d.ts +2 -0
  139. package/dist/utils/hash.test.d.ts.map +1 -0
  140. package/dist/utils/hash.test.js +146 -0
  141. package/dist/utils/hash.test.js.map +1 -0
  142. package/dist/utils/index.d.ts +4 -0
  143. package/dist/utils/index.d.ts.map +1 -0
  144. package/dist/utils/index.js +4 -0
  145. package/dist/utils/index.js.map +1 -0
  146. package/dist/utils/path.d.ts +40 -0
  147. package/dist/utils/path.d.ts.map +1 -0
  148. package/dist/utils/path.js +132 -0
  149. package/dist/utils/path.js.map +1 -0
  150. package/dist/utils/path.test.d.ts +2 -0
  151. package/dist/utils/path.test.d.ts.map +1 -0
  152. package/dist/utils/path.test.js +191 -0
  153. package/dist/utils/path.test.js.map +1 -0
  154. package/package.json +25 -39
  155. package/LICENSE +0 -21
  156. package/dist/dag/graph.d.ts +0 -62
  157. package/dist/dag/graph.d.ts.map +0 -1
  158. package/dist/dag/graph.js +0 -244
  159. package/dist/dag/graph.js.map +0 -1
  160. package/dist/dag/index.d.ts +0 -4
  161. package/dist/dag/index.d.ts.map +0 -1
  162. package/dist/dag/index.js +0 -4
  163. package/dist/dag/index.js.map +0 -1
  164. package/dist/dag/propagation.d.ts +0 -58
  165. package/dist/dag/propagation.d.ts.map +0 -1
  166. package/dist/dag/propagation.js +0 -224
  167. package/dist/dag/propagation.js.map +0 -1
  168. package/dist/dag/topological.d.ts +0 -33
  169. package/dist/dag/topological.d.ts.map +0 -1
  170. package/dist/dag/topological.js +0 -173
  171. package/dist/dag/topological.js.map +0 -1
  172. package/dist/domain/define.d.ts +0 -82
  173. package/dist/domain/define.d.ts.map +0 -1
  174. package/dist/domain/define.js +0 -105
  175. package/dist/domain/define.js.map +0 -1
  176. package/dist/domain/index.d.ts +0 -4
  177. package/dist/domain/index.d.ts.map +0 -1
  178. package/dist/domain/index.js +0 -4
  179. package/dist/domain/index.js.map +0 -1
  180. package/dist/domain/types.d.ts +0 -203
  181. package/dist/domain/types.d.ts.map +0 -1
  182. package/dist/domain/types.js +0 -2
  183. package/dist/domain/types.js.map +0 -1
  184. package/dist/domain/validate.d.ts +0 -17
  185. package/dist/domain/validate.d.ts.map +0 -1
  186. package/dist/domain/validate.js +0 -204
  187. package/dist/domain/validate.js.map +0 -1
  188. package/dist/effect/index.d.ts +0 -4
  189. package/dist/effect/index.d.ts.map +0 -1
  190. package/dist/effect/index.js +0 -4
  191. package/dist/effect/index.js.map +0 -1
  192. package/dist/effect/result.d.ts +0 -100
  193. package/dist/effect/result.d.ts.map +0 -1
  194. package/dist/effect/result.js +0 -163
  195. package/dist/effect/result.js.map +0 -1
  196. package/dist/effect/runner.d.ts +0 -98
  197. package/dist/effect/runner.d.ts.map +0 -1
  198. package/dist/effect/runner.js +0 -321
  199. package/dist/effect/runner.js.map +0 -1
  200. package/dist/effect/types.d.ts +0 -169
  201. package/dist/effect/types.d.ts.map +0 -1
  202. package/dist/effect/types.js +0 -28
  203. package/dist/effect/types.js.map +0 -1
  204. package/dist/expression/analyzer.d.ts +0 -42
  205. package/dist/expression/analyzer.d.ts.map +0 -1
  206. package/dist/expression/analyzer.js +0 -166
  207. package/dist/expression/analyzer.js.map +0 -1
  208. package/dist/expression/evaluator.d.ts +0 -16
  209. package/dist/expression/evaluator.d.ts.map +0 -1
  210. package/dist/expression/evaluator.js +0 -382
  211. package/dist/expression/evaluator.js.map +0 -1
  212. package/dist/expression/index.d.ts +0 -5
  213. package/dist/expression/index.d.ts.map +0 -1
  214. package/dist/expression/index.js +0 -5
  215. package/dist/expression/index.js.map +0 -1
  216. package/dist/expression/parser.d.ts +0 -37
  217. package/dist/expression/parser.d.ts.map +0 -1
  218. package/dist/expression/parser.js +0 -201
  219. package/dist/expression/parser.js.map +0 -1
  220. package/dist/expression/types.d.ts +0 -123
  221. package/dist/expression/types.d.ts.map +0 -1
  222. package/dist/expression/types.js +0 -10
  223. package/dist/expression/types.js.map +0 -1
  224. package/dist/policy/field-policy.d.ts +0 -63
  225. package/dist/policy/field-policy.d.ts.map +0 -1
  226. package/dist/policy/field-policy.js +0 -138
  227. package/dist/policy/field-policy.js.map +0 -1
  228. package/dist/policy/index.d.ts +0 -3
  229. package/dist/policy/index.d.ts.map +0 -1
  230. package/dist/policy/index.js +0 -3
  231. package/dist/policy/index.js.map +0 -1
  232. package/dist/policy/precondition.d.ts +0 -58
  233. package/dist/policy/precondition.d.ts.map +0 -1
  234. package/dist/policy/precondition.js +0 -115
  235. package/dist/policy/precondition.js.map +0 -1
  236. package/dist/runtime/index.d.ts +0 -4
  237. package/dist/runtime/index.d.ts.map +0 -1
  238. package/dist/runtime/index.js +0 -4
  239. package/dist/runtime/index.js.map +0 -1
  240. package/dist/runtime/runtime.d.ts +0 -94
  241. package/dist/runtime/runtime.d.ts.map +0 -1
  242. package/dist/runtime/runtime.js +0 -294
  243. package/dist/runtime/runtime.js.map +0 -1
  244. package/dist/runtime/snapshot.d.ts +0 -39
  245. package/dist/runtime/snapshot.d.ts.map +0 -1
  246. package/dist/runtime/snapshot.js +0 -264
  247. package/dist/runtime/snapshot.js.map +0 -1
  248. package/dist/runtime/subscription.d.ts +0 -82
  249. package/dist/runtime/subscription.d.ts.map +0 -1
  250. package/dist/runtime/subscription.js +0 -222
  251. package/dist/runtime/subscription.js.map +0 -1
  252. package/dist/schema/integration.d.ts +0 -89
  253. package/dist/schema/integration.d.ts.map +0 -1
  254. package/dist/schema/integration.js +0 -171
  255. package/dist/schema/integration.js.map +0 -1
  256. package/dist/schema/validation.d.ts +0 -51
  257. package/dist/schema/validation.d.ts.map +0 -1
  258. package/dist/schema/validation.js +0 -212
  259. package/dist/schema/validation.js.map +0 -1
@@ -0,0 +1,16 @@
1
+ import type { DomainSchema } from "../schema/domain.js";
2
+ import type { Snapshot } from "../schema/snapshot.js";
3
+ import type { Patch } from "../schema/patch.js";
4
+ /**
5
+ * Apply patches to a snapshot
6
+ *
7
+ * This function:
8
+ * 1. Applies all patches to the data
9
+ * 2. Recomputes all computed values
10
+ * 3. Increments the version number
11
+ * 4. Updates the timestamp
12
+ *
13
+ * Note: Version and timestamp are Core-owned - Host MUST NOT modify these directly.
14
+ */
15
+ export declare function apply(schema: DomainSchema, snapshot: Snapshot, patches: readonly Patch[]): Snapshot;
16
+ //# sourceMappingURL=apply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/core/apply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAKhD;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CACnB,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,SAAS,KAAK,EAAE,GACxB,QAAQ,CAwCV"}
@@ -0,0 +1,52 @@
1
+ import { setByPath, unsetByPath, mergeAtPath } from "../utils/path.js";
2
+ import { evaluateComputed } from "../evaluator/computed.js";
3
+ import { isOk } from "../schema/common.js";
4
+ /**
5
+ * Apply patches to a snapshot
6
+ *
7
+ * This function:
8
+ * 1. Applies all patches to the data
9
+ * 2. Recomputes all computed values
10
+ * 3. Increments the version number
11
+ * 4. Updates the timestamp
12
+ *
13
+ * Note: Version and timestamp are Core-owned - Host MUST NOT modify these directly.
14
+ */
15
+ export function apply(schema, snapshot, patches) {
16
+ // 1. Apply patches to data
17
+ let newData = snapshot.data;
18
+ for (const patch of patches) {
19
+ switch (patch.op) {
20
+ case "set":
21
+ newData = setByPath(newData, patch.path, patch.value);
22
+ break;
23
+ case "unset":
24
+ newData = unsetByPath(newData, patch.path);
25
+ break;
26
+ case "merge":
27
+ newData = mergeAtPath(newData, patch.path, patch.value);
28
+ break;
29
+ }
30
+ }
31
+ // 2. Create intermediate snapshot with new data
32
+ const intermediateSnapshot = {
33
+ ...snapshot,
34
+ data: newData,
35
+ };
36
+ // 3. Recompute all computed values
37
+ const computedResult = evaluateComputed(schema, intermediateSnapshot);
38
+ const computed = isOk(computedResult) ? computedResult.value : snapshot.computed;
39
+ // 4. Return new snapshot with updated metadata
40
+ return {
41
+ data: newData,
42
+ computed,
43
+ system: snapshot.system,
44
+ input: snapshot.input,
45
+ meta: {
46
+ ...snapshot.meta,
47
+ version: snapshot.meta.version + 1,
48
+ timestamp: Date.now(),
49
+ },
50
+ };
51
+ }
52
+ //# sourceMappingURL=apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/core/apply.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,KAAK,CACnB,MAAoB,EACpB,QAAkB,EAClB,OAAyB;IAEzB,2BAA2B;IAC3B,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;IAE5B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,QAAQ,KAAK,CAAC,EAAE,EAAE,CAAC;YACjB,KAAK,KAAK;gBACR,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBACtD,MAAM;YACR,KAAK,OAAO;gBACV,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3C,MAAM;YACR,KAAK,OAAO;gBACV,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBACxD,MAAM;QACV,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,MAAM,oBAAoB,GAAa;QACrC,GAAG,QAAQ;QACX,IAAI,EAAE,OAAO;KACd,CAAC;IAEF,mCAAmC;IACnC,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAEjF,+CAA+C;IAC/C,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ;QACR,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,IAAI,EAAE;YACJ,GAAG,QAAQ,CAAC,IAAI;YAChB,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC;YAClC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { DomainSchema } from "../schema/domain.js";
2
+ import type { Snapshot } from "../schema/snapshot.js";
3
+ import type { Intent } from "../schema/patch.js";
4
+ import type { ComputeResult } from "../schema/result.js";
5
+ /**
6
+ * Compute the result of dispatching an intent
7
+ *
8
+ * This is the ONLY entry point for computation.
9
+ * Each call is independent - there is no suspended context.
10
+ *
11
+ * @param schema - The domain schema
12
+ * @param snapshot - Current snapshot state
13
+ * @param intent - The intent to process
14
+ * @returns ComputeResult with new snapshot, trace, and status
15
+ */
16
+ export declare function compute(schema: DomainSchema, snapshot: Snapshot, intent: Intent): Promise<ComputeResult>;
17
+ //# sourceMappingURL=compute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute.d.ts","sourceRoot":"","sources":["../../src/core/compute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,qBAAqB,CAAC;AASxE;;;;;;;;;;GAUG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CA6HxB"}
@@ -0,0 +1,197 @@
1
+ import { createError } from "../errors.js";
2
+ import { createContext } from "../evaluator/context.js";
3
+ import { evaluateExpr } from "../evaluator/expr.js";
4
+ import { evaluateFlow, createFlowState } from "../evaluator/flow.js";
5
+ import { evaluateComputed } from "../evaluator/computed.js";
6
+ import { isOk, isErr } from "../schema/common.js";
7
+ /**
8
+ * Compute the result of dispatching an intent
9
+ *
10
+ * This is the ONLY entry point for computation.
11
+ * Each call is independent - there is no suspended context.
12
+ *
13
+ * @param schema - The domain schema
14
+ * @param snapshot - Current snapshot state
15
+ * @param intent - The intent to process
16
+ * @returns ComputeResult with new snapshot, trace, and status
17
+ */
18
+ export async function compute(schema, snapshot, intent) {
19
+ const startTime = Date.now();
20
+ // 0. Ensure computed values are up-to-date before availability check
21
+ let currentSnapshot = snapshot;
22
+ const initialComputedResult = evaluateComputed(schema, snapshot);
23
+ if (isOk(initialComputedResult)) {
24
+ currentSnapshot = {
25
+ ...snapshot,
26
+ computed: initialComputedResult.value,
27
+ };
28
+ }
29
+ // 1. Look up the action
30
+ const action = schema.actions[intent.type];
31
+ if (!action) {
32
+ return createErrorResult(currentSnapshot, intent, "UNKNOWN_ACTION", `Unknown action: ${intent.type}`, startTime);
33
+ }
34
+ // 2. Check availability condition
35
+ if (action.available) {
36
+ const ctx = createContext(currentSnapshot, schema, intent.type, "available");
37
+ const availResult = evaluateExpr(action.available, ctx);
38
+ if (isErr(availResult)) {
39
+ return createErrorResult(currentSnapshot, intent, "INTERNAL_ERROR", `Error evaluating availability: ${availResult.error.message}`, startTime);
40
+ }
41
+ const isAvailable = availResult.value !== false && availResult.value !== null && availResult.value !== undefined;
42
+ if (!isAvailable) {
43
+ return createErrorResult(currentSnapshot, intent, "ACTION_UNAVAILABLE", `Action "${intent.type}" is not available`, startTime);
44
+ }
45
+ }
46
+ // 3. Prepare snapshot with input and system state
47
+ const preparedSnapshot = {
48
+ ...currentSnapshot,
49
+ input: intent.input,
50
+ system: {
51
+ ...currentSnapshot.system,
52
+ status: "computing",
53
+ currentAction: intent.type,
54
+ },
55
+ };
56
+ // 4. Create evaluation context and flow state
57
+ const ctx = createContext(preparedSnapshot, schema, intent.type, `actions.${intent.type}.flow`);
58
+ const flowState = createFlowState(preparedSnapshot);
59
+ // 5. Evaluate the flow
60
+ const flowResult = await evaluateFlow(action.flow, ctx, flowState, `actions.${intent.type}.flow`);
61
+ // 6. Get final snapshot from flow state
62
+ let finalSnapshot = flowResult.state.snapshot;
63
+ // 7. Recompute all computed values
64
+ const computedResult = evaluateComputed(schema, finalSnapshot);
65
+ if (isOk(computedResult)) {
66
+ finalSnapshot = {
67
+ ...finalSnapshot,
68
+ computed: computedResult.value,
69
+ };
70
+ }
71
+ // 8. Update system state based on flow result
72
+ const systemStatus = mapFlowStatus(flowResult.state.status);
73
+ const systemState = {
74
+ status: systemStatus === "complete" || systemStatus === "halted" ? "idle" : systemStatus,
75
+ lastError: flowResult.state.error,
76
+ errors: flowResult.state.error
77
+ ? [...finalSnapshot.system.errors, flowResult.state.error]
78
+ : finalSnapshot.system.errors,
79
+ pendingRequirements: [...flowResult.state.requirements],
80
+ currentAction: systemStatus === "pending" ? intent.type : null,
81
+ };
82
+ finalSnapshot = {
83
+ ...finalSnapshot,
84
+ system: systemState,
85
+ meta: {
86
+ ...finalSnapshot.meta,
87
+ version: finalSnapshot.meta.version + 1,
88
+ timestamp: Date.now(),
89
+ },
90
+ };
91
+ // 9. Build trace graph
92
+ const trace = {
93
+ root: flowResult.trace,
94
+ nodes: collectTraceNodes(flowResult.trace),
95
+ intent: { type: intent.type, input: intent.input },
96
+ baseVersion: currentSnapshot.meta.version,
97
+ resultVersion: finalSnapshot.meta.version,
98
+ duration: Date.now() - startTime,
99
+ terminatedBy: mapFlowStatusToTermination(flowResult.state.status),
100
+ };
101
+ return {
102
+ snapshot: finalSnapshot,
103
+ trace,
104
+ status: systemStatus,
105
+ };
106
+ }
107
+ /**
108
+ * Map flow status to compute status
109
+ */
110
+ function mapFlowStatus(status) {
111
+ switch (status) {
112
+ case "running":
113
+ case "complete":
114
+ return "complete";
115
+ case "pending":
116
+ return "pending";
117
+ case "halted":
118
+ return "halted";
119
+ case "error":
120
+ return "error";
121
+ }
122
+ }
123
+ /**
124
+ * Map flow status to trace termination
125
+ */
126
+ function mapFlowStatusToTermination(status) {
127
+ switch (status) {
128
+ case "running":
129
+ case "complete":
130
+ return "complete";
131
+ case "pending":
132
+ return "effect";
133
+ case "halted":
134
+ return "halt";
135
+ case "error":
136
+ return "error";
137
+ }
138
+ }
139
+ /**
140
+ * Collect all trace nodes into a flat map
141
+ */
142
+ function collectTraceNodes(root) {
143
+ const nodes = {};
144
+ function collect(node) {
145
+ nodes[node.id] = node;
146
+ for (const child of node.children) {
147
+ collect(child);
148
+ }
149
+ }
150
+ collect(root);
151
+ return nodes;
152
+ }
153
+ /**
154
+ * Create an error result
155
+ */
156
+ function createErrorResult(snapshot, intent, code, message, startTime) {
157
+ const error = createError(code, message, intent.type, "");
158
+ const errorSnapshot = {
159
+ ...snapshot,
160
+ input: intent.input,
161
+ system: {
162
+ ...snapshot.system,
163
+ status: "error",
164
+ lastError: error,
165
+ errors: [...snapshot.system.errors, error],
166
+ currentAction: null,
167
+ },
168
+ meta: {
169
+ ...snapshot.meta,
170
+ version: snapshot.meta.version + 1,
171
+ timestamp: Date.now(),
172
+ },
173
+ };
174
+ const trace = {
175
+ root: {
176
+ id: `trace-error-${Date.now()}`,
177
+ kind: "error",
178
+ sourcePath: "",
179
+ inputs: {},
180
+ output: error,
181
+ children: [],
182
+ timestamp: Date.now(),
183
+ },
184
+ nodes: {},
185
+ intent: { type: intent.type, input: intent.input },
186
+ baseVersion: snapshot.meta.version,
187
+ resultVersion: errorSnapshot.meta.version,
188
+ duration: Date.now() - startTime,
189
+ terminatedBy: "error",
190
+ };
191
+ return {
192
+ snapshot: errorSnapshot,
193
+ trace,
194
+ status: "error",
195
+ };
196
+ }
197
+ //# sourceMappingURL=compute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute.js","sourceRoot":"","sources":["../../src/core/compute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=compute.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute.test.d.ts","sourceRoot":"","sources":["../../src/core/compute.test.ts"],"names":[],"mappings":""}