@camstack/addon-terminal 0.1.133 → 0.1.135
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.
- package/dist/addon.js +587 -15
- package/dist/addon.mjs +587 -15
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -31,7 +31,7 @@ let node_module = require("node:module");
|
|
|
31
31
|
let sharp = require("sharp");
|
|
32
32
|
sharp = __toESM(sharp);
|
|
33
33
|
let node_http = require("node:http");
|
|
34
|
-
//#region ../types/dist/event-category-
|
|
34
|
+
//#region ../types/dist/event-category-DOl51-Ij.mjs
|
|
35
35
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
36
36
|
EventCategory["SystemBoot"] = "system.boot";
|
|
37
37
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -110,9 +110,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
110
110
|
/**
|
|
111
111
|
* The node's one-shot runner boot check (D877): planned runners against the
|
|
112
112
|
* process service, `degraded` when any is failed, refused or missing. The
|
|
113
|
-
* alert centre turns it into one
|
|
113
|
+
* alert centre turns it into one critical alert.
|
|
114
114
|
*/
|
|
115
115
|
EventCategory["SystemRunnerCheck"] = "system.runner-check";
|
|
116
|
+
/**
|
|
117
|
+
* An alert EPISODE opened or closed, emitted by the alert centre for alerts
|
|
118
|
+
* of severity `critical` or `error` (`AlertEpisodePayload`). The alert
|
|
119
|
+
* centre sends no notification of its own: Notification Center turns this
|
|
120
|
+
* into the `alert-critical` / `alert-error` / `alert-critical-resolved`
|
|
121
|
+
* system-event kinds, and reconciles from the alerts store because a bus
|
|
122
|
+
* event may be dropped (D8, D11).
|
|
123
|
+
*/
|
|
124
|
+
EventCategory["AlertEpisode"] = "alert.episode";
|
|
116
125
|
EventCategory["AddonError"] = "addon.error";
|
|
117
126
|
EventCategory["AddonPageReady"] = "addon.page-ready";
|
|
118
127
|
EventCategory["AddonWidgetReady"] = "addon.widget-ready";
|
|
@@ -5437,7 +5446,7 @@ var ZodIssueCode = {
|
|
|
5437
5446
|
var ZodFirstPartyTypeKind;
|
|
5438
5447
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5439
5448
|
//#endregion
|
|
5440
|
-
//#region ../types/dist/sleep-
|
|
5449
|
+
//#region ../types/dist/sleep-BxjU_fJM.mjs
|
|
5441
5450
|
/**
|
|
5442
5451
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5443
5452
|
* window to float samples (D455).
|
|
@@ -8515,7 +8524,7 @@ object({
|
|
|
8515
8524
|
params: record(string(), union([string(), number()])).optional()
|
|
8516
8525
|
});
|
|
8517
8526
|
//#endregion
|
|
8518
|
-
//#region ../types/dist/err-msg
|
|
8527
|
+
//#region ../types/dist/err-msg-BXKzRBwg.mjs
|
|
8519
8528
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
8520
8529
|
DeviceType["Camera"] = "camera";
|
|
8521
8530
|
DeviceType["Hub"] = "hub";
|
|
@@ -8607,6 +8616,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
|
8607
8616
|
* native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
|
|
8608
8617
|
* integrations sharing the same food/desiccant/hopper surface. */
|
|
8609
8618
|
DeviceType["PetFeeder"] = "pet-feeder";
|
|
8619
|
+
/** Built-in dishwasher — program lifecycle, door / remote-start gates,
|
|
8620
|
+
* salt and rinse-aid levels. Installed with the `dishwasher` cap.
|
|
8621
|
+
* Sources: native Bosch Home Connect, reusable by similar integrations. */
|
|
8622
|
+
DeviceType["Dishwasher"] = "dishwasher";
|
|
8610
8623
|
return DeviceType;
|
|
8611
8624
|
}({});
|
|
8612
8625
|
var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
|
|
@@ -8864,7 +8877,7 @@ function errMsg(err) {
|
|
|
8864
8877
|
return String(err);
|
|
8865
8878
|
}
|
|
8866
8879
|
//#endregion
|
|
8867
|
-
//#region ../types/dist/composition-
|
|
8880
|
+
//#region ../types/dist/composition-CB6PMT9p.mjs
|
|
8868
8881
|
/**
|
|
8869
8882
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
8870
8883
|
*
|
|
@@ -13282,8 +13295,20 @@ var AlertSeveritySchema = _enum([
|
|
|
13282
13295
|
"info",
|
|
13283
13296
|
"success",
|
|
13284
13297
|
"warning",
|
|
13285
|
-
"error"
|
|
13298
|
+
"error",
|
|
13299
|
+
"critical"
|
|
13286
13300
|
]);
|
|
13301
|
+
var AlertActionSchema = object({
|
|
13302
|
+
label: string(),
|
|
13303
|
+
href: string().optional(),
|
|
13304
|
+
/**
|
|
13305
|
+
* How `href` is followed. Absent / `app`: an admin-ui route (client-side).
|
|
13306
|
+
* `server`: a route the HUB serves (an addon HTTP route such as an OAuth
|
|
13307
|
+
* start) — the browser must leave the SPA with a full navigation, because
|
|
13308
|
+
* the SPA has no such route and would bounce to the home page.
|
|
13309
|
+
*/
|
|
13310
|
+
navigation: _enum(["app", "server"]).optional()
|
|
13311
|
+
});
|
|
13287
13312
|
var AlertStatusSchema = _enum([
|
|
13288
13313
|
"active",
|
|
13289
13314
|
"in-progress",
|
|
@@ -13301,6 +13326,7 @@ var AlertSchema = object({
|
|
|
13301
13326
|
severity: AlertSeveritySchema,
|
|
13302
13327
|
title: string(),
|
|
13303
13328
|
message: string(),
|
|
13329
|
+
action: AlertActionSchema.optional(),
|
|
13304
13330
|
status: AlertStatusSchema,
|
|
13305
13331
|
progress: number().optional(),
|
|
13306
13332
|
read: boolean(),
|
|
@@ -17662,7 +17688,11 @@ var deviceDiscoveryCapability = {
|
|
|
17662
17688
|
};
|
|
17663
17689
|
/**
|
|
17664
17690
|
* `device-adoption` — generic discovery + adoption surface,
|
|
17665
|
-
* system-scoped
|
|
17691
|
+
* system-scoped collection (one provider per integration addon), routed
|
|
17692
|
+
* by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
|
|
17693
|
+
* pin model as `connection-test`. The admin UI keeps using
|
|
17694
|
+
* `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
|
|
17695
|
+
* successor to `ha-discovery`:
|
|
17666
17696
|
* keyed by `integrationId` (the addon resolves integrationId → broker
|
|
17667
17697
|
* internally) rather than a connection-specific `brokerId`, and it
|
|
17668
17698
|
* REUSES the shared `DiscoveredChildDevice` candidate type from
|
|
@@ -41912,6 +41942,9 @@ var NcSystemEventKindSchema = _enum([
|
|
|
41912
41942
|
"server-updated",
|
|
41913
41943
|
"export-completed",
|
|
41914
41944
|
"backup-completed",
|
|
41945
|
+
"alert-critical",
|
|
41946
|
+
"alert-error",
|
|
41947
|
+
"alert-critical-resolved",
|
|
41915
41948
|
"camera-online",
|
|
41916
41949
|
"camera-offline",
|
|
41917
41950
|
"camera-disabled",
|
|
@@ -51092,7 +51125,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
|
|
|
51092
51125
|
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
51093
51126
|
kind: "mutation",
|
|
51094
51127
|
auth: "admin"
|
|
51095
|
-
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({
|
|
51128
|
+
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
|
|
51129
|
+
clear: boolean(),
|
|
51130
|
+
repointLocationId: string().optional()
|
|
51131
|
+
}), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
|
|
51096
51132
|
kind: "mutation",
|
|
51097
51133
|
auth: "admin"
|
|
51098
51134
|
}), method(StorageCleanupInputSchema, object({ jobId: string() }), {
|
|
@@ -53909,7 +53945,8 @@ var batteryCapability = {
|
|
|
53909
53945
|
DeviceType.Button,
|
|
53910
53946
|
DeviceType.Switch,
|
|
53911
53947
|
DeviceType.PetFeeder,
|
|
53912
|
-
DeviceType.Container
|
|
53948
|
+
DeviceType.Container,
|
|
53949
|
+
DeviceType.Thermostat
|
|
53913
53950
|
],
|
|
53914
53951
|
methods: {
|
|
53915
53952
|
/**
|
|
@@ -55382,6 +55419,294 @@ onStatusChanged: { data: object({
|
|
|
55382
55419
|
* whether persisting is worth a SQLite commit. */
|
|
55383
55420
|
volatileStateFields: ["lastChangedAt"]
|
|
55384
55421
|
};
|
|
55422
|
+
/**
|
|
55423
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates,
|
|
55424
|
+
* consumable levels (salt, rinse aid) and common program options.
|
|
55425
|
+
*
|
|
55426
|
+
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
55427
|
+
* by any integration that exposes the same program / option surface.
|
|
55428
|
+
*
|
|
55429
|
+
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
55430
|
+
* provider refreshes the slice on an interval and eagerly after commands.
|
|
55431
|
+
*
|
|
55432
|
+
* UNKNOWN IS NOT OFF. Every field the appliance reports separately is
|
|
55433
|
+
* nullable: `null` means "not known right now" (the appliance has not said,
|
|
55434
|
+
* the link is down, or the description does not carry it) and is never
|
|
55435
|
+
* rendered or exported as `false` / `0`. `availability` says why.
|
|
55436
|
+
*/
|
|
55437
|
+
var DishwasherStateSchema = _enum([
|
|
55438
|
+
"idle",
|
|
55439
|
+
"running",
|
|
55440
|
+
"paused",
|
|
55441
|
+
"finished",
|
|
55442
|
+
"error",
|
|
55443
|
+
"unavailable"
|
|
55444
|
+
]);
|
|
55445
|
+
/**
|
|
55446
|
+
* The appliance's own operation state, uncollapsed. `state` above is the coarse
|
|
55447
|
+
* view for compact surfaces; this is what the appliance said.
|
|
55448
|
+
*/
|
|
55449
|
+
var DishwasherOperationStateSchema = _enum([
|
|
55450
|
+
"Inactive",
|
|
55451
|
+
"Ready",
|
|
55452
|
+
"DelayedStart",
|
|
55453
|
+
"Run",
|
|
55454
|
+
"Pause",
|
|
55455
|
+
"ActionRequired",
|
|
55456
|
+
"Finished",
|
|
55457
|
+
"Error",
|
|
55458
|
+
"Aborting"
|
|
55459
|
+
]);
|
|
55460
|
+
/**
|
|
55461
|
+
* Why fields may be `null`:
|
|
55462
|
+
* - `available` — the link is up and the description is loaded;
|
|
55463
|
+
* - `offline` — the local link is down (values are unknown, not last-known);
|
|
55464
|
+
* - `description-missing` — the link is up but the appliance's description could not
|
|
55465
|
+
* be loaded, so its values cannot be decoded.
|
|
55466
|
+
*/
|
|
55467
|
+
var DishwasherAvailabilitySchema = _enum([
|
|
55468
|
+
"available",
|
|
55469
|
+
"offline",
|
|
55470
|
+
"description-missing"
|
|
55471
|
+
]);
|
|
55472
|
+
var DishwasherConsumableLevelSchema = _enum([
|
|
55473
|
+
"ok",
|
|
55474
|
+
"low",
|
|
55475
|
+
"empty"
|
|
55476
|
+
]);
|
|
55477
|
+
var DishwasherStatusSchema = object({
|
|
55478
|
+
availability: DishwasherAvailabilitySchema,
|
|
55479
|
+
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
55480
|
+
state: DishwasherStateSchema,
|
|
55481
|
+
/** The appliance's operation state as reported; null when not known. */
|
|
55482
|
+
operationState: DishwasherOperationStateSchema.nullable(),
|
|
55483
|
+
/** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
|
|
55484
|
+
program: string().nullable(),
|
|
55485
|
+
/** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
|
|
55486
|
+
selectedProgram: string().nullable(),
|
|
55487
|
+
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
55488
|
+
availablePrograms: array(string()),
|
|
55489
|
+
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
55490
|
+
remainingSeconds: number().int().nonnegative().nullable(),
|
|
55491
|
+
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
55492
|
+
delayedStartSeconds: number().int().nonnegative().nullable(),
|
|
55493
|
+
/** Cycle completion 0..100, or null when not applicable. */
|
|
55494
|
+
progressPercent: number().min(0).max(100).nullable(),
|
|
55495
|
+
/** True when the door is reported open; null when the door state is not known. */
|
|
55496
|
+
doorOpen: boolean().nullable(),
|
|
55497
|
+
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
55498
|
+
doorLocked: boolean().nullable(),
|
|
55499
|
+
/** True when remote start is allowed (door closed, power on, etc.); null when not known. */
|
|
55500
|
+
remoteStartAllowed: boolean().nullable(),
|
|
55501
|
+
/** True when the appliance accepts remote control now; null when not known. */
|
|
55502
|
+
remoteControlActive: boolean().nullable(),
|
|
55503
|
+
/** True while somebody operates the appliance at its panel; null when not reported. */
|
|
55504
|
+
localControlActive: boolean().nullable(),
|
|
55505
|
+
/** Main power / switched-on state; null when not known. */
|
|
55506
|
+
powerOn: boolean().nullable(),
|
|
55507
|
+
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
55508
|
+
powerState: string().nullable(),
|
|
55509
|
+
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55510
|
+
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55511
|
+
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
55512
|
+
halfLoad: boolean().nullable(),
|
|
55513
|
+
hygienePlus: boolean().nullable(),
|
|
55514
|
+
/** Extra dry option when the appliance exposes it. */
|
|
55515
|
+
extraDry: boolean().nullable(),
|
|
55516
|
+
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
55517
|
+
intensiveZone: boolean().nullable(),
|
|
55518
|
+
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
55519
|
+
varioSpeedPlus: boolean().nullable(),
|
|
55520
|
+
/** Child lock (controls disabled on the appliance); null when not known. */
|
|
55521
|
+
childLock: boolean().nullable(),
|
|
55522
|
+
/** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
|
|
55523
|
+
activeEvents: array(string()),
|
|
55524
|
+
/** Numeric error code when the appliance reports one; null otherwise. */
|
|
55525
|
+
errorCode: number().nullable(),
|
|
55526
|
+
/** Name of the raised alert-level event while the appliance is in error; null otherwise. */
|
|
55527
|
+
errorLabel: string().nullable(),
|
|
55528
|
+
/** Ms epoch of the last value received from the appliance; 0 = never. */
|
|
55529
|
+
lastFetchedAt: number()
|
|
55530
|
+
});
|
|
55531
|
+
var DeviceIdSchema = number().int().nonnegative();
|
|
55532
|
+
/** A value a program option or setting can take. */
|
|
55533
|
+
var DishwasherValueSchema = union([
|
|
55534
|
+
boolean(),
|
|
55535
|
+
string(),
|
|
55536
|
+
number()
|
|
55537
|
+
]);
|
|
55538
|
+
var DishwasherAccessSchema = _enum([
|
|
55539
|
+
"none",
|
|
55540
|
+
"read",
|
|
55541
|
+
"readWrite",
|
|
55542
|
+
"writeOnly",
|
|
55543
|
+
"readStatic"
|
|
55544
|
+
]);
|
|
55545
|
+
/**
|
|
55546
|
+
* One option or setting the appliance declares, with the constraints its description
|
|
55547
|
+
* gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
|
|
55548
|
+
*/
|
|
55549
|
+
var DishwasherOptionDescriptorSchema = object({
|
|
55550
|
+
/** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
|
|
55551
|
+
key: string(),
|
|
55552
|
+
/** Last segment of the key, for display. */
|
|
55553
|
+
name: string(),
|
|
55554
|
+
type: _enum([
|
|
55555
|
+
"boolean",
|
|
55556
|
+
"number",
|
|
55557
|
+
"enum",
|
|
55558
|
+
"string"
|
|
55559
|
+
]),
|
|
55560
|
+
access: DishwasherAccessSchema,
|
|
55561
|
+
/** The appliance reports this entity as currently available. */
|
|
55562
|
+
available: boolean(),
|
|
55563
|
+
/** Unit the description declares for a number; null when it declares none. */
|
|
55564
|
+
unit: string().nullable(),
|
|
55565
|
+
min: number().nullable(),
|
|
55566
|
+
max: number().nullable(),
|
|
55567
|
+
step: number().nullable(),
|
|
55568
|
+
/** Allowed members of an enum; null for other types. */
|
|
55569
|
+
enumValues: array(string()).nullable(),
|
|
55570
|
+
defaultValue: DishwasherValueSchema.nullable()
|
|
55571
|
+
});
|
|
55572
|
+
var DishwasherProgramSchema = object({
|
|
55573
|
+
/** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
|
|
55574
|
+
key: string(),
|
|
55575
|
+
name: string(),
|
|
55576
|
+
/** The appliance currently offers this program. */
|
|
55577
|
+
available: boolean(),
|
|
55578
|
+
/** The options this program lists, with the program-level access / availability / default. */
|
|
55579
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
55580
|
+
});
|
|
55581
|
+
var DishwasherOptionsSchema = object({
|
|
55582
|
+
availability: DishwasherAvailabilitySchema,
|
|
55583
|
+
/** What the appliance can be told to do, from the commands its description declares. */
|
|
55584
|
+
supportsStart: boolean(),
|
|
55585
|
+
supportsPause: boolean(),
|
|
55586
|
+
supportsResume: boolean(),
|
|
55587
|
+
supportsStop: boolean(),
|
|
55588
|
+
supportsPower: boolean(),
|
|
55589
|
+
/** Every program the description lists, with its options. */
|
|
55590
|
+
programs: array(DishwasherProgramSchema),
|
|
55591
|
+
/** Every option and setting entity the description lists (programs reference these by key). */
|
|
55592
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
55593
|
+
});
|
|
55594
|
+
var dishwasherCapability = {
|
|
55595
|
+
name: "dishwasher",
|
|
55596
|
+
scope: "device",
|
|
55597
|
+
deviceNative: true,
|
|
55598
|
+
mode: "singleton",
|
|
55599
|
+
deviceTypes: [DeviceType.Dishwasher],
|
|
55600
|
+
methods: {
|
|
55601
|
+
/**
|
|
55602
|
+
* Start a program. Without `program` the selected one starts. `options` are
|
|
55603
|
+
* option feature keys; each is checked against the program's constraints.
|
|
55604
|
+
*/
|
|
55605
|
+
start: method(object({
|
|
55606
|
+
deviceId: DeviceIdSchema,
|
|
55607
|
+
program: string().min(1).optional(),
|
|
55608
|
+
options: record(string(), DishwasherValueSchema).optional()
|
|
55609
|
+
}), _void(), {
|
|
55610
|
+
kind: "mutation",
|
|
55611
|
+
auth: "protected"
|
|
55612
|
+
}),
|
|
55613
|
+
pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55614
|
+
kind: "mutation",
|
|
55615
|
+
auth: "protected"
|
|
55616
|
+
}),
|
|
55617
|
+
resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55618
|
+
kind: "mutation",
|
|
55619
|
+
auth: "protected"
|
|
55620
|
+
}),
|
|
55621
|
+
stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55622
|
+
kind: "mutation",
|
|
55623
|
+
auth: "protected"
|
|
55624
|
+
}),
|
|
55625
|
+
/** Select (not start) a program; refused when the appliance does not offer it. */
|
|
55626
|
+
setProgram: method(object({
|
|
55627
|
+
deviceId: DeviceIdSchema,
|
|
55628
|
+
program: string().min(1)
|
|
55629
|
+
}), _void(), {
|
|
55630
|
+
kind: "mutation",
|
|
55631
|
+
auth: "protected"
|
|
55632
|
+
}),
|
|
55633
|
+
setPower: method(object({
|
|
55634
|
+
deviceId: DeviceIdSchema,
|
|
55635
|
+
on: boolean()
|
|
55636
|
+
}), _void(), {
|
|
55637
|
+
kind: "mutation",
|
|
55638
|
+
auth: "protected"
|
|
55639
|
+
}),
|
|
55640
|
+
setHalfLoad: method(object({
|
|
55641
|
+
deviceId: DeviceIdSchema,
|
|
55642
|
+
on: boolean()
|
|
55643
|
+
}), _void(), {
|
|
55644
|
+
kind: "mutation",
|
|
55645
|
+
auth: "protected"
|
|
55646
|
+
}),
|
|
55647
|
+
setHygienePlus: method(object({
|
|
55648
|
+
deviceId: DeviceIdSchema,
|
|
55649
|
+
on: boolean()
|
|
55650
|
+
}), _void(), {
|
|
55651
|
+
kind: "mutation",
|
|
55652
|
+
auth: "protected"
|
|
55653
|
+
}),
|
|
55654
|
+
setExtraDry: method(object({
|
|
55655
|
+
deviceId: DeviceIdSchema,
|
|
55656
|
+
on: boolean()
|
|
55657
|
+
}), _void(), {
|
|
55658
|
+
kind: "mutation",
|
|
55659
|
+
auth: "protected"
|
|
55660
|
+
}),
|
|
55661
|
+
setIntensiveZone: method(object({
|
|
55662
|
+
deviceId: DeviceIdSchema,
|
|
55663
|
+
on: boolean()
|
|
55664
|
+
}), _void(), {
|
|
55665
|
+
kind: "mutation",
|
|
55666
|
+
auth: "protected"
|
|
55667
|
+
}),
|
|
55668
|
+
setVarioSpeedPlus: method(object({
|
|
55669
|
+
deviceId: DeviceIdSchema,
|
|
55670
|
+
on: boolean()
|
|
55671
|
+
}), _void(), {
|
|
55672
|
+
kind: "mutation",
|
|
55673
|
+
auth: "protected"
|
|
55674
|
+
}),
|
|
55675
|
+
setChildLock: method(object({
|
|
55676
|
+
deviceId: DeviceIdSchema,
|
|
55677
|
+
on: boolean()
|
|
55678
|
+
}), _void(), {
|
|
55679
|
+
kind: "mutation",
|
|
55680
|
+
auth: "protected"
|
|
55681
|
+
}),
|
|
55682
|
+
/**
|
|
55683
|
+
* Write any option or setting by feature key. Refused when the description does
|
|
55684
|
+
* not list it, it is not writable or not available now, or the value is outside
|
|
55685
|
+
* its declared range / members.
|
|
55686
|
+
*/
|
|
55687
|
+
setOption: method(object({
|
|
55688
|
+
deviceId: DeviceIdSchema,
|
|
55689
|
+
key: string().min(1),
|
|
55690
|
+
value: DishwasherValueSchema
|
|
55691
|
+
}), _void(), {
|
|
55692
|
+
kind: "mutation",
|
|
55693
|
+
auth: "protected"
|
|
55694
|
+
}),
|
|
55695
|
+
/** What this appliance can do, from its own description — the UI is derived from it. */
|
|
55696
|
+
getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
|
|
55697
|
+
},
|
|
55698
|
+
status: {
|
|
55699
|
+
schema: DishwasherStatusSchema,
|
|
55700
|
+
kind: "poll"
|
|
55701
|
+
},
|
|
55702
|
+
runtimeState: DishwasherStatusSchema,
|
|
55703
|
+
durability: "session",
|
|
55704
|
+
history: { fields: { progressPercent: {
|
|
55705
|
+
kind: "gauge",
|
|
55706
|
+
unit: "%",
|
|
55707
|
+
deadband: 2
|
|
55708
|
+
} } }
|
|
55709
|
+
};
|
|
55385
55710
|
var DoorbellStatusSchema = object({
|
|
55386
55711
|
/** Ms epoch of the last press. null = never observed since this provider started. */
|
|
55387
55712
|
lastPressedAt: number().nullable(),
|
|
@@ -56184,6 +56509,32 @@ var gasCapability = {
|
|
|
56184
56509
|
* whether persisting is worth a SQLite commit. */
|
|
56185
56510
|
volatileStateFields: ["lastChangedAt"]
|
|
56186
56511
|
};
|
|
56512
|
+
var HeatingValveStatusSchema = object({
|
|
56513
|
+
/** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
|
|
56514
|
+
position: number().min(0).max(100).nullable(),
|
|
56515
|
+
/** Ms epoch when the slice was last updated (push or poll). */
|
|
56516
|
+
lastFetchedAt: number()
|
|
56517
|
+
});
|
|
56518
|
+
var heatingValveCapability = {
|
|
56519
|
+
name: "heating-valve",
|
|
56520
|
+
scope: "device",
|
|
56521
|
+
deviceNative: true,
|
|
56522
|
+
mode: "singleton",
|
|
56523
|
+
deviceTypes: [DeviceType.Thermostat],
|
|
56524
|
+
methods: {},
|
|
56525
|
+
status: {
|
|
56526
|
+
schema: HeatingValveStatusSchema,
|
|
56527
|
+
kind: "push"
|
|
56528
|
+
},
|
|
56529
|
+
runtimeState: HeatingValveStatusSchema,
|
|
56530
|
+
durability: "session",
|
|
56531
|
+
history: { fields: { position: {
|
|
56532
|
+
kind: "gauge",
|
|
56533
|
+
unit: "%",
|
|
56534
|
+
deadband: 1
|
|
56535
|
+
} } },
|
|
56536
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
56537
|
+
};
|
|
56187
56538
|
/**
|
|
56188
56539
|
* Humidifier / dehumidifier cap. Models HA `humidifier.*` entities —
|
|
56189
56540
|
* an on/off actuator with an optional target-humidity setpoint and an
|
|
@@ -65604,6 +65955,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
65604
65955
|
dayNight: dayNightCapability,
|
|
65605
65956
|
deviceDiscovery: deviceDiscoveryCapability,
|
|
65606
65957
|
deviceStatus: deviceStatusCapability,
|
|
65958
|
+
dishwasher: dishwasherCapability,
|
|
65607
65959
|
doorbell: doorbellCapability,
|
|
65608
65960
|
enumSensor: enumSensorCapability,
|
|
65609
65961
|
eventEmitter: eventEmitterCapability,
|
|
@@ -65611,6 +65963,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
65611
65963
|
featureProbe: featureProbeCapability,
|
|
65612
65964
|
flood: floodCapability,
|
|
65613
65965
|
gas: gasCapability,
|
|
65966
|
+
heatingValve: heatingValveCapability,
|
|
65614
65967
|
humidifier: humidifierCapability,
|
|
65615
65968
|
humiditySensor: humiditySensorCapability,
|
|
65616
65969
|
image: imageCapability,
|
|
@@ -66385,7 +66738,7 @@ var DeclaredDevices = class {
|
|
|
66385
66738
|
return removed;
|
|
66386
66739
|
}
|
|
66387
66740
|
};
|
|
66388
|
-
DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
|
|
66741
|
+
DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher;
|
|
66389
66742
|
new Set(Object.values(DeviceType));
|
|
66390
66743
|
Object.freeze({
|
|
66391
66744
|
"accessories.getStatus": {
|
|
@@ -68806,6 +69159,96 @@ Object.freeze({
|
|
|
68806
69159
|
addonId: null,
|
|
68807
69160
|
access: "view"
|
|
68808
69161
|
},
|
|
69162
|
+
"dishwasher.getOptions": {
|
|
69163
|
+
capName: "dishwasher",
|
|
69164
|
+
capScope: "device",
|
|
69165
|
+
addonId: null,
|
|
69166
|
+
access: "view"
|
|
69167
|
+
},
|
|
69168
|
+
"dishwasher.getStatus": {
|
|
69169
|
+
capName: "dishwasher",
|
|
69170
|
+
capScope: "device",
|
|
69171
|
+
addonId: null,
|
|
69172
|
+
access: "view"
|
|
69173
|
+
},
|
|
69174
|
+
"dishwasher.pause": {
|
|
69175
|
+
capName: "dishwasher",
|
|
69176
|
+
capScope: "device",
|
|
69177
|
+
addonId: null,
|
|
69178
|
+
access: "create"
|
|
69179
|
+
},
|
|
69180
|
+
"dishwasher.resume": {
|
|
69181
|
+
capName: "dishwasher",
|
|
69182
|
+
capScope: "device",
|
|
69183
|
+
addonId: null,
|
|
69184
|
+
access: "create"
|
|
69185
|
+
},
|
|
69186
|
+
"dishwasher.setChildLock": {
|
|
69187
|
+
capName: "dishwasher",
|
|
69188
|
+
capScope: "device",
|
|
69189
|
+
addonId: null,
|
|
69190
|
+
access: "create"
|
|
69191
|
+
},
|
|
69192
|
+
"dishwasher.setExtraDry": {
|
|
69193
|
+
capName: "dishwasher",
|
|
69194
|
+
capScope: "device",
|
|
69195
|
+
addonId: null,
|
|
69196
|
+
access: "create"
|
|
69197
|
+
},
|
|
69198
|
+
"dishwasher.setHalfLoad": {
|
|
69199
|
+
capName: "dishwasher",
|
|
69200
|
+
capScope: "device",
|
|
69201
|
+
addonId: null,
|
|
69202
|
+
access: "create"
|
|
69203
|
+
},
|
|
69204
|
+
"dishwasher.setHygienePlus": {
|
|
69205
|
+
capName: "dishwasher",
|
|
69206
|
+
capScope: "device",
|
|
69207
|
+
addonId: null,
|
|
69208
|
+
access: "create"
|
|
69209
|
+
},
|
|
69210
|
+
"dishwasher.setIntensiveZone": {
|
|
69211
|
+
capName: "dishwasher",
|
|
69212
|
+
capScope: "device",
|
|
69213
|
+
addonId: null,
|
|
69214
|
+
access: "create"
|
|
69215
|
+
},
|
|
69216
|
+
"dishwasher.setOption": {
|
|
69217
|
+
capName: "dishwasher",
|
|
69218
|
+
capScope: "device",
|
|
69219
|
+
addonId: null,
|
|
69220
|
+
access: "create"
|
|
69221
|
+
},
|
|
69222
|
+
"dishwasher.setPower": {
|
|
69223
|
+
capName: "dishwasher",
|
|
69224
|
+
capScope: "device",
|
|
69225
|
+
addonId: null,
|
|
69226
|
+
access: "create"
|
|
69227
|
+
},
|
|
69228
|
+
"dishwasher.setProgram": {
|
|
69229
|
+
capName: "dishwasher",
|
|
69230
|
+
capScope: "device",
|
|
69231
|
+
addonId: null,
|
|
69232
|
+
access: "create"
|
|
69233
|
+
},
|
|
69234
|
+
"dishwasher.setVarioSpeedPlus": {
|
|
69235
|
+
capName: "dishwasher",
|
|
69236
|
+
capScope: "device",
|
|
69237
|
+
addonId: null,
|
|
69238
|
+
access: "create"
|
|
69239
|
+
},
|
|
69240
|
+
"dishwasher.start": {
|
|
69241
|
+
capName: "dishwasher",
|
|
69242
|
+
capScope: "device",
|
|
69243
|
+
addonId: null,
|
|
69244
|
+
access: "create"
|
|
69245
|
+
},
|
|
69246
|
+
"dishwasher.stop": {
|
|
69247
|
+
capName: "dishwasher",
|
|
69248
|
+
capScope: "device",
|
|
69249
|
+
addonId: null,
|
|
69250
|
+
access: "create"
|
|
69251
|
+
},
|
|
68809
69252
|
"doorbell.getStatus": {
|
|
68810
69253
|
capName: "doorbell",
|
|
68811
69254
|
capScope: "device",
|
|
@@ -69016,6 +69459,12 @@ Object.freeze({
|
|
|
69016
69459
|
addonId: null,
|
|
69017
69460
|
access: "view"
|
|
69018
69461
|
},
|
|
69462
|
+
"heatingValve.getStatus": {
|
|
69463
|
+
capName: "heating-valve",
|
|
69464
|
+
capScope: "device",
|
|
69465
|
+
addonId: null,
|
|
69466
|
+
access: "view"
|
|
69467
|
+
},
|
|
69019
69468
|
"humidifier.getStatus": {
|
|
69020
69469
|
capName: "humidifier",
|
|
69021
69470
|
capScope: "device",
|
|
@@ -73234,6 +73683,12 @@ Object.freeze({
|
|
|
73234
73683
|
addonId: null,
|
|
73235
73684
|
access: "view"
|
|
73236
73685
|
},
|
|
73686
|
+
"storageMigration.moverClearance": {
|
|
73687
|
+
capName: "storage-migration",
|
|
73688
|
+
capScope: "system",
|
|
73689
|
+
addonId: null,
|
|
73690
|
+
access: "view"
|
|
73691
|
+
},
|
|
73237
73692
|
"storageMigration.movers": {
|
|
73238
73693
|
capName: "storage-migration",
|
|
73239
73694
|
capScope: "system",
|
|
@@ -74603,7 +75058,7 @@ Object.freeze({
|
|
|
74603
75058
|
access: "create"
|
|
74604
75059
|
}
|
|
74605
75060
|
});
|
|
74606
|
-
DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
|
|
75061
|
+
DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher;
|
|
74607
75062
|
DeviceFeature.BatteryOperated;
|
|
74608
75063
|
Object.freeze({
|
|
74609
75064
|
"accessories.getStatus": [{
|
|
@@ -75427,6 +75882,81 @@ Object.freeze({
|
|
|
75427
75882
|
form: "single",
|
|
75428
75883
|
optional: false
|
|
75429
75884
|
}],
|
|
75885
|
+
"dishwasher.getOptions": [{
|
|
75886
|
+
name: "deviceId",
|
|
75887
|
+
form: "single",
|
|
75888
|
+
optional: false
|
|
75889
|
+
}],
|
|
75890
|
+
"dishwasher.getStatus": [{
|
|
75891
|
+
name: "deviceId",
|
|
75892
|
+
form: "single",
|
|
75893
|
+
optional: false
|
|
75894
|
+
}],
|
|
75895
|
+
"dishwasher.pause": [{
|
|
75896
|
+
name: "deviceId",
|
|
75897
|
+
form: "single",
|
|
75898
|
+
optional: false
|
|
75899
|
+
}],
|
|
75900
|
+
"dishwasher.resume": [{
|
|
75901
|
+
name: "deviceId",
|
|
75902
|
+
form: "single",
|
|
75903
|
+
optional: false
|
|
75904
|
+
}],
|
|
75905
|
+
"dishwasher.setChildLock": [{
|
|
75906
|
+
name: "deviceId",
|
|
75907
|
+
form: "single",
|
|
75908
|
+
optional: false
|
|
75909
|
+
}],
|
|
75910
|
+
"dishwasher.setExtraDry": [{
|
|
75911
|
+
name: "deviceId",
|
|
75912
|
+
form: "single",
|
|
75913
|
+
optional: false
|
|
75914
|
+
}],
|
|
75915
|
+
"dishwasher.setHalfLoad": [{
|
|
75916
|
+
name: "deviceId",
|
|
75917
|
+
form: "single",
|
|
75918
|
+
optional: false
|
|
75919
|
+
}],
|
|
75920
|
+
"dishwasher.setHygienePlus": [{
|
|
75921
|
+
name: "deviceId",
|
|
75922
|
+
form: "single",
|
|
75923
|
+
optional: false
|
|
75924
|
+
}],
|
|
75925
|
+
"dishwasher.setIntensiveZone": [{
|
|
75926
|
+
name: "deviceId",
|
|
75927
|
+
form: "single",
|
|
75928
|
+
optional: false
|
|
75929
|
+
}],
|
|
75930
|
+
"dishwasher.setOption": [{
|
|
75931
|
+
name: "deviceId",
|
|
75932
|
+
form: "single",
|
|
75933
|
+
optional: false
|
|
75934
|
+
}],
|
|
75935
|
+
"dishwasher.setPower": [{
|
|
75936
|
+
name: "deviceId",
|
|
75937
|
+
form: "single",
|
|
75938
|
+
optional: false
|
|
75939
|
+
}],
|
|
75940
|
+
"dishwasher.setProgram": [{
|
|
75941
|
+
name: "deviceId",
|
|
75942
|
+
form: "single",
|
|
75943
|
+
optional: false
|
|
75944
|
+
}],
|
|
75945
|
+
"dishwasher.setVarioSpeedPlus": [{
|
|
75946
|
+
name: "deviceId",
|
|
75947
|
+
form: "single",
|
|
75948
|
+
optional: false
|
|
75949
|
+
}],
|
|
75950
|
+
"dishwasher.start": [{
|
|
75951
|
+
name: "deviceId",
|
|
75952
|
+
form: "single",
|
|
75953
|
+
optional: false
|
|
75954
|
+
}],
|
|
75955
|
+
"dishwasher.stop": [{
|
|
75956
|
+
name: "deviceId",
|
|
75957
|
+
form: "single",
|
|
75958
|
+
optional: false
|
|
75959
|
+
}],
|
|
75430
75960
|
"doorbell.getStatus": [{
|
|
75431
75961
|
name: "deviceId",
|
|
75432
75962
|
form: "single",
|
|
@@ -75496,6 +76026,11 @@ Object.freeze({
|
|
|
75496
76026
|
form: "single",
|
|
75497
76027
|
optional: false
|
|
75498
76028
|
}],
|
|
76029
|
+
"heatingValve.getStatus": [{
|
|
76030
|
+
name: "deviceId",
|
|
76031
|
+
form: "single",
|
|
76032
|
+
optional: false
|
|
76033
|
+
}],
|
|
75499
76034
|
"humidifier.getStatus": [{
|
|
75500
76035
|
name: "deviceId",
|
|
75501
76036
|
form: "single",
|
|
@@ -77453,6 +77988,9 @@ new Map(Object.entries({
|
|
|
77453
77988
|
"wrapper-update-available": "system",
|
|
77454
77989
|
"backup-completed": "system",
|
|
77455
77990
|
"export-completed": "system",
|
|
77991
|
+
"alert-critical": "system",
|
|
77992
|
+
"alert-error": "system",
|
|
77993
|
+
"alert-critical-resolved": "system",
|
|
77456
77994
|
"storage-location-low": "system",
|
|
77457
77995
|
"storage-location-critical": "system",
|
|
77458
77996
|
"storage-location-ok": "system",
|
|
@@ -77577,6 +78115,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
77577
78115
|
"storage-location-ok"
|
|
77578
78116
|
]
|
|
77579
78117
|
},
|
|
78118
|
+
{
|
|
78119
|
+
id: "alerts",
|
|
78120
|
+
family: "system",
|
|
78121
|
+
label: "Alerts",
|
|
78122
|
+
kinds: [
|
|
78123
|
+
"alert-critical",
|
|
78124
|
+
"alert-error",
|
|
78125
|
+
"alert-critical-resolved"
|
|
78126
|
+
]
|
|
78127
|
+
},
|
|
77580
78128
|
{
|
|
77581
78129
|
id: "alarm",
|
|
77582
78130
|
family: "alarm",
|
|
@@ -77621,6 +78169,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
|
|
|
77621
78169
|
return [[descriptor.kind, field]];
|
|
77622
78170
|
})));
|
|
77623
78171
|
Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
|
|
78172
|
+
object({
|
|
78173
|
+
phase: _enum(["raised", "resolved"]),
|
|
78174
|
+
episodeId: string().min(1),
|
|
78175
|
+
alertId: string().min(1),
|
|
78176
|
+
severity: AlertSeveritySchema,
|
|
78177
|
+
category: string(),
|
|
78178
|
+
title: string(),
|
|
78179
|
+
message: string(),
|
|
78180
|
+
sourceType: string().optional(),
|
|
78181
|
+
sourceId: string().optional(),
|
|
78182
|
+
nodeId: string().optional(),
|
|
78183
|
+
/** The alert's own action link (where the operator acts on it), when it has one. */
|
|
78184
|
+
actionUrl: string().optional(),
|
|
78185
|
+
at: number()
|
|
78186
|
+
});
|
|
77624
78187
|
var RULE_BODY_ONLY = ["body"];
|
|
77625
78188
|
var RULE_TEXT = ["title", "body"];
|
|
77626
78189
|
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
@@ -77630,6 +78193,11 @@ var TANK = [
|
|
|
77630
78193
|
"device-tank-full",
|
|
77631
78194
|
"device-tank-normal"
|
|
77632
78195
|
];
|
|
78196
|
+
var ALERT_EPISODE = [
|
|
78197
|
+
"alert-critical",
|
|
78198
|
+
"alert-error",
|
|
78199
|
+
"alert-critical-resolved"
|
|
78200
|
+
];
|
|
77633
78201
|
var UPDATES = [
|
|
77634
78202
|
"addon-update-available",
|
|
77635
78203
|
"server-update-available",
|
|
@@ -77822,14 +78390,14 @@ var STATE_SUMMARY_VARS = [
|
|
|
77822
78390
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
77823
78391
|
([...RULE_TEXT], [...TANK]),
|
|
77824
78392
|
[...RULE_TEXT],
|
|
77825
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
77826
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
77827
|
-
[...RULE_TEXT],
|
|
78393
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
78394
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
77828
78395
|
[...RULE_TEXT],
|
|
77829
78396
|
[...RULE_TEXT],
|
|
77830
78397
|
[...RULE_TEXT],
|
|
77831
78398
|
[...RULE_TEXT],
|
|
77832
78399
|
[...RULE_TEXT],
|
|
78400
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
77833
78401
|
[...RULE_TEXT],
|
|
77834
78402
|
[...RULE_TEXT],
|
|
77835
78403
|
[...RULE_TEXT],
|
|
@@ -77847,7 +78415,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
77847
78415
|
[...RULE_TEXT],
|
|
77848
78416
|
[...RULE_TEXT],
|
|
77849
78417
|
[...RULE_TEXT],
|
|
77850
|
-
[...RULE_TEXT],
|
|
78418
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78419
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78420
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78421
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78422
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
77851
78423
|
[...RULE_TEXT],
|
|
77852
78424
|
[...RULE_TEXT],
|
|
77853
78425
|
[...RULE_TEXT],
|