@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,926 +0,0 @@
1
- /**
2
- * Unit tests for createIgnoreFilter.
3
- *
4
- * Covers both modes: legacy permissive (no .hqinclude) and allowlist mode
5
- * (.hqinclude present). The allowlist tests guard against accidentally
6
- * leaking sensitive subtrees like data/ or workers/ to S3 — a regression
7
- * here would silently push private content on the next sync.
8
- */
9
- import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
10
- import * as fs from "fs";
11
- import * as os from "os";
12
- import * as path from "path";
13
- import { createIgnoreFilter, createIgnoreFilterReference, isExpectedIgnore, } from "./ignore.js";
14
- import { wrapFilterWithIgnoreVisibility } from "./cli/share.js";
15
- describe("isExpectedIgnore", () => {
16
- it("treats root .tmp-* build caches as expected, but not company data with that name", () => {
17
- expect(isExpectedIgnore(".tmp-c180-base")).toBe(true);
18
- expect(isExpectedIgnore(".tmp-c180-base/")).toBe(true);
19
- expect(isExpectedIgnore(".tmp-c180-base/chunk/a.json")).toBe(true);
20
- expect(isExpectedIgnore("companies/indigo/knowledge/.tmp-c180-base")).toBe(false);
21
- expect(isExpectedIgnore("companies/indigo/knowledge/.tmp-c180-base/notes.md")).toBe(false);
22
- });
23
- it("classifies top-level HQ-managed roots as expected", () => {
24
- expect(isExpectedIgnore("repos")).toBe(true);
25
- expect(isExpectedIgnore("repos/private/x.ts")).toBe(true);
26
- expect(isExpectedIgnore("workspace/tmp/file.md")).toBe(true);
27
- });
28
- it("classifies build, VCS, cache, and known basename noise as expected", () => {
29
- expect(isExpectedIgnore("node_modules/react/index.js")).toBe(true);
30
- expect(isExpectedIgnore("apps/web/node_modules/react/index.js")).toBe(true);
31
- expect(isExpectedIgnore(".git/config")).toBe(true);
32
- expect(isExpectedIgnore(".DS_Store")).toBe(true);
33
- expect(isExpectedIgnore("x/.env")).toBe(true);
34
- expect(isExpectedIgnore("a/b/.hq-sync.pid")).toBe(true);
35
- expect(isExpectedIgnore("y/foo.pyc")).toBe(true);
36
- // Cloud-only skill hero images (US-014) are an expected by-design exclusion.
37
- expect(isExpectedIgnore(".claude/skills/foo/.skill-media/hero.png")).toBe(true);
38
- });
39
- it("classifies macOS Finder Icon\\r files as expected noise", () => {
40
- // Finder scatters one into every directory it renders a custom icon for,
41
- // and a folder-level cloud-sync agent propagates them tree-wide. Treated
42
- // exactly like .DS_Store so a seeded tree stays silent rather than firing
43
- // the "EXCLUDED from sync — review in case this is unintended" warning
44
- // once per file.
45
- expect(isExpectedIgnore("Icon\r")).toBe(true);
46
- expect(isExpectedIgnore("companies/indigo/Icon\r")).toBe(true);
47
- });
48
- it("classifies AppleDouble files as expected noise", () => {
49
- expect(isExpectedIgnore("core/._README.md")).toBe(true);
50
- expect(isExpectedIgnore("core/connectors/apple-mail/._connector.sh")).toBe(true);
51
- expect(isExpectedIgnore("core/README.md")).toBe(false);
52
- });
53
- it("classifies restore staging paths as expected noise", () => {
54
- expect(isExpectedIgnore("core/packages.hq-restore-9980")).toBe(true);
55
- expect(isExpectedIgnore("core/packages.hq-restore-9980/connectors/README.md")).toBe(true);
56
- expect(isExpectedIgnore("core/README.md.hq-restore-probe-9980-m6bx")).toBe(true);
57
- });
58
- it("keeps a real file named Icons noteworthy (no `Icon?` over-match)", () => {
59
- // The `Icon?` gitignore workaround would swallow these. Dropping real
60
- // user content is a worse failure than the cruft being excluded.
61
- expect(isExpectedIgnore("companies/indigo/Icons")).toBe(false);
62
- expect(isExpectedIgnore("companies/indigo/Icon")).toBe(false);
63
- expect(isExpectedIgnore("companies/indigo/Icons.md")).toBe(false);
64
- });
65
- it("keeps nested repos/workspace and ordinary content noteworthy", () => {
66
- expect(isExpectedIgnore("companies/indigo/knowledge/repos/foo/notes.md")).toBe(false);
67
- expect(isExpectedIgnore("companies/indigo/knowledge/overview.md")).toBe(false);
68
- });
69
- it("classifies secret/credential defaults as expected (no false 'unexpectedly excluded' warning)", () => {
70
- // These are mandatory, by-design exclusions (DEFAULT_IGNORES). If they were
71
- // not recognized here, every push touching a secret would fire the
72
- // "EXCLUDED from sync — review in case unintended" warning.
73
- expect(isExpectedIgnore("credentials.json")).toBe(true);
74
- expect(isExpectedIgnore("companies/acme/credentials.json")).toBe(true);
75
- expect(isExpectedIgnore("companies/acme/service.credentials.json")).toBe(true);
76
- expect(isExpectedIgnore("personal/db.secret.yaml")).toBe(true);
77
- expect(isExpectedIgnore("personal/.netrc")).toBe(true);
78
- // Ordinary content that merely mentions "credentials"/"secret" stays noteworthy.
79
- expect(isExpectedIgnore("docs/credentials-guide.md")).toBe(false);
80
- expect(isExpectedIgnore("companies/acme/secrets-policy.md")).toBe(false);
81
- });
82
- });
83
- describe("createIgnoreFilter", () => {
84
- let hqRoot;
85
- beforeEach(() => {
86
- hqRoot = fs.mkdtempSync(path.join(os.tmpdir(), "hq-ignore-test-"));
87
- });
88
- afterEach(() => {
89
- fs.rmSync(hqRoot, { recursive: true, force: true });
90
- });
91
- it("permissive mode excludes AppleDouble files", () => {
92
- const shouldSync = createIgnoreFilter(hqRoot);
93
- const paths = [
94
- "._README.md",
95
- "core/._README.md",
96
- "core/connectors/apple-mail/._connector.sh",
97
- ];
98
- for (const relative of paths) {
99
- expect(shouldSync(path.join(hqRoot, relative)), relative).toBe(false);
100
- }
101
- expect(shouldSync(path.join(hqRoot, "core/README.md"))).toBe(true);
102
- });
103
- it("re-includes only the root MCP file for the personal-target flag", () => {
104
- const shouldSync = createIgnoreFilter(hqRoot, { allowRootMcpConfig: true });
105
- expect(shouldSync(path.join(hqRoot, ".mcp.json"))).toBe(true);
106
- expect(shouldSync(path.join(hqRoot, "personal", ".mcp.json"))).toBe(false);
107
- expect(shouldSync(path.join(hqRoot, "companies", "acme", ".mcp.json"))).toBe(false);
108
- expect(createIgnoreFilter(hqRoot)(path.join(hqRoot, ".mcp.json"))).toBe(false);
109
- });
110
- it("permissive mode excludes every restore staging segment", () => {
111
- const shouldSync = createIgnoreFilter(hqRoot);
112
- const paths = [
113
- "core/packages.hq-restore-9980",
114
- "core/packages.hq-restore-9980/connectors/README.md",
115
- "core/README.md.hq-restore-probe-9980-m6bx",
116
- ];
117
- for (const relative of paths) {
118
- expect(shouldSync(path.join(hqRoot, relative)), relative).toBe(false);
119
- }
120
- expect(shouldSync(path.join(hqRoot, "core/README.md"))).toBe(true);
121
- });
122
- it("memoized filter is observationally identical to the reference across ignore/include edge cases", () => {
123
- // This combines the shapes that make a directory cache unsafe: ordered
124
- // negations that re-include deep agency files, directory-only patterns,
125
- // and allowlist ancestor descent. Every candidate is checked as both a
126
- // file and a directory probe so the trailing-slash distinction is covered.
127
- fs.writeFileSync(path.join(hqRoot, ".hqignore"), [
128
- "plain-ignored.txt",
129
- "dir-only/",
130
- "workspace/agency/**",
131
- "!workspace/agency/",
132
- "!workspace/agency/*/",
133
- "!workspace/agency/*/*/",
134
- "!workspace/agency/*/*/status.json",
135
- "!workspace/agency/*/*/team.json",
136
- "!workspace/agency/*/*/chat.jsonl",
137
- ].join("\n"));
138
- fs.writeFileSync(path.join(hqRoot, ".hqinclude"), ["allow/leaf.txt", "projects/*/docs/"].join("\n"));
139
- const candidates = [
140
- "plain-ignored.txt",
141
- "plain-kept.txt",
142
- "dir-only",
143
- "dir-only/child.txt",
144
- "workspace",
145
- "workspace/agency",
146
- "workspace/agency/acme",
147
- "workspace/agency/acme/team-a",
148
- "workspace/agency/acme/team-a/status.json",
149
- "workspace/agency/acme/team-a/team.json",
150
- "workspace/agency/acme/team-a/chat.jsonl",
151
- "workspace/agency/acme/team-a/other.txt",
152
- "allow",
153
- "allow/leaf.txt",
154
- "projects",
155
- "projects/acme",
156
- "projects/acme/docs",
157
- "projects/acme/docs/readme.md",
158
- "Icon\r",
159
- ];
160
- const reference = createIgnoreFilterReference(hqRoot);
161
- const memoized = createIgnoreFilter(hqRoot);
162
- for (const relative of candidates) {
163
- const absolute = path.join(hqRoot, relative);
164
- for (const isDir of [false, true]) {
165
- expect(memoized(absolute, isDir), `${relative} (isDir=${isDir})`).toBe(reference(absolute, isDir));
166
- }
167
- }
168
- // Outside-root checks are part of the historical contract too.
169
- const outside = path.join(path.dirname(hqRoot), "outside.md");
170
- expect(memoized(outside)).toBe(reference(outside));
171
- });
172
- it("memoizes the parent-directory verdict, never the file's", () => {
173
- const stats = {
174
- cacheHits: 0,
175
- cacheMisses: 0,
176
- matcherInvocations: 0,
177
- };
178
- const filter = createIgnoreFilter(hqRoot, { memoLimit: 1_000, stats });
179
- const paths = Array.from({ length: 500 }, (_value, index) => path.join(hqRoot, "workspace", "agency", "acme", `f-${index}.json`));
180
- for (let pass = 0; pass < 4; pass += 1) {
181
- for (const candidate of paths)
182
- expect(filter(candidate)).toBe(true);
183
- }
184
- // 2,000 probes of one folder cost one memo entry and one memo miss. The
185
- // old per-file memo held 500 entries here and ~1.5M on a real HQ walk,
186
- // where it rolled over ~30 times per walk and so never stayed warm.
187
- expect(stats.cacheEntries).toBe(1);
188
- expect(filter.censusSize()).toBe(1);
189
- expect(stats.cacheMisses).toBe(1);
190
- expect(stats.cacheHits).toBe(paths.length * 4 - 1);
191
- // Files inside an included folder still reach the matcher on every probe:
192
- // that is the trade — matcher time per file for memory per directory.
193
- expect(stats.matcherInvocations).toBe(paths.length * 4 + 1);
194
- const cappedStats = {
195
- cacheHits: 0,
196
- cacheMisses: 0,
197
- matcherInvocations: 0,
198
- };
199
- const capped = createIgnoreFilter(hqRoot, { memoLimit: 0, stats: cappedStats });
200
- for (const candidate of paths)
201
- expect(capped(candidate)).toBe(true);
202
- for (const candidate of paths)
203
- expect(capped(candidate)).toBe(true);
204
- // With no memo at all every probe evaluates its parent and then itself.
205
- // Correctness comes from exact re-evaluation, not from cache admission.
206
- expect(cappedStats.cacheHits).toBe(0);
207
- expect(cappedStats.cacheEntries).toBe(0);
208
- expect(cappedStats.matcherInvocations).toBe(paths.length * 2 * 2);
209
- });
210
- it("short-circuits every file under an excluded folder without consulting the matcher", () => {
211
- fs.writeFileSync(path.join(hqRoot, ".hqignore"), "private/\n");
212
- const stats = {
213
- cacheHits: 0,
214
- cacheMisses: 0,
215
- matcherInvocations: 0,
216
- };
217
- const filter = createIgnoreFilter(hqRoot, { memoLimit: 1_000, stats });
218
- const dirs = Array.from({ length: 10 }, (_value, index) => `private/team-${index}/notes`);
219
- for (const dir of dirs) {
220
- for (let index = 0; index < 100; index += 1) {
221
- expect(filter(path.join(hqRoot, dir, `${index}.md`))).toBe(false);
222
- }
223
- }
224
- // gitignore semantics: nothing under an excluded directory can be
225
- // re-included, so an excluded parent settles its children with a Map
226
- // lookup. The matcher ran once per distinct folder and never per file.
227
- expect(stats.matcherInvocations).toBe(dirs.length);
228
- expect(stats.cacheMisses).toBe(dirs.length);
229
- expect(stats.cacheHits).toBe(dirs.length * 100 - dirs.length);
230
- expect(stats.cacheEntries).toBe(dirs.length);
231
- });
232
- it("keeps memo entries proportional to directories, not files", () => {
233
- const filter = createIgnoreFilter(hqRoot, { memoLimit: 1_000 });
234
- for (let dir = 0; dir < 50; dir += 1) {
235
- for (let file = 0; file < 200; file += 1) {
236
- filter(path.join(hqRoot, "personal", `d-${dir}`, `f-${file}.md`));
237
- }
238
- }
239
- expect(filter.censusSize()).toBe(50);
240
- });
241
- it("treats root-level files and directories as having no cacheable parent", () => {
242
- fs.writeFileSync(path.join(hqRoot, ".hqignore"), "top-secret/\n*.log\n");
243
- const stats = {
244
- cacheHits: 0,
245
- cacheMisses: 0,
246
- matcherInvocations: 0,
247
- };
248
- const filter = createIgnoreFilter(hqRoot, { memoLimit: 1_000, stats });
249
- expect(filter(path.join(hqRoot, "README.md"))).toBe(true);
250
- expect(filter(path.join(hqRoot, "debug.log"))).toBe(false);
251
- expect(filter(path.join(hqRoot, "top-secret"), true)).toBe(false);
252
- expect(filter(path.join(hqRoot, "top-secret"), false)).toBe(true);
253
- expect(filter(path.join(hqRoot, "top-secret", "x.md"))).toBe(false);
254
- // Root probes never consult the memo. The one DIRECTORY probe seeded its
255
- // own verdict (a walker probes a folder before descending into it), so the
256
- // child's lookup was already warm.
257
- expect(stats.cacheEntries).toBe(1);
258
- expect(stats.cacheMisses).toBe(0);
259
- expect(stats.cacheHits).toBe(1);
260
- });
261
- it("rolls the directory memo over at its bound and re-evaluates evicted folders", () => {
262
- const stats = {
263
- cacheHits: 0,
264
- cacheMisses: 0,
265
- matcherInvocations: 0,
266
- };
267
- fs.writeFileSync(path.join(hqRoot, ".hqignore"), "private/\n");
268
- const filter = createIgnoreFilter(hqRoot, {
269
- memoLimit: 3,
270
- matcherRebuildInterval: 3,
271
- stats,
272
- });
273
- for (let cycle = 0; cycle < 20; cycle += 1) {
274
- for (let index = 0; index < 5; index += 1) {
275
- expect(filter(path.join(hqRoot, "public", `${cycle}-${index}`, "note.md"))).toBe(true);
276
- }
277
- // This folder has necessarily fallen out of the small memo. A miss must
278
- // consult the real matcher and preserve the privacy exclusion.
279
- expect(filter(path.join(hqRoot, "private", `${cycle}`, "note.md"), false)).toBe(false);
280
- }
281
- expect(stats.cacheEntries).toBeLessThanOrEqual(3);
282
- expect(stats.matcherGenerations).toBeGreaterThan(1);
283
- });
284
- it("bounds the matcher's private cache by rebuilding it after a fixed number of evaluations", () => {
285
- const stats = {
286
- cacheHits: 0,
287
- cacheMisses: 0,
288
- matcherInvocations: 0,
289
- };
290
- const filter = createIgnoreFilter(hqRoot, {
291
- memoLimit: 1_000,
292
- matcherRebuildInterval: 100,
293
- stats,
294
- });
295
- // One folder, one memo entry — but the `ignore` package caches every path
296
- // it is handed internally, so 1,000 distinct files would still grow its
297
- // private cache without bound. Rebuilding on an evaluation count keeps it
298
- // bounded independently of how many directories the memo retains.
299
- for (let index = 0; index < 1_000; index += 1) {
300
- filter(path.join(hqRoot, "personal", "notes", `${index}.md`));
301
- }
302
- expect(stats.cacheEntries).toBe(1);
303
- expect(stats.matcherGenerations).toBeGreaterThanOrEqual(10);
304
- });
305
- it("captures ignore configuration once even when both caches roll over repeatedly", () => {
306
- const coreYaml = path.join(hqRoot, "core", "core.yaml");
307
- const hqignore = path.join(hqRoot, ".hqignore");
308
- const hqsyncignore = path.join(hqRoot, ".hqsyncignore");
309
- const hqinclude = path.join(hqRoot, ".hqinclude");
310
- const contents = new Map([
311
- [hqignore, "ignored/\n"],
312
- [hqsyncignore, "legacy-ignored/\n"],
313
- [hqinclude, "included/\n"],
314
- ]);
315
- const snapshotReader = {
316
- existsSync: vi.fn((filePath) => filePath === coreYaml || contents.has(filePath)),
317
- readFileSync: vi.fn((filePath) => {
318
- const content = contents.get(filePath);
319
- if (content === undefined)
320
- throw new Error(`unexpected read of ${filePath}`);
321
- return content;
322
- }),
323
- };
324
- const filter = createIgnoreFilter(hqRoot, {
325
- memoLimit: 1,
326
- matcherRebuildInterval: 1,
327
- snapshotReader,
328
- });
329
- for (let index = 0; index < 10; index += 1) {
330
- filter(path.join(hqRoot, "included", `${index}`, "note.md"));
331
- }
332
- const callsFor = (calls, filePath) => calls.filter(([candidate]) => candidate === filePath).length;
333
- expect(callsFor(snapshotReader.existsSync.mock.calls, coreYaml)).toBe(1);
334
- expect(callsFor(snapshotReader.existsSync.mock.calls, hqignore)).toBe(1);
335
- expect(callsFor(snapshotReader.existsSync.mock.calls, hqsyncignore)).toBe(1);
336
- expect(callsFor(snapshotReader.existsSync.mock.calls, hqinclude)).toBe(1);
337
- expect(callsFor(snapshotReader.readFileSync.mock.calls, hqignore)).toBe(1);
338
- expect(callsFor(snapshotReader.readFileSync.mock.calls, hqsyncignore)).toBe(1);
339
- expect(callsFor(snapshotReader.readFileSync.mock.calls, hqinclude)).toBe(1);
340
- });
341
- describe("folder memo is observationally identical to the reference over a generated tree", () => {
342
- // A deterministic tree that exercises every shape the folder memo must
343
- // not get wrong: excluded directories with files that a later negation
344
- // tries (and must fail) to re-include, directory-only patterns, deep
345
- // negation ladders under workspace/agency, root-anchored globs, an
346
- // excluded name that is itself re-included, and — in the second variant —
347
- // allowlist mode with ancestor descent.
348
- const IGNORE_RULES = [
349
- "build/",
350
- "*.log",
351
- "!important.log",
352
- "/workspace/agency/**/*.tmp",
353
- "workspace/agency/**",
354
- "!workspace/agency/",
355
- "!workspace/agency/*/",
356
- "!workspace/agency/*/*/",
357
- "!workspace/agency/*/*/status.json",
358
- "docs/*/drafts/",
359
- "secret-*",
360
- "!secret-public",
361
- ];
362
- const DIRS = [
363
- "build",
364
- "build/sub",
365
- "logs",
366
- "workspace",
367
- "workspace/agency",
368
- "workspace/agency/acme",
369
- "workspace/agency/acme/team",
370
- "workspace/agency/acme/team/deep",
371
- "docs",
372
- "docs/a",
373
- "docs/a/drafts",
374
- "docs/a/drafts/x",
375
- "secret-1",
376
- "secret-1/inner",
377
- "secret-public",
378
- "secret-public/inner",
379
- "plain",
380
- "plain/nested",
381
- ];
382
- const LEAVES = ["file.txt", "file.log", "important.log", "status.json", "note.tmp", "Icon\r"];
383
- const candidates = () => {
384
- const all = [...LEAVES];
385
- for (const dir of DIRS) {
386
- all.push(dir);
387
- for (const leaf of LEAVES)
388
- all.push(`${dir}/${leaf}`);
389
- }
390
- return all;
391
- };
392
- /** Small deterministic PRNG so a failure is reproducible from the seed. */
393
- const shuffled = (items, seed) => {
394
- const out = [...items];
395
- let state = seed >>> 0;
396
- for (let index = out.length - 1; index > 0; index -= 1) {
397
- state = (Math.imul(state, 1664525) + 1013904223) >>> 0;
398
- const swap = state % (index + 1);
399
- [out[index], out[swap]] = [out[swap], out[index]];
400
- }
401
- return out;
402
- };
403
- const assertParity = (order, label) => {
404
- const reference = createIgnoreFilterReference(hqRoot);
405
- // Tiny bounds force memo rollovers and matcher rebuilds mid-walk, so the
406
- // comparison covers warm hits, cold misses, and post-rollover state.
407
- const memoized = createIgnoreFilter(hqRoot, { memoLimit: 2, matcherRebuildInterval: 3 });
408
- for (let pass = 0; pass < 2; pass += 1) {
409
- for (const relative of order) {
410
- const absolute = path.join(hqRoot, relative);
411
- for (const isDir of [false, true]) {
412
- expect(memoized(absolute, isDir), `${label} pass=${pass} ${JSON.stringify(relative)} (isDir=${isDir})`).toBe(reference(absolute, isDir));
413
- }
414
- }
415
- }
416
- };
417
- for (const allowlist of [false, true]) {
418
- it(`${allowlist ? "allowlist" : "permissive"} mode: parents-first, children-first, and shuffled probe orders agree`, () => {
419
- fs.writeFileSync(path.join(hqRoot, ".hqignore"), IGNORE_RULES.join("\n"));
420
- if (allowlist) {
421
- fs.writeFileSync(path.join(hqRoot, ".hqinclude"), ["docs/*/", "plain/file.txt", "secret-public/", "workspace/agency/*/*/"].join("\n"));
422
- }
423
- const all = candidates();
424
- assertParity(all, "parents-first");
425
- assertParity([...all].reverse(), "children-first");
426
- for (const seed of [1, 7, 42])
427
- assertParity(shuffled(all, seed), `seed=${seed}`);
428
- });
429
- }
430
- });
431
- it("keeps allowlist mode active after .hqinclude is deleted during a rollover", () => {
432
- const hqinclude = path.join(hqRoot, ".hqinclude");
433
- fs.writeFileSync(hqinclude, "included/allowed.md\n");
434
- const filter = createIgnoreFilter(hqRoot, { memoLimit: 1, matcherRebuildInterval: 1 });
435
- expect(filter(path.join(hqRoot, "included", "allowed.md"))).toBe(true);
436
- fs.rmSync(hqinclude);
437
- // This unique folder rolls the memo and the matcher rebuilds. Neither was
438
- // captured in the first generation, so it proves the new generation
439
- // retained allowlist mode.
440
- expect(filter(path.join(hqRoot, "not-included", "private.md"))).toBe(false);
441
- });
442
- it("keeps .hqignore exclusions after its contents are truncated during a rollover", () => {
443
- const hqignore = path.join(hqRoot, ".hqignore");
444
- fs.writeFileSync(hqignore, "private/\n");
445
- const filter = createIgnoreFilter(hqRoot, { memoLimit: 1, matcherRebuildInterval: 1 });
446
- expect(filter(path.join(hqRoot, "public", "seed.md"))).toBe(true);
447
- fs.writeFileSync(hqignore, "");
448
- // This unique folder rolls the memo and the matcher rebuilds. Its
449
- // exclusion must come from the construction-time snapshot, not the later
450
- // on-disk file contents.
451
- expect(filter(path.join(hqRoot, "private", "secret.md"))).toBe(false);
452
- });
453
- // Sync exclusions are governed ONLY by hq-cloud's own config (.hqignore /
454
- // .hqinclude) plus the built-in defaults — never by the repo's .gitignore.
455
- // .gitignore describes what the git-mirror should not COMMIT, which is a
456
- // different question from what sync should not UPLOAD; coupling them meant
457
- // excluding a subtree from the git-mirror silently stopped syncing it too
458
- // (the 2026-08 personal-vault carve-out incident). Root cause of the split.
459
- describe("ignores .gitignore entirely (only .hqignore/.hqinclude govern sync)", () => {
460
- it("a .gitignore pattern does NOT exclude a file from sync", () => {
461
- fs.writeFileSync(path.join(hqRoot, ".gitignore"), "workspace/\nsecret-dir/\n*.bigfile\n");
462
- const shouldSync = createIgnoreFilter(hqRoot);
463
- expect(shouldSync(path.join(hqRoot, "workspace/.session-logs/s.jsonl"))).toBe(true);
464
- expect(shouldSync(path.join(hqRoot, "secret-dir/x.md"))).toBe(true);
465
- expect(shouldSync(path.join(hqRoot, "notes.bigfile"))).toBe(true);
466
- });
467
- it("the same pattern in .hqignore DOES exclude it (the supported channel)", () => {
468
- fs.writeFileSync(path.join(hqRoot, ".hqignore"), "secret-dir/\n*.bigfile\n");
469
- const shouldSync = createIgnoreFilter(hqRoot);
470
- expect(shouldSync(path.join(hqRoot, "secret-dir/x.md"))).toBe(false);
471
- expect(shouldSync(path.join(hqRoot, "notes.bigfile"))).toBe(false);
472
- expect(shouldSync(path.join(hqRoot, "notes.md"))).toBe(true);
473
- });
474
- // Secrets used to be kept out of the vault only because most HQ roots'
475
- // .gitignore listed them. Now that .gitignore is not consulted, the built-in
476
- // defaults must guarantee it for every user, independent of any config file.
477
- it("secret files are excluded by the built-in defaults, with no ignore file at all", () => {
478
- const shouldSync = createIgnoreFilter(hqRoot);
479
- for (const p of [
480
- ".env",
481
- ".env.local",
482
- ".env.production.local",
483
- ".env.staging-token",
484
- "companies/acme/.env",
485
- "companies/acme/service.credentials.json",
486
- "credentials.json", // bare basename, not just *.credentials.json
487
- "companies/acme/knowledge/credentials.json",
488
- "personal/db.secret.yaml",
489
- ".mcp.json",
490
- "companies/acme/.mcp.json",
491
- "personal/.netrc",
492
- ]) {
493
- expect(shouldSync(path.join(hqRoot, p)), `${p} must be excluded by default`).toBe(false);
494
- }
495
- // A near-miss that must NOT be swallowed: an ordinary env-adjacent doc.
496
- expect(shouldSync(path.join(hqRoot, "docs/env-setup.md"))).toBe(true);
497
- // Packaged .mcp.json templates under core/packages/*/ are release-shipped
498
- // config, not a user secret; the .gitignore used to re-include them and
499
- // the defaults must preserve that carve-out.
500
- expect(shouldSync(path.join(hqRoot, "core/packages/hq-pack-gemini/.mcp.json"))).toBe(true);
501
- });
502
- });
503
- it("permissive mode: regular files sync, defaults are ignored", () => {
504
- const shouldSync = createIgnoreFilter(hqRoot);
505
- expect(shouldSync(path.join(hqRoot, "companies/indigo/notes.md"))).toBe(true);
506
- expect(shouldSync(path.join(hqRoot, "node_modules/foo/x.js"))).toBe(false);
507
- expect(shouldSync(path.join(hqRoot, ".env"))).toBe(false);
508
- });
509
- it("permissive mode: project-local .qmd index is ignored by default", () => {
510
- // feedback_332c7ccc / sqlite-vec#297 — never round-trip a project-local
511
- // qmd index through the vault.
512
- const shouldSync = createIgnoreFilter(hqRoot);
513
- expect(shouldSync(path.join(hqRoot, ".qmd"), true)).toBe(false);
514
- expect(shouldSync(path.join(hqRoot, ".qmd/index.sqlite"))).toBe(false);
515
- expect(shouldSync(path.join(hqRoot, ".qmd/index.sqlite-wal"))).toBe(false);
516
- expect(isExpectedIgnore(".qmd/index.sqlite")).toBe(true);
517
- });
518
- it("permissive mode: pnpm content-addressed store is ignored by default", () => {
519
- // .pnpm-store/ is pnpm's content-addressed package store. Like
520
- // node_modules/ it is large and machine-local and must never sync — a
521
- // synced store writes a `.conflict-` copy of every blob each cycle, which
522
- // then re-syncs and amplifies into tens of thousands of files. Regression
523
- // guard for that storm.
524
- const shouldSync = createIgnoreFilter(hqRoot);
525
- // The store directory and everything beneath it is excluded.
526
- expect(shouldSync(path.join(hqRoot, ".pnpm-store"), true)).toBe(false);
527
- expect(shouldSync(path.join(hqRoot, ".pnpm-store/v10/files/00/abc123"))).toBe(false);
528
- // Caught at any depth — a project store nested under a synced subtree.
529
- expect(shouldSync(path.join(hqRoot, "companies/indigo/repos/x/.pnpm-store/v10/blob"))).toBe(false);
530
- // node_modules/ is already covered; asserted here so the pair travels together.
531
- expect(shouldSync(path.join(hqRoot, "node_modules/react/index.js"))).toBe(false);
532
- });
533
- it("permissive mode: macOS Finder Icon\\r files never enter the walk", () => {
534
- // A CR is a control character, so the vault key validator rejects the key
535
- // (INVALID_KEY_CONTROL_CHARS) and the upload can only ever throw. Dropping
536
- // them during the walk is what keeps them off the upload path entirely.
537
- const shouldSync = createIgnoreFilter(hqRoot);
538
- expect(shouldSync(path.join(hqRoot, "Icon\r"))).toBe(false);
539
- expect(shouldSync(path.join(hqRoot, "companies/indigo/Icon\r"))).toBe(false);
540
- expect(shouldSync(path.join(hqRoot, ".agents/Icon\r"))).toBe(false);
541
- // Caught at any depth, like the other OS-cruft exclusions.
542
- expect(shouldSync(path.join(hqRoot, "a/b/c/d/Icon\r"))).toBe(false);
543
- });
544
- it("permissive mode: a real file named Icons still syncs", () => {
545
- // Regression guard for the `Icon?` gitignore workaround, whose `?`
546
- // single-char wildcard also matches Icons / Icon1 / IconX. This exclusion
547
- // matches the exact Finder byte sequence instead, so real content survives.
548
- const shouldSync = createIgnoreFilter(hqRoot);
549
- expect(shouldSync(path.join(hqRoot, "companies/indigo/Icons"))).toBe(true);
550
- expect(shouldSync(path.join(hqRoot, "companies/indigo/Icon"))).toBe(true);
551
- expect(shouldSync(path.join(hqRoot, "companies/indigo/Icon1"))).toBe(true);
552
- expect(shouldSync(path.join(hqRoot, "companies/indigo/Icons.md"))).toBe(true);
553
- });
554
- it("a literal Icon+CR line in .hqignore does NOT reach the ignore lib", () => {
555
- // This is why the exclusion is a predicate and not a DEFAULT_IGNORES
556
- // entry. ignore@5 strips a trailing CR from a pattern line, so the
557
- // spelling git itself requires silently never matches. Pinning the
558
- // upstream behavior here means a future ignore-lib bump that changes it
559
- // surfaces as a failing test rather than a silent double-exclusion.
560
- // (.hqignore is the sync-config channel; .gitignore is not consulted.)
561
- fs.writeFileSync(path.join(hqRoot, ".hqignore"), "Icon\r\n");
562
- const shouldSync = createIgnoreFilter(hqRoot);
563
- // Still excluded — by the predicate, not by the pattern.
564
- expect(shouldSync(path.join(hqRoot, "Icon\r"))).toBe(false);
565
- // Proof the pattern itself is inert: it did not take `Icons` with it.
566
- expect(shouldSync(path.join(hqRoot, "Icons"))).toBe(true);
567
- });
568
- it("repos/ exclusion is root-anchored to hqRoot (DEV-1791)", () => {
569
- const shouldSync = createIgnoreFilter(hqRoot);
570
- expect(shouldSync(path.join(hqRoot, "repos/private/hq-cloud/src/x.ts"))).toBe(false);
571
- expect(shouldSync(path.join(hqRoot, "repos/public/hq-core/README.md"))).toBe(false);
572
- expect(shouldSync(path.join(hqRoot, "companies/lutiq/knowledge/repos/dev-docs-mcp/overview.md"))).toBe(true);
573
- expect(shouldSync(path.join(hqRoot, "companies/indigo/knowledge/repos/foo/notes.md"))).toBe(true);
574
- expect(shouldSync(path.join(hqRoot, "companies/lutiq/knowledge/repos"), true)).toBe(true);
575
- });
576
- it("excludes only repositories directly under a company root", () => {
577
- const shouldSync = createIgnoreFilter(hqRoot);
578
- expect(shouldSync(path.join(hqRoot, "companies", "acme", "repos", "x", "a.md"))).toBe(false);
579
- expect(shouldSync(path.join(hqRoot, "companies", "acme", "repos"), true)).toBe(false);
580
- expect(shouldSync(path.join(hqRoot, "companies", "acme", "knowledge", "repos", "a.md"))).toBe(true);
581
- expect(shouldSync(path.join(hqRoot, "companies", "acme", "knowledge", "repos"), true)).toBe(true);
582
- });
583
- it("permissive mode: .hqignore patterns are honored", () => {
584
- fs.writeFileSync(path.join(hqRoot, ".hqignore"), "companies/*/data/\n");
585
- const shouldSync = createIgnoreFilter(hqRoot);
586
- expect(shouldSync(path.join(hqRoot, "companies/indigo/data/x.csv"))).toBe(false);
587
- expect(shouldSync(path.join(hqRoot, "companies/indigo/notes.md"))).toBe(true);
588
- });
589
- it("visibility fires on an OVER-BROAD exclusion (real filter + recorder, DEV-1791)", () => {
590
- // Simulate the regressed over-broad bug: an un-anchored `repos/` in
591
- // .hqignore that matches ANY nested repos segment — exactly what
592
- // silently ate /discover knowledge under companies/*/knowledge/repos/
593
- // before the root-anchor fix. The visibility recorder must surface the
594
- // dropped knowledge as NOTEWORTHY while staying quiet on build noise.
595
- fs.writeFileSync(path.join(hqRoot, ".hqignore"), "repos/\n");
596
- const ignoreFilter = createIgnoreFilter(hqRoot);
597
- const noteworthy = [];
598
- let total = 0;
599
- const recorded = wrapFilterWithIgnoreVisibility(ignoreFilter, hqRoot, (rel) => { noteworthy.push(rel); }, () => { total++; });
600
- // Knowledge under a nested repos/ is dropped by the over-broad rule and
601
- // is genuine content → captured as noteworthy.
602
- expect(recorded(path.join(hqRoot, "companies/indigo/knowledge/repos/foo/notes.md"))).toBe(false);
603
- // Build noise is also excluded but is EXPECTED → counted, not noteworthy.
604
- expect(recorded(path.join(hqRoot, "node_modules/react/index.js"))).toBe(false);
605
- // Ordinary knowledge that the filter ALLOWS fires nothing.
606
- expect(recorded(path.join(hqRoot, "companies/indigo/knowledge/overview.md"))).toBe(true);
607
- expect(noteworthy).toEqual(["companies/indigo/knowledge/repos/foo/notes.md"]);
608
- expect(total).toBe(2); // both exclusions counted; only one is noteworthy
609
- });
610
- it("v15+ layout (core/core.yaml present): root core.yaml is ignored, nested core/core.yaml syncs", () => {
611
- // On v15+ the scaffold/version manifest lives at `core/core.yaml` (a real
612
- // project file that DOES sync). Any root-level `core.yaml` here is a stale
613
- // per-machine duplicate that must never round-trip — pulling another
614
- // machine's marker would corrupt root discovery. The exclusion is anchored
615
- // (`/core.yaml`) so it never touches `core/core.yaml`.
616
- fs.mkdirSync(path.join(hqRoot, "core"), { recursive: true });
617
- fs.writeFileSync(path.join(hqRoot, "core/core.yaml"), 'version: 1\nhqVersion: "15.0.12"\n');
618
- fs.writeFileSync(path.join(hqRoot, "core.yaml"), 'version: 1\nhqVersion: "15.0.12"\n');
619
- const shouldSync = createIgnoreFilter(hqRoot);
620
- expect(shouldSync(path.join(hqRoot, "core.yaml"))).toBe(false);
621
- expect(shouldSync(path.join(hqRoot, "core/core.yaml"))).toBe(true);
622
- });
623
- it("v12–v14 layout (no core/core.yaml): root core.yaml IS the manifest and MUST sync", () => {
624
- // Regression for DEV-1729 / the ~98 "no core.yaml in vault, version
625
- // undetectable" sync users. On v12–v14 roots there is NO `core/core.yaml`
626
- // — the ROOT `core.yaml` is the scaffold/version manifest. The old
627
- // unconditional `/core.yaml` exclusion silently dropped it (while
628
- // computePersonalVaultPaths still enumerated it), so the vault never
629
- // received a version marker. With no `core/core.yaml` on disk, the root
630
- // `core.yaml` must round-trip like any other top-level file.
631
- fs.writeFileSync(path.join(hqRoot, "core.yaml"), 'version: 1\nhqVersion: "14.0.0"\n');
632
- const shouldSync = createIgnoreFilter(hqRoot);
633
- expect(shouldSync(path.join(hqRoot, "core.yaml"))).toBe(true);
634
- });
635
- it("permissive mode: modules/modules.yaml manifest is ignored", () => {
636
- // modules.yaml is the local modules-resolution manifest. Per-machine
637
- // state, never synced.
638
- const shouldSync = createIgnoreFilter(hqRoot);
639
- expect(shouldSync(path.join(hqRoot, "modules/modules.yaml"))).toBe(false);
640
- });
641
- it("permissive mode: per-company company.yaml is ignored", () => {
642
- // company.yaml is written locally on first sync from the entity context.
643
- // Round-tripping it would let one machine's identity overwrite another's.
644
- const shouldSync = createIgnoreFilter(hqRoot);
645
- expect(shouldSync(path.join(hqRoot, "companies/indigo/company.yaml"))).toBe(false);
646
- expect(shouldSync(path.join(hqRoot, "company.yaml"))).toBe(false);
647
- });
648
- it("permissive mode: root INDEX.md, tools INDEX.md, and policies/_digest.md are ignored", () => {
649
- // Root INDEX.md and companies/*/tools/INDEX.md are regenerated locally.
650
- // policies/_digest.md is the policies digest builder output.
651
- const shouldSync = createIgnoreFilter(hqRoot);
652
- expect(shouldSync(path.join(hqRoot, "INDEX.md"))).toBe(false);
653
- expect(shouldSync(path.join(hqRoot, "companies/ghq/tools/INDEX.md"))).toBe(false);
654
- expect(shouldSync(path.join(hqRoot, "policies/_digest.md"))).toBe(false);
655
- });
656
- it("syncs hand-authored INDEX.md under company knowledge (feedback 2292)", () => {
657
- // Unanchored INDEX.md used to drop every file of that name at any depth.
658
- // Crayads lost 14 hand-written knowledge maps (101 KB) that way: sync
659
- // reported success and only an ignore-excluded ndjson event named one
660
- // lowercase index.md. These are user content, not the tools indexer.
661
- const knowledgeDir = path.join(hqRoot, "companies/crayads/knowledge/librarys/visual-formats/anleitungen");
662
- fs.mkdirSync(knowledgeDir, { recursive: true });
663
- const handWrittenUpper = path.join(hqRoot, "companies/crayads/knowledge/librarys/personas/INDEX.md");
664
- const handWrittenLower = path.join(knowledgeDir, "index.md");
665
- fs.mkdirSync(path.dirname(handWrittenUpper), { recursive: true });
666
- fs.writeFileSync(handWrittenUpper, "# Personas\n\nHand-authored navigation.\n");
667
- fs.writeFileSync(handWrittenLower, "# Anleitungen\n\nHand-authored navigation.\n");
668
- const generated = path.join(hqRoot, "companies/crayads/knowledge/INDEX.md");
669
- fs.writeFileSync(generated, "# Knowledge\n\n> Auto-generated. Updated: 2026-09-16\n\n| Name | Description |\n|------|-------------|\n");
670
- const shouldSync = createIgnoreFilter(hqRoot);
671
- const reference = createIgnoreFilterReference(hqRoot);
672
- expect(shouldSync(handWrittenUpper)).toBe(true);
673
- expect(shouldSync(handWrittenLower)).toBe(true);
674
- expect(shouldSync(generated)).toBe(false);
675
- expect(reference(handWrittenUpper)).toBe(true);
676
- expect(reference(handWrittenLower)).toBe(true);
677
- expect(reference(generated)).toBe(false);
678
- // Visibility: generated copies stay expected (no false "review this"
679
- // warning). Hand-authored files are allowed, so they never hit it.
680
- expect(isExpectedIgnore("companies/crayads/knowledge/INDEX.md")).toBe(true);
681
- expect(isExpectedIgnore("companies/crayads/knowledge/librarys/visual-formats/anleitungen/index.md")).toBe(true);
682
- });
683
- it("permissive mode: .claude/worktrees/ is ignored", () => {
684
- const shouldSync = createIgnoreFilter(hqRoot);
685
- expect(shouldSync(path.join(hqRoot, ".claude/worktrees/foo/file.ts"))).toBe(false);
686
- expect(shouldSync(path.join(hqRoot, "companies/indigo/.claude/worktrees/bar/x.md"))).toBe(false);
687
- // The .claude/ dir itself (commands, skills, hooks) still syncs.
688
- expect(shouldSync(path.join(hqRoot, ".claude/skills/foo/SKILL.md"))).toBe(true);
689
- });
690
- it("permissive mode: workspace/worktrees/ is ignored without an .hqignore entry", () => {
691
- // Regression: this was excluded ONLY when an operator remembered to list it
692
- // in .hqignore. On Outpost 2 (2026-09-04) it was absent, so the sync runner
693
- // descended into 23 live fleet worktrees — 289,141 files / 4.2 GB — and,
694
- // because this same filter drives chokidar's descent predicate, held
695
- // 113,389 inotify watches and 3.65 GB RSS over a tree the hq-sentry fleet
696
- // creates and deletes continuously. Same lifecycle as .claude/worktrees/,
697
- // so it belongs in DEFAULT_IGNORES, not in an operator's config.
698
- const shouldSync = createIgnoreFilter(hqRoot);
699
- expect(shouldSync(path.join(hqRoot, "workspace/worktrees/hq-pro/task-1/src/a.ts"))).toBe(false);
700
- expect(shouldSync(path.join(hqRoot, "workspace/worktrees/wf-hq-sentry-abc/node_modules/x/y.js"))).toBe(false);
701
- expect(shouldSync(path.join(hqRoot, "workspace/worktrees"), true)).toBe(false);
702
- // Root-anchored, following the /repos/ precedent (DEV-1791): a nested dir
703
- // legitimately named workspace/worktrees inside synced knowledge must NOT
704
- // be dropped.
705
- expect(shouldSync(path.join(hqRoot, "personal/knowledge/repo-x/workspace/worktrees/notes.md"))).toBe(true);
706
- // The rule must not broaden to workspace/ — the rest of workspace still syncs.
707
- expect(shouldSync(path.join(hqRoot, "workspace/reports/outpost2.md"))).toBe(true);
708
- expect(shouldSync(path.join(hqRoot, "workspace/threads/handoff.json"))).toBe(true);
709
- });
710
- it("permissive mode: workspace/locks/ is ignored, and the SYNCED carve-outs are not", () => {
711
- // Lock files are per-host mutexes held by a running process: another machine
712
- // can neither hold nor release one.
713
- const shouldSync = createIgnoreFilter(hqRoot);
714
- expect(shouldSync(path.join(hqRoot, "workspace/locks/run-project.lock"))).toBe(false);
715
- expect(shouldSync(path.join(hqRoot, "workspace/locks"), true)).toBe(false);
716
- // Root-anchored (the DEV-1791 lesson, as with /workspace/worktrees/): a
717
- // nested `workspace/locks` inside synced knowledge is real content.
718
- expect(shouldSync(path.join(hqRoot, "companies/indigo/knowledge/workspace/locks/notes.md"))).toBe(true);
719
- // ⚠️ These two were the audit's two LARGEST finding classes and are the
720
- // obvious things to ignore — and they must NOT be. `.session-logs/` is the
721
- // cross-machine session-capture carve-out and `workspace/threads/` carries
722
- // the DEV-1778 continuity pointer that makes a `/handoff` resume on another
723
- // machine. Their audit noise is a REPORTING problem, suppressed server-side.
724
- expect(shouldSync(path.join(hqRoot, "workspace/.session-logs/2026-09-07/s.jsonl"))).toBe(true);
725
- expect(shouldSync(path.join(hqRoot, "workspace/threads/handoff.json"))).toBe(true);
726
- });
727
- it("permissive mode: client-written conflict copies are ignored", () => {
728
- // The client writes `<name>.conflict-<ts>-<id>` itself when it cannot merge.
729
- // 874 audit findings, 732 of them verdict-flipping `local_untracked`.
730
- const shouldSync = createIgnoreFilter(hqRoot);
731
- expect(shouldSync(path.join(hqRoot, "plan.conflict-20260907T101112Z-a1b2c3.md"))).toBe(false);
732
- expect(shouldSync(path.join(hqRoot, "companies/indigo/knowledge/n.conflict-2026-09-07-9f2a.md"))).toBe(false);
733
- // Must NOT swallow a user file that merely contains the word: the digit
734
- // class after `conflict-` and the required second hyphen are what keep
735
- // `notes.conflict-resolution.md` syncing.
736
- expect(shouldSync(path.join(hqRoot, "notes.conflict-resolution.md"))).toBe(true);
737
- });
738
- it("permissive mode: .skill-media/ (cloud-only skill images) is ignored (US-014)", () => {
739
- const shouldSync = createIgnoreFilter(hqRoot);
740
- // Skill hero images are cloud-only — excluded from push AND pull at any depth.
741
- expect(shouldSync(path.join(hqRoot, ".claude/skills/lead-qualifier/.skill-media/hero.png"))).toBe(false);
742
- expect(shouldSync(path.join(hqRoot, "companies/indigo/skills/foo/.skill-media/cover.jpg"))).toBe(false);
743
- expect(shouldSync(path.join(hqRoot, "skills/bar/.skill-media"), true)).toBe(false);
744
- // The skill's SKILL.md and other content still sync — the rule is scoped to
745
- // the media dir only, never the skill.
746
- expect(shouldSync(path.join(hqRoot, ".claude/skills/lead-qualifier/SKILL.md"))).toBe(true);
747
- });
748
- it("permissive mode: .hq-* internal state is ignored, .hqignore family still sync", () => {
749
- const shouldSync = createIgnoreFilter(hqRoot);
750
- // Internal state files that must never round-trip through the bucket.
751
- expect(shouldSync(path.join(hqRoot, ".hq-sync.pid"))).toBe(false);
752
- expect(shouldSync(path.join(hqRoot, ".hq-sync-journal.json"))).toBe(false);
753
- expect(shouldSync(path.join(hqRoot, ".hq-sync-state.json"))).toBe(false);
754
- expect(shouldSync(path.join(hqRoot, ".hq-embeddings-pending.json"))).toBe(false);
755
- expect(shouldSync(path.join(hqRoot, "companies/indigo/.hq-foo.json"))).toBe(false);
756
- expect(shouldSync(path.join(hqRoot, ".hq-cache/blob.bin"))).toBe(false);
757
- // Sync-config files still sync (no hyphen, doesn't match `.hq-*`).
758
- expect(shouldSync(path.join(hqRoot, ".hqignore"))).toBe(true);
759
- expect(shouldSync(path.join(hqRoot, ".hqsyncignore"))).toBe(true);
760
- expect(shouldSync(path.join(hqRoot, ".hqinclude"))).toBe(true);
761
- });
762
- it("permissive mode: .claude/state/ and .claude/audit/ are per-host, never synced", () => {
763
- // 5.34.0 live cross-machine sync test (macOS ↔ Lightsail) wrote
764
- // ~25 of the 30 conflict mirrors directly to these paths. They're
765
- // session-/host-scoped by design:
766
- // - .claude/state/active-session-project: the active project
767
- // pointer for the currently-foregrounded Claude Code session.
768
- // - .claude/state/auto-session-project-<sessionUuid>: one
769
- // marker per spawned session; entirely host-local.
770
- // - .claude/audit/: hook-decision audit log + suppressions
771
- // config; host-specific by nature.
772
- // Syncing produces guaranteed conflicts per machine per session.
773
- const shouldSync = createIgnoreFilter(hqRoot);
774
- expect(shouldSync(path.join(hqRoot, ".claude/state/active-session-project"))).toBe(false);
775
- expect(shouldSync(path.join(hqRoot, ".claude/state/auto-session-project-571177ff-59bb-4728-8670-0bf66a6410a5"))).toBe(false);
776
- expect(shouldSync(path.join(hqRoot, ".claude/audit/instructions.md"))).toBe(false);
777
- expect(shouldSync(path.join(hqRoot, ".claude/audit/suppressions.yaml"))).toBe(false);
778
- expect(shouldSync(path.join(hqRoot, ".claude/state"), true)).toBe(false);
779
- expect(shouldSync(path.join(hqRoot, ".claude/audit"), true)).toBe(false);
780
- // Nested .claude/ inside a company also stays local — same anchor
781
- // shape as the .claude/worktrees/ rule directly above.
782
- expect(shouldSync(path.join(hqRoot, "companies/indigo/.claude/state/active-session-project"))).toBe(false);
783
- expect(shouldSync(path.join(hqRoot, "companies/indigo/.claude/audit/instructions.md"))).toBe(false);
784
- // The .claude/ dir's other contents (commands, skills, hooks) still
785
- // sync — the rule MUST NOT broaden to .claude/.
786
- expect(shouldSync(path.join(hqRoot, ".claude/skills/foo/SKILL.md"))).toBe(true);
787
- expect(shouldSync(path.join(hqRoot, ".claude/hooks/foo.sh"))).toBe(true);
788
- });
789
- it("permissive mode: .claude/settings*.json is machine-local, never synced (qmd PATH regression)", () => {
790
- // 2026-07-01 e2e-mac report (20260701-qmd-path): cloud sync pulled the
791
- // operator's .claude/settings.json over a fresh install's copy ~40s
792
- // after install, byte-identical to the source machine — reverting the
793
- // installer's day-one env.PATH fix and propagating one host's PATH
794
- // snapshot to every machine/teammate. This is the recurrence mechanism
795
- // behind the recurring "qmd: command not found" reports. Settings are
796
- // machine-local (PATH snapshot, model prefs) and must never round-trip
797
- // in EITHER direction — the pull planner consults this same filter, so
798
- // an existing vault copy is also never applied locally.
799
- const shouldSync = createIgnoreFilter(hqRoot);
800
- expect(shouldSync(path.join(hqRoot, ".claude/settings.json"))).toBe(false);
801
- expect(shouldSync(path.join(hqRoot, ".claude/settings.local.json"))).toBe(false);
802
- // Nested .claude/ inside a company stays local too — same anchor shape
803
- // as the state/audit rules above.
804
- expect(shouldSync(path.join(hqRoot, "companies/indigo/.claude/settings.json"))).toBe(false);
805
- // Siblings still sync — the rule must not broaden past settings files.
806
- expect(shouldSync(path.join(hqRoot, ".claude/skills/foo/SKILL.md"))).toBe(true);
807
- expect(shouldSync(path.join(hqRoot, ".claude/hooks/foo.sh"))).toBe(true);
808
- expect(shouldSync(path.join(hqRoot, ".claude/CLAUDE.md"))).toBe(true);
809
- });
810
- it("permissive mode: .hq/ directory is per-host state, never synced (Bug #1/#6/#8)", () => {
811
- // Bug catalog: `.hq/install-manifest.json`, `.hq/machine-id`, and
812
- // `.hq/machine.json` are per-host source-of-truth files. The original
813
- // `DEFAULT_IGNORES` only covered the `.hq-*` wildcard (with hyphen) and
814
- // explicitly left the `.hq/` directory unaffected — so the install
815
- // manifest and machine-id round-tripped through S3 between hosts,
816
- // breaking the per-machine identity contract that the 5.33.0
817
- // machine-id fix relies on.
818
- const shouldSync = createIgnoreFilter(hqRoot);
819
- expect(shouldSync(path.join(hqRoot, ".hq/install-manifest.json"))).toBe(false);
820
- expect(shouldSync(path.join(hqRoot, ".hq/machine-id"))).toBe(false);
821
- expect(shouldSync(path.join(hqRoot, ".hq/machine.json"))).toBe(false);
822
- expect(shouldSync(path.join(hqRoot, ".hq/config.json"))).toBe(false);
823
- expect(shouldSync(path.join(hqRoot, ".hq"), true)).toBe(false);
824
- // Nested .hq/ inside a company also stays local (per-host scoping).
825
- expect(shouldSync(path.join(hqRoot, "companies/indigo/.hq/config.json"))).toBe(false);
826
- });
827
- it("excludes root .tmp-* build caches without excluding nested user content", () => {
828
- const shouldSync = createIgnoreFilter(hqRoot);
829
- const rootCache = path.join(hqRoot, ".tmp-c180-base");
830
- expect(shouldSync(rootCache, true)).toBe(false);
831
- expect(shouldSync(path.join(rootCache, "node-compile-cache", "entry"))).toBe(false);
832
- expect(shouldSync(path.join(hqRoot, "companies/indigo/knowledge/.tmp-c180-base"), true)).toBe(true);
833
- expect(shouldSync(path.join(hqRoot, "companies/indigo/knowledge/.tmp-c180-base/notes.md"))).toBe(true);
834
- });
835
- it("allowlist mode: presence of .hqinclude switches to opt-in", () => {
836
- fs.writeFileSync(path.join(hqRoot, ".hqinclude"), "companies/*/knowledge/\ncompanies/*/projects/\n");
837
- const shouldSync = createIgnoreFilter(hqRoot);
838
- // Allowlisted paths sync.
839
- expect(shouldSync(path.join(hqRoot, "companies/indigo/knowledge/foo.md"))).toBe(true);
840
- expect(shouldSync(path.join(hqRoot, "companies/indigo/projects/p1/prd.json"))).toBe(true);
841
- // Anything else stays local — this is the privacy guarantee.
842
- expect(shouldSync(path.join(hqRoot, "companies/indigo/data/leads.csv"))).toBe(false);
843
- expect(shouldSync(path.join(hqRoot, "companies/indigo/workers/cmo/skill.md"))).toBe(false);
844
- expect(shouldSync(path.join(hqRoot, "companies/indigo/settings/aws.json"))).toBe(false);
845
- expect(shouldSync(path.join(hqRoot, "personal/journal/2026-04-26.md"))).toBe(false);
846
- });
847
- it("allowlist mode: directory entries match dir-suffix include patterns (walker descent)", () => {
848
- // Regression: walkDir tests directory entries when deciding whether to
849
- // descend. The `ignore` lib only matches dir-only patterns like
850
- // `companies/*/knowledge/` against paths that end with `/`. The filter
851
- // accepts an `isDir` hint and appends the trailing slash before probing,
852
- // mirroring how git itself decides (it knows from the index whether
853
- // each entry is a tree or a blob). Without the hint the walker would
854
- // see `companies/indigo/knowledge` -> not allowed -> never descend ->
855
- // entire subtree silently lost. Files inside still work because
856
- // `ignore` walks ancestors internally; the bug only bites the descent
857
- // decision for directory entries.
858
- fs.writeFileSync(path.join(hqRoot, ".hqinclude"), "companies/*/knowledge/\ncompanies/*/projects/\n.claude/\n");
859
- const shouldSync = createIgnoreFilter(hqRoot);
860
- // Directory entries must be allowed when the caller hints isDir=true.
861
- expect(shouldSync(path.join(hqRoot, "companies/indigo/knowledge"), true)).toBe(true);
862
- expect(shouldSync(path.join(hqRoot, "companies/indigo/projects"), true)).toBe(true);
863
- expect(shouldSync(path.join(hqRoot, ".claude"), true)).toBe(true);
864
- // Files inside still resolve correctly without the hint.
865
- expect(shouldSync(path.join(hqRoot, "companies/indigo/knowledge/x.md"))).toBe(true);
866
- expect(shouldSync(path.join(hqRoot, ".claude/skills/foo/SKILL.md"))).toBe(true);
867
- // Machine-local settings stay excluded even inside an allowlisted
868
- // subtree — exclusion layers subtract on top of the allowlist.
869
- expect(shouldSync(path.join(hqRoot, ".claude/settings.json"))).toBe(false);
870
- // Non-allowlisted siblings stay excluded — privacy guarantee intact.
871
- expect(shouldSync(path.join(hqRoot, "companies/indigo/data"), true)).toBe(false);
872
- expect(shouldSync(path.join(hqRoot, "companies/indigo/workers"), true)).toBe(false);
873
- });
874
- it("allowlist mode: walker descends through intermediate ancestor dirs", () => {
875
- // Full gitignore semantics: a walker starting at hqRoot must be able to
876
- // descend through `companies/` and `companies/indigo/` to reach the
877
- // allowlisted leaf `companies/*/knowledge/`. The ancestor matcher
878
- // permits this for dir-mode queries while keeping files directly inside
879
- // those intermediate dirs excluded — privacy invariant intact.
880
- fs.writeFileSync(path.join(hqRoot, ".hqinclude"), "companies/*/knowledge/\n");
881
- const shouldSync = createIgnoreFilter(hqRoot);
882
- // Intermediate directories along the path to the leaf are descent-allowed.
883
- expect(shouldSync(path.join(hqRoot, "companies"), true)).toBe(true);
884
- expect(shouldSync(path.join(hqRoot, "companies/indigo"), true)).toBe(true);
885
- // The leaf itself is allowed.
886
- expect(shouldSync(path.join(hqRoot, "companies/indigo/knowledge"), true)).toBe(true);
887
- // Files directly inside intermediate dirs are still excluded — only the
888
- // dir is descent-allowed, the dir's loose files are not.
889
- expect(shouldSync(path.join(hqRoot, "companies/indigo/notes.md"))).toBe(false);
890
- expect(shouldSync(path.join(hqRoot, "companies/README.md"))).toBe(false);
891
- // Files inside the allowlisted leaf still sync.
892
- expect(shouldSync(path.join(hqRoot, "companies/indigo/knowledge/x.md"))).toBe(true);
893
- });
894
- it("dir-only ignore patterns honor the isDir hint symmetrically", () => {
895
- // Gitignore semantics: a trailing-slash pattern (`foo/`) matches only
896
- // directories, never files of the same name. The filter applies this
897
- // on BOTH layers — exclude and include — by appending `/` to the probe
898
- // when the caller passes isDir=true, and leaving it as-is otherwise.
899
- // This guarantees:
900
- // - a directory `node_modules` is excluded (descent skipped),
901
- // - but a regular file literally named `node_modules` is NOT
902
- // mistakenly excluded by the dir-only pattern.
903
- fs.writeFileSync(path.join(hqRoot, ".hqignore"), "build/\n");
904
- const shouldSync = createIgnoreFilter(hqRoot);
905
- // Directory `build` matches the dir-only exclusion.
906
- expect(shouldSync(path.join(hqRoot, "build"), true)).toBe(false);
907
- // A file literally named `build` (not a dir) does NOT match `build/`.
908
- // This is the asymmetry that previous PR comments warned about and
909
- // that the isDir hint resolves cleanly.
910
- expect(shouldSync(path.join(hqRoot, "build"), false)).toBe(true);
911
- // Default-call (no hint) is treated as "not a directory" — matches
912
- // gitignore's blob-default and preserves the file-side guarantee.
913
- expect(shouldSync(path.join(hqRoot, "build"))).toBe(true);
914
- });
915
- it("allowlist mode: exclusion layers still subtract on top", () => {
916
- // Even when a subtree is allowlisted, default ignores like node_modules/
917
- // and .env must still apply. Otherwise an allowlisted subdir would sync
918
- // gigabytes of dependency junk or leak secret env files.
919
- fs.writeFileSync(path.join(hqRoot, ".hqinclude"), "companies/*/projects/\n");
920
- const shouldSync = createIgnoreFilter(hqRoot);
921
- expect(shouldSync(path.join(hqRoot, "companies/indigo/projects/p1/prd.json"))).toBe(true);
922
- expect(shouldSync(path.join(hqRoot, "companies/indigo/projects/p1/node_modules/react/index.js"))).toBe(false);
923
- expect(shouldSync(path.join(hqRoot, "companies/indigo/projects/p1/.env"))).toBe(false);
924
- });
925
- });
926
- //# sourceMappingURL=ignore.test.js.map