@amalgm/shell 0.1.164-preview.36072132286 → 0.1.164-preview.36809057014

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 (475) hide show
  1. package/PURPOSE.md +642 -128
  2. package/README.md +10 -8
  3. package/dist/accepted-tail.d.ts +26 -0
  4. package/dist/accepted-tail.js +37 -0
  5. package/dist/accepted-tail.js.map +1 -0
  6. package/dist/agent-execution.d.ts +16 -1
  7. package/dist/agent-execution.js +13 -5
  8. package/dist/agent-execution.js.map +1 -1
  9. package/dist/apply-cleanup.d.ts +28 -0
  10. package/dist/apply-cleanup.js +166 -0
  11. package/dist/apply-cleanup.js.map +1 -0
  12. package/dist/apply-recovery.d.ts +47 -0
  13. package/dist/apply-recovery.js +99 -0
  14. package/dist/apply-recovery.js.map +1 -0
  15. package/dist/apply-rows.d.ts +72 -0
  16. package/dist/apply-rows.js +150 -0
  17. package/dist/apply-rows.js.map +1 -0
  18. package/dist/apply-saves.d.ts +85 -0
  19. package/dist/apply-saves.js +238 -0
  20. package/dist/apply-saves.js.map +1 -0
  21. package/dist/boot.js +2 -1
  22. package/dist/boot.js.map +1 -1
  23. package/dist/capture-work.d.ts +8 -0
  24. package/dist/capture-work.js +67 -0
  25. package/dist/capture-work.js.map +1 -0
  26. package/dist/cargo-group.d.ts +45 -0
  27. package/dist/cargo-group.js +88 -0
  28. package/dist/cargo-group.js.map +1 -0
  29. package/dist/channel-session.d.ts +4 -2
  30. package/dist/channel-session.js +4 -3
  31. package/dist/channel-session.js.map +1 -1
  32. package/dist/chat-composition.d.ts +2 -0
  33. package/dist/chat-composition.js +1 -0
  34. package/dist/chat-composition.js.map +1 -1
  35. package/dist/cli.js +20 -1
  36. package/dist/cli.js.map +1 -1
  37. package/dist/construct-apply-host.d.ts +4 -2
  38. package/dist/construct-apply-host.js +8 -3
  39. package/dist/construct-apply-host.js.map +1 -1
  40. package/dist/construct-door.js +1 -1
  41. package/dist/construct-door.js.map +1 -1
  42. package/dist/construct-ledger.d.ts +6 -1
  43. package/dist/construct-ledger.js +21 -33
  44. package/dist/construct-ledger.js.map +1 -1
  45. package/dist/content-cache-collection.d.ts +18 -0
  46. package/dist/content-cache-collection.js +99 -0
  47. package/dist/content-cache-collection.js.map +1 -0
  48. package/dist/content-cache-host.d.ts +83 -17
  49. package/dist/content-cache-host.js +335 -95
  50. package/dist/content-cache-host.js.map +1 -1
  51. package/dist/content-cache-namespace.d.ts +59 -0
  52. package/dist/content-cache-namespace.js +210 -0
  53. package/dist/content-cache-namespace.js.map +1 -0
  54. package/dist/content-cache-ownership.d.ts +13 -0
  55. package/dist/content-cache-ownership.js +75 -0
  56. package/dist/content-cache-ownership.js.map +1 -0
  57. package/dist/content-cache-retention.d.ts +23 -0
  58. package/dist/content-cache-retention.js +195 -0
  59. package/dist/content-cache-retention.js.map +1 -0
  60. package/dist/content-capture-pool.d.ts +287 -0
  61. package/dist/content-capture-pool.js +461 -0
  62. package/dist/content-capture-pool.js.map +1 -0
  63. package/dist/content-capture-worker.d.ts +8 -0
  64. package/dist/content-capture-worker.js +109 -0
  65. package/dist/content-capture-worker.js.map +1 -0
  66. package/dist/content-clock.d.ts +42 -0
  67. package/dist/content-clock.js +166 -0
  68. package/dist/content-clock.js.map +1 -0
  69. package/dist/content-direct.d.ts +2 -0
  70. package/dist/content-direct.js +12 -0
  71. package/dist/content-direct.js.map +1 -1
  72. package/dist/content-failure.d.ts +18 -0
  73. package/dist/content-failure.js +38 -0
  74. package/dist/content-failure.js.map +1 -0
  75. package/dist/content-stream-thread.d.ts +60 -0
  76. package/dist/content-stream-thread.js +95 -0
  77. package/dist/content-stream-thread.js.map +1 -0
  78. package/dist/content-stream-worker.d.ts +7 -0
  79. package/dist/content-stream-worker.js +52 -0
  80. package/dist/content-stream-worker.js.map +1 -0
  81. package/dist/declaration-absorption.d.ts +37 -0
  82. package/dist/declaration-absorption.js +119 -0
  83. package/dist/declaration-absorption.js.map +1 -0
  84. package/dist/declaration-chain.d.ts +36 -0
  85. package/dist/declaration-chain.js +96 -0
  86. package/dist/declaration-chain.js.map +1 -0
  87. package/dist/declaration-commit.d.ts +31 -0
  88. package/dist/declaration-commit.js +49 -0
  89. package/dist/declaration-commit.js.map +1 -0
  90. package/dist/declaration-hold.d.ts +22 -0
  91. package/dist/declaration-hold.js +24 -0
  92. package/dist/declaration-hold.js.map +1 -0
  93. package/dist/declaration-journal.d.ts +62 -0
  94. package/dist/declaration-journal.js +99 -0
  95. package/dist/declaration-journal.js.map +1 -0
  96. package/dist/declaration-save.d.ts +31 -0
  97. package/dist/declaration-save.js +134 -0
  98. package/dist/declaration-save.js.map +1 -0
  99. package/dist/detection/accepted-result.d.ts +19 -1
  100. package/dist/detection/accepted-result.js +36 -5
  101. package/dist/detection/accepted-result.js.map +1 -1
  102. package/dist/detection/admission-save.d.ts +55 -0
  103. package/dist/detection/admission-save.js +48 -0
  104. package/dist/detection/admission-save.js.map +1 -0
  105. package/dist/detection/admission-units.d.ts +66 -0
  106. package/dist/detection/admission-units.js +322 -0
  107. package/dist/detection/admission-units.js.map +1 -0
  108. package/dist/detection/alias-discovery.d.ts +12 -0
  109. package/dist/detection/alias-discovery.js +80 -0
  110. package/dist/detection/alias-discovery.js.map +1 -0
  111. package/dist/detection/alias-examination.d.ts +30 -0
  112. package/dist/detection/alias-examination.js +49 -0
  113. package/dist/detection/alias-examination.js.map +1 -0
  114. package/dist/detection/apply-ownership.d.ts +81 -0
  115. package/dist/detection/apply-ownership.js +232 -0
  116. package/dist/detection/apply-ownership.js.map +1 -0
  117. package/dist/detection/basis-advanced.d.ts +11 -0
  118. package/dist/detection/basis-advanced.js +26 -0
  119. package/dist/detection/basis-advanced.js.map +1 -0
  120. package/dist/detection/capture-outcome.d.ts +16 -0
  121. package/dist/detection/capture-outcome.js +92 -0
  122. package/dist/detection/capture-outcome.js.map +1 -0
  123. package/dist/detection/container-membership.d.ts +32 -0
  124. package/dist/detection/container-membership.js +49 -0
  125. package/dist/detection/container-membership.js.map +1 -0
  126. package/dist/detection/detect-cancelled.d.ts +6 -0
  127. package/dist/detection/detect-cancelled.js +10 -0
  128. package/dist/detection/detect-cancelled.js.map +1 -0
  129. package/dist/detection/directory-proof.d.ts +47 -0
  130. package/dist/detection/directory-proof.js +77 -0
  131. package/dist/detection/directory-proof.js.map +1 -0
  132. package/dist/detection/disposition-rows.d.ts +18 -0
  133. package/dist/detection/disposition-rows.js +29 -0
  134. package/dist/detection/disposition-rows.js.map +1 -0
  135. package/dist/detection/dispositions.d.ts +130 -0
  136. package/dist/detection/dispositions.js +248 -0
  137. package/dist/detection/dispositions.js.map +1 -0
  138. package/dist/detection/git-notice.d.ts +88 -0
  139. package/dist/detection/git-notice.js +444 -0
  140. package/dist/detection/git-notice.js.map +1 -0
  141. package/dist/detection/ground-proof.d.ts +130 -0
  142. package/dist/detection/ground-proof.js +274 -0
  143. package/dist/detection/ground-proof.js.map +1 -0
  144. package/dist/detection/ground-reader.d.ts +29 -0
  145. package/dist/detection/ground-reader.js +102 -0
  146. package/dist/detection/ground-reader.js.map +1 -0
  147. package/dist/detection/held-territory.d.ts +51 -0
  148. package/dist/detection/held-territory.js +205 -0
  149. package/dist/detection/held-territory.js.map +1 -0
  150. package/dist/detection/identity-discovery.d.ts +45 -0
  151. package/dist/detection/identity-discovery.js +287 -0
  152. package/dist/detection/identity-discovery.js.map +1 -0
  153. package/dist/detection/maintenance-sweep.d.ts +108 -0
  154. package/dist/detection/maintenance-sweep.js +325 -0
  155. package/dist/detection/maintenance-sweep.js.map +1 -0
  156. package/dist/detection/name-reach.d.ts +12 -0
  157. package/dist/detection/name-reach.js +28 -0
  158. package/dist/detection/name-reach.js.map +1 -0
  159. package/dist/detection/notebook-basis.d.ts +5 -7
  160. package/dist/detection/notebook-basis.js +6 -7
  161. package/dist/detection/notebook-basis.js.map +1 -1
  162. package/dist/detection/owed-selection.d.ts +51 -0
  163. package/dist/detection/owed-selection.js +169 -0
  164. package/dist/detection/owed-selection.js.map +1 -0
  165. package/dist/detection/portable.d.ts +34 -34
  166. package/dist/detection/portable.js +67 -93
  167. package/dist/detection/portable.js.map +1 -1
  168. package/dist/detection/reconciliation-coverage.d.ts +7 -0
  169. package/dist/detection/reconciliation-coverage.js +16 -0
  170. package/dist/detection/reconciliation-coverage.js.map +1 -0
  171. package/dist/detection/repository-publication.d.ts +20 -0
  172. package/dist/detection/repository-publication.js +79 -0
  173. package/dist/detection/repository-publication.js.map +1 -0
  174. package/dist/detection/repository-routes.d.ts +43 -0
  175. package/dist/detection/repository-routes.js +97 -0
  176. package/dist/detection/repository-routes.js.map +1 -0
  177. package/dist/detection/root-examination.d.ts +94 -0
  178. package/dist/detection/root-examination.js +523 -0
  179. package/dist/detection/root-examination.js.map +1 -0
  180. package/dist/detection/runtime.d.ts +131 -64
  181. package/dist/detection/runtime.js +808 -1103
  182. package/dist/detection/runtime.js.map +1 -1
  183. package/dist/detection/scoped-identity-port.d.ts +34 -0
  184. package/dist/detection/scoped-identity-port.js +81 -0
  185. package/dist/detection/scoped-identity-port.js.map +1 -0
  186. package/dist/detection/seal-law.d.ts +66 -0
  187. package/dist/detection/seal-law.js +116 -0
  188. package/dist/detection/seal-law.js.map +1 -0
  189. package/dist/detection/sharing-policy.d.ts +11 -0
  190. package/dist/detection/sharing-policy.js +32 -0
  191. package/dist/detection/sharing-policy.js.map +1 -0
  192. package/dist/detection/thread-database.d.ts +4 -0
  193. package/dist/detection/thread-database.js +30 -0
  194. package/dist/detection/thread-database.js.map +1 -0
  195. package/dist/detection/unreadable.d.ts +11 -0
  196. package/dist/detection/unreadable.js +9 -0
  197. package/dist/detection/unreadable.js.map +1 -0
  198. package/dist/detection/verified-content.d.ts +6 -0
  199. package/dist/detection/verified-content.js +12 -0
  200. package/dist/detection/verified-content.js.map +1 -0
  201. package/dist/detection/walk-law.d.ts +34 -0
  202. package/dist/detection/walk-law.js +55 -0
  203. package/dist/detection/walk-law.js.map +1 -0
  204. package/dist/development/fly-guest.js +2 -1
  205. package/dist/development/fly-guest.js.map +1 -1
  206. package/dist/entity-apply-host.d.ts +29 -13
  207. package/dist/entity-apply-host.js +1426 -461
  208. package/dist/entity-apply-host.js.map +1 -1
  209. package/dist/entity-apply-store.d.ts +77 -30
  210. package/dist/entity-apply-store.js +221 -516
  211. package/dist/entity-apply-store.js.map +1 -1
  212. package/dist/entity-record-observability.js +2 -0
  213. package/dist/entity-record-observability.js.map +1 -1
  214. package/dist/entity-record-saves.d.ts +20 -0
  215. package/dist/entity-record-saves.js +91 -0
  216. package/dist/entity-record-saves.js.map +1 -0
  217. package/dist/entity-record-store.d.ts +15 -7
  218. package/dist/entity-record-store.js +57 -117
  219. package/dist/entity-record-store.js.map +1 -1
  220. package/dist/files-register-host.d.ts +22 -3
  221. package/dist/files-register-host.js +70 -31
  222. package/dist/files-register-host.js.map +1 -1
  223. package/dist/filesystem.js +3 -2
  224. package/dist/filesystem.js.map +1 -1
  225. package/dist/git-binding.d.ts +65 -0
  226. package/dist/git-binding.js +220 -0
  227. package/dist/git-binding.js.map +1 -0
  228. package/dist/git-capture.d.ts +39 -0
  229. package/dist/git-capture.js +86 -0
  230. package/dist/git-capture.js.map +1 -0
  231. package/dist/git-card.d.ts +12 -0
  232. package/dist/git-card.js +123 -0
  233. package/dist/git-card.js.map +1 -0
  234. package/dist/git-checkpoint-construction.d.ts +41 -0
  235. package/dist/git-checkpoint-construction.js +96 -0
  236. package/dist/git-checkpoint-construction.js.map +1 -0
  237. package/dist/git-checkpoint-preparation.d.ts +37 -0
  238. package/dist/git-checkpoint-preparation.js +145 -0
  239. package/dist/git-checkpoint-preparation.js.map +1 -0
  240. package/dist/git-command.d.ts +61 -8
  241. package/dist/git-command.js +217 -63
  242. package/dist/git-command.js.map +1 -1
  243. package/dist/git-configuration.d.ts +40 -0
  244. package/dist/git-configuration.js +217 -0
  245. package/dist/git-configuration.js.map +1 -0
  246. package/dist/git-evidence.d.ts +61 -0
  247. package/dist/git-evidence.js +181 -0
  248. package/dist/git-evidence.js.map +1 -0
  249. package/dist/git-index-entries.d.ts +15 -0
  250. package/dist/git-index-entries.js +44 -0
  251. package/dist/git-index-entries.js.map +1 -0
  252. package/dist/git-index-format.d.ts +35 -0
  253. package/dist/git-index-format.js +293 -0
  254. package/dist/git-index-format.js.map +1 -0
  255. package/dist/git-index-witness.d.ts +33 -0
  256. package/dist/git-index-witness.js +69 -0
  257. package/dist/git-index-witness.js.map +1 -0
  258. package/dist/git-literal-host.d.ts +82 -0
  259. package/dist/git-literal-host.js +172 -0
  260. package/dist/git-literal-host.js.map +1 -0
  261. package/dist/git-literal-read.d.ts +88 -0
  262. package/dist/git-literal-read.js +170 -0
  263. package/dist/git-literal-read.js.map +1 -0
  264. package/dist/git-literal-replay.d.ts +33 -0
  265. package/dist/git-literal-replay.js +268 -0
  266. package/dist/git-literal-replay.js.map +1 -0
  267. package/dist/git-native-file.d.ts +42 -0
  268. package/dist/git-native-file.js +145 -0
  269. package/dist/git-native-file.js.map +1 -0
  270. package/dist/git-native-index.d.ts +21 -0
  271. package/dist/git-native-index.js +44 -0
  272. package/dist/git-native-index.js.map +1 -0
  273. package/dist/git-operation-host.d.ts +48 -0
  274. package/dist/git-operation-host.js +127 -0
  275. package/dist/git-operation-host.js.map +1 -0
  276. package/dist/git-private-index.d.ts +11 -0
  277. package/dist/git-private-index.js +42 -0
  278. package/dist/git-private-index.js.map +1 -0
  279. package/dist/git-private-repository.d.ts +4 -0
  280. package/dist/git-private-repository.js +69 -0
  281. package/dist/git-private-repository.js.map +1 -0
  282. package/dist/git-private-view.d.ts +39 -0
  283. package/dist/git-private-view.js +162 -0
  284. package/dist/git-private-view.js.map +1 -0
  285. package/dist/git-ref-store.d.ts +12 -0
  286. package/dist/git-ref-store.js +68 -0
  287. package/dist/git-ref-store.js.map +1 -0
  288. package/dist/git-registration-host.d.ts +20 -30
  289. package/dist/git-registration-host.js +86 -249
  290. package/dist/git-registration-host.js.map +1 -1
  291. package/dist/git-repository-host.d.ts +148 -22
  292. package/dist/git-repository-host.js +633 -650
  293. package/dist/git-repository-host.js.map +1 -1
  294. package/dist/git-worktree-host.d.ts +2 -0
  295. package/dist/git-worktree-host.js +16 -0
  296. package/dist/git-worktree-host.js.map +1 -0
  297. package/dist/graph-publication.d.ts +75 -0
  298. package/dist/graph-publication.js +203 -0
  299. package/dist/graph-publication.js.map +1 -0
  300. package/dist/ground-basis.d.ts +242 -0
  301. package/dist/ground-basis.js +1023 -0
  302. package/dist/ground-basis.js.map +1 -0
  303. package/dist/ground-checkpoint-worker.d.ts +1 -0
  304. package/dist/ground-checkpoint-worker.js +84 -0
  305. package/dist/ground-checkpoint-worker.js.map +1 -0
  306. package/dist/ground-checkpoints.d.ts +16 -0
  307. package/dist/ground-checkpoints.js +45 -0
  308. package/dist/ground-checkpoints.js.map +1 -0
  309. package/dist/ground-coordination.d.ts +107 -3
  310. package/dist/ground-coordination.js +249 -24
  311. package/dist/ground-coordination.js.map +1 -1
  312. package/dist/ground-database.d.ts +42 -0
  313. package/dist/ground-database.js +290 -0
  314. package/dist/ground-database.js.map +1 -0
  315. package/dist/ground-differences.d.ts +23 -0
  316. package/dist/ground-differences.js +47 -0
  317. package/dist/ground-differences.js.map +1 -0
  318. package/dist/ground-holders.d.ts +4 -0
  319. package/dist/ground-holders.js +15 -0
  320. package/dist/ground-holders.js.map +1 -0
  321. package/dist/ground-initialization-worker.d.ts +1 -0
  322. package/dist/ground-initialization-worker.js +20 -0
  323. package/dist/ground-initialization-worker.js.map +1 -0
  324. package/dist/ground-initialization.d.ts +35 -0
  325. package/dist/ground-initialization.js +102 -0
  326. package/dist/ground-initialization.js.map +1 -0
  327. package/dist/ground-install-saves.d.ts +63 -0
  328. package/dist/ground-install-saves.js +139 -0
  329. package/dist/ground-install-saves.js.map +1 -0
  330. package/dist/ground-inventory-schema.d.ts +18 -0
  331. package/dist/ground-inventory-schema.js +168 -0
  332. package/dist/ground-inventory-schema.js.map +1 -0
  333. package/dist/ground-profile.d.ts +7 -0
  334. package/dist/ground-profile.js +52 -0
  335. package/dist/ground-profile.js.map +1 -0
  336. package/dist/ground-root-index.d.ts +2 -1
  337. package/dist/ground-root-index.js +16 -14
  338. package/dist/ground-root-index.js.map +1 -1
  339. package/dist/ground-row.d.ts +62 -0
  340. package/dist/ground-row.js +70 -0
  341. package/dist/ground-row.js.map +1 -0
  342. package/dist/ground-save-ops.d.ts +44 -0
  343. package/dist/ground-save-ops.js +41 -0
  344. package/dist/ground-save-ops.js.map +1 -0
  345. package/dist/ground-saver-worker.d.ts +1 -0
  346. package/dist/ground-saver-worker.js +156 -0
  347. package/dist/ground-saver-worker.js.map +1 -0
  348. package/dist/ground-saver.d.ts +75 -0
  349. package/dist/ground-saver.js +216 -0
  350. package/dist/ground-saver.js.map +1 -0
  351. package/dist/ground-store.d.ts +84 -0
  352. package/dist/ground-store.js +473 -0
  353. package/dist/ground-store.js.map +1 -0
  354. package/dist/ground-territory.d.ts +130 -0
  355. package/dist/ground-territory.js +511 -0
  356. package/dist/ground-territory.js.map +1 -0
  357. package/dist/index.d.ts +1 -1
  358. package/dist/index.js.map +1 -1
  359. package/dist/installation/ownership.d.ts +0 -2
  360. package/dist/installation/ownership.js +3 -15
  361. package/dist/installation/ownership.js.map +1 -1
  362. package/dist/machine-host.d.ts +3 -2
  363. package/dist/machine-host.js +28 -16
  364. package/dist/machine-host.js.map +1 -1
  365. package/dist/materialized-graph.d.ts +7 -7
  366. package/dist/materialized-graph.js +11 -23
  367. package/dist/materialized-graph.js.map +1 -1
  368. package/dist/module-thread.d.ts +9 -0
  369. package/dist/module-thread.js +10 -0
  370. package/dist/module-thread.js.map +1 -0
  371. package/dist/native/fsevents-stream.node +0 -0
  372. package/dist/physical-path-witness.d.ts +64 -0
  373. package/dist/physical-path-witness.js +168 -0
  374. package/dist/physical-path-witness.js.map +1 -0
  375. package/dist/register-upload-fusion.d.ts +5 -4
  376. package/dist/register-upload-fusion.js +9 -6
  377. package/dist/register-upload-fusion.js.map +1 -1
  378. package/dist/registry-graph.d.ts +3 -2
  379. package/dist/registry-graph.js +9 -6
  380. package/dist/registry-graph.js.map +1 -1
  381. package/dist/registry-page-cache.d.ts +5 -2
  382. package/dist/registry-page-cache.js.map +1 -1
  383. package/dist/repository-identity-steps.d.ts +5 -0
  384. package/dist/repository-identity-steps.js +33 -0
  385. package/dist/repository-identity-steps.js.map +1 -0
  386. package/dist/runtime-node-flags.d.ts +10 -0
  387. package/dist/runtime-node-flags.js +11 -0
  388. package/dist/runtime-node-flags.js.map +1 -0
  389. package/dist/service/adapter.d.ts +1 -1
  390. package/dist/service/adapter.js +1 -1
  391. package/dist/service/adapter.js.map +1 -1
  392. package/dist/service/cli.js +16 -20
  393. package/dist/service/cli.js.map +1 -1
  394. package/dist/service/control.d.ts +2 -2
  395. package/dist/service/keepalive.d.ts +4 -11
  396. package/dist/service/keepalive.js +65 -118
  397. package/dist/service/keepalive.js.map +1 -1
  398. package/dist/service/policy.d.ts +36 -0
  399. package/dist/service/policy.js +25 -0
  400. package/dist/service/policy.js.map +1 -0
  401. package/dist/service/portable.d.ts +1 -1
  402. package/dist/service/portable.js +1 -1
  403. package/dist/service/portable.js.map +1 -1
  404. package/dist/service/recovery.d.ts +10 -9
  405. package/dist/service/recovery.js +29 -19
  406. package/dist/service/recovery.js.map +1 -1
  407. package/dist/service/windows-action.d.ts +5 -3
  408. package/dist/service/windows-action.js +6 -9
  409. package/dist/service/windows-action.js.map +1 -1
  410. package/dist/service/windows-task.js +5 -5
  411. package/dist/service/windows-task.js.map +1 -1
  412. package/dist/sharing-admission.d.ts +17 -0
  413. package/dist/sharing-admission.js +128 -0
  414. package/dist/sharing-admission.js.map +1 -0
  415. package/dist/snapshot-delivery-baseline.d.ts +12 -3
  416. package/dist/snapshot-delivery-baseline.js +41 -42
  417. package/dist/snapshot-delivery-baseline.js.map +1 -1
  418. package/dist/source-proof.d.ts +36 -0
  419. package/dist/source-proof.js +70 -0
  420. package/dist/source-proof.js.map +1 -0
  421. package/dist/source-signature.d.ts +56 -0
  422. package/dist/source-signature.js +56 -0
  423. package/dist/source-signature.js.map +1 -0
  424. package/dist/source-witness.d.ts +15 -0
  425. package/dist/source-witness.js +29 -0
  426. package/dist/source-witness.js.map +1 -0
  427. package/dist/sqlite-durability.d.ts +31 -0
  428. package/dist/sqlite-durability.js +28 -0
  429. package/dist/sqlite-durability.js.map +1 -0
  430. package/dist/sqlite.d.ts +8 -2
  431. package/dist/sqlite.js +27 -4
  432. package/dist/sqlite.js.map +1 -1
  433. package/dist/sync-address.d.ts +19 -0
  434. package/dist/sync-address.js +52 -0
  435. package/dist/sync-address.js.map +1 -0
  436. package/dist/sync-setting.d.ts +15 -0
  437. package/dist/sync-setting.js +13 -0
  438. package/dist/sync-setting.js.map +1 -1
  439. package/dist/turns.d.ts +42 -0
  440. package/dist/turns.js +112 -0
  441. package/dist/turns.js.map +1 -0
  442. package/dist/updates/bootstrap.d.ts +53 -7
  443. package/dist/updates/bootstrap.js +224 -137
  444. package/dist/updates/bootstrap.js.map +1 -1
  445. package/dist/updates/controller.d.ts +8 -0
  446. package/dist/updates/controller.js +27 -3
  447. package/dist/updates/controller.js.map +1 -1
  448. package/dist/updates/store.d.ts +3 -0
  449. package/dist/updates/store.js +12 -0
  450. package/dist/updates/store.js.map +1 -1
  451. package/dist/user-ground-host.d.ts +364 -69
  452. package/dist/user-ground-host.js +5231 -3366
  453. package/dist/user-ground-host.js.map +1 -1
  454. package/dist/watching/fsevents.d.ts +52 -1
  455. package/dist/watching/fsevents.js +60 -25
  456. package/dist/watching/fsevents.js.map +1 -1
  457. package/dist/watching/host.d.ts +129 -5
  458. package/dist/watching/host.js +433 -80
  459. package/dist/watching/host.js.map +1 -1
  460. package/dist/watching/index.d.ts +1 -1
  461. package/dist/wire-binary.d.ts +3 -2
  462. package/dist/wire-binary.js +10 -8
  463. package/dist/wire-binary.js.map +1 -1
  464. package/dist/wire-client.d.ts +3 -4
  465. package/dist/wire-client.js +18 -44
  466. package/dist/wire-client.js.map +1 -1
  467. package/dist/wire-outbox.d.ts +34 -0
  468. package/dist/wire-outbox.js +127 -0
  469. package/dist/wire-outbox.js.map +1 -0
  470. package/dist/workspace-host.d.ts +4 -0
  471. package/dist/workspace-host.js +12 -1
  472. package/dist/workspace-host.js.map +1 -1
  473. package/examinations/fixtures/private-wire-authority.js +133 -10
  474. package/npm-shrinkwrap.json +43 -56
  475. package/package.json +26 -13
@@ -0,0 +1,134 @@
1
+ /**
2
+ * `register.declare`, run only by the ground file's saver thread
3
+ * (ground-saver.ts): one declaration D admitted beside its journal row while
4
+ * the chain's addresses still name what they named when D was derived.
5
+ * declaration-commit.ts posts it.
6
+ *
7
+ * Ground W absorbs (declaration-absorption.ts) joins W's root in both
8
+ * inventories. Observation takes the walk as it takes the rest of W. Sharing
9
+ * keeps its own rows there, framed in W, with each absorbed root re-placed
10
+ * where the walk found it: local work there stays owed to ordinary Detect.
11
+ */
12
+ import { createHash } from "node:crypto";
13
+ import { relative, sep } from "node:path";
14
+ import { canonicalVersion } from "@amalgm/live";
15
+ import { journalDeclaration } from "./declaration-journal.js";
16
+ import { finalizeContainers } from "./detection/container-membership.js";
17
+ import { installRepositorySeal } from "./detection/seal-law.js";
18
+ import { groundRowProjection, portableGroundRecord, storedWithin } from "./ground-row.js";
19
+ import { groundStore } from "./ground-store.js";
20
+ import { cachedStatement } from "./sqlite.js";
21
+ /** The UUID local ground names at one core address: B first, then O. */
22
+ export function namedAt(database, resourceId, coreRootId, relativePath) {
23
+ for (const inventory of ["detection_notebook", "entities"]) {
24
+ const row = cachedStatement(database, `SELECT ${groundRowProjection(inventory)} FROM ${inventory}
25
+ WHERE resource_id = ? AND root_uuid = ? AND relative_path = ? AND status = 'active'`)
26
+ .get(resourceId, coreRootId, relativePath);
27
+ if (row)
28
+ return row.uuid;
29
+ }
30
+ return null;
31
+ }
32
+ const sha256Hex = (input) => createHash("sha256").update(input).digest("hex");
33
+ /** `register.declare`: nothing when an address moved. O rows already held
34
+ * under the chain's identities stand as observed, and rows at its addresses
35
+ * under other identities are displaced: sharing names the identity, and
36
+ * observation re-derives the rest on its next pass. */
37
+ export function saveDeclaration(database, input) {
38
+ const { resourceId, coreRootId, walk, chain, journal } = input;
39
+ if (chain.chained.some((row, index) => namedAt(database, resourceId, coreRootId, row.relativePath) !== chain.named[index])) {
40
+ return "moved";
41
+ }
42
+ const held = cachedStatement(database, `SELECT 1 FROM entities
43
+ WHERE uuid = ? AND resource_id = ? AND root_uuid = ? AND relative_path = ? AND status = 'active'`).pluck();
44
+ const occupants = cachedStatement(database, `SELECT uuid FROM entities
45
+ WHERE resource_id = ? AND root_uuid = ? AND relative_path = ? AND uuid <> ?`).pluck();
46
+ const observed = chain.chained.filter(row => held.get(row.uuid, resourceId, coreRootId, row.relativePath) === undefined);
47
+ const displaced = chain.chained.flatMap(row => occupants.all(resourceId, coreRootId, row.relativePath, row.uuid));
48
+ const roots = [journal.declarationRoot, ...input.enclosed];
49
+ const rootRows = (inventory) => cachedStatement(database, `SELECT ${groundRowProjection(inventory)} FROM ${inventory}
50
+ WHERE resource_id = ? AND root_uuid IN (${roots.map(() => "?").join(", ")})`)
51
+ .all(resourceId, ...roots);
52
+ const stale = (inventory, kept) => {
53
+ const keep = new Set(kept.map((row) => row.uuid));
54
+ return rootRows(inventory).map((row) => row.uuid).filter((uuid) => !keep.has(uuid));
55
+ };
56
+ const sharing = walk && sharedGround(walk, journal.declarationRoot, input.absorbed, rootRows("detection_notebook"));
57
+ groundStore(database).write((writer) => {
58
+ for (const pair of walk?.repositoryObservations ?? [])
59
+ writer.observeRepository(pair);
60
+ writer.replace("entities", [...walk?.observed ?? [], ...observed], [...walk ? stale("entities", walk.observed) : [], ...displaced]);
61
+ if (sharing) {
62
+ const removed = stale("detection_notebook", [...sharing.kept, ...sharing.selected]);
63
+ writer.replace("detection_notebook", sharing.kept, [], "retain-equivalent");
64
+ writer.replace("detection_notebook", [...sharing.selected, ...chain.shared], removed, "replace");
65
+ }
66
+ else {
67
+ writer.replace("detection_notebook", chain.shared, [], "replace");
68
+ }
69
+ for (const inventory of ["entities", "detection_notebook"]) {
70
+ // Sharing's absorbed placements change these parents' membership. Only
71
+ // a folder's version carries it; a repository's is its Card + Checkpoint.
72
+ const joined = inventory === "entities" ? [] : sharing?.containers.flatMap((uuid) => {
73
+ const row = writer.get(inventory, uuid);
74
+ return row?.type === "folder" || row?.type === "workspace" ? [uuid] : [];
75
+ }) ?? [];
76
+ const changed = finalizeContainers({
77
+ parents: [...new Set([...chain.containers, ...joined])].flatMap((uuid) => {
78
+ const row = writer.get(inventory, uuid);
79
+ return row?.status === "active" ? [row] : [];
80
+ }),
81
+ children: (parentUUID) => cachedStatement(database, `SELECT uuid, parent_uuid AS parentUUID, name, status
82
+ FROM ${inventory} WHERE parent_uuid = ?`).all(parentUUID),
83
+ targets: new Set(),
84
+ results: [],
85
+ sha256Hex,
86
+ });
87
+ if (changed.length)
88
+ writer.replace(inventory, changed, [], inventory === "entities" ? undefined : "replace");
89
+ }
90
+ for (const seal of walk?.seals ?? [])
91
+ installRepositorySeal(database, seal);
92
+ journalDeclaration(database, journal);
93
+ });
94
+ return "committed";
95
+ }
96
+ /** B for W's ground after D. Sharing's own rows of absorbed ground are kept,
97
+ * framed in W, each absorbed root re-placed as the walk selected it: a
98
+ * `workspace`, which only a root can be, becomes a `folder`. The walk's
99
+ * selection enters for the rest of W, less every identity sharing keeps; a
100
+ * parent the walk counted such an identity under is derived again. */
101
+ function sharedGround(walk, root, absorbed, prior) {
102
+ if (absorbed.length === 0)
103
+ return { kept: [], selected: [...walk.selected], containers: [] };
104
+ const top = walk.observed.find((row) => row.uuid === root)?.absolutePath;
105
+ const places = absorbed.map((uuid) => walk.selected.find((row) => row.uuid === uuid));
106
+ if (top === undefined || places.some((place) => place === undefined)) {
107
+ throw new Error(`declaration of ${root} has no walked place for the ground it absorbs`);
108
+ }
109
+ const absorbedGround = (address) => places.some((place) => storedWithin(place.absolutePath, address));
110
+ const containers = new Set();
111
+ const kept = prior.filter((row) => absorbedGround(row.absolutePath)).map((row) => {
112
+ const framed = { ...row, rootUUID: root, relativePath: relative(top, row.absolutePath).split(sep).join("/") };
113
+ const place = places.find((candidate) => candidate.uuid === row.uuid);
114
+ if (!place)
115
+ return framed;
116
+ const placed = { ...framed, type: framed.type === "workspace" ? "folder" : framed.type,
117
+ parentUUID: place.parentUUID, name: place.name };
118
+ containers.add(placed.uuid).add(place.parentUUID);
119
+ return { ...placed, version: canonicalVersion(portableGroundRecord(placed), sha256Hex) };
120
+ });
121
+ const keep = new Set(kept.map((row) => row.uuid));
122
+ if (absorbed.some((uuid) => !keep.has(uuid))) {
123
+ throw new Error(`declaration of ${root} absorbs a workspace sharing never recorded`);
124
+ }
125
+ const selected = walk.selected.filter((row) => {
126
+ if (!keep.has(row.uuid) && !absorbedGround(row.absolutePath))
127
+ return true;
128
+ if (!absorbedGround(row.absolutePath) && row.parentUUID)
129
+ containers.add(row.parentUUID);
130
+ return false;
131
+ });
132
+ return { kept, selected, containers: [...containers] };
133
+ }
134
+ //# sourceMappingURL=declaration-save.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declaration-save.js","sourceRoot":"","sources":["../src/declaration-save.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,26 @@
6
6
  */
7
7
  import { type DetectedChangeProposal } from "@amalgm/live";
8
8
  import Database from "better-sqlite3";
9
+ type ObservedResult = Pick<DetectedChangeProposal, "entityId" | "result">;
10
+ /** One no-echo answer a Detect batch consumed. */
11
+ export interface AcceptedRead {
12
+ readonly authorityId: string;
13
+ readonly proposal: ObservedResult;
14
+ readonly covered: boolean;
15
+ }
16
+ /** All no-echo decisions used while preparing one Detect batch. Its
17
+ * admission re-answers the complete read set (acceptedReadsStand) inside the
18
+ * save that writes either projection. */
19
+ export interface AcceptedResultBasis {
20
+ covers(authorityId: string, proposal: ObservedResult): boolean;
21
+ reads(): readonly AcceptedRead[];
22
+ }
9
23
  export declare class AcceptedInboxResultIndex {
10
24
  #private;
11
25
  constructor(database: Database.Database);
12
- covers(authorityId: string, proposal: DetectedChangeProposal): boolean;
26
+ covers(authorityId: string, proposal: ObservedResult): boolean;
27
+ snapshot(): AcceptedResultBasis;
13
28
  }
29
+ /** Inside an admission's save: every answer is still the same. */
30
+ export declare function acceptedReadsStand(database: Database.Database, reads: readonly AcceptedRead[]): boolean;
31
+ export {};
@@ -5,18 +5,49 @@
5
5
  * consult those facts: the exact equality decision remains in Live.
6
6
  */
7
7
  import { acceptedResultCoversDetection, decodeAcceptedEntityRecord, } from "@amalgm/live";
8
+ import { hasLocalWorkAfter } from "../apply-rows.js";
9
+ import { cachedStatement } from "../sqlite.js";
8
10
  export class AcceptedInboxResultIndex {
9
- #unresolved;
11
+ #database;
12
+ #newest;
10
13
  constructor(database) {
11
- this.#unresolved = database.prepare(`
12
- SELECT record_json AS recordJson
13
- FROM record_inbox
14
+ this.#database = database;
15
+ this.#newest = cachedStatement(database, `
16
+ SELECT record_json AS recordJson FROM record_inbox
14
17
  WHERE authority_id = ? AND entity_id = ? AND resolved_at IS NULL
15
18
  ORDER BY global_sequence DESC
19
+ LIMIT 1
16
20
  `);
17
21
  }
18
22
  covers(authorityId, proposal) {
19
- return this.#unresolved.all(authorityId, proposal.entityId).some(({ recordJson }) => acceptedResultCoversDetection(decodeAcceptedEntityRecord(recordJson), proposal));
23
+ // The same ordering rule that protects local work from Apply also
24
+ // protects it from Detect adopting an older official result as its base.
25
+ // Local work after the newest unresolved result is after every older one,
26
+ // so the newest is the only candidate. Re-read this gate at commit; an
27
+ // earlier observation is not permission to discard a local predecessor
28
+ // admitted while capture was running.
29
+ const newest = this.#newest.get(authorityId, proposal.entityId);
30
+ if (!newest)
31
+ return false;
32
+ const accepted = decodeAcceptedEntityRecord(newest.recordJson);
33
+ return !hasLocalWorkAfter(this.#database, authorityId, proposal.entityId, accepted.globalSequence)
34
+ && acceptedResultCoversDetection(accepted, proposal);
20
35
  }
36
+ snapshot() {
37
+ const reads = [];
38
+ return {
39
+ covers: (authorityId, proposal) => {
40
+ const covered = this.covers(authorityId, proposal);
41
+ reads.push({ authorityId, proposal, covered });
42
+ return covered;
43
+ },
44
+ reads: () => reads,
45
+ };
46
+ }
47
+ }
48
+ /** Inside an admission's save: every answer is still the same. */
49
+ export function acceptedReadsStand(database, reads) {
50
+ const index = new AcceptedInboxResultIndex(database);
51
+ return reads.every(({ authorityId, proposal, covered }) => index.covers(authorityId, proposal) === covered);
21
52
  }
22
53
  //# sourceMappingURL=accepted-result.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accepted-result.js","sourceRoot":"","sources":["../../src/detection/accepted-result.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,GAE3B,MAAM,cAAc,CAAC;AAGtB,MAAM,OAAO,wBAAwB;IAC1B,WAAW,CAAqB;IAEzC,YAAY,QAA2B;QACrC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC;;;;;KAKnC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,WAAmB,EAAE,QAAgC;QAC1D,OAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAExD,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,6BAA6B,CACxD,0BAA0B,CAAC,UAAU,CAAC,EACtC,QAAQ,CACT,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"accepted-result.js","sourceRoot":"","sources":["../../src/detection/accepted-result.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,GAE3B,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAmB/C,MAAM,OAAO,wBAAwB;IAC1B,SAAS,CAAoB;IAC7B,OAAO,CAAqB;IAErC,YAAY,QAA2B;QACrC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,QAAQ,EAAE;;;;;KAKxC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,WAAmB,EAAE,QAAwB;QAClD,kEAAkE;QAClE,yEAAyE;QACzE,0EAA0E;QAC1E,uEAAuE;QACvE,uEAAuE;QACvE,sCAAsC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAuC,CAAC;QACtG,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,QAAQ,GAAG,0BAA0B,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC/D,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC;eAC7F,6BAA6B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,QAAQ;QACN,MAAM,KAAK,GAAmB,EAAE,CAAC;QACjC,OAAO;YACL,MAAM,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE;gBAChC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBACnD,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC/C,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;SACnB,CAAC;IACJ,CAAC;CACF;AAED,kEAAkE;AAClE,MAAM,UAAU,kBAAkB,CAAC,QAA2B,EAAE,KAA8B;IAC5F,MAAM,KAAK,GAAG,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACrD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC;AAC9G,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Detect's Commit as one save on the ground file's saver thread
3
+ * (ground-saver.ts). The poster already answered everything the main thread
4
+ * owns: leases, crossings, witnesses, bindings and ownership. This save
5
+ * answers what only the database can. The accepted results Build settled
6
+ * against must still stand, or no unit commits. Each unit's S0 facts must be
7
+ * unchanged; units share no fact, so a unit whose facts changed is left out
8
+ * and every other commits. Then, in the one savepoint: O, B, each Outbox
9
+ * record, repository seals, and each committed unit's ready and outcome
10
+ * facts.
11
+ */
12
+ import type Database from "better-sqlite3";
13
+ import type { DetectDispositionEvent, LocalEntityRecord } from "@amalgm/live";
14
+ import { type GroundBasisData, type GroundTransition } from "../ground-basis.js";
15
+ import type { GroundRow } from "../ground-row.js";
16
+ import { type GroundWriteEvidence } from "../ground-store.js";
17
+ import type { RepositoryObservationPair } from "../git-repository-host.js";
18
+ import { type AcceptedRead } from "./accepted-result.js";
19
+ import { type DispositionRow } from "./disposition-rows.js";
20
+ import { type RepositorySealCandidate } from "./seal-law.js";
21
+ /** One unit as data: its S0 facts, its writes, and its two facts. */
22
+ export interface AdmissionUnitSave {
23
+ readonly basis: GroundBasisData;
24
+ readonly repositoryObservations: readonly Omit<RepositoryObservationPair, "proof">[];
25
+ readonly materialized: readonly GroundRow[];
26
+ readonly materializedRemovals: readonly string[];
27
+ readonly notebook: readonly GroundRow[];
28
+ readonly seals: readonly RepositorySealCandidate[];
29
+ /** Created when posted, each against its entity's receive cursor then. */
30
+ readonly records: readonly LocalEntityRecord[];
31
+ /** Its ready fact and admitted outcome. */
32
+ readonly dispositions: readonly [DetectDispositionEvent, DetectDispositionEvent];
33
+ }
34
+ export interface AdmissionSave {
35
+ readonly units: readonly AdmissionUnitSave[];
36
+ readonly accepted: readonly AcceptedRead[];
37
+ /** A commit observer listens: return the committed transitions. */
38
+ readonly observe: boolean;
39
+ }
40
+ export type AdmissionSaved = {
41
+ readonly accepted: false;
42
+ } | {
43
+ readonly accepted: true;
44
+ /** Units whose S0 facts changed, by index; every other one committed. */
45
+ readonly stale: readonly number[];
46
+ /** The committed units' Outbox records as admitted, in order. */
47
+ readonly records: readonly string[];
48
+ /** Each committed unit's outcome row, in order. */
49
+ readonly outcomes: readonly DispositionRow[];
50
+ readonly changes: readonly GroundTransition[] | null;
51
+ readonly evidence: GroundWriteEvidence;
52
+ /** Absolute time its checks ended. */
53
+ readonly checkedAt: number;
54
+ };
55
+ export declare function saveAdmission(database: Database.Database, input: AdmissionSave): AdmissionSaved;
@@ -0,0 +1,48 @@
1
+ import { GroundBasis } from "../ground-basis.js";
2
+ import { groundStore } from "../ground-store.js";
3
+ import { acceptedReadsStand } from "./accepted-result.js";
4
+ import { insertDisposition } from "./disposition-rows.js";
5
+ import { installRepositorySeal } from "./seal-law.js";
6
+ export function saveAdmission(database, input) {
7
+ if (!acceptedReadsStand(database, input.accepted))
8
+ return { accepted: false };
9
+ const bases = input.units.map(unit => GroundBasis.fromData(unit.basis));
10
+ let stale = [], checkedAt = 0;
11
+ const records = [], outcomes = [];
12
+ const operation = (writer) => {
13
+ // The whole basis is compared once. Only a stale answer compares each
14
+ // unit, against the same snapshot, to keep the others.
15
+ if (!writer.compareBasis(GroundBasis.union(bases))) {
16
+ stale = bases.flatMap((basis, index) => writer.compareBasis(basis) ? [] : [index]);
17
+ }
18
+ const survivors = input.units.filter((_, index) => !stale.includes(index));
19
+ checkedAt = performance.timeOrigin + performance.now();
20
+ if (survivors.length === 0)
21
+ return;
22
+ // The survivors' facts were just compared: acceptance adopts them.
23
+ if (!writer.acceptBasis(GroundBasis.union(bases.filter((_, index) => !stale.includes(index))))) {
24
+ throw new Error("independent unit bases changed within one admission");
25
+ }
26
+ for (const pair of survivors.flatMap(unit => unit.repositoryObservations))
27
+ writer.observeRepository(pair);
28
+ writer.replace("entities", survivors.flatMap(unit => unit.materialized), survivors.flatMap(unit => unit.materializedRemovals));
29
+ // Absence never removes a notebook row: Detect carries it as Trash.
30
+ writer.replace("detection_notebook", survivors.flatMap(unit => unit.notebook), [], "retain-equivalent");
31
+ for (const record of survivors.flatMap(unit => unit.records))
32
+ records.push(writer.admitSharing(record));
33
+ for (const seal of survivors.flatMap(unit => unit.seals))
34
+ installRepositorySeal(database, seal);
35
+ for (const { dispositions: [ready, outcome] } of survivors) {
36
+ insertDisposition(database, ready);
37
+ outcomes.push(insertDisposition(database, outcome));
38
+ }
39
+ };
40
+ const store = groundStore(database);
41
+ if (input.observe) {
42
+ const { changes, evidence } = store.writeObserved(operation);
43
+ return { accepted: true, stale, records, outcomes, changes, evidence, checkedAt };
44
+ }
45
+ const { evidence } = store.writeMeasured(operation);
46
+ return { accepted: true, stale, records, outcomes, changes: null, evidence, checkedAt };
47
+ }
48
+ //# sourceMappingURL=admission-save.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admission-save.js","sourceRoot":"","sources":["../../src/detection/admission-save.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { type GroundInventory, type GroundScope } from "../ground-basis.js";
2
+ import { type GroundReads, type PhysicalReads } from "../ground-coordination.js";
3
+ import type { GroundRow } from "../ground-row.js";
4
+ import type { GroundClosure } from "./ground-proof.js";
5
+ export interface UnitWrites<P, R, S> {
6
+ readonly materialized: readonly GroundRow[];
7
+ readonly materializedRemovals: readonly string[];
8
+ readonly notebook: readonly GroundRow[];
9
+ readonly proposals: readonly P[];
10
+ /** Results Build settled against an exact accepted result: no record. */
11
+ readonly settled: readonly P[];
12
+ readonly repositoryObservations: readonly R[];
13
+ readonly seals: readonly S[];
14
+ }
15
+ export interface UnitProposal {
16
+ readonly entityId: string;
17
+ }
18
+ export interface PassCollection<P extends UnitProposal, R extends {
19
+ readonly uuid: string;
20
+ }, S extends {
21
+ readonly uuid: string;
22
+ }> {
23
+ /** The S0 rows of every examined root. */
24
+ readonly before: Readonly<Record<GroundInventory, ReadonlyMap<string, GroundRow>>>;
25
+ readonly writes: UnitWrites<P, R, S>;
26
+ /** Identities whose collection did not complete. */
27
+ readonly failed: ReadonlySet<string>;
28
+ /** Examined roots whose selection withheld a result for a cross-entity reason. */
29
+ readonly wholeRoots: ReadonlySet<string>;
30
+ }
31
+ /** Ground a pass could not examine, as the reasons a unit needing it waits. */
32
+ export interface ExaminationGaps {
33
+ /** Why this address, or an unlisted directory above it, was not read. */
34
+ readonly unread: (address: string) => string | undefined;
35
+ /** Why this root's entry lists are incomplete, when one is. */
36
+ readonly namespace: (rootUUID: string) => string | undefined;
37
+ /** Why a complete domain was not wholly examined, when it was not: every
38
+ * identity gone missing from the domain waits on it. */
39
+ readonly domain: string | undefined;
40
+ }
41
+ export interface AdmissionUnit<P, R, S> {
42
+ readonly members: readonly string[];
43
+ readonly writes: UnitWrites<P, R, S>;
44
+ /** Members whose collection failed; a unit holding one never admits. */
45
+ readonly failed: readonly string[];
46
+ /** Absolute addresses this unit's rows occupy, before and after. */
47
+ readonly addresses: readonly string[];
48
+ /** Repositories this unit admits; their semantic proofs belong to it. */
49
+ readonly repositories: readonly string[];
50
+ /** The S0 facts this unit's admission consumed. */
51
+ scope(keys: GroundScope): void;
52
+ /** What this unit read, for its lease's effect interval, with the scope of
53
+ * every identity discovery it consumed. */
54
+ reads(physicalReads: PhysicalReads, repositoryPhysical: ReadonlyMap<string, readonly string[]>, discoveries: readonly {
55
+ readonly entries: readonly string[];
56
+ }[]): GroundReads;
57
+ /** Why the walk's retained sources do not close for this unit, or null. */
58
+ unsettled(closureOf: (address: string) => GroundClosure | undefined, closures: readonly GroundClosure[]): string | null;
59
+ /** Which unexamined ground this unit needs a fact from, or null. */
60
+ unexamined(gaps: ExaminationGaps): string | null;
61
+ }
62
+ export declare function admissionUnits<P extends UnitProposal, R extends {
63
+ readonly uuid: string;
64
+ }, S extends {
65
+ readonly uuid: string;
66
+ }>(pass: PassCollection<P, R, S>): AdmissionUnit<P, R, S>[];