@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
|
@@ -5,7 +5,7 @@ import "node:fs";
|
|
|
5
5
|
import "node:path";
|
|
6
6
|
import "node:child_process";
|
|
7
7
|
import "node:zlib";
|
|
8
|
-
//#region ../types/dist/event-category-
|
|
8
|
+
//#region ../types/dist/event-category-DOl51-Ij.mjs
|
|
9
9
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
10
10
|
EventCategory["SystemBoot"] = "system.boot";
|
|
11
11
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -84,9 +84,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
84
84
|
/**
|
|
85
85
|
* The node's one-shot runner boot check (D877): planned runners against the
|
|
86
86
|
* process service, `degraded` when any is failed, refused or missing. The
|
|
87
|
-
* alert centre turns it into one
|
|
87
|
+
* alert centre turns it into one critical alert.
|
|
88
88
|
*/
|
|
89
89
|
EventCategory["SystemRunnerCheck"] = "system.runner-check";
|
|
90
|
+
/**
|
|
91
|
+
* An alert EPISODE opened or closed, emitted by the alert centre for alerts
|
|
92
|
+
* of severity `critical` or `error` (`AlertEpisodePayload`). The alert
|
|
93
|
+
* centre sends no notification of its own: Notification Center turns this
|
|
94
|
+
* into the `alert-critical` / `alert-error` / `alert-critical-resolved`
|
|
95
|
+
* system-event kinds, and reconciles from the alerts store because a bus
|
|
96
|
+
* event may be dropped (D8, D11).
|
|
97
|
+
*/
|
|
98
|
+
EventCategory["AlertEpisode"] = "alert.episode";
|
|
90
99
|
EventCategory["AddonError"] = "addon.error";
|
|
91
100
|
EventCategory["AddonPageReady"] = "addon.page-ready";
|
|
92
101
|
EventCategory["AddonWidgetReady"] = "addon.widget-ready";
|
|
@@ -5411,7 +5420,7 @@ var ZodIssueCode = {
|
|
|
5411
5420
|
var ZodFirstPartyTypeKind;
|
|
5412
5421
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5413
5422
|
//#endregion
|
|
5414
|
-
//#region ../types/dist/sleep-
|
|
5423
|
+
//#region ../types/dist/sleep-BxjU_fJM.mjs
|
|
5415
5424
|
/**
|
|
5416
5425
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5417
5426
|
* window to float samples (D455).
|
|
@@ -8381,7 +8390,7 @@ object({
|
|
|
8381
8390
|
params: record(string(), union([string(), number()])).optional()
|
|
8382
8391
|
});
|
|
8383
8392
|
//#endregion
|
|
8384
|
-
//#region ../types/dist/err-msg
|
|
8393
|
+
//#region ../types/dist/err-msg-BXKzRBwg.mjs
|
|
8385
8394
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
8386
8395
|
DeviceType["Camera"] = "camera";
|
|
8387
8396
|
DeviceType["Hub"] = "hub";
|
|
@@ -8473,6 +8482,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
|
8473
8482
|
* native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
|
|
8474
8483
|
* integrations sharing the same food/desiccant/hopper surface. */
|
|
8475
8484
|
DeviceType["PetFeeder"] = "pet-feeder";
|
|
8485
|
+
/** Built-in dishwasher — program lifecycle, door / remote-start gates,
|
|
8486
|
+
* salt and rinse-aid levels. Installed with the `dishwasher` cap.
|
|
8487
|
+
* Sources: native Bosch Home Connect, reusable by similar integrations. */
|
|
8488
|
+
DeviceType["Dishwasher"] = "dishwasher";
|
|
8476
8489
|
return DeviceType;
|
|
8477
8490
|
}({});
|
|
8478
8491
|
var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
|
|
@@ -8730,7 +8743,7 @@ function errMsg(err) {
|
|
|
8730
8743
|
return String(err);
|
|
8731
8744
|
}
|
|
8732
8745
|
//#endregion
|
|
8733
|
-
//#region ../types/dist/composition-
|
|
8746
|
+
//#region ../types/dist/composition-CB6PMT9p.mjs
|
|
8734
8747
|
/**
|
|
8735
8748
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
8736
8749
|
*
|
|
@@ -13399,8 +13412,20 @@ var AlertSeveritySchema = _enum([
|
|
|
13399
13412
|
"info",
|
|
13400
13413
|
"success",
|
|
13401
13414
|
"warning",
|
|
13402
|
-
"error"
|
|
13415
|
+
"error",
|
|
13416
|
+
"critical"
|
|
13403
13417
|
]);
|
|
13418
|
+
var AlertActionSchema = object({
|
|
13419
|
+
label: string(),
|
|
13420
|
+
href: string().optional(),
|
|
13421
|
+
/**
|
|
13422
|
+
* How `href` is followed. Absent / `app`: an admin-ui route (client-side).
|
|
13423
|
+
* `server`: a route the HUB serves (an addon HTTP route such as an OAuth
|
|
13424
|
+
* start) — the browser must leave the SPA with a full navigation, because
|
|
13425
|
+
* the SPA has no such route and would bounce to the home page.
|
|
13426
|
+
*/
|
|
13427
|
+
navigation: _enum(["app", "server"]).optional()
|
|
13428
|
+
});
|
|
13404
13429
|
var AlertStatusSchema = _enum([
|
|
13405
13430
|
"active",
|
|
13406
13431
|
"in-progress",
|
|
@@ -13418,6 +13443,7 @@ var AlertSchema = object({
|
|
|
13418
13443
|
severity: AlertSeveritySchema,
|
|
13419
13444
|
title: string(),
|
|
13420
13445
|
message: string(),
|
|
13446
|
+
action: AlertActionSchema.optional(),
|
|
13421
13447
|
status: AlertStatusSchema,
|
|
13422
13448
|
progress: number().optional(),
|
|
13423
13449
|
read: boolean(),
|
|
@@ -17562,7 +17588,11 @@ DeviceType.Hub, DeviceDiscoveryStatusSchema.extend({ lastFetchedAt: number().int
|
|
|
17562
17588
|
});
|
|
17563
17589
|
/**
|
|
17564
17590
|
* `device-adoption` — generic discovery + adoption surface,
|
|
17565
|
-
* system-scoped
|
|
17591
|
+
* system-scoped collection (one provider per integration addon), routed
|
|
17592
|
+
* by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
|
|
17593
|
+
* pin model as `connection-test`. The admin UI keeps using
|
|
17594
|
+
* `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
|
|
17595
|
+
* successor to `ha-discovery`:
|
|
17566
17596
|
* keyed by `integrationId` (the addon resolves integrationId → broker
|
|
17567
17597
|
* internally) rather than a connection-specific `brokerId`, and it
|
|
17568
17598
|
* REUSES the shared `DiscoveredChildDevice` candidate type from
|
|
@@ -41795,6 +41825,9 @@ var NcSystemEventKindSchema = _enum([
|
|
|
41795
41825
|
"server-updated",
|
|
41796
41826
|
"export-completed",
|
|
41797
41827
|
"backup-completed",
|
|
41828
|
+
"alert-critical",
|
|
41829
|
+
"alert-error",
|
|
41830
|
+
"alert-critical-resolved",
|
|
41798
41831
|
"camera-online",
|
|
41799
41832
|
"camera-offline",
|
|
41800
41833
|
"camera-disabled",
|
|
@@ -50843,7 +50876,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
|
|
|
50843
50876
|
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
50844
50877
|
kind: "mutation",
|
|
50845
50878
|
auth: "admin"
|
|
50846
|
-
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({
|
|
50879
|
+
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
|
|
50880
|
+
clear: boolean(),
|
|
50881
|
+
repointLocationId: string().optional()
|
|
50882
|
+
}), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
|
|
50847
50883
|
kind: "mutation",
|
|
50848
50884
|
auth: "admin"
|
|
50849
50885
|
}), method(StorageCleanupInputSchema, object({ jobId: string() }), {
|
|
@@ -53393,7 +53429,7 @@ var BatteryStatusSchema = object({
|
|
|
53393
53429
|
*/
|
|
53394
53430
|
binary: boolean().optional()
|
|
53395
53431
|
});
|
|
53396
|
-
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, method(object({
|
|
53432
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, method(object({
|
|
53397
53433
|
deviceId: number(),
|
|
53398
53434
|
/** Bound on the wait. Sensible range 3000–10000ms. */
|
|
53399
53435
|
timeoutMs: number().int().min(500).max(3e4).default(8e3)
|
|
@@ -54293,6 +54329,250 @@ object({
|
|
|
54293
54329
|
deviceId: number(),
|
|
54294
54330
|
status: DeviceStatusSchema
|
|
54295
54331
|
});
|
|
54332
|
+
/**
|
|
54333
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates,
|
|
54334
|
+
* consumable levels (salt, rinse aid) and common program options.
|
|
54335
|
+
*
|
|
54336
|
+
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
54337
|
+
* by any integration that exposes the same program / option surface.
|
|
54338
|
+
*
|
|
54339
|
+
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
54340
|
+
* provider refreshes the slice on an interval and eagerly after commands.
|
|
54341
|
+
*
|
|
54342
|
+
* UNKNOWN IS NOT OFF. Every field the appliance reports separately is
|
|
54343
|
+
* nullable: `null` means "not known right now" (the appliance has not said,
|
|
54344
|
+
* the link is down, or the description does not carry it) and is never
|
|
54345
|
+
* rendered or exported as `false` / `0`. `availability` says why.
|
|
54346
|
+
*/
|
|
54347
|
+
var DishwasherStateSchema = _enum([
|
|
54348
|
+
"idle",
|
|
54349
|
+
"running",
|
|
54350
|
+
"paused",
|
|
54351
|
+
"finished",
|
|
54352
|
+
"error",
|
|
54353
|
+
"unavailable"
|
|
54354
|
+
]);
|
|
54355
|
+
/**
|
|
54356
|
+
* The appliance's own operation state, uncollapsed. `state` above is the coarse
|
|
54357
|
+
* view for compact surfaces; this is what the appliance said.
|
|
54358
|
+
*/
|
|
54359
|
+
var DishwasherOperationStateSchema = _enum([
|
|
54360
|
+
"Inactive",
|
|
54361
|
+
"Ready",
|
|
54362
|
+
"DelayedStart",
|
|
54363
|
+
"Run",
|
|
54364
|
+
"Pause",
|
|
54365
|
+
"ActionRequired",
|
|
54366
|
+
"Finished",
|
|
54367
|
+
"Error",
|
|
54368
|
+
"Aborting"
|
|
54369
|
+
]);
|
|
54370
|
+
/**
|
|
54371
|
+
* Why fields may be `null`:
|
|
54372
|
+
* - `available` — the link is up and the description is loaded;
|
|
54373
|
+
* - `offline` — the local link is down (values are unknown, not last-known);
|
|
54374
|
+
* - `description-missing` — the link is up but the appliance's description could not
|
|
54375
|
+
* be loaded, so its values cannot be decoded.
|
|
54376
|
+
*/
|
|
54377
|
+
var DishwasherAvailabilitySchema = _enum([
|
|
54378
|
+
"available",
|
|
54379
|
+
"offline",
|
|
54380
|
+
"description-missing"
|
|
54381
|
+
]);
|
|
54382
|
+
var DishwasherConsumableLevelSchema = _enum([
|
|
54383
|
+
"ok",
|
|
54384
|
+
"low",
|
|
54385
|
+
"empty"
|
|
54386
|
+
]);
|
|
54387
|
+
object({
|
|
54388
|
+
availability: DishwasherAvailabilitySchema,
|
|
54389
|
+
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
54390
|
+
state: DishwasherStateSchema,
|
|
54391
|
+
/** The appliance's operation state as reported; null when not known. */
|
|
54392
|
+
operationState: DishwasherOperationStateSchema.nullable(),
|
|
54393
|
+
/** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
|
|
54394
|
+
program: string().nullable(),
|
|
54395
|
+
/** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
|
|
54396
|
+
selectedProgram: string().nullable(),
|
|
54397
|
+
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
54398
|
+
availablePrograms: array(string()),
|
|
54399
|
+
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
54400
|
+
remainingSeconds: number().int().nonnegative().nullable(),
|
|
54401
|
+
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
54402
|
+
delayedStartSeconds: number().int().nonnegative().nullable(),
|
|
54403
|
+
/** Cycle completion 0..100, or null when not applicable. */
|
|
54404
|
+
progressPercent: number().min(0).max(100).nullable(),
|
|
54405
|
+
/** True when the door is reported open; null when the door state is not known. */
|
|
54406
|
+
doorOpen: boolean().nullable(),
|
|
54407
|
+
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
54408
|
+
doorLocked: boolean().nullable(),
|
|
54409
|
+
/** True when remote start is allowed (door closed, power on, etc.); null when not known. */
|
|
54410
|
+
remoteStartAllowed: boolean().nullable(),
|
|
54411
|
+
/** True when the appliance accepts remote control now; null when not known. */
|
|
54412
|
+
remoteControlActive: boolean().nullable(),
|
|
54413
|
+
/** True while somebody operates the appliance at its panel; null when not reported. */
|
|
54414
|
+
localControlActive: boolean().nullable(),
|
|
54415
|
+
/** Main power / switched-on state; null when not known. */
|
|
54416
|
+
powerOn: boolean().nullable(),
|
|
54417
|
+
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
54418
|
+
powerState: string().nullable(),
|
|
54419
|
+
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
54420
|
+
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
54421
|
+
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
54422
|
+
halfLoad: boolean().nullable(),
|
|
54423
|
+
hygienePlus: boolean().nullable(),
|
|
54424
|
+
/** Extra dry option when the appliance exposes it. */
|
|
54425
|
+
extraDry: boolean().nullable(),
|
|
54426
|
+
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
54427
|
+
intensiveZone: boolean().nullable(),
|
|
54428
|
+
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
54429
|
+
varioSpeedPlus: boolean().nullable(),
|
|
54430
|
+
/** Child lock (controls disabled on the appliance); null when not known. */
|
|
54431
|
+
childLock: boolean().nullable(),
|
|
54432
|
+
/** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
|
|
54433
|
+
activeEvents: array(string()),
|
|
54434
|
+
/** Numeric error code when the appliance reports one; null otherwise. */
|
|
54435
|
+
errorCode: number().nullable(),
|
|
54436
|
+
/** Name of the raised alert-level event while the appliance is in error; null otherwise. */
|
|
54437
|
+
errorLabel: string().nullable(),
|
|
54438
|
+
/** Ms epoch of the last value received from the appliance; 0 = never. */
|
|
54439
|
+
lastFetchedAt: number()
|
|
54440
|
+
});
|
|
54441
|
+
var DeviceIdSchema = number().int().nonnegative();
|
|
54442
|
+
/** A value a program option or setting can take. */
|
|
54443
|
+
var DishwasherValueSchema = union([
|
|
54444
|
+
boolean(),
|
|
54445
|
+
string(),
|
|
54446
|
+
number()
|
|
54447
|
+
]);
|
|
54448
|
+
var DishwasherAccessSchema = _enum([
|
|
54449
|
+
"none",
|
|
54450
|
+
"read",
|
|
54451
|
+
"readWrite",
|
|
54452
|
+
"writeOnly",
|
|
54453
|
+
"readStatic"
|
|
54454
|
+
]);
|
|
54455
|
+
/**
|
|
54456
|
+
* One option or setting the appliance declares, with the constraints its description
|
|
54457
|
+
* gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
|
|
54458
|
+
*/
|
|
54459
|
+
var DishwasherOptionDescriptorSchema = object({
|
|
54460
|
+
/** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
|
|
54461
|
+
key: string(),
|
|
54462
|
+
/** Last segment of the key, for display. */
|
|
54463
|
+
name: string(),
|
|
54464
|
+
type: _enum([
|
|
54465
|
+
"boolean",
|
|
54466
|
+
"number",
|
|
54467
|
+
"enum",
|
|
54468
|
+
"string"
|
|
54469
|
+
]),
|
|
54470
|
+
access: DishwasherAccessSchema,
|
|
54471
|
+
/** The appliance reports this entity as currently available. */
|
|
54472
|
+
available: boolean(),
|
|
54473
|
+
/** Unit the description declares for a number; null when it declares none. */
|
|
54474
|
+
unit: string().nullable(),
|
|
54475
|
+
min: number().nullable(),
|
|
54476
|
+
max: number().nullable(),
|
|
54477
|
+
step: number().nullable(),
|
|
54478
|
+
/** Allowed members of an enum; null for other types. */
|
|
54479
|
+
enumValues: array(string()).nullable(),
|
|
54480
|
+
defaultValue: DishwasherValueSchema.nullable()
|
|
54481
|
+
});
|
|
54482
|
+
var DishwasherProgramSchema = object({
|
|
54483
|
+
/** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
|
|
54484
|
+
key: string(),
|
|
54485
|
+
name: string(),
|
|
54486
|
+
/** The appliance currently offers this program. */
|
|
54487
|
+
available: boolean(),
|
|
54488
|
+
/** The options this program lists, with the program-level access / availability / default. */
|
|
54489
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
54490
|
+
});
|
|
54491
|
+
var DishwasherOptionsSchema = object({
|
|
54492
|
+
availability: DishwasherAvailabilitySchema,
|
|
54493
|
+
/** What the appliance can be told to do, from the commands its description declares. */
|
|
54494
|
+
supportsStart: boolean(),
|
|
54495
|
+
supportsPause: boolean(),
|
|
54496
|
+
supportsResume: boolean(),
|
|
54497
|
+
supportsStop: boolean(),
|
|
54498
|
+
supportsPower: boolean(),
|
|
54499
|
+
/** Every program the description lists, with its options. */
|
|
54500
|
+
programs: array(DishwasherProgramSchema),
|
|
54501
|
+
/** Every option and setting entity the description lists (programs reference these by key). */
|
|
54502
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
54503
|
+
});
|
|
54504
|
+
DeviceType.Dishwasher, method(object({
|
|
54505
|
+
deviceId: DeviceIdSchema,
|
|
54506
|
+
program: string().min(1).optional(),
|
|
54507
|
+
options: record(string(), DishwasherValueSchema).optional()
|
|
54508
|
+
}), _void(), {
|
|
54509
|
+
kind: "mutation",
|
|
54510
|
+
auth: "protected"
|
|
54511
|
+
}), method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
54512
|
+
kind: "mutation",
|
|
54513
|
+
auth: "protected"
|
|
54514
|
+
}), method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
54515
|
+
kind: "mutation",
|
|
54516
|
+
auth: "protected"
|
|
54517
|
+
}), method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
54518
|
+
kind: "mutation",
|
|
54519
|
+
auth: "protected"
|
|
54520
|
+
}), method(object({
|
|
54521
|
+
deviceId: DeviceIdSchema,
|
|
54522
|
+
program: string().min(1)
|
|
54523
|
+
}), _void(), {
|
|
54524
|
+
kind: "mutation",
|
|
54525
|
+
auth: "protected"
|
|
54526
|
+
}), method(object({
|
|
54527
|
+
deviceId: DeviceIdSchema,
|
|
54528
|
+
on: boolean()
|
|
54529
|
+
}), _void(), {
|
|
54530
|
+
kind: "mutation",
|
|
54531
|
+
auth: "protected"
|
|
54532
|
+
}), method(object({
|
|
54533
|
+
deviceId: DeviceIdSchema,
|
|
54534
|
+
on: boolean()
|
|
54535
|
+
}), _void(), {
|
|
54536
|
+
kind: "mutation",
|
|
54537
|
+
auth: "protected"
|
|
54538
|
+
}), method(object({
|
|
54539
|
+
deviceId: DeviceIdSchema,
|
|
54540
|
+
on: boolean()
|
|
54541
|
+
}), _void(), {
|
|
54542
|
+
kind: "mutation",
|
|
54543
|
+
auth: "protected"
|
|
54544
|
+
}), method(object({
|
|
54545
|
+
deviceId: DeviceIdSchema,
|
|
54546
|
+
on: boolean()
|
|
54547
|
+
}), _void(), {
|
|
54548
|
+
kind: "mutation",
|
|
54549
|
+
auth: "protected"
|
|
54550
|
+
}), method(object({
|
|
54551
|
+
deviceId: DeviceIdSchema,
|
|
54552
|
+
on: boolean()
|
|
54553
|
+
}), _void(), {
|
|
54554
|
+
kind: "mutation",
|
|
54555
|
+
auth: "protected"
|
|
54556
|
+
}), method(object({
|
|
54557
|
+
deviceId: DeviceIdSchema,
|
|
54558
|
+
on: boolean()
|
|
54559
|
+
}), _void(), {
|
|
54560
|
+
kind: "mutation",
|
|
54561
|
+
auth: "protected"
|
|
54562
|
+
}), method(object({
|
|
54563
|
+
deviceId: DeviceIdSchema,
|
|
54564
|
+
on: boolean()
|
|
54565
|
+
}), _void(), {
|
|
54566
|
+
kind: "mutation",
|
|
54567
|
+
auth: "protected"
|
|
54568
|
+
}), method(object({
|
|
54569
|
+
deviceId: DeviceIdSchema,
|
|
54570
|
+
key: string().min(1),
|
|
54571
|
+
value: DishwasherValueSchema
|
|
54572
|
+
}), _void(), {
|
|
54573
|
+
kind: "mutation",
|
|
54574
|
+
auth: "protected"
|
|
54575
|
+
}), method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" });
|
|
54296
54576
|
object({
|
|
54297
54577
|
/** Ms epoch of the last press. null = never observed since this provider started. */
|
|
54298
54578
|
lastPressedAt: number().nullable(),
|
|
@@ -54858,6 +55138,13 @@ object({
|
|
|
54858
55138
|
lastChangedAt: number()
|
|
54859
55139
|
});
|
|
54860
55140
|
DeviceType.Sensor;
|
|
55141
|
+
object({
|
|
55142
|
+
/** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
|
|
55143
|
+
position: number().min(0).max(100).nullable(),
|
|
55144
|
+
/** Ms epoch when the slice was last updated (push or poll). */
|
|
55145
|
+
lastFetchedAt: number()
|
|
55146
|
+
});
|
|
55147
|
+
DeviceType.Thermostat;
|
|
54861
55148
|
object({
|
|
54862
55149
|
/** Whether the humidifier is currently on. */
|
|
54863
55150
|
on: boolean(),
|
|
@@ -61955,7 +62242,7 @@ var AccessoryKind = {
|
|
|
61955
62242
|
PrivacyMask: DeviceRole.PrivacyMask
|
|
61956
62243
|
};
|
|
61957
62244
|
AccessoryKind.Siren, AccessoryKind.Floodlight, AccessoryKind.Spotlight, AccessoryKind.PirSensor, AccessoryKind.Chime, AccessoryKind.Autotrack, AccessoryKind.Nightvision, AccessoryKind.PrivacyMask;
|
|
61958
|
-
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;
|
|
62245
|
+
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;
|
|
61959
62246
|
new Set(Object.values(DeviceType));
|
|
61960
62247
|
Object.freeze({
|
|
61961
62248
|
"accessories.getStatus": {
|
|
@@ -64376,6 +64663,96 @@ Object.freeze({
|
|
|
64376
64663
|
addonId: null,
|
|
64377
64664
|
access: "view"
|
|
64378
64665
|
},
|
|
64666
|
+
"dishwasher.getOptions": {
|
|
64667
|
+
capName: "dishwasher",
|
|
64668
|
+
capScope: "device",
|
|
64669
|
+
addonId: null,
|
|
64670
|
+
access: "view"
|
|
64671
|
+
},
|
|
64672
|
+
"dishwasher.getStatus": {
|
|
64673
|
+
capName: "dishwasher",
|
|
64674
|
+
capScope: "device",
|
|
64675
|
+
addonId: null,
|
|
64676
|
+
access: "view"
|
|
64677
|
+
},
|
|
64678
|
+
"dishwasher.pause": {
|
|
64679
|
+
capName: "dishwasher",
|
|
64680
|
+
capScope: "device",
|
|
64681
|
+
addonId: null,
|
|
64682
|
+
access: "create"
|
|
64683
|
+
},
|
|
64684
|
+
"dishwasher.resume": {
|
|
64685
|
+
capName: "dishwasher",
|
|
64686
|
+
capScope: "device",
|
|
64687
|
+
addonId: null,
|
|
64688
|
+
access: "create"
|
|
64689
|
+
},
|
|
64690
|
+
"dishwasher.setChildLock": {
|
|
64691
|
+
capName: "dishwasher",
|
|
64692
|
+
capScope: "device",
|
|
64693
|
+
addonId: null,
|
|
64694
|
+
access: "create"
|
|
64695
|
+
},
|
|
64696
|
+
"dishwasher.setExtraDry": {
|
|
64697
|
+
capName: "dishwasher",
|
|
64698
|
+
capScope: "device",
|
|
64699
|
+
addonId: null,
|
|
64700
|
+
access: "create"
|
|
64701
|
+
},
|
|
64702
|
+
"dishwasher.setHalfLoad": {
|
|
64703
|
+
capName: "dishwasher",
|
|
64704
|
+
capScope: "device",
|
|
64705
|
+
addonId: null,
|
|
64706
|
+
access: "create"
|
|
64707
|
+
},
|
|
64708
|
+
"dishwasher.setHygienePlus": {
|
|
64709
|
+
capName: "dishwasher",
|
|
64710
|
+
capScope: "device",
|
|
64711
|
+
addonId: null,
|
|
64712
|
+
access: "create"
|
|
64713
|
+
},
|
|
64714
|
+
"dishwasher.setIntensiveZone": {
|
|
64715
|
+
capName: "dishwasher",
|
|
64716
|
+
capScope: "device",
|
|
64717
|
+
addonId: null,
|
|
64718
|
+
access: "create"
|
|
64719
|
+
},
|
|
64720
|
+
"dishwasher.setOption": {
|
|
64721
|
+
capName: "dishwasher",
|
|
64722
|
+
capScope: "device",
|
|
64723
|
+
addonId: null,
|
|
64724
|
+
access: "create"
|
|
64725
|
+
},
|
|
64726
|
+
"dishwasher.setPower": {
|
|
64727
|
+
capName: "dishwasher",
|
|
64728
|
+
capScope: "device",
|
|
64729
|
+
addonId: null,
|
|
64730
|
+
access: "create"
|
|
64731
|
+
},
|
|
64732
|
+
"dishwasher.setProgram": {
|
|
64733
|
+
capName: "dishwasher",
|
|
64734
|
+
capScope: "device",
|
|
64735
|
+
addonId: null,
|
|
64736
|
+
access: "create"
|
|
64737
|
+
},
|
|
64738
|
+
"dishwasher.setVarioSpeedPlus": {
|
|
64739
|
+
capName: "dishwasher",
|
|
64740
|
+
capScope: "device",
|
|
64741
|
+
addonId: null,
|
|
64742
|
+
access: "create"
|
|
64743
|
+
},
|
|
64744
|
+
"dishwasher.start": {
|
|
64745
|
+
capName: "dishwasher",
|
|
64746
|
+
capScope: "device",
|
|
64747
|
+
addonId: null,
|
|
64748
|
+
access: "create"
|
|
64749
|
+
},
|
|
64750
|
+
"dishwasher.stop": {
|
|
64751
|
+
capName: "dishwasher",
|
|
64752
|
+
capScope: "device",
|
|
64753
|
+
addonId: null,
|
|
64754
|
+
access: "create"
|
|
64755
|
+
},
|
|
64379
64756
|
"doorbell.getStatus": {
|
|
64380
64757
|
capName: "doorbell",
|
|
64381
64758
|
capScope: "device",
|
|
@@ -64586,6 +64963,12 @@ Object.freeze({
|
|
|
64586
64963
|
addonId: null,
|
|
64587
64964
|
access: "view"
|
|
64588
64965
|
},
|
|
64966
|
+
"heatingValve.getStatus": {
|
|
64967
|
+
capName: "heating-valve",
|
|
64968
|
+
capScope: "device",
|
|
64969
|
+
addonId: null,
|
|
64970
|
+
access: "view"
|
|
64971
|
+
},
|
|
64589
64972
|
"humidifier.getStatus": {
|
|
64590
64973
|
capName: "humidifier",
|
|
64591
64974
|
capScope: "device",
|
|
@@ -68804,6 +69187,12 @@ Object.freeze({
|
|
|
68804
69187
|
addonId: null,
|
|
68805
69188
|
access: "view"
|
|
68806
69189
|
},
|
|
69190
|
+
"storageMigration.moverClearance": {
|
|
69191
|
+
capName: "storage-migration",
|
|
69192
|
+
capScope: "system",
|
|
69193
|
+
addonId: null,
|
|
69194
|
+
access: "view"
|
|
69195
|
+
},
|
|
68807
69196
|
"storageMigration.movers": {
|
|
68808
69197
|
capName: "storage-migration",
|
|
68809
69198
|
capScope: "system",
|
|
@@ -70173,7 +70562,7 @@ Object.freeze({
|
|
|
70173
70562
|
access: "create"
|
|
70174
70563
|
}
|
|
70175
70564
|
});
|
|
70176
|
-
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;
|
|
70565
|
+
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;
|
|
70177
70566
|
DeviceFeature.BatteryOperated;
|
|
70178
70567
|
Object.freeze({
|
|
70179
70568
|
"accessories.getStatus": [{
|
|
@@ -70997,6 +71386,81 @@ Object.freeze({
|
|
|
70997
71386
|
form: "single",
|
|
70998
71387
|
optional: false
|
|
70999
71388
|
}],
|
|
71389
|
+
"dishwasher.getOptions": [{
|
|
71390
|
+
name: "deviceId",
|
|
71391
|
+
form: "single",
|
|
71392
|
+
optional: false
|
|
71393
|
+
}],
|
|
71394
|
+
"dishwasher.getStatus": [{
|
|
71395
|
+
name: "deviceId",
|
|
71396
|
+
form: "single",
|
|
71397
|
+
optional: false
|
|
71398
|
+
}],
|
|
71399
|
+
"dishwasher.pause": [{
|
|
71400
|
+
name: "deviceId",
|
|
71401
|
+
form: "single",
|
|
71402
|
+
optional: false
|
|
71403
|
+
}],
|
|
71404
|
+
"dishwasher.resume": [{
|
|
71405
|
+
name: "deviceId",
|
|
71406
|
+
form: "single",
|
|
71407
|
+
optional: false
|
|
71408
|
+
}],
|
|
71409
|
+
"dishwasher.setChildLock": [{
|
|
71410
|
+
name: "deviceId",
|
|
71411
|
+
form: "single",
|
|
71412
|
+
optional: false
|
|
71413
|
+
}],
|
|
71414
|
+
"dishwasher.setExtraDry": [{
|
|
71415
|
+
name: "deviceId",
|
|
71416
|
+
form: "single",
|
|
71417
|
+
optional: false
|
|
71418
|
+
}],
|
|
71419
|
+
"dishwasher.setHalfLoad": [{
|
|
71420
|
+
name: "deviceId",
|
|
71421
|
+
form: "single",
|
|
71422
|
+
optional: false
|
|
71423
|
+
}],
|
|
71424
|
+
"dishwasher.setHygienePlus": [{
|
|
71425
|
+
name: "deviceId",
|
|
71426
|
+
form: "single",
|
|
71427
|
+
optional: false
|
|
71428
|
+
}],
|
|
71429
|
+
"dishwasher.setIntensiveZone": [{
|
|
71430
|
+
name: "deviceId",
|
|
71431
|
+
form: "single",
|
|
71432
|
+
optional: false
|
|
71433
|
+
}],
|
|
71434
|
+
"dishwasher.setOption": [{
|
|
71435
|
+
name: "deviceId",
|
|
71436
|
+
form: "single",
|
|
71437
|
+
optional: false
|
|
71438
|
+
}],
|
|
71439
|
+
"dishwasher.setPower": [{
|
|
71440
|
+
name: "deviceId",
|
|
71441
|
+
form: "single",
|
|
71442
|
+
optional: false
|
|
71443
|
+
}],
|
|
71444
|
+
"dishwasher.setProgram": [{
|
|
71445
|
+
name: "deviceId",
|
|
71446
|
+
form: "single",
|
|
71447
|
+
optional: false
|
|
71448
|
+
}],
|
|
71449
|
+
"dishwasher.setVarioSpeedPlus": [{
|
|
71450
|
+
name: "deviceId",
|
|
71451
|
+
form: "single",
|
|
71452
|
+
optional: false
|
|
71453
|
+
}],
|
|
71454
|
+
"dishwasher.start": [{
|
|
71455
|
+
name: "deviceId",
|
|
71456
|
+
form: "single",
|
|
71457
|
+
optional: false
|
|
71458
|
+
}],
|
|
71459
|
+
"dishwasher.stop": [{
|
|
71460
|
+
name: "deviceId",
|
|
71461
|
+
form: "single",
|
|
71462
|
+
optional: false
|
|
71463
|
+
}],
|
|
71000
71464
|
"doorbell.getStatus": [{
|
|
71001
71465
|
name: "deviceId",
|
|
71002
71466
|
form: "single",
|
|
@@ -71066,6 +71530,11 @@ Object.freeze({
|
|
|
71066
71530
|
form: "single",
|
|
71067
71531
|
optional: false
|
|
71068
71532
|
}],
|
|
71533
|
+
"heatingValve.getStatus": [{
|
|
71534
|
+
name: "deviceId",
|
|
71535
|
+
form: "single",
|
|
71536
|
+
optional: false
|
|
71537
|
+
}],
|
|
71069
71538
|
"humidifier.getStatus": [{
|
|
71070
71539
|
name: "deviceId",
|
|
71071
71540
|
form: "single",
|
|
@@ -73023,6 +73492,9 @@ new Map(Object.entries({
|
|
|
73023
73492
|
"wrapper-update-available": "system",
|
|
73024
73493
|
"backup-completed": "system",
|
|
73025
73494
|
"export-completed": "system",
|
|
73495
|
+
"alert-critical": "system",
|
|
73496
|
+
"alert-error": "system",
|
|
73497
|
+
"alert-critical-resolved": "system",
|
|
73026
73498
|
"storage-location-low": "system",
|
|
73027
73499
|
"storage-location-critical": "system",
|
|
73028
73500
|
"storage-location-ok": "system",
|
|
@@ -73147,6 +73619,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
73147
73619
|
"storage-location-ok"
|
|
73148
73620
|
]
|
|
73149
73621
|
},
|
|
73622
|
+
{
|
|
73623
|
+
id: "alerts",
|
|
73624
|
+
family: "system",
|
|
73625
|
+
label: "Alerts",
|
|
73626
|
+
kinds: [
|
|
73627
|
+
"alert-critical",
|
|
73628
|
+
"alert-error",
|
|
73629
|
+
"alert-critical-resolved"
|
|
73630
|
+
]
|
|
73631
|
+
},
|
|
73150
73632
|
{
|
|
73151
73633
|
id: "alarm",
|
|
73152
73634
|
family: "alarm",
|
|
@@ -73191,6 +73673,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
|
|
|
73191
73673
|
return [[descriptor.kind, field]];
|
|
73192
73674
|
})));
|
|
73193
73675
|
Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
|
|
73676
|
+
object({
|
|
73677
|
+
phase: _enum(["raised", "resolved"]),
|
|
73678
|
+
episodeId: string().min(1),
|
|
73679
|
+
alertId: string().min(1),
|
|
73680
|
+
severity: AlertSeveritySchema,
|
|
73681
|
+
category: string(),
|
|
73682
|
+
title: string(),
|
|
73683
|
+
message: string(),
|
|
73684
|
+
sourceType: string().optional(),
|
|
73685
|
+
sourceId: string().optional(),
|
|
73686
|
+
nodeId: string().optional(),
|
|
73687
|
+
/** The alert's own action link (where the operator acts on it), when it has one. */
|
|
73688
|
+
actionUrl: string().optional(),
|
|
73689
|
+
at: number()
|
|
73690
|
+
});
|
|
73194
73691
|
var RULE_BODY_ONLY = ["body"];
|
|
73195
73692
|
var RULE_TEXT = ["title", "body"];
|
|
73196
73693
|
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
@@ -73200,6 +73697,11 @@ var TANK = [
|
|
|
73200
73697
|
"device-tank-full",
|
|
73201
73698
|
"device-tank-normal"
|
|
73202
73699
|
];
|
|
73700
|
+
var ALERT_EPISODE = [
|
|
73701
|
+
"alert-critical",
|
|
73702
|
+
"alert-error",
|
|
73703
|
+
"alert-critical-resolved"
|
|
73704
|
+
];
|
|
73203
73705
|
var UPDATES = [
|
|
73204
73706
|
"addon-update-available",
|
|
73205
73707
|
"server-update-available",
|
|
@@ -73392,14 +73894,14 @@ var STATE_SUMMARY_VARS = [
|
|
|
73392
73894
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
73393
73895
|
([...RULE_TEXT], [...TANK]),
|
|
73394
73896
|
[...RULE_TEXT],
|
|
73395
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
73396
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
73397
|
-
[...RULE_TEXT],
|
|
73897
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
73898
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
73398
73899
|
[...RULE_TEXT],
|
|
73399
73900
|
[...RULE_TEXT],
|
|
73400
73901
|
[...RULE_TEXT],
|
|
73401
73902
|
[...RULE_TEXT],
|
|
73402
73903
|
[...RULE_TEXT],
|
|
73904
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73403
73905
|
[...RULE_TEXT],
|
|
73404
73906
|
[...RULE_TEXT],
|
|
73405
73907
|
[...RULE_TEXT],
|
|
@@ -73417,7 +73919,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
73417
73919
|
[...RULE_TEXT],
|
|
73418
73920
|
[...RULE_TEXT],
|
|
73419
73921
|
[...RULE_TEXT],
|
|
73420
|
-
[...RULE_TEXT],
|
|
73922
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73923
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73924
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73925
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73926
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73421
73927
|
[...RULE_TEXT],
|
|
73422
73928
|
[...RULE_TEXT],
|
|
73423
73929
|
[...RULE_TEXT],
|
|
@@ -83306,13 +83812,20 @@ function buildAlexaOauthIntegration(publicHubUrl) {
|
|
|
83306
83812
|
function buildAlexaSetupBlock(input) {
|
|
83307
83813
|
const base = input.publicHubUrl.replace(/\/+$/, "");
|
|
83308
83814
|
return {
|
|
83309
|
-
fields: [
|
|
83310
|
-
|
|
83311
|
-
|
|
83312
|
-
|
|
83313
|
-
|
|
83314
|
-
|
|
83315
|
-
|
|
83815
|
+
fields: [
|
|
83816
|
+
...base ? [{
|
|
83817
|
+
label: "Hub address to enter in the Alexa app",
|
|
83818
|
+
value: base
|
|
83819
|
+
}] : [],
|
|
83820
|
+
...base ? [{
|
|
83821
|
+
label: "Directive endpoint",
|
|
83822
|
+
value: `${base}/addon/export-alexa/directive`
|
|
83823
|
+
}] : [],
|
|
83824
|
+
...input.ingressToken && input.skillMode === "custom" ? [{
|
|
83825
|
+
label: "Ingress token (Lambda HUB_INGRESS_TOKEN) — use \"Show ingress token\" in settings",
|
|
83826
|
+
value: maskSecretTail(input.ingressToken)
|
|
83827
|
+
}] : []
|
|
83828
|
+
],
|
|
83316
83829
|
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."
|
|
83317
83830
|
};
|
|
83318
83831
|
}
|