@camstack/addon-training 0.1.77 → 0.1.78

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 (21) hide show
  1. package/dist/{MotionZonesSettings-DW358mxE.mjs → MotionZonesSettings-jORey4uC.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-8OQfCROj.mjs → PrivacyMaskSettings-P24unULW.mjs} +2 -2
  3. package/dist/{SceneMonitorEditor-D8KPyVBc.mjs → SceneMonitorEditor-CkLN8Kee.mjs} +1 -1
  4. package/dist/_stub.js +5444 -5218
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-pvaNdWyD.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-BbQzUVOo.mjs} +3 -3
  6. package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DiRkx0UL.mjs +26 -0
  7. package/dist/addon-training.css +1 -1
  8. package/dist/{dist-0l-u0kED.js → dist-CKiSDi2Y.js} +91 -88
  9. package/dist/{dist--WYP29ef.mjs → dist-DeD2tKQ2.mjs} +91 -88
  10. package/dist/{hostInit-C8nnpFIy.mjs → hostInit-ndHJ_k8s.mjs} +2 -2
  11. package/dist/index.js +1 -1
  12. package/dist/orchestrator/training.addon.js +1 -1
  13. package/dist/orchestrator/training.addon.mjs +1 -1
  14. package/dist/{player-overlays-DUX0-57y.mjs → player-overlays-CD0eup2L.mjs} +1 -1
  15. package/dist/providers/modal/training-modal.addon.js +1 -1
  16. package/dist/providers/modal/training-modal.addon.mjs +1 -1
  17. package/dist/remoteEntry.js +1 -1
  18. package/dist/{responsive-LBIGYpcj.mjs → responsive-CBG3O0ME.mjs} +1 -1
  19. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-CMBXXfj3.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-X4iAyyQb.mjs} +1 -1
  20. package/package.json +1 -1
  21. package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-qjGlK6dB.mjs +0 -26
@@ -32,7 +32,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
32
32
  }) : target, mod));
33
33
  var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod);
34
34
  require("node:crypto");
35
- //#region ../types/dist/event-category-fDPduoeC.mjs
35
+ //#region ../types/dist/event-category-Ceif8n-v.mjs
36
36
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
37
37
  EventCategory["SystemBoot"] = "system.boot";
38
38
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -504,6 +504,10 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
504
504
  * on the device detail page.
505
505
  */
506
506
  EventCategory["DoorbellOnPressed"] = "doorbell.onPressed";
507
+ /** Mirrors `runningStateCapability.events.onStarted`. */
508
+ EventCategory["RunningStarted"] = "running.started";
509
+ /** Mirrors `runningStateCapability.events.onFinished`. */
510
+ EventCategory["RunningFinished"] = "running.finished";
507
511
  /**
508
512
  * Cap event fired by every device that registers the `event-emitter`
509
513
  * capability. Mirrors `eventEmitterCapability.events.onEvent`. Carries
@@ -5596,7 +5600,7 @@ var ZodIssueCode = {
5596
5600
  var ZodFirstPartyTypeKind;
5597
5601
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5598
5602
  //#endregion
5599
- //#region ../types/dist/sleep-CHIEEJkY.mjs
5603
+ //#region ../types/dist/sleep-CYfIZzGv.mjs
5600
5604
  /**
5601
5605
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5602
5606
  * window to float samples (D455).
@@ -5935,7 +5939,7 @@ Object.fromEntries([
5935
5939
  * `hydrateSchema` to skip the `value` injection for structural-only fields.
5936
5940
  */
5937
5941
  function isValuelessField(field) {
5938
- return field.type === "separator" || field.type === "info" || field.type === "qr-code" || field.type === "button" || field.type === "object-array" || field.type === "widget" || field.type === "addon-action-button" || field.type === "device-action-button";
5942
+ return field.type === "separator" || field.type === "info" || field.type === "qr-code" || field.type === "button" || field.type === "object-array" || field.type === "widget" || field.type === "addon-action-button" || field.type === "device-action-button" || field.type === "account-sign-in" || field.type === "secret-presence";
5939
5943
  }
5940
5944
  function hydrateSchema(schema, values, options = {}) {
5941
5945
  return {
@@ -9144,7 +9148,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
9144
9148
  return DeviceRole;
9145
9149
  }({});
9146
9150
  //#endregion
9147
- //#region ../types/dist/composition-CB6PMT9p.mjs
9151
+ //#region ../types/dist/composition-xz-ud5EQ.mjs
9148
9152
  /**
9149
9153
  * The ffmpeg build every CamStack node downloads, per platform and arch.
9150
9154
  *
@@ -9445,6 +9449,20 @@ var table = {
9445
9449
  apply: () => {
9446
9450
  throw new ExpressionEvalError("count: stateful evaluation context is required");
9447
9451
  }
9452
+ },
9453
+ dwell: {
9454
+ minArgs: 3,
9455
+ maxArgs: 3,
9456
+ apply: () => {
9457
+ throw new ExpressionEvalError("dwell: stateful evaluation context is required");
9458
+ }
9459
+ },
9460
+ latchedAt: {
9461
+ minArgs: 1,
9462
+ maxArgs: 1,
9463
+ apply: () => {
9464
+ throw new ExpressionEvalError("latchedAt: stateful evaluation context is required");
9465
+ }
9448
9466
  }
9449
9467
  };
9450
9468
  Object.freeze(Object.assign(Object.create(null), table));
@@ -16323,7 +16341,15 @@ Object.freeze({
16323
16341
  kind: "fixed",
16324
16342
  result: ["number", "null"]
16325
16343
  },
16326
- count: NUMBER
16344
+ count: NUMBER,
16345
+ dwell: {
16346
+ kind: "fixed",
16347
+ result: ["boolean", "null"]
16348
+ },
16349
+ latchedAt: {
16350
+ kind: "fixed",
16351
+ result: ["number", "null"]
16352
+ }
16327
16353
  });
16328
16354
  `${COMPOSED_DEVICE_STABLE_ID_PREFIX}`;
16329
16355
  /**
@@ -42517,9 +42543,6 @@ var NcSystemEventKindSchema = _enum([
42517
42543
  "device-battery-normal",
42518
42544
  "device-consumable-low",
42519
42545
  "device-consumable-normal",
42520
- "device-tank-low",
42521
- "device-tank-full",
42522
- "device-tank-normal",
42523
42546
  "stream-online",
42524
42547
  "stream-offline",
42525
42548
  "node-online",
@@ -42566,13 +42589,14 @@ var NcSystemEventKindSchema = _enum([
42566
42589
  "camera-enabled"
42567
42590
  ]);
42568
42591
  /** The legacy tail of {@link NcSystemEventKindSchema} — see its docblock. */
42569
- var NC_LEGACY_SYSTEM_EVENT_KINDS = new Set([
42592
+ var NC_LEGACY_SYSTEM_EVENT_KINDS = [
42570
42593
  "camera-online",
42571
42594
  "camera-offline",
42572
42595
  "camera-disabled",
42573
42596
  "camera-enabled"
42574
- ]);
42575
- NcSystemEventKindSchema.options.filter((kind) => !NC_LEGACY_SYSTEM_EVENT_KINDS.has(kind));
42597
+ ];
42598
+ var NC_LEGACY_SYSTEM_EVENT_KIND_SET = new Set(NC_LEGACY_SYSTEM_EVENT_KINDS);
42599
+ NcSystemEventKindSchema.options.filter((kind) => !NC_LEGACY_SYSTEM_EVENT_KIND_SET.has(kind));
42576
42600
  /**
42577
42601
  * The panel's transitions, as ONE list.
42578
42602
  *
@@ -43691,18 +43715,11 @@ var NcRuleSchema = NcRuleInputSchema.extend({
43691
43715
  */
43692
43716
  disabledTargetIds: array(string()).default([])
43693
43717
  });
43694
- /**
43695
- * The state-summary SECTIONS (D647 / D698 / D708): the D637 kind groups that
43696
- * report a still-true state. `addons` is the crash-looped addons only and
43697
- * `addon-updates` the addons that are behind (D708 split them). `backups-exports` and `alarm` are not sections — a completed
43698
- * job is not an open state, and the alarm stays instant.
43699
- */
43700
43718
  var NcStateSummarySectionIdSchema = _enum([
43701
43719
  "device-state",
43702
43720
  "streams",
43703
43721
  "battery",
43704
43722
  "consumables",
43705
- "tanks",
43706
43723
  "detection-blind",
43707
43724
  "nodes",
43708
43725
  "addons",
@@ -59101,6 +59118,22 @@ DeviceType.Camera, method(object({ deviceId: number() }), PtzAutotrackStatusSche
59101
59118
  deviceId: number(),
59102
59119
  status: PtzAutotrackStatusSchema
59103
59120
  });
59121
+ var RunningStateSourceSchema = _enum(["native", "assigned"]);
59122
+ object({
59123
+ /** null = unknown — never coerced to false (D393). */
59124
+ running: boolean().nullable(),
59125
+ /** Epoch ms the current boolean began; null while `running` is null. */
59126
+ since: number().nullable(),
59127
+ source: RunningStateSourceSchema,
59128
+ phase: string().nullable(),
59129
+ lastFetchedAt: number()
59130
+ });
59131
+ object({
59132
+ deviceId: number(),
59133
+ since: number().nullable(),
59134
+ phase: string().nullable()
59135
+ });
59136
+ Object.values(DeviceType);
59104
59137
  DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, method(object({ deviceId: number().int().nonnegative() }), object({ success: literal(true) }), {
59105
59138
  kind: "mutation",
59106
59139
  auth: "admin"
@@ -70497,6 +70530,13 @@ Object.freeze({
70497
70530
  access: "create",
70498
70531
  role: "admin"
70499
70532
  },
70533
+ "runningState.getStatus": {
70534
+ capName: "running-state",
70535
+ capScope: "device",
70536
+ addonId: null,
70537
+ access: "view",
70538
+ role: "viewer"
70539
+ },
70500
70540
  "sceneMonitor.captureReference": {
70501
70541
  capName: "scene-monitor",
70502
70542
  capScope: "device",
@@ -75211,6 +75251,32 @@ var APPLIANCE_CAP_VOCABULARY = {
75211
75251
  }],
75212
75252
  events: { onSent: { notOperatorFacing: "a delivery receipt of a send this system made — not a fact about the world" } }
75213
75253
  },
75254
+ "running-state": {
75255
+ scope: "device",
75256
+ noun: t("Running", "In funzione"),
75257
+ state: [{
75258
+ kind: "boolean",
75259
+ field: "running",
75260
+ label: t("Running", "In funzione"),
75261
+ whenTrue: t("When {device} starts", "Quando {device} inizia"),
75262
+ whenFalse: t("When {device} finishes", "Quando {device} finisce"),
75263
+ icon: "play"
75264
+ }],
75265
+ events: {
75266
+ onStarted: {
75267
+ category: EventCategory.RunningStarted,
75268
+ label: t("Started running", "Ha iniziato a funzionare"),
75269
+ phrase: t("When {device} starts running", "Quando {device} inizia a funzionare"),
75270
+ icon: "play"
75271
+ },
75272
+ onFinished: {
75273
+ category: EventCategory.RunningFinished,
75274
+ label: t("Finished", "Ha finito"),
75275
+ phrase: t("When {device} finishes", "Quando {device} finisce"),
75276
+ icon: "square"
75277
+ }
75278
+ }
75279
+ },
75214
75280
  update: {
75215
75281
  scope: "device",
75216
75282
  noun: t("Firmware update", "Aggiornamento firmware"),
@@ -78751,6 +78817,11 @@ Object.freeze({
78751
78817
  form: "single",
78752
78818
  optional: true
78753
78819
  }],
78820
+ "runningState.getStatus": [{
78821
+ name: "deviceId",
78822
+ form: "single",
78823
+ optional: false
78824
+ }],
78754
78825
  "sceneMonitor.captureReference": [{
78755
78826
  name: "deviceId",
78756
78827
  form: "single",
@@ -79301,40 +79372,7 @@ var NC_AUDIO_DEFAULTS = {
79301
79372
  samplingSeconds: 10
79302
79373
  };
79303
79374
  new Set(["devices", "classes"]);
79304
- /**
79305
- * WHICH narrowing filter speaks about WHICH system-event kind — one predicate,
79306
- * consumed by the rule ENGINE and by every rule EDITOR.
79307
- *
79308
- * ── The failure this file exists for ───────────────────────────────────────
79309
- * `NcSystemEventConditionSchema` carries four optional narrowing lists
79310
- * (`deviceIds`, `deviceTypes`, `nodeIds`, `packageNames`) beside a required
79311
- * `kinds` gate. They are not four filters over one vocabulary: each belongs to
79312
- * a FAMILY of kinds and is meaningless outside it. A node going away has no
79313
- * device type; a completed export has no package; `stream-offline` deliberately
79314
- * carries no device type at all (a stream belongs to a camera by construction).
79315
- *
79316
- * The engine applied all four to every kind, so a filter from one family failed
79317
- * a kind from another family CLOSED. The operator's live rule "Eventi di
79318
- * sistema" selected eleven kinds and set `deviceTypes: ['camera']` — the only
79319
- * way to say "only my cameras" about the two liveness kinds — and NINE of the
79320
- * eleven silently stopped being deliverable. Four days of history contained
79321
- * `device-online` and `device-offline` and nothing else, across a window in
79322
- * which agents were restarted and addons were updated.
79323
- *
79324
- * Both editors already computed this scoping, to decide which filter boxes to
79325
- * render; the cap's own docblock already promised it ("Narrow a `device-*` kind
79326
- * to these device TYPES"). Only the engine disagreed, and it disagreed in the
79327
- * destructive direction. So the rule is stated ONCE, here, and the engine and
79328
- * the editors are readers of it rather than three independent authors.
79329
- *
79330
- * ── The direction ─────────────────────────────────────────────────────────
79331
- * Out of family ⇒ the filter is IGNORED, never fail-closed. An editor that
79332
- * hides a box has already told the operator this filter does not speak about
79333
- * these kinds, so honouring it as an exclusion contradicts the only
79334
- * explanation the operator was ever given. Inside its family the filter still
79335
- * narrows, and still fails CLOSED on a subject that cannot produce the identity
79336
- * it tests (a device the mirror cannot name is not evidence of a camera).
79337
- */
79375
+ new Set(NC_LEGACY_SYSTEM_EVENT_KINDS);
79338
79376
  /**
79339
79377
  * Every filter, for the callers that must cover all of them (guards, tests).
79340
79378
  *
@@ -79360,9 +79398,6 @@ new Map(Object.entries({
79360
79398
  "device-battery-normal": "device-events",
79361
79399
  "device-consumable-low": "device-events",
79362
79400
  "device-consumable-normal": "device-events",
79363
- "device-tank-low": "device-events",
79364
- "device-tank-full": "device-events",
79365
- "device-tank-normal": "device-events",
79366
79401
  "stream-online": "device-events",
79367
79402
  "stream-offline": "device-events",
79368
79403
  "detection-blind": "device-events",
@@ -79439,16 +79474,6 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79439
79474
  label: "Consumables",
79440
79475
  kinds: ["device-consumable-low", "device-consumable-normal"]
79441
79476
  },
79442
- {
79443
- id: "tanks",
79444
- family: "device-events",
79445
- label: "Tanks",
79446
- kinds: [
79447
- "device-tank-low",
79448
- "device-tank-full",
79449
- "device-tank-normal"
79450
- ]
79451
- },
79452
79477
  {
79453
79478
  id: "detection-blind",
79454
79479
  family: "device-events",
@@ -79606,11 +79631,6 @@ var RULE_BODY_ONLY = ["body"];
79606
79631
  var RULE_TEXT = ["title", "body"];
79607
79632
  var BATTERY = ["device-battery-low", "device-battery-normal"];
79608
79633
  var CONSUMABLE = ["device-consumable-low", "device-consumable-normal"];
79609
- var TANK = [
79610
- "device-tank-low",
79611
- "device-tank-full",
79612
- "device-tank-normal"
79613
- ];
79614
79634
  var ALERT_EPISODE = [
79615
79635
  "alert-critical",
79616
79636
  "alert-error",
@@ -79642,7 +79662,6 @@ var DEVICE_EVENTS = [
79642
79662
  "device-enabled",
79643
79663
  ...BATTERY,
79644
79664
  ...CONSUMABLE,
79645
- ...TANK,
79646
79665
  "stream-online",
79647
79666
  "stream-offline",
79648
79667
  "detection-blind",
@@ -79688,12 +79707,6 @@ var STATE_SUMMARY_SECTION_VARS = [
79688
79707
  example: "Robot — filter 10 %",
79689
79708
  kinds: CONSUMABLE
79690
79709
  },
79691
- {
79692
- name: "summaryTanks",
79693
- label: "Summary: tanks",
79694
- example: "Robot — clean water low",
79695
- kinds: TANK
79696
- },
79697
79710
  {
79698
79711
  name: "summaryDetection",
79699
79712
  label: "Summary: cameras detecting nothing",
@@ -79809,8 +79822,7 @@ var STATE_SUMMARY_VARS = [
79809
79822
  ([...RULE_TEXT], [...COMBINED_ALARM]),
79810
79823
  ([...RULE_TEXT], [...DEVICE_EVENTS]),
79811
79824
  ([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
79812
- ([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
79813
- ([...RULE_TEXT], [...TANK]),
79825
+ ([...RULE_TEXT], [...CONSUMABLE]),
79814
79826
  [...RULE_TEXT],
79815
79827
  ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
79816
79828
  ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
@@ -79914,15 +79926,6 @@ new Map([
79914
79926
  snapshotLabel: "Consumables low now",
79915
79927
  snapshotSection: "consumables"
79916
79928
  },
79917
- {
79918
- id: "tanks",
79919
- family: "device-events",
79920
- label: "Tanks (low or full / back to normal)",
79921
- bad: ["device-tank-low", "device-tank-full"],
79922
- recovery: ["device-tank-normal"],
79923
- snapshotLabel: "Tanks low or full now",
79924
- snapshotSection: "tanks"
79925
- },
79926
79929
  {
79927
79930
  id: "motion-noise",
79928
79931
  family: "device-events",
@@ -1,5 +1,5 @@
1
1
  import "node:crypto";
2
- //#region ../types/dist/event-category-fDPduoeC.mjs
2
+ //#region ../types/dist/event-category-Ceif8n-v.mjs
3
3
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
4
4
  EventCategory["SystemBoot"] = "system.boot";
5
5
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -471,6 +471,10 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
471
471
  * on the device detail page.
472
472
  */
473
473
  EventCategory["DoorbellOnPressed"] = "doorbell.onPressed";
474
+ /** Mirrors `runningStateCapability.events.onStarted`. */
475
+ EventCategory["RunningStarted"] = "running.started";
476
+ /** Mirrors `runningStateCapability.events.onFinished`. */
477
+ EventCategory["RunningFinished"] = "running.finished";
474
478
  /**
475
479
  * Cap event fired by every device that registers the `event-emitter`
476
480
  * capability. Mirrors `eventEmitterCapability.events.onEvent`. Carries
@@ -5563,7 +5567,7 @@ var ZodIssueCode = {
5563
5567
  var ZodFirstPartyTypeKind;
5564
5568
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5565
5569
  //#endregion
5566
- //#region ../types/dist/sleep-CHIEEJkY.mjs
5570
+ //#region ../types/dist/sleep-CYfIZzGv.mjs
5567
5571
  /**
5568
5572
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5569
5573
  * window to float samples (D455).
@@ -5902,7 +5906,7 @@ Object.fromEntries([
5902
5906
  * `hydrateSchema` to skip the `value` injection for structural-only fields.
5903
5907
  */
5904
5908
  function isValuelessField(field) {
5905
- return field.type === "separator" || field.type === "info" || field.type === "qr-code" || field.type === "button" || field.type === "object-array" || field.type === "widget" || field.type === "addon-action-button" || field.type === "device-action-button";
5909
+ return field.type === "separator" || field.type === "info" || field.type === "qr-code" || field.type === "button" || field.type === "object-array" || field.type === "widget" || field.type === "addon-action-button" || field.type === "device-action-button" || field.type === "account-sign-in" || field.type === "secret-presence";
5906
5910
  }
5907
5911
  function hydrateSchema(schema, values, options = {}) {
5908
5912
  return {
@@ -9111,7 +9115,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
9111
9115
  return DeviceRole;
9112
9116
  }({});
9113
9117
  //#endregion
9114
- //#region ../types/dist/composition-CB6PMT9p.mjs
9118
+ //#region ../types/dist/composition-xz-ud5EQ.mjs
9115
9119
  /**
9116
9120
  * The ffmpeg build every CamStack node downloads, per platform and arch.
9117
9121
  *
@@ -9412,6 +9416,20 @@ var table = {
9412
9416
  apply: () => {
9413
9417
  throw new ExpressionEvalError("count: stateful evaluation context is required");
9414
9418
  }
9419
+ },
9420
+ dwell: {
9421
+ minArgs: 3,
9422
+ maxArgs: 3,
9423
+ apply: () => {
9424
+ throw new ExpressionEvalError("dwell: stateful evaluation context is required");
9425
+ }
9426
+ },
9427
+ latchedAt: {
9428
+ minArgs: 1,
9429
+ maxArgs: 1,
9430
+ apply: () => {
9431
+ throw new ExpressionEvalError("latchedAt: stateful evaluation context is required");
9432
+ }
9415
9433
  }
9416
9434
  };
9417
9435
  Object.freeze(Object.assign(Object.create(null), table));
@@ -16290,7 +16308,15 @@ Object.freeze({
16290
16308
  kind: "fixed",
16291
16309
  result: ["number", "null"]
16292
16310
  },
16293
- count: NUMBER
16311
+ count: NUMBER,
16312
+ dwell: {
16313
+ kind: "fixed",
16314
+ result: ["boolean", "null"]
16315
+ },
16316
+ latchedAt: {
16317
+ kind: "fixed",
16318
+ result: ["number", "null"]
16319
+ }
16294
16320
  });
16295
16321
  `${COMPOSED_DEVICE_STABLE_ID_PREFIX}`;
16296
16322
  /**
@@ -42484,9 +42510,6 @@ var NcSystemEventKindSchema = _enum([
42484
42510
  "device-battery-normal",
42485
42511
  "device-consumable-low",
42486
42512
  "device-consumable-normal",
42487
- "device-tank-low",
42488
- "device-tank-full",
42489
- "device-tank-normal",
42490
42513
  "stream-online",
42491
42514
  "stream-offline",
42492
42515
  "node-online",
@@ -42533,13 +42556,14 @@ var NcSystemEventKindSchema = _enum([
42533
42556
  "camera-enabled"
42534
42557
  ]);
42535
42558
  /** The legacy tail of {@link NcSystemEventKindSchema} — see its docblock. */
42536
- var NC_LEGACY_SYSTEM_EVENT_KINDS = new Set([
42559
+ var NC_LEGACY_SYSTEM_EVENT_KINDS = [
42537
42560
  "camera-online",
42538
42561
  "camera-offline",
42539
42562
  "camera-disabled",
42540
42563
  "camera-enabled"
42541
- ]);
42542
- NcSystemEventKindSchema.options.filter((kind) => !NC_LEGACY_SYSTEM_EVENT_KINDS.has(kind));
42564
+ ];
42565
+ var NC_LEGACY_SYSTEM_EVENT_KIND_SET = new Set(NC_LEGACY_SYSTEM_EVENT_KINDS);
42566
+ NcSystemEventKindSchema.options.filter((kind) => !NC_LEGACY_SYSTEM_EVENT_KIND_SET.has(kind));
42543
42567
  /**
42544
42568
  * The panel's transitions, as ONE list.
42545
42569
  *
@@ -43658,18 +43682,11 @@ var NcRuleSchema = NcRuleInputSchema.extend({
43658
43682
  */
43659
43683
  disabledTargetIds: array(string()).default([])
43660
43684
  });
43661
- /**
43662
- * The state-summary SECTIONS (D647 / D698 / D708): the D637 kind groups that
43663
- * report a still-true state. `addons` is the crash-looped addons only and
43664
- * `addon-updates` the addons that are behind (D708 split them). `backups-exports` and `alarm` are not sections — a completed
43665
- * job is not an open state, and the alarm stays instant.
43666
- */
43667
43685
  var NcStateSummarySectionIdSchema = _enum([
43668
43686
  "device-state",
43669
43687
  "streams",
43670
43688
  "battery",
43671
43689
  "consumables",
43672
- "tanks",
43673
43690
  "detection-blind",
43674
43691
  "nodes",
43675
43692
  "addons",
@@ -59068,6 +59085,22 @@ DeviceType.Camera, method(object({ deviceId: number() }), PtzAutotrackStatusSche
59068
59085
  deviceId: number(),
59069
59086
  status: PtzAutotrackStatusSchema
59070
59087
  });
59088
+ var RunningStateSourceSchema = _enum(["native", "assigned"]);
59089
+ object({
59090
+ /** null = unknown — never coerced to false (D393). */
59091
+ running: boolean().nullable(),
59092
+ /** Epoch ms the current boolean began; null while `running` is null. */
59093
+ since: number().nullable(),
59094
+ source: RunningStateSourceSchema,
59095
+ phase: string().nullable(),
59096
+ lastFetchedAt: number()
59097
+ });
59098
+ object({
59099
+ deviceId: number(),
59100
+ since: number().nullable(),
59101
+ phase: string().nullable()
59102
+ });
59103
+ Object.values(DeviceType);
59071
59104
  DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, method(object({ deviceId: number().int().nonnegative() }), object({ success: literal(true) }), {
59072
59105
  kind: "mutation",
59073
59106
  auth: "admin"
@@ -70464,6 +70497,13 @@ Object.freeze({
70464
70497
  access: "create",
70465
70498
  role: "admin"
70466
70499
  },
70500
+ "runningState.getStatus": {
70501
+ capName: "running-state",
70502
+ capScope: "device",
70503
+ addonId: null,
70504
+ access: "view",
70505
+ role: "viewer"
70506
+ },
70467
70507
  "sceneMonitor.captureReference": {
70468
70508
  capName: "scene-monitor",
70469
70509
  capScope: "device",
@@ -75178,6 +75218,32 @@ var APPLIANCE_CAP_VOCABULARY = {
75178
75218
  }],
75179
75219
  events: { onSent: { notOperatorFacing: "a delivery receipt of a send this system made — not a fact about the world" } }
75180
75220
  },
75221
+ "running-state": {
75222
+ scope: "device",
75223
+ noun: t("Running", "In funzione"),
75224
+ state: [{
75225
+ kind: "boolean",
75226
+ field: "running",
75227
+ label: t("Running", "In funzione"),
75228
+ whenTrue: t("When {device} starts", "Quando {device} inizia"),
75229
+ whenFalse: t("When {device} finishes", "Quando {device} finisce"),
75230
+ icon: "play"
75231
+ }],
75232
+ events: {
75233
+ onStarted: {
75234
+ category: EventCategory.RunningStarted,
75235
+ label: t("Started running", "Ha iniziato a funzionare"),
75236
+ phrase: t("When {device} starts running", "Quando {device} inizia a funzionare"),
75237
+ icon: "play"
75238
+ },
75239
+ onFinished: {
75240
+ category: EventCategory.RunningFinished,
75241
+ label: t("Finished", "Ha finito"),
75242
+ phrase: t("When {device} finishes", "Quando {device} finisce"),
75243
+ icon: "square"
75244
+ }
75245
+ }
75246
+ },
75181
75247
  update: {
75182
75248
  scope: "device",
75183
75249
  noun: t("Firmware update", "Aggiornamento firmware"),
@@ -78718,6 +78784,11 @@ Object.freeze({
78718
78784
  form: "single",
78719
78785
  optional: true
78720
78786
  }],
78787
+ "runningState.getStatus": [{
78788
+ name: "deviceId",
78789
+ form: "single",
78790
+ optional: false
78791
+ }],
78721
78792
  "sceneMonitor.captureReference": [{
78722
78793
  name: "deviceId",
78723
78794
  form: "single",
@@ -79268,40 +79339,7 @@ var NC_AUDIO_DEFAULTS = {
79268
79339
  samplingSeconds: 10
79269
79340
  };
79270
79341
  new Set(["devices", "classes"]);
79271
- /**
79272
- * WHICH narrowing filter speaks about WHICH system-event kind — one predicate,
79273
- * consumed by the rule ENGINE and by every rule EDITOR.
79274
- *
79275
- * ── The failure this file exists for ───────────────────────────────────────
79276
- * `NcSystemEventConditionSchema` carries four optional narrowing lists
79277
- * (`deviceIds`, `deviceTypes`, `nodeIds`, `packageNames`) beside a required
79278
- * `kinds` gate. They are not four filters over one vocabulary: each belongs to
79279
- * a FAMILY of kinds and is meaningless outside it. A node going away has no
79280
- * device type; a completed export has no package; `stream-offline` deliberately
79281
- * carries no device type at all (a stream belongs to a camera by construction).
79282
- *
79283
- * The engine applied all four to every kind, so a filter from one family failed
79284
- * a kind from another family CLOSED. The operator's live rule "Eventi di
79285
- * sistema" selected eleven kinds and set `deviceTypes: ['camera']` — the only
79286
- * way to say "only my cameras" about the two liveness kinds — and NINE of the
79287
- * eleven silently stopped being deliverable. Four days of history contained
79288
- * `device-online` and `device-offline` and nothing else, across a window in
79289
- * which agents were restarted and addons were updated.
79290
- *
79291
- * Both editors already computed this scoping, to decide which filter boxes to
79292
- * render; the cap's own docblock already promised it ("Narrow a `device-*` kind
79293
- * to these device TYPES"). Only the engine disagreed, and it disagreed in the
79294
- * destructive direction. So the rule is stated ONCE, here, and the engine and
79295
- * the editors are readers of it rather than three independent authors.
79296
- *
79297
- * ── The direction ─────────────────────────────────────────────────────────
79298
- * Out of family ⇒ the filter is IGNORED, never fail-closed. An editor that
79299
- * hides a box has already told the operator this filter does not speak about
79300
- * these kinds, so honouring it as an exclusion contradicts the only
79301
- * explanation the operator was ever given. Inside its family the filter still
79302
- * narrows, and still fails CLOSED on a subject that cannot produce the identity
79303
- * it tests (a device the mirror cannot name is not evidence of a camera).
79304
- */
79342
+ new Set(NC_LEGACY_SYSTEM_EVENT_KINDS);
79305
79343
  /**
79306
79344
  * Every filter, for the callers that must cover all of them (guards, tests).
79307
79345
  *
@@ -79327,9 +79365,6 @@ new Map(Object.entries({
79327
79365
  "device-battery-normal": "device-events",
79328
79366
  "device-consumable-low": "device-events",
79329
79367
  "device-consumable-normal": "device-events",
79330
- "device-tank-low": "device-events",
79331
- "device-tank-full": "device-events",
79332
- "device-tank-normal": "device-events",
79333
79368
  "stream-online": "device-events",
79334
79369
  "stream-offline": "device-events",
79335
79370
  "detection-blind": "device-events",
@@ -79406,16 +79441,6 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79406
79441
  label: "Consumables",
79407
79442
  kinds: ["device-consumable-low", "device-consumable-normal"]
79408
79443
  },
79409
- {
79410
- id: "tanks",
79411
- family: "device-events",
79412
- label: "Tanks",
79413
- kinds: [
79414
- "device-tank-low",
79415
- "device-tank-full",
79416
- "device-tank-normal"
79417
- ]
79418
- },
79419
79444
  {
79420
79445
  id: "detection-blind",
79421
79446
  family: "device-events",
@@ -79573,11 +79598,6 @@ var RULE_BODY_ONLY = ["body"];
79573
79598
  var RULE_TEXT = ["title", "body"];
79574
79599
  var BATTERY = ["device-battery-low", "device-battery-normal"];
79575
79600
  var CONSUMABLE = ["device-consumable-low", "device-consumable-normal"];
79576
- var TANK = [
79577
- "device-tank-low",
79578
- "device-tank-full",
79579
- "device-tank-normal"
79580
- ];
79581
79601
  var ALERT_EPISODE = [
79582
79602
  "alert-critical",
79583
79603
  "alert-error",
@@ -79609,7 +79629,6 @@ var DEVICE_EVENTS = [
79609
79629
  "device-enabled",
79610
79630
  ...BATTERY,
79611
79631
  ...CONSUMABLE,
79612
- ...TANK,
79613
79632
  "stream-online",
79614
79633
  "stream-offline",
79615
79634
  "detection-blind",
@@ -79655,12 +79674,6 @@ var STATE_SUMMARY_SECTION_VARS = [
79655
79674
  example: "Robot — filter 10 %",
79656
79675
  kinds: CONSUMABLE
79657
79676
  },
79658
- {
79659
- name: "summaryTanks",
79660
- label: "Summary: tanks",
79661
- example: "Robot — clean water low",
79662
- kinds: TANK
79663
- },
79664
79677
  {
79665
79678
  name: "summaryDetection",
79666
79679
  label: "Summary: cameras detecting nothing",
@@ -79776,8 +79789,7 @@ var STATE_SUMMARY_VARS = [
79776
79789
  ([...RULE_TEXT], [...COMBINED_ALARM]),
79777
79790
  ([...RULE_TEXT], [...DEVICE_EVENTS]),
79778
79791
  ([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
79779
- ([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
79780
- ([...RULE_TEXT], [...TANK]),
79792
+ ([...RULE_TEXT], [...CONSUMABLE]),
79781
79793
  [...RULE_TEXT],
79782
79794
  ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
79783
79795
  ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
@@ -79881,15 +79893,6 @@ new Map([
79881
79893
  snapshotLabel: "Consumables low now",
79882
79894
  snapshotSection: "consumables"
79883
79895
  },
79884
- {
79885
- id: "tanks",
79886
- family: "device-events",
79887
- label: "Tanks (low or full / back to normal)",
79888
- bad: ["device-tank-low", "device-tank-full"],
79889
- recovery: ["device-tank-normal"],
79890
- snapshotLabel: "Tanks low or full now",
79891
- snapshotSection: "tanks"
79892
- },
79893
79896
  {
79894
79897
  id: "motion-noise",
79895
79898
  family: "device-events",
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.405",
39
+ version: "1.2.406",
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.320",
84
+ version: "1.2.321",
85
85
  scope: "default",
86
86
  shareConfig: {
87
87
  singleton: !0,
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- require("./dist-0l-u0kED.js");
2
+ require("./dist-CKiSDi2Y.js");
3
3
  const require_orchestrator_training_addon = require("./orchestrator/training.addon.js");
4
4
  const require_providers_modal_training_modal_addon = require("./providers/modal/training-modal.addon.js");
5
5
  //#region src/providers/fake/fake-provider.ts