@camstack/addon-provider-rtsp 1.2.127 → 1.2.129

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 (3) hide show
  1. package/dist/addon.js +340 -36
  2. package/dist/addon.mjs +340 -36
  3. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -23,7 +23,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
23
23
  //#endregion
24
24
  let node_net = require("node:net");
25
25
  node_net = __toESM(node_net);
26
- //#region ../types/dist/event-category-BvOFi6PY.mjs
26
+ //#region ../types/dist/event-category-DOl51-Ij.mjs
27
27
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
28
28
  EventCategory["SystemBoot"] = "system.boot";
29
29
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -102,9 +102,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
102
102
  /**
103
103
  * The node's one-shot runner boot check (D877): planned runners against the
104
104
  * process service, `degraded` when any is failed, refused or missing. The
105
- * alert centre turns it into one alert and a direct critical push.
105
+ * alert centre turns it into one critical alert.
106
106
  */
107
107
  EventCategory["SystemRunnerCheck"] = "system.runner-check";
108
+ /**
109
+ * An alert EPISODE opened or closed, emitted by the alert centre for alerts
110
+ * of severity `critical` or `error` (`AlertEpisodePayload`). The alert
111
+ * centre sends no notification of its own: Notification Center turns this
112
+ * into the `alert-critical` / `alert-error` / `alert-critical-resolved`
113
+ * system-event kinds, and reconciles from the alerts store because a bus
114
+ * event may be dropped (D8, D11).
115
+ */
116
+ EventCategory["AlertEpisode"] = "alert.episode";
108
117
  EventCategory["AddonError"] = "addon.error";
109
118
  EventCategory["AddonPageReady"] = "addon.page-ready";
110
119
  EventCategory["AddonWidgetReady"] = "addon.widget-ready";
@@ -5429,7 +5438,7 @@ var ZodIssueCode = {
5429
5438
  var ZodFirstPartyTypeKind;
5430
5439
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5431
5440
  //#endregion
5432
- //#region ../types/dist/sleep-BOjuyoPC.mjs
5441
+ //#region ../types/dist/sleep-BxjU_fJM.mjs
5433
5442
  /**
5434
5443
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5435
5444
  * window to float samples (D455).
@@ -13313,7 +13322,14 @@ var AlertSeveritySchema = _enum([
13313
13322
  ]);
13314
13323
  var AlertActionSchema = object({
13315
13324
  label: string(),
13316
- href: string().optional()
13325
+ href: string().optional(),
13326
+ /**
13327
+ * How `href` is followed. Absent / `app`: an admin-ui route (client-side).
13328
+ * `server`: a route the HUB serves (an addon HTTP route such as an OAuth
13329
+ * start) — the browser must leave the SPA with a full navigation, because
13330
+ * the SPA has no such route and would bounce to the home page.
13331
+ */
13332
+ navigation: _enum(["app", "server"]).optional()
13317
13333
  });
13318
13334
  var AlertStatusSchema = _enum([
13319
13335
  "active",
@@ -17694,7 +17710,11 @@ var deviceDiscoveryCapability = {
17694
17710
  };
17695
17711
  /**
17696
17712
  * `device-adoption` — generic discovery + adoption surface,
17697
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
17713
+ * system-scoped collection (one provider per integration addon), routed
17714
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
17715
+ * pin model as `connection-test`. The admin UI keeps using
17716
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
17717
+ * successor to `ha-discovery`:
17698
17718
  * keyed by `integrationId` (the addon resolves integrationId → broker
17699
17719
  * internally) rather than a connection-specific `brokerId`, and it
17700
17720
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -42025,6 +42045,9 @@ var NcSystemEventKindSchema = _enum([
42025
42045
  "server-updated",
42026
42046
  "export-completed",
42027
42047
  "backup-completed",
42048
+ "alert-critical",
42049
+ "alert-error",
42050
+ "alert-critical-resolved",
42028
42051
  "camera-online",
42029
42052
  "camera-offline",
42030
42053
  "camera-disabled",
@@ -51205,7 +51228,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
51205
51228
  }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
51206
51229
  kind: "mutation",
51207
51230
  auth: "admin"
51208
- }), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
51231
+ }), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
51232
+ clear: boolean(),
51233
+ repointLocationId: string().optional()
51234
+ }), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
51209
51235
  kind: "mutation",
51210
51236
  auth: "admin"
51211
51237
  }), method(StorageCleanupInputSchema, object({ jobId: string() }), {
@@ -55469,6 +55495,11 @@ onStatusChanged: { data: object({
55469
55495
  *
55470
55496
  * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
55471
55497
  * provider refreshes the slice on an interval and eagerly after commands.
55498
+ *
55499
+ * UNKNOWN IS NOT OFF. Every field the appliance reports separately is
55500
+ * nullable: `null` means "not known right now" (the appliance has not said,
55501
+ * the link is down, or the description does not carry it) and is never
55502
+ * rendered or exported as `false` / `0`. `availability` says why.
55472
55503
  */
55473
55504
  var DishwasherStateSchema = _enum([
55474
55505
  "idle",
@@ -55478,35 +55509,155 @@ var DishwasherStateSchema = _enum([
55478
55509
  "error",
55479
55510
  "unavailable"
55480
55511
  ]);
55512
+ /**
55513
+ * The appliance's own operation state, uncollapsed. `state` above is the coarse
55514
+ * view for compact surfaces; this is what the appliance said.
55515
+ */
55516
+ var DishwasherOperationStateSchema = _enum([
55517
+ "Inactive",
55518
+ "Ready",
55519
+ "DelayedStart",
55520
+ "Run",
55521
+ "Pause",
55522
+ "ActionRequired",
55523
+ "Finished",
55524
+ "Error",
55525
+ "Aborting"
55526
+ ]);
55527
+ /**
55528
+ * Why fields may be `null`:
55529
+ * - `available` — the link is up and the description is loaded;
55530
+ * - `offline` — the local link is down (values are unknown, not last-known);
55531
+ * - `description-missing` — the link is up but the appliance's description could not
55532
+ * be loaded, so its values cannot be decoded.
55533
+ */
55534
+ var DishwasherAvailabilitySchema = _enum([
55535
+ "available",
55536
+ "offline",
55537
+ "description-missing"
55538
+ ]);
55481
55539
  var DishwasherConsumableLevelSchema = _enum([
55482
55540
  "ok",
55483
55541
  "low",
55484
55542
  "empty"
55485
55543
  ]);
55486
55544
  var DishwasherStatusSchema = object({
55545
+ availability: DishwasherAvailabilitySchema,
55546
+ /** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
55487
55547
  state: DishwasherStateSchema,
55488
- /** Active program id/name, or null when none selected / unknown. */
55548
+ /** The appliance's operation state as reported; null when not known. */
55549
+ operationState: DishwasherOperationStateSchema.nullable(),
55550
+ /** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
55489
55551
  program: string().nullable(),
55490
- /** Program tokens the hardware accepts — drives the UI selector. */
55552
+ /** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
55553
+ selectedProgram: string().nullable(),
55554
+ /** Feature keys of the programs the appliance currently offers — drives the UI selector. */
55491
55555
  availablePrograms: array(string()),
55492
- /** Minutes remaining on the active cycle, or null when not running. */
55493
- remainingMinutes: number().int().nonnegative().nullable(),
55556
+ /** Seconds remaining on the active cycle, or null when not running / not known. */
55557
+ remainingSeconds: number().int().nonnegative().nullable(),
55558
+ /** Seconds the delayed start is set to (time until the cycle starts), or null. */
55559
+ delayedStartSeconds: number().int().nonnegative().nullable(),
55494
55560
  /** Cycle completion 0..100, or null when not applicable. */
55495
55561
  progressPercent: number().min(0).max(100).nullable(),
55496
- /** True when the door is reported open. */
55497
- doorOpen: boolean(),
55498
- /** True when remote start is allowed (door closed, power on, etc.). */
55499
- remoteStartAllowed: boolean(),
55500
- /** Main power / switched-on state. */
55501
- powerOn: boolean(),
55562
+ /** True when the door is reported open; null when the door state is not known. */
55563
+ doorOpen: boolean().nullable(),
55564
+ /** True when the door is latched (locked) during a cycle; null when not reported. */
55565
+ doorLocked: boolean().nullable(),
55566
+ /** True when remote start is allowed (door closed, power on, etc.); null when not known. */
55567
+ remoteStartAllowed: boolean().nullable(),
55568
+ /** True when the appliance accepts remote control now; null when not known. */
55569
+ remoteControlActive: boolean().nullable(),
55570
+ /** True while somebody operates the appliance at its panel; null when not reported. */
55571
+ localControlActive: boolean().nullable(),
55572
+ /** Main power / switched-on state; null when not known. */
55573
+ powerOn: boolean().nullable(),
55574
+ /** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
55575
+ powerState: string().nullable(),
55502
55576
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
55503
55577
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
55504
- halfLoad: boolean(),
55505
- hygienePlus: boolean(),
55578
+ /** Option states: null when the appliance does not expose the option or has not said. */
55579
+ halfLoad: boolean().nullable(),
55580
+ hygienePlus: boolean().nullable(),
55581
+ /** Extra dry option when the appliance exposes it. */
55582
+ extraDry: boolean().nullable(),
55583
+ /** Intensive zone (lower basket) when the appliance exposes it. */
55584
+ intensiveZone: boolean().nullable(),
55585
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
55586
+ varioSpeedPlus: boolean().nullable(),
55587
+ /** Child lock (controls disabled on the appliance); null when not known. */
55588
+ childLock: boolean().nullable(),
55589
+ /** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
55590
+ activeEvents: array(string()),
55591
+ /** Numeric error code when the appliance reports one; null otherwise. */
55506
55592
  errorCode: number().nullable(),
55593
+ /** Name of the raised alert-level event while the appliance is in error; null otherwise. */
55507
55594
  errorLabel: string().nullable(),
55595
+ /** Ms epoch of the last value received from the appliance; 0 = never. */
55508
55596
  lastFetchedAt: number()
55509
55597
  });
55598
+ var DeviceIdSchema = number().int().nonnegative();
55599
+ /** A value a program option or setting can take. */
55600
+ var DishwasherValueSchema = union([
55601
+ boolean(),
55602
+ string(),
55603
+ number()
55604
+ ]);
55605
+ var DishwasherAccessSchema = _enum([
55606
+ "none",
55607
+ "read",
55608
+ "readWrite",
55609
+ "writeOnly",
55610
+ "readStatic"
55611
+ ]);
55612
+ /**
55613
+ * One option or setting the appliance declares, with the constraints its description
55614
+ * gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
55615
+ */
55616
+ var DishwasherOptionDescriptorSchema = object({
55617
+ /** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
55618
+ key: string(),
55619
+ /** Last segment of the key, for display. */
55620
+ name: string(),
55621
+ type: _enum([
55622
+ "boolean",
55623
+ "number",
55624
+ "enum",
55625
+ "string"
55626
+ ]),
55627
+ access: DishwasherAccessSchema,
55628
+ /** The appliance reports this entity as currently available. */
55629
+ available: boolean(),
55630
+ /** Unit the description declares for a number; null when it declares none. */
55631
+ unit: string().nullable(),
55632
+ min: number().nullable(),
55633
+ max: number().nullable(),
55634
+ step: number().nullable(),
55635
+ /** Allowed members of an enum; null for other types. */
55636
+ enumValues: array(string()).nullable(),
55637
+ defaultValue: DishwasherValueSchema.nullable()
55638
+ });
55639
+ var DishwasherProgramSchema = object({
55640
+ /** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
55641
+ key: string(),
55642
+ name: string(),
55643
+ /** The appliance currently offers this program. */
55644
+ available: boolean(),
55645
+ /** The options this program lists, with the program-level access / availability / default. */
55646
+ options: array(DishwasherOptionDescriptorSchema)
55647
+ });
55648
+ var DishwasherOptionsSchema = object({
55649
+ availability: DishwasherAvailabilitySchema,
55650
+ /** What the appliance can be told to do, from the commands its description declares. */
55651
+ supportsStart: boolean(),
55652
+ supportsPause: boolean(),
55653
+ supportsResume: boolean(),
55654
+ supportsStop: boolean(),
55655
+ supportsPower: boolean(),
55656
+ /** Every program the description lists, with its options. */
55657
+ programs: array(DishwasherProgramSchema),
55658
+ /** Every option and setting entity the description lists (programs reference these by key). */
55659
+ options: array(DishwasherOptionDescriptorSchema)
55660
+ });
55510
55661
  var dishwasherCapability = {
55511
55662
  name: "dishwasher",
55512
55663
  scope: "device",
@@ -55514,58 +55665,102 @@ var dishwasherCapability = {
55514
55665
  mode: "singleton",
55515
55666
  deviceTypes: [DeviceType.Dishwasher],
55516
55667
  methods: {
55517
- start: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55668
+ /**
55669
+ * Start a program. Without `program` the selected one starts. `options` are
55670
+ * option feature keys; each is checked against the program's constraints.
55671
+ */
55672
+ start: method(object({
55673
+ deviceId: DeviceIdSchema,
55674
+ program: string().min(1).optional(),
55675
+ options: record(string(), DishwasherValueSchema).optional()
55676
+ }), _void(), {
55518
55677
  kind: "mutation",
55519
55678
  auth: "protected"
55520
55679
  }),
55521
- pause: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55680
+ pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
55522
55681
  kind: "mutation",
55523
55682
  auth: "protected"
55524
55683
  }),
55525
- stop: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55684
+ resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
55526
55685
  kind: "mutation",
55527
55686
  auth: "protected"
55528
55687
  }),
55688
+ stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
55689
+ kind: "mutation",
55690
+ auth: "protected"
55691
+ }),
55692
+ /** Select (not start) a program; refused when the appliance does not offer it. */
55529
55693
  setProgram: method(object({
55530
- deviceId: number().int().nonnegative(),
55694
+ deviceId: DeviceIdSchema,
55531
55695
  program: string().min(1)
55532
55696
  }), _void(), {
55533
55697
  kind: "mutation",
55534
55698
  auth: "protected"
55535
55699
  }),
55536
55700
  setPower: method(object({
55537
- deviceId: number().int().nonnegative(),
55701
+ deviceId: DeviceIdSchema,
55538
55702
  on: boolean()
55539
55703
  }), _void(), {
55540
55704
  kind: "mutation",
55541
55705
  auth: "protected"
55542
55706
  }),
55543
55707
  setHalfLoad: method(object({
55544
- deviceId: number().int().nonnegative(),
55708
+ deviceId: DeviceIdSchema,
55545
55709
  on: boolean()
55546
55710
  }), _void(), {
55547
55711
  kind: "mutation",
55548
55712
  auth: "protected"
55549
55713
  }),
55550
55714
  setHygienePlus: method(object({
55551
- deviceId: number().int().nonnegative(),
55715
+ deviceId: DeviceIdSchema,
55716
+ on: boolean()
55717
+ }), _void(), {
55718
+ kind: "mutation",
55719
+ auth: "protected"
55720
+ }),
55721
+ setExtraDry: method(object({
55722
+ deviceId: DeviceIdSchema,
55723
+ on: boolean()
55724
+ }), _void(), {
55725
+ kind: "mutation",
55726
+ auth: "protected"
55727
+ }),
55728
+ setIntensiveZone: method(object({
55729
+ deviceId: DeviceIdSchema,
55730
+ on: boolean()
55731
+ }), _void(), {
55732
+ kind: "mutation",
55733
+ auth: "protected"
55734
+ }),
55735
+ setVarioSpeedPlus: method(object({
55736
+ deviceId: DeviceIdSchema,
55737
+ on: boolean()
55738
+ }), _void(), {
55739
+ kind: "mutation",
55740
+ auth: "protected"
55741
+ }),
55742
+ setChildLock: method(object({
55743
+ deviceId: DeviceIdSchema,
55552
55744
  on: boolean()
55553
55745
  }), _void(), {
55554
55746
  kind: "mutation",
55555
55747
  auth: "protected"
55556
55748
  }),
55749
+ /**
55750
+ * Write any option or setting by feature key. Refused when the description does
55751
+ * not list it, it is not writable or not available now, or the value is outside
55752
+ * its declared range / members.
55753
+ */
55557
55754
  setOption: method(object({
55558
- deviceId: number().int().nonnegative(),
55755
+ deviceId: DeviceIdSchema,
55559
55756
  key: string().min(1),
55560
- value: union([
55561
- boolean(),
55562
- string(),
55563
- number()
55564
- ])
55757
+ value: DishwasherValueSchema
55565
55758
  }), _void(), {
55566
55759
  kind: "mutation",
55567
55760
  auth: "protected"
55568
- })
55761
+ }),
55762
+ /** What this appliance can do, from its own description — the UI is derived from it. */
55763
+ getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
55569
55764
  },
55570
55765
  status: {
55571
55766
  schema: DishwasherStatusSchema,
@@ -69514,6 +69709,12 @@ Object.freeze({
69514
69709
  addonId: null,
69515
69710
  access: "view"
69516
69711
  },
69712
+ "dishwasher.getOptions": {
69713
+ capName: "dishwasher",
69714
+ capScope: "device",
69715
+ addonId: null,
69716
+ access: "view"
69717
+ },
69517
69718
  "dishwasher.getStatus": {
69518
69719
  capName: "dishwasher",
69519
69720
  capScope: "device",
@@ -69526,6 +69727,24 @@ Object.freeze({
69526
69727
  addonId: null,
69527
69728
  access: "create"
69528
69729
  },
69730
+ "dishwasher.resume": {
69731
+ capName: "dishwasher",
69732
+ capScope: "device",
69733
+ addonId: null,
69734
+ access: "create"
69735
+ },
69736
+ "dishwasher.setChildLock": {
69737
+ capName: "dishwasher",
69738
+ capScope: "device",
69739
+ addonId: null,
69740
+ access: "create"
69741
+ },
69742
+ "dishwasher.setExtraDry": {
69743
+ capName: "dishwasher",
69744
+ capScope: "device",
69745
+ addonId: null,
69746
+ access: "create"
69747
+ },
69529
69748
  "dishwasher.setHalfLoad": {
69530
69749
  capName: "dishwasher",
69531
69750
  capScope: "device",
@@ -69538,6 +69757,12 @@ Object.freeze({
69538
69757
  addonId: null,
69539
69758
  access: "create"
69540
69759
  },
69760
+ "dishwasher.setIntensiveZone": {
69761
+ capName: "dishwasher",
69762
+ capScope: "device",
69763
+ addonId: null,
69764
+ access: "create"
69765
+ },
69541
69766
  "dishwasher.setOption": {
69542
69767
  capName: "dishwasher",
69543
69768
  capScope: "device",
@@ -69556,6 +69781,12 @@ Object.freeze({
69556
69781
  addonId: null,
69557
69782
  access: "create"
69558
69783
  },
69784
+ "dishwasher.setVarioSpeedPlus": {
69785
+ capName: "dishwasher",
69786
+ capScope: "device",
69787
+ addonId: null,
69788
+ access: "create"
69789
+ },
69559
69790
  "dishwasher.start": {
69560
69791
  capName: "dishwasher",
69561
69792
  capScope: "device",
@@ -74002,6 +74233,12 @@ Object.freeze({
74002
74233
  addonId: null,
74003
74234
  access: "view"
74004
74235
  },
74236
+ "storageMigration.moverClearance": {
74237
+ capName: "storage-migration",
74238
+ capScope: "system",
74239
+ addonId: null,
74240
+ access: "view"
74241
+ },
74005
74242
  "storageMigration.movers": {
74006
74243
  capName: "storage-migration",
74007
74244
  capScope: "system",
@@ -76261,6 +76498,11 @@ Object.freeze({
76261
76498
  form: "single",
76262
76499
  optional: false
76263
76500
  }],
76501
+ "dishwasher.getOptions": [{
76502
+ name: "deviceId",
76503
+ form: "single",
76504
+ optional: false
76505
+ }],
76264
76506
  "dishwasher.getStatus": [{
76265
76507
  name: "deviceId",
76266
76508
  form: "single",
@@ -76271,6 +76513,21 @@ Object.freeze({
76271
76513
  form: "single",
76272
76514
  optional: false
76273
76515
  }],
76516
+ "dishwasher.resume": [{
76517
+ name: "deviceId",
76518
+ form: "single",
76519
+ optional: false
76520
+ }],
76521
+ "dishwasher.setChildLock": [{
76522
+ name: "deviceId",
76523
+ form: "single",
76524
+ optional: false
76525
+ }],
76526
+ "dishwasher.setExtraDry": [{
76527
+ name: "deviceId",
76528
+ form: "single",
76529
+ optional: false
76530
+ }],
76274
76531
  "dishwasher.setHalfLoad": [{
76275
76532
  name: "deviceId",
76276
76533
  form: "single",
@@ -76281,6 +76538,11 @@ Object.freeze({
76281
76538
  form: "single",
76282
76539
  optional: false
76283
76540
  }],
76541
+ "dishwasher.setIntensiveZone": [{
76542
+ name: "deviceId",
76543
+ form: "single",
76544
+ optional: false
76545
+ }],
76284
76546
  "dishwasher.setOption": [{
76285
76547
  name: "deviceId",
76286
76548
  form: "single",
@@ -76296,6 +76558,11 @@ Object.freeze({
76296
76558
  form: "single",
76297
76559
  optional: false
76298
76560
  }],
76561
+ "dishwasher.setVarioSpeedPlus": [{
76562
+ name: "deviceId",
76563
+ form: "single",
76564
+ optional: false
76565
+ }],
76299
76566
  "dishwasher.start": [{
76300
76567
  name: "deviceId",
76301
76568
  form: "single",
@@ -78337,6 +78604,9 @@ new Map(Object.entries({
78337
78604
  "wrapper-update-available": "system",
78338
78605
  "backup-completed": "system",
78339
78606
  "export-completed": "system",
78607
+ "alert-critical": "system",
78608
+ "alert-error": "system",
78609
+ "alert-critical-resolved": "system",
78340
78610
  "storage-location-low": "system",
78341
78611
  "storage-location-critical": "system",
78342
78612
  "storage-location-ok": "system",
@@ -78461,6 +78731,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
78461
78731
  "storage-location-ok"
78462
78732
  ]
78463
78733
  },
78734
+ {
78735
+ id: "alerts",
78736
+ family: "system",
78737
+ label: "Alerts",
78738
+ kinds: [
78739
+ "alert-critical",
78740
+ "alert-error",
78741
+ "alert-critical-resolved"
78742
+ ]
78743
+ },
78464
78744
  {
78465
78745
  id: "alarm",
78466
78746
  family: "alarm",
@@ -78505,6 +78785,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
78505
78785
  return [[descriptor.kind, field]];
78506
78786
  })));
78507
78787
  Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
78788
+ object({
78789
+ phase: _enum(["raised", "resolved"]),
78790
+ episodeId: string().min(1),
78791
+ alertId: string().min(1),
78792
+ severity: AlertSeveritySchema,
78793
+ category: string(),
78794
+ title: string(),
78795
+ message: string(),
78796
+ sourceType: string().optional(),
78797
+ sourceId: string().optional(),
78798
+ nodeId: string().optional(),
78799
+ /** The alert's own action link (where the operator acts on it), when it has one. */
78800
+ actionUrl: string().optional(),
78801
+ at: number()
78802
+ });
78508
78803
  var RULE_BODY_ONLY = ["body"];
78509
78804
  var RULE_TEXT = ["title", "body"];
78510
78805
  var BATTERY = ["device-battery-low", "device-battery-normal"];
@@ -78514,6 +78809,11 @@ var TANK = [
78514
78809
  "device-tank-full",
78515
78810
  "device-tank-normal"
78516
78811
  ];
78812
+ var ALERT_EPISODE = [
78813
+ "alert-critical",
78814
+ "alert-error",
78815
+ "alert-critical-resolved"
78816
+ ];
78517
78817
  var UPDATES = [
78518
78818
  "addon-update-available",
78519
78819
  "server-update-available",
@@ -78706,14 +79006,14 @@ var STATE_SUMMARY_VARS = [
78706
79006
  ([...RULE_TEXT], [...CONSUMABLE]),
78707
79007
  ([...RULE_TEXT], [...TANK]),
78708
79008
  [...RULE_TEXT],
78709
- ([...RULE_TEXT], [...UPDATES]),
78710
- ([...RULE_TEXT], [...UPDATES]),
78711
- [...RULE_TEXT],
79009
+ ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
79010
+ ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
78712
79011
  [...RULE_TEXT],
78713
79012
  [...RULE_TEXT],
78714
79013
  [...RULE_TEXT],
78715
79014
  [...RULE_TEXT],
78716
79015
  [...RULE_TEXT],
79016
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
78717
79017
  [...RULE_TEXT],
78718
79018
  [...RULE_TEXT],
78719
79019
  [...RULE_TEXT],
@@ -78731,7 +79031,11 @@ var STATE_SUMMARY_VARS = [
78731
79031
  [...RULE_TEXT],
78732
79032
  [...RULE_TEXT],
78733
79033
  [...RULE_TEXT],
78734
- [...RULE_TEXT],
79034
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79035
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79036
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79037
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79038
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
78735
79039
  [...RULE_TEXT],
78736
79040
  [...RULE_TEXT],
78737
79041
  [...RULE_TEXT],
package/dist/addon.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import net from "node:net";
2
- //#region ../types/dist/event-category-BvOFi6PY.mjs
2
+ //#region ../types/dist/event-category-DOl51-Ij.mjs
3
3
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
4
4
  EventCategory["SystemBoot"] = "system.boot";
5
5
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -78,9 +78,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
78
78
  /**
79
79
  * The node's one-shot runner boot check (D877): planned runners against the
80
80
  * process service, `degraded` when any is failed, refused or missing. The
81
- * alert centre turns it into one alert and a direct critical push.
81
+ * alert centre turns it into one critical alert.
82
82
  */
83
83
  EventCategory["SystemRunnerCheck"] = "system.runner-check";
84
+ /**
85
+ * An alert EPISODE opened or closed, emitted by the alert centre for alerts
86
+ * of severity `critical` or `error` (`AlertEpisodePayload`). The alert
87
+ * centre sends no notification of its own: Notification Center turns this
88
+ * into the `alert-critical` / `alert-error` / `alert-critical-resolved`
89
+ * system-event kinds, and reconciles from the alerts store because a bus
90
+ * event may be dropped (D8, D11).
91
+ */
92
+ EventCategory["AlertEpisode"] = "alert.episode";
84
93
  EventCategory["AddonError"] = "addon.error";
85
94
  EventCategory["AddonPageReady"] = "addon.page-ready";
86
95
  EventCategory["AddonWidgetReady"] = "addon.widget-ready";
@@ -5405,7 +5414,7 @@ var ZodIssueCode = {
5405
5414
  var ZodFirstPartyTypeKind;
5406
5415
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5407
5416
  //#endregion
5408
- //#region ../types/dist/sleep-BOjuyoPC.mjs
5417
+ //#region ../types/dist/sleep-BxjU_fJM.mjs
5409
5418
  /**
5410
5419
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5411
5420
  * window to float samples (D455).
@@ -13289,7 +13298,14 @@ var AlertSeveritySchema = _enum([
13289
13298
  ]);
13290
13299
  var AlertActionSchema = object({
13291
13300
  label: string(),
13292
- href: string().optional()
13301
+ href: string().optional(),
13302
+ /**
13303
+ * How `href` is followed. Absent / `app`: an admin-ui route (client-side).
13304
+ * `server`: a route the HUB serves (an addon HTTP route such as an OAuth
13305
+ * start) — the browser must leave the SPA with a full navigation, because
13306
+ * the SPA has no such route and would bounce to the home page.
13307
+ */
13308
+ navigation: _enum(["app", "server"]).optional()
13293
13309
  });
13294
13310
  var AlertStatusSchema = _enum([
13295
13311
  "active",
@@ -17670,7 +17686,11 @@ var deviceDiscoveryCapability = {
17670
17686
  };
17671
17687
  /**
17672
17688
  * `device-adoption` — generic discovery + adoption surface,
17673
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
17689
+ * system-scoped collection (one provider per integration addon), routed
17690
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
17691
+ * pin model as `connection-test`. The admin UI keeps using
17692
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
17693
+ * successor to `ha-discovery`:
17674
17694
  * keyed by `integrationId` (the addon resolves integrationId → broker
17675
17695
  * internally) rather than a connection-specific `brokerId`, and it
17676
17696
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -42001,6 +42021,9 @@ var NcSystemEventKindSchema = _enum([
42001
42021
  "server-updated",
42002
42022
  "export-completed",
42003
42023
  "backup-completed",
42024
+ "alert-critical",
42025
+ "alert-error",
42026
+ "alert-critical-resolved",
42004
42027
  "camera-online",
42005
42028
  "camera-offline",
42006
42029
  "camera-disabled",
@@ -51181,7 +51204,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
51181
51204
  }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
51182
51205
  kind: "mutation",
51183
51206
  auth: "admin"
51184
- }), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
51207
+ }), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
51208
+ clear: boolean(),
51209
+ repointLocationId: string().optional()
51210
+ }), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
51185
51211
  kind: "mutation",
51186
51212
  auth: "admin"
51187
51213
  }), method(StorageCleanupInputSchema, object({ jobId: string() }), {
@@ -55445,6 +55471,11 @@ onStatusChanged: { data: object({
55445
55471
  *
55446
55472
  * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
55447
55473
  * provider refreshes the slice on an interval and eagerly after commands.
55474
+ *
55475
+ * UNKNOWN IS NOT OFF. Every field the appliance reports separately is
55476
+ * nullable: `null` means "not known right now" (the appliance has not said,
55477
+ * the link is down, or the description does not carry it) and is never
55478
+ * rendered or exported as `false` / `0`. `availability` says why.
55448
55479
  */
55449
55480
  var DishwasherStateSchema = _enum([
55450
55481
  "idle",
@@ -55454,35 +55485,155 @@ var DishwasherStateSchema = _enum([
55454
55485
  "error",
55455
55486
  "unavailable"
55456
55487
  ]);
55488
+ /**
55489
+ * The appliance's own operation state, uncollapsed. `state` above is the coarse
55490
+ * view for compact surfaces; this is what the appliance said.
55491
+ */
55492
+ var DishwasherOperationStateSchema = _enum([
55493
+ "Inactive",
55494
+ "Ready",
55495
+ "DelayedStart",
55496
+ "Run",
55497
+ "Pause",
55498
+ "ActionRequired",
55499
+ "Finished",
55500
+ "Error",
55501
+ "Aborting"
55502
+ ]);
55503
+ /**
55504
+ * Why fields may be `null`:
55505
+ * - `available` — the link is up and the description is loaded;
55506
+ * - `offline` — the local link is down (values are unknown, not last-known);
55507
+ * - `description-missing` — the link is up but the appliance's description could not
55508
+ * be loaded, so its values cannot be decoded.
55509
+ */
55510
+ var DishwasherAvailabilitySchema = _enum([
55511
+ "available",
55512
+ "offline",
55513
+ "description-missing"
55514
+ ]);
55457
55515
  var DishwasherConsumableLevelSchema = _enum([
55458
55516
  "ok",
55459
55517
  "low",
55460
55518
  "empty"
55461
55519
  ]);
55462
55520
  var DishwasherStatusSchema = object({
55521
+ availability: DishwasherAvailabilitySchema,
55522
+ /** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
55463
55523
  state: DishwasherStateSchema,
55464
- /** Active program id/name, or null when none selected / unknown. */
55524
+ /** The appliance's operation state as reported; null when not known. */
55525
+ operationState: DishwasherOperationStateSchema.nullable(),
55526
+ /** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
55465
55527
  program: string().nullable(),
55466
- /** Program tokens the hardware accepts — drives the UI selector. */
55528
+ /** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
55529
+ selectedProgram: string().nullable(),
55530
+ /** Feature keys of the programs the appliance currently offers — drives the UI selector. */
55467
55531
  availablePrograms: array(string()),
55468
- /** Minutes remaining on the active cycle, or null when not running. */
55469
- remainingMinutes: number().int().nonnegative().nullable(),
55532
+ /** Seconds remaining on the active cycle, or null when not running / not known. */
55533
+ remainingSeconds: number().int().nonnegative().nullable(),
55534
+ /** Seconds the delayed start is set to (time until the cycle starts), or null. */
55535
+ delayedStartSeconds: number().int().nonnegative().nullable(),
55470
55536
  /** Cycle completion 0..100, or null when not applicable. */
55471
55537
  progressPercent: number().min(0).max(100).nullable(),
55472
- /** True when the door is reported open. */
55473
- doorOpen: boolean(),
55474
- /** True when remote start is allowed (door closed, power on, etc.). */
55475
- remoteStartAllowed: boolean(),
55476
- /** Main power / switched-on state. */
55477
- powerOn: boolean(),
55538
+ /** True when the door is reported open; null when the door state is not known. */
55539
+ doorOpen: boolean().nullable(),
55540
+ /** True when the door is latched (locked) during a cycle; null when not reported. */
55541
+ doorLocked: boolean().nullable(),
55542
+ /** True when remote start is allowed (door closed, power on, etc.); null when not known. */
55543
+ remoteStartAllowed: boolean().nullable(),
55544
+ /** True when the appliance accepts remote control now; null when not known. */
55545
+ remoteControlActive: boolean().nullable(),
55546
+ /** True while somebody operates the appliance at its panel; null when not reported. */
55547
+ localControlActive: boolean().nullable(),
55548
+ /** Main power / switched-on state; null when not known. */
55549
+ powerOn: boolean().nullable(),
55550
+ /** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
55551
+ powerState: string().nullable(),
55478
55552
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
55479
55553
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
55480
- halfLoad: boolean(),
55481
- hygienePlus: boolean(),
55554
+ /** Option states: null when the appliance does not expose the option or has not said. */
55555
+ halfLoad: boolean().nullable(),
55556
+ hygienePlus: boolean().nullable(),
55557
+ /** Extra dry option when the appliance exposes it. */
55558
+ extraDry: boolean().nullable(),
55559
+ /** Intensive zone (lower basket) when the appliance exposes it. */
55560
+ intensiveZone: boolean().nullable(),
55561
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
55562
+ varioSpeedPlus: boolean().nullable(),
55563
+ /** Child lock (controls disabled on the appliance); null when not known. */
55564
+ childLock: boolean().nullable(),
55565
+ /** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
55566
+ activeEvents: array(string()),
55567
+ /** Numeric error code when the appliance reports one; null otherwise. */
55482
55568
  errorCode: number().nullable(),
55569
+ /** Name of the raised alert-level event while the appliance is in error; null otherwise. */
55483
55570
  errorLabel: string().nullable(),
55571
+ /** Ms epoch of the last value received from the appliance; 0 = never. */
55484
55572
  lastFetchedAt: number()
55485
55573
  });
55574
+ var DeviceIdSchema = number().int().nonnegative();
55575
+ /** A value a program option or setting can take. */
55576
+ var DishwasherValueSchema = union([
55577
+ boolean(),
55578
+ string(),
55579
+ number()
55580
+ ]);
55581
+ var DishwasherAccessSchema = _enum([
55582
+ "none",
55583
+ "read",
55584
+ "readWrite",
55585
+ "writeOnly",
55586
+ "readStatic"
55587
+ ]);
55588
+ /**
55589
+ * One option or setting the appliance declares, with the constraints its description
55590
+ * gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
55591
+ */
55592
+ var DishwasherOptionDescriptorSchema = object({
55593
+ /** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
55594
+ key: string(),
55595
+ /** Last segment of the key, for display. */
55596
+ name: string(),
55597
+ type: _enum([
55598
+ "boolean",
55599
+ "number",
55600
+ "enum",
55601
+ "string"
55602
+ ]),
55603
+ access: DishwasherAccessSchema,
55604
+ /** The appliance reports this entity as currently available. */
55605
+ available: boolean(),
55606
+ /** Unit the description declares for a number; null when it declares none. */
55607
+ unit: string().nullable(),
55608
+ min: number().nullable(),
55609
+ max: number().nullable(),
55610
+ step: number().nullable(),
55611
+ /** Allowed members of an enum; null for other types. */
55612
+ enumValues: array(string()).nullable(),
55613
+ defaultValue: DishwasherValueSchema.nullable()
55614
+ });
55615
+ var DishwasherProgramSchema = object({
55616
+ /** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
55617
+ key: string(),
55618
+ name: string(),
55619
+ /** The appliance currently offers this program. */
55620
+ available: boolean(),
55621
+ /** The options this program lists, with the program-level access / availability / default. */
55622
+ options: array(DishwasherOptionDescriptorSchema)
55623
+ });
55624
+ var DishwasherOptionsSchema = object({
55625
+ availability: DishwasherAvailabilitySchema,
55626
+ /** What the appliance can be told to do, from the commands its description declares. */
55627
+ supportsStart: boolean(),
55628
+ supportsPause: boolean(),
55629
+ supportsResume: boolean(),
55630
+ supportsStop: boolean(),
55631
+ supportsPower: boolean(),
55632
+ /** Every program the description lists, with its options. */
55633
+ programs: array(DishwasherProgramSchema),
55634
+ /** Every option and setting entity the description lists (programs reference these by key). */
55635
+ options: array(DishwasherOptionDescriptorSchema)
55636
+ });
55486
55637
  var dishwasherCapability = {
55487
55638
  name: "dishwasher",
55488
55639
  scope: "device",
@@ -55490,58 +55641,102 @@ var dishwasherCapability = {
55490
55641
  mode: "singleton",
55491
55642
  deviceTypes: [DeviceType.Dishwasher],
55492
55643
  methods: {
55493
- start: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55644
+ /**
55645
+ * Start a program. Without `program` the selected one starts. `options` are
55646
+ * option feature keys; each is checked against the program's constraints.
55647
+ */
55648
+ start: method(object({
55649
+ deviceId: DeviceIdSchema,
55650
+ program: string().min(1).optional(),
55651
+ options: record(string(), DishwasherValueSchema).optional()
55652
+ }), _void(), {
55494
55653
  kind: "mutation",
55495
55654
  auth: "protected"
55496
55655
  }),
55497
- pause: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55656
+ pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
55498
55657
  kind: "mutation",
55499
55658
  auth: "protected"
55500
55659
  }),
55501
- stop: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55660
+ resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
55502
55661
  kind: "mutation",
55503
55662
  auth: "protected"
55504
55663
  }),
55664
+ stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
55665
+ kind: "mutation",
55666
+ auth: "protected"
55667
+ }),
55668
+ /** Select (not start) a program; refused when the appliance does not offer it. */
55505
55669
  setProgram: method(object({
55506
- deviceId: number().int().nonnegative(),
55670
+ deviceId: DeviceIdSchema,
55507
55671
  program: string().min(1)
55508
55672
  }), _void(), {
55509
55673
  kind: "mutation",
55510
55674
  auth: "protected"
55511
55675
  }),
55512
55676
  setPower: method(object({
55513
- deviceId: number().int().nonnegative(),
55677
+ deviceId: DeviceIdSchema,
55514
55678
  on: boolean()
55515
55679
  }), _void(), {
55516
55680
  kind: "mutation",
55517
55681
  auth: "protected"
55518
55682
  }),
55519
55683
  setHalfLoad: method(object({
55520
- deviceId: number().int().nonnegative(),
55684
+ deviceId: DeviceIdSchema,
55521
55685
  on: boolean()
55522
55686
  }), _void(), {
55523
55687
  kind: "mutation",
55524
55688
  auth: "protected"
55525
55689
  }),
55526
55690
  setHygienePlus: method(object({
55527
- deviceId: number().int().nonnegative(),
55691
+ deviceId: DeviceIdSchema,
55692
+ on: boolean()
55693
+ }), _void(), {
55694
+ kind: "mutation",
55695
+ auth: "protected"
55696
+ }),
55697
+ setExtraDry: method(object({
55698
+ deviceId: DeviceIdSchema,
55699
+ on: boolean()
55700
+ }), _void(), {
55701
+ kind: "mutation",
55702
+ auth: "protected"
55703
+ }),
55704
+ setIntensiveZone: method(object({
55705
+ deviceId: DeviceIdSchema,
55706
+ on: boolean()
55707
+ }), _void(), {
55708
+ kind: "mutation",
55709
+ auth: "protected"
55710
+ }),
55711
+ setVarioSpeedPlus: method(object({
55712
+ deviceId: DeviceIdSchema,
55713
+ on: boolean()
55714
+ }), _void(), {
55715
+ kind: "mutation",
55716
+ auth: "protected"
55717
+ }),
55718
+ setChildLock: method(object({
55719
+ deviceId: DeviceIdSchema,
55528
55720
  on: boolean()
55529
55721
  }), _void(), {
55530
55722
  kind: "mutation",
55531
55723
  auth: "protected"
55532
55724
  }),
55725
+ /**
55726
+ * Write any option or setting by feature key. Refused when the description does
55727
+ * not list it, it is not writable or not available now, or the value is outside
55728
+ * its declared range / members.
55729
+ */
55533
55730
  setOption: method(object({
55534
- deviceId: number().int().nonnegative(),
55731
+ deviceId: DeviceIdSchema,
55535
55732
  key: string().min(1),
55536
- value: union([
55537
- boolean(),
55538
- string(),
55539
- number()
55540
- ])
55733
+ value: DishwasherValueSchema
55541
55734
  }), _void(), {
55542
55735
  kind: "mutation",
55543
55736
  auth: "protected"
55544
- })
55737
+ }),
55738
+ /** What this appliance can do, from its own description — the UI is derived from it. */
55739
+ getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
55545
55740
  },
55546
55741
  status: {
55547
55742
  schema: DishwasherStatusSchema,
@@ -69490,6 +69685,12 @@ Object.freeze({
69490
69685
  addonId: null,
69491
69686
  access: "view"
69492
69687
  },
69688
+ "dishwasher.getOptions": {
69689
+ capName: "dishwasher",
69690
+ capScope: "device",
69691
+ addonId: null,
69692
+ access: "view"
69693
+ },
69493
69694
  "dishwasher.getStatus": {
69494
69695
  capName: "dishwasher",
69495
69696
  capScope: "device",
@@ -69502,6 +69703,24 @@ Object.freeze({
69502
69703
  addonId: null,
69503
69704
  access: "create"
69504
69705
  },
69706
+ "dishwasher.resume": {
69707
+ capName: "dishwasher",
69708
+ capScope: "device",
69709
+ addonId: null,
69710
+ access: "create"
69711
+ },
69712
+ "dishwasher.setChildLock": {
69713
+ capName: "dishwasher",
69714
+ capScope: "device",
69715
+ addonId: null,
69716
+ access: "create"
69717
+ },
69718
+ "dishwasher.setExtraDry": {
69719
+ capName: "dishwasher",
69720
+ capScope: "device",
69721
+ addonId: null,
69722
+ access: "create"
69723
+ },
69505
69724
  "dishwasher.setHalfLoad": {
69506
69725
  capName: "dishwasher",
69507
69726
  capScope: "device",
@@ -69514,6 +69733,12 @@ Object.freeze({
69514
69733
  addonId: null,
69515
69734
  access: "create"
69516
69735
  },
69736
+ "dishwasher.setIntensiveZone": {
69737
+ capName: "dishwasher",
69738
+ capScope: "device",
69739
+ addonId: null,
69740
+ access: "create"
69741
+ },
69517
69742
  "dishwasher.setOption": {
69518
69743
  capName: "dishwasher",
69519
69744
  capScope: "device",
@@ -69532,6 +69757,12 @@ Object.freeze({
69532
69757
  addonId: null,
69533
69758
  access: "create"
69534
69759
  },
69760
+ "dishwasher.setVarioSpeedPlus": {
69761
+ capName: "dishwasher",
69762
+ capScope: "device",
69763
+ addonId: null,
69764
+ access: "create"
69765
+ },
69535
69766
  "dishwasher.start": {
69536
69767
  capName: "dishwasher",
69537
69768
  capScope: "device",
@@ -73978,6 +74209,12 @@ Object.freeze({
73978
74209
  addonId: null,
73979
74210
  access: "view"
73980
74211
  },
74212
+ "storageMigration.moverClearance": {
74213
+ capName: "storage-migration",
74214
+ capScope: "system",
74215
+ addonId: null,
74216
+ access: "view"
74217
+ },
73981
74218
  "storageMigration.movers": {
73982
74219
  capName: "storage-migration",
73983
74220
  capScope: "system",
@@ -76237,6 +76474,11 @@ Object.freeze({
76237
76474
  form: "single",
76238
76475
  optional: false
76239
76476
  }],
76477
+ "dishwasher.getOptions": [{
76478
+ name: "deviceId",
76479
+ form: "single",
76480
+ optional: false
76481
+ }],
76240
76482
  "dishwasher.getStatus": [{
76241
76483
  name: "deviceId",
76242
76484
  form: "single",
@@ -76247,6 +76489,21 @@ Object.freeze({
76247
76489
  form: "single",
76248
76490
  optional: false
76249
76491
  }],
76492
+ "dishwasher.resume": [{
76493
+ name: "deviceId",
76494
+ form: "single",
76495
+ optional: false
76496
+ }],
76497
+ "dishwasher.setChildLock": [{
76498
+ name: "deviceId",
76499
+ form: "single",
76500
+ optional: false
76501
+ }],
76502
+ "dishwasher.setExtraDry": [{
76503
+ name: "deviceId",
76504
+ form: "single",
76505
+ optional: false
76506
+ }],
76250
76507
  "dishwasher.setHalfLoad": [{
76251
76508
  name: "deviceId",
76252
76509
  form: "single",
@@ -76257,6 +76514,11 @@ Object.freeze({
76257
76514
  form: "single",
76258
76515
  optional: false
76259
76516
  }],
76517
+ "dishwasher.setIntensiveZone": [{
76518
+ name: "deviceId",
76519
+ form: "single",
76520
+ optional: false
76521
+ }],
76260
76522
  "dishwasher.setOption": [{
76261
76523
  name: "deviceId",
76262
76524
  form: "single",
@@ -76272,6 +76534,11 @@ Object.freeze({
76272
76534
  form: "single",
76273
76535
  optional: false
76274
76536
  }],
76537
+ "dishwasher.setVarioSpeedPlus": [{
76538
+ name: "deviceId",
76539
+ form: "single",
76540
+ optional: false
76541
+ }],
76275
76542
  "dishwasher.start": [{
76276
76543
  name: "deviceId",
76277
76544
  form: "single",
@@ -78313,6 +78580,9 @@ new Map(Object.entries({
78313
78580
  "wrapper-update-available": "system",
78314
78581
  "backup-completed": "system",
78315
78582
  "export-completed": "system",
78583
+ "alert-critical": "system",
78584
+ "alert-error": "system",
78585
+ "alert-critical-resolved": "system",
78316
78586
  "storage-location-low": "system",
78317
78587
  "storage-location-critical": "system",
78318
78588
  "storage-location-ok": "system",
@@ -78437,6 +78707,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
78437
78707
  "storage-location-ok"
78438
78708
  ]
78439
78709
  },
78710
+ {
78711
+ id: "alerts",
78712
+ family: "system",
78713
+ label: "Alerts",
78714
+ kinds: [
78715
+ "alert-critical",
78716
+ "alert-error",
78717
+ "alert-critical-resolved"
78718
+ ]
78719
+ },
78440
78720
  {
78441
78721
  id: "alarm",
78442
78722
  family: "alarm",
@@ -78481,6 +78761,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
78481
78761
  return [[descriptor.kind, field]];
78482
78762
  })));
78483
78763
  Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
78764
+ object({
78765
+ phase: _enum(["raised", "resolved"]),
78766
+ episodeId: string().min(1),
78767
+ alertId: string().min(1),
78768
+ severity: AlertSeveritySchema,
78769
+ category: string(),
78770
+ title: string(),
78771
+ message: string(),
78772
+ sourceType: string().optional(),
78773
+ sourceId: string().optional(),
78774
+ nodeId: string().optional(),
78775
+ /** The alert's own action link (where the operator acts on it), when it has one. */
78776
+ actionUrl: string().optional(),
78777
+ at: number()
78778
+ });
78484
78779
  var RULE_BODY_ONLY = ["body"];
78485
78780
  var RULE_TEXT = ["title", "body"];
78486
78781
  var BATTERY = ["device-battery-low", "device-battery-normal"];
@@ -78490,6 +78785,11 @@ var TANK = [
78490
78785
  "device-tank-full",
78491
78786
  "device-tank-normal"
78492
78787
  ];
78788
+ var ALERT_EPISODE = [
78789
+ "alert-critical",
78790
+ "alert-error",
78791
+ "alert-critical-resolved"
78792
+ ];
78493
78793
  var UPDATES = [
78494
78794
  "addon-update-available",
78495
78795
  "server-update-available",
@@ -78682,14 +78982,14 @@ var STATE_SUMMARY_VARS = [
78682
78982
  ([...RULE_TEXT], [...CONSUMABLE]),
78683
78983
  ([...RULE_TEXT], [...TANK]),
78684
78984
  [...RULE_TEXT],
78685
- ([...RULE_TEXT], [...UPDATES]),
78686
- ([...RULE_TEXT], [...UPDATES]),
78687
- [...RULE_TEXT],
78985
+ ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
78986
+ ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
78688
78987
  [...RULE_TEXT],
78689
78988
  [...RULE_TEXT],
78690
78989
  [...RULE_TEXT],
78691
78990
  [...RULE_TEXT],
78692
78991
  [...RULE_TEXT],
78992
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
78693
78993
  [...RULE_TEXT],
78694
78994
  [...RULE_TEXT],
78695
78995
  [...RULE_TEXT],
@@ -78707,7 +79007,11 @@ var STATE_SUMMARY_VARS = [
78707
79007
  [...RULE_TEXT],
78708
79008
  [...RULE_TEXT],
78709
79009
  [...RULE_TEXT],
78710
- [...RULE_TEXT],
79010
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79011
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79012
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79013
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79014
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
78711
79015
  [...RULE_TEXT],
78712
79016
  [...RULE_TEXT],
78713
79017
  [...RULE_TEXT],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-rtsp",
3
- "version": "1.2.127",
3
+ "version": "1.2.129",
4
4
  "description": "Generic RTSP camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",