@camstack/system 1.2.389 → 1.2.391

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 (503) 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/auth/admin-token-manager.d.ts +37 -67
  7. package/dist/auth/api-key-manager.d.ts +8 -8
  8. package/dist/auth/auth-audit-log.d.ts +29 -49
  9. package/dist/auth/auth-manager.d.ts +127 -126
  10. package/dist/auth/cidr.d.ts +8 -8
  11. package/dist/auth/external-identity-manager.d.ts +46 -34
  12. package/dist/auth/jwt-signing-key.d.ts +14 -14
  13. package/dist/auth/login-session-manager.d.ts +95 -135
  14. package/dist/auth/parse-record.d.ts +13 -13
  15. package/dist/auth/scope-matcher.d.ts +7 -7
  16. package/dist/auth/scoped-token-manager.d.ts +62 -62
  17. package/dist/auth/token-expiry.d.ts +49 -26
  18. package/dist/auth/totp-manager.d.ts +48 -48
  19. package/dist/auth/user-management-internal.d.ts +67 -52
  20. package/dist/auth/user-manager.d.ts +58 -58
  21. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.d.ts +54 -54
  22. package/dist/builtins/addon-pages-aggregator/dedupe-pages.d.ts +22 -4
  23. package/dist/builtins/addon-pages-aggregator/index.d.ts +1 -1
  24. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.d.ts +54 -54
  25. package/dist/builtins/addon-widgets-aggregator/index.d.ts +1 -1
  26. package/dist/builtins/alerts/alerts.addon.d.ts +88 -87
  27. package/dist/builtins/alerts/device-label.d.ts +6 -6
  28. package/dist/builtins/alerts/index.d.ts +1 -1
  29. package/dist/builtins/alerts/prune-policy.d.ts +36 -36
  30. package/dist/builtins/autotrack/autotrack-cameras.d.ts +102 -79
  31. package/dist/builtins/autotrack/autotrack-config.d.ts +81 -81
  32. package/dist/builtins/autotrack/autotrack-decision.d.ts +69 -82
  33. package/dist/builtins/autotrack/autotrack-loop.d.ts +81 -61
  34. package/dist/builtins/autotrack/autotrack.addon.d.ts +103 -66
  35. package/dist/builtins/autotrack/frame-error.d.ts +38 -38
  36. package/dist/builtins/autotrack/frame-measurements.d.ts +79 -79
  37. package/dist/builtins/autotrack/index.d.ts +2 -2
  38. package/dist/builtins/autotrack/ptz-mirror.d.ts +46 -17
  39. package/dist/builtins/autotrack/target-selection.d.ts +33 -47
  40. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.d.ts +270 -269
  41. package/dist/builtins/backup-orchestrator/cron-helpers.d.ts +17 -17
  42. package/dist/builtins/backup-orchestrator/destination-policy.d.ts +99 -82
  43. package/dist/builtins/backup-orchestrator/download-helpers.d.ts +9 -9
  44. package/dist/builtins/backup-orchestrator/encryption-key-store.d.ts +40 -29
  45. package/dist/builtins/backup-orchestrator/index.d.ts +2 -2
  46. package/dist/builtins/backup-orchestrator/manifest-store.d.ts +88 -69
  47. package/dist/builtins/backup-orchestrator/restore-archive.d.ts +14 -14
  48. package/dist/builtins/backup-orchestrator/run-queue.d.ts +86 -86
  49. package/dist/builtins/backup-orchestrator/schedule-store.d.ts +53 -37
  50. package/dist/builtins/backup-orchestrator/staging-paths.d.ts +23 -23
  51. package/dist/builtins/backup-orchestrator/write-targets.d.ts +53 -53
  52. package/dist/builtins/calendars/calendar-color.d.ts +5 -1
  53. package/dist/builtins/calendars/calendar-prefs-store.d.ts +18 -12
  54. package/dist/builtins/calendars/calendars.addon.d.ts +16 -11
  55. package/dist/builtins/calendars/index.d.ts +1 -1
  56. package/dist/builtins/camera-grid/acquire-retry.d.ts +26 -26
  57. package/dist/builtins/camera-grid/addon.d.ts +200 -174
  58. package/dist/builtins/camera-grid/flv-join.d.ts +32 -58
  59. package/dist/builtins/camera-grid/grid-activity-mirror.d.ts +37 -37
  60. package/dist/builtins/camera-grid/grid-activity.d.ts +83 -42
  61. package/dist/builtins/camera-grid/grid-camera-declarations.d.ts +46 -46
  62. package/dist/builtins/camera-grid/grid-camera-device.d.ts +60 -34
  63. package/dist/builtins/camera-grid/grid-canvas-derivation.d.ts +50 -15
  64. package/dist/builtins/camera-grid/grid-canvas-seed.d.ts +96 -46
  65. package/dist/builtins/camera-grid/grid-canvas.d.ts +74 -74
  66. package/dist/builtins/camera-grid/grid-child.d.ts +29 -16
  67. package/dist/builtins/camera-grid/grid-compositor-child.d.ts +2 -2
  68. package/dist/builtins/camera-grid/grid-compositor-invocation.d.ts +39 -11
  69. package/dist/builtins/camera-grid/grid-compositor.d.ts +50 -50
  70. package/dist/builtins/camera-grid/grid-detection-mapping.d.ts +52 -22
  71. package/dist/builtins/camera-grid/grid-device-settings.d.ts +31 -7
  72. package/dist/builtins/camera-grid/grid-filter-graph.d.ts +41 -41
  73. package/dist/builtins/camera-grid/grid-frame-sample.d.ts +45 -19
  74. package/dist/builtins/camera-grid/grid-instances.d.ts +20 -50
  75. package/dist/builtins/camera-grid/grid-last-frame-store.d.ts +51 -51
  76. package/dist/builtins/camera-grid/grid-layout-native-provider.d.ts +30 -4
  77. package/dist/builtins/camera-grid/grid-plan.d.ts +30 -20
  78. package/dist/builtins/camera-grid/grid-profiles.d.ts +85 -45
  79. package/dist/builtins/camera-grid/grid-row-normalization.d.ts +6 -6
  80. package/dist/builtins/camera-grid/grid-sentry-sources.d.ts +57 -57
  81. package/dist/builtins/camera-grid/grid-snapshot.d.ts +41 -41
  82. package/dist/builtins/camera-grid/grid-stream-descriptor.d.ts +49 -21
  83. package/dist/builtins/camera-grid/grid-stream-invocation.d.ts +37 -22
  84. package/dist/builtins/camera-grid/grid-stream-relay.d.ts +26 -26
  85. package/dist/builtins/camera-grid/grid-stream-session.d.ts +123 -93
  86. package/dist/builtins/camera-grid/grid-tile-feed.d.ts +47 -47
  87. package/dist/builtins/camera-grid/grid-tile-plan.d.ts +55 -20
  88. package/dist/builtins/camera-grid/grid-wire-format.d.ts +22 -6
  89. package/dist/builtins/camera-grid/index.d.ts +44 -44
  90. package/dist/builtins/camera-grid/silence-analysis.d.ts +31 -14
  91. package/dist/builtins/composer/claim-gate.d.ts +54 -27
  92. package/dist/builtins/composer/composed-device-set.d.ts +40 -26
  93. package/dist/builtins/composer/composed-device.d.ts +39 -17
  94. package/dist/builtins/composer/composer-apply-waits.d.ts +20 -13
  95. package/dist/builtins/composer/composer-grafts.d.ts +57 -38
  96. package/dist/builtins/composer/composer-live-set.d.ts +15 -15
  97. package/dist/builtins/composer/composer-plan.d.ts +76 -60
  98. package/dist/builtins/composer/composer-runtime-factory.d.ts +21 -14
  99. package/dist/builtins/composer/composer-seeds.d.ts +20 -14
  100. package/dist/builtins/composer/composer-verdict.d.ts +28 -14
  101. package/dist/builtins/composer/composer.addon.d.ts +23 -9
  102. package/dist/builtins/composer/composer.d.ts +145 -100
  103. package/dist/builtins/composer/composition-declarations.d.ts +50 -39
  104. package/dist/builtins/composer/composition-evaluation.d.ts +38 -22
  105. package/dist/builtins/composer/composition-runtime.d.ts +178 -125
  106. package/dist/builtins/composer/composition-target.d.ts +38 -34
  107. package/dist/builtins/composer/confirmed-seed.d.ts +35 -23
  108. package/dist/builtins/composer/deadline-timer.d.ts +13 -13
  109. package/dist/builtins/composer/existing-target.d.ts +90 -73
  110. package/dist/builtins/composer/field-record.d.ts +26 -19
  111. package/dist/builtins/composer/graft-host.d.ts +56 -32
  112. package/dist/builtins/composer/held-claims.d.ts +26 -9
  113. package/dist/builtins/composer/index.d.ts +1 -1
  114. package/dist/builtins/composer/own-field-reads.d.ts +26 -15
  115. package/dist/builtins/composer/owned-fields-target.d.ts +75 -44
  116. package/dist/builtins/composer/slice-assembler.d.ts +19 -3
  117. package/dist/builtins/composer/source-readings.d.ts +67 -61
  118. package/dist/builtins/composer/source-tracker.d.ts +133 -69
  119. package/dist/builtins/console-logging/console-destination.d.ts +15 -8
  120. package/dist/builtins/console-logging/console-logging.addon.d.ts +20 -19
  121. package/dist/builtins/console-logging/index.d.ts +3 -3
  122. package/dist/builtins/core-blocks/block-package.d.ts +37 -37
  123. package/dist/builtins/core-blocks/block-settings-store.d.ts +34 -21
  124. package/dist/builtins/core-blocks/block-supervisor.d.ts +138 -117
  125. package/dist/builtins/core-blocks/block-type-defs.d.ts +21 -21
  126. package/dist/builtins/core-blocks/blocks-integration.d.ts +76 -49
  127. package/dist/builtins/core-blocks/compile-block.d.ts +37 -37
  128. package/dist/builtins/core-blocks/composition-api.d.ts +38 -24
  129. package/dist/builtins/core-blocks/composition-peers.d.ts +26 -4
  130. package/dist/builtins/core-blocks/composition-sources.d.ts +25 -10
  131. package/dist/builtins/core-blocks/core-block-store.d.ts +109 -109
  132. package/dist/builtins/core-blocks/core-blocks.addon.d.ts +72 -72
  133. package/dist/builtins/core-blocks/extract-settings-schema.d.ts +4 -4
  134. package/dist/builtins/core-blocks/index.d.ts +8 -8
  135. package/dist/builtins/device-manager/adoption-job-engine.d.ts +141 -98
  136. package/dist/builtins/device-manager/claimed-status-overlay.d.ts +42 -9
  137. package/dist/builtins/device-manager/contribution-cache.d.ts +56 -56
  138. package/dist/builtins/device-manager/day-night-config-schema.d.ts +26 -12
  139. package/dist/builtins/device-manager/device-aggregation-merge.d.ts +17 -17
  140. package/dist/builtins/device-manager/device-aggregation.d.ts +277 -254
  141. package/dist/builtins/device-manager/device-bindings-store.d.ts +232 -220
  142. package/dist/builtins/device-manager/device-config-contribution.d.ts +29 -29
  143. package/dist/builtins/device-manager/device-config-secrets.d.ts +32 -13
  144. package/dist/builtins/device-manager/device-event-propagator.d.ts +22 -22
  145. package/dist/builtins/device-manager/device-extension-linked-slot.d.ts +17 -17
  146. package/dist/builtins/device-manager/device-form-secrets.d.ts +14 -14
  147. package/dist/builtins/device-manager/device-linked-devices.d.ts +159 -98
  148. package/dist/builtins/device-manager/device-manager.addon.d.ts +223 -197
  149. package/dist/builtins/device-manager/device-meta-actions.d.ts +306 -305
  150. package/dist/builtins/device-manager/device-meta-store.d.ts +100 -90
  151. package/dist/builtins/device-manager/device-meta-types.d.ts +250 -241
  152. package/dist/builtins/device-manager/device-online-fallback.d.ts +30 -30
  153. package/dist/builtins/device-manager/device-projection.d.ts +53 -67
  154. package/dist/builtins/device-manager/device-provider-context.d.ts +109 -94
  155. package/dist/builtins/device-manager/device-queries.d.ts +63 -63
  156. package/dist/builtins/device-manager/device-row-store.d.ts +417 -365
  157. package/dist/builtins/device-manager/device-source-activation.d.ts +91 -49
  158. package/dist/builtins/device-manager/device-state-claim-views.d.ts +76 -61
  159. package/dist/builtins/device-manager/device-state-claims.d.ts +53 -30
  160. package/dist/builtins/device-manager/device-state-mirror.d.ts +256 -264
  161. package/dist/builtins/device-manager/device-sync-resolvers.d.ts +25 -25
  162. package/dist/builtins/device-manager/field-claims-index.d.ts +85 -58
  163. package/dist/builtins/device-manager/field-ownership.d.ts +54 -36
  164. package/dist/builtins/device-manager/fleet-read-census.d.ts +99 -61
  165. package/dist/builtins/device-manager/image-settings-config-schema.d.ts +18 -8
  166. package/dist/builtins/device-manager/index.d.ts +2 -2
  167. package/dist/builtins/device-manager/linked-devices-manual-backfill.d.ts +20 -9
  168. package/dist/builtins/device-manager/location-alignment.d.ts +46 -46
  169. package/dist/builtins/device-manager/migrate-device.d.ts +178 -101
  170. package/dist/builtins/device-manager/migrate-guard.d.ts +66 -34
  171. package/dist/builtins/device-manager/migrate-hardware-state.d.ts +59 -59
  172. package/dist/builtins/device-manager/migrate-reload.d.ts +42 -4
  173. package/dist/builtins/device-manager/migration-refused.d.ts +20 -20
  174. package/dist/builtins/device-manager/mirror-row-writer.d.ts +205 -179
  175. package/dist/builtins/device-manager/recording-onboard-config-schema.d.ts +56 -32
  176. package/dist/builtins/device-manager/removal-fence.d.ts +48 -48
  177. package/dist/builtins/device-manager/runtime-state-persist-gate.d.ts +54 -26
  178. package/dist/builtins/device-manager/secret-config-paths.d.ts +17 -17
  179. package/dist/builtins/device-manager/stale-wrapper-activations.d.ts +52 -25
  180. package/dist/builtins/device-manager/write-lock.d.ts +13 -13
  181. package/dist/builtins/hub-forwarder/hub-forwarder-destination.d.ts +41 -41
  182. package/dist/builtins/hub-forwarder/hub-forwarder.addon.d.ts +13 -12
  183. package/dist/builtins/hub-forwarder/index.d.ts +3 -3
  184. package/dist/builtins/keychain/index.d.ts +1 -1
  185. package/dist/builtins/keychain/key-sources.d.ts +19 -19
  186. package/dist/builtins/keychain/keychain-crypto.d.ts +4 -4
  187. package/dist/builtins/keychain/keychain-reset-trigger.d.ts +13 -13
  188. package/dist/builtins/keychain/keychain-service.d.ts +128 -128
  189. package/dist/builtins/keychain/keychain-store.d.ts +96 -87
  190. package/dist/builtins/keychain/keychain-usage.d.ts +13 -2
  191. package/dist/builtins/keychain/keychain.addon.d.ts +31 -6
  192. package/dist/builtins/keychain/platform-key-source.d.ts +15 -15
  193. package/dist/builtins/keychain/system-held-secrets.d.ts +17 -4
  194. package/dist/builtins/liveness-monitor/index.d.ts +2 -2
  195. package/dist/builtins/liveness-monitor/liveness-checks.d.ts +73 -52
  196. package/dist/builtins/liveness-monitor/liveness-monitor.addon.d.ts +57 -36
  197. package/dist/builtins/local-auth/admin-account-boot.d.ts +14 -14
  198. package/dist/builtins/local-auth/auth-config-reader.d.ts +34 -17
  199. package/dist/builtins/local-auth/auth-schema.d.ts +92 -69
  200. package/dist/builtins/local-auth/index.d.ts +1 -1
  201. package/dist/builtins/local-auth/jwt-signing-key-keeper.d.ts +22 -22
  202. package/dist/builtins/local-auth/local-auth.addon.d.ts +41 -40
  203. package/dist/builtins/local-auth/oauth-grants.d.ts +57 -57
  204. package/dist/builtins/local-auth/oauth-session-manager.d.ts +62 -62
  205. package/dist/builtins/local-network/address-book.d.ts +61 -36
  206. package/dist/builtins/local-network/index.d.ts +2 -2
  207. package/dist/builtins/local-network/ipv6-lan.d.ts +12 -17
  208. package/dist/builtins/local-network/local-hostname.d.ts +10 -10
  209. package/dist/builtins/local-network/local-network.addon.d.ts +259 -258
  210. package/dist/builtins/loki-logging/index.d.ts +4 -4
  211. package/dist/builtins/loki-logging/loki-destination.d.ts +113 -87
  212. package/dist/builtins/loki-logging/loki-logging.addon.d.ts +61 -42
  213. package/dist/builtins/loki-logging/loki-payload.d.ts +82 -39
  214. package/dist/builtins/loki-logging/retire-enabled-flag.d.ts +37 -12
  215. package/dist/builtins/native-metrics/cgroup-memory.d.ts +206 -159
  216. package/dist/builtins/native-metrics/cgroup-pids.d.ts +138 -91
  217. package/dist/builtins/native-metrics/container-memory-series.d.ts +212 -178
  218. package/dist/builtins/native-metrics/gpu-probe.d.ts +9 -9
  219. package/dist/builtins/native-metrics/index.d.ts +2 -2
  220. package/dist/builtins/native-metrics/load-series-config.d.ts +29 -57
  221. package/dist/builtins/native-metrics/load-series-reader.d.ts +52 -26
  222. package/dist/builtins/native-metrics/load-series-store.d.ts +237 -176
  223. package/dist/builtins/native-metrics/native-metrics-provider.d.ts +43 -43
  224. package/dist/builtins/native-metrics/native-metrics.addon.d.ts +230 -230
  225. package/dist/builtins/native-metrics/node-load-ring.d.ts +196 -196
  226. package/dist/builtins/native-metrics/proc-process-table.d.ts +12 -12
  227. package/dist/builtins/native-metrics/process-classification.d.ts +95 -36
  228. package/dist/builtins/native-metrics/thread-cpu-sampler.d.ts +95 -95
  229. package/dist/builtins/platform-probe/coral-accelerators.d.ts +17 -17
  230. package/dist/builtins/platform-probe/index.d.ts +38 -30
  231. package/dist/builtins/platform-probe/inference-config-resolver.d.ts +27 -27
  232. package/dist/builtins/platform-probe/intel-accelerators.d.ts +8 -8
  233. package/dist/builtins/platform-probe/intel-npu.d.ts +30 -30
  234. package/dist/builtins/platform-probe/platform-scorer.d.ts +35 -35
  235. package/dist/builtins/platform-probe/runtime-packages.d.ts +3 -3
  236. package/dist/builtins/remote-access-orchestrator/enabled-providers-reconcile.d.ts +87 -87
  237. package/dist/builtins/remote-access-orchestrator/index.d.ts +1 -1
  238. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.d.ts +66 -35
  239. package/dist/builtins/shared/device-state-changed.d.ts +9 -9
  240. package/dist/builtins/shared/settle-sources.d.ts +16 -16
  241. package/dist/builtins/snapshot/index.d.ts +2 -2
  242. package/dist/builtins/snapshot/snapshot-cache.d.ts +92 -92
  243. package/dist/builtins/snapshot/snapshot-coalescing.d.ts +108 -108
  244. package/dist/builtins/snapshot/snapshot-courtesy.d.ts +48 -48
  245. package/dist/builtins/snapshot/snapshot-durable-store.d.ts +32 -32
  246. package/dist/builtins/snapshot/snapshot-fatigue.d.ts +34 -34
  247. package/dist/builtins/snapshot/snapshot-grab-pick.d.ts +14 -14
  248. package/dist/builtins/snapshot/snapshot-link-url.d.ts +49 -49
  249. package/dist/builtins/snapshot/snapshot-media-handler.d.ts +97 -97
  250. package/dist/builtins/snapshot/snapshot-resize.d.ts +64 -103
  251. package/dist/builtins/snapshot/snapshot.addon.d.ts +569 -568
  252. package/dist/builtins/sqlite-storage/analyze-stats.d.ts +73 -29
  253. package/dist/builtins/sqlite-storage/config-store.d.ts +6 -6
  254. package/dist/builtins/sqlite-storage/device-store.d.ts +16 -16
  255. package/dist/builtins/sqlite-storage/filesystem-browse-provider.d.ts +23 -23
  256. package/dist/builtins/sqlite-storage/filesystem-storage-provider.d.ts +79 -79
  257. package/dist/builtins/sqlite-storage/filesystem-storage.addon.d.ts +27 -26
  258. package/dist/builtins/sqlite-storage/filter-compiler.d.ts +107 -107
  259. package/dist/builtins/sqlite-storage/index.d.ts +12 -12
  260. package/dist/builtins/sqlite-storage/integration-registry.d.ts +37 -37
  261. package/dist/builtins/sqlite-storage/path-guard.d.ts +5 -5
  262. package/dist/builtins/sqlite-storage/prefix-range.d.ts +44 -44
  263. package/dist/builtins/sqlite-storage/query-bounds.d.ts +100 -106
  264. package/dist/builtins/sqlite-storage/query-profiler.d.ts +217 -217
  265. package/dist/builtins/sqlite-storage/retired-collections.d.ts +124 -55
  266. package/dist/builtins/sqlite-storage/retired-settings-keys.d.ts +239 -189
  267. package/dist/builtins/sqlite-storage/shm-lock-canary.d.ts +41 -41
  268. package/dist/builtins/sqlite-storage/sqlite-pragmas.d.ts +162 -162
  269. package/dist/builtins/sqlite-storage/sqlite-settings-backend.d.ts +458 -458
  270. package/dist/builtins/sqlite-storage/sqlite-settings.addon.d.ts +59 -58
  271. package/dist/builtins/sqlite-storage/sqlite-snapshot-protocol.d.ts +37 -32
  272. package/dist/builtins/sqlite-storage/sqlite-snapshot-worker.d.ts +19 -19
  273. package/dist/builtins/sqlite-storage/sqlite-snapshotter.d.ts +76 -76
  274. package/dist/builtins/sqlite-storage/statement-shape.d.ts +54 -54
  275. package/dist/builtins/sqlite-storage/table-sizes.d.ts +71 -71
  276. package/dist/builtins/sqlite-storage/vector-index-shared.d.ts +63 -54
  277. package/dist/builtins/sqlite-storage/vector-index-vec.d.ts +133 -96
  278. package/dist/builtins/sqlite-storage/wal-checkpoint-policy.d.ts +161 -161
  279. package/dist/builtins/sqlite-storage/wal-checkpointer.d.ts +60 -60
  280. package/dist/builtins/sqlite-storage/wal-maintenance.d.ts +94 -94
  281. package/dist/builtins/storage-orchestrator/access-guards.d.ts +37 -26
  282. package/dist/builtins/storage-orchestrator/data-store-dispatch.d.ts +33 -18
  283. package/dist/builtins/storage-orchestrator/drain-ratchet.d.ts +85 -85
  284. package/dist/builtins/storage-orchestrator/drain-state-store.d.ts +20 -10
  285. package/dist/builtins/storage-orchestrator/hub-settings-forward.d.ts +113 -53
  286. package/dist/builtins/storage-orchestrator/index.d.ts +7 -7
  287. package/dist/builtins/storage-orchestrator/location-occupancy-slice.d.ts +64 -40
  288. package/dist/builtins/storage-orchestrator/location-occupancy.d.ts +14 -14
  289. package/dist/builtins/storage-orchestrator/location-protection.d.ts +13 -13
  290. package/dist/builtins/storage-orchestrator/location-repoint-move.d.ts +44 -44
  291. package/dist/builtins/storage-orchestrator/location-root-collision.d.ts +61 -25
  292. package/dist/builtins/storage-orchestrator/location-secrets.d.ts +99 -58
  293. package/dist/builtins/storage-orchestrator/location-store.d.ts +56 -47
  294. package/dist/builtins/storage-orchestrator/location-volume-capacity.d.ts +37 -37
  295. package/dist/builtins/storage-orchestrator/provider-discovery.d.ts +20 -6
  296. package/dist/builtins/storage-orchestrator/storage-cleanup-coordinator.d.ts +51 -51
  297. package/dist/builtins/storage-orchestrator/storage-migration-coordinator.d.ts +224 -224
  298. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.d.ts +292 -292
  299. package/dist/builtins/storage-orchestrator/storage-orchestrator.service.d.ts +431 -450
  300. package/dist/builtins/storage-orchestrator/storage-pressure-manager.d.ts +104 -104
  301. package/dist/builtins/system-backup/backup-encryption.d.ts +60 -23
  302. package/dist/builtins/system-backup/system-backup.service.d.ts +240 -240
  303. package/dist/builtins/system-config/cluster-secret-keeper.d.ts +54 -34
  304. package/dist/builtins/system-config/index.d.ts +2 -2
  305. package/dist/builtins/system-config/mesh-actions.d.ts +2 -30
  306. package/dist/builtins/system-config/system-config.addon.d.ts +57 -93
  307. package/dist/builtins/system-config/system-config.addon.js +46 -33
  308. package/dist/builtins/system-config/system-config.addon.mjs +46 -33
  309. package/dist/builtins/winston-logging/index.d.ts +3 -3
  310. package/dist/builtins/winston-logging/winston-destination.d.ts +15 -15
  311. package/dist/builtins/winston-logging/winston-logging.addon.d.ts +14 -13
  312. package/dist/{child-cap-dispatch-nURMuVTX.js → child-cap-dispatch-Bnr8brru.js} +18 -0
  313. package/dist/{child-cap-dispatch-B1gyE35b.mjs → child-cap-dispatch-mHO_6r0G.mjs} +1 -1
  314. package/dist/download/hosted-model-revisions.d.ts +8 -8
  315. package/dist/download/model-download-service.d.ts +32 -32
  316. package/dist/download/model-downloader.d.ts +88 -88
  317. package/dist/events/event-bus.d.ts +6 -6
  318. package/dist/events/system-event-bus.d.ts +11 -11
  319. package/dist/feature/feature-manager.d.ts +6 -6
  320. package/dist/http/asset-compression.d.ts +35 -73
  321. package/dist/http/authenticated-file-server.d.ts +32 -32
  322. package/dist/http/data-plane-registry.d.ts +49 -39
  323. package/dist/http/file-data-plane.d.ts +14 -14
  324. package/dist/http/lan-http-bind.d.ts +24 -13
  325. package/dist/http/reverse-proxy.d.ts +36 -24
  326. package/dist/index.d.ts +137 -137
  327. package/dist/index.js +4 -3
  328. package/dist/index.mjs +2 -4
  329. package/dist/kernel/addon-class-resolver.d.ts +1 -1
  330. package/dist/kernel/addon-engine-manager.d.ts +20 -20
  331. package/dist/kernel/addon-health-monitor.d.ts +151 -151
  332. package/dist/kernel/addon-installer.d.ts +609 -609
  333. package/dist/kernel/addon-loader.d.ts +133 -133
  334. package/dist/kernel/addon-manifest.d.ts +118 -118
  335. package/dist/kernel/addon-residue.d.ts +28 -32
  336. package/dist/kernel/array-buffer-census.d.ts +84 -88
  337. package/dist/kernel/bootstrap-config.d.ts +3 -3
  338. package/dist/kernel/cap-router-builder.d.ts +145 -101
  339. package/dist/kernel/capability-handle.d.ts +41 -41
  340. package/dist/kernel/capability-registry.d.ts +588 -576
  341. package/dist/kernel/config-manager.d.ts +199 -199
  342. package/dist/kernel/config-schema.d.ts +132 -128
  343. package/dist/kernel/custom-action-registry.d.ts +25 -25
  344. package/dist/kernel/deps/addon-deps-manager.d.ts +17 -17
  345. package/dist/kernel/deps/closure-dedupe.d.ts +76 -76
  346. package/dist/kernel/deps/ensure-addon-natives.d.ts +34 -34
  347. package/dist/kernel/deps/ensure-native-prebuilds.d.ts +25 -25
  348. package/dist/kernel/deps/manifest-native-deps.d.ts +38 -38
  349. package/dist/kernel/deps/manifest-python-deps.d.ts +18 -18
  350. package/dist/kernel/deps/manifest-system-deps.d.ts +13 -13
  351. package/dist/kernel/deps/npm-command.d.ts +45 -45
  352. package/dist/kernel/deps/system-package-allowlist.d.ts +9 -9
  353. package/dist/kernel/deps/system-package-broker.d.ts +20 -20
  354. package/dist/kernel/deps/system-package-client.d.ts +3 -3
  355. package/dist/kernel/device-registry.d.ts +27 -27
  356. package/dist/kernel/event-loop-stall-monitor.d.ts +33 -33
  357. package/dist/kernel/event-plane-report.d.ts +174 -174
  358. package/dist/kernel/fs-utils.d.ts +70 -70
  359. package/dist/kernel/gc-census.d.ts +119 -119
  360. package/dist/kernel/heap-spaces.d.ts +87 -87
  361. package/dist/kernel/heap-watch.d.ts +706 -706
  362. package/dist/kernel/host-externals.d.ts +8 -8
  363. package/dist/kernel/hwaccel/hwaccel-resolver.d.ts +27 -27
  364. package/dist/kernel/index.d.ts +115 -113
  365. package/dist/kernel/inference/inference-resolver.d.ts +13 -13
  366. package/dist/kernel/infra-capabilities.d.ts +7 -7
  367. package/dist/kernel/isolated-builtin-phase.d.ts +42 -42
  368. package/dist/kernel/lifecycle/job-journal.d.ts +17 -17
  369. package/dist/kernel/lifecycle/lifecycle-job-engine.d.ts +99 -99
  370. package/dist/kernel/lifecycle/staging-area.d.ts +22 -22
  371. package/dist/kernel/moleculer/addon-context-factory.d.ts +90 -89
  372. package/dist/kernel/moleculer/addon-data-plane-facility.d.ts +12 -12
  373. package/dist/kernel/moleculer/addon-deploy-source.d.ts +11 -11
  374. package/dist/kernel/moleculer/addon-peer-bytes-facility.d.ts +18 -18
  375. package/dist/kernel/moleculer/addon-service-factory.d.ts +41 -41
  376. package/dist/kernel/moleculer/agent-mesh-authenticator.d.ts +60 -33
  377. package/dist/kernel/moleculer/agent-ui-unlock.d.ts +30 -30
  378. package/dist/kernel/moleculer/broker-factory.d.ts +61 -61
  379. package/dist/kernel/moleculer/cap-usage-registry.d.ts +108 -153
  380. package/dist/kernel/moleculer/capabilities-access.d.ts +19 -19
  381. package/dist/kernel/moleculer/child-addon-call-dispatch.d.ts +43 -43
  382. package/dist/kernel/moleculer/child-cap-descriptors.d.ts +26 -26
  383. package/dist/kernel/moleculer/child-cap-dispatch.d.ts +52 -52
  384. package/dist/kernel/moleculer/children-batch-loader.d.ts +86 -34
  385. package/dist/kernel/moleculer/cluster-secret.d.ts +19 -19
  386. package/dist/kernel/moleculer/core-cap-service.d.ts +53 -53
  387. package/dist/kernel/moleculer/crash-supervisor.d.ts +39 -39
  388. package/dist/kernel/moleculer/device-cap-proxy.d.ts +51 -51
  389. package/dist/kernel/moleculer/device-event-ring.d.ts +117 -75
  390. package/dist/kernel/moleculer/event-bus-core.d.ts +171 -159
  391. package/dist/kernel/moleculer/event-bus.d.ts +73 -73
  392. package/dist/kernel/moleculer/hub-log-forwarder.d.ts +30 -30
  393. package/dist/kernel/moleculer/hub-service.d.ts +42 -42
  394. package/dist/kernel/moleculer/init-watchdog.d.ts +49 -49
  395. package/dist/kernel/moleculer/mesh-access-middleware.d.ts +36 -21
  396. package/dist/kernel/moleculer/mesh-auth-mode.d.ts +33 -39
  397. package/dist/kernel/moleculer/mesh-authenticator.d.ts +58 -58
  398. package/dist/kernel/moleculer/mesh-auto-enforce.d.ts +38 -18
  399. package/dist/kernel/moleculer/mesh-join-client.d.ts +67 -45
  400. package/dist/kernel/moleculer/mesh-join-proof.d.ts +8 -8
  401. package/dist/kernel/moleculer/mesh-mtls/constants.d.ts +1 -1
  402. package/dist/kernel/moleculer/mesh-mtls/index.d.ts +10 -10
  403. package/dist/kernel/moleculer/mesh-mtls/mesh-ca-keeper.d.ts +43 -38
  404. package/dist/kernel/moleculer/mesh-mtls/mesh-ca.d.ts +29 -20
  405. package/dist/kernel/moleculer/mesh-mtls/mesh-clear-port.d.ts +32 -32
  406. package/dist/kernel/moleculer/mesh-mtls/mesh-crl.d.ts +11 -11
  407. package/dist/kernel/moleculer/mesh-mtls/mesh-enroll.d.ts +19 -16
  408. package/dist/kernel/moleculer/mesh-mtls/mesh-join-token.d.ts +40 -40
  409. package/dist/kernel/moleculer/mesh-mtls/mesh-tls-enabler.d.ts +5 -1
  410. package/dist/kernel/moleculer/mesh-mtls/tls-tcp-transporter.d.ts +131 -130
  411. package/dist/kernel/moleculer/mesh-queue-report.d.ts +39 -39
  412. package/dist/kernel/moleculer/node-registry.d.ts +120 -120
  413. package/dist/kernel/moleculer/process-context.d.ts +2 -2
  414. package/dist/kernel/moleculer/process-service.d.ts +168 -168
  415. package/dist/kernel/moleculer/provider-registry.d.ts +9 -9
  416. package/dist/kernel/moleculer/readiness-context.d.ts +58 -58
  417. package/dist/kernel/moleculer/readiness-service.d.ts +31 -16
  418. package/dist/kernel/moleculer/register-framework-resolver.d.ts +6 -6
  419. package/dist/kernel/moleculer/register-node-client.d.ts +34 -27
  420. package/dist/kernel/moleculer/remote-logger.d.ts +29 -29
  421. package/dist/kernel/moleculer/resilient-cap-call.d.ts +21 -21
  422. package/dist/kernel/moleculer/runner-native-allocator.d.ts +95 -95
  423. package/dist/kernel/moleculer/runner-process-group.d.ts +57 -57
  424. package/dist/kernel/moleculer/runtime-state-load.d.ts +21 -11
  425. package/dist/kernel/moleculer/settings-read-guard.d.ts +39 -39
  426. package/dist/kernel/moleculer/stream-probe-service.d.ts +25 -6
  427. package/dist/kernel/moleculer/trpc-links.d.ts +203 -203
  428. package/dist/kernel/moleculer/typed-array-serde.d.ts +9 -20
  429. package/dist/kernel/moleculer/worker-device-restore.d.ts +8 -8
  430. package/dist/kernel/outbound-queue-watch.d.ts +74 -74
  431. package/dist/kernel/process-cpu-census.d.ts +55 -55
  432. package/dist/kernel/provider-kind-drift.d.ts +17 -8
  433. package/dist/kernel/restart-coordinator.d.ts +71 -71
  434. package/dist/kernel/settings-door-view.d.ts +36 -25
  435. package/dist/kernel/settings-read-error.d.ts +29 -31
  436. package/dist/kernel/settings-view-types.d.ts +100 -95
  437. package/dist/kernel/socket-plane-report.d.ts +214 -153
  438. package/dist/kernel/status-overlay.d.ts +31 -11
  439. package/dist/kernel/storage-location-registry.d.ts +50 -50
  440. package/dist/kernel/store-settings-view.d.ts +13 -13
  441. package/dist/kernel/system-settings-mirror.d.ts +40 -28
  442. package/dist/kernel/system-settings-policy.d.ts +15 -34
  443. package/dist/kernel/transport/cap-action-census.d.ts +183 -183
  444. package/dist/kernel/transport/cap-action-name.d.ts +84 -84
  445. package/dist/kernel/transport/cap-child-index.d.ts +41 -41
  446. package/dist/kernel/transport/cap-route-resolver.d.ts +237 -212
  447. package/dist/kernel/transport/cap-route.d.ts +139 -139
  448. package/dist/kernel/transport/cap-routing-hints.d.ts +37 -37
  449. package/dist/kernel/transport/child-cap-protocol.d.ts +245 -245
  450. package/dist/kernel/transport/claimed-get-status.d.ts +30 -6
  451. package/dist/kernel/transport/create-local-transport.d.ts +5 -5
  452. package/dist/kernel/transport/frame-codec.d.ts +109 -109
  453. package/dist/kernel/transport/hub-cap-forward.d.ts +81 -59
  454. package/dist/kernel/transport/index.d.ts +36 -36
  455. package/dist/kernel/transport/local-child-client.d.ts +184 -184
  456. package/dist/kernel/transport/local-child-registry.d.ts +592 -592
  457. package/dist/kernel/transport/local-endpoint-path.d.ts +4 -4
  458. package/dist/kernel/transport/local-transport.d.ts +92 -92
  459. package/dist/kernel/transport/parent-unowned-call.d.ts +266 -237
  460. package/dist/kernel/transport/peer-answered-error.d.ts +14 -14
  461. package/dist/kernel/transport/socket-channel.d.ts +110 -110
  462. package/dist/kernel/transport/socket-traffic.d.ts +96 -96
  463. package/dist/kernel/transport/uds-event-bridge.d.ts +77 -50
  464. package/dist/kernel/transport/uds-event-bus.d.ts +75 -26
  465. package/dist/kernel/transport/uds-local-transport.d.ts +14 -14
  466. package/dist/kernel/transport/uds-log-ingest.d.ts +38 -23
  467. package/dist/kernel/transport/uds-logger.d.ts +33 -33
  468. package/dist/kernel/utils/ring-buffer.d.ts +12 -12
  469. package/dist/kernel/workspace-detect.d.ts +7 -7
  470. package/dist/lifecycle/lifecycle-state-machine.d.ts +24 -24
  471. package/dist/logging/formatter.d.ts +52 -25
  472. package/dist/logging/log-manager.d.ts +133 -133
  473. package/dist/logging/log-redactor.d.ts +22 -1
  474. package/dist/logging/log-ring-buffer.d.ts +57 -57
  475. package/dist/logging/logging-gate.d.ts +69 -25
  476. package/dist/logging/logging-gate.singleton.d.ts +12 -1
  477. package/dist/logging/partitioned-log-buffer.d.ts +161 -161
  478. package/dist/logging/scoped-logger.d.ts +14 -14
  479. package/dist/network/network-quality.d.ts +8 -8
  480. package/dist/notification/notification-service.d.ts +37 -37
  481. package/dist/notification/toast-service.d.ts +18 -18
  482. package/dist/pipeline/engine-manager-resolver.d.ts +12 -12
  483. package/dist/pipeline/pipeline-runner.d.ts +6 -6
  484. package/dist/pipeline/pipeline-validator.d.ts +8 -8
  485. package/dist/process/proc-stat.d.ts +51 -51
  486. package/dist/process/resource-monitor.d.ts +19 -19
  487. package/dist/python/python-env-manager.d.ts +10 -10
  488. package/dist/repl/interfaces.d.ts +21 -21
  489. package/dist/repl/repl-engine.d.ts +6 -6
  490. package/dist/storage/fs-storage-backend.d.ts +35 -35
  491. package/dist/storage/storage-location-manager.d.ts +21 -21
  492. package/dist/storage/storage-manager.d.ts +68 -68
  493. package/dist/tls/boot-tls.d.ts +24 -24
  494. package/dist/tls/cert-evaluation.d.ts +25 -25
  495. package/dist/tls/cert-identity.d.ts +39 -39
  496. package/dist/tls/cert-issue.d.ts +37 -17
  497. package/dist/tls/cert-manager.d.ts +86 -84
  498. package/dist/tls/https-listener.d.ts +16 -16
  499. package/dist/tls/index.d.ts +8 -8
  500. package/dist/tls/tls-actions.d.ts +18 -18
  501. package/dist/tls/tls-status.d.ts +15 -15
  502. package/dist/tls/uploaded-cert.d.ts +9 -9
  503. package/package.json +9 -3
@@ -1,266 +1,278 @@
1
- import { AddonContext, CapabilityDefinition, DeviceBindingEntry, ICapabilityRegistry } from '@camstack/types';
2
- import { DeviceBindingsStore } from './device-meta-types.js';
3
- import { DeviceRow, DeviceRowStore } from './device-row-store.js';
4
- import { StaleWrapperActivations } from './stale-wrapper-activations.js';
5
- import { WriteLock } from './write-lock.js';
1
+ /**
2
+ * Persisted wrapper-activation + per-device binding resolution for the
3
+ * device-manager addon. Extracted from `device-manager.addon.ts` as free
4
+ * functions that receive an explicit `BindingsDeps` context (dependency
5
+ * injection) instead of closing over the addon instance — keeps the routing
6
+ * logic cohesive and independently testable while preserving the EXACT call
7
+ * semantics, ordering, and side effects of the original class methods.
8
+ *
9
+ * The addon keeps thin delegator methods (`getBindings`, `getAllBindings`, …)
10
+ * that build `BindingsDeps` from its own state and forward here, so every
11
+ * existing internal + cap-router call site is unchanged.
12
+ */
13
+ import type { AddonContext, CapabilityDefinition, DeviceBindingEntry, ICapabilityRegistry } from "@camstack/types";
14
+ import type { DeviceBindingsStore } from "./device-meta-types.js";
15
+ import type { DeviceRow, DeviceRowStore } from "./device-row-store.js";
16
+ import type { StaleWrapperActivations } from "./stale-wrapper-activations.js";
17
+ import type { WriteLock } from "./write-lock.js";
6
18
  /** Push-fed remote native-cap cache shape (numeric deviceId → capName → owner). */
7
19
  export type RemoteNativeCaps = Map<number, Map<string, {
8
- addonId: string;
9
- nodeId: string;
20
+ addonId: string;
21
+ nodeId: string;
10
22
  }>>;
11
23
  /**
12
- * Low-level dependencies the binding resolver needs. Assembled by the addon
13
- * from its own (mostly private) state and passed in explicitly — no hidden
14
- * `this` capture.
15
- */
24
+ * Low-level dependencies the binding resolver needs. Assembled by the addon
25
+ * from its own (mostly private) state and passed in explicitly — no hidden
26
+ * `this` capture.
27
+ */
16
28
  export interface BindingsDeps {
17
- readonly ctx: AddonContext;
18
- readonly capabilityRegistry: ICapabilityRegistry | undefined;
19
- readonly remoteNativeCaps: RemoteNativeCaps;
20
- /** Row access for `device-manager:devices` — the device ledger the type and
21
- * presence gates below consult. */
22
- readonly rows: DeviceRowStore;
23
- /**
24
- * Ordering for every read-modify-write of this addon's `addon-settings` key
25
- * range — `deviceBindings` above all, but also `locations`, `nextDeviceId`
26
- * and `roleDisplayDefaults`.
27
- *
28
- * `deviceBindings` is ONE fleet-wide blob keyed by device, so a writer that
29
- * only means to touch camera 615 rewrites every camera's row. Nothing
30
- * ordered those writers, and the window between the read and the write is a
31
- * settings-door round trip — an RPC to the isolated `sqlite-settings` child,
32
- * measured at 2.9 s on the live hub mid-drain (D181). Two toggles on
33
- * DIFFERENT cameras therefore lost each other, and the value that went
34
- * missing was `{ wrapperAddonId: null }`: the marker that keeps a
35
- * `defaultActive` wrapper from re-binding. The operator's OFF came back ON
36
- * (D62).
37
- *
38
- * **Writers only.** No read path takes this lock: `getBindings`,
39
- * `getBindingsBatch` and `getAllBindings` must never queue behind a write,
40
- * and putting a read under it would make a 1 019-device sweep wait on
41
- * whatever toggle happens to be in flight.
42
- */
43
- readonly withAddonStoreWriteLock: WriteLock;
44
- /**
45
- * The per-process memory of stored activations that name a RETIRED wrapper
46
- * (a cap with no `kind: 'wrapper'` any more): each is ignored by step 1 and
47
- * said once (task 17 review M1, `stale-wrapper-activations.ts`).
48
- */
49
- readonly staleWrapperActivations: StaleWrapperActivations;
29
+ readonly ctx: AddonContext;
30
+ readonly capabilityRegistry: ICapabilityRegistry | undefined;
31
+ readonly remoteNativeCaps: RemoteNativeCaps;
32
+ /** Row access for `device-manager:devices` — the device ledger the type and
33
+ * presence gates below consult. */
34
+ readonly rows: DeviceRowStore;
35
+ /**
36
+ * Ordering for every read-modify-write of this addon's `addon-settings` key
37
+ * range — `deviceBindings` above all, but also `locations`, `nextDeviceId`
38
+ * and `roleDisplayDefaults`.
39
+ *
40
+ * `deviceBindings` is ONE fleet-wide blob keyed by device, so a writer that
41
+ * only means to touch camera 615 rewrites every camera's row. Nothing
42
+ * ordered those writers, and the window between the read and the write is a
43
+ * settings-door round trip — an RPC to the isolated `sqlite-settings` child,
44
+ * measured at 2.9 s on the live hub mid-drain (D181). Two toggles on
45
+ * DIFFERENT cameras therefore lost each other, and the value that went
46
+ * missing was `{ wrapperAddonId: null }`: the marker that keeps a
47
+ * `defaultActive` wrapper from re-binding. The operator's OFF came back ON
48
+ * (D62).
49
+ *
50
+ * **Writers only.** No read path takes this lock: `getBindings`,
51
+ * `getBindingsBatch` and `getAllBindings` must never queue behind a write,
52
+ * and putting a read under it would make a 1 019-device sweep wait on
53
+ * whatever toggle happens to be in flight.
54
+ */
55
+ readonly withAddonStoreWriteLock: WriteLock;
56
+ /**
57
+ * The per-process memory of stored activations that name a RETIRED wrapper
58
+ * (a cap with no `kind: 'wrapper'` any more): each is ignored by step 1 and
59
+ * said once (task 17 review M1, `stale-wrapper-activations.ts`).
60
+ */
61
+ readonly staleWrapperActivations: StaleWrapperActivations;
50
62
  }
51
63
  /**
52
- * Wire the push-fed cross-process native-cap cache (`remoteNativeCaps`).
53
- * Workers emit `DeviceBindingsChanged` on `ctx.registerNativeCap` / device
54
- * removal; we mirror those into `remoteNativeCaps` so `getBindings` returns the
55
- * full cluster view. Events from the local node are ignored: hub-local natives
56
- * live in `capabilityRegistry` and are folded in directly by getBindings.
57
- *
58
- * Push events are accurate in the steady state but can be lost during the
59
- * Moleculer transport handshake window (hub restart, crash-respawn,
60
- * restartAddon). The reliable replacement for lost events is the D3 re-handshake
61
- * (`listClusterNativeCaps()`), which `resolveNativeCapOwnerSync` /
62
- * `getBindings` step 4 fall through to on a push miss. The `$node.disconnected`
63
- * handler purges a gone node's entries; the worker re-handshakes (and re-emits
64
- * `native-registered`) on its next boot.
65
- */
64
+ * Wire the push-fed cross-process native-cap cache (`remoteNativeCaps`).
65
+ * Workers emit `DeviceBindingsChanged` on `ctx.registerNativeCap` / device
66
+ * removal; we mirror those into `remoteNativeCaps` so `getBindings` returns the
67
+ * full cluster view. Events from the local node are ignored: hub-local natives
68
+ * live in `capabilityRegistry` and are folded in directly by getBindings.
69
+ *
70
+ * Push events are accurate in the steady state but can be lost during the
71
+ * Moleculer transport handshake window (hub restart, crash-respawn,
72
+ * restartAddon). The reliable replacement for lost events is the D3 re-handshake
73
+ * (`listClusterNativeCaps()`), which `resolveNativeCapOwnerSync` /
74
+ * `getBindings` step 4 fall through to on a push miss. The `$node.disconnected`
75
+ * handler purges a gone node's entries; the worker re-handshakes (and re-emits
76
+ * `native-registered`) on its next boot.
77
+ */
66
78
  export declare function wireRemoteNativeCapSync(ctx: AddonContext, remoteNativeCaps: RemoteNativeCaps): void;
67
79
  /**
68
- * All a bindings-store read or write needs: the settings door. Named narrower
69
- * than {@link BindingsDeps} so the activation verb (`device-source-activation.ts`)
70
- * can reach the store without the device ledger and the remote-native cache it
71
- * never touches — `BindingsDeps` satisfies it structurally, so every existing
72
- * call site is unchanged.
73
- */
80
+ * All a bindings-store read or write needs: the settings door. Named narrower
81
+ * than {@link BindingsDeps} so the activation verb (`device-source-activation.ts`)
82
+ * can reach the store without the device ledger and the remote-native cache it
83
+ * never touches — `BindingsDeps` satisfies it structurally, so every existing
84
+ * call site is unchanged.
85
+ */
74
86
  export interface BindingsStoreDeps {
75
- readonly ctx: AddonContext;
87
+ readonly ctx: AddonContext;
76
88
  }
77
89
  export declare function readBindingsStore(deps: BindingsStoreDeps): Promise<DeviceBindingsStore>;
78
90
  export declare function writeBindingsStore(deps: BindingsStoreDeps, next: DeviceBindingsStore): Promise<void>;
79
91
  export declare function resolveWrapperNodeId(_wrapperAddonId: string): string;
80
92
  /**
81
- * Reduce a provider node id to the routable form `DeviceProxy` can pin.
82
- *
83
- * Every addon runs in its own `addon-runner` with the composite node id
84
- * `${parentNodeId}/${runnerId}` (see `addon-runner.ts`) — e.g.
85
- * `hub/provider-reolink` or `dev-agent-0/provider-reolink`. That composite is
86
- * an IDENTITY, not a routable target: the `CapRouteResolver` reaches a child
87
- * only THROUGH its parent (the hub resolves a hub-local-uds child by
88
- * cap+device; an agent forwards to its own child). `DeviceProxy` pins
89
- * `entry.providerNodeId` on every cap call, so a binding entry must expose the
90
- * parent node id — otherwise the explicit pin classifies as `remote-moleculer`
91
- * to an unknown node → `no-provider`, which surfaces as
92
- * "this camera doesn't expose …" for client-proxy-driven widget caps
93
- * (motion-zones, privacy-mask). Wrappers already report the parent via
94
- * `resolveWrapperNodeId`; this aligns natives with the same contract.
95
- *
96
- * A flat node id (a genuine standalone node with no `/`) is returned
97
- * unchanged.
98
- */
93
+ * Reduce a provider node id to the routable form `DeviceProxy` can pin.
94
+ *
95
+ * Every addon runs in its own `addon-runner` with the composite node id
96
+ * `${parentNodeId}/${runnerId}` (see `addon-runner.ts`) — e.g.
97
+ * `hub/provider-reolink` or `dev-agent-0/provider-reolink`. That composite is
98
+ * an IDENTITY, not a routable target: the `CapRouteResolver` reaches a child
99
+ * only THROUGH its parent (the hub resolves a hub-local-uds child by
100
+ * cap+device; an agent forwards to its own child). `DeviceProxy` pins
101
+ * `entry.providerNodeId` on every cap call, so a binding entry must expose the
102
+ * parent node id — otherwise the explicit pin classifies as `remote-moleculer`
103
+ * to an unknown node → `no-provider`, which surfaces as
104
+ * "this camera doesn't expose …" for client-proxy-driven widget caps
105
+ * (motion-zones, privacy-mask). Wrappers already report the parent via
106
+ * `resolveWrapperNodeId`; this aligns natives with the same contract.
107
+ *
108
+ * A flat node id (a genuine standalone node with no `/`) is returned
109
+ * unchanged.
110
+ */
99
111
  export declare function toRoutableProviderNodeId(nodeId: string): string;
100
112
  /**
101
- * Resolve a remote native cap entry for a given `(capName, deviceId)` by
102
- * consulting the handshake-fed `HubNodeRegistry` via
103
- * `ctx.kernel.listClusterNativeCaps()`. Called when the push-based
104
- * `remoteNativeCaps` cache misses — covers the Moleculer transport
105
- * handshake window where `DeviceBindingsChanged` events were lost but the
106
- * D3 re-handshake (post device restore) has already populated the registry.
107
- *
108
- * Returns `null` when the entry is genuinely not present in the cluster
109
- * view (cap not registered on any worker for that device).
110
- */
113
+ * Resolve a remote native cap entry for a given `(capName, deviceId)` by
114
+ * consulting the handshake-fed `HubNodeRegistry` via
115
+ * `ctx.kernel.listClusterNativeCaps()`. Called when the push-based
116
+ * `remoteNativeCaps` cache misses — covers the Moleculer transport
117
+ * handshake window where `DeviceBindingsChanged` events were lost but the
118
+ * D3 re-handshake (post device restore) has already populated the registry.
119
+ *
120
+ * Returns `null` when the entry is genuinely not present in the cluster
121
+ * view (cap not registered on any worker for that device).
122
+ */
111
123
  export declare function resolveRemoteNativeCapFromRegistry(deps: BindingsDeps, capName: string, deviceId: number): {
112
- addonId: string;
113
- nodeId: string;
124
+ addonId: string;
125
+ nodeId: string;
114
126
  } | null;
115
127
  /**
116
- * Resolve the device's declared TYPE (`'camera'`, `'event-emitter'`, …), or
117
- * `undefined` when it cannot be established.
118
- *
119
- * The PERSISTED row is the authority: `ctx.kernel.deviceRegistry` is hub-only
120
- * and has been observed empty in the very process that answers `getBindings`
121
- * correctly (see the note on `getAllBindings`). The registry is consulted only
122
- * as a secondary source, for a device constructed but not yet persisted.
123
- *
124
- * `undefined` is a first-class answer and callers must treat it as "no
125
- * filtering" — an absent row must never be the reason a device loses bindings.
126
- */
128
+ * Resolve the device's declared TYPE (`'camera'`, `'event-emitter'`, …), or
129
+ * `undefined` when it cannot be established.
130
+ *
131
+ * The PERSISTED row is the authority: `ctx.kernel.deviceRegistry` is hub-only
132
+ * and has been observed empty in the very process that answers `getBindings`
133
+ * correctly (see the note on `getAllBindings`). The registry is consulted only
134
+ * as a secondary source, for a device constructed but not yet persisted.
135
+ *
136
+ * `undefined` is a first-class answer and callers must treat it as "no
137
+ * filtering" — an absent row must never be the reason a device loses bindings.
138
+ */
127
139
  export declare function resolveDeviceType(deps: BindingsDeps, row: DeviceRow | null, deviceId: number): string | undefined;
128
140
  /**
129
- * Whether the device-manager's own stores still know a device id.
130
- *
131
- * `'unknown'` is NOT `'absent'` — it means the question could not be answered
132
- * and the caller must behave exactly as it did before asking.
133
- */
134
- export type DevicePresence = 'present' | 'absent' | 'unknown';
141
+ * Whether the device-manager's own stores still know a device id.
142
+ *
143
+ * `'unknown'` is NOT `'absent'` — it means the question could not be answered
144
+ * and the caller must behave exactly as it did before asking.
145
+ */
146
+ export type DevicePresence = "present" | "absent" | "unknown";
135
147
  /**
136
- * Is this device still part of the fleet?
137
- *
138
- * The device-manager's own stores are the authority in-process — no RPC. Two
139
- * sources, in the same order `resolveDeviceType` uses them: the live registry
140
- * first (a device constructed but not yet persisted is present), then the
141
- * PERSISTED meta, which is the index `getBindings` already reads and is present
142
- * wherever this provider runs.
143
- *
144
- * `'absent'` is only ever returned against a NON-EMPTY ledger. An empty one
145
- * means device restore has not run, not that the fleet was deleted (D49) — the
146
- * same reason `getAllBindings` warns instead of reporting zero devices. That is
147
- * the only reason this is async: the `COUNT(*)` runs solely on the miss path,
148
- * where the alternative is to call a device gone because the store is empty.
149
- *
150
- * `ledgerNonEmpty` is passed IN rather than defaulted, deliberately. A default
151
- * that issued its own `rows.count()` would be a per-device read hiding behind
152
- * an optional argument — the exact shape this file just removed from the
153
- * activations blob — and nothing would fail when a future caller took it.
154
- */
148
+ * Is this device still part of the fleet?
149
+ *
150
+ * The device-manager's own stores are the authority in-process — no RPC. Two
151
+ * sources, in the same order `resolveDeviceType` uses them: the live registry
152
+ * first (a device constructed but not yet persisted is present), then the
153
+ * PERSISTED meta, which is the index `getBindings` already reads and is present
154
+ * wherever this provider runs.
155
+ *
156
+ * `'absent'` is only ever returned against a NON-EMPTY ledger. An empty one
157
+ * means device restore has not run, not that the fleet was deleted (D49) — the
158
+ * same reason `getAllBindings` warns instead of reporting zero devices. That is
159
+ * the only reason this is async: the `COUNT(*)` runs solely on the miss path,
160
+ * where the alternative is to call a device gone because the store is empty.
161
+ *
162
+ * `ledgerNonEmpty` is passed IN rather than defaulted, deliberately. A default
163
+ * that issued its own `rows.count()` would be a per-device read hiding behind
164
+ * an optional argument — the exact shape this file just removed from the
165
+ * activations blob — and nothing would fail when a future caller took it.
166
+ */
155
167
  export declare function resolveDevicePresence(deps: BindingsDeps, row: DeviceRow | null, deviceId: number, ledgerNonEmpty: LedgerNonEmpty): Promise<DevicePresence>;
156
168
  /** "Does the ledger hold any row at all?", asked at most once per pass. */
157
169
  export type LedgerNonEmpty = () => Promise<boolean>;
158
170
  /**
159
- * Does a capability apply to a device of type `deviceType`?
160
- *
161
- * The cap's `deviceTypes` is the ONLY declaration consulted (D4: behavioural
162
- * cap metadata lives in the `*.cap.ts`, never in a manifest). Two deliberate
163
- * fail-open cases:
164
- *
165
- * - a cap that declares no `deviceTypes` (or an empty list) applies to every
166
- * device — the pre-existing, back-compatible semantics;
167
- * - an UNKNOWN `deviceType` never filters, so a missing/failed meta lookup
168
- * changes nothing (D49: a read that fails must not destroy work).
169
- */
171
+ * Does a capability apply to a device of type `deviceType`?
172
+ *
173
+ * The cap's `deviceTypes` is the ONLY declaration consulted (D4: behavioural
174
+ * cap metadata lives in the `*.cap.ts`, never in a manifest). Two deliberate
175
+ * fail-open cases:
176
+ *
177
+ * - a cap that declares no `deviceTypes` (or an empty list) applies to every
178
+ * device — the pre-existing, back-compatible semantics;
179
+ * - an UNKNOWN `deviceType` never filters, so a missing/failed meta lookup
180
+ * changes nothing (D49: a read that fails must not destroy work).
181
+ */
170
182
  export declare function capAppliesToDeviceType(def: CapabilityDefinition | undefined, deviceType: string | undefined): boolean;
171
183
  /**
172
- * An addon's identity, with the node it happens to run on stripped.
173
- *
174
- * A capability registered on an agent arrives under `<addonId>@<nodeId>` —
175
- * `pipeline-analytics@little-unraid`. That is the same ADDON as the hub-local
176
- * `pipeline-analytics`, and treating the two as different providers is what
177
- * put `analytics` in device 592's clip picker three times (D554 amended).
178
- * Where a provider RUNS is a routing fact; it is not part of who it is.
179
- */
184
+ * An addon's identity, with the node it happens to run on stripped.
185
+ *
186
+ * A capability registered on an agent arrives under `<addonId>@<nodeId>` —
187
+ * `pipeline-analytics@little-unraid`. That is the same ADDON as the hub-local
188
+ * `pipeline-analytics`, and treating the two as different providers is what
189
+ * put `analytics` in device 592's clip picker three times (D554 amended).
190
+ * Where a provider RUNS is a routing fact; it is not part of who it is.
191
+ */
180
192
  export declare function addonIdentityOf(addonId: string): string;
181
193
  export declare function getBindings(deps: BindingsDeps, input: {
182
- deviceId: number;
194
+ deviceId: number;
183
195
  }): Promise<{
184
- deviceId: number;
185
- entries: DeviceBindingEntry[];
196
+ deviceId: number;
197
+ entries: DeviceBindingEntry[];
186
198
  }>;
187
199
  /**
188
- * A NAMED set of devices' bindings, in one round-trip.
189
- *
190
- * Same resolver as `getBindings`, so the routing rules and the per-device
191
- * shape are identical by construction. It exists because the gap between one
192
- * device and all 988 had nothing in it: measured on the live hub 2026-08-25, a
193
- * caller needing seventy-five paid either 75 round-trips (1211 ms / 118 KB) or
194
- * `getAllBindings` (511 ms / 679 KB of mostly-unwanted rows).
195
- *
196
- * Sequential on purpose, like `getAllBindings`: `resolveBindingsForDevice`'s
197
- * remaining per-device work is the routing rules, which run on this process's
198
- * own event loop, so concurrency buys nothing there and a fan-out of
199
- * `Promise.all` over hundreds of ids only makes the queue less fair to
200
- * everything else on it. Both parts that DO amortise across the whole set are
201
- * fetched ONCE, ahead of the loop, and in parallel with each other:
202
- *
203
- * - the device rows ({@link DeviceRowStore.getMany}) rather than once per
204
- * iteration — measured on the live hub 2026-08-25, `get
205
- * device-manager:devices` ran 1 656 calls/min steady-state, one row per
206
- * call, which is exactly what looping `getBindings`'s own
207
- * `rows.get(deviceId)` here produced;
208
- * - the wrapper-activation blob, which the per-device resolver used to read
209
- * itself — a second settings-door round trip per id, on the call that
210
- * exists precisely so a caller needing many devices does not pay per
211
- * device. Measured on the live hub 2026-08-30, mid-drain:
212
- * `getBindingsBatch` of 1 id = 5.78 s, of 8 ids = 17.16 s — a slope of
213
- * 1.63 s PER ADDITIONAL DEVICE, on a call that ships 4.5 KB a row.
214
- */
200
+ * A NAMED set of devices' bindings, in one round-trip.
201
+ *
202
+ * Same resolver as `getBindings`, so the routing rules and the per-device
203
+ * shape are identical by construction. It exists because the gap between one
204
+ * device and all 988 had nothing in it: measured on the live hub 2026-08-25, a
205
+ * caller needing seventy-five paid either 75 round-trips (1211 ms / 118 KB) or
206
+ * `getAllBindings` (511 ms / 679 KB of mostly-unwanted rows).
207
+ *
208
+ * Sequential on purpose, like `getAllBindings`: `resolveBindingsForDevice`'s
209
+ * remaining per-device work is the routing rules, which run on this process's
210
+ * own event loop, so concurrency buys nothing there and a fan-out of
211
+ * `Promise.all` over hundreds of ids only makes the queue less fair to
212
+ * everything else on it. Both parts that DO amortise across the whole set are
213
+ * fetched ONCE, ahead of the loop, and in parallel with each other:
214
+ *
215
+ * - the device rows ({@link DeviceRowStore.getMany}) rather than once per
216
+ * iteration — measured on the live hub 2026-08-25, `get
217
+ * device-manager:devices` ran 1 656 calls/min steady-state, one row per
218
+ * call, which is exactly what looping `getBindings`'s own
219
+ * `rows.get(deviceId)` here produced;
220
+ * - the wrapper-activation blob, which the per-device resolver used to read
221
+ * itself — a second settings-door round trip per id, on the call that
222
+ * exists precisely so a caller needing many devices does not pay per
223
+ * device. Measured on the live hub 2026-08-30, mid-drain:
224
+ * `getBindingsBatch` of 1 id = 5.78 s, of 8 ids = 17.16 s — a slope of
225
+ * 1.63 s PER ADDITIONAL DEVICE, on a call that ships 4.5 KB a row.
226
+ */
215
227
  export declare function getBindingsBatch(deps: BindingsDeps, input: {
216
- deviceIds: readonly number[];
228
+ deviceIds: readonly number[];
217
229
  }): Promise<Array<{
218
- deviceId: number;
219
- entries: DeviceBindingEntry[];
230
+ deviceId: number;
231
+ entries: DeviceBindingEntry[];
220
232
  }>>;
221
233
  /**
222
- * Whole-fleet binding dump. Iterates every device known to the
223
- * deviceRegistry and reuses the per-device `getBindings` resolver
224
- * for each — same routing rules, single round-trip. Used by
225
- * `SystemManager.init()` for warm-boot.
226
- *
227
- * Bindings change rarely (wrapper toggle, device add/remove) so
228
- * clients invalidate via the existing
229
- * `capability.binding-changed` event rather than re-fetching this
230
- * payload periodically.
231
- *
232
- * **"Single round-trip" was a claim, not a fact, until 2026-08-30.** The
233
- * per-device resolver read the wrapper-activation blob itself, so this call
234
- * issued one settings-door RPC per device — 1 020 of them on the live
235
- * 1 019-device hub, at ~2.9 s each while the storage drain ran. It did not
236
- * return in 240 s, and `SystemMirror.init` gives it 15 s, so the admin UI
237
- * could not boot at all. Now the whole pass costs exactly TWO reads (the fleet
238
- * listing and the blob), issued in parallel, and nothing in the loop awaits a
239
- * store.
240
- */
234
+ * Whole-fleet binding dump. Iterates every device known to the
235
+ * deviceRegistry and reuses the per-device `getBindings` resolver
236
+ * for each — same routing rules, single round-trip. Used by
237
+ * `SystemManager.init()` for warm-boot.
238
+ *
239
+ * Bindings change rarely (wrapper toggle, device add/remove) so
240
+ * clients invalidate via the existing
241
+ * `capability.binding-changed` event rather than re-fetching this
242
+ * payload periodically.
243
+ *
244
+ * **"Single round-trip" was a claim, not a fact, until 2026-08-30.** The
245
+ * per-device resolver read the wrapper-activation blob itself, so this call
246
+ * issued one settings-door RPC per device — 1 020 of them on the live
247
+ * 1 019-device hub, at ~2.9 s each while the storage drain ran. It did not
248
+ * return in 240 s, and `SystemMirror.init` gives it 15 s, so the admin UI
249
+ * could not boot at all. Now the whole pass costs exactly TWO reads (the fleet
250
+ * listing and the blob), issued in parallel, and nothing in the loop awaits a
251
+ * store.
252
+ */
241
253
  export declare function getAllBindings(deps: BindingsDeps): Promise<Array<{
242
- deviceId: number;
243
- entries: DeviceBindingEntry[];
254
+ deviceId: number;
255
+ entries: DeviceBindingEntry[];
244
256
  }>>;
245
257
  /**
246
- * The ids of every device bound to at least one of `capNames`, ascending.
247
- *
248
- * Built on {@link getAllBindings} so the routing rules (native, wrapped,
249
- * remote) are the ones `getBindings` applies — a second resolver is how the
250
- * two would drift. Only ids leave: the whole point is that a caller asking
251
- * "which devices are openings" does not receive 1 000 binding maps (D636).
252
- */
258
+ * The ids of every device bound to at least one of `capNames`, ascending.
259
+ *
260
+ * Built on {@link getAllBindings} so the routing rules (native, wrapped,
261
+ * remote) are the ones `getBindings` applies — a second resolver is how the
262
+ * two would drift. Only ids leave: the whole point is that a caller asking
263
+ * "which devices are openings" does not receive 1 000 binding maps (D636).
264
+ */
253
265
  export interface ListDeviceIdsByCapsInput {
254
- readonly capNames: readonly string[];
266
+ readonly capNames: readonly string[];
255
267
  }
256
268
  export declare function listDeviceIdsByCaps(deps: BindingsDeps, input: ListDeviceIdsByCapsInput): Promise<number[]>;
257
269
  /**
258
- * Resolve a numeric deviceId to a stableId via persisted meta.
259
- * Used by callers that need a persisted stableId when the live registry
260
- * does not hold the device (cross-process / mid-restart). Formerly fed
261
- * the Config Identity section; that section left Config for Overview.
262
- * aggregator (see `buildBaseDeviceSection`) to surface the stableId as
263
- * a readonly display field. All runtime/registry lookups are keyed by
264
- * numeric deviceId; this helper is display-only.
265
- */
270
+ * Resolve a numeric deviceId to a stableId via persisted meta.
271
+ * Used by callers that need a persisted stableId when the live registry
272
+ * does not hold the device (cross-process / mid-restart). Formerly fed
273
+ * the Config Identity section; that section left Config for Overview.
274
+ * aggregator (see `buildBaseDeviceSection`) to surface the stableId as
275
+ * a readonly display field. All runtime/registry lookups are keyed by
276
+ * numeric deviceId; this helper is display-only.
277
+ */
266
278
  export declare function lookupPersistedStableId(deps: BindingsDeps, deviceId: number): Promise<string | undefined>;
@@ -1,21 +1,21 @@
1
- import { StreamProfile, StreamProfilePatch } from '@camstack/types';
1
+ import type { StreamProfile, StreamProfilePatch } from "@camstack/types";
2
2
  /** A framework-derived contribution shape — sections[] (+ optional tabs[]). */
3
3
  export interface DerivedContributionShape {
4
- readonly tabs?: ReadonlyArray<{
5
- id: string;
6
- label: string;
7
- icon: string;
8
- order?: number;
9
- }>;
10
- readonly sections: ReadonlyArray<{
11
- id: string;
12
- title: string;
13
- tab?: string;
14
- order?: number;
15
- description?: string;
16
- columns?: 1 | 2 | 3 | 4;
17
- fields: readonly unknown[];
18
- }>;
4
+ readonly tabs?: ReadonlyArray<{
5
+ id: string;
6
+ label: string;
7
+ icon: string;
8
+ order?: number;
9
+ }>;
10
+ readonly sections: ReadonlyArray<{
11
+ id: string;
12
+ title: string;
13
+ tab?: string;
14
+ order?: number;
15
+ description?: string;
16
+ columns?: 1 | 2 | 3 | 4;
17
+ fields: readonly unknown[];
18
+ }>;
19
19
  }
20
20
  /** A per-profile mutation callback the cap's provider supplies (profile-based caps only). */
21
21
  export type ProfileSetter = (profile: StreamProfile, patch: StreamProfilePatch) => Promise<void>;
@@ -25,21 +25,21 @@ export declare const DAY_NIGHT_BUILDER_ID: "day-night";
25
25
  export declare const IMAGE_SETTINGS_BUILDER_ID: "image-settings";
26
26
  export declare const RECORDING_ONBOARD_BUILDER_ID: "recording-onboard";
27
27
  /**
28
- * Build the device-detail form section for a `derived-form` device-config
29
- * cap. Returns null when the camera exposes no configurable property.
30
- */
28
+ * Build the device-detail form section for a `derived-form` device-config
29
+ * cap. Returns null when the camera exposes no configurable property.
30
+ */
31
31
  export declare function deriveFormContribution(builderId: string, options: unknown, status: unknown): DerivedContributionShape | null;
32
32
  /**
33
- * Route a flat form patch back through a profile-based cap's per-profile
34
- * `setProfile` mutation (`stream-params`). Throws if `builderId` isn't
35
- * registered as a profile-based reducer — callers dispatch here only
36
- * after confirming the bound provider exposes `setProfile`.
37
- */
33
+ * Route a flat form patch back through a profile-based cap's per-profile
34
+ * `setProfile` mutation (`stream-params`). Throws if `builderId` isn't
35
+ * registered as a profile-based reducer — callers dispatch here only
36
+ * after confirming the bound provider exposes `setProfile`.
37
+ */
38
38
  export declare function applyDerivedFormProfilePatch(builderId: string, patch: Record<string, unknown>, setProfile: ProfileSetter): Promise<void>;
39
39
  /**
40
- * Parse a flat form patch into the settings payload for a `setSettings`-
41
- * based cap (`day-night`, `image-settings`). The caller forwards the
42
- * result verbatim to `dcProvider.setSettings({ deviceId, settings })`.
43
- * Throws if `builderId` isn't registered as a settings-based reducer.
44
- */
40
+ * Parse a flat form patch into the settings payload for a `setSettings`-
41
+ * based cap (`day-night`, `image-settings`). The caller forwards the
42
+ * result verbatim to `dcProvider.setSettings({ deviceId, settings })`.
43
+ * Throws if `builderId` isn't registered as a settings-based reducer.
44
+ */
45
45
  export declare function parseDerivedFormSettingsPatch(builderId: string, patch: Record<string, unknown>): Record<string, unknown>;
@@ -1,21 +1,40 @@
1
- import { AddonContext } from '@camstack/types';
1
+ /**
2
+ * The device-config door of the keychain (D787) — device CONNECTION config
3
+ * (camera passwords, controller API keys) lives in device-manager's per-device
4
+ * store, written by the driver's `persistConfig` and read back by its
5
+ * `loadConfig`. Resolving HERE, at the door, means no driver ever sees a
6
+ * marker and no driver has to change.
7
+ *
8
+ * - WRITE: the paths the device's own schema declares secret (D783:
9
+ * `secretConfigPaths`, from the persist call or from its last
10
+ * `registerDevice`) go through the keychain save path, owned by the DRIVER
11
+ * addon (`device/<id>` scope). A value equal to an inline pre-keychain one
12
+ * stays inline (no silent migration); `''` keeps.
13
+ * - READ: every marker in the stored blob is resolved for the driver; one that
14
+ * cannot be is LEFT OUT (the driver's schema default applies) and logged by
15
+ * ref — never answered as `''`, never written back.
16
+ *
17
+ * device-manager runs in hub-main, so it acts for the driver through
18
+ * `ctx.secrets.forOwner` — the in-process delegate no forked addon has.
19
+ */
20
+ import { type AddonContext } from "@camstack/types";
2
21
  export interface DeviceConfigSecretDeps {
3
- readonly ctx: AddonContext;
4
- readonly readStored: () => Promise<Record<string, unknown>>;
5
- readonly write: (patch: Record<string, unknown>) => Promise<void>;
22
+ readonly ctx: AddonContext;
23
+ readonly readStored: () => Promise<Record<string, unknown>>;
24
+ readonly write: (patch: Record<string, unknown>) => Promise<void>;
6
25
  }
7
26
  /** Persist a device config patch with its declared secrets kept in the keychain. */
8
27
  export declare function persistDeviceConfigWithSecrets(deps: DeviceConfigSecretDeps, input: {
9
- readonly deviceId: number;
10
- readonly ownerAddonId: string;
11
- readonly data: Record<string, unknown>;
12
- readonly secretPaths: readonly string[];
13
- /** The write was made by the operator (no driver stamped it). */
14
- readonly operatorWrite: boolean;
28
+ readonly deviceId: number;
29
+ readonly ownerAddonId: string;
30
+ readonly data: Record<string, unknown>;
31
+ readonly secretPaths: readonly string[];
32
+ /** The write was made by the operator (no driver stamped it). */
33
+ readonly operatorWrite: boolean;
15
34
  }): Promise<void>;
16
35
  /** A stored device config with its markers resolved for the driver. */
17
36
  export declare function loadDeviceConfigWithSecrets(ctx: AddonContext, input: {
18
- readonly deviceId: number;
19
- readonly ownerAddonId: string;
20
- readonly stored: Record<string, unknown>;
37
+ readonly deviceId: number;
38
+ readonly ownerAddonId: string;
39
+ readonly stored: Record<string, unknown>;
21
40
  }): Promise<Record<string, unknown>>;