@camstack/addon-export-alexa 1.2.146 → 1.2.148
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/export-alexa.addon.js +535 -22
- package/dist/export-alexa.addon.mjs +535 -22
- package/lambda-template/README.md +28 -2
- package/lambda-template/authorize-page.js +278 -0
- package/lambda-template/index.js +2 -75
- package/lambda-template/page-style.js +14 -0
- package/package.json +1 -1
|
@@ -34,7 +34,7 @@ let node_path = require("node:path");
|
|
|
34
34
|
node_path = __toESM(node_path, 1);
|
|
35
35
|
require("node:child_process");
|
|
36
36
|
require("node:zlib");
|
|
37
|
-
//#region ../types/dist/event-category-
|
|
37
|
+
//#region ../types/dist/event-category-DOl51-Ij.mjs
|
|
38
38
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
39
39
|
EventCategory["SystemBoot"] = "system.boot";
|
|
40
40
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -113,9 +113,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
113
113
|
/**
|
|
114
114
|
* The node's one-shot runner boot check (D877): planned runners against the
|
|
115
115
|
* process service, `degraded` when any is failed, refused or missing. The
|
|
116
|
-
* alert centre turns it into one
|
|
116
|
+
* alert centre turns it into one critical alert.
|
|
117
117
|
*/
|
|
118
118
|
EventCategory["SystemRunnerCheck"] = "system.runner-check";
|
|
119
|
+
/**
|
|
120
|
+
* An alert EPISODE opened or closed, emitted by the alert centre for alerts
|
|
121
|
+
* of severity `critical` or `error` (`AlertEpisodePayload`). The alert
|
|
122
|
+
* centre sends no notification of its own: Notification Center turns this
|
|
123
|
+
* into the `alert-critical` / `alert-error` / `alert-critical-resolved`
|
|
124
|
+
* system-event kinds, and reconciles from the alerts store because a bus
|
|
125
|
+
* event may be dropped (D8, D11).
|
|
126
|
+
*/
|
|
127
|
+
EventCategory["AlertEpisode"] = "alert.episode";
|
|
119
128
|
EventCategory["AddonError"] = "addon.error";
|
|
120
129
|
EventCategory["AddonPageReady"] = "addon.page-ready";
|
|
121
130
|
EventCategory["AddonWidgetReady"] = "addon.widget-ready";
|
|
@@ -5440,7 +5449,7 @@ var ZodIssueCode = {
|
|
|
5440
5449
|
var ZodFirstPartyTypeKind;
|
|
5441
5450
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5442
5451
|
//#endregion
|
|
5443
|
-
//#region ../types/dist/sleep-
|
|
5452
|
+
//#region ../types/dist/sleep-BxjU_fJM.mjs
|
|
5444
5453
|
/**
|
|
5445
5454
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5446
5455
|
* window to float samples (D455).
|
|
@@ -8410,7 +8419,7 @@ object({
|
|
|
8410
8419
|
params: record(string(), union([string(), number()])).optional()
|
|
8411
8420
|
});
|
|
8412
8421
|
//#endregion
|
|
8413
|
-
//#region ../types/dist/err-msg
|
|
8422
|
+
//#region ../types/dist/err-msg-BXKzRBwg.mjs
|
|
8414
8423
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
8415
8424
|
DeviceType["Camera"] = "camera";
|
|
8416
8425
|
DeviceType["Hub"] = "hub";
|
|
@@ -8502,6 +8511,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
|
8502
8511
|
* native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
|
|
8503
8512
|
* integrations sharing the same food/desiccant/hopper surface. */
|
|
8504
8513
|
DeviceType["PetFeeder"] = "pet-feeder";
|
|
8514
|
+
/** Built-in dishwasher — program lifecycle, door / remote-start gates,
|
|
8515
|
+
* salt and rinse-aid levels. Installed with the `dishwasher` cap.
|
|
8516
|
+
* Sources: native Bosch Home Connect, reusable by similar integrations. */
|
|
8517
|
+
DeviceType["Dishwasher"] = "dishwasher";
|
|
8505
8518
|
return DeviceType;
|
|
8506
8519
|
}({});
|
|
8507
8520
|
var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
|
|
@@ -8759,7 +8772,7 @@ function errMsg(err) {
|
|
|
8759
8772
|
return String(err);
|
|
8760
8773
|
}
|
|
8761
8774
|
//#endregion
|
|
8762
|
-
//#region ../types/dist/composition-
|
|
8775
|
+
//#region ../types/dist/composition-CB6PMT9p.mjs
|
|
8763
8776
|
/**
|
|
8764
8777
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
8765
8778
|
*
|
|
@@ -13428,8 +13441,20 @@ var AlertSeveritySchema = _enum([
|
|
|
13428
13441
|
"info",
|
|
13429
13442
|
"success",
|
|
13430
13443
|
"warning",
|
|
13431
|
-
"error"
|
|
13444
|
+
"error",
|
|
13445
|
+
"critical"
|
|
13432
13446
|
]);
|
|
13447
|
+
var AlertActionSchema = object({
|
|
13448
|
+
label: string(),
|
|
13449
|
+
href: string().optional(),
|
|
13450
|
+
/**
|
|
13451
|
+
* How `href` is followed. Absent / `app`: an admin-ui route (client-side).
|
|
13452
|
+
* `server`: a route the HUB serves (an addon HTTP route such as an OAuth
|
|
13453
|
+
* start) — the browser must leave the SPA with a full navigation, because
|
|
13454
|
+
* the SPA has no such route and would bounce to the home page.
|
|
13455
|
+
*/
|
|
13456
|
+
navigation: _enum(["app", "server"]).optional()
|
|
13457
|
+
});
|
|
13433
13458
|
var AlertStatusSchema = _enum([
|
|
13434
13459
|
"active",
|
|
13435
13460
|
"in-progress",
|
|
@@ -13447,6 +13472,7 @@ var AlertSchema = object({
|
|
|
13447
13472
|
severity: AlertSeveritySchema,
|
|
13448
13473
|
title: string(),
|
|
13449
13474
|
message: string(),
|
|
13475
|
+
action: AlertActionSchema.optional(),
|
|
13450
13476
|
status: AlertStatusSchema,
|
|
13451
13477
|
progress: number().optional(),
|
|
13452
13478
|
read: boolean(),
|
|
@@ -17591,7 +17617,11 @@ DeviceType.Hub, DeviceDiscoveryStatusSchema.extend({ lastFetchedAt: number().int
|
|
|
17591
17617
|
});
|
|
17592
17618
|
/**
|
|
17593
17619
|
* `device-adoption` — generic discovery + adoption surface,
|
|
17594
|
-
* system-scoped
|
|
17620
|
+
* system-scoped collection (one provider per integration addon), routed
|
|
17621
|
+
* by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
|
|
17622
|
+
* pin model as `connection-test`. The admin UI keeps using
|
|
17623
|
+
* `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
|
|
17624
|
+
* successor to `ha-discovery`:
|
|
17595
17625
|
* keyed by `integrationId` (the addon resolves integrationId → broker
|
|
17596
17626
|
* internally) rather than a connection-specific `brokerId`, and it
|
|
17597
17627
|
* REUSES the shared `DiscoveredChildDevice` candidate type from
|
|
@@ -41824,6 +41854,9 @@ var NcSystemEventKindSchema = _enum([
|
|
|
41824
41854
|
"server-updated",
|
|
41825
41855
|
"export-completed",
|
|
41826
41856
|
"backup-completed",
|
|
41857
|
+
"alert-critical",
|
|
41858
|
+
"alert-error",
|
|
41859
|
+
"alert-critical-resolved",
|
|
41827
41860
|
"camera-online",
|
|
41828
41861
|
"camera-offline",
|
|
41829
41862
|
"camera-disabled",
|
|
@@ -50872,7 +50905,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
|
|
|
50872
50905
|
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
50873
50906
|
kind: "mutation",
|
|
50874
50907
|
auth: "admin"
|
|
50875
|
-
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({
|
|
50908
|
+
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
|
|
50909
|
+
clear: boolean(),
|
|
50910
|
+
repointLocationId: string().optional()
|
|
50911
|
+
}), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
|
|
50876
50912
|
kind: "mutation",
|
|
50877
50913
|
auth: "admin"
|
|
50878
50914
|
}), method(StorageCleanupInputSchema, object({ jobId: string() }), {
|
|
@@ -53422,7 +53458,7 @@ var BatteryStatusSchema = object({
|
|
|
53422
53458
|
*/
|
|
53423
53459
|
binary: boolean().optional()
|
|
53424
53460
|
});
|
|
53425
|
-
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, method(object({
|
|
53461
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, method(object({
|
|
53426
53462
|
deviceId: number(),
|
|
53427
53463
|
/** Bound on the wait. Sensible range 3000–10000ms. */
|
|
53428
53464
|
timeoutMs: number().int().min(500).max(3e4).default(8e3)
|
|
@@ -54322,6 +54358,250 @@ object({
|
|
|
54322
54358
|
deviceId: number(),
|
|
54323
54359
|
status: DeviceStatusSchema
|
|
54324
54360
|
});
|
|
54361
|
+
/**
|
|
54362
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates,
|
|
54363
|
+
* consumable levels (salt, rinse aid) and common program options.
|
|
54364
|
+
*
|
|
54365
|
+
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
54366
|
+
* by any integration that exposes the same program / option surface.
|
|
54367
|
+
*
|
|
54368
|
+
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
54369
|
+
* provider refreshes the slice on an interval and eagerly after commands.
|
|
54370
|
+
*
|
|
54371
|
+
* UNKNOWN IS NOT OFF. Every field the appliance reports separately is
|
|
54372
|
+
* nullable: `null` means "not known right now" (the appliance has not said,
|
|
54373
|
+
* the link is down, or the description does not carry it) and is never
|
|
54374
|
+
* rendered or exported as `false` / `0`. `availability` says why.
|
|
54375
|
+
*/
|
|
54376
|
+
var DishwasherStateSchema = _enum([
|
|
54377
|
+
"idle",
|
|
54378
|
+
"running",
|
|
54379
|
+
"paused",
|
|
54380
|
+
"finished",
|
|
54381
|
+
"error",
|
|
54382
|
+
"unavailable"
|
|
54383
|
+
]);
|
|
54384
|
+
/**
|
|
54385
|
+
* The appliance's own operation state, uncollapsed. `state` above is the coarse
|
|
54386
|
+
* view for compact surfaces; this is what the appliance said.
|
|
54387
|
+
*/
|
|
54388
|
+
var DishwasherOperationStateSchema = _enum([
|
|
54389
|
+
"Inactive",
|
|
54390
|
+
"Ready",
|
|
54391
|
+
"DelayedStart",
|
|
54392
|
+
"Run",
|
|
54393
|
+
"Pause",
|
|
54394
|
+
"ActionRequired",
|
|
54395
|
+
"Finished",
|
|
54396
|
+
"Error",
|
|
54397
|
+
"Aborting"
|
|
54398
|
+
]);
|
|
54399
|
+
/**
|
|
54400
|
+
* Why fields may be `null`:
|
|
54401
|
+
* - `available` — the link is up and the description is loaded;
|
|
54402
|
+
* - `offline` — the local link is down (values are unknown, not last-known);
|
|
54403
|
+
* - `description-missing` — the link is up but the appliance's description could not
|
|
54404
|
+
* be loaded, so its values cannot be decoded.
|
|
54405
|
+
*/
|
|
54406
|
+
var DishwasherAvailabilitySchema = _enum([
|
|
54407
|
+
"available",
|
|
54408
|
+
"offline",
|
|
54409
|
+
"description-missing"
|
|
54410
|
+
]);
|
|
54411
|
+
var DishwasherConsumableLevelSchema = _enum([
|
|
54412
|
+
"ok",
|
|
54413
|
+
"low",
|
|
54414
|
+
"empty"
|
|
54415
|
+
]);
|
|
54416
|
+
object({
|
|
54417
|
+
availability: DishwasherAvailabilitySchema,
|
|
54418
|
+
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
54419
|
+
state: DishwasherStateSchema,
|
|
54420
|
+
/** The appliance's operation state as reported; null when not known. */
|
|
54421
|
+
operationState: DishwasherOperationStateSchema.nullable(),
|
|
54422
|
+
/** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
|
|
54423
|
+
program: string().nullable(),
|
|
54424
|
+
/** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
|
|
54425
|
+
selectedProgram: string().nullable(),
|
|
54426
|
+
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
54427
|
+
availablePrograms: array(string()),
|
|
54428
|
+
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
54429
|
+
remainingSeconds: number().int().nonnegative().nullable(),
|
|
54430
|
+
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
54431
|
+
delayedStartSeconds: number().int().nonnegative().nullable(),
|
|
54432
|
+
/** Cycle completion 0..100, or null when not applicable. */
|
|
54433
|
+
progressPercent: number().min(0).max(100).nullable(),
|
|
54434
|
+
/** True when the door is reported open; null when the door state is not known. */
|
|
54435
|
+
doorOpen: boolean().nullable(),
|
|
54436
|
+
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
54437
|
+
doorLocked: boolean().nullable(),
|
|
54438
|
+
/** True when remote start is allowed (door closed, power on, etc.); null when not known. */
|
|
54439
|
+
remoteStartAllowed: boolean().nullable(),
|
|
54440
|
+
/** True when the appliance accepts remote control now; null when not known. */
|
|
54441
|
+
remoteControlActive: boolean().nullable(),
|
|
54442
|
+
/** True while somebody operates the appliance at its panel; null when not reported. */
|
|
54443
|
+
localControlActive: boolean().nullable(),
|
|
54444
|
+
/** Main power / switched-on state; null when not known. */
|
|
54445
|
+
powerOn: boolean().nullable(),
|
|
54446
|
+
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
54447
|
+
powerState: string().nullable(),
|
|
54448
|
+
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
54449
|
+
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
54450
|
+
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
54451
|
+
halfLoad: boolean().nullable(),
|
|
54452
|
+
hygienePlus: boolean().nullable(),
|
|
54453
|
+
/** Extra dry option when the appliance exposes it. */
|
|
54454
|
+
extraDry: boolean().nullable(),
|
|
54455
|
+
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
54456
|
+
intensiveZone: boolean().nullable(),
|
|
54457
|
+
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
54458
|
+
varioSpeedPlus: boolean().nullable(),
|
|
54459
|
+
/** Child lock (controls disabled on the appliance); null when not known. */
|
|
54460
|
+
childLock: boolean().nullable(),
|
|
54461
|
+
/** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
|
|
54462
|
+
activeEvents: array(string()),
|
|
54463
|
+
/** Numeric error code when the appliance reports one; null otherwise. */
|
|
54464
|
+
errorCode: number().nullable(),
|
|
54465
|
+
/** Name of the raised alert-level event while the appliance is in error; null otherwise. */
|
|
54466
|
+
errorLabel: string().nullable(),
|
|
54467
|
+
/** Ms epoch of the last value received from the appliance; 0 = never. */
|
|
54468
|
+
lastFetchedAt: number()
|
|
54469
|
+
});
|
|
54470
|
+
var DeviceIdSchema = number().int().nonnegative();
|
|
54471
|
+
/** A value a program option or setting can take. */
|
|
54472
|
+
var DishwasherValueSchema = union([
|
|
54473
|
+
boolean(),
|
|
54474
|
+
string(),
|
|
54475
|
+
number()
|
|
54476
|
+
]);
|
|
54477
|
+
var DishwasherAccessSchema = _enum([
|
|
54478
|
+
"none",
|
|
54479
|
+
"read",
|
|
54480
|
+
"readWrite",
|
|
54481
|
+
"writeOnly",
|
|
54482
|
+
"readStatic"
|
|
54483
|
+
]);
|
|
54484
|
+
/**
|
|
54485
|
+
* One option or setting the appliance declares, with the constraints its description
|
|
54486
|
+
* gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
|
|
54487
|
+
*/
|
|
54488
|
+
var DishwasherOptionDescriptorSchema = object({
|
|
54489
|
+
/** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
|
|
54490
|
+
key: string(),
|
|
54491
|
+
/** Last segment of the key, for display. */
|
|
54492
|
+
name: string(),
|
|
54493
|
+
type: _enum([
|
|
54494
|
+
"boolean",
|
|
54495
|
+
"number",
|
|
54496
|
+
"enum",
|
|
54497
|
+
"string"
|
|
54498
|
+
]),
|
|
54499
|
+
access: DishwasherAccessSchema,
|
|
54500
|
+
/** The appliance reports this entity as currently available. */
|
|
54501
|
+
available: boolean(),
|
|
54502
|
+
/** Unit the description declares for a number; null when it declares none. */
|
|
54503
|
+
unit: string().nullable(),
|
|
54504
|
+
min: number().nullable(),
|
|
54505
|
+
max: number().nullable(),
|
|
54506
|
+
step: number().nullable(),
|
|
54507
|
+
/** Allowed members of an enum; null for other types. */
|
|
54508
|
+
enumValues: array(string()).nullable(),
|
|
54509
|
+
defaultValue: DishwasherValueSchema.nullable()
|
|
54510
|
+
});
|
|
54511
|
+
var DishwasherProgramSchema = object({
|
|
54512
|
+
/** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
|
|
54513
|
+
key: string(),
|
|
54514
|
+
name: string(),
|
|
54515
|
+
/** The appliance currently offers this program. */
|
|
54516
|
+
available: boolean(),
|
|
54517
|
+
/** The options this program lists, with the program-level access / availability / default. */
|
|
54518
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
54519
|
+
});
|
|
54520
|
+
var DishwasherOptionsSchema = object({
|
|
54521
|
+
availability: DishwasherAvailabilitySchema,
|
|
54522
|
+
/** What the appliance can be told to do, from the commands its description declares. */
|
|
54523
|
+
supportsStart: boolean(),
|
|
54524
|
+
supportsPause: boolean(),
|
|
54525
|
+
supportsResume: boolean(),
|
|
54526
|
+
supportsStop: boolean(),
|
|
54527
|
+
supportsPower: boolean(),
|
|
54528
|
+
/** Every program the description lists, with its options. */
|
|
54529
|
+
programs: array(DishwasherProgramSchema),
|
|
54530
|
+
/** Every option and setting entity the description lists (programs reference these by key). */
|
|
54531
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
54532
|
+
});
|
|
54533
|
+
DeviceType.Dishwasher, method(object({
|
|
54534
|
+
deviceId: DeviceIdSchema,
|
|
54535
|
+
program: string().min(1).optional(),
|
|
54536
|
+
options: record(string(), DishwasherValueSchema).optional()
|
|
54537
|
+
}), _void(), {
|
|
54538
|
+
kind: "mutation",
|
|
54539
|
+
auth: "protected"
|
|
54540
|
+
}), method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
54541
|
+
kind: "mutation",
|
|
54542
|
+
auth: "protected"
|
|
54543
|
+
}), method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
54544
|
+
kind: "mutation",
|
|
54545
|
+
auth: "protected"
|
|
54546
|
+
}), method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
54547
|
+
kind: "mutation",
|
|
54548
|
+
auth: "protected"
|
|
54549
|
+
}), method(object({
|
|
54550
|
+
deviceId: DeviceIdSchema,
|
|
54551
|
+
program: string().min(1)
|
|
54552
|
+
}), _void(), {
|
|
54553
|
+
kind: "mutation",
|
|
54554
|
+
auth: "protected"
|
|
54555
|
+
}), method(object({
|
|
54556
|
+
deviceId: DeviceIdSchema,
|
|
54557
|
+
on: boolean()
|
|
54558
|
+
}), _void(), {
|
|
54559
|
+
kind: "mutation",
|
|
54560
|
+
auth: "protected"
|
|
54561
|
+
}), method(object({
|
|
54562
|
+
deviceId: DeviceIdSchema,
|
|
54563
|
+
on: boolean()
|
|
54564
|
+
}), _void(), {
|
|
54565
|
+
kind: "mutation",
|
|
54566
|
+
auth: "protected"
|
|
54567
|
+
}), method(object({
|
|
54568
|
+
deviceId: DeviceIdSchema,
|
|
54569
|
+
on: boolean()
|
|
54570
|
+
}), _void(), {
|
|
54571
|
+
kind: "mutation",
|
|
54572
|
+
auth: "protected"
|
|
54573
|
+
}), method(object({
|
|
54574
|
+
deviceId: DeviceIdSchema,
|
|
54575
|
+
on: boolean()
|
|
54576
|
+
}), _void(), {
|
|
54577
|
+
kind: "mutation",
|
|
54578
|
+
auth: "protected"
|
|
54579
|
+
}), method(object({
|
|
54580
|
+
deviceId: DeviceIdSchema,
|
|
54581
|
+
on: boolean()
|
|
54582
|
+
}), _void(), {
|
|
54583
|
+
kind: "mutation",
|
|
54584
|
+
auth: "protected"
|
|
54585
|
+
}), method(object({
|
|
54586
|
+
deviceId: DeviceIdSchema,
|
|
54587
|
+
on: boolean()
|
|
54588
|
+
}), _void(), {
|
|
54589
|
+
kind: "mutation",
|
|
54590
|
+
auth: "protected"
|
|
54591
|
+
}), method(object({
|
|
54592
|
+
deviceId: DeviceIdSchema,
|
|
54593
|
+
on: boolean()
|
|
54594
|
+
}), _void(), {
|
|
54595
|
+
kind: "mutation",
|
|
54596
|
+
auth: "protected"
|
|
54597
|
+
}), method(object({
|
|
54598
|
+
deviceId: DeviceIdSchema,
|
|
54599
|
+
key: string().min(1),
|
|
54600
|
+
value: DishwasherValueSchema
|
|
54601
|
+
}), _void(), {
|
|
54602
|
+
kind: "mutation",
|
|
54603
|
+
auth: "protected"
|
|
54604
|
+
}), method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" });
|
|
54325
54605
|
object({
|
|
54326
54606
|
/** Ms epoch of the last press. null = never observed since this provider started. */
|
|
54327
54607
|
lastPressedAt: number().nullable(),
|
|
@@ -54887,6 +55167,13 @@ object({
|
|
|
54887
55167
|
lastChangedAt: number()
|
|
54888
55168
|
});
|
|
54889
55169
|
DeviceType.Sensor;
|
|
55170
|
+
object({
|
|
55171
|
+
/** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
|
|
55172
|
+
position: number().min(0).max(100).nullable(),
|
|
55173
|
+
/** Ms epoch when the slice was last updated (push or poll). */
|
|
55174
|
+
lastFetchedAt: number()
|
|
55175
|
+
});
|
|
55176
|
+
DeviceType.Thermostat;
|
|
54890
55177
|
object({
|
|
54891
55178
|
/** Whether the humidifier is currently on. */
|
|
54892
55179
|
on: boolean(),
|
|
@@ -61984,7 +62271,7 @@ var AccessoryKind = {
|
|
|
61984
62271
|
PrivacyMask: DeviceRole.PrivacyMask
|
|
61985
62272
|
};
|
|
61986
62273
|
AccessoryKind.Siren, AccessoryKind.Floodlight, AccessoryKind.Spotlight, AccessoryKind.PirSensor, AccessoryKind.Chime, AccessoryKind.Autotrack, AccessoryKind.Nightvision, AccessoryKind.PrivacyMask;
|
|
61987
|
-
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;
|
|
62274
|
+
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;
|
|
61988
62275
|
new Set(Object.values(DeviceType));
|
|
61989
62276
|
Object.freeze({
|
|
61990
62277
|
"accessories.getStatus": {
|
|
@@ -64405,6 +64692,96 @@ Object.freeze({
|
|
|
64405
64692
|
addonId: null,
|
|
64406
64693
|
access: "view"
|
|
64407
64694
|
},
|
|
64695
|
+
"dishwasher.getOptions": {
|
|
64696
|
+
capName: "dishwasher",
|
|
64697
|
+
capScope: "device",
|
|
64698
|
+
addonId: null,
|
|
64699
|
+
access: "view"
|
|
64700
|
+
},
|
|
64701
|
+
"dishwasher.getStatus": {
|
|
64702
|
+
capName: "dishwasher",
|
|
64703
|
+
capScope: "device",
|
|
64704
|
+
addonId: null,
|
|
64705
|
+
access: "view"
|
|
64706
|
+
},
|
|
64707
|
+
"dishwasher.pause": {
|
|
64708
|
+
capName: "dishwasher",
|
|
64709
|
+
capScope: "device",
|
|
64710
|
+
addonId: null,
|
|
64711
|
+
access: "create"
|
|
64712
|
+
},
|
|
64713
|
+
"dishwasher.resume": {
|
|
64714
|
+
capName: "dishwasher",
|
|
64715
|
+
capScope: "device",
|
|
64716
|
+
addonId: null,
|
|
64717
|
+
access: "create"
|
|
64718
|
+
},
|
|
64719
|
+
"dishwasher.setChildLock": {
|
|
64720
|
+
capName: "dishwasher",
|
|
64721
|
+
capScope: "device",
|
|
64722
|
+
addonId: null,
|
|
64723
|
+
access: "create"
|
|
64724
|
+
},
|
|
64725
|
+
"dishwasher.setExtraDry": {
|
|
64726
|
+
capName: "dishwasher",
|
|
64727
|
+
capScope: "device",
|
|
64728
|
+
addonId: null,
|
|
64729
|
+
access: "create"
|
|
64730
|
+
},
|
|
64731
|
+
"dishwasher.setHalfLoad": {
|
|
64732
|
+
capName: "dishwasher",
|
|
64733
|
+
capScope: "device",
|
|
64734
|
+
addonId: null,
|
|
64735
|
+
access: "create"
|
|
64736
|
+
},
|
|
64737
|
+
"dishwasher.setHygienePlus": {
|
|
64738
|
+
capName: "dishwasher",
|
|
64739
|
+
capScope: "device",
|
|
64740
|
+
addonId: null,
|
|
64741
|
+
access: "create"
|
|
64742
|
+
},
|
|
64743
|
+
"dishwasher.setIntensiveZone": {
|
|
64744
|
+
capName: "dishwasher",
|
|
64745
|
+
capScope: "device",
|
|
64746
|
+
addonId: null,
|
|
64747
|
+
access: "create"
|
|
64748
|
+
},
|
|
64749
|
+
"dishwasher.setOption": {
|
|
64750
|
+
capName: "dishwasher",
|
|
64751
|
+
capScope: "device",
|
|
64752
|
+
addonId: null,
|
|
64753
|
+
access: "create"
|
|
64754
|
+
},
|
|
64755
|
+
"dishwasher.setPower": {
|
|
64756
|
+
capName: "dishwasher",
|
|
64757
|
+
capScope: "device",
|
|
64758
|
+
addonId: null,
|
|
64759
|
+
access: "create"
|
|
64760
|
+
},
|
|
64761
|
+
"dishwasher.setProgram": {
|
|
64762
|
+
capName: "dishwasher",
|
|
64763
|
+
capScope: "device",
|
|
64764
|
+
addonId: null,
|
|
64765
|
+
access: "create"
|
|
64766
|
+
},
|
|
64767
|
+
"dishwasher.setVarioSpeedPlus": {
|
|
64768
|
+
capName: "dishwasher",
|
|
64769
|
+
capScope: "device",
|
|
64770
|
+
addonId: null,
|
|
64771
|
+
access: "create"
|
|
64772
|
+
},
|
|
64773
|
+
"dishwasher.start": {
|
|
64774
|
+
capName: "dishwasher",
|
|
64775
|
+
capScope: "device",
|
|
64776
|
+
addonId: null,
|
|
64777
|
+
access: "create"
|
|
64778
|
+
},
|
|
64779
|
+
"dishwasher.stop": {
|
|
64780
|
+
capName: "dishwasher",
|
|
64781
|
+
capScope: "device",
|
|
64782
|
+
addonId: null,
|
|
64783
|
+
access: "create"
|
|
64784
|
+
},
|
|
64408
64785
|
"doorbell.getStatus": {
|
|
64409
64786
|
capName: "doorbell",
|
|
64410
64787
|
capScope: "device",
|
|
@@ -64615,6 +64992,12 @@ Object.freeze({
|
|
|
64615
64992
|
addonId: null,
|
|
64616
64993
|
access: "view"
|
|
64617
64994
|
},
|
|
64995
|
+
"heatingValve.getStatus": {
|
|
64996
|
+
capName: "heating-valve",
|
|
64997
|
+
capScope: "device",
|
|
64998
|
+
addonId: null,
|
|
64999
|
+
access: "view"
|
|
65000
|
+
},
|
|
64618
65001
|
"humidifier.getStatus": {
|
|
64619
65002
|
capName: "humidifier",
|
|
64620
65003
|
capScope: "device",
|
|
@@ -68833,6 +69216,12 @@ Object.freeze({
|
|
|
68833
69216
|
addonId: null,
|
|
68834
69217
|
access: "view"
|
|
68835
69218
|
},
|
|
69219
|
+
"storageMigration.moverClearance": {
|
|
69220
|
+
capName: "storage-migration",
|
|
69221
|
+
capScope: "system",
|
|
69222
|
+
addonId: null,
|
|
69223
|
+
access: "view"
|
|
69224
|
+
},
|
|
68836
69225
|
"storageMigration.movers": {
|
|
68837
69226
|
capName: "storage-migration",
|
|
68838
69227
|
capScope: "system",
|
|
@@ -70202,7 +70591,7 @@ Object.freeze({
|
|
|
70202
70591
|
access: "create"
|
|
70203
70592
|
}
|
|
70204
70593
|
});
|
|
70205
|
-
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;
|
|
70594
|
+
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;
|
|
70206
70595
|
DeviceFeature.BatteryOperated;
|
|
70207
70596
|
Object.freeze({
|
|
70208
70597
|
"accessories.getStatus": [{
|
|
@@ -71026,6 +71415,81 @@ Object.freeze({
|
|
|
71026
71415
|
form: "single",
|
|
71027
71416
|
optional: false
|
|
71028
71417
|
}],
|
|
71418
|
+
"dishwasher.getOptions": [{
|
|
71419
|
+
name: "deviceId",
|
|
71420
|
+
form: "single",
|
|
71421
|
+
optional: false
|
|
71422
|
+
}],
|
|
71423
|
+
"dishwasher.getStatus": [{
|
|
71424
|
+
name: "deviceId",
|
|
71425
|
+
form: "single",
|
|
71426
|
+
optional: false
|
|
71427
|
+
}],
|
|
71428
|
+
"dishwasher.pause": [{
|
|
71429
|
+
name: "deviceId",
|
|
71430
|
+
form: "single",
|
|
71431
|
+
optional: false
|
|
71432
|
+
}],
|
|
71433
|
+
"dishwasher.resume": [{
|
|
71434
|
+
name: "deviceId",
|
|
71435
|
+
form: "single",
|
|
71436
|
+
optional: false
|
|
71437
|
+
}],
|
|
71438
|
+
"dishwasher.setChildLock": [{
|
|
71439
|
+
name: "deviceId",
|
|
71440
|
+
form: "single",
|
|
71441
|
+
optional: false
|
|
71442
|
+
}],
|
|
71443
|
+
"dishwasher.setExtraDry": [{
|
|
71444
|
+
name: "deviceId",
|
|
71445
|
+
form: "single",
|
|
71446
|
+
optional: false
|
|
71447
|
+
}],
|
|
71448
|
+
"dishwasher.setHalfLoad": [{
|
|
71449
|
+
name: "deviceId",
|
|
71450
|
+
form: "single",
|
|
71451
|
+
optional: false
|
|
71452
|
+
}],
|
|
71453
|
+
"dishwasher.setHygienePlus": [{
|
|
71454
|
+
name: "deviceId",
|
|
71455
|
+
form: "single",
|
|
71456
|
+
optional: false
|
|
71457
|
+
}],
|
|
71458
|
+
"dishwasher.setIntensiveZone": [{
|
|
71459
|
+
name: "deviceId",
|
|
71460
|
+
form: "single",
|
|
71461
|
+
optional: false
|
|
71462
|
+
}],
|
|
71463
|
+
"dishwasher.setOption": [{
|
|
71464
|
+
name: "deviceId",
|
|
71465
|
+
form: "single",
|
|
71466
|
+
optional: false
|
|
71467
|
+
}],
|
|
71468
|
+
"dishwasher.setPower": [{
|
|
71469
|
+
name: "deviceId",
|
|
71470
|
+
form: "single",
|
|
71471
|
+
optional: false
|
|
71472
|
+
}],
|
|
71473
|
+
"dishwasher.setProgram": [{
|
|
71474
|
+
name: "deviceId",
|
|
71475
|
+
form: "single",
|
|
71476
|
+
optional: false
|
|
71477
|
+
}],
|
|
71478
|
+
"dishwasher.setVarioSpeedPlus": [{
|
|
71479
|
+
name: "deviceId",
|
|
71480
|
+
form: "single",
|
|
71481
|
+
optional: false
|
|
71482
|
+
}],
|
|
71483
|
+
"dishwasher.start": [{
|
|
71484
|
+
name: "deviceId",
|
|
71485
|
+
form: "single",
|
|
71486
|
+
optional: false
|
|
71487
|
+
}],
|
|
71488
|
+
"dishwasher.stop": [{
|
|
71489
|
+
name: "deviceId",
|
|
71490
|
+
form: "single",
|
|
71491
|
+
optional: false
|
|
71492
|
+
}],
|
|
71029
71493
|
"doorbell.getStatus": [{
|
|
71030
71494
|
name: "deviceId",
|
|
71031
71495
|
form: "single",
|
|
@@ -71095,6 +71559,11 @@ Object.freeze({
|
|
|
71095
71559
|
form: "single",
|
|
71096
71560
|
optional: false
|
|
71097
71561
|
}],
|
|
71562
|
+
"heatingValve.getStatus": [{
|
|
71563
|
+
name: "deviceId",
|
|
71564
|
+
form: "single",
|
|
71565
|
+
optional: false
|
|
71566
|
+
}],
|
|
71098
71567
|
"humidifier.getStatus": [{
|
|
71099
71568
|
name: "deviceId",
|
|
71100
71569
|
form: "single",
|
|
@@ -73052,6 +73521,9 @@ new Map(Object.entries({
|
|
|
73052
73521
|
"wrapper-update-available": "system",
|
|
73053
73522
|
"backup-completed": "system",
|
|
73054
73523
|
"export-completed": "system",
|
|
73524
|
+
"alert-critical": "system",
|
|
73525
|
+
"alert-error": "system",
|
|
73526
|
+
"alert-critical-resolved": "system",
|
|
73055
73527
|
"storage-location-low": "system",
|
|
73056
73528
|
"storage-location-critical": "system",
|
|
73057
73529
|
"storage-location-ok": "system",
|
|
@@ -73176,6 +73648,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
73176
73648
|
"storage-location-ok"
|
|
73177
73649
|
]
|
|
73178
73650
|
},
|
|
73651
|
+
{
|
|
73652
|
+
id: "alerts",
|
|
73653
|
+
family: "system",
|
|
73654
|
+
label: "Alerts",
|
|
73655
|
+
kinds: [
|
|
73656
|
+
"alert-critical",
|
|
73657
|
+
"alert-error",
|
|
73658
|
+
"alert-critical-resolved"
|
|
73659
|
+
]
|
|
73660
|
+
},
|
|
73179
73661
|
{
|
|
73180
73662
|
id: "alarm",
|
|
73181
73663
|
family: "alarm",
|
|
@@ -73220,6 +73702,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
|
|
|
73220
73702
|
return [[descriptor.kind, field]];
|
|
73221
73703
|
})));
|
|
73222
73704
|
Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
|
|
73705
|
+
object({
|
|
73706
|
+
phase: _enum(["raised", "resolved"]),
|
|
73707
|
+
episodeId: string().min(1),
|
|
73708
|
+
alertId: string().min(1),
|
|
73709
|
+
severity: AlertSeveritySchema,
|
|
73710
|
+
category: string(),
|
|
73711
|
+
title: string(),
|
|
73712
|
+
message: string(),
|
|
73713
|
+
sourceType: string().optional(),
|
|
73714
|
+
sourceId: string().optional(),
|
|
73715
|
+
nodeId: string().optional(),
|
|
73716
|
+
/** The alert's own action link (where the operator acts on it), when it has one. */
|
|
73717
|
+
actionUrl: string().optional(),
|
|
73718
|
+
at: number()
|
|
73719
|
+
});
|
|
73223
73720
|
var RULE_BODY_ONLY = ["body"];
|
|
73224
73721
|
var RULE_TEXT = ["title", "body"];
|
|
73225
73722
|
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
@@ -73229,6 +73726,11 @@ var TANK = [
|
|
|
73229
73726
|
"device-tank-full",
|
|
73230
73727
|
"device-tank-normal"
|
|
73231
73728
|
];
|
|
73729
|
+
var ALERT_EPISODE = [
|
|
73730
|
+
"alert-critical",
|
|
73731
|
+
"alert-error",
|
|
73732
|
+
"alert-critical-resolved"
|
|
73733
|
+
];
|
|
73232
73734
|
var UPDATES = [
|
|
73233
73735
|
"addon-update-available",
|
|
73234
73736
|
"server-update-available",
|
|
@@ -73421,14 +73923,14 @@ var STATE_SUMMARY_VARS = [
|
|
|
73421
73923
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
73422
73924
|
([...RULE_TEXT], [...TANK]),
|
|
73423
73925
|
[...RULE_TEXT],
|
|
73424
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
73425
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
73426
|
-
[...RULE_TEXT],
|
|
73926
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
73927
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
73427
73928
|
[...RULE_TEXT],
|
|
73428
73929
|
[...RULE_TEXT],
|
|
73429
73930
|
[...RULE_TEXT],
|
|
73430
73931
|
[...RULE_TEXT],
|
|
73431
73932
|
[...RULE_TEXT],
|
|
73933
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73432
73934
|
[...RULE_TEXT],
|
|
73433
73935
|
[...RULE_TEXT],
|
|
73434
73936
|
[...RULE_TEXT],
|
|
@@ -73446,7 +73948,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
73446
73948
|
[...RULE_TEXT],
|
|
73447
73949
|
[...RULE_TEXT],
|
|
73448
73950
|
[...RULE_TEXT],
|
|
73449
|
-
[...RULE_TEXT],
|
|
73951
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73952
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73953
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73954
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73955
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73450
73956
|
[...RULE_TEXT],
|
|
73451
73957
|
[...RULE_TEXT],
|
|
73452
73958
|
[...RULE_TEXT],
|
|
@@ -83335,13 +83841,20 @@ function buildAlexaOauthIntegration(publicHubUrl) {
|
|
|
83335
83841
|
function buildAlexaSetupBlock(input) {
|
|
83336
83842
|
const base = input.publicHubUrl.replace(/\/+$/, "");
|
|
83337
83843
|
return {
|
|
83338
|
-
fields: [
|
|
83339
|
-
|
|
83340
|
-
|
|
83341
|
-
|
|
83342
|
-
|
|
83343
|
-
|
|
83344
|
-
|
|
83844
|
+
fields: [
|
|
83845
|
+
...base ? [{
|
|
83846
|
+
label: "Hub address to enter in the Alexa app",
|
|
83847
|
+
value: base
|
|
83848
|
+
}] : [],
|
|
83849
|
+
...base ? [{
|
|
83850
|
+
label: "Directive endpoint",
|
|
83851
|
+
value: `${base}/addon/export-alexa/directive`
|
|
83852
|
+
}] : [],
|
|
83853
|
+
...input.ingressToken && input.skillMode === "custom" ? [{
|
|
83854
|
+
label: "Ingress token (Lambda HUB_INGRESS_TOKEN) — use \"Show ingress token\" in settings",
|
|
83855
|
+
value: maskSecretTail(input.ingressToken)
|
|
83856
|
+
}] : []
|
|
83857
|
+
],
|
|
83345
83858
|
note: base ? "Account linking is handled by the core OAuth server. Use the hub's /api/oauth2/authorize endpoint with integration=export-alexa." : "Set the public hub URL on the settings form first — the directive endpoint URL is derived from it."
|
|
83346
83859
|
};
|
|
83347
83860
|
}
|