@earendil-works/chord 1.4.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1299) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/README.md +115 -90
  3. package/dist/context/index.d.ts +1 -1
  4. package/dist/context/index.d.ts.map +1 -1
  5. package/dist/context/index.js +1 -1
  6. package/dist/context/index.js.map +1 -1
  7. package/dist/contracts/accepts.d.ts +81 -0
  8. package/dist/contracts/accepts.d.ts.map +1 -0
  9. package/dist/contracts/accepts.js +123 -0
  10. package/dist/contracts/accepts.js.map +1 -0
  11. package/dist/contracts/contract.d.ts +121 -0
  12. package/dist/contracts/contract.d.ts.map +1 -0
  13. package/dist/contracts/contract.js +50 -0
  14. package/dist/contracts/contract.js.map +1 -0
  15. package/dist/contracts/declare.d.ts +107 -0
  16. package/dist/contracts/declare.d.ts.map +1 -0
  17. package/dist/contracts/declare.js +136 -0
  18. package/dist/contracts/declare.js.map +1 -0
  19. package/dist/contracts/evolve.d.ts +92 -0
  20. package/dist/contracts/evolve.d.ts.map +1 -0
  21. package/dist/contracts/evolve.js +179 -0
  22. package/dist/contracts/evolve.js.map +1 -0
  23. package/dist/contracts/fingerprint.d.ts +16 -0
  24. package/dist/contracts/fingerprint.d.ts.map +1 -0
  25. package/dist/contracts/fingerprint.js +50 -0
  26. package/dist/contracts/fingerprint.js.map +1 -0
  27. package/dist/contracts/history.d.ts +71 -0
  28. package/dist/contracts/history.d.ts.map +1 -0
  29. package/dist/contracts/history.js +3 -0
  30. package/dist/contracts/history.js.map +1 -0
  31. package/dist/contracts/host-kind.d.ts +40 -0
  32. package/dist/contracts/host-kind.d.ts.map +1 -0
  33. package/dist/contracts/host-kind.js +37 -0
  34. package/dist/contracts/host-kind.js.map +1 -0
  35. package/dist/contracts/index.d.ts +7 -0
  36. package/dist/contracts/index.d.ts.map +1 -0
  37. package/dist/contracts/index.js +6 -0
  38. package/dist/contracts/index.js.map +1 -0
  39. package/dist/contracts/internal.d.ts +10 -0
  40. package/dist/contracts/internal.d.ts.map +1 -0
  41. package/dist/contracts/internal.js +9 -0
  42. package/dist/contracts/internal.js.map +1 -0
  43. package/dist/contracts/names.d.ts +3 -0
  44. package/dist/contracts/names.d.ts.map +1 -0
  45. package/dist/contracts/names.js +13 -0
  46. package/dist/contracts/names.js.map +1 -0
  47. package/dist/contracts/params.d.ts +28 -0
  48. package/dist/contracts/params.d.ts.map +1 -0
  49. package/dist/contracts/params.js +50 -0
  50. package/dist/contracts/params.js.map +1 -0
  51. package/dist/contracts/schema.d.ts +102 -0
  52. package/dist/contracts/schema.d.ts.map +1 -0
  53. package/dist/contracts/schema.js +103 -0
  54. package/dist/contracts/schema.js.map +1 -0
  55. package/dist/contracts/snapshot.d.ts +16 -0
  56. package/dist/contracts/snapshot.d.ts.map +1 -0
  57. package/dist/contracts/snapshot.js +167 -0
  58. package/dist/contracts/snapshot.js.map +1 -0
  59. package/dist/data/args.d.ts +50 -0
  60. package/dist/data/args.d.ts.map +1 -0
  61. package/dist/data/args.js +83 -0
  62. package/dist/data/args.js.map +1 -0
  63. package/dist/data/errors.d.ts +80 -0
  64. package/dist/data/errors.d.ts.map +1 -0
  65. package/dist/data/errors.js +116 -0
  66. package/dist/data/errors.js.map +1 -0
  67. package/dist/data/failure.d.ts +26 -0
  68. package/dist/data/failure.d.ts.map +1 -0
  69. package/dist/data/failure.js +77 -0
  70. package/dist/data/failure.js.map +1 -0
  71. package/dist/data/index.d.ts +4 -0
  72. package/dist/data/index.d.ts.map +1 -0
  73. package/dist/data/index.js +5 -0
  74. package/dist/data/index.js.map +1 -0
  75. package/dist/data/internal.d.ts +7 -0
  76. package/dist/data/internal.d.ts.map +1 -0
  77. package/dist/data/internal.js +8 -0
  78. package/dist/data/internal.js.map +1 -0
  79. package/dist/data/params.d.ts +20 -0
  80. package/dist/data/params.d.ts.map +1 -0
  81. package/dist/data/params.js +31 -0
  82. package/dist/data/params.js.map +1 -0
  83. package/dist/data/principal.d.ts +22 -0
  84. package/dist/data/principal.d.ts.map +1 -0
  85. package/dist/data/principal.js +49 -0
  86. package/dist/data/principal.js.map +1 -0
  87. package/dist/data/validator.d.ts +12 -0
  88. package/dist/data/validator.d.ts.map +1 -0
  89. package/dist/data/validator.js +35 -0
  90. package/dist/data/validator.js.map +1 -0
  91. package/dist/delta/apply-immutable-trusted.js +3 -4
  92. package/dist/delta/apply-immutable-trusted.js.map +1 -1
  93. package/dist/delta/diff.d.ts.map +1 -1
  94. package/dist/delta/diff.js +5 -3
  95. package/dist/delta/diff.js.map +1 -1
  96. package/dist/delta/index.d.ts +9 -1
  97. package/dist/delta/index.d.ts.map +1 -1
  98. package/dist/delta/index.js +15 -11
  99. package/dist/delta/index.js.map +1 -1
  100. package/dist/delta/pending.d.ts +36 -0
  101. package/dist/delta/pending.d.ts.map +1 -0
  102. package/dist/delta/pending.js +143 -0
  103. package/dist/delta/pending.js.map +1 -0
  104. package/dist/delta/tracker.d.ts +12 -0
  105. package/dist/delta/tracker.d.ts.map +1 -1
  106. package/dist/delta/tracker.js +109 -39
  107. package/dist/delta/tracker.js.map +1 -1
  108. package/dist/documents/address-source.d.ts +20 -0
  109. package/dist/documents/address-source.d.ts.map +1 -0
  110. package/dist/documents/address-source.js +44 -0
  111. package/dist/documents/address-source.js.map +1 -0
  112. package/dist/documents/definition.d.ts +84 -0
  113. package/dist/documents/definition.d.ts.map +1 -0
  114. package/dist/documents/definition.js +74 -0
  115. package/dist/documents/definition.js.map +1 -0
  116. package/dist/documents/documents.d.ts +126 -0
  117. package/dist/documents/documents.d.ts.map +1 -0
  118. package/dist/documents/documents.js +248 -0
  119. package/dist/documents/documents.js.map +1 -0
  120. package/dist/documents/fence.d.ts +9 -0
  121. package/dist/documents/fence.d.ts.map +1 -0
  122. package/dist/documents/fence.js +15 -0
  123. package/dist/documents/fence.js.map +1 -0
  124. package/dist/documents/handles.d.ts +76 -0
  125. package/dist/documents/handles.d.ts.map +1 -0
  126. package/dist/documents/handles.js +66 -0
  127. package/dist/documents/handles.js.map +1 -0
  128. package/dist/documents/index.d.ts +4 -0
  129. package/dist/documents/index.d.ts.map +1 -0
  130. package/dist/documents/index.js +3 -0
  131. package/dist/documents/index.js.map +1 -0
  132. package/dist/documents/internal.d.ts +9 -0
  133. package/dist/documents/internal.d.ts.map +1 -0
  134. package/dist/documents/internal.js +9 -0
  135. package/dist/documents/internal.js.map +1 -0
  136. package/dist/documents/keyed-slot.d.ts +103 -0
  137. package/dist/documents/keyed-slot.d.ts.map +1 -0
  138. package/dist/documents/keyed-slot.js +395 -0
  139. package/dist/documents/keyed-slot.js.map +1 -0
  140. package/dist/documents/line.d.ts +7 -0
  141. package/dist/documents/line.d.ts.map +1 -0
  142. package/dist/documents/line.js +14 -0
  143. package/dist/documents/line.js.map +1 -0
  144. package/dist/documents/persistence.d.ts +104 -0
  145. package/dist/documents/persistence.d.ts.map +1 -0
  146. package/dist/documents/persistence.js +129 -0
  147. package/dist/documents/persistence.js.map +1 -0
  148. package/dist/documents/residency.d.ts +31 -0
  149. package/dist/documents/residency.d.ts.map +1 -0
  150. package/dist/documents/residency.js +93 -0
  151. package/dist/documents/residency.js.map +1 -0
  152. package/dist/documents/slot.d.ts +109 -0
  153. package/dist/documents/slot.d.ts.map +1 -0
  154. package/dist/documents/slot.js +181 -0
  155. package/dist/documents/slot.js.map +1 -0
  156. package/dist/documents/transaction.d.ts +143 -0
  157. package/dist/documents/transaction.d.ts.map +1 -0
  158. package/dist/documents/transaction.js +442 -0
  159. package/dist/documents/transaction.js.map +1 -0
  160. package/dist/host/activity.d.ts +31 -0
  161. package/dist/host/activity.d.ts.map +1 -0
  162. package/dist/host/activity.js +40 -0
  163. package/dist/host/activity.js.map +1 -0
  164. package/dist/host/adapted.d.ts +49 -0
  165. package/dist/host/adapted.d.ts.map +1 -0
  166. package/dist/host/adapted.js +214 -0
  167. package/dist/host/adapted.js.map +1 -0
  168. package/dist/host/attempt.d.ts +308 -0
  169. package/dist/host/attempt.d.ts.map +1 -0
  170. package/dist/host/attempt.js +1199 -0
  171. package/dist/host/attempt.js.map +1 -0
  172. package/dist/host/backoff.d.ts +29 -0
  173. package/dist/host/backoff.d.ts.map +1 -0
  174. package/dist/host/backoff.js +69 -0
  175. package/dist/host/backoff.js.map +1 -0
  176. package/dist/host/ctx.d.ts +94 -0
  177. package/dist/host/ctx.d.ts.map +1 -0
  178. package/dist/host/ctx.js +200 -0
  179. package/dist/host/ctx.js.map +1 -0
  180. package/dist/host/deadline.d.ts +12 -0
  181. package/dist/host/deadline.d.ts.map +1 -0
  182. package/dist/host/deadline.js +40 -0
  183. package/dist/host/deadline.js.map +1 -0
  184. package/dist/host/dependencies.d.ts +65 -0
  185. package/dist/host/dependencies.d.ts.map +1 -0
  186. package/dist/host/dependencies.js +115 -0
  187. package/dist/host/dependencies.js.map +1 -0
  188. package/dist/host/destination.d.ts +48 -0
  189. package/dist/host/destination.d.ts.map +1 -0
  190. package/dist/host/destination.js +101 -0
  191. package/dist/host/destination.js.map +1 -0
  192. package/dist/host/facet.d.ts +84 -0
  193. package/dist/host/facet.d.ts.map +1 -0
  194. package/dist/host/facet.js +55 -0
  195. package/dist/host/facet.js.map +1 -0
  196. package/dist/host/follow.d.ts +52 -0
  197. package/dist/host/follow.d.ts.map +1 -0
  198. package/dist/host/follow.js +207 -0
  199. package/dist/host/follow.js.map +1 -0
  200. package/dist/host/host.d.ts +571 -0
  201. package/dist/host/host.d.ts.map +1 -0
  202. package/dist/host/host.js +1318 -0
  203. package/dist/host/host.js.map +1 -0
  204. package/dist/host/index.d.ts +17 -0
  205. package/dist/host/index.d.ts.map +1 -0
  206. package/dist/host/index.js +6 -0
  207. package/dist/host/index.js.map +1 -0
  208. package/dist/host/internal.d.ts +11 -0
  209. package/dist/host/internal.d.ts.map +1 -0
  210. package/dist/host/internal.js +9 -0
  211. package/dist/host/internal.js.map +1 -0
  212. package/dist/host/members.d.ts +50 -0
  213. package/dist/host/members.d.ts.map +1 -0
  214. package/dist/host/members.js +107 -0
  215. package/dist/host/members.js.map +1 -0
  216. package/dist/host/native.d.ts +64 -0
  217. package/dist/host/native.d.ts.map +1 -0
  218. package/dist/host/native.js +126 -0
  219. package/dist/host/native.js.map +1 -0
  220. package/dist/host/object.d.ts +331 -0
  221. package/dist/host/object.d.ts.map +1 -0
  222. package/dist/host/object.js +1296 -0
  223. package/dist/host/object.js.map +1 -0
  224. package/dist/host/old-work.d.ts +34 -0
  225. package/dist/host/old-work.d.ts.map +1 -0
  226. package/dist/host/old-work.js +52 -0
  227. package/dist/host/old-work.js.map +1 -0
  228. package/dist/host/parked.d.ts +23 -0
  229. package/dist/host/parked.d.ts.map +1 -0
  230. package/dist/host/parked.js +79 -0
  231. package/dist/host/parked.js.map +1 -0
  232. package/dist/host/presence.d.ts +34 -0
  233. package/dist/host/presence.d.ts.map +1 -0
  234. package/dist/host/presence.js +117 -0
  235. package/dist/host/presence.js.map +1 -0
  236. package/dist/host/readiness.d.ts +27 -0
  237. package/dist/host/readiness.d.ts.map +1 -0
  238. package/dist/host/readiness.js +134 -0
  239. package/dist/host/readiness.js.map +1 -0
  240. package/dist/host/ref-state.d.ts +53 -0
  241. package/dist/host/ref-state.d.ts.map +1 -0
  242. package/dist/host/ref-state.js +83 -0
  243. package/dist/host/ref-state.js.map +1 -0
  244. package/dist/host/reference-keys.d.ts +36 -0
  245. package/dist/host/reference-keys.d.ts.map +1 -0
  246. package/dist/host/reference-keys.js +168 -0
  247. package/dist/host/reference-keys.js.map +1 -0
  248. package/dist/host/reference-source.d.ts +65 -0
  249. package/dist/host/reference-source.d.ts.map +1 -0
  250. package/dist/host/reference-source.js +285 -0
  251. package/dist/host/reference-source.js.map +1 -0
  252. package/dist/host/reference.d.ts +321 -0
  253. package/dist/host/reference.d.ts.map +1 -0
  254. package/dist/host/reference.js +797 -0
  255. package/dist/host/reference.js.map +1 -0
  256. package/dist/host/reload-cycle.d.ts +16 -0
  257. package/dist/host/reload-cycle.d.ts.map +1 -0
  258. package/dist/host/reload-cycle.js +81 -0
  259. package/dist/host/reload-cycle.js.map +1 -0
  260. package/dist/host/retry-on.d.ts +28 -0
  261. package/dist/host/retry-on.d.ts.map +1 -0
  262. package/dist/host/retry-on.js +52 -0
  263. package/dist/host/retry-on.js.map +1 -0
  264. package/dist/host/revocation.d.ts +16 -0
  265. package/dist/host/revocation.d.ts.map +1 -0
  266. package/dist/host/revocation.js +27 -0
  267. package/dist/host/revocation.js.map +1 -0
  268. package/dist/host/root.d.ts +37 -0
  269. package/dist/host/root.d.ts.map +1 -0
  270. package/dist/host/root.js +68 -0
  271. package/dist/host/root.js.map +1 -0
  272. package/dist/host/route.d.ts +64 -0
  273. package/dist/host/route.d.ts.map +1 -0
  274. package/dist/host/route.js +227 -0
  275. package/dist/host/route.js.map +1 -0
  276. package/dist/host/routines.d.ts +78 -0
  277. package/dist/host/routines.d.ts.map +1 -0
  278. package/dist/host/routines.js +398 -0
  279. package/dist/host/routines.js.map +1 -0
  280. package/dist/host/sleep.d.ts +9 -0
  281. package/dist/host/sleep.d.ts.map +1 -0
  282. package/dist/host/sleep.js +40 -0
  283. package/dist/host/sleep.js.map +1 -0
  284. package/dist/host/staging.d.ts +94 -0
  285. package/dist/host/staging.d.ts.map +1 -0
  286. package/dist/host/staging.js +304 -0
  287. package/dist/host/staging.js.map +1 -0
  288. package/dist/host/unbound-clock.d.ts +23 -0
  289. package/dist/host/unbound-clock.d.ts.map +1 -0
  290. package/dist/host/unbound-clock.js +58 -0
  291. package/dist/host/unbound-clock.js.map +1 -0
  292. package/dist/host/unbound.d.ts +37 -0
  293. package/dist/host/unbound.d.ts.map +1 -0
  294. package/dist/host/unbound.js +88 -0
  295. package/dist/host/unbound.js.map +1 -0
  296. package/dist/host/uuid.d.ts +3 -0
  297. package/dist/host/uuid.d.ts.map +1 -0
  298. package/dist/host/uuid.js +38 -0
  299. package/dist/host/uuid.js.map +1 -0
  300. package/dist/index.d.ts +29 -18
  301. package/dist/index.d.ts.map +1 -1
  302. package/dist/index.js +20 -9
  303. package/dist/index.js.map +1 -1
  304. package/dist/jobs/definition.d.ts +96 -0
  305. package/dist/jobs/definition.d.ts.map +1 -0
  306. package/dist/jobs/definition.js +83 -0
  307. package/dist/jobs/definition.js.map +1 -0
  308. package/dist/jobs/index.d.ts +5 -0
  309. package/dist/jobs/index.d.ts.map +1 -0
  310. package/dist/jobs/index.js +3 -0
  311. package/dist/jobs/index.js.map +1 -0
  312. package/dist/jobs/internal.d.ts +3 -0
  313. package/dist/jobs/internal.d.ts.map +1 -0
  314. package/dist/jobs/internal.js +4 -0
  315. package/dist/jobs/internal.js.map +1 -0
  316. package/dist/jobs/job.d.ts +149 -0
  317. package/dist/jobs/job.d.ts.map +1 -0
  318. package/dist/jobs/job.js +387 -0
  319. package/dist/jobs/job.js.map +1 -0
  320. package/dist/jobs/persisted.d.ts +38 -0
  321. package/dist/jobs/persisted.d.ts.map +1 -0
  322. package/dist/jobs/persisted.js +95 -0
  323. package/dist/jobs/persisted.js.map +1 -0
  324. package/dist/jobs/records.d.ts +231 -0
  325. package/dist/jobs/records.d.ts.map +1 -0
  326. package/dist/jobs/records.js +871 -0
  327. package/dist/jobs/records.js.map +1 -0
  328. package/dist/jobs/run-states.d.ts +69 -0
  329. package/dist/jobs/run-states.d.ts.map +1 -0
  330. package/dist/jobs/run-states.js +228 -0
  331. package/dist/jobs/run-states.js.map +1 -0
  332. package/dist/jobs/run.d.ts +117 -0
  333. package/dist/jobs/run.d.ts.map +1 -0
  334. package/dist/jobs/run.js +204 -0
  335. package/dist/jobs/run.js.map +1 -0
  336. package/dist/jobs/running.d.ts +44 -0
  337. package/dist/jobs/running.d.ts.map +1 -0
  338. package/dist/jobs/running.js +117 -0
  339. package/dist/jobs/running.js.map +1 -0
  340. package/dist/jobs/stored.d.ts +63 -0
  341. package/dist/jobs/stored.d.ts.map +1 -0
  342. package/dist/jobs/stored.js +55 -0
  343. package/dist/jobs/stored.js.map +1 -0
  344. package/dist/link/binary.d.ts +4 -0
  345. package/dist/link/binary.d.ts.map +1 -0
  346. package/dist/link/binary.js +544 -0
  347. package/dist/link/binary.js.map +1 -0
  348. package/dist/link/channel.d.ts +68 -0
  349. package/dist/link/channel.d.ts.map +1 -0
  350. package/dist/link/channel.js +215 -0
  351. package/dist/link/channel.js.map +1 -0
  352. package/dist/link/errors.d.ts +7 -0
  353. package/dist/link/errors.d.ts.map +1 -0
  354. package/dist/link/errors.js +21 -0
  355. package/dist/link/errors.js.map +1 -0
  356. package/dist/link/index.d.ts +8 -0
  357. package/dist/link/index.d.ts.map +1 -0
  358. package/dist/link/index.js +8 -0
  359. package/dist/link/index.js.map +1 -0
  360. package/dist/link/internal.d.ts +9 -0
  361. package/dist/link/internal.d.ts.map +1 -0
  362. package/dist/link/internal.js +10 -0
  363. package/dist/link/internal.js.map +1 -0
  364. package/dist/link/ipc.d.ts +22 -0
  365. package/dist/link/ipc.d.ts.map +1 -0
  366. package/dist/link/ipc.js +64 -0
  367. package/dist/link/ipc.js.map +1 -0
  368. package/dist/link/link.d.ts +34 -0
  369. package/dist/link/link.d.ts.map +1 -0
  370. package/dist/link/link.js +87 -0
  371. package/dist/link/link.js.map +1 -0
  372. package/dist/link/message.d.ts +262 -0
  373. package/dist/link/message.d.ts.map +1 -0
  374. package/dist/link/message.js +156 -0
  375. package/dist/link/message.js.map +1 -0
  376. package/dist/link/part.d.ts +80 -0
  377. package/dist/link/part.d.ts.map +1 -0
  378. package/dist/link/part.js +165 -0
  379. package/dist/link/part.js.map +1 -0
  380. package/dist/link/text.d.ts +6 -0
  381. package/dist/link/text.d.ts.map +1 -0
  382. package/dist/link/text.js +355 -0
  383. package/dist/link/text.js.map +1 -0
  384. package/dist/link/values.d.ts +40 -0
  385. package/dist/link/values.d.ts.map +1 -0
  386. package/dist/link/values.js +121 -0
  387. package/dist/link/values.js.map +1 -0
  388. package/dist/link/websocket.d.ts +26 -0
  389. package/dist/link/websocket.d.ts.map +1 -0
  390. package/dist/link/websocket.js +91 -0
  391. package/dist/link/websocket.js.map +1 -0
  392. package/dist/node/app/app.d.ts +269 -0
  393. package/dist/node/app/app.d.ts.map +1 -0
  394. package/dist/node/app/app.js +513 -0
  395. package/dist/node/app/app.js.map +1 -0
  396. package/dist/node/app/archive.d.ts +37 -0
  397. package/dist/node/app/archive.d.ts.map +1 -0
  398. package/dist/node/app/archive.js +204 -0
  399. package/dist/node/app/archive.js.map +1 -0
  400. package/dist/node/app/blobs.d.ts +23 -0
  401. package/dist/node/app/blobs.d.ts.map +1 -0
  402. package/dist/node/app/blobs.js +64 -0
  403. package/dist/node/app/blobs.js.map +1 -0
  404. package/dist/node/app/data.d.ts +35 -0
  405. package/dist/node/app/data.d.ts.map +1 -0
  406. package/dist/node/app/data.js +44 -0
  407. package/dist/node/app/data.js.map +1 -0
  408. package/dist/node/app/ephemeral-sessions.d.ts +20 -0
  409. package/dist/node/app/ephemeral-sessions.d.ts.map +1 -0
  410. package/dist/node/app/ephemeral-sessions.js +69 -0
  411. package/dist/node/app/ephemeral-sessions.js.map +1 -0
  412. package/dist/node/app/ephemeral.d.ts +11 -0
  413. package/dist/node/app/ephemeral.d.ts.map +1 -0
  414. package/dist/node/app/ephemeral.js +34 -0
  415. package/dist/node/app/ephemeral.js.map +1 -0
  416. package/dist/node/app/files-copy.d.ts +13 -0
  417. package/dist/node/app/files-copy.d.ts.map +1 -0
  418. package/dist/node/app/files-copy.js +86 -0
  419. package/dist/node/app/files-copy.js.map +1 -0
  420. package/dist/node/app/files-entry.d.ts +4 -0
  421. package/dist/node/app/files-entry.d.ts.map +1 -0
  422. package/dist/node/app/files-entry.js +7 -0
  423. package/dist/node/app/files-entry.js.map +1 -0
  424. package/dist/node/app/files-index.d.ts +180 -0
  425. package/dist/node/app/files-index.d.ts.map +1 -0
  426. package/dist/node/app/files-index.js +535 -0
  427. package/dist/node/app/files-index.js.map +1 -0
  428. package/dist/node/app/files.d.ts +363 -0
  429. package/dist/node/app/files.d.ts.map +1 -0
  430. package/dist/node/app/files.js +368 -0
  431. package/dist/node/app/files.js.map +1 -0
  432. package/dist/node/app/folder-views.d.ts +21 -0
  433. package/dist/node/app/folder-views.d.ts.map +1 -0
  434. package/dist/node/app/folder-views.js +55 -0
  435. package/dist/node/app/folder-views.js.map +1 -0
  436. package/dist/node/app/index.d.ts +12 -0
  437. package/dist/node/app/index.d.ts.map +1 -0
  438. package/dist/node/app/index.js +15 -0
  439. package/dist/node/app/index.js.map +1 -0
  440. package/dist/node/app/info.d.ts +66 -0
  441. package/dist/node/app/info.d.ts.map +1 -0
  442. package/dist/node/app/info.js +37 -0
  443. package/dist/node/app/info.js.map +1 -0
  444. package/dist/node/app/invite.d.ts +5 -0
  445. package/dist/node/app/invite.d.ts.map +1 -0
  446. package/dist/node/app/invite.js +64 -0
  447. package/dist/node/app/invite.js.map +1 -0
  448. package/dist/node/app/layout.d.ts +36 -0
  449. package/dist/node/app/layout.d.ts.map +1 -0
  450. package/dist/node/app/layout.js +87 -0
  451. package/dist/node/app/layout.js.map +1 -0
  452. package/dist/node/app/owner.d.ts +31 -0
  453. package/dist/node/app/owner.d.ts.map +1 -0
  454. package/dist/node/app/owner.js +104 -0
  455. package/dist/node/app/owner.js.map +1 -0
  456. package/dist/node/app/pairing.d.ts +55 -0
  457. package/dist/node/app/pairing.d.ts.map +1 -0
  458. package/dist/node/app/pairing.js +183 -0
  459. package/dist/node/app/pairing.js.map +1 -0
  460. package/dist/node/app/secrets.d.ts +16 -0
  461. package/dist/node/app/secrets.d.ts.map +1 -0
  462. package/dist/node/app/secrets.js +72 -0
  463. package/dist/node/app/secrets.js.map +1 -0
  464. package/dist/node/app/sessions.d.ts +72 -0
  465. package/dist/node/app/sessions.d.ts.map +1 -0
  466. package/dist/node/app/sessions.js +222 -0
  467. package/dist/node/app/sessions.js.map +1 -0
  468. package/dist/node/app/tar.d.ts +24 -0
  469. package/dist/node/app/tar.d.ts.map +1 -0
  470. package/dist/node/app/tar.js +167 -0
  471. package/dist/node/app/tar.js.map +1 -0
  472. package/dist/node/app/uploads.d.ts +37 -0
  473. package/dist/node/app/uploads.d.ts.map +1 -0
  474. package/dist/node/app/uploads.js +157 -0
  475. package/dist/node/app/uploads.js.map +1 -0
  476. package/dist/node/app/users.d.ts +37 -0
  477. package/dist/node/app/users.d.ts.map +1 -0
  478. package/dist/node/app/users.js +62 -0
  479. package/dist/node/app/users.js.map +1 -0
  480. package/dist/node/app/worker.d.ts +18 -0
  481. package/dist/node/app/worker.d.ts.map +1 -0
  482. package/dist/node/app/worker.js +84 -0
  483. package/dist/node/app/worker.js.map +1 -0
  484. package/dist/node/compression.d.ts +7 -0
  485. package/dist/node/compression.d.ts.map +1 -0
  486. package/dist/node/compression.js +25 -0
  487. package/dist/node/compression.js.map +1 -0
  488. package/dist/node/http/admission.d.ts +63 -0
  489. package/dist/node/http/admission.d.ts.map +1 -0
  490. package/dist/node/http/admission.js +134 -0
  491. package/dist/node/http/admission.js.map +1 -0
  492. package/dist/node/http/authenticate.d.ts +21 -0
  493. package/dist/node/http/authenticate.d.ts.map +1 -0
  494. package/dist/node/http/authenticate.js +34 -0
  495. package/dist/node/http/authenticate.js.map +1 -0
  496. package/dist/node/http/cookies.d.ts +32 -0
  497. package/dist/node/http/cookies.d.ts.map +1 -0
  498. package/dist/node/http/cookies.js +70 -0
  499. package/dist/node/http/cookies.js.map +1 -0
  500. package/dist/node/http/file.d.ts +23 -0
  501. package/dist/node/http/file.d.ts.map +1 -0
  502. package/dist/node/http/file.js +94 -0
  503. package/dist/node/http/file.js.map +1 -0
  504. package/dist/node/http/headers.d.ts +37 -0
  505. package/dist/node/http/headers.d.ts.map +1 -0
  506. package/dist/node/http/headers.js +136 -0
  507. package/dist/node/http/headers.js.map +1 -0
  508. package/dist/node/http/http.d.ts +111 -0
  509. package/dist/node/http/http.d.ts.map +1 -0
  510. package/dist/node/http/http.js +524 -0
  511. package/dist/node/http/http.js.map +1 -0
  512. package/dist/node/http/incoming.d.ts +19 -0
  513. package/dist/node/http/incoming.d.ts.map +1 -0
  514. package/dist/node/http/incoming.js +31 -0
  515. package/dist/node/http/incoming.js.map +1 -0
  516. package/dist/node/http/index.d.ts +11 -0
  517. package/dist/node/http/index.d.ts.map +1 -0
  518. package/dist/node/http/index.js +12 -0
  519. package/dist/node/http/index.js.map +1 -0
  520. package/dist/node/http/node.d.ts +78 -0
  521. package/dist/node/http/node.d.ts.map +1 -0
  522. package/dist/node/http/node.js +291 -0
  523. package/dist/node/http/node.js.map +1 -0
  524. package/dist/node/http/request.d.ts +60 -0
  525. package/dist/node/http/request.d.ts.map +1 -0
  526. package/dist/node/http/request.js +118 -0
  527. package/dist/node/http/request.js.map +1 -0
  528. package/dist/node/http/response.d.ts +63 -0
  529. package/dist/node/http/response.d.ts.map +1 -0
  530. package/dist/node/http/response.js +202 -0
  531. package/dist/node/http/response.js.map +1 -0
  532. package/dist/node/http/router.d.ts +132 -0
  533. package/dist/node/http/router.d.ts.map +1 -0
  534. package/dist/node/http/router.js +267 -0
  535. package/dist/node/http/router.js.map +1 -0
  536. package/dist/node/http/upgrades.d.ts +61 -0
  537. package/dist/node/http/upgrades.d.ts.map +1 -0
  538. package/dist/node/http/upgrades.js +192 -0
  539. package/dist/node/http/upgrades.js.map +1 -0
  540. package/dist/node/plugins/base-inputs.d.ts +14 -0
  541. package/dist/node/plugins/base-inputs.d.ts.map +1 -0
  542. package/dist/node/plugins/base-inputs.js +33 -0
  543. package/dist/node/plugins/base-inputs.js.map +1 -0
  544. package/dist/node/plugins/build.d.ts +77 -0
  545. package/dist/node/plugins/build.d.ts.map +1 -0
  546. package/dist/node/plugins/build.js +576 -0
  547. package/dist/node/plugins/build.js.map +1 -0
  548. package/dist/node/plugins/css-modules.d.ts +13 -0
  549. package/dist/node/plugins/css-modules.d.ts.map +1 -0
  550. package/dist/node/plugins/css-modules.js +58 -0
  551. package/dist/node/plugins/css-modules.js.map +1 -0
  552. package/dist/node/plugins/discover.d.ts +67 -0
  553. package/dist/node/plugins/discover.d.ts.map +1 -0
  554. package/dist/node/plugins/discover.js +369 -0
  555. package/dist/node/plugins/discover.js.map +1 -0
  556. package/dist/node/plugins/evaluate.d.ts +33 -0
  557. package/dist/node/plugins/evaluate.d.ts.map +1 -0
  558. package/dist/node/plugins/evaluate.js +121 -0
  559. package/dist/node/plugins/evaluate.js.map +1 -0
  560. package/dist/node/plugins/index.d.ts +11 -0
  561. package/dist/node/plugins/index.d.ts.map +1 -0
  562. package/dist/node/plugins/index.js +13 -0
  563. package/dist/node/plugins/index.js.map +1 -0
  564. package/dist/node/plugins/install.d.ts +38 -0
  565. package/dist/node/plugins/install.d.ts.map +1 -0
  566. package/dist/node/plugins/install.js +213 -0
  567. package/dist/node/plugins/install.js.map +1 -0
  568. package/dist/node/plugins/plugins.d.ts +162 -0
  569. package/dist/node/plugins/plugins.d.ts.map +1 -0
  570. package/dist/node/plugins/plugins.js +244 -0
  571. package/dist/node/plugins/plugins.js.map +1 -0
  572. package/dist/node/plugins/runtime.d.ts +57 -0
  573. package/dist/node/plugins/runtime.d.ts.map +1 -0
  574. package/dist/node/plugins/runtime.js +92 -0
  575. package/dist/node/plugins/runtime.js.map +1 -0
  576. package/dist/node/plugins/stack.d.ts +16 -0
  577. package/dist/node/plugins/stack.d.ts.map +1 -0
  578. package/dist/node/plugins/stack.js +61 -0
  579. package/dist/node/plugins/stack.js.map +1 -0
  580. package/dist/node/plugins/testing.d.ts +58 -0
  581. package/dist/node/plugins/testing.d.ts.map +1 -0
  582. package/dist/node/plugins/testing.js +210 -0
  583. package/dist/node/plugins/testing.js.map +1 -0
  584. package/dist/node/plugins/watcher.d.ts +69 -0
  585. package/dist/node/plugins/watcher.d.ts.map +1 -0
  586. package/dist/node/plugins/watcher.js +622 -0
  587. package/dist/node/plugins/watcher.js.map +1 -0
  588. package/dist/node/surfaces/bundle.d.ts +31 -0
  589. package/dist/node/surfaces/bundle.d.ts.map +1 -0
  590. package/dist/node/surfaces/bundle.js +118 -0
  591. package/dist/node/surfaces/bundle.js.map +1 -0
  592. package/dist/node/surfaces/current.d.ts +17 -0
  593. package/dist/node/surfaces/current.d.ts.map +1 -0
  594. package/dist/node/surfaces/current.js +54 -0
  595. package/dist/node/surfaces/current.js.map +1 -0
  596. package/dist/node/surfaces/index.d.ts +6 -0
  597. package/dist/node/surfaces/index.d.ts.map +1 -0
  598. package/dist/node/surfaces/index.js +6 -0
  599. package/dist/node/surfaces/index.js.map +1 -0
  600. package/dist/node/surfaces/published.d.ts +27 -0
  601. package/dist/node/surfaces/published.d.ts.map +1 -0
  602. package/dist/node/surfaces/published.js +142 -0
  603. package/dist/node/surfaces/published.js.map +1 -0
  604. package/dist/node/surfaces/served.d.ts +15 -0
  605. package/dist/node/surfaces/served.d.ts.map +1 -0
  606. package/dist/node/surfaces/served.js +42 -0
  607. package/dist/node/surfaces/served.js.map +1 -0
  608. package/dist/node/surfaces/surface-build.d.ts +53 -0
  609. package/dist/node/surfaces/surface-build.d.ts.map +1 -0
  610. package/dist/node/surfaces/surface-build.js +105 -0
  611. package/dist/node/surfaces/surface-build.js.map +1 -0
  612. package/dist/node/surfaces/tui.d.ts +40 -0
  613. package/dist/node/surfaces/tui.d.ts.map +1 -0
  614. package/dist/node/surfaces/tui.js +55 -0
  615. package/dist/node/surfaces/tui.js.map +1 -0
  616. package/dist/node/surfaces/web.d.ts +56 -0
  617. package/dist/node/surfaces/web.d.ts.map +1 -0
  618. package/dist/node/surfaces/web.js +108 -0
  619. package/dist/node/surfaces/web.js.map +1 -0
  620. package/dist/node/tui/actions.d.ts +49 -0
  621. package/dist/node/tui/actions.d.ts.map +1 -0
  622. package/dist/node/tui/actions.js +195 -0
  623. package/dist/node/tui/actions.js.map +1 -0
  624. package/dist/node/tui/credentials.d.ts +17 -0
  625. package/dist/node/tui/credentials.d.ts.map +1 -0
  626. package/dist/node/tui/credentials.js +54 -0
  627. package/dist/node/tui/credentials.js.map +1 -0
  628. package/dist/node/tui/filter.d.ts +5 -0
  629. package/dist/node/tui/filter.d.ts.map +1 -0
  630. package/dist/node/tui/filter.js +79 -0
  631. package/dist/node/tui/filter.js.map +1 -0
  632. package/dist/node/tui/index.d.ts +6 -0
  633. package/dist/node/tui/index.d.ts.map +1 -0
  634. package/dist/node/tui/index.js +6 -0
  635. package/dist/node/tui/index.js.map +1 -0
  636. package/dist/node/tui/launcher.d.ts +40 -0
  637. package/dist/node/tui/launcher.d.ts.map +1 -0
  638. package/dist/node/tui/launcher.js +439 -0
  639. package/dist/node/tui/launcher.js.map +1 -0
  640. package/dist/node/tui/pipe.d.ts +18 -0
  641. package/dist/node/tui/pipe.d.ts.map +1 -0
  642. package/dist/node/tui/pipe.js +134 -0
  643. package/dist/node/tui/pipe.js.map +1 -0
  644. package/dist/node/tui/sandbox.d.ts +54 -0
  645. package/dist/node/tui/sandbox.d.ts.map +1 -0
  646. package/dist/node/tui/sandbox.js +431 -0
  647. package/dist/node/tui/sandbox.js.map +1 -0
  648. package/dist/node/workers/base.d.ts +30 -0
  649. package/dist/node/workers/base.d.ts.map +1 -0
  650. package/dist/node/workers/base.js +255 -0
  651. package/dist/node/workers/base.js.map +1 -0
  652. package/dist/node/workers/child.d.ts +4 -0
  653. package/dist/node/workers/child.d.ts.map +1 -0
  654. package/dist/node/workers/child.js +6 -0
  655. package/dist/node/workers/child.js.map +1 -0
  656. package/dist/node/workers/control.d.ts +83 -0
  657. package/dist/node/workers/control.d.ts.map +1 -0
  658. package/dist/node/workers/control.js +77 -0
  659. package/dist/node/workers/control.js.map +1 -0
  660. package/dist/node/workers/index.d.ts +4 -0
  661. package/dist/node/workers/index.d.ts.map +1 -0
  662. package/dist/node/workers/index.js +7 -0
  663. package/dist/node/workers/index.js.map +1 -0
  664. package/dist/node/workers/lock.d.ts +30 -0
  665. package/dist/node/workers/lock.d.ts.map +1 -0
  666. package/dist/node/workers/lock.js +180 -0
  667. package/dist/node/workers/lock.js.map +1 -0
  668. package/dist/node/workers/main.d.ts +46 -0
  669. package/dist/node/workers/main.d.ts.map +1 -0
  670. package/dist/node/workers/main.js +230 -0
  671. package/dist/node/workers/main.js.map +1 -0
  672. package/dist/node/workers/process.d.ts +42 -0
  673. package/dist/node/workers/process.d.ts.map +1 -0
  674. package/dist/node/workers/process.js +125 -0
  675. package/dist/node/workers/process.js.map +1 -0
  676. package/dist/node/workers/workers.d.ts +122 -0
  677. package/dist/node/workers/workers.d.ts.map +1 -0
  678. package/dist/node/workers/workers.js +677 -0
  679. package/dist/node/workers/workers.js.map +1 -0
  680. package/dist/output.d.ts +1 -1
  681. package/dist/output.d.ts.map +1 -1
  682. package/dist/output.js +4 -2
  683. package/dist/output.js.map +1 -1
  684. package/dist/react/hooks.d.ts +43 -0
  685. package/dist/react/hooks.d.ts.map +1 -0
  686. package/dist/react/hooks.js +82 -0
  687. package/dist/react/hooks.js.map +1 -0
  688. package/dist/react/index.d.ts +3 -0
  689. package/dist/react/index.d.ts.map +1 -0
  690. package/dist/react/index.js +4 -0
  691. package/dist/react/index.js.map +1 -0
  692. package/dist/react/stores.d.ts +9 -0
  693. package/dist/react/stores.d.ts.map +1 -0
  694. package/dist/react/stores.js +37 -0
  695. package/dist/react/stores.js.map +1 -0
  696. package/dist/registries/contribution.d.ts +50 -0
  697. package/dist/registries/contribution.d.ts.map +1 -0
  698. package/dist/registries/contribution.js +129 -0
  699. package/dist/registries/contribution.js.map +1 -0
  700. package/dist/registries/entries.d.ts +18 -0
  701. package/dist/registries/entries.d.ts.map +1 -0
  702. package/dist/registries/entries.js +42 -0
  703. package/dist/registries/entries.js.map +1 -0
  704. package/dist/registries/index.d.ts +3 -0
  705. package/dist/registries/index.d.ts.map +1 -0
  706. package/dist/registries/index.js +5 -0
  707. package/dist/registries/index.js.map +1 -0
  708. package/dist/registries/internal.d.ts +4 -0
  709. package/dist/registries/internal.d.ts.map +1 -0
  710. package/dist/registries/internal.js +5 -0
  711. package/dist/registries/internal.js.map +1 -0
  712. package/dist/registries/record.d.ts +115 -0
  713. package/dist/registries/record.d.ts.map +1 -0
  714. package/dist/registries/record.js +283 -0
  715. package/dist/registries/record.js.map +1 -0
  716. package/dist/registries/registry.d.ts +74 -0
  717. package/dist/registries/registry.d.ts.map +1 -0
  718. package/dist/registries/registry.js +14 -0
  719. package/dist/registries/registry.js.map +1 -0
  720. package/dist/registries/value.d.ts +48 -0
  721. package/dist/registries/value.d.ts.map +1 -0
  722. package/dist/registries/value.js +224 -0
  723. package/dist/registries/value.js.map +1 -0
  724. package/dist/remote/calls.d.ts +25 -0
  725. package/dist/remote/calls.d.ts.map +1 -0
  726. package/dist/remote/calls.js +62 -0
  727. package/dist/remote/calls.js.map +1 -0
  728. package/dist/remote/consumer.d.ts +43 -0
  729. package/dist/remote/consumer.d.ts.map +1 -0
  730. package/dist/remote/consumer.js +350 -0
  731. package/dist/remote/consumer.js.map +1 -0
  732. package/dist/remote/hold.d.ts +141 -0
  733. package/dist/remote/hold.d.ts.map +1 -0
  734. package/dist/remote/hold.js +579 -0
  735. package/dist/remote/hold.js.map +1 -0
  736. package/dist/remote/host-link.d.ts +77 -0
  737. package/dist/remote/host-link.d.ts.map +1 -0
  738. package/dist/remote/host-link.js +184 -0
  739. package/dist/remote/host-link.js.map +1 -0
  740. package/dist/remote/internal.d.ts +6 -0
  741. package/dist/remote/internal.d.ts.map +1 -0
  742. package/dist/remote/internal.js +6 -0
  743. package/dist/remote/internal.js.map +1 -0
  744. package/dist/remote/path.d.ts +46 -0
  745. package/dist/remote/path.d.ts.map +1 -0
  746. package/dist/remote/path.js +73 -0
  747. package/dist/remote/path.js.map +1 -0
  748. package/dist/remote/provider.d.ts +89 -0
  749. package/dist/remote/provider.d.ts.map +1 -0
  750. package/dist/remote/provider.js +597 -0
  751. package/dist/remote/provider.js.map +1 -0
  752. package/dist/remote/relay.d.ts +69 -0
  753. package/dist/remote/relay.d.ts.map +1 -0
  754. package/dist/remote/relay.js +219 -0
  755. package/dist/remote/relay.js.map +1 -0
  756. package/dist/remote/remote-object.d.ts +138 -0
  757. package/dist/remote/remote-object.d.ts.map +1 -0
  758. package/dist/remote/remote-object.js +492 -0
  759. package/dist/remote/remote-object.js.map +1 -0
  760. package/dist/remote/replica.d.ts +59 -0
  761. package/dist/remote/replica.d.ts.map +1 -0
  762. package/dist/remote/replica.js +125 -0
  763. package/dist/remote/replica.js.map +1 -0
  764. package/dist/sqlite/cloudflare.d.ts +2 -0
  765. package/dist/sqlite/cloudflare.d.ts.map +1 -1
  766. package/dist/sqlite/cloudflare.js +10 -0
  767. package/dist/sqlite/cloudflare.js.map +1 -1
  768. package/dist/sqlite/database.d.ts +5 -2
  769. package/dist/sqlite/database.d.ts.map +1 -1
  770. package/dist/sqlite/database.js.map +1 -1
  771. package/dist/sqlite/node.d.ts +13 -2
  772. package/dist/sqlite/node.d.ts.map +1 -1
  773. package/dist/sqlite/node.js +31 -8
  774. package/dist/sqlite/node.js.map +1 -1
  775. package/dist/state/batch.d.ts +64 -0
  776. package/dist/state/batch.d.ts.map +1 -0
  777. package/dist/state/batch.js +164 -0
  778. package/dist/state/batch.js.map +1 -0
  779. package/dist/state/derive.d.ts +52 -0
  780. package/dist/state/derive.d.ts.map +1 -0
  781. package/dist/state/derive.js +182 -0
  782. package/dist/state/derive.js.map +1 -0
  783. package/dist/state/index.d.ts +6 -0
  784. package/dist/state/index.d.ts.map +1 -0
  785. package/dist/state/index.js +4 -0
  786. package/dist/state/index.js.map +1 -0
  787. package/dist/state/internal.d.ts +6 -0
  788. package/dist/state/internal.d.ts.map +1 -0
  789. package/dist/state/internal.js +8 -0
  790. package/dist/state/internal.js.map +1 -0
  791. package/dist/state/native-source.d.ts +106 -0
  792. package/dist/state/native-source.d.ts.map +1 -0
  793. package/dist/state/native-source.js +240 -0
  794. package/dist/state/native-source.js.map +1 -0
  795. package/dist/state/watchable.d.ts +114 -0
  796. package/dist/state/watchable.d.ts.map +1 -0
  797. package/dist/state/watchable.js +156 -0
  798. package/dist/state/watchable.js.map +1 -0
  799. package/dist/state/writable.d.ts +32 -0
  800. package/dist/state/writable.d.ts.map +1 -0
  801. package/dist/state/writable.js +49 -0
  802. package/dist/state/writable.js.map +1 -0
  803. package/dist/store/adapter.d.ts +67 -0
  804. package/dist/store/adapter.d.ts.map +1 -0
  805. package/dist/store/adapter.js +118 -0
  806. package/dist/store/adapter.js.map +1 -0
  807. package/dist/store/allocator.d.ts +17 -0
  808. package/dist/store/allocator.d.ts.map +1 -0
  809. package/dist/store/allocator.js +30 -0
  810. package/dist/store/allocator.js.map +1 -0
  811. package/dist/store/applier.d.ts +8 -0
  812. package/dist/store/applier.d.ts.map +1 -0
  813. package/dist/store/applier.js +375 -0
  814. package/dist/store/applier.js.map +1 -0
  815. package/dist/store/apply-batch.d.ts +12 -0
  816. package/dist/store/apply-batch.d.ts.map +1 -0
  817. package/dist/store/apply-batch.js +83 -0
  818. package/dist/store/apply-batch.js.map +1 -0
  819. package/dist/store/archive.d.ts +32 -0
  820. package/dist/store/archive.d.ts.map +1 -0
  821. package/dist/store/archive.js +130 -0
  822. package/dist/store/archive.js.map +1 -0
  823. package/dist/store/backend.d.ts +10 -0
  824. package/dist/store/backend.d.ts.map +1 -0
  825. package/dist/store/backend.js +15 -0
  826. package/dist/store/backend.js.map +1 -0
  827. package/dist/store/catalog.d.ts +24 -0
  828. package/dist/store/catalog.d.ts.map +1 -0
  829. package/dist/store/catalog.js +17 -0
  830. package/dist/store/catalog.js.map +1 -0
  831. package/dist/store/claims.d.ts +23 -0
  832. package/dist/store/claims.d.ts.map +1 -0
  833. package/dist/store/claims.js +65 -0
  834. package/dist/store/claims.js.map +1 -0
  835. package/dist/store/columns.d.ts +77 -0
  836. package/dist/store/columns.d.ts.map +1 -0
  837. package/dist/store/columns.js +77 -0
  838. package/dist/store/columns.js.map +1 -0
  839. package/dist/store/engine.d.ts +176 -0
  840. package/dist/store/engine.d.ts.map +1 -0
  841. package/dist/store/engine.js +283 -0
  842. package/dist/store/engine.js.map +1 -0
  843. package/dist/store/evaluate.d.ts +17 -0
  844. package/dist/store/evaluate.d.ts.map +1 -0
  845. package/dist/store/evaluate.js +128 -0
  846. package/dist/store/evaluate.js.map +1 -0
  847. package/dist/store/export.d.ts +17 -0
  848. package/dist/store/export.d.ts.map +1 -0
  849. package/dist/store/export.js +200 -0
  850. package/dist/store/export.js.map +1 -0
  851. package/dist/store/expression.d.ts +150 -0
  852. package/dist/store/expression.d.ts.map +1 -0
  853. package/dist/store/expression.js +268 -0
  854. package/dist/store/expression.js.map +1 -0
  855. package/dist/store/import.d.ts +10 -0
  856. package/dist/store/import.d.ts.map +1 -0
  857. package/dist/store/import.js +276 -0
  858. package/dist/store/import.js.map +1 -0
  859. package/dist/store/index.d.ts +16 -0
  860. package/dist/store/index.d.ts.map +1 -0
  861. package/dist/store/index.js +13 -0
  862. package/dist/store/index.js.map +1 -0
  863. package/dist/store/json-column.d.ts +33 -0
  864. package/dist/store/json-column.d.ts.map +1 -0
  865. package/dist/store/json-column.js +62 -0
  866. package/dist/store/json-column.js.map +1 -0
  867. package/dist/store/jsonl.d.ts +9 -0
  868. package/dist/store/jsonl.d.ts.map +1 -0
  869. package/dist/store/jsonl.js +61 -0
  870. package/dist/store/jsonl.js.map +1 -0
  871. package/dist/store/live-query.d.ts +108 -0
  872. package/dist/store/live-query.d.ts.map +1 -0
  873. package/dist/store/live-query.js +254 -0
  874. package/dist/store/live-query.js.map +1 -0
  875. package/dist/store/outbox.d.ts +26 -0
  876. package/dist/store/outbox.d.ts.map +1 -0
  877. package/dist/store/outbox.js +80 -0
  878. package/dist/store/outbox.js.map +1 -0
  879. package/dist/store/query.d.ts +39 -0
  880. package/dist/store/query.d.ts.map +1 -0
  881. package/dist/store/query.js +97 -0
  882. package/dist/store/query.js.map +1 -0
  883. package/dist/store/refusal.d.ts +15 -0
  884. package/dist/store/refusal.d.ts.map +1 -0
  885. package/dist/store/refusal.js +36 -0
  886. package/dist/store/refusal.js.map +1 -0
  887. package/dist/store/rows.d.ts +80 -0
  888. package/dist/store/rows.d.ts.map +1 -0
  889. package/dist/store/rows.js +183 -0
  890. package/dist/store/rows.js.map +1 -0
  891. package/dist/store/schema.d.ts +25 -0
  892. package/dist/store/schema.d.ts.map +1 -0
  893. package/dist/store/schema.js +115 -0
  894. package/dist/store/schema.js.map +1 -0
  895. package/dist/store/sql.d.ts +73 -0
  896. package/dist/store/sql.d.ts.map +1 -0
  897. package/dist/store/sql.js +234 -0
  898. package/dist/store/sql.js.map +1 -0
  899. package/dist/store/step.d.ts +50 -0
  900. package/dist/store/step.d.ts.map +1 -0
  901. package/dist/store/step.js +52 -0
  902. package/dist/store/step.js.map +1 -0
  903. package/dist/store/store.d.ts +171 -0
  904. package/dist/store/store.d.ts.map +1 -0
  905. package/dist/store/store.js +818 -0
  906. package/dist/store/store.js.map +1 -0
  907. package/dist/store/table-changes.d.ts +29 -0
  908. package/dist/store/table-changes.d.ts.map +1 -0
  909. package/dist/store/table-changes.js +102 -0
  910. package/dist/store/table-changes.js.map +1 -0
  911. package/dist/store/table-evolve.d.ts +74 -0
  912. package/dist/store/table-evolve.d.ts.map +1 -0
  913. package/dist/store/table-evolve.js +201 -0
  914. package/dist/store/table-evolve.js.map +1 -0
  915. package/dist/store/table-handle.d.ts +73 -0
  916. package/dist/store/table-handle.d.ts.map +1 -0
  917. package/dist/store/table-handle.js +101 -0
  918. package/dist/store/table-handle.js.map +1 -0
  919. package/dist/store/table-history.d.ts +75 -0
  920. package/dist/store/table-history.d.ts.map +1 -0
  921. package/dist/store/table-history.js +42 -0
  922. package/dist/store/table-history.js.map +1 -0
  923. package/dist/store/table-migration.d.ts +16 -0
  924. package/dist/store/table-migration.d.ts.map +1 -0
  925. package/dist/store/table-migration.js +202 -0
  926. package/dist/store/table-migration.js.map +1 -0
  927. package/dist/store/table-writes.d.ts +125 -0
  928. package/dist/store/table-writes.d.ts.map +1 -0
  929. package/dist/store/table-writes.js +170 -0
  930. package/dist/store/table-writes.js.map +1 -0
  931. package/dist/store/table.d.ts +80 -0
  932. package/dist/store/table.d.ts.map +1 -0
  933. package/dist/store/table.js +103 -0
  934. package/dist/store/table.js.map +1 -0
  935. package/dist/store/text.d.ts +14 -0
  936. package/dist/store/text.d.ts.map +1 -0
  937. package/dist/store/text.js +51 -0
  938. package/dist/store/text.js.map +1 -0
  939. package/dist/store/writes.d.ts +5 -0
  940. package/dist/store/writes.d.ts.map +1 -0
  941. package/dist/store/writes.js +4 -0
  942. package/dist/store/writes.js.map +1 -0
  943. package/dist/surfaces/active-language.d.ts +20 -0
  944. package/dist/surfaces/active-language.d.ts.map +1 -0
  945. package/dist/surfaces/active-language.js +78 -0
  946. package/dist/surfaces/active-language.js.map +1 -0
  947. package/dist/surfaces/active-theme.d.ts +16 -0
  948. package/dist/surfaces/active-theme.d.ts.map +1 -0
  949. package/dist/surfaces/active-theme.js +47 -0
  950. package/dist/surfaces/active-theme.js.map +1 -0
  951. package/dist/surfaces/client.d.ts +96 -0
  952. package/dist/surfaces/client.d.ts.map +1 -0
  953. package/dist/surfaces/client.js +264 -0
  954. package/dist/surfaces/client.js.map +1 -0
  955. package/dist/surfaces/connection.d.ts +49 -0
  956. package/dist/surfaces/connection.d.ts.map +1 -0
  957. package/dist/surfaces/connection.js +142 -0
  958. package/dist/surfaces/connection.js.map +1 -0
  959. package/dist/surfaces/format.d.ts +5 -0
  960. package/dist/surfaces/format.d.ts.map +1 -0
  961. package/dist/surfaces/format.js +37 -0
  962. package/dist/surfaces/format.js.map +1 -0
  963. package/dist/surfaces/index.d.ts +15 -0
  964. package/dist/surfaces/index.d.ts.map +1 -0
  965. package/dist/surfaces/index.js +18 -0
  966. package/dist/surfaces/index.js.map +1 -0
  967. package/dist/surfaces/language.d.ts +53 -0
  968. package/dist/surfaces/language.d.ts.map +1 -0
  969. package/dist/surfaces/language.js +74 -0
  970. package/dist/surfaces/language.js.map +1 -0
  971. package/dist/surfaces/loaded.d.ts +42 -0
  972. package/dist/surfaces/loaded.d.ts.map +1 -0
  973. package/dist/surfaces/loaded.js +116 -0
  974. package/dist/surfaces/loaded.js.map +1 -0
  975. package/dist/surfaces/locale-choice.d.ts +25 -0
  976. package/dist/surfaces/locale-choice.d.ts.map +1 -0
  977. package/dist/surfaces/locale-choice.js +14 -0
  978. package/dist/surfaces/locale-choice.js.map +1 -0
  979. package/dist/surfaces/messages.d.ts +67 -0
  980. package/dist/surfaces/messages.d.ts.map +1 -0
  981. package/dist/surfaces/messages.js +112 -0
  982. package/dist/surfaces/messages.js.map +1 -0
  983. package/dist/surfaces/page-state.d.ts +14 -0
  984. package/dist/surfaces/page-state.d.ts.map +1 -0
  985. package/dist/surfaces/page-state.js +43 -0
  986. package/dist/surfaces/page-state.js.map +1 -0
  987. package/dist/surfaces/preference.d.ts +32 -0
  988. package/dist/surfaces/preference.d.ts.map +1 -0
  989. package/dist/surfaces/preference.js +72 -0
  990. package/dist/surfaces/preference.js.map +1 -0
  991. package/dist/surfaces/registered.d.ts +33 -0
  992. package/dist/surfaces/registered.d.ts.map +1 -0
  993. package/dist/surfaces/registered.js +51 -0
  994. package/dist/surfaces/registered.js.map +1 -0
  995. package/dist/surfaces/scripts.d.ts +84 -0
  996. package/dist/surfaces/scripts.d.ts.map +1 -0
  997. package/dist/surfaces/scripts.js +28 -0
  998. package/dist/surfaces/scripts.js.map +1 -0
  999. package/dist/surfaces/theme-choice.d.ts +31 -0
  1000. package/dist/surfaces/theme-choice.d.ts.map +1 -0
  1001. package/dist/surfaces/theme-choice.js +18 -0
  1002. package/dist/surfaces/theme-choice.js.map +1 -0
  1003. package/dist/surfaces/themes.d.ts +43 -0
  1004. package/dist/surfaces/themes.d.ts.map +1 -0
  1005. package/dist/surfaces/themes.js +110 -0
  1006. package/dist/surfaces/themes.js.map +1 -0
  1007. package/dist/surfaces/translations.d.ts +29 -0
  1008. package/dist/surfaces/translations.d.ts.map +1 -0
  1009. package/dist/surfaces/translations.js +57 -0
  1010. package/dist/surfaces/translations.js.map +1 -0
  1011. package/dist/sync/batch.d.ts +18 -0
  1012. package/dist/sync/batch.d.ts.map +1 -0
  1013. package/dist/sync/batch.js +125 -0
  1014. package/dist/sync/batch.js.map +1 -0
  1015. package/dist/sync/client.d.ts +166 -0
  1016. package/dist/sync/client.d.ts.map +1 -0
  1017. package/dist/sync/client.js +438 -0
  1018. package/dist/sync/client.js.map +1 -0
  1019. package/dist/sync/files.d.ts +46 -0
  1020. package/dist/sync/files.d.ts.map +1 -0
  1021. package/dist/sync/files.js +13 -0
  1022. package/dist/sync/files.js.map +1 -0
  1023. package/dist/sync/filesystem.d.ts +37 -0
  1024. package/dist/sync/filesystem.d.ts.map +1 -0
  1025. package/dist/sync/filesystem.js +185 -0
  1026. package/dist/sync/filesystem.js.map +1 -0
  1027. package/dist/sync/index.d.ts +8 -0
  1028. package/dist/sync/index.d.ts.map +1 -0
  1029. package/dist/sync/index.js +9 -0
  1030. package/dist/sync/index.js.map +1 -0
  1031. package/dist/sync/lines.d.ts +18 -0
  1032. package/dist/sync/lines.d.ts.map +1 -0
  1033. package/dist/sync/lines.js +46 -0
  1034. package/dist/sync/lines.js.map +1 -0
  1035. package/dist/sync/remote.d.ts +130 -0
  1036. package/dist/sync/remote.d.ts.map +1 -0
  1037. package/dist/sync/remote.js +46 -0
  1038. package/dist/sync/remote.js.map +1 -0
  1039. package/dist/sync/state.d.ts +17 -0
  1040. package/dist/sync/state.d.ts.map +1 -0
  1041. package/dist/sync/state.js +40 -0
  1042. package/dist/sync/state.js.map +1 -0
  1043. package/dist/telemetry-ingest/batch.d.ts +70 -0
  1044. package/dist/telemetry-ingest/batch.d.ts.map +1 -0
  1045. package/dist/telemetry-ingest/batch.js +110 -0
  1046. package/dist/telemetry-ingest/batch.js.map +1 -0
  1047. package/dist/telemetry-ingest/facet.d.ts +21 -0
  1048. package/dist/telemetry-ingest/facet.d.ts.map +1 -0
  1049. package/dist/telemetry-ingest/facet.js +96 -0
  1050. package/dist/telemetry-ingest/facet.js.map +1 -0
  1051. package/dist/telemetry-ingest/index.d.ts +5 -0
  1052. package/dist/telemetry-ingest/index.d.ts.map +1 -0
  1053. package/dist/telemetry-ingest/index.js +8 -0
  1054. package/dist/telemetry-ingest/index.js.map +1 -0
  1055. package/dist/telemetry-ingest/recorder.d.ts +50 -0
  1056. package/dist/telemetry-ingest/recorder.d.ts.map +1 -0
  1057. package/dist/telemetry-ingest/recorder.js +298 -0
  1058. package/dist/telemetry-ingest/recorder.js.map +1 -0
  1059. package/dist/telemetry-ingest/sender.d.ts +14 -0
  1060. package/dist/telemetry-ingest/sender.d.ts.map +1 -0
  1061. package/dist/telemetry-ingest/sender.js +64 -0
  1062. package/dist/telemetry-ingest/sender.js.map +1 -0
  1063. package/dist/telemetry-sqlite/index.d.ts +13 -4
  1064. package/dist/telemetry-sqlite/index.d.ts.map +1 -1
  1065. package/dist/telemetry-sqlite/index.js +81 -241
  1066. package/dist/telemetry-sqlite/index.js.map +1 -1
  1067. package/dist/telemetry-sqlite/node.d.ts +13 -0
  1068. package/dist/telemetry-sqlite/node.d.ts.map +1 -0
  1069. package/dist/telemetry-sqlite/node.js +27 -0
  1070. package/dist/telemetry-sqlite/node.js.map +1 -0
  1071. package/dist/telemetry-sqlite/schema.d.ts +9 -0
  1072. package/dist/telemetry-sqlite/schema.d.ts.map +1 -0
  1073. package/dist/telemetry-sqlite/schema.js +61 -0
  1074. package/dist/telemetry-sqlite/schema.js.map +1 -0
  1075. package/dist/telemetry-sqlite/store.d.ts +3 -0
  1076. package/dist/telemetry-sqlite/store.d.ts.map +1 -1
  1077. package/dist/telemetry-sqlite/store.js +24 -13
  1078. package/dist/telemetry-sqlite/store.js.map +1 -1
  1079. package/dist/telemetry.d.ts +937 -0
  1080. package/dist/telemetry.d.ts.map +1 -0
  1081. package/dist/telemetry.js +470 -0
  1082. package/dist/telemetry.js.map +1 -0
  1083. package/dist/tui/bridge.d.ts +112 -0
  1084. package/dist/tui/bridge.d.ts.map +1 -0
  1085. package/dist/tui/bridge.js +9 -0
  1086. package/dist/tui/bridge.js.map +1 -0
  1087. package/dist/tui/channel.d.ts +44 -0
  1088. package/dist/tui/channel.d.ts.map +1 -0
  1089. package/dist/tui/channel.js +150 -0
  1090. package/dist/tui/channel.js.map +1 -0
  1091. package/dist/tui/frames.d.ts +5 -0
  1092. package/dist/tui/frames.d.ts.map +1 -0
  1093. package/dist/tui/frames.js +52 -0
  1094. package/dist/tui/frames.js.map +1 -0
  1095. package/dist/tui/index.d.ts +7 -0
  1096. package/dist/tui/index.d.ts.map +1 -0
  1097. package/dist/tui/index.js +8 -0
  1098. package/dist/tui/index.js.map +1 -0
  1099. package/dist/tui/runtime.d.ts +46 -0
  1100. package/dist/tui/runtime.d.ts.map +1 -0
  1101. package/dist/tui/runtime.js +101 -0
  1102. package/dist/tui/runtime.js.map +1 -0
  1103. package/dist/tui/scope.d.ts +46 -0
  1104. package/dist/tui/scope.d.ts.map +1 -0
  1105. package/dist/tui/scope.js +141 -0
  1106. package/dist/tui/scope.js.map +1 -0
  1107. package/dist/tui/terminal.d.ts +15 -0
  1108. package/dist/tui/terminal.d.ts.map +1 -0
  1109. package/dist/tui/terminal.js +37 -0
  1110. package/dist/tui/terminal.js.map +1 -0
  1111. package/dist/tui/theme.d.ts +17 -0
  1112. package/dist/tui/theme.d.ts.map +1 -0
  1113. package/dist/tui/theme.js +38 -0
  1114. package/dist/tui/theme.js.map +1 -0
  1115. package/dist/watch.d.ts +194 -0
  1116. package/dist/watch.d.ts.map +1 -0
  1117. package/dist/watch.js +383 -0
  1118. package/dist/watch.js.map +1 -0
  1119. package/dist/web/environment.d.ts +4 -0
  1120. package/dist/web/environment.d.ts.map +1 -0
  1121. package/dist/web/environment.js +37 -0
  1122. package/dist/web/environment.js.map +1 -0
  1123. package/dist/web/index.d.ts +5 -0
  1124. package/dist/web/index.d.ts.map +1 -0
  1125. package/dist/web/index.js +7 -0
  1126. package/dist/web/index.js.map +1 -0
  1127. package/dist/web/language.d.ts +7 -0
  1128. package/dist/web/language.d.ts.map +1 -0
  1129. package/dist/web/language.js +21 -0
  1130. package/dist/web/language.js.map +1 -0
  1131. package/dist/web/page.d.ts +29 -0
  1132. package/dist/web/page.d.ts.map +1 -0
  1133. package/dist/web/page.js +92 -0
  1134. package/dist/web/page.js.map +1 -0
  1135. package/dist/web/scripts.d.ts +23 -0
  1136. package/dist/web/scripts.d.ts.map +1 -0
  1137. package/dist/web/scripts.js +50 -0
  1138. package/dist/web/scripts.js.map +1 -0
  1139. package/dist/web/styles.d.ts +17 -0
  1140. package/dist/web/styles.d.ts.map +1 -0
  1141. package/dist/web/styles.js +218 -0
  1142. package/dist/web/styles.js.map +1 -0
  1143. package/dist/web/themes.d.ts +6 -0
  1144. package/dist/web/themes.d.ts.map +1 -0
  1145. package/dist/web/themes.js +31 -0
  1146. package/dist/web/themes.js.map +1 -0
  1147. package/docs/benchmarks.md +1036 -0
  1148. package/docs/decisions.md +3436 -0
  1149. package/docs/dependencies/book.md +1671 -0
  1150. package/docs/dependencies/index.html +2641 -0
  1151. package/docs/dependencies/model.md +330 -0
  1152. package/docs/design.md +3065 -0
  1153. package/docs/durable-observers/book.md +432 -0
  1154. package/docs/durable-observers/index.html +517 -0
  1155. package/docs/flow-control/book.md +333 -0
  1156. package/docs/flow-control/fold/index.html +265 -0
  1157. package/docs/flow-control/index.html +548 -0
  1158. package/docs/flow-control/window/index.html +228 -0
  1159. package/docs/guide-plugins-hosts/book.md +957 -0
  1160. package/docs/guide-plugins-hosts/index.html +952 -0
  1161. package/docs/http-workers/book.md +378 -0
  1162. package/docs/http-workers/index.html +515 -0
  1163. package/docs/i18n/book.md +217 -0
  1164. package/docs/i18n/index.html +344 -0
  1165. package/docs/layer-1.md +311 -0
  1166. package/docs/layer-2.md +216 -0
  1167. package/docs/p3-features/README.md +6 -0
  1168. package/docs/p3-features/book.md +478 -0
  1169. package/docs/plugin-authoring.md +276 -0
  1170. package/docs/plugin-model/book.md +186 -0
  1171. package/docs/plugin-model/index.html +310 -0
  1172. package/docs/plugin-primer/book.md +273 -0
  1173. package/docs/plugin-primer/index.html +430 -0
  1174. package/docs/slice-1.md +236 -0
  1175. package/docs/slice-10.md +288 -0
  1176. package/docs/slice-11.md +114 -0
  1177. package/docs/slice-12.md +132 -0
  1178. package/docs/slice-13.md +121 -0
  1179. package/docs/slice-2.md +174 -0
  1180. package/docs/slice-3a.md +296 -0
  1181. package/docs/slice-3b.md +197 -0
  1182. package/docs/slice-4.md +146 -0
  1183. package/docs/slice-4a.md +418 -0
  1184. package/docs/slice-4b.md +208 -0
  1185. package/docs/slice-5.md +281 -0
  1186. package/docs/slice-6a.md +676 -0
  1187. package/docs/slice-6b.md +332 -0
  1188. package/docs/slice-7a.md +130 -0
  1189. package/docs/slice-7b/book.md +608 -0
  1190. package/docs/slice-7b/index.html +842 -0
  1191. package/docs/slice-7b.md +255 -0
  1192. package/docs/slice-7c.md +165 -0
  1193. package/docs/slice-8.md +194 -0
  1194. package/docs/slice-9.md +110 -0
  1195. package/docs/slices.md +241 -0
  1196. package/docs/store/book.md +670 -0
  1197. package/docs/store/index.html +861 -0
  1198. package/docs/store/walkthrough.md +193 -0
  1199. package/docs/theming/book.md +223 -0
  1200. package/docs/theming/index.html +371 -0
  1201. package/docs/tutorial/book.md +2169 -0
  1202. package/docs/tutorial/index.html +2112 -0
  1203. package/docs/tutorial/screens/click-after.png +0 -0
  1204. package/docs/tutorial/screens/click-before.png +0 -0
  1205. package/docs/tutorial/screens/edited.png +0 -0
  1206. package/docs/tutorial/screens/french.png +0 -0
  1207. package/docs/tutorial/screens/harbor.png +0 -0
  1208. package/docs/tutorial/screens/page.png +0 -0
  1209. package/docs/tutorial/screens/traces-ada.png +0 -0
  1210. package/docs/tutorial/screens/traces.png +0 -0
  1211. package/package.json +114 -20
  1212. package/src/delta/README.md +69 -0
  1213. package/dist/cell.d.ts +0 -122
  1214. package/dist/cell.d.ts.map +0 -1
  1215. package/dist/cell.js +0 -356
  1216. package/dist/cell.js.map +0 -1
  1217. package/dist/cluster.d.ts +0 -27
  1218. package/dist/cluster.d.ts.map +0 -1
  1219. package/dist/cluster.js +0 -230
  1220. package/dist/cluster.js.map +0 -1
  1221. package/dist/connection.d.ts +0 -270
  1222. package/dist/connection.d.ts.map +0 -1
  1223. package/dist/connection.js +0 -1216
  1224. package/dist/connection.js.map +0 -1
  1225. package/dist/contract.d.ts +0 -208
  1226. package/dist/contract.d.ts.map +0 -1
  1227. package/dist/contract.js +0 -246
  1228. package/dist/contract.js.map +0 -1
  1229. package/dist/declare.d.ts +0 -33
  1230. package/dist/declare.d.ts.map +0 -1
  1231. package/dist/declare.js +0 -2
  1232. package/dist/declare.js.map +0 -1
  1233. package/dist/errors.d.ts +0 -28
  1234. package/dist/errors.d.ts.map +0 -1
  1235. package/dist/errors.js +0 -59
  1236. package/dist/errors.js.map +0 -1
  1237. package/dist/host.d.ts +0 -348
  1238. package/dist/host.d.ts.map +0 -1
  1239. package/dist/host.js +0 -1000
  1240. package/dist/host.js.map +0 -1
  1241. package/dist/link.d.ts +0 -107
  1242. package/dist/link.d.ts.map +0 -1
  1243. package/dist/link.js +0 -355
  1244. package/dist/link.js.map +0 -1
  1245. package/dist/loader.d.ts +0 -4
  1246. package/dist/loader.d.ts.map +0 -1
  1247. package/dist/loader.js +0 -73
  1248. package/dist/loader.js.map +0 -1
  1249. package/dist/manager.d.ts +0 -115
  1250. package/dist/manager.d.ts.map +0 -1
  1251. package/dist/manager.js +0 -345
  1252. package/dist/manager.js.map +0 -1
  1253. package/dist/node.d.ts +0 -4
  1254. package/dist/node.d.ts.map +0 -1
  1255. package/dist/node.js +0 -4
  1256. package/dist/node.js.map +0 -1
  1257. package/dist/object.d.ts +0 -438
  1258. package/dist/object.d.ts.map +0 -1
  1259. package/dist/object.js +0 -1571
  1260. package/dist/object.js.map +0 -1
  1261. package/dist/publish.d.ts +0 -5
  1262. package/dist/publish.d.ts.map +0 -1
  1263. package/dist/publish.js +0 -40
  1264. package/dist/publish.js.map +0 -1
  1265. package/dist/registry.d.ts +0 -25
  1266. package/dist/registry.d.ts.map +0 -1
  1267. package/dist/registry.js +0 -6
  1268. package/dist/registry.js.map +0 -1
  1269. package/dist/reload.d.ts +0 -126
  1270. package/dist/reload.d.ts.map +0 -1
  1271. package/dist/reload.js +0 -653
  1272. package/dist/reload.js.map +0 -1
  1273. package/dist/remote.d.ts +0 -165
  1274. package/dist/remote.d.ts.map +0 -1
  1275. package/dist/remote.js +0 -612
  1276. package/dist/remote.js.map +0 -1
  1277. package/dist/schema.d.ts +0 -21
  1278. package/dist/schema.d.ts.map +0 -1
  1279. package/dist/schema.js +0 -228
  1280. package/dist/schema.js.map +0 -1
  1281. package/dist/state.d.ts +0 -92
  1282. package/dist/state.d.ts.map +0 -1
  1283. package/dist/state.js +0 -287
  1284. package/dist/state.js.map +0 -1
  1285. package/dist/types.d.ts +0 -88
  1286. package/dist/types.d.ts.map +0 -1
  1287. package/dist/types.js +0 -2
  1288. package/dist/types.js.map +0 -1
  1289. package/dist/websocket.d.ts +0 -15
  1290. package/dist/websocket.d.ts.map +0 -1
  1291. package/dist/websocket.js +0 -16
  1292. package/dist/websocket.js.map +0 -1
  1293. package/dist/wire.d.ts +0 -216
  1294. package/dist/wire.d.ts.map +0 -1
  1295. package/dist/wire.js +0 -165
  1296. package/dist/wire.js.map +0 -1
  1297. package/docs/guide.md +0 -814
  1298. package/docs/spec.md +0 -288
  1299. package/docs/tutorial.md +0 -931
@@ -0,0 +1,146 @@
1
+ # Slice 4: the topology (draft: scope, structural changes, races)
2
+
3
+ Status: **overview** (owner, 2026-10-23: slice 4 is split into 4a and 4b). The 4a spec proper is `slice-4a.md`, which
4
+ wins where the two differ; 4b is sketched at the end of this file. Reads with `design.md` (§3 hosts, links, routes, flow control; §4 principals and
5
+ revocation; §6 cycles; §7; §19 presence; §22 wire), the decision log (R1, R2, Q1-Q5, Q13, R20, "Flow control: an
6
+ ack-clocked window", "One pending queue for slow consumers of state", "Compression at the origin", "Wire protocol"),
7
+ the carry-over (L6, L7) and slices 3a/3b. Builds on `9066b343c`.
8
+
9
+ ## The split
10
+
11
+ | Slice | Contents |
12
+ | --- | --- |
13
+ | **4a: links and relays** | IPC and WebSocket links; trusted links; parts as opaque bytes; flow control (acks, pending queue, call window); host kinds, addresses, `placement`; `route` (`authorize`, `resolve`, re-resolve with backoff); relayed holds and calls (ids mapped, principal and origin incarnation stamped, per-hop acks, `reset` and a second `bound`) |
14
+ | **4b: authority and housekeeping** | revocation (`revokedBy`, `host.revoke`, propagation to children); cycle checks across hosts (activation chain in hold headers); `host.references` (origin ids); `host.activity`; size limits per part (the admitting link's decoded limit stamped on relayed work); compression at the origin |
15
+
16
+ 4a is what the playground needs (server, workers over IPC, tabs over WebSocket). 4b adds header fields on top of 4a's.
17
+
18
+ ## 4a: structural changes the current code needs
19
+
20
+ 1. **A link carries both directions.** Slice 3 has `ProviderLink` (`accept`: serve only) and `ConsumerLink` (`connect`:
21
+ hold only). With routes, the server holds worker objects over a resolved link *and* serves the worker's holds of
22
+ server types over the same link; the worker serves the server's holds over its `connect` link *and* holds server
23
+ types over it. One per-link object with both sides (two id spaces: holds this side sent, holds it received; message
24
+ kinds are directional, so dispatch stays by kind).
25
+ 2. **Parts are opaque bytes.** Today the codecs parse every value (`params`, `args`, `value`, `ops`, snapshot members)
26
+ at decode. A relay must forward them unparsed (R1), so values become byte parts that only the end that owns them
27
+ decodes (the consumer's replica, the provider's `checkArgs`). Exception: a `hold`'s params, which a relay parses to
28
+ compute placement and authorize (small; checked by `checkParams` anyway). Sizes then come for free (`byteLength`).
29
+ 3. **Stamped header fields.** `hold` and `call` gain the origin's principal and incarnation (Q13), set by the relay
30
+ from the link the work came in on; honored only on a link from a parent; overwritten on every other link. 4b adds
31
+ the activation chain, the origin id and the decoded limit the same way.
32
+ 4. **`ack`** (consumer to provider, after applying each `bound`/`state` message) and the call window in `hello`
33
+ (`calls: N`).
34
+ 5. **Resets as `r` ops** (decided below): a `state` entry flagged `reset: true` carries `[["r", value]]` per member;
35
+ the consumer applies it like any ops (the decoder restarts at `r`). A second `bound` on a live hold stays refused
36
+ until slice 7.
37
+ 6. **`loading` on a live hold**: a relay whose upstream link dropped tells its downstream holds; 3b's consumer moves
38
+ only `failed -> loading` on it today.
39
+ 7. **The pending queue** (fold, leaf index, cap 10,000) per hold member on the provider side, and in Chord's shared
40
+ watch handle (pi first; carry-over L6).
41
+
42
+ ## 4a: races
43
+
44
+ Routes and resolve:
45
+
46
+ 1. Two holds (or a hold and a call's re-hold) for one address while its `resolve` runs: one `resolve` per address,
47
+ shared; both holds go out on the link it returns.
48
+ 2. `resolve` rejects or its signal aborts: the holds stay `loading`; re-resolve with the per-address backoff (1 s
49
+ doubling to 60 s) while holds for the address exist.
50
+ 3. Every hold for an address is released while `resolve` runs: the resolve finishes (a worker start that produced a
51
+ link finishes even if its first requester left, §3); the link is kept for the next hold. Who closes an idle worker
52
+ link is the app's supervisor (`host.activity`, 4b).
53
+ 4. `authorize` refuses: the hold fails broken `forbidden` before anything starts; a later hold with another principal
54
+ for the same address still resolves.
55
+ 5. Placement: the caller computes `placement(params)` and routes by it; the provider computes it again and refuses an
56
+ object that is not its own (`invalid/placement`, broken). A placement rule changed by a reload between the two is
57
+ that refusal (rollout handling is slice 7).
58
+ 6. A worker restarts (crash, the supervisor stopped it): its link drops; the new link's `hello` carries a new
59
+ incarnation; re-holds get fresh objects (in-memory documents gone, as 3b race 7).
60
+
61
+ Relays (server between a tab and a worker):
62
+
63
+ 7. The worker link drops with relayed holds: the server sends `loading { hold }` downstream (tabs go `loading`,
64
+ values readable, new calls park on the tab), fails relayed calls in flight with `unavailable` (never resent),
65
+ re-resolves, re-holds upstream, and forwards the new `bound` downstream (accepted while `loading`, as 3b's
66
+ re-hold; another variant is allowed). Superseded by `slice-4a.md` section 4.
67
+ 8. A tab call that crossed the `loading` notice reaches the server while the upstream link is down: answered
68
+ `unavailable` (as a call sent before a drop, §7), not parked at the relay.
69
+ 9. The tab releases a hold while its upstream re-hold or `resolve` is pending: the relay releases upstream once the
70
+ upstream hold exists; nothing is sent downstream after the release (Q1 covers a `bound` crossing it).
71
+ 10. The tab link closes: the relay releases every upstream hold it made for that tab and cancels its relayed calls.
72
+ 11. Two tabs of one principal hold the same object: two upstream holds, each with its own encoder (R1, as today).
73
+ 12. A worker sends `gone` for a relayed hold: forwarded downstream; the relay forgets the mapping.
74
+ 13. A worker holds a server type (or another worker's): it goes over its `connect` link; the server serves it or
75
+ routes it on (worker to worker through the server, §3).
76
+
77
+ Flow control:
78
+
79
+ 14. An `ack` crossing a `reset`, a `release` or a link close: acks count messages per link, not holds; an ack for a
80
+ message whose hold was released still frees its slot.
81
+ 15. A `reset { hold }` reaching the provider while the hold is pending, failed or released: ignored unless bound
82
+ (Q1).
83
+ 16. A relay with a full window towards a tab: it drops new parts for that tab's holds and marks them; when the tab
84
+ acks, it sends `reset { hold }` upstream for each marked hold and drops further parts for a hold until its new
85
+ `bound` arrives.
86
+ 17. **Torn resets:** one commit touched holds A and B of a tab; both were dropped and reset; the two new `bound`s
87
+ arrive as two messages, so a derive over A and B could see A new and B old in between. Proposal: `reset` carries
88
+ a list of holds and the provider answers with one message holding all their snapshots.
89
+ 18. The pending queue reaches its cap while the window is full: only "replace with the current value" stays; when a
90
+ slot frees, the provider sends a snapshot of the member (a second `bound` part or an `r` op; see open point 3).
91
+ 19. Calls: more than N calls from one link are parked by the caller (one FIFO per link, across references); a
92
+ cancel frees the slot at the caller when sent and at the provider when received (per-direction order keeps the
93
+ counts equal).
94
+ 20. **Call fairness at the relay:** each tab has N calls towards the server, but the server has one window of N
95
+ towards a worker for all tabs and its own calls. Proposal: the relay parks relayed calls per origin and sends
96
+ round-robin, so one flooding tab cannot occupy the worker's window; the relay holds at most tabs x N parked calls.
97
+
98
+ Links and transports:
99
+
100
+ 21. IPC: `send` while the child is exiting, `disconnect` racing a message in flight: the link closes once; messages
101
+ after close are dropped; `process.send` errors close the link.
102
+ 22. WebSocket: a frame above the transport's `maxPayload` closes the connection (code 1009); a client that stops
103
+ reading is bounded by the window (2 messages) plus the pending queue cap, not by the socket buffer.
104
+ 23. Trusted links skip the message schema check (IPC, carry-over L6) but never grant stamping: stamped fields are
105
+ honored only from the link to the parent.
106
+
107
+ ## Decided (owner, 2026-10-23)
108
+
109
+ 1. **Trusted links are an explicit option:** `accept(link, { principal, trusted: true })`, and `resolve` may return
110
+ `{ link, principal, trusted }`; default untrusted. Trusted skips the message schema check; stamping is still
111
+ honored only from the parent link.
112
+ 2. **Resets and overflow are `r` ops in an ordinary `state` message** (races 16-18): a relay's `reset { holds }`
113
+ (a list) is answered with one `state` message whose entries carry `[["r", value]]` for every member of each reset
114
+ hold that is still bound, all snapshots taken in one synchronous step, applied by the consumer in one batch (no
115
+ torn commit across the reset holds). An overflowed pending queue sends `[["r", value]]` the same way. Delta's
116
+ encoder and decoder restart at an `r`. A state entry gets the header flag `reset: true`, so a relay (which never
117
+ reads parts) knows when to stop dropping a reset hold's parts. A second `bound` stays only for slice 7 (a restarted
118
+ object may choose another variant).
119
+ 3. **Call fairness: round-robin per origin at the relay** (race 20): each origin's calls keep their order; while the
120
+ worker's window is full, origins take turns, so one flooding tab cannot starve the others.
121
+ 4. **The Durable conversation view:** known cost until Durable's windowed view (pi #11327, waiting for its reporter)
122
+ lands: a re-hold sends the whole active transcript.
123
+
124
+ ## 4b: scope and races (sketch)
125
+
126
+ - **Revocation:** `createHost({ revokedBy })`; `host.revoke(r)` ends every object and closes every link whose
127
+ principal has `r` in `revokedBy` (L1's `revocationKeys`), then propagates `r` to children (a `revoke` message on
128
+ trusted child links). Races: a hold stamped with a revoked principal already on its way to a worker (it binds, then
129
+ its link closes: R10's window); revoke during an activation; revoke while a relayed call runs (its handler is
130
+ aborted; R11 jobs later).
131
+ - **Cycles across hosts (Q5):** a hold made during an activation carries the chain of activating instance ids
132
+ (bounded); the provider refuses a hold whose chain contains the instance being activated (`invalid/cycle`); chains
133
+ from untrusted links are ignored. Races: the chain crossing a relay (copied, never extended by the relay); a cycle
134
+ through a host that restarts.
135
+ - **`host.references(Type)`** (presence, §19): who holds objects of a type, with an origin id per client (stamped by
136
+ the relay, so two tabs are two clients); a link drop is a departure.
137
+ - **`host.activity`**: `{ references, calls, jobs, lingering }` as one readable for the app's keep-alive.
138
+ - **Size limits per part (R2, Q2)**: checked from the header before decoding; an oversized part fails only its hold or
139
+ call (`too_large`); the admitting link's decoded limit is stamped on relayed work and enforced where it is decoded.
140
+ - **Compression at the origin**: a part above a threshold is compressed once by its origin (codec field in the
141
+ header); relays forward it compressed; only the end that decodes inflates it, with the decoded limit.
142
+
143
+ ## Size
144
+
145
+ Reviewers' estimate for slice 4 as a whole: 2,500-3,000 source lines; 4a carries most of it (the two-sided link, the
146
+ relay, transports, flow control).
@@ -0,0 +1,418 @@
1
+ # Slice 4a: links and relays (spec, for the owner's approval)
2
+
3
+ Status: **approved (owner, 2026-10-24)**, revised after Astra's and Fable's spec reviews (`/tmp/s4a-review-*.md`);
4
+ sections 4-6 and their races revised for the decision "Relay flow control per origin" (owner, 2026-10-24), which
5
+ replaces per-hop acks, `reset { holds }`, relay recovery and id renumbering.
6
+ Guiding rule (owner): simple, fast, correct. The single source for building 4a, together with the feature map in
7
+ `slices.md` (entries assigned to 4a), `design.md` read in full (most relevant: §3 hosts, links, routes, flow control,
8
+ recovery; §4; §7; §18; §22), the decision log (R1, Q1, Q4 and "Wire protocol", Q13, R20, "Flow control: an
9
+ ack-clocked window", "One pending queue for slow consumers of state", "Slice 4 split and first decisions", "Slice 4a
10
+ spec decisions", "Slice 4a review decisions", "Relay flow control per origin"), the carry-over (L6, L7, 4b), `slice-4.md` (the split and 4b) and the
11
+ root `AGENTS.md` style section. Builds on L1 and slices 1-3b (`9066b343c`).
12
+
13
+ ## What an app can do after this slice
14
+
15
+ ```ts
16
+ export const Server = hostKind("server");
17
+ export const Session = hostKind("session", { id: str() }); // params like a contract's
18
+
19
+ export const Notes = remote("notes", {
20
+ version: 1,
21
+ params: { session: str() },
22
+ placement: ({ session }) => Session({ id: session }), // never part of the fingerprint
23
+ variants: { … },
24
+ });
25
+
26
+ // server.ts
27
+ const server = createHost<P>({ address: Server(), principal: { kind: "server" }, onError });
28
+ server.route(Session, {
29
+ authorize: (principal, address) => principal.kind === "owner" || (principal.kind === "guest" && principal.session === address.params.id),
30
+ resolve: async (address, context) => {
31
+ const child = fork("worker.ts", [], { serialization: "advanced" }); // no `signal`: see below
32
+ child.send({ id: address.params.id, init: initFor(address.params.id) }); // the app's own start message
33
+ return { link: ipcLink(child), principal: { kind: "worker", session: address.params.id }, trusted: true };
34
+ },
35
+ });
36
+ await server.load(serverFacets, ctx);
37
+ wss.on("connection", (ws, req) => server.accept(webSocketLink(ws), { principal: authenticate(req) }, ctx));
38
+
39
+ // worker.ts: connect first (W6), then load; start data through the core facet (§18)
40
+ const { id, init } = await startMessage(process);
41
+ const worker = createHost<P>({ address: Session({ id }), principal: { kind: "worker", session: id }, onError });
42
+ worker.connect(ipcLink(process), { principal: { kind: "server" }, trusted: true }, ctx);
43
+ await worker.load([{ name: "@app/core", facet: coreWorkerFacet(init) }, ...workerFacets], ctx); // serves SessionInfo
44
+
45
+ // a tab
46
+ const tab = createHost<P>({ onError });
47
+ tab.connect(webSocketLink(new WebSocket("/chord")), { principal: { kind: "server" } }, ctx);
48
+ const notes = await tab.get(Notes, { session: "S1" }, ctx); // tab → server → route(Session) → worker
49
+ ```
50
+
51
+ Do not pass `context.abortSignal` to `fork`: `host.close` aborts it, which kills the worker and makes Node emit an
52
+ `error` event on the child process that crashes an app without a handler. Chord closes the link at `host.close`; the
53
+ worker exits when its parent link closes. `resolve` returns the link before the worker has loaded (the worker connects first, W6): a `resolve` that waited for
54
+ the worker's `load` while the worker's facets hold server types would deadlock.
55
+
56
+ ## 1. Host kinds, addresses, placement (§3)
57
+
58
+ - `hostKind(name, params?)` declares a kind of addressable host; `params` follow L1's params policy (a flat record of
59
+ required `str()`, `int()`, `bool()`, `oneOf(...)`), checked with L1's compiled params check. `Session({ id: "S1" })` is
60
+ an **address**: `{ kind, params, key }`, its key built like an identity key (`session|S1`). Two addresses are equal
61
+ when their keys are. No host-name strings in app code.
62
+ - `createHost({ address })`: an addressable host. Without an address a host is a client (§3 roles). A host without a
63
+ principal serves only local types: `serve` of a remote type makes `load` throw (owner, 2026-10-24; a remote object
64
+ is owned by the serving host's principal).
65
+ - `remote(name, { …, placement })` (an L1 change): `placement(params) => Address`, a typed function; not part of the
66
+ fingerprint (L1 normal form unchanged). `local` contracts have no placement.
67
+ - **The caller computes the address** and sends it in the `hold` (section 5). A host that relays never needs the
68
+ contract: it routes by the address alone.
69
+ - **Where a reference or an arriving hold goes** (first match):
70
+
71
+ | Case | Goes |
72
+ | --- | --- |
73
+ | the type is served here and its placement (computed here from the params) is this host's address, or it has none | here |
74
+ | a reference made here (`host.get`/`hold`, `self.get`, `ctx.get`) to a served type whose address is another host's | on, as if not served here (next rows): worker S1 reaches `Notes { session: "S2" }` through the parent |
75
+ | an arriving hold for a served type whose params place it on another host | broken `invalid/placement` (misrouted; never forwarded); the address the hold names only routes it |
76
+ | the hold names an address of a kind this host has a route for | over that route's link (the address's params checked against the kind; `authorize` first) |
77
+ | otherwise (a remote type) | over the parent link; a hold that arrived *on* the parent link is never sent back to it: `unavailable` |
78
+ | no parent link | `unavailable` (as 3a) |
79
+
80
+ - `placement` or `authorize` throwing fails the hold broken with that error; an address whose params fail the kind's
81
+ check is broken `invalid/placement`.
82
+
83
+ ## 2. Routes (§3)
84
+
85
+ ```ts
86
+ host.route(Session, {
87
+ authorize(principal: P, address: Address<typeof Session>): boolean;
88
+ resolve(address: Address<typeof Session>, context: Context): Promise<{ link: Link; principal: P; trusted?: boolean }>;
89
+ });
90
+ ```
91
+
92
+ - `route` is called by base code before `load`; one route per kind (a second throws).
93
+ - **`authorize`** runs for every hold routed over the route, with the hold's principal (section 4), before anything
94
+ starts. `false` fails the hold broken `forbidden`.
95
+ - **`resolve`** runs at most once at a time per address: the first hold starts it, later holds wait for the same
96
+ promise. The returned link becomes the address's link (section 3, role `route`). `context` is aborted only when the
97
+ host closes. A resolve whose holds were all released meanwhile finishes and its link is kept (§3).
98
+ - **Failure and re-resolve:** a rejected `resolve`, a returned link that is already closed, or the address's link
99
+ closing while holds over it exist, starts the per-address backoff (1 s doubling to 60 s; a backoff map keyed by
100
+ address, separate from objects' identity backoff). While waiting, the holds are `loading` (3b). Only a link that
101
+ completed its handshake resets the backoff. Without holds for the address, nothing is resolved again.
102
+ - A `resolve` that never settles is the app's (it bounds its own `fork`); getters still time out by their deadlines.
103
+ - Chord never closes a route link itself except at `host.close`; stopping idle workers is the app's (`host.activity`,
104
+ 4b).
105
+
106
+ ## 3. Links carry both directions (§3, §22)
107
+
108
+ - **One link object per link** replaces 3a's `ProviderLink`/`ConsumerLink` pair: one channel (handshake, codec,
109
+ checks, heartbeat), a **provider side** (holds and calls it received; ids chosen by the peer), a **consumer side**
110
+ (holds and calls this host's own references sent; ids from its own counters). The provider side is one per
111
+ **origin** (section 4): the peer's own work, and each downstream link of a peer that relays. Message kinds are
112
+ directional, so each goes to its side. Locally served holds and relayed holds are two kinds of entries in a provider
113
+ side's table; a relayed hold is never hydrated into a `RemoteObject`.
114
+ - Every link has the peer's principal, `trusted`, and a role:
115
+
116
+ | Role | Made by | A hold arriving on it acts as | This host holds over it |
117
+ | --- | --- | --- | --- |
118
+ | parent | `connect` | the hold's `principal`/`incarnation` fields when present, else the link's principal and peer incarnation | types routed to the parent (a worker's holds of server types, everything a client gets) |
119
+ | child | `accept` | the link's principal and peer incarnation (fields ignored) | nothing |
120
+ | route | `resolve` | the link's principal and peer incarnation (fields ignored) | the address's objects |
121
+
122
+ - **Trusted links** (`trusted: true` on `accept`, `connect` and `resolve`'s result; default untrusted) skip only the
123
+ `MESSAGE` schema check (carry-over L6): framing, `checkParams`, `checkArgs` and Delta decoding still run. Trust never
124
+ grants the principal fields: they are read only on the parent link.
125
+ - `host.close` closes every link (children, routes, parent), then ends objects (3a order).
126
+ - **Remote objects** (3b's `RemoteObject`) belong to a **path**: the parent, or a route address. Each new link for a
127
+ path holds every remote object of that path again (3b's re-hold); a closed link drops its tables and the objects go
128
+ `loading`.
129
+
130
+ ## 4. Principals and relays (§4, §22, R1, Q13, R20)
131
+
132
+ **Principals on holds.** A `hold` carries `principal?` and `incarnation?`. The receiver uses them only on its parent
133
+ link; everywhere else they are ignored and the link's principal and peer incarnation apply (a tab cannot claim to be
134
+ the owner). Calls carry no principal: a call runs as its hold's principal and with its hold's incarnation
135
+ (`ctx.principal`, `ctx.incarnation`), so stamping calls separately is not needed (refines R1/Q13 "hold and call").
136
+
137
+ **What a host sends** in those fields when it holds over a route link (towards a child that honours them):
138
+
139
+ | The reference was made by | `principal` | `incarnation` |
140
+ | --- | --- | --- |
141
+ | `host.get` / `host.hold` | the host's own | this host's |
142
+ | `ctx.get` in a handler | the handler's `ctx.principal` (the caller's) | the handler's `ctx.incarnation` |
143
+ | `self.get` in a remote object | that object's principal | this host's |
144
+ | `self.get` in a local object or a facet | the host's own | this host's |
145
+ | a relayed hold (below) | the arriving hold's principal | the arriving hold's incarnation |
146
+
147
+ So a guest's call on the server whose handler `ctx.get`s a worker type reaches the worker as the guest, and gets the
148
+ guest's variant. `RemoteObject` keeps its binding's caller (3b drops it today) and two references with different
149
+ principals are two remote objects.
150
+
151
+ **Upward is a boundary.** A worker's hold of a server type goes over the worker's parent link; the server ignores
152
+ principal fields from a child, so it acts as the worker, whoever the worker's handler serves. A worker that acts for a
153
+ user towards the server passes the user as data and the server object decides. Documented.
154
+
155
+ **Relays.** A host that receives a hold it cannot serve (section 1's table: a route or the parent) relays it: it holds
156
+ it again on that link (the **upstream** link) with the arriving hold's principal and incarnation, and forwards between
157
+ the two without parsing payloads (decision "Relay flow control per origin").
158
+
159
+ - **Origins.** The relay gives each downstream origin (a downstream link, and the origin its messages carry when that
160
+ link is itself a relay's) a number, one counter per host, never reused; 0 is a host's own work. Every message
161
+ upstream for that origin carries `origin` (section 5); the provider keys holds, calls, windows and acks by (link,
162
+ origin, id), and its answers carry the origin back. `origin` is honoured on every link (a worker may relay a
163
+ child's hold to its parent); principals and incarnations stay parent-only.
164
+ - **Ids are not renumbered:** an upstream hold has the downstream hold's id, under the origin's number; calls the
165
+ same. Two tabs (two holds) of one principal are two upstream holds with their own encoders (R1).
166
+ - **Nothing is parsed:** the relay routes by the hold's address and authorizes it; params, arguments, results,
167
+ snapshots and ops travel as opaque parts (section 5).
168
+ - **What the relay keeps:** per relayed hold, its upstream link and its original `hold` message (params copied once),
169
+ which routes `call`, `cancel`, `retry` and `release` upstream at once and holds again on the next link; per
170
+ downstream origin, the FIFO of the sender of each `bound`/`state` message in flight (section 6), and the set of
171
+ upstream links it relayed to.
172
+ - **Forwarding up:** `hold`, `call`, `cancel`, `retry`, `release` with the origin's number; a `hold` waiting for its
173
+ route is sent when the link exists; a `release` before that drops it. A call is forwarded at once; with no
174
+ upstream link it is answered `unavailable`.
175
+ - **Forwarding down:** a message from upstream with an origin goes to that origin's provider side, which forwards it
176
+ with its own origin (none for a tab), ids and parts unchanged: `bound`, `state`, `failed`, `loading`, `result`,
177
+ `error`, `gone`. One upstream message concerns one origin, so it is never split. **A link answers only for what was
178
+ relayed over it** (owner, 2026-10-24): every entry of a `bound` or `state`, every `failed`, `loading` and `gone` by
179
+ its hold, every `result` and `error` by its call is checked against the relay's table: the hold (the call's hold)
180
+ must be relayed over the link the answer came from; otherwise it is dropped (Q1: also an answer crossing a release).
181
+ A `bound` or `state` left with some entries is forwarded with those; left with none, it is acknowledged to that link
182
+ at once (its window would otherwise lose the slot). A message for an origin from a link the origin relayed nothing
183
+ to is ignored whole. Cost: one table lookup per entry, a copy of the entry list only when one is dropped.
184
+ - **Upstream drop:** the relay sends `loading { hold }` downstream for every relayed hold on the dropped link, fails
185
+ their relayed calls in flight with `unavailable` (never resent), re-resolves (section 2) and holds again upstream
186
+ from the kept message (same id, same origin); the new `bound` is forwarded. A `bound` on a hold the consumer has
187
+ bound already replaces its replicas in one batch, another variant allowed (3b's re-hold path, now also for live
188
+ holds); `loading` on a live hold moves it to `loading`, and on a hold still loading fails a dependent's wait at once
189
+ (R18, as a dropped link does).
190
+ - **Downstream drop:** the origin's provider side ends: its served holds are released, its relayed holds forgotten,
191
+ and every upstream link it relayed to gets one `closed { origin }`, which releases the origin's holds and aborts its
192
+ calls there. The origin's number is never used again.
193
+ - **`gone`** from upstream is forwarded; the relayed hold is forgotten.
194
+
195
+ ## 5. Messages (§22, 2b)
196
+
197
+ Changes to slice 3a's `MESSAGE` and both codecs:
198
+
199
+ - **Parts are opaque bytes:** `params`, `args`, `value` (results), `bound` member values and `state` member ops are the
200
+ UTF-8 JSON text as bytes (plus byte segments for payloads marked `bytes`). The binary codec already writes them
201
+ length-prefixed; decoding returns views of the received buffer. A part is parsed only where it is owned, right when
202
+ its message is handled (so a malformed part is still a protocol error that closes the link): the provider parses
203
+ `params` (`checkParams`) and `args` (`checkArgs`), the consumer parses results and snapshots and decodes ops. A
204
+ message naming an unknown id is ignored before its parts are parsed (Q1). The text codec, a debugging codec,
205
+ re-serializes parts at decode (accepted cost: one parse per part per relay hop).
206
+ - `hello { protocol, incarnation, calls }`: `calls` is the number of concurrent calls this side accepts (section 6).
207
+ - **`origin?`** on `hold`, `release`, `call`, `cancel`, `retry`, `ack` (towards the provider) and `bound`, `state`,
208
+ `failed`, `loading`, `result`, `error`, `gone` (back): the relay's number of the downstream origin (an integer from
209
+ 1; absent: the sender's own work). Binary codec: the kind byte's high bit, then the origin as a varint; text codec:
210
+ `["@", origin, tuple]`. The schema refuses an origin on `hello`, `ping` and `pong`.
211
+ - `hold { origin?, hold, type, version, fingerprint, params, address?, principal?, incarnation? }`: `address` is the
212
+ address the caller computed (absent for a type without placement); it routes the hold, the provider places it by
213
+ its params.
214
+ - **`bound { holds: [{ hold, variant, members, failed }] }`:** one message may bind several holds; the consumer applies
215
+ all of them in one batch. Used for first bindings and re-holds.
216
+ - `ack { origin? }`: consumer to provider, one per applied `bound` or `state` message of that origin.
217
+ - `closed { origin }`: relay to provider, the downstream origin ended: its holds are released and its calls aborted.
218
+ - `ping {}` and `pong {}`: the heartbeat (section 7).
219
+ - `PROTOCOL_VERSION` stays 1 (nothing is deployed; carry-over L6).
220
+
221
+ ## 6. Flow control (§3, decision log)
222
+
223
+ **The window.** Per origin of a link, at most **K = 2** of the provider's own `bound` and `state` messages
224
+ unacknowledged; only these two kinds count (every other message is control and is never queued behind them). The
225
+ consumer sends `ack` (with the message's origin) after applying each (after its batch); an `ack` after the link or
226
+ the origin closed, or crossing nothing in flight, is ignored. The provider keeps per origin the sender of every
227
+ message in flight, in order: itself, or (at a relay) the upstream link it forwarded the message from. Acks arrive in
228
+ that order: one for its own message frees a slot, one for a relayed message is sent to that upstream link with the
229
+ origin's number there. So a tab served through a relay by W workers may have 2W messages in flight (plus the relay's
230
+ own 2), each worker's window bounding its own.
231
+
232
+ **The provider while the window is full:**
233
+
234
+ - each touched hold member keeps its ops in its **pending queue** (raw ops, never mutated: the same ops feed other
235
+ holds and watches; `r` drops everything before it; the leaf index merges a new append or primitive set into the last
236
+ pending op on the same path, any other op clears it; past 10,000 pending ops only "replace with the current value"
237
+ stays). The cap bounds entries, not payload bytes. When an `ack` frees a slot, one `state` message carries every
238
+ waiting hold's entry: its members' pending ops encoded once (or `[["r", value]]` after an overflow), all reflecting
239
+ the latest commit.
240
+ - a hold that binds while the window is full waits for a slot; its snapshot and subscription are taken in one
241
+ synchronous step when its `bound` is sent (3a race 2).
242
+ - a hold whose object leaves `live` while its `bound` waits goes back to pending (no `bound` is built for it; slice
243
+ 7's reload).
244
+
245
+ **The pending queue** is shared Chord code (`src/delta/`); the shared watch handle uses it too, in the same pi change
246
+ (carry-over; pi first).
247
+
248
+ **The relay** folds, drops and resets nothing: it forwards each upstream `bound`/`state` at once and returns its
249
+ `ack` when the downstream acknowledges it. A slow tab stalls only its origin at each worker, whose pending queues fold
250
+ its commits as they do for a direct consumer; other tabs and the relay's own holds on the same worker are other
251
+ origins with their own windows. A relay keeps no state per message beyond its senders FIFO.
252
+
253
+ **Calls.** `hello` announces how many concurrent calls a side accepts per origin (N, default 256, the same on every
254
+ host); a side sends no call before the peer's `hello`. A host sends at most N of its own calls per link in flight;
255
+ further calls wait in the link's **call queue**, one FIFO, sent in order as replies free slots (it does not preempt
256
+ calls already running). A relay forwards calls at once: each downstream origin's consumer is bounded by its own N,
257
+ so the upstream sees at most N per origin. Rules:
258
+
259
+ - a slot is freed once per call: by its `result` or `error`, by its `cancel` (when sent, at the caller; when received,
260
+ at the provider), or by its hold's `release`, `gone`, its origin's `closed` or the link closing;
261
+ - a call still queued when its hold rebinds (`loading`, then `bound`) is rejected `unavailable` (it may name a method
262
+ index of the old variant);
263
+ - a provider seeing more than N running calls of one origin closes the link (protocol error); a call naming a hold it
264
+ does not know is ignored before it is counted (Q1).
265
+
266
+ ## 7. Transports and heartbeat (§3)
267
+
268
+ - **`ipcLink(port)`** over a Node IPC channel (`fork` with `serialization: "advanced"`, or `process` in the child),
269
+ typed structurally (`send`, `on("message")`, `on("disconnect")`, `disconnect()`), no Node import in Chord. A
270
+ `Uint8Array` crosses as one message. `send` returning `false` is backpressure, not failure; a thrown error, an error
271
+ callback or `disconnect` closes the link once; messages after close are dropped; listeners are removed on close.
272
+ - **`webSocketLink(socket)`** over a WebSocket (`ws` in Node, the browser's), typed structurally: binary frames,
273
+ `binaryType = "arraybuffer"`; messages sent while the socket is still connecting are buffered and sent on `open`;
274
+ a socket already closed gives a closed link; close on `close` and `error`. The transport's `maxPayload` stays its
275
+ hard cap (code 1009; size limits per part are 4b).
276
+ - Both deliver whole messages in order and close both ends, like `memoryLinkPair`. They live in `src/link/`.
277
+ - **Heartbeat on every link kind**, in the channel: each link keeps a `lastReceived` timestamp (updated on every
278
+ received message; sends do not count) and the host runs one interval timer for all its links (no timer per
279
+ message). A link silent for 15 s sends `ping` (once its handshake is done; `hello` comes first); the peer answers
280
+ `pong` at once, never queued behind the window. A link silent for 30 s, the handshake included, is closed (its
281
+ references go `loading`, 3b). Both numbers are host options; tests use fake timers. The heartbeat detects a silent
282
+ transport, not a peer that answers pings but withholds acks (bounded instead by the window and the pending cap).
283
+
284
+ ## Races
285
+
286
+ Routes and resolve:
287
+
288
+ 1. Two holds for one address while its `resolve` runs: one `resolve`, shared.
289
+ 2. `resolve` rejects or returns a closed link: holds stay `loading`; re-resolve after the address's backoff while holds
290
+ exist; only a link that completed its handshake resets the backoff.
291
+ 3. Every hold for an address is released while `resolve` runs: it finishes; the link is kept.
292
+ 4. `authorize` refuses or throws: the hold fails broken; other principals for the address still resolve.
293
+ 5. Placement mismatch at the provider: broken `invalid/placement`.
294
+ 6. A worker restarts: its link closes; the next link's `hello` has a new incarnation; re-holds get fresh objects.
295
+ 7. `host.close` during `resolve`: its context is aborted; a link it still returns is closed at once.
296
+ 8. A hold from the parent for a type this host does not serve and has no route for: `unavailable` (never back to the
297
+ parent).
298
+
299
+ Principals and relays:
300
+
301
+ 9. A tab sends `principal: { kind: "owner" }` on its hold: ignored (child link); the hold acts as the tab's principal.
302
+ 10. A guest's handler on the server `ctx.get`s a worker type: the worker sees the guest (principal and incarnation).
303
+ 11. A worker's handler serving a guest gets a server type: the server sees the worker (upward boundary).
304
+ 12. The upstream link drops with relayed holds: `loading` downstream, relayed calls in flight `unavailable`,
305
+ re-resolve, re-hold with the same id and origin, the new `bound` forwarded; acks for messages of the dropped link
306
+ still in flight downstream go nowhere.
307
+ 13. A tab call that crossed the `loading` notice reaches the relay while upstream is down: `unavailable`.
308
+ 14. A tab releases a hold whose upstream hold is not sent yet: dropped; already sent: released upstream; messages
309
+ crossing it are forwarded and ignored by the tab (Q1).
310
+ 15. The tab link closes: one `closed { origin }` to each upstream link it relayed to (no `release` or `cancel`); the
311
+ worker releases the origin's holds and aborts its calls; its messages crossing the `closed` are dropped at the
312
+ relay (the origin is gone).
313
+ 16. `gone` from upstream: forwarded, the relayed hold forgotten.
314
+ 17. Holds of two tabs on one worker: two origins, so never one message; each tab's messages are atomic for it.
315
+
316
+ Flow control:
317
+
318
+ 18. An `ack` crossing a `release` or a close, or crossing nothing in flight: acks count messages per origin; one
319
+ with nothing in flight is ignored.
320
+ 19. Two workers' messages for one tab interleave at the relay: the senders FIFO returns each `ack` to its worker.
321
+ 20. A first `bound` from a worker while the tab is slow: forwarded at once (the worker's window for the tab origin
322
+ has room for it, or the binding waits there).
323
+ 21. A commit touches A and B of one tab on one worker while the tab is slow: one entry each in the worker's next
324
+ message for the tab origin, never split.
325
+ 22. A worker answers for a hold (or a call) of the same origin relayed over another worker's link, or for one the tab
326
+ released: the entry, notice or reply is dropped; a `bound`/`state` left empty is acknowledged to it at once. A
327
+ link the origin relayed nothing to: its message is ignored whole.
328
+ 23. The pending queue overflows while the window is full: the next message carries `[["r", value]]` for that member.
329
+ 24. A failed member, a constant and an empty variant in a first binding: carried in the `bound` (values, failed list).
330
+ 25. More than N calls: the excess waits in the caller's call queue; a relay forwards at once, so a worker counts at
331
+ most N per origin; one more is a protocol error.
332
+ 26. A call queued across a rebind with another variant: rejected `unavailable`.
333
+
334
+ Links and heartbeat:
335
+
336
+ 27. IPC: the child exits during `send`, or `disconnect` races a message in flight: the link closes once.
337
+ 28. WebSocket: a frame above `maxPayload` closes the connection (1009): references go `loading`.
338
+ 29. A WebSocket still connecting: `hello` and early messages are buffered until `open`.
339
+ 30. A peer that never sends `hello`: closed after 30 s. A busy link sends no pings. Two sides pinging at once: both
340
+ answer.
341
+ 31. A peer stalled by a synchronous handler for over 30 s is closed (documented: handlers must not block the event
342
+ loop that long).
343
+
344
+ ## Cost per hop
345
+
346
+ | Hop | Work |
347
+ | --- | --- |
348
+ | relay, per message | decode the envelope, swap the origin (one shallow copy of the message), encode the envelope; parts copied once into the outgoing buffer (O(bytes)), never parsed; per `bound`/`state` one FIFO entry |
349
+ | relay, per hold | the address's params checked once (route admission, `authorize`) |
350
+ | provider, window free | as slice 3a: one encode per commit per touched hold member |
351
+ | provider, window full | per op: one path key and one map lookup (leaf index); one encode per waiting member per freed slot |
352
+ | provider, per origin | a window and pending state per origin with holds; none for a relay |
353
+ | consumer | as slice 3a, plus one `ack` per `bound`/`state` message |
354
+ | origin | two bytes per message on a relay's upstream links |
355
+ | heartbeat | one timestamp write per received message; one host-wide timer |
356
+ | trusted link | no `MESSAGE` schema check |
357
+
358
+ Producer-side string diffs are not 4a's: a provider whose documents grow by plain string assignment pays Delta's
359
+ O(length) append detection per commit until it writes through `appendText` (pi #9265).
360
+
361
+ ## Benchmarks
362
+
363
+ Extend `test/bench/` (by hand, recorded in `benchmarks.md`): commit-to-frame and bytes through a relay (tab ↔
364
+ server ↔ worker over memory links, and over real IPC and a loopback WebSocket); hold-to-live through a relay including
365
+ `resolve` of an in-process worker; a consumer throttled to 64 KiB/s with stalls of 1, 10 and 60 s receiving a streamed
366
+ reply into a 500 KB view (bytes, catching up, sender heap; the producer's commit time recorded separately from the
367
+ encode); 10,000 calls from one tab with another tab's latency (p95) through the relay.
368
+
369
+ ## Carry-over taken by this slice
370
+
371
+ L6: trusted links skip the message check; a second `bound` on a bound hold (now in 4a: upstream re-holds);
372
+ `PROTOCOL_VERSION` unchanged. L7: `placement` (`invalid/placement`, not in the fingerprint). Decided: C12 (no call
373
+ credits; the call window). The pending queue and the shared watch handle change (pi first). §18's core facet pattern
374
+ (start data from the start message), shown in example 13. Left for 4b: revocation, cross-host cycles,
375
+ `host.references`, `host.activity`, size limits, compression (carry-over section 4b). Left as it is: L6's
376
+ `map(bytes())` declaration bug. From the 4a reviews (owner, 2026-10-24): an activation's `readyTimeout` covers its wait for the
377
+ previous instance's teardown too (an attempt abandoned there has opened nothing).
378
+
379
+ ## Tests
380
+
381
+ - Host kinds and placement: addresses and keys; `placement` excluded from the fingerprint; every row of section 1's
382
+ table; `invalid/placement`; throwing `placement` and `authorize`; never back to the parent.
383
+ - Routes: one `resolve` per address, rejection and backoff (fake timers), a closed returned link, re-resolve after a
384
+ drop while held and not without holds, `authorize` per principal, `host.close` aborting `resolve`.
385
+ - Two-sided links: the server holds a worker type and serves the worker's hold of a server type over one route link;
386
+ worker to worker through the server; a host that applies its own messages and forwards a tab origin's, each
387
+ acknowledged by its consumer.
388
+ - Principals: every row of section 4's table (guest `ctx.get`, remote `self.get`, local `self.get`, `host.get`
389
+ through a route), a forged `principal` from a tab ignored, the upward boundary, two origins with equal principal
390
+ keys but different incarnations.
391
+ - Relays: ids kept under the origin both ways, an origin per downstream link never reused, a worker's entries,
392
+ notices and replies for another worker's hold of the same origin dropped (a mixed message forwarded with its own
393
+ entries only, an emptied one acknowledged at once); no part parsed at a binary relay (a counter); upstream drop (`loading`, calls
394
+ `unavailable`, re-hold with the same id and origin, `bound` with another variant); downstream drop (`closed` per
395
+ worker); `gone`; mixed codecs (binary tab, text worker link).
396
+ - Flow control: K = 2 with a slow consumer; folding through the leaf index and the cap; a `bound` waiting for a slot,
397
+ and going back to pending when its object leaves `live`; a window per origin (a stalled origin folds, another
398
+ keeps receiving); `closed` per origin; through a relay: every message forwarded at once, each `ack` back to its
399
+ worker in order across two workers, a derive over two holds of a slow tab never torn.
400
+ - Calls: the window of N, the FIFO call queue, release and `gone` freeing slots once, a queued call across a
401
+ variant-changing rebind, N per origin at the provider (one more closes the link; an unknown hold ignored first),
402
+ calls in both directions with equal ids.
403
+ - Transports and heartbeat: IPC with a real `fork` (one small test) and a fake port (`send` returning false is not a
404
+ close); WebSocket over `ws` loopback and a fake socket (connecting buffer, already closed); silence before `hello`,
405
+ a busy link without pings, a half-open link closed at 30 s, simultaneous pings; timers and listeners released.
406
+ - Cost guards: no part parsed at a binary relay; one encode per waiting member per freed slot; no `MESSAGE` check on
407
+ trusted links; no timer per message.
408
+ - GC: a released relayed hold, a closed route link, a dropped downstream link, pending `resolve` waiters, the call
409
+ queue, the pending queue after a `closed`, received buffers not kept by parts after handling.
410
+ - Examples: `12-routes.ts` (a server routing to an in-process worker, a guest's `ctx.get` through it), `13-relay.ts`
411
+ (tab, server, worker over IPC and WebSocket; the worker's `SessionInfo` from its start message), `14-flow-control.ts`
412
+ (a slow tab: folding at the provider, and through a relay folding at the worker per origin while a fast tab keeps
413
+ receiving).
414
+
415
+ ## Size
416
+
417
+ About 2,500-3,000 changed or new source lines (two-sided links, routes, principals, the relay with origins, opaque parts in both codecs, flow control with the pending queue and the call queue, two transports, the
418
+ heartbeat), plus the pi change for the pending queue and the watch handle. Tests and examples about as much again.