@camstack/addon-post-analysis 1.2.355 → 1.2.357

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 (14) hide show
  1. package/dist/{clip-model-registry-5n-tonTt.mjs → clip-model-registry-CeXEX5AW.mjs} +187 -9
  2. package/dist/{clip-model-registry-BbMM8NiG.js → clip-model-registry-CwcMHf4e.js} +187 -9
  3. package/dist/embedding-encoder/index.js +1 -1
  4. package/dist/embedding-encoder/index.mjs +1 -1
  5. package/dist/pipeline-analytics/_stub.js +2 -2
  6. package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-ClKafqZT.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-BT5KDOVx.mjs} +3 -3
  7. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-ckM_CHJd.mjs +26 -0
  8. package/dist/pipeline-analytics/{_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DXfGbC3e.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-X_26tehC.mjs} +1 -1
  9. package/dist/pipeline-analytics/{hostInit-OAcrXk5I.mjs → hostInit-iB3ZAE92.mjs} +3 -3
  10. package/dist/pipeline-analytics/index.js +118 -1
  11. package/dist/pipeline-analytics/index.mjs +118 -1
  12. package/dist/pipeline-analytics/remoteEntry.js +1 -1
  13. package/package.json +1 -1
  14. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BIILaJf_.mjs +0 -26
@@ -1,5 +1,5 @@
1
1
  import { createHash } from "node:crypto";
2
- //#region ../types/dist/event-category-DaIZi00R.mjs
2
+ //#region ../types/dist/event-category-C4hVnRo8.mjs
3
3
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
4
4
  EventCategory["SystemBoot"] = "system.boot";
5
5
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -218,7 +218,17 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
218
218
  EventCategory["RecordingStopped"] = "recording.stopped";
219
219
  EventCategory["RecordingError"] = "recording.error";
220
220
  EventCategory["RecordingHealthDegraded"] = "recording.health.degraded";
221
+ /** Recording enabled but no segment finalized for the NC stall window. */
222
+ EventCategory["RecordingHealthStalled"] = "recording.health.stalled";
223
+ /** Recovery from {@link RecordingHealthStalled}. */
224
+ EventCategory["RecordingHealthOk"] = "recording.health.ok";
221
225
  EventCategory["RecordingStorageCritical"] = "recording.storage.critical";
226
+ /** Free space on a storage location crossed the warn bar. */
227
+ EventCategory["StorageLocationLow"] = "storage.location.low";
228
+ /** Free space at/under the critical bar, or capacity probe failed (`null`). */
229
+ EventCategory["StorageLocationCritical"] = "storage.location.critical";
230
+ /** Recovery from low/critical on a storage location. */
231
+ EventCategory["StorageLocationOk"] = "storage.location.ok";
222
232
  EventCategory["RecordingSegmentWritten"] = "recording.segment.written";
223
233
  EventCategory["RecordingPolicyFallback"] = "recording.policy.fallback";
224
234
  EventCategory["RecordingRetentionCompleted"] = "recording.retention.completed";
@@ -5449,7 +5459,7 @@ var ZodIssueCode = {
5449
5459
  var ZodFirstPartyTypeKind;
5450
5460
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5451
5461
  //#endregion
5452
- //#region ../types/dist/sleep-DwAQ9sqX.mjs
5462
+ //#region ../types/dist/sleep-Tkp9dHXv.mjs
5453
5463
  /**
5454
5464
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5455
5465
  * window to float samples (D455).
@@ -15091,7 +15101,14 @@ var BrokerProviderInfoSchema = object({
15091
15101
  /** Broker kinds this provider can create, with a display label. */
15092
15102
  kinds: array(object({
15093
15103
  kind: string(),
15094
- label: string()
15104
+ label: string(),
15105
+ /**
15106
+ * Relative hub path to start an interactive account link (OAuth popup).
15107
+ * May include `{{brokerId}}`; admin-ui substitutes and appends `?popup=1`.
15108
+ */
15109
+ interactiveConnectPath: string().min(1).optional(),
15110
+ /** Relative hub path to disconnect the linked account (same popup pattern). */
15111
+ interactiveDisconnectPath: string().min(1).optional()
15095
15112
  }))
15096
15113
  });
15097
15114
  var ListInputSchema = object({
@@ -21858,14 +21875,14 @@ var LlmProfileSchema = object({
21858
21875
  /** ConfigUISchema tree passed through untyped on the wire (the
21859
21876
  * notification-output `ConfigSchemaPassthrough` precedent at
21860
21877
  * notification-output.cap.ts:151); the exported TS type re-tightens it. */
21861
- var ConfigSchemaPassthrough$2 = unknown();
21878
+ var ConfigSchemaPassthrough$3 = unknown();
21862
21879
  var LlmProfileKindDescriptorSchema = object({
21863
21880
  kind: LlmProfileKindSchema,
21864
21881
  label: string(),
21865
21882
  icon: string(),
21866
21883
  /** Stamped by each provider so the concat-fanned catalog stays routable. */
21867
21884
  addonId: string(),
21868
- configSchema: ConfigSchemaPassthrough$2
21885
+ configSchema: ConfigSchemaPassthrough$3
21869
21886
  });
21870
21887
  var LlmDefaultSelectorSchema = union([object({ consumer: string() }), object({ purpose: _enum(["text", "vision"]) })]);
21871
21888
  var LlmDefaultSchema = object({
@@ -23220,7 +23237,7 @@ var TargetKindCapsSchema = object({
23220
23237
  * the union is large and not meant for runtime validation here; the exported
23221
23238
  * `TargetKind` type re-tightens `configSchema` to `ConfigUISchema`.
23222
23239
  */
23223
- var ConfigSchemaPassthrough$1 = unknown();
23240
+ var ConfigSchemaPassthrough$2 = unknown();
23224
23241
  var TargetKindSchema = object({
23225
23242
  kind: string(),
23226
23243
  label: string(),
@@ -23257,7 +23274,7 @@ var TargetKindSchema = object({
23257
23274
  * its raster path, which is the safe default for an unknown image.
23258
23275
  */
23259
23276
  iconMediaType: string().optional(),
23260
- configSchema: ConfigSchemaPassthrough$1,
23277
+ configSchema: ConfigSchemaPassthrough$2,
23261
23278
  /**
23262
23279
  * The config keys that decide WHERE this kind's secrets are sent (server,
23263
23280
  * base URL, instance, chat, recipient). A save that changes any of them
@@ -24267,6 +24284,12 @@ var NcSystemEventKindSchema = _enum([
24267
24284
  "node-updating",
24268
24285
  "node-inference-unavailable",
24269
24286
  "detection-blind",
24287
+ "recording-stalled",
24288
+ "recording-healthy",
24289
+ "recording-degraded",
24290
+ "storage-location-low",
24291
+ "storage-location-critical",
24292
+ "storage-location-ok",
24270
24293
  "addon-crash-loop",
24271
24294
  "addon-update-available",
24272
24295
  "server-update-available",
@@ -25764,6 +25787,30 @@ var NC_CONDITION_CATALOG = [
25764
25787
  value: "detection-blind",
25765
25788
  label: "Camera detecting nothing"
25766
25789
  },
25790
+ {
25791
+ value: "recording-stalled",
25792
+ label: "Recording stalled"
25793
+ },
25794
+ {
25795
+ value: "recording-healthy",
25796
+ label: "Recording healthy again"
25797
+ },
25798
+ {
25799
+ value: "recording-degraded",
25800
+ label: "Recording degraded (restart storm)"
25801
+ },
25802
+ {
25803
+ value: "storage-location-low",
25804
+ label: "Storage location low"
25805
+ },
25806
+ {
25807
+ value: "storage-location-critical",
25808
+ label: "Storage location critical"
25809
+ },
25810
+ {
25811
+ value: "storage-location-ok",
25812
+ label: "Storage location ok again"
25813
+ },
25767
25814
  {
25768
25815
  value: "addon-crash-loop",
25769
25816
  label: "Addon stopped after repeated crashes"
@@ -27518,6 +27565,77 @@ var oauthIntegrationCapability = {
27518
27565
  getDescriptor: method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" }) }
27519
27566
  };
27520
27567
  /**
27568
+ * `oidc-connections` — CRUD for IdP rows under `auth-oidc` (D828 sibling).
27569
+ *
27570
+ * One hub-only singleton (`auth-oidc`). The Settings UI is a DataTable +
27571
+ * ItemFormDialog; there is no `editable-array` in `globalSettingsSchema`.
27572
+ * Operator-chosen `id` is the URL slug (`/addon/auth-oidc/<id>/…`) and is
27573
+ * immutable after create.
27574
+ */
27575
+ var ConfigSchemaPassthrough$1 = unknown();
27576
+ var OidcConnectionSchema = object({
27577
+ id: string().min(1),
27578
+ displayName: string(),
27579
+ icon: string(),
27580
+ issuerUrl: string(),
27581
+ clientId: string(),
27582
+ /** Client id + secret present — never the secret value. */
27583
+ configured: boolean(),
27584
+ /**
27585
+ * Values for the connection form schema. `clientSecret` is a keychain
27586
+ * {@link SecretFieldView} or `null` / `''`, never plaintext (D789).
27587
+ */
27588
+ formValues: record(string(), unknown()).optional()
27589
+ });
27590
+ /**
27591
+ * Patch one connection. Omitted or empty `clientSecret` keeps the stored
27592
+ * secret (D787). `{ $secretClear: true }` clears it. `id` is never renamed.
27593
+ */
27594
+ var OidcConnectionUpdateInputSchema = object({
27595
+ id: string().min(1),
27596
+ displayName: string().min(1),
27597
+ icon: string().optional(),
27598
+ issuerUrl: string().optional(),
27599
+ clientId: string().optional(),
27600
+ clientSecret: union([string(), object({ $secretClear: literal(true) })]).optional(),
27601
+ redirectUri: string().optional(),
27602
+ scopes: string().optional(),
27603
+ usernameClaim: _enum([
27604
+ "preferred_username",
27605
+ "email",
27606
+ "sub"
27607
+ ]).optional()
27608
+ });
27609
+ var oidcConnectionsCapability = {
27610
+ name: "oidc-connections",
27611
+ scope: "system",
27612
+ mode: "singleton",
27613
+ methods: {
27614
+ /** Form fields for Add/Edit (ConfigFormBuilder). */
27615
+ connectionFormSchema: method(object({}), ConfigSchemaPassthrough$1, { auth: "admin" }),
27616
+ listConnections: method(object({}), array(OidcConnectionSchema).readonly(), { auth: "admin" }),
27617
+ /**
27618
+ * Create a row with the operator-chosen URL slug. Credentials follow via
27619
+ * `updateConnection` (same Save path as Training Providers).
27620
+ */
27621
+ createConnection: method(object({
27622
+ id: string().min(1).regex(/^[a-z0-9][a-z0-9-]{0,63}$/, "id must be a lowercase slug"),
27623
+ displayName: string().min(1)
27624
+ }), object({ id: string() }), {
27625
+ kind: "mutation",
27626
+ auth: "admin"
27627
+ }),
27628
+ updateConnection: method(OidcConnectionUpdateInputSchema, object({ ok: literal(true) }), {
27629
+ kind: "mutation",
27630
+ auth: "admin"
27631
+ }),
27632
+ deleteConnection: method(object({ id: string().min(1) }), object({ ok: literal(true) }), {
27633
+ kind: "mutation",
27634
+ auth: "admin"
27635
+ })
27636
+ }
27637
+ };
27638
+ /**
27521
27639
  * What started a camera's onboard motion (D672). `camera` is the camera's own
27522
27640
  * firmware; `sensor` is a device the operator ATTACHED to it. Absent on the
27523
27641
  * wire means the camera: only the camera-sensors bridge ever says `sensor`.
@@ -56831,6 +56949,36 @@ Object.freeze({
56831
56949
  addonId: null,
56832
56950
  access: "view"
56833
56951
  },
56952
+ "oidcConnections.connectionFormSchema": {
56953
+ capName: "oidc-connections",
56954
+ capScope: "system",
56955
+ addonId: null,
56956
+ access: "view"
56957
+ },
56958
+ "oidcConnections.createConnection": {
56959
+ capName: "oidc-connections",
56960
+ capScope: "system",
56961
+ addonId: null,
56962
+ access: "create"
56963
+ },
56964
+ "oidcConnections.deleteConnection": {
56965
+ capName: "oidc-connections",
56966
+ capScope: "system",
56967
+ addonId: null,
56968
+ access: "delete"
56969
+ },
56970
+ "oidcConnections.listConnections": {
56971
+ capName: "oidc-connections",
56972
+ capScope: "system",
56973
+ addonId: null,
56974
+ access: "view"
56975
+ },
56976
+ "oidcConnections.updateConnection": {
56977
+ capName: "oidc-connections",
56978
+ capScope: "system",
56979
+ addonId: null,
56980
+ access: "create"
56981
+ },
56834
56982
  "osd.getStatus": {
56835
56983
  capName: "osd",
56836
56984
  capScope: "device",
@@ -62066,6 +62214,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
62066
62214
  notifierCapability,
62067
62215
  numericSensorCapability,
62068
62216
  oauthIntegrationCapability,
62217
+ oidcConnectionsCapability,
62069
62218
  osdCapability,
62070
62219
  osdManagerCapability,
62071
62220
  petFeederCapability,
@@ -64901,9 +65050,9 @@ var NC_SYSTEM_EVENT_FILTER_KEYS = [
64901
65050
  */
64902
65051
  function systemEventFilterApplies(kind, filter) {
64903
65052
  switch (filter) {
64904
- case "deviceIds": return kind.startsWith("device-") || kind.startsWith("stream-") || kind === "detection-blind" || kind === "alarm-triggered";
65053
+ case "deviceIds": return kind.startsWith("device-") || kind.startsWith("stream-") || kind === "detection-blind" || kind.startsWith("recording-") || kind === "alarm-triggered";
64905
65054
  case "deviceTypes": return kind.startsWith("device-") || kind === "detection-blind";
64906
- case "nodeIds": return kind.startsWith("node-") || kind === "addon-crash-loop" || kind === "addon-update-available" || kind === "addon-updated" || kind === "server-update-available" || kind === "wrapper-update-available" || kind === "server-updated";
65055
+ case "nodeIds": return kind.startsWith("node-") || kind === "addon-crash-loop" || kind === "addon-update-available" || kind === "addon-updated" || kind === "server-update-available" || kind === "wrapper-update-available" || kind === "server-updated" || kind.startsWith("storage-location-");
64907
65056
  case "packageNames": return kind.endsWith("update-available") || kind === "addon-updated" || kind === "node-updating" || kind === "server-updated";
64908
65057
  case "consumableLowPercent": return NC_CONSUMABLE_SYSTEM_EVENT_KINDS.includes(kind);
64909
65058
  }
@@ -64947,6 +65096,9 @@ var NC_SYSTEM_EVENT_FAMILY = {
64947
65096
  "stream-online": "device-events",
64948
65097
  "stream-offline": "device-events",
64949
65098
  "detection-blind": "device-events",
65099
+ "recording-stalled": "device-events",
65100
+ "recording-healthy": "device-events",
65101
+ "recording-degraded": "device-events",
64950
65102
  "node-online": "system",
64951
65103
  "node-offline": "system",
64952
65104
  "node-restarting": "system",
@@ -64960,6 +65112,9 @@ var NC_SYSTEM_EVENT_FAMILY = {
64960
65112
  "wrapper-update-available": "system",
64961
65113
  "backup-completed": "system",
64962
65114
  "export-completed": "system",
65115
+ "storage-location-low": "system",
65116
+ "storage-location-critical": "system",
65117
+ "storage-location-ok": "system",
64963
65118
  "alarm-triggered": "alarm",
64964
65119
  "alarm-armed": "alarm",
64965
65120
  "alarm-disarmed": "alarm",
@@ -65039,6 +65194,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
65039
65194
  label: "Detecting nothing",
65040
65195
  kinds: ["detection-blind"]
65041
65196
  },
65197
+ {
65198
+ id: "recording",
65199
+ family: "device-events",
65200
+ label: "Recording",
65201
+ kinds: [
65202
+ "recording-stalled",
65203
+ "recording-healthy",
65204
+ "recording-degraded"
65205
+ ]
65206
+ },
65042
65207
  {
65043
65208
  id: "nodes",
65044
65209
  family: "system",
@@ -65079,6 +65244,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
65079
65244
  label: "Backups & exports",
65080
65245
  kinds: ["backup-completed", "export-completed"]
65081
65246
  },
65247
+ {
65248
+ id: "storage",
65249
+ family: "system",
65250
+ label: "Storage locations",
65251
+ kinds: [
65252
+ "storage-location-low",
65253
+ "storage-location-critical",
65254
+ "storage-location-ok"
65255
+ ]
65256
+ },
65082
65257
  {
65083
65258
  id: "alarm",
65084
65259
  family: "alarm",
@@ -65928,6 +66103,9 @@ var DEVICE_EVENTS = [
65928
66103
  "stream-online",
65929
66104
  "stream-offline",
65930
66105
  "detection-blind",
66106
+ "recording-stalled",
66107
+ "recording-healthy",
66108
+ "recording-degraded",
65931
66109
  ...ALARM
65932
66110
  ];
65933
66111
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -30,7 +30,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
30
30
  }) : target, mod));
31
31
  //#endregion
32
32
  let node_crypto = require("node:crypto");
33
- //#region ../types/dist/event-category-DaIZi00R.mjs
33
+ //#region ../types/dist/event-category-C4hVnRo8.mjs
34
34
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
35
35
  EventCategory["SystemBoot"] = "system.boot";
36
36
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -249,7 +249,17 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
249
249
  EventCategory["RecordingStopped"] = "recording.stopped";
250
250
  EventCategory["RecordingError"] = "recording.error";
251
251
  EventCategory["RecordingHealthDegraded"] = "recording.health.degraded";
252
+ /** Recording enabled but no segment finalized for the NC stall window. */
253
+ EventCategory["RecordingHealthStalled"] = "recording.health.stalled";
254
+ /** Recovery from {@link RecordingHealthStalled}. */
255
+ EventCategory["RecordingHealthOk"] = "recording.health.ok";
252
256
  EventCategory["RecordingStorageCritical"] = "recording.storage.critical";
257
+ /** Free space on a storage location crossed the warn bar. */
258
+ EventCategory["StorageLocationLow"] = "storage.location.low";
259
+ /** Free space at/under the critical bar, or capacity probe failed (`null`). */
260
+ EventCategory["StorageLocationCritical"] = "storage.location.critical";
261
+ /** Recovery from low/critical on a storage location. */
262
+ EventCategory["StorageLocationOk"] = "storage.location.ok";
253
263
  EventCategory["RecordingSegmentWritten"] = "recording.segment.written";
254
264
  EventCategory["RecordingPolicyFallback"] = "recording.policy.fallback";
255
265
  EventCategory["RecordingRetentionCompleted"] = "recording.retention.completed";
@@ -5480,7 +5490,7 @@ var ZodIssueCode = {
5480
5490
  var ZodFirstPartyTypeKind;
5481
5491
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5482
5492
  //#endregion
5483
- //#region ../types/dist/sleep-DwAQ9sqX.mjs
5493
+ //#region ../types/dist/sleep-Tkp9dHXv.mjs
5484
5494
  /**
5485
5495
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5486
5496
  * window to float samples (D455).
@@ -15122,7 +15132,14 @@ var BrokerProviderInfoSchema = object({
15122
15132
  /** Broker kinds this provider can create, with a display label. */
15123
15133
  kinds: array(object({
15124
15134
  kind: string(),
15125
- label: string()
15135
+ label: string(),
15136
+ /**
15137
+ * Relative hub path to start an interactive account link (OAuth popup).
15138
+ * May include `{{brokerId}}`; admin-ui substitutes and appends `?popup=1`.
15139
+ */
15140
+ interactiveConnectPath: string().min(1).optional(),
15141
+ /** Relative hub path to disconnect the linked account (same popup pattern). */
15142
+ interactiveDisconnectPath: string().min(1).optional()
15126
15143
  }))
15127
15144
  });
15128
15145
  var ListInputSchema = object({
@@ -21889,14 +21906,14 @@ var LlmProfileSchema = object({
21889
21906
  /** ConfigUISchema tree passed through untyped on the wire (the
21890
21907
  * notification-output `ConfigSchemaPassthrough` precedent at
21891
21908
  * notification-output.cap.ts:151); the exported TS type re-tightens it. */
21892
- var ConfigSchemaPassthrough$2 = unknown();
21909
+ var ConfigSchemaPassthrough$3 = unknown();
21893
21910
  var LlmProfileKindDescriptorSchema = object({
21894
21911
  kind: LlmProfileKindSchema,
21895
21912
  label: string(),
21896
21913
  icon: string(),
21897
21914
  /** Stamped by each provider so the concat-fanned catalog stays routable. */
21898
21915
  addonId: string(),
21899
- configSchema: ConfigSchemaPassthrough$2
21916
+ configSchema: ConfigSchemaPassthrough$3
21900
21917
  });
21901
21918
  var LlmDefaultSelectorSchema = union([object({ consumer: string() }), object({ purpose: _enum(["text", "vision"]) })]);
21902
21919
  var LlmDefaultSchema = object({
@@ -23251,7 +23268,7 @@ var TargetKindCapsSchema = object({
23251
23268
  * the union is large and not meant for runtime validation here; the exported
23252
23269
  * `TargetKind` type re-tightens `configSchema` to `ConfigUISchema`.
23253
23270
  */
23254
- var ConfigSchemaPassthrough$1 = unknown();
23271
+ var ConfigSchemaPassthrough$2 = unknown();
23255
23272
  var TargetKindSchema = object({
23256
23273
  kind: string(),
23257
23274
  label: string(),
@@ -23288,7 +23305,7 @@ var TargetKindSchema = object({
23288
23305
  * its raster path, which is the safe default for an unknown image.
23289
23306
  */
23290
23307
  iconMediaType: string().optional(),
23291
- configSchema: ConfigSchemaPassthrough$1,
23308
+ configSchema: ConfigSchemaPassthrough$2,
23292
23309
  /**
23293
23310
  * The config keys that decide WHERE this kind's secrets are sent (server,
23294
23311
  * base URL, instance, chat, recipient). A save that changes any of them
@@ -24298,6 +24315,12 @@ var NcSystemEventKindSchema = _enum([
24298
24315
  "node-updating",
24299
24316
  "node-inference-unavailable",
24300
24317
  "detection-blind",
24318
+ "recording-stalled",
24319
+ "recording-healthy",
24320
+ "recording-degraded",
24321
+ "storage-location-low",
24322
+ "storage-location-critical",
24323
+ "storage-location-ok",
24301
24324
  "addon-crash-loop",
24302
24325
  "addon-update-available",
24303
24326
  "server-update-available",
@@ -25795,6 +25818,30 @@ var NC_CONDITION_CATALOG = [
25795
25818
  value: "detection-blind",
25796
25819
  label: "Camera detecting nothing"
25797
25820
  },
25821
+ {
25822
+ value: "recording-stalled",
25823
+ label: "Recording stalled"
25824
+ },
25825
+ {
25826
+ value: "recording-healthy",
25827
+ label: "Recording healthy again"
25828
+ },
25829
+ {
25830
+ value: "recording-degraded",
25831
+ label: "Recording degraded (restart storm)"
25832
+ },
25833
+ {
25834
+ value: "storage-location-low",
25835
+ label: "Storage location low"
25836
+ },
25837
+ {
25838
+ value: "storage-location-critical",
25839
+ label: "Storage location critical"
25840
+ },
25841
+ {
25842
+ value: "storage-location-ok",
25843
+ label: "Storage location ok again"
25844
+ },
25798
25845
  {
25799
25846
  value: "addon-crash-loop",
25800
25847
  label: "Addon stopped after repeated crashes"
@@ -27549,6 +27596,77 @@ var oauthIntegrationCapability = {
27549
27596
  getDescriptor: method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" }) }
27550
27597
  };
27551
27598
  /**
27599
+ * `oidc-connections` — CRUD for IdP rows under `auth-oidc` (D828 sibling).
27600
+ *
27601
+ * One hub-only singleton (`auth-oidc`). The Settings UI is a DataTable +
27602
+ * ItemFormDialog; there is no `editable-array` in `globalSettingsSchema`.
27603
+ * Operator-chosen `id` is the URL slug (`/addon/auth-oidc/<id>/…`) and is
27604
+ * immutable after create.
27605
+ */
27606
+ var ConfigSchemaPassthrough$1 = unknown();
27607
+ var OidcConnectionSchema = object({
27608
+ id: string().min(1),
27609
+ displayName: string(),
27610
+ icon: string(),
27611
+ issuerUrl: string(),
27612
+ clientId: string(),
27613
+ /** Client id + secret present — never the secret value. */
27614
+ configured: boolean(),
27615
+ /**
27616
+ * Values for the connection form schema. `clientSecret` is a keychain
27617
+ * {@link SecretFieldView} or `null` / `''`, never plaintext (D789).
27618
+ */
27619
+ formValues: record(string(), unknown()).optional()
27620
+ });
27621
+ /**
27622
+ * Patch one connection. Omitted or empty `clientSecret` keeps the stored
27623
+ * secret (D787). `{ $secretClear: true }` clears it. `id` is never renamed.
27624
+ */
27625
+ var OidcConnectionUpdateInputSchema = object({
27626
+ id: string().min(1),
27627
+ displayName: string().min(1),
27628
+ icon: string().optional(),
27629
+ issuerUrl: string().optional(),
27630
+ clientId: string().optional(),
27631
+ clientSecret: union([string(), object({ $secretClear: literal(true) })]).optional(),
27632
+ redirectUri: string().optional(),
27633
+ scopes: string().optional(),
27634
+ usernameClaim: _enum([
27635
+ "preferred_username",
27636
+ "email",
27637
+ "sub"
27638
+ ]).optional()
27639
+ });
27640
+ var oidcConnectionsCapability = {
27641
+ name: "oidc-connections",
27642
+ scope: "system",
27643
+ mode: "singleton",
27644
+ methods: {
27645
+ /** Form fields for Add/Edit (ConfigFormBuilder). */
27646
+ connectionFormSchema: method(object({}), ConfigSchemaPassthrough$1, { auth: "admin" }),
27647
+ listConnections: method(object({}), array(OidcConnectionSchema).readonly(), { auth: "admin" }),
27648
+ /**
27649
+ * Create a row with the operator-chosen URL slug. Credentials follow via
27650
+ * `updateConnection` (same Save path as Training Providers).
27651
+ */
27652
+ createConnection: method(object({
27653
+ id: string().min(1).regex(/^[a-z0-9][a-z0-9-]{0,63}$/, "id must be a lowercase slug"),
27654
+ displayName: string().min(1)
27655
+ }), object({ id: string() }), {
27656
+ kind: "mutation",
27657
+ auth: "admin"
27658
+ }),
27659
+ updateConnection: method(OidcConnectionUpdateInputSchema, object({ ok: literal(true) }), {
27660
+ kind: "mutation",
27661
+ auth: "admin"
27662
+ }),
27663
+ deleteConnection: method(object({ id: string().min(1) }), object({ ok: literal(true) }), {
27664
+ kind: "mutation",
27665
+ auth: "admin"
27666
+ })
27667
+ }
27668
+ };
27669
+ /**
27552
27670
  * What started a camera's onboard motion (D672). `camera` is the camera's own
27553
27671
  * firmware; `sensor` is a device the operator ATTACHED to it. Absent on the
27554
27672
  * wire means the camera: only the camera-sensors bridge ever says `sensor`.
@@ -56862,6 +56980,36 @@ Object.freeze({
56862
56980
  addonId: null,
56863
56981
  access: "view"
56864
56982
  },
56983
+ "oidcConnections.connectionFormSchema": {
56984
+ capName: "oidc-connections",
56985
+ capScope: "system",
56986
+ addonId: null,
56987
+ access: "view"
56988
+ },
56989
+ "oidcConnections.createConnection": {
56990
+ capName: "oidc-connections",
56991
+ capScope: "system",
56992
+ addonId: null,
56993
+ access: "create"
56994
+ },
56995
+ "oidcConnections.deleteConnection": {
56996
+ capName: "oidc-connections",
56997
+ capScope: "system",
56998
+ addonId: null,
56999
+ access: "delete"
57000
+ },
57001
+ "oidcConnections.listConnections": {
57002
+ capName: "oidc-connections",
57003
+ capScope: "system",
57004
+ addonId: null,
57005
+ access: "view"
57006
+ },
57007
+ "oidcConnections.updateConnection": {
57008
+ capName: "oidc-connections",
57009
+ capScope: "system",
57010
+ addonId: null,
57011
+ access: "create"
57012
+ },
56865
57013
  "osd.getStatus": {
56866
57014
  capName: "osd",
56867
57015
  capScope: "device",
@@ -62097,6 +62245,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
62097
62245
  notifierCapability,
62098
62246
  numericSensorCapability,
62099
62247
  oauthIntegrationCapability,
62248
+ oidcConnectionsCapability,
62100
62249
  osdCapability,
62101
62250
  osdManagerCapability,
62102
62251
  petFeederCapability,
@@ -64932,9 +65081,9 @@ var NC_SYSTEM_EVENT_FILTER_KEYS = [
64932
65081
  */
64933
65082
  function systemEventFilterApplies(kind, filter) {
64934
65083
  switch (filter) {
64935
- case "deviceIds": return kind.startsWith("device-") || kind.startsWith("stream-") || kind === "detection-blind" || kind === "alarm-triggered";
65084
+ case "deviceIds": return kind.startsWith("device-") || kind.startsWith("stream-") || kind === "detection-blind" || kind.startsWith("recording-") || kind === "alarm-triggered";
64936
65085
  case "deviceTypes": return kind.startsWith("device-") || kind === "detection-blind";
64937
- case "nodeIds": return kind.startsWith("node-") || kind === "addon-crash-loop" || kind === "addon-update-available" || kind === "addon-updated" || kind === "server-update-available" || kind === "wrapper-update-available" || kind === "server-updated";
65086
+ case "nodeIds": return kind.startsWith("node-") || kind === "addon-crash-loop" || kind === "addon-update-available" || kind === "addon-updated" || kind === "server-update-available" || kind === "wrapper-update-available" || kind === "server-updated" || kind.startsWith("storage-location-");
64938
65087
  case "packageNames": return kind.endsWith("update-available") || kind === "addon-updated" || kind === "node-updating" || kind === "server-updated";
64939
65088
  case "consumableLowPercent": return NC_CONSUMABLE_SYSTEM_EVENT_KINDS.includes(kind);
64940
65089
  }
@@ -64978,6 +65127,9 @@ var NC_SYSTEM_EVENT_FAMILY = {
64978
65127
  "stream-online": "device-events",
64979
65128
  "stream-offline": "device-events",
64980
65129
  "detection-blind": "device-events",
65130
+ "recording-stalled": "device-events",
65131
+ "recording-healthy": "device-events",
65132
+ "recording-degraded": "device-events",
64981
65133
  "node-online": "system",
64982
65134
  "node-offline": "system",
64983
65135
  "node-restarting": "system",
@@ -64991,6 +65143,9 @@ var NC_SYSTEM_EVENT_FAMILY = {
64991
65143
  "wrapper-update-available": "system",
64992
65144
  "backup-completed": "system",
64993
65145
  "export-completed": "system",
65146
+ "storage-location-low": "system",
65147
+ "storage-location-critical": "system",
65148
+ "storage-location-ok": "system",
64994
65149
  "alarm-triggered": "alarm",
64995
65150
  "alarm-armed": "alarm",
64996
65151
  "alarm-disarmed": "alarm",
@@ -65070,6 +65225,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
65070
65225
  label: "Detecting nothing",
65071
65226
  kinds: ["detection-blind"]
65072
65227
  },
65228
+ {
65229
+ id: "recording",
65230
+ family: "device-events",
65231
+ label: "Recording",
65232
+ kinds: [
65233
+ "recording-stalled",
65234
+ "recording-healthy",
65235
+ "recording-degraded"
65236
+ ]
65237
+ },
65073
65238
  {
65074
65239
  id: "nodes",
65075
65240
  family: "system",
@@ -65110,6 +65275,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
65110
65275
  label: "Backups & exports",
65111
65276
  kinds: ["backup-completed", "export-completed"]
65112
65277
  },
65278
+ {
65279
+ id: "storage",
65280
+ family: "system",
65281
+ label: "Storage locations",
65282
+ kinds: [
65283
+ "storage-location-low",
65284
+ "storage-location-critical",
65285
+ "storage-location-ok"
65286
+ ]
65287
+ },
65113
65288
  {
65114
65289
  id: "alarm",
65115
65290
  family: "alarm",
@@ -65959,6 +66134,9 @@ var DEVICE_EVENTS = [
65959
66134
  "stream-online",
65960
66135
  "stream-offline",
65961
66136
  "detection-blind",
66137
+ "recording-stalled",
66138
+ "recording-healthy",
66139
+ "recording-degraded",
65962
66140
  ...ALARM
65963
66141
  ];
65964
66142
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_clip_model_registry = require("../clip-model-registry-BbMM8NiG.js");
5
+ const require_clip_model_registry = require("../clip-model-registry-CwcMHf4e.js");
6
6
  let node_fs = require("node:fs");
7
7
  node_fs = require_clip_model_registry.__toESM(node_fs);
8
8
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { $n as embeddingRequirementsFailedError, Ar as parseProcStatus, Qt as PoolMemoryWatchdog, Ti as normalizeNodeId, Vr as resolvePoolMemoryPolicy, Xn as embeddingEncoderCapability, Zn as embeddingModelFailedError, _i as BaseAddon, a as CLIP_EMBEDDING_STEP_ID, c as resolveClusterModelPin, er as embeddingRequirementsUnavailableError, i as CLIP_TEXT_MODELS, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS } from "../clip-model-registry-5n-tonTt.mjs";
1
+ import { $n as embeddingRequirementsFailedError, Ar as parseProcStatus, Qt as PoolMemoryWatchdog, Ti as normalizeNodeId, Vr as resolvePoolMemoryPolicy, Xn as embeddingEncoderCapability, Zn as embeddingModelFailedError, _i as BaseAddon, a as CLIP_EMBEDDING_STEP_ID, c as resolveClusterModelPin, er as embeddingRequirementsUnavailableError, i as CLIP_TEXT_MODELS, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS } from "../clip-model-registry-CeXEX5AW.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import * as fs from "node:fs";
4
4
  import * as path$1 from "node:path";
@@ -1,8 +1,8 @@
1
1
  import { a as e, i as t, n, o as r, r as i, t as a } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.js-C0AuF9av.mjs";
2
2
  import { t as o } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-B3Wx5J80.mjs";
3
- import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DXfGbC3e.mjs";
3
+ import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-X_26tehC.mjs";
4
4
  import { n as m, r as h, t as g } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-Bm-iyjmq.mjs";
5
- import { t as _ } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BIILaJf_.mjs";
5
+ import { t as _ } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-ckM_CHJd.mjs";
6
6
  //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
7
7
  var v = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), y = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), b = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), x = (e) => {
8
8
  let t = b(e);