@camstack/addon-export-alexa 1.2.147 → 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 +265 -51
- package/dist/export-alexa.addon.mjs +265 -51
- 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).
|
|
@@ -13437,7 +13446,14 @@ var AlertSeveritySchema = _enum([
|
|
|
13437
13446
|
]);
|
|
13438
13447
|
var AlertActionSchema = object({
|
|
13439
13448
|
label: string(),
|
|
13440
|
-
href: string().optional()
|
|
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()
|
|
13441
13457
|
});
|
|
13442
13458
|
var AlertStatusSchema = _enum([
|
|
13443
13459
|
"active",
|
|
@@ -41838,6 +41854,9 @@ var NcSystemEventKindSchema = _enum([
|
|
|
41838
41854
|
"server-updated",
|
|
41839
41855
|
"export-completed",
|
|
41840
41856
|
"backup-completed",
|
|
41857
|
+
"alert-critical",
|
|
41858
|
+
"alert-error",
|
|
41859
|
+
"alert-critical-resolved",
|
|
41841
41860
|
"camera-online",
|
|
41842
41861
|
"camera-offline",
|
|
41843
41862
|
"camera-disabled",
|
|
@@ -50886,7 +50905,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
|
|
|
50886
50905
|
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
50887
50906
|
kind: "mutation",
|
|
50888
50907
|
auth: "admin"
|
|
50889
|
-
}), 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() }), {
|
|
50890
50912
|
kind: "mutation",
|
|
50891
50913
|
auth: "admin"
|
|
50892
50914
|
}), method(StorageCleanupInputSchema, object({ jobId: string() }), {
|
|
@@ -54345,6 +54367,11 @@ object({
|
|
|
54345
54367
|
*
|
|
54346
54368
|
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
54347
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.
|
|
54348
54375
|
*/
|
|
54349
54376
|
var DishwasherStateSchema = _enum([
|
|
54350
54377
|
"idle",
|
|
@@ -54354,112 +54381,227 @@ var DishwasherStateSchema = _enum([
|
|
|
54354
54381
|
"error",
|
|
54355
54382
|
"unavailable"
|
|
54356
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
|
+
]);
|
|
54357
54411
|
var DishwasherConsumableLevelSchema = _enum([
|
|
54358
54412
|
"ok",
|
|
54359
54413
|
"low",
|
|
54360
54414
|
"empty"
|
|
54361
54415
|
]);
|
|
54362
54416
|
object({
|
|
54417
|
+
availability: DishwasherAvailabilitySchema,
|
|
54418
|
+
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
54363
54419
|
state: DishwasherStateSchema,
|
|
54364
|
-
/**
|
|
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. */
|
|
54365
54423
|
program: string().nullable(),
|
|
54366
|
-
/**
|
|
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. */
|
|
54367
54427
|
availablePrograms: array(string()),
|
|
54368
|
-
/**
|
|
54369
|
-
|
|
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(),
|
|
54370
54432
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
54371
54433
|
progressPercent: number().min(0).max(100).nullable(),
|
|
54372
|
-
/** True when the door is reported open. */
|
|
54373
|
-
doorOpen: boolean(),
|
|
54374
|
-
/** True when
|
|
54375
|
-
|
|
54376
|
-
/**
|
|
54377
|
-
|
|
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(),
|
|
54378
54448
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
54379
54449
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
54380
|
-
|
|
54381
|
-
|
|
54450
|
+
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
54451
|
+
halfLoad: boolean().nullable(),
|
|
54452
|
+
hygienePlus: boolean().nullable(),
|
|
54382
54453
|
/** Extra dry option when the appliance exposes it. */
|
|
54383
|
-
extraDry: boolean(),
|
|
54454
|
+
extraDry: boolean().nullable(),
|
|
54384
54455
|
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
54385
|
-
intensiveZone: boolean(),
|
|
54456
|
+
intensiveZone: boolean().nullable(),
|
|
54386
54457
|
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
54387
|
-
varioSpeedPlus: boolean(),
|
|
54388
|
-
/** Child lock (controls disabled on the appliance). */
|
|
54389
|
-
childLock: boolean(),
|
|
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. */
|
|
54390
54464
|
errorCode: number().nullable(),
|
|
54465
|
+
/** Name of the raised alert-level event while the appliance is in error; null otherwise. */
|
|
54391
54466
|
errorLabel: string().nullable(),
|
|
54467
|
+
/** Ms epoch of the last value received from the appliance; 0 = never. */
|
|
54392
54468
|
lastFetchedAt: number()
|
|
54393
54469
|
});
|
|
54394
|
-
|
|
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(), {
|
|
54395
54538
|
kind: "mutation",
|
|
54396
54539
|
auth: "protected"
|
|
54397
|
-
}), method(object({ deviceId:
|
|
54540
|
+
}), method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
54398
54541
|
kind: "mutation",
|
|
54399
54542
|
auth: "protected"
|
|
54400
|
-
}), method(object({ deviceId:
|
|
54543
|
+
}), method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
54544
|
+
kind: "mutation",
|
|
54545
|
+
auth: "protected"
|
|
54546
|
+
}), method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
54401
54547
|
kind: "mutation",
|
|
54402
54548
|
auth: "protected"
|
|
54403
54549
|
}), method(object({
|
|
54404
|
-
deviceId:
|
|
54550
|
+
deviceId: DeviceIdSchema,
|
|
54405
54551
|
program: string().min(1)
|
|
54406
54552
|
}), _void(), {
|
|
54407
54553
|
kind: "mutation",
|
|
54408
54554
|
auth: "protected"
|
|
54409
54555
|
}), method(object({
|
|
54410
|
-
deviceId:
|
|
54556
|
+
deviceId: DeviceIdSchema,
|
|
54411
54557
|
on: boolean()
|
|
54412
54558
|
}), _void(), {
|
|
54413
54559
|
kind: "mutation",
|
|
54414
54560
|
auth: "protected"
|
|
54415
54561
|
}), method(object({
|
|
54416
|
-
deviceId:
|
|
54562
|
+
deviceId: DeviceIdSchema,
|
|
54417
54563
|
on: boolean()
|
|
54418
54564
|
}), _void(), {
|
|
54419
54565
|
kind: "mutation",
|
|
54420
54566
|
auth: "protected"
|
|
54421
54567
|
}), method(object({
|
|
54422
|
-
deviceId:
|
|
54568
|
+
deviceId: DeviceIdSchema,
|
|
54423
54569
|
on: boolean()
|
|
54424
54570
|
}), _void(), {
|
|
54425
54571
|
kind: "mutation",
|
|
54426
54572
|
auth: "protected"
|
|
54427
54573
|
}), method(object({
|
|
54428
|
-
deviceId:
|
|
54574
|
+
deviceId: DeviceIdSchema,
|
|
54429
54575
|
on: boolean()
|
|
54430
54576
|
}), _void(), {
|
|
54431
54577
|
kind: "mutation",
|
|
54432
54578
|
auth: "protected"
|
|
54433
54579
|
}), method(object({
|
|
54434
|
-
deviceId:
|
|
54580
|
+
deviceId: DeviceIdSchema,
|
|
54435
54581
|
on: boolean()
|
|
54436
54582
|
}), _void(), {
|
|
54437
54583
|
kind: "mutation",
|
|
54438
54584
|
auth: "protected"
|
|
54439
54585
|
}), method(object({
|
|
54440
|
-
deviceId:
|
|
54586
|
+
deviceId: DeviceIdSchema,
|
|
54441
54587
|
on: boolean()
|
|
54442
54588
|
}), _void(), {
|
|
54443
54589
|
kind: "mutation",
|
|
54444
54590
|
auth: "protected"
|
|
54445
54591
|
}), method(object({
|
|
54446
|
-
deviceId:
|
|
54592
|
+
deviceId: DeviceIdSchema,
|
|
54447
54593
|
on: boolean()
|
|
54448
54594
|
}), _void(), {
|
|
54449
54595
|
kind: "mutation",
|
|
54450
54596
|
auth: "protected"
|
|
54451
54597
|
}), method(object({
|
|
54452
|
-
deviceId:
|
|
54598
|
+
deviceId: DeviceIdSchema,
|
|
54453
54599
|
key: string().min(1),
|
|
54454
|
-
value:
|
|
54455
|
-
boolean(),
|
|
54456
|
-
string(),
|
|
54457
|
-
number()
|
|
54458
|
-
])
|
|
54600
|
+
value: DishwasherValueSchema
|
|
54459
54601
|
}), _void(), {
|
|
54460
54602
|
kind: "mutation",
|
|
54461
54603
|
auth: "protected"
|
|
54462
|
-
});
|
|
54604
|
+
}), method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" });
|
|
54463
54605
|
object({
|
|
54464
54606
|
/** Ms epoch of the last press. null = never observed since this provider started. */
|
|
54465
54607
|
lastPressedAt: number().nullable(),
|
|
@@ -64550,6 +64692,12 @@ Object.freeze({
|
|
|
64550
64692
|
addonId: null,
|
|
64551
64693
|
access: "view"
|
|
64552
64694
|
},
|
|
64695
|
+
"dishwasher.getOptions": {
|
|
64696
|
+
capName: "dishwasher",
|
|
64697
|
+
capScope: "device",
|
|
64698
|
+
addonId: null,
|
|
64699
|
+
access: "view"
|
|
64700
|
+
},
|
|
64553
64701
|
"dishwasher.getStatus": {
|
|
64554
64702
|
capName: "dishwasher",
|
|
64555
64703
|
capScope: "device",
|
|
@@ -64562,6 +64710,12 @@ Object.freeze({
|
|
|
64562
64710
|
addonId: null,
|
|
64563
64711
|
access: "create"
|
|
64564
64712
|
},
|
|
64713
|
+
"dishwasher.resume": {
|
|
64714
|
+
capName: "dishwasher",
|
|
64715
|
+
capScope: "device",
|
|
64716
|
+
addonId: null,
|
|
64717
|
+
access: "create"
|
|
64718
|
+
},
|
|
64565
64719
|
"dishwasher.setChildLock": {
|
|
64566
64720
|
capName: "dishwasher",
|
|
64567
64721
|
capScope: "device",
|
|
@@ -69062,6 +69216,12 @@ Object.freeze({
|
|
|
69062
69216
|
addonId: null,
|
|
69063
69217
|
access: "view"
|
|
69064
69218
|
},
|
|
69219
|
+
"storageMigration.moverClearance": {
|
|
69220
|
+
capName: "storage-migration",
|
|
69221
|
+
capScope: "system",
|
|
69222
|
+
addonId: null,
|
|
69223
|
+
access: "view"
|
|
69224
|
+
},
|
|
69065
69225
|
"storageMigration.movers": {
|
|
69066
69226
|
capName: "storage-migration",
|
|
69067
69227
|
capScope: "system",
|
|
@@ -71255,6 +71415,11 @@ Object.freeze({
|
|
|
71255
71415
|
form: "single",
|
|
71256
71416
|
optional: false
|
|
71257
71417
|
}],
|
|
71418
|
+
"dishwasher.getOptions": [{
|
|
71419
|
+
name: "deviceId",
|
|
71420
|
+
form: "single",
|
|
71421
|
+
optional: false
|
|
71422
|
+
}],
|
|
71258
71423
|
"dishwasher.getStatus": [{
|
|
71259
71424
|
name: "deviceId",
|
|
71260
71425
|
form: "single",
|
|
@@ -71265,6 +71430,11 @@ Object.freeze({
|
|
|
71265
71430
|
form: "single",
|
|
71266
71431
|
optional: false
|
|
71267
71432
|
}],
|
|
71433
|
+
"dishwasher.resume": [{
|
|
71434
|
+
name: "deviceId",
|
|
71435
|
+
form: "single",
|
|
71436
|
+
optional: false
|
|
71437
|
+
}],
|
|
71268
71438
|
"dishwasher.setChildLock": [{
|
|
71269
71439
|
name: "deviceId",
|
|
71270
71440
|
form: "single",
|
|
@@ -73351,6 +73521,9 @@ new Map(Object.entries({
|
|
|
73351
73521
|
"wrapper-update-available": "system",
|
|
73352
73522
|
"backup-completed": "system",
|
|
73353
73523
|
"export-completed": "system",
|
|
73524
|
+
"alert-critical": "system",
|
|
73525
|
+
"alert-error": "system",
|
|
73526
|
+
"alert-critical-resolved": "system",
|
|
73354
73527
|
"storage-location-low": "system",
|
|
73355
73528
|
"storage-location-critical": "system",
|
|
73356
73529
|
"storage-location-ok": "system",
|
|
@@ -73475,6 +73648,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
73475
73648
|
"storage-location-ok"
|
|
73476
73649
|
]
|
|
73477
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
|
+
},
|
|
73478
73661
|
{
|
|
73479
73662
|
id: "alarm",
|
|
73480
73663
|
family: "alarm",
|
|
@@ -73519,6 +73702,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
|
|
|
73519
73702
|
return [[descriptor.kind, field]];
|
|
73520
73703
|
})));
|
|
73521
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
|
+
});
|
|
73522
73720
|
var RULE_BODY_ONLY = ["body"];
|
|
73523
73721
|
var RULE_TEXT = ["title", "body"];
|
|
73524
73722
|
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
@@ -73528,6 +73726,11 @@ var TANK = [
|
|
|
73528
73726
|
"device-tank-full",
|
|
73529
73727
|
"device-tank-normal"
|
|
73530
73728
|
];
|
|
73729
|
+
var ALERT_EPISODE = [
|
|
73730
|
+
"alert-critical",
|
|
73731
|
+
"alert-error",
|
|
73732
|
+
"alert-critical-resolved"
|
|
73733
|
+
];
|
|
73531
73734
|
var UPDATES = [
|
|
73532
73735
|
"addon-update-available",
|
|
73533
73736
|
"server-update-available",
|
|
@@ -73720,14 +73923,14 @@ var STATE_SUMMARY_VARS = [
|
|
|
73720
73923
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
73721
73924
|
([...RULE_TEXT], [...TANK]),
|
|
73722
73925
|
[...RULE_TEXT],
|
|
73723
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
73724
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
73725
|
-
[...RULE_TEXT],
|
|
73926
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
73927
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
73726
73928
|
[...RULE_TEXT],
|
|
73727
73929
|
[...RULE_TEXT],
|
|
73728
73930
|
[...RULE_TEXT],
|
|
73729
73931
|
[...RULE_TEXT],
|
|
73730
73932
|
[...RULE_TEXT],
|
|
73933
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73731
73934
|
[...RULE_TEXT],
|
|
73732
73935
|
[...RULE_TEXT],
|
|
73733
73936
|
[...RULE_TEXT],
|
|
@@ -73745,7 +73948,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
73745
73948
|
[...RULE_TEXT],
|
|
73746
73949
|
[...RULE_TEXT],
|
|
73747
73950
|
[...RULE_TEXT],
|
|
73748
|
-
[...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]),
|
|
73749
73956
|
[...RULE_TEXT],
|
|
73750
73957
|
[...RULE_TEXT],
|
|
73751
73958
|
[...RULE_TEXT],
|
|
@@ -83634,13 +83841,20 @@ function buildAlexaOauthIntegration(publicHubUrl) {
|
|
|
83634
83841
|
function buildAlexaSetupBlock(input) {
|
|
83635
83842
|
const base = input.publicHubUrl.replace(/\/+$/, "");
|
|
83636
83843
|
return {
|
|
83637
|
-
fields: [
|
|
83638
|
-
|
|
83639
|
-
|
|
83640
|
-
|
|
83641
|
-
|
|
83642
|
-
|
|
83643
|
-
|
|
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
|
+
],
|
|
83644
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."
|
|
83645
83859
|
};
|
|
83646
83860
|
}
|