@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,274 @@
1
+ /** Retain the physical basis of a complete walk across scheduling boundaries. */
2
+ import { sep } from "node:path";
3
+ import { eachStep } from "@amalgm/live";
4
+ import { listingQualification, listingWaitMs } from "../content-clock.js";
5
+ import { pathsWitnessSteps } from "../physical-path-witness.js";
6
+ import { sourceProofs, witnessProof } from "../source-proof.js";
7
+ import { physicalKey, signedStat, sourceUnchanged } from "../source-signature.js";
8
+ import { awaitTurn, finishStepsInTurns, turnBoundary } from "../turns.js";
9
+ const KIND = 0o170000;
10
+ const sameObject = (a, b) => a.physicalKey === physicalKey(b) && ((a.filesystemMode ?? 0) & KIND) === (Number(b.mode) & KIND);
11
+ const sameMarker = (a, b) => a === null || b === null
12
+ ? a === b
13
+ : a.physicalKey === b.physicalKey && a.kind === b.kind;
14
+ const isDirectory = (source) => source.relativePath === "" || ((source.filesystemMode ?? 0) & KIND) === 0o040000;
15
+ /** Separators in an address: a parent is always shallower than its child. */
16
+ const depthOf = (relativePath) => {
17
+ let depth = 0;
18
+ for (let at = relativePath.indexOf("/"); at >= 0; at = relativePath.indexOf("/", at + 1))
19
+ depth += 1;
20
+ return depth;
21
+ };
22
+ const sameNames = (a, b) => a.length === b.length && a.every((name, index) => name === b[index]);
23
+ /** Stat calls between yields while closing. */
24
+ const CLOSE_YIELD_SOURCES = 256;
25
+ /** A closed walk, answered by absolute address so one pass can consult the
26
+ * closure that observed each member. Each answer is about one retained
27
+ * address; a reread that differs is input for a later attempt, never a new
28
+ * expected value. */
29
+ export class GroundClosure {
30
+ /** Absolute address to whether the walk read it as a directory. */
31
+ #observed;
32
+ #changes;
33
+ constructor(observed, changes) {
34
+ this.#observed = observed;
35
+ this.#changes = changes;
36
+ }
37
+ observes(path) { return this.#observed.has(path); }
38
+ #change(path) {
39
+ if (!this.#observed.has(path))
40
+ throw new Error(`ground closure never observed ${path}`);
41
+ return this.#changes.get(path);
42
+ }
43
+ /** Bytes, entry list and marker closed exactly as walked. */
44
+ settled(path) { return this.#change(path) === undefined; }
45
+ /** A directory an address resolves through: the same object and marker.
46
+ * Its own entry list may have changed; a sibling's churn crosses no route. */
47
+ routes(path) {
48
+ const change = this.#change(path);
49
+ return change === undefined || (!change.object && !change.marker);
50
+ }
51
+ /** Nothing at or beneath the directory changed. */
52
+ settledUnder(directory) {
53
+ const prefix = directory.endsWith(sep) ? directory : directory + sep;
54
+ for (const path of this.#changes.keys())
55
+ if (path === directory || path.startsWith(prefix))
56
+ return false;
57
+ return true;
58
+ }
59
+ /** The first walked directory whose entry list did not close, with what
60
+ * moved, or null when every one closed: an identity the walk did not find
61
+ * was then absent from all of them, not moved between reads. A racy listing
62
+ * has not closed. */
63
+ get unsettledDirectory() {
64
+ for (const [path, change] of this.#changes) {
65
+ if (!this.#observed.get(path))
66
+ continue;
67
+ const kinds = Object.keys(change).filter(kind => change[kind]);
68
+ return `${path} (${kinds.join(", ")})`;
69
+ }
70
+ return null;
71
+ }
72
+ /** Absolute addresses whose walk read did not close. */
73
+ get changed() { return [...this.#changes.keys()]; }
74
+ }
75
+ /** This is evidence, never an identity resolver. Any changed source restarts
76
+ * reconciliation; fresh bytes must not inherit an old directory's UUID map.
77
+ * Parents open before children and close afterward. This rejects persistent
78
+ * replacement during the read; it does not make path resolution atomic.
79
+ *
80
+ * It closes in one of two forms. `close` answers per address, for a caller
81
+ * that waits only where ground moved. `witness` is the whole walk as plain
82
+ * data, for a journey that concludes every membership at once; any thread
83
+ * judges it, so a cold walk never closes on the admitting thread.
84
+ *
85
+ * A listing its walk's content clock qualified closes as its directory's
86
+ * signature does (see content-clock.ts). Any other closes only by a fresh
87
+ * listing, taken after the whole walk, that names exactly what the walk
88
+ * listed while the directory stands as walked on both sides. A racy listing
89
+ * must also qualify under a later stamp, which proves no same-tick change is
90
+ * hidden. A listing no stamp can qualify, on a filesystem ground-profile.ts
91
+ * does not trust or on another device than the clock, closes by agreement
92
+ * alone: an entry moved once between a directory not yet listed and one
93
+ * already listed changes one of those listings between its two reads. Only
94
+ * an entry moved and moved back across both reads, each move inside its
95
+ * directories' clock ticks, escapes that; any move is a later Watch
96
+ * generation. Such ground loses shortcuts, never conclusions. A walk that
97
+ * concludes nothing from its listings keeps none. */
98
+ export class GroundSourceProof {
99
+ #sources;
100
+ #byPath;
101
+ #reader;
102
+ #names;
103
+ #racy;
104
+ #racyWaitMs;
105
+ #unqualified;
106
+ #witness;
107
+ /** The proof of a walk's sources, built as steps. */
108
+ static *ofWalk(sources, reader, listings) {
109
+ const retained = [];
110
+ yield* eachStep(sources, source => retained.push({ depth: depthOf(source.relativePath), source: {
111
+ relativePath: source.relativePath, absolutePath: source.absolutePath,
112
+ physicalKey: source.physicalKey, sourceSignature: source.sourceSignature,
113
+ filesystemMode: source.filesystemMode,
114
+ ...(source.gitMarker !== undefined ? { gitMarker: source.gitMarker } : {}),
115
+ } }));
116
+ retained.sort((a, b) => a.depth - b.depth || a.source.relativePath.localeCompare(b.source.relativePath));
117
+ yield;
118
+ const ordered = [];
119
+ const byPath = new Map();
120
+ yield* eachStep(retained, ({ source }) => { ordered.push(source); byPath.set(source.relativePath, source); });
121
+ if (!byPath.has('') || byPath.size !== ordered.length) {
122
+ throw new Error('ground proof requires one root and unique observed addresses');
123
+ }
124
+ yield* eachStep(ordered, source => {
125
+ if (source.relativePath === '')
126
+ return;
127
+ const parent = source.relativePath.slice(0, Math.max(0, source.relativePath.lastIndexOf('/')));
128
+ if (!byPath.has(parent))
129
+ throw new Error('ground proof is missing observed ancestry');
130
+ });
131
+ const racy = [];
132
+ let racyWaitMs = 0;
133
+ const unqualified = [];
134
+ const names = listings?.names ?? new Map();
135
+ if (listings)
136
+ yield* eachStep(ordered, source => {
137
+ if (!isDirectory(source) || source.sourceSignature === null || names.get(source.absolutePath) === null)
138
+ return;
139
+ const [dev, , , , mtimeNs, ctimeNs] = source.sourceSignature.split(":").map(BigInt);
140
+ const qualification = listingQualification(listings.clock, { dev: dev, mtimeNs: mtimeNs, ctimeNs: ctimeNs });
141
+ if (qualification === "racy") {
142
+ racy.push(source);
143
+ racyWaitMs = Math.max(racyWaitMs, listingWaitMs(listings.clock, { mtimeNs: mtimeNs, ctimeNs: ctimeNs }));
144
+ }
145
+ else if (qualification === "unqualified")
146
+ unqualified.push(source);
147
+ });
148
+ return new GroundSourceProof(ordered, byPath, reader, names, racy, racyWaitMs, unqualified);
149
+ }
150
+ constructor(sources, byPath, reader, names, racy, racyWaitMs, unqualified) {
151
+ this.#sources = sources;
152
+ this.#byPath = byPath;
153
+ this.#reader = reader;
154
+ this.#names = names;
155
+ this.#racy = racy;
156
+ this.#racyWaitMs = racyWaitMs;
157
+ this.#unqualified = unqualified;
158
+ }
159
+ /** Directories listed inside their racy interval, by absolute address. */
160
+ get racy() { return this.#racy.map(source => source.absolutePath); }
161
+ /** Directories listed where no stamp can qualify them, by absolute address. */
162
+ get unqualified() { return this.#unqualified.map(source => source.absolutePath); }
163
+ /** How long after this walk's stamp a later stamp can qualify every racy
164
+ * directory, if none changes; 0 when none is racy. */
165
+ get racyWaitMs() { return this.#racyWaitMs; }
166
+ /** Whether a fresh listing names exactly what the walk listed while the
167
+ * directory stands as walked on both sides of it, and, where a clock is
168
+ * given, qualifies under it. */
169
+ #listsAgain(source, clock) {
170
+ const names = this.#names.get(source.absolutePath), current = this.#reader.stat(source);
171
+ if (!names || current === null || !sourceUnchanged(source.sourceSignature, current)
172
+ || (clock !== undefined && listingQualification(clock, current) !== "qualified"))
173
+ return false;
174
+ const now = this.#reader.list(source.absolutePath), after = this.#reader.stat(source);
175
+ return now !== null && after !== null && sourceUnchanged(source.sourceSignature, after) && sameNames(now, names);
176
+ }
177
+ /** Closes every listing its walk's clock did not qualify by listing it
178
+ * again, a racy one under clock, a later stamp, as Git settles a racily
179
+ * clean entry. Returns the first directory that stays open; each closed
180
+ * one is neither racy nor unqualified any more. */
181
+ async closeListings(clock, checkpoint) {
182
+ const open = async (sources, qualifying) => {
183
+ const remaining = [];
184
+ for (const source of sources) {
185
+ await turnBoundary();
186
+ checkpoint?.();
187
+ if (!this.#listsAgain(source, qualifying))
188
+ remaining.push(source);
189
+ }
190
+ return remaining;
191
+ };
192
+ this.#racy = await open(this.#racy, clock);
193
+ if (!this.#racy.length)
194
+ this.#racyWaitMs = 0;
195
+ this.#unqualified = await open(this.#unqualified);
196
+ return this.#racy[0]?.absolutePath ?? this.#unqualified[0]?.absolutePath ?? null;
197
+ }
198
+ /** Every retained source as one witness, parents first, built as steps
199
+ * once. Judging it reads each source forward, then each directory again in
200
+ * reverse, as `close` does. */
201
+ *witness() {
202
+ if (this.#witness)
203
+ return this.#witness;
204
+ const components = [];
205
+ yield* eachStep(this.#sources, source => {
206
+ if (source.sourceSignature === null)
207
+ throw new Error(`ground witness lacks a signed read: ${source.absolutePath}`);
208
+ components.push([source.absolutePath, signedStat(source.sourceSignature)]);
209
+ });
210
+ return (this.#witness = yield* pathsWitnessSteps(components));
211
+ }
212
+ /** Closes every retained source outside any transaction, yielding as it
213
+ * goes: parents forward before children, directories again in reverse,
214
+ * each directory's marker with it. Changes are answers, not failures; an
215
+ * unreadable address is a fault. */
216
+ async close(checkpoint) {
217
+ const changes = new Map();
218
+ const mark = (path, kind) => {
219
+ const change = changes.get(path) ?? { object: false, content: false, marker: false, listing: false };
220
+ change[kind] = true;
221
+ changes.set(path, change);
222
+ };
223
+ let reads = 0;
224
+ const read = async (source) => {
225
+ if (++reads % CLOSE_YIELD_SOURCES === 0) {
226
+ await awaitTurn();
227
+ checkpoint?.();
228
+ }
229
+ const current = this.#reader.stat(source);
230
+ if (current === null || !sameObject(source, current))
231
+ mark(source.absolutePath, "object");
232
+ else if (!sourceUnchanged(source.sourceSignature, current))
233
+ mark(source.absolutePath, "content");
234
+ };
235
+ const observed = new Map();
236
+ for (const source of this.#sources) {
237
+ observed.set(source.absolutePath, isDirectory(source));
238
+ await read(source);
239
+ if (source.gitMarker !== undefined
240
+ && !sameMarker(source.gitMarker, this.#reader.marker(source.absolutePath))) {
241
+ mark(source.absolutePath, "marker");
242
+ }
243
+ }
244
+ for (let index = this.#sources.length - 1; index >= 0; index -= 1) {
245
+ const source = this.#sources[index];
246
+ if (isDirectory(source))
247
+ await read(source);
248
+ }
249
+ for (const path of this.racy)
250
+ mark(path, "listing");
251
+ // Every walked listing was read before any of these.
252
+ for (const source of this.#unqualified) {
253
+ if (changes.has(source.absolutePath))
254
+ continue;
255
+ await turnBoundary();
256
+ checkpoint?.();
257
+ if (!this.#listsAgain(source))
258
+ mark(source.absolutePath, "listing");
259
+ }
260
+ return new GroundClosure(observed, changes);
261
+ }
262
+ }
263
+ /** Every dependency answers semantically before any root closes physically,
264
+ * so no root's physical close can precede another root's Git work. Each
265
+ * root's walk closes on both sides of its dependencies' witnesses, parents
266
+ * open before children and closed afterward, as two leaves because a proof
267
+ * closes once. Later filesystem changes belong to later Watch generations. */
268
+ export async function groundSourceProof(proofs) {
269
+ const walks = [];
270
+ for (const proof of proofs)
271
+ walks.push(await finishStepsInTurns(proof.physical.witness()));
272
+ return sourceProofs([witnessProof(walks), ...proofs.flatMap(proof => proof.dependencies), witnessProof(walks)]);
273
+ }
274
+ //# sourceMappingURL=ground-proof.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ground-proof.js","sourceRoot":"","sources":["../../src/detection/ground-proof.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /** One named observation's indexed, detached database evidence. Memoized
2
+ * answers remain original facts; final admission checks all their revisions. */
3
+ import type Database from "better-sqlite3";
4
+ import type { GroundBasis, GroundRepositoryMember, GroundStructure, GroundNamespaceEntry } from "../ground-basis.js";
5
+ import type { GroundRow } from "../ground-row.js";
6
+ export declare class NamedGroundReader {
7
+ #private;
8
+ constructor(database: Database.Database);
9
+ private answer;
10
+ root(directory: string): GroundRow | undefined;
11
+ sharing(uuid: string): GroundRow | undefined;
12
+ /** A member write can retire its repository's admission. Retain that full
13
+ * original B target as well as the structural chain before any await/write. */
14
+ private coveringOwner;
15
+ physical(uuid: string): GroundRow | undefined;
16
+ repositoryMembers(): readonly GroundRepositoryMember[];
17
+ /** Every row at an address in either inventory, any status. An empty
18
+ * answer stays in the basis: a later owner of the slot retires it. */
19
+ atPath(rootUUID: string, path: string, inventory?: "entities" | "detection_notebook"): readonly GroundRow[];
20
+ /** One root's identities at a filesystem object. */
21
+ candidates(rootUUID: string, physicalKey: string): readonly GroundRow[];
22
+ /** Every name a filesystem object has, in any root. */
23
+ objectRows(physicalKey: string): readonly GroundRow[];
24
+ subtree(uuid: string, inventory?: "entities" | "detection_notebook"): readonly GroundRow[];
25
+ structure(inventory: "entities" | "detection_notebook", uuid: string): GroundStructure | undefined;
26
+ siblings(inventory: "entities" | "detection_notebook", parentUUID: string): readonly GroundNamespaceEntry[];
27
+ slot(inventory: "entities" | "detection_notebook", parentUUID: string, name: string): readonly GroundNamespaceEntry[];
28
+ finish(): GroundBasis;
29
+ }
@@ -0,0 +1,102 @@
1
+ import { groundStore } from "../ground-store.js";
2
+ export class NamedGroundReader {
3
+ #observation;
4
+ #answers = new Map();
5
+ #ownersRead = new Set();
6
+ constructor(database) { this.#observation = groundStore(database).observe(); }
7
+ answer(key, read) {
8
+ const id = JSON.stringify(key);
9
+ if (this.#answers.has(id))
10
+ return this.#answers.get(id);
11
+ const value = this.#observation.read(read);
12
+ this.#answers.set(id, value);
13
+ return value;
14
+ }
15
+ root(directory) {
16
+ return this.answer(["root", directory], reader => {
17
+ const roots = reader.rootsAtPath("entities", directory);
18
+ if (roots.length > 1)
19
+ throw new Error("named ground has multiple roots at one address");
20
+ if (roots.length === 0)
21
+ return undefined;
22
+ reader.sharing(roots[0].uuid);
23
+ return reader.physical(roots[0].uuid);
24
+ });
25
+ }
26
+ sharing(uuid) {
27
+ const row = this.answer(["sharing", uuid], reader => {
28
+ reader.physical(uuid);
29
+ return reader.sharing(uuid);
30
+ });
31
+ if (row)
32
+ this.coveringOwner(row);
33
+ return row;
34
+ }
35
+ /** A member write can retire its repository's admission. Retain that full
36
+ * original B target as well as the structural chain before any await/write. */
37
+ coveringOwner(row) {
38
+ if (this.#ownersRead.has(row.uuid))
39
+ return;
40
+ const seen = new Set();
41
+ let parent = row.parentUUID;
42
+ while (parent) {
43
+ if (seen.has(parent))
44
+ throw new Error("sharing ancestry contains a cycle");
45
+ seen.add(parent);
46
+ const ancestor = this.structure("detection_notebook", parent);
47
+ if (!ancestor)
48
+ break;
49
+ if (ancestor.type === "repo.git") {
50
+ const owner = parent;
51
+ this.answer(["sharing", owner], reader => reader.sharing(owner));
52
+ break;
53
+ }
54
+ parent = ancestor.parentUUID;
55
+ }
56
+ this.#ownersRead.add(row.uuid);
57
+ }
58
+ physical(uuid) {
59
+ return this.answer(["physical", uuid], reader => reader.physical(uuid));
60
+ }
61
+ repositoryMembers() {
62
+ return this.answer(["repository-members"], reader => reader.repositoryMembers());
63
+ }
64
+ /** Every row at an address in either inventory, any status. An empty
65
+ * answer stays in the basis: a later owner of the slot retires it. */
66
+ atPath(rootUUID, path, inventory = "entities") {
67
+ return this.answer(["path", inventory, rootUUID, path], reader => {
68
+ const rows = reader.atPath(inventory, rootUUID, path);
69
+ if (inventory === "entities")
70
+ for (const row of rows)
71
+ reader.sharing(row.uuid);
72
+ return rows;
73
+ });
74
+ }
75
+ /** One root's identities at a filesystem object. */
76
+ candidates(rootUUID, physicalKey) {
77
+ return this.answer(["physical-candidates", rootUUID, physicalKey], reader => reader.physicalCandidates("entities", rootUUID, physicalKey));
78
+ }
79
+ /** Every name a filesystem object has, in any root. */
80
+ objectRows(physicalKey) {
81
+ return this.answer(["object", physicalKey], reader => reader.objectRows("entities", physicalKey));
82
+ }
83
+ subtree(uuid, inventory = "entities") {
84
+ return this.answer(["subtree", inventory, uuid], reader => {
85
+ const rows = reader.subtree(inventory, uuid);
86
+ for (const row of rows)
87
+ reader.sharing(row.uuid);
88
+ return rows;
89
+ });
90
+ }
91
+ structure(inventory, uuid) {
92
+ return this.answer(["structure", inventory, uuid], reader => reader.structure(inventory, uuid));
93
+ }
94
+ siblings(inventory, parentUUID) {
95
+ return this.answer(["siblings", inventory, parentUUID], reader => reader.children(inventory, parentUUID));
96
+ }
97
+ slot(inventory, parentUUID, name) {
98
+ return this.answer(["slot", inventory, parentUUID, name], reader => reader.slot(inventory, parentUUID, name));
99
+ }
100
+ finish() { return this.#observation.finish(); }
101
+ }
102
+ //# sourceMappingURL=ground-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ground-reader.js","sourceRoot":"","sources":["../../src/detection/ground-reader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,OAAO,iBAAiB;IACnB,YAAY,CAAoB;IAChC,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IACtC,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IAEzC,YAAY,QAA2B,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAEzF,MAAM,CAAI,GAAuB,EAAE,IAAyC;QAClF,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAM,CAAC;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,SAAiB;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,EAAE;YAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACxD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACxF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC;YACzC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE;YAClD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,IAAI,GAAG;YAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,GAAG,CAAC;IACb,CAAC;IAED;mFAC+E;IACvE,aAAa,CAAC,GAAc;QAClC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO;QAC3C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,IAAI,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC;QAC5B,OAAO,MAAM,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YAC3E,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;YAC9D,IAAI,CAAC,QAAQ;gBAAE,MAAM;YACrB,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,MAAM,CAAC;gBACrB,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBACjE,MAAM;YACR,CAAC;YACD,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACnF,CAAC;IAED;0EACsE;IACtE,MAAM,CAAC,QAAgB,EAAE,IAAY,EAAE,YAA+C,UAAU;QAC9F,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE;YAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YACtD,IAAI,SAAS,KAAK,UAAU;gBAAE,KAAK,MAAM,GAAG,IAAI,IAAI;oBAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/E,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oDAAoD;IACpD,UAAU,CAAC,QAAgB,EAAE,WAAmB;QAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,qBAAqB,EAAE,QAAQ,EAAE,WAAW,CAAC,EAC/D,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,uDAAuD;IACvD,UAAU,CAAC,WAAmB;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IACpG,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,YAA+C,UAAU;QAC7E,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE;YACxD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC7C,KAAK,MAAM,GAAG,IAAI,IAAI;gBAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,SAA4C,EAAE,IAAY;QAClE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAClG,CAAC;IAED,QAAQ,CAAC,SAA4C,EAAE,UAAkB;QACvE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAC5G,CAAC;IAED,IAAI,CAAC,SAA4C,EAAE,UAAkB,EAAE,IAAY;QACjF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IAChH,CAAC;IAED,MAAM,KAAkB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAC7D"}
@@ -0,0 +1,51 @@
1
+ import { type GroundIdentityPrior, type Steps } from "@amalgm/live";
2
+ import type { GroundRow } from "../ground-row.js";
3
+ import type { TerritoryHandle } from "../ground-territory.js";
4
+ import { type SourceFingerprint } from "../source-signature.js";
5
+ import type { SealEntry } from "./seal-law.js";
6
+ /** The held form cannot answer exactly; the complete form answers instead. */
7
+ export declare class HoldRefused extends Error {
8
+ readonly reason: string;
9
+ constructor(reason: string);
10
+ }
11
+ /** A prior row found by address, in the frame its inventory stored it. */
12
+ export type PriorRow = Omit<GroundRow, "relativePath">;
13
+ type Inventory = "o" | "b";
14
+ export declare class HeldTerritory {
15
+ #private;
16
+ constructor(o: TerritoryHandle, b: TerritoryHandle, rootAddress: string);
17
+ /** O's members whose payload names a Git index object. */
18
+ get indexed(): number;
19
+ /** O's row at this path of the examined root, as stored. */
20
+ at(path: string): PriorRow | undefined;
21
+ /** Both inventories' examined rows, read and framed, ordered by UUID. An
22
+ * identity examined in one inventory and held in the other would be
23
+ * decided twice; that is refused. */
24
+ examine(suspects: readonly string[]): {
25
+ readonly o: readonly GroundRow[];
26
+ readonly b: readonly GroundRow[];
27
+ };
28
+ /** O as the identity resolver asks about it, in the examined root's frame. */
29
+ get prior(): GroundIdentityPrior;
30
+ /** Held graph rows directly beneath each examined container that has any,
31
+ * by the container's UUID, framed. B's retired history, the rows only B
32
+ * holds, is no graph row. */
33
+ beneath(inventory: Inventory): Steps<ReadonlyMap<string, readonly GroundRow[]>>;
34
+ /** Examined O containers with held rows beneath them, framed. */
35
+ parents(): Steps<readonly GroundRow[]>;
36
+ /** Every held member of the repository by its path in the examined
37
+ * root's frame, as the repository's identity reads it. */
38
+ members(): Steps<ReadonlyMap<string, SealEntry>>;
39
+ /** A held leaf the repository's own read found at this fingerprint. While
40
+ * O still holds it as proven content, it stays held, and so does B's: the
41
+ * views agree, so B holds O's fingerprint and either O's boundary or one
42
+ * proven for O's signature. Else both rows are read and O's, framed,
43
+ * re-enters as observed. */
44
+ promoted(uuid: string, fingerprint: SourceFingerprint): GroundRow | null;
45
+ /** The rows this examination read, as stored: its S0 context. */
46
+ consumed(): {
47
+ readonly entities: readonly GroundRow[];
48
+ readonly detection_notebook: readonly GroundRow[];
49
+ };
50
+ }
51
+ export {};