@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
@@ -368,7 +368,7 @@ function buildScryptedRegistryDescriptor(entry) {
368
368
  };
369
369
  }
370
370
  //#endregion
371
- //#region ../types/dist/event-category-DaIZi00R.mjs
371
+ //#region ../types/dist/event-category-C4hVnRo8.mjs
372
372
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
373
373
  EventCategory["SystemBoot"] = "system.boot";
374
374
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -587,7 +587,17 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
587
587
  EventCategory["RecordingStopped"] = "recording.stopped";
588
588
  EventCategory["RecordingError"] = "recording.error";
589
589
  EventCategory["RecordingHealthDegraded"] = "recording.health.degraded";
590
+ /** Recording enabled but no segment finalized for the NC stall window. */
591
+ EventCategory["RecordingHealthStalled"] = "recording.health.stalled";
592
+ /** Recovery from {@link RecordingHealthStalled}. */
593
+ EventCategory["RecordingHealthOk"] = "recording.health.ok";
590
594
  EventCategory["RecordingStorageCritical"] = "recording.storage.critical";
595
+ /** Free space on a storage location crossed the warn bar. */
596
+ EventCategory["StorageLocationLow"] = "storage.location.low";
597
+ /** Free space at/under the critical bar, or capacity probe failed (`null`). */
598
+ EventCategory["StorageLocationCritical"] = "storage.location.critical";
599
+ /** Recovery from low/critical on a storage location. */
600
+ EventCategory["StorageLocationOk"] = "storage.location.ok";
591
601
  EventCategory["RecordingSegmentWritten"] = "recording.segment.written";
592
602
  EventCategory["RecordingPolicyFallback"] = "recording.policy.fallback";
593
603
  EventCategory["RecordingRetentionCompleted"] = "recording.retention.completed";
@@ -5746,7 +5756,7 @@ var ZodIssueCode = {
5746
5756
  var ZodFirstPartyTypeKind;
5747
5757
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5748
5758
  //#endregion
5749
- //#region ../types/dist/sleep-DwAQ9sqX.mjs
5759
+ //#region ../types/dist/sleep-BBF1iXUi.mjs
5750
5760
  /**
5751
5761
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5752
5762
  * window to float samples (D455).
@@ -8348,6 +8358,21 @@ var ProfileRtspEntrySchema = object({
8348
8358
  resolution: CamStreamResolutionSchema.optional()
8349
8359
  });
8350
8360
  /**
8361
+ * The model weight formats a catalog entry can ship. Schema-free on purpose:
8362
+ * `types/models.ts` builds Zod schemas from it, but a runner-closure consumer
8363
+ * (the model downloader in `@camstack/system`) needs only the list and must
8364
+ * reach it through `@camstack/types/addon` without building the cap schema
8365
+ * graph (D28).
8366
+ */
8367
+ var MODEL_FORMATS = [
8368
+ "onnx",
8369
+ "coreml",
8370
+ "openvino",
8371
+ "tflite",
8372
+ "pt",
8373
+ "gguf"
8374
+ ];
8375
+ /**
8351
8376
  * Per-call node pinning for `ctx.api` capability calls.
8352
8377
  *
8353
8378
  * A capability call normally resolves to its DEFAULT provider — a `singleton`
@@ -8901,7 +8926,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
8901
8926
  return DeviceRole;
8902
8927
  }({});
8903
8928
  //#endregion
8904
- //#region ../types/dist/composition-Bzr7GwgP.mjs
8929
+ //#region ../types/dist/composition-C-WpVYTX.mjs
8905
8930
  /**
8906
8931
  * The ffmpeg build every CamStack node downloads, per platform and arch.
8907
8932
  *
@@ -8953,7 +8978,7 @@ var BASE = `https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v${FFM
8953
8978
  function portable(target) {
8954
8979
  return `${BASE}/jellyfin-ffmpeg_${FFMPEG_RELEASE}_portable_${target}-gpl.tar.xz`;
8955
8980
  }
8956
- portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64");
8981
+ portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64"), `${BASE}${FFMPEG_RELEASE}`;
8957
8982
  /**
8958
8983
  * THE table "which boolean of this device type counts as HIGH", and the
8959
8984
  * pure evaluator of its EDGE.
@@ -10528,6 +10553,15 @@ discriminatedUnion("type", [
10528
10553
  message: string()
10529
10554
  })
10530
10555
  ]);
10556
+ /** Every status, in the order a summary lists them. */
10557
+ var RETRAIN_REVIEW_STATUSES = [
10558
+ "unchanged",
10559
+ "adjusted",
10560
+ "reclassified",
10561
+ "added",
10562
+ "removed",
10563
+ "model-error"
10564
+ ];
10531
10565
  /**
10532
10566
  * What the gate decided about a birth, from the CALLER's point of view.
10533
10567
  *
@@ -12270,14 +12304,6 @@ function deriveRootSupplies(labels, classMap) {
12270
12304
  }
12271
12305
  return supplies;
12272
12306
  }
12273
- var MODEL_FORMATS = [
12274
- "onnx",
12275
- "coreml",
12276
- "openvino",
12277
- "tflite",
12278
- "pt",
12279
- "gguf"
12280
- ];
12281
12307
  /**
12282
12308
  * Multi-file format payload.
12283
12309
  *
@@ -14455,6 +14481,16 @@ var BrokerClientsSchema = object({
14455
14481
  /** Total encoded + raw-RTP callback subscriber count (sum of `encoded[].length`). */
14456
14482
  encodedSubscribers: number()
14457
14483
  });
14484
+ /**
14485
+ * How many people are watching one camera LIVE right now — see
14486
+ * `getLiveViewerCounts`. A camera with nobody watching is absent from the list
14487
+ * (so `viewers` is always at least 1): the listing carries the cameras that
14488
+ * have viewers, never a row of zeros.
14489
+ */
14490
+ var LiveViewerCountSchema = object({
14491
+ deviceId: number().int().nonnegative(),
14492
+ viewers: number().int().positive()
14493
+ });
14458
14494
  _enum([
14459
14495
  "reconnecting",
14460
14496
  "sleeping",
@@ -14815,7 +14851,7 @@ method(object({
14815
14851
  }), {
14816
14852
  kind: "mutation",
14817
14853
  auth: "admin"
14818
- }), method(object({ brokerId: string() }), BrokerClientsSchema), method(object({
14854
+ }), method(object({ brokerId: string() }), BrokerClientsSchema), method(_void(), array(LiveViewerCountSchema).readonly()), method(object({
14819
14855
  brokerId: string(),
14820
14856
  channel: _enum(["rtsp", "audio"]),
14821
14857
  handle: string()
@@ -15791,6 +15827,38 @@ var BulkRecordSchema = object({
15791
15827
  data: record(string(), unknown())
15792
15828
  });
15793
15829
  /**
15830
+ * One write inside a {@link settingsStoreCapability.methods.transact} call.
15831
+ * Only the three that a "replace this set, bump that revision" write needs.
15832
+ */
15833
+ var TransactOpSchema = discriminatedUnion("op", [
15834
+ object({
15835
+ op: literal("deleteWhere"),
15836
+ collection: string(),
15837
+ filter: MutationFilterSchema
15838
+ }),
15839
+ object({
15840
+ op: literal("insertMany"),
15841
+ collection: string(),
15842
+ records: array(BulkRecordSchema).readonly()
15843
+ }),
15844
+ object({
15845
+ op: literal("update"),
15846
+ collection: string(),
15847
+ id: string(),
15848
+ data: record(string(), unknown())
15849
+ })
15850
+ ]);
15851
+ /**
15852
+ * The precondition of a transaction: the row `key` of `collection` must hold
15853
+ * `equals` in `column`, read INSIDE the transaction.
15854
+ */
15855
+ var TransactGuardSchema = object({
15856
+ collection: string(),
15857
+ key: string(),
15858
+ column: string(),
15859
+ equals: unknown()
15860
+ });
15861
+ /**
15794
15862
  * Column declaration for a structured (SQL-backed) collection.
15795
15863
  *
15796
15864
  * Logical types — the backend translates each to the matching SQLite
@@ -15881,6 +15949,16 @@ id: union([string(), number()]) }), {
15881
15949
  }), object({ inserted: number().int() }), {
15882
15950
  kind: "mutation",
15883
15951
  auth: "admin"
15952
+ }), method(object({
15953
+ namespace: string().optional(),
15954
+ guard: TransactGuardSchema.optional(),
15955
+ ops: array(TransactOpSchema).readonly()
15956
+ }), object({
15957
+ applied: boolean(),
15958
+ current: unknown().optional()
15959
+ }), {
15960
+ kind: "mutation",
15961
+ auth: "admin"
15884
15962
  }), method(object({
15885
15963
  namespace: string().optional(),
15886
15964
  collection: string(),
@@ -16029,6 +16107,16 @@ id: union([string(), number()]) }), {
16029
16107
  }), object({ inserted: number().int() }), {
16030
16108
  kind: "mutation",
16031
16109
  auth: "admin"
16110
+ }), method(object({
16111
+ namespace: string().optional(),
16112
+ guard: TransactGuardSchema.optional(),
16113
+ ops: array(TransactOpSchema).readonly()
16114
+ }), object({
16115
+ applied: boolean(),
16116
+ current: unknown().optional()
16117
+ }), {
16118
+ kind: "mutation",
16119
+ auth: "admin"
16032
16120
  }), method(object({
16033
16121
  namespace: string().optional(),
16034
16122
  collection: string(),
@@ -20786,6 +20874,12 @@ var NcSystemEventKindSchema = _enum([
20786
20874
  "node-updating",
20787
20875
  "node-inference-unavailable",
20788
20876
  "detection-blind",
20877
+ "recording-stalled",
20878
+ "recording-healthy",
20879
+ "recording-degraded",
20880
+ "storage-location-low",
20881
+ "storage-location-critical",
20882
+ "storage-location-ok",
20789
20883
  "addon-crash-loop",
20790
20884
  "addon-update-available",
20791
20885
  "server-update-available",
@@ -24441,6 +24535,55 @@ var RetrainBboxSchema = object({
24441
24535
  h: number()
24442
24536
  });
24443
24537
  /**
24538
+ * What a box LOOKED LIKE when it was offered, snapshotted at the moment the
24539
+ * operator accepted it. The saved row keeps only the final rectangle; this is
24540
+ * the other half of the pair, and the pair is what says whether the operator
24541
+ * accepted, nudged, relabelled or replaced a proposal (`retrain-review.ts`).
24542
+ *
24543
+ * `ref` names the proposal inside its frame: `pipeline:<trackId>` for a box the
24544
+ * live pipeline drew, `assist:<n>` for the n-th box of a detector or LLM run,
24545
+ * and anything unique for an operator-drawn box (`operator:<n>`). Re-derived
24546
+ * pipeline boxes carry the same ref every time, which is what lets a dismissal
24547
+ * stay dismissed.
24548
+ */
24549
+ var RetrainOriginSchema = object({
24550
+ source: RetrainAnnotationSourceSchema,
24551
+ ref: string().min(1),
24552
+ bbox: RetrainBboxSchema,
24553
+ macroClass: RetrainMacroClassSchema,
24554
+ label: string().optional(),
24555
+ score: number().optional(),
24556
+ modelId: string().optional()
24557
+ });
24558
+ /**
24559
+ * A proposal the operator deleted. Durable on the frame, so a deleted pipeline
24560
+ * box does not come back as a draft every time the frame is reopened, and so
24561
+ * the deletion itself is a recorded fact rather than an absence.
24562
+ */
24563
+ var RetrainDismissedSchema = object({
24564
+ ref: string().min(1),
24565
+ snapshot: RetrainOriginSchema
24566
+ });
24567
+ /** What the operator did with a proposal (see `retrain-review.ts`). */
24568
+ var RetrainReviewStatusSchema = _enum(RETRAIN_REVIEW_STATUSES);
24569
+ var RetrainFrameReviewSchema = object({
24570
+ boxes: array(object({
24571
+ ref: string(),
24572
+ savedId: string().optional(),
24573
+ status: RetrainReviewStatusSchema,
24574
+ /** The baseline was re-derived, not snapshotted (a pre-origin row). */
24575
+ approximate: boolean(),
24576
+ origin: RetrainOriginSchema.optional(),
24577
+ iou: number().optional()
24578
+ })).readonly(),
24579
+ summary: object({
24580
+ counts: record(RetrainReviewStatusSchema, number().int()),
24581
+ total: number().int(),
24582
+ changed: number().int(),
24583
+ approximate: boolean()
24584
+ })
24585
+ });
24586
+ /**
24444
24587
  * One annotated subject.
24445
24588
  *
24446
24589
  * `bbox` is normalised against the full frame, ALWAYS. The per-model shapes
@@ -24464,6 +24607,9 @@ var RetrainAnnotationSchema = object({
24464
24607
  /** Which model proposed this box — or, on a `model_error`, drew the phantom. */
24465
24608
  assistModelId: string().optional(),
24466
24609
  assistScore: number().optional(),
24610
+ /** The proposal this box started from, snapshotted at accept time. `null` on
24611
+ * a row saved before origins existed; absent on a draft nobody snapshotted. */
24612
+ origin: RetrainOriginSchema.nullable().optional(),
24467
24613
  exportedInBatch: string().optional(),
24468
24614
  createdAt: number()
24469
24615
  });
@@ -24556,7 +24702,19 @@ var RetrainFrameSchema = object({
24556
24702
  * empty when nothing the track store holds can be placed on it. */
24557
24703
  pipelineBoxes: array(RetrainPipelineBoxSchema).readonly().optional(),
24558
24704
  /** The named collections this frame belongs to. Present on list answers. */
24559
- collectionIds: array(string()).readonly().optional()
24705
+ collectionIds: array(string()).readonly().optional(),
24706
+ /** Bumped by every annotation save. A save that names a stale
24707
+ * `expectedRevision` is refused, so two surfaces cannot overwrite each other. */
24708
+ revision: number().int().optional(),
24709
+ /** Proposals the operator deleted — never re-seeded as drafts. */
24710
+ dismissed: array(RetrainDismissedSchema).readonly().optional(),
24711
+ /** What the operator did with the proposals, computed by the server. */
24712
+ review: RetrainFrameReviewSchema.optional(),
24713
+ /** The frame's pixels over the admin data plane (full size). Fetch with the
24714
+ * admin bearer token; relative to the hub root. */
24715
+ imageUrl: string().optional(),
24716
+ /** The same, as a ~480 px thumbnail for grids. */
24717
+ thumbnailUrl: string().optional()
24560
24718
  });
24561
24719
  /** Why a copy-on-select could not be honoured — named, never a silent skip. */
24562
24720
  var RetrainCopyRefusalSchema = _enum([
@@ -25635,10 +25793,33 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
25635
25793
  /** The frame's track, when it has one — checked against the frame. */
25636
25794
  trackId: string().optional(),
25637
25795
  frameId: string(),
25638
- annotations: array(RetrainAnnotationDraftSchema)
25796
+ annotations: array(RetrainAnnotationDraftSchema),
25797
+ /** The frame's `revision` the caller saw. A different current revision
25798
+ * refuses the save with a `retrain-revision-conflict` error
25799
+ * (`parseRetrainRevisionConflict`). Absent ⇒ last write wins. */
25800
+ expectedRevision: number().int().optional(),
25801
+ /** The proposals the operator deleted. Absent ⇒ keep the frame's
25802
+ * current set; present ⇒ replace it (an empty array un-dismisses). */
25803
+ dismissed: array(RetrainDismissedSchema).optional()
25639
25804
  }), array(RetrainAnnotationSchema).readonly(), {
25640
25805
  kind: "mutation",
25641
25806
  auth: "admin"
25807
+ }), method(object({
25808
+ deviceId: number(),
25809
+ trackId: string().optional(),
25810
+ frameId: string(),
25811
+ expectedRevision: number().int().optional(),
25812
+ origins: array(object({
25813
+ annotationId: string(),
25814
+ origin: RetrainOriginSchema
25815
+ })).min(1).max(500)
25816
+ }), object({
25817
+ updated: number().int(),
25818
+ skipped: number().int(),
25819
+ revision: number().int()
25820
+ }), {
25821
+ kind: "mutation",
25822
+ auth: "admin"
25642
25823
  }), method(object({
25643
25824
  deviceId: number(),
25644
25825
  trackId: string()
@@ -28254,6 +28435,12 @@ var CameraStepOverridePatchSchema = object({
28254
28435
  settings: record(string(), unknown()).readonly().optional()
28255
28436
  });
28256
28437
  var CameraStepSettingsSchema = record(string(), record(string(), unknown()).readonly());
28438
+ /** The three root-detector choices a camera has (D507: at most one root). */
28439
+ var CameraDetectionSourceSchema = _enum([
28440
+ "pipeline",
28441
+ "onboard",
28442
+ "none"
28443
+ ]);
28257
28444
  var CameraPipelineSettingsSchema = object({
28258
28445
  stepToggles: record(string(), boolean()).optional(),
28259
28446
  stepSettings: CameraStepSettingsSchema.optional(),
@@ -28831,6 +29018,26 @@ method(object({
28831
29018
  }), object({ success: literal(true) }), {
28832
29019
  kind: "mutation",
28833
29020
  auth: "admin"
29021
+ }), method(object({ deviceId: number() }), object({
29022
+ source: CameraDetectionSourceSchema,
29023
+ explicit: boolean(),
29024
+ onboard: object({
29025
+ /** The camera has an onboard detector this system can read. */
29026
+ available: boolean(),
29027
+ /** What its detections carry — a camera with no box cannot be a root step. */
29028
+ geometry: _enum([
29029
+ "boxed",
29030
+ "while-streaming",
29031
+ "flag-only",
29032
+ "unknown"
29033
+ ])
29034
+ })
29035
+ })), method(object({
29036
+ deviceId: number(),
29037
+ source: CameraDetectionSourceSchema
29038
+ }), object({ success: literal(true) }), {
29039
+ kind: "mutation",
29040
+ auth: "admin"
28834
29041
  }), method(object({ deviceId: number() }), record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).nullable()), method(object({
28835
29042
  deviceId: number(),
28836
29043
  agentNodeId: string(),
@@ -32162,6 +32369,17 @@ var BatteryStatusSchema = object({
32162
32369
  */
32163
32370
  lastContactAt: number().optional(),
32164
32371
  /**
32372
+ * Ms epoch of the last COMPLETE scheduled refresh — every fact the provider
32373
+ * holds for the device (level, charging, link, device info, state slices) and
32374
+ * its cached snapshot, read together. Absent = never since this slice was
32375
+ * born. Unlike `lastUpdated` (any write, even a push of one field) this is
32376
+ * the staleness an operator can trust: the provider owns the device fact and
32377
+ * so owns the window on its age (D224, D847). Not a clock in the
32378
+ * runtime-state-durability sense: it moves once per window and must survive
32379
+ * a restart, or every restart would owe the camera a wake.
32380
+ */
32381
+ lastFullRefreshAt: number().optional(),
32382
+ /**
32165
32383
  * True when the source is a BINARY low-battery indicator (HA
32166
32384
  * `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
32167
32385
  * charge level — `percentage` is then a coarse stand-in (100 = normal,
@@ -35377,7 +35595,14 @@ var TopologyNodeSchema = object({
35377
35595
  * completed a mutual-TLS handshake, `clear` otherwise. Absent for the hub,
35378
35596
  * for offline rows and when the hub cannot tell.
35379
35597
  */
35380
- meshTransport: _enum(["tls", "clear"]).optional()
35598
+ meshTransport: _enum(["tls", "clear"]).optional(),
35599
+ /**
35600
+ * Whether the hub holds this online AGENT's capability registration (its
35601
+ * `registerNode` manifest). `false` = online in the mesh but not ready: the
35602
+ * hub dropped the registration on a disconnect only it saw and the agent has
35603
+ * not re-sent it. Absent for the hub and offline rows.
35604
+ */
35605
+ capabilitiesRegistered: boolean().optional()
35381
35606
  });
35382
35607
  var CapUsageEdgeSchema = object({
35383
35608
  callerAddonId: string(),
@@ -42013,6 +42238,12 @@ Object.freeze({
42013
42238
  addonId: null,
42014
42239
  access: "create"
42015
42240
  },
42241
+ "dataStoreProvider.transact": {
42242
+ capName: "data-store-provider",
42243
+ capScope: "system",
42244
+ addonId: null,
42245
+ access: "create"
42246
+ },
42016
42247
  "dataStoreProvider.update": {
42017
42248
  capName: "data-store-provider",
42018
42249
  capScope: "system",
@@ -44857,6 +45088,12 @@ Object.freeze({
44857
45088
  addonId: null,
44858
45089
  access: "create"
44859
45090
  },
45091
+ "pipelineAnalytics.backfillRetrainOrigins": {
45092
+ capName: "pipeline-analytics",
45093
+ capScope: "device",
45094
+ addonId: null,
45095
+ access: "create"
45096
+ },
44860
45097
  "pipelineAnalytics.cancelRelocateMedia": {
44861
45098
  capName: "pipeline-analytics",
44862
45099
  capScope: "device",
@@ -45637,6 +45874,12 @@ Object.freeze({
45637
45874
  addonId: null,
45638
45875
  access: "view"
45639
45876
  },
45877
+ "pipelineOrchestrator.getCameraDetectionSource": {
45878
+ capName: "pipeline-orchestrator",
45879
+ capScope: "system",
45880
+ addonId: null,
45881
+ access: "view"
45882
+ },
45640
45883
  "pipelineOrchestrator.getCameraMetrics": {
45641
45884
  capName: "pipeline-orchestrator",
45642
45885
  capScope: "system",
@@ -45865,6 +46108,12 @@ Object.freeze({
45865
46108
  addonId: null,
45866
46109
  access: "create"
45867
46110
  },
46111
+ "pipelineOrchestrator.setCameraDetectionSource": {
46112
+ capName: "pipeline-orchestrator",
46113
+ capScope: "system",
46114
+ addonId: null,
46115
+ access: "create"
46116
+ },
45868
46117
  "pipelineOrchestrator.setCameraPipelineForAgent": {
45869
46118
  capName: "pipeline-orchestrator",
45870
46119
  capScope: "system",
@@ -46837,6 +47086,12 @@ Object.freeze({
46837
47086
  addonId: null,
46838
47087
  access: "create"
46839
47088
  },
47089
+ "settingsStore.transact": {
47090
+ capName: "settings-store",
47091
+ capScope: "system",
47092
+ addonId: null,
47093
+ access: "create"
47094
+ },
46840
47095
  "settingsStore.update": {
46841
47096
  capName: "settings-store",
46842
47097
  capScope: "system",
@@ -47317,6 +47572,12 @@ Object.freeze({
47317
47572
  addonId: null,
47318
47573
  access: "view"
47319
47574
  },
47575
+ "streamBroker.getLiveViewerCounts": {
47576
+ capName: "stream-broker",
47577
+ capScope: "system",
47578
+ addonId: null,
47579
+ access: "view"
47580
+ },
47320
47581
  "streamBroker.getPreBufferInfo": {
47321
47582
  capName: "stream-broker",
47322
47583
  capScope: "system",
@@ -51157,6 +51418,11 @@ Object.freeze({
51157
51418
  form: "single",
51158
51419
  optional: false
51159
51420
  }],
51421
+ "pipelineAnalytics.backfillRetrainOrigins": [{
51422
+ name: "deviceId",
51423
+ form: "single",
51424
+ optional: false
51425
+ }],
51160
51426
  "pipelineAnalytics.clearTrackRelation": [{
51161
51427
  name: "deviceId",
51162
51428
  form: "single",
@@ -51462,6 +51728,11 @@ Object.freeze({
51462
51728
  form: "single",
51463
51729
  optional: false
51464
51730
  }],
51731
+ "pipelineOrchestrator.getCameraDetectionSource": [{
51732
+ name: "deviceId",
51733
+ form: "single",
51734
+ optional: false
51735
+ }],
51465
51736
  "pipelineOrchestrator.getCameraMetrics": [{
51466
51737
  name: "deviceId",
51467
51738
  form: "single",
@@ -51522,6 +51793,11 @@ Object.freeze({
51522
51793
  form: "single",
51523
51794
  optional: false
51524
51795
  }],
51796
+ "pipelineOrchestrator.setCameraDetectionSource": [{
51797
+ name: "deviceId",
51798
+ form: "single",
51799
+ optional: false
51800
+ }],
51525
51801
  "pipelineOrchestrator.setCameraPipelineForAgent": [{
51526
51802
  name: "deviceId",
51527
51803
  form: "single",
@@ -52551,6 +52827,9 @@ new Map(Object.entries({
52551
52827
  "stream-online": "device-events",
52552
52828
  "stream-offline": "device-events",
52553
52829
  "detection-blind": "device-events",
52830
+ "recording-stalled": "device-events",
52831
+ "recording-healthy": "device-events",
52832
+ "recording-degraded": "device-events",
52554
52833
  "node-online": "system",
52555
52834
  "node-offline": "system",
52556
52835
  "node-restarting": "system",
@@ -52564,6 +52843,9 @@ new Map(Object.entries({
52564
52843
  "wrapper-update-available": "system",
52565
52844
  "backup-completed": "system",
52566
52845
  "export-completed": "system",
52846
+ "storage-location-low": "system",
52847
+ "storage-location-critical": "system",
52848
+ "storage-location-ok": "system",
52567
52849
  "alarm-triggered": "alarm",
52568
52850
  "alarm-armed": "alarm",
52569
52851
  "alarm-disarmed": "alarm",
@@ -52625,6 +52907,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
52625
52907
  label: "Detecting nothing",
52626
52908
  kinds: ["detection-blind"]
52627
52909
  },
52910
+ {
52911
+ id: "recording",
52912
+ family: "device-events",
52913
+ label: "Recording",
52914
+ kinds: [
52915
+ "recording-stalled",
52916
+ "recording-healthy",
52917
+ "recording-degraded"
52918
+ ]
52919
+ },
52628
52920
  {
52629
52921
  id: "nodes",
52630
52922
  family: "system",
@@ -52665,6 +52957,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
52665
52957
  label: "Backups & exports",
52666
52958
  kinds: ["backup-completed", "export-completed"]
52667
52959
  },
52960
+ {
52961
+ id: "storage",
52962
+ family: "system",
52963
+ label: "Storage locations",
52964
+ kinds: [
52965
+ "storage-location-low",
52966
+ "storage-location-critical",
52967
+ "storage-location-ok"
52968
+ ]
52969
+ },
52668
52970
  {
52669
52971
  id: "alarm",
52670
52972
  family: "alarm",
@@ -52747,6 +53049,9 @@ var DEVICE_EVENTS = [
52747
53049
  "stream-online",
52748
53050
  "stream-offline",
52749
53051
  "detection-blind",
53052
+ "recording-stalled",
53053
+ "recording-healthy",
53054
+ "recording-degraded",
52750
53055
  ...ALARM
52751
53056
  ];
52752
53057
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -52914,6 +53219,11 @@ var STATE_SUMMARY_VARS = [
52914
53219
  [...RULE_TEXT],
52915
53220
  [...RULE_TEXT],
52916
53221
  [...RULE_TEXT],
53222
+ [...RULE_TEXT],
53223
+ [...RULE_TEXT],
53224
+ [...RULE_TEXT],
53225
+ [...RULE_TEXT],
53226
+ [...RULE_TEXT],
52917
53227
  ([...RULE_TEXT], [...UPDATES]),
52918
53228
  ([...RULE_TEXT], [...PACKAGE_UPDATES]),
52919
53229
  ([...RULE_TEXT], [...PACKAGE_UPDATES]),
@@ -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_model_studio_page__loadShare__react__loadShare__.js-CHL8loOl.mjs";
2
- import { b as i, y as a } from "./responsive-DS5SbGGI.mjs";
2
+ import { b as i, y as a } from "./responsive-DyGAg9qU.mjs";
3
3
  import { n as o, r as s, t as c } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
4
4
  var l = i("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_model_studio_page__remoteEntry_js-DO4z1s82.mjs";
1
+ import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CzgQrlk5.mjs";
2
2
  export { t as get, e as init };
@@ -1,5 +1,5 @@
1
1
  import { _ as e, b as t, c as n, g as r, l as i, m as a, n as o, r as s, t as c, u as l } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-CHL8loOl.mjs";
2
- import { g as u } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BYQ2rfWg.mjs";
2
+ import { g as u } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CW7-7FqB.mjs";
3
3
  import "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
4
4
  //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
5
5
  t();
@@ -1,5 +1,5 @@
1
1
  import { b as e, c as t, g as n, m as r } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-CHL8loOl.mjs";
2
- import { b as i } from "./responsive-DS5SbGGI.mjs";
2
+ import { b as i } from "./responsive-DyGAg9qU.mjs";
3
3
  var a = i("camera", [["path", {
4
4
  d: "M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",
5
5
  key: "18u6gg"
@@ -1,4 +1,4 @@
1
- import { b as e } from "./responsive-DS5SbGGI.mjs";
1
+ import { b as e } from "./responsive-DyGAg9qU.mjs";
2
2
  var t = e("eye-off", [
3
3
  ["path", {
4
4
  d: "M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",
@@ -1,4 +1,4 @@
1
- import { b as e } from "./responsive-DS5SbGGI.mjs";
1
+ import { b as e } from "./responsive-DyGAg9qU.mjs";
2
2
  var t = e("trash-2", [
3
3
  ["path", {
4
4
  d: "M10 11v6",
@@ -2753,7 +2753,7 @@ async function rr(e) {
2753
2753
  }
2754
2754
  }
2755
2755
  async function ir() {
2756
- return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-CSMSc3Ys.mjs")).catch((e) => {
2756
+ return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-DbOwI3GM.mjs")).catch((e) => {
2757
2757
  throw tr = void 0, e;
2758
2758
  }), tr;
2759
2759
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-model-studio",
3
- "version": "1.1.251",
3
+ "version": "1.1.253",
4
4
  "description": "Custom detection model registry, conversion & distribution for CamStack",
5
5
  "keywords": [
6
6
  "camstack",