@camstack/addon-model-studio 1.1.251 → 1.1.253

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 (19) hide show
  1. package/dist/{MotionZonesSettings-DMyPH8E4.mjs → MotionZonesSettings-CDQwRCoT.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-CH3Urgiy.mjs → PrivacyMaskSettings-Bqjt6j-n.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-GV1CGdIE.mjs → SceneMonitorEditor-CSttF4Hq.mjs} +3 -3
  4. package/dist/_stub.js +17 -17
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-CSMSc3Ys.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-DbOwI3GM.mjs} +3 -3
  6. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CW7-7FqB.mjs +26 -0
  7. package/dist/addon-model-studio.css +1 -1
  8. package/dist/{hostInit-BaLb2Wko.mjs → hostInit-BB7TluF5.mjs} +2 -2
  9. package/dist/model-studio.addon.js +326 -16
  10. package/dist/model-studio.addon.mjs +326 -16
  11. package/dist/{player-overlays-Dtr3bp2U.mjs → player-overlays-D3nGwf3m.mjs} +1 -1
  12. package/dist/remoteEntry.js +1 -1
  13. package/dist/{responsive-DS5SbGGI.mjs → responsive-DyGAg9qU.mjs} +1 -1
  14. package/dist/{scene-monitor-copy-Bw7fLt-W.mjs → scene-monitor-copy-CIw9oZTb.mjs} +1 -1
  15. package/dist/{square-BMH94K96.mjs → square-DqVANN3Q.mjs} +1 -1
  16. package/dist/{trash-2-CMXPv4YN.mjs → trash-2-CQbGsv9O.mjs} +1 -1
  17. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-DO4z1s82.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CzgQrlk5.mjs} +1 -1
  18. package/package.json +1 -1
  19. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BYQ2rfWg.mjs +0 -26
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.352",
39
+ version: "1.2.359",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  singleton: !0,
@@ -81,7 +81,7 @@ async function r() {
81
81
  }
82
82
  },
83
83
  "@camstack/ui-library": {
84
- version: "1.2.281",
84
+ version: "1.2.283",
85
85
  scope: "default",
86
86
  shareConfig: {
87
87
  singleton: !0,
@@ -394,7 +394,7 @@ function buildScryptedRegistryDescriptor(entry) {
394
394
  };
395
395
  }
396
396
  //#endregion
397
- //#region ../types/dist/event-category-DaIZi00R.mjs
397
+ //#region ../types/dist/event-category-C4hVnRo8.mjs
398
398
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
399
399
  EventCategory["SystemBoot"] = "system.boot";
400
400
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -613,7 +613,17 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
613
613
  EventCategory["RecordingStopped"] = "recording.stopped";
614
614
  EventCategory["RecordingError"] = "recording.error";
615
615
  EventCategory["RecordingHealthDegraded"] = "recording.health.degraded";
616
+ /** Recording enabled but no segment finalized for the NC stall window. */
617
+ EventCategory["RecordingHealthStalled"] = "recording.health.stalled";
618
+ /** Recovery from {@link RecordingHealthStalled}. */
619
+ EventCategory["RecordingHealthOk"] = "recording.health.ok";
616
620
  EventCategory["RecordingStorageCritical"] = "recording.storage.critical";
621
+ /** Free space on a storage location crossed the warn bar. */
622
+ EventCategory["StorageLocationLow"] = "storage.location.low";
623
+ /** Free space at/under the critical bar, or capacity probe failed (`null`). */
624
+ EventCategory["StorageLocationCritical"] = "storage.location.critical";
625
+ /** Recovery from low/critical on a storage location. */
626
+ EventCategory["StorageLocationOk"] = "storage.location.ok";
617
627
  EventCategory["RecordingSegmentWritten"] = "recording.segment.written";
618
628
  EventCategory["RecordingPolicyFallback"] = "recording.policy.fallback";
619
629
  EventCategory["RecordingRetentionCompleted"] = "recording.retention.completed";
@@ -5772,7 +5782,7 @@ var ZodIssueCode = {
5772
5782
  var ZodFirstPartyTypeKind;
5773
5783
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5774
5784
  //#endregion
5775
- //#region ../types/dist/sleep-DwAQ9sqX.mjs
5785
+ //#region ../types/dist/sleep-BBF1iXUi.mjs
5776
5786
  /**
5777
5787
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5778
5788
  * window to float samples (D455).
@@ -8374,6 +8384,21 @@ var ProfileRtspEntrySchema = object({
8374
8384
  resolution: CamStreamResolutionSchema.optional()
8375
8385
  });
8376
8386
  /**
8387
+ * The model weight formats a catalog entry can ship. Schema-free on purpose:
8388
+ * `types/models.ts` builds Zod schemas from it, but a runner-closure consumer
8389
+ * (the model downloader in `@camstack/system`) needs only the list and must
8390
+ * reach it through `@camstack/types/addon` without building the cap schema
8391
+ * graph (D28).
8392
+ */
8393
+ var MODEL_FORMATS = [
8394
+ "onnx",
8395
+ "coreml",
8396
+ "openvino",
8397
+ "tflite",
8398
+ "pt",
8399
+ "gguf"
8400
+ ];
8401
+ /**
8377
8402
  * Per-call node pinning for `ctx.api` capability calls.
8378
8403
  *
8379
8404
  * A capability call normally resolves to its DEFAULT provider — a `singleton`
@@ -8927,7 +8952,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
8927
8952
  return DeviceRole;
8928
8953
  }({});
8929
8954
  //#endregion
8930
- //#region ../types/dist/composition-Bzr7GwgP.mjs
8955
+ //#region ../types/dist/composition-C-WpVYTX.mjs
8931
8956
  /**
8932
8957
  * The ffmpeg build every CamStack node downloads, per platform and arch.
8933
8958
  *
@@ -8979,7 +9004,7 @@ var BASE = `https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v${FFM
8979
9004
  function portable(target) {
8980
9005
  return `${BASE}/jellyfin-ffmpeg_${FFMPEG_RELEASE}_portable_${target}-gpl.tar.xz`;
8981
9006
  }
8982
- portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64");
9007
+ portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64"), `${BASE}${FFMPEG_RELEASE}`;
8983
9008
  /**
8984
9009
  * THE table "which boolean of this device type counts as HIGH", and the
8985
9010
  * pure evaluator of its EDGE.
@@ -10554,6 +10579,15 @@ discriminatedUnion("type", [
10554
10579
  message: string()
10555
10580
  })
10556
10581
  ]);
10582
+ /** Every status, in the order a summary lists them. */
10583
+ var RETRAIN_REVIEW_STATUSES = [
10584
+ "unchanged",
10585
+ "adjusted",
10586
+ "reclassified",
10587
+ "added",
10588
+ "removed",
10589
+ "model-error"
10590
+ ];
10557
10591
  /**
10558
10592
  * What the gate decided about a birth, from the CALLER's point of view.
10559
10593
  *
@@ -12296,14 +12330,6 @@ function deriveRootSupplies(labels, classMap) {
12296
12330
  }
12297
12331
  return supplies;
12298
12332
  }
12299
- var MODEL_FORMATS = [
12300
- "onnx",
12301
- "coreml",
12302
- "openvino",
12303
- "tflite",
12304
- "pt",
12305
- "gguf"
12306
- ];
12307
12333
  /**
12308
12334
  * Multi-file format payload.
12309
12335
  *
@@ -14481,6 +14507,16 @@ var BrokerClientsSchema = object({
14481
14507
  /** Total encoded + raw-RTP callback subscriber count (sum of `encoded[].length`). */
14482
14508
  encodedSubscribers: number()
14483
14509
  });
14510
+ /**
14511
+ * How many people are watching one camera LIVE right now — see
14512
+ * `getLiveViewerCounts`. A camera with nobody watching is absent from the list
14513
+ * (so `viewers` is always at least 1): the listing carries the cameras that
14514
+ * have viewers, never a row of zeros.
14515
+ */
14516
+ var LiveViewerCountSchema = object({
14517
+ deviceId: number().int().nonnegative(),
14518
+ viewers: number().int().positive()
14519
+ });
14484
14520
  _enum([
14485
14521
  "reconnecting",
14486
14522
  "sleeping",
@@ -14841,7 +14877,7 @@ method(object({
14841
14877
  }), {
14842
14878
  kind: "mutation",
14843
14879
  auth: "admin"
14844
- }), method(object({ brokerId: string() }), BrokerClientsSchema), method(object({
14880
+ }), method(object({ brokerId: string() }), BrokerClientsSchema), method(_void(), array(LiveViewerCountSchema).readonly()), method(object({
14845
14881
  brokerId: string(),
14846
14882
  channel: _enum(["rtsp", "audio"]),
14847
14883
  handle: string()
@@ -15817,6 +15853,38 @@ var BulkRecordSchema = object({
15817
15853
  data: record(string(), unknown())
15818
15854
  });
15819
15855
  /**
15856
+ * One write inside a {@link settingsStoreCapability.methods.transact} call.
15857
+ * Only the three that a "replace this set, bump that revision" write needs.
15858
+ */
15859
+ var TransactOpSchema = discriminatedUnion("op", [
15860
+ object({
15861
+ op: literal("deleteWhere"),
15862
+ collection: string(),
15863
+ filter: MutationFilterSchema
15864
+ }),
15865
+ object({
15866
+ op: literal("insertMany"),
15867
+ collection: string(),
15868
+ records: array(BulkRecordSchema).readonly()
15869
+ }),
15870
+ object({
15871
+ op: literal("update"),
15872
+ collection: string(),
15873
+ id: string(),
15874
+ data: record(string(), unknown())
15875
+ })
15876
+ ]);
15877
+ /**
15878
+ * The precondition of a transaction: the row `key` of `collection` must hold
15879
+ * `equals` in `column`, read INSIDE the transaction.
15880
+ */
15881
+ var TransactGuardSchema = object({
15882
+ collection: string(),
15883
+ key: string(),
15884
+ column: string(),
15885
+ equals: unknown()
15886
+ });
15887
+ /**
15820
15888
  * Column declaration for a structured (SQL-backed) collection.
15821
15889
  *
15822
15890
  * Logical types — the backend translates each to the matching SQLite
@@ -15907,6 +15975,16 @@ id: union([string(), number()]) }), {
15907
15975
  }), object({ inserted: number().int() }), {
15908
15976
  kind: "mutation",
15909
15977
  auth: "admin"
15978
+ }), method(object({
15979
+ namespace: string().optional(),
15980
+ guard: TransactGuardSchema.optional(),
15981
+ ops: array(TransactOpSchema).readonly()
15982
+ }), object({
15983
+ applied: boolean(),
15984
+ current: unknown().optional()
15985
+ }), {
15986
+ kind: "mutation",
15987
+ auth: "admin"
15910
15988
  }), method(object({
15911
15989
  namespace: string().optional(),
15912
15990
  collection: string(),
@@ -16055,6 +16133,16 @@ id: union([string(), number()]) }), {
16055
16133
  }), object({ inserted: number().int() }), {
16056
16134
  kind: "mutation",
16057
16135
  auth: "admin"
16136
+ }), method(object({
16137
+ namespace: string().optional(),
16138
+ guard: TransactGuardSchema.optional(),
16139
+ ops: array(TransactOpSchema).readonly()
16140
+ }), object({
16141
+ applied: boolean(),
16142
+ current: unknown().optional()
16143
+ }), {
16144
+ kind: "mutation",
16145
+ auth: "admin"
16058
16146
  }), method(object({
16059
16147
  namespace: string().optional(),
16060
16148
  collection: string(),
@@ -20812,6 +20900,12 @@ var NcSystemEventKindSchema = _enum([
20812
20900
  "node-updating",
20813
20901
  "node-inference-unavailable",
20814
20902
  "detection-blind",
20903
+ "recording-stalled",
20904
+ "recording-healthy",
20905
+ "recording-degraded",
20906
+ "storage-location-low",
20907
+ "storage-location-critical",
20908
+ "storage-location-ok",
20815
20909
  "addon-crash-loop",
20816
20910
  "addon-update-available",
20817
20911
  "server-update-available",
@@ -24467,6 +24561,55 @@ var RetrainBboxSchema = object({
24467
24561
  h: number()
24468
24562
  });
24469
24563
  /**
24564
+ * What a box LOOKED LIKE when it was offered, snapshotted at the moment the
24565
+ * operator accepted it. The saved row keeps only the final rectangle; this is
24566
+ * the other half of the pair, and the pair is what says whether the operator
24567
+ * accepted, nudged, relabelled or replaced a proposal (`retrain-review.ts`).
24568
+ *
24569
+ * `ref` names the proposal inside its frame: `pipeline:<trackId>` for a box the
24570
+ * live pipeline drew, `assist:<n>` for the n-th box of a detector or LLM run,
24571
+ * and anything unique for an operator-drawn box (`operator:<n>`). Re-derived
24572
+ * pipeline boxes carry the same ref every time, which is what lets a dismissal
24573
+ * stay dismissed.
24574
+ */
24575
+ var RetrainOriginSchema = object({
24576
+ source: RetrainAnnotationSourceSchema,
24577
+ ref: string().min(1),
24578
+ bbox: RetrainBboxSchema,
24579
+ macroClass: RetrainMacroClassSchema,
24580
+ label: string().optional(),
24581
+ score: number().optional(),
24582
+ modelId: string().optional()
24583
+ });
24584
+ /**
24585
+ * A proposal the operator deleted. Durable on the frame, so a deleted pipeline
24586
+ * box does not come back as a draft every time the frame is reopened, and so
24587
+ * the deletion itself is a recorded fact rather than an absence.
24588
+ */
24589
+ var RetrainDismissedSchema = object({
24590
+ ref: string().min(1),
24591
+ snapshot: RetrainOriginSchema
24592
+ });
24593
+ /** What the operator did with a proposal (see `retrain-review.ts`). */
24594
+ var RetrainReviewStatusSchema = _enum(RETRAIN_REVIEW_STATUSES);
24595
+ var RetrainFrameReviewSchema = object({
24596
+ boxes: array(object({
24597
+ ref: string(),
24598
+ savedId: string().optional(),
24599
+ status: RetrainReviewStatusSchema,
24600
+ /** The baseline was re-derived, not snapshotted (a pre-origin row). */
24601
+ approximate: boolean(),
24602
+ origin: RetrainOriginSchema.optional(),
24603
+ iou: number().optional()
24604
+ })).readonly(),
24605
+ summary: object({
24606
+ counts: record(RetrainReviewStatusSchema, number().int()),
24607
+ total: number().int(),
24608
+ changed: number().int(),
24609
+ approximate: boolean()
24610
+ })
24611
+ });
24612
+ /**
24470
24613
  * One annotated subject.
24471
24614
  *
24472
24615
  * `bbox` is normalised against the full frame, ALWAYS. The per-model shapes
@@ -24490,6 +24633,9 @@ var RetrainAnnotationSchema = object({
24490
24633
  /** Which model proposed this box — or, on a `model_error`, drew the phantom. */
24491
24634
  assistModelId: string().optional(),
24492
24635
  assistScore: number().optional(),
24636
+ /** The proposal this box started from, snapshotted at accept time. `null` on
24637
+ * a row saved before origins existed; absent on a draft nobody snapshotted. */
24638
+ origin: RetrainOriginSchema.nullable().optional(),
24493
24639
  exportedInBatch: string().optional(),
24494
24640
  createdAt: number()
24495
24641
  });
@@ -24582,7 +24728,19 @@ var RetrainFrameSchema = object({
24582
24728
  * empty when nothing the track store holds can be placed on it. */
24583
24729
  pipelineBoxes: array(RetrainPipelineBoxSchema).readonly().optional(),
24584
24730
  /** The named collections this frame belongs to. Present on list answers. */
24585
- collectionIds: array(string()).readonly().optional()
24731
+ collectionIds: array(string()).readonly().optional(),
24732
+ /** Bumped by every annotation save. A save that names a stale
24733
+ * `expectedRevision` is refused, so two surfaces cannot overwrite each other. */
24734
+ revision: number().int().optional(),
24735
+ /** Proposals the operator deleted — never re-seeded as drafts. */
24736
+ dismissed: array(RetrainDismissedSchema).readonly().optional(),
24737
+ /** What the operator did with the proposals, computed by the server. */
24738
+ review: RetrainFrameReviewSchema.optional(),
24739
+ /** The frame's pixels over the admin data plane (full size). Fetch with the
24740
+ * admin bearer token; relative to the hub root. */
24741
+ imageUrl: string().optional(),
24742
+ /** The same, as a ~480 px thumbnail for grids. */
24743
+ thumbnailUrl: string().optional()
24586
24744
  });
24587
24745
  /** Why a copy-on-select could not be honoured — named, never a silent skip. */
24588
24746
  var RetrainCopyRefusalSchema = _enum([
@@ -25661,10 +25819,33 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
25661
25819
  /** The frame's track, when it has one — checked against the frame. */
25662
25820
  trackId: string().optional(),
25663
25821
  frameId: string(),
25664
- annotations: array(RetrainAnnotationDraftSchema)
25822
+ annotations: array(RetrainAnnotationDraftSchema),
25823
+ /** The frame's `revision` the caller saw. A different current revision
25824
+ * refuses the save with a `retrain-revision-conflict` error
25825
+ * (`parseRetrainRevisionConflict`). Absent ⇒ last write wins. */
25826
+ expectedRevision: number().int().optional(),
25827
+ /** The proposals the operator deleted. Absent ⇒ keep the frame's
25828
+ * current set; present ⇒ replace it (an empty array un-dismisses). */
25829
+ dismissed: array(RetrainDismissedSchema).optional()
25665
25830
  }), array(RetrainAnnotationSchema).readonly(), {
25666
25831
  kind: "mutation",
25667
25832
  auth: "admin"
25833
+ }), method(object({
25834
+ deviceId: number(),
25835
+ trackId: string().optional(),
25836
+ frameId: string(),
25837
+ expectedRevision: number().int().optional(),
25838
+ origins: array(object({
25839
+ annotationId: string(),
25840
+ origin: RetrainOriginSchema
25841
+ })).min(1).max(500)
25842
+ }), object({
25843
+ updated: number().int(),
25844
+ skipped: number().int(),
25845
+ revision: number().int()
25846
+ }), {
25847
+ kind: "mutation",
25848
+ auth: "admin"
25668
25849
  }), method(object({
25669
25850
  deviceId: number(),
25670
25851
  trackId: string()
@@ -28280,6 +28461,12 @@ var CameraStepOverridePatchSchema = object({
28280
28461
  settings: record(string(), unknown()).readonly().optional()
28281
28462
  });
28282
28463
  var CameraStepSettingsSchema = record(string(), record(string(), unknown()).readonly());
28464
+ /** The three root-detector choices a camera has (D507: at most one root). */
28465
+ var CameraDetectionSourceSchema = _enum([
28466
+ "pipeline",
28467
+ "onboard",
28468
+ "none"
28469
+ ]);
28283
28470
  var CameraPipelineSettingsSchema = object({
28284
28471
  stepToggles: record(string(), boolean()).optional(),
28285
28472
  stepSettings: CameraStepSettingsSchema.optional(),
@@ -28857,6 +29044,26 @@ method(object({
28857
29044
  }), object({ success: literal(true) }), {
28858
29045
  kind: "mutation",
28859
29046
  auth: "admin"
29047
+ }), method(object({ deviceId: number() }), object({
29048
+ source: CameraDetectionSourceSchema,
29049
+ explicit: boolean(),
29050
+ onboard: object({
29051
+ /** The camera has an onboard detector this system can read. */
29052
+ available: boolean(),
29053
+ /** What its detections carry — a camera with no box cannot be a root step. */
29054
+ geometry: _enum([
29055
+ "boxed",
29056
+ "while-streaming",
29057
+ "flag-only",
29058
+ "unknown"
29059
+ ])
29060
+ })
29061
+ })), method(object({
29062
+ deviceId: number(),
29063
+ source: CameraDetectionSourceSchema
29064
+ }), object({ success: literal(true) }), {
29065
+ kind: "mutation",
29066
+ auth: "admin"
28860
29067
  }), method(object({ deviceId: number() }), record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).nullable()), method(object({
28861
29068
  deviceId: number(),
28862
29069
  agentNodeId: string(),
@@ -32188,6 +32395,17 @@ var BatteryStatusSchema = object({
32188
32395
  */
32189
32396
  lastContactAt: number().optional(),
32190
32397
  /**
32398
+ * Ms epoch of the last COMPLETE scheduled refresh — every fact the provider
32399
+ * holds for the device (level, charging, link, device info, state slices) and
32400
+ * its cached snapshot, read together. Absent = never since this slice was
32401
+ * born. Unlike `lastUpdated` (any write, even a push of one field) this is
32402
+ * the staleness an operator can trust: the provider owns the device fact and
32403
+ * so owns the window on its age (D224, D847). Not a clock in the
32404
+ * runtime-state-durability sense: it moves once per window and must survive
32405
+ * a restart, or every restart would owe the camera a wake.
32406
+ */
32407
+ lastFullRefreshAt: number().optional(),
32408
+ /**
32191
32409
  * True when the source is a BINARY low-battery indicator (HA
32192
32410
  * `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
32193
32411
  * charge level — `percentage` is then a coarse stand-in (100 = normal,
@@ -35403,7 +35621,14 @@ var TopologyNodeSchema = object({
35403
35621
  * completed a mutual-TLS handshake, `clear` otherwise. Absent for the hub,
35404
35622
  * for offline rows and when the hub cannot tell.
35405
35623
  */
35406
- meshTransport: _enum(["tls", "clear"]).optional()
35624
+ meshTransport: _enum(["tls", "clear"]).optional(),
35625
+ /**
35626
+ * Whether the hub holds this online AGENT's capability registration (its
35627
+ * `registerNode` manifest). `false` = online in the mesh but not ready: the
35628
+ * hub dropped the registration on a disconnect only it saw and the agent has
35629
+ * not re-sent it. Absent for the hub and offline rows.
35630
+ */
35631
+ capabilitiesRegistered: boolean().optional()
35407
35632
  });
35408
35633
  var CapUsageEdgeSchema = object({
35409
35634
  callerAddonId: string(),
@@ -42039,6 +42264,12 @@ Object.freeze({
42039
42264
  addonId: null,
42040
42265
  access: "create"
42041
42266
  },
42267
+ "dataStoreProvider.transact": {
42268
+ capName: "data-store-provider",
42269
+ capScope: "system",
42270
+ addonId: null,
42271
+ access: "create"
42272
+ },
42042
42273
  "dataStoreProvider.update": {
42043
42274
  capName: "data-store-provider",
42044
42275
  capScope: "system",
@@ -44883,6 +45114,12 @@ Object.freeze({
44883
45114
  addonId: null,
44884
45115
  access: "create"
44885
45116
  },
45117
+ "pipelineAnalytics.backfillRetrainOrigins": {
45118
+ capName: "pipeline-analytics",
45119
+ capScope: "device",
45120
+ addonId: null,
45121
+ access: "create"
45122
+ },
44886
45123
  "pipelineAnalytics.cancelRelocateMedia": {
44887
45124
  capName: "pipeline-analytics",
44888
45125
  capScope: "device",
@@ -45663,6 +45900,12 @@ Object.freeze({
45663
45900
  addonId: null,
45664
45901
  access: "view"
45665
45902
  },
45903
+ "pipelineOrchestrator.getCameraDetectionSource": {
45904
+ capName: "pipeline-orchestrator",
45905
+ capScope: "system",
45906
+ addonId: null,
45907
+ access: "view"
45908
+ },
45666
45909
  "pipelineOrchestrator.getCameraMetrics": {
45667
45910
  capName: "pipeline-orchestrator",
45668
45911
  capScope: "system",
@@ -45891,6 +46134,12 @@ Object.freeze({
45891
46134
  addonId: null,
45892
46135
  access: "create"
45893
46136
  },
46137
+ "pipelineOrchestrator.setCameraDetectionSource": {
46138
+ capName: "pipeline-orchestrator",
46139
+ capScope: "system",
46140
+ addonId: null,
46141
+ access: "create"
46142
+ },
45894
46143
  "pipelineOrchestrator.setCameraPipelineForAgent": {
45895
46144
  capName: "pipeline-orchestrator",
45896
46145
  capScope: "system",
@@ -46863,6 +47112,12 @@ Object.freeze({
46863
47112
  addonId: null,
46864
47113
  access: "create"
46865
47114
  },
47115
+ "settingsStore.transact": {
47116
+ capName: "settings-store",
47117
+ capScope: "system",
47118
+ addonId: null,
47119
+ access: "create"
47120
+ },
46866
47121
  "settingsStore.update": {
46867
47122
  capName: "settings-store",
46868
47123
  capScope: "system",
@@ -47343,6 +47598,12 @@ Object.freeze({
47343
47598
  addonId: null,
47344
47599
  access: "view"
47345
47600
  },
47601
+ "streamBroker.getLiveViewerCounts": {
47602
+ capName: "stream-broker",
47603
+ capScope: "system",
47604
+ addonId: null,
47605
+ access: "view"
47606
+ },
47346
47607
  "streamBroker.getPreBufferInfo": {
47347
47608
  capName: "stream-broker",
47348
47609
  capScope: "system",
@@ -51183,6 +51444,11 @@ Object.freeze({
51183
51444
  form: "single",
51184
51445
  optional: false
51185
51446
  }],
51447
+ "pipelineAnalytics.backfillRetrainOrigins": [{
51448
+ name: "deviceId",
51449
+ form: "single",
51450
+ optional: false
51451
+ }],
51186
51452
  "pipelineAnalytics.clearTrackRelation": [{
51187
51453
  name: "deviceId",
51188
51454
  form: "single",
@@ -51488,6 +51754,11 @@ Object.freeze({
51488
51754
  form: "single",
51489
51755
  optional: false
51490
51756
  }],
51757
+ "pipelineOrchestrator.getCameraDetectionSource": [{
51758
+ name: "deviceId",
51759
+ form: "single",
51760
+ optional: false
51761
+ }],
51491
51762
  "pipelineOrchestrator.getCameraMetrics": [{
51492
51763
  name: "deviceId",
51493
51764
  form: "single",
@@ -51548,6 +51819,11 @@ Object.freeze({
51548
51819
  form: "single",
51549
51820
  optional: false
51550
51821
  }],
51822
+ "pipelineOrchestrator.setCameraDetectionSource": [{
51823
+ name: "deviceId",
51824
+ form: "single",
51825
+ optional: false
51826
+ }],
51551
51827
  "pipelineOrchestrator.setCameraPipelineForAgent": [{
51552
51828
  name: "deviceId",
51553
51829
  form: "single",
@@ -52577,6 +52853,9 @@ new Map(Object.entries({
52577
52853
  "stream-online": "device-events",
52578
52854
  "stream-offline": "device-events",
52579
52855
  "detection-blind": "device-events",
52856
+ "recording-stalled": "device-events",
52857
+ "recording-healthy": "device-events",
52858
+ "recording-degraded": "device-events",
52580
52859
  "node-online": "system",
52581
52860
  "node-offline": "system",
52582
52861
  "node-restarting": "system",
@@ -52590,6 +52869,9 @@ new Map(Object.entries({
52590
52869
  "wrapper-update-available": "system",
52591
52870
  "backup-completed": "system",
52592
52871
  "export-completed": "system",
52872
+ "storage-location-low": "system",
52873
+ "storage-location-critical": "system",
52874
+ "storage-location-ok": "system",
52593
52875
  "alarm-triggered": "alarm",
52594
52876
  "alarm-armed": "alarm",
52595
52877
  "alarm-disarmed": "alarm",
@@ -52651,6 +52933,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
52651
52933
  label: "Detecting nothing",
52652
52934
  kinds: ["detection-blind"]
52653
52935
  },
52936
+ {
52937
+ id: "recording",
52938
+ family: "device-events",
52939
+ label: "Recording",
52940
+ kinds: [
52941
+ "recording-stalled",
52942
+ "recording-healthy",
52943
+ "recording-degraded"
52944
+ ]
52945
+ },
52654
52946
  {
52655
52947
  id: "nodes",
52656
52948
  family: "system",
@@ -52691,6 +52983,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
52691
52983
  label: "Backups & exports",
52692
52984
  kinds: ["backup-completed", "export-completed"]
52693
52985
  },
52986
+ {
52987
+ id: "storage",
52988
+ family: "system",
52989
+ label: "Storage locations",
52990
+ kinds: [
52991
+ "storage-location-low",
52992
+ "storage-location-critical",
52993
+ "storage-location-ok"
52994
+ ]
52995
+ },
52694
52996
  {
52695
52997
  id: "alarm",
52696
52998
  family: "alarm",
@@ -52773,6 +53075,9 @@ var DEVICE_EVENTS = [
52773
53075
  "stream-online",
52774
53076
  "stream-offline",
52775
53077
  "detection-blind",
53078
+ "recording-stalled",
53079
+ "recording-healthy",
53080
+ "recording-degraded",
52776
53081
  ...ALARM
52777
53082
  ];
52778
53083
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -52940,6 +53245,11 @@ var STATE_SUMMARY_VARS = [
52940
53245
  [...RULE_TEXT],
52941
53246
  [...RULE_TEXT],
52942
53247
  [...RULE_TEXT],
53248
+ [...RULE_TEXT],
53249
+ [...RULE_TEXT],
53250
+ [...RULE_TEXT],
53251
+ [...RULE_TEXT],
53252
+ [...RULE_TEXT],
52943
53253
  ([...RULE_TEXT], [...UPDATES]),
52944
53254
  ([...RULE_TEXT], [...PACKAGE_UPDATES]),
52945
53255
  ([...RULE_TEXT], [...PACKAGE_UPDATES]),