@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,108 @@
1
+ import { type MaintenanceCause, type MaintenanceCoverage, type MaintenanceGap, type MaintenanceReceipts } from "@amalgm/live";
2
+ import type { FilesStageInput } from "../files-observability.js";
3
+ import type { RootMaintenanceResult } from "./root-examination.js";
4
+ /** Cadence C: the configured interval between one owner's visits, before jitter. */
5
+ export declare const MAINTENANCE_INTERVAL_MS = 3600000;
6
+ /** How long past its due time an owner owing a complete proof defers its visit. */
7
+ export declare const MAINTENANCE_DEFER_BOUND_MS = 10000;
8
+ export interface MaintenanceOwner {
9
+ /** The Watch root ID. */
10
+ readonly owner: string;
11
+ readonly directory: string;
12
+ /** Watch already owes this root a complete proof. */
13
+ readonly owesComplete: boolean;
14
+ }
15
+ export interface MaintenanceSweepHost {
16
+ /** Every owner now. One absent, or at another directory, is forgotten. */
17
+ owners(): readonly MaintenanceOwner[];
18
+ /** Whether a visit may start: never during a cold journey or while closing. */
19
+ ready(): boolean;
20
+ /** One traversal of this owner on a content thread. */
21
+ visit(owner: string, directory: string): Promise<RootMaintenanceResult>;
22
+ /** A finding at the root, or a promoted request: ring its complete proof. */
23
+ suspectRoot(directory: string): void;
24
+ /** Requests are owed to the scoped lanes. */
25
+ wake(): void;
26
+ stage(input: FilesStageInput): void;
27
+ }
28
+ /** Why a requested visit cannot answer: the owner has no materialized
29
+ * coverage, its binding went away, the sweep stopped (the host is closing or
30
+ * converging again), or its storage could not be read. */
31
+ export type VisitUnavailable = "not-ready" | "removed" | "stopped" | "unreadable";
32
+ /** One difference a requested visit reported, and so required. */
33
+ export interface VisitDifference {
34
+ readonly path: string;
35
+ readonly cause: MaintenanceCause;
36
+ }
37
+ /** How a requested visit settled. `visited` names a visit that began after
38
+ * the request, closed, and whose every required difference the ordinary
39
+ * lanes then discharged; its gaps are regions it could not read. */
40
+ export type VisitOutcome = {
41
+ readonly kind: "visited";
42
+ readonly visit: number;
43
+ readonly differences: readonly VisitDifference[];
44
+ readonly gaps: readonly MaintenanceGap[];
45
+ } | {
46
+ readonly kind: "unavailable";
47
+ readonly reason: VisitUnavailable;
48
+ readonly detail?: string;
49
+ };
50
+ export declare class MaintenanceSweep {
51
+ private readonly host;
52
+ private readonly intervalMs;
53
+ /** Uniform in [0, 1): each visit's jitter. */
54
+ private readonly random;
55
+ private readonly concurrency;
56
+ private readonly deferBoundMs;
57
+ private readonly ledger;
58
+ private readonly states;
59
+ /** Owners with a traversal on a content thread. It outlives stop, so a
60
+ * restart never runs a second traversal of the same owner. */
61
+ private readonly visiting;
62
+ /** Outstanding requests by ledger ID, for serving latency. */
63
+ private readonly requests;
64
+ private timer;
65
+ private running;
66
+ /** Starvation evidence: the longest any visit waited past its due time. */
67
+ private maxDeferredMs;
68
+ constructor(host: MaintenanceSweepHost, intervalMs?: number,
69
+ /** Uniform in [0, 1): each visit's jitter. */
70
+ random?: () => number, concurrency?: number, deferBoundMs?: number);
71
+ start(): void;
72
+ /** Stop visiting and forget every owner: nothing owed outlives this runtime. */
73
+ stop(): void;
74
+ /** The host's owners changed: a new owner's first interval starts now and a
75
+ * gone owner retires, instead of waiting for the next scheduled tick. */
76
+ ownersChanged(): void;
77
+ /** One visit of this owner that begins after now. Settles once that visit
78
+ * closed and the lanes discharged every difference it required, or with why
79
+ * it cannot. A request made while an earlier one still waits for its visit
80
+ * joins it. */
81
+ requestVisit(owner: string): Promise<VisitOutcome>;
82
+ /** Each owner's visit receipts now. */
83
+ receipts(): ReadonlyMap<string, MaintenanceReceipts>;
84
+ /** Paths owed a scoped examination. */
85
+ owed(owner: string): string[];
86
+ /** Captured at a cut, before its proof reads: a named cut answers requests
87
+ * at and beneath its paths, a complete cut every promoted request. */
88
+ cover(owner: string, paths: readonly string[] | null): MaintenanceCoverage;
89
+ /** The cut's proof settled or admitted: its covered requests are answered. */
90
+ served(coverage: MaintenanceCoverage): void;
91
+ /** The cut's proof escalated: its covered requests are owed to a wider
92
+ * examination. True when that promoted an outstanding request. */
93
+ promote(coverage: MaintenanceCoverage): boolean;
94
+ /** The next scheduled visit: one fresh draw of the interval from now. */
95
+ private nextDue;
96
+ /** Owners from the host now: new ones are scheduled, gone ones retired. */
97
+ private discover;
98
+ private tick;
99
+ private begin;
100
+ /** Findings to the ledger, each against the association it was compared with. */
101
+ private report;
102
+ /** Gaps to the ledger, then the visit closes and the lanes wake. */
103
+ private close;
104
+ /** A requested visit settles once it closed and none of its requests is owed. */
105
+ private settleRequests;
106
+ /** The owner's binding went away, or the sweep stopped. */
107
+ private retire;
108
+ }
@@ -0,0 +1,325 @@
1
+ /** The periodic metadata sweep. Each Watch root is one coverage owner, visited
2
+ * by one traversal at a time on a content thread: the same walk and comparison
3
+ * as root examination, against O as it stands. A visit concludes nothing. Its
4
+ * findings become the Live ledger's examination requests, which the ordinary
5
+ * scoped lanes serve; ground it could not read becomes a gap. It never writes
6
+ * a Record, a row or Trash, and it reads metadata only: a visit proves that
7
+ * the comparison completed and its resulting work was handled, never that any
8
+ * leaf's bytes were read again.
9
+ *
10
+ * Cadence C: an owner's next visit is due one interval after its last ended
11
+ * (or after it was first seen), drawn afresh for each visit as the configured
12
+ * interval times uniform [0.75, 1.25), so owners never visit in lockstep. The
13
+ * interval is a configured inter-visit interval, not a mutation-to-Record
14
+ * bound: traversal position, visit duration, queueing, the scoped examination
15
+ * and admission all come after it, and an unready host or unreadable storage
16
+ * suspends it. Watch's own loss evidence never waits for it: a watcher that
17
+ * reports loss makes its whole root suspect at once, which is immediate
18
+ * responsibility and scheduling, not one guaranteed pass.
19
+ *
20
+ * requestVisit makes an owner due now, for one visit that begins after the
21
+ * request; it is a metadata visit like any other, never a content reread.
22
+ *
23
+ * Visits pause while the host is not ready (cold journeys, convergence,
24
+ * shutdown). One visit runs at a time, the longest-waiting due owner first. A
25
+ * root Watch already owes a complete proof defers its visit, since that proof
26
+ * reads everything a visit would, but only for the defer bound: continuous
27
+ * load cannot starve an owner. Each start reports how long it waited past due
28
+ * and the sweep's longest. */
29
+ import { performance } from "node:perf_hooks";
30
+ import { MaintenanceLedger } from "@amalgm/live";
31
+ /** Cadence C: the configured interval between one owner's visits, before jitter. */
32
+ export const MAINTENANCE_INTERVAL_MS = 3_600_000;
33
+ /** How long past its due time an owner owing a complete proof defers its visit. */
34
+ export const MAINTENANCE_DEFER_BOUND_MS = 10_000;
35
+ /** A due visit the host is not ready for is checked again this soon: the
36
+ * host's readiness changes without telling the sweep. */
37
+ const READINESS_RECHECK_MS = 1_000;
38
+ const reported = () => ({
39
+ found: { new: 0, changed: 0, missing: 0, racy: 0, repository: 0 }, seen: new Map(), requests: 0,
40
+ });
41
+ export class MaintenanceSweep {
42
+ host;
43
+ intervalMs;
44
+ random;
45
+ concurrency;
46
+ deferBoundMs;
47
+ ledger = new MaintenanceLedger();
48
+ states = new Map();
49
+ /** Owners with a traversal on a content thread. It outlives stop, so a
50
+ * restart never runs a second traversal of the same owner. */
51
+ visiting = new Set();
52
+ /** Outstanding requests by ledger ID, for serving latency. */
53
+ requests = new Map();
54
+ timer = null;
55
+ running = false;
56
+ /** Starvation evidence: the longest any visit waited past its due time. */
57
+ maxDeferredMs = 0;
58
+ constructor(host, intervalMs = MAINTENANCE_INTERVAL_MS,
59
+ /** Uniform in [0, 1): each visit's jitter. */
60
+ random = Math.random, concurrency = 1, deferBoundMs = MAINTENANCE_DEFER_BOUND_MS) {
61
+ this.host = host;
62
+ this.intervalMs = intervalMs;
63
+ this.random = random;
64
+ this.concurrency = concurrency;
65
+ this.deferBoundMs = deferBoundMs;
66
+ }
67
+ start() {
68
+ this.running = true;
69
+ this.tick();
70
+ }
71
+ /** Stop visiting and forget every owner: nothing owed outlives this runtime. */
72
+ stop() {
73
+ this.running = false;
74
+ if (this.timer)
75
+ clearTimeout(this.timer);
76
+ this.timer = null;
77
+ for (const owner of [...this.states.keys()])
78
+ this.retire(owner, "stopped");
79
+ }
80
+ /** The host's owners changed: a new owner's first interval starts now and a
81
+ * gone owner retires, instead of waiting for the next scheduled tick. */
82
+ ownersChanged() {
83
+ if (this.running)
84
+ this.tick();
85
+ }
86
+ /** One visit of this owner that begins after now. Settles once that visit
87
+ * closed and the lanes discharged every difference it required, or with why
88
+ * it cannot. A request made while an earlier one still waits for its visit
89
+ * joins it. */
90
+ requestVisit(owner) {
91
+ if (!this.running)
92
+ return Promise.resolve({ kind: "unavailable", reason: "stopped" });
93
+ this.discover(performance.now());
94
+ const state = this.states.get(owner);
95
+ if (!state)
96
+ return Promise.resolve({ kind: "unavailable", reason: "not-ready" });
97
+ if (state.requested)
98
+ return state.requested.settled;
99
+ let resolve;
100
+ const settled = new Promise(done => { resolve = done; });
101
+ state.requested = { requestedAt: performance.now(), settled, resolve };
102
+ this.tick();
103
+ return settled;
104
+ }
105
+ /** Each owner's visit receipts now. */
106
+ receipts() {
107
+ return new Map([...this.states.keys()].map(owner => [owner, this.ledger.receipts(owner)]));
108
+ }
109
+ /** Paths owed a scoped examination. */
110
+ owed(owner) {
111
+ return this.ledger.owed(owner).map(owed => owed.path);
112
+ }
113
+ /** Captured at a cut, before its proof reads: a named cut answers requests
114
+ * at and beneath its paths, a complete cut every promoted request. */
115
+ cover(owner, paths) {
116
+ if (paths === null)
117
+ return this.ledger.coverWider(owner);
118
+ const owed = [...this.ledger.owed(owner), ...this.ledger.owedWider(owner)].map(item => item.path);
119
+ return this.ledger.cover(owner, owed.filter(path => paths.some(cut => cut === "" || path === cut || path.startsWith(`${cut}/`))));
120
+ }
121
+ /** The cut's proof settled or admitted: its covered requests are answered. */
122
+ served(coverage) {
123
+ if (coverage.requests.length === 0)
124
+ return;
125
+ const now = performance.now();
126
+ const answered = this.ledger.discharge(coverage, now);
127
+ if (answered === 0)
128
+ return;
129
+ const state = this.states.get(coverage.owner);
130
+ let latencyMs = 0;
131
+ for (const { id } of coverage.requests) {
132
+ const request = this.requests.get(id);
133
+ if (!request)
134
+ continue;
135
+ this.requests.delete(id);
136
+ latencyMs = Math.max(latencyMs, now - request.reportedAt);
137
+ state?.answered.set(request.path, request.observed);
138
+ }
139
+ const oldest = this.ledger.receipts(coverage.owner).oldestOwedSince;
140
+ this.host.stage({ primitive: "detect", stage: "maintenance-served", status: "completed",
141
+ rootId: coverage.owner, path: state?.directory, durationMs: latencyMs,
142
+ measurements: { requests: answered, latencyMs: Math.round(latencyMs),
143
+ oldestOwedMs: oldest === null ? null : Math.round(now - oldest) } });
144
+ if (state)
145
+ this.settleRequests(state);
146
+ }
147
+ /** The cut's proof escalated: its covered requests are owed to a wider
148
+ * examination. True when that promoted an outstanding request. */
149
+ promote(coverage) {
150
+ this.ledger.promote(coverage);
151
+ return coverage.requests.some(({ id }) => this.requests.has(id));
152
+ }
153
+ /** The next scheduled visit: one fresh draw of the interval from now. */
154
+ nextDue(now) {
155
+ return now + this.intervalMs * (0.75 + 0.5 * this.random());
156
+ }
157
+ /** Owners from the host now: new ones are scheduled, gone ones retired. */
158
+ discover(now) {
159
+ const owners = new Map(this.host.owners().map(owner => [owner.owner, owner]));
160
+ for (const [owner, state] of this.states) {
161
+ if (owners.get(owner)?.directory !== state.directory)
162
+ this.retire(owner, "removed");
163
+ }
164
+ for (const { owner, directory } of owners.values()) {
165
+ if (!this.states.has(owner)) {
166
+ this.states.set(owner, { directory, endedAt: now, dueAt: this.nextDue(now), visited: false,
167
+ answered: new Map(), requested: null, answering: new Map() });
168
+ }
169
+ }
170
+ return owners;
171
+ }
172
+ tick() {
173
+ if (this.timer)
174
+ clearTimeout(this.timer);
175
+ this.timer = null;
176
+ if (!this.running)
177
+ return;
178
+ const now = performance.now();
179
+ const owners = this.discover(now);
180
+ // A request makes its owner due at once; waiting starts when it is due.
181
+ const dueSince = (state) => Math.min(state.dueAt, state.requested?.requestedAt ?? Infinity);
182
+ // An owner owing a complete proof is due only once its defer bound passed.
183
+ const dueAt = (owner, state) => dueSince(state) + (owners.get(owner).owesComplete ? this.deferBoundMs : 0);
184
+ const idle = [...this.states].filter(([owner]) => !this.visiting.has(owner));
185
+ const ready = this.host.ready();
186
+ if (ready) {
187
+ // The longest-waiting due owners first.
188
+ const due = idle.filter(([owner, state]) => now >= dueAt(owner, state))
189
+ .sort(([, left], [, right]) => dueSince(left) - dueSince(right));
190
+ for (const [owner, state] of due) {
191
+ if (this.visiting.size >= this.concurrency)
192
+ break;
193
+ this.begin(owner, state, now, dueSince(state), owners.get(owner).owesComplete);
194
+ }
195
+ }
196
+ // A finished visit ticks at once; a due owner the host is not ready for
197
+ // is checked again shortly.
198
+ const waits = idle.filter(([owner]) => !this.visiting.has(owner)).map(([owner, state]) => dueAt(owner, state) - now);
199
+ if (!ready && waits.some(wait => wait <= 0))
200
+ waits.push(READINESS_RECHECK_MS);
201
+ const wait = Math.min(...waits.filter(wait => wait > 0));
202
+ if (wait === Infinity)
203
+ return;
204
+ this.timer = setTimeout(() => this.tick(), wait);
205
+ this.timer.unref();
206
+ }
207
+ begin(owner, state, now, dueSince, forced) {
208
+ this.visiting.add(owner);
209
+ const visit = this.ledger.beginVisit(owner, now);
210
+ const requested = state.requested !== null;
211
+ if (state.requested) {
212
+ state.answering.set(visit.id, { request: state.requested, closed: false, ids: new Set(), differences: [], gaps: [] });
213
+ state.requested = null;
214
+ }
215
+ const visitGapMs = state.visited ? Math.round(now - state.endedAt) : null;
216
+ const deferredMs = Math.max(0, Math.round(now - dueSince));
217
+ this.maxDeferredMs = Math.max(this.maxDeferredMs, deferredMs);
218
+ this.host.stage({ primitive: "detect", stage: "maintenance-visit", status: "started",
219
+ rootId: owner, path: state.directory,
220
+ measurements: { visit: visit.id, visitGapMs, deferredMs, forced, requested, maxDeferredMs: this.maxDeferredMs } });
221
+ void this.host.visit(owner, state.directory).then(result => {
222
+ const into = reported();
223
+ this.report(state, visit, into, result.findings.map(finding => ({ ...finding, basis: result.basis })));
224
+ this.close(state, visit, visitGapMs, result, into);
225
+ }, (error) => this.close(state, visit, visitGapMs, error instanceof Error ? error.message : String(error), reported())).finally(() => {
226
+ this.visiting.delete(owner);
227
+ this.tick();
228
+ });
229
+ }
230
+ /** Findings to the ledger, each against the association it was compared with. */
231
+ report(state, visit, into, findings) {
232
+ const now = performance.now();
233
+ const { owner } = visit;
234
+ const answering = state.answering.get(visit.id);
235
+ for (const finding of findings) {
236
+ into.found[finding.cause] += 1;
237
+ into.seen.set(finding.path, finding.observed);
238
+ if (state.answered.get(finding.path) === finding.observed)
239
+ continue;
240
+ const id = this.ledger.report(visit, finding, now);
241
+ if (id === null)
242
+ continue;
243
+ if (answering) {
244
+ answering.ids.add(id);
245
+ answering.differences.push({ path: finding.path, cause: finding.cause });
246
+ }
247
+ if (this.requests.has(id))
248
+ continue;
249
+ this.requests.set(id, { owner, path: finding.path, observed: finding.observed, reportedAt: now });
250
+ into.requests += 1;
251
+ // O at the root could not be trusted: only the complete lane serves it.
252
+ if (finding.path === "") {
253
+ this.ledger.promote(this.ledger.cover(owner, [""]));
254
+ this.host.suspectRoot(state.directory);
255
+ }
256
+ }
257
+ }
258
+ /** Gaps to the ledger, then the visit closes and the lanes wake. */
259
+ close(state, visit, visitGapMs, outcome, { found, seen, requests }) {
260
+ const now = performance.now();
261
+ const { owner } = visit;
262
+ const gaps = typeof outcome === "string" ? [{ path: "", reason: `fault:${outcome}` }] : [...outcome.gaps];
263
+ if (typeof outcome !== "string") {
264
+ for (const [path, observed] of state.answered)
265
+ if (seen.get(path) !== observed)
266
+ state.answered.delete(path);
267
+ }
268
+ for (const gap of gaps)
269
+ this.ledger.gap(visit, gap, now);
270
+ const closed = this.ledger.closeVisit(visit, now);
271
+ state.endedAt = now;
272
+ state.dueAt = this.nextDue(now);
273
+ state.visited = true;
274
+ const owed = closed ? this.ledger.owed(owner).length : 0;
275
+ this.host.stage({ primitive: "detect", stage: "maintenance-visit",
276
+ status: typeof outcome === "string" ? "failed" : "completed",
277
+ rootId: owner, path: state.directory, durationMs: now - visit.startedAt,
278
+ measurements: { visit: visit.id, closed, visitGapMs,
279
+ entries: typeof outcome === "string" ? 0 : outcome.entries,
280
+ ...found, gaps: gaps.length, requests, owed,
281
+ ...(typeof outcome === "string" ? { error: outcome } : {}) } });
282
+ const answering = state.answering.get(visit.id);
283
+ if (answering) {
284
+ // Storage it could not read at all answers nothing.
285
+ const unread = gaps.find(gap => gap.path === "" && (gap.reason === "unread" || gap.reason.startsWith("fault:")));
286
+ if (unread) {
287
+ state.answering.delete(visit.id);
288
+ answering.request.resolve({ kind: "unavailable", reason: "unreadable", detail: unread.reason });
289
+ }
290
+ else {
291
+ answering.closed = true;
292
+ answering.gaps = gaps;
293
+ this.settleRequests(state);
294
+ }
295
+ }
296
+ if (owed > 0)
297
+ this.host.wake();
298
+ }
299
+ /** A requested visit settles once it closed and none of its requests is owed. */
300
+ settleRequests(state) {
301
+ for (const [visit, answering] of state.answering) {
302
+ if (!answering.closed || [...answering.ids].some(id => this.requests.has(id)))
303
+ continue;
304
+ state.answering.delete(visit);
305
+ answering.request.resolve({ kind: "visited", visit, differences: answering.differences, gaps: answering.gaps });
306
+ }
307
+ }
308
+ /** The owner's binding went away, or the sweep stopped. */
309
+ retire(owner, reason) {
310
+ const state = this.states.get(owner);
311
+ if (state) {
312
+ for (const request of [state.requested, ...[...state.answering.values()].map(({ request }) => request)]) {
313
+ request?.resolve({ kind: "unavailable", reason });
314
+ }
315
+ state.requested = null;
316
+ state.answering.clear();
317
+ }
318
+ this.ledger.forget(owner);
319
+ this.states.delete(owner);
320
+ for (const [id, request] of this.requests)
321
+ if (request.owner === owner)
322
+ this.requests.delete(id);
323
+ }
324
+ }
325
+ //# sourceMappingURL=maintenance-sweep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maintenance-sweep.js","sourceRoot":"","sources":["../../src/detection/maintenance-sweep.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /** Which repositories a pruned walk's Watch names reach. Addresses are
2
+ * relative to one root, "" being the root; as a name, "" names only the
3
+ * root's own address. A repository's Git storage rings as a name beneath its
4
+ * address (`<address>/.git`, or `.git` for the root). */
5
+ /** A name reaches every repository at or beneath its address, whose whole
6
+ * ground the walk reads again, and the innermost repository strictly
7
+ * enclosing it, whose ground lists the address: a nested repository's own
8
+ * address is the boundary its encloser's index and identity map record. A
9
+ * name inside a nested repository, its Git storage included, reaches no
10
+ * repository enclosing that one: an enclosing Card + Checkpoint takes the
11
+ * nested gitlink from its own index and reads nothing there. */
12
+ export declare function reachedRepositories(names: readonly string[], repositories: readonly string[]): Set<string>;
@@ -0,0 +1,28 @@
1
+ /** Which repositories a pruned walk's Watch names reach. Addresses are
2
+ * relative to one root, "" being the root; as a name, "" names only the
3
+ * root's own address. A repository's Git storage rings as a name beneath its
4
+ * address (`<address>/.git`, or `.git` for the root). */
5
+ const holds = (repository, path) => repository === "" || path === repository || path.startsWith(`${repository}/`);
6
+ /** A name reaches every repository at or beneath its address, whose whole
7
+ * ground the walk reads again, and the innermost repository strictly
8
+ * enclosing it, whose ground lists the address: a nested repository's own
9
+ * address is the boundary its encloser's index and identity map record. A
10
+ * name inside a nested repository, its Git storage included, reaches no
11
+ * repository enclosing that one: an enclosing Card + Checkpoint takes the
12
+ * nested gitlink from its own index and reads nothing there. */
13
+ export function reachedRepositories(names, repositories) {
14
+ const reached = new Set();
15
+ for (const name of names) {
16
+ let owner = null;
17
+ for (const repository of repositories) {
18
+ if (repository === name || (name !== "" && repository.startsWith(`${name}/`)))
19
+ reached.add(repository);
20
+ else if (holds(repository, name) && (owner === null || repository.length > owner.length))
21
+ owner = repository;
22
+ }
23
+ if (owner !== null)
24
+ reached.add(owner);
25
+ }
26
+ return reached;
27
+ }
28
+ //# sourceMappingURL=name-reach.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"name-reach.js","sourceRoot":"","sources":["../../src/detection/name-reach.ts"],"names":[],"mappings":"AAAA;;;yDAGyD;AAEzD,MAAM,KAAK,GAAG,CAAC,UAAkB,EAAE,IAAY,EAAW,EAAE,CAC1D,UAAU,KAAK,EAAE,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;AAEhF;;;;;;gEAMgE;AAChE,MAAM,UAAU,mBAAmB,CAAC,KAAwB,EAAE,YAA+B;IAC3F,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,KAAK,GAAkB,IAAI,CAAC;QAChC,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;YACtC,IAAI,UAAU,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;iBAClG,IAAI,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBAAE,KAAK,GAAG,UAAU,CAAC;QAC/G,CAAC;QACD,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -12,12 +12,10 @@ export interface NotebookBasisRow {
12
12
  readonly transportVersion: string | null;
13
13
  readonly relativePath: string;
14
14
  readonly absolutePath: string;
15
- readonly deviceNumber: number;
16
- readonly inode: number;
17
- readonly byteSize: number | null;
18
- readonly modifiedTimeMs: number | null;
19
- readonly changedTimeMs: number | null;
15
+ readonly physicalKey: string;
16
+ readonly sourceSignature: string | null;
20
17
  readonly filesystemMode: number | null;
21
- readonly contentVerifiedAtMs: number | null;
18
+ readonly contentVerifiedNs: string | null;
19
+ readonly gitConfigurationObservation?: string | null;
22
20
  }
23
- export declare function sameNotebookBasisRow(left: NotebookBasisRow, right: NotebookBasisRow | undefined): boolean;
21
+ export declare function sameNotebookBasisRow(left: NotebookBasisRow, right: NotebookBasisRow | undefined, inventory?: "entities" | "detection_notebook"): boolean;
@@ -1,4 +1,4 @@
1
- export function sameNotebookBasisRow(left, right) {
1
+ export function sameNotebookBasisRow(left, right, inventory = "detection_notebook") {
2
2
  return right !== undefined
3
3
  && left.resourceId === right.resourceId
4
4
  && left.rootUUID === right.rootUUID
@@ -12,12 +12,11 @@ export function sameNotebookBasisRow(left, right) {
12
12
  && left.transportVersion === right.transportVersion
13
13
  && left.relativePath === right.relativePath
14
14
  && left.absolutePath === right.absolutePath
15
- && left.deviceNumber === right.deviceNumber
16
- && left.inode === right.inode
17
- && left.byteSize === right.byteSize
18
- && left.modifiedTimeMs === right.modifiedTimeMs
19
- && left.changedTimeMs === right.changedTimeMs
15
+ && left.physicalKey === right.physicalKey
16
+ && left.sourceSignature === right.sourceSignature
20
17
  && left.filesystemMode === right.filesystemMode
21
- && left.contentVerifiedAtMs === right.contentVerifiedAtMs;
18
+ && left.contentVerifiedNs === right.contentVerifiedNs
19
+ && (inventory === "detection_notebook"
20
+ || (left.gitConfigurationObservation ?? null) === (right.gitConfigurationObservation ?? null));
22
21
  }
23
22
  //# sourceMappingURL=notebook-basis.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"notebook-basis.js","sourceRoot":"","sources":["../../src/detection/notebook-basis.ts"],"names":[],"mappings":"AAuBA,MAAM,UAAU,oBAAoB,CAClC,IAAsB,EACtB,KAAmC;IAEnC,OAAO,KAAK,KAAK,SAAS;WACrB,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;WACpC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;WAChC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;WACxB,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;WACxB,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;WACpC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;WACxB,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;WAC5B,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;WAC9B,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc;WAC5C,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB;WAChD,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY;WACxC,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY;WACxC,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY;WACxC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;WAC1B,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;WAChC,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc;WAC5C,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa;WAC1C,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc;WAC5C,IAAI,CAAC,mBAAmB,KAAK,KAAK,CAAC,mBAAmB,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"notebook-basis.js","sourceRoot":"","sources":["../../src/detection/notebook-basis.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,oBAAoB,CAClC,IAAsB,EACtB,KAAmC,EACnC,YAA+C,oBAAoB;IAEnE,OAAO,KAAK,KAAK,SAAS;WACrB,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;WACpC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;WAChC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;WACxB,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;WACxB,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;WACpC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;WACxB,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;WAC5B,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;WAC9B,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc;WAC5C,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB;WAChD,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY;WACxC,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY;WACxC,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW;WACtC,IAAI,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe;WAC9C,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc;WAC5C,IAAI,CAAC,iBAAiB,KAAK,KAAK,CAAC,iBAAiB;WAClD,CAAC,SAAS,KAAK,oBAAoB;eACjC,CAAC,IAAI,CAAC,2BAA2B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,IAAI,IAAI,CAAC,CAAC,CAAC;AACrG,CAAC"}
@@ -0,0 +1,51 @@
1
+ /** Where one root's sharing (B) is not yet what selection makes of its
2
+ * observation (O), read from committed facts alone: no ground is walked.
3
+ *
4
+ * Selection is one law, Live's selectPublication: an identity that policy or
5
+ * a hold withholds keeps B's row, or none, and every other takes O's;
6
+ * membership and payloads follow. B stands at that law's fixed point exactly
7
+ * when each identity selection takes from O already stands in B as O holds
8
+ * it (a leaf at O's version, a container at O's structure, since its
9
+ * membership follows from its members, and a repository at O's version or
10
+ * under a seal that derived O's payload and B's from one examination) and B
11
+ * holds nothing selection drops. Every other identity is owed a proof at each
12
+ * address selection reads it: O's for one it takes, and B's too wherever B
13
+ * holds it elsewhere or selection drops it. A root B has never held is owed
14
+ * whole: nothing of it was ever selected.
15
+ *
16
+ * Only an identity O and B hold differently can be owed. One they hold alike
17
+ * reads the same row whichever inventory selection takes it from, so it
18
+ * stands wherever its address holds; an address derives from its ancestors
19
+ * and its sibling group alone. Selection therefore reads the differences,
20
+ * which the ground stores as it writes (ground-differences.ts), and the
21
+ * unchanged structure their addresses read, as a closed scope, and reads the
22
+ * whole root only when that scope proves too small. */
23
+ import type Database from "better-sqlite3";
24
+ import { type GroundRow } from "../ground-row.js";
25
+ export interface OwedIdentity {
26
+ /** Root-relative address. */
27
+ readonly path: string;
28
+ /** The row selection reads there: O's, or B's where only B places it. */
29
+ readonly row: GroundRow;
30
+ /** `owed`: B holds the identity where O does, at another result.
31
+ * `unshared`: B lacks it, places it elsewhere, or selection drops it. */
32
+ readonly reason: "owed" | "unshared";
33
+ }
34
+ type Includes = (path: string) => boolean;
35
+ /** `observed` and `shared` are one root's O and B rows, each addressed in
36
+ * that root's frame; `includes` answers policy and holds for an address. */
37
+ export declare function owedSelection(database: Database.Database, input: {
38
+ readonly rootUUID: string;
39
+ readonly observed: readonly GroundRow[];
40
+ readonly shared: readonly GroundRow[];
41
+ readonly includes: Includes;
42
+ }): OwedIdentity[];
43
+ /** One root's owed addresses under `policy`, outermost only, read in one
44
+ * committed transaction. `bindings` are the materialized workspace bindings,
45
+ * whose unpublished declarations selection holds back. */
46
+ export declare function owedAddresses(database: Database.Database, input: {
47
+ readonly rootUUID: string;
48
+ readonly policy: string;
49
+ readonly bindings: readonly string[];
50
+ }): string[];
51
+ export {};