@camstack/addon-osd-manager 0.1.234 → 0.1.235

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-CpC0VrRF.mjs → MotionZonesSettings-CXYmJeEj.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-DsRVLMGw.mjs → PrivacyMaskSettings-s1lxaThA.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-Bd_y21mf.mjs → SceneMonitorEditor-DVTGOyG4.mjs} +3 -3
  4. package/dist/_stub.js +21 -11
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-CJ5YyyFD.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-HPUeQ2rW.mjs} +3 -3
  6. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-M-4Jyqe4.mjs +26 -0
  7. package/dist/{hostInit-BgZ8bjH8.mjs → hostInit-CVNfJUNs.mjs} +2 -2
  8. package/dist/index.js +295 -2
  9. package/dist/index.mjs +295 -2
  10. package/dist/{player-overlays-Bfw9gqQd.mjs → player-overlays-Dww91Wz6.mjs} +1 -1
  11. package/dist/remoteEntry.js +1 -1
  12. package/dist/{responsive-CvsGDf2k.mjs → responsive-Hqunukz5.mjs} +1 -1
  13. package/dist/{scene-monitor-copy-Cp3j72cs.mjs → scene-monitor-copy-Cg3vheyc.mjs} +1 -1
  14. package/dist/{square-DRfiAJqL.mjs → square-DLF3YKUK.mjs} +1 -1
  15. package/dist/{trash-2-KaQPwGe5.mjs → trash-2-DZZ-mygA.mjs} +1 -1
  16. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-BlUDCAK-.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-D4ppKOBm.mjs} +1 -1
  17. package/package.json +1 -1
  18. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-cCq5NyzR.mjs +0 -26
package/dist/index.js CHANGED
@@ -5390,7 +5390,7 @@ var ZodIssueCode = {
5390
5390
  var ZodFirstPartyTypeKind;
5391
5391
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5392
5392
  //#endregion
5393
- //#region ../types/dist/sleep-BBF1iXUi.mjs
5393
+ //#region ../types/dist/sleep--g-h2_c_.mjs
5394
5394
  /**
5395
5395
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5396
5396
  * window to float samples (D455).
@@ -15888,6 +15888,208 @@ method(object({
15888
15888
  kind: "mutation",
15889
15889
  auth: "admin"
15890
15890
  }), method(object({}), array(KeychainSecretMetaSchema).readonly(), { auth: "admin" }), method(object({}), KeychainStateSchema, { auth: "admin" });
15891
+ /**
15892
+ * device-history — the ONE mechanism for numeric history (D850).
15893
+ *
15894
+ * A device value is recorded because its capability says so (the `history`
15895
+ * block of a `*.cap.ts`, captured hub-side from `DeviceStateChanged`); any
15896
+ * other series is DECLARED by the addon that produces it and fed with points
15897
+ * (`record`) or closed five-minute buckets (`recordBuckets`). Rollups 5m / 1h /
15898
+ * 1d are computed here and nowhere else. Storage is `history.db` (D851).
15899
+ *
15900
+ * Who the PRODUCER is: `declareSeries`, `record` and `recordBuckets` are owner
15901
+ * checked against the `callerAddonId` the transport stamps into a call that
15902
+ * crossed a process (never in an input schema, so a session cannot supply it).
15903
+ * A call with no stamp is refused `not-owner`. The methods are `admin` so a
15904
+ * non-admin session never reaches them; an addon's `ctx.api` call bypasses the
15905
+ * tier by design.
15906
+ */
15907
+ /** Whose history: a real device, or a cluster node (load, memory). */
15908
+ var DeviceHistorySubjectSchema = discriminatedUnion("kind", [object({
15909
+ kind: literal("device"),
15910
+ deviceId: number().int()
15911
+ }), object({
15912
+ kind: literal("node"),
15913
+ nodeId: string().min(1)
15914
+ })]);
15915
+ var DeviceHistoryKindSchema = _enum([
15916
+ "gauge",
15917
+ "counter",
15918
+ "boolean"
15919
+ ]);
15920
+ var DeviceHistoryResolutionSchema = _enum([
15921
+ "raw",
15922
+ "5m",
15923
+ "1h",
15924
+ "1d"
15925
+ ]);
15926
+ /** Why a producer's point or bucket was not stored. Counted, never silent (D391). */
15927
+ var DeviceHistoryRefusalReasonSchema = _enum([
15928
+ "undeclared",
15929
+ "not-owner",
15930
+ "opted-out",
15931
+ "not-a-real-device",
15932
+ "rate",
15933
+ "ingest-mismatch",
15934
+ "out-of-range"
15935
+ ]);
15936
+ var RefusalSchema = object({
15937
+ key: string(),
15938
+ reason: DeviceHistoryRefusalReasonSchema,
15939
+ count: number().int()
15940
+ });
15941
+ var IngestResultSchema = object({
15942
+ accepted: number().int(),
15943
+ refused: array(RefusalSchema).readonly()
15944
+ });
15945
+ var SeriesInfoSchema = object({
15946
+ key: string(),
15947
+ scope: string(),
15948
+ kind: DeviceHistoryKindSchema,
15949
+ /** `null` is unknown (a `unitFrom` series whose device does not state a unit right now), never a guess. */
15950
+ unit: string().nullable(),
15951
+ displayName: string(),
15952
+ source: _enum(["cap", "addon"]),
15953
+ firstTs: number(),
15954
+ lastTs: number()
15955
+ });
15956
+ var QueryPointSchema = object({
15957
+ /** Raw: the point's time. Rollup: the bucket start. */
15958
+ t: number(),
15959
+ samples: number().int(),
15960
+ /** `sum / samples`. */
15961
+ mean: number().nullable(),
15962
+ /** Time-weighted mean (`tw_sum / tw_ms`); `null` for bucket-ingested series. For a boolean: the fraction of time true. */
15963
+ twMean: number().nullable(),
15964
+ min: number(),
15965
+ max: number(),
15966
+ /** `null` is unknown, never zero (D393). */
15967
+ last: number().nullable()
15968
+ });
15969
+ var QuerySeriesSchema = object({
15970
+ scope: string(),
15971
+ /** The last point STRICTLY BEFORE `from` in the chosen tier, so a step chart can start at the held value. */
15972
+ before: object({
15973
+ t: number(),
15974
+ value: number().nullable()
15975
+ }).nullable(),
15976
+ points: array(QueryPointSchema).readonly()
15977
+ });
15978
+ /** The window part of a query, shared by the device and node forms. */
15979
+ var QueryWindowShape = {
15980
+ key: string(),
15981
+ scope: string().optional(),
15982
+ from: number(),
15983
+ to: number(),
15984
+ resolution: union([DeviceHistoryResolutionSchema, literal("auto")]).default("auto"),
15985
+ maxPoints: number().int().positive().max(5e3).default(1e3)
15986
+ };
15987
+ var QueryResultSchema = object({
15988
+ resolution: DeviceHistoryResolutionSchema,
15989
+ series: array(QuerySeriesSchema).readonly(),
15990
+ truncated: boolean()
15991
+ });
15992
+ var TierStatusSchema = object({
15993
+ tier: DeviceHistoryResolutionSchema,
15994
+ /** `null` until the first background count answered. */
15995
+ rows: number().int().nullable(),
15996
+ /** `rows` times a fixed per-row estimate — approximate, labelled so. */
15997
+ approxBytes: number().nullable(),
15998
+ countedAt: number().nullable()
15999
+ });
16000
+ /** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
16001
+ var DeviceHistoryStatusSchema = object({
16002
+ startedAt: number(),
16003
+ /** The store is declared, series loaded and the first reconcile has answered. */
16004
+ ready: boolean(),
16005
+ series: number().int(),
16006
+ metrics: number().int(),
16007
+ optedOutDevices: number().int(),
16008
+ tiers: array(TierStatusSchema).readonly(),
16009
+ capture: object({
16010
+ eventsSeen: number().int(),
16011
+ pointsEmitted: number().int(),
16012
+ pointsWritten: number().int(),
16013
+ pointsDropped: number().int(),
16014
+ bufferDepth: number().int(),
16015
+ trailingEmitted: number().int(),
16016
+ reconciledPoints: number().int(),
16017
+ reconcileRuns: number().int(),
16018
+ reconcileFailures: number().int(),
16019
+ lastReconcileAt: number().nullable(),
16020
+ lastFlushAt: number().nullable(),
16021
+ flushFailures: number().int(),
16022
+ skipped: record(string(), number().int())
16023
+ }),
16024
+ ingest: object({
16025
+ accepted: number().int(),
16026
+ refused: record(string(), number().int())
16027
+ }),
16028
+ rollup: object({
16029
+ last5mAt: number().nullable(),
16030
+ last1hAt: number().nullable(),
16031
+ last1dAt: number().nullable(),
16032
+ errors: number().int(),
16033
+ dirty5m: number().int(),
16034
+ dirty1h: number().int(),
16035
+ dirty1d: number().int()
16036
+ }),
16037
+ retention: object({
16038
+ lastRunAt: number().nullable(),
16039
+ deleted: record(string(), number().int()),
16040
+ purgedSeries: number().int()
16041
+ }),
16042
+ directory: object({
16043
+ devices: number().int(),
16044
+ lastRefreshAt: number().nullable()
16045
+ })
16046
+ });
16047
+ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly()), method(object({ nodeId: string().min(1) }), array(SeriesInfoSchema).readonly(), { auth: "admin" }), method(object({
16048
+ deviceId: number().int(),
16049
+ ...QueryWindowShape
16050
+ }), QueryResultSchema), method(object({
16051
+ nodeId: string().min(1),
16052
+ ...QueryWindowShape
16053
+ }), QueryResultSchema, { auth: "admin" }), method(object({
16054
+ name: string().regex(/^[a-z0-9-]+$/),
16055
+ subjectKind: _enum(["device", "node"]),
16056
+ kind: DeviceHistoryKindSchema,
16057
+ unit: string().optional(),
16058
+ displayName: string().min(1),
16059
+ ingest: _enum(["points", "buckets"])
16060
+ }), object({ key: string() }), {
16061
+ kind: "mutation",
16062
+ auth: "admin"
16063
+ }), method(object({ points: array(object({
16064
+ key: string(),
16065
+ subject: DeviceHistorySubjectSchema,
16066
+ scope: string().default(""),
16067
+ ts: number(),
16068
+ value: number()
16069
+ })).max(5e3) }), IngestResultSchema, {
16070
+ kind: "mutation",
16071
+ auth: "admin"
16072
+ }), method(object({ buckets: array(object({
16073
+ key: string(),
16074
+ subject: DeviceHistorySubjectSchema,
16075
+ scope: string().default(""),
16076
+ bucketStart: number(),
16077
+ samples: number().int().positive(),
16078
+ sum: number(),
16079
+ min: number(),
16080
+ max: number(),
16081
+ last: number().nullable(),
16082
+ lastTs: number().nullable()
16083
+ })).max(5e3) }), IngestResultSchema, {
16084
+ kind: "mutation",
16085
+ auth: "admin"
16086
+ }), method(object({ deviceId: number().int() }), object({ enabled: boolean() })), method(object({
16087
+ deviceId: number().int(),
16088
+ enabled: boolean()
16089
+ }), object({ enabled: boolean() }), {
16090
+ kind: "mutation",
16091
+ auth: "admin"
16092
+ }), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" });
15891
16093
  var DeviceCaStatusSchema = discriminatedUnion("state", [
15892
16094
  object({ state: literal("absent") }),
15893
16095
  object({
@@ -55327,7 +55529,7 @@ var MotionOnMotionChangedDataSchema = object({
55327
55529
  /** Who started it (D672). Absent = the camera itself. Only `onboard` carries `sensor`. */
55328
55530
  triggeredBy: MotionTriggeredBySchema.optional()
55329
55531
  });
55330
- DeviceType.Camera, DeviceType.Sensor, method(object({ deviceId: number() }), boolean());
55532
+ DeviceType.Camera, DeviceType.Sensor, method(object({ deviceId: number() }), boolean()), DeviceType.Camera;
55331
55533
  object({
55332
55534
  enabled: boolean(),
55333
55535
  /** Ms epoch of the last operator-driven change. */
@@ -63062,6 +63264,66 @@ Object.freeze({
63062
63264
  addonId: null,
63063
63265
  access: "create"
63064
63266
  },
63267
+ "deviceHistory.declareSeries": {
63268
+ capName: "device-history",
63269
+ capScope: "system",
63270
+ addonId: null,
63271
+ access: "create"
63272
+ },
63273
+ "deviceHistory.getDeviceEnabled": {
63274
+ capName: "device-history",
63275
+ capScope: "system",
63276
+ addonId: null,
63277
+ access: "view"
63278
+ },
63279
+ "deviceHistory.getStatus": {
63280
+ capName: "device-history",
63281
+ capScope: "system",
63282
+ addonId: null,
63283
+ access: "view"
63284
+ },
63285
+ "deviceHistory.listNodeSeries": {
63286
+ capName: "device-history",
63287
+ capScope: "system",
63288
+ addonId: null,
63289
+ access: "view"
63290
+ },
63291
+ "deviceHistory.listSeries": {
63292
+ capName: "device-history",
63293
+ capScope: "system",
63294
+ addonId: null,
63295
+ access: "view"
63296
+ },
63297
+ "deviceHistory.query": {
63298
+ capName: "device-history",
63299
+ capScope: "system",
63300
+ addonId: null,
63301
+ access: "view"
63302
+ },
63303
+ "deviceHistory.queryNode": {
63304
+ capName: "device-history",
63305
+ capScope: "system",
63306
+ addonId: null,
63307
+ access: "view"
63308
+ },
63309
+ "deviceHistory.record": {
63310
+ capName: "device-history",
63311
+ capScope: "system",
63312
+ addonId: null,
63313
+ access: "create"
63314
+ },
63315
+ "deviceHistory.recordBuckets": {
63316
+ capName: "device-history",
63317
+ capScope: "system",
63318
+ addonId: null,
63319
+ access: "create"
63320
+ },
63321
+ "deviceHistory.setDeviceEnabled": {
63322
+ capName: "device-history",
63323
+ capScope: "system",
63324
+ addonId: null,
63325
+ access: "create"
63326
+ },
63065
63327
  "deviceManager.addLocation": {
63066
63328
  capName: "device-manager",
63067
63329
  capScope: "system",
@@ -69853,6 +70115,26 @@ Object.freeze({
69853
70115
  form: "single",
69854
70116
  optional: false
69855
70117
  }],
70118
+ "deviceHistory.getDeviceEnabled": [{
70119
+ name: "deviceId",
70120
+ form: "single",
70121
+ optional: false
70122
+ }],
70123
+ "deviceHistory.listSeries": [{
70124
+ name: "deviceId",
70125
+ form: "single",
70126
+ optional: false
70127
+ }],
70128
+ "deviceHistory.query": [{
70129
+ name: "deviceId",
70130
+ form: "single",
70131
+ optional: false
70132
+ }],
70133
+ "deviceHistory.setDeviceEnabled": [{
70134
+ name: "deviceId",
70135
+ form: "single",
70136
+ optional: false
70137
+ }],
69856
70138
  "deviceManager.adoptionRelease": [{
69857
70139
  name: "camDeviceId",
69858
70140
  form: "single",
@@ -72031,6 +72313,7 @@ Object.freeze({
72031
72313
  "network-access": "ingress",
72032
72314
  "smtp-provider": "email"
72033
72315
  });
72316
+ DeviceType.Camera;
72034
72317
  var G711_SCALE_CORRECTION_DB = {
72035
72318
  PCMU: 20 * Math.log10(4),
72036
72319
  PCMA: 20 * Math.log10(8)
@@ -73875,6 +74158,16 @@ Object.freeze({
73875
74158
  "pageSize": 50
73876
74159
  } },
73877
74160
  "device-credentials": { "listDeviceCredentials": { "includeRevoked": false } },
74161
+ "device-history": {
74162
+ "query": {
74163
+ "resolution": "auto",
74164
+ "maxPoints": 1e3
74165
+ },
74166
+ "queryNode": {
74167
+ "resolution": "auto",
74168
+ "maxPoints": 1e3
74169
+ }
74170
+ },
73878
74171
  "device-manager": { "adoptionListCandidates": {
73879
74172
  "page": 1,
73880
74173
  "pageSize": 50
package/dist/index.mjs CHANGED
@@ -5386,7 +5386,7 @@ var ZodIssueCode = {
5386
5386
  var ZodFirstPartyTypeKind;
5387
5387
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5388
5388
  //#endregion
5389
- //#region ../types/dist/sleep-BBF1iXUi.mjs
5389
+ //#region ../types/dist/sleep--g-h2_c_.mjs
5390
5390
  /**
5391
5391
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5392
5392
  * window to float samples (D455).
@@ -15884,6 +15884,208 @@ method(object({
15884
15884
  kind: "mutation",
15885
15885
  auth: "admin"
15886
15886
  }), method(object({}), array(KeychainSecretMetaSchema).readonly(), { auth: "admin" }), method(object({}), KeychainStateSchema, { auth: "admin" });
15887
+ /**
15888
+ * device-history — the ONE mechanism for numeric history (D850).
15889
+ *
15890
+ * A device value is recorded because its capability says so (the `history`
15891
+ * block of a `*.cap.ts`, captured hub-side from `DeviceStateChanged`); any
15892
+ * other series is DECLARED by the addon that produces it and fed with points
15893
+ * (`record`) or closed five-minute buckets (`recordBuckets`). Rollups 5m / 1h /
15894
+ * 1d are computed here and nowhere else. Storage is `history.db` (D851).
15895
+ *
15896
+ * Who the PRODUCER is: `declareSeries`, `record` and `recordBuckets` are owner
15897
+ * checked against the `callerAddonId` the transport stamps into a call that
15898
+ * crossed a process (never in an input schema, so a session cannot supply it).
15899
+ * A call with no stamp is refused `not-owner`. The methods are `admin` so a
15900
+ * non-admin session never reaches them; an addon's `ctx.api` call bypasses the
15901
+ * tier by design.
15902
+ */
15903
+ /** Whose history: a real device, or a cluster node (load, memory). */
15904
+ var DeviceHistorySubjectSchema = discriminatedUnion("kind", [object({
15905
+ kind: literal("device"),
15906
+ deviceId: number().int()
15907
+ }), object({
15908
+ kind: literal("node"),
15909
+ nodeId: string().min(1)
15910
+ })]);
15911
+ var DeviceHistoryKindSchema = _enum([
15912
+ "gauge",
15913
+ "counter",
15914
+ "boolean"
15915
+ ]);
15916
+ var DeviceHistoryResolutionSchema = _enum([
15917
+ "raw",
15918
+ "5m",
15919
+ "1h",
15920
+ "1d"
15921
+ ]);
15922
+ /** Why a producer's point or bucket was not stored. Counted, never silent (D391). */
15923
+ var DeviceHistoryRefusalReasonSchema = _enum([
15924
+ "undeclared",
15925
+ "not-owner",
15926
+ "opted-out",
15927
+ "not-a-real-device",
15928
+ "rate",
15929
+ "ingest-mismatch",
15930
+ "out-of-range"
15931
+ ]);
15932
+ var RefusalSchema = object({
15933
+ key: string(),
15934
+ reason: DeviceHistoryRefusalReasonSchema,
15935
+ count: number().int()
15936
+ });
15937
+ var IngestResultSchema = object({
15938
+ accepted: number().int(),
15939
+ refused: array(RefusalSchema).readonly()
15940
+ });
15941
+ var SeriesInfoSchema = object({
15942
+ key: string(),
15943
+ scope: string(),
15944
+ kind: DeviceHistoryKindSchema,
15945
+ /** `null` is unknown (a `unitFrom` series whose device does not state a unit right now), never a guess. */
15946
+ unit: string().nullable(),
15947
+ displayName: string(),
15948
+ source: _enum(["cap", "addon"]),
15949
+ firstTs: number(),
15950
+ lastTs: number()
15951
+ });
15952
+ var QueryPointSchema = object({
15953
+ /** Raw: the point's time. Rollup: the bucket start. */
15954
+ t: number(),
15955
+ samples: number().int(),
15956
+ /** `sum / samples`. */
15957
+ mean: number().nullable(),
15958
+ /** Time-weighted mean (`tw_sum / tw_ms`); `null` for bucket-ingested series. For a boolean: the fraction of time true. */
15959
+ twMean: number().nullable(),
15960
+ min: number(),
15961
+ max: number(),
15962
+ /** `null` is unknown, never zero (D393). */
15963
+ last: number().nullable()
15964
+ });
15965
+ var QuerySeriesSchema = object({
15966
+ scope: string(),
15967
+ /** The last point STRICTLY BEFORE `from` in the chosen tier, so a step chart can start at the held value. */
15968
+ before: object({
15969
+ t: number(),
15970
+ value: number().nullable()
15971
+ }).nullable(),
15972
+ points: array(QueryPointSchema).readonly()
15973
+ });
15974
+ /** The window part of a query, shared by the device and node forms. */
15975
+ var QueryWindowShape = {
15976
+ key: string(),
15977
+ scope: string().optional(),
15978
+ from: number(),
15979
+ to: number(),
15980
+ resolution: union([DeviceHistoryResolutionSchema, literal("auto")]).default("auto"),
15981
+ maxPoints: number().int().positive().max(5e3).default(1e3)
15982
+ };
15983
+ var QueryResultSchema = object({
15984
+ resolution: DeviceHistoryResolutionSchema,
15985
+ series: array(QuerySeriesSchema).readonly(),
15986
+ truncated: boolean()
15987
+ });
15988
+ var TierStatusSchema = object({
15989
+ tier: DeviceHistoryResolutionSchema,
15990
+ /** `null` until the first background count answered. */
15991
+ rows: number().int().nullable(),
15992
+ /** `rows` times a fixed per-row estimate — approximate, labelled so. */
15993
+ approxBytes: number().nullable(),
15994
+ countedAt: number().nullable()
15995
+ });
15996
+ /** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
15997
+ var DeviceHistoryStatusSchema = object({
15998
+ startedAt: number(),
15999
+ /** The store is declared, series loaded and the first reconcile has answered. */
16000
+ ready: boolean(),
16001
+ series: number().int(),
16002
+ metrics: number().int(),
16003
+ optedOutDevices: number().int(),
16004
+ tiers: array(TierStatusSchema).readonly(),
16005
+ capture: object({
16006
+ eventsSeen: number().int(),
16007
+ pointsEmitted: number().int(),
16008
+ pointsWritten: number().int(),
16009
+ pointsDropped: number().int(),
16010
+ bufferDepth: number().int(),
16011
+ trailingEmitted: number().int(),
16012
+ reconciledPoints: number().int(),
16013
+ reconcileRuns: number().int(),
16014
+ reconcileFailures: number().int(),
16015
+ lastReconcileAt: number().nullable(),
16016
+ lastFlushAt: number().nullable(),
16017
+ flushFailures: number().int(),
16018
+ skipped: record(string(), number().int())
16019
+ }),
16020
+ ingest: object({
16021
+ accepted: number().int(),
16022
+ refused: record(string(), number().int())
16023
+ }),
16024
+ rollup: object({
16025
+ last5mAt: number().nullable(),
16026
+ last1hAt: number().nullable(),
16027
+ last1dAt: number().nullable(),
16028
+ errors: number().int(),
16029
+ dirty5m: number().int(),
16030
+ dirty1h: number().int(),
16031
+ dirty1d: number().int()
16032
+ }),
16033
+ retention: object({
16034
+ lastRunAt: number().nullable(),
16035
+ deleted: record(string(), number().int()),
16036
+ purgedSeries: number().int()
16037
+ }),
16038
+ directory: object({
16039
+ devices: number().int(),
16040
+ lastRefreshAt: number().nullable()
16041
+ })
16042
+ });
16043
+ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly()), method(object({ nodeId: string().min(1) }), array(SeriesInfoSchema).readonly(), { auth: "admin" }), method(object({
16044
+ deviceId: number().int(),
16045
+ ...QueryWindowShape
16046
+ }), QueryResultSchema), method(object({
16047
+ nodeId: string().min(1),
16048
+ ...QueryWindowShape
16049
+ }), QueryResultSchema, { auth: "admin" }), method(object({
16050
+ name: string().regex(/^[a-z0-9-]+$/),
16051
+ subjectKind: _enum(["device", "node"]),
16052
+ kind: DeviceHistoryKindSchema,
16053
+ unit: string().optional(),
16054
+ displayName: string().min(1),
16055
+ ingest: _enum(["points", "buckets"])
16056
+ }), object({ key: string() }), {
16057
+ kind: "mutation",
16058
+ auth: "admin"
16059
+ }), method(object({ points: array(object({
16060
+ key: string(),
16061
+ subject: DeviceHistorySubjectSchema,
16062
+ scope: string().default(""),
16063
+ ts: number(),
16064
+ value: number()
16065
+ })).max(5e3) }), IngestResultSchema, {
16066
+ kind: "mutation",
16067
+ auth: "admin"
16068
+ }), method(object({ buckets: array(object({
16069
+ key: string(),
16070
+ subject: DeviceHistorySubjectSchema,
16071
+ scope: string().default(""),
16072
+ bucketStart: number(),
16073
+ samples: number().int().positive(),
16074
+ sum: number(),
16075
+ min: number(),
16076
+ max: number(),
16077
+ last: number().nullable(),
16078
+ lastTs: number().nullable()
16079
+ })).max(5e3) }), IngestResultSchema, {
16080
+ kind: "mutation",
16081
+ auth: "admin"
16082
+ }), method(object({ deviceId: number().int() }), object({ enabled: boolean() })), method(object({
16083
+ deviceId: number().int(),
16084
+ enabled: boolean()
16085
+ }), object({ enabled: boolean() }), {
16086
+ kind: "mutation",
16087
+ auth: "admin"
16088
+ }), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" });
15887
16089
  var DeviceCaStatusSchema = discriminatedUnion("state", [
15888
16090
  object({ state: literal("absent") }),
15889
16091
  object({
@@ -55323,7 +55525,7 @@ var MotionOnMotionChangedDataSchema = object({
55323
55525
  /** Who started it (D672). Absent = the camera itself. Only `onboard` carries `sensor`. */
55324
55526
  triggeredBy: MotionTriggeredBySchema.optional()
55325
55527
  });
55326
- DeviceType.Camera, DeviceType.Sensor, method(object({ deviceId: number() }), boolean());
55528
+ DeviceType.Camera, DeviceType.Sensor, method(object({ deviceId: number() }), boolean()), DeviceType.Camera;
55327
55529
  object({
55328
55530
  enabled: boolean(),
55329
55531
  /** Ms epoch of the last operator-driven change. */
@@ -63058,6 +63260,66 @@ Object.freeze({
63058
63260
  addonId: null,
63059
63261
  access: "create"
63060
63262
  },
63263
+ "deviceHistory.declareSeries": {
63264
+ capName: "device-history",
63265
+ capScope: "system",
63266
+ addonId: null,
63267
+ access: "create"
63268
+ },
63269
+ "deviceHistory.getDeviceEnabled": {
63270
+ capName: "device-history",
63271
+ capScope: "system",
63272
+ addonId: null,
63273
+ access: "view"
63274
+ },
63275
+ "deviceHistory.getStatus": {
63276
+ capName: "device-history",
63277
+ capScope: "system",
63278
+ addonId: null,
63279
+ access: "view"
63280
+ },
63281
+ "deviceHistory.listNodeSeries": {
63282
+ capName: "device-history",
63283
+ capScope: "system",
63284
+ addonId: null,
63285
+ access: "view"
63286
+ },
63287
+ "deviceHistory.listSeries": {
63288
+ capName: "device-history",
63289
+ capScope: "system",
63290
+ addonId: null,
63291
+ access: "view"
63292
+ },
63293
+ "deviceHistory.query": {
63294
+ capName: "device-history",
63295
+ capScope: "system",
63296
+ addonId: null,
63297
+ access: "view"
63298
+ },
63299
+ "deviceHistory.queryNode": {
63300
+ capName: "device-history",
63301
+ capScope: "system",
63302
+ addonId: null,
63303
+ access: "view"
63304
+ },
63305
+ "deviceHistory.record": {
63306
+ capName: "device-history",
63307
+ capScope: "system",
63308
+ addonId: null,
63309
+ access: "create"
63310
+ },
63311
+ "deviceHistory.recordBuckets": {
63312
+ capName: "device-history",
63313
+ capScope: "system",
63314
+ addonId: null,
63315
+ access: "create"
63316
+ },
63317
+ "deviceHistory.setDeviceEnabled": {
63318
+ capName: "device-history",
63319
+ capScope: "system",
63320
+ addonId: null,
63321
+ access: "create"
63322
+ },
63061
63323
  "deviceManager.addLocation": {
63062
63324
  capName: "device-manager",
63063
63325
  capScope: "system",
@@ -69849,6 +70111,26 @@ Object.freeze({
69849
70111
  form: "single",
69850
70112
  optional: false
69851
70113
  }],
70114
+ "deviceHistory.getDeviceEnabled": [{
70115
+ name: "deviceId",
70116
+ form: "single",
70117
+ optional: false
70118
+ }],
70119
+ "deviceHistory.listSeries": [{
70120
+ name: "deviceId",
70121
+ form: "single",
70122
+ optional: false
70123
+ }],
70124
+ "deviceHistory.query": [{
70125
+ name: "deviceId",
70126
+ form: "single",
70127
+ optional: false
70128
+ }],
70129
+ "deviceHistory.setDeviceEnabled": [{
70130
+ name: "deviceId",
70131
+ form: "single",
70132
+ optional: false
70133
+ }],
69852
70134
  "deviceManager.adoptionRelease": [{
69853
70135
  name: "camDeviceId",
69854
70136
  form: "single",
@@ -72027,6 +72309,7 @@ Object.freeze({
72027
72309
  "network-access": "ingress",
72028
72310
  "smtp-provider": "email"
72029
72311
  });
72312
+ DeviceType.Camera;
72030
72313
  var G711_SCALE_CORRECTION_DB = {
72031
72314
  PCMU: 20 * Math.log10(4),
72032
72315
  PCMA: 20 * Math.log10(8)
@@ -73871,6 +74154,16 @@ Object.freeze({
73871
74154
  "pageSize": 50
73872
74155
  } },
73873
74156
  "device-credentials": { "listDeviceCredentials": { "includeRevoked": false } },
74157
+ "device-history": {
74158
+ "query": {
74159
+ "resolution": "auto",
74160
+ "maxPoints": 1e3
74161
+ },
74162
+ "queryNode": {
74163
+ "resolution": "auto",
74164
+ "maxPoints": 1e3
74165
+ }
74166
+ },
73874
74167
  "device-manager": { "adoptionListCandidates": {
73875
74168
  "page": 1,
73876
74169
  "pageSize": 50
@@ -1,5 +1,5 @@
1
1
  import { b as e, g as t, l as n, u as r } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-BbmIfQSr.mjs";
2
- import { f as i, p as a } from "./responsive-CvsGDf2k.mjs";
2
+ import { f as i, p as a } from "./responsive-Hqunukz5.mjs";
3
3
  import { n as o, r as s, t as c } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DalfdIDw.mjs";
4
4
  var l = a("chevron-down", [["path", {
5
5
  d: "m6 9 6 6 6-6",
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-BlUDCAK-.mjs";
1
+ import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-D4ppKOBm.mjs";
2
2
  export { t as get, e as init };