@czap/core 0.1.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 (372) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +19 -0
  3. package/dist/addressed-digest.d.ts +15 -0
  4. package/dist/addressed-digest.d.ts.map +1 -0
  5. package/dist/addressed-digest.js +35 -0
  6. package/dist/addressed-digest.js.map +1 -0
  7. package/dist/animation.d.ts +46 -0
  8. package/dist/animation.d.ts.map +1 -0
  9. package/dist/animation.js +70 -0
  10. package/dist/animation.js.map +1 -0
  11. package/dist/assembly.d.ts +25 -0
  12. package/dist/assembly.d.ts.map +1 -0
  13. package/dist/assembly.js +58 -0
  14. package/dist/assembly.js.map +1 -0
  15. package/dist/av-bridge.d.ts +74 -0
  16. package/dist/av-bridge.d.ts.map +1 -0
  17. package/dist/av-bridge.js +107 -0
  18. package/dist/av-bridge.js.map +1 -0
  19. package/dist/av-renderer.d.ts +56 -0
  20. package/dist/av-renderer.d.ts.map +1 -0
  21. package/dist/av-renderer.js +65 -0
  22. package/dist/av-renderer.js.map +1 -0
  23. package/dist/blend.d.ts +61 -0
  24. package/dist/blend.d.ts.map +1 -0
  25. package/dist/blend.js +100 -0
  26. package/dist/blend.js.map +1 -0
  27. package/dist/boundary.d.ts +154 -0
  28. package/dist/boundary.d.ts.map +1 -0
  29. package/dist/boundary.js +269 -0
  30. package/dist/boundary.js.map +1 -0
  31. package/dist/brands.d.ts +63 -0
  32. package/dist/brands.d.ts.map +1 -0
  33. package/dist/brands.js +31 -0
  34. package/dist/brands.js.map +1 -0
  35. package/dist/caps.d.ts +49 -0
  36. package/dist/caps.d.ts.map +1 -0
  37. package/dist/caps.js +73 -0
  38. package/dist/caps.js.map +1 -0
  39. package/dist/capsule.d.ts +77 -0
  40. package/dist/capsule.d.ts.map +1 -0
  41. package/dist/capsule.js +18 -0
  42. package/dist/capsule.js.map +1 -0
  43. package/dist/capsules/boundary-evaluate.d.ts +28 -0
  44. package/dist/capsules/boundary-evaluate.d.ts.map +1 -0
  45. package/dist/capsules/boundary-evaluate.js +117 -0
  46. package/dist/capsules/boundary-evaluate.js.map +1 -0
  47. package/dist/capsules/canonical-cbor.d.ts +13 -0
  48. package/dist/capsules/canonical-cbor.d.ts.map +1 -0
  49. package/dist/capsules/canonical-cbor.js +60 -0
  50. package/dist/capsules/canonical-cbor.js.map +1 -0
  51. package/dist/capsules/token-buffer.d.ts +24 -0
  52. package/dist/capsules/token-buffer.d.ts.map +1 -0
  53. package/dist/capsules/token-buffer.js +53 -0
  54. package/dist/capsules/token-buffer.js.map +1 -0
  55. package/dist/capture.d.ts +40 -0
  56. package/dist/capture.d.ts.map +1 -0
  57. package/dist/capture.js +10 -0
  58. package/dist/capture.js.map +1 -0
  59. package/dist/cbor.d.ts +33 -0
  60. package/dist/cbor.d.ts.map +1 -0
  61. package/dist/cbor.js +179 -0
  62. package/dist/cbor.js.map +1 -0
  63. package/dist/cell.d.ts +53 -0
  64. package/dist/cell.d.ts.map +1 -0
  65. package/dist/cell.js +83 -0
  66. package/dist/cell.js.map +1 -0
  67. package/dist/codec.d.ts +30 -0
  68. package/dist/codec.d.ts.map +1 -0
  69. package/dist/codec.js +25 -0
  70. package/dist/codec.js.map +1 -0
  71. package/dist/component.d.ts +52 -0
  72. package/dist/component.d.ts.map +1 -0
  73. package/dist/component.js +44 -0
  74. package/dist/component.js.map +1 -0
  75. package/dist/composable.d.ts +76 -0
  76. package/dist/composable.d.ts.map +1 -0
  77. package/dist/composable.js +221 -0
  78. package/dist/composable.js.map +1 -0
  79. package/dist/compositor-pool.d.ts +74 -0
  80. package/dist/compositor-pool.d.ts.map +1 -0
  81. package/dist/compositor-pool.js +119 -0
  82. package/dist/compositor-pool.js.map +1 -0
  83. package/dist/compositor.d.ts +90 -0
  84. package/dist/compositor.d.ts.map +1 -0
  85. package/dist/compositor.js +278 -0
  86. package/dist/compositor.js.map +1 -0
  87. package/dist/config.d.ts +72 -0
  88. package/dist/config.d.ts.map +1 -0
  89. package/dist/config.js +97 -0
  90. package/dist/config.js.map +1 -0
  91. package/dist/dag.d.ts +251 -0
  92. package/dist/dag.d.ts.map +1 -0
  93. package/dist/dag.js +450 -0
  94. package/dist/dag.js.map +1 -0
  95. package/dist/defaults.d.ts +45 -0
  96. package/dist/defaults.d.ts.map +1 -0
  97. package/dist/defaults.js +45 -0
  98. package/dist/defaults.js.map +1 -0
  99. package/dist/derived.d.ts +34 -0
  100. package/dist/derived.d.ts.map +1 -0
  101. package/dist/derived.js +101 -0
  102. package/dist/derived.js.map +1 -0
  103. package/dist/diagnostics.d.ts +77 -0
  104. package/dist/diagnostics.d.ts.map +1 -0
  105. package/dist/diagnostics.js +122 -0
  106. package/dist/diagnostics.js.map +1 -0
  107. package/dist/dirty.d.ts +55 -0
  108. package/dist/dirty.d.ts.map +1 -0
  109. package/dist/dirty.js +80 -0
  110. package/dist/dirty.js.map +1 -0
  111. package/dist/easing.d.ts +55 -0
  112. package/dist/easing.d.ts.map +1 -0
  113. package/dist/easing.js +291 -0
  114. package/dist/easing.js.map +1 -0
  115. package/dist/ecs.d.ts +105 -0
  116. package/dist/ecs.d.ts.map +1 -0
  117. package/dist/ecs.js +245 -0
  118. package/dist/ecs.js.map +1 -0
  119. package/dist/fnv.d.ts +14 -0
  120. package/dist/fnv.d.ts.map +1 -0
  121. package/dist/fnv.js +28 -0
  122. package/dist/fnv.js.map +1 -0
  123. package/dist/frame-budget.d.ts +73 -0
  124. package/dist/frame-budget.d.ts.map +1 -0
  125. package/dist/frame-budget.js +114 -0
  126. package/dist/frame-budget.js.map +1 -0
  127. package/dist/gen-frame.d.ts +102 -0
  128. package/dist/gen-frame.d.ts.map +1 -0
  129. package/dist/gen-frame.js +121 -0
  130. package/dist/gen-frame.js.map +1 -0
  131. package/dist/harness/arbitrary-from-schema.d.ts +28 -0
  132. package/dist/harness/arbitrary-from-schema.d.ts.map +1 -0
  133. package/dist/harness/arbitrary-from-schema.js +262 -0
  134. package/dist/harness/arbitrary-from-schema.js.map +1 -0
  135. package/dist/harness/cached-projection.d.ts +19 -0
  136. package/dist/harness/cached-projection.d.ts.map +1 -0
  137. package/dist/harness/cached-projection.js +39 -0
  138. package/dist/harness/cached-projection.js.map +1 -0
  139. package/dist/harness/index.d.ts +16 -0
  140. package/dist/harness/index.d.ts.map +1 -0
  141. package/dist/harness/index.js +15 -0
  142. package/dist/harness/index.js.map +1 -0
  143. package/dist/harness/policy-gate.d.ts +18 -0
  144. package/dist/harness/policy-gate.d.ts.map +1 -0
  145. package/dist/harness/policy-gate.js +46 -0
  146. package/dist/harness/policy-gate.js.map +1 -0
  147. package/dist/harness/pure-transform.d.ts +42 -0
  148. package/dist/harness/pure-transform.d.ts.map +1 -0
  149. package/dist/harness/pure-transform.js +76 -0
  150. package/dist/harness/pure-transform.js.map +1 -0
  151. package/dist/harness/receipted-mutation.d.ts +23 -0
  152. package/dist/harness/receipted-mutation.d.ts.map +1 -0
  153. package/dist/harness/receipted-mutation.js +52 -0
  154. package/dist/harness/receipted-mutation.js.map +1 -0
  155. package/dist/harness/scene-composition.d.ts +19 -0
  156. package/dist/harness/scene-composition.d.ts.map +1 -0
  157. package/dist/harness/scene-composition.js +47 -0
  158. package/dist/harness/scene-composition.js.map +1 -0
  159. package/dist/harness/site-adapter.d.ts +18 -0
  160. package/dist/harness/site-adapter.d.ts.map +1 -0
  161. package/dist/harness/site-adapter.js +38 -0
  162. package/dist/harness/site-adapter.js.map +1 -0
  163. package/dist/harness/state-machine.d.ts +19 -0
  164. package/dist/harness/state-machine.d.ts.map +1 -0
  165. package/dist/harness/state-machine.js +44 -0
  166. package/dist/harness/state-machine.js.map +1 -0
  167. package/dist/hlc.d.ts +99 -0
  168. package/dist/hlc.d.ts.map +1 -0
  169. package/dist/hlc.js +219 -0
  170. package/dist/hlc.js.map +1 -0
  171. package/dist/index.d.ts +104 -0
  172. package/dist/index.d.ts.map +1 -0
  173. package/dist/index.js +137 -0
  174. package/dist/index.js.map +1 -0
  175. package/dist/interpolate.d.ts +14 -0
  176. package/dist/interpolate.d.ts.map +1 -0
  177. package/dist/interpolate.js +31 -0
  178. package/dist/interpolate.js.map +1 -0
  179. package/dist/live-cell.d.ts +46 -0
  180. package/dist/live-cell.d.ts.map +1 -0
  181. package/dist/live-cell.js +154 -0
  182. package/dist/live-cell.js.map +1 -0
  183. package/dist/op.d.ts +58 -0
  184. package/dist/op.d.ts.map +1 -0
  185. package/dist/op.js +171 -0
  186. package/dist/op.js.map +1 -0
  187. package/dist/plan.d.ts +195 -0
  188. package/dist/plan.d.ts.map +1 -0
  189. package/dist/plan.js +211 -0
  190. package/dist/plan.js.map +1 -0
  191. package/dist/protocol.d.ts +33 -0
  192. package/dist/protocol.d.ts.map +1 -0
  193. package/dist/protocol.js +10 -0
  194. package/dist/protocol.js.map +1 -0
  195. package/dist/quantizer-types.d.ts +28 -0
  196. package/dist/quantizer-types.d.ts.map +1 -0
  197. package/dist/quantizer-types.js +9 -0
  198. package/dist/quantizer-types.js.map +1 -0
  199. package/dist/receipt.d.ts +294 -0
  200. package/dist/receipt.d.ts.map +1 -0
  201. package/dist/receipt.js +352 -0
  202. package/dist/receipt.js.map +1 -0
  203. package/dist/runtime-coordinator.d.ts +75 -0
  204. package/dist/runtime-coordinator.d.ts.map +1 -0
  205. package/dist/runtime-coordinator.js +149 -0
  206. package/dist/runtime-coordinator.js.map +1 -0
  207. package/dist/scheduler.d.ts +58 -0
  208. package/dist/scheduler.d.ts.map +1 -0
  209. package/dist/scheduler.js +109 -0
  210. package/dist/scheduler.js.map +1 -0
  211. package/dist/ship-capsule.d.ts +54 -0
  212. package/dist/ship-capsule.d.ts.map +1 -0
  213. package/dist/ship-capsule.js +142 -0
  214. package/dist/ship-capsule.js.map +1 -0
  215. package/dist/ship-manifest.d.ts +45 -0
  216. package/dist/ship-manifest.d.ts.map +1 -0
  217. package/dist/ship-manifest.js +175 -0
  218. package/dist/ship-manifest.js.map +1 -0
  219. package/dist/signal.d.ts +149 -0
  220. package/dist/signal.d.ts.map +1 -0
  221. package/dist/signal.js +277 -0
  222. package/dist/signal.js.map +1 -0
  223. package/dist/speculative.d.ts +67 -0
  224. package/dist/speculative.d.ts.map +1 -0
  225. package/dist/speculative.js +139 -0
  226. package/dist/speculative.js.map +1 -0
  227. package/dist/store.d.ts +39 -0
  228. package/dist/store.d.ts.map +1 -0
  229. package/dist/store.js +42 -0
  230. package/dist/store.js.map +1 -0
  231. package/dist/style.d.ts +119 -0
  232. package/dist/style.d.ts.map +1 -0
  233. package/dist/style.js +168 -0
  234. package/dist/style.js.map +1 -0
  235. package/dist/testing.d.ts +14 -0
  236. package/dist/testing.d.ts.map +1 -0
  237. package/dist/testing.js +14 -0
  238. package/dist/testing.js.map +1 -0
  239. package/dist/theme.d.ts +78 -0
  240. package/dist/theme.d.ts.map +1 -0
  241. package/dist/theme.js +109 -0
  242. package/dist/theme.js.map +1 -0
  243. package/dist/timeline.d.ts +45 -0
  244. package/dist/timeline.d.ts.map +1 -0
  245. package/dist/timeline.js +101 -0
  246. package/dist/timeline.js.map +1 -0
  247. package/dist/token-buffer.d.ts +43 -0
  248. package/dist/token-buffer.d.ts.map +1 -0
  249. package/dist/token-buffer.js +112 -0
  250. package/dist/token-buffer.js.map +1 -0
  251. package/dist/token.d.ts +107 -0
  252. package/dist/token.d.ts.map +1 -0
  253. package/dist/token.js +143 -0
  254. package/dist/token.js.map +1 -0
  255. package/dist/tuple.d.ts +16 -0
  256. package/dist/tuple.d.ts.map +1 -0
  257. package/dist/tuple.js +16 -0
  258. package/dist/tuple.js.map +1 -0
  259. package/dist/type-utils.d.ts +41 -0
  260. package/dist/type-utils.d.ts.map +1 -0
  261. package/dist/type-utils.js +10 -0
  262. package/dist/type-utils.js.map +1 -0
  263. package/dist/typed-ref.d.ts +50 -0
  264. package/dist/typed-ref.d.ts.map +1 -0
  265. package/dist/typed-ref.js +59 -0
  266. package/dist/typed-ref.js.map +1 -0
  267. package/dist/ui-quality.d.ts +50 -0
  268. package/dist/ui-quality.d.ts.map +1 -0
  269. package/dist/ui-quality.js +64 -0
  270. package/dist/ui-quality.js.map +1 -0
  271. package/dist/validation-error.d.ts +25 -0
  272. package/dist/validation-error.d.ts.map +1 -0
  273. package/dist/validation-error.js +32 -0
  274. package/dist/validation-error.js.map +1 -0
  275. package/dist/vector-clock.d.ts +46 -0
  276. package/dist/vector-clock.d.ts.map +1 -0
  277. package/dist/vector-clock.js +91 -0
  278. package/dist/vector-clock.js.map +1 -0
  279. package/dist/video.d.ts +62 -0
  280. package/dist/video.d.ts.map +1 -0
  281. package/dist/video.js +59 -0
  282. package/dist/video.js.map +1 -0
  283. package/dist/wasm-dispatch.d.ts +52 -0
  284. package/dist/wasm-dispatch.d.ts.map +1 -0
  285. package/dist/wasm-dispatch.js +204 -0
  286. package/dist/wasm-dispatch.js.map +1 -0
  287. package/dist/wasm-fallback.d.ts +19 -0
  288. package/dist/wasm-fallback.d.ts.map +1 -0
  289. package/dist/wasm-fallback.js +93 -0
  290. package/dist/wasm-fallback.js.map +1 -0
  291. package/dist/wire.d.ts +49 -0
  292. package/dist/wire.d.ts.map +1 -0
  293. package/dist/wire.js +201 -0
  294. package/dist/wire.js.map +1 -0
  295. package/dist/zap.d.ts +42 -0
  296. package/dist/zap.d.ts.map +1 -0
  297. package/dist/zap.js +172 -0
  298. package/dist/zap.js.map +1 -0
  299. package/package.json +71 -0
  300. package/src/addressed-digest.ts +48 -0
  301. package/src/animation.ts +103 -0
  302. package/src/assembly.ts +76 -0
  303. package/src/av-bridge.ts +161 -0
  304. package/src/av-renderer.ts +118 -0
  305. package/src/blend.ts +135 -0
  306. package/src/boundary.ts +363 -0
  307. package/src/brands.ts +86 -0
  308. package/src/caps.ts +100 -0
  309. package/src/capsule.ts +95 -0
  310. package/src/capsules/boundary-evaluate.ts +128 -0
  311. package/src/capsules/canonical-cbor.ts +60 -0
  312. package/src/capsules/token-buffer.ts +57 -0
  313. package/src/capture.ts +48 -0
  314. package/src/cbor.ts +199 -0
  315. package/src/cell.ts +130 -0
  316. package/src/codec.ts +39 -0
  317. package/src/component.ts +102 -0
  318. package/src/composable.ts +328 -0
  319. package/src/compositor-pool.ts +162 -0
  320. package/src/compositor.ts +387 -0
  321. package/src/config.ts +157 -0
  322. package/src/dag.ts +527 -0
  323. package/src/defaults.ts +60 -0
  324. package/src/derived.ts +164 -0
  325. package/src/diagnostics.ts +186 -0
  326. package/src/dirty.ts +101 -0
  327. package/src/easing.ts +334 -0
  328. package/src/ecs.ts +382 -0
  329. package/src/fnv.ts +31 -0
  330. package/src/frame-budget.ts +149 -0
  331. package/src/gen-frame.ts +229 -0
  332. package/src/harness/arbitrary-from-schema.ts +270 -0
  333. package/src/harness/cached-projection.ts +46 -0
  334. package/src/harness/index.ts +16 -0
  335. package/src/harness/policy-gate.ts +51 -0
  336. package/src/harness/pure-transform.ts +121 -0
  337. package/src/harness/receipted-mutation.ts +59 -0
  338. package/src/harness/scene-composition.ts +54 -0
  339. package/src/harness/site-adapter.ts +43 -0
  340. package/src/harness/state-machine.ts +49 -0
  341. package/src/hlc.ts +238 -0
  342. package/src/index.ts +274 -0
  343. package/src/interpolate.ts +37 -0
  344. package/src/live-cell.ts +199 -0
  345. package/src/op.ts +233 -0
  346. package/src/plan.ts +317 -0
  347. package/src/protocol.ts +49 -0
  348. package/src/quantizer-types.ts +29 -0
  349. package/src/receipt.ts +444 -0
  350. package/src/runtime-coordinator.ts +230 -0
  351. package/src/scheduler.ts +161 -0
  352. package/src/ship-capsule.ts +191 -0
  353. package/src/signal.ts +345 -0
  354. package/src/speculative.ts +186 -0
  355. package/src/store.ts +77 -0
  356. package/src/style.ts +249 -0
  357. package/src/testing.ts +14 -0
  358. package/src/theme.ts +153 -0
  359. package/src/timeline.ts +146 -0
  360. package/src/token-buffer.ts +151 -0
  361. package/src/token.ts +197 -0
  362. package/src/tuple.ts +19 -0
  363. package/src/type-utils.ts +48 -0
  364. package/src/typed-ref.ts +79 -0
  365. package/src/ui-quality.ts +105 -0
  366. package/src/validation-error.ts +34 -0
  367. package/src/vector-clock.ts +111 -0
  368. package/src/video.ts +106 -0
  369. package/src/wasm-dispatch.ts +300 -0
  370. package/src/wasm-fallback.ts +102 -0
  371. package/src/wire.ts +274 -0
  372. package/src/zap.ts +241 -0
package/dist/hlc.js ADDED
@@ -0,0 +1,219 @@
1
+ /**
2
+ * HLC -- Hybrid Logical Clock.
3
+ *
4
+ * Pure functions + Effect-based managed clock.
5
+ *
6
+ * @module
7
+ */
8
+ import { Ref } from 'effect';
9
+ /**
10
+ * Create a new HLC timestamp initialized to zero for the given node.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * const hlc = HLC.create('node-1');
15
+ * // hlc === { wall_ms: 0, counter: 0, node_id: 'node-1' }
16
+ * ```
17
+ */
18
+ const _create = (nodeId) => ({
19
+ wall_ms: 0,
20
+ counter: 0,
21
+ node_id: nodeId,
22
+ });
23
+ /**
24
+ * Compare two HLC timestamps. Returns -1, 0, or 1.
25
+ *
26
+ * Compares wall_ms first, then counter, then node_id lexicographically.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * const a = HLC.create('node-1');
31
+ * const b = HLC.increment(a, 1000);
32
+ * const cmp = HLC.compare(a, b);
33
+ * // cmp === -1 (a is before b)
34
+ * ```
35
+ */
36
+ export const compare = (a, b) => {
37
+ if (a.wall_ms < b.wall_ms)
38
+ return -1;
39
+ if (a.wall_ms > b.wall_ms)
40
+ return 1;
41
+ if (a.counter < b.counter)
42
+ return -1;
43
+ if (a.counter > b.counter)
44
+ return 1;
45
+ if (a.node_id < b.node_id)
46
+ return -1;
47
+ if (a.node_id > b.node_id)
48
+ return 1;
49
+ return 0;
50
+ };
51
+ // 16-bit counter — supports 65535 events per ms before overflow
52
+ const MAX_COUNTER = 0xffff;
53
+ /**
54
+ * Increment an HLC for a local event.
55
+ *
56
+ * Advances wall_ms to max(current, now) and bumps the counter if the wall
57
+ * time didn't advance. Throws on counter overflow (`> 0xFFFF`).
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * const hlc0 = HLC.create('node-1');
62
+ * const hlc1 = HLC.increment(hlc0, Date.now());
63
+ * // hlc1.wall_ms >= hlc0.wall_ms
64
+ * ```
65
+ */
66
+ const _increment = (hlc, now = 0) => {
67
+ const newWallMs = Math.max(hlc.wall_ms, now);
68
+ if (newWallMs === hlc.wall_ms) {
69
+ const next = hlc.counter + 1;
70
+ if (next > MAX_COUNTER)
71
+ throw new Error(`HLC counter overflow: exceeded ${MAX_COUNTER} (>65535 events in 1ms — consider batching or increasing clock resolution)`);
72
+ return { wall_ms: newWallMs, counter: next, node_id: hlc.node_id };
73
+ }
74
+ return { wall_ms: newWallMs, counter: 0, node_id: hlc.node_id };
75
+ };
76
+ /**
77
+ * Merge a local HLC with a remote HLC on message receive.
78
+ *
79
+ * Takes the max of local, remote, and now for wall_ms, then adjusts the
80
+ * counter accordingly. Preserves the local node_id.
81
+ *
82
+ * Lamport causality: if wall clocks agree, increment the higher counter to preserve
83
+ * happened-before ordering. Reset counter only when wall clock advances (new causal epoch).
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * const local = HLC.increment(HLC.create('A'), 1000);
88
+ * const remote = HLC.increment(HLC.create('B'), 2000);
89
+ * const merged = HLC.merge(local, remote, 1500);
90
+ * // merged.wall_ms === 2000, merged.node_id === 'A'
91
+ * ```
92
+ */
93
+ const _merge = (local, remote, now = 0) => {
94
+ const newWallMs = Math.max(local.wall_ms, remote.wall_ms, now);
95
+ let newCounter;
96
+ if (newWallMs === local.wall_ms && newWallMs === remote.wall_ms) {
97
+ newCounter = Math.max(local.counter, remote.counter) + 1;
98
+ }
99
+ else if (newWallMs === local.wall_ms) {
100
+ newCounter = local.counter + 1;
101
+ }
102
+ else if (newWallMs === remote.wall_ms) {
103
+ newCounter = remote.counter + 1;
104
+ }
105
+ else {
106
+ newCounter = 0;
107
+ }
108
+ if (newCounter > MAX_COUNTER)
109
+ throw new Error(`HLC counter overflow: exceeded ${MAX_COUNTER} (>65535 events in 1ms — consider batching or increasing clock resolution)`);
110
+ return { wall_ms: newWallMs, counter: newCounter, node_id: local.node_id };
111
+ };
112
+ /**
113
+ * Encode an HLC timestamp to a colon-separated hex string.
114
+ *
115
+ * Format: `{wall_ms_hex_12}:{counter_hex_4}:{node_id}`
116
+ *
117
+ * @example
118
+ * ```ts
119
+ * const hlc = HLC.increment(HLC.create('node-1'), 1000);
120
+ * const encoded = HLC.encode(hlc);
121
+ * // encoded === '0000000003e8:0000:node-1'
122
+ * ```
123
+ */
124
+ const _encode = (hlc) => {
125
+ // 12 hex digits = 48-bit wall clock (good to year 10889), 4 hex = 16-bit counter
126
+ const wallHex = hlc.wall_ms.toString(16).padStart(12, '0');
127
+ const counterHex = hlc.counter.toString(16).padStart(4, '0');
128
+ return `${wallHex}:${counterHex}:${hlc.node_id}`;
129
+ };
130
+ /**
131
+ * Decode an HLC timestamp from a colon-separated hex string.
132
+ *
133
+ * Inverse of `encode`. Supports node IDs containing colons.
134
+ *
135
+ * @example
136
+ * ```ts
137
+ * const hlc = HLC.decode('0000000003e8:0000:node-1');
138
+ * // hlc === { wall_ms: 1000, counter: 0, node_id: 'node-1' }
139
+ * ```
140
+ */
141
+ const _decode = (s) => {
142
+ const parts = s.split(':');
143
+ if (parts.length < 3)
144
+ throw new Error(`Invalid HLC format: expected at least 3 colon-separated parts, got "${s}"`);
145
+ const wall_ms = parseInt(parts[0], 16);
146
+ const counter = parseInt(parts[1], 16);
147
+ const node_id = parts.slice(2).join(':');
148
+ if (isNaN(wall_ms))
149
+ throw new Error(`Invalid HLC format: wall_ms is not valid hex in "${s}"`);
150
+ if (isNaN(counter))
151
+ throw new Error(`Invalid HLC format: counter is not valid hex in "${s}"`);
152
+ return { wall_ms, counter, node_id };
153
+ };
154
+ /**
155
+ * Create a managed HLC clock as an Effect Ref.
156
+ *
157
+ * @example
158
+ * ```ts
159
+ * import { Effect } from 'effect';
160
+ *
161
+ * const program = Effect.gen(function* () {
162
+ * const clock = yield* HLC.makeClock('node-1');
163
+ * const ts = yield* HLC.tick(clock);
164
+ * // ts.wall_ms === Date.now() (approximately)
165
+ * });
166
+ * ```
167
+ */
168
+ export const makeClock = (nodeId) => Ref.make(_create(nodeId));
169
+ /**
170
+ * Tick a managed clock forward, returning the new HLC timestamp.
171
+ *
172
+ * @example
173
+ * ```ts
174
+ * const ts = yield* HLC.tick(clock);
175
+ * // ts.wall_ms >= previous wall_ms
176
+ * ```
177
+ */
178
+ export const tick = (clock) => Ref.updateAndGet(clock, (current) => _increment(current, Date.now()));
179
+ /**
180
+ * Receive a remote HLC timestamp and merge it into the managed clock.
181
+ *
182
+ * @example
183
+ * ```ts
184
+ * const remoteTs = HLC.decode(remoteEncoded);
185
+ * const merged = yield* HLC.receive(clock, remoteTs);
186
+ * // merged.wall_ms >= remoteTs.wall_ms
187
+ * ```
188
+ */
189
+ export const receive = (clock, remote) => Ref.updateAndGet(clock, (current) => _merge(current, remote, Date.now()));
190
+ /**
191
+ * HLC namespace -- Hybrid Logical Clock.
192
+ *
193
+ * Pure functions for creating, comparing, incrementing, and merging HLC
194
+ * timestamps, plus Effect-based managed clock helpers. Encodes to/from
195
+ * a deterministic colon-separated hex string format.
196
+ *
197
+ * @example
198
+ * ```ts
199
+ * import { HLC } from '@czap/core';
200
+ *
201
+ * const a = HLC.increment(HLC.create('A'), Date.now());
202
+ * const b = HLC.increment(HLC.create('B'), Date.now());
203
+ * const merged = HLC.merge(a, b, Date.now());
204
+ * const encoded = HLC.encode(merged);
205
+ * const decoded = HLC.decode(encoded);
206
+ * ```
207
+ */
208
+ export const HLC = {
209
+ create: _create,
210
+ compare,
211
+ increment: _increment,
212
+ merge: _merge,
213
+ encode: _encode,
214
+ decode: _decode,
215
+ makeClock,
216
+ tick,
217
+ receive,
218
+ };
219
+ //# sourceMappingURL=hlc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hlc.js","sourceRoot":"","sources":["../src/hlc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * `@czap/core` — **LiteShip** primitives for the **CZAP** engine: boundaries,
3
+ * tokens, styles, themes, signals, and working-deck coordination (compositor,
4
+ * plan graph, ECS, capsule factory).
5
+ * @module
6
+ */
7
+ export { SignalInput, ThresholdValue, StateName, ContentAddress, IntegrityDigest, TokenRef, Millis } from './brands.js';
8
+ export type { HLC as HLCBrand } from './brands.js';
9
+ export { fnv1a, fnv1aBytes } from './fnv.js';
10
+ export { CanonicalCbor } from './cbor.js';
11
+ export type { Prettify, StateUnion, OutputsFor, BoundaryCrossing, EffectValue, EffectError, RequireAtLeastOne, DeepReadonly, } from './type-utils.js';
12
+ export { tupleMap } from './tuple.js';
13
+ export { Boundary, BoundarySpec } from './boundary.js';
14
+ export { Token } from './token.js';
15
+ export type { TokenCategory } from './token.js';
16
+ export { Style } from './style.js';
17
+ export type { StyleLayer, ShadowLayer } from './style.js';
18
+ export { Theme } from './theme.js';
19
+ export { Component } from './component.js';
20
+ export type { SlotConfig } from './component.js';
21
+ export { Signal } from './signal.js';
22
+ export type { SignalSourceType, SignalSource } from './signal.js';
23
+ export { Easing } from './easing.js';
24
+ export { Animation } from './animation.js';
25
+ export { Timeline } from './timeline.js';
26
+ export type { Quantizer } from './quantizer-types.js';
27
+ export { Scheduler } from './scheduler.js';
28
+ export { Compositor } from './compositor.js';
29
+ export type { CompositeState, CompositorConfig } from './compositor.js';
30
+ export { CompositorStatePool } from './compositor-pool.js';
31
+ export { SpeculativeEvaluator } from './speculative.js';
32
+ export { TokenBuffer } from './token-buffer.js';
33
+ export { UIQuality } from './ui-quality.js';
34
+ export type { UIQualityTier, MotionTier } from './ui-quality.js';
35
+ export { GenFrame } from './gen-frame.js';
36
+ export type { UIFrame, FrameType, MorphStrategy, GapStrategy } from './gen-frame.js';
37
+ export { VideoRenderer } from './video.js';
38
+ export type { VideoConfig, VideoFrameOutput } from './video.js';
39
+ export type { CaptureConfig, CaptureFrame, FrameCapture, CaptureResult } from './capture.js';
40
+ export { BlendTree } from './blend.js';
41
+ export { FrameBudget } from './frame-budget.js';
42
+ export type { Priority } from './frame-budget.js';
43
+ export { DirtyFlags } from './dirty.js';
44
+ export type { CellKind, CellMeta, CellEnvelope } from './protocol.js';
45
+ export type { Entity, System, DenseSystem, DenseStore } from './ecs.js';
46
+ export { Part, World, EntityId } from './ecs.js';
47
+ export { Composable, ComposableWorld } from './composable.js';
48
+ export type { EntityComponents, ComposableEntity, ComposableWorldShape } from './composable.js';
49
+ export { Cell } from './cell.js';
50
+ export { Derived } from './derived.js';
51
+ export { Zap } from './zap.js';
52
+ export { Store } from './store.js';
53
+ export { Wire } from './wire.js';
54
+ export { Op } from './op.js';
55
+ export type { CapLevel, CapSet } from './caps.js';
56
+ export { Cap } from './caps.js';
57
+ export { HLC } from './hlc.js';
58
+ export { VectorClock } from './vector-clock.js';
59
+ export { TypedRef } from './typed-ref.js';
60
+ export type { ReceiptSubject, ReceiptEnvelope, ChainValidationError } from './receipt.js';
61
+ export { Receipt } from './receipt.js';
62
+ export type { DAGNode, ReceiptDAG, MergeResult, ForkViolation } from './dag.js';
63
+ export { DAG } from './dag.js';
64
+ export { Plan } from './plan.js';
65
+ export type { OpType, EdgeType } from './plan.js';
66
+ export { RuntimeCoordinator } from './runtime-coordinator.js';
67
+ export type { RuntimePhase, RuntimeCoordinatorConfig } from './runtime-coordinator.js';
68
+ export { Codec } from './codec.js';
69
+ export { LiveCell } from './live-cell.js';
70
+ export { WASMDispatch } from './wasm-dispatch.js';
71
+ export type { WASMKernels, WASMDispatchAPI } from './wasm-dispatch.js';
72
+ export { fallbackKernels } from './wasm-fallback.js';
73
+ export { AVBridge } from './av-bridge.js';
74
+ export { AVRenderer } from './av-renderer.js';
75
+ export { DEFAULT_TARGET_FPS, MS_PER_SEC, SSE_BUFFER_SIZE, SSE_HEARTBEAT_MS, SSE_RECONNECT_INITIAL_MS, SSE_RECONNECT_MAX_MS, COMPOSITOR_POOL_CAP, DIRTY_FLAGS_MAX, WASM_SCRATCH_BASE, CAPTURE_KEYFRAME_INTERVAL, EASING_SPRING_STEPS, THEME_TRANSITION_DURATION_MS, THEME_TRANSITION_EASING, CANVAS_FALLBACK_WIDTH, CANVAS_FALLBACK_HEIGHT, VIEWPORT, } from './defaults.js';
76
+ export { CzapValidationError, isValidationError } from './validation-error.js';
77
+ export { Diagnostics } from './diagnostics.js';
78
+ export type { DiagnosticEvent, DiagnosticLevel, DiagnosticPayload, DiagnosticsSink } from './diagnostics.js';
79
+ export { AddressedDigest } from './addressed-digest.js';
80
+ export { ShipCapsule } from './ship-capsule.js';
81
+ import type { Cell as _Cell } from './cell.js';
82
+ import type { Derived as _Derived } from './derived.js';
83
+ import type { Zap as _Zap } from './zap.js';
84
+ import type { Wire as _Wire } from './wire.js';
85
+ /** Union of the four reactive primitives the CZAP graph exposes to user code. */
86
+ export type Primitive<T> = _Cell.Shape<T> | _Derived.Shape<T> | _Zap.Shape<T> | _Wire.Shape<T>;
87
+ /** Narrow a {@link Primitive} to a {@link Cell}. */
88
+ export declare const isCell: <T>(p: Primitive<T>) => p is _Cell.Shape<T>;
89
+ /** Narrow a {@link Primitive} to a {@link Derived}. */
90
+ export declare const isDerived: <T>(p: Primitive<T>) => p is _Derived.Shape<T>;
91
+ /** Narrow a {@link Primitive} to a {@link Zap}. */
92
+ export declare const isZap: <T>(p: Primitive<T>) => p is _Zap.Shape<T>;
93
+ /** Narrow a {@link Primitive} to a {@link Wire}. */
94
+ export declare const isWire: <T>(p: Primitive<T>) => p is _Wire.Shape<T>;
95
+ export { Config, defineConfig } from './config.js';
96
+ export type { PrimitiveKind, PluginConfig as CorePluginConfig, AstroConfig as CoreAstroConfig } from './config.js';
97
+ export type { AssemblyKind, Site, CapabilityDecl, BudgetDecl, Invariant, AttributionDecl, CapsuleContract, } from './capsule.js';
98
+ export { TypeValidator } from './capsule.js';
99
+ export { defineCapsule, getCapsuleCatalog } from './assembly.js';
100
+ export type { CapsuleDef } from './assembly.js';
101
+ export { boundaryEvaluateCapsule } from './capsules/boundary-evaluate.js';
102
+ export { tokenBufferCapsule } from './capsules/token-buffer.js';
103
+ export { canonicalCborCapsule } from './capsules/canonical-cbor.js';
104
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,137 @@
1
+ /**
2
+ * `@czap/core` — **LiteShip** primitives for the **CZAP** engine: boundaries,
3
+ * tokens, styles, themes, signals, and working-deck coordination (compositor,
4
+ * plan graph, ECS, capsule factory).
5
+ * @module
6
+ */
7
+ // Brands — sanctioned constructors. The lower-level `brand` factory is
8
+ // intentionally NOT re-exported here; it is the unsafe escape-hatch used
9
+ // by `brands.ts` itself to define the sanctioned set, and exposing it on
10
+ // the public surface would let consumers forge any brand. Code that
11
+ // genuinely needs to mint a new brand should import from `@czap/core/brands`
12
+ // directly and document the use site.
13
+ export { SignalInput, ThresholdValue, StateName, ContentAddress, IntegrityDigest, TokenRef, Millis } from './brands.js';
14
+ // FNV-1a hash utility
15
+ export { fnv1a, fnv1aBytes } from './fnv.js';
16
+ // Canonical CBOR encoder (RFC 8949 §4.2.1) — content-address kernel
17
+ export { CanonicalCbor } from './cbor.js';
18
+ // Tuple utilities
19
+ export { tupleMap } from './tuple.js';
20
+ // Boundary. `BoundarySpec` is exported as a value+type pair (see the
21
+ // namespace-object pattern in ADR-0001); consumers who want only the type
22
+ // can `import type { BoundarySpec } from '@czap/core'`.
23
+ export { Boundary, BoundarySpec } from './boundary.js';
24
+ // Token
25
+ export { Token } from './token.js';
26
+ // Style
27
+ export { Style } from './style.js';
28
+ // Theme
29
+ export { Theme } from './theme.js';
30
+ // Component
31
+ export { Component } from './component.js';
32
+ // Signal
33
+ export { Signal } from './signal.js';
34
+ // Easing
35
+ export { Easing } from './easing.js';
36
+ // Animation
37
+ export { Animation } from './animation.js';
38
+ // Timeline
39
+ export { Timeline } from './timeline.js';
40
+ // Scheduler
41
+ export { Scheduler } from './scheduler.js';
42
+ // Compositor
43
+ export { Compositor } from './compositor.js';
44
+ // Compositor State Pool
45
+ export { CompositorStatePool } from './compositor-pool.js';
46
+ // Speculative Evaluation
47
+ export { SpeculativeEvaluator } from './speculative.js';
48
+ // Token Buffer
49
+ export { TokenBuffer } from './token-buffer.js';
50
+ // UI Quality
51
+ export { UIQuality } from './ui-quality.js';
52
+ // Generative UI Frames
53
+ export { GenFrame } from './gen-frame.js';
54
+ // Video
55
+ export { VideoRenderer } from './video.js';
56
+ // Blend
57
+ export { BlendTree } from './blend.js';
58
+ // Frame budget
59
+ export { FrameBudget } from './frame-budget.js';
60
+ // Dirty tracking
61
+ export { DirtyFlags } from './dirty.js';
62
+ export { Part, World, EntityId } from './ecs.js';
63
+ // Composable
64
+ export { Composable, ComposableWorld } from './composable.js';
65
+ // Cell
66
+ export { Cell } from './cell.js';
67
+ // Derived
68
+ export { Derived } from './derived.js';
69
+ // Zap
70
+ export { Zap } from './zap.js';
71
+ // Store
72
+ export { Store } from './store.js';
73
+ // Wire
74
+ export { Wire } from './wire.js';
75
+ // Op
76
+ export { Op } from './op.js';
77
+ export { Cap } from './caps.js';
78
+ // HLC
79
+ export { HLC } from './hlc.js';
80
+ // VectorClock
81
+ export { VectorClock } from './vector-clock.js';
82
+ // TypedRef
83
+ export { TypedRef } from './typed-ref.js';
84
+ export { Receipt } from './receipt.js';
85
+ export { DAG } from './dag.js';
86
+ // Plan
87
+ export { Plan } from './plan.js';
88
+ // Runtime coordination
89
+ export { RuntimeCoordinator } from './runtime-coordinator.js';
90
+ // Codec
91
+ export { Codec } from './codec.js';
92
+ // `SchemaError` / `isSchemaError` removed from the main entry — they were
93
+ // orphan re-exports from `effect/Schema` with no consumers in the repo
94
+ // and added implicit coupling to an Effect internal sub-path. Consumers
95
+ // who need them should import directly from `effect/Schema`.
96
+ // LiveCell
97
+ export { LiveCell } from './live-cell.js';
98
+ // WASM Dispatch
99
+ export { WASMDispatch } from './wasm-dispatch.js';
100
+ export { fallbackKernels } from './wasm-fallback.js';
101
+ // AVBridge
102
+ export { AVBridge } from './av-bridge.js';
103
+ // AVRenderer
104
+ export { AVRenderer } from './av-renderer.js';
105
+ // Defaults (centralized constants)
106
+ export { DEFAULT_TARGET_FPS, MS_PER_SEC, SSE_BUFFER_SIZE, SSE_HEARTBEAT_MS, SSE_RECONNECT_INITIAL_MS, SSE_RECONNECT_MAX_MS, COMPOSITOR_POOL_CAP, DIRTY_FLAGS_MAX, WASM_SCRATCH_BASE, CAPTURE_KEYFRAME_INTERVAL, EASING_SPRING_STEPS, THEME_TRANSITION_DURATION_MS, THEME_TRANSITION_EASING, CANVAS_FALLBACK_WIDTH, CANVAS_FALLBACK_HEIGHT, VIEWPORT, } from './defaults.js';
107
+ // Validation error
108
+ export { CzapValidationError, isValidationError } from './validation-error.js';
109
+ // Diagnostics
110
+ export { Diagnostics } from './diagnostics.js';
111
+ // AddressedDigest + ShipCapsule (ADR-0011)
112
+ // Browser-bundleable: pure type + crypto.subtle hashing. The Node-only
113
+ // release-input manifest helpers (gzip/tar/yaml) live in @czap/cli.
114
+ export { AddressedDigest } from './addressed-digest.js';
115
+ export { ShipCapsule } from './ship-capsule.js';
116
+ /** Narrow a {@link Primitive} to a {@link Cell}. */
117
+ export const isCell = (p) => p._tag === 'Cell';
118
+ /** Narrow a {@link Primitive} to a {@link Derived}. */
119
+ export const isDerived = (p) => p._tag === 'Derived';
120
+ /** Narrow a {@link Primitive} to a {@link Zap}. */
121
+ export const isZap = (p) => p._tag === 'Zap';
122
+ /** Narrow a {@link Primitive} to a {@link Wire}. */
123
+ export const isWire = (p) => p._tag === 'Wire';
124
+ // Config hub
125
+ export { Config, defineConfig } from './config.js';
126
+ export { TypeValidator } from './capsule.js';
127
+ export { defineCapsule, getCapsuleCatalog } from './assembly.js';
128
+ // `resetCapsuleCatalog` is intentionally NOT re-exported here — it mutates
129
+ // global registry state and ships from `@czap/core/testing` only.
130
+ // Capsule declarations — concrete instances of the 7-arm factory
131
+ export { boundaryEvaluateCapsule } from './capsules/boundary-evaluate.js';
132
+ export { tokenBufferCapsule } from './capsules/token-buffer.js';
133
+ export { canonicalCborCapsule } from './capsules/canonical-cbor.js';
134
+ // Harness lives at `@czap/core/harness` — per-arm test + bench template
135
+ // generators. Not re-exported here so consumers don't pull fast-check and
136
+ // the code-gen surface into every bundle.
137
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Value lerping between output states.
3
+ *
4
+ * Linearly interpolates all numeric properties of a record
5
+ * from one state to another, controlled by an eased progress value.
6
+ *
7
+ * @module
8
+ */
9
+ /**
10
+ * Interpolate between two numeric records using an eased value [0..1].
11
+ * Returns a new record with each property lerped: from[k] + (to[k] - from[k]) * eased.
12
+ */
13
+ export declare function interpolate<T extends Record<string, number>>(from: T, to: T, eased: number, defaults?: Partial<Record<string, number>>): T;
14
+ //# sourceMappingURL=interpolate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolate.d.ts","sourceRoot":"","sources":["../src/interpolate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1D,IAAI,EAAE,CAAC,EACP,EAAE,EAAE,CAAC,EACL,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACzC,CAAC,CAkBH"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Value lerping between output states.
3
+ *
4
+ * Linearly interpolates all numeric properties of a record
5
+ * from one state to another, controlled by an eased progress value.
6
+ *
7
+ * @module
8
+ */
9
+ /**
10
+ * Interpolate between two numeric records using an eased value [0..1].
11
+ * Returns a new record with each property lerped: from[k] + (to[k] - from[k]) * eased.
12
+ */
13
+ export function interpolate(from, to, eased, defaults) {
14
+ const result = {};
15
+ for (const [key, a] of Object.entries(from)) {
16
+ const b = to[key] ?? a;
17
+ result[key] = a + (b - a) * eased;
18
+ }
19
+ // Second pass: keys only in `to` (interpolate from implicit 0)
20
+ for (const [key, b] of Object.entries(to)) {
21
+ if (key in result) {
22
+ continue;
23
+ }
24
+ const base = defaults?.[key] ?? 0;
25
+ result[key] = base + (b - base) * eased;
26
+ }
27
+ // `result` has every key present in `from`/`to`, both of which are T. The
28
+ // output is structurally a T but TS can't infer that through Object.entries.
29
+ return result;
30
+ }
31
+ //# sourceMappingURL=interpolate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolate.js","sourceRoot":"","sources":["../src/interpolate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,IAAO,EACP,EAAK,EACL,KAAa,EACb,QAA0C;IAE1C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;IACpC,CAAC;IACD,+DAA+D;IAC/D,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1C,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;IAC1C,CAAC;IACD,0EAA0E;IAC1E,6EAA6E;IAC7E,OAAO,MAAsB,CAAC;AAChC,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * `LiveCell<K, T>` — bridge between protocol envelope and reactive runtime.
3
+ *
4
+ * A LiveCell is a Cell that also carries a CellEnvelope, tracking
5
+ * its kind, content address, metadata (HLC timestamps, version),
6
+ * and boundary crossings.
7
+ *
8
+ * @module
9
+ */
10
+ import type { Scope } from 'effect';
11
+ import { Effect, Stream } from 'effect';
12
+ import { Cell } from './cell.js';
13
+ import type { CellKind, CellEnvelope } from './protocol.js';
14
+ import type { BoundaryCrossing } from './type-utils.js';
15
+ import { Boundary } from './boundary.js';
16
+ interface LiveCellShape<K extends CellKind, T> extends Omit<Cell.Shape<T>, '_tag'> {
17
+ readonly _tag: 'LiveCell';
18
+ readonly envelope: Effect.Effect<CellEnvelope<K, T>>;
19
+ readonly crossings: Stream.Stream<BoundaryCrossing<string>>;
20
+ readonly kind: K;
21
+ publishCrossing(crossing: BoundaryCrossing<string>): Effect.Effect<void>;
22
+ }
23
+ declare function _make<K extends CellKind, T>(kind: K, initial: T): Effect.Effect<LiveCellShape<K, T>, never, Scope.Scope>;
24
+ /**
25
+ * Create a boundary-kind LiveCell that automatically publishes crossings
26
+ * when the numeric value transitions between boundary states.
27
+ */
28
+ declare function _makeBoundary<I extends string, S extends readonly [string, ...string[]]>(boundary: Boundary.Shape<I, S>, initial: number): Effect.Effect<LiveCellShape<'boundary', number>, never, Scope.Scope>;
29
+ /**
30
+ * LiveCell — bridge between the {@link Cell} reactive graph and the wire
31
+ * protocol. A `LiveCell` wraps a `Cell` with a typed {@link CellEnvelope} —
32
+ * kind, content address, HLC, boundary crossings — so primitives can travel
33
+ * between peers as self-describing messages.
34
+ */
35
+ export declare const LiveCell: {
36
+ /** Wrap an arbitrary value in a {@link LiveCell} with freshly minted identity + HLC. */
37
+ make: typeof _make;
38
+ /** Specialized factory for boundary crossings so the envelope captures crossing metadata. */
39
+ makeBoundary: typeof _makeBoundary;
40
+ };
41
+ export declare namespace LiveCell {
42
+ /** Structural shape of a {@link LiveCell} parameterized by cell kind `K` and value type `T`. */
43
+ type Shape<K extends CellKind, T> = LiveCellShape<K, T>;
44
+ }
45
+ export {};
46
+ //# sourceMappingURL=live-cell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-cell.d.ts","sourceRoot":"","sources":["../src/live-cell.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAe,MAAM,QAAQ,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAY,YAAY,EAAE,MAAM,eAAe,CAAC;AAGtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,UAAU,aAAa,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAE,SAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IAChF,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC1E;AAED,iBAAS,KAAK,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CA+DjH;AAED;;;GAGG;AACH,iBAAS,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,EAC/E,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CA+EtE;AAED;;;;;GAKG;AACH,eAAO,MAAM,QAAQ;IACnB,wFAAwF;;IAExF,6FAA6F;;CAE9F,CAAC;AAEF,MAAM,CAAC,OAAO,WAAW,QAAQ,CAAC;IAChC,gGAAgG;IAChG,KAAY,KAAK,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAChE"}