@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,444 @@
1
+ /** Git storage is evidence for checkout owners, never lexical containment.
2
+ * Each enrolled repository's binding is Git's answer over complete witnessed
3
+ * inputs: asked once, then reused while every witness stands. A notice path
4
+ * consumes only the bindings whose storage or sources it can reach; an
5
+ * unrelated leaf consumes none. A checkout Git does not bind, whose storage
6
+ * lies within its address, is ordinary ground there. Layouts the named lane
7
+ * cannot own retain responsibility through complete reconciliation. */
8
+ import { lstatSync, readdirSync, realpathSync } from "node:fs";
9
+ import { dirname, join, relative, sep } from "node:path";
10
+ import { CaptureSourceChangedError } from "../content-cache-host.js";
11
+ import { collectGitBinding, gitStorageDirectory } from "../git-binding.js";
12
+ import { currentGitHost } from "../git-command.js";
13
+ import { observeGitConfiguration } from "../git-configuration.js";
14
+ import { closePhysically } from "../source-proof.js";
15
+ import { readThroughAddresses } from "../sync-address.js";
16
+ const inside = (parent, path) => path === parent || path.startsWith(`${parent}${sep}`);
17
+ export class GitNoticeChanged extends Error {
18
+ constructor(cause) { super("Git notice consumers changed; retain suspicion and route afresh", { cause }); }
19
+ }
20
+ /** Only these bounded domains describe this checkout's Git state by name. An
21
+ * unknown or coalesced administrative container must be examined more widely:
22
+ * the whole repository when its storage is private, else by reconciliation. */
23
+ export function ordinaryGitDomain(path) {
24
+ if (!path || path === "." || path.split("/").some(part => !part || part === "." || part === ".."))
25
+ return false;
26
+ const [first] = path.split("/");
27
+ if (["refs", "objects", "logs"].includes(first))
28
+ return true;
29
+ return !path.includes("/") && /^(HEAD|index|packed-refs|config|shallow|MERGE_HEAD|MERGE_MSG|MERGE_MODE|ORIG_HEAD|FETCH_HEAD|COMMIT_EDITMSG|AUTO_MERGE|CHERRY_PICK_HEAD|REVERT_HEAD|sharedindex\.[0-9a-f]+)(\.lock)?$/.test(path);
30
+ }
31
+ /** Storage Git keeps inside a checkout's storage for other checkouts:
32
+ * submodule and linked-worktree administrative directories. */
33
+ export function foreignGitDomain(path) {
34
+ const [first] = path.split("/");
35
+ return first === "modules" || first === "worktrees";
36
+ }
37
+ const metadataReader = {
38
+ stat(path) {
39
+ try {
40
+ return lstatSync(path);
41
+ }
42
+ catch (error) {
43
+ if (error.code === "ENOENT")
44
+ return null;
45
+ throw error;
46
+ }
47
+ },
48
+ names: path => readdirSync(path),
49
+ };
50
+ /** An exclusion witness for mutable Git state. Symlinks, multiply linked
51
+ * files and unknown ref storage make the consumer description incomplete.
52
+ * Git objects are immutable addresses; this never walks the object store. */
53
+ export function privateGitMetadata(directory, reader = metadataReader) {
54
+ const privatePath = (path, recursive) => {
55
+ const stat = reader.stat(path);
56
+ if (!stat)
57
+ return true;
58
+ if (stat.isFile())
59
+ return stat.nlink === 1;
60
+ if (!recursive || !stat.isDirectory())
61
+ return false;
62
+ return reader.names(path).every(name => privatePath(join(path, name), true));
63
+ };
64
+ if (reader.stat(join(directory, "reftable")))
65
+ return false;
66
+ if (!["refs", "logs"].every(name => privatePath(join(directory, name), true)))
67
+ return false;
68
+ return reader.names(directory).every(name => {
69
+ const path = join(directory, name), stat = reader.stat(path);
70
+ // Nested repositories, hooks and immutable objects are not this checkout's
71
+ // mutable control files. Their consumers have their own binding entries.
72
+ if (stat?.isDirectory())
73
+ return true;
74
+ return privatePath(path, false);
75
+ });
76
+ }
77
+ const lstatOrNull = (path) => {
78
+ try {
79
+ return lstatSync(path);
80
+ }
81
+ catch (error) {
82
+ if (["ENOENT", "ENOTDIR"].includes(error.code ?? ""))
83
+ return null;
84
+ throw error;
85
+ }
86
+ };
87
+ const present = (path) => lstatOrNull(path) !== null;
88
+ /** A name in Git storage no bound checkout consumes owes the directory
89
+ * holding that storage. */
90
+ const ground = (path) => {
91
+ const parts = path.split(sep), at = parts.indexOf(".git");
92
+ return at < 0 ? path : parts.slice(0, at).join(sep) || sep;
93
+ };
94
+ const changed = () => { throw new CaptureSourceChangedError("Git notice binding changed"); };
95
+ async function certify(member) {
96
+ const host = currentGitHost().key;
97
+ const binding = await collectGitBinding(member.absolutePath);
98
+ const storage = binding.binding;
99
+ const configuration = await observeGitConfiguration(member.absolutePath);
100
+ // The association was witnessed after Git answered; one closing answer
101
+ // proves it held throughout. Reuse afterwards needs only the witnesses.
102
+ await binding.semantic();
103
+ const marker = join(member.absolutePath, ".git"), worktrees = join(storage.common, "worktrees");
104
+ const storages = [...new Set([storage.gitDir, storage.common])];
105
+ const { directory: named, gitfile } = gitStorageDirectory(member.absolutePath);
106
+ const direct = gitfile !== null || lstatSync(marker).isDirectory();
107
+ const shared = present(worktrees), commondir = present(join(storage.gitDir, "commondir"));
108
+ const complete = storages.every(path => privateGitMetadata(path));
109
+ const validate = () => {
110
+ if (currentGitHost().key !== host)
111
+ changed();
112
+ closePhysically(binding);
113
+ closePhysically(configuration);
114
+ if (present(worktrees) !== shared || storages.every(path => privateGitMetadata(path)) !== complete)
115
+ changed();
116
+ };
117
+ validate();
118
+ const points = [member.absolutePath, storage.worktree, marker, ...storages, ...configuration.sources];
119
+ return Object.freeze({ member, storage, binding, configuration, complete, validate,
120
+ layout: direct && !shared && !commondir && storage.gitDir === realpathSync(named)
121
+ && storage.common === storage.gitDir && storage.index === join(storage.gitDir, "index"),
122
+ storages: Object.freeze(storages),
123
+ points: Object.freeze([...new Set(points.flatMap(readThroughAddresses))]) });
124
+ }
125
+ const isCertificate = (answer) => !!answer && !("unbound" in answer);
126
+ async function answer(member) {
127
+ const marker = join(member.absolutePath, ".git");
128
+ const unbound = () => {
129
+ const stat = lstatOrNull(marker);
130
+ return stat === null || (stat.isDirectory() && !present(join(marker, "commondir")))
131
+ ? Object.freeze({ member, unbound: true }) : null;
132
+ };
133
+ // Without a marker there is nothing for Git to answer.
134
+ if (!present(marker))
135
+ return unbound();
136
+ try {
137
+ return await certify(member);
138
+ }
139
+ catch {
140
+ return unbound();
141
+ }
142
+ }
143
+ /** Paths to consumers: inside a storage directory, but not in the storage it
144
+ * keeps for other checkouts, or at or above any point. An enclosing Card +
145
+ * Checkpoint takes a nested gitlink from its own index and reads nothing of
146
+ * the nested repository's storage (name-reach.ts). */
147
+ class RouteIndex {
148
+ #within = new Map();
149
+ #reach = new Map();
150
+ constructor(certificates) {
151
+ const add = (map, key, certificate) => {
152
+ const list = map.get(key) ?? [];
153
+ if (!list.includes(certificate))
154
+ list.push(certificate);
155
+ map.set(key, list);
156
+ };
157
+ for (const certificate of certificates) {
158
+ for (const storage of certificate.storages)
159
+ add(this.#within, storage, certificate);
160
+ for (const point of [...certificate.points, ...certificate.storages]) {
161
+ for (let at = point;; at = dirname(at)) {
162
+ add(this.#reach, at, certificate);
163
+ if (dirname(at) === at)
164
+ break;
165
+ }
166
+ }
167
+ }
168
+ }
169
+ consumers(path) {
170
+ const found = new Set(this.#reach.get(path) ?? []);
171
+ for (let at = dirname(path);; at = dirname(at)) {
172
+ const within = this.#within.get(at);
173
+ if (within && !foreignGitDomain(relative(at, path).split(sep).join("/"))) {
174
+ for (const certificate of within)
175
+ found.add(certificate);
176
+ }
177
+ if (dirname(at) === at)
178
+ break;
179
+ }
180
+ return [...found];
181
+ }
182
+ }
183
+ const sameMember = (a, b) => a.rootUUID === b.rootUUID && a.absolutePath === b.absolutePath;
184
+ /** The maintained binding table. Binding is serial and coalesced: callers
185
+ * share one task per repository, and a refresh never overwrites a newer
186
+ * entry. A refresh caused by a moved witness rings its checkout, so the
187
+ * changed consumer is reconciled over its old and new footprint. */
188
+ export class GitNoticeBindings {
189
+ rebound;
190
+ #entries = new Map();
191
+ #queue = Promise.resolve();
192
+ #index = null;
193
+ constructor(rebound = () => { }) {
194
+ this.rebound = rebound;
195
+ }
196
+ #bind(member) {
197
+ const current = this.#entries.get(member.uuid);
198
+ if (current && sameMember(current.member, member))
199
+ return current;
200
+ const task = this.#queue.then(() => answer(member)).then(value => value, () => null);
201
+ this.#queue = task;
202
+ const entry = { member, task };
203
+ this.#entries.set(member.uuid, entry);
204
+ void task.then(value => {
205
+ entry.answer = value;
206
+ // Only a certificate is retained: the next observation asks again.
207
+ if (!isCertificate(value) && this.#entries.get(member.uuid) === entry)
208
+ this.#entries.delete(member.uuid);
209
+ });
210
+ return entry;
211
+ }
212
+ /** Retire a certificate whose witness moved and refresh it through the
213
+ * same owner. Observations already holding it keep it and fail closed.
214
+ * The ring follows the replacement in the same turn: any examination that
215
+ * cuts it observes through the refreshed entry, so the next cut already
216
+ * owes the checkout, never a later one once the answer arrives. */
217
+ #refresh(certificate, ring) {
218
+ const entry = this.#entries.get(certificate.member.uuid);
219
+ if (entry?.answer !== certificate)
220
+ return;
221
+ this.#entries.delete(certificate.member.uuid);
222
+ this.#bind(certificate.member);
223
+ if (ring)
224
+ this.rebound(certificate.member.absolutePath);
225
+ }
226
+ #retain(members) {
227
+ const ids = new Set(members.map(member => member.uuid));
228
+ for (const id of this.#entries.keys())
229
+ if (!ids.has(id))
230
+ this.#entries.delete(id);
231
+ }
232
+ /** Startup discovery: bind every member in the background, one at a time,
233
+ * so the first notice does not pay for every repository. */
234
+ discover(members) {
235
+ this.#retain(members);
236
+ for (const member of members)
237
+ this.#bind(member);
238
+ }
239
+ #routes(certificates) {
240
+ const cached = this.#index;
241
+ if (cached && cached.certificates.length === certificates.length
242
+ && cached.certificates.every((certificate, index) => certificate === certificates[index]))
243
+ return cached.routes;
244
+ const routes = new RouteIndex(certificates);
245
+ this.#index = { certificates, routes };
246
+ return routes;
247
+ }
248
+ async observe(members, rowOf) {
249
+ const started = performance.now();
250
+ this.#retain(members);
251
+ const answers = await Promise.all(members.map(member => this.#bind(member).task));
252
+ const discoveryWaitMs = performance.now() - started;
253
+ const certificates = answers.filter(isCertificate);
254
+ // An incomplete description is checked on each use so its recovery is seen.
255
+ for (const certificate of certificates) {
256
+ if (certificate.complete)
257
+ continue;
258
+ try {
259
+ certificate.validate();
260
+ }
261
+ catch {
262
+ this.#refresh(certificate, false);
263
+ }
264
+ }
265
+ if (answers.includes(null) || certificates.some(certificate => !certificate.complete)) {
266
+ const roots = Object.freeze([...new Set(members.map(member => member.rootUUID))]);
267
+ const refuse = () => { throw new GitNoticeChanged(new Error("Git consumer description is incomplete")); };
268
+ return { route: () => ({ kind: "reconcile", rootUUIDs: roots }), own: () => null, held: address => address,
269
+ discoveryWaitMs, routeMs: () => 0, semanticMs: () => 0,
270
+ proof: { semantic: async () => refuse(), witnesses: [], admission: refuse } };
271
+ }
272
+ const unbound = answers.filter(value => value !== null && !isCertificate(value)).map(value => value.member);
273
+ return this.#view(this.#routes(certificates), unbound, rowOf, discoveryWaitMs);
274
+ }
275
+ #view(routes, unboundMembers, rowOf, discoveryWaitMs) {
276
+ const consumed = new Set(), answered = new Map();
277
+ // One view is one observation's answer: each certificate's witnesses and
278
+ // each consumer's O row are read once for all its names. Admission
279
+ // re-validates every consumed certificate before anything is trusted.
280
+ const validated = new Set(), rows = new Map();
281
+ const validate = (certificate) => {
282
+ if (validated.has(certificate))
283
+ return;
284
+ certificate.validate();
285
+ validated.add(certificate);
286
+ };
287
+ const row = (uuid) => {
288
+ if (!rows.has(uuid))
289
+ rows.set(uuid, rowOf(uuid));
290
+ return rows.get(uuid);
291
+ };
292
+ let routing = 0, semantic = 0;
293
+ const fail = (certificate, error) => {
294
+ this.#refresh(certificate, true);
295
+ throw new GitNoticeChanged(error);
296
+ };
297
+ // A private checkout whose own proof fails is released: its address,
298
+ // examined whole, recaptures it wherever its marker names its storage.
299
+ const unbound = new Map(unboundMembers.map(member => [member.uuid, member]));
300
+ const release = (certificate) => {
301
+ unbound.set(certificate.member.uuid, certificate.member);
302
+ this.#refresh(certificate, false);
303
+ };
304
+ const bound = (certificate) => !unbound.has(certificate.member.uuid);
305
+ // Holders of one address are its ancestors, so the last one found is outermost.
306
+ const held = (address) => {
307
+ let outer = address;
308
+ for (const member of unbound.values())
309
+ if (inside(member.absolutePath, outer))
310
+ outer = member.absolutePath;
311
+ return outer;
312
+ };
313
+ // The consumer's own O result must carry this very answer.
314
+ const certified = (certificate) => {
315
+ const own = row(certificate.member.uuid);
316
+ return own?.payloadVersion != null && own.gitConfigurationObservation != null
317
+ && certificate.configuration.stamp(certificate.member.uuid, own.payloadVersion, certificate.storage)
318
+ === own.gitConfigurationObservation;
319
+ };
320
+ // O's directory is the one the certificate's association witnesses.
321
+ const sameDirectory = (certificate) => {
322
+ const own = row(certificate.member.uuid);
323
+ const [device, inode] = certificate.storage.identities[0].split(":");
324
+ return own?.physicalKey != null && own.physicalKey === `${device}:${inode}`;
325
+ };
326
+ const own = (path) => {
327
+ const consumers = routes.consumers(path).filter(bound);
328
+ const self = consumers.find(certificate => certificate.member.absolutePath === path);
329
+ if (!self?.layout || !consumers.every(certificate => inside(path, certificate.member.absolutePath)))
330
+ return null;
331
+ try {
332
+ validate(self);
333
+ }
334
+ catch {
335
+ release(self);
336
+ return null;
337
+ }
338
+ if (!sameDirectory(self))
339
+ return null;
340
+ consumed.add(self);
341
+ return self.member.uuid;
342
+ };
343
+ const route = (path) => {
344
+ const consumers = routes.consumers(path).filter(bound);
345
+ const only = consumers.length === 1 ? consumers[0] : null;
346
+ const domain = only?.layout && inside(only.storage.gitDir, path)
347
+ ? relative(only.storage.gitDir, path).split(sep).join("/") : null;
348
+ // One checkout's private storage is its own Git state. An ordinary
349
+ // domain its O result certifies keeps the repository's named paths; any
350
+ // other change there, or a configuration O no longer carries, owes that
351
+ // repository's complete examination, never another root's.
352
+ if (only && domain !== null) {
353
+ try {
354
+ validate(only);
355
+ }
356
+ catch {
357
+ release(only);
358
+ return { kind: "worktree", address: only.member.absolutePath };
359
+ }
360
+ consumed.add(only);
361
+ return { kind: "single", uuid: only.member.uuid, whole: !ordinaryGitDomain(domain) || !certified(only) };
362
+ }
363
+ // Ground holding every checkout the name reaches, each over storage Git
364
+ // keeps for it alone, recaptures them all when examined whole.
365
+ const address = ground(path);
366
+ if (consumers.every(certificate => certificate.layout && inside(address, certificate.member.absolutePath))) {
367
+ return { kind: "worktree", address };
368
+ }
369
+ // Reconciliation examines these consumers afresh; a moved witness
370
+ // needs its certificate refreshed, not another ring.
371
+ for (const certificate of consumers) {
372
+ try {
373
+ validate(certificate);
374
+ }
375
+ catch {
376
+ this.#refresh(certificate, false);
377
+ }
378
+ }
379
+ return { kind: "reconcile", rootUUIDs: [...new Set(consumers.map(certificate => certificate.member.rootUUID))] };
380
+ };
381
+ return {
382
+ discoveryWaitMs,
383
+ routeMs: () => routing,
384
+ semanticMs: () => semantic,
385
+ own(path) {
386
+ const began = performance.now();
387
+ try {
388
+ return own(path);
389
+ }
390
+ finally {
391
+ routing += performance.now() - began;
392
+ }
393
+ },
394
+ held,
395
+ route(path) {
396
+ const known = answered.get(path);
397
+ if (known)
398
+ return known;
399
+ const began = performance.now();
400
+ try {
401
+ const answer = route(path);
402
+ answered.set(path, answer);
403
+ return answer;
404
+ }
405
+ finally {
406
+ routing += performance.now() - began;
407
+ }
408
+ },
409
+ proof: {
410
+ // Only an answer its witnesses cannot close is asked again.
411
+ semantic: async () => {
412
+ const began = performance.now();
413
+ try {
414
+ for (const certificate of consumed)
415
+ if (!certificate.configuration.reusable) {
416
+ try {
417
+ await certificate.binding.semantic();
418
+ await certificate.configuration.semantic();
419
+ }
420
+ catch (error) {
421
+ fail(certificate, error);
422
+ }
423
+ }
424
+ }
425
+ finally {
426
+ semantic += performance.now() - began;
427
+ }
428
+ },
429
+ witnesses: [],
430
+ admission: () => {
431
+ for (const certificate of consumed) {
432
+ try {
433
+ certificate.validate();
434
+ }
435
+ catch (error) {
436
+ fail(certificate, error);
437
+ }
438
+ }
439
+ },
440
+ },
441
+ };
442
+ }
443
+ }
444
+ //# sourceMappingURL=git-notice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-notice.js","sourceRoot":"","sources":["../../src/detection/git-notice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ import { type Steps } from "@amalgm/live";
2
+ import { type ContentBoundary } from "../content-clock.js";
3
+ import type { GitMarker } from "../git-repository-host.js";
4
+ import { type PathsWitness } from "../physical-path-witness.js";
5
+ import { type SourceProof } from "../source-proof.js";
6
+ import { type SourceStat } from "../source-signature.js";
7
+ export interface GroundFingerprint {
8
+ readonly physicalKey: string;
9
+ readonly sourceSignature: string | null;
10
+ readonly filesystemMode: number | null;
11
+ }
12
+ export interface GroundSource extends GroundFingerprint {
13
+ readonly relativePath: string;
14
+ readonly absolutePath: string;
15
+ /** A walked directory's `.git` entry as its classification read it. */
16
+ readonly gitMarker?: GitMarker | null;
17
+ }
18
+ /** Reads current ground by address; null when the address is empty. */
19
+ export interface GroundReader {
20
+ stat(source: GroundSource): SourceStat | null;
21
+ marker(directory: string): GitMarker | null;
22
+ /** A directory's names in code-unit order; null when it can no longer be
23
+ * listed, which never lists again as walked. */
24
+ list(directory: string): readonly string[] | null;
25
+ }
26
+ /** How a walk's listings close: the clock stamped before its reads, and the
27
+ * names, in code-unit order, of each listing that clock did not qualify, by
28
+ * absolute address. A directory the walk could not list is null there: its
29
+ * membership is a gap the walk names, never a listing to close. */
30
+ export interface WalkListings {
31
+ readonly clock: ContentBoundary | null;
32
+ readonly names: ReadonlyMap<string, readonly string[] | null>;
33
+ }
34
+ /** How one retained source compares with its walk read. */
35
+ export interface GroundChange {
36
+ /** Gone, or another object or kind stands at the address. */
37
+ object: boolean;
38
+ /** The same object with other size, times or mode. */
39
+ content: boolean;
40
+ /** A directory's `.git` entry differs. */
41
+ marker: boolean;
42
+ /** A directory whose listing did not close: listed inside its racy
43
+ * interval, where a same-tick entry change could have left it looking the
44
+ * same, or listed again, where no stamp can qualify it, with other names. */
45
+ listing: boolean;
46
+ }
47
+ /** A closed walk, answered by absolute address so one pass can consult the
48
+ * closure that observed each member. Each answer is about one retained
49
+ * address; a reread that differs is input for a later attempt, never a new
50
+ * expected value. */
51
+ export declare class GroundClosure {
52
+ #private;
53
+ constructor(observed: ReadonlyMap<string, boolean>, changes: ReadonlyMap<string, GroundChange>);
54
+ observes(path: string): boolean;
55
+ /** Bytes, entry list and marker closed exactly as walked. */
56
+ settled(path: string): boolean;
57
+ /** A directory an address resolves through: the same object and marker.
58
+ * Its own entry list may have changed; a sibling's churn crosses no route. */
59
+ routes(path: string): boolean;
60
+ /** Nothing at or beneath the directory changed. */
61
+ settledUnder(directory: string): boolean;
62
+ /** The first walked directory whose entry list did not close, with what
63
+ * moved, or null when every one closed: an identity the walk did not find
64
+ * was then absent from all of them, not moved between reads. A racy listing
65
+ * has not closed. */
66
+ get unsettledDirectory(): string | null;
67
+ /** Absolute addresses whose walk read did not close. */
68
+ get changed(): readonly string[];
69
+ }
70
+ /** This is evidence, never an identity resolver. Any changed source restarts
71
+ * reconciliation; fresh bytes must not inherit an old directory's UUID map.
72
+ * Parents open before children and close afterward. This rejects persistent
73
+ * replacement during the read; it does not make path resolution atomic.
74
+ *
75
+ * It closes in one of two forms. `close` answers per address, for a caller
76
+ * that waits only where ground moved. `witness` is the whole walk as plain
77
+ * data, for a journey that concludes every membership at once; any thread
78
+ * judges it, so a cold walk never closes on the admitting thread.
79
+ *
80
+ * A listing its walk's content clock qualified closes as its directory's
81
+ * signature does (see content-clock.ts). Any other closes only by a fresh
82
+ * listing, taken after the whole walk, that names exactly what the walk
83
+ * listed while the directory stands as walked on both sides. A racy listing
84
+ * must also qualify under a later stamp, which proves no same-tick change is
85
+ * hidden. A listing no stamp can qualify, on a filesystem ground-profile.ts
86
+ * does not trust or on another device than the clock, closes by agreement
87
+ * alone: an entry moved once between a directory not yet listed and one
88
+ * already listed changes one of those listings between its two reads. Only
89
+ * an entry moved and moved back across both reads, each move inside its
90
+ * directories' clock ticks, escapes that; any move is a later Watch
91
+ * generation. Such ground loses shortcuts, never conclusions. A walk that
92
+ * concludes nothing from its listings keeps none. */
93
+ export declare class GroundSourceProof {
94
+ #private;
95
+ /** The proof of a walk's sources, built as steps. */
96
+ static ofWalk(sources: Iterable<GroundSource>, reader: GroundReader, listings: WalkListings | null): Steps<GroundSourceProof>;
97
+ private constructor();
98
+ /** Directories listed inside their racy interval, by absolute address. */
99
+ get racy(): readonly string[];
100
+ /** Directories listed where no stamp can qualify them, by absolute address. */
101
+ get unqualified(): readonly string[];
102
+ /** How long after this walk's stamp a later stamp can qualify every racy
103
+ * directory, if none changes; 0 when none is racy. */
104
+ get racyWaitMs(): number;
105
+ /** Closes every listing its walk's clock did not qualify by listing it
106
+ * again, a racy one under clock, a later stamp, as Git settles a racily
107
+ * clean entry. Returns the first directory that stays open; each closed
108
+ * one is neither racy nor unqualified any more. */
109
+ closeListings(clock: ContentBoundary | null, checkpoint?: () => void): Promise<string | null>;
110
+ /** Every retained source as one witness, parents first, built as steps
111
+ * once. Judging it reads each source forward, then each directory again in
112
+ * reverse, as `close` does. */
113
+ witness(): Steps<PathsWitness>;
114
+ /** Closes every retained source outside any transaction, yielding as it
115
+ * goes: parents forward before children, directories again in reverse,
116
+ * each directory's marker with it. Changes are answers, not failures; an
117
+ * unreadable address is a fault. */
118
+ close(checkpoint?: () => void): Promise<GroundClosure>;
119
+ }
120
+ /** An examined root's physical basis and any slower repository dependencies. */
121
+ export interface GroundObservationProof {
122
+ readonly physical: GroundSourceProof;
123
+ readonly dependencies: readonly SourceProof[];
124
+ }
125
+ /** Every dependency answers semantically before any root closes physically,
126
+ * so no root's physical close can precede another root's Git work. Each
127
+ * root's walk closes on both sides of its dependencies' witnesses, parents
128
+ * open before children and closed afterward, as two leaves because a proof
129
+ * closes once. Later filesystem changes belong to later Watch generations. */
130
+ export declare function groundSourceProof(proofs: readonly GroundObservationProof[]): Promise<SourceProof>;