@indigoai-us/hq-cloud 6.18.44-alpha.9 → 6.18.44

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 (1068) hide show
  1. package/dist/bin/sync-runner-planning.d.ts +12 -0
  2. package/dist/bin/sync-runner-planning.d.ts.map +1 -1
  3. package/dist/bin/sync-runner-planning.js +18 -0
  4. package/dist/bin/sync-runner-planning.js.map +1 -1
  5. package/dist/bin/sync-runner-watch-loop.d.ts +18 -0
  6. package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
  7. package/dist/bin/sync-runner-watch-loop.js +75 -6
  8. package/dist/bin/sync-runner-watch-loop.js.map +1 -1
  9. package/dist/bin/sync-runner.d.ts +22 -1
  10. package/dist/bin/sync-runner.d.ts.map +1 -1
  11. package/dist/bin/sync-runner.js +33 -4
  12. package/dist/bin/sync-runner.js.map +1 -1
  13. package/dist/cli/conflict.d.ts.map +1 -1
  14. package/dist/cli/conflict.js +2 -1
  15. package/dist/cli/conflict.js.map +1 -1
  16. package/dist/cli/rescue-core.d.ts +6 -0
  17. package/dist/cli/rescue-core.d.ts.map +1 -1
  18. package/dist/cli/rescue-core.js +10 -1
  19. package/dist/cli/rescue-core.js.map +1 -1
  20. package/dist/cli/rescue-windows-test-harness.d.ts +19 -0
  21. package/dist/cli/rescue-windows-test-harness.d.ts.map +1 -0
  22. package/dist/cli/rescue-windows-test-harness.js +443 -0
  23. package/dist/cli/rescue-windows-test-harness.js.map +1 -0
  24. package/dist/company-resolver.d.ts +22 -0
  25. package/dist/company-resolver.d.ts.map +1 -1
  26. package/dist/company-resolver.js +1 -1
  27. package/dist/company-resolver.js.map +1 -1
  28. package/dist/ignore.d.ts +4 -1
  29. package/dist/ignore.d.ts.map +1 -1
  30. package/dist/ignore.js +10 -12
  31. package/dist/ignore.js.map +1 -1
  32. package/dist/journal-snapshot-decoder.js +15 -2
  33. package/dist/journal-snapshot-decoder.js.map +1 -1
  34. package/dist/sync/durable-apply.d.ts +2 -0
  35. package/dist/sync/durable-apply.d.ts.map +1 -1
  36. package/dist/sync/durable-apply.js +9 -12
  37. package/dist/sync/durable-apply.js.map +1 -1
  38. package/dist/sync/fsync-compat.d.ts +13 -0
  39. package/dist/sync/fsync-compat.d.ts.map +1 -0
  40. package/dist/sync/fsync-compat.js +33 -0
  41. package/dist/sync/fsync-compat.js.map +1 -0
  42. package/dist/sync/multipart-uploader.d.ts.map +1 -1
  43. package/dist/sync/multipart-uploader.js +2 -1
  44. package/dist/sync/multipart-uploader.js.map +1 -1
  45. package/dist/sync/scope-inventory-client.d.ts.map +1 -1
  46. package/dist/sync/scope-inventory-client.js +7 -2
  47. package/dist/sync/scope-inventory-client.js.map +1 -1
  48. package/dist/telemetry.d.ts +31 -0
  49. package/dist/telemetry.d.ts.map +1 -1
  50. package/dist/telemetry.js +177 -17
  51. package/dist/telemetry.js.map +1 -1
  52. package/dist/usage-company-fallback.d.ts +104 -0
  53. package/dist/usage-company-fallback.d.ts.map +1 -0
  54. package/dist/usage-company-fallback.js +599 -0
  55. package/dist/usage-company-fallback.js.map +1 -0
  56. package/dist/watch-owner-lease.d.ts +3 -0
  57. package/dist/watch-owner-lease.d.ts.map +1 -1
  58. package/dist/watch-owner-lease.js +14 -3
  59. package/dist/watch-owner-lease.js.map +1 -1
  60. package/package.json +2 -2
  61. package/dist/active-company.test.d.ts +0 -2
  62. package/dist/active-company.test.d.ts.map +0 -1
  63. package/dist/active-company.test.js +0 -149
  64. package/dist/active-company.test.js.map +0 -1
  65. package/dist/agent-codex-instructions.test.d.ts +0 -2
  66. package/dist/agent-codex-instructions.test.d.ts.map +0 -1
  67. package/dist/agent-codex-instructions.test.js +0 -271
  68. package/dist/agent-codex-instructions.test.js.map +0 -1
  69. package/dist/backup-prune.test.d.ts +0 -2
  70. package/dist/backup-prune.test.d.ts.map +0 -1
  71. package/dist/backup-prune.test.js +0 -154
  72. package/dist/backup-prune.test.js.map +0 -1
  73. package/dist/bandwidth.test.d.ts +0 -2
  74. package/dist/bandwidth.test.d.ts.map +0 -1
  75. package/dist/bandwidth.test.js +0 -342
  76. package/dist/bandwidth.test.js.map +0 -1
  77. package/dist/best-effort-error.test.d.ts +0 -2
  78. package/dist/best-effort-error.test.d.ts.map +0 -1
  79. package/dist/best-effort-error.test.js +0 -54
  80. package/dist/best-effort-error.test.js.map +0 -1
  81. package/dist/bin/area-ledger-migration.test.d.ts +0 -2
  82. package/dist/bin/area-ledger-migration.test.d.ts.map +0 -1
  83. package/dist/bin/area-ledger-migration.test.js +0 -410
  84. package/dist/bin/area-ledger-migration.test.js.map +0 -1
  85. package/dist/bin/backup-prune-runner.test.d.ts +0 -2
  86. package/dist/bin/backup-prune-runner.test.d.ts.map +0 -1
  87. package/dist/bin/backup-prune-runner.test.js +0 -22
  88. package/dist/bin/backup-prune-runner.test.js.map +0 -1
  89. package/dist/bin/journal-repair.test.d.ts +0 -2
  90. package/dist/bin/journal-repair.test.d.ts.map +0 -1
  91. package/dist/bin/journal-repair.test.js +0 -53
  92. package/dist/bin/journal-repair.test.js.map +0 -1
  93. package/dist/bin/layout-compatibility.test.d.ts +0 -2
  94. package/dist/bin/layout-compatibility.test.d.ts.map +0 -1
  95. package/dist/bin/layout-compatibility.test.js +0 -87
  96. package/dist/bin/layout-compatibility.test.js.map +0 -1
  97. package/dist/bin/outpost-heartbeat.test.d.ts +0 -7
  98. package/dist/bin/outpost-heartbeat.test.d.ts.map +0 -1
  99. package/dist/bin/outpost-heartbeat.test.js +0 -84
  100. package/dist/bin/outpost-heartbeat.test.js.map +0 -1
  101. package/dist/bin/outpost-session-host.test.d.ts +0 -7
  102. package/dist/bin/outpost-session-host.test.d.ts.map +0 -1
  103. package/dist/bin/outpost-session-host.test.js +0 -52
  104. package/dist/bin/outpost-session-host.test.js.map +0 -1
  105. package/dist/bin/sync-mutation.test.d.ts +0 -2
  106. package/dist/bin/sync-mutation.test.d.ts.map +0 -1
  107. package/dist/bin/sync-mutation.test.js +0 -64
  108. package/dist/bin/sync-mutation.test.js.map +0 -1
  109. package/dist/bin/sync-runner-args.test.d.ts +0 -2
  110. package/dist/bin/sync-runner-args.test.d.ts.map +0 -1
  111. package/dist/bin/sync-runner-args.test.js +0 -82
  112. package/dist/bin/sync-runner-args.test.js.map +0 -1
  113. package/dist/bin/sync-runner-auth-wait.test.d.ts +0 -2
  114. package/dist/bin/sync-runner-auth-wait.test.d.ts.map +0 -1
  115. package/dist/bin/sync-runner-auth-wait.test.js +0 -406
  116. package/dist/bin/sync-runner-auth-wait.test.js.map +0 -1
  117. package/dist/bin/sync-runner-backoff.regression.test.d.ts +0 -29
  118. package/dist/bin/sync-runner-backoff.regression.test.d.ts.map +0 -1
  119. package/dist/bin/sync-runner-backoff.regression.test.js +0 -224
  120. package/dist/bin/sync-runner-backoff.regression.test.js.map +0 -1
  121. package/dist/bin/sync-runner-company.test.d.ts +0 -2
  122. package/dist/bin/sync-runner-company.test.d.ts.map +0 -1
  123. package/dist/bin/sync-runner-company.test.js +0 -2439
  124. package/dist/bin/sync-runner-company.test.js.map +0 -1
  125. package/dist/bin/sync-runner-delete-snapshot-mixed.bench.test.d.ts +0 -2
  126. package/dist/bin/sync-runner-delete-snapshot-mixed.bench.test.d.ts.map +0 -1
  127. package/dist/bin/sync-runner-delete-snapshot-mixed.bench.test.js +0 -648
  128. package/dist/bin/sync-runner-delete-snapshot-mixed.bench.test.js.map +0 -1
  129. package/dist/bin/sync-runner-delete-snapshot.bench.test.d.ts +0 -2
  130. package/dist/bin/sync-runner-delete-snapshot.bench.test.d.ts.map +0 -1
  131. package/dist/bin/sync-runner-delete-snapshot.bench.test.js +0 -329
  132. package/dist/bin/sync-runner-delete-snapshot.bench.test.js.map +0 -1
  133. package/dist/bin/sync-runner-events.test.d.ts +0 -2
  134. package/dist/bin/sync-runner-events.test.d.ts.map +0 -1
  135. package/dist/bin/sync-runner-events.test.js +0 -364
  136. package/dist/bin/sync-runner-events.test.js.map +0 -1
  137. package/dist/bin/sync-runner-heap-telemetry.test.d.ts +0 -2
  138. package/dist/bin/sync-runner-heap-telemetry.test.d.ts.map +0 -1
  139. package/dist/bin/sync-runner-heap-telemetry.test.js +0 -1966
  140. package/dist/bin/sync-runner-heap-telemetry.test.js.map +0 -1
  141. package/dist/bin/sync-runner-manifest.test.d.ts +0 -12
  142. package/dist/bin/sync-runner-manifest.test.d.ts.map +0 -1
  143. package/dist/bin/sync-runner-manifest.test.js +0 -921
  144. package/dist/bin/sync-runner-manifest.test.js.map +0 -1
  145. package/dist/bin/sync-runner-planning.test.d.ts +0 -2
  146. package/dist/bin/sync-runner-planning.test.d.ts.map +0 -1
  147. package/dist/bin/sync-runner-planning.test.js +0 -448
  148. package/dist/bin/sync-runner-planning.test.js.map +0 -1
  149. package/dist/bin/sync-runner-post-sync-flags.test.d.ts +0 -2
  150. package/dist/bin/sync-runner-post-sync-flags.test.d.ts.map +0 -1
  151. package/dist/bin/sync-runner-post-sync-flags.test.js +0 -64
  152. package/dist/bin/sync-runner-post-sync-flags.test.js.map +0 -1
  153. package/dist/bin/sync-runner-publish-expansion.test.d.ts +0 -2
  154. package/dist/bin/sync-runner-publish-expansion.test.d.ts.map +0 -1
  155. package/dist/bin/sync-runner-publish-expansion.test.js +0 -54
  156. package/dist/bin/sync-runner-publish-expansion.test.js.map +0 -1
  157. package/dist/bin/sync-runner-receiver-unresolved-company.test.d.ts +0 -2
  158. package/dist/bin/sync-runner-receiver-unresolved-company.test.d.ts.map +0 -1
  159. package/dist/bin/sync-runner-receiver-unresolved-company.test.js +0 -379
  160. package/dist/bin/sync-runner-receiver-unresolved-company.test.js.map +0 -1
  161. package/dist/bin/sync-runner-rollup.test.d.ts +0 -2
  162. package/dist/bin/sync-runner-rollup.test.d.ts.map +0 -1
  163. package/dist/bin/sync-runner-rollup.test.js +0 -24
  164. package/dist/bin/sync-runner-rollup.test.js.map +0 -1
  165. package/dist/bin/sync-runner-watch-loop.test.d.ts +0 -2
  166. package/dist/bin/sync-runner-watch-loop.test.d.ts.map +0 -1
  167. package/dist/bin/sync-runner-watch-loop.test.js +0 -734
  168. package/dist/bin/sync-runner-watch-loop.test.js.map +0 -1
  169. package/dist/bin/sync-runner-watch-routes.test.d.ts +0 -2
  170. package/dist/bin/sync-runner-watch-routes.test.d.ts.map +0 -1
  171. package/dist/bin/sync-runner-watch-routes.test.js +0 -181
  172. package/dist/bin/sync-runner-watch-routes.test.js.map +0 -1
  173. package/dist/bin/sync-runner.test.d.ts +0 -10
  174. package/dist/bin/sync-runner.test.d.ts.map +0 -1
  175. package/dist/bin/sync-runner.test.js +0 -18984
  176. package/dist/bin/sync-runner.test.js.map +0 -1
  177. package/dist/cli/case-alias.test.d.ts +0 -2
  178. package/dist/cli/case-alias.test.d.ts.map +0 -1
  179. package/dist/cli/case-alias.test.js +0 -96
  180. package/dist/cli/case-alias.test.js.map +0 -1
  181. package/dist/cli/conflict-recovery.test.d.ts +0 -2
  182. package/dist/cli/conflict-recovery.test.d.ts.map +0 -1
  183. package/dist/cli/conflict-recovery.test.js +0 -201
  184. package/dist/cli/conflict-recovery.test.js.map +0 -1
  185. package/dist/cli/conflict-winner.test.d.ts +0 -7
  186. package/dist/cli/conflict-winner.test.d.ts.map +0 -1
  187. package/dist/cli/conflict-winner.test.js +0 -98
  188. package/dist/cli/conflict-winner.test.js.map +0 -1
  189. package/dist/cli/doctor.test.d.ts +0 -13
  190. package/dist/cli/doctor.test.d.ts.map +0 -1
  191. package/dist/cli/doctor.test.js +0 -607
  192. package/dist/cli/doctor.test.js.map +0 -1
  193. package/dist/cli/invite.test.d.ts +0 -5
  194. package/dist/cli/invite.test.d.ts.map +0 -1
  195. package/dist/cli/invite.test.js +0 -178
  196. package/dist/cli/invite.test.js.map +0 -1
  197. package/dist/cli/onepass-pull-planner-regressions.test.d.ts +0 -2
  198. package/dist/cli/onepass-pull-planner-regressions.test.d.ts.map +0 -1
  199. package/dist/cli/onepass-pull-planner-regressions.test.js +0 -300
  200. package/dist/cli/onepass-pull-planner-regressions.test.js.map +0 -1
  201. package/dist/cli/onepass-pull-planner.test.d.ts +0 -2
  202. package/dist/cli/onepass-pull-planner.test.d.ts.map +0 -1
  203. package/dist/cli/onepass-pull-planner.test.js +0 -266
  204. package/dist/cli/onepass-pull-planner.test.js.map +0 -1
  205. package/dist/cli/push-scan-exclusions.test.d.ts +0 -2
  206. package/dist/cli/push-scan-exclusions.test.d.ts.map +0 -1
  207. package/dist/cli/push-scan-exclusions.test.js +0 -99
  208. package/dist/cli/push-scan-exclusions.test.js.map +0 -1
  209. package/dist/cli/reindex-knowledge.test.d.ts +0 -12
  210. package/dist/cli/reindex-knowledge.test.d.ts.map +0 -1
  211. package/dist/cli/reindex-knowledge.test.js +0 -260
  212. package/dist/cli/reindex-knowledge.test.js.map +0 -1
  213. package/dist/cli/reindex.test.d.ts +0 -11
  214. package/dist/cli/reindex.test.d.ts.map +0 -1
  215. package/dist/cli/reindex.test.js +0 -811
  216. package/dist/cli/reindex.test.js.map +0 -1
  217. package/dist/cli/rescue-breaker.test.d.ts +0 -2
  218. package/dist/cli/rescue-breaker.test.d.ts.map +0 -1
  219. package/dist/cli/rescue-breaker.test.js +0 -812
  220. package/dist/cli/rescue-breaker.test.js.map +0 -1
  221. package/dist/cli/rescue-classify-ordering.test.d.ts +0 -2
  222. package/dist/cli/rescue-classify-ordering.test.d.ts.map +0 -1
  223. package/dist/cli/rescue-classify-ordering.test.js +0 -500
  224. package/dist/cli/rescue-classify-ordering.test.js.map +0 -1
  225. package/dist/cli/rescue-clone-diagnostics.test.d.ts +0 -2
  226. package/dist/cli/rescue-clone-diagnostics.test.d.ts.map +0 -1
  227. package/dist/cli/rescue-clone-diagnostics.test.js +0 -101
  228. package/dist/cli/rescue-clone-diagnostics.test.js.map +0 -1
  229. package/dist/cli/rescue-clone-network-retry.test.d.ts +0 -2
  230. package/dist/cli/rescue-clone-network-retry.test.d.ts.map +0 -1
  231. package/dist/cli/rescue-clone-network-retry.test.js +0 -415
  232. package/dist/cli/rescue-clone-network-retry.test.js.map +0 -1
  233. package/dist/cli/rescue-core-stamp.test.d.ts +0 -2
  234. package/dist/cli/rescue-core-stamp.test.d.ts.map +0 -1
  235. package/dist/cli/rescue-core-stamp.test.js +0 -364
  236. package/dist/cli/rescue-core-stamp.test.js.map +0 -1
  237. package/dist/cli/rescue-drift-reconcile.test.d.ts +0 -2
  238. package/dist/cli/rescue-drift-reconcile.test.d.ts.map +0 -1
  239. package/dist/cli/rescue-drift-reconcile.test.js +0 -162
  240. package/dist/cli/rescue-drift-reconcile.test.js.map +0 -1
  241. package/dist/cli/rescue-drop-dir-symlink.test.d.ts +0 -2
  242. package/dist/cli/rescue-drop-dir-symlink.test.d.ts.map +0 -1
  243. package/dist/cli/rescue-drop-dir-symlink.test.js +0 -255
  244. package/dist/cli/rescue-drop-dir-symlink.test.js.map +0 -1
  245. package/dist/cli/rescue-exec-bit-preserve.test.d.ts +0 -2
  246. package/dist/cli/rescue-exec-bit-preserve.test.d.ts.map +0 -1
  247. package/dist/cli/rescue-exec-bit-preserve.test.js +0 -177
  248. package/dist/cli/rescue-exec-bit-preserve.test.js.map +0 -1
  249. package/dist/cli/rescue-hq-root-guard.test.d.ts +0 -2
  250. package/dist/cli/rescue-hq-root-guard.test.d.ts.map +0 -1
  251. package/dist/cli/rescue-hq-root-guard.test.js +0 -210
  252. package/dist/cli/rescue-hq-root-guard.test.js.map +0 -1
  253. package/dist/cli/rescue-journal-reconcile.test.d.ts +0 -2
  254. package/dist/cli/rescue-journal-reconcile.test.d.ts.map +0 -1
  255. package/dist/cli/rescue-journal-reconcile.test.js +0 -186
  256. package/dist/cli/rescue-journal-reconcile.test.js.map +0 -1
  257. package/dist/cli/rescue-keep-local-ignore.test.d.ts +0 -2
  258. package/dist/cli/rescue-keep-local-ignore.test.d.ts.map +0 -1
  259. package/dist/cli/rescue-keep-local-ignore.test.js +0 -315
  260. package/dist/cli/rescue-keep-local-ignore.test.js.map +0 -1
  261. package/dist/cli/rescue-move.test.d.ts +0 -2
  262. package/dist/cli/rescue-move.test.d.ts.map +0 -1
  263. package/dist/cli/rescue-move.test.js +0 -166
  264. package/dist/cli/rescue-move.test.js.map +0 -1
  265. package/dist/cli/rescue-mtime-preserve.test.d.ts +0 -2
  266. package/dist/cli/rescue-mtime-preserve.test.d.ts.map +0 -1
  267. package/dist/cli/rescue-mtime-preserve.test.js +0 -186
  268. package/dist/cli/rescue-mtime-preserve.test.js.map +0 -1
  269. package/dist/cli/rescue-preserve-copy-symlink.test.d.ts +0 -2
  270. package/dist/cli/rescue-preserve-copy-symlink.test.d.ts.map +0 -1
  271. package/dist/cli/rescue-preserve-copy-symlink.test.js +0 -483
  272. package/dist/cli/rescue-preserve-copy-symlink.test.js.map +0 -1
  273. package/dist/cli/rescue-realpath.test.d.ts +0 -2
  274. package/dist/cli/rescue-realpath.test.d.ts.map +0 -1
  275. package/dist/cli/rescue-realpath.test.js +0 -109
  276. package/dist/cli/rescue-realpath.test.js.map +0 -1
  277. package/dist/cli/rescue-restore-flag.test.d.ts +0 -2
  278. package/dist/cli/rescue-restore-flag.test.d.ts.map +0 -1
  279. package/dist/cli/rescue-restore-flag.test.js +0 -82
  280. package/dist/cli/rescue-restore-flag.test.js.map +0 -1
  281. package/dist/cli/rescue-rsync-preflight.test.d.ts +0 -2
  282. package/dist/cli/rescue-rsync-preflight.test.d.ts.map +0 -1
  283. package/dist/cli/rescue-rsync-preflight.test.js +0 -579
  284. package/dist/cli/rescue-rsync-preflight.test.js.map +0 -1
  285. package/dist/cli/rescue-rsync-status.test.d.ts +0 -2
  286. package/dist/cli/rescue-rsync-status.test.d.ts.map +0 -1
  287. package/dist/cli/rescue-rsync-status.test.js +0 -406
  288. package/dist/cli/rescue-rsync-status.test.js.map +0 -1
  289. package/dist/cli/rescue-settings-reconcile.test.d.ts +0 -2
  290. package/dist/cli/rescue-settings-reconcile.test.d.ts.map +0 -1
  291. package/dist/cli/rescue-settings-reconcile.test.js +0 -610
  292. package/dist/cli/rescue-settings-reconcile.test.js.map +0 -1
  293. package/dist/cli/rescue-snapshot-copy.test.d.ts +0 -2
  294. package/dist/cli/rescue-snapshot-copy.test.d.ts.map +0 -1
  295. package/dist/cli/rescue-snapshot-copy.test.js +0 -790
  296. package/dist/cli/rescue-snapshot-copy.test.js.map +0 -1
  297. package/dist/cli/rescue-snapshot-recovery.test.d.ts +0 -2
  298. package/dist/cli/rescue-snapshot-recovery.test.d.ts.map +0 -1
  299. package/dist/cli/rescue-snapshot-recovery.test.js +0 -265
  300. package/dist/cli/rescue-snapshot-recovery.test.js.map +0 -1
  301. package/dist/cli/rescue-snapshot.test.d.ts +0 -2
  302. package/dist/cli/rescue-snapshot.test.d.ts.map +0 -1
  303. package/dist/cli/rescue-snapshot.test.js +0 -46
  304. package/dist/cli/rescue-snapshot.test.js.map +0 -1
  305. package/dist/cli/rescue-source-switch-floor.test.d.ts +0 -2
  306. package/dist/cli/rescue-source-switch-floor.test.d.ts.map +0 -1
  307. package/dist/cli/rescue-source-switch-floor.test.js +0 -247
  308. package/dist/cli/rescue-source-switch-floor.test.js.map +0 -1
  309. package/dist/cli/rescue-unchanged-delete.test.d.ts +0 -2
  310. package/dist/cli/rescue-unchanged-delete.test.d.ts.map +0 -1
  311. package/dist/cli/rescue-unchanged-delete.test.js +0 -305
  312. package/dist/cli/rescue-unchanged-delete.test.js.map +0 -1
  313. package/dist/cli/rescue.reindex.test.d.ts +0 -2
  314. package/dist/cli/rescue.reindex.test.d.ts.map +0 -1
  315. package/dist/cli/rescue.reindex.test.js +0 -72
  316. package/dist/cli/rescue.reindex.test.js.map +0 -1
  317. package/dist/cli/rescue.test.d.ts +0 -2
  318. package/dist/cli/rescue.test.d.ts.map +0 -1
  319. package/dist/cli/rescue.test.js +0 -127
  320. package/dist/cli/rescue.test.js.map +0 -1
  321. package/dist/cli/share-plan-limit-presign.test.d.ts +0 -2
  322. package/dist/cli/share-plan-limit-presign.test.d.ts.map +0 -1
  323. package/dist/cli/share-plan-limit-presign.test.js +0 -271
  324. package/dist/cli/share-plan-limit-presign.test.js.map +0 -1
  325. package/dist/cli/share-presign-transport.test.d.ts +0 -22
  326. package/dist/cli/share-presign-transport.test.d.ts.map +0 -1
  327. package/dist/cli/share-presign-transport.test.js +0 -388
  328. package/dist/cli/share-presign-transport.test.js.map +0 -1
  329. package/dist/cli/share.test.d.ts +0 -5
  330. package/dist/cli/share.test.d.ts.map +0 -1
  331. package/dist/cli/share.test.js +0 -12335
  332. package/dist/cli/share.test.js.map +0 -1
  333. package/dist/cli/streaming-pull-planner.bench.test.d.ts +0 -15
  334. package/dist/cli/streaming-pull-planner.bench.test.d.ts.map +0 -1
  335. package/dist/cli/streaming-pull-planner.bench.test.js +0 -273
  336. package/dist/cli/streaming-pull-planner.bench.test.js.map +0 -1
  337. package/dist/cli/sync-scope.test.d.ts +0 -22
  338. package/dist/cli/sync-scope.test.d.ts.map +0 -1
  339. package/dist/cli/sync-scope.test.js +0 -903
  340. package/dist/cli/sync-scope.test.js.map +0 -1
  341. package/dist/cli/sync.test.d.ts +0 -5
  342. package/dist/cli/sync.test.d.ts.map +0 -1
  343. package/dist/cli/sync.test.js +0 -9028
  344. package/dist/cli/sync.test.js.map +0 -1
  345. package/dist/cli/tombstones.test.d.ts +0 -2
  346. package/dist/cli/tombstones.test.d.ts.map +0 -1
  347. package/dist/cli/tombstones.test.js +0 -120
  348. package/dist/cli/tombstones.test.js.map +0 -1
  349. package/dist/cli/watch-event-push-conflict.test.d.ts +0 -25
  350. package/dist/cli/watch-event-push-conflict.test.d.ts.map +0 -1
  351. package/dist/cli/watch-event-push-conflict.test.js +0 -230
  352. package/dist/cli/watch-event-push-conflict.test.js.map +0 -1
  353. package/dist/client-info.test.d.ts +0 -11
  354. package/dist/client-info.test.d.ts.map +0 -1
  355. package/dist/client-info.test.js +0 -168
  356. package/dist/client-info.test.js.map +0 -1
  357. package/dist/cognito-auth-lock-no-hard-links.test.d.ts +0 -11
  358. package/dist/cognito-auth-lock-no-hard-links.test.d.ts.map +0 -1
  359. package/dist/cognito-auth-lock-no-hard-links.test.js +0 -76
  360. package/dist/cognito-auth-lock-no-hard-links.test.js.map +0 -1
  361. package/dist/cognito-auth.test.d.ts +0 -9
  362. package/dist/cognito-auth.test.d.ts.map +0 -1
  363. package/dist/cognito-auth.test.js +0 -745
  364. package/dist/cognito-auth.test.js.map +0 -1
  365. package/dist/company-resolver.test.d.ts +0 -7
  366. package/dist/company-resolver.test.d.ts.map +0 -1
  367. package/dist/company-resolver.test.js +0 -533
  368. package/dist/company-resolver.test.js.map +0 -1
  369. package/dist/company-slug.test.d.ts +0 -7
  370. package/dist/company-slug.test.d.ts.map +0 -1
  371. package/dist/company-slug.test.js +0 -43
  372. package/dist/company-slug.test.js.map +0 -1
  373. package/dist/company-vault-transport.test.d.ts +0 -12
  374. package/dist/company-vault-transport.test.d.ts.map +0 -1
  375. package/dist/company-vault-transport.test.js +0 -97
  376. package/dist/company-vault-transport.test.js.map +0 -1
  377. package/dist/context.test.d.ts +0 -7
  378. package/dist/context.test.d.ts.map +0 -1
  379. package/dist/context.test.js +0 -646
  380. package/dist/context.test.js.map +0 -1
  381. package/dist/entity-resolver.test.d.ts +0 -10
  382. package/dist/entity-resolver.test.d.ts.map +0 -1
  383. package/dist/entity-resolver.test.js +0 -244
  384. package/dist/entity-resolver.test.js.map +0 -1
  385. package/dist/getindigo-dead-refs-contract.test.d.ts +0 -2
  386. package/dist/getindigo-dead-refs-contract.test.d.ts.map +0 -1
  387. package/dist/getindigo-dead-refs-contract.test.js +0 -58
  388. package/dist/getindigo-dead-refs-contract.test.js.map +0 -1
  389. package/dist/hermetic-test-env.test.d.ts +0 -2
  390. package/dist/hermetic-test-env.test.d.ts.map +0 -1
  391. package/dist/hermetic-test-env.test.js +0 -61
  392. package/dist/hermetic-test-env.test.js.map +0 -1
  393. package/dist/hq-root-recovery.test.d.ts +0 -2
  394. package/dist/hq-root-recovery.test.d.ts.map +0 -1
  395. package/dist/hq-root-recovery.test.js +0 -65
  396. package/dist/hq-root-recovery.test.js.map +0 -1
  397. package/dist/ignore.test.d.ts +0 -10
  398. package/dist/ignore.test.d.ts.map +0 -1
  399. package/dist/ignore.test.js +0 -926
  400. package/dist/ignore.test.js.map +0 -1
  401. package/dist/index.test.d.ts +0 -2
  402. package/dist/index.test.d.ts.map +0 -1
  403. package/dist/index.test.js +0 -26
  404. package/dist/index.test.js.map +0 -1
  405. package/dist/journal-area-ledger-read-boundary.test.d.ts +0 -2
  406. package/dist/journal-area-ledger-read-boundary.test.d.ts.map +0 -1
  407. package/dist/journal-area-ledger-read-boundary.test.js +0 -420
  408. package/dist/journal-area-ledger-read-boundary.test.js.map +0 -1
  409. package/dist/journal-baseline.test.d.ts +0 -2
  410. package/dist/journal-baseline.test.d.ts.map +0 -1
  411. package/dist/journal-baseline.test.js +0 -218
  412. package/dist/journal-baseline.test.js.map +0 -1
  413. package/dist/journal-decode-window.test.d.ts +0 -2
  414. package/dist/journal-decode-window.test.d.ts.map +0 -1
  415. package/dist/journal-decode-window.test.js +0 -99
  416. package/dist/journal-decode-window.test.js.map +0 -1
  417. package/dist/journal-delta-writes.test.d.ts +0 -2
  418. package/dist/journal-delta-writes.test.d.ts.map +0 -1
  419. package/dist/journal-delta-writes.test.js +0 -159
  420. package/dist/journal-delta-writes.test.js.map +0 -1
  421. package/dist/journal-ledger-index.test.d.ts +0 -15
  422. package/dist/journal-ledger-index.test.d.ts.map +0 -1
  423. package/dist/journal-ledger-index.test.js +0 -269
  424. package/dist/journal-ledger-index.test.js.map +0 -1
  425. package/dist/journal-public-boundary.test.d.ts +0 -2
  426. package/dist/journal-public-boundary.test.d.ts.map +0 -1
  427. package/dist/journal-public-boundary.test.js +0 -216
  428. package/dist/journal-public-boundary.test.js.map +0 -1
  429. package/dist/journal-row-store.test.d.ts +0 -2
  430. package/dist/journal-row-store.test.d.ts.map +0 -1
  431. package/dist/journal-row-store.test.js +0 -729
  432. package/dist/journal-row-store.test.js.map +0 -1
  433. package/dist/journal-snapshot-memory-helpers.d.ts +0 -33
  434. package/dist/journal-snapshot-memory-helpers.d.ts.map +0 -1
  435. package/dist/journal-snapshot-memory-helpers.js +0 -212
  436. package/dist/journal-snapshot-memory-helpers.js.map +0 -1
  437. package/dist/journal-snapshot-memory.test.d.ts +0 -2
  438. package/dist/journal-snapshot-memory.test.d.ts.map +0 -1
  439. package/dist/journal-snapshot-memory.test.js +0 -47
  440. package/dist/journal-snapshot-memory.test.js.map +0 -1
  441. package/dist/journal-snapshot-v4-memory.test.d.ts +0 -2
  442. package/dist/journal-snapshot-v4-memory.test.d.ts.map +0 -1
  443. package/dist/journal-snapshot-v4-memory.test.js +0 -24
  444. package/dist/journal-snapshot-v4-memory.test.js.map +0 -1
  445. package/dist/journal-snapshot-v4-writer-memory.test.d.ts +0 -2
  446. package/dist/journal-snapshot-v4-writer-memory.test.d.ts.map +0 -1
  447. package/dist/journal-snapshot-v4-writer-memory.test.js +0 -76
  448. package/dist/journal-snapshot-v4-writer-memory.test.js.map +0 -1
  449. package/dist/journal-snapshot-v4-writer.test.d.ts +0 -2
  450. package/dist/journal-snapshot-v4-writer.test.d.ts.map +0 -1
  451. package/dist/journal-snapshot-v4-writer.test.js +0 -282
  452. package/dist/journal-snapshot-v4-writer.test.js.map +0 -1
  453. package/dist/journal-snapshot-v4.test.d.ts +0 -2
  454. package/dist/journal-snapshot-v4.test.d.ts.map +0 -1
  455. package/dist/journal-snapshot-v4.test.js +0 -281
  456. package/dist/journal-snapshot-v4.test.js.map +0 -1
  457. package/dist/journal-store.test.d.ts +0 -2
  458. package/dist/journal-store.test.d.ts.map +0 -1
  459. package/dist/journal-store.test.js +0 -1227
  460. package/dist/journal-store.test.js.map +0 -1
  461. package/dist/journal-streaming.heap.test.d.ts +0 -2
  462. package/dist/journal-streaming.heap.test.d.ts.map +0 -1
  463. package/dist/journal-streaming.heap.test.js +0 -190
  464. package/dist/journal-streaming.heap.test.js.map +0 -1
  465. package/dist/journal.test.d.ts +0 -9
  466. package/dist/journal.test.d.ts.map +0 -1
  467. package/dist/journal.test.js +0 -1074
  468. package/dist/journal.test.js.map +0 -1
  469. package/dist/kms10-etag-safe-pull.test.d.ts +0 -2
  470. package/dist/kms10-etag-safe-pull.test.d.ts.map +0 -1
  471. package/dist/kms10-etag-safe-pull.test.js +0 -53
  472. package/dist/kms10-etag-safe-pull.test.js.map +0 -1
  473. package/dist/lib/cloud-authoritative.test.d.ts +0 -2
  474. package/dist/lib/cloud-authoritative.test.d.ts.map +0 -1
  475. package/dist/lib/cloud-authoritative.test.js +0 -42
  476. package/dist/lib/cloud-authoritative.test.js.map +0 -1
  477. package/dist/lib/conflict-reconcile.test.d.ts +0 -7
  478. package/dist/lib/conflict-reconcile.test.d.ts.map +0 -1
  479. package/dist/lib/conflict-reconcile.test.js +0 -246
  480. package/dist/lib/conflict-reconcile.test.js.map +0 -1
  481. package/dist/lib/conflict.test.d.ts +0 -9
  482. package/dist/lib/conflict.test.d.ts.map +0 -1
  483. package/dist/lib/conflict.test.js +0 -340
  484. package/dist/lib/conflict.test.js.map +0 -1
  485. package/dist/lib/describe-error.test.d.ts +0 -2
  486. package/dist/lib/describe-error.test.d.ts.map +0 -1
  487. package/dist/lib/describe-error.test.js +0 -148
  488. package/dist/lib/describe-error.test.js.map +0 -1
  489. package/dist/lib/machine-id.test.d.ts +0 -8
  490. package/dist/lib/machine-id.test.d.ts.map +0 -1
  491. package/dist/lib/machine-id.test.js +0 -228
  492. package/dist/lib/machine-id.test.js.map +0 -1
  493. package/dist/lib/net-errors.test.d.ts +0 -2
  494. package/dist/lib/net-errors.test.d.ts.map +0 -1
  495. package/dist/lib/net-errors.test.js +0 -111
  496. package/dist/lib/net-errors.test.js.map +0 -1
  497. package/dist/lib/ontology-entity-meta.test.d.ts +0 -2
  498. package/dist/lib/ontology-entity-meta.test.d.ts.map +0 -1
  499. package/dist/lib/ontology-entity-meta.test.js +0 -79
  500. package/dist/lib/ontology-entity-meta.test.js.map +0 -1
  501. package/dist/lib/ontology-entity-push.test.d.ts +0 -2
  502. package/dist/lib/ontology-entity-push.test.d.ts.map +0 -1
  503. package/dist/lib/ontology-entity-push.test.js +0 -156
  504. package/dist/lib/ontology-entity-push.test.js.map +0 -1
  505. package/dist/lib/personal-connector-settings-sync.test.d.ts +0 -2
  506. package/dist/lib/personal-connector-settings-sync.test.d.ts.map +0 -1
  507. package/dist/lib/personal-connector-settings-sync.test.js +0 -34
  508. package/dist/lib/personal-connector-settings-sync.test.js.map +0 -1
  509. package/dist/lib/readlink-safe.test.d.ts +0 -2
  510. package/dist/lib/readlink-safe.test.d.ts.map +0 -1
  511. package/dist/lib/readlink-safe.test.js +0 -34
  512. package/dist/lib/readlink-safe.test.js.map +0 -1
  513. package/dist/lib/s3-content-checksum.test.d.ts +0 -2
  514. package/dist/lib/s3-content-checksum.test.d.ts.map +0 -1
  515. package/dist/lib/s3-content-checksum.test.js +0 -26
  516. package/dist/lib/s3-content-checksum.test.js.map +0 -1
  517. package/dist/lib/skill-register-landed-bytes.test.d.ts +0 -2
  518. package/dist/lib/skill-register-landed-bytes.test.d.ts.map +0 -1
  519. package/dist/lib/skill-register-landed-bytes.test.js +0 -83
  520. package/dist/lib/skill-register-landed-bytes.test.js.map +0 -1
  521. package/dist/local-path-codec.test.d.ts +0 -14
  522. package/dist/local-path-codec.test.d.ts.map +0 -1
  523. package/dist/local-path-codec.test.js +0 -122
  524. package/dist/local-path-codec.test.js.map +0 -1
  525. package/dist/machine-auth.test.d.ts +0 -14
  526. package/dist/machine-auth.test.d.ts.map +0 -1
  527. package/dist/machine-auth.test.js +0 -1492
  528. package/dist/machine-auth.test.js.map +0 -1
  529. package/dist/machine-token-cache-isolation.test.d.ts +0 -24
  530. package/dist/machine-token-cache-isolation.test.d.ts.map +0 -1
  531. package/dist/machine-token-cache-isolation.test.js +0 -284
  532. package/dist/machine-token-cache-isolation.test.js.map +0 -1
  533. package/dist/manifest/US-002.acceptance.test.d.ts +0 -11
  534. package/dist/manifest/US-002.acceptance.test.d.ts.map +0 -1
  535. package/dist/manifest/US-002.acceptance.test.js +0 -160
  536. package/dist/manifest/US-002.acceptance.test.js.map +0 -1
  537. package/dist/manifest/US-004.acceptance.test.d.ts +0 -12
  538. package/dist/manifest/US-004.acceptance.test.d.ts.map +0 -1
  539. package/dist/manifest/US-004.acceptance.test.js +0 -173
  540. package/dist/manifest/US-004.acceptance.test.js.map +0 -1
  541. package/dist/manifest/build-manifest-resident-parity.test.d.ts +0 -2
  542. package/dist/manifest/build-manifest-resident-parity.test.d.ts.map +0 -1
  543. package/dist/manifest/build-manifest-resident-parity.test.js +0 -69
  544. package/dist/manifest/build-manifest-resident-parity.test.js.map +0 -1
  545. package/dist/manifest/build-manifest.bench.test.d.ts +0 -22
  546. package/dist/manifest/build-manifest.bench.test.d.ts.map +0 -1
  547. package/dist/manifest/build-manifest.bench.test.js +0 -930
  548. package/dist/manifest/build-manifest.bench.test.js.map +0 -1
  549. package/dist/manifest/build-manifest.test.d.ts +0 -10
  550. package/dist/manifest/build-manifest.test.d.ts.map +0 -1
  551. package/dist/manifest/build-manifest.test.js +0 -1217
  552. package/dist/manifest/build-manifest.test.js.map +0 -1
  553. package/dist/manifest/contract.test.d.ts +0 -17
  554. package/dist/manifest/contract.test.d.ts.map +0 -1
  555. package/dist/manifest/contract.test.js +0 -346
  556. package/dist/manifest/contract.test.js.map +0 -1
  557. package/dist/manifest/import-graph.test.d.ts +0 -25
  558. package/dist/manifest/import-graph.test.d.ts.map +0 -1
  559. package/dist/manifest/import-graph.test.js +0 -120
  560. package/dist/manifest/import-graph.test.js.map +0 -1
  561. package/dist/manifest/ledger-shard-isolation.test.d.ts +0 -18
  562. package/dist/manifest/ledger-shard-isolation.test.d.ts.map +0 -1
  563. package/dist/manifest/ledger-shard-isolation.test.js +0 -153
  564. package/dist/manifest/ledger-shard-isolation.test.js.map +0 -1
  565. package/dist/manifest/snapshot-store.test.d.ts +0 -11
  566. package/dist/manifest/snapshot-store.test.d.ts.map +0 -1
  567. package/dist/manifest/snapshot-store.test.js +0 -206
  568. package/dist/manifest/snapshot-store.test.js.map +0 -1
  569. package/dist/manifest/upload-manifest.test.d.ts +0 -10
  570. package/dist/manifest/upload-manifest.test.d.ts.map +0 -1
  571. package/dist/manifest/upload-manifest.test.js +0 -1335
  572. package/dist/manifest/upload-manifest.test.js.map +0 -1
  573. package/dist/manifest-reconcile.test.d.ts +0 -2
  574. package/dist/manifest-reconcile.test.d.ts.map +0 -1
  575. package/dist/manifest-reconcile.test.js +0 -1029
  576. package/dist/manifest-reconcile.test.js.map +0 -1
  577. package/dist/object-io.test.d.ts +0 -11
  578. package/dist/object-io.test.d.ts.map +0 -1
  579. package/dist/object-io.test.js +0 -2376
  580. package/dist/object-io.test.js.map +0 -1
  581. package/dist/operation-lock.test.d.ts +0 -5
  582. package/dist/operation-lock.test.d.ts.map +0 -1
  583. package/dist/operation-lock.test.js +0 -796
  584. package/dist/operation-lock.test.js.map +0 -1
  585. package/dist/outcome-telemetry.test.d.ts +0 -9
  586. package/dist/outcome-telemetry.test.d.ts.map +0 -1
  587. package/dist/outcome-telemetry.test.js +0 -663
  588. package/dist/outcome-telemetry.test.js.map +0 -1
  589. package/dist/outposts/client.test.d.ts +0 -9
  590. package/dist/outposts/client.test.d.ts.map +0 -1
  591. package/dist/outposts/client.test.js +0 -415
  592. package/dist/outposts/client.test.js.map +0 -1
  593. package/dist/outposts/command.test.d.ts +0 -18
  594. package/dist/outposts/command.test.d.ts.map +0 -1
  595. package/dist/outposts/command.test.js +0 -1230
  596. package/dist/outposts/command.test.js.map +0 -1
  597. package/dist/outposts/replica-sync.test.d.ts +0 -2
  598. package/dist/outposts/replica-sync.test.d.ts.map +0 -1
  599. package/dist/outposts/replica-sync.test.js +0 -224
  600. package/dist/outposts/replica-sync.test.js.map +0 -1
  601. package/dist/outposts/self-deploy.test.d.ts +0 -2
  602. package/dist/outposts/self-deploy.test.d.ts.map +0 -1
  603. package/dist/outposts/self-deploy.test.js +0 -218
  604. package/dist/outposts/self-deploy.test.js.map +0 -1
  605. package/dist/outposts/session-heartbeat-bounds.test.d.ts +0 -25
  606. package/dist/outposts/session-heartbeat-bounds.test.d.ts.map +0 -1
  607. package/dist/outposts/session-heartbeat-bounds.test.js +0 -156
  608. package/dist/outposts/session-heartbeat-bounds.test.js.map +0 -1
  609. package/dist/outposts/session-heartbeat-guard.test.d.ts +0 -16
  610. package/dist/outposts/session-heartbeat-guard.test.d.ts.map +0 -1
  611. package/dist/outposts/session-heartbeat-guard.test.js +0 -88
  612. package/dist/outposts/session-heartbeat-guard.test.js.map +0 -1
  613. package/dist/outposts/session-heartbeat-publisher.test.d.ts +0 -10
  614. package/dist/outposts/session-heartbeat-publisher.test.d.ts.map +0 -1
  615. package/dist/outposts/session-heartbeat-publisher.test.js +0 -153
  616. package/dist/outposts/session-heartbeat-publisher.test.js.map +0 -1
  617. package/dist/outposts/session-heartbeat-retain-guard.test.d.ts +0 -18
  618. package/dist/outposts/session-heartbeat-retain-guard.test.d.ts.map +0 -1
  619. package/dist/outposts/session-heartbeat-retain-guard.test.js +0 -106
  620. package/dist/outposts/session-heartbeat-retain-guard.test.js.map +0 -1
  621. package/dist/outposts/session-heartbeat-scan.test.d.ts +0 -20
  622. package/dist/outposts/session-heartbeat-scan.test.d.ts.map +0 -1
  623. package/dist/outposts/session-heartbeat-scan.test.js +0 -241
  624. package/dist/outposts/session-heartbeat-scan.test.js.map +0 -1
  625. package/dist/outposts/session-heartbeat.test.d.ts +0 -11
  626. package/dist/outposts/session-heartbeat.test.d.ts.map +0 -1
  627. package/dist/outposts/session-heartbeat.test.js +0 -370
  628. package/dist/outposts/session-heartbeat.test.js.map +0 -1
  629. package/dist/outposts/session-host-auth.test.d.ts +0 -16
  630. package/dist/outposts/session-host-auth.test.d.ts.map +0 -1
  631. package/dist/outposts/session-host-auth.test.js +0 -284
  632. package/dist/outposts/session-host-auth.test.js.map +0 -1
  633. package/dist/outposts/session-host-command.test.d.ts +0 -10
  634. package/dist/outposts/session-host-command.test.d.ts.map +0 -1
  635. package/dist/outposts/session-host-command.test.js +0 -180
  636. package/dist/outposts/session-host-command.test.js.map +0 -1
  637. package/dist/outposts/session-host-connection.test.d.ts +0 -18
  638. package/dist/outposts/session-host-connection.test.d.ts.map +0 -1
  639. package/dist/outposts/session-host-connection.test.js +0 -392
  640. package/dist/outposts/session-host-connection.test.js.map +0 -1
  641. package/dist/outposts/session-host-fakes.d.ts +0 -61
  642. package/dist/outposts/session-host-fakes.d.ts.map +0 -1
  643. package/dist/outposts/session-host-fakes.js +0 -115
  644. package/dist/outposts/session-host-fakes.js.map +0 -1
  645. package/dist/outposts/session-host-ndjson.test.d.ts +0 -11
  646. package/dist/outposts/session-host-ndjson.test.d.ts.map +0 -1
  647. package/dist/outposts/session-host-ndjson.test.js +0 -73
  648. package/dist/outposts/session-host-ndjson.test.js.map +0 -1
  649. package/dist/outposts/session-host-protocol.test.d.ts +0 -15
  650. package/dist/outposts/session-host-protocol.test.d.ts.map +0 -1
  651. package/dist/outposts/session-host-protocol.test.js +0 -0
  652. package/dist/outposts/session-host-protocol.test.js.map +0 -1
  653. package/dist/outposts/session-host-server.test.d.ts +0 -10
  654. package/dist/outposts/session-host-server.test.d.ts.map +0 -1
  655. package/dist/outposts/session-host-server.test.js +0 -118
  656. package/dist/outposts/session-host-server.test.js.map +0 -1
  657. package/dist/outposts/session-host-sessions.test.d.ts +0 -18
  658. package/dist/outposts/session-host-sessions.test.d.ts.map +0 -1
  659. package/dist/outposts/session-host-sessions.test.js +0 -439
  660. package/dist/outposts/session-host-sessions.test.js.map +0 -1
  661. package/dist/outposts/terminal.test.d.ts +0 -2
  662. package/dist/outposts/terminal.test.d.ts.map +0 -1
  663. package/dist/outposts/terminal.test.js +0 -146
  664. package/dist/outposts/terminal.test.js.map +0 -1
  665. package/dist/outposts/transport.test.d.ts +0 -10
  666. package/dist/outposts/transport.test.d.ts.map +0 -1
  667. package/dist/outposts/transport.test.js +0 -205
  668. package/dist/outposts/transport.test.js.map +0 -1
  669. package/dist/packed-journal-phase2.test.d.ts +0 -2
  670. package/dist/packed-journal-phase2.test.d.ts.map +0 -1
  671. package/dist/packed-journal-phase2.test.js +0 -273
  672. package/dist/packed-journal-phase2.test.js.map +0 -1
  673. package/dist/path-ancestors.test.d.ts +0 -2
  674. package/dist/path-ancestors.test.d.ts.map +0 -1
  675. package/dist/path-ancestors.test.js +0 -21
  676. package/dist/path-ancestors.test.js.map +0 -1
  677. package/dist/personal-vault-exclusions.test.d.ts +0 -22
  678. package/dist/personal-vault-exclusions.test.d.ts.map +0 -1
  679. package/dist/personal-vault-exclusions.test.js +0 -294
  680. package/dist/personal-vault-exclusions.test.js.map +0 -1
  681. package/dist/personal-vault.test.d.ts +0 -18
  682. package/dist/personal-vault.test.d.ts.map +0 -1
  683. package/dist/personal-vault.test.js +0 -1099
  684. package/dist/personal-vault.test.js.map +0 -1
  685. package/dist/plan-limit-pause.test.d.ts +0 -2
  686. package/dist/plan-limit-pause.test.d.ts.map +0 -1
  687. package/dist/plan-limit-pause.test.js +0 -150
  688. package/dist/plan-limit-pause.test.js.map +0 -1
  689. package/dist/plan-limit.fixtures.d.ts +0 -34
  690. package/dist/plan-limit.fixtures.d.ts.map +0 -1
  691. package/dist/plan-limit.fixtures.js +0 -96
  692. package/dist/plan-limit.fixtures.js.map +0 -1
  693. package/dist/plan-limit.test.d.ts +0 -2
  694. package/dist/plan-limit.test.d.ts.map +0 -1
  695. package/dist/plan-limit.test.js +0 -132
  696. package/dist/plan-limit.test.js.map +0 -1
  697. package/dist/prefix-coalesce.test.d.ts +0 -2
  698. package/dist/prefix-coalesce.test.d.ts.map +0 -1
  699. package/dist/prefix-coalesce.test.js +0 -260
  700. package/dist/prefix-coalesce.test.js.map +0 -1
  701. package/dist/private-folder-transport.test.d.ts +0 -2
  702. package/dist/private-folder-transport.test.d.ts.map +0 -1
  703. package/dist/private-folder-transport.test.js +0 -33
  704. package/dist/private-folder-transport.test.js.map +0 -1
  705. package/dist/public-surface.test.d.ts +0 -15
  706. package/dist/public-surface.test.d.ts.map +0 -1
  707. package/dist/public-surface.test.js +0 -110
  708. package/dist/public-surface.test.js.map +0 -1
  709. package/dist/qmd-reindex.test.d.ts +0 -14
  710. package/dist/qmd-reindex.test.d.ts.map +0 -1
  711. package/dist/qmd-reindex.test.js +0 -899
  712. package/dist/qmd-reindex.test.js.map +0 -1
  713. package/dist/read-only-state-dir.test.d.ts +0 -27
  714. package/dist/read-only-state-dir.test.d.ts.map +0 -1
  715. package/dist/read-only-state-dir.test.js +0 -167
  716. package/dist/read-only-state-dir.test.js.map +0 -1
  717. package/dist/remote-pull.test.d.ts +0 -2
  718. package/dist/remote-pull.test.d.ts.map +0 -1
  719. package/dist/remote-pull.test.js +0 -1147
  720. package/dist/remote-pull.test.js.map +0 -1
  721. package/dist/s3-download-stream-hash.test.d.ts +0 -2
  722. package/dist/s3-download-stream-hash.test.d.ts.map +0 -1
  723. package/dist/s3-download-stream-hash.test.js +0 -70
  724. package/dist/s3-download-stream-hash.test.js.map +0 -1
  725. package/dist/s3.list-cost.test.d.ts +0 -2
  726. package/dist/s3.list-cost.test.d.ts.map +0 -1
  727. package/dist/s3.list-cost.test.js +0 -51
  728. package/dist/s3.list-cost.test.js.map +0 -1
  729. package/dist/s3.rename-retry.test.d.ts +0 -2
  730. package/dist/s3.rename-retry.test.d.ts.map +0 -1
  731. package/dist/s3.rename-retry.test.js +0 -217
  732. package/dist/s3.rename-retry.test.js.map +0 -1
  733. package/dist/s3.symlink-materialize.test.d.ts +0 -18
  734. package/dist/s3.symlink-materialize.test.d.ts.map +0 -1
  735. package/dist/s3.symlink-materialize.test.js +0 -579
  736. package/dist/s3.symlink-materialize.test.js.map +0 -1
  737. package/dist/s3.test.d.ts +0 -9
  738. package/dist/s3.test.d.ts.map +0 -1
  739. package/dist/s3.test.js +0 -2047
  740. package/dist/s3.test.js.map +0 -1
  741. package/dist/s3.windows-portability.test.d.ts +0 -12
  742. package/dist/s3.windows-portability.test.d.ts.map +0 -1
  743. package/dist/s3.windows-portability.test.js +0 -223
  744. package/dist/s3.windows-portability.test.js.map +0 -1
  745. package/dist/schemas/signal-types.test.d.ts +0 -2
  746. package/dist/schemas/signal-types.test.d.ts.map +0 -1
  747. package/dist/schemas/signal-types.test.js +0 -65
  748. package/dist/schemas/signal-types.test.js.map +0 -1
  749. package/dist/schemas/source-channels.test.d.ts +0 -2
  750. package/dist/schemas/source-channels.test.d.ts.map +0 -1
  751. package/dist/schemas/source-channels.test.js +0 -65
  752. package/dist/schemas/source-channels.test.js.map +0 -1
  753. package/dist/scope-shrink.test.d.ts +0 -13
  754. package/dist/scope-shrink.test.d.ts.map +0 -1
  755. package/dist/scope-shrink.test.js +0 -558
  756. package/dist/scope-shrink.test.js.map +0 -1
  757. package/dist/session-log-capture.test.d.ts +0 -2
  758. package/dist/session-log-capture.test.d.ts.map +0 -1
  759. package/dist/session-log-capture.test.js +0 -533
  760. package/dist/session-log-capture.test.js.map +0 -1
  761. package/dist/session-log-retention.test.d.ts +0 -2
  762. package/dist/session-log-retention.test.d.ts.map +0 -1
  763. package/dist/session-log-retention.test.js +0 -383
  764. package/dist/session-log-retention.test.js.map +0 -1
  765. package/dist/signals/get.test.d.ts +0 -5
  766. package/dist/signals/get.test.d.ts.map +0 -1
  767. package/dist/signals/get.test.js +0 -254
  768. package/dist/signals/get.test.js.map +0 -1
  769. package/dist/signals/list.test.d.ts +0 -9
  770. package/dist/signals/list.test.d.ts.map +0 -1
  771. package/dist/signals/list.test.js +0 -330
  772. package/dist/signals/list.test.js.map +0 -1
  773. package/dist/skill-telemetry.test.d.ts +0 -2
  774. package/dist/skill-telemetry.test.d.ts.map +0 -1
  775. package/dist/skill-telemetry.test.js +0 -1484
  776. package/dist/skill-telemetry.test.js.map +0 -1
  777. package/dist/sources/get.test.d.ts +0 -5
  778. package/dist/sources/get.test.d.ts.map +0 -1
  779. package/dist/sources/get.test.js +0 -236
  780. package/dist/sources/get.test.js.map +0 -1
  781. package/dist/sources/list.test.d.ts +0 -8
  782. package/dist/sources/list.test.d.ts.map +0 -1
  783. package/dist/sources/list.test.js +0 -318
  784. package/dist/sources/list.test.js.map +0 -1
  785. package/dist/sts-credential-refresh.test.d.ts +0 -2
  786. package/dist/sts-credential-refresh.test.d.ts.map +0 -1
  787. package/dist/sts-credential-refresh.test.js +0 -181
  788. package/dist/sts-credential-refresh.test.js.map +0 -1
  789. package/dist/swallowed-error-sites.test.d.ts +0 -2
  790. package/dist/swallowed-error-sites.test.d.ts.map +0 -1
  791. package/dist/swallowed-error-sites.test.js +0 -199
  792. package/dist/swallowed-error-sites.test.js.map +0 -1
  793. package/dist/swallowed-error-w32.test.d.ts +0 -2
  794. package/dist/swallowed-error-w32.test.d.ts.map +0 -1
  795. package/dist/swallowed-error-w32.test.js +0 -171
  796. package/dist/swallowed-error-w32.test.js.map +0 -1
  797. package/dist/swallowed-error-w33.test.d.ts +0 -2
  798. package/dist/swallowed-error-w33.test.d.ts.map +0 -1
  799. package/dist/swallowed-error-w33.test.js +0 -125
  800. package/dist/swallowed-error-w33.test.js.map +0 -1
  801. package/dist/swallowed-error-w34.test.d.ts +0 -2
  802. package/dist/swallowed-error-w34.test.d.ts.map +0 -1
  803. package/dist/swallowed-error-w34.test.js +0 -110
  804. package/dist/swallowed-error-w34.test.js.map +0 -1
  805. package/dist/swallowed-error-w35.test.d.ts +0 -2
  806. package/dist/swallowed-error-w35.test.d.ts.map +0 -1
  807. package/dist/swallowed-error-w35.test.js +0 -223
  808. package/dist/swallowed-error-w35.test.js.map +0 -1
  809. package/dist/sync/area-ledger-auto-migration.test.d.ts +0 -2
  810. package/dist/sync/area-ledger-auto-migration.test.d.ts.map +0 -1
  811. package/dist/sync/area-ledger-auto-migration.test.js +0 -291
  812. package/dist/sync/area-ledger-auto-migration.test.js.map +0 -1
  813. package/dist/sync/area-ledger-migration.test.d.ts +0 -2
  814. package/dist/sync/area-ledger-migration.test.d.ts.map +0 -1
  815. package/dist/sync/area-ledger-migration.test.js +0 -554
  816. package/dist/sync/area-ledger-migration.test.js.map +0 -1
  817. package/dist/sync/area-ledger-recovery.bench.test.d.ts +0 -2
  818. package/dist/sync/area-ledger-recovery.bench.test.d.ts.map +0 -1
  819. package/dist/sync/area-ledger-recovery.bench.test.js +0 -60
  820. package/dist/sync/area-ledger-recovery.bench.test.js.map +0 -1
  821. package/dist/sync/area-ledger-writer-lock.bench.test.d.ts +0 -2
  822. package/dist/sync/area-ledger-writer-lock.bench.test.d.ts.map +0 -1
  823. package/dist/sync/area-ledger-writer-lock.bench.test.js +0 -57
  824. package/dist/sync/area-ledger-writer-lock.bench.test.js.map +0 -1
  825. package/dist/sync/area-ledger.test.d.ts +0 -2
  826. package/dist/sync/area-ledger.test.d.ts.map +0 -1
  827. package/dist/sync/area-ledger.test.js +0 -1401
  828. package/dist/sync/area-ledger.test.js.map +0 -1
  829. package/dist/sync/area-resolver.test.d.ts +0 -2
  830. package/dist/sync/area-resolver.test.d.ts.map +0 -1
  831. package/dist/sync/area-resolver.test.js +0 -234
  832. package/dist/sync/area-resolver.test.js.map +0 -1
  833. package/dist/sync/base-version-resolver.test.d.ts +0 -2
  834. package/dist/sync/base-version-resolver.test.d.ts.map +0 -1
  835. package/dist/sync/base-version-resolver.test.js +0 -24
  836. package/dist/sync/base-version-resolver.test.js.map +0 -1
  837. package/dist/sync/candidate-uploader.test.d.ts +0 -2
  838. package/dist/sync/candidate-uploader.test.d.ts.map +0 -1
  839. package/dist/sync/candidate-uploader.test.js +0 -132
  840. package/dist/sync/candidate-uploader.test.js.map +0 -1
  841. package/dist/sync/child-process-sync-worker-env.test.d.ts +0 -2
  842. package/dist/sync/child-process-sync-worker-env.test.d.ts.map +0 -1
  843. package/dist/sync/child-process-sync-worker-env.test.js +0 -38
  844. package/dist/sync/child-process-sync-worker-env.test.js.map +0 -1
  845. package/dist/sync/child-process-sync-worker-errors.test.d.ts +0 -2
  846. package/dist/sync/child-process-sync-worker-errors.test.d.ts.map +0 -1
  847. package/dist/sync/child-process-sync-worker-errors.test.js +0 -121
  848. package/dist/sync/child-process-sync-worker-errors.test.js.map +0 -1
  849. package/dist/sync/child-process-sync-worker.test.d.ts +0 -2
  850. package/dist/sync/child-process-sync-worker.test.d.ts.map +0 -1
  851. package/dist/sync/child-process-sync-worker.test.js +0 -262
  852. package/dist/sync/child-process-sync-worker.test.js.map +0 -1
  853. package/dist/sync/content-hash.test.d.ts +0 -2
  854. package/dist/sync/content-hash.test.d.ts.map +0 -1
  855. package/dist/sync/content-hash.test.js +0 -16
  856. package/dist/sync/content-hash.test.js.map +0 -1
  857. package/dist/sync/delta-client.test.d.ts +0 -2
  858. package/dist/sync/delta-client.test.d.ts.map +0 -1
  859. package/dist/sync/delta-client.test.js +0 -97
  860. package/dist/sync/delta-client.test.js.map +0 -1
  861. package/dist/sync/durable-apply.test.d.ts +0 -2
  862. package/dist/sync/durable-apply.test.d.ts.map +0 -1
  863. package/dist/sync/durable-apply.test.js +0 -180
  864. package/dist/sync/durable-apply.test.js.map +0 -1
  865. package/dist/sync/event-sync.test.d.ts +0 -14
  866. package/dist/sync/event-sync.test.d.ts.map +0 -1
  867. package/dist/sync/event-sync.test.js +0 -1714
  868. package/dist/sync/event-sync.test.js.map +0 -1
  869. package/dist/sync/feature-flags.test.d.ts +0 -24
  870. package/dist/sync/feature-flags.test.d.ts.map +0 -1
  871. package/dist/sync/feature-flags.test.js +0 -594
  872. package/dist/sync/feature-flags.test.js.map +0 -1
  873. package/dist/sync/full-pass-cap-governor.bench.test.d.ts +0 -2
  874. package/dist/sync/full-pass-cap-governor.bench.test.d.ts.map +0 -1
  875. package/dist/sync/full-pass-cap-governor.bench.test.js +0 -179
  876. package/dist/sync/full-pass-cap-governor.bench.test.js.map +0 -1
  877. package/dist/sync/full-pass-caps.test.d.ts +0 -2
  878. package/dist/sync/full-pass-caps.test.d.ts.map +0 -1
  879. package/dist/sync/full-pass-caps.test.js +0 -550
  880. package/dist/sync/full-pass-caps.test.js.map +0 -1
  881. package/dist/sync/idle-full-reconcile.test.d.ts +0 -2
  882. package/dist/sync/idle-full-reconcile.test.d.ts.map +0 -1
  883. package/dist/sync/idle-full-reconcile.test.js +0 -62
  884. package/dist/sync/idle-full-reconcile.test.js.map +0 -1
  885. package/dist/sync/inbound-event-admission.test.d.ts +0 -2
  886. package/dist/sync/inbound-event-admission.test.d.ts.map +0 -1
  887. package/dist/sync/inbound-event-admission.test.js +0 -125
  888. package/dist/sync/inbound-event-admission.test.js.map +0 -1
  889. package/dist/sync/journal-ledger-stream.test.d.ts +0 -12
  890. package/dist/sync/journal-ledger-stream.test.d.ts.map +0 -1
  891. package/dist/sync/journal-ledger-stream.test.js +0 -134
  892. package/dist/sync/journal-ledger-stream.test.js.map +0 -1
  893. package/dist/sync/lease-client.test.d.ts +0 -2
  894. package/dist/sync/lease-client.test.d.ts.map +0 -1
  895. package/dist/sync/lease-client.test.js +0 -119
  896. package/dist/sync/lease-client.test.js.map +0 -1
  897. package/dist/sync/logger.test.d.ts +0 -19
  898. package/dist/sync/logger.test.d.ts.map +0 -1
  899. package/dist/sync/logger.test.js +0 -204
  900. package/dist/sync/logger.test.js.map +0 -1
  901. package/dist/sync/metrics.test.d.ts +0 -19
  902. package/dist/sync/metrics.test.d.ts.map +0 -1
  903. package/dist/sync/metrics.test.js +0 -357
  904. package/dist/sync/metrics.test.js.map +0 -1
  905. package/dist/sync/multipart-uploader.test.d.ts +0 -2
  906. package/dist/sync/multipart-uploader.test.d.ts.map +0 -1
  907. package/dist/sync/multipart-uploader.test.js +0 -135
  908. package/dist/sync/multipart-uploader.test.js.map +0 -1
  909. package/dist/sync/mutation-client.test.d.ts +0 -2
  910. package/dist/sync/mutation-client.test.d.ts.map +0 -1
  911. package/dist/sync/mutation-client.test.js +0 -100
  912. package/dist/sync/mutation-client.test.js.map +0 -1
  913. package/dist/sync/mutation-session.test.d.ts +0 -2
  914. package/dist/sync/mutation-session.test.d.ts.map +0 -1
  915. package/dist/sync/mutation-session.test.js +0 -190
  916. package/dist/sync/mutation-session.test.js.map +0 -1
  917. package/dist/sync/parallel-sync-coordinator.test.d.ts +0 -2
  918. package/dist/sync/parallel-sync-coordinator.test.d.ts.map +0 -1
  919. package/dist/sync/parallel-sync-coordinator.test.js +0 -564
  920. package/dist/sync/parallel-sync-coordinator.test.js.map +0 -1
  921. package/dist/sync/path-leases.test.d.ts +0 -2
  922. package/dist/sync/path-leases.test.d.ts.map +0 -1
  923. package/dist/sync/path-leases.test.js +0 -51
  924. package/dist/sync/path-leases.test.js.map +0 -1
  925. package/dist/sync/per-area-maintenance.test.d.ts +0 -2
  926. package/dist/sync/per-area-maintenance.test.d.ts.map +0 -1
  927. package/dist/sync/per-area-maintenance.test.js +0 -100
  928. package/dist/sync/per-area-maintenance.test.js.map +0 -1
  929. package/dist/sync/push-event.test.d.ts +0 -15
  930. package/dist/sync/push-event.test.d.ts.map +0 -1
  931. package/dist/sync/push-event.test.js +0 -282
  932. package/dist/sync/push-event.test.js.map +0 -1
  933. package/dist/sync/push-receiver.test.d.ts +0 -25
  934. package/dist/sync/push-receiver.test.d.ts.map +0 -1
  935. package/dist/sync/push-receiver.test.js +0 -2851
  936. package/dist/sync/push-receiver.test.js.map +0 -1
  937. package/dist/sync/push-transport.test.d.ts +0 -2
  938. package/dist/sync/push-transport.test.d.ts.map +0 -1
  939. package/dist/sync/push-transport.test.js +0 -70
  940. package/dist/sync/push-transport.test.js.map +0 -1
  941. package/dist/sync/push-walk-matchers.bench.test.d.ts +0 -2
  942. package/dist/sync/push-walk-matchers.bench.test.d.ts.map +0 -1
  943. package/dist/sync/push-walk-matchers.bench.test.js +0 -230
  944. package/dist/sync/push-walk-matchers.bench.test.js.map +0 -1
  945. package/dist/sync/realtime-network-integration.test.d.ts +0 -2
  946. package/dist/sync/realtime-network-integration.test.d.ts.map +0 -1
  947. package/dist/sync/realtime-network-integration.test.js +0 -83
  948. package/dist/sync/realtime-network-integration.test.js.map +0 -1
  949. package/dist/sync/realtime-rollout.test.d.ts +0 -2
  950. package/dist/sync/realtime-rollout.test.d.ts.map +0 -1
  951. package/dist/sync/realtime-rollout.test.js +0 -94
  952. package/dist/sync/realtime-rollout.test.js.map +0 -1
  953. package/dist/sync/realtime-telemetry.test.d.ts +0 -2
  954. package/dist/sync/realtime-telemetry.test.d.ts.map +0 -1
  955. package/dist/sync/realtime-telemetry.test.js +0 -300
  956. package/dist/sync/realtime-telemetry.test.js.map +0 -1
  957. package/dist/sync/receiver-origin-config.test.d.ts +0 -2
  958. package/dist/sync/receiver-origin-config.test.d.ts.map +0 -1
  959. package/dist/sync/receiver-origin-config.test.js +0 -39
  960. package/dist/sync/receiver-origin-config.test.js.map +0 -1
  961. package/dist/sync/reconcile-cursor.test.d.ts +0 -2
  962. package/dist/sync/reconcile-cursor.test.d.ts.map +0 -1
  963. package/dist/sync/reconcile-cursor.test.js +0 -139
  964. package/dist/sync/reconcile-cursor.test.js.map +0 -1
  965. package/dist/sync/remote-file-spool.test.d.ts +0 -2
  966. package/dist/sync/remote-file-spool.test.d.ts.map +0 -1
  967. package/dist/sync/remote-file-spool.test.js +0 -77
  968. package/dist/sync/remote-file-spool.test.js.map +0 -1
  969. package/dist/sync/scope-inventory-client.test.d.ts +0 -2
  970. package/dist/sync/scope-inventory-client.test.d.ts.map +0 -1
  971. package/dist/sync/scope-inventory-client.test.js +0 -103
  972. package/dist/sync/scope-inventory-client.test.js.map +0 -1
  973. package/dist/sync/secret-path-policy.test.d.ts +0 -2
  974. package/dist/sync/secret-path-policy.test.d.ts.map +0 -1
  975. package/dist/sync/secret-path-policy.test.js +0 -183
  976. package/dist/sync/secret-path-policy.test.js.map +0 -1
  977. package/dist/sync/snapshot-client.test.d.ts +0 -2
  978. package/dist/sync/snapshot-client.test.d.ts.map +0 -1
  979. package/dist/sync/snapshot-client.test.js +0 -169
  980. package/dist/sync/snapshot-client.test.js.map +0 -1
  981. package/dist/sync/state-store.test.d.ts +0 -2
  982. package/dist/sync/state-store.test.d.ts.map +0 -1
  983. package/dist/sync/state-store.test.js +0 -1556
  984. package/dist/sync/state-store.test.js.map +0 -1
  985. package/dist/sync/sync-contract.test.d.ts +0 -2
  986. package/dist/sync/sync-contract.test.d.ts.map +0 -1
  987. package/dist/sync/sync-contract.test.js +0 -141
  988. package/dist/sync/sync-contract.test.js.map +0 -1
  989. package/dist/sync/targeted-pull-prefixes.test.d.ts +0 -2
  990. package/dist/sync/targeted-pull-prefixes.test.d.ts.map +0 -1
  991. package/dist/sync/targeted-pull-prefixes.test.js +0 -33
  992. package/dist/sync/targeted-pull-prefixes.test.js.map +0 -1
  993. package/dist/sync/targeted-upsert-exact-list.test.d.ts +0 -2
  994. package/dist/sync/targeted-upsert-exact-list.test.d.ts.map +0 -1
  995. package/dist/sync/targeted-upsert-exact-list.test.js +0 -247
  996. package/dist/sync/targeted-upsert-exact-list.test.js.map +0 -1
  997. package/dist/sync/unchanged-push-events.test.d.ts +0 -2
  998. package/dist/sync/unchanged-push-events.test.d.ts.map +0 -1
  999. package/dist/sync/unchanged-push-events.test.js +0 -76
  1000. package/dist/sync/unchanged-push-events.test.js.map +0 -1
  1001. package/dist/sync/uploader-finalization.test.d.ts +0 -2
  1002. package/dist/sync/uploader-finalization.test.d.ts.map +0 -1
  1003. package/dist/sync/uploader-finalization.test.js +0 -107
  1004. package/dist/sync/uploader-finalization.test.js.map +0 -1
  1005. package/dist/sync-core.test.d.ts +0 -2
  1006. package/dist/sync-core.test.d.ts.map +0 -1
  1007. package/dist/sync-core.test.js +0 -189
  1008. package/dist/sync-core.test.js.map +0 -1
  1009. package/dist/sync-progress.test.d.ts +0 -2
  1010. package/dist/sync-progress.test.d.ts.map +0 -1
  1011. package/dist/sync-progress.test.js +0 -277
  1012. package/dist/sync-progress.test.js.map +0 -1
  1013. package/dist/telemetry-events.test.d.ts +0 -2
  1014. package/dist/telemetry-events.test.d.ts.map +0 -1
  1015. package/dist/telemetry-events.test.js +0 -113
  1016. package/dist/telemetry-events.test.js.map +0 -1
  1017. package/dist/telemetry.test.d.ts +0 -11
  1018. package/dist/telemetry.test.d.ts.map +0 -1
  1019. package/dist/telemetry.test.js +0 -1603
  1020. package/dist/telemetry.test.js.map +0 -1
  1021. package/dist/vault-client.test.d.ts +0 -7
  1022. package/dist/vault-client.test.d.ts.map +0 -1
  1023. package/dist/vault-client.test.js +0 -1334
  1024. package/dist/vault-client.test.js.map +0 -1
  1025. package/dist/watch-coverage.test.d.ts +0 -2
  1026. package/dist/watch-coverage.test.d.ts.map +0 -1
  1027. package/dist/watch-coverage.test.js +0 -56
  1028. package/dist/watch-coverage.test.js.map +0 -1
  1029. package/dist/watch-owner-lease.test.d.ts +0 -2
  1030. package/dist/watch-owner-lease.test.d.ts.map +0 -1
  1031. package/dist/watch-owner-lease.test.js +0 -353
  1032. package/dist/watch-owner-lease.test.js.map +0 -1
  1033. package/dist/watch-parent.test.d.ts +0 -2
  1034. package/dist/watch-parent.test.d.ts.map +0 -1
  1035. package/dist/watch-parent.test.js +0 -131
  1036. package/dist/watch-parent.test.js.map +0 -1
  1037. package/dist/watch-roots.test.d.ts +0 -18
  1038. package/dist/watch-roots.test.d.ts.map +0 -1
  1039. package/dist/watch-roots.test.js +0 -395
  1040. package/dist/watch-roots.test.js.map +0 -1
  1041. package/dist/watcher-continuity-hot-path.test.d.ts +0 -2
  1042. package/dist/watcher-continuity-hot-path.test.d.ts.map +0 -1
  1043. package/dist/watcher-continuity-hot-path.test.js +0 -40
  1044. package/dist/watcher-continuity-hot-path.test.js.map +0 -1
  1045. package/dist/watcher-event-gate.test.d.ts +0 -16
  1046. package/dist/watcher-event-gate.test.d.ts.map +0 -1
  1047. package/dist/watcher-event-gate.test.js +0 -191
  1048. package/dist/watcher-event-gate.test.js.map +0 -1
  1049. package/dist/watcher-replan-sweep.test.d.ts +0 -2
  1050. package/dist/watcher-replan-sweep.test.d.ts.map +0 -1
  1051. package/dist/watcher-replan-sweep.test.js +0 -245
  1052. package/dist/watcher-replan-sweep.test.js.map +0 -1
  1053. package/dist/watcher-stdout.test.d.ts +0 -2
  1054. package/dist/watcher-stdout.test.d.ts.map +0 -1
  1055. package/dist/watcher-stdout.test.js +0 -86
  1056. package/dist/watcher-stdout.test.js.map +0 -1
  1057. package/dist/watcher.test.d.ts +0 -2
  1058. package/dist/watcher.test.d.ts.map +0 -1
  1059. package/dist/watcher.test.js +0 -4301
  1060. package/dist/watcher.test.js.map +0 -1
  1061. package/dist/watcher.warmup-cancel.test.d.ts +0 -2
  1062. package/dist/watcher.warmup-cancel.test.d.ts.map +0 -1
  1063. package/dist/watcher.warmup-cancel.test.js +0 -59
  1064. package/dist/watcher.warmup-cancel.test.js.map +0 -1
  1065. package/dist/watcher.warmup-responsive.test.d.ts +0 -2
  1066. package/dist/watcher.warmup-responsive.test.d.ts.map +0 -1
  1067. package/dist/watcher.warmup-responsive.test.js +0 -62
  1068. package/dist/watcher.warmup-responsive.test.js.map +0 -1
@@ -1,1074 +0,0 @@
1
- /**
2
- * Unit tests for the sync journal (ADR-0001 Phase 5).
3
- *
4
- * Verifies per-company isolation, HQ_STATE_DIR override, and filename
5
- * sanitization — all behaviors that the pre-Phase-5 monolithic journal
6
- * didn't need.
7
- */
8
- import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
9
- import * as fs from "fs";
10
- import * as os from "os";
11
- import * as path from "path";
12
- import { getJournalPath, getStateDir, readJournal, writeJournal, updateEntry, PrematureJournalEntryError, migrateToV2, normalizeJournalKeys, appendPullRecord, lastPullRecord, tombstoneEntry, isTombstone, gcTombstones, generatePullId, TOMBSTONE_TTL_MS, MAX_PULLS_PER_COMPANY, PERSONAL_VAULT_JOURNAL_SLUG, migratePersonalVaultJournal, repairJournalStateIfNeeded, listJournals, listJournalSlugs, markLocalDeleteIntent, journalRows, journalCacheMetric, JOURNAL_DECODE_WINDOW, resetJournalDecodeWindowForTest, setJournalSnapshotEncoderForTest, getScopedJournalStoreSession, disposeScopedJournalStores, } from "./journal.js";
13
- import { StateStore } from "./sync/state-store.js";
14
- describe("journal", () => {
15
- let stateDir;
16
- beforeEach(() => {
17
- stateDir = fs.mkdtempSync(path.join(os.tmpdir(), "hq-journal-test-"));
18
- process.env.HQ_STATE_DIR = stateDir;
19
- });
20
- afterEach(() => {
21
- disposeScopedJournalStores();
22
- fs.rmSync(stateDir, { recursive: true, force: true });
23
- delete process.env.HQ_STATE_DIR;
24
- });
25
- it("bounds scoped journal sessions and disposes the least recently used store", () => {
26
- disposeScopedJournalStores();
27
- const storeA = getScopedJournalStoreSession("lru-a");
28
- const storeB = getScopedJournalStoreSession("lru-b");
29
- getScopedJournalStoreSession("lru-c");
30
- getScopedJournalStoreSession("lru-d");
31
- const disposeB = vi.spyOn(storeB, "dispose");
32
- // Refresh A's recency. Opening E must evict B, the oldest unused store.
33
- expect(getScopedJournalStoreSession("lru-a")).toBe(storeA);
34
- getScopedJournalStoreSession("lru-e");
35
- expect(disposeB).toHaveBeenCalledOnce();
36
- expect(getScopedJournalStoreSession("lru-a")).toBe(storeA);
37
- expect(getScopedJournalStoreSession("lru-b")).not.toBe(storeB);
38
- });
39
- describe("getStateDir", () => {
40
- it("honors HQ_STATE_DIR env var", () => {
41
- expect(getStateDir()).toBe(stateDir);
42
- });
43
- it("falls back to ~/.hq when env var unset", () => {
44
- delete process.env.HQ_STATE_DIR;
45
- expect(getStateDir()).toBe(path.join(os.homedir(), ".hq"));
46
- });
47
- });
48
- describe("record journal rows", () => {
49
- it("does not enumerate inherited legacy record rows", () => {
50
- const inherited = {
51
- hash: "inherited",
52
- size: 1,
53
- syncedAt: "2026-09-13T00:00:00.000Z",
54
- direction: "down",
55
- };
56
- const own = {
57
- hash: "own",
58
- size: 2,
59
- syncedAt: "2026-09-13T00:00:00.000Z",
60
- direction: "up",
61
- };
62
- const files = Object.create({ "inherited.md": inherited });
63
- files["own.md"] = own;
64
- const rows = journalRows({ version: "2", lastSync: "", files, pulls: [] });
65
- expect(rows.size).toBe(1);
66
- expect([...rows.keys()]).toEqual(["own.md"]);
67
- expect([...rows.entries()]).toEqual([["own.md", own]]);
68
- expect([...rows.values()]).toEqual([own]);
69
- });
70
- it("walks a journal larger than the decode window without retaining more than 10k rows", () => {
71
- const rowCount = JOURNAL_DECODE_WINDOW + 2_000;
72
- const files = {};
73
- for (let index = 0; index < rowCount; index++) {
74
- files[`tree/${index.toString().padStart(6, "0")}.md`] = {
75
- hash: index.toString(16).padStart(64, "0"),
76
- size: index,
77
- syncedAt: "2026-09-19T00:00:00.000Z",
78
- direction: "up",
79
- kind: "file",
80
- mtimeMs: 1_700_000_000_000 + index,
81
- ctimeMs: 1_700_000_000_001 + index,
82
- };
83
- }
84
- writeJournal("decode-window", { version: "2", lastSync: "", files, pulls: [] });
85
- resetJournalDecodeWindowForTest();
86
- const journal = readJournal("decode-window");
87
- let visited = 0;
88
- for (const [, entry] of journalRows(journal).entries()) {
89
- expect(entry.size).toBe(visited);
90
- visited += 1;
91
- }
92
- const metric = journalCacheMetric();
93
- expect(visited).toBe(rowCount);
94
- expect(journalRows(journal).size).toBe(rowCount);
95
- expect(metric.peakRowsInFlight).toBeLessThanOrEqual(JOURNAL_DECODE_WINDOW);
96
- expect(journalRows(journal).get("tree/000000.md")?.size).toBe(0);
97
- expect(journalRows(journal).get(`tree/${(rowCount - 1).toString().padStart(6, "0")}.md`)?.size).toBe(rowCount - 1);
98
- }, 60_000);
99
- });
100
- describe("getJournalPath", () => {
101
- it("produces a per-slug filename", () => {
102
- expect(getJournalPath("indigo")).toBe(path.join(stateDir, "sync-journal.indigo.json"));
103
- });
104
- it("isolates different slugs into different files", () => {
105
- expect(getJournalPath("indigo")).not.toBe(getJournalPath("brandstage"));
106
- });
107
- it("sanitizes path-unsafe characters", () => {
108
- expect(getJournalPath("foo/bar")).toBe(path.join(stateDir, "sync-journal.foo_bar.json"));
109
- expect(getJournalPath("../escape")).toBe(path.join(stateDir, "sync-journal.___escape.json"));
110
- });
111
- it("throws on empty slug", () => {
112
- expect(() => getJournalPath("")).toThrow(/slug is required/);
113
- });
114
- it("throws on slug that sanitizes to empty", () => {
115
- expect(() => getJournalPath("///")).toThrow(/empty identifier/);
116
- });
117
- });
118
- describe("listJournalSlugs", () => {
119
- it("discovers locator slugs without opening their aggregate journal state", () => {
120
- fs.writeFileSync(getJournalPath("healthy"), "{not valid JSON");
121
- fs.writeFileSync(getJournalPath("area-corrupt"), "{also not valid JSON");
122
- expect(listJournalSlugs()).toEqual(["area-corrupt", "healthy"]);
123
- });
124
- });
125
- describe("readJournal", () => {
126
- it("returns an empty v2 journal when the file doesn't exist", () => {
127
- const j = readJournal("indigo");
128
- expect(j.version).toBe("2");
129
- expect(j.files).toEqual({});
130
- expect(j.lastSync).toBe("");
131
- expect(j.pulls).toEqual([]);
132
- });
133
- it("reads a journal written with writeJournal (round-trips through v2 migration)", () => {
134
- // writeJournal upgrades the schema in-place to v2, so the read side
135
- // sees v2 even if the caller handed a v1 shape.
136
- const original = {
137
- version: "1",
138
- lastSync: "2026-04-19T00:00:00.000Z",
139
- files: {
140
- "docs/handoff.md": {
141
- hash: "abc123",
142
- size: 42,
143
- syncedAt: "2026-04-19T00:00:00.000Z",
144
- direction: "down",
145
- },
146
- },
147
- };
148
- writeJournal("indigo", original);
149
- const roundTripped = readJournal("indigo");
150
- expect(roundTripped.version).toBe("2");
151
- expect(roundTripped.lastSync).toBe("2026-04-19T00:00:00.000Z");
152
- expect(roundTripped.files).toEqual(original.files);
153
- expect(roundTripped.pulls).toEqual([]);
154
- });
155
- it("migrates a torn v2 primary from its last-good copy into the v3 state store", () => {
156
- const lastGood = {
157
- version: "2",
158
- lastSync: "2026-06-18T00:00:00.000Z",
159
- files: {
160
- "docs/stable.md": {
161
- hash: "last-good-hash",
162
- size: 128,
163
- syncedAt: "2026-06-18T00:00:00.000Z",
164
- direction: "down",
165
- },
166
- },
167
- pulls: [],
168
- };
169
- fs.writeFileSync(getJournalPath("indigo"), '{"version":"2","files":');
170
- fs.writeFileSync(`${getJournalPath("indigo")}.last-good`, JSON.stringify(lastGood));
171
- const recovered = readJournal("indigo");
172
- expect(recovered.version).toBe("2");
173
- expect(recovered.lastSync).toBe(lastGood.lastSync);
174
- expect(recovered.files["docs/stable.md"]).toEqual(lastGood.files["docs/stable.md"]);
175
- expect(recovered.pulls).toEqual([]);
176
- });
177
- it("replays full-journal WAL records written by pre-delta releases", () => {
178
- const legacy = StateStore.open({
179
- rootDir: stateDir,
180
- scopeId: "journal:indigo",
181
- initialState: {
182
- journal: { version: "2", lastSync: "initial", files: {}, pulls: [] },
183
- },
184
- reduce: (_state, record) => record.payload,
185
- });
186
- legacy.append(1, {
187
- journal: {
188
- version: "2",
189
- lastSync: "legacy-full-record",
190
- files: {
191
- "knowledge/legacy.md": {
192
- hash: "legacy",
193
- size: 6,
194
- syncedAt: "2026-08-17T00:00:00.000Z",
195
- direction: "down",
196
- },
197
- },
198
- pulls: [],
199
- },
200
- });
201
- expect(readJournal("indigo")).toMatchObject({
202
- lastSync: "legacy-full-record",
203
- files: { "knowledge/legacy.md": { hash: "legacy" } },
204
- });
205
- });
206
- it("auto-repairs old full records before publishing rollback-readable updates", () => {
207
- const files = Object.fromEntries(Array.from({ length: 400 }, (_, index) => [
208
- `knowledge/${index}.md`,
209
- {
210
- hash: `hash-${index}-${"x".repeat(64)}`,
211
- size: index,
212
- syncedAt: "2026-08-17T00:00:00.000Z",
213
- direction: "down",
214
- remoteEtag: `etag-${index}`,
215
- kind: "file",
216
- },
217
- ]));
218
- const legacyJournal = {
219
- version: "2",
220
- lastSync: "legacy",
221
- files,
222
- pulls: [],
223
- };
224
- const legacy = StateStore.open({
225
- rootDir: stateDir,
226
- scopeId: "journal:indigo",
227
- initialState: { journal: { version: "2", lastSync: "initial", files: {}, pulls: [] } },
228
- maxWalBytesBeforeCompaction: 1024 * 1024,
229
- reduce: (_state, record) => record.payload,
230
- });
231
- legacy.append(1, { journal: legacyJournal });
232
- const result = repairJournalStateIfNeeded("indigo", {
233
- maxWalBytesBeforeCompaction: 32 * 1024,
234
- });
235
- expect(result.status).toBe("repaired");
236
- expect(readJournal("indigo")).toEqual(legacyJournal);
237
- const changed = structuredClone(legacyJournal);
238
- changed.lastSync = "delta";
239
- changed.files["knowledge/10.md"] = { ...changed.files["knowledge/10.md"], hash: "updated" };
240
- delete changed.files["knowledge/399.md"];
241
- writeJournal("indigo", changed);
242
- expect(readJournal("indigo")).toEqual(changed);
243
- // The legacy path is a locator, not a copy of the journal: the store is
244
- // the only authority, and this file exists so `listJournals` can still
245
- // enumerate slugs it cannot recover from a digest-named directory.
246
- expect(JSON.parse(fs.readFileSync(getJournalPath("indigo"), "utf8"))).toMatchObject({ schema: "hq-sync-journal-locator@1", slug: "indigo" });
247
- const storeDir = path.dirname(fs.readdirSync(path.join(stateDir, "sync-state-v3"), { recursive: true })
248
- .map(String)
249
- .map((name) => path.join(stateDir, "sync-state-v3", name))
250
- .find((name) => /snapshot-\d+\.bin$/.test(name)));
251
- expect(fs.readdirSync(storeDir).filter((name) => name.startsWith("snapshot-"))).toHaveLength(2);
252
- expect(fs.readdirSync(storeDir).filter((name) => name.startsWith("wal-"))).toHaveLength(2);
253
- });
254
- it("R-F08: surfaces primary IO errors instead of masking them with last-good", () => {
255
- const journalPath = getJournalPath("indigo");
256
- fs.mkdirSync(journalPath);
257
- expect(() => readJournal("indigo")).toThrow(/EISDIR|directory/i);
258
- });
259
- });
260
- describe("writeJournal", () => {
261
- it("creates the state directory if it doesn't exist", () => {
262
- const nestedDir = path.join(stateDir, "nested", "deep");
263
- process.env.HQ_STATE_DIR = nestedDir;
264
- expect(fs.existsSync(nestedDir)).toBe(false);
265
- writeJournal("indigo", { version: "1", lastSync: "", files: {} });
266
- expect(fs.existsSync(nestedDir)).toBe(true);
267
- expect(fs.existsSync(path.join(nestedDir, "sync-journal.indigo.json"))).toBe(true);
268
- });
269
- it("keeps per-company journals independent", () => {
270
- writeJournal("indigo", {
271
- version: "1",
272
- lastSync: "",
273
- files: { "a.md": { hash: "1", size: 1, syncedAt: "", direction: "up" } },
274
- });
275
- writeJournal("brandstage", {
276
- version: "1",
277
- lastSync: "",
278
- files: { "b.md": { hash: "2", size: 2, syncedAt: "", direction: "up" } },
279
- });
280
- const indigo = readJournal("indigo");
281
- const brandstage = readJournal("brandstage");
282
- expect(indigo.files).toHaveProperty("a.md");
283
- expect(indigo.files).not.toHaveProperty("b.md");
284
- expect(brandstage.files).toHaveProperty("b.md");
285
- expect(brandstage.files).not.toHaveProperty("a.md");
286
- });
287
- it("migrates once, appends authoritative updates, and leaves the locator alone", () => {
288
- const initial = { version: "2", lastSync: "one", files: {}, pulls: [] };
289
- writeJournal("indigo", initial);
290
- const locator = fs.readFileSync(getJournalPath("indigo"));
291
- writeJournal("indigo", { version: "2", lastSync: "two", files: {}, pulls: [] });
292
- // The locator is immutable content, so an update must not rewrite it.
293
- // This used to be a full copy of the journal, republished on every write
294
- // — 178 MB a time on a large vault, three times a minute.
295
- expect(fs.readFileSync(getJournalPath("indigo"))).toEqual(locator);
296
- expect(locator.byteLength).toBeLessThan(4096);
297
- // The update itself still lands, in the store where it belongs.
298
- expect(readJournal("indigo").lastSync).toBe("two");
299
- });
300
- it("publishes header-only generations readable by the rollback reducer", () => {
301
- // This pins the old v3 delta-reader contract independently of the new
302
- // production HQSNAP4 writer. The dedicated writer tests cover v4.
303
- setJournalSnapshotEncoderForTest(null);
304
- try {
305
- const files = Object.fromEntries(Array.from({ length: 1_000 }, (_, index) => [
306
- `knowledge/${index}.md`,
307
- { hash: `hash-${index}`, size: index, syncedAt: "2026-08-17T00:00:00.000Z", direction: "up" },
308
- ]));
309
- const initial = {
310
- version: "2",
311
- lastSync: "one",
312
- files,
313
- pulls: [],
314
- };
315
- writeJournal("indigo", initial);
316
- const changed = structuredClone(initial);
317
- changed.lastSync = "two";
318
- changed.files["knowledge/500.md"] = {
319
- hash: "changed",
320
- size: 500,
321
- syncedAt: "2026-08-17T00:01:00.000Z",
322
- direction: "down",
323
- };
324
- delete changed.files["knowledge/999.md"];
325
- writeJournal("indigo", changed);
326
- const storeRoot = path.join(stateDir, "sync-state-v3");
327
- const storeDir = path.join(storeRoot, fs.readdirSync(storeRoot)[0]);
328
- const walSizes = fs.readdirSync(storeDir)
329
- .filter((name) => /^wal-\d+\.bin$/.test(name))
330
- .map((name) => fs.statSync(path.join(storeDir, name)).size);
331
- // The update is a delta APPENDED to the WAL, so the WAL carries a record
332
- // rather than staying at its 80-byte header. That inversion is the whole
333
- // change: a header-only WAL meant every update had republished the entire
334
- // state as a fresh snapshot instead.
335
- expect(walSizes.some((size) => size > 80)).toBe(true);
336
- expect(readJournal("indigo")).toEqual(changed);
337
- // A reader that understands ONLY the old full-state record type can no
338
- // longer follow this journal. That is the deliberate trade: those client
339
- // versions are no longer supported, and refusing to emit deltas for them
340
- // is what cost a full snapshot per update. Asserted rather than dropped,
341
- // so the day someone needs that compatibility back this test says why it
342
- // went and what re-enabling it would mean.
343
- expect(() => StateStore.open({
344
- rootDir: stateDir,
345
- scopeId: "journal:indigo",
346
- initialState: { journal: { version: "2", lastSync: "", files: {}, pulls: [] } },
347
- reduce: (_state, record) => {
348
- if (record.type !== 1)
349
- throw new Error(`rollback reader rejects type ${record.type}`);
350
- return record.payload;
351
- },
352
- })).toThrow(/rejects type 2|reducer rejected/);
353
- }
354
- finally {
355
- setJournalSnapshotEncoderForTest(undefined);
356
- }
357
- });
358
- });
359
- describe("updateEntry", () => {
360
- it("stamps lastSync and the per-file syncedAt", () => {
361
- const j = { version: "1", lastSync: "", files: {} };
362
- const abs = path.join(stateDir, "foo.md");
363
- fs.writeFileSync(abs, "x");
364
- updateEntry(j, "foo.md", "hash", 10, "up", abs);
365
- expect(j.files["foo.md"]?.hash).toBe("hash");
366
- expect(j.files["foo.md"]?.direction).toBe("up");
367
- expect(j.lastSync).not.toBe("");
368
- expect(j.files["foo.md"]?.syncedAt).not.toBe("");
369
- });
370
- // Load-bearing once delete propagation authorizes on ETag currency alone:
371
- // an entry whose file was never written is indistinguishable from "the
372
- // user deleted this", and the next push would issue a remote DeleteObject
373
- // for what was only premature bookkeeping.
374
- it("refuses to journal a path that is not on disk", () => {
375
- const j = { version: "1", lastSync: "", files: {} };
376
- const missing = path.join(stateDir, "never-written.md");
377
- expect(() => updateEntry(j, "never-written.md", "hash", 10, "down", missing)).toThrow(PrematureJournalEntryError);
378
- expect(j.files).not.toHaveProperty("never-written.md");
379
- expect(j.lastSync).toBe("");
380
- });
381
- it("accepts a dangling symlink — the link itself is the synced object", () => {
382
- const j = { version: "1", lastSync: "", files: {} };
383
- const link = path.join(stateDir, "dangling-link");
384
- fs.symlinkSync(path.join(stateDir, "no-such-target"), link);
385
- expect(() => updateEntry(j, "dangling-link", "hash", 0, "down", link, { kind: "symlink" })).not.toThrow();
386
- expect(j.files["dangling-link"]?.kind).toBe("symlink");
387
- });
388
- // Regression: `kind` and `createdBySub` were adjacent trailing optionals
389
- // and two call sites passed kind into the createdBySub slot, leaving
390
- // entry.kind unset. entry.kind gates delete-intent minting, so those
391
- // entries could never be deleted. Named options make it unrepresentable.
392
- it("records kind and createdBySub into their own fields", () => {
393
- const j = { version: "1", lastSync: "", files: {} };
394
- const abs = path.join(stateDir, "typed.md");
395
- fs.writeFileSync(abs, "x");
396
- updateEntry(j, "typed.md", "hash", 1, "down", abs, {
397
- kind: "file",
398
- createdBySub: "sub-123",
399
- });
400
- expect(j.files["typed.md"]?.kind).toBe("file");
401
- expect(j.files["typed.md"]?.createdBySub).toBe("sub-123");
402
- });
403
- });
404
- // ── Journal v2 (US-005): pulls, tombstones, GC, migration ─────────────────
405
- describe("migrateToV2", () => {
406
- it("upgrades a v1 journal in place", () => {
407
- const j = { version: "1", lastSync: "", files: {} };
408
- migrateToV2(j);
409
- expect(j.version).toBe("2");
410
- expect(j.pulls).toEqual([]);
411
- });
412
- it("is idempotent on a v2 journal", () => {
413
- const j = {
414
- version: "2",
415
- lastSync: "",
416
- files: {},
417
- pulls: [],
418
- };
419
- const before = JSON.stringify(j);
420
- migrateToV2(j);
421
- expect(JSON.stringify(j)).toBe(before);
422
- });
423
- it("preserves all files when migrating v1 → v2", () => {
424
- const j = {
425
- version: "1",
426
- lastSync: "2026-05-01",
427
- files: {
428
- "a.md": {
429
- hash: "h",
430
- size: 1,
431
- syncedAt: "2026-05-01",
432
- direction: "down",
433
- },
434
- },
435
- };
436
- migrateToV2(j);
437
- expect(j.files["a.md"]).toBeDefined();
438
- expect(j.files["a.md"]?.removedAt).toBeUndefined(); // not a tombstone
439
- });
440
- it("writeJournal upgrades v1 → v2 on disk", () => {
441
- writeJournal("indigo", { version: "1", lastSync: "", files: {} });
442
- // Read back through the store, which is where the journal now lives; the
443
- // legacy path holds only a locator.
444
- const stored = readJournal("indigo");
445
- expect(stored.version).toBe("2");
446
- expect(stored.pulls).toEqual([]);
447
- });
448
- it("normalizes backslash keys even on an already-v2 journal", () => {
449
- // The landmine predates the v2 bump, so a poisoned journal can be v2.
450
- // migrateToV2's early-return must not skip normalization.
451
- const j = {
452
- version: "2",
453
- lastSync: "",
454
- files: {
455
- "projects\\forecast\\x.csv": {
456
- hash: "h",
457
- size: 1,
458
- syncedAt: "2026-06-10",
459
- direction: "down",
460
- },
461
- },
462
- pulls: [],
463
- };
464
- migrateToV2(j);
465
- expect(j.files["projects\\forecast\\x.csv"]).toBeUndefined();
466
- expect(j.files["projects/forecast/x.csv"]).toBeDefined();
467
- });
468
- it("normalizes an existing backslash key when an unrelated store-backed journal write occurs", () => {
469
- const malformed = {
470
- version: "2",
471
- lastSync: "",
472
- files: {
473
- "projects\\forecast\\x.csv": {
474
- hash: "malformed",
475
- size: 1,
476
- syncedAt: "2026-06-10",
477
- direction: "down",
478
- },
479
- },
480
- pulls: [],
481
- };
482
- const legacy = StateStore.open({
483
- rootDir: stateDir,
484
- scopeId: "journal:indigo",
485
- initialState: { journal: { version: "2", lastSync: "", files: {}, pulls: [] } },
486
- reduce: (_state, record) => record.payload,
487
- });
488
- legacy.append(1, { journal: malformed });
489
- const loaded = readJournal("indigo");
490
- loaded.files["docs/unrelated.md"] = {
491
- hash: "unrelated",
492
- size: 2,
493
- syncedAt: "2026-06-10",
494
- direction: "down",
495
- };
496
- writeJournal("indigo", loaded);
497
- const persisted = readJournal("indigo");
498
- expect(persisted.files["projects\\forecast\\x.csv"]).toBeUndefined();
499
- expect(persisted.files["projects/forecast/x.csv"]).toMatchObject({ hash: "malformed" });
500
- expect(persisted.files["docs/unrelated.md"]).toMatchObject({ hash: "unrelated" });
501
- });
502
- });
503
- describe("normalizeJournalKeys (Windows backslash-key landmine — ridge data loss)", () => {
504
- // Regression for feedback_b8d09d0f: pre-5.47.2 Windows clients stamped
505
- // journal keys with path.sep ("\\"). Those keys never match the
506
- // forward-slash remote LIST, so the cross-machine delete planner classed
507
- // live local files as remote-deleted and path.join collapsed the key back
508
- // onto the real file — deleting ~36 live files in a single pull. The
509
- // canonical defense is rewriting every key to POSIX form on load.
510
- it("rewrites backslash keys to POSIX form and reports the count", () => {
511
- const j = {
512
- version: "2",
513
- lastSync: "",
514
- files: {
515
- "projects\\forecast-development\\forecasts\\sean-frank.csv": {
516
- hash: "h1",
517
- size: 10,
518
- syncedAt: "2026-06-10",
519
- direction: "down",
520
- },
521
- "docs\\notes.md": {
522
- hash: "h2",
523
- size: 5,
524
- syncedAt: "2026-06-10",
525
- direction: "down",
526
- },
527
- },
528
- pulls: [],
529
- };
530
- const rewritten = normalizeJournalKeys(j);
531
- expect(rewritten).toBe(2);
532
- expect(j.files["projects/forecast-development/forecasts/sean-frank.csv"]).toBeDefined();
533
- expect(j.files["docs/notes.md"]).toBeDefined();
534
- // No malformed keys survive.
535
- expect(Object.keys(j.files).some((k) => k.includes("\\"))).toBe(false);
536
- // Entry payload is preserved verbatim under the new key.
537
- expect(j.files["docs/notes.md"]?.hash).toBe("h2");
538
- });
539
- it("leaves a clean (all-POSIX) journal untouched and returns 0", () => {
540
- const j = {
541
- version: "2",
542
- lastSync: "",
543
- files: {
544
- "docs/a.md": { hash: "h", size: 1, syncedAt: "x", direction: "down" },
545
- },
546
- pulls: [],
547
- };
548
- const before = JSON.stringify(j);
549
- const rewritten = normalizeJournalKeys(j);
550
- expect(rewritten).toBe(0);
551
- expect(JSON.stringify(j)).toBe(before);
552
- });
553
- it("prefers an existing POSIX twin and drops the malformed duplicate", () => {
554
- // When both forms exist, the POSIX entry is authoritative (it round-
555
- // tripped through an up-to-date client). The malformed dup is discarded.
556
- const j = {
557
- version: "2",
558
- lastSync: "",
559
- files: {
560
- "docs/a.md": {
561
- hash: "posix-wins",
562
- size: 1,
563
- syncedAt: "x",
564
- direction: "down",
565
- },
566
- "docs\\a.md": {
567
- hash: "backslash-loses",
568
- size: 2,
569
- syncedAt: "x",
570
- direction: "down",
571
- },
572
- },
573
- pulls: [],
574
- };
575
- normalizeJournalKeys(j);
576
- expect(j.files["docs\\a.md"]).toBeUndefined();
577
- expect(j.files["docs/a.md"]?.hash).toBe("posix-wins");
578
- });
579
- it("is idempotent — a second pass rewrites nothing", () => {
580
- const j = {
581
- version: "2",
582
- lastSync: "",
583
- files: {
584
- "a\\b\\c.txt": { hash: "h", size: 1, syncedAt: "x", direction: "down" },
585
- },
586
- pulls: [],
587
- };
588
- expect(normalizeJournalKeys(j)).toBe(1);
589
- expect(normalizeJournalKeys(j)).toBe(0);
590
- expect(j.files["a/b/c.txt"]).toBeDefined();
591
- });
592
- });
593
- describe("generatePullId", () => {
594
- it("produces a 26-char identifier", () => {
595
- expect(generatePullId()).toHaveLength(26);
596
- });
597
- it("is time-prefixed and lexically sortable", () => {
598
- const t0 = Date.parse("2026-01-01T00:00:00.000Z");
599
- const t1 = Date.parse("2026-06-01T00:00:00.000Z");
600
- const id0 = generatePullId(t0);
601
- const id1 = generatePullId(t1);
602
- expect(id0 < id1).toBe(true);
603
- });
604
- it("uses crockford base32 alphabet (no I, L, O, U)", () => {
605
- const id = generatePullId();
606
- expect(id).toMatch(/^[0-9A-HJKMNP-TV-Z]+$/);
607
- });
608
- });
609
- describe("appendPullRecord + lastPullRecord", () => {
610
- function pull(partial) {
611
- return {
612
- pullId: generatePullId(),
613
- companyUid: "cmp_indigo",
614
- startedAt: "2026-05-20T00:00:00.000Z",
615
- completedAt: "2026-05-20T00:00:05.000Z",
616
- syncMode: "all",
617
- prefixSet: [],
618
- scopeChangeDetected: false,
619
- orphansRemoved: 0,
620
- orphansBlocked: 0,
621
- ...partial,
622
- };
623
- }
624
- it("appends to pulls[] (auto-migrates v1)", () => {
625
- const j = { version: "1", lastSync: "", files: {} };
626
- appendPullRecord(j, pull({}));
627
- expect(j.version).toBe("2");
628
- expect(j.pulls).toHaveLength(1);
629
- });
630
- it("lastPullRecord returns undefined when no records exist", () => {
631
- const j = {
632
- version: "2",
633
- lastSync: "",
634
- files: {},
635
- pulls: [],
636
- };
637
- expect(lastPullRecord(j, "cmp_indigo")).toBeUndefined();
638
- });
639
- it("lastPullRecord returns the most-recent by completedAt", () => {
640
- const j = {
641
- version: "2",
642
- lastSync: "",
643
- files: {},
644
- pulls: [
645
- pull({ completedAt: "2026-05-19T00:00:00.000Z", syncMode: "all" }),
646
- pull({ completedAt: "2026-05-20T00:00:00.000Z", syncMode: "shared" }),
647
- pull({ completedAt: "2026-05-18T00:00:00.000Z", syncMode: "all" }),
648
- ],
649
- };
650
- expect(lastPullRecord(j, "cmp_indigo")?.syncMode).toBe("shared");
651
- });
652
- it("lastPullRecord filters by companyUid", () => {
653
- const j = {
654
- version: "2",
655
- lastSync: "",
656
- files: {},
657
- pulls: [
658
- pull({ companyUid: "cmp_a", completedAt: "2026-05-20T00:00:00.000Z" }),
659
- pull({ companyUid: "cmp_b", completedAt: "2026-05-21T00:00:00.000Z" }),
660
- ],
661
- };
662
- expect(lastPullRecord(j, "cmp_a")?.completedAt).toBe("2026-05-20T00:00:00.000Z");
663
- });
664
- it("bounds pulls per company and preserves newest lastPullRecord", () => {
665
- const j = {
666
- version: "2",
667
- lastSync: "",
668
- files: {},
669
- pulls: [],
670
- };
671
- const completedAt = (n) => `2026-05-20T00:00:${String(n).padStart(2, "0")}.000Z`;
672
- for (let i = 0; i < MAX_PULLS_PER_COMPANY + 5; i++) {
673
- appendPullRecord(j, pull({
674
- pullId: `pull-a-${String(i).padStart(2, "0")}`,
675
- companyUid: "cmp_a",
676
- completedAt: completedAt(i),
677
- }));
678
- }
679
- for (let i = 0; i < 3; i++) {
680
- appendPullRecord(j, pull({
681
- pullId: `pull-b-${i}`,
682
- companyUid: "cmp_b",
683
- completedAt: completedAt(i),
684
- }));
685
- }
686
- const pulls = j.pulls ?? [];
687
- const companyA = pulls.filter((p) => p.companyUid === "cmp_a");
688
- const companyB = pulls.filter((p) => p.companyUid === "cmp_b");
689
- expect(companyA).toHaveLength(MAX_PULLS_PER_COMPANY);
690
- expect(companyB).toHaveLength(3);
691
- expect(companyA[0].pullId).toBe("pull-a-05");
692
- expect(companyA.at(-1)?.pullId).toBe("pull-a-54");
693
- expect(companyA.some((p) => p.pullId === "pull-a-00")).toBe(false);
694
- expect(lastPullRecord(j, "cmp_a")?.pullId).toBe("pull-a-54");
695
- expect(lastPullRecord(j, "cmp_b")?.pullId).toBe("pull-b-2");
696
- });
697
- });
698
- describe("tombstoneEntry + isTombstone", () => {
699
- it("marks an entry with removedAt + removedReason", () => {
700
- const j = {
701
- version: "2",
702
- lastSync: "",
703
- files: {
704
- "a.md": {
705
- hash: "h",
706
- size: 1,
707
- syncedAt: "2026-05-01T00:00:00.000Z",
708
- direction: "down",
709
- },
710
- },
711
- pulls: [],
712
- };
713
- tombstoneEntry(j, "a.md", "scope_shrink", "2026-05-20T00:00:00.000Z");
714
- expect(j.files["a.md"]?.removedAt).toBe("2026-05-20T00:00:00.000Z");
715
- expect(j.files["a.md"]?.removedReason).toBe("scope_shrink");
716
- expect(isTombstone(j.files["a.md"])).toBe(true);
717
- });
718
- it("is a no-op for missing entries", () => {
719
- const j = {
720
- version: "2",
721
- lastSync: "",
722
- files: {},
723
- pulls: [],
724
- };
725
- expect(() => tombstoneEntry(j, "missing.md", "scope_shrink")).not.toThrow();
726
- });
727
- it("preserves the original hash/size/syncedAt (forensic trail)", () => {
728
- const j = {
729
- version: "2",
730
- lastSync: "",
731
- files: {
732
- "a.md": {
733
- hash: "old-hash",
734
- size: 42,
735
- syncedAt: "2026-05-01T00:00:00.000Z",
736
- direction: "down",
737
- },
738
- },
739
- pulls: [],
740
- };
741
- tombstoneEntry(j, "a.md", "scope_shrink");
742
- expect(j.files["a.md"]?.hash).toBe("old-hash");
743
- expect(j.files["a.md"]?.size).toBe(42);
744
- });
745
- });
746
- describe("gcTombstones", () => {
747
- it("removes tombstones older than TOMBSTONE_TTL_MS", () => {
748
- const now = Date.parse("2026-06-01T00:00:00.000Z");
749
- const old = new Date(now - TOMBSTONE_TTL_MS - 1000).toISOString();
750
- const fresh = new Date(now - 1000).toISOString();
751
- const j = {
752
- version: "2",
753
- lastSync: "",
754
- files: {
755
- "old-tombstone.md": {
756
- hash: "h",
757
- size: 1,
758
- syncedAt: "2026-04-01T00:00:00.000Z",
759
- direction: "down",
760
- removedAt: old,
761
- removedReason: "scope_shrink",
762
- },
763
- "fresh-tombstone.md": {
764
- hash: "h",
765
- size: 1,
766
- syncedAt: "2026-05-01T00:00:00.000Z",
767
- direction: "down",
768
- removedAt: fresh,
769
- removedReason: "scope_shrink",
770
- },
771
- "live.md": {
772
- hash: "h",
773
- size: 1,
774
- syncedAt: "2026-05-01T00:00:00.000Z",
775
- direction: "down",
776
- },
777
- },
778
- pulls: [],
779
- };
780
- const removed = gcTombstones(j, now);
781
- expect(removed).toBe(1);
782
- expect(j.files["old-tombstone.md"]).toBeUndefined();
783
- expect(j.files["fresh-tombstone.md"]).toBeDefined();
784
- expect(j.files["live.md"]).toBeDefined();
785
- });
786
- it("never removes non-tombstone entries", () => {
787
- const j = {
788
- version: "2",
789
- lastSync: "",
790
- files: {
791
- "live.md": {
792
- hash: "h",
793
- size: 1,
794
- syncedAt: "1970-01-01T00:00:00.000Z",
795
- direction: "down",
796
- },
797
- },
798
- pulls: [],
799
- };
800
- expect(gcTombstones(j, Date.now())).toBe(0);
801
- expect(j.files["live.md"]).toBeDefined();
802
- });
803
- it("ignores tombstones with un-parseable removedAt", () => {
804
- const j = {
805
- version: "2",
806
- lastSync: "",
807
- files: {
808
- "bogus.md": {
809
- hash: "h",
810
- size: 1,
811
- syncedAt: "",
812
- direction: "down",
813
- removedAt: "not-a-date",
814
- removedReason: "scope_shrink",
815
- },
816
- },
817
- pulls: [],
818
- };
819
- expect(gcTombstones(j, Date.now())).toBe(0);
820
- expect(j.files["bogus.md"]).toBeDefined();
821
- });
822
- });
823
- // ── Personal-vault journal-slug collision fix ──────────────────────────────
824
- //
825
- // Root cause: the --companies fanout's personal-vault slot journaled under
826
- // the literal slug "personal", colliding with the companies/personal
827
- // company (entity slug "personal"). The two targets have different sync
828
- // roots, so the company's whole-tree delete-plan walked the shared
829
- // sync-journal.personal.json, resolved the vault's hq-root keys against
830
- // hqRoot/companies/personal (where they don't exist), tombstoned them as
831
- // "remote already 404", and dropped them — only for the vault slot to
832
- // re-upload them next cycle (~190 .claude/skills/* files of churn/sync).
833
- describe("PERSONAL_VAULT_JOURNAL_SLUG", () => {
834
- it("is decoupled from the 'personal' company slug", () => {
835
- expect(PERSONAL_VAULT_JOURNAL_SLUG).not.toBe("personal");
836
- });
837
- it("survives sanitizeSlug unchanged (no path/dot/empty mangling)", () => {
838
- // getJournalPath runs the slug through sanitizeSlug; the sentinel must
839
- // pass through verbatim (it is all [a-zA-Z0-9_-] and not all [_-]).
840
- expect(getJournalPath(PERSONAL_VAULT_JOURNAL_SLUG)).toBe(path.join(stateDir, `sync-journal.${PERSONAL_VAULT_JOURNAL_SLUG}.json`));
841
- });
842
- it("maps to a different journal file than 'personal'", () => {
843
- expect(getJournalPath(PERSONAL_VAULT_JOURNAL_SLUG)).not.toBe(getJournalPath("personal"));
844
- });
845
- });
846
- describe("migratePersonalVaultJournal", () => {
847
- const legacyJournal = () => ({
848
- version: "2",
849
- lastSync: "2026-05-22T00:00:00.000Z",
850
- files: {
851
- ".claude/skills/deep-plan/SKILL.md": {
852
- hash: "abc123",
853
- size: 42,
854
- syncedAt: "2026-05-22T00:00:00.000Z",
855
- direction: "up",
856
- },
857
- },
858
- pulls: [],
859
- });
860
- it("seeds the reserved slug from the legacy 'personal' journal when absent", () => {
861
- writeJournal("personal", legacyJournal());
862
- expect(fs.existsSync(getJournalPath(PERSONAL_VAULT_JOURNAL_SLUG))).toBe(false);
863
- migratePersonalVaultJournal();
864
- expect(fs.existsSync(getJournalPath(PERSONAL_VAULT_JOURNAL_SLUG))).toBe(true);
865
- const seeded = readJournal(PERSONAL_VAULT_JOURNAL_SLUG);
866
- // The hq-root-relative vault entry is preserved so it is NOT re-uploaded.
867
- expect(seeded.files[".claude/skills/deep-plan/SKILL.md"]).toEqual(legacyJournal().files[".claude/skills/deep-plan/SKILL.md"]);
868
- // Legacy journal is left intact (still used by the companies/personal company).
869
- expect(fs.existsSync(getJournalPath("personal"))).toBe(true);
870
- });
871
- it("is idempotent — does not clobber an existing reserved-slug journal", () => {
872
- // Pre-existing reserved-slug journal with distinct content.
873
- const existing = {
874
- version: "2",
875
- lastSync: "2026-05-22T12:00:00.000Z",
876
- files: {
877
- "core/keep-me.md": {
878
- hash: "keep",
879
- size: 7,
880
- syncedAt: "2026-05-22T12:00:00.000Z",
881
- direction: "up",
882
- },
883
- },
884
- pulls: [],
885
- };
886
- writeJournal(PERSONAL_VAULT_JOURNAL_SLUG, existing);
887
- writeJournal("personal", legacyJournal());
888
- migratePersonalVaultJournal();
889
- const after = readJournal(PERSONAL_VAULT_JOURNAL_SLUG);
890
- expect(after.files["core/keep-me.md"]).toBeDefined();
891
- // The legacy entry was NOT copied over the existing reserved journal.
892
- expect(after.files[".claude/skills/deep-plan/SKILL.md"]).toBeUndefined();
893
- });
894
- it("no-ops when the legacy 'personal' journal is absent", () => {
895
- expect(fs.existsSync(getJournalPath("personal"))).toBe(false);
896
- migratePersonalVaultJournal();
897
- expect(fs.existsSync(getJournalPath(PERSONAL_VAULT_JOURNAL_SLUG))).toBe(false);
898
- });
899
- });
900
- // Regression: `hq sync status` reported "No sync journal yet" right after a
901
- // successful sync because it read one path keyed off the HQ-ROOT, while the
902
- // engine writes slug-sharded journals (personal vault + per-company).
903
- // `listJournals` is the all-shard enumeration the status surface now uses.
904
- it("binds a local delete intent to the captured remote revision", () => {
905
- const journal = {
906
- version: "2",
907
- lastSync: "",
908
- pulls: [],
909
- files: {
910
- "docs/a.md": {
911
- hash: "local-hash",
912
- size: 1,
913
- syncedAt: new Date().toISOString(),
914
- direction: "down",
915
- kind: "file",
916
- remoteEtag: "new-etag",
917
- },
918
- },
919
- };
920
- expect(markLocalDeleteIntent(journal, "docs/a.md", "local-hash", "file", "old-etag")).toBe(false);
921
- expect(journal.files["docs/a.md"]?.localDeleteIntent).toBeUndefined();
922
- expect(markLocalDeleteIntent(journal, "docs/a.md", "local-hash", "file", "new-etag")).toBe(true);
923
- expect(journal.files["docs/a.md"]?.localDeleteIntent).toMatchObject({
924
- remoteEtag: "new-etag",
925
- localHash: "local-hash",
926
- localKind: "file",
927
- });
928
- });
929
- describe("listJournals", () => {
930
- function seed(slug, files) {
931
- writeJournal(slug, {
932
- version: "2",
933
- lastSync: "",
934
- files,
935
- pulls: [],
936
- });
937
- }
938
- it("returns [] when the state dir has no journals (truly-empty case)", () => {
939
- expect(listJournals()).toEqual([]);
940
- });
941
- it("returns [] when the state dir does not exist at all", () => {
942
- process.env.HQ_STATE_DIR = path.join(stateDir, "does-not-exist");
943
- expect(listJournals()).toEqual([]);
944
- });
945
- it("enumerates the personal-vault shard written by a `--personal` sync", () => {
946
- seed(PERSONAL_VAULT_JOURNAL_SLUG, {
947
- ".claude/skills/x/SKILL.md": {
948
- hash: "a",
949
- size: 10,
950
- syncedAt: "2026-06-08T10:00:00.000Z",
951
- direction: "up",
952
- },
953
- });
954
- const all = listJournals();
955
- expect(all).toHaveLength(1);
956
- expect(all[0].slug).toBe(PERSONAL_VAULT_JOURNAL_SLUG);
957
- expect(all[0].path).toBe(getJournalPath(PERSONAL_VAULT_JOURNAL_SLUG));
958
- expect(Object.keys(all[0].journal.files)).toContain(".claude/skills/x/SKILL.md");
959
- });
960
- it("enumerates a large shard without cloning its aggregate for a write baseline", () => {
961
- // The runner's warm-up catch-up calls listJournals only to enumerate
962
- // keys, yet listJournals went through readJournal, which memoizes a
963
- // structuredClone of the whole aggregate as a delta baseline for a
964
- // write that never comes. On a 100k-row vault that is a second copy of
965
- // the journal on every runner start, for nothing.
966
- const files = {};
967
- for (let i = 0; i < 1_500; i++) {
968
- files[`notes/${i}.md`] = {
969
- hash: `h${i}`,
970
- size: 1,
971
- syncedAt: "2026-06-08T10:00:00.000Z",
972
- direction: "up",
973
- };
974
- }
975
- seed(PERSONAL_VAULT_JOURNAL_SLUG, files);
976
- const clone = vi.spyOn(globalThis, "structuredClone");
977
- try {
978
- const all = listJournals();
979
- expect(all).toHaveLength(1);
980
- expect(Object.keys(all[0].journal.files)).toHaveLength(1_500);
981
- for (const [value] of clone.mock.calls) {
982
- if (typeof value !== "object" || value === null)
983
- continue;
984
- const object = value;
985
- expect(Object.keys(object.files ?? object.journal?.files ?? {}).length).toBeLessThan(1_500);
986
- }
987
- }
988
- finally {
989
- clone.mockRestore();
990
- }
991
- });
992
- it("enumerates a per-company shard written by a company sync", () => {
993
- seed("marshalops", {
994
- "knowledge/a.md": {
995
- hash: "b",
996
- size: 20,
997
- syncedAt: "2026-06-08T11:00:00.000Z",
998
- direction: "down",
999
- },
1000
- });
1001
- const all = listJournals();
1002
- expect(all.map((j) => j.slug)).toEqual(["marshalops"]);
1003
- });
1004
- it("enumerates ALL shards together, sorted by slug", () => {
1005
- seed(PERSONAL_VAULT_JOURNAL_SLUG, {
1006
- ".claude/x": {
1007
- hash: "a",
1008
- size: 1,
1009
- syncedAt: "2026-06-08T10:00:00.000Z",
1010
- direction: "up",
1011
- },
1012
- });
1013
- seed("marshalops", {
1014
- "k/a": {
1015
- hash: "b",
1016
- size: 2,
1017
- syncedAt: "2026-06-08T11:00:00.000Z",
1018
- direction: "down",
1019
- },
1020
- });
1021
- seed("glazeymedia", {
1022
- "k/b": {
1023
- hash: "c",
1024
- size: 3,
1025
- syncedAt: "2026-06-08T12:00:00.000Z",
1026
- direction: "down",
1027
- },
1028
- });
1029
- const slugs = listJournals().map((j) => j.slug);
1030
- // Sorted: "__hq_personal_vault__" < "glazeymedia" < "marshalops".
1031
- expect(slugs).toEqual([
1032
- PERSONAL_VAULT_JOURNAL_SLUG,
1033
- "glazeymedia",
1034
- "marshalops",
1035
- ]);
1036
- });
1037
- it("skips a corrupt shard but still returns the healthy ones", () => {
1038
- seed("marshalops", {
1039
- "k/a": {
1040
- hash: "b",
1041
- size: 2,
1042
- syncedAt: "2026-06-08T11:00:00.000Z",
1043
- direction: "down",
1044
- },
1045
- });
1046
- fs.writeFileSync(path.join(stateDir, "sync-journal.broken.json"), "{ not valid json");
1047
- const all = listJournals();
1048
- expect(all.map((j) => j.slug)).toEqual(["marshalops"]);
1049
- });
1050
- it("R-F08: recovers a torn shard primary from .last-good in listJournals", () => {
1051
- seed("marshalops", {
1052
- "k/recovered.md": {
1053
- hash: "last-good-hash",
1054
- size: 2,
1055
- syncedAt: "2026-06-19T11:00:00.000Z",
1056
- direction: "down",
1057
- },
1058
- });
1059
- fs.writeFileSync(getJournalPath("marshalops"), "");
1060
- const all = listJournals();
1061
- expect(all).toHaveLength(1);
1062
- expect(all[0].slug).toBe("marshalops");
1063
- expect(all[0].journal.files["k/recovered.md"]?.hash).toBe("last-good-hash");
1064
- });
1065
- it("ignores unrelated files in the state dir", () => {
1066
- seed("marshalops", {});
1067
- fs.writeFileSync(path.join(stateDir, "config.json"), "{}");
1068
- fs.writeFileSync(path.join(stateDir, "sync-journal.json"), "{}"); // no slug
1069
- fs.writeFileSync(path.join(stateDir, "notes.txt"), "hi");
1070
- expect(listJournals().map((j) => j.slug)).toEqual(["marshalops"]);
1071
- });
1072
- });
1073
- });
1074
- //# sourceMappingURL=journal.test.js.map