@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,151 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * ErrorValue - Errors are values in Snapshot, not exceptions.
4
+ */
5
+ export declare const ErrorValue: z.ZodObject<{
6
+ code: z.ZodString;
7
+ message: z.ZodString;
8
+ source: z.ZodObject<{
9
+ actionId: z.ZodString;
10
+ nodePath: z.ZodString;
11
+ }, z.core.$strip>;
12
+ timestamp: z.ZodNumber;
13
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
14
+ }, z.core.$strip>;
15
+ export type ErrorValue = z.infer<typeof ErrorValue>;
16
+ /**
17
+ * FlowPosition - Position in the flow where effect was encountered
18
+ */
19
+ export declare const FlowPosition: z.ZodObject<{
20
+ nodePath: z.ZodString;
21
+ snapshotVersion: z.ZodNumber;
22
+ }, z.core.$strip>;
23
+ export type FlowPosition = z.infer<typeof FlowPosition>;
24
+ /**
25
+ * Requirement - A recorded effect declaration waiting for Host fulfillment
26
+ */
27
+ export declare const Requirement: z.ZodObject<{
28
+ id: z.ZodString;
29
+ type: z.ZodString;
30
+ params: z.ZodRecord<z.ZodString, z.ZodUnknown>;
31
+ actionId: z.ZodString;
32
+ flowPosition: z.ZodObject<{
33
+ nodePath: z.ZodString;
34
+ snapshotVersion: z.ZodNumber;
35
+ }, z.core.$strip>;
36
+ createdAt: z.ZodNumber;
37
+ }, z.core.$strip>;
38
+ export type Requirement = z.infer<typeof Requirement>;
39
+ /**
40
+ * SystemState - Internal system state
41
+ */
42
+ export declare const SystemState: z.ZodObject<{
43
+ status: z.ZodEnum<{
44
+ error: "error";
45
+ idle: "idle";
46
+ computing: "computing";
47
+ pending: "pending";
48
+ }>;
49
+ lastError: z.ZodNullable<z.ZodObject<{
50
+ code: z.ZodString;
51
+ message: z.ZodString;
52
+ source: z.ZodObject<{
53
+ actionId: z.ZodString;
54
+ nodePath: z.ZodString;
55
+ }, z.core.$strip>;
56
+ timestamp: z.ZodNumber;
57
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
58
+ }, z.core.$strip>>;
59
+ errors: z.ZodArray<z.ZodObject<{
60
+ code: z.ZodString;
61
+ message: z.ZodString;
62
+ source: z.ZodObject<{
63
+ actionId: z.ZodString;
64
+ nodePath: z.ZodString;
65
+ }, z.core.$strip>;
66
+ timestamp: z.ZodNumber;
67
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
68
+ }, z.core.$strip>>;
69
+ pendingRequirements: z.ZodArray<z.ZodObject<{
70
+ id: z.ZodString;
71
+ type: z.ZodString;
72
+ params: z.ZodRecord<z.ZodString, z.ZodUnknown>;
73
+ actionId: z.ZodString;
74
+ flowPosition: z.ZodObject<{
75
+ nodePath: z.ZodString;
76
+ snapshotVersion: z.ZodNumber;
77
+ }, z.core.$strip>;
78
+ createdAt: z.ZodNumber;
79
+ }, z.core.$strip>>;
80
+ currentAction: z.ZodNullable<z.ZodString>;
81
+ }, z.core.$strip>;
82
+ export type SystemState = z.infer<typeof SystemState>;
83
+ /**
84
+ * SnapshotMeta - Snapshot metadata
85
+ */
86
+ export declare const SnapshotMeta: z.ZodObject<{
87
+ version: z.ZodNumber;
88
+ timestamp: z.ZodNumber;
89
+ schemaHash: z.ZodString;
90
+ }, z.core.$strip>;
91
+ export type SnapshotMeta = z.infer<typeof SnapshotMeta>;
92
+ /**
93
+ * Snapshot - Immutable, point-in-time representation of world state.
94
+ * This is the ONLY medium of communication between Core and Host.
95
+ */
96
+ export declare const Snapshot: z.ZodObject<{
97
+ data: z.ZodUnknown;
98
+ computed: z.ZodRecord<z.ZodString, z.ZodUnknown>;
99
+ system: z.ZodObject<{
100
+ status: z.ZodEnum<{
101
+ error: "error";
102
+ idle: "idle";
103
+ computing: "computing";
104
+ pending: "pending";
105
+ }>;
106
+ lastError: z.ZodNullable<z.ZodObject<{
107
+ code: z.ZodString;
108
+ message: z.ZodString;
109
+ source: z.ZodObject<{
110
+ actionId: z.ZodString;
111
+ nodePath: z.ZodString;
112
+ }, z.core.$strip>;
113
+ timestamp: z.ZodNumber;
114
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
115
+ }, z.core.$strip>>;
116
+ errors: z.ZodArray<z.ZodObject<{
117
+ code: z.ZodString;
118
+ message: z.ZodString;
119
+ source: z.ZodObject<{
120
+ actionId: z.ZodString;
121
+ nodePath: z.ZodString;
122
+ }, z.core.$strip>;
123
+ timestamp: z.ZodNumber;
124
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
125
+ }, z.core.$strip>>;
126
+ pendingRequirements: z.ZodArray<z.ZodObject<{
127
+ id: z.ZodString;
128
+ type: z.ZodString;
129
+ params: z.ZodRecord<z.ZodString, z.ZodUnknown>;
130
+ actionId: z.ZodString;
131
+ flowPosition: z.ZodObject<{
132
+ nodePath: z.ZodString;
133
+ snapshotVersion: z.ZodNumber;
134
+ }, z.core.$strip>;
135
+ createdAt: z.ZodNumber;
136
+ }, z.core.$strip>>;
137
+ currentAction: z.ZodNullable<z.ZodString>;
138
+ }, z.core.$strip>;
139
+ input: z.ZodUnknown;
140
+ meta: z.ZodObject<{
141
+ version: z.ZodNumber;
142
+ timestamp: z.ZodNumber;
143
+ schemaHash: z.ZodString;
144
+ }, z.core.$strip>;
145
+ }, z.core.$strip>;
146
+ export type Snapshot = z.infer<typeof Snapshot>;
147
+ /**
148
+ * Create initial system state
149
+ */
150
+ export declare function createInitialSystemState(): SystemState;
151
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/schema/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;iBA4BrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,YAAY;;;iBAUvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;iBA+BtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyBtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,YAAY;;;;iBAiBvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyBnB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,WAAW,CAQtD"}
@@ -0,0 +1,156 @@
1
+ import { z } from "zod";
2
+ import { SemanticPath } from "./common.js";
3
+ /**
4
+ * ErrorValue - Errors are values in Snapshot, not exceptions.
5
+ */
6
+ export const ErrorValue = z.object({
7
+ /**
8
+ * Error code
9
+ */
10
+ code: z.string(),
11
+ /**
12
+ * Human-readable message
13
+ */
14
+ message: z.string(),
15
+ /**
16
+ * Where the error occurred
17
+ */
18
+ source: z.object({
19
+ actionId: z.string(),
20
+ nodePath: z.string(),
21
+ }),
22
+ /**
23
+ * When the error occurred
24
+ */
25
+ timestamp: z.number(),
26
+ /**
27
+ * Additional context
28
+ */
29
+ context: z.record(z.string(), z.unknown()).optional(),
30
+ });
31
+ /**
32
+ * FlowPosition - Position in the flow where effect was encountered
33
+ */
34
+ export const FlowPosition = z.object({
35
+ /**
36
+ * Path to the effect node in the flow
37
+ */
38
+ nodePath: z.string(),
39
+ /**
40
+ * Snapshot version at time of effect
41
+ */
42
+ snapshotVersion: z.number(),
43
+ });
44
+ /**
45
+ * Requirement - A recorded effect declaration waiting for Host fulfillment
46
+ */
47
+ export const Requirement = z.object({
48
+ /**
49
+ * Unique identifier for this requirement.
50
+ * Should be deterministic: hash(schemaHash, intentId, actionId, flowNodePath)
51
+ */
52
+ id: z.string(),
53
+ /**
54
+ * Effect type that generated this requirement
55
+ */
56
+ type: z.string(),
57
+ /**
58
+ * Resolved parameters
59
+ */
60
+ params: z.record(z.string(), z.unknown()),
61
+ /**
62
+ * The action that was being computed
63
+ */
64
+ actionId: z.string(),
65
+ /**
66
+ * Position in the flow where effect was encountered
67
+ */
68
+ flowPosition: FlowPosition,
69
+ /**
70
+ * Timestamp when requirement was created
71
+ */
72
+ createdAt: z.number(),
73
+ });
74
+ /**
75
+ * SystemState - Internal system state
76
+ */
77
+ export const SystemState = z.object({
78
+ /**
79
+ * Current status
80
+ */
81
+ status: z.enum(["idle", "computing", "pending", "error"]),
82
+ /**
83
+ * Last error (null if none)
84
+ */
85
+ lastError: ErrorValue.nullable(),
86
+ /**
87
+ * Error history
88
+ */
89
+ errors: z.array(ErrorValue),
90
+ /**
91
+ * Pending requirements waiting for Host
92
+ */
93
+ pendingRequirements: z.array(Requirement),
94
+ /**
95
+ * Current action being processed (if any)
96
+ */
97
+ currentAction: z.string().nullable(),
98
+ });
99
+ /**
100
+ * SnapshotMeta - Snapshot metadata
101
+ */
102
+ export const SnapshotMeta = z.object({
103
+ /**
104
+ * Monotonically increasing version.
105
+ * Incremented by Core on each apply().
106
+ */
107
+ version: z.number(),
108
+ /**
109
+ * Timestamp of last modification.
110
+ * Set by Core on each apply().
111
+ */
112
+ timestamp: z.number(),
113
+ /**
114
+ * Hash of the schema this snapshot conforms to.
115
+ */
116
+ schemaHash: z.string(),
117
+ });
118
+ /**
119
+ * Snapshot - Immutable, point-in-time representation of world state.
120
+ * This is the ONLY medium of communication between Core and Host.
121
+ */
122
+ export const Snapshot = z.object({
123
+ /**
124
+ * Domain data (matches StateSpec)
125
+ */
126
+ data: z.unknown(),
127
+ /**
128
+ * Computed values (matches ComputedSpec)
129
+ */
130
+ computed: z.record(SemanticPath, z.unknown()),
131
+ /**
132
+ * System state
133
+ */
134
+ system: SystemState,
135
+ /**
136
+ * Input for current action (if any)
137
+ */
138
+ input: z.unknown(),
139
+ /**
140
+ * Snapshot metadata
141
+ */
142
+ meta: SnapshotMeta,
143
+ });
144
+ /**
145
+ * Create initial system state
146
+ */
147
+ export function createInitialSystemState() {
148
+ return {
149
+ status: "idle",
150
+ lastError: null,
151
+ errors: [],
152
+ pendingRequirements: [],
153
+ currentAction: null,
154
+ };
155
+ }
156
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/schema/snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * TraceNodeKind - Types of trace nodes
4
+ */
5
+ export declare const TraceNodeKind: z.ZodEnum<{
6
+ error: "error";
7
+ computed: "computed";
8
+ expr: "expr";
9
+ patch: "patch";
10
+ effect: "effect";
11
+ call: "call";
12
+ flow: "flow";
13
+ halt: "halt";
14
+ branch: "branch";
15
+ }>;
16
+ export type TraceNodeKind = z.infer<typeof TraceNodeKind>;
17
+ /**
18
+ * TraceNode - A single node in the execution trace.
19
+ * Enables explainability - every computation produces a trace.
20
+ */
21
+ export type TraceNode = {
22
+ /**
23
+ * Unique identifier for this trace node
24
+ */
25
+ id: string;
26
+ /**
27
+ * Type of trace node
28
+ */
29
+ kind: TraceNodeKind;
30
+ /**
31
+ * Path in the schema that produced this trace
32
+ */
33
+ sourcePath: string;
34
+ /**
35
+ * Input values at this point
36
+ */
37
+ inputs: Record<string, unknown>;
38
+ /**
39
+ * Output value produced
40
+ */
41
+ output: unknown;
42
+ /**
43
+ * Child trace nodes
44
+ */
45
+ children: TraceNode[];
46
+ /**
47
+ * Timestamp
48
+ */
49
+ timestamp: number;
50
+ };
51
+ export declare const TraceNode: z.ZodType<TraceNode>;
52
+ /**
53
+ * TraceTermination - How the computation ended
54
+ */
55
+ export declare const TraceTermination: z.ZodEnum<{
56
+ error: "error";
57
+ effect: "effect";
58
+ halt: "halt";
59
+ complete: "complete";
60
+ }>;
61
+ export type TraceTermination = z.infer<typeof TraceTermination>;
62
+ /**
63
+ * TraceGraph - Complete trace of a computation
64
+ */
65
+ export declare const TraceGraph: z.ZodObject<{
66
+ root: z.ZodType<TraceNode, unknown, z.core.$ZodTypeInternals<TraceNode, unknown>>;
67
+ nodes: z.ZodRecord<z.ZodString, z.ZodType<TraceNode, unknown, z.core.$ZodTypeInternals<TraceNode, unknown>>>;
68
+ intent: z.ZodObject<{
69
+ type: z.ZodString;
70
+ input: z.ZodUnknown;
71
+ }, z.core.$strip>;
72
+ baseVersion: z.ZodNumber;
73
+ resultVersion: z.ZodNumber;
74
+ duration: z.ZodNumber;
75
+ terminatedBy: z.ZodEnum<{
76
+ error: "error";
77
+ effect: "effect";
78
+ halt: "halt";
79
+ complete: "complete";
80
+ }>;
81
+ }, z.core.$strip>;
82
+ export type TraceGraph = z.infer<typeof TraceGraph>;
83
+ /**
84
+ * Create a trace node
85
+ */
86
+ export declare function createTraceNode(kind: TraceNodeKind, sourcePath: string, inputs: Record<string, unknown>, output: unknown, children?: TraceNode[]): TraceNode;
87
+ //# sourceMappingURL=trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/schema/trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;EAUxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,aAAa,CAAC;IAEpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEhC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,QAAQ,EAAE,SAAS,EAAE,CAAC;IAEtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAU1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;EAAkD,CAAC;AAChF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;iBAsCrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,OAAO,EACf,QAAQ,GAAE,SAAS,EAAO,GACzB,SAAS,CAUX"}
@@ -0,0 +1,79 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * TraceNodeKind - Types of trace nodes
4
+ */
5
+ export const TraceNodeKind = z.enum([
6
+ "expr", // Expression evaluation
7
+ "computed", // Computed field evaluation
8
+ "flow", // Flow execution
9
+ "patch", // State mutation
10
+ "effect", // Effect declaration
11
+ "branch", // Conditional branch taken
12
+ "call", // Flow call
13
+ "halt", // Normal termination
14
+ "error", // Error occurred
15
+ ]);
16
+ export const TraceNode = z.lazy(() => z.object({
17
+ id: z.string(),
18
+ kind: TraceNodeKind,
19
+ sourcePath: z.string(),
20
+ inputs: z.record(z.string(), z.unknown()),
21
+ output: z.unknown(),
22
+ children: z.array(TraceNode),
23
+ timestamp: z.number(),
24
+ }));
25
+ /**
26
+ * TraceTermination - How the computation ended
27
+ */
28
+ export const TraceTermination = z.enum(["complete", "effect", "halt", "error"]);
29
+ /**
30
+ * TraceGraph - Complete trace of a computation
31
+ */
32
+ export const TraceGraph = z.object({
33
+ /**
34
+ * Root trace node
35
+ */
36
+ root: TraceNode,
37
+ /**
38
+ * All nodes indexed by ID for quick lookup
39
+ */
40
+ nodes: z.record(z.string(), TraceNode),
41
+ /**
42
+ * The intent that triggered this computation
43
+ */
44
+ intent: z.object({
45
+ type: z.string(),
46
+ input: z.unknown(),
47
+ }),
48
+ /**
49
+ * Snapshot version at start
50
+ */
51
+ baseVersion: z.number(),
52
+ /**
53
+ * Snapshot version at end
54
+ */
55
+ resultVersion: z.number(),
56
+ /**
57
+ * Total computation time (ms)
58
+ */
59
+ duration: z.number(),
60
+ /**
61
+ * Termination reason
62
+ */
63
+ terminatedBy: TraceTermination,
64
+ });
65
+ /**
66
+ * Create a trace node
67
+ */
68
+ export function createTraceNode(kind, sourcePath, inputs, output, children = []) {
69
+ return {
70
+ id: `trace-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`,
71
+ kind,
72
+ sourcePath,
73
+ inputs,
74
+ output,
75
+ children,
76
+ timestamp: Date.now(),
77
+ };
78
+ }
79
+ //# sourceMappingURL=trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/schema/trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC;IAClC,MAAM,EAAM,wBAAwB;IACpC,UAAU,EAAE,4BAA4B;IACxC,MAAM,EAAM,iBAAiB;IAC7B,OAAO,EAAK,iBAAiB;IAC7B,QAAQ,EAAI,qBAAqB;IACjC,QAAQ,EAAI,2BAA2B;IACvC,MAAM,EAAM,YAAY;IACxB,MAAM,EAAM,qBAAqB;IACjC,OAAO,EAAK,iBAAiB;CAC9B,CAAC,CAAC;AA4CH,MAAM,CAAC,MAAM,SAAS,GAAyB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CACzD,CAAC,CAAC,MAAM,CAAC;IACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,aAAa;IACnB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CACH,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAGhF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC;;OAEG;IACH,IAAI,EAAE,SAAS;IAEf;;OAEG;IACH,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC;IAEtC;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;KACnB,CAAC;IAEF;;OAEG;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IAEvB;;OAEG;IACH,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IAEzB;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IAEpB;;OAEG;IACH,YAAY,EAAE,gBAAgB;CAC/B,CAAC,CAAC;AAGH;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAmB,EACnB,UAAkB,EAClB,MAA+B,EAC/B,MAAe,EACf,WAAwB,EAAE;IAE1B,OAAO;QACL,EAAE,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QACnE,IAAI;QACJ,UAAU;QACV,MAAM;QACN,MAAM;QACN,QAAQ;QACR,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Canonical form utilities for deterministic hashing
3
+ *
4
+ * Algorithm:
5
+ * 1. Sort all object keys alphabetically (recursive)
6
+ * 2. Remove all keys with undefined value
7
+ * 3. Preserve keys with null value
8
+ * 4. Serialize using JSON with no whitespace
9
+ */
10
+ /**
11
+ * Recursively sort object keys alphabetically
12
+ */
13
+ export declare function sortKeys(obj: unknown): unknown;
14
+ /**
15
+ * Convert object to canonical JSON string
16
+ * - Keys are sorted alphabetically
17
+ * - Undefined values are removed
18
+ * - No whitespace
19
+ */
20
+ export declare function toCanonical(obj: unknown): string;
21
+ /**
22
+ * Parse canonical JSON string
23
+ */
24
+ export declare function fromCanonical<T>(canonical: string): T;
25
+ /**
26
+ * Check if two objects are equal in canonical form
27
+ */
28
+ export declare function canonicalEqual(a: unknown, b: unknown): boolean;
29
+ //# sourceMappingURL=canonical.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../src/utils/canonical.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAyB9C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAGhD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,CAErD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAE9D"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Canonical form utilities for deterministic hashing
3
+ *
4
+ * Algorithm:
5
+ * 1. Sort all object keys alphabetically (recursive)
6
+ * 2. Remove all keys with undefined value
7
+ * 3. Preserve keys with null value
8
+ * 4. Serialize using JSON with no whitespace
9
+ */
10
+ /**
11
+ * Recursively sort object keys alphabetically
12
+ */
13
+ export function sortKeys(obj) {
14
+ if (obj === null || obj === undefined) {
15
+ return obj;
16
+ }
17
+ if (Array.isArray(obj)) {
18
+ return obj.map(sortKeys);
19
+ }
20
+ if (typeof obj === "object") {
21
+ const sorted = {};
22
+ const keys = Object.keys(obj).sort();
23
+ for (const key of keys) {
24
+ const value = obj[key];
25
+ // Remove undefined values
26
+ if (value !== undefined) {
27
+ sorted[key] = sortKeys(value);
28
+ }
29
+ }
30
+ return sorted;
31
+ }
32
+ return obj;
33
+ }
34
+ /**
35
+ * Convert object to canonical JSON string
36
+ * - Keys are sorted alphabetically
37
+ * - Undefined values are removed
38
+ * - No whitespace
39
+ */
40
+ export function toCanonical(obj) {
41
+ const sorted = sortKeys(obj);
42
+ return JSON.stringify(sorted);
43
+ }
44
+ /**
45
+ * Parse canonical JSON string
46
+ */
47
+ export function fromCanonical(canonical) {
48
+ return JSON.parse(canonical);
49
+ }
50
+ /**
51
+ * Check if two objects are equal in canonical form
52
+ */
53
+ export function canonicalEqual(a, b) {
54
+ return toCanonical(a) === toCanonical(b);
55
+ }
56
+ //# sourceMappingURL=canonical.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../src/utils/canonical.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAY;IACnC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAA8B,CAAC,CAAC,IAAI,EAAE,CAAC;QAEhE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,GAAI,GAA+B,CAAC,GAAG,CAAC,CAAC;YACpD,0BAA0B;YAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAI,SAAiB;IAChD,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAM,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,CAAU,EAAE,CAAU;IACnD,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=canonical.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical.test.d.ts","sourceRoot":"","sources":["../../src/utils/canonical.test.ts"],"names":[],"mappings":""}