@camstack/system 1.2.390 → 1.2.392

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 (575) hide show
  1. package/dist/addon/addon-api-factory.d.ts +30 -30
  2. package/dist/addon-routes/addon-route-registry.d.ts +31 -31
  3. package/dist/addon-runner.js +1 -1
  4. package/dist/addon-runner.mjs +1 -1
  5. package/dist/addon-utils.d.ts +22 -22
  6. package/dist/addon-utils.js +1 -1
  7. package/dist/addon-utils.mjs +1 -1
  8. package/dist/amd-accelerators-CEuPFBBK.js +36 -0
  9. package/dist/amd-accelerators-U_RsoEDd.mjs +35 -0
  10. package/dist/amd-npu-B-QyyMyF.js +53 -0
  11. package/dist/amd-npu-Db_SoSuL.mjs +52 -0
  12. package/dist/auth/admin-token-manager.d.ts +37 -67
  13. package/dist/auth/api-key-manager.d.ts +8 -8
  14. package/dist/auth/auth-audit-log.d.ts +29 -49
  15. package/dist/auth/auth-manager.d.ts +127 -126
  16. package/dist/auth/cidr.d.ts +8 -8
  17. package/dist/auth/external-identity-manager.d.ts +46 -34
  18. package/dist/auth/jwt-signing-key.d.ts +14 -14
  19. package/dist/auth/login-session-manager.d.ts +95 -135
  20. package/dist/auth/parse-record.d.ts +13 -13
  21. package/dist/auth/scope-matcher.d.ts +7 -7
  22. package/dist/auth/scoped-token-manager.d.ts +62 -62
  23. package/dist/auth/token-expiry.d.ts +49 -26
  24. package/dist/auth/totp-manager.d.ts +48 -48
  25. package/dist/auth/user-management-internal.d.ts +67 -52
  26. package/dist/auth/user-manager.d.ts +58 -58
  27. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.d.ts +54 -54
  28. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  29. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  30. package/dist/builtins/addon-pages-aggregator/dedupe-pages.d.ts +22 -4
  31. package/dist/builtins/addon-pages-aggregator/index.d.ts +1 -1
  32. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.d.ts +54 -54
  33. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  34. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  35. package/dist/builtins/addon-widgets-aggregator/index.d.ts +1 -1
  36. package/dist/builtins/alerts/alerts.addon.d.ts +88 -87
  37. package/dist/builtins/alerts/alerts.addon.js +1 -1
  38. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  39. package/dist/builtins/alerts/device-label.d.ts +6 -6
  40. package/dist/builtins/alerts/index.d.ts +1 -1
  41. package/dist/builtins/alerts/prune-policy.d.ts +36 -36
  42. package/dist/builtins/autotrack/autotrack-cameras.d.ts +102 -79
  43. package/dist/builtins/autotrack/autotrack-config.d.ts +81 -81
  44. package/dist/builtins/autotrack/autotrack-decision.d.ts +69 -82
  45. package/dist/builtins/autotrack/autotrack-loop.d.ts +81 -61
  46. package/dist/builtins/autotrack/autotrack.addon.d.ts +103 -66
  47. package/dist/builtins/autotrack/frame-error.d.ts +38 -38
  48. package/dist/builtins/autotrack/frame-measurements.d.ts +79 -79
  49. package/dist/builtins/autotrack/index.d.ts +2 -2
  50. package/dist/builtins/autotrack/index.js +1 -1
  51. package/dist/builtins/autotrack/index.mjs +1 -1
  52. package/dist/builtins/autotrack/ptz-mirror.d.ts +46 -17
  53. package/dist/builtins/autotrack/target-selection.d.ts +33 -47
  54. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.d.ts +270 -269
  55. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
  56. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
  57. package/dist/builtins/backup-orchestrator/cron-helpers.d.ts +17 -17
  58. package/dist/builtins/backup-orchestrator/destination-policy.d.ts +99 -82
  59. package/dist/builtins/backup-orchestrator/download-helpers.d.ts +9 -9
  60. package/dist/builtins/backup-orchestrator/encryption-key-store.d.ts +40 -29
  61. package/dist/builtins/backup-orchestrator/index.d.ts +2 -2
  62. package/dist/builtins/backup-orchestrator/manifest-store.d.ts +88 -69
  63. package/dist/builtins/backup-orchestrator/restore-archive.d.ts +14 -14
  64. package/dist/builtins/backup-orchestrator/run-queue.d.ts +86 -86
  65. package/dist/builtins/backup-orchestrator/schedule-store.d.ts +53 -37
  66. package/dist/builtins/backup-orchestrator/staging-paths.d.ts +23 -23
  67. package/dist/builtins/backup-orchestrator/write-targets.d.ts +53 -53
  68. package/dist/builtins/calendars/calendar-color.d.ts +5 -1
  69. package/dist/builtins/calendars/calendar-prefs-store.d.ts +18 -12
  70. package/dist/builtins/calendars/calendars.addon.d.ts +16 -11
  71. package/dist/builtins/calendars/calendars.addon.js +1 -1
  72. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  73. package/dist/builtins/calendars/index.d.ts +1 -1
  74. package/dist/builtins/camera-grid/acquire-retry.d.ts +26 -26
  75. package/dist/builtins/camera-grid/addon.d.ts +200 -174
  76. package/dist/builtins/camera-grid/flv-join.d.ts +32 -58
  77. package/dist/builtins/camera-grid/grid-activity-mirror.d.ts +37 -37
  78. package/dist/builtins/camera-grid/grid-activity.d.ts +83 -42
  79. package/dist/builtins/camera-grid/grid-camera-declarations.d.ts +46 -46
  80. package/dist/builtins/camera-grid/grid-camera-device.d.ts +60 -34
  81. package/dist/builtins/camera-grid/grid-canvas-derivation.d.ts +50 -15
  82. package/dist/builtins/camera-grid/grid-canvas-seed.d.ts +96 -46
  83. package/dist/builtins/camera-grid/grid-canvas.d.ts +74 -74
  84. package/dist/builtins/camera-grid/grid-child.d.ts +29 -16
  85. package/dist/builtins/camera-grid/grid-compositor-child.d.ts +2 -2
  86. package/dist/builtins/camera-grid/grid-compositor-invocation.d.ts +39 -11
  87. package/dist/builtins/camera-grid/grid-compositor.d.ts +50 -50
  88. package/dist/builtins/camera-grid/grid-detection-mapping.d.ts +52 -22
  89. package/dist/builtins/camera-grid/grid-device-settings.d.ts +31 -7
  90. package/dist/builtins/camera-grid/grid-filter-graph.d.ts +41 -41
  91. package/dist/builtins/camera-grid/grid-frame-sample.d.ts +45 -19
  92. package/dist/builtins/camera-grid/grid-instances.d.ts +20 -50
  93. package/dist/builtins/camera-grid/grid-last-frame-store.d.ts +51 -51
  94. package/dist/builtins/camera-grid/grid-layout-native-provider.d.ts +30 -4
  95. package/dist/builtins/camera-grid/grid-plan.d.ts +30 -20
  96. package/dist/builtins/camera-grid/grid-profiles.d.ts +85 -45
  97. package/dist/builtins/camera-grid/grid-row-normalization.d.ts +6 -6
  98. package/dist/builtins/camera-grid/grid-sentry-sources.d.ts +57 -57
  99. package/dist/builtins/camera-grid/grid-snapshot.d.ts +41 -41
  100. package/dist/builtins/camera-grid/grid-stream-descriptor.d.ts +49 -21
  101. package/dist/builtins/camera-grid/grid-stream-invocation.d.ts +37 -22
  102. package/dist/builtins/camera-grid/grid-stream-relay.d.ts +26 -26
  103. package/dist/builtins/camera-grid/grid-stream-session.d.ts +123 -93
  104. package/dist/builtins/camera-grid/grid-tile-feed.d.ts +47 -47
  105. package/dist/builtins/camera-grid/grid-tile-plan.d.ts +55 -20
  106. package/dist/builtins/camera-grid/grid-wire-format.d.ts +22 -6
  107. package/dist/builtins/camera-grid/index.d.ts +44 -44
  108. package/dist/builtins/camera-grid/index.js +1 -1
  109. package/dist/builtins/camera-grid/index.mjs +1 -1
  110. package/dist/builtins/camera-grid/silence-analysis.d.ts +31 -14
  111. package/dist/builtins/composer/claim-gate.d.ts +54 -27
  112. package/dist/builtins/composer/composed-device-set.d.ts +40 -26
  113. package/dist/builtins/composer/composed-device.d.ts +39 -17
  114. package/dist/builtins/composer/composer-apply-waits.d.ts +20 -13
  115. package/dist/builtins/composer/composer-grafts.d.ts +57 -38
  116. package/dist/builtins/composer/composer-live-set.d.ts +15 -15
  117. package/dist/builtins/composer/composer-plan.d.ts +76 -60
  118. package/dist/builtins/composer/composer-runtime-factory.d.ts +21 -14
  119. package/dist/builtins/composer/composer-seeds.d.ts +20 -14
  120. package/dist/builtins/composer/composer-verdict.d.ts +28 -14
  121. package/dist/builtins/composer/composer.addon.d.ts +23 -9
  122. package/dist/builtins/composer/composer.addon.js +2 -2
  123. package/dist/builtins/composer/composer.addon.mjs +2 -2
  124. package/dist/builtins/composer/composer.d.ts +145 -100
  125. package/dist/builtins/composer/composition-declarations.d.ts +50 -39
  126. package/dist/builtins/composer/composition-evaluation.d.ts +38 -22
  127. package/dist/builtins/composer/composition-runtime.d.ts +178 -125
  128. package/dist/builtins/composer/composition-target.d.ts +38 -34
  129. package/dist/builtins/composer/confirmed-seed.d.ts +35 -23
  130. package/dist/builtins/composer/deadline-timer.d.ts +13 -13
  131. package/dist/builtins/composer/existing-target.d.ts +90 -73
  132. package/dist/builtins/composer/field-record.d.ts +26 -19
  133. package/dist/builtins/composer/graft-host.d.ts +56 -32
  134. package/dist/builtins/composer/held-claims.d.ts +26 -9
  135. package/dist/builtins/composer/index.d.ts +1 -1
  136. package/dist/builtins/composer/own-field-reads.d.ts +26 -15
  137. package/dist/builtins/composer/owned-fields-target.d.ts +75 -44
  138. package/dist/builtins/composer/slice-assembler.d.ts +19 -3
  139. package/dist/builtins/composer/source-readings.d.ts +67 -61
  140. package/dist/builtins/composer/source-tracker.d.ts +133 -69
  141. package/dist/builtins/console-logging/console-destination.d.ts +15 -8
  142. package/dist/builtins/console-logging/console-logging.addon.d.ts +20 -19
  143. package/dist/builtins/console-logging/index.d.ts +3 -3
  144. package/dist/builtins/console-logging/index.js +1 -1
  145. package/dist/builtins/console-logging/index.mjs +1 -1
  146. package/dist/builtins/core-blocks/block-package.d.ts +37 -37
  147. package/dist/builtins/core-blocks/block-settings-store.d.ts +34 -21
  148. package/dist/builtins/core-blocks/block-supervisor.d.ts +138 -117
  149. package/dist/builtins/core-blocks/block-type-defs.d.ts +21 -21
  150. package/dist/builtins/core-blocks/blocks-integration.d.ts +76 -49
  151. package/dist/builtins/core-blocks/compile-block.d.ts +37 -37
  152. package/dist/builtins/core-blocks/composition-api.d.ts +38 -24
  153. package/dist/builtins/core-blocks/composition-peers.d.ts +26 -4
  154. package/dist/builtins/core-blocks/composition-sources.d.ts +25 -10
  155. package/dist/builtins/core-blocks/core-block-store.d.ts +109 -109
  156. package/dist/builtins/core-blocks/core-blocks.addon.d.ts +72 -72
  157. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  158. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  159. package/dist/builtins/core-blocks/extract-settings-schema.d.ts +4 -4
  160. package/dist/builtins/core-blocks/index.d.ts +8 -8
  161. package/dist/builtins/device-manager/adoption-job-engine.d.ts +141 -98
  162. package/dist/builtins/device-manager/claimed-status-overlay.d.ts +42 -9
  163. package/dist/builtins/device-manager/contribution-cache.d.ts +56 -56
  164. package/dist/builtins/device-manager/day-night-config-schema.d.ts +26 -12
  165. package/dist/builtins/device-manager/device-aggregation-merge.d.ts +17 -17
  166. package/dist/builtins/device-manager/device-aggregation.d.ts +277 -254
  167. package/dist/builtins/device-manager/device-bindings-store.d.ts +232 -220
  168. package/dist/builtins/device-manager/device-config-contribution.d.ts +29 -29
  169. package/dist/builtins/device-manager/device-config-secrets.d.ts +32 -13
  170. package/dist/builtins/device-manager/device-event-propagator.d.ts +22 -22
  171. package/dist/builtins/device-manager/device-extension-linked-slot.d.ts +17 -17
  172. package/dist/builtins/device-manager/device-form-secrets.d.ts +14 -14
  173. package/dist/builtins/device-manager/device-linked-devices.d.ts +159 -98
  174. package/dist/builtins/device-manager/device-manager.addon.d.ts +223 -197
  175. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  176. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  177. package/dist/builtins/device-manager/device-meta-actions.d.ts +306 -305
  178. package/dist/builtins/device-manager/device-meta-store.d.ts +100 -90
  179. package/dist/builtins/device-manager/device-meta-types.d.ts +250 -241
  180. package/dist/builtins/device-manager/device-online-fallback.d.ts +30 -30
  181. package/dist/builtins/device-manager/device-projection.d.ts +53 -67
  182. package/dist/builtins/device-manager/device-provider-context.d.ts +109 -94
  183. package/dist/builtins/device-manager/device-queries.d.ts +63 -63
  184. package/dist/builtins/device-manager/device-row-store.d.ts +417 -365
  185. package/dist/builtins/device-manager/device-source-activation.d.ts +91 -49
  186. package/dist/builtins/device-manager/device-state-claim-views.d.ts +76 -61
  187. package/dist/builtins/device-manager/device-state-claims.d.ts +53 -30
  188. package/dist/builtins/device-manager/device-state-mirror.d.ts +256 -264
  189. package/dist/builtins/device-manager/device-sync-resolvers.d.ts +25 -25
  190. package/dist/builtins/device-manager/field-claims-index.d.ts +85 -58
  191. package/dist/builtins/device-manager/field-ownership.d.ts +54 -36
  192. package/dist/builtins/device-manager/fleet-read-census.d.ts +99 -61
  193. package/dist/builtins/device-manager/image-settings-config-schema.d.ts +18 -8
  194. package/dist/builtins/device-manager/index.d.ts +2 -2
  195. package/dist/builtins/device-manager/linked-devices-manual-backfill.d.ts +20 -9
  196. package/dist/builtins/device-manager/location-alignment.d.ts +46 -46
  197. package/dist/builtins/device-manager/migrate-device.d.ts +178 -101
  198. package/dist/builtins/device-manager/migrate-guard.d.ts +66 -34
  199. package/dist/builtins/device-manager/migrate-hardware-state.d.ts +59 -59
  200. package/dist/builtins/device-manager/migrate-reload.d.ts +42 -4
  201. package/dist/builtins/device-manager/migration-refused.d.ts +20 -20
  202. package/dist/builtins/device-manager/mirror-row-writer.d.ts +205 -179
  203. package/dist/builtins/device-manager/recording-onboard-config-schema.d.ts +56 -32
  204. package/dist/builtins/device-manager/removal-fence.d.ts +48 -48
  205. package/dist/builtins/device-manager/runtime-state-persist-gate.d.ts +54 -26
  206. package/dist/builtins/device-manager/secret-config-paths.d.ts +17 -17
  207. package/dist/builtins/device-manager/stale-wrapper-activations.d.ts +52 -25
  208. package/dist/builtins/device-manager/write-lock.d.ts +13 -13
  209. package/dist/builtins/hub-forwarder/hub-forwarder-destination.d.ts +41 -41
  210. package/dist/builtins/hub-forwarder/hub-forwarder.addon.d.ts +13 -12
  211. package/dist/builtins/hub-forwarder/index.d.ts +3 -3
  212. package/dist/builtins/hub-forwarder/index.js +1 -1
  213. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  214. package/dist/builtins/keychain/index.d.ts +1 -1
  215. package/dist/builtins/keychain/index.js +3 -3
  216. package/dist/builtins/keychain/index.mjs +3 -3
  217. package/dist/builtins/keychain/key-sources.d.ts +19 -19
  218. package/dist/builtins/keychain/keychain-crypto.d.ts +4 -4
  219. package/dist/builtins/keychain/keychain-reset-trigger.d.ts +13 -13
  220. package/dist/builtins/keychain/keychain-service.d.ts +128 -128
  221. package/dist/builtins/keychain/keychain-store.d.ts +96 -87
  222. package/dist/builtins/keychain/keychain-usage.d.ts +13 -2
  223. package/dist/builtins/keychain/keychain.addon.d.ts +31 -6
  224. package/dist/builtins/keychain/platform-key-source.d.ts +15 -15
  225. package/dist/builtins/keychain/system-held-secrets.d.ts +17 -4
  226. package/dist/builtins/liveness-monitor/index.d.ts +2 -2
  227. package/dist/builtins/liveness-monitor/liveness-checks.d.ts +73 -52
  228. package/dist/builtins/liveness-monitor/liveness-monitor.addon.d.ts +57 -36
  229. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  230. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  231. package/dist/builtins/local-auth/admin-account-boot.d.ts +14 -14
  232. package/dist/builtins/local-auth/auth-config-reader.d.ts +34 -17
  233. package/dist/builtins/local-auth/auth-schema.d.ts +92 -69
  234. package/dist/builtins/local-auth/index.d.ts +1 -1
  235. package/dist/builtins/local-auth/jwt-signing-key-keeper.d.ts +22 -22
  236. package/dist/builtins/local-auth/local-auth.addon.d.ts +41 -40
  237. package/dist/builtins/local-auth/local-auth.addon.js +2 -2
  238. package/dist/builtins/local-auth/local-auth.addon.mjs +2 -2
  239. package/dist/builtins/local-auth/oauth-grants.d.ts +57 -57
  240. package/dist/builtins/local-auth/oauth-session-manager.d.ts +62 -62
  241. package/dist/builtins/local-network/address-book.d.ts +61 -36
  242. package/dist/builtins/local-network/index.d.ts +2 -2
  243. package/dist/builtins/local-network/ipv6-lan.d.ts +12 -17
  244. package/dist/builtins/local-network/local-hostname.d.ts +10 -10
  245. package/dist/builtins/local-network/local-network.addon.d.ts +259 -258
  246. package/dist/builtins/local-network/local-network.addon.js +1 -1
  247. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  248. package/dist/builtins/loki-logging/index.d.ts +4 -4
  249. package/dist/builtins/loki-logging/index.js +1 -1
  250. package/dist/builtins/loki-logging/index.mjs +1 -1
  251. package/dist/builtins/loki-logging/loki-destination.d.ts +113 -87
  252. package/dist/builtins/loki-logging/loki-logging.addon.d.ts +61 -42
  253. package/dist/builtins/loki-logging/loki-payload.d.ts +82 -39
  254. package/dist/builtins/loki-logging/retire-enabled-flag.d.ts +37 -12
  255. package/dist/builtins/native-metrics/cgroup-memory.d.ts +206 -159
  256. package/dist/builtins/native-metrics/cgroup-pids.d.ts +138 -91
  257. package/dist/builtins/native-metrics/container-memory-series.d.ts +212 -178
  258. package/dist/builtins/native-metrics/gpu-probe.d.ts +9 -9
  259. package/dist/builtins/native-metrics/index.d.ts +2 -2
  260. package/dist/builtins/native-metrics/load-series-config.d.ts +29 -57
  261. package/dist/builtins/native-metrics/load-series-reader.d.ts +52 -26
  262. package/dist/builtins/native-metrics/load-series-store.d.ts +237 -176
  263. package/dist/builtins/native-metrics/native-metrics-provider.d.ts +43 -43
  264. package/dist/builtins/native-metrics/native-metrics.addon.d.ts +230 -230
  265. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  266. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  267. package/dist/builtins/native-metrics/node-load-ring.d.ts +196 -196
  268. package/dist/builtins/native-metrics/proc-process-table.d.ts +12 -12
  269. package/dist/builtins/native-metrics/process-classification.d.ts +95 -36
  270. package/dist/builtins/native-metrics/thread-cpu-sampler.d.ts +95 -95
  271. package/dist/builtins/platform-probe/amd-accelerators.d.ts +15 -0
  272. package/dist/builtins/platform-probe/amd-npu.d.ts +29 -0
  273. package/dist/builtins/platform-probe/coral-accelerators.d.ts +17 -17
  274. package/dist/builtins/platform-probe/index.d.ts +38 -30
  275. package/dist/builtins/platform-probe/index.js +59 -22
  276. package/dist/builtins/platform-probe/index.mjs +59 -22
  277. package/dist/builtins/platform-probe/inference-config-resolver.d.ts +27 -27
  278. package/dist/builtins/platform-probe/intel-accelerators.d.ts +8 -8
  279. package/dist/builtins/platform-probe/intel-npu.d.ts +30 -30
  280. package/dist/builtins/platform-probe/platform-scorer.d.ts +35 -35
  281. package/dist/builtins/platform-probe/runtime-packages.d.ts +3 -3
  282. package/dist/builtins/remote-access-orchestrator/enabled-providers-reconcile.d.ts +87 -87
  283. package/dist/builtins/remote-access-orchestrator/index.d.ts +1 -1
  284. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.d.ts +66 -35
  285. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  286. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  287. package/dist/builtins/shared/device-state-changed.d.ts +9 -9
  288. package/dist/builtins/shared/settle-sources.d.ts +16 -16
  289. package/dist/builtins/snapshot/index.d.ts +2 -2
  290. package/dist/builtins/snapshot/index.js +1 -1
  291. package/dist/builtins/snapshot/index.mjs +1 -1
  292. package/dist/builtins/snapshot/snapshot-cache.d.ts +92 -92
  293. package/dist/builtins/snapshot/snapshot-coalescing.d.ts +108 -108
  294. package/dist/builtins/snapshot/snapshot-courtesy.d.ts +48 -48
  295. package/dist/builtins/snapshot/snapshot-durable-store.d.ts +32 -32
  296. package/dist/builtins/snapshot/snapshot-fatigue.d.ts +34 -34
  297. package/dist/builtins/snapshot/snapshot-grab-pick.d.ts +14 -14
  298. package/dist/builtins/snapshot/snapshot-link-url.d.ts +49 -49
  299. package/dist/builtins/snapshot/snapshot-media-handler.d.ts +97 -97
  300. package/dist/builtins/snapshot/snapshot-resize.d.ts +64 -103
  301. package/dist/builtins/snapshot/snapshot.addon.d.ts +569 -568
  302. package/dist/builtins/sqlite-storage/analyze-stats.d.ts +73 -29
  303. package/dist/builtins/sqlite-storage/config-store.d.ts +6 -6
  304. package/dist/builtins/sqlite-storage/device-store.d.ts +16 -16
  305. package/dist/builtins/sqlite-storage/filesystem-browse-provider.d.ts +23 -23
  306. package/dist/builtins/sqlite-storage/filesystem-storage-provider.d.ts +79 -79
  307. package/dist/builtins/sqlite-storage/filesystem-storage.addon.d.ts +27 -26
  308. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  309. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  310. package/dist/builtins/sqlite-storage/filter-compiler.d.ts +107 -107
  311. package/dist/builtins/sqlite-storage/index.d.ts +12 -12
  312. package/dist/builtins/sqlite-storage/integration-registry.d.ts +37 -37
  313. package/dist/builtins/sqlite-storage/path-guard.d.ts +5 -5
  314. package/dist/builtins/sqlite-storage/prefix-range.d.ts +44 -44
  315. package/dist/builtins/sqlite-storage/query-bounds.d.ts +100 -106
  316. package/dist/builtins/sqlite-storage/query-profiler.d.ts +217 -217
  317. package/dist/builtins/sqlite-storage/retired-collections.d.ts +124 -55
  318. package/dist/builtins/sqlite-storage/retired-settings-keys.d.ts +239 -189
  319. package/dist/builtins/sqlite-storage/shm-lock-canary.d.ts +41 -41
  320. package/dist/builtins/sqlite-storage/sqlite-pragmas.d.ts +162 -162
  321. package/dist/builtins/sqlite-storage/sqlite-settings-backend.d.ts +458 -458
  322. package/dist/builtins/sqlite-storage/sqlite-settings.addon.d.ts +59 -58
  323. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  324. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  325. package/dist/builtins/sqlite-storage/sqlite-snapshot-protocol.d.ts +37 -32
  326. package/dist/builtins/sqlite-storage/sqlite-snapshot-worker.d.ts +19 -19
  327. package/dist/builtins/sqlite-storage/sqlite-snapshotter.d.ts +76 -76
  328. package/dist/builtins/sqlite-storage/statement-shape.d.ts +54 -54
  329. package/dist/builtins/sqlite-storage/table-sizes.d.ts +71 -71
  330. package/dist/builtins/sqlite-storage/vector-index-shared.d.ts +63 -54
  331. package/dist/builtins/sqlite-storage/vector-index-vec.d.ts +133 -96
  332. package/dist/builtins/sqlite-storage/wal-checkpoint-policy.d.ts +161 -161
  333. package/dist/builtins/sqlite-storage/wal-checkpointer.d.ts +60 -60
  334. package/dist/builtins/sqlite-storage/wal-maintenance.d.ts +94 -94
  335. package/dist/builtins/storage-orchestrator/access-guards.d.ts +37 -26
  336. package/dist/builtins/storage-orchestrator/data-store-dispatch.d.ts +33 -18
  337. package/dist/builtins/storage-orchestrator/drain-ratchet.d.ts +85 -85
  338. package/dist/builtins/storage-orchestrator/drain-state-store.d.ts +20 -10
  339. package/dist/builtins/storage-orchestrator/hub-settings-forward.d.ts +113 -53
  340. package/dist/builtins/storage-orchestrator/index.d.ts +7 -7
  341. package/dist/builtins/storage-orchestrator/location-occupancy-slice.d.ts +64 -40
  342. package/dist/builtins/storage-orchestrator/location-occupancy.d.ts +14 -14
  343. package/dist/builtins/storage-orchestrator/location-protection.d.ts +13 -13
  344. package/dist/builtins/storage-orchestrator/location-repoint-move.d.ts +44 -44
  345. package/dist/builtins/storage-orchestrator/location-root-collision.d.ts +61 -25
  346. package/dist/builtins/storage-orchestrator/location-secrets.d.ts +99 -58
  347. package/dist/builtins/storage-orchestrator/location-store.d.ts +56 -47
  348. package/dist/builtins/storage-orchestrator/location-volume-capacity.d.ts +37 -37
  349. package/dist/builtins/storage-orchestrator/provider-discovery.d.ts +20 -6
  350. package/dist/builtins/storage-orchestrator/storage-cleanup-coordinator.d.ts +51 -51
  351. package/dist/builtins/storage-orchestrator/storage-migration-coordinator.d.ts +224 -224
  352. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.d.ts +292 -292
  353. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  354. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  355. package/dist/builtins/storage-orchestrator/storage-orchestrator.service.d.ts +431 -450
  356. package/dist/builtins/storage-orchestrator/storage-pressure-manager.d.ts +104 -104
  357. package/dist/builtins/system-backup/backup-encryption.d.ts +60 -23
  358. package/dist/builtins/system-backup/system-backup.service.d.ts +240 -240
  359. package/dist/builtins/system-config/cluster-secret-keeper.d.ts +54 -34
  360. package/dist/builtins/system-config/index.d.ts +2 -2
  361. package/dist/builtins/system-config/mesh-actions.d.ts +2 -30
  362. package/dist/builtins/system-config/system-config.addon.d.ts +57 -100
  363. package/dist/builtins/system-config/system-config.addon.js +39 -35
  364. package/dist/builtins/system-config/system-config.addon.mjs +320 -316
  365. package/dist/builtins/winston-logging/index.d.ts +3 -3
  366. package/dist/builtins/winston-logging/index.js +1 -1
  367. package/dist/builtins/winston-logging/index.mjs +1 -1
  368. package/dist/builtins/winston-logging/winston-destination.d.ts +15 -15
  369. package/dist/builtins/winston-logging/winston-logging.addon.d.ts +14 -13
  370. package/dist/{child-cap-dispatch-nURMuVTX.js → child-cap-dispatch-Nx-lrlHR.js} +19 -1
  371. package/dist/{child-cap-dispatch-B1gyE35b.mjs → child-cap-dispatch-x-onDDiV.mjs} +2 -2
  372. package/dist/{composition-sources-wdAxs-uY.js → composition-sources-LUJsW0AQ.js} +1 -1
  373. package/dist/{composition-sources-xqhm2Ygr.mjs → composition-sources-R8TskGSV.mjs} +1 -1
  374. package/dist/{constants-Ca-Sgcl8.js → constants-D4lxxip7.js} +1 -1
  375. package/dist/{constants-D5z4EwY8.mjs → constants-DMvAcbbP.mjs} +1 -1
  376. package/dist/{dist-8LQ4lDEB.js → dist-XTkzsnz-.js} +35 -1
  377. package/dist/{dist-Biqn3TEn.mjs → dist-byg8IP4Q.mjs} +35 -1
  378. package/dist/download/hosted-model-revisions.d.ts +8 -8
  379. package/dist/download/model-download-service.d.ts +32 -32
  380. package/dist/download/model-downloader.d.ts +88 -88
  381. package/dist/{event-loop-stall-monitor-CNj73d4D.js → event-loop-stall-monitor-DPFghEFw.js} +1 -1
  382. package/dist/{event-loop-stall-monitor-BtK_0Pjc.mjs → event-loop-stall-monitor-TG8UcdY2.mjs} +1 -1
  383. package/dist/events/event-bus.d.ts +6 -6
  384. package/dist/events/system-event-bus.d.ts +11 -11
  385. package/dist/feature/feature-manager.d.ts +6 -6
  386. package/dist/http/asset-compression.d.ts +35 -73
  387. package/dist/http/authenticated-file-server.d.ts +32 -32
  388. package/dist/http/data-plane-registry.d.ts +49 -39
  389. package/dist/http/file-data-plane.d.ts +14 -14
  390. package/dist/http/lan-http-bind.d.ts +24 -13
  391. package/dist/http/reverse-proxy.d.ts +36 -24
  392. package/dist/index.d.ts +137 -137
  393. package/dist/index.js +9 -8
  394. package/dist/index.mjs +7 -9
  395. package/dist/{jwt-signing-key-DxV2ucvJ.js → jwt-signing-key-CD87HrHH.js} +1 -1
  396. package/dist/{jwt-signing-key-SnDgvVUQ.mjs → jwt-signing-key-DNBxSN5p.mjs} +1 -1
  397. package/dist/kernel/addon-class-resolver.d.ts +1 -1
  398. package/dist/kernel/addon-engine-manager.d.ts +20 -20
  399. package/dist/kernel/addon-health-monitor.d.ts +151 -151
  400. package/dist/kernel/addon-installer.d.ts +609 -609
  401. package/dist/kernel/addon-loader.d.ts +133 -133
  402. package/dist/kernel/addon-manifest.d.ts +118 -118
  403. package/dist/kernel/addon-residue.d.ts +28 -32
  404. package/dist/kernel/array-buffer-census.d.ts +84 -88
  405. package/dist/kernel/bootstrap-config.d.ts +3 -3
  406. package/dist/kernel/cap-router-builder.d.ts +145 -101
  407. package/dist/kernel/capability-handle.d.ts +41 -41
  408. package/dist/kernel/capability-registry.d.ts +588 -576
  409. package/dist/kernel/config-manager.d.ts +199 -199
  410. package/dist/kernel/config-schema.d.ts +132 -128
  411. package/dist/kernel/custom-action-registry.d.ts +25 -25
  412. package/dist/kernel/deps/addon-deps-manager.d.ts +17 -17
  413. package/dist/kernel/deps/closure-dedupe.d.ts +76 -76
  414. package/dist/kernel/deps/ensure-addon-natives.d.ts +34 -34
  415. package/dist/kernel/deps/ensure-native-prebuilds.d.ts +25 -25
  416. package/dist/kernel/deps/manifest-native-deps.d.ts +38 -38
  417. package/dist/kernel/deps/manifest-python-deps.d.ts +18 -18
  418. package/dist/kernel/deps/manifest-system-deps.d.ts +13 -13
  419. package/dist/kernel/deps/npm-command.d.ts +45 -45
  420. package/dist/kernel/deps/system-package-allowlist.d.ts +9 -9
  421. package/dist/kernel/deps/system-package-broker.d.ts +20 -20
  422. package/dist/kernel/deps/system-package-client.d.ts +3 -3
  423. package/dist/kernel/device-registry.d.ts +27 -27
  424. package/dist/kernel/event-loop-stall-monitor.d.ts +33 -33
  425. package/dist/kernel/event-plane-report.d.ts +174 -174
  426. package/dist/kernel/fs-utils.d.ts +70 -70
  427. package/dist/kernel/gc-census.d.ts +119 -119
  428. package/dist/kernel/heap-spaces.d.ts +87 -87
  429. package/dist/kernel/heap-watch.d.ts +706 -706
  430. package/dist/kernel/host-externals.d.ts +8 -8
  431. package/dist/kernel/hwaccel/hwaccel-resolver.d.ts +27 -27
  432. package/dist/kernel/index.d.ts +115 -113
  433. package/dist/kernel/inference/inference-resolver.d.ts +13 -13
  434. package/dist/kernel/infra-capabilities.d.ts +7 -7
  435. package/dist/kernel/isolated-builtin-phase.d.ts +42 -42
  436. package/dist/kernel/lifecycle/job-journal.d.ts +17 -17
  437. package/dist/kernel/lifecycle/lifecycle-job-engine.d.ts +99 -99
  438. package/dist/kernel/lifecycle/staging-area.d.ts +22 -22
  439. package/dist/kernel/moleculer/addon-context-factory.d.ts +90 -89
  440. package/dist/kernel/moleculer/addon-data-plane-facility.d.ts +12 -12
  441. package/dist/kernel/moleculer/addon-deploy-source.d.ts +11 -11
  442. package/dist/kernel/moleculer/addon-peer-bytes-facility.d.ts +18 -18
  443. package/dist/kernel/moleculer/addon-service-factory.d.ts +41 -41
  444. package/dist/kernel/moleculer/agent-mesh-authenticator.d.ts +60 -33
  445. package/dist/kernel/moleculer/agent-ui-unlock.d.ts +30 -30
  446. package/dist/kernel/moleculer/broker-factory.d.ts +61 -61
  447. package/dist/kernel/moleculer/cap-usage-registry.d.ts +108 -153
  448. package/dist/kernel/moleculer/capabilities-access.d.ts +19 -19
  449. package/dist/kernel/moleculer/child-addon-call-dispatch.d.ts +43 -43
  450. package/dist/kernel/moleculer/child-cap-descriptors.d.ts +26 -26
  451. package/dist/kernel/moleculer/child-cap-dispatch.d.ts +52 -52
  452. package/dist/kernel/moleculer/children-batch-loader.d.ts +86 -34
  453. package/dist/kernel/moleculer/cluster-secret.d.ts +19 -19
  454. package/dist/kernel/moleculer/core-cap-service.d.ts +53 -53
  455. package/dist/kernel/moleculer/crash-supervisor.d.ts +39 -39
  456. package/dist/kernel/moleculer/device-cap-proxy.d.ts +51 -51
  457. package/dist/kernel/moleculer/device-event-ring.d.ts +117 -75
  458. package/dist/kernel/moleculer/event-bus-core.d.ts +171 -159
  459. package/dist/kernel/moleculer/event-bus.d.ts +73 -73
  460. package/dist/kernel/moleculer/hub-log-forwarder.d.ts +30 -30
  461. package/dist/kernel/moleculer/hub-service.d.ts +42 -42
  462. package/dist/kernel/moleculer/init-watchdog.d.ts +49 -49
  463. package/dist/kernel/moleculer/mesh-access-middleware.d.ts +36 -21
  464. package/dist/kernel/moleculer/mesh-auth-mode.d.ts +33 -39
  465. package/dist/kernel/moleculer/mesh-authenticator.d.ts +58 -58
  466. package/dist/kernel/moleculer/mesh-auto-enforce.d.ts +38 -18
  467. package/dist/kernel/moleculer/mesh-join-client.d.ts +67 -45
  468. package/dist/kernel/moleculer/mesh-join-proof.d.ts +8 -8
  469. package/dist/kernel/moleculer/mesh-mtls/constants.d.ts +1 -1
  470. package/dist/kernel/moleculer/mesh-mtls/index.d.ts +10 -10
  471. package/dist/kernel/moleculer/mesh-mtls/mesh-ca-keeper.d.ts +43 -38
  472. package/dist/kernel/moleculer/mesh-mtls/mesh-ca.d.ts +29 -20
  473. package/dist/kernel/moleculer/mesh-mtls/mesh-clear-port.d.ts +32 -32
  474. package/dist/kernel/moleculer/mesh-mtls/mesh-crl.d.ts +11 -11
  475. package/dist/kernel/moleculer/mesh-mtls/mesh-enroll.d.ts +19 -16
  476. package/dist/kernel/moleculer/mesh-mtls/mesh-join-token.d.ts +40 -40
  477. package/dist/kernel/moleculer/mesh-mtls/mesh-tls-enabler.d.ts +5 -1
  478. package/dist/kernel/moleculer/mesh-mtls/tls-tcp-transporter.d.ts +131 -130
  479. package/dist/kernel/moleculer/mesh-queue-report.d.ts +39 -39
  480. package/dist/kernel/moleculer/node-registry.d.ts +120 -120
  481. package/dist/kernel/moleculer/process-context.d.ts +2 -2
  482. package/dist/kernel/moleculer/process-service.d.ts +168 -168
  483. package/dist/kernel/moleculer/provider-registry.d.ts +9 -9
  484. package/dist/kernel/moleculer/readiness-context.d.ts +58 -58
  485. package/dist/kernel/moleculer/readiness-service.d.ts +31 -16
  486. package/dist/kernel/moleculer/register-framework-resolver.d.ts +6 -6
  487. package/dist/kernel/moleculer/register-node-client.d.ts +34 -27
  488. package/dist/kernel/moleculer/remote-logger.d.ts +29 -29
  489. package/dist/kernel/moleculer/resilient-cap-call.d.ts +21 -21
  490. package/dist/kernel/moleculer/runner-native-allocator.d.ts +95 -95
  491. package/dist/kernel/moleculer/runner-process-group.d.ts +57 -57
  492. package/dist/kernel/moleculer/runtime-state-load.d.ts +21 -11
  493. package/dist/kernel/moleculer/settings-read-guard.d.ts +39 -39
  494. package/dist/kernel/moleculer/stream-probe-service.d.ts +25 -6
  495. package/dist/kernel/moleculer/trpc-links.d.ts +203 -203
  496. package/dist/kernel/moleculer/typed-array-serde.d.ts +9 -20
  497. package/dist/kernel/moleculer/worker-device-restore.d.ts +8 -8
  498. package/dist/kernel/outbound-queue-watch.d.ts +74 -74
  499. package/dist/kernel/process-cpu-census.d.ts +55 -55
  500. package/dist/kernel/provider-kind-drift.d.ts +17 -8
  501. package/dist/kernel/restart-coordinator.d.ts +71 -71
  502. package/dist/kernel/settings-door-view.d.ts +36 -25
  503. package/dist/kernel/settings-read-error.d.ts +29 -31
  504. package/dist/kernel/settings-view-types.d.ts +100 -95
  505. package/dist/kernel/socket-plane-report.d.ts +214 -153
  506. package/dist/kernel/status-overlay.d.ts +31 -11
  507. package/dist/kernel/storage-location-registry.d.ts +50 -50
  508. package/dist/kernel/store-settings-view.d.ts +13 -13
  509. package/dist/kernel/system-settings-mirror.d.ts +40 -28
  510. package/dist/kernel/system-settings-policy.d.ts +15 -34
  511. package/dist/kernel/transport/cap-action-census.d.ts +183 -183
  512. package/dist/kernel/transport/cap-action-name.d.ts +84 -84
  513. package/dist/kernel/transport/cap-child-index.d.ts +41 -41
  514. package/dist/kernel/transport/cap-route-resolver.d.ts +237 -212
  515. package/dist/kernel/transport/cap-route.d.ts +139 -139
  516. package/dist/kernel/transport/cap-routing-hints.d.ts +37 -37
  517. package/dist/kernel/transport/child-cap-protocol.d.ts +245 -245
  518. package/dist/kernel/transport/claimed-get-status.d.ts +30 -6
  519. package/dist/kernel/transport/create-local-transport.d.ts +5 -5
  520. package/dist/kernel/transport/frame-codec.d.ts +109 -109
  521. package/dist/kernel/transport/hub-cap-forward.d.ts +81 -59
  522. package/dist/kernel/transport/index.d.ts +36 -36
  523. package/dist/kernel/transport/local-child-client.d.ts +184 -184
  524. package/dist/kernel/transport/local-child-registry.d.ts +592 -592
  525. package/dist/kernel/transport/local-endpoint-path.d.ts +4 -4
  526. package/dist/kernel/transport/local-transport.d.ts +92 -92
  527. package/dist/kernel/transport/parent-unowned-call.d.ts +266 -237
  528. package/dist/kernel/transport/peer-answered-error.d.ts +14 -14
  529. package/dist/kernel/transport/socket-channel.d.ts +110 -110
  530. package/dist/kernel/transport/socket-traffic.d.ts +96 -96
  531. package/dist/kernel/transport/uds-event-bridge.d.ts +77 -50
  532. package/dist/kernel/transport/uds-event-bus.d.ts +75 -26
  533. package/dist/kernel/transport/uds-local-transport.d.ts +14 -14
  534. package/dist/kernel/transport/uds-log-ingest.d.ts +38 -23
  535. package/dist/kernel/transport/uds-logger.d.ts +33 -33
  536. package/dist/kernel/utils/ring-buffer.d.ts +12 -12
  537. package/dist/kernel/workspace-detect.d.ts +7 -7
  538. package/dist/lifecycle/lifecycle-state-machine.d.ts +24 -24
  539. package/dist/logging/formatter.d.ts +52 -25
  540. package/dist/logging/log-manager.d.ts +133 -133
  541. package/dist/logging/log-redactor.d.ts +22 -1
  542. package/dist/logging/log-ring-buffer.d.ts +57 -57
  543. package/dist/logging/logging-gate.d.ts +69 -25
  544. package/dist/logging/logging-gate.singleton.d.ts +12 -1
  545. package/dist/logging/partitioned-log-buffer.d.ts +161 -161
  546. package/dist/logging/scoped-logger.d.ts +14 -14
  547. package/dist/network/network-quality.d.ts +8 -8
  548. package/dist/notification/notification-service.d.ts +37 -37
  549. package/dist/notification/toast-service.d.ts +18 -18
  550. package/dist/pipeline/engine-manager-resolver.d.ts +12 -12
  551. package/dist/pipeline/pipeline-runner.d.ts +6 -6
  552. package/dist/pipeline/pipeline-validator.d.ts +8 -8
  553. package/dist/process/proc-stat.d.ts +51 -51
  554. package/dist/process/resource-monitor.d.ts +19 -19
  555. package/dist/python/python-env-manager.d.ts +10 -10
  556. package/dist/repl/interfaces.d.ts +21 -21
  557. package/dist/repl/repl-engine.d.ts +6 -6
  558. package/dist/{restore-archive-D4cmLoNe.mjs → restore-archive-Bmmmyp1M.mjs} +81 -81
  559. package/dist/{restore-archive-Do_Yu5rC.js → restore-archive-bvYTsnvp.js} +1 -1
  560. package/dist/{retired-settings-keys-BsgVxh8-.mjs → retired-settings-keys-R9CBo2lY.mjs} +1 -1
  561. package/dist/{retired-settings-keys-Cyn3OD0K.js → retired-settings-keys-V0yq5Bm6.js} +1 -1
  562. package/dist/storage/fs-storage-backend.d.ts +35 -35
  563. package/dist/storage/storage-location-manager.d.ts +21 -21
  564. package/dist/storage/storage-manager.d.ts +68 -68
  565. package/dist/tls/boot-tls.d.ts +24 -24
  566. package/dist/tls/cert-evaluation.d.ts +25 -25
  567. package/dist/tls/cert-identity.d.ts +39 -39
  568. package/dist/tls/cert-issue.d.ts +37 -17
  569. package/dist/tls/cert-manager.d.ts +86 -84
  570. package/dist/tls/https-listener.d.ts +16 -16
  571. package/dist/tls/index.d.ts +8 -8
  572. package/dist/tls/tls-actions.d.ts +18 -18
  573. package/dist/tls/tls-status.d.ts +15 -15
  574. package/dist/tls/uploaded-cert.d.ts +9 -9
  575. package/package.json +9 -3
@@ -1,126 +1,126 @@
1
1
  /**
2
- * One filter compiler for both the read and the bulk-mutation paths.
3
- *
4
- * It exists because those two paths must NOT behave the same way, and until
5
- * now the only compiler lived inline in `query` — where being forgiving is
6
- * correct. Reusing it verbatim for `deleteWhere` would have shipped two
7
- * data-loss shapes:
8
- *
9
- * - **A dropped predicate.** A field that is not a column of a structured
10
- * table is skipped, so `{ deviceId: 615, kind: 'motion' }` can compile to
11
- * `WHERE "deviceId" = ?` — on a SELECT that returns extra rows, on a DELETE
12
- * it removes rows the caller meant to keep.
13
- * - **No predicate at all.** An empty filter compiles to an empty WHERE,
14
- * which on a DELETE is the entire collection.
15
- *
16
- * `select` mode keeps the historical behaviour, because every existing caller
17
- * was written against it. `mutate` mode refuses both, before any SQL exists.
18
- * Emptying a collection is a legitimate thing to want, and it should be a
19
- * differently-named operation rather than a filter that happens to be empty.
20
- * `measure` mode sits between them — see {@link FilterMode}.
21
- *
22
- * ── NULL is a value the language can name ────────────────────────────────
23
- *
24
- * A `null` on the right-hand side of `where` / `whereNot` compiles to `IS NULL`
25
- * / `IS NOT NULL`, and binds no parameter. It used to compile to `= ?` / `!= ?`
26
- * with a NULL parameter, and SQL three-valued logic makes both of those NULL
27
- * for every row: the filter matched NOTHING and the caller got a `0` that
28
- * looked like an answer. `pipelineAnalytics.countUnstampedEventMedia` — the
29
- * gate that decides whether 152 GB of event media may be repointed onto
30
- * another disk — asks exactly "how many rows have no `locationId`", and `0` is
31
- * the one value that opens it. `whereNot: { field: null }` was the same defect
32
- * mirrored: `(expr IS NULL OR expr != NULL)` is TRUE for a NULL row and NULL
33
- * for every other, so it selected precisely the rows it was asked to exclude.
34
- *
35
- * Nothing could ever have MEANT `= NULL`; there is no caller to preserve.
36
- */
2
+ * One filter compiler for both the read and the bulk-mutation paths.
3
+ *
4
+ * It exists because those two paths must NOT behave the same way, and until
5
+ * now the only compiler lived inline in `query` — where being forgiving is
6
+ * correct. Reusing it verbatim for `deleteWhere` would have shipped two
7
+ * data-loss shapes:
8
+ *
9
+ * - **A dropped predicate.** A field that is not a column of a structured
10
+ * table is skipped, so `{ deviceId: 615, kind: 'motion' }` can compile to
11
+ * `WHERE "deviceId" = ?` — on a SELECT that returns extra rows, on a DELETE
12
+ * it removes rows the caller meant to keep.
13
+ * - **No predicate at all.** An empty filter compiles to an empty WHERE,
14
+ * which on a DELETE is the entire collection.
15
+ *
16
+ * `select` mode keeps the historical behaviour, because every existing caller
17
+ * was written against it. `mutate` mode refuses both, before any SQL exists.
18
+ * Emptying a collection is a legitimate thing to want, and it should be a
19
+ * differently-named operation rather than a filter that happens to be empty.
20
+ * `measure` mode sits between them — see {@link FilterMode}.
21
+ *
22
+ * ── NULL is a value the language can name ────────────────────────────────
23
+ *
24
+ * A `null` on the right-hand side of `where` / `whereNot` compiles to `IS NULL`
25
+ * / `IS NOT NULL`, and binds no parameter. It used to compile to `= ?` / `!= ?`
26
+ * with a NULL parameter, and SQL three-valued logic makes both of those NULL
27
+ * for every row: the filter matched NOTHING and the caller got a `0` that
28
+ * looked like an answer. `pipelineAnalytics.countUnstampedEventMedia` — the
29
+ * gate that decides whether 152 GB of event media may be repointed onto
30
+ * another disk — asks exactly "how many rows have no `locationId`", and `0` is
31
+ * the one value that opens it. `whereNot: { field: null }` was the same defect
32
+ * mirrored: `(expr IS NULL OR expr != NULL)` is TRUE for a NULL row and NULL
33
+ * for every other, so it selected precisely the rows it was asked to exclude.
34
+ *
35
+ * Nothing could ever have MEANT `= NULL`; there is no caller to preserve.
36
+ */
37
37
  /** The part of a declared collection this compiler needs. */
38
38
  export interface CollectionShape {
39
- readonly primaryKey: string;
40
- readonly columns: ReadonlySet<string>;
41
- /**
42
- * The single JSON blob column for a KV-shaped collection (fields inside it
43
- * are reachable via `json_extract`), or `null` for a structured table whose
44
- * fields are real columns.
45
- */
46
- readonly kvBlobColumn: string | null;
39
+ readonly primaryKey: string;
40
+ readonly columns: ReadonlySet<string>;
41
+ /**
42
+ * The single JSON blob column for a KV-shaped collection (fields inside it
43
+ * are reachable via `json_extract`), or `null` for a structured table whose
44
+ * fields are real columns.
45
+ */
46
+ readonly kvBlobColumn: string | null;
47
47
  }
48
48
  /**
49
- * How forgiving this compilation is allowed to be.
50
- *
51
- * - `select` — a predicate naming a field the collection cannot express is
52
- * SKIPPED. The caller receives the rows and can see for itself that the
53
- * filter did not bite; the cost is extra rows, not a wrong belief.
54
- * - `measure` — the same predicate is REFUSED. A count, an aggregate or a
55
- * histogram hands back a NUMBER: the whole collection and the intended
56
- * subset are the same shape, and the caller has no way to tell which one it
57
- * was given. An empty filter is still fine — `COUNT(*)` over everything is a
58
- * legitimate question, unlike `DELETE` over everything. This closes the
59
- * asymmetry `aggregate` already applied to its FIELDS ("a dropped aggregate
60
- * returns a number that is wrong and looks exactly like a real one") but not
61
- * to its predicate.
62
- * - `mutate` — refuses that AND an empty filter, which on a bulk write is the
63
- * entire collection.
64
- */
65
- export type FilterMode = 'select' | 'measure' | 'mutate';
49
+ * How forgiving this compilation is allowed to be.
50
+ *
51
+ * - `select` — a predicate naming a field the collection cannot express is
52
+ * SKIPPED. The caller receives the rows and can see for itself that the
53
+ * filter did not bite; the cost is extra rows, not a wrong belief.
54
+ * - `measure` — the same predicate is REFUSED. A count, an aggregate or a
55
+ * histogram hands back a NUMBER: the whole collection and the intended
56
+ * subset are the same shape, and the caller has no way to tell which one it
57
+ * was given. An empty filter is still fine — `COUNT(*)` over everything is a
58
+ * legitimate question, unlike `DELETE` over everything. This closes the
59
+ * asymmetry `aggregate` already applied to its FIELDS ("a dropped aggregate
60
+ * returns a number that is wrong and looks exactly like a real one") but not
61
+ * to its predicate.
62
+ * - `mutate` — refuses that AND an empty filter, which on a bulk write is the
63
+ * entire collection.
64
+ */
65
+ export type FilterMode = "select" | "measure" | "mutate";
66
66
  /** Marshals a JS value to what the driver should bind. */
67
67
  export type SerializeValue = (value: unknown) => unknown;
68
68
  export interface QueryFilterInput {
69
- /** Equality. A `null` value means `IS NULL` — see the file docblock. */
70
- readonly where?: Readonly<Record<string, unknown>>;
71
- readonly whereIn?: Readonly<Record<string, readonly unknown[]>>;
72
- readonly whereBetween?: Readonly<Record<string, readonly [unknown, unknown]>>;
73
- /**
74
- * NULL-safe exclusion, compiled as `(expr IS NULL OR expr != ?)`. SQL `!=`
75
- * alone drops NULL rows, and on a nullable column those are precisely the
76
- * rows a "not this kind" filter must keep (they predate the column).
77
- *
78
- * A `null` VALUE means `IS NOT NULL` instead: "everything except the rows
79
- * that carry no value" is the only reading of `whereNot: { f: null }` that
80
- * is not a contradiction.
81
- */
82
- readonly whereNot?: Readonly<Record<string, unknown>>;
83
- /**
84
- * NULL-safe exclusion of a SET, compiled as
85
- * `(expr IS NULL OR expr NOT IN (…))` — `whereNot` for more than one value.
86
- * See `QueryFilter.whereNotIn` for why it is a separate operator and not a
87
- * `whereNot` that happens to take an array.
88
- *
89
- * An EMPTY list is no predicate at all, not "matches nothing" — the same
90
- * reading `whereJsonArrayAny` gives it.
91
- */
92
- readonly whereNotIn?: Readonly<Record<string, readonly unknown[]>>;
93
- /**
94
- * JSON-array membership, compiled as
95
- * `(expr IS NULL OR NOT json_valid(expr) OR EXISTS (SELECT 1 FROM
96
- * json_each(expr) WHERE value IN (…)))`.
97
- *
98
- * A SUPERSET prefilter on purpose — see `QueryFilter.whereJsonArrayAny`. An
99
- * unreadable column keeps its row rather than losing it, so this can narrow
100
- * a read without ever changing an answer.
101
- */
102
- readonly whereJsonArrayAny?: Readonly<Record<string, readonly unknown[]>>;
69
+ /** Equality. A `null` value means `IS NULL` — see the file docblock. */
70
+ readonly where?: Readonly<Record<string, unknown>>;
71
+ readonly whereIn?: Readonly<Record<string, readonly unknown[]>>;
72
+ readonly whereBetween?: Readonly<Record<string, readonly [unknown, unknown]>>;
73
+ /**
74
+ * NULL-safe exclusion, compiled as `(expr IS NULL OR expr != ?)`. SQL `!=`
75
+ * alone drops NULL rows, and on a nullable column those are precisely the
76
+ * rows a "not this kind" filter must keep (they predate the column).
77
+ *
78
+ * A `null` VALUE means `IS NOT NULL` instead: "everything except the rows
79
+ * that carry no value" is the only reading of `whereNot: { f: null }` that
80
+ * is not a contradiction.
81
+ */
82
+ readonly whereNot?: Readonly<Record<string, unknown>>;
83
+ /**
84
+ * NULL-safe exclusion of a SET, compiled as
85
+ * `(expr IS NULL OR expr NOT IN (…))` — `whereNot` for more than one value.
86
+ * See `QueryFilter.whereNotIn` for why it is a separate operator and not a
87
+ * `whereNot` that happens to take an array.
88
+ *
89
+ * An EMPTY list is no predicate at all, not "matches nothing" — the same
90
+ * reading `whereJsonArrayAny` gives it.
91
+ */
92
+ readonly whereNotIn?: Readonly<Record<string, readonly unknown[]>>;
93
+ /**
94
+ * JSON-array membership, compiled as
95
+ * `(expr IS NULL OR NOT json_valid(expr) OR EXISTS (SELECT 1 FROM
96
+ * json_each(expr) WHERE value IN (…)))`.
97
+ *
98
+ * A SUPERSET prefilter on purpose — see `QueryFilter.whereJsonArrayAny`. An
99
+ * unreadable column keeps its row rather than losing it, so this can narrow
100
+ * a read without ever changing an answer.
101
+ */
102
+ readonly whereJsonArrayAny?: Readonly<Record<string, readonly unknown[]>>;
103
103
  }
104
104
  /**
105
- * The predicate-only filter a bulk mutation accepts — no ordering, no limit.
106
- * Structurally the mutation half of {@link QueryFilterInput}.
107
- */
105
+ * The predicate-only filter a bulk mutation accepts — no ordering, no limit.
106
+ * Structurally the mutation half of {@link QueryFilterInput}.
107
+ */
108
108
  export type MutationFilterInput = QueryFilterInput;
109
109
  export interface CompiledFilter {
110
- /** Either `''` or a leading-space ` WHERE …` clause, ready to concatenate. */
111
- readonly whereSql: string;
112
- readonly params: readonly unknown[];
110
+ /** Either `''` or a leading-space ` WHERE …` clause, ready to concatenate. */
111
+ readonly whereSql: string;
112
+ readonly params: readonly unknown[];
113
113
  }
114
114
  /** Thrown by `measure` and `mutate` mode. Distinct type so a caller can map it
115
- * to a 400. */
115
+ * to a 400. */
116
116
  export declare class UnsafeFilterError extends Error {
117
- constructor(message: string);
117
+ constructor(message: string);
118
118
  }
119
119
  /**
120
- * SQL expression for `field` on this collection, or `null` when it cannot be
121
- * expressed: a real column → `"field"`; a KV blob field → `json_extract`;
122
- * anything else on a structured table → unresolvable. Exported because
123
- * `histogram` needs the same resolution for its bucketed column.
124
- */
120
+ * SQL expression for `field` on this collection, or `null` when it cannot be
121
+ * expressed: a real column → `"field"`; a KV blob field → `json_extract`;
122
+ * anything else on a structured table → unresolvable. Exported because
123
+ * `histogram` needs the same resolution for its bucketed column.
124
+ */
125
125
  export declare function fieldExprFor(field: string, shape: CollectionShape): string | null;
126
126
  export declare function compileFilter(filter: QueryFilterInput | undefined, shape: CollectionShape, mode: FilterMode, serialize: SerializeValue): CompiledFilter;
@@ -1,12 +1,12 @@
1
- export { ConfigStore } from './config-store.js';
2
- export type { DeviceRow } from './device-store.js';
3
- export { DeviceStore } from './device-store.js';
4
- export { FilesystemStorageAddon, FilesystemStorageAddon as default, } from './filesystem-storage.addon.js';
5
- export { FilesystemStorageProvider } from './filesystem-storage-provider.js';
6
- export type { SqliteOpLabel, SqliteOpSample, SqliteOpStat } from './query-profiler.js';
7
- export { SQLITE_ENGINE_STORM_WALL_SHARE, SQLITE_PROFILE_REPORT_FLOOR_MS, SQLITE_PROFILE_REPORT_INTERVAL_MS, SQLITE_PROFILE_TOP_N, SQLITE_SLOW_CALL_MS, sqliteEngineStorm, SqliteOpProfiler, } from './query-profiler.js';
8
- export { SQLITE_JOURNAL_SIZE_LIMIT_BYTES, SQLITE_MMAP_CEILING_BYTES, SQLITE_MMAP_FLOOR_BYTES, SQLITE_PAGE_CACHE_CEILING_KIB, SQLITE_PAGE_CACHE_FLOOR_KIB, sqliteMmapSizeFor, sqlitePageCacheKibFor, } from './sqlite-pragmas.js';
9
- export { SqliteSettingsAddon } from './sqlite-settings.addon.js';
10
- export { SqliteSettingsBackend } from './sqlite-settings-backend.js';
11
- export type { WalMaintenanceOptions, WalMaintenanceOutcome } from './wal-maintenance.js';
12
- export { WAL_CHECKPOINT_BUSY_TIMEOUT_MS, WAL_HIGH_WATER_BYTES, WAL_IDLE_QUIET_MS, WAL_MAINTENANCE_INTERVAL_MS, WalMaintenance, } from './wal-maintenance.js';
1
+ export { ConfigStore } from "./config-store.js";
2
+ export type { DeviceRow } from "./device-store.js";
3
+ export { DeviceStore } from "./device-store.js";
4
+ export { FilesystemStorageAddon, FilesystemStorageAddon as default } from "./filesystem-storage.addon.js";
5
+ export { FilesystemStorageProvider } from "./filesystem-storage-provider.js";
6
+ export type { SqliteOpLabel, SqliteOpSample, SqliteOpStat } from "./query-profiler.js";
7
+ export { SQLITE_ENGINE_STORM_WALL_SHARE, SQLITE_PROFILE_REPORT_FLOOR_MS, SQLITE_PROFILE_REPORT_INTERVAL_MS, SQLITE_PROFILE_TOP_N, SQLITE_SLOW_CALL_MS, sqliteEngineStorm, SqliteOpProfiler } from "./query-profiler.js";
8
+ export { SQLITE_JOURNAL_SIZE_LIMIT_BYTES, SQLITE_MMAP_CEILING_BYTES, SQLITE_MMAP_FLOOR_BYTES, SQLITE_PAGE_CACHE_CEILING_KIB, SQLITE_PAGE_CACHE_FLOOR_KIB, sqliteMmapSizeFor, sqlitePageCacheKibFor } from "./sqlite-pragmas.js";
9
+ export { SqliteSettingsAddon } from "./sqlite-settings.addon.js";
10
+ export { SqliteSettingsBackend } from "./sqlite-settings-backend.js";
11
+ export type { WalMaintenanceOptions, WalMaintenanceOutcome } from "./wal-maintenance.js";
12
+ export { WAL_CHECKPOINT_BUSY_TIMEOUT_MS, WAL_HIGH_WATER_BYTES, WAL_IDLE_QUIET_MS, WAL_MAINTENANCE_INTERVAL_MS, WalMaintenance } from "./wal-maintenance.js";
@@ -1,40 +1,40 @@
1
- import { CreateIntegrationInput, IIntegrationRegistry, Integration, ISettingsStoreProvider } from '@camstack/types';
1
+ import type { CreateIntegrationInput, IIntegrationRegistry, Integration, ISettingsStoreProvider } from "@camstack/types";
2
2
  /**
3
- * The persisted INTEGRATIONS — one row per provider instance an operator (or a
4
- * declaring addon) added, plus that instance's settings.
5
- *
6
- * It had a device half once: `devices` + `device_settings_kv`, `dev_NNNN` ids,
7
- * `createDevice` / `listCameras` / `setDeviceSetting`. It was removed on
8
- * 2026-08-19 with both tables ([D183](../../../../../docs/decisions/adr-0183-code-that-is-deleted-takes-its-tables-with-it.md)):
9
- * measured on the reference hub it held 0 rows against 974 live devices, no
10
- * production caller ever reached it, and its id-space could not be reconciled
11
- * with the numeric ids every track, rule and binding in the system uses. The
12
- * fleet is `device-manager:devices`. Do not add a device method here — the
13
- * device authority is the device-manager, and a second one that agrees with
14
- * nothing is how this half came to exist.
15
- */
3
+ * The persisted INTEGRATIONS — one row per provider instance an operator (or a
4
+ * declaring addon) added, plus that instance's settings.
5
+ *
6
+ * It had a device half once: `devices` + `device_settings_kv`, `dev_NNNN` ids,
7
+ * `createDevice` / `listCameras` / `setDeviceSetting`. It was removed on
8
+ * 2026-08-19 with both tables ([D183](../../../../../docs/decisions/adr-0183-code-that-is-deleted-takes-its-tables-with-it.md)):
9
+ * measured on the reference hub it held 0 rows against 974 live devices, no
10
+ * production caller ever reached it, and its id-space could not be reconciled
11
+ * with the numeric ids every track, rule and binding in the system uses. The
12
+ * fleet is `device-manager:devices`. Do not add a device method here — the
13
+ * device authority is the device-manager, and a second one that agrees with
14
+ * nothing is how this half came to exist.
15
+ */
16
16
  export declare class IntegrationRegistry implements IIntegrationRegistry {
17
- private readonly store;
18
- constructor(backend: ISettingsStoreProvider);
19
- initialize(): Promise<void>;
20
- createIntegration(input: CreateIntegrationInput): Promise<Integration>;
21
- getIntegration(id: string): Promise<Integration | null>;
22
- getIntegrationByAddonId(addonId: string): Promise<Integration | null>;
23
- listIntegrations(): Promise<readonly Integration[]>;
24
- updateIntegration(id: string, updates: Partial<Pick<Integration, 'name' | 'enabled' | 'info'>>): Promise<Integration | null>;
25
- /**
26
- * A FIXED integration exists because an addon declares it, not because an
27
- * operator added it — the Notification Center's alarm panel is the first.
28
- * There is no add or delete flow for one, and this is where that is true
29
- * rather than merely hidden: a UI that only omits the button still leaves the
30
- * mutation one API call away.
31
- */
32
- static isFixed(integration: {
33
- readonly info: Readonly<Record<string, unknown>> | null;
34
- }): boolean;
35
- deleteIntegration(id: string): Promise<boolean>;
36
- getIntegrationSettings(integrationId: string): Promise<Record<string, unknown>>;
37
- setIntegrationSetting(integrationId: string, key: string, value: unknown): Promise<void>;
38
- setIntegrationSettings(integrationId: string, settings: Record<string, unknown>): Promise<void>;
39
- private mapIntegration;
17
+ private readonly store;
18
+ constructor(backend: ISettingsStoreProvider);
19
+ initialize(): Promise<void>;
20
+ createIntegration(input: CreateIntegrationInput): Promise<Integration>;
21
+ getIntegration(id: string): Promise<Integration | null>;
22
+ getIntegrationByAddonId(addonId: string): Promise<Integration | null>;
23
+ listIntegrations(): Promise<readonly Integration[]>;
24
+ updateIntegration(id: string, updates: Partial<Pick<Integration, "name" | "enabled" | "info">>): Promise<Integration | null>;
25
+ /**
26
+ * A FIXED integration exists because an addon declares it, not because an
27
+ * operator added it — the Notification Center's alarm panel is the first.
28
+ * There is no add or delete flow for one, and this is where that is true
29
+ * rather than merely hidden: a UI that only omits the button still leaves the
30
+ * mutation one API call away.
31
+ */
32
+ static isFixed(integration: {
33
+ readonly info: Readonly<Record<string, unknown>> | null;
34
+ }): boolean;
35
+ deleteIntegration(id: string): Promise<boolean>;
36
+ getIntegrationSettings(integrationId: string): Promise<Record<string, unknown>>;
37
+ setIntegrationSetting(integrationId: string, key: string, value: unknown): Promise<void>;
38
+ setIntegrationSettings(integrationId: string, settings: Record<string, unknown>): Promise<void>;
39
+ private mapIntegration;
40
40
  }
@@ -3,9 +3,9 @@ export declare function isWithinAllowedRoots(candidate: string, allowedRoots: re
3
3
  /** Throws unless `candidate` is within an allowed root. WRITES only. */
4
4
  export declare function assertWithinAllowedRoots(candidate: string, allowedRoots: readonly string[]): void;
5
5
  /**
6
- * Throws unless `candidate` is a browsable path. Read-only discovery is
7
- * deliberately unconfined — the only requirement is an absolute path, so a
8
- * relative one can never be resolved against whatever the runner's cwd
9
- * happens to be.
10
- */
6
+ * Throws unless `candidate` is a browsable path. Read-only discovery is
7
+ * deliberately unconfined — the only requirement is an absolute path, so a
8
+ * relative one can never be resolved against whatever the runner's cwd
9
+ * happens to be.
10
+ */
11
11
  export declare function assertBrowsablePath(candidate: string): void;
@@ -1,50 +1,50 @@
1
1
  /**
2
- * Turn a key PREFIX into a half-open range SQLite can answer from the index.
3
- *
4
- * **The measurement.** The two canonical KV tables (`addon-settings`,
5
- * `addon-device-settings`) are keyed `"<scope>.<key>"` and every scoped read
6
- * and write selects by prefix. That was written as `WHERE id LIKE ? || '%'`,
7
- * and SQLite cannot use an index for it: `LIKE` is case-insensitive for ASCII
8
- * by default, so the LIKE optimisation requires an index with `COLLATE
9
- * NOCASE`, which the implicit PRIMARY KEY index is not. `EXPLAIN QUERY PLAN`
10
- * says so in one word:
11
- *
12
- * LIKE => SCAN addon-device-settings
13
- * RANGE => SEARCH addon-device-settings USING INDEX … (id>? AND id<?)
14
- *
15
- * Every `writeDeviceRuntimeState` therefore scanned the whole table before
16
- * inserting, on the main thread, synchronously — 15.6% of hub-main's CPU in
17
- * the 2026-08-07 V8 profile sat in this transaction. Measured on a 2 240-row
18
- * table (far smaller than the live one, and the gap widens linearly with rows):
19
- *
20
- * write (1 DELETE + 14 UPSERT, one txn) 0.253 ms → 0.143 ms 1.8x
21
- * read (getAllScoped) 0.207 ms → 0.011 ms 19.4x
22
- *
23
- * **It is also more CORRECT, which was not the goal.** `LIKE` treats `_` and
24
- * `%` in the PATTERN as wildcards, and the pattern here is built from an addon
25
- * id and a device id. `clearAddonDevice('a_b', …)` deleted `axb`'s rows too,
26
- * and `LIKE`'s ASCII case-folding meant `Recorder:615.` matched
27
- * `recorder:615.`. A byte range matches exactly the keys that start with the
28
- * prefix and nothing else.
29
- *
30
- * **Why it can refuse.** SQLite's BINARY collation compares UTF-8 BYTES; JS
31
- * compares UTF-16 code units. The two orders agree for ASCII and can disagree
32
- * above it. Rather than encode a subtle equivalence nobody will re-derive, a
33
- * non-ASCII prefix returns `null` and the caller keeps the existing `LIKE` —
34
- * slower, but identical to what shipped. Every prefix in this codebase is an
35
- * addon id, a device id and separators, so the fast path is the only one that
36
- * runs in practice; the fallback exists so a future key shape cannot silently
37
- * lose rows.
38
- */
2
+ * Turn a key PREFIX into a half-open range SQLite can answer from the index.
3
+ *
4
+ * **The measurement.** The two canonical KV tables (`addon-settings`,
5
+ * `addon-device-settings`) are keyed `"<scope>.<key>"` and every scoped read
6
+ * and write selects by prefix. That was written as `WHERE id LIKE ? || '%'`,
7
+ * and SQLite cannot use an index for it: `LIKE` is case-insensitive for ASCII
8
+ * by default, so the LIKE optimisation requires an index with `COLLATE
9
+ * NOCASE`, which the implicit PRIMARY KEY index is not. `EXPLAIN QUERY PLAN`
10
+ * says so in one word:
11
+ *
12
+ * LIKE => SCAN addon-device-settings
13
+ * RANGE => SEARCH addon-device-settings USING INDEX … (id>? AND id<?)
14
+ *
15
+ * Every `writeDeviceRuntimeState` therefore scanned the whole table before
16
+ * inserting, on the main thread, synchronously — 15.6% of hub-main's CPU in
17
+ * the 2026-08-07 V8 profile sat in this transaction. Measured on a 2 240-row
18
+ * table (far smaller than the live one, and the gap widens linearly with rows):
19
+ *
20
+ * write (1 DELETE + 14 UPSERT, one txn) 0.253 ms → 0.143 ms 1.8x
21
+ * read (getAllScoped) 0.207 ms → 0.011 ms 19.4x
22
+ *
23
+ * **It is also more CORRECT, which was not the goal.** `LIKE` treats `_` and
24
+ * `%` in the PATTERN as wildcards, and the pattern here is built from an addon
25
+ * id and a device id. `clearAddonDevice('a_b', …)` deleted `axb`'s rows too,
26
+ * and `LIKE`'s ASCII case-folding meant `Recorder:615.` matched
27
+ * `recorder:615.`. A byte range matches exactly the keys that start with the
28
+ * prefix and nothing else.
29
+ *
30
+ * **Why it can refuse.** SQLite's BINARY collation compares UTF-8 BYTES; JS
31
+ * compares UTF-16 code units. The two orders agree for ASCII and can disagree
32
+ * above it. Rather than encode a subtle equivalence nobody will re-derive, a
33
+ * non-ASCII prefix returns `null` and the caller keeps the existing `LIKE` —
34
+ * slower, but identical to what shipped. Every prefix in this codebase is an
35
+ * addon id, a device id and separators, so the fast path is the only one that
36
+ * runs in practice; the fallback exists so a future key shape cannot silently
37
+ * lose rows.
38
+ */
39
39
  /** Half-open key range `[lo, hi)` covering exactly the keys starting with a prefix. */
40
40
  export interface PrefixRange {
41
- readonly lo: string;
42
- /** EXCLUSIVE upper bound: the prefix with its last byte incremented. */
43
- readonly hi: string;
41
+ readonly lo: string;
42
+ /** EXCLUSIVE upper bound: the prefix with its last byte incremented. */
43
+ readonly hi: string;
44
44
  }
45
45
  /**
46
- * @returns the range for `prefix`, or `null` when the caller must fall back to
47
- * a `LIKE` scan (empty prefix — which is the whole table and has no upper
48
- * bound — or any byte outside ASCII).
49
- */
46
+ * @returns the range for `prefix`, or `null` when the caller must fall back to
47
+ * a `LIKE` scan (empty prefix — which is the whole table and has no upper
48
+ * bound — or any byte outside ASCII).
49
+ */
50
50
  export declare function prefixRange(prefix: string): PrefixRange | null;