@camstack/types 1.2.210 → 1.2.212

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.
package/dist/addon.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sleep = require("./sleep-CDG4jaLR.js");
2
+ const require_sleep = require("./sleep-VlZxDyXq.js");
3
3
  const require_event_category = require("./event-category-BVfsrBYA.js");
4
4
  const require_err_msg = require("./err-msg-COpsHMw2.js");
5
5
  //#region src/generated/cap-input-defaults.ts
package/dist/addon.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { A as DeviceType, Et as normalizeAddonInitResult, G as ReadinessRegistry, H as nodePin, I as expandCapMethods, K as ReadinessTimeoutError, S as DEVICE_CHILDREN_BATCH_MAX, St as DATAPLANE_SECRET_HEADER, T as describeCustomActions, Tt as BaseAddon, U as readNodePin, Y as scopeKey, a as asJsonObject, b as deviceOpsCapability, d as BOOT_RECOVERY_BACKOFF_MS, f as DEVICE_SCOPED_CAPS, h as createEventBusSliceSource, j as adminUiCapability, kt as emitReadiness, m as createDeviceProxy, p as isDeviceScopedCap, s as asString, t as sleep, u as parseJsonUnknown, wt as DisposerChain, x as viewerUiCapability } from "./sleep-Dk-BdnBf.mjs";
1
+ import { A as DeviceType, Et as normalizeAddonInitResult, G as ReadinessRegistry, H as nodePin, I as expandCapMethods, K as ReadinessTimeoutError, S as DEVICE_CHILDREN_BATCH_MAX, St as DATAPLANE_SECRET_HEADER, T as describeCustomActions, Tt as BaseAddon, U as readNodePin, Y as scopeKey, a as asJsonObject, b as deviceOpsCapability, d as BOOT_RECOVERY_BACKOFF_MS, f as DEVICE_SCOPED_CAPS, h as createEventBusSliceSource, j as adminUiCapability, kt as emitReadiness, m as createDeviceProxy, p as isDeviceScopedCap, s as asString, t as sleep, u as parseJsonUnknown, wt as DisposerChain, x as viewerUiCapability } from "./sleep-GU_us3DG.mjs";
2
2
  import { t as EventCategory } from "./event-category-BVDXG4tB.mjs";
3
3
  import { t as errMsg } from "./err-msg-IQTHeDzc.mjs";
4
4
  //#region src/generated/cap-input-defaults.ts
@@ -0,0 +1,291 @@
1
+ import { z } from 'zod';
2
+ import { DeviceType } from '../device/device-type.js';
3
+ import { type InferNativeProvider, type InferProvider } from './capability-definition.js';
4
+ /**
5
+ * camera-grid-layout — the geometry of a COMPOSITE camera, on the camera's own
6
+ * page.
7
+ *
8
+ * ## Why this is a capability and not an addon settings schema
9
+ *
10
+ * It was one, and it did not render. The addon declared the editor as a
11
+ * `type: 'widget'` field inside its own `deviceSettingsSchema()`; the hub
12
+ * returned that section correctly and `ConfigFormField` renders `type:'widget'`
13
+ * perfectly well — and nothing ever asked camera-grid for it. The Cluster →
14
+ * Pipeline → Device Overrides page interrogates a HAND-WRITTEN list of four
15
+ * addons (`PIPELINE_CLUSTER_DEVICE_ADDONS`), whose own comment says an addon
16
+ * not on it "falls off silently".
17
+ *
18
+ * Adding a fifth name to that list would have been the wrong fix twice over:
19
+ * that page is per-camera DETECTION tuning, and a grid's geometry belongs
20
+ * beside PTZ and motion zones on the camera itself. The device page is
21
+ * BINDING-driven (D12), so the way in is a capability bound to the device —
22
+ * and this cap carries its section the way `recording` does, by RETURNING it
23
+ * from `getDeviceSettingsContribution`.
24
+ *
25
+ * Seven other widgets are still declared the other way, through a
26
+ * `deviceConfig.ui` block the framework derives a section from. That route
27
+ * gives the addon no say in where its own panel lands and no way to decline
28
+ * for a device the panel does not suit, which is why this one does not use it.
29
+ *
30
+ * ## Why one addon may implement it
31
+ *
32
+ * It is a device-scoped NATIVE cap, registered by the grid camera device
33
+ * itself. Nothing else declares a composite camera, so nothing else has a
34
+ * layout — and the device-scoped route means the widget asks THE camera, not
35
+ * "the camera-grid addon", which is what let the old custom-action pair be
36
+ * reached only by a caller that already knew the addon id.
37
+ *
38
+ * ## The tab
39
+ *
40
+ * `streaming`, not a top-tab of its own. A grid's geometry IS what its stream
41
+ * is, so the Streaming tab is where it belongs; a `grid` top-tab would need an
42
+ * entry in `WELL_KNOWN_TAB_MAP` or the device page renders the raw id as the
43
+ * label (measured on the robot camera, 2026-09-06 — a tab called "navigation"
44
+ * next to "PTZ").
45
+ */
46
+ /** A rectangle in normalized [0,1] coordinates of whatever contains it. */
47
+ declare const GridNormalizedRectSchema: z.ZodObject<{
48
+ x: z.ZodNumber;
49
+ y: z.ZodNumber;
50
+ width: z.ZodNumber;
51
+ height: z.ZodNumber;
52
+ }, z.core.$strip>;
53
+ /**
54
+ * One source camera, the part of its picture taken, and where that part lands.
55
+ *
56
+ * Both rectangles are NORMALIZED (D519): a source camera can change resolution
57
+ * — a profile switch, a firmware update, a substream that comes back different
58
+ * — and a stored PIXEL rectangle would quietly start cutting the wrong region,
59
+ * which is the class of bug nobody files.
60
+ */
61
+ declare const GridLayoutCellSchema: z.ZodObject<{
62
+ deviceId: z.ZodNumber;
63
+ source: z.ZodObject<{
64
+ x: z.ZodNumber;
65
+ y: z.ZodNumber;
66
+ width: z.ZodNumber;
67
+ height: z.ZodNumber;
68
+ }, z.core.$strip>;
69
+ cell: z.ZodObject<{
70
+ x: z.ZodNumber;
71
+ y: z.ZodNumber;
72
+ width: z.ZodNumber;
73
+ height: z.ZodNumber;
74
+ }, z.core.$strip>;
75
+ }, z.core.$strip>;
76
+ /**
77
+ * Which profiles this grid can actually compose, and why not.
78
+ *
79
+ * A grid's `high` composes its sources' `high` and its `low` their `low`, so a
80
+ * profile is on offer only when EVERY source can serve it. The refusal NAMES
81
+ * the sources, because "this grid has no low" is not a finding — "615 has no
82
+ * low" is, and it is the one an operator can act on.
83
+ */
84
+ declare const GridProfileOfferSchema: z.ZodObject<{
85
+ profile: z.ZodEnum<{
86
+ high: "high";
87
+ mid: "mid";
88
+ low: "low";
89
+ }>;
90
+ offered: z.ZodBoolean;
91
+ missingSources: z.ZodArray<z.ZodNumber>;
92
+ }, z.core.$strip>;
93
+ export declare const GridLayoutViewSchema: z.ZodObject<{
94
+ instanceId: z.ZodString;
95
+ deviceId: z.ZodNumber;
96
+ name: z.ZodString;
97
+ width: z.ZodNumber;
98
+ height: z.ZodNumber;
99
+ fps: z.ZodNumber;
100
+ cells: z.ZodArray<z.ZodObject<{
101
+ deviceId: z.ZodNumber;
102
+ source: z.ZodObject<{
103
+ x: z.ZodNumber;
104
+ y: z.ZodNumber;
105
+ width: z.ZodNumber;
106
+ height: z.ZodNumber;
107
+ }, z.core.$strip>;
108
+ cell: z.ZodObject<{
109
+ x: z.ZodNumber;
110
+ y: z.ZodNumber;
111
+ width: z.ZodNumber;
112
+ height: z.ZodNumber;
113
+ }, z.core.$strip>;
114
+ }, z.core.$strip>>;
115
+ profiles: z.ZodArray<z.ZodObject<{
116
+ profile: z.ZodEnum<{
117
+ high: "high";
118
+ mid: "mid";
119
+ low: "low";
120
+ }>;
121
+ offered: z.ZodBoolean;
122
+ missingSources: z.ZodArray<z.ZodNumber>;
123
+ }, z.core.$strip>>;
124
+ }, z.core.$strip>;
125
+ export type GridNormalizedRect = z.infer<typeof GridNormalizedRectSchema>;
126
+ export type GridLayoutCell = z.infer<typeof GridLayoutCellSchema>;
127
+ export type GridProfileOffer = z.infer<typeof GridProfileOfferSchema>;
128
+ export type GridLayoutView = z.infer<typeof GridLayoutViewSchema>;
129
+ export declare const GridLayoutPatchSchema: z.ZodObject<{
130
+ deviceId: z.ZodNumber;
131
+ name: z.ZodOptional<z.ZodString>;
132
+ width: z.ZodOptional<z.ZodNumber>;
133
+ height: z.ZodOptional<z.ZodNumber>;
134
+ fps: z.ZodOptional<z.ZodNumber>;
135
+ cells: z.ZodArray<z.ZodObject<{
136
+ deviceId: z.ZodNumber;
137
+ source: z.ZodObject<{
138
+ x: z.ZodNumber;
139
+ y: z.ZodNumber;
140
+ width: z.ZodNumber;
141
+ height: z.ZodNumber;
142
+ }, z.core.$strip>;
143
+ cell: z.ZodObject<{
144
+ x: z.ZodNumber;
145
+ y: z.ZodNumber;
146
+ width: z.ZodNumber;
147
+ height: z.ZodNumber;
148
+ }, z.core.$strip>;
149
+ }, z.core.$strip>>;
150
+ }, z.core.$strip>;
151
+ export type GridLayoutPatch = z.infer<typeof GridLayoutPatchSchema>;
152
+ export declare const cameraGridLayoutCapability: {
153
+ readonly name: "camera-grid-layout";
154
+ readonly scope: "device";
155
+ readonly deviceNative: true;
156
+ readonly mode: "singleton";
157
+ readonly deviceTypes: readonly [DeviceType.Camera];
158
+ /**
159
+ * The section is built by the ADDON and returned from
160
+ * `getDeviceSettingsContribution`, not derived by the framework from a
161
+ * `deviceConfig.ui` block.
162
+ *
163
+ * Both mechanisms render the same widget. This one hands the addon two
164
+ * things the framework-derived route cannot give it:
165
+ *
166
+ * - it chooses its own section, `tab`, `location` and `order`, the way any
167
+ * other setting does, instead of receiving them from a cap declaration;
168
+ * - it can DECLINE per device. A camera that is not a grid gets no section
169
+ * at all, rather than a widget that renders its own "not a grid" state.
170
+ *
171
+ * `recording` is the precedent (`recorder/recording-device-settings.ts`): it
172
+ * returns `null` for anything that is not a camera, so the Recording tab
173
+ * never appears there.
174
+ */
175
+ readonly exposesDeviceSettings: true;
176
+ readonly methods: {
177
+ /**
178
+ * The grid behind this device.
179
+ *
180
+ * `null` means ANSWERED and this camera is not a grid — not "not yet
181
+ * known". The widget renders its "this is not a grid camera" state only
182
+ * from this answer, never from an unresolved query (D315).
183
+ */
184
+ readonly getLayout: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
185
+ deviceId: z.ZodNumber;
186
+ }, z.core.$strip>, z.ZodNullable<z.ZodObject<{
187
+ instanceId: z.ZodString;
188
+ deviceId: z.ZodNumber;
189
+ name: z.ZodString;
190
+ width: z.ZodNumber;
191
+ height: z.ZodNumber;
192
+ fps: z.ZodNumber;
193
+ cells: z.ZodArray<z.ZodObject<{
194
+ deviceId: z.ZodNumber;
195
+ source: z.ZodObject<{
196
+ x: z.ZodNumber;
197
+ y: z.ZodNumber;
198
+ width: z.ZodNumber;
199
+ height: z.ZodNumber;
200
+ }, z.core.$strip>;
201
+ cell: z.ZodObject<{
202
+ x: z.ZodNumber;
203
+ y: z.ZodNumber;
204
+ width: z.ZodNumber;
205
+ height: z.ZodNumber;
206
+ }, z.core.$strip>;
207
+ }, z.core.$strip>>;
208
+ profiles: z.ZodArray<z.ZodObject<{
209
+ profile: z.ZodEnum<{
210
+ high: "high";
211
+ mid: "mid";
212
+ low: "low";
213
+ }>;
214
+ offered: z.ZodBoolean;
215
+ missingSources: z.ZodArray<z.ZodNumber>;
216
+ }, z.core.$strip>>;
217
+ }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
218
+ /** Write the geometry back. Returns the grid as it now stands, profiles included. */
219
+ readonly saveLayout: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
220
+ deviceId: z.ZodNumber;
221
+ name: z.ZodOptional<z.ZodString>;
222
+ width: z.ZodOptional<z.ZodNumber>;
223
+ height: z.ZodOptional<z.ZodNumber>;
224
+ fps: z.ZodOptional<z.ZodNumber>;
225
+ cells: z.ZodArray<z.ZodObject<{
226
+ deviceId: z.ZodNumber;
227
+ source: z.ZodObject<{
228
+ x: z.ZodNumber;
229
+ y: z.ZodNumber;
230
+ width: z.ZodNumber;
231
+ height: z.ZodNumber;
232
+ }, z.core.$strip>;
233
+ cell: z.ZodObject<{
234
+ x: z.ZodNumber;
235
+ y: z.ZodNumber;
236
+ width: z.ZodNumber;
237
+ height: z.ZodNumber;
238
+ }, z.core.$strip>;
239
+ }, z.core.$strip>>;
240
+ }, z.core.$strip>, z.ZodObject<{
241
+ instanceId: z.ZodString;
242
+ deviceId: z.ZodNumber;
243
+ name: z.ZodString;
244
+ width: z.ZodNumber;
245
+ height: z.ZodNumber;
246
+ fps: z.ZodNumber;
247
+ cells: z.ZodArray<z.ZodObject<{
248
+ deviceId: z.ZodNumber;
249
+ source: z.ZodObject<{
250
+ x: z.ZodNumber;
251
+ y: z.ZodNumber;
252
+ width: z.ZodNumber;
253
+ height: z.ZodNumber;
254
+ }, z.core.$strip>;
255
+ cell: z.ZodObject<{
256
+ x: z.ZodNumber;
257
+ y: z.ZodNumber;
258
+ width: z.ZodNumber;
259
+ height: z.ZodNumber;
260
+ }, z.core.$strip>;
261
+ }, z.core.$strip>>;
262
+ profiles: z.ZodArray<z.ZodObject<{
263
+ profile: z.ZodEnum<{
264
+ high: "high";
265
+ mid: "mid";
266
+ low: "low";
267
+ }>;
268
+ offered: z.ZodBoolean;
269
+ missingSources: z.ZodArray<z.ZodNumber>;
270
+ }, z.core.$strip>>;
271
+ }, z.core.$strip>, "mutation">;
272
+ };
273
+ };
274
+ /**
275
+ * The DEVICE's provider: the data methods only.
276
+ *
277
+ * `InferNativeProvider` deliberately omits the device-settings contribution —
278
+ * the framework expects a native provider to hold the data and a WRAPPER to
279
+ * describe the UI, which is why `getProviderByAddon` (not
280
+ * `getProviderForDevice`) is what the aggregation resolves with.
281
+ */
282
+ export type ICameraGridLayoutProvider = InferNativeProvider<typeof cameraGridLayoutCapability>;
283
+ /**
284
+ * The ADDON's provider: the same methods plus the contribution surface that
285
+ * `exposesDeviceSettings` adds. This is the one that carries the section, and
286
+ * the one that can decline for a device that is not a grid.
287
+ *
288
+ * Two types for two roles, the same split `doorbell` and `snapshot` use.
289
+ */
290
+ export type ICameraGridLayoutSettingsProvider = InferProvider<typeof cameraGridLayoutCapability>;
291
+ export {};
@@ -169,6 +169,7 @@ export { type IMediaPlayerProvider, type MediaInfo, type MediaPlayerRepeat, Medi
169
169
  export { type IMeshNetworkProvider, type MeshEndpoint, type MeshPeer, MeshPeerSchema, type MeshStatus, MeshStatusSchema, meshNetworkCapability, } from './mesh-network.cap.js';
170
170
  export { type IMotionProvider, MOTION_CLOSE_AFTER_MS, type MotionOnMotionChangedData, MotionOnMotionChangedDataSchema, type MotionStatus, MotionStatusSchema, motionCapability, } from './motion.cap.js';
171
171
  export { type IMotionTriggerProvider, type MotionTriggerRuntimeState, MotionTriggerRuntimeStateSchema, type MotionTriggerStatus, MotionTriggerStatusSchema, motionTriggerCapability, } from './motion-trigger.cap.js';
172
+ export { type GridLayoutCell, type GridLayoutPatch, GridLayoutPatchSchema, type GridNormalizedRect, type GridProfileOffer, type GridLayoutView, GridLayoutViewSchema, type ICameraGridLayoutProvider, type ICameraGridLayoutSettingsProvider, cameraGridLayoutCapability, } from './camera-grid-layout.cap.js';
172
173
  export { type IMotionZonesProvider, type MotionZoneOptions, MotionZoneOptionsSchema, type MotionZonePatch, MotionZonePatchSchema, type MotionZoneRegion, MotionZoneRegionSchema, type MotionZoneStatus, MotionZoneStatusSchema, motionZonesCapability, } from './motion-zones.cap.js';
173
174
  export { type INativeObjectDetectionProvider, type NativeDetection, NativeDetectionSchema, type NativeObjectClass, NativeObjectClassEnum, type NativeObjectDetectionOptions, NativeObjectDetectionOptionsSchema, type NativeObjectDetectionRuntimeState, NativeObjectDetectionRuntimeStateSchema, type NativeObjectDetectionSettingsPatch, NativeObjectDetectionSettingsPatchSchema, type NativeObjectDetectionStatus, NativeObjectDetectionStatusSchema, type NativeObjectGeometry, NativeObjectGeometryEnum, nativeObjectDetectionCapability, } from './native-object-detection.cap.js';
174
175
  export { type INavigationProvider, NAVIGATION_ACTION_CATALOG, NAVIGATION_LIGHT_LEVEL_MAX, NAVIGATION_LIGHT_LEVEL_MIN, type NavigationActionEntry, NavigationActionEntrySchema, type NavigationActionId, NavigationActionIdSchema, type NavigationEntryKind, NavigationEntryKindSchema, type NavigationFeatures, NavigationFeaturesSchema, type NavigationLightMode, NavigationLightModeSchema, type NavigationMode, NavigationModeSchema, type NavigationMoveCommand, NavigationMoveCommandSchema, type NavigationPoint, NavigationPointSchema, type NavigationRuntimeState, NavigationRuntimeStateSchema, type NavigationStatus, NavigationStatusSchema, navigationCapability, } from './navigation.cap.js';
@@ -302,6 +303,7 @@ import type { modelDistributorCapability } from './model-distributor.cap.js';
302
303
  import type { motionCapability } from './motion.cap.js';
303
304
  import type { motionDetectionCapability } from './motion-detection.cap.js';
304
305
  import type { motionTriggerCapability } from './motion-trigger.cap.js';
306
+ import type { cameraGridLayoutCapability } from './camera-grid-layout.cap.js';
305
307
  import type { motionZonesCapability } from './motion-zones.cap.js';
306
308
  import type { mqttBrokerCapability } from './mqtt-broker.cap.js';
307
309
  import type { nativeObjectDetectionCapability } from './native-object-detection.cap.js';
@@ -372,6 +374,6 @@ import type { webrtcSessionCapability } from './webrtc-session.cap.js';
372
374
  import type { zoneAnalyticsCapability } from './zone-analytics.cap.js';
373
375
  import type { zoneRulesCapability } from './zone-rules.cap.js';
374
376
  import type { zonesCapability } from './zones.cap.js';
375
- type AnyCapability = typeof streamSignalsCapability | typeof addonSettingsCapability | typeof alertsCapability | typeof storageCapability | typeof storageMigrationCapability | typeof storageProviderCapability | typeof storageEvictableCapability | typeof storageOccupancyCapability | typeof filesystemBrowseCapability | typeof backupCapability | typeof terminalSessionCapability | typeof settingsStoreCapability | typeof dataStoreProviderCapability | typeof logChannelsCapability | typeof logDestinationCapability | typeof loadContributionCapability | typeof failureContributionCapability | typeof adminUiCapability | typeof viewerUiCapability | typeof ssoBridgeCapability | typeof userPasskeysCapability | typeof smtpProviderCapability | typeof mqttBrokerCapability | typeof brokerCapability | typeof deviceAdoptionCapability | typeof deviceExportCapability | typeof addonPagesCapability | typeof addonPagesSourceCapability | typeof addonWidgetsCapability | typeof addonWidgetsSourceCapability | typeof customModelRegistryCapability | typeof modelDistributorCapability | typeof modelConvertCapability | typeof addonRoutesCapability | typeof streamBrokerCapability | typeof decoderCapability | typeof webrtcSessionCapability | typeof cameraStreamsCapability | typeof motionDetectionCapability | typeof pipelineExecutorCapability | typeof detectionPipelineCapability | typeof cameraPipelineConfigCapability | typeof pipelineRunnerCapability | typeof pipelineOrchestratorCapability | typeof audioAnalyzerCapability | typeof audioAnalysisCapability | typeof audioCodecCapability | typeof embeddingEncoderCapability | typeof vectorStoreCapability | typeof deviceProviderCapability | typeof deviceManagerCapability | typeof deviceStateCapability | typeof authProviderCapability | typeof loginMethodCapability | typeof networkAccessCapability | typeof turnProviderCapability | typeof snapshotCapability | typeof llmCapability | typeof llmRuntimeCapability | typeof notificationOutputCapability | typeof coreBlocksCapability | typeof notificationRulesCapability | typeof pipelineAnalyticsCapability | typeof metricsProviderCapability | typeof ptzCapability | typeof ptzAutotrackCapability | typeof navigationCapability | typeof consumablesCapability | typeof connectionTestCapability | typeof rebootCapability | typeof deviceDiscoveryCapability | typeof brightnessCapability | typeof colorCapability | typeof climateControlCapability | typeof coverCapability | typeof valveCapability | typeof humidifierCapability | typeof waterHeaterCapability | typeof weatherCapability | typeof imageCapability | typeof lockControlCapability | typeof vacuumControlCapability | typeof petFeederCapability | typeof lawnMowerControlCapability | typeof fanControlCapability | typeof controlCapability | typeof notifierCapability | typeof mediaPlayerCapability | typeof alarmPanelCapability | typeof presenceCapability | typeof scriptRunnerCapability | typeof automationControlCapability | typeof motionTriggerCapability | typeof eventsCapability | typeof zonesCapability | typeof zoneRulesCapability | typeof zoneAnalyticsCapability | typeof audioMetricsCapability | typeof motionCapability | typeof contactCapability | typeof floodCapability | typeof smokeCapability | typeof carbonMonoxideCapability | typeof gasCapability | typeof tamperCapability | typeof vibrationCapability | typeof connectivityCapability | typeof binaryCapability | typeof temperatureSensorCapability | typeof humiditySensorCapability | typeof ambientLightSensorCapability | typeof pressureSensorCapability | typeof powerMeterCapability | typeof airQualitySensorCapability | typeof numericSensorCapability | typeof enumSensorCapability | typeof recordingCapability | typeof recordingExportCapability | typeof recordingSignalCapability | typeof deviceOpsCapability | typeof platformProbeCapability | typeof localNetworkCapability | typeof meshNetworkCapability | typeof userManagementCapability | typeof systemCapability | typeof networkQualityCapability | typeof toastCapability | typeof nodesCapability | typeof serverManagementCapability | typeof integrationsCapability | typeof addonsCapability | typeof oauthIntegrationCapability | typeof streamParamsCapability | typeof streamCatalogCapability | typeof motionZonesCapability | typeof sceneMonitorCapability | typeof privacyMaskCapability | typeof dayNightCapability | typeof imageSettingsCapability | typeof osdCapability | typeof osdManagerCapability | typeof accessoriesCapability | typeof batteryCapability | typeof networkLinkCapability | typeof buttonCapability | typeof cameraCredentialsCapability | typeof deviceStatusCapability | typeof doorbellCapability | typeof eventEmitterCapability | typeof faceGalleryCapability | typeof featureProbeCapability | typeof intercomCapability | typeof nativeObjectDetectionCapability | typeof plateGalleryCapability | typeof switchCapability | typeof updateCapability | typeof videoclipsCapability;
377
+ type AnyCapability = typeof streamSignalsCapability | typeof addonSettingsCapability | typeof alertsCapability | typeof storageCapability | typeof storageMigrationCapability | typeof storageProviderCapability | typeof storageEvictableCapability | typeof storageOccupancyCapability | typeof filesystemBrowseCapability | typeof backupCapability | typeof terminalSessionCapability | typeof settingsStoreCapability | typeof dataStoreProviderCapability | typeof logChannelsCapability | typeof logDestinationCapability | typeof loadContributionCapability | typeof failureContributionCapability | typeof adminUiCapability | typeof viewerUiCapability | typeof ssoBridgeCapability | typeof userPasskeysCapability | typeof smtpProviderCapability | typeof mqttBrokerCapability | typeof brokerCapability | typeof deviceAdoptionCapability | typeof deviceExportCapability | typeof addonPagesCapability | typeof addonPagesSourceCapability | typeof addonWidgetsCapability | typeof addonWidgetsSourceCapability | typeof customModelRegistryCapability | typeof modelDistributorCapability | typeof modelConvertCapability | typeof addonRoutesCapability | typeof streamBrokerCapability | typeof decoderCapability | typeof webrtcSessionCapability | typeof cameraStreamsCapability | typeof motionDetectionCapability | typeof pipelineExecutorCapability | typeof detectionPipelineCapability | typeof cameraPipelineConfigCapability | typeof pipelineRunnerCapability | typeof pipelineOrchestratorCapability | typeof audioAnalyzerCapability | typeof audioAnalysisCapability | typeof audioCodecCapability | typeof embeddingEncoderCapability | typeof vectorStoreCapability | typeof deviceProviderCapability | typeof deviceManagerCapability | typeof deviceStateCapability | typeof authProviderCapability | typeof loginMethodCapability | typeof networkAccessCapability | typeof turnProviderCapability | typeof snapshotCapability | typeof llmCapability | typeof llmRuntimeCapability | typeof notificationOutputCapability | typeof coreBlocksCapability | typeof notificationRulesCapability | typeof pipelineAnalyticsCapability | typeof metricsProviderCapability | typeof ptzCapability | typeof ptzAutotrackCapability | typeof navigationCapability | typeof consumablesCapability | typeof connectionTestCapability | typeof rebootCapability | typeof deviceDiscoveryCapability | typeof brightnessCapability | typeof colorCapability | typeof climateControlCapability | typeof coverCapability | typeof valveCapability | typeof humidifierCapability | typeof waterHeaterCapability | typeof weatherCapability | typeof imageCapability | typeof lockControlCapability | typeof vacuumControlCapability | typeof petFeederCapability | typeof lawnMowerControlCapability | typeof fanControlCapability | typeof controlCapability | typeof notifierCapability | typeof mediaPlayerCapability | typeof alarmPanelCapability | typeof presenceCapability | typeof scriptRunnerCapability | typeof automationControlCapability | typeof motionTriggerCapability | typeof eventsCapability | typeof zonesCapability | typeof zoneRulesCapability | typeof zoneAnalyticsCapability | typeof audioMetricsCapability | typeof motionCapability | typeof contactCapability | typeof floodCapability | typeof smokeCapability | typeof carbonMonoxideCapability | typeof gasCapability | typeof tamperCapability | typeof vibrationCapability | typeof connectivityCapability | typeof binaryCapability | typeof temperatureSensorCapability | typeof humiditySensorCapability | typeof ambientLightSensorCapability | typeof pressureSensorCapability | typeof powerMeterCapability | typeof airQualitySensorCapability | typeof numericSensorCapability | typeof enumSensorCapability | typeof recordingCapability | typeof recordingExportCapability | typeof recordingSignalCapability | typeof deviceOpsCapability | typeof platformProbeCapability | typeof localNetworkCapability | typeof meshNetworkCapability | typeof userManagementCapability | typeof systemCapability | typeof networkQualityCapability | typeof toastCapability | typeof nodesCapability | typeof serverManagementCapability | typeof integrationsCapability | typeof addonsCapability | typeof oauthIntegrationCapability | typeof streamParamsCapability | typeof streamCatalogCapability | typeof motionZonesCapability | typeof cameraGridLayoutCapability | typeof sceneMonitorCapability | typeof privacyMaskCapability | typeof dayNightCapability | typeof imageSettingsCapability | typeof osdCapability | typeof osdManagerCapability | typeof accessoriesCapability | typeof batteryCapability | typeof networkLinkCapability | typeof buttonCapability | typeof cameraCredentialsCapability | typeof deviceStatusCapability | typeof doorbellCapability | typeof eventEmitterCapability | typeof faceGalleryCapability | typeof featureProbeCapability | typeof intercomCapability | typeof nativeObjectDetectionCapability | typeof plateGalleryCapability | typeof switchCapability | typeof updateCapability | typeof videoclipsCapability;
376
378
  export type CapabilityName = AnyCapability['name'];
377
379
  export type ITypedReadinessRegistry = IReadinessRegistry<CapabilityName>;
@@ -346,6 +346,7 @@ export declare const GetStreamWithCodecInputSchema: z.ZodObject<{
346
346
  export type GetStreamWithCodecInput = z.infer<typeof GetStreamWithCodecInputSchema>;
347
347
  export declare const RtpSourceSchema: z.ZodObject<{
348
348
  url: z.ZodString;
349
+ sentryUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
349
350
  videoCodec: z.ZodEnum<{
350
351
  H264: "H264";
351
352
  H265: "H265";
@@ -1095,6 +1096,7 @@ export declare const streamBrokerCapability: {
1095
1096
  tag: z.ZodOptional<z.ZodString>;
1096
1097
  }, z.core.$strip>, z.ZodObject<{
1097
1098
  url: z.ZodString;
1099
+ sentryUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1098
1100
  videoCodec: z.ZodEnum<{
1099
1101
  H264: "H264";
1100
1102
  H265: "H265";
@@ -23,6 +23,7 @@ import type { brightnessCapability } from '../capabilities/brightness.cap.js';
23
23
  import type { brokerCapability } from '../capabilities/broker.cap.js';
24
24
  import type { buttonCapability } from '../capabilities/button.cap.js';
25
25
  import type { cameraCredentialsCapability } from '../capabilities/camera-credentials.cap.js';
26
+ import type { cameraGridLayoutCapability } from '../capabilities/camera-grid-layout.cap.js';
26
27
  import type { cameraStreamsCapability } from '../capabilities/camera-streams.cap.js';
27
28
  import type { climateControlCapability } from '../capabilities/climate-control.cap.js';
28
29
  import type { colorCapability } from '../capabilities/color.cap.js';
@@ -1192,6 +1193,48 @@ export type AppRouter = TrpcCoreRouter<{
1192
1193
  meta: object;
1193
1194
  }>;
1194
1195
  }>>;
1196
+ cameraGridLayout: TRPCBuiltRouter<{
1197
+ ctx: TrpcContext;
1198
+ meta: object;
1199
+ errorShape: AugmentedErrorShape;
1200
+ transformer: true;
1201
+ }, TRPCDecorateCreateRouterOptions<{
1202
+ getDeviceSettingsContribution: TRPCQueryProcedure<{
1203
+ input: {
1204
+ [x: string]: unknown;
1205
+ } & z.input<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.getDeviceSettingsContribution.input>;
1206
+ output: z.infer<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.getDeviceSettingsContribution.output>;
1207
+ meta: object;
1208
+ }>;
1209
+ getDeviceLiveContribution: TRPCQueryProcedure<{
1210
+ input: {
1211
+ [x: string]: unknown;
1212
+ } & z.input<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.getDeviceLiveContribution.input>;
1213
+ output: z.infer<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.getDeviceLiveContribution.output>;
1214
+ meta: object;
1215
+ }>;
1216
+ applyDeviceSettingsPatch: TRPCMutationProcedure<{
1217
+ input: {
1218
+ [x: string]: unknown;
1219
+ } & z.input<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.applyDeviceSettingsPatch.input>;
1220
+ output: z.infer<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.applyDeviceSettingsPatch.output>;
1221
+ meta: object;
1222
+ }>;
1223
+ getLayout: TRPCQueryProcedure<{
1224
+ input: {
1225
+ [x: string]: unknown;
1226
+ } & z.input<typeof cameraGridLayoutCapability.methods.getLayout.input>;
1227
+ output: z.infer<typeof cameraGridLayoutCapability.methods.getLayout.output>;
1228
+ meta: object;
1229
+ }>;
1230
+ saveLayout: TRPCMutationProcedure<{
1231
+ input: {
1232
+ [x: string]: unknown;
1233
+ } & z.input<typeof cameraGridLayoutCapability.methods.saveLayout.input>;
1234
+ output: z.infer<typeof cameraGridLayoutCapability.methods.saveLayout.output>;
1235
+ meta: object;
1236
+ }>;
1237
+ }>>;
1195
1238
  cameraPipelineConfig: TRPCBuiltRouter<{
1196
1239
  ctx: TrpcContext;
1197
1240
  meta: object;
@@ -24,6 +24,7 @@ export { brightnessCapability } from '../capabilities/brightness.cap.js';
24
24
  export { brokerCapability } from '../capabilities/broker.cap.js';
25
25
  export { buttonCapability } from '../capabilities/button.cap.js';
26
26
  export { cameraCredentialsCapability } from '../capabilities/camera-credentials.cap.js';
27
+ export { cameraGridLayoutCapability } from '../capabilities/camera-grid-layout.cap.js';
27
28
  export { cameraPipelineConfigCapability } from '../capabilities/camera-pipeline-config.cap.js';
28
29
  export { cameraStreamsCapability } from '../capabilities/camera-streams.cap.js';
29
30
  export { carbonMonoxideCapability } from '../capabilities/carbon-monoxide.cap.js';
@@ -182,6 +183,7 @@ export declare const CAPABILITY_NAMES: {
182
183
  readonly broker: "broker";
183
184
  readonly button: "button";
184
185
  readonly cameraCredentials: "camera-credentials";
186
+ readonly cameraGridLayout: "camera-grid-layout";
185
187
  readonly cameraPipelineConfig: "camera-pipeline-config";
186
188
  readonly cameraStreams: "camera-streams";
187
189
  readonly carbonMonoxide: "carbon-monoxide";
@@ -353,6 +355,7 @@ export interface CapabilityRouterMap<TRouter = unknown> {
353
355
  readonly broker: TRouter;
354
356
  readonly button: TRouter;
355
357
  readonly cameraCredentials: TRouter;
358
+ readonly cameraGridLayout: TRouter;
356
359
  readonly cameraPipelineConfig: TRouter;
357
360
  readonly cameraStreams: TRouter;
358
361
  readonly carbonMonoxide: TRouter;
@@ -485,8 +488,8 @@ export interface CapabilityRouterMap<TRouter = unknown> {
485
488
  readonly zoneRules: TRouter;
486
489
  readonly zones: TRouter;
487
490
  }
488
- /** Capability names whose mode is `singleton` (129 caps). */
489
- export declare const SINGLETON_CAPABILITY_NAMES: readonly ["accessories", "addon-pages", "addon-settings", "addon-widgets", "addons", "admin-ui", "air-quality-sensor", "alarm-panel", "alerts", "ambient-light-sensor", "audio-analysis", "audio-analyzer", "audio-codec", "audio-metrics", "automation-control", "backup", "battery", "binary", "brightness", "button", "camera-credentials", "camera-pipeline-config", "camera-streams", "carbon-monoxide", "climate-control", "color", "connectivity", "consumables", "contact", "control", "core-blocks", "cover", "day-night", "decoder", "detection-pipeline", "device-adoption", "device-discovery", "device-manager", "device-ops", "device-state", "device-status", "doorbell", "enum-sensor", "event-emitter", "events", "face-gallery", "fan-control", "feature-probe", "filesystem-browse", "flood", "gas", "humidifier", "humidity-sensor", "image", "image-settings", "integrations", "intercom", "lawn-mower-control", "llm-runtime", "local-network", "lock-control", "media-player", "metrics-provider", "model-convert", "model-distributor", "motion", "motion-detection", "motion-trigger", "motion-zones", "native-object-detection", "navigation", "network-link", "network-quality", "nodes", "notification-rules", "notifier", "numeric-sensor", "osd", "osd-manager", "pet-feeder", "pipeline-analytics", "pipeline-executor", "pipeline-orchestrator", "pipeline-runner", "plate-gallery", "platform-probe", "power-meter", "presence", "pressure-sensor", "privacy-mask", "ptz", "ptz-autotrack", "reboot", "recording", "recording-export", "recording-signal", "scene-monitor", "script-runner", "server-management", "settings-store", "smoke", "snapshot", "sso-bridge", "storage", "storage-migration", "stream-broker", "stream-catalog", "stream-params", "stream-signals", "switch", "system", "tamper", "temperature-sensor", "terminal-session", "toast", "update", "user-management", "vacuum-control", "valve", "vector-store", "vibration", "videoclips", "viewer-ui", "water-heater", "weather", "webrtc-session", "zone-analytics", "zone-rules", "zones"];
491
+ /** Capability names whose mode is `singleton` (130 caps). */
492
+ export declare const SINGLETON_CAPABILITY_NAMES: readonly ["accessories", "addon-pages", "addon-settings", "addon-widgets", "addons", "admin-ui", "air-quality-sensor", "alarm-panel", "alerts", "ambient-light-sensor", "audio-analysis", "audio-analyzer", "audio-codec", "audio-metrics", "automation-control", "backup", "battery", "binary", "brightness", "button", "camera-credentials", "camera-grid-layout", "camera-pipeline-config", "camera-streams", "carbon-monoxide", "climate-control", "color", "connectivity", "consumables", "contact", "control", "core-blocks", "cover", "day-night", "decoder", "detection-pipeline", "device-adoption", "device-discovery", "device-manager", "device-ops", "device-state", "device-status", "doorbell", "enum-sensor", "event-emitter", "events", "face-gallery", "fan-control", "feature-probe", "filesystem-browse", "flood", "gas", "humidifier", "humidity-sensor", "image", "image-settings", "integrations", "intercom", "lawn-mower-control", "llm-runtime", "local-network", "lock-control", "media-player", "metrics-provider", "model-convert", "model-distributor", "motion", "motion-detection", "motion-trigger", "motion-zones", "native-object-detection", "navigation", "network-link", "network-quality", "nodes", "notification-rules", "notifier", "numeric-sensor", "osd", "osd-manager", "pet-feeder", "pipeline-analytics", "pipeline-executor", "pipeline-orchestrator", "pipeline-runner", "plate-gallery", "platform-probe", "power-meter", "presence", "pressure-sensor", "privacy-mask", "ptz", "ptz-autotrack", "reboot", "recording", "recording-export", "recording-signal", "scene-monitor", "script-runner", "server-management", "settings-store", "smoke", "snapshot", "sso-bridge", "storage", "storage-migration", "stream-broker", "stream-catalog", "stream-params", "stream-signals", "switch", "system", "tamper", "temperature-sensor", "terminal-session", "toast", "update", "user-management", "vacuum-control", "valve", "vector-store", "vibration", "videoclips", "viewer-ui", "water-heater", "weather", "webrtc-session", "zone-analytics", "zone-rules", "zones"];
490
493
  /** Union of singleton capability names (literal string union). */
491
494
  export type SingletonCapabilityName = typeof SINGLETON_CAPABILITY_NAMES[number];
492
495
  /** Capability names whose mode is `collection` (28 caps). */
@@ -14,6 +14,7 @@ import type { binaryCapability } from '../capabilities/binary.cap.js';
14
14
  import type { brightnessCapability } from '../capabilities/brightness.cap.js';
15
15
  import type { buttonCapability } from '../capabilities/button.cap.js';
16
16
  import type { cameraCredentialsCapability } from '../capabilities/camera-credentials.cap.js';
17
+ import type { cameraGridLayoutCapability } from '../capabilities/camera-grid-layout.cap.js';
17
18
  import type { cameraStreamsCapability } from '../capabilities/camera-streams.cap.js';
18
19
  import type { carbonMonoxideCapability } from '../capabilities/carbon-monoxide.cap.js';
19
20
  import type { climateControlCapability } from '../capabilities/climate-control.cap.js';
@@ -209,6 +210,7 @@ export interface DeviceProxy {
209
210
  readonly brightness?: InferDeviceProxyCap<typeof brightnessCapability>;
210
211
  readonly button?: InferDeviceProxyCap<typeof buttonCapability>;
211
212
  readonly cameraCredentials?: InferDeviceProxyCap<typeof cameraCredentialsCapability>;
213
+ readonly cameraGridLayout?: InferDeviceProxyCap<typeof cameraGridLayoutCapability>;
212
214
  readonly cameraStreams?: InferDeviceProxyCap<typeof cameraStreamsCapability>;
213
215
  readonly carbonMonoxide?: InferDeviceProxyCap<typeof carbonMonoxideCapability>;
214
216
  readonly climateControl?: InferDeviceProxyCap<typeof climateControlCapability>;
@@ -5,7 +5,7 @@
5
5
  * can answer "may a rule actuate this?" without importing the schema barrel
6
6
  * (~144MB RSS per runner, D28).
7
7
  *
8
- * Coverage: 84 device-scoped capabilities.
8
+ * Coverage: 85 device-scoped capabilities.
9
9
  */
10
10
  export declare const DEVICE_SCOPED_CAPS: ReadonlySet<string>;
11
11
  /**
@@ -6,7 +6,7 @@
6
6
  * scope+access check inside `protectedProcedure` (see
7
7
  * `server/backend/src/api/trpc/trpc.middleware.ts`).
8
8
  *
9
- * Coverage: 1053 method paths across 130 capabilities.
9
+ * Coverage: 1055 method paths across 131 capabilities.
10
10
  */
11
11
  import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
12
12
  export interface MethodAccessRecord {
@@ -6,7 +6,7 @@
6
6
  * system-scope cap that takes a deviceId was previously never device-filtered
7
7
  * — see the generator header).
8
8
  *
9
- * Coverage: 385 methods carry a device reference, of which
9
+ * Coverage: 387 methods carry a device reference, of which
10
10
  * 141 are on SYSTEM-scope caps.
11
11
  *
12
12
  * Top-level fields, number arrays, and one-level arrays of objects carrying