@camstack/ui-library 1.2.256 → 1.2.258

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 (375) hide show
  1. package/dist/composites/accelerator-label.d.ts +9 -9
  2. package/dist/composites/adaptive-downlink.d.ts +141 -143
  3. package/dist/composites/addon-global-settings-form.d.ts +73 -60
  4. package/dist/composites/addon-page-props.d.ts +34 -10
  5. package/dist/composites/agent-step-editor.d.ts +48 -47
  6. package/dist/composites/app-shell/app-shell.d.ts +17 -17
  7. package/dist/composites/app-shell/index.d.ts +3 -3
  8. package/dist/composites/app-shell/sidebar-item.d.ts +9 -8
  9. package/dist/composites/app-shell/sidebar.d.ts +10 -10
  10. package/dist/composites/audio-classification-list.d.ts +16 -15
  11. package/dist/composites/audio-level-waveform.d.ts +31 -30
  12. package/dist/composites/audio-waveform.d.ts +18 -17
  13. package/dist/composites/battery-badge.d.ts +27 -13
  14. package/dist/composites/breadcrumb.d.ts +21 -21
  15. package/dist/composites/camera-stream-player.d.ts +309 -309
  16. package/dist/composites/cap-settings/AutotrackSection.d.ts +19 -2
  17. package/dist/composites/cap-settings/CameraGridLayoutEditor.d.ts +24 -2
  18. package/dist/composites/cap-settings/ConsumablesPanel.d.ts +21 -2
  19. package/dist/composites/cap-settings/CoverageTrack.d.ts +21 -20
  20. package/dist/composites/cap-settings/EventBucketStrip.d.ts +21 -20
  21. package/dist/composites/cap-settings/EventHeatmap.d.ts +8 -7
  22. package/dist/composites/cap-settings/HomePresetPicker.d.ts +2 -2
  23. package/dist/composites/cap-settings/MaskShapeCanvas.d.ts +143 -41
  24. package/dist/composites/cap-settings/MotionZonesSettings.d.ts +41 -2
  25. package/dist/composites/cap-settings/NavigationPanel.d.ts +14 -2
  26. package/dist/composites/cap-settings/PrivacyMaskSettings.d.ts +3 -2
  27. package/dist/composites/cap-settings/PtzPanel.d.ts +15 -2
  28. package/dist/composites/cap-settings/RecordingBandsEditor.d.ts +33 -32
  29. package/dist/composites/cap-settings/RecordingPanel.d.ts +3 -2
  30. package/dist/composites/cap-settings/RecordingSettings.d.ts +11 -10
  31. package/dist/composites/cap-settings/RecordingTimeline.d.ts +3 -2
  32. package/dist/composites/cap-settings/SceneMonitorEditor.d.ts +3 -51
  33. package/dist/composites/cap-settings/SceneReferenceGallery.d.ts +62 -23
  34. package/dist/composites/cap-settings/SceneSettingsForm.d.ts +52 -16
  35. package/dist/composites/cap-settings/TimelineControls.d.ts +21 -20
  36. package/dist/composites/cap-settings/camera-grid-layout.d.ts +95 -95
  37. package/dist/composites/cap-settings/event-thumb.d.ts +9 -8
  38. package/dist/composites/cap-settings/index.d.ts +20 -20
  39. package/dist/composites/cap-settings/privacy-mask-audio.d.ts +47 -47
  40. package/dist/composites/cap-settings/recording-config-form.d.ts +25 -25
  41. package/dist/composites/cap-settings/recording-spans.d.ts +14 -14
  42. package/dist/composites/cap-settings/recording-timeline-model.d.ts +57 -57
  43. package/dist/composites/cap-settings/scene-monitor-copy.d.ts +58 -49
  44. package/dist/composites/client-network-sample.d.ts +41 -41
  45. package/dist/composites/clips/ClipBandBar.d.ts +44 -14
  46. package/dist/composites/clips/ClipPanel.d.ts +30 -6
  47. package/dist/composites/clips/ClipTile.d.ts +26 -5
  48. package/dist/composites/clips/ClipsSection.d.ts +107 -2
  49. package/dist/composites/clips/clip-band.d.ts +72 -38
  50. package/dist/composites/clips/clip-day-window.d.ts +7 -30
  51. package/dist/composites/clips/clip-source-state.d.ts +55 -26
  52. package/dist/composites/clips/clip-still-retry.d.ts +39 -39
  53. package/dist/composites/clips/clip-thumbnail-fetch.d.ts +9 -9
  54. package/dist/composites/clips/clip-tile-media.d.ts +64 -32
  55. package/dist/composites/clips/clip-view-state.d.ts +76 -46
  56. package/dist/composites/code-block.d.ts +5 -4
  57. package/dist/composites/config-form-builder.d.ts +14 -13
  58. package/dist/composites/config-form-field.d.ts +63 -62
  59. package/dist/composites/config-icon-field.d.ts +10 -9
  60. package/dist/composites/config-secret-field.d.ts +51 -27
  61. package/dist/composites/confirm-action-button.d.ts +52 -39
  62. package/dist/composites/confirm-dialog.d.ts +110 -48
  63. package/dist/composites/copy-button.d.ts +25 -19
  64. package/dist/composites/data-table/data-table-header.d.ts +8 -7
  65. package/dist/composites/data-table/data-table-pagination.d.ts +7 -6
  66. package/dist/composites/data-table/data-table-row.d.ts +8 -7
  67. package/dist/composites/data-table/data-table.d.ts +3 -2
  68. package/dist/composites/data-table/index.d.ts +2 -2
  69. package/dist/composites/data-table/types.d.ts +29 -29
  70. package/dist/composites/data-table-filter-bar.d.ts +30 -29
  71. package/dist/composites/data-table-filter.d.ts +34 -34
  72. package/dist/composites/data-table-layout.d.ts +24 -24
  73. package/dist/composites/data-table-pager.d.ts +5 -5
  74. package/dist/composites/data-table-pagination.d.ts +23 -23
  75. package/dist/composites/data-table-selection.d.ts +10 -10
  76. package/dist/composites/data-table.d.ts +167 -118
  77. package/dist/composites/detection-canvas.d.ts +34 -25
  78. package/dist/composites/detection-colors.d.ts +9 -9
  79. package/dist/composites/detection-overlay.d.ts +33 -32
  80. package/dist/composites/detection-result-tree.d.ts +22 -9
  81. package/dist/composites/dev-shell.d.ts +15 -14
  82. package/dist/composites/device-activity-panel.d.ts +37 -31
  83. package/dist/composites/device-card.d.ts +32 -32
  84. package/dist/composites/device-controls/ac-panel.d.ts +2 -2
  85. package/dist/composites/device-controls/alarm-hero-card.d.ts +42 -42
  86. package/dist/composites/device-controls/atoms.d.ts +50 -50
  87. package/dist/composites/device-controls/brightness-panel.d.ts +3 -3
  88. package/dist/composites/device-controls/button-control.d.ts +14 -14
  89. package/dist/composites/device-controls/climate-panel.d.ts +12 -12
  90. package/dist/composites/device-controls/container-primary-hero.d.ts +33 -16
  91. package/dist/composites/device-controls/container-primary.d.ts +68 -39
  92. package/dist/composites/device-controls/control-panel.d.ts +4 -4
  93. package/dist/composites/device-controls/control-registry.d.ts +81 -70
  94. package/dist/composites/device-controls/cover-hero-card.d.ts +26 -26
  95. package/dist/composites/device-controls/cover-inline.d.ts +20 -20
  96. package/dist/composites/device-controls/cover-panel.d.ts +2 -2
  97. package/dist/composites/device-controls/dummy-hero-card.d.ts +2 -2
  98. package/dist/composites/device-controls/fan-hero-card.d.ts +20 -20
  99. package/dist/composites/device-controls/fan-panel.d.ts +3 -3
  100. package/dist/composites/device-controls/humidifier-control.d.ts +46 -29
  101. package/dist/composites/device-controls/image-control.d.ts +41 -27
  102. package/dist/composites/device-controls/index.d.ts +34 -34
  103. package/dist/composites/device-controls/lawn-mower-control.d.ts +30 -16
  104. package/dist/composites/device-controls/light-hero-card.d.ts +15 -15
  105. package/dist/composites/device-controls/lock-hero-card.d.ts +14 -14
  106. package/dist/composites/device-controls/lock-panel.d.ts +3 -3
  107. package/dist/composites/device-controls/media-player-hero-card.d.ts +16 -16
  108. package/dist/composites/device-controls/media-player-panel.d.ts +7 -7
  109. package/dist/composites/device-controls/offline-badge.d.ts +23 -8
  110. package/dist/composites/device-controls/panel-controls.d.ts +39 -20
  111. package/dist/composites/device-controls/pet-feeder-panel.d.ts +27 -9
  112. package/dist/composites/device-controls/popover-row-action.d.ts +18 -6
  113. package/dist/composites/device-controls/primary-child-picker.d.ts +31 -15
  114. package/dist/composites/device-controls/primary-child.d.ts +14 -25
  115. package/dist/composites/device-controls/radial-gauge.d.ts +17 -17
  116. package/dist/composites/device-controls/script-automation-controls.d.ts +9 -9
  117. package/dist/composites/device-controls/sensor-hero-card.d.ts +26 -8
  118. package/dist/composites/device-controls/sensor-inline-control.d.ts +21 -9
  119. package/dist/composites/device-controls/sensor-value-atom.d.ts +97 -76
  120. package/dist/composites/device-controls/switch-hero-card.d.ts +11 -11
  121. package/dist/composites/device-controls/switch-panel.d.ts +2 -2
  122. package/dist/composites/device-controls/tap-toggle.d.ts +13 -13
  123. package/dist/composites/device-controls/thermostat-hero-card.d.ts +16 -16
  124. package/dist/composites/device-controls/types.d.ts +11 -11
  125. package/dist/composites/device-controls/update-control.d.ts +20 -7
  126. package/dist/composites/device-controls/vacuum-control.d.ts +41 -25
  127. package/dist/composites/device-controls/valve-control.d.ts +51 -35
  128. package/dist/composites/device-controls/water-heater-control.d.ts +48 -31
  129. package/dist/composites/device-controls/weather-control.d.ts +46 -28
  130. package/dist/composites/device-export-panel.d.ts +34 -34
  131. package/dist/composites/device-grid.d.ts +10 -10
  132. package/dist/composites/device-item/actions.d.ts +40 -18
  133. package/dist/composites/device-item/admin-link-quick-action.d.ts +66 -26
  134. package/dist/composites/device-item/child-layout.d.ts +43 -26
  135. package/dist/composites/device-item/child-section-accordion.d.ts +20 -6
  136. package/dist/composites/device-item/children-accordion.d.ts +11 -11
  137. package/dist/composites/device-item/container-children-context.d.ts +28 -11
  138. package/dist/composites/device-item/device-delete-action.d.ts +23 -5
  139. package/dist/composites/device-item/features.d.ts +33 -15
  140. package/dist/composites/device-item/header.d.ts +53 -31
  141. package/dist/composites/device-item/helpers.d.ts +291 -274
  142. package/dist/composites/device-item/index.d.ts +18 -9
  143. package/dist/composites/device-item/preview.d.ts +41 -21
  144. package/dist/composites/device-item/quick-detail-action.d.ts +4 -4
  145. package/dist/composites/device-item/reboot-quick-action.d.ts +28 -7
  146. package/dist/composites/device-item/role-display-defaults-context.d.ts +28 -12
  147. package/dist/composites/device-item/status-dot.d.ts +24 -6
  148. package/dist/composites/device-list/batch-actions-bar.d.ts +23 -12
  149. package/dist/composites/device-list/batch-toolbar.d.ts +13 -13
  150. package/dist/composites/device-list/columns.d.ts +108 -108
  151. package/dist/composites/device-list/device-integration.d.ts +48 -58
  152. package/dist/composites/device-list/device-mode.d.ts +121 -121
  153. package/dist/composites/device-list/empty-state.d.ts +14 -3
  154. package/dist/composites/device-list/filter-chips.d.ts +42 -29
  155. package/dist/composites/device-list/fuzzy-match.d.ts +22 -22
  156. package/dist/composites/device-list/generic-mode.d.ts +88 -88
  157. package/dist/composites/device-list/group.d.ts +62 -35
  158. package/dist/composites/device-list/hardware-cell.d.ts +14 -3
  159. package/dist/composites/device-list/hardware.d.ts +29 -11
  160. package/dist/composites/device-list/icon-action.d.ts +27 -15
  161. package/dist/composites/device-list/index.d.ts +46 -23
  162. package/dist/composites/device-list/multi-select.d.ts +17 -17
  163. package/dist/composites/device-list/page-size-select.d.ts +13 -7
  164. package/dist/composites/device-list/pagination.d.ts +19 -12
  165. package/dist/composites/device-list/sort.d.ts +28 -15
  166. package/dist/composites/device-list/sortable-header.d.ts +20 -7
  167. package/dist/composites/device-list/table-layout.d.ts +44 -44
  168. package/dist/composites/device-list/type-filter.d.ts +16 -16
  169. package/dist/composites/device-list/url-state.d.ts +35 -35
  170. package/dist/composites/device-meta.d.ts +43 -43
  171. package/dist/composites/device-picker/DevicePicker.d.ts +72 -33
  172. package/dist/composites/device-picker/SelectedChip.d.ts +10 -9
  173. package/dist/composites/device-picker/device-filter-bar.d.ts +19 -18
  174. package/dist/composites/device-picker/device-fleet-view.d.ts +11 -3
  175. package/dist/composites/device-picker/device-parent.d.ts +27 -27
  176. package/dist/composites/device-picker/device-picker-grouping.d.ts +3 -3
  177. package/dist/composites/device-picker/device-picker-model.d.ts +140 -140
  178. package/dist/composites/device-picker/device-selection-rows.d.ts +31 -24
  179. package/dist/composites/device-picker/device-selection.d.ts +43 -43
  180. package/dist/composites/device-picker/index.d.ts +9 -9
  181. package/dist/composites/device-select-field.d.ts +17 -16
  182. package/dist/composites/device-select-filter.d.ts +78 -78
  183. package/dist/composites/device-selector-picker.d.ts +25 -25
  184. package/dist/composites/device-step-matrix.d.ts +54 -28
  185. package/dist/composites/discovery-panel.d.ts +22 -22
  186. package/dist/composites/doorbell-recent-panel.d.ts +9 -8
  187. package/dist/composites/empty-state.d.ts +8 -8
  188. package/dist/composites/error-box.d.ts +32 -17
  189. package/dist/composites/event-kind-visuals.d.ts +29 -18
  190. package/dist/composites/event-stream.d.ts +59 -42
  191. package/dist/composites/extensions/AssociationSlotCard.d.ts +45 -24
  192. package/dist/composites/extensions/ExtensionsPanel.d.ts +41 -18
  193. package/dist/composites/extensions/extensions-view-state.d.ts +71 -53
  194. package/dist/composites/filter-bar.d.ts +22 -21
  195. package/dist/composites/form-field.d.ts +9 -9
  196. package/dist/composites/format-state-value.d.ts +23 -51
  197. package/dist/composites/grouped-model-selector.d.ts +7 -6
  198. package/dist/composites/hls-quality.d.ts +26 -26
  199. package/dist/composites/hls-video.d.ts +62 -39
  200. package/dist/composites/hover-zoom-image.d.ts +35 -16
  201. package/dist/composites/icon-picker.d.ts +86 -50
  202. package/dist/composites/image-selector.d.ts +21 -20
  203. package/dist/composites/index.d.ts +204 -204
  204. package/dist/composites/inference-config-selector.d.ts +36 -35
  205. package/dist/composites/kebab-menu.d.ts +53 -35
  206. package/dist/composites/key-value-list.d.ts +14 -14
  207. package/dist/composites/log-stream-scroll.d.ts +24 -24
  208. package/dist/composites/log-stream.d.ts +81 -70
  209. package/dist/composites/login-form.d.ts +7 -6
  210. package/dist/composites/model-bound-slider.d.ts +46 -26
  211. package/dist/composites/model-picker.d.ts +20 -19
  212. package/dist/composites/mount-addon-page.d.ts +12 -12
  213. package/dist/composites/network-link-badge.d.ts +7 -6
  214. package/dist/composites/node-picker.d.ts +14 -13
  215. package/dist/composites/notification-targets-field.d.ts +76 -58
  216. package/dist/composites/notification-targets-options.d.ts +9 -6
  217. package/dist/composites/option-select/OptionSelect.d.ts +23 -22
  218. package/dist/composites/option-select/index.d.ts +4 -4
  219. package/dist/composites/option-select/option-select-model.d.ts +35 -35
  220. package/dist/composites/page-header.d.ts +6 -6
  221. package/dist/composites/peer-connection-config.d.ts +9 -9
  222. package/dist/composites/phase-icon.d.ts +10 -3
  223. package/dist/composites/pipeline-builder.d.ts +21 -13
  224. package/dist/composites/pipeline-matrix-shared.d.ts +159 -150
  225. package/dist/composites/pipeline-runtime-selector.d.ts +12 -11
  226. package/dist/composites/pipeline-step.d.ts +39 -31
  227. package/dist/composites/placeholder-field/PlaceholderChipField.d.ts +23 -22
  228. package/dist/composites/placeholder-field/index.d.ts +1 -1
  229. package/dist/composites/provider-badge.d.ts +6 -5
  230. package/dist/composites/ptz-overlay.d.ts +38 -18
  231. package/dist/composites/qr-code.d.ts +24 -10
  232. package/dist/composites/reconnect-schedule.d.ts +22 -22
  233. package/dist/composites/resolve-step-default-model.d.ts +94 -94
  234. package/dist/composites/response-log.d.ts +7 -6
  235. package/dist/composites/root-model-source.d.ts +21 -10
  236. package/dist/composites/scope-picker.d.ts +49 -25
  237. package/dist/composites/section-card.d.ts +19 -11
  238. package/dist/composites/setting-row.d.ts +39 -21
  239. package/dist/composites/snapshot-button.d.ts +23 -19
  240. package/dist/composites/sort-header-button.d.ts +25 -8
  241. package/dist/composites/stat-card.d.ts +20 -8
  242. package/dist/composites/state-values-stream.d.ts +49 -24
  243. package/dist/composites/status-badge.d.ts +10 -8
  244. package/dist/composites/step-inspector/gate-control.d.ts +13 -12
  245. package/dist/composites/step-inspector/index.d.ts +8 -8
  246. package/dist/composites/step-inspector/layered-settings-form.d.ts +41 -30
  247. package/dist/composites/step-inspector/segmented-choice.d.ts +8 -7
  248. package/dist/composites/step-inspector/setting-values.d.ts +13 -8
  249. package/dist/composites/step-inspector/step-detail-dock.d.ts +39 -23
  250. package/dist/composites/step-inspector/step-inspector-panel.d.ts +34 -28
  251. package/dist/composites/step-inspector/step-model-row.d.ts +29 -24
  252. package/dist/composites/step-inspector/step-search.d.ts +11 -11
  253. package/dist/composites/step-timings.d.ts +7 -6
  254. package/dist/composites/step-tree.d.ts +17 -12
  255. package/dist/composites/stream-broker-selector.d.ts +29 -8
  256. package/dist/composites/stream-debug/stream-debug-overlay.d.ts +40 -40
  257. package/dist/composites/stream-debug/webrtc-debug-stats.d.ts +144 -129
  258. package/dist/composites/stream-panel.d.ts +212 -201
  259. package/dist/composites/table-sort.d.ts +61 -61
  260. package/dist/composites/timezone-selector.d.ts +15 -13
  261. package/dist/composites/training/send-frame-to-training.d.ts +5 -4
  262. package/dist/composites/training/training-collection-picker.d.ts +4 -3
  263. package/dist/composites/training/training-refusal-text.d.ts +6 -6
  264. package/dist/composites/unit-picker/UnitPicker.d.ts +19 -14
  265. package/dist/composites/unit-picker/index.d.ts +1 -1
  266. package/dist/composites/use-data-table-filter.d.ts +19 -19
  267. package/dist/composites/version-badge.d.ts +19 -18
  268. package/dist/composites/webrtc-diagnostics/EndpointTestCard.d.ts +7 -7
  269. package/dist/composites/webrtc-diagnostics/HubSessionTestCard.d.ts +14 -14
  270. package/dist/composites/webrtc-diagnostics/RunReport.d.ts +10 -5
  271. package/dist/composites/webrtc-diagnostics/endpoint-probe.d.ts +41 -21
  272. package/dist/composites/webrtc-diagnostics/endpoint-test.d.ts +37 -32
  273. package/dist/composites/webrtc-diagnostics/format.d.ts +3 -3
  274. package/dist/composites/webrtc-diagnostics/ice-candidates.d.ts +49 -49
  275. package/dist/composites/webrtc-diagnostics/nat-mapping.d.ts +36 -36
  276. package/dist/composites/webrtc-diagnostics/session-run.d.ts +108 -95
  277. package/dist/composites/webrtc-diagnostics/session-verdict.d.ts +29 -20
  278. package/dist/composites/widget-panel.d.ts +23 -23
  279. package/dist/composites/widget-slot.d.ts +35 -17
  280. package/dist/contexts/custom-field-renderers.d.ts +53 -17
  281. package/dist/contexts/device-context.d.ts +32 -12
  282. package/dist/contexts/device-quick-detail.d.ts +13 -4
  283. package/dist/contexts/player-overlays.d.ts +82 -42
  284. package/dist/contexts/recorded-playback.d.ts +40 -18
  285. package/dist/contexts/system-context.d.ts +28 -13
  286. package/dist/contexts/vod-playback.d.ts +39 -22
  287. package/dist/contexts/widget-registry.d.ts +139 -102
  288. package/dist/contexts/zone-editing.d.ts +69 -46
  289. package/dist/generated/system-hooks.d.ts +17 -1
  290. package/dist/hooks/index.d.ts +43 -43
  291. package/dist/hooks/turn-server-cache.d.ts +69 -69
  292. package/dist/hooks/use-capability-presence.d.ts +65 -28
  293. package/dist/hooks/use-cluster-nodes.d.ts +54 -27
  294. package/dist/hooks/use-device-autotrack.d.ts +7 -7
  295. package/dist/hooks/use-device-battery.d.ts +24 -11
  296. package/dist/hooks/use-device-cap-slice.d.ts +15 -15
  297. package/dist/hooks/use-device-capability.d.ts +61 -27
  298. package/dist/hooks/use-device-detections.d.ts +32 -32
  299. package/dist/hooks/use-device-features.d.ts +18 -18
  300. package/dist/hooks/use-device-list-page-size.d.ts +19 -6
  301. package/dist/hooks/use-device-network-link.d.ts +15 -7
  302. package/dist/hooks/use-device-proxy.d.ts +98 -92
  303. package/dist/hooks/use-device-snapshot.d.ts +23 -23
  304. package/dist/hooks/use-device-webrtc.d.ts +211 -205
  305. package/dist/hooks/use-devices.d.ts +9 -9
  306. package/dist/hooks/use-doorbell-events.d.ts +13 -13
  307. package/dist/hooks/use-event-stream.d.ts +6 -3
  308. package/dist/hooks/use-is-mobile.d.ts +5 -5
  309. package/dist/hooks/use-live-buffer.d.ts +5 -5
  310. package/dist/hooks/use-live-event.d.ts +1 -1
  311. package/dist/hooks/use-navigation.d.ts +20 -20
  312. package/dist/hooks/use-optimistic-slice.d.ts +13 -13
  313. package/dist/hooks/use-persisted-page-size.d.ts +10 -10
  314. package/dist/hooks/use-ptz.d.ts +108 -108
  315. package/dist/hooks/use-stationary-overlay.d.ts +37 -37
  316. package/dist/hooks/use-system-query.d.ts +33 -10
  317. package/dist/hooks/use-url-query.d.ts +3 -3
  318. package/dist/icons/index.d.ts +2 -2
  319. package/dist/icons/provider-icons.d.ts +2 -2
  320. package/dist/icons/status-icons.d.ts +2 -2
  321. package/dist/index.cjs +123 -69
  322. package/dist/index.d.ts +31 -27
  323. package/dist/index.js +123 -69
  324. package/dist/lib/cap-error.d.ts +18 -39
  325. package/dist/lib/cn.d.ts +1 -1
  326. package/dist/lib/fleet-query-defaults.d.ts +68 -34
  327. package/dist/lib/format-control-datetime.d.ts +16 -16
  328. package/dist/lib/format-duration.d.ts +12 -12
  329. package/dist/lib/format-last-seen.d.ts +5 -18
  330. package/dist/lib/format-numeric.d.ts +7 -7
  331. package/dist/lib/hub-mount.d.ts +8 -42
  332. package/dist/lib/index.d.ts +21 -21
  333. package/dist/lib/phase-config.d.ts +24 -11
  334. package/dist/lib/pipeline-mirror.d.ts +16 -16
  335. package/dist/lib/recorded-control-protocol.d.ts +41 -43
  336. package/dist/lib/resolve-sensor-display.d.ts +36 -20
  337. package/dist/lib/responsive.d.ts +54 -54
  338. package/dist/lib/scrub-controller.d.ts +75 -78
  339. package/dist/lib/shared-context.d.ts +27 -2
  340. package/dist/lib/tailwind-variants.d.ts +20 -20
  341. package/dist/primitives/badge.d.ts +5 -10
  342. package/dist/primitives/bottom-sheet.d.ts +7 -7
  343. package/dist/primitives/button.d.ts +5 -9
  344. package/dist/primitives/card.d.ts +4 -8
  345. package/dist/primitives/checkbox.d.ts +3 -4
  346. package/dist/primitives/collapsible-card.d.ts +23 -13
  347. package/dist/primitives/dialog.d.ts +33 -59
  348. package/dist/primitives/dropdown.d.ts +13 -13
  349. package/dist/primitives/floating-panel.d.ts +41 -20
  350. package/dist/primitives/icon-button.d.ts +8 -12
  351. package/dist/primitives/index.d.ts +22 -22
  352. package/dist/primitives/input.d.ts +6 -16
  353. package/dist/primitives/label.d.ts +3 -4
  354. package/dist/primitives/mobile-drawer.d.ts +8 -8
  355. package/dist/primitives/password-input.d.ts +18 -18
  356. package/dist/primitives/popover.d.ts +7 -7
  357. package/dist/primitives/scroll-area.d.ts +3 -4
  358. package/dist/primitives/select.d.ts +20 -20
  359. package/dist/primitives/separator.d.ts +4 -8
  360. package/dist/primitives/skeleton.d.ts +3 -4
  361. package/dist/primitives/switch.d.ts +6 -6
  362. package/dist/primitives/tabs.d.ts +26 -26
  363. package/dist/primitives/tooltip.d.ts +12 -12
  364. package/dist/theme/create-theme.d.ts +1 -1
  365. package/dist/theme/defaults.d.ts +1 -1
  366. package/dist/theme/index.d.ts +6 -6
  367. package/dist/theme/theme-provider.d.ts +8 -7
  368. package/dist/theme/theme-to-css.d.ts +1 -1
  369. package/dist/theme/types.d.ts +98 -100
  370. package/dist/theme/use-theme-mode.d.ts +1 -1
  371. package/dist/trpc-react.d.ts +23 -3
  372. package/dist/widgets/host-widgets.d.ts +4 -4
  373. package/package.json +8 -4
  374. package/src/tailwind/camstack-theme.css +11 -0
  375. package/dist/composites/unit-picker/UnitPicker.spec.d.ts +0 -1
@@ -1,59 +1,59 @@
1
1
  /**
2
- * The camera's MICROPHONE, as the privacy-mask panel controls it
3
- * ([D113](../../../../../docs/decisions/adr-0113.md) phase 3, the
4
- * `device-audio` row).
5
- *
6
- * | Function | Authority read | Authority written |
7
- * | --- | --- | --- |
8
- * | `device-audio` | `privacyMask.getOptions().supportsAudioMute` + `getStatus().audioEnabled` | `privacyMask.setAudioEnabled` |
9
- *
10
- * The cap already owns both privacy planes — what the camera does not film and
11
- * what it does not hear — so the microphone belongs in this panel and nowhere
12
- * else. It had no surface at all outside the aggregate switch group; without
13
- * this it would have become unwritable the day the group is deleted, on the one
14
- * authority whose store is the CAMERA and which therefore cannot be repaired
15
- * from the hub's own state.
16
- *
17
- * **The microphone is not part of the mask draft.** It has its own mutation
18
- * (`setAudioEnabled`, deliberately not a field on `PrivacyMaskPatch`) and it is
19
- * written immediately and read back, exactly as the switch that preceded it
20
- * did. Folding it into Save would mean a Save of the ZONES also rewrote the
21
- * microphone — two unrelated facts behind one button.
22
- *
23
- * Three answers, and collapsing any two loses a real distinction:
24
- * - options unread → `null` (UNKNOWN — never "the camera has no microphone")
25
- * - `supportsAudioMute: false` → not supported (no control at all)
26
- * - supported but `audioEnabled: null` → UNKNOWN, never `false`
27
- */
2
+ * The camera's MICROPHONE, as the privacy-mask panel controls it
3
+ * ([D113](../../../../../docs/decisions/adr-0113.md) phase 3, the
4
+ * `device-audio` row).
5
+ *
6
+ * | Function | Authority read | Authority written |
7
+ * | --- | --- | --- |
8
+ * | `device-audio` | `privacyMask.getOptions().supportsAudioMute` + `getStatus().audioEnabled` | `privacyMask.setAudioEnabled` |
9
+ *
10
+ * The cap already owns both privacy planes — what the camera does not film and
11
+ * what it does not hear — so the microphone belongs in this panel and nowhere
12
+ * else. It had no surface at all outside the aggregate switch group; without
13
+ * this it would have become unwritable the day the group is deleted, on the one
14
+ * authority whose store is the CAMERA and which therefore cannot be repaired
15
+ * from the hub's own state.
16
+ *
17
+ * **The microphone is not part of the mask draft.** It has its own mutation
18
+ * (`setAudioEnabled`, deliberately not a field on `PrivacyMaskPatch`) and it is
19
+ * written immediately and read back, exactly as the switch that preceded it
20
+ * did. Folding it into Save would mean a Save of the ZONES also rewrote the
21
+ * microphone — two unrelated facts behind one button.
22
+ *
23
+ * Three answers, and collapsing any two loses a real distinction:
24
+ * - options unread → `null` (UNKNOWN — never "the camera has no microphone")
25
+ * - `supportsAudioMute: false` → not supported (no control at all)
26
+ * - supported but `audioEnabled: null` → UNKNOWN, never `false`
27
+ */
28
28
  export interface CameraMicrophoneState {
29
- readonly label: string;
30
- /** Does this camera expose a microphone switch that can actually be written? */
31
- readonly supported: boolean;
32
- /** `null` = nothing answered. Never coerced — "off" and "unknown" differ. */
33
- readonly on: boolean | null;
34
- /** A control is only offered when the plane is supported AND its state known. */
35
- readonly available: boolean;
36
- /** What the operator loses while it is off. */
37
- readonly costWhenOff: string;
29
+ readonly label: string;
30
+ /** Does this camera expose a microphone switch that can actually be written? */
31
+ readonly supported: boolean;
32
+ /** `null` = nothing answered. Never coerced — "off" and "unknown" differ. */
33
+ readonly on: boolean | null;
34
+ /** A control is only offered when the plane is supported AND its state known. */
35
+ readonly available: boolean;
36
+ /** What the operator loses while it is off. */
37
+ readonly costWhenOff: string;
38
38
  }
39
39
  export interface CameraMicrophoneInput {
40
- /** `getOptions().supportsAudioMute`; `null` when the read failed. */
41
- readonly supportsAudioMute: boolean | null;
42
- /** `getStatus().audioEnabled`; `null` when unknown or unread. */
43
- readonly audioEnabled: boolean | null;
44
- /** The value an in-flight write asked for; `null` when nothing is in flight. */
45
- readonly pendingOn?: boolean | null;
40
+ /** `getOptions().supportsAudioMute`; `null` when the read failed. */
41
+ readonly supportsAudioMute: boolean | null;
42
+ /** `getStatus().audioEnabled`; `null` when unknown or unread. */
43
+ readonly audioEnabled: boolean | null;
44
+ /** The value an in-flight write asked for; `null` when nothing is in flight. */
45
+ readonly pendingOn?: boolean | null;
46
46
  }
47
47
  export declare const CAMERA_MICROPHONE_LABEL = "Microphone";
48
48
  export declare function resolveCameraMicrophone(input: CameraMicrophoneInput): CameraMicrophoneState;
49
49
  /** The write ONE toggle implies, in the cap's own vocabulary. */
50
50
  export interface CameraMicrophoneWrite {
51
- readonly enabled: boolean;
51
+ readonly enabled: boolean;
52
52
  }
53
53
  /**
54
- * Polarity here is straight-through (`enabled` means "capturing sound"), which
55
- * is exactly why it is still pinned by a test: the sibling rows in this
56
- * refactor (`broker-audio`, `notifications`) both INVERT, and a reader who has
57
- * just come from one of those is one keystroke from making this one match.
58
- */
54
+ * Polarity here is straight-through (`enabled` means "capturing sound"), which
55
+ * is exactly why it is still pinned by a test: the sibling rows in this
56
+ * refactor (`broker-audio`, `notifications`) both INVERT, and a reader who has
57
+ * just come from one of those is one keystroke from making this one match.
58
+ */
59
59
  export declare function cameraMicrophoneWrite(state: CameraMicrophoneState): CameraMicrophoneWrite | null;
@@ -1,4 +1,4 @@
1
- import { RecordingBand, RecordingBandMode, RecordingConfig, RecordingStorageMode, RecordingTriggers, RecordingRetention, CamProfile } from '@camstack/types';
1
+ import type { RecordingBand, RecordingBandMode, RecordingConfig, RecordingStorageMode, RecordingTriggers, RecordingRetention, CamProfile } from "@camstack/types";
2
2
  /** Every weekday — the `days` of a band that covers the whole week. */
3
3
  export declare const ALL_WEEKDAYS: readonly number[];
4
4
  /** The full-day span of an always-on band (`HH:MM`, 23:59 = end of day). */
@@ -13,37 +13,37 @@ export declare function removeBandAt(bands: readonly RecordingBand[], index: num
13
13
  /** Does this band cover the whole week, all day? (the Base-tab shape) */
14
14
  export declare function isAlwaysBand(band: RecordingBand): boolean;
15
15
  /**
16
- * A config is "advanced" when its bands cannot be expressed by the Base tab —
17
- * i.e. more than one band, or a single band restricted in time or weekday. Such
18
- * a config opens directly in the Advanced band table so nothing is silently
19
- * flattened by the simpler form.
20
- */
16
+ * A config is "advanced" when its bands cannot be expressed by the Base tab —
17
+ * i.e. more than one band, or a single band restricted in time or weekday. Such
18
+ * a config opens directly in the Advanced band table so nothing is silently
19
+ * flattened by the simpler form.
20
+ */
21
21
  export declare function isAdvancedConfig(cfg: RecordingConfig): boolean;
22
22
  /**
23
- * The editable shape of the Basic recording form: a storage mode plus the
24
- * `events` parameters. It compiles to exactly ONE always-on band (or none, when
25
- * `off`) — bands are the only thing that reaches the wire.
26
- */
23
+ * The editable shape of the Basic recording form: a storage mode plus the
24
+ * `events` parameters. It compiles to exactly ONE always-on band (or none, when
25
+ * `off`) — bands are the only thing that reaches the wire.
26
+ */
27
27
  export interface RecordingFormState {
28
- readonly mode: RecordingStorageMode;
29
- readonly profiles?: readonly CamProfile[];
30
- readonly segmentSeconds?: number;
31
- readonly triggers: RecordingTriggers;
32
- readonly postBufferSec?: number;
33
- readonly retention?: RecordingRetention;
28
+ readonly mode: RecordingStorageMode;
29
+ readonly profiles?: readonly CamProfile[];
30
+ readonly segmentSeconds?: number;
31
+ readonly triggers: RecordingTriggers;
32
+ readonly postBufferSec?: number;
33
+ readonly retention?: RecordingRetention;
34
34
  }
35
35
  /**
36
- * Read a persisted config into the Basic form state. `mode` is DERIVED from the
37
- * bands by the same function the recorder stamps `config.mode` with; the
38
- * `events` parameters come from the first events band, so re-opening the form
39
- * shows what is actually recorded.
40
- */
36
+ * Read a persisted config into the Basic form state. `mode` is DERIVED from the
37
+ * bands by the same function the recorder stamps `config.mode` with; the
38
+ * `events` parameters come from the first events band, so re-opening the form
39
+ * shows what is actually recorded.
40
+ */
41
41
  export declare function formStateFromConfig(cfg: RecordingConfig): RecordingFormState;
42
42
  /**
43
- * Serialize the Basic form state to the wire config: one always-on band of the
44
- * chosen mode, none when `off`. `enabled` follows the mode; `mode` itself is
45
- * NOT sent — the recorder stamps it as the derived summary of the bands.
46
- */
43
+ * Serialize the Basic form state to the wire config: one always-on band of the
44
+ * chosen mode, none when `off`. `enabled` follows the mode; `mode` itself is
45
+ * NOT sent — the recorder stamps it as the derived summary of the bands.
46
+ */
47
47
  export declare function configFromFormState(state: RecordingFormState): RecordingConfig;
48
48
  /** The Base tab's bands: one always-on band of the chosen mode (none = off). */
49
49
  export declare function bandsFromFormState(state: RecordingFormState): RecordingBand[];
@@ -1,22 +1,22 @@
1
1
  export interface AvailabilityRange {
2
- readonly profile: string;
3
- readonly startMs: number;
4
- readonly endMs: number;
2
+ readonly profile: string;
3
+ readonly startMs: number;
4
+ readonly endMs: number;
5
5
  }
6
6
  export interface PlaybackSpan {
7
- readonly startMs: number;
8
- readonly endMs: number;
7
+ readonly startMs: number;
8
+ readonly endMs: number;
9
9
  }
10
10
  /**
11
- * Merge availability ranges (across every profile) into the union of distinct
12
- * time windows, ascending by start. Overlapping or touching intervals coalesce;
13
- * zero/negative-length inputs are dropped. Newest-first ordering is the caller's
14
- * concern (it reverses for display).
15
- */
11
+ * Merge availability ranges (across every profile) into the union of distinct
12
+ * time windows, ascending by start. Overlapping or touching intervals coalesce;
13
+ * zero/negative-length inputs are dropped. Newest-first ordering is the caller's
14
+ * concern (it reverses for display).
15
+ */
16
16
  export declare function mergeAvailabilitySpans(ranges: readonly AvailabilityRange[]): PlaybackSpan[];
17
17
  /**
18
- * Pick the right unit for a byte count and render it with a sensible number of
19
- * significant digits (binary prefixes, matching recording sizes elsewhere).
20
- * KB and up render one decimal under 100, none above; bytes never get a decimal.
21
- */
18
+ * Pick the right unit for a byte count and render it with a sensible number of
19
+ * significant digits (binary prefixes, matching recording sizes elsewhere).
20
+ * KB and up render one decimal under 100, none above; bytes never get a decimal.
21
+ */
22
22
  export declare function formatBytes(bytes: number): string;
@@ -1,91 +1,91 @@
1
- import { PlaybackSpan } from './recording-spans';
1
+ import type { PlaybackSpan } from "./recording-spans";
2
2
  /** Fixed heatmap bucket size: 15 minutes → 96 buckets over 24h. */
3
3
  export declare const BUCKET_MS: number;
4
4
  /** Event kinds the timeline understands. */
5
- export type TimelineKind = 'motion' | 'object' | 'audio';
5
+ export type TimelineKind = "motion" | "object" | "audio";
6
6
  export interface DensityBucket {
7
- readonly index: number;
8
- readonly startMs: number;
9
- readonly endMs: number;
10
- readonly counts: Readonly<Record<TimelineKind, number>>;
11
- readonly total: number;
12
- /** Highest-count kind, or null when the bucket is empty. */
13
- readonly dominant: TimelineKind | null;
7
+ readonly index: number;
8
+ readonly startMs: number;
9
+ readonly endMs: number;
10
+ readonly counts: Readonly<Record<TimelineKind, number>>;
11
+ readonly total: number;
12
+ /** Highest-count kind, or null when the bucket is empty. */
13
+ readonly dominant: TimelineKind | null;
14
14
  }
15
15
  /** Row returned by the server `getEventDensity` call (one per non-empty bucket). */
16
16
  export interface EventDensityRow {
17
- readonly bucketStart: number;
18
- readonly motion: number;
19
- readonly object: number;
20
- readonly audio: number;
17
+ readonly bucketStart: number;
18
+ readonly motion: number;
19
+ readonly object: number;
20
+ readonly audio: number;
21
21
  }
22
22
  /**
23
- * Convert server-side density rows into `DensityBucket[]` for the timeline
24
- * heatmap. Rows with total === 0 are skipped (defensive; server already omits
25
- * them). Returns a sparse, ascending-by-index array — EventHeatmap positions
26
- * each bar by `b.startMs` rather than array index, so gaps are fine.
27
- */
23
+ * Convert server-side density rows into `DensityBucket[]` for the timeline
24
+ * heatmap. Rows with total === 0 are skipped (defensive; server already omits
25
+ * them). Returns a sparse, ascending-by-index array — EventHeatmap positions
26
+ * each bar by `b.startMs` rather than array index, so gaps are fine.
27
+ */
28
28
  export declare function densityRowsToBuckets(rows: readonly EventDensityRow[], windowFrom: number, bucketMs: number): DensityBucket[];
29
29
  export interface SeekTarget {
30
- readonly fromMs: number;
31
- readonly toMs: number;
30
+ readonly fromMs: number;
31
+ readonly toMs: number;
32
32
  }
33
33
  /**
34
- * Resolve a playback window for a click at `clickMs` against recorded `spans`.
35
- * Inside a span → play from the click to that span's end. In a gap / outside →
36
- * snap to the WHOLE nearest span. No spans → null (nothing to play).
37
- * `spans` are expected ascending by start (as `mergeAvailabilitySpans` returns).
38
- */
34
+ * Resolve a playback window for a click at `clickMs` against recorded `spans`.
35
+ * Inside a span → play from the click to that span's end. In a gap / outside →
36
+ * snap to the WHOLE nearest span. No spans → null (nothing to play).
37
+ * `spans` are expected ascending by start (as `mergeAvailabilitySpans` returns).
38
+ */
39
39
  export declare function seekTargetForSpans(clickMs: number, spans: readonly PlaybackSpan[]): SeekTarget | null;
40
40
  /**
41
- * Position `ms` inside the window `[fromMs, toMs]` as a clamped percentage
42
- * (0–100). A zero/negative-width window yields 0. Callers use this for `left:`.
43
- */
41
+ * Position `ms` inside the window `[fromMs, toMs]` as a clamped percentage
42
+ * (0–100). A zero/negative-width window yields 0. Callers use this for `left:`.
43
+ */
44
44
  export declare function pctForMs(ms: number, fromMs: number, toMs: number): number;
45
45
  /** A [fromMs, toMs) window spanning (at most) one calendar day. */
46
46
  export interface DayWindow {
47
- readonly fromMs: number;
48
- readonly toMs: number;
47
+ readonly fromMs: number;
48
+ readonly toMs: number;
49
49
  }
50
50
  /**
51
- * Build a DayWindow for the given calendar `date` using local time.
52
- * For any day strictly in the past: `fromMs` = local midnight, `toMs` =
53
- * next local midnight (exactly 24 h).
54
- * For today (or any future day that contains `nowMs`): `toMs = nowMs` so the
55
- * window never extends into the future.
56
- */
51
+ * Build a DayWindow for the given calendar `date` using local time.
52
+ * For any day strictly in the past: `fromMs` = local midnight, `toMs` =
53
+ * next local midnight (exactly 24 h).
54
+ * For today (or any future day that contains `nowMs`): `toMs = nowMs` so the
55
+ * window never extends into the future.
56
+ */
57
57
  export declare function dayWindow(date: Date, nowMs: number): DayWindow;
58
58
  /** Available zoom levels in ms, from widest (24h) to narrowest (15 min). */
59
59
  export declare const ZOOM_LEVELS: readonly number[];
60
60
  /**
61
- * Produce a `levelMs`-wide window whose RIGHT edge stays anchored at
62
- * `rightEdgeMs` (clamped within `dayBounds`), rather than centring on the view
63
- * midpoint. On today's timeline the view's right edge is "now", so zooming this
64
- * way keeps the most recent footage pinned to the right instead of drifting to
65
- * a midday range that no longer contains now. Panning then moves back/forward.
66
- *
67
- * Falls back to `dayBounds` when `levelMs` meets or exceeds the day span (can't
68
- * show a wider window than the day holds — e.g. early morning with little
69
- * elapsed time).
70
- */
61
+ * Produce a `levelMs`-wide window whose RIGHT edge stays anchored at
62
+ * `rightEdgeMs` (clamped within `dayBounds`), rather than centring on the view
63
+ * midpoint. On today's timeline the view's right edge is "now", so zooming this
64
+ * way keeps the most recent footage pinned to the right instead of drifting to
65
+ * a midday range that no longer contains now. Panning then moves back/forward.
66
+ *
67
+ * Falls back to `dayBounds` when `levelMs` meets or exceeds the day span (can't
68
+ * show a wider window than the day holds — e.g. early morning with little
69
+ * elapsed time).
70
+ */
71
71
  export declare function zoomWindowAnchoredRight(dayBounds: DayWindow, levelMs: number, rightEdgeMs: number): DayWindow;
72
72
  /**
73
- * Shift `win` by `deltaMs`, preserving width, clamped within `dayBounds`.
74
- */
73
+ * Shift `win` by `deltaMs`, preserving width, clamped within `dayBounds`.
74
+ */
75
75
  export declare function panWindow(win: DayWindow, dayBounds: DayWindow, deltaMs: number): DayWindow;
76
76
  /**
77
- * Choose a sensible heatmap bucket size for a visible span of `spanMs`,
78
- * targeting ~96-120 buckets. Always picks from `BUCKET_CANDIDATES`.
79
- */
77
+ * Choose a sensible heatmap bucket size for a visible span of `spanMs`,
78
+ * targeting ~96-120 buckets. Always picks from `BUCKET_CANDIDATES`.
79
+ */
80
80
  export declare function bucketMsForSpan(spanMs: number): number;
81
81
  /** One labelled tick on the time axis. */
82
82
  export interface AxisTick {
83
- readonly pct: number;
84
- readonly label: string;
83
+ readonly pct: number;
84
+ readonly label: string;
85
85
  }
86
86
  /**
87
- * Produce `count` evenly-spaced axis ticks spanning [fromMs, toMs].
88
- * - `pct` is via pctForMs (first=0, last=100).
89
- * - `label` is a localised HH:MM clock string.
90
- */
87
+ * Produce `count` evenly-spaced axis ticks spanning [fromMs, toMs].
88
+ * - `pct` is via pctForMs (first=0, last=100).
89
+ * - `label` is a localised HH:MM clock string.
90
+ */
91
91
  export declare function axisTicks(fromMs: number, toMs: number, count: number): AxisTick[];
@@ -1,69 +1,78 @@
1
- import { SceneMonitor } from '@camstack/types';
1
+ /**
2
+ * Pure sentence builders for the scene editor.
3
+ *
4
+ * Split out of the component because these are the whole point of the card and
5
+ * they are the part that can be wrong: this feature's failure mode is SILENCE
6
+ * that reads as "nothing has happened", and the difference between a
7
+ * five-minute fix and a session of guessing is one sentence naming which
8
+ * lighting the scene has never been captured in.
9
+ */
10
+ import type { SceneMonitor } from "@camstack/types";
2
11
  /** The lighting variants an operator is OFFERED. The resolver can also report
3
- * `night`, `dawn` and `dusk`; those are shown when present but never demanded,
4
- * because most installs only ever see day and IR. */
12
+ * `night`, `dawn` and `dusk`; those are shown when present but never demanded,
13
+ * because most installs only ever see day and IR. */
5
14
  export declare const SCENE_CAPTURE_VARIANTS: readonly ["day", "ir"];
6
15
  export type SceneCaptureVariant = (typeof SCENE_CAPTURE_VARIANTS)[number];
7
16
  /**
8
- * The one variant that is genuinely optional.
9
- *
10
- * Nobody stands outside at 22:00 to photograph a wheelie bin in infrared, and
11
- * plenty of scenes are daytime questions that never need a night reference at
12
- * all. Every sentence about IR in this file is written from that premise: a
13
- * missing night reference is a CHOICE the scene accommodates, never a fault it
14
- * reports. The engine backs that up — under the default
15
- * `onUncoveredCondition: 'skip'` the night checks are simply not made.
16
- */
17
+ * The one variant that is genuinely optional.
18
+ *
19
+ * Nobody stands outside at 22:00 to photograph a wheelie bin in infrared, and
20
+ * plenty of scenes are daytime questions that never need a night reference at
21
+ * all. Every sentence about IR in this file is written from that premise: a
22
+ * missing night reference is a CHOICE the scene accommodates, never a fault it
23
+ * reports. The engine backs that up — under the default
24
+ * `onUncoveredCondition: 'skip'` the night checks are simply not made.
25
+ */
17
26
  export declare const SCENE_OPTIONAL_VARIANT: SceneCaptureVariant;
18
27
  export declare const VARIANT_LABEL: Readonly<Record<string, string>>;
19
28
  export declare function variantLabel(condition: string): string;
20
29
  /**
21
- * "Daylight ✓ · Night (IR) ✗ — optional; checks in night (ir) are skipped."
22
- *
23
- * Converts the silent cross-condition fallback this engine used to have into an
24
- * operator-visible fact. Without it, a scene with only a daylight reference
25
- * simply stops answering after sunset and nothing anywhere says why.
26
- *
27
- * It used to end *"reports 'can't tell' in night (ir)"*, which was accurate and
28
- * read as a defect: the operator saw a ✗ and a complaint for a scene that was
29
- * configured exactly as they meant it. The missing half is now named as what it
30
- * is — the part you do not have to do — and the sentence says what actually
31
- * happens instead, which differs by the scene's own policy.
32
- */
30
+ * "Daylight ✓ · Night (IR) ✗ — optional; checks in night (ir) are skipped."
31
+ *
32
+ * Converts the silent cross-condition fallback this engine used to have into an
33
+ * operator-visible fact. Without it, a scene with only a daylight reference
34
+ * simply stops answering after sunset and nothing anywhere says why.
35
+ *
36
+ * It used to end *"reports 'can't tell' in night (ir)"*, which was accurate and
37
+ * read as a defect: the operator saw a ✗ and a complaint for a scene that was
38
+ * configured exactly as they meant it. The missing half is now named as what it
39
+ * is — the part you do not have to do — and the sentence says what actually
40
+ * happens instead, which differs by the scene's own policy.
41
+ */
33
42
  export declare function coverageLine(monitor: SceneMonitor): string;
34
43
  /**
35
- * The calm sentence for a scene that is sitting the current light out — `null`
36
- * whenever it is checking normally.
37
- *
38
- * Separate from {@link statusLine} because it is not a verdict and must not
39
- * read like one. A paused scene has not failed, has not lost its flag, and
40
- * needs nothing from the operator; the only thing worth saying is which light
41
- * it is waiting out and that it will pick itself back up.
42
- */
44
+ * The calm sentence for a scene that is sitting the current light out — `null`
45
+ * whenever it is checking normally.
46
+ *
47
+ * Separate from {@link statusLine} because it is not a verdict and must not
48
+ * read like one. A paused scene has not failed, has not lost its flag, and
49
+ * needs nothing from the operator; the only thing worth saying is which light
50
+ * it is waiting out and that it will pick itself back up.
51
+ */
43
52
  export declare function suspensionLine(monitor: SceneMonitor): string | null;
44
53
  /**
45
- * The one line under a scene's name. It answers, in order: can it judge, what
46
- * does it say, and how long has it said it.
47
- */
54
+ * The one line under a scene's name. It answers, in order: can it judge, what
55
+ * does it say, and how long has it said it.
56
+ */
48
57
  export declare function statusLine(monitor: SceneMonitor, now: number): string;
49
58
  /** The badge word. `latched` wins over `verdict`, because the latch is the
50
- * thing the operator asked to be told and it outlives the live state.
51
- *
52
- * A scene sitting out an uncovered light reads `Paused`, in the NEUTRAL tone —
53
- * never `alarm`, and never the `danger` variant the page maps that to. A
54
- * missing IR reference must not be able to paint a red badge on a scene that
55
- * is doing exactly what it was configured to do. */
59
+ * thing the operator asked to be told and it outlives the live state.
60
+ *
61
+ * A scene sitting out an uncovered light reads `Paused`, in the NEUTRAL tone —
62
+ * never `alarm`, and never the `danger` variant the page maps that to. A
63
+ * missing IR reference must not be able to paint a red badge on a scene that
64
+ * is doing exactly what it was configured to do. */
56
65
  export declare function badgeFor(monitor: SceneMonitor): {
57
- text: string;
58
- tone: 'alarm' | 'ok' | 'unknown';
66
+ text: string;
67
+ tone: "alarm" | "ok" | "unknown";
59
68
  };
60
69
  /** A rect covering most of the frame is dominated by weather, sky and parked
61
- * cars: the bin is 2 % of the pixels and CLIP will not notice it leaving. The
62
- * failure is silent INSENSITIVITY, which is the worst kind — hence a warning
63
- * rather than a refusal. */
64
- export declare const ROI_AREA_WARN_FRACTION = 0.4;
70
+ * cars: the bin is 2 % of the pixels and CLIP will not notice it leaving. The
71
+ * failure is silent INSENSITIVITY, which is the worst kind — hence a warning
72
+ * rather than a refusal. */
73
+ export declare const ROI_AREA_WARN_FRACTION = .4;
65
74
  export declare function roiTooLarge(roi: {
66
- width: number;
67
- height: number;
75
+ width: number;
76
+ height: number;
68
77
  }): boolean;
69
78
  export declare function humanDuration(ms: number): string;
@@ -1,56 +1,56 @@
1
1
  /**
2
- * What the player reports to the broker every ~2 s
3
- * (`networkQuality.reportClientStats`), as a pure step over two `getStats`
4
- * readings — so the two ways it used to lie can be pinned (D635 round 3):
5
- *
6
- * - Across a PC swap (a tier change's make-before-break) the byte baseline was
7
- * the OLD connection's, so the new PC's first reading clamped to 0 kbps; and
8
- * while a renegotiation was in flight the reporter read a closing PC. Both
9
- * zeros were matched by the broker against real sends (review I1). A new PC
10
- * now re-baselines, and nothing is reported while renegotiating.
11
- * - The downlink probe never reached the broker unless it justified a climb.
12
- * The sample now carries the latest probe whatever it read, with its age
13
- * (review I4), so "measured slow" is no longer indistinguishable from
14
- * "failed".
15
- */
2
+ * What the player reports to the broker every ~2 s
3
+ * (`networkQuality.reportClientStats`), as a pure step over two `getStats`
4
+ * readings — so the two ways it used to lie can be pinned (D635 round 3):
5
+ *
6
+ * - Across a PC swap (a tier change's make-before-break) the byte baseline was
7
+ * the OLD connection's, so the new PC's first reading clamped to 0 kbps; and
8
+ * while a renegotiation was in flight the reporter read a closing PC. Both
9
+ * zeros were matched by the broker against real sends (review I1). A new PC
10
+ * now re-baselines, and nothing is reported while renegotiating.
11
+ * - The downlink probe never reached the broker unless it justified a climb.
12
+ * The sample now carries the latest probe whatever it read, with its age
13
+ * (review I4), so "measured slow" is no longer indistinguishable from
14
+ * "failed".
15
+ */
16
16
  /** Client-observed network conditions. Matches the `networkQuality.reportClientStats`
17
- * mutation input (minus `deviceId`, which the caller adds). */
17
+ * mutation input (minus `deviceId`, which the caller adds). */
18
18
  export interface ClientNetworkSample {
19
- readonly rttMs: number;
20
- readonly jitterMs: number;
21
- readonly estimatedBandwidthKbps: number;
22
- readonly packetLossPercent: number;
23
- /** Latest `/adaptive-probe` reading, Mbps, whatever it read; absent = never / failed. */
24
- readonly downlinkMbps?: number;
25
- /** Age of that reading now, ms. */
26
- readonly downlinkAgeMs?: number;
19
+ readonly rttMs: number;
20
+ readonly jitterMs: number;
21
+ readonly estimatedBandwidthKbps: number;
22
+ readonly packetLossPercent: number;
23
+ /** Latest `/adaptive-probe` reading, Mbps, whatever it read; absent = never / failed. */
24
+ readonly downlinkMbps?: number;
25
+ /** Age of that reading now, ms. */
26
+ readonly downlinkAgeMs?: number;
27
27
  }
28
28
  /** One inbound-video `getStats` reading, and the connection it came from. */
29
29
  export interface InboundReading {
30
- /** The RTCPeerConnection read — identity only. */
31
- readonly pc: object;
32
- readonly lost: number;
33
- readonly recv: number;
34
- readonly bytes: number;
35
- /** getStats timestamp, ms. */
36
- readonly ts: number;
37
- readonly rttS: number;
38
- readonly jitterS: number;
30
+ /** The RTCPeerConnection read — identity only. */
31
+ readonly pc: object;
32
+ readonly lost: number;
33
+ readonly recv: number;
34
+ readonly bytes: number;
35
+ /** getStats timestamp, ms. */
36
+ readonly ts: number;
37
+ readonly rttS: number;
38
+ readonly jitterS: number;
39
39
  }
40
40
  /** The latest probe as the player holds it. */
41
41
  export interface ProbeReading {
42
- readonly mbps: number;
43
- readonly ageMs: number;
42
+ readonly mbps: number;
43
+ readonly ageMs: number;
44
44
  }
45
45
  export interface SampleContext {
46
- /** A renegotiation (tier change) is in flight: the PC being read is on its way out. */
47
- readonly renegotiating: boolean;
48
- readonly probe: ProbeReading | null;
46
+ /** A renegotiation (tier change) is in flight: the PC being read is on its way out. */
47
+ readonly renegotiating: boolean;
48
+ readonly probe: ProbeReading | null;
49
49
  }
50
50
  export interface SampleStep {
51
- /** The reading to diff the next one against; null = start over. */
52
- readonly baseline: InboundReading | null;
53
- /** What to report now; null = report nothing this window. */
54
- readonly sample: ClientNetworkSample | null;
51
+ /** The reading to diff the next one against; null = start over. */
52
+ readonly baseline: InboundReading | null;
53
+ /** What to report now; null = report nothing this window. */
54
+ readonly sample: ClientNetworkSample | null;
55
55
  }
56
56
  export declare function nextClientSample(prev: InboundReading | null, cur: InboundReading, ctx: SampleContext): SampleStep;