@camstack/types 1.2.203 → 1.2.205

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.
@@ -35,6 +35,7 @@ export declare const PickStreamRequirementsSchema: z.ZodReadonly<z.ZodObject<{
35
35
  vp9: "vp9";
36
36
  }>>>>;
37
37
  allowTranscode: z.ZodOptional<z.ZodBoolean>;
38
+ requireProfileBound: z.ZodOptional<z.ZodBoolean>;
38
39
  }, z.core.$strip>>;
39
40
  export declare const PickStreamPreferencesSchema: z.ZodReadonly<z.ZodObject<{
40
41
  preferredProviders: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
@@ -55,6 +56,18 @@ export declare const PickedCamStreamSchema: z.ZodObject<{
55
56
  }, z.core.$strip>>;
56
57
  transcodes: z.ZodBoolean;
57
58
  reason: z.ZodString;
59
+ profile: z.ZodOptional<z.ZodEnum<{
60
+ high: "high";
61
+ mid: "mid";
62
+ low: "low";
63
+ }>>;
64
+ brokerId: z.ZodOptional<z.ZodString>;
65
+ url: z.ZodOptional<z.ZodString>;
66
+ fps: z.ZodOptional<z.ZodNumber>;
67
+ fpsSource: z.ZodOptional<z.ZodEnum<{
68
+ published: "published";
69
+ measured: "measured";
70
+ }>>;
58
71
  }, z.core.$strip>;
59
72
  export type PickedCamStream = z.infer<typeof PickedCamStreamSchema>;
60
73
  /**
@@ -232,6 +245,7 @@ export declare const cameraStreamsCapability: {
232
245
  vp9: "vp9";
233
246
  }>>>>;
234
247
  allowTranscode: z.ZodOptional<z.ZodBoolean>;
248
+ requireProfileBound: z.ZodOptional<z.ZodBoolean>;
235
249
  }, z.core.$strip>>;
236
250
  preferences: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
237
251
  preferredProviders: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
@@ -250,6 +264,18 @@ export declare const cameraStreamsCapability: {
250
264
  }, z.core.$strip>>;
251
265
  transcodes: z.ZodBoolean;
252
266
  reason: z.ZodString;
267
+ profile: z.ZodOptional<z.ZodEnum<{
268
+ high: "high";
269
+ mid: "mid";
270
+ low: "low";
271
+ }>>;
272
+ brokerId: z.ZodOptional<z.ZodString>;
273
+ url: z.ZodOptional<z.ZodString>;
274
+ fps: z.ZodOptional<z.ZodNumber>;
275
+ fpsSource: z.ZodOptional<z.ZodEnum<{
276
+ published: "published";
277
+ measured: "measured";
278
+ }>>;
253
279
  }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
254
280
  };
255
281
  readonly events: {
@@ -752,6 +752,131 @@ export declare const deviceManagerCapability: {
752
752
  radar: "radar";
753
753
  }>>;
754
754
  }, z.core.$strip>, z.ZodVoid, "mutation">;
755
+ /** Every location that carries a DESCRIPTION — what the place LOOKS like,
756
+ * in plain words, given to the vision model alongside the pictures so it
757
+ * knows what it is looking at. A driveway of cobbles between a brick wall
758
+ * and three parking spaces reads very differently from a back garden.
759
+ *
760
+ * Same additive shape and same join key as `listLocationIcons`, and that
761
+ * is the point of it being here at all: this lived in the post-analysis
762
+ * addon's own settings, keyed by a hand-typed label matched exactly and
763
+ * case-sensitively, while the icon hung off the location itself. A rename
764
+ * carried the icon and silently orphaned the description. One location,
765
+ * one authority, one key.
766
+ *
767
+ * Absent means nobody wrote one — the digest then tells the model only the
768
+ * location NAME, exactly as it did before descriptions existed. */
769
+ readonly listLocationDescriptions: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodArray<z.ZodObject<{
770
+ locationKey: z.ZodString;
771
+ description: z.ZodString;
772
+ }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
773
+ /** Set (or clear) a location's description. `description: null`, or a
774
+ * blank string, removes it — an empty description and no description are
775
+ * the same thing to every reader, and storing the first would send an
776
+ * empty line to the model.
777
+ *
778
+ * Like `setLocationIcon`, the label need NOT be registered, and an
779
+ * empty / whitespace-only LABEL throws. */
780
+ readonly setLocationDescription: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
781
+ location: z.ZodString;
782
+ description: z.ZodNullable<z.ZodString>;
783
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
784
+ /** Every SITE ZONE — a named part of the property that groups locations
785
+ * ("Zona notte" holds the bedrooms). One call answers the whole picture:
786
+ * key, the label as typed, the icon, and the locations inside.
787
+ *
788
+ * Together, because a surface that asked for membership separately could
789
+ * draw a zone whose rooms it has not fetched — and the strip that renders
790
+ * these puts zones BEFORE locations, so a half-known zone is the first
791
+ * thing an operator sees.
792
+ *
793
+ * Nothing here touches a device: a camera's zone is derived from its
794
+ * location, never stored on the row. Grouping rooms must not rewrite the
795
+ * fleet. */
796
+ readonly listSiteZones: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodArray<z.ZodObject<{
797
+ zoneKey: z.ZodString;
798
+ label: z.ZodString;
799
+ icon: z.ZodNullable<z.ZodEnum<{
800
+ package: "package";
801
+ "map-pin": "map-pin";
802
+ house: "house";
803
+ "door-open": "door-open";
804
+ sofa: "sofa";
805
+ utensils: "utensils";
806
+ "bed-double": "bed-double";
807
+ bath: "bath";
808
+ briefcase: "briefcase";
809
+ car: "car";
810
+ "circle-parking": "circle-parking";
811
+ route: "route";
812
+ trees: "trees";
813
+ umbrella: "umbrella";
814
+ "waves-ladder": "waves-ladder";
815
+ fence: "fence";
816
+ warehouse: "warehouse";
817
+ store: "store";
818
+ sun: "sun";
819
+ radar: "radar";
820
+ }>>;
821
+ locationKeys: z.ZodArray<z.ZodString>;
822
+ }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
823
+ /** Create a zone, or set the icon of one that exists. `icon: null` clears
824
+ * the icon and KEEPS the zone — a zone with no icon is a normal zone, and
825
+ * conflating "no icon" with "no zone" would delete membership on a
826
+ * mis-click.
827
+ *
828
+ * Idempotent, and the label is stored as typed: the key is folded, so
829
+ * re-running this with different casing re-labels rather than duplicating. */
830
+ readonly setSiteZone: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
831
+ name: z.ZodString;
832
+ icon: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
833
+ package: "package";
834
+ "map-pin": "map-pin";
835
+ house: "house";
836
+ "door-open": "door-open";
837
+ sofa: "sofa";
838
+ utensils: "utensils";
839
+ "bed-double": "bed-double";
840
+ bath: "bath";
841
+ briefcase: "briefcase";
842
+ car: "car";
843
+ "circle-parking": "circle-parking";
844
+ route: "route";
845
+ trees: "trees";
846
+ umbrella: "umbrella";
847
+ "waves-ladder": "waves-ladder";
848
+ fence: "fence";
849
+ warehouse: "warehouse";
850
+ store: "store";
851
+ sun: "sun";
852
+ radar: "radar";
853
+ }>>>;
854
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
855
+ /** Delete a zone. Its LOCATIONS survive — they simply stop belonging to
856
+ * anything. Deleting a grouping must never delete what was grouped. */
857
+ readonly removeSiteZone: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
858
+ name: z.ZodString;
859
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
860
+ /** Rename a zone, carrying its icon AND its membership.
861
+ *
862
+ * It exists so that renaming is not delete-then-recreate, which would drop
863
+ * both — the exact orphaning that lost a location's description when the
864
+ * two hung off different keys. Renaming onto an existing zone MERGES into
865
+ * it and the target keeps its own icon. */
866
+ readonly renameSiteZone: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
867
+ from: z.ZodString;
868
+ to: z.ZodString;
869
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
870
+ /** Put a location in a zone, or take it out with `zone: null`.
871
+ *
872
+ * At most one zone per location, by construction: this writes one key, so
873
+ * there is no state in which a room is in two places at once. The zone
874
+ * need not exist yet — it is created empty-labelled from this call, the
875
+ * same way `setLocationIcon` does not require a registered location. */
876
+ readonly setLocationZone: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
877
+ location: z.ZodString;
878
+ zone: z.ZodNullable<z.ZodString>;
879
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
755
880
  /** Soft-disable / re-enable the device. Drivers consult
756
881
  * `BaseDevice.disabled` to gate lifecycle hooks. */
757
882
  readonly setDisabled: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
@@ -17,8 +17,8 @@ export { BATTERY_DEVICE_PROFILE, DEVICE_PROFILES, deviceMatchesProfile, resolveD
17
17
  export type { IDeviceRuntimeState, Snapshot as RuntimeStateSnapshot, } from './device-runtime-state.js';
18
18
  export { ChargingStatus, DeviceFeature, DeviceRole, DeviceType } from './device-type.js';
19
19
  export type { IBatteryOperated, IDoorbellButton, INativeSnapshot, IPanTiltZoom, IRebootable, ITwoWayAudio, } from './features.js';
20
- export type { LocationIconAssignment, LocationIconId } from './location-icon.js';
21
- export { LOCATION_ICON_FALLBACK, LOCATION_ICON_IDS, LocationIconAssignmentSchema, LocationIconIdSchema, locationIconKey, resolveLocationIcon, } from './location-icon.js';
20
+ export type { LocationDescriptionAssignment, LocationIconAssignment, LocationIconId, } from './location-icon.js';
21
+ export { LOCATION_ICON_FALLBACK, LOCATION_ICON_IDS, LOCATION_DESCRIPTION_MAX, LocationDescriptionAssignmentSchema, LocationIconAssignmentSchema, LocationIconIdSchema, locationIconKey, resolveLocationIcon, } from './location-icon.js';
22
22
  export { getByPath, setByPath } from './path-util.js';
23
23
  export type { ReachabilityPollHandle, ReachabilityPollLogger, ReachabilityPollOptions, } from './reachability-poll.js';
24
24
  export { REACHABILITY_FAILURES_TO_OFFLINE, REACHABILITY_POLL_INTERVAL_MS, REACHABILITY_PROBE_TIMEOUT_MS, startReachabilityPoll, } from './reachability-poll.js';
@@ -28,3 +28,5 @@ export type { WireableField } from './schema-fields.js';
28
28
  export { enumerateItemArrayFields, enumerateSchemaFields } from './schema-fields.js';
29
29
  export type { DeviceConfigEntry } from './zod-to-config-ui.js';
30
30
  export { zodEntriesToConfigUI } from './zod-to-config-ui.js';
31
+ export type { SiteZone } from './site-zone.js';
32
+ export { SiteZoneSchema, siteZoneKey } from './site-zone.js';
@@ -154,3 +154,29 @@ export declare function locationIconKey(label: string): string;
154
154
  * list, which only carries what was actually stored.
155
155
  */
156
156
  export declare function resolveLocationIcon(value: unknown): LocationIconId;
157
+ /**
158
+ * How long a location description may be.
159
+ *
160
+ * It is given to a vision model alongside the pictures, so it competes for the
161
+ * same attention the pictures need. A cap of one short paragraph is what keeps
162
+ * it a PLACE description rather than a second prompt — an operator who needs
163
+ * more than this is describing events, which change, instead of the ground,
164
+ * which does not.
165
+ */
166
+ export declare const LOCATION_DESCRIPTION_MAX = 400;
167
+ /**
168
+ * One (location, description) assignment as it travels.
169
+ *
170
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
171
+ * reason: this lived for a while in the post-analysis addon's own settings,
172
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
173
+ * the Locations page carried the icon and silently orphaned the description —
174
+ * two authorities for one thing, joined by two different rules. Now both hang
175
+ * off the location itself, on `locationIconKey`.
176
+ */
177
+ export declare const LocationDescriptionAssignmentSchema: z.ZodObject<{
178
+ locationKey: z.ZodString;
179
+ description: z.ZodString;
180
+ }, z.core.$strip>;
181
+ /** @see LocationDescriptionAssignmentSchema */
182
+ export type LocationDescriptionAssignment = z.infer<typeof LocationDescriptionAssignmentSchema>;
@@ -0,0 +1,80 @@
1
+ /**
2
+ * A SITE ZONE — a named part of the property that several locations belong to.
3
+ *
4
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
5
+ * kitchen. A camera belongs to exactly one location, and a location to at most
6
+ * one zone, so a camera's zone is derived and never stored on the device: the
7
+ * whole point of this entity is that grouping rooms touches no device row.
8
+ *
9
+ * ## Why not `zone`
10
+ *
11
+ * Because `zone` is already the most loaded word in this product: 612 source
12
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
13
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
14
+ * set of rooms — and a reader who confuses them will look for a camera's
15
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
16
+ * word by calling the drawn one what it actually is: a detection zone.
17
+ *
18
+ * ## The key
19
+ *
20
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
21
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
22
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
23
+ * silently-dropped location description.
24
+ *
25
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
26
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
27
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
28
+ */
29
+ import { z } from 'zod';
30
+ /**
31
+ * One zone as it travels: its key, the label the operator typed, its icon and
32
+ * the locations inside it.
33
+ *
34
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
35
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
36
+ * here, rather than left to a second call, because every consumer wants both
37
+ * at once and a viewer that asked twice could render a zone whose membership
38
+ * it has not fetched yet.
39
+ *
40
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
41
+ * of those two is a choice, and a picker has to draw them differently.
42
+ */
43
+ export declare const SiteZoneSchema: z.ZodObject<{
44
+ zoneKey: z.ZodString;
45
+ label: z.ZodString;
46
+ icon: z.ZodNullable<z.ZodEnum<{
47
+ package: "package";
48
+ "map-pin": "map-pin";
49
+ house: "house";
50
+ "door-open": "door-open";
51
+ sofa: "sofa";
52
+ utensils: "utensils";
53
+ "bed-double": "bed-double";
54
+ bath: "bath";
55
+ briefcase: "briefcase";
56
+ car: "car";
57
+ "circle-parking": "circle-parking";
58
+ route: "route";
59
+ trees: "trees";
60
+ umbrella: "umbrella";
61
+ "waves-ladder": "waves-ladder";
62
+ fence: "fence";
63
+ warehouse: "warehouse";
64
+ store: "store";
65
+ sun: "sun";
66
+ radar: "radar";
67
+ }>>;
68
+ locationKeys: z.ZodArray<z.ZodString>;
69
+ }, z.core.$strip>;
70
+ /** @see SiteZoneSchema */
71
+ export type SiteZone = z.infer<typeof SiteZoneSchema>;
72
+ /**
73
+ * The join key for a zone label: trimmed, lower-cased.
74
+ *
75
+ * Deliberately a separate export from `locationIconKey` even though the
76
+ * derivation is identical — they key different maps, and a future change to one
77
+ * must not silently re-key the other. Their agreement is a fact about today,
78
+ * not a dependency.
79
+ */
80
+ export declare function siteZoneKey(label: string): string;
@@ -2268,6 +2268,55 @@ export type AppRouter = TrpcCoreRouter<{
2268
2268
  output: z.infer<typeof deviceManagerCapability.methods.setLocationIcon.output>;
2269
2269
  meta: object;
2270
2270
  }>;
2271
+ listLocationDescriptions: TRPCQueryProcedure<{
2272
+ input: {
2273
+ nodeId?: string | undefined;
2274
+ } | undefined;
2275
+ output: z.infer<typeof deviceManagerCapability.methods.listLocationDescriptions.output>;
2276
+ meta: object;
2277
+ }>;
2278
+ setLocationDescription: TRPCMutationProcedure<{
2279
+ input: {
2280
+ [x: string]: unknown;
2281
+ } & z.input<typeof deviceManagerCapability.methods.setLocationDescription.input>;
2282
+ output: z.infer<typeof deviceManagerCapability.methods.setLocationDescription.output>;
2283
+ meta: object;
2284
+ }>;
2285
+ listSiteZones: TRPCQueryProcedure<{
2286
+ input: {
2287
+ nodeId?: string | undefined;
2288
+ } | undefined;
2289
+ output: z.infer<typeof deviceManagerCapability.methods.listSiteZones.output>;
2290
+ meta: object;
2291
+ }>;
2292
+ setSiteZone: TRPCMutationProcedure<{
2293
+ input: {
2294
+ [x: string]: unknown;
2295
+ } & z.input<typeof deviceManagerCapability.methods.setSiteZone.input>;
2296
+ output: z.infer<typeof deviceManagerCapability.methods.setSiteZone.output>;
2297
+ meta: object;
2298
+ }>;
2299
+ removeSiteZone: TRPCMutationProcedure<{
2300
+ input: {
2301
+ [x: string]: unknown;
2302
+ } & z.input<typeof deviceManagerCapability.methods.removeSiteZone.input>;
2303
+ output: z.infer<typeof deviceManagerCapability.methods.removeSiteZone.output>;
2304
+ meta: object;
2305
+ }>;
2306
+ renameSiteZone: TRPCMutationProcedure<{
2307
+ input: {
2308
+ [x: string]: unknown;
2309
+ } & z.input<typeof deviceManagerCapability.methods.renameSiteZone.input>;
2310
+ output: z.infer<typeof deviceManagerCapability.methods.renameSiteZone.output>;
2311
+ meta: object;
2312
+ }>;
2313
+ setLocationZone: TRPCMutationProcedure<{
2314
+ input: {
2315
+ [x: string]: unknown;
2316
+ } & z.input<typeof deviceManagerCapability.methods.setLocationZone.input>;
2317
+ output: z.infer<typeof deviceManagerCapability.methods.setLocationZone.output>;
2318
+ meta: object;
2319
+ }>;
2271
2320
  setDisabled: TRPCMutationProcedure<{
2272
2321
  input: {
2273
2322
  [x: string]: unknown;
@@ -10455,6 +10504,7 @@ export type AppRouter = TrpcCoreRouter<{
10455
10504
  scope: {
10456
10505
  kind: "grid-view" | "events-view";
10457
10506
  deviceIds: number[];
10507
+ talk?: boolean | undefined;
10458
10508
  };
10459
10509
  ttlSec?: number | "never" | undefined;
10460
10510
  };
@@ -10483,6 +10533,7 @@ export type AppRouter = TrpcCoreRouter<{
10483
10533
  scope: {
10484
10534
  kind: "grid-view" | "events-view";
10485
10535
  deviceIds: number[];
10536
+ talk?: boolean | undefined;
10486
10537
  };
10487
10538
  createdAt: number;
10488
10539
  expiresAt: number | null;
@@ -10831,6 +10882,7 @@ export type AppRouter = TrpcCoreRouter<{
10831
10882
  scope: {
10832
10883
  kind: "grid-view" | "events-view";
10833
10884
  deviceIds: number[];
10885
+ talk?: boolean | undefined;
10834
10886
  };
10835
10887
  ttlSec?: number | "never" | undefined;
10836
10888
  };
@@ -10859,6 +10911,7 @@ export type AppRouter = TrpcCoreRouter<{
10859
10911
  scope: {
10860
10912
  kind: "grid-view" | "events-view";
10861
10913
  deviceIds: number[];
10914
+ talk?: boolean | undefined;
10862
10915
  };
10863
10916
  createdAt: number;
10864
10917
  expiresAt: number | null;
@@ -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: 1041 method paths across 130 capabilities.
9
+ * Coverage: 1048 method paths across 130 capabilities.
10
10
  */
11
11
  import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
12
12
  export interface MethodAccessRecord {
@@ -68,7 +68,7 @@ export interface SystemProxy {
68
68
  readonly decoder: Pick<InferProvider<typeof decoderCapability>, 'supportsCodec' | 'getInfo' | 'createSession' | 'destroySession' | 'pushPacket' | 'openStream' | 'pullFrames' | 'pullHandles' | 'getFrame' | 'getShmStats' | 'updateConfig' | 'getStats' | 'listActiveSessions' | 'reprobeHwaccel'>;
69
69
  readonly deviceAdoption: Pick<InferProvider<typeof deviceAdoptionCapability>, 'listCandidateFilters' | 'listCandidates' | 'getCandidate' | 'refresh' | 'adopt' | 'release' | 'resync'>;
70
70
  readonly deviceExport: Pick<InferProvider<typeof deviceExportCapability>, 'getStatus' | 'listSupportedDeviceKinds' | 'listExposedDevices' | 'exposeDevice' | 'unexposeDevice'>;
71
- readonly deviceManager: Pick<InferProvider<typeof deviceManagerCapability>, 'allocateDeviceId' | 'migrateDevice' | 'registerDevice' | 'removeDevice' | 'persistConfig' | 'getRoleDisplayDefaults' | 'setRoleDisplayDefaults' | 'listLocations' | 'addLocation' | 'removeLocation' | 'renameLocation' | 'listLocationIcons' | 'setLocationIcon' | 'listPersistedByAddon' | 'listAll' | 'getChildren' | 'getChildrenBatch' | 'getLinkedDevicesBatch' | 'removeByIntegration' | 'getBindingsBatch' | 'getAllBindings' | 'listWrappersForCap' | 'listBindableCapsForDeviceType' | 'discoverDevices' | 'adoptDevice' | 'getCreationSchema' | 'createDevice' | 'testCreationField' | 'adoptionListCandidateFilters' | 'adoptionListCandidates' | 'adoptionRefresh' | 'adoptionAdopt' | 'adoptionRelease' | 'adoptionStartJob' | 'adoptionListJobs' | 'adoptionCancelJob' | 'adoptionResync' | 'discoveryProviders' | 'discoverAllProviders' | 'discoverProvider' | 'providerCreationType' | 'providerDiscoveryParamsSchema' | 'getDeviceStatusAggregateBatch'>;
71
+ readonly deviceManager: Pick<InferProvider<typeof deviceManagerCapability>, 'allocateDeviceId' | 'migrateDevice' | 'registerDevice' | 'removeDevice' | 'persistConfig' | 'getRoleDisplayDefaults' | 'setRoleDisplayDefaults' | 'listLocations' | 'addLocation' | 'removeLocation' | 'renameLocation' | 'listLocationIcons' | 'setLocationIcon' | 'listLocationDescriptions' | 'setLocationDescription' | 'listSiteZones' | 'setSiteZone' | 'removeSiteZone' | 'renameSiteZone' | 'setLocationZone' | 'listPersistedByAddon' | 'listAll' | 'getChildren' | 'getChildrenBatch' | 'getLinkedDevicesBatch' | 'removeByIntegration' | 'getBindingsBatch' | 'getAllBindings' | 'listWrappersForCap' | 'listBindableCapsForDeviceType' | 'discoverDevices' | 'adoptDevice' | 'getCreationSchema' | 'createDevice' | 'testCreationField' | 'adoptionListCandidateFilters' | 'adoptionListCandidates' | 'adoptionRefresh' | 'adoptionAdopt' | 'adoptionRelease' | 'adoptionStartJob' | 'adoptionListJobs' | 'adoptionCancelJob' | 'adoptionResync' | 'discoveryProviders' | 'discoverAllProviders' | 'discoverProvider' | 'providerCreationType' | 'providerDiscoveryParamsSchema' | 'getDeviceStatusAggregateBatch'>;
72
72
  readonly deviceProvider: Pick<InferProvider<typeof deviceProviderCapability>, 'start' | 'stop' | 'getStatus' | 'getDevices' | 'supportsDiscovery' | 'discoverDevices' | 'getDiscoveryParamsSchema' | 'getManualCreationType' | 'adoptDiscoveredDevice' | 'supportsManualCreation' | 'getChildCreationSchema' | 'createDevice' | 'testCreationField'>;
73
73
  readonly deviceState: Pick<InferProvider<typeof deviceStateCapability>, 'getAllSnapshots'>;
74
74
  readonly faceGallery: Pick<InferProvider<typeof faceGalleryCapability>, 'listIdentities' | 'createIdentity' | 'renameIdentity' | 'deleteIdentity' | 'listIdentitySamples' | 'auditIdentitySamples' | 'removeSample' | 'getFaceMedia' | 'assignFace' | 'unassignFace' | 'deleteFace' | 'assignFaces' | 'unassignFaces' | 'suggestFaceClusters'>;
package/dist/index.d.ts CHANGED
@@ -174,8 +174,8 @@ export type { SliceEventBus, SliceHandle, SliceHandleApi, SliceHandleSource, } f
174
174
  export { createEventBusSliceSource, createLazyTrpcSource, createMirrorSource, createSliceHandle, } from './device/device-state-handle.js';
175
175
  export { ChargingStatus, DeviceFeature, DeviceRole, DeviceType } from './device/device-type.js';
176
176
  export type { IBatteryOperated, IDoorbellButton, INativeSnapshot, IPanTiltZoom, IRebootable, ITwoWayAudio, } from './device/features.js';
177
- export type { LocationIconAssignment, LocationIconId } from './device/location-icon.js';
178
- export { LOCATION_ICON_FALLBACK, LOCATION_ICON_IDS, LocationIconAssignmentSchema, LocationIconIdSchema, locationIconKey, resolveLocationIcon, } from './device/location-icon.js';
177
+ export type { LocationDescriptionAssignment, LocationIconAssignment, LocationIconId, } from './device/location-icon.js';
178
+ export { LOCATION_ICON_FALLBACK, LOCATION_ICON_IDS, LOCATION_DESCRIPTION_MAX, LocationDescriptionAssignmentSchema, LocationIconAssignmentSchema, LocationIconIdSchema, locationIconKey, resolveLocationIcon, } from './device/location-icon.js';
179
179
  export { getByPath, setByPath } from './device/path-util.js';
180
180
  export type { ReachabilityPollHandle, ReachabilityPollLogger, ReachabilityPollOptions, } from './device/reachability-poll.js';
181
181
  export { REACHABILITY_FAILURES_TO_OFFLINE, REACHABILITY_POLL_INTERVAL_MS, REACHABILITY_PROBE_TIMEOUT_MS, startReachabilityPoll, } from './device/reachability-poll.js';
@@ -257,3 +257,5 @@ export { evaluateZoneRules, type ZoneRuleEvalResult } from './utils/zone-rule-ev
257
257
  export { bindAddonActions } from './helpers/bind-addon-actions.js';
258
258
  export type { DeviceOption, InferenceDeviceDescriptor, RuntimeId, } from './inference/runtime-capabilities.js';
259
259
  export { defaultDeviceFor, enumerateInferenceDevices, modelFormatForRuntime, runtimeDevices, scoreRuntimes, supportedRuntimes, } from './inference/runtime-capabilities.js';
260
+ export type { SiteZone } from './device/site-zone.js';
261
+ export { SiteZoneSchema, siteZoneKey } from './device/site-zone.js';