@indigoai-us/hq-cloud 6.18.44-alpha.8 → 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 -1482
  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,1029 +0,0 @@
1
- import { afterEach, describe, expect, it } from "vitest";
2
- import * as fs from "node:fs";
3
- import * as os from "node:os";
4
- import * as path from "node:path";
5
- import yaml from "js-yaml";
6
- import { reconcileCompanyManifest, reconcileManifest, } from "./manifest-reconcile.js";
7
- import { VaultNotFoundError, VaultPermissionDeniedError, } from "./vault-client.js";
8
- let hqRoot;
9
- afterEach(() => {
10
- if (hqRoot) {
11
- fs.rmSync(hqRoot, { recursive: true, force: true });
12
- hqRoot = undefined;
13
- }
14
- });
15
- /** The stock manifest shipped to a fresh HQ root: header comment, no companies. */
16
- const EMPTY_MANIFEST_TEMPLATE = `# HQ company manifest.
17
- # Source of truth for which company slugs this HQ root routes.
18
- # Edited by humans; reconciled by hq-sync. Keep this header.
19
- companies: {}
20
- `;
21
- /** Far enough in the past that any rewrite is unmistakable in the mtime. */
22
- const FROZEN_MTIME = new Date("2020-01-01T00:00:00.000Z");
23
- function makeHqRoot() {
24
- const root = fs.mkdtempSync(path.join(os.tmpdir(), "hq-manifest-reconcile-"));
25
- fs.mkdirSync(path.join(root, "companies"), { recursive: true });
26
- return root;
27
- }
28
- function manifestPathFor(root) {
29
- return path.join(root, "companies", "manifest.yaml");
30
- }
31
- function writeManifest(root, contents) {
32
- const manifestPath = manifestPathFor(root);
33
- fs.writeFileSync(manifestPath, contents, "utf8");
34
- fs.utimesSync(manifestPath, FROZEN_MTIME, FROZEN_MTIME);
35
- return manifestPath;
36
- }
37
- function readCompanies(manifestPath) {
38
- const parsed = yaml.load(fs.readFileSync(manifestPath, "utf8"));
39
- return parsed.companies ?? {};
40
- }
41
- /** Asserts the file was not touched at all — contents AND mtime. */
42
- function expectUntouched(manifestPath, before) {
43
- expect(fs.readFileSync(manifestPath, "utf8")).toBe(before);
44
- expect(fs.statSync(manifestPath).mtimeMs).toBe(FROZEN_MTIME.getTime());
45
- }
46
- describe("reconcileManifest", () => {
47
- it("inserts a company into the stock empty manifest template", () => {
48
- hqRoot = makeHqRoot();
49
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
50
- const result = reconcileManifest(hqRoot, [
51
- {
52
- slug: "acme",
53
- uid: "cmp_acme",
54
- name: "Acme Inc",
55
- bucketName: "hq-vault-cmp-acme",
56
- },
57
- ]);
58
- expect(result).toEqual({
59
- written: true,
60
- added: ["acme"],
61
- updated: [],
62
- skipped: [],
63
- });
64
- expect(readCompanies(manifestPath)).toEqual({
65
- acme: {
66
- cloud_uid: "cmp_acme",
67
- name: "Acme Inc",
68
- bucket_name: "hq-vault-cmp-acme",
69
- },
70
- });
71
- });
72
- it("inserts alongside an existing company without disturbing it", () => {
73
- hqRoot = makeHqRoot();
74
- const manifestPath = writeManifest(hqRoot, `version: 3\ncompanies:\n incumbent:\n name: Incumbent\n cloud_uid: cmp_incumbent\n bucket_name: hq-vault-cmp-incumbent\n`);
75
- const result = reconcileManifest(hqRoot, [
76
- { slug: "joiner", uid: "cmp_joiner", name: "Joiner", bucketName: "hq-vault-cmp-joiner" },
77
- ]);
78
- expect(result.written).toBe(true);
79
- expect(result.added).toEqual(["joiner"]);
80
- expect(result.updated).toEqual([]);
81
- expect(readCompanies(manifestPath)).toEqual({
82
- incumbent: {
83
- name: "Incumbent",
84
- cloud_uid: "cmp_incumbent",
85
- bucket_name: "hq-vault-cmp-incumbent",
86
- },
87
- joiner: {
88
- cloud_uid: "cmp_joiner",
89
- name: "Joiner",
90
- bucket_name: "hq-vault-cmp-joiner",
91
- },
92
- });
93
- // Unrelated top-level state survives the merge.
94
- expect(yaml.load(fs.readFileSync(manifestPath, "utf8")).version).toBe(3);
95
- });
96
- it("performs no write at all when every target is already current", () => {
97
- hqRoot = makeHqRoot();
98
- // The header comment is the canary: js-yaml cannot round-trip comments, so
99
- // any rewrite would silently drop it and churn the personal-vault copy.
100
- const contents = `# Keep this header comment.\ncompanies:\n acme:\n name: Acme Inc\n cloud_uid: cmp_acme\n bucket_name: hq-vault-cmp-acme\n`;
101
- const manifestPath = writeManifest(hqRoot, contents);
102
- const result = reconcileManifest(hqRoot, [
103
- { slug: "acme", uid: "cmp_acme", name: "Acme Inc", bucketName: "hq-vault-cmp-acme" },
104
- ]);
105
- expect(result).toEqual({ written: false, added: [], updated: [], skipped: [] });
106
- expectUntouched(manifestPath, contents);
107
- expect(fs.readFileSync(manifestPath, "utf8")).toContain("# Keep this header comment.");
108
- });
109
- it("reports a partial drift as an update and leaves untouched fields alone", () => {
110
- hqRoot = makeHqRoot();
111
- const manifestPath = writeManifest(hqRoot, `companies:\n acme:\n name: Acme Inc\n cloud_uid: cmp_acme\n bucket_name: hq-vault-stale\n`);
112
- const result = reconcileManifest(hqRoot, [
113
- { slug: "acme", uid: "cmp_acme", name: "Acme Inc", bucketName: "hq-vault-cmp-acme" },
114
- ]);
115
- expect(result).toEqual({
116
- written: true,
117
- added: [],
118
- updated: ["acme"],
119
- skipped: [],
120
- });
121
- expect(readCompanies(manifestPath).acme).toEqual({
122
- name: "Acme Inc",
123
- cloud_uid: "cmp_acme",
124
- bucket_name: "hq-vault-cmp-acme",
125
- });
126
- });
127
- it("preserves unknown keys on both the untouched and the updated company", () => {
128
- hqRoot = makeHqRoot();
129
- const manifestPath = writeManifest(hqRoot, [
130
- "companies:",
131
- " bystander:",
132
- " name: Bystander",
133
- " cloud_uid: cmp_bystander",
134
- " repos:",
135
- " - repos/private/bystander",
136
- " workers:",
137
- " - designer",
138
- " qmd_collections:",
139
- " - bystander-docs",
140
- " acme:",
141
- " name: Acme Inc",
142
- " cloud_uid: cmp_acme",
143
- " bucket_name: hq-vault-stale",
144
- " repos:",
145
- " - repos/private/acme",
146
- " workers:",
147
- " - backend-dev",
148
- " qmd_collections:",
149
- " - acme-docs",
150
- "",
151
- ].join("\n"));
152
- const result = reconcileManifest(hqRoot, [
153
- { slug: "acme", uid: "cmp_acme", name: "Acme Inc", bucketName: "hq-vault-cmp-acme" },
154
- ]);
155
- expect(result.updated).toEqual(["acme"]);
156
- const companies = readCompanies(manifestPath);
157
- expect(companies.bystander).toEqual({
158
- name: "Bystander",
159
- cloud_uid: "cmp_bystander",
160
- repos: ["repos/private/bystander"],
161
- workers: ["designer"],
162
- qmd_collections: ["bystander-docs"],
163
- });
164
- expect(companies.acme).toEqual({
165
- name: "Acme Inc",
166
- cloud_uid: "cmp_acme",
167
- bucket_name: "hq-vault-cmp-acme",
168
- repos: ["repos/private/acme"],
169
- workers: ["backend-dev"],
170
- qmd_collections: ["acme-docs"],
171
- });
172
- });
173
- it("no-ops without throwing when the manifest cannot be parsed", () => {
174
- hqRoot = makeHqRoot();
175
- const contents = "companies:\n acme:\n - this: is\n not: valid yaml\n\t\tbad indent\n";
176
- const manifestPath = writeManifest(hqRoot, contents);
177
- let result;
178
- expect(() => {
179
- result = reconcileManifest(hqRoot, [
180
- { slug: "acme", uid: "cmp_acme", name: "Acme Inc", bucketName: "hq-vault-cmp-acme" },
181
- ]);
182
- }).not.toThrow();
183
- expect(result).toEqual({ written: false, added: [], updated: [], skipped: [] });
184
- expectUntouched(manifestPath, contents);
185
- });
186
- it("no-ops when the manifest is missing and the directory is not an HQ tree", () => {
187
- hqRoot = makeHqRoot();
188
- const manifestPath = manifestPathFor(hqRoot);
189
- expect(fs.existsSync(manifestPath)).toBe(false);
190
- const result = reconcileManifest(hqRoot, [
191
- { slug: "acme", uid: "cmp_acme", name: "Acme Inc", bucketName: "hq-vault-cmp-acme" },
192
- ]);
193
- expect(result).toEqual({ written: false, added: [], updated: [], skipped: [] });
194
- expect(fs.existsSync(manifestPath)).toBe(false);
195
- });
196
- describe("absent manifest on an HQ tree", () => {
197
- // Agent boxes build their tree with `hq rescue`, which never delivers
198
- // companies/manifest.yaml, and their personal leg is the agent's own
199
- // entity vault, which carries none either. Before this path existed the
200
- // reconciler silently no-op'd forever and `hq mesh daemon install`
201
- // (which requires the manifest to recognise an HQ root) failed on every
202
- // fresh agents-v2 box.
203
- for (const marker of ["core", ".claude", "personal"]) {
204
- it(`creates the manifest from the resolved targets when ${marker}/ marks an HQ tree`, () => {
205
- hqRoot = makeHqRoot();
206
- fs.mkdirSync(path.join(hqRoot, marker), { recursive: true });
207
- fs.mkdirSync(path.join(hqRoot, "companies", "acme"), { recursive: true });
208
- const manifestPath = manifestPathFor(hqRoot);
209
- expect(fs.existsSync(manifestPath)).toBe(false);
210
- const result = reconcileManifest(hqRoot, [
211
- { slug: "acme", uid: "cmp_acme", name: "Acme Inc", bucketName: "hq-vault-cmp-acme" },
212
- ]);
213
- expect(result).toEqual({ written: true, added: ["acme"], updated: [], skipped: [] });
214
- expect(readCompanies(manifestPath)).toEqual({
215
- acme: { cloud_uid: "cmp_acme", name: "Acme Inc", bucket_name: "hq-vault-cmp-acme" },
216
- });
217
- expect(fs.readdirSync(path.join(hqRoot, "companies")).filter((f) => f.startsWith(".manifest-"))).toEqual([]);
218
- });
219
- }
220
- it("is a no-op on replay once the manifest has been created", () => {
221
- hqRoot = makeHqRoot();
222
- fs.mkdirSync(path.join(hqRoot, "core"), { recursive: true });
223
- fs.mkdirSync(path.join(hqRoot, "companies", "acme"), { recursive: true });
224
- const targets = [
225
- { slug: "acme", uid: "cmp_acme", name: "Acme Inc", bucketName: "hq-vault-cmp-acme" },
226
- ];
227
- expect(reconcileManifest(hqRoot, targets).written).toBe(true);
228
- const manifestPath = manifestPathFor(hqRoot);
229
- const contents = fs.readFileSync(manifestPath, "utf8");
230
- fs.utimesSync(manifestPath, FROZEN_MTIME, FROZEN_MTIME);
231
- expect(reconcileManifest(hqRoot, targets)).toEqual({
232
- written: false,
233
- added: [],
234
- updated: [],
235
- skipped: [],
236
- });
237
- expectUntouched(manifestPath, contents);
238
- });
239
- it("treats an empty manifest file as absent and populates it", () => {
240
- hqRoot = makeHqRoot();
241
- fs.mkdirSync(path.join(hqRoot, "core"), { recursive: true });
242
- fs.mkdirSync(path.join(hqRoot, "companies", "acme"), { recursive: true });
243
- const manifestPath = writeManifest(hqRoot, "\n \n");
244
- const result = reconcileManifest(hqRoot, [{ slug: "acme", uid: "cmp_acme" }]);
245
- expect(result).toEqual({ written: true, added: ["acme"], updated: [], skipped: [] });
246
- expect(readCompanies(manifestPath)).toEqual({ acme: { cloud_uid: "cmp_acme" } });
247
- });
248
- it("still refuses to replace an unparseable manifest on an HQ tree", () => {
249
- hqRoot = makeHqRoot();
250
- fs.mkdirSync(path.join(hqRoot, "core"), { recursive: true });
251
- fs.mkdirSync(path.join(hqRoot, "companies", "acme"), { recursive: true });
252
- const contents = "companies: [\n broken: {\n";
253
- const manifestPath = writeManifest(hqRoot, contents);
254
- const result = reconcileManifest(hqRoot, [{ slug: "acme", uid: "cmp_acme" }]);
255
- expect(result).toEqual({ written: false, added: [], updated: [], skipped: [] });
256
- expectUntouched(manifestPath, contents);
257
- });
258
- it("does not create a manifest when the only marker is a file, not a directory", () => {
259
- hqRoot = makeHqRoot();
260
- fs.writeFileSync(path.join(hqRoot, "core"), "not a directory");
261
- fs.mkdirSync(path.join(hqRoot, "companies", "acme"), { recursive: true });
262
- const result = reconcileManifest(hqRoot, [{ slug: "acme", uid: "cmp_acme" }]);
263
- expect(result).toEqual({ written: false, added: [], updated: [], skipped: [] });
264
- expect(fs.existsSync(manifestPathFor(hqRoot))).toBe(false);
265
- });
266
- it("does not create a manifest when every target is unsafe", () => {
267
- hqRoot = makeHqRoot();
268
- fs.mkdirSync(path.join(hqRoot, "core"), { recursive: true });
269
- const result = reconcileManifest(hqRoot, [{ slug: "../escape", uid: "cmp_escape" }]);
270
- expect(result).toEqual({ written: false, added: [], updated: [], skipped: ["../escape"] });
271
- expect(fs.existsSync(manifestPathFor(hqRoot))).toBe(false);
272
- });
273
- });
274
- it("no-ops when `companies` is present but is not a mapping", () => {
275
- hqRoot = makeHqRoot();
276
- const contents = "companies:\n - acme\n - beta\n";
277
- const manifestPath = writeManifest(hqRoot, contents);
278
- const result = reconcileManifest(hqRoot, [
279
- { slug: "acme", uid: "cmp_acme", name: "Acme Inc", bucketName: "hq-vault-cmp-acme" },
280
- ]);
281
- expect(result.written).toBe(false);
282
- expectUntouched(manifestPath, contents);
283
- });
284
- it("skips a slug whose existing entry is not a mapping", () => {
285
- hqRoot = makeHqRoot();
286
- const contents = "companies:\n acme: not-a-mapping\n";
287
- const manifestPath = writeManifest(hqRoot, contents);
288
- const result = reconcileManifest(hqRoot, [
289
- { slug: "acme", uid: "cmp_acme", name: "Acme Inc", bucketName: "hq-vault-cmp-acme" },
290
- ]);
291
- expect(result).toEqual({ written: false, added: [], updated: [], skipped: ["acme"] });
292
- expectUntouched(manifestPath, contents);
293
- });
294
- describe("path traversal guard", () => {
295
- const unsafeSlugs = [
296
- ["a forward-slash path", "nested/evil"],
297
- ["a backslash path", "nested\\evil"],
298
- ["the current directory", "."],
299
- ["the parent directory", ".."],
300
- ["a slug resolving outside the companies dir", "../escape"],
301
- ["an empty slug", ""],
302
- ["the __proto__ prototype key", "__proto__"],
303
- ["the constructor prototype key", "constructor"],
304
- ["the prototype prototype key", "prototype"],
305
- ];
306
- for (const [label, slug] of unsafeSlugs) {
307
- it(`rejects ${label} without writing`, () => {
308
- hqRoot = makeHqRoot();
309
- const contents = EMPTY_MANIFEST_TEMPLATE;
310
- const manifestPath = writeManifest(hqRoot, contents);
311
- const result = reconcileManifest(hqRoot, [
312
- { slug, uid: "cmp_evil", name: "Evil", bucketName: "hq-vault-cmp-evil" },
313
- ]);
314
- expect(result.skipped).toEqual([slug]);
315
- expect(result.written).toBe(false);
316
- expect(result.added).toEqual([]);
317
- expect(result.updated).toEqual([]);
318
- expectUntouched(manifestPath, contents);
319
- expect(readCompanies(manifestPath)).toEqual({});
320
- });
321
- }
322
- });
323
- it("does not fall into a write loop on a __proto__ slug", () => {
324
- // Regression: `__proto__` read back as Object.prototype, so it passed the
325
- // non-mapping skip, always reported drift, and never persisted through
326
- // yaml.dump — a rewrite on every run of a vault-synced file, forever.
327
- hqRoot = makeHqRoot();
328
- const contents = EMPTY_MANIFEST_TEMPLATE;
329
- const manifestPath = writeManifest(hqRoot, contents);
330
- const targets = [{ slug: "__proto__", uid: "cmp_evil", name: "Evil" }];
331
- for (let run = 0; run < 3; run += 1) {
332
- const result = reconcileManifest(hqRoot, targets);
333
- expect(result.written).toBe(false);
334
- expect(result.skipped).toEqual(["__proto__"]);
335
- expectUntouched(manifestPath, contents);
336
- }
337
- // The prototype itself must be clean — no pollution leaked out.
338
- expect({}.cloud_uid).toBeUndefined();
339
- expect(readCompanies(manifestPath)).toEqual({});
340
- });
341
- it("no-ops when `companies` is a timestamp scalar rather than a mapping", () => {
342
- // js-yaml parses this into a Date, which a `typeof value === "object"`
343
- // check would have accepted as the company map.
344
- hqRoot = makeHqRoot();
345
- const contents = "companies: 2026-01-01\n";
346
- const manifestPath = writeManifest(hqRoot, contents);
347
- const result = reconcileManifest(hqRoot, [
348
- { slug: "acme", uid: "cmp_acme", name: "Acme Inc", bucketName: "hq-vault-cmp-acme" },
349
- ]);
350
- expect(result).toEqual({ written: false, added: [], updated: [], skipped: [] });
351
- expectUntouched(manifestPath, contents);
352
- });
353
- it("no-ops when `companies` is a plain string scalar", () => {
354
- hqRoot = makeHqRoot();
355
- const contents = "companies: nonsense\n";
356
- const manifestPath = writeManifest(hqRoot, contents);
357
- expect(reconcileManifest(hqRoot, [{ slug: "acme", uid: "cmp_acme" }]).written).toBe(false);
358
- expectUntouched(manifestPath, contents);
359
- });
360
- it("skips a timestamp entry without destroying its value", () => {
361
- // A Date entry used to slip past the non-mapping skip and then be silently
362
- // flattened to {} by the object spread.
363
- hqRoot = makeHqRoot();
364
- const contents = "companies:\n acme: 2026-01-01\n";
365
- const manifestPath = writeManifest(hqRoot, contents);
366
- const result = reconcileManifest(hqRoot, [
367
- { slug: "acme", uid: "cmp_acme", name: "Acme Inc", bucketName: "hq-vault-cmp-acme" },
368
- ]);
369
- expect(result).toEqual({ written: false, added: [], updated: [], skipped: ["acme"] });
370
- expectUntouched(manifestPath, contents);
371
- });
372
- it("treats a bare `companies:` key as an empty map and inserts into it", () => {
373
- hqRoot = makeHqRoot();
374
- const manifestPath = writeManifest(hqRoot, "version: 3\ncompanies:\n");
375
- const result = reconcileManifest(hqRoot, [{ slug: "acme", uid: "cmp_acme" }]);
376
- expect(result.written).toBe(true);
377
- expect(result.added).toEqual(["acme"]);
378
- expect(readCompanies(manifestPath)).toEqual({ acme: { cloud_uid: "cmp_acme" } });
379
- });
380
- it("does not write when duplicate slugs produce no net change", () => {
381
- // Regression: a sticky change flag was flipped on by the first target and
382
- // back off by the second, leaving it true while content was identical.
383
- hqRoot = makeHqRoot();
384
- const contents = "companies:\n acme:\n cloud_uid: cmp_b\n";
385
- const manifestPath = writeManifest(hqRoot, contents);
386
- const result = reconcileManifest(hqRoot, [
387
- { slug: "acme", uid: "cmp_a" },
388
- { slug: "acme", uid: "cmp_b" },
389
- ]);
390
- expect(result.written).toBe(false);
391
- expect(result.updated).toEqual([]);
392
- expectUntouched(manifestPath, contents);
393
- });
394
- it("applies last-wins for duplicate slugs that do change the file", () => {
395
- hqRoot = makeHqRoot();
396
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
397
- const result = reconcileManifest(hqRoot, [
398
- { slug: "acme", uid: "cmp_a" },
399
- { slug: "acme", uid: "cmp_b" },
400
- ]);
401
- expect(result.written).toBe(true);
402
- expect(result.added).toEqual(["acme"]);
403
- expect(readCompanies(manifestPath)).toEqual({ acme: { cloud_uid: "cmp_b" } });
404
- });
405
- it("leaves no temp file behind when the write fails", () => {
406
- hqRoot = makeHqRoot();
407
- const companiesDir = path.join(hqRoot, "companies");
408
- writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
409
- // Read-only directory: the temp write itself fails, and on platforms where
410
- // it does not, the rename over the target does.
411
- fs.chmodSync(companiesDir, 0o500);
412
- try {
413
- expect(() => reconcileManifest(hqRoot, [{ slug: "acme", uid: "cmp_acme" }])).toThrow();
414
- const strays = fs.readdirSync(companiesDir).filter((n) => n.startsWith(".manifest-"));
415
- expect(strays).toEqual([]);
416
- }
417
- finally {
418
- fs.chmodSync(companiesDir, 0o700);
419
- }
420
- });
421
- it("documents that the first genuine write drops the manifest header comment", () => {
422
- // yaml.dump cannot round-trip comments. This loss is accepted and is exactly
423
- // why skip-if-unchanged must prevent every needless rewrite.
424
- hqRoot = makeHqRoot();
425
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
426
- expect(fs.readFileSync(manifestPath, "utf8")).toContain("# HQ company manifest.");
427
- expect(reconcileManifest(hqRoot, [{ slug: "acme", uid: "cmp_acme" }]).written).toBe(true);
428
- const after = fs.readFileSync(manifestPath, "utf8");
429
- expect(after).not.toContain("# HQ company manifest.");
430
- // ...and the very next run must not touch it again.
431
- const replay = reconcileManifest(hqRoot, [{ slug: "acme", uid: "cmp_acme" }]);
432
- expect(replay.written).toBe(false);
433
- expect(fs.readFileSync(manifestPath, "utf8")).toBe(after);
434
- });
435
- it("omits bucket_name entirely when the target has no bucket", () => {
436
- hqRoot = makeHqRoot();
437
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
438
- const result = reconcileManifest(hqRoot, [
439
- { slug: "joiner", uid: "cmp_joiner", name: "Joiner Inc" },
440
- ]);
441
- expect(result.added).toEqual(["joiner"]);
442
- const entry = readCompanies(manifestPath).joiner;
443
- expect("bucket_name" in entry).toBe(false);
444
- expect(entry).toEqual({ cloud_uid: "cmp_joiner", name: "Joiner Inc" });
445
- expect(fs.readFileSync(manifestPath, "utf8")).not.toContain("bucket_name");
446
- });
447
- it("omits name entirely when the target has no name", () => {
448
- hqRoot = makeHqRoot();
449
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
450
- const result = reconcileManifest(hqRoot, [
451
- { slug: "joiner", uid: "cmp_joiner", bucketName: "hq-vault-cmp-joiner" },
452
- ]);
453
- expect(result.added).toEqual(["joiner"]);
454
- const entry = readCompanies(manifestPath).joiner;
455
- expect("name" in entry).toBe(false);
456
- expect(entry).toEqual({ cloud_uid: "cmp_joiner", bucket_name: "hq-vault-cmp-joiner" });
457
- // No `name:` key line at all (`bucket_name:` must not satisfy this).
458
- expect(fs.readFileSync(manifestPath, "utf8")).not.toMatch(/^\s*name:/m);
459
- });
460
- it("treats empty-string name and bucket as absent rather than writing blanks", () => {
461
- hqRoot = makeHqRoot();
462
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
463
- const result = reconcileManifest(hqRoot, [
464
- { slug: "joiner", uid: "cmp_joiner", name: "", bucketName: "" },
465
- ]);
466
- expect(result).toEqual({
467
- written: true,
468
- added: ["joiner"],
469
- updated: [],
470
- skipped: [],
471
- });
472
- const entry = readCompanies(manifestPath).joiner;
473
- expect("name" in entry).toBe(false);
474
- expect("bucket_name" in entry).toBe(false);
475
- expect(entry).toEqual({ cloud_uid: "cmp_joiner" });
476
- // An empty-string field must not read as drift on the replay, or the
477
- // manifest would be rewritten on every run.
478
- fs.utimesSync(manifestPath, FROZEN_MTIME, FROZEN_MTIME);
479
- const replay = reconcileManifest(hqRoot, [
480
- { slug: "joiner", uid: "cmp_joiner", name: "", bucketName: "" },
481
- ]);
482
- expect(replay.written).toBe(false);
483
- expect(fs.statSync(manifestPath).mtimeMs).toBe(FROZEN_MTIME.getTime());
484
- });
485
- it("still writes cloud_uid for a company that has neither name nor bucket", () => {
486
- hqRoot = makeHqRoot();
487
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
488
- const result = reconcileManifest(hqRoot, [{ slug: "joiner", uid: "cmp_joiner" }]);
489
- expect(result.written).toBe(true);
490
- expect(result.added).toEqual(["joiner"]);
491
- expect(readCompanies(manifestPath).joiner).toEqual({ cloud_uid: "cmp_joiner" });
492
- });
493
- it("never deletes an existing key just because the target omits it", () => {
494
- hqRoot = makeHqRoot();
495
- const manifestPath = writeManifest(hqRoot, `companies:\n acme:\n name: Acme Inc\n cloud_uid: cmp_old\n bucket_name: hq-vault-cmp-acme\n`);
496
- const result = reconcileManifest(hqRoot, [{ slug: "acme", uid: "cmp_acme" }]);
497
- expect(result.updated).toEqual(["acme"]);
498
- expect(readCompanies(manifestPath).acme).toEqual({
499
- name: "Acme Inc",
500
- cloud_uid: "cmp_acme",
501
- bucket_name: "hq-vault-cmp-acme",
502
- });
503
- });
504
- it("reports adds, updates and skips together in one pass", () => {
505
- hqRoot = makeHqRoot();
506
- const manifestPath = writeManifest(hqRoot, [
507
- "companies:",
508
- " current:",
509
- " cloud_uid: cmp_current",
510
- " drifted:",
511
- " cloud_uid: cmp_stale",
512
- " broken: not-a-mapping",
513
- "",
514
- ].join("\n"));
515
- const result = reconcileManifest(hqRoot, [
516
- { slug: "fresh", uid: "cmp_fresh" },
517
- { slug: "drifted", uid: "cmp_drifted" },
518
- { slug: "current", uid: "cmp_current" },
519
- { slug: "broken", uid: "cmp_broken" },
520
- { slug: "../escape", uid: "cmp_escape" },
521
- ]);
522
- expect(result).toEqual({
523
- written: true,
524
- added: ["fresh"],
525
- updated: ["drifted"],
526
- skipped: ["../escape", "broken"],
527
- });
528
- const companies = readCompanies(manifestPath);
529
- expect(companies.current).toEqual({ cloud_uid: "cmp_current" });
530
- expect(companies.drifted).toEqual({ cloud_uid: "cmp_drifted" });
531
- expect(companies.fresh).toEqual({ cloud_uid: "cmp_fresh" });
532
- expect(companies.broken).toBe("not-a-mapping");
533
- });
534
- });
535
- describe("reconcileCompanyManifest", () => {
536
- it("atomically restores one successful cloud entry after the personal leg without replacing existing manifest state", async () => {
537
- hqRoot = fs.mkdtempSync(path.join(os.tmpdir(), "hq-manifest-reconcile-"));
538
- const companiesDir = path.join(hqRoot, "companies");
539
- fs.mkdirSync(path.join(companiesDir, "acme"), { recursive: true });
540
- fs.mkdirSync(path.join(companiesDir, "failed"), { recursive: true });
541
- fs.mkdirSync(path.join(companiesDir, "deleted"), { recursive: true });
542
- // This is the older manifest the personal-vault leg pulled after the
543
- // cloud-company legs completed. The final merge must retain this state and
544
- // add only the live, successful cloud target.
545
- const manifestPath = path.join(companiesDir, "manifest.yaml");
546
- fs.writeFileSync(manifestPath, `version: 3\nsettings:\n keep: true\ncompanies:\n local-only:\n name: Local Only\n repos:\n - repos/local\n preserved:\n name: Keep Me\n cloud_uid: cmp_preserved\n`);
547
- const entities = {
548
- cmp_acme: {
549
- uid: "cmp_acme",
550
- slug: "acme",
551
- type: "company",
552
- status: "active",
553
- name: "Acme Inc",
554
- bucketName: "hq-vault-cmp-acme",
555
- createdAt: "2026-01-01T00:00:00Z",
556
- },
557
- cmp_failed: {
558
- uid: "cmp_failed",
559
- slug: "failed",
560
- type: "company",
561
- status: "active",
562
- name: "Failed Corp",
563
- bucketName: "hq-vault-cmp-failed",
564
- createdAt: "2026-01-01T00:00:00Z",
565
- },
566
- cmp_deleted: {
567
- uid: "cmp_deleted",
568
- slug: "deleted",
569
- type: "company",
570
- status: "deleted",
571
- name: "Deleted Corp",
572
- bucketName: "hq-vault-cmp-deleted",
573
- createdAt: "2026-01-01T00:00:00Z",
574
- },
575
- };
576
- const options = {
577
- hqRoot,
578
- targets: [
579
- { uid: "cmp_acme", slug: "acme" },
580
- { uid: "cmp_failed", slug: "failed" },
581
- { uid: "cmp_deleted", slug: "deleted" },
582
- { uid: "cmp_missing-directory", slug: "missing-directory" },
583
- { uid: "prs_me", slug: "personal", personalMode: true },
584
- ],
585
- completedCompanySlugs: new Set(["acme", "deleted", "missing-directory", "personal"]),
586
- getEntity: async (uid) => {
587
- const entity = entities[uid];
588
- if (!entity)
589
- throw new Error("entity not found");
590
- return entity;
591
- },
592
- };
593
- await reconcileCompanyManifest(options);
594
- const firstWrite = fs.readFileSync(manifestPath, "utf8");
595
- // Freeze the mtime so the replay cannot pass by coincidence: identical bytes
596
- // written a second time would still bump mtime, and mtime is what the sync
597
- // layer keys on, so a byte comparison alone would miss a real conflict loop.
598
- fs.utimesSync(manifestPath, FROZEN_MTIME, FROZEN_MTIME);
599
- const replay = await reconcileCompanyManifest(options);
600
- expect(replay.written).toBe(false);
601
- expect(fs.readFileSync(manifestPath, "utf8")).toBe(firstWrite);
602
- expect(fs.statSync(manifestPath).mtimeMs).toBe(FROZEN_MTIME.getTime());
603
- expect(yaml.load(firstWrite)).toEqual({
604
- version: 3,
605
- settings: { keep: true },
606
- companies: {
607
- "local-only": {
608
- name: "Local Only",
609
- repos: ["repos/local"],
610
- },
611
- preserved: {
612
- name: "Keep Me",
613
- cloud_uid: "cmp_preserved",
614
- },
615
- acme: {
616
- name: "Acme Inc",
617
- cloud_uid: "cmp_acme",
618
- bucket_name: "hq-vault-cmp-acme",
619
- },
620
- },
621
- });
622
- });
623
- it("creates the manifest on an agent box whose tree was built by `hq rescue` (no manifest, plan-carried target)", async () => {
624
- hqRoot = makeHqRoot();
625
- fs.mkdirSync(path.join(hqRoot, "core"), { recursive: true });
626
- fs.mkdirSync(path.join(hqRoot, ".claude"), { recursive: true });
627
- fs.mkdirSync(path.join(hqRoot, "personal"), { recursive: true });
628
- fs.mkdirSync(path.join(hqRoot, "companies", "_template"), { recursive: true });
629
- fs.mkdirSync(path.join(hqRoot, "companies", "indigo"), { recursive: true });
630
- const manifestPath = manifestPathFor(hqRoot);
631
- expect(fs.existsSync(manifestPath)).toBe(false);
632
- const diagnostics = [];
633
- const result = await reconcileCompanyManifest({
634
- hqRoot,
635
- targets: [
636
- {
637
- uid: "cmp_indigo",
638
- slug: "indigo",
639
- name: "Indigo",
640
- bucketName: "hq-vault-cmp-indigo",
641
- entityType: "company",
642
- entityStatus: "active",
643
- },
644
- { uid: "agt_self", slug: "personal", personalMode: true },
645
- ],
646
- completedCompanySlugs: new Set(["indigo", "personal"]),
647
- reportDiagnostic: (diagnostic) => diagnostics.push(diagnostic),
648
- });
649
- expect(result).toEqual({ written: true, added: ["indigo"], updated: [], skipped: [] });
650
- expect(readCompanies(manifestPath)).toEqual({
651
- indigo: { cloud_uid: "cmp_indigo", name: "Indigo", bucket_name: "hq-vault-cmp-indigo" },
652
- });
653
- expect(diagnostics).toEqual([]);
654
- });
655
- it("returns the reconcile result on the insert path and again on the no-op replay", async () => {
656
- hqRoot = makeHqRoot();
657
- fs.mkdirSync(path.join(hqRoot, "companies", "acme"), { recursive: true });
658
- writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
659
- const options = {
660
- hqRoot,
661
- targets: [{ uid: "cmp_acme", slug: "acme" }],
662
- completedCompanySlugs: new Set(["acme"]),
663
- getEntity: async () => ({
664
- uid: "cmp_acme",
665
- slug: "acme",
666
- type: "company",
667
- status: "active",
668
- name: "Acme Inc",
669
- bucketName: "hq-vault-cmp-acme",
670
- createdAt: "2026-01-01T00:00:00Z",
671
- }),
672
- };
673
- expect(await reconcileCompanyManifest(options)).toEqual({
674
- written: true,
675
- added: ["acme"],
676
- updated: [],
677
- skipped: [],
678
- });
679
- expect(await reconcileCompanyManifest(options)).toEqual({
680
- written: false,
681
- added: [],
682
- updated: [],
683
- skipped: [],
684
- });
685
- });
686
- it("returns an empty result when no target is eligible", async () => {
687
- hqRoot = makeHqRoot();
688
- writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
689
- expect(await reconcileCompanyManifest({
690
- hqRoot,
691
- targets: [{ uid: "prs_me", slug: "personal", personalMode: true }],
692
- completedCompanySlugs: new Set(["personal"]),
693
- getEntity: async () => {
694
- throw new Error("should not be called");
695
- },
696
- })).toEqual({ written: false, added: [], updated: [], skipped: [] });
697
- });
698
- it("keeps a company that has no name or bucket instead of dropping it", async () => {
699
- hqRoot = makeHqRoot();
700
- fs.mkdirSync(path.join(hqRoot, "companies", "joiner"), { recursive: true });
701
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
702
- const options = {
703
- hqRoot,
704
- targets: [{ uid: "cmp_joiner", slug: "joiner" }],
705
- completedCompanySlugs: new Set(["joiner"]),
706
- getEntity: async () => ({
707
- uid: "cmp_joiner",
708
- slug: "joiner",
709
- type: "company",
710
- status: "active",
711
- createdAt: "2026-01-01T00:00:00Z",
712
- }),
713
- };
714
- const result = await reconcileCompanyManifest(options);
715
- expect(result.written).toBe(true);
716
- expect(result.added).toEqual(["joiner"]);
717
- const entry = readCompanies(manifestPath).joiner;
718
- expect(entry).toEqual({ cloud_uid: "cmp_joiner" });
719
- expect("name" in entry).toBe(false);
720
- expect("bucket_name" in entry).toBe(false);
721
- // The highest-risk idempotency property: a target missing both optional
722
- // fields must not re-report drift forever.
723
- const after = fs.readFileSync(manifestPath, "utf8");
724
- const mtime = fs.statSync(manifestPath).mtimeMs;
725
- expect((await reconcileCompanyManifest(options)).written).toBe(false);
726
- expect((await reconcileCompanyManifest(options)).written).toBe(false);
727
- expect(fs.readFileSync(manifestPath, "utf8")).toBe(after);
728
- expect(fs.statSync(manifestPath).mtimeMs).toBe(mtime);
729
- });
730
- // -------------------------------------------------------------------------
731
- // US-002 — plan-carried path (no `getEntity`). This is the shape the
732
- // sync-runner uses: `buildFanoutPlan` already resolved the entity, so the
733
- // reconciler makes zero API calls and reads name/bucketName off the target.
734
- // -------------------------------------------------------------------------
735
- it("without getEntity: writes entries straight from the plan-carried target fields", async () => {
736
- hqRoot = makeHqRoot();
737
- fs.mkdirSync(path.join(hqRoot, "companies", "acme"), { recursive: true });
738
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
739
- const options = {
740
- hqRoot,
741
- targets: [
742
- {
743
- uid: "cmp_acme",
744
- slug: "acme",
745
- name: "Acme Inc",
746
- bucketName: "hq-vault-cmp-acme",
747
- entityType: "company",
748
- entityStatus: "active",
749
- },
750
- ],
751
- completedCompanySlugs: new Set(["acme"]),
752
- };
753
- expect(await reconcileCompanyManifest(options)).toEqual({
754
- written: true,
755
- added: ["acme"],
756
- updated: [],
757
- skipped: [],
758
- });
759
- expect(readCompanies(manifestPath).acme).toEqual({
760
- cloud_uid: "cmp_acme",
761
- name: "Acme Inc",
762
- bucket_name: "hq-vault-cmp-acme",
763
- });
764
- // Same idempotency contract as the getEntity path.
765
- const after = fs.readFileSync(manifestPath, "utf8");
766
- fs.utimesSync(manifestPath, FROZEN_MTIME, FROZEN_MTIME);
767
- expect((await reconcileCompanyManifest(options)).written).toBe(false);
768
- expectUntouched(manifestPath, after);
769
- });
770
- it("without getEntity: still writes a target that carries neither name nor bucketName", async () => {
771
- hqRoot = makeHqRoot();
772
- fs.mkdirSync(path.join(hqRoot, "companies", "joiner"), { recursive: true });
773
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
774
- const result = await reconcileCompanyManifest({
775
- hqRoot,
776
- targets: [
777
- {
778
- uid: "cmp_joiner",
779
- slug: "joiner",
780
- entityType: "company",
781
- entityStatus: "active",
782
- },
783
- ],
784
- completedCompanySlugs: new Set(["joiner"]),
785
- });
786
- expect(result.written).toBe(true);
787
- expect(readCompanies(manifestPath).joiner).toEqual({ cloud_uid: "cmp_joiner" });
788
- });
789
- it("without getEntity: keeps every eligibility filter — personal, incomplete, and unmaterialized targets are skipped", async () => {
790
- hqRoot = makeHqRoot();
791
- fs.mkdirSync(path.join(hqRoot, "companies", "acme"), { recursive: true });
792
- fs.mkdirSync(path.join(hqRoot, "companies", "incomplete"), { recursive: true });
793
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
794
- const result = await reconcileCompanyManifest({
795
- hqRoot,
796
- targets: [
797
- {
798
- uid: "cmp_acme",
799
- slug: "acme",
800
- bucketName: "hq-vault-cmp-acme",
801
- entityType: "company",
802
- entityStatus: "active",
803
- },
804
- // Completed and live, but never materialized a directory on disk.
805
- {
806
- uid: "cmp_ghost",
807
- slug: "ghost",
808
- bucketName: "hq-vault-cmp-ghost",
809
- entityType: "company",
810
- entityStatus: "active",
811
- },
812
- // On disk and live, but its fanout leg did not complete.
813
- {
814
- uid: "cmp_incomplete",
815
- slug: "incomplete",
816
- entityType: "company",
817
- entityStatus: "active",
818
- },
819
- // Personal vault — never a manifest entry, even if it completed.
820
- { uid: "prs_me", slug: "personal", personalMode: true },
821
- ],
822
- completedCompanySlugs: new Set(["acme", "ghost", "personal"]),
823
- });
824
- expect(result).toEqual({
825
- written: true,
826
- added: ["acme"],
827
- updated: [],
828
- skipped: [],
829
- });
830
- expect(Object.keys(readCompanies(manifestPath))).toEqual(["acme"]);
831
- });
832
- // Removing the per-target `entity.get` round trip (US-002) must not remove the
833
- // liveness GUARANTEE it provided. Without an entity resolver the only evidence
834
- // left is what the plan captured, so a target that cannot prove it was an
835
- // active company at plan time must fail closed.
836
- // Entity-probe failures all skip the target, but they are not all equally
837
- // routine. "The company is gone" is expected; "the resolver is broken" is the
838
- // failure mode that would otherwise masquerade as "joiners never get manifest
839
- // entries" — the exact bug this module exists to prevent.
840
- it("stays silent when a probe fails for the ordinary reasons (404 / 403)", async () => {
841
- hqRoot = makeHqRoot();
842
- fs.mkdirSync(path.join(hqRoot, "companies", "gone"), { recursive: true });
843
- fs.mkdirSync(path.join(hqRoot, "companies", "forbidden"), { recursive: true });
844
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
845
- const diagnostics = [];
846
- const result = await reconcileCompanyManifest({
847
- hqRoot,
848
- targets: [
849
- { uid: "cmp_gone", slug: "gone" },
850
- { uid: "cmp_forbidden", slug: "forbidden" },
851
- ],
852
- completedCompanySlugs: new Set(["gone", "forbidden"]),
853
- getEntity: (uid) => uid === "cmp_gone"
854
- ? Promise.reject(new VaultNotFoundError("company deleted"))
855
- : Promise.reject(new VaultPermissionDeniedError("no longer a member")),
856
- reportDiagnostic: (d) => diagnostics.push(d),
857
- });
858
- expect(result).toEqual({ written: false, added: [], updated: [], skipped: [] });
859
- expect(diagnostics).toEqual([]);
860
- expectUntouched(manifestPath, EMPTY_MANIFEST_TEMPLATE);
861
- });
862
- it("reports an unexpected probe failure instead of silently skipping the target", async () => {
863
- hqRoot = makeHqRoot();
864
- fs.mkdirSync(path.join(hqRoot, "companies", "acme"), { recursive: true });
865
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
866
- const diagnostics = [];
867
- const result = await reconcileCompanyManifest({
868
- hqRoot,
869
- targets: [{ uid: "cmp_acme", slug: "acme" }],
870
- completedCompanySlugs: new Set(["acme"]),
871
- // A programming error, not a lookup answer.
872
- getEntity: () => Promise.reject(new TypeError("resolver is not a function")),
873
- reportDiagnostic: (d) => diagnostics.push(d),
874
- });
875
- // The target is still skipped — a broken probe never mints an entry.
876
- expect(result).toEqual({ written: false, added: [], updated: [], skipped: [] });
877
- expectUntouched(manifestPath, EMPTY_MANIFEST_TEMPLATE);
878
- // ...but it is no longer invisible.
879
- expect(diagnostics).toHaveLength(1);
880
- expect(diagnostics[0].event).toBe("runner.manifest_reconcile.entity_probe_failed");
881
- expect(diagnostics[0].err).toBeInstanceOf(TypeError);
882
- expect(diagnostics[0].context).toMatchObject({ slug: "acme", uid: "cmp_acme" });
883
- });
884
- it("without getEntity: fails closed when the plan carried no liveness evidence at all", async () => {
885
- hqRoot = makeHqRoot();
886
- fs.mkdirSync(path.join(hqRoot, "companies", "gone"), { recursive: true });
887
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
888
- expect(await reconcileCompanyManifest({
889
- hqRoot,
890
- // Completed, non-personal, directory on disk — every OTHER filter passes.
891
- targets: [{ uid: "cmp_deleted", slug: "gone" }],
892
- completedCompanySlugs: new Set(["gone"]),
893
- })).toEqual({ written: false, added: [], updated: [], skipped: [] });
894
- expect(readCompanies(manifestPath).gone).toBeUndefined();
895
- expectUntouched(manifestPath, EMPTY_MANIFEST_TEMPLATE);
896
- });
897
- it("without getEntity: refuses a target the plan saw as non-active or non-company", async () => {
898
- hqRoot = makeHqRoot();
899
- for (const slug of ["suspended", "deleted", "notacompany"]) {
900
- fs.mkdirSync(path.join(hqRoot, "companies", slug), { recursive: true });
901
- }
902
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
903
- expect(await reconcileCompanyManifest({
904
- hqRoot,
905
- targets: [
906
- {
907
- uid: "cmp_suspended",
908
- slug: "suspended",
909
- entityType: "company",
910
- entityStatus: "suspended",
911
- },
912
- {
913
- uid: "cmp_deleted",
914
- slug: "deleted",
915
- entityType: "company",
916
- entityStatus: "deleted",
917
- },
918
- {
919
- uid: "prs_person",
920
- slug: "notacompany",
921
- entityType: "person",
922
- entityStatus: "active",
923
- },
924
- ],
925
- completedCompanySlugs: new Set(["suspended", "deleted", "notacompany"]),
926
- })).toEqual({ written: false, added: [], updated: [], skipped: [] });
927
- expect(Object.keys(readCompanies(manifestPath))).toEqual([]);
928
- expectUntouched(manifestPath, EMPTY_MANIFEST_TEMPLATE);
929
- });
930
- it("without getEntity: no eligible target means no write at all", async () => {
931
- hqRoot = makeHqRoot();
932
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
933
- expect(await reconcileCompanyManifest({
934
- hqRoot,
935
- targets: [{ uid: "prs_me", slug: "personal", personalMode: true }],
936
- completedCompanySlugs: new Set(["personal"]),
937
- })).toEqual({ written: false, added: [], updated: [], skipped: [] });
938
- expectUntouched(manifestPath, EMPTY_MANIFEST_TEMPLATE);
939
- });
940
- async function reconcileWithProbeError(err) {
941
- hqRoot = makeHqRoot();
942
- fs.mkdirSync(path.join(hqRoot, "companies", "acme"), { recursive: true });
943
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
944
- const diagnostics = [];
945
- const result = await reconcileCompanyManifest({
946
- hqRoot,
947
- targets: [{ uid: "cmp_acme", slug: "acme" }],
948
- completedCompanySlugs: new Set(["acme"]),
949
- getEntity: () => Promise.reject(err),
950
- reportDiagnostic: (diagnostic) => diagnostics.push(diagnostic),
951
- });
952
- // Invariant across every case: skipped, nothing written, file untouched.
953
- expect(result).toEqual({ written: false, added: [], updated: [], skipped: [] });
954
- expectUntouched(manifestPath, EMPTY_MANIFEST_TEMPLATE);
955
- return { diagnostics, manifestPath };
956
- }
957
- it("with getEntity: a broken resolver (TypeError) is skipped AND reported", async () => {
958
- const { diagnostics } = await reconcileWithProbeError(new TypeError("client.entity.get is not a function"));
959
- expect(diagnostics).toHaveLength(1);
960
- expect(diagnostics[0].event).toBe("runner.manifest_reconcile.entity_probe_failed");
961
- expect(diagnostics[0].context).toMatchObject({ slug: "acme", uid: "cmp_acme" });
962
- expect(diagnostics[0].err).toBeInstanceOf(TypeError);
963
- });
964
- it("with getEntity: an ordinary not-found is skipped SILENTLY", async () => {
965
- const { diagnostics } = await reconcileWithProbeError(new VaultNotFoundError("company deleted"));
966
- expect(diagnostics).toEqual([]);
967
- });
968
- it("with getEntity: a permission denial is skipped SILENTLY", async () => {
969
- const { diagnostics } = await reconcileWithProbeError(new VaultPermissionDeniedError());
970
- expect(diagnostics).toEqual([]);
971
- });
972
- it("with getEntity: a duck-typed { statusCode } rejection is treated as a lookup answer, not a bug", async () => {
973
- // buildFanoutPlan classifies this same call's failures by duck-typed
974
- // statusCode, so this shape is one the codebase genuinely produces.
975
- const { diagnostics } = await reconcileWithProbeError({ statusCode: 404 });
976
- expect(diagnostics).toEqual([]);
977
- });
978
- it("with getEntity: reporting is optional — omitting the sink never throws", async () => {
979
- hqRoot = makeHqRoot();
980
- fs.mkdirSync(path.join(hqRoot, "companies", "acme"), { recursive: true });
981
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
982
- await expect(reconcileCompanyManifest({
983
- hqRoot,
984
- targets: [{ uid: "cmp_acme", slug: "acme" }],
985
- completedCompanySlugs: new Set(["acme"]),
986
- getEntity: () => Promise.reject(new TypeError("boom")),
987
- })).resolves.toEqual({ written: false, added: [], updated: [], skipped: [] });
988
- expectUntouched(manifestPath, EMPTY_MANIFEST_TEMPLATE);
989
- });
990
- it("with getEntity: a suspended company is rejected — the A/B twin of the plan-carried case", async () => {
991
- hqRoot = makeHqRoot();
992
- fs.mkdirSync(path.join(hqRoot, "companies", "susp"), { recursive: true });
993
- const manifestPath = writeManifest(hqRoot, EMPTY_MANIFEST_TEMPLATE);
994
- // Both paths must reach the SAME verdict on the same company. This is the
995
- // pair that was empirically divergent before the guard was relocated.
996
- expect(await reconcileCompanyManifest({
997
- hqRoot,
998
- targets: [{ uid: "cmp_susp", slug: "susp" }],
999
- completedCompanySlugs: new Set(["susp"]),
1000
- getEntity: () => Promise.resolve({
1001
- uid: "cmp_susp",
1002
- slug: "susp",
1003
- type: "company",
1004
- status: "suspended",
1005
- name: "Suspended Corp",
1006
- bucketName: "hq-vault-cmp-susp",
1007
- createdAt: "2026-01-01T00:00:00Z",
1008
- }),
1009
- })).toEqual({ written: false, added: [], updated: [], skipped: [] });
1010
- expectUntouched(manifestPath, EMPTY_MANIFEST_TEMPLATE);
1011
- // ...and the plan-carried path agrees, with no resolver at all.
1012
- expect(await reconcileCompanyManifest({
1013
- hqRoot,
1014
- targets: [
1015
- {
1016
- uid: "cmp_susp",
1017
- slug: "susp",
1018
- name: "Suspended Corp",
1019
- bucketName: "hq-vault-cmp-susp",
1020
- entityType: "company",
1021
- entityStatus: "suspended",
1022
- },
1023
- ],
1024
- completedCompanySlugs: new Set(["susp"]),
1025
- })).toEqual({ written: false, added: [], updated: [], skipped: [] });
1026
- expectUntouched(manifestPath, EMPTY_MANIFEST_TEMPLATE);
1027
- });
1028
- });
1029
- //# sourceMappingURL=manifest-reconcile.test.js.map