@camstack/addon-model-studio 1.1.258 → 1.1.260

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 (18) hide show
  1. package/dist/{MotionZonesSettings-CkV2aUvO.mjs → MotionZonesSettings-B1K0x6en.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-A04FmFki.mjs → PrivacyMaskSettings-DUSo9V9v.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-BGsdcHlo.mjs → SceneMonitorEditor-BIaR23TE.mjs} +3 -3
  4. package/dist/_stub.js +197 -197
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-C9097na_.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-CkwkW2EP.mjs} +3 -3
  6. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CPL5HlJL.mjs +26 -0
  7. package/dist/{hostInit-kJIPeeR8.mjs → hostInit-Dj9XbnRR.mjs} +2 -2
  8. package/dist/model-studio.addon.js +363 -11
  9. package/dist/model-studio.addon.mjs +363 -11
  10. package/dist/{player-overlays-CEo6fyPi.mjs → player-overlays-CeSyVA4A.mjs} +1 -1
  11. package/dist/remoteEntry.js +1 -1
  12. package/dist/{responsive-Pow15MKn.mjs → responsive-CZQqiIpv.mjs} +1 -1
  13. package/dist/{scene-monitor-copy-DtoPg3LV.mjs → scene-monitor-copy-B6BfcEdC.mjs} +1 -1
  14. package/dist/{square-CaF-sfeh.mjs → square-ScGuLQH_.mjs} +1 -1
  15. package/dist/{trash-2-DBoe6JLZ.mjs → trash-2-CQxFRUtz.mjs} +1 -1
  16. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-EXT3i1_G.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-BbU0PjTG.mjs} +1 -1
  17. package/package.json +1 -1
  18. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D_ZqRreN.mjs +0 -26
@@ -5782,7 +5782,7 @@ var ZodIssueCode = {
5782
5782
  var ZodFirstPartyTypeKind;
5783
5783
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5784
5784
  //#endregion
5785
- //#region ../types/dist/sleep-BBF1iXUi.mjs
5785
+ //#region ../types/dist/sleep-DAX0-2v9.mjs
5786
5786
  /**
5787
5787
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5788
5788
  * window to float samples (D455).
@@ -12767,6 +12767,12 @@ var ConvertResultSchema = object({
12767
12767
  entry: ModelCatalogEntrySchema,
12768
12768
  artifacts: array(ConvertArtifactSchema).readonly()
12769
12769
  });
12770
+ _enum(["new-session", "step-up"]);
12771
+ /** How a native app starts one login method (D858), as `auth.listLoginMethods` reports it. */
12772
+ var AppLoginPathSchema = discriminatedUnion("kind", [object({ kind: literal("native") }), object({
12773
+ kind: literal("browser"),
12774
+ startPath: string().startsWith("/")
12775
+ })]);
12770
12776
  /**
12771
12777
  * Device certificates (D855) — the wire contract shared by the hub, the admin
12772
12778
  * UI and the native viewer.
@@ -12926,7 +12932,9 @@ object({
12926
12932
  signature: literal(DEVICE_CERT_SIGNATURE),
12927
12933
  messageVersion: literal(DEVICE_SIGNATURE_MESSAGE_VERSION),
12928
12934
  /** Which clients can execute it: a native app silently, a browser with a non-extractable WebCrypto key. */
12929
- clients: array(_enum(["native", "web"]))
12935
+ clients: array(_enum(["native", "web"])),
12936
+ /** The app executes it itself, silently (D858). */
12937
+ app: AppLoginPathSchema.nullable()
12930
12938
  });
12931
12939
  var ExpressionBindingSourceSchema = union([
12932
12940
  object({
@@ -16528,6 +16536,208 @@ method(object({
16528
16536
  kind: "mutation",
16529
16537
  auth: "admin"
16530
16538
  }), method(object({}), array(KeychainSecretMetaSchema).readonly(), { auth: "admin" }), method(object({}), KeychainStateSchema, { auth: "admin" });
16539
+ /**
16540
+ * device-history — the ONE mechanism for numeric history (D850).
16541
+ *
16542
+ * A device value is recorded because its capability says so (the `history`
16543
+ * block of a `*.cap.ts`, captured hub-side from `DeviceStateChanged`); any
16544
+ * other series is DECLARED by the addon that produces it and fed with points
16545
+ * (`record`) or closed five-minute buckets (`recordBuckets`). Rollups 5m / 1h /
16546
+ * 1d are computed here and nowhere else. Storage is `history.db` (D851).
16547
+ *
16548
+ * Who the PRODUCER is: `declareSeries`, `record` and `recordBuckets` are owner
16549
+ * checked against the `callerAddonId` the transport stamps into a call that
16550
+ * crossed a process (never in an input schema, so a session cannot supply it).
16551
+ * A call with no stamp is refused `not-owner`. The methods are `admin` so a
16552
+ * non-admin session never reaches them; an addon's `ctx.api` call bypasses the
16553
+ * tier by design.
16554
+ */
16555
+ /** Whose history: a real device, or a cluster node (load, memory). */
16556
+ var DeviceHistorySubjectSchema = discriminatedUnion("kind", [object({
16557
+ kind: literal("device"),
16558
+ deviceId: number().int()
16559
+ }), object({
16560
+ kind: literal("node"),
16561
+ nodeId: string().min(1)
16562
+ })]);
16563
+ var DeviceHistoryKindSchema = _enum([
16564
+ "gauge",
16565
+ "counter",
16566
+ "boolean"
16567
+ ]);
16568
+ var DeviceHistoryResolutionSchema = _enum([
16569
+ "raw",
16570
+ "5m",
16571
+ "1h",
16572
+ "1d"
16573
+ ]);
16574
+ /** Why a producer's point or bucket was not stored. Counted, never silent (D391). */
16575
+ var DeviceHistoryRefusalReasonSchema = _enum([
16576
+ "undeclared",
16577
+ "not-owner",
16578
+ "opted-out",
16579
+ "not-a-real-device",
16580
+ "rate",
16581
+ "ingest-mismatch",
16582
+ "out-of-range"
16583
+ ]);
16584
+ var RefusalSchema = object({
16585
+ key: string(),
16586
+ reason: DeviceHistoryRefusalReasonSchema,
16587
+ count: number().int()
16588
+ });
16589
+ var IngestResultSchema = object({
16590
+ accepted: number().int(),
16591
+ refused: array(RefusalSchema).readonly()
16592
+ });
16593
+ var SeriesInfoSchema = object({
16594
+ key: string(),
16595
+ scope: string(),
16596
+ kind: DeviceHistoryKindSchema,
16597
+ /** `null` is unknown (a `unitFrom` series whose device does not state a unit right now), never a guess. */
16598
+ unit: string().nullable(),
16599
+ displayName: string(),
16600
+ source: _enum(["cap", "addon"]),
16601
+ firstTs: number(),
16602
+ lastTs: number()
16603
+ });
16604
+ var QueryPointSchema = object({
16605
+ /** Raw: the point's time. Rollup: the bucket start. */
16606
+ t: number(),
16607
+ samples: number().int(),
16608
+ /** `sum / samples`. */
16609
+ mean: number().nullable(),
16610
+ /** Time-weighted mean (`tw_sum / tw_ms`); `null` for bucket-ingested series. For a boolean: the fraction of time true. */
16611
+ twMean: number().nullable(),
16612
+ min: number(),
16613
+ max: number(),
16614
+ /** `null` is unknown, never zero (D393). */
16615
+ last: number().nullable()
16616
+ });
16617
+ var QuerySeriesSchema = object({
16618
+ scope: string(),
16619
+ /** The last point STRICTLY BEFORE `from` in the chosen tier, so a step chart can start at the held value. */
16620
+ before: object({
16621
+ t: number(),
16622
+ value: number().nullable()
16623
+ }).nullable(),
16624
+ points: array(QueryPointSchema).readonly()
16625
+ });
16626
+ /** The window part of a query, shared by the device and node forms. */
16627
+ var QueryWindowShape = {
16628
+ key: string(),
16629
+ scope: string().optional(),
16630
+ from: number(),
16631
+ to: number(),
16632
+ resolution: union([DeviceHistoryResolutionSchema, literal("auto")]).default("auto"),
16633
+ maxPoints: number().int().positive().max(5e3).default(1e3)
16634
+ };
16635
+ var QueryResultSchema = object({
16636
+ resolution: DeviceHistoryResolutionSchema,
16637
+ series: array(QuerySeriesSchema).readonly(),
16638
+ truncated: boolean()
16639
+ });
16640
+ var TierStatusSchema = object({
16641
+ tier: DeviceHistoryResolutionSchema,
16642
+ /** `null` until the first background count answered. */
16643
+ rows: number().int().nullable(),
16644
+ /** `rows` times a fixed per-row estimate — approximate, labelled so. */
16645
+ approxBytes: number().nullable(),
16646
+ countedAt: number().nullable()
16647
+ });
16648
+ /** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
16649
+ var DeviceHistoryStatusSchema = object({
16650
+ startedAt: number(),
16651
+ /** The store is declared, series loaded and the first reconcile has answered. */
16652
+ ready: boolean(),
16653
+ series: number().int(),
16654
+ metrics: number().int(),
16655
+ optedOutDevices: number().int(),
16656
+ tiers: array(TierStatusSchema).readonly(),
16657
+ capture: object({
16658
+ eventsSeen: number().int(),
16659
+ pointsEmitted: number().int(),
16660
+ pointsWritten: number().int(),
16661
+ pointsDropped: number().int(),
16662
+ bufferDepth: number().int(),
16663
+ trailingEmitted: number().int(),
16664
+ reconciledPoints: number().int(),
16665
+ reconcileRuns: number().int(),
16666
+ reconcileFailures: number().int(),
16667
+ lastReconcileAt: number().nullable(),
16668
+ lastFlushAt: number().nullable(),
16669
+ flushFailures: number().int(),
16670
+ skipped: record(string(), number().int())
16671
+ }),
16672
+ ingest: object({
16673
+ accepted: number().int(),
16674
+ refused: record(string(), number().int())
16675
+ }),
16676
+ rollup: object({
16677
+ last5mAt: number().nullable(),
16678
+ last1hAt: number().nullable(),
16679
+ last1dAt: number().nullable(),
16680
+ errors: number().int(),
16681
+ dirty5m: number().int(),
16682
+ dirty1h: number().int(),
16683
+ dirty1d: number().int()
16684
+ }),
16685
+ retention: object({
16686
+ lastRunAt: number().nullable(),
16687
+ deleted: record(string(), number().int()),
16688
+ purgedSeries: number().int()
16689
+ }),
16690
+ directory: object({
16691
+ devices: number().int(),
16692
+ lastRefreshAt: number().nullable()
16693
+ })
16694
+ });
16695
+ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly()), method(object({ nodeId: string().min(1) }), array(SeriesInfoSchema).readonly(), { auth: "admin" }), method(object({
16696
+ deviceId: number().int(),
16697
+ ...QueryWindowShape
16698
+ }), QueryResultSchema), method(object({
16699
+ nodeId: string().min(1),
16700
+ ...QueryWindowShape
16701
+ }), QueryResultSchema, { auth: "admin" }), method(object({
16702
+ name: string().regex(/^[a-z0-9-]+$/),
16703
+ subjectKind: _enum(["device", "node"]),
16704
+ kind: DeviceHistoryKindSchema,
16705
+ unit: string().optional(),
16706
+ displayName: string().min(1),
16707
+ ingest: _enum(["points", "buckets"])
16708
+ }), object({ key: string() }), {
16709
+ kind: "mutation",
16710
+ auth: "admin"
16711
+ }), method(object({ points: array(object({
16712
+ key: string(),
16713
+ subject: DeviceHistorySubjectSchema,
16714
+ scope: string().default(""),
16715
+ ts: number(),
16716
+ value: number()
16717
+ })).max(5e3) }), IngestResultSchema, {
16718
+ kind: "mutation",
16719
+ auth: "admin"
16720
+ }), method(object({ buckets: array(object({
16721
+ key: string(),
16722
+ subject: DeviceHistorySubjectSchema,
16723
+ scope: string().default(""),
16724
+ bucketStart: number(),
16725
+ samples: number().int().positive(),
16726
+ sum: number(),
16727
+ min: number(),
16728
+ max: number(),
16729
+ last: number().nullable(),
16730
+ lastTs: number().nullable()
16731
+ })).max(5e3) }), IngestResultSchema, {
16732
+ kind: "mutation",
16733
+ auth: "admin"
16734
+ }), method(object({ deviceId: number().int() }), object({ enabled: boolean() })), method(object({
16735
+ deviceId: number().int(),
16736
+ enabled: boolean()
16737
+ }), object({ enabled: boolean() }), {
16738
+ kind: "mutation",
16739
+ auth: "admin"
16740
+ }), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" });
16531
16741
  var DeviceCaStatusSchema = discriminatedUnion("state", [
16532
16742
  object({ state: literal("absent") }),
16533
16743
  object({
@@ -16645,6 +16855,9 @@ method(object({}), object({
16645
16855
  }), {
16646
16856
  kind: "mutation",
16647
16857
  auth: "admin"
16858
+ }), method(object({}), object({ ok: literal(true) }), {
16859
+ kind: "mutation",
16860
+ auth: "admin"
16648
16861
  }), method(object({
16649
16862
  certPem: string().min(1),
16650
16863
  caCertPem: string().min(1),
@@ -39392,7 +39605,13 @@ var LoginMethodContributionSchema = discriminatedUnion("kind", [
39392
39605
  * `beginExternalLink` offer exactly the redirect methods that set this,
39393
39606
  * whatever their id. Absent / false — a login button only.
39394
39607
  */
39395
- linkable: boolean().optional()
39608
+ linkable: boolean().optional(),
39609
+ /**
39610
+ * How a NATIVE app starts this method (D858): `{ kind: 'browser', startPath }`
39611
+ * when the route understands the app flow query (`app=1&code_challenge=…`),
39612
+ * `null`/absent when there is no app path - the app hides the method.
39613
+ */
39614
+ app: AppLoginPathSchema.nullable().optional()
39396
39615
  }),
39397
39616
  object({
39398
39617
  kind: literal("widget"),
@@ -39404,7 +39623,9 @@ var LoginMethodContributionSchema = discriminatedUnion("kind", [
39404
39623
  bundle: string(),
39405
39624
  /** MF remote descriptor — `{ remoteName, exposedModule, componentKey }`. */
39406
39625
  remote: WidgetRemoteSchema,
39407
- stage: LoginStageEnum
39626
+ stage: LoginStageEnum,
39627
+ /** Widgets are web ceremonies: no native app path (D858). Absent reads as `null`. */
39628
+ app: AppLoginPathSchema.nullable().optional()
39408
39629
  }),
39409
39630
  object({
39410
39631
  kind: literal("passkey"),
@@ -39416,7 +39637,9 @@ var LoginMethodContributionSchema = discriminatedUnion("kind", [
39416
39637
  /** Effective WebAuthn RP ID (`resolveRpID()`) — the shell gates visibility on it. */
39417
39638
  rpId: string(),
39418
39639
  /** Effective expected origin (`resolveOrigin()`), null when unconfigured. */
39419
- origin: string().nullable()
39640
+ origin: string().nullable(),
39641
+ /** Set by the hub for the primary arm; a second-factor passkey has no app path (D858). */
39642
+ app: AppLoginPathSchema.nullable().optional()
39420
39643
  })
39421
39644
  ]);
39422
39645
  method(_void(), array(LoginMethodContributionSchema).readonly());
@@ -39932,7 +40155,21 @@ var NetworkEndpointSchema = object({
39932
40155
  url: string(),
39933
40156
  hostname: string(),
39934
40157
  port: number(),
39935
- protocol: _enum(["http", "https"])
40158
+ protocol: _enum(["http", "https"]),
40159
+ /**
40160
+ * Whether this address survives a restart of its provider. `false` = it is
40161
+ * re-issued every time (a Quick tunnel's random `*.trycloudflare.com`); the
40162
+ * hub never selects such an address AUTOMATICALLY for a role (D860), though
40163
+ * it stays visible and an operator may still flag it. Absent = stable: every
40164
+ * provider except a Quick tunnel owns a name that does not change.
40165
+ */
40166
+ stable: boolean().optional()
40167
+ });
40168
+ object({
40169
+ url: string(),
40170
+ /** Mirrors {@link NetworkEndpointSchema} `stable`; absent = stable. */
40171
+ stable: boolean().optional(),
40172
+ updated: boolean().optional()
39936
40173
  });
39937
40174
  var NetworkAccessStatusSchema = object({
39938
40175
  connected: boolean(),
@@ -49955,7 +50192,20 @@ var SsoBridgeClaimsSchema = object({
49955
50192
  * request to present the matching cookie — a login bridge is useless in
49956
50193
  * any other browser.
49957
50194
  */
49958
- browserBinding: string().optional()
50195
+ browserBinding: string().optional(),
50196
+ /**
50197
+ * The native app that started this sign-in (D858): its PKCE challenge,
50198
+ * `state`, purpose and allow-listed return URL, copied from the server-side
50199
+ * pending OIDC state. A bridge carrying it is finished ONLY at
50200
+ * `/api/auth/sso/finish-app` (which mints a handoff code, never a web
50201
+ * session); `/api/auth/sso/finish` refuses it.
50202
+ */
50203
+ app: object({
50204
+ codeChallenge: string(),
50205
+ state: string(),
50206
+ purpose: _enum(["new-session", "step-up"]),
50207
+ redirect: string()
50208
+ }).optional()
49959
50209
  });
49960
50210
  method(object({
49961
50211
  claims: SsoBridgeClaimsSchema,
@@ -52161,7 +52411,12 @@ var SearchResultSchema = object({
52161
52411
  publishedAt: string(),
52162
52412
  author: string(),
52163
52413
  installed: boolean(),
52164
- installedVersion: string().optional()
52414
+ installedVersion: string().optional(),
52415
+ /**
52416
+ * Capability names the package's addons declare (from its published
52417
+ * manifest). `null` = the registry lookup failed — unknown, never `[]` (D393).
52418
+ */
52419
+ capabilities: array(string()).readonly().nullable()
52165
52420
  });
52166
52421
  var AutoUpdateSettingsSchema = object({
52167
52422
  channel: ChannelSchema,
@@ -52323,7 +52578,11 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
52323
52578
  }), method(object({ packageName: string().optional() }), PackageInstallationsSchema, { auth: "admin" }), method(_void(), ReloadPackagesResultSchema, {
52324
52579
  kind: "mutation",
52325
52580
  auth: "admin"
52326
- }), method(object({ query: string().optional() }), array(SearchResultSchema)), method(object({ nodeId: string().optional() }), array(PackageUpdateSchema).readonly(), { auth: "admin" }), method(object({
52581
+ }), method(object({
52582
+ query: string().optional(),
52583
+ /** Only packages whose addons declare this capability (unknown ones excluded). */
52584
+ capability: string().optional()
52585
+ }), array(SearchResultSchema)), method(object({ nodeId: string().optional() }), array(PackageUpdateSchema).readonly(), { auth: "admin" }), method(object({
52327
52586
  name: string().min(1),
52328
52587
  version: string().optional(),
52329
52588
  nodeId: string().optional()
@@ -54731,7 +54990,13 @@ var ConnectionEndpointSchema = object({
54731
54990
  * calls so the client can sort even if the cap returns a new
54732
54991
  * ordering between polls.
54733
54992
  */
54734
- priority: number()
54993
+ priority: number(),
54994
+ /**
54995
+ * `false` = the address changes on its own (a Quick tunnel, re-issued on
54996
+ * every respawn). Automatic role resolution skips it (D860); an explicit
54997
+ * operator flag still honours it. Absent = stable.
54998
+ */
54999
+ stable: boolean().optional()
54735
55000
  });
54736
55001
  /**
54737
55002
  * Where the advertised local port came from. Ordered most → least
@@ -55360,7 +55625,7 @@ var MotionOnMotionChangedDataSchema = object({
55360
55625
  /** Who started it (D672). Absent = the camera itself. Only `onboard` carries `sensor`. */
55361
55626
  triggeredBy: MotionTriggeredBySchema.optional()
55362
55627
  });
55363
- DeviceType.Camera, DeviceType.Sensor, method(object({ deviceId: number() }), boolean());
55628
+ DeviceType.Camera, DeviceType.Sensor, method(object({ deviceId: number() }), boolean()), DeviceType.Camera;
55364
55629
  object({
55365
55630
  enabled: boolean(),
55366
55631
  /** Ms epoch of the last operator-driven change. */
@@ -62815,6 +63080,66 @@ Object.freeze({
62815
63080
  addonId: null,
62816
63081
  access: "create"
62817
63082
  },
63083
+ "deviceHistory.declareSeries": {
63084
+ capName: "device-history",
63085
+ capScope: "system",
63086
+ addonId: null,
63087
+ access: "create"
63088
+ },
63089
+ "deviceHistory.getDeviceEnabled": {
63090
+ capName: "device-history",
63091
+ capScope: "system",
63092
+ addonId: null,
63093
+ access: "view"
63094
+ },
63095
+ "deviceHistory.getStatus": {
63096
+ capName: "device-history",
63097
+ capScope: "system",
63098
+ addonId: null,
63099
+ access: "view"
63100
+ },
63101
+ "deviceHistory.listNodeSeries": {
63102
+ capName: "device-history",
63103
+ capScope: "system",
63104
+ addonId: null,
63105
+ access: "view"
63106
+ },
63107
+ "deviceHistory.listSeries": {
63108
+ capName: "device-history",
63109
+ capScope: "system",
63110
+ addonId: null,
63111
+ access: "view"
63112
+ },
63113
+ "deviceHistory.query": {
63114
+ capName: "device-history",
63115
+ capScope: "system",
63116
+ addonId: null,
63117
+ access: "view"
63118
+ },
63119
+ "deviceHistory.queryNode": {
63120
+ capName: "device-history",
63121
+ capScope: "system",
63122
+ addonId: null,
63123
+ access: "view"
63124
+ },
63125
+ "deviceHistory.record": {
63126
+ capName: "device-history",
63127
+ capScope: "system",
63128
+ addonId: null,
63129
+ access: "create"
63130
+ },
63131
+ "deviceHistory.recordBuckets": {
63132
+ capName: "device-history",
63133
+ capScope: "system",
63134
+ addonId: null,
63135
+ access: "create"
63136
+ },
63137
+ "deviceHistory.setDeviceEnabled": {
63138
+ capName: "device-history",
63139
+ capScope: "system",
63140
+ addonId: null,
63141
+ access: "create"
63142
+ },
62818
63143
  "deviceManager.addLocation": {
62819
63144
  capName: "device-manager",
62820
63145
  capScope: "system",
@@ -64879,6 +65204,12 @@ Object.freeze({
64879
65204
  addonId: null,
64880
65205
  access: "create"
64881
65206
  },
65207
+ "nodeCertificates.forgetHub": {
65208
+ capName: "node-certificates",
65209
+ capScope: "system",
65210
+ addonId: null,
65211
+ access: "delete"
65212
+ },
64882
65213
  "nodeCertificates.getCertificates": {
64883
65214
  capName: "node-certificates",
64884
65215
  capScope: "system",
@@ -69606,6 +69937,26 @@ Object.freeze({
69606
69937
  form: "single",
69607
69938
  optional: false
69608
69939
  }],
69940
+ "deviceHistory.getDeviceEnabled": [{
69941
+ name: "deviceId",
69942
+ form: "single",
69943
+ optional: false
69944
+ }],
69945
+ "deviceHistory.listSeries": [{
69946
+ name: "deviceId",
69947
+ form: "single",
69948
+ optional: false
69949
+ }],
69950
+ "deviceHistory.query": [{
69951
+ name: "deviceId",
69952
+ form: "single",
69953
+ optional: false
69954
+ }],
69955
+ "deviceHistory.setDeviceEnabled": [{
69956
+ name: "deviceId",
69957
+ form: "single",
69958
+ optional: false
69959
+ }],
69609
69960
  "deviceManager.adoptionRelease": [{
69610
69961
  name: "camDeviceId",
69611
69962
  form: "single",
@@ -71784,6 +72135,7 @@ Object.freeze({
71784
72135
  "network-access": "ingress",
71785
72136
  "smtp-provider": "email"
71786
72137
  });
72138
+ DeviceType.Camera;
71787
72139
  var G711_SCALE_CORRECTION_DB = {
71788
72140
  PCMU: 20 * Math.log10(4),
71789
72141
  PCMA: 20 * Math.log10(8)