@camstack/addon-export-alexa 1.2.161 → 1.2.163
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 +151 -89
- package/dist/export-alexa.addon.mjs +151 -89
- package/package.json +1 -1
|
@@ -5466,7 +5466,7 @@ var ZodIssueCode = {
|
|
|
5466
5466
|
var ZodFirstPartyTypeKind;
|
|
5467
5467
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5468
5468
|
//#endregion
|
|
5469
|
-
//#region ../types/dist/sleep-
|
|
5469
|
+
//#region ../types/dist/sleep-CUp20JkO.mjs
|
|
5470
5470
|
/**
|
|
5471
5471
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5472
5472
|
* window to float samples (D455).
|
|
@@ -8291,7 +8291,11 @@ var ContributionSectionSchema = object({
|
|
|
8291
8291
|
literal(4)
|
|
8292
8292
|
]).optional(),
|
|
8293
8293
|
tab: string().optional(),
|
|
8294
|
-
location: _enum([
|
|
8294
|
+
location: _enum([
|
|
8295
|
+
"settings",
|
|
8296
|
+
"top-tab",
|
|
8297
|
+
"hero"
|
|
8298
|
+
]).optional(),
|
|
8295
8299
|
order: number().optional(),
|
|
8296
8300
|
fields: array(any())
|
|
8297
8301
|
});
|
|
@@ -13525,7 +13529,11 @@ var ConfigSectionWithValuesSchema = object({
|
|
|
13525
13529
|
literal(4)
|
|
13526
13530
|
]).optional(),
|
|
13527
13531
|
tab: string().optional(),
|
|
13528
|
-
location: _enum([
|
|
13532
|
+
location: _enum([
|
|
13533
|
+
"settings",
|
|
13534
|
+
"top-tab",
|
|
13535
|
+
"hero"
|
|
13536
|
+
]).optional(),
|
|
13529
13537
|
order: number().optional(),
|
|
13530
13538
|
fields: array(any())
|
|
13531
13539
|
});
|
|
@@ -17299,6 +17307,52 @@ var TierStatusSchema = object({
|
|
|
17299
17307
|
countedAt: number().nullable()
|
|
17300
17308
|
});
|
|
17301
17309
|
/** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
|
|
17310
|
+
/**
|
|
17311
|
+
* Why a series is orphan. `device-gone`: its device is absent from the
|
|
17312
|
+
* successful device listings (the departure clock). `undeclared`: its `cap:`
|
|
17313
|
+
* key is declared by no capability any more (a field a cap removed).
|
|
17314
|
+
*/
|
|
17315
|
+
var DeviceHistoryOrphanReasonSchema = _enum(["device-gone", "undeclared"]);
|
|
17316
|
+
/** Rows held per stored tier. */
|
|
17317
|
+
var TierRowsSchema = object({
|
|
17318
|
+
raw: number().int(),
|
|
17319
|
+
"5m": number().int(),
|
|
17320
|
+
"1h": number().int(),
|
|
17321
|
+
"1d": number().int()
|
|
17322
|
+
});
|
|
17323
|
+
var OrphanSeriesSchema = object({
|
|
17324
|
+
seriesId: number().int(),
|
|
17325
|
+
deviceId: number().int(),
|
|
17326
|
+
key: string(),
|
|
17327
|
+
scope: string(),
|
|
17328
|
+
/** The metric's display name; `null` when its metric row is gone too. */
|
|
17329
|
+
displayName: string().nullable(),
|
|
17330
|
+
reason: DeviceHistoryOrphanReasonSchema,
|
|
17331
|
+
/** `device-gone`: since when the device has been absent; `null` otherwise. */
|
|
17332
|
+
missingSince: number().nullable(),
|
|
17333
|
+
firstTs: number(),
|
|
17334
|
+
lastTs: number(),
|
|
17335
|
+
rows: TierRowsSchema
|
|
17336
|
+
});
|
|
17337
|
+
var DeviceHistoryOrphanDeleteRefusalSchema = _enum([
|
|
17338
|
+
"not-found",
|
|
17339
|
+
"not-orphan",
|
|
17340
|
+
"failed"
|
|
17341
|
+
]);
|
|
17342
|
+
var OrphanDeleteEntrySchema = discriminatedUnion("ok", [object({
|
|
17343
|
+
seriesId: number().int(),
|
|
17344
|
+
ok: literal(true),
|
|
17345
|
+
deleted: TierRowsSchema
|
|
17346
|
+
}), object({
|
|
17347
|
+
seriesId: number().int(),
|
|
17348
|
+
ok: literal(false),
|
|
17349
|
+
reason: DeviceHistoryOrphanDeleteRefusalSchema
|
|
17350
|
+
})]);
|
|
17351
|
+
var OrphanListSchema = object({
|
|
17352
|
+
series: array(OrphanSeriesSchema).readonly(),
|
|
17353
|
+
/** More orphans exist than {@link DEVICE_HISTORY_ORPHAN_LIST_MAX}. */
|
|
17354
|
+
truncated: boolean()
|
|
17355
|
+
});
|
|
17302
17356
|
var DeviceHistoryStatusSchema = object({
|
|
17303
17357
|
startedAt: number(),
|
|
17304
17358
|
/** The store is declared, series loaded and the first reconcile has answered. */
|
|
@@ -17396,7 +17450,10 @@ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly())
|
|
|
17396
17450
|
}), object({ enabled: boolean() }), {
|
|
17397
17451
|
kind: "mutation",
|
|
17398
17452
|
auth: "admin"
|
|
17399
|
-
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" })
|
|
17453
|
+
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" }), method(object({}), OrphanListSchema, { auth: "admin" }), method(object({ seriesIds: array(number().int()).min(1).max(50) }), object({ results: array(OrphanDeleteEntrySchema).readonly() }), {
|
|
17454
|
+
kind: "mutation",
|
|
17455
|
+
auth: "admin"
|
|
17456
|
+
});
|
|
17400
17457
|
var DeviceCaStatusSchema = discriminatedUnion("state", [
|
|
17401
17458
|
object({ state: literal("absent") }),
|
|
17402
17459
|
object({
|
|
@@ -47912,7 +47969,6 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
|
|
|
47912
47969
|
modelId: string()
|
|
47913
47970
|
}),
|
|
47914
47971
|
object({ kind: literal("cpu-device") }),
|
|
47915
|
-
object({ kind: literal("coral-untouched") }),
|
|
47916
47972
|
object({ kind: literal("device-disabled") }),
|
|
47917
47973
|
object({ kind: literal("device-unavailable") }),
|
|
47918
47974
|
object({ kind: literal("node-offline") }),
|
|
@@ -48010,11 +48066,6 @@ var AutoTuneWarningSchema = discriminatedUnion("kind", [
|
|
|
48010
48066
|
kind: literal("detector-store-unreadable"),
|
|
48011
48067
|
error: string()
|
|
48012
48068
|
}),
|
|
48013
|
-
object({
|
|
48014
|
-
kind: literal("coral-enabled"),
|
|
48015
|
-
nodeId: string(),
|
|
48016
|
-
deviceKey: string()
|
|
48017
|
-
}),
|
|
48018
48069
|
object({
|
|
48019
48070
|
kind: literal("custom-pin-kept"),
|
|
48020
48071
|
nodeId: string(),
|
|
@@ -54464,17 +54515,69 @@ object({
|
|
|
54464
54515
|
});
|
|
54465
54516
|
DeviceType.Sensor;
|
|
54466
54517
|
/**
|
|
54467
|
-
* Generic device-consumables capability —
|
|
54468
|
-
*
|
|
54469
|
-
* descaling cycles,
|
|
54470
|
-
*
|
|
54471
|
-
*
|
|
54472
|
-
*
|
|
54518
|
+
* Generic device-consumables capability — the ONE place a device reports what
|
|
54519
|
+
* it uses up or fills: wear parts (vacuum filters/brushes, cartridges,
|
|
54520
|
+
* descaling cycles), supplies it draws from (a vacuum's clean-water tank and
|
|
54521
|
+
* detergent, a dishwasher's salt and rinse aid) and waste it collects (a dirty
|
|
54522
|
+
* water tank, a dust bin). Each item carries its remaining life or fill and an
|
|
54523
|
+
* optional "Replaced" reset action. Device-agnostic: any provider that knows
|
|
54524
|
+
* its device tracks consumables registers it; the provider names each item
|
|
54525
|
+
* verbatim and says which `kind` it is.
|
|
54526
|
+
*
|
|
54527
|
+
* The admin UI renders it as ONE collapsible section directly under the
|
|
54528
|
+
* device page's hero card (`placement: 'hero'`), for every device bound to
|
|
54529
|
+
* this cap — never drawn by a device type's hero card itself (D915).
|
|
54473
54530
|
*
|
|
54474
54531
|
* Like `childLayout`, the cap is INERT until a provider sets items: no
|
|
54475
54532
|
* provider populates it by guessing (no HA inference). The UI renders a
|
|
54476
54533
|
* "No consumables reported" placeholder when `items` is empty.
|
|
54477
54534
|
*/
|
|
54535
|
+
/**
|
|
54536
|
+
* What an item IS, which decides which direction is bad:
|
|
54537
|
+
* - `wear` — a part that wears out (a brush, a filter); low life is bad.
|
|
54538
|
+
* - `supply` — something the device draws from (clean water, detergent,
|
|
54539
|
+
* salt, rinse aid); low or empty is bad.
|
|
54540
|
+
* - `waste` — something the device fills (dirty water, a dust bin); full is
|
|
54541
|
+
* bad.
|
|
54542
|
+
* Absent = `wear`.
|
|
54543
|
+
*/
|
|
54544
|
+
var ConsumableKindSchema = _enum([
|
|
54545
|
+
"wear",
|
|
54546
|
+
"supply",
|
|
54547
|
+
"waste"
|
|
54548
|
+
]);
|
|
54549
|
+
/**
|
|
54550
|
+
* What an item LOOKS like, which decides how a client draws it — independent
|
|
54551
|
+
* of `kind`, which decides which direction is bad:
|
|
54552
|
+
* - `part` — a part that wears (a brush, a filter, a mop pad): a wear bar,
|
|
54553
|
+
* remaining time and a reset.
|
|
54554
|
+
* - `tank` — a container of liquid (clean water, dirty water): a fill gauge.
|
|
54555
|
+
* - `product` — something bought and refilled (detergent, salt, rinse aid):
|
|
54556
|
+
* a stepped level and "refill".
|
|
54557
|
+
* - `bin` — a container that collects waste (a dust bin): a fill gauge
|
|
54558
|
+
* that warns when full.
|
|
54559
|
+
* Absent = derived from the kind ({@link consumableFormOf}).
|
|
54560
|
+
*/
|
|
54561
|
+
var ConsumableFormSchema = _enum([
|
|
54562
|
+
"part",
|
|
54563
|
+
"tank",
|
|
54564
|
+
"product",
|
|
54565
|
+
"bin"
|
|
54566
|
+
]);
|
|
54567
|
+
/** The provider's own discrete verdict on an item. */
|
|
54568
|
+
var ConsumableStatusSchema = _enum([
|
|
54569
|
+
"ok",
|
|
54570
|
+
"low",
|
|
54571
|
+
"empty",
|
|
54572
|
+
"full",
|
|
54573
|
+
"replace"
|
|
54574
|
+
]);
|
|
54575
|
+
_enum([
|
|
54576
|
+
"ok",
|
|
54577
|
+
"low",
|
|
54578
|
+
"empty",
|
|
54579
|
+
"full"
|
|
54580
|
+
]);
|
|
54478
54581
|
/** Units a remaining-life counter is reported in. Closed: the panel renders
|
|
54479
54582
|
* each. */
|
|
54480
54583
|
var ConsumableRemainingUnitSchema = _enum([
|
|
@@ -54494,10 +54597,14 @@ var ConsumablesStatusSchema = object({
|
|
|
54494
54597
|
key: string().min(1),
|
|
54495
54598
|
/** Display name. */
|
|
54496
54599
|
label: string().min(1),
|
|
54497
|
-
/** Remaining life % when known (0..100). */
|
|
54600
|
+
/** Remaining life % (`wear`) or fill % (`supply`, `waste`) when known (0..100). */
|
|
54498
54601
|
level: number().min(0).max(100).nullable(),
|
|
54499
|
-
/**
|
|
54500
|
-
status:
|
|
54602
|
+
/** The provider's discrete verdict when known (binary mode). */
|
|
54603
|
+
status: ConsumableStatusSchema.nullable(),
|
|
54604
|
+
/** What the item is — decides whether low or full is bad. Absent = `wear`. */
|
|
54605
|
+
kind: ConsumableKindSchema.optional(),
|
|
54606
|
+
/** How the item is drawn (part, tank, product, bin). Absent = derived from `kind`. */
|
|
54607
|
+
form: ConsumableFormSchema.optional(),
|
|
54501
54608
|
/** Ms epoch of the last replace, when known. */
|
|
54502
54609
|
lastResetAt: number().nullable(),
|
|
54503
54610
|
/** Whether `reset()` is meaningful for this item. */
|
|
@@ -54744,8 +54851,9 @@ object({
|
|
|
54744
54851
|
status: DeviceStatusSchema
|
|
54745
54852
|
});
|
|
54746
54853
|
/**
|
|
54747
|
-
* Smart-dishwasher cap — program lifecycle, door / remote-start gates
|
|
54748
|
-
*
|
|
54854
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates and
|
|
54855
|
+
* common program options. Salt and rinse aid are NOT here: they are items of
|
|
54856
|
+
* the device's `consumables` cap, like every other device's (D915).
|
|
54749
54857
|
*
|
|
54750
54858
|
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
54751
54859
|
* by any integration that exposes the same program / option surface.
|
|
@@ -54793,11 +54901,6 @@ var DishwasherAvailabilitySchema = _enum([
|
|
|
54793
54901
|
"offline",
|
|
54794
54902
|
"description-missing"
|
|
54795
54903
|
]);
|
|
54796
|
-
var DishwasherConsumableLevelSchema = _enum([
|
|
54797
|
-
"ok",
|
|
54798
|
-
"low",
|
|
54799
|
-
"empty"
|
|
54800
|
-
]);
|
|
54801
54904
|
object({
|
|
54802
54905
|
availability: DishwasherAvailabilitySchema,
|
|
54803
54906
|
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
@@ -54830,8 +54933,6 @@ object({
|
|
|
54830
54933
|
powerOn: boolean().nullable(),
|
|
54831
54934
|
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
54832
54935
|
powerState: string().nullable(),
|
|
54833
|
-
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
54834
|
-
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
54835
54936
|
/**
|
|
54836
54937
|
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
54837
54938
|
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
@@ -61645,60 +61746,17 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
61645
61746
|
auth: "admin",
|
|
61646
61747
|
access: "delete"
|
|
61647
61748
|
});
|
|
61648
|
-
/**
|
|
61649
|
-
* Robot-vacuum cap. Models HA `vacuum.*` entities — anything with a
|
|
61650
|
-
* cleaning lifecycle plus a return-to-base / locate surface and an
|
|
61651
|
-
* optional fan-speed selector.
|
|
61652
|
-
*
|
|
61653
|
-
* State follows HA's canonical vacuum lifecycle: `idle` / `cleaning` /
|
|
61654
|
-
* `paused` / `returning` / `docked` / `error`. `batteryLevel`
|
|
61655
|
-
* (0..100) is nullable — some vacuums don't report a battery
|
|
61656
|
-
* percentage. `fanSpeed` is the current speed token (provider-verbatim,
|
|
61657
|
-
* e.g. `'standard'` / `'turbo'`) and `availableFanSpeeds` lists the
|
|
61658
|
-
* tokens the hardware accepts so the UI renders only supported choices.
|
|
61659
|
-
*
|
|
61660
|
-
* The `setFanSpeed` method takes the bare `speed` token — the provider
|
|
61661
|
-
* validates it against the vacuum's own list. `locate` triggers the
|
|
61662
|
-
* find-me chirp; `returnToBase` sends it home.
|
|
61663
|
-
*
|
|
61664
|
-
* Consumable / waste tanks: `cleanWater` / `dirtyWater` / `detergent` /
|
|
61665
|
-
* `dustBin` each carry a nullable `{ level (0..100 %), status ('ok' |
|
|
61666
|
-
* 'low' | 'full') }` reading. Native providers (e.g. Dreame, Roborock)
|
|
61667
|
-
* SHOULD populate whichever tanks the hardware has — leave a field `null`
|
|
61668
|
-
* only when the device has no such tank at all, and use a `TankStatus`
|
|
61669
|
-
* with both inner fields `null` when the tank exists but its level is
|
|
61670
|
-
* currently unknown. HA `vacuum.*` entities expose no per-tank telemetry,
|
|
61671
|
-
* so the HA provider leaves all four `null`.
|
|
61672
|
-
*/
|
|
61673
|
-
var VacuumStateSchema = _enum([
|
|
61674
|
-
"idle",
|
|
61675
|
-
"cleaning",
|
|
61676
|
-
"paused",
|
|
61677
|
-
"returning",
|
|
61678
|
-
"docked",
|
|
61679
|
-
"drying",
|
|
61680
|
-
"error"
|
|
61681
|
-
]);
|
|
61682
|
-
/**
|
|
61683
|
-
* One consumable / waste tank on a robot vacuum (clean-water, dirty-water,
|
|
61684
|
-
* detergent or dust-bin). A tank can report a numeric fill `level` (0..100),
|
|
61685
|
-
* a discrete `status` (binary-style hardware), or both. Both `null` means the
|
|
61686
|
-
* level is currently unknown; the OWNING field being `null` means the
|
|
61687
|
-
* hardware has no such tank at all.
|
|
61688
|
-
*/
|
|
61689
|
-
var TankStatusSchema = object({
|
|
61690
|
-
/** Numeric fill 0..100 when the hardware reports a percentage; null otherwise. */
|
|
61691
|
-
level: number().min(0).max(100).nullable(),
|
|
61692
|
-
/** Discrete state when the hardware is binary-mode; null otherwise. */
|
|
61693
|
-
status: _enum([
|
|
61694
|
-
"ok",
|
|
61695
|
-
"low",
|
|
61696
|
-
"full"
|
|
61697
|
-
]).nullable()
|
|
61698
|
-
});
|
|
61699
61749
|
object({
|
|
61700
61750
|
/** Lifecycle state of the vacuum. */
|
|
61701
|
-
state:
|
|
61751
|
+
state: _enum([
|
|
61752
|
+
"idle",
|
|
61753
|
+
"cleaning",
|
|
61754
|
+
"paused",
|
|
61755
|
+
"returning",
|
|
61756
|
+
"docked",
|
|
61757
|
+
"drying",
|
|
61758
|
+
"error"
|
|
61759
|
+
]),
|
|
61702
61760
|
/** 0..100 battery percentage. Null when the device has no battery
|
|
61703
61761
|
* reading. */
|
|
61704
61762
|
batteryLevel: number().min(0).max(100).nullable(),
|
|
@@ -61707,14 +61765,6 @@ object({
|
|
|
61707
61765
|
fanSpeed: string().nullable(),
|
|
61708
61766
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
61709
61767
|
availableFanSpeeds: array(string()),
|
|
61710
|
-
/** Clean-water (mop) tank. Null when the hardware has no clean-water tank. */
|
|
61711
|
-
cleanWater: TankStatusSchema.nullable(),
|
|
61712
|
-
/** Dirty-water (recovery) tank. Null when the hardware has no dirty-water tank. */
|
|
61713
|
-
dirtyWater: TankStatusSchema.nullable(),
|
|
61714
|
-
/** Detergent tank. Null when the hardware has no detergent tank. */
|
|
61715
|
-
detergent: TankStatusSchema.nullable(),
|
|
61716
|
-
/** Dust bin. Null when the hardware has no dust bin. */
|
|
61717
|
-
dustBin: TankStatusSchema.nullable(),
|
|
61718
61768
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
61719
61769
|
progressPercent: number().min(0).max(100).nullable(),
|
|
61720
61770
|
/** Current error code (0 / null = no error). */
|
|
@@ -64255,6 +64305,12 @@ Object.freeze({
|
|
|
64255
64305
|
addonId: null,
|
|
64256
64306
|
access: "create"
|
|
64257
64307
|
},
|
|
64308
|
+
"deviceHistory.deleteOrphanSeries": {
|
|
64309
|
+
capName: "device-history",
|
|
64310
|
+
capScope: "system",
|
|
64311
|
+
addonId: null,
|
|
64312
|
+
access: "delete"
|
|
64313
|
+
},
|
|
64258
64314
|
"deviceHistory.getDeviceEnabled": {
|
|
64259
64315
|
capName: "device-history",
|
|
64260
64316
|
capScope: "system",
|
|
@@ -64273,6 +64329,12 @@ Object.freeze({
|
|
|
64273
64329
|
addonId: null,
|
|
64274
64330
|
access: "view"
|
|
64275
64331
|
},
|
|
64332
|
+
"deviceHistory.listOrphanSeries": {
|
|
64333
|
+
capName: "device-history",
|
|
64334
|
+
capScope: "system",
|
|
64335
|
+
addonId: null,
|
|
64336
|
+
access: "view"
|
|
64337
|
+
},
|
|
64276
64338
|
"deviceHistory.listSeries": {
|
|
64277
64339
|
capName: "device-history",
|
|
64278
64340
|
capScope: "system",
|
|
@@ -74278,7 +74340,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
74278
74340
|
([...RULE_TEXT], [...COMBINED_ALARM]),
|
|
74279
74341
|
([...RULE_TEXT], [...DEVICE_EVENTS]),
|
|
74280
74342
|
([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
|
|
74281
|
-
([...RULE_TEXT], [...CONSUMABLE]),
|
|
74343
|
+
([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
|
|
74282
74344
|
([...RULE_TEXT], [...TANK]),
|
|
74283
74345
|
[...RULE_TEXT],
|
|
74284
74346
|
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
@@ -5437,7 +5437,7 @@ var ZodIssueCode = {
|
|
|
5437
5437
|
var ZodFirstPartyTypeKind;
|
|
5438
5438
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5439
5439
|
//#endregion
|
|
5440
|
-
//#region ../types/dist/sleep-
|
|
5440
|
+
//#region ../types/dist/sleep-CUp20JkO.mjs
|
|
5441
5441
|
/**
|
|
5442
5442
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5443
5443
|
* window to float samples (D455).
|
|
@@ -8262,7 +8262,11 @@ var ContributionSectionSchema = object({
|
|
|
8262
8262
|
literal(4)
|
|
8263
8263
|
]).optional(),
|
|
8264
8264
|
tab: string().optional(),
|
|
8265
|
-
location: _enum([
|
|
8265
|
+
location: _enum([
|
|
8266
|
+
"settings",
|
|
8267
|
+
"top-tab",
|
|
8268
|
+
"hero"
|
|
8269
|
+
]).optional(),
|
|
8266
8270
|
order: number().optional(),
|
|
8267
8271
|
fields: array(any())
|
|
8268
8272
|
});
|
|
@@ -13496,7 +13500,11 @@ var ConfigSectionWithValuesSchema = object({
|
|
|
13496
13500
|
literal(4)
|
|
13497
13501
|
]).optional(),
|
|
13498
13502
|
tab: string().optional(),
|
|
13499
|
-
location: _enum([
|
|
13503
|
+
location: _enum([
|
|
13504
|
+
"settings",
|
|
13505
|
+
"top-tab",
|
|
13506
|
+
"hero"
|
|
13507
|
+
]).optional(),
|
|
13500
13508
|
order: number().optional(),
|
|
13501
13509
|
fields: array(any())
|
|
13502
13510
|
});
|
|
@@ -17270,6 +17278,52 @@ var TierStatusSchema = object({
|
|
|
17270
17278
|
countedAt: number().nullable()
|
|
17271
17279
|
});
|
|
17272
17280
|
/** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
|
|
17281
|
+
/**
|
|
17282
|
+
* Why a series is orphan. `device-gone`: its device is absent from the
|
|
17283
|
+
* successful device listings (the departure clock). `undeclared`: its `cap:`
|
|
17284
|
+
* key is declared by no capability any more (a field a cap removed).
|
|
17285
|
+
*/
|
|
17286
|
+
var DeviceHistoryOrphanReasonSchema = _enum(["device-gone", "undeclared"]);
|
|
17287
|
+
/** Rows held per stored tier. */
|
|
17288
|
+
var TierRowsSchema = object({
|
|
17289
|
+
raw: number().int(),
|
|
17290
|
+
"5m": number().int(),
|
|
17291
|
+
"1h": number().int(),
|
|
17292
|
+
"1d": number().int()
|
|
17293
|
+
});
|
|
17294
|
+
var OrphanSeriesSchema = object({
|
|
17295
|
+
seriesId: number().int(),
|
|
17296
|
+
deviceId: number().int(),
|
|
17297
|
+
key: string(),
|
|
17298
|
+
scope: string(),
|
|
17299
|
+
/** The metric's display name; `null` when its metric row is gone too. */
|
|
17300
|
+
displayName: string().nullable(),
|
|
17301
|
+
reason: DeviceHistoryOrphanReasonSchema,
|
|
17302
|
+
/** `device-gone`: since when the device has been absent; `null` otherwise. */
|
|
17303
|
+
missingSince: number().nullable(),
|
|
17304
|
+
firstTs: number(),
|
|
17305
|
+
lastTs: number(),
|
|
17306
|
+
rows: TierRowsSchema
|
|
17307
|
+
});
|
|
17308
|
+
var DeviceHistoryOrphanDeleteRefusalSchema = _enum([
|
|
17309
|
+
"not-found",
|
|
17310
|
+
"not-orphan",
|
|
17311
|
+
"failed"
|
|
17312
|
+
]);
|
|
17313
|
+
var OrphanDeleteEntrySchema = discriminatedUnion("ok", [object({
|
|
17314
|
+
seriesId: number().int(),
|
|
17315
|
+
ok: literal(true),
|
|
17316
|
+
deleted: TierRowsSchema
|
|
17317
|
+
}), object({
|
|
17318
|
+
seriesId: number().int(),
|
|
17319
|
+
ok: literal(false),
|
|
17320
|
+
reason: DeviceHistoryOrphanDeleteRefusalSchema
|
|
17321
|
+
})]);
|
|
17322
|
+
var OrphanListSchema = object({
|
|
17323
|
+
series: array(OrphanSeriesSchema).readonly(),
|
|
17324
|
+
/** More orphans exist than {@link DEVICE_HISTORY_ORPHAN_LIST_MAX}. */
|
|
17325
|
+
truncated: boolean()
|
|
17326
|
+
});
|
|
17273
17327
|
var DeviceHistoryStatusSchema = object({
|
|
17274
17328
|
startedAt: number(),
|
|
17275
17329
|
/** The store is declared, series loaded and the first reconcile has answered. */
|
|
@@ -17367,7 +17421,10 @@ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly())
|
|
|
17367
17421
|
}), object({ enabled: boolean() }), {
|
|
17368
17422
|
kind: "mutation",
|
|
17369
17423
|
auth: "admin"
|
|
17370
|
-
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" })
|
|
17424
|
+
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" }), method(object({}), OrphanListSchema, { auth: "admin" }), method(object({ seriesIds: array(number().int()).min(1).max(50) }), object({ results: array(OrphanDeleteEntrySchema).readonly() }), {
|
|
17425
|
+
kind: "mutation",
|
|
17426
|
+
auth: "admin"
|
|
17427
|
+
});
|
|
17371
17428
|
var DeviceCaStatusSchema = discriminatedUnion("state", [
|
|
17372
17429
|
object({ state: literal("absent") }),
|
|
17373
17430
|
object({
|
|
@@ -47883,7 +47940,6 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
|
|
|
47883
47940
|
modelId: string()
|
|
47884
47941
|
}),
|
|
47885
47942
|
object({ kind: literal("cpu-device") }),
|
|
47886
|
-
object({ kind: literal("coral-untouched") }),
|
|
47887
47943
|
object({ kind: literal("device-disabled") }),
|
|
47888
47944
|
object({ kind: literal("device-unavailable") }),
|
|
47889
47945
|
object({ kind: literal("node-offline") }),
|
|
@@ -47981,11 +48037,6 @@ var AutoTuneWarningSchema = discriminatedUnion("kind", [
|
|
|
47981
48037
|
kind: literal("detector-store-unreadable"),
|
|
47982
48038
|
error: string()
|
|
47983
48039
|
}),
|
|
47984
|
-
object({
|
|
47985
|
-
kind: literal("coral-enabled"),
|
|
47986
|
-
nodeId: string(),
|
|
47987
|
-
deviceKey: string()
|
|
47988
|
-
}),
|
|
47989
48040
|
object({
|
|
47990
48041
|
kind: literal("custom-pin-kept"),
|
|
47991
48042
|
nodeId: string(),
|
|
@@ -54435,17 +54486,69 @@ object({
|
|
|
54435
54486
|
});
|
|
54436
54487
|
DeviceType.Sensor;
|
|
54437
54488
|
/**
|
|
54438
|
-
* Generic device-consumables capability —
|
|
54439
|
-
*
|
|
54440
|
-
* descaling cycles,
|
|
54441
|
-
*
|
|
54442
|
-
*
|
|
54443
|
-
*
|
|
54489
|
+
* Generic device-consumables capability — the ONE place a device reports what
|
|
54490
|
+
* it uses up or fills: wear parts (vacuum filters/brushes, cartridges,
|
|
54491
|
+
* descaling cycles), supplies it draws from (a vacuum's clean-water tank and
|
|
54492
|
+
* detergent, a dishwasher's salt and rinse aid) and waste it collects (a dirty
|
|
54493
|
+
* water tank, a dust bin). Each item carries its remaining life or fill and an
|
|
54494
|
+
* optional "Replaced" reset action. Device-agnostic: any provider that knows
|
|
54495
|
+
* its device tracks consumables registers it; the provider names each item
|
|
54496
|
+
* verbatim and says which `kind` it is.
|
|
54497
|
+
*
|
|
54498
|
+
* The admin UI renders it as ONE collapsible section directly under the
|
|
54499
|
+
* device page's hero card (`placement: 'hero'`), for every device bound to
|
|
54500
|
+
* this cap — never drawn by a device type's hero card itself (D915).
|
|
54444
54501
|
*
|
|
54445
54502
|
* Like `childLayout`, the cap is INERT until a provider sets items: no
|
|
54446
54503
|
* provider populates it by guessing (no HA inference). The UI renders a
|
|
54447
54504
|
* "No consumables reported" placeholder when `items` is empty.
|
|
54448
54505
|
*/
|
|
54506
|
+
/**
|
|
54507
|
+
* What an item IS, which decides which direction is bad:
|
|
54508
|
+
* - `wear` — a part that wears out (a brush, a filter); low life is bad.
|
|
54509
|
+
* - `supply` — something the device draws from (clean water, detergent,
|
|
54510
|
+
* salt, rinse aid); low or empty is bad.
|
|
54511
|
+
* - `waste` — something the device fills (dirty water, a dust bin); full is
|
|
54512
|
+
* bad.
|
|
54513
|
+
* Absent = `wear`.
|
|
54514
|
+
*/
|
|
54515
|
+
var ConsumableKindSchema = _enum([
|
|
54516
|
+
"wear",
|
|
54517
|
+
"supply",
|
|
54518
|
+
"waste"
|
|
54519
|
+
]);
|
|
54520
|
+
/**
|
|
54521
|
+
* What an item LOOKS like, which decides how a client draws it — independent
|
|
54522
|
+
* of `kind`, which decides which direction is bad:
|
|
54523
|
+
* - `part` — a part that wears (a brush, a filter, a mop pad): a wear bar,
|
|
54524
|
+
* remaining time and a reset.
|
|
54525
|
+
* - `tank` — a container of liquid (clean water, dirty water): a fill gauge.
|
|
54526
|
+
* - `product` — something bought and refilled (detergent, salt, rinse aid):
|
|
54527
|
+
* a stepped level and "refill".
|
|
54528
|
+
* - `bin` — a container that collects waste (a dust bin): a fill gauge
|
|
54529
|
+
* that warns when full.
|
|
54530
|
+
* Absent = derived from the kind ({@link consumableFormOf}).
|
|
54531
|
+
*/
|
|
54532
|
+
var ConsumableFormSchema = _enum([
|
|
54533
|
+
"part",
|
|
54534
|
+
"tank",
|
|
54535
|
+
"product",
|
|
54536
|
+
"bin"
|
|
54537
|
+
]);
|
|
54538
|
+
/** The provider's own discrete verdict on an item. */
|
|
54539
|
+
var ConsumableStatusSchema = _enum([
|
|
54540
|
+
"ok",
|
|
54541
|
+
"low",
|
|
54542
|
+
"empty",
|
|
54543
|
+
"full",
|
|
54544
|
+
"replace"
|
|
54545
|
+
]);
|
|
54546
|
+
_enum([
|
|
54547
|
+
"ok",
|
|
54548
|
+
"low",
|
|
54549
|
+
"empty",
|
|
54550
|
+
"full"
|
|
54551
|
+
]);
|
|
54449
54552
|
/** Units a remaining-life counter is reported in. Closed: the panel renders
|
|
54450
54553
|
* each. */
|
|
54451
54554
|
var ConsumableRemainingUnitSchema = _enum([
|
|
@@ -54465,10 +54568,14 @@ var ConsumablesStatusSchema = object({
|
|
|
54465
54568
|
key: string().min(1),
|
|
54466
54569
|
/** Display name. */
|
|
54467
54570
|
label: string().min(1),
|
|
54468
|
-
/** Remaining life % when known (0..100). */
|
|
54571
|
+
/** Remaining life % (`wear`) or fill % (`supply`, `waste`) when known (0..100). */
|
|
54469
54572
|
level: number().min(0).max(100).nullable(),
|
|
54470
|
-
/**
|
|
54471
|
-
status:
|
|
54573
|
+
/** The provider's discrete verdict when known (binary mode). */
|
|
54574
|
+
status: ConsumableStatusSchema.nullable(),
|
|
54575
|
+
/** What the item is — decides whether low or full is bad. Absent = `wear`. */
|
|
54576
|
+
kind: ConsumableKindSchema.optional(),
|
|
54577
|
+
/** How the item is drawn (part, tank, product, bin). Absent = derived from `kind`. */
|
|
54578
|
+
form: ConsumableFormSchema.optional(),
|
|
54472
54579
|
/** Ms epoch of the last replace, when known. */
|
|
54473
54580
|
lastResetAt: number().nullable(),
|
|
54474
54581
|
/** Whether `reset()` is meaningful for this item. */
|
|
@@ -54715,8 +54822,9 @@ object({
|
|
|
54715
54822
|
status: DeviceStatusSchema
|
|
54716
54823
|
});
|
|
54717
54824
|
/**
|
|
54718
|
-
* Smart-dishwasher cap — program lifecycle, door / remote-start gates
|
|
54719
|
-
*
|
|
54825
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates and
|
|
54826
|
+
* common program options. Salt and rinse aid are NOT here: they are items of
|
|
54827
|
+
* the device's `consumables` cap, like every other device's (D915).
|
|
54720
54828
|
*
|
|
54721
54829
|
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
54722
54830
|
* by any integration that exposes the same program / option surface.
|
|
@@ -54764,11 +54872,6 @@ var DishwasherAvailabilitySchema = _enum([
|
|
|
54764
54872
|
"offline",
|
|
54765
54873
|
"description-missing"
|
|
54766
54874
|
]);
|
|
54767
|
-
var DishwasherConsumableLevelSchema = _enum([
|
|
54768
|
-
"ok",
|
|
54769
|
-
"low",
|
|
54770
|
-
"empty"
|
|
54771
|
-
]);
|
|
54772
54875
|
object({
|
|
54773
54876
|
availability: DishwasherAvailabilitySchema,
|
|
54774
54877
|
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
@@ -54801,8 +54904,6 @@ object({
|
|
|
54801
54904
|
powerOn: boolean().nullable(),
|
|
54802
54905
|
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
54803
54906
|
powerState: string().nullable(),
|
|
54804
|
-
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
54805
|
-
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
54806
54907
|
/**
|
|
54807
54908
|
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
54808
54909
|
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
@@ -61616,60 +61717,17 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
61616
61717
|
auth: "admin",
|
|
61617
61718
|
access: "delete"
|
|
61618
61719
|
});
|
|
61619
|
-
/**
|
|
61620
|
-
* Robot-vacuum cap. Models HA `vacuum.*` entities — anything with a
|
|
61621
|
-
* cleaning lifecycle plus a return-to-base / locate surface and an
|
|
61622
|
-
* optional fan-speed selector.
|
|
61623
|
-
*
|
|
61624
|
-
* State follows HA's canonical vacuum lifecycle: `idle` / `cleaning` /
|
|
61625
|
-
* `paused` / `returning` / `docked` / `error`. `batteryLevel`
|
|
61626
|
-
* (0..100) is nullable — some vacuums don't report a battery
|
|
61627
|
-
* percentage. `fanSpeed` is the current speed token (provider-verbatim,
|
|
61628
|
-
* e.g. `'standard'` / `'turbo'`) and `availableFanSpeeds` lists the
|
|
61629
|
-
* tokens the hardware accepts so the UI renders only supported choices.
|
|
61630
|
-
*
|
|
61631
|
-
* The `setFanSpeed` method takes the bare `speed` token — the provider
|
|
61632
|
-
* validates it against the vacuum's own list. `locate` triggers the
|
|
61633
|
-
* find-me chirp; `returnToBase` sends it home.
|
|
61634
|
-
*
|
|
61635
|
-
* Consumable / waste tanks: `cleanWater` / `dirtyWater` / `detergent` /
|
|
61636
|
-
* `dustBin` each carry a nullable `{ level (0..100 %), status ('ok' |
|
|
61637
|
-
* 'low' | 'full') }` reading. Native providers (e.g. Dreame, Roborock)
|
|
61638
|
-
* SHOULD populate whichever tanks the hardware has — leave a field `null`
|
|
61639
|
-
* only when the device has no such tank at all, and use a `TankStatus`
|
|
61640
|
-
* with both inner fields `null` when the tank exists but its level is
|
|
61641
|
-
* currently unknown. HA `vacuum.*` entities expose no per-tank telemetry,
|
|
61642
|
-
* so the HA provider leaves all four `null`.
|
|
61643
|
-
*/
|
|
61644
|
-
var VacuumStateSchema = _enum([
|
|
61645
|
-
"idle",
|
|
61646
|
-
"cleaning",
|
|
61647
|
-
"paused",
|
|
61648
|
-
"returning",
|
|
61649
|
-
"docked",
|
|
61650
|
-
"drying",
|
|
61651
|
-
"error"
|
|
61652
|
-
]);
|
|
61653
|
-
/**
|
|
61654
|
-
* One consumable / waste tank on a robot vacuum (clean-water, dirty-water,
|
|
61655
|
-
* detergent or dust-bin). A tank can report a numeric fill `level` (0..100),
|
|
61656
|
-
* a discrete `status` (binary-style hardware), or both. Both `null` means the
|
|
61657
|
-
* level is currently unknown; the OWNING field being `null` means the
|
|
61658
|
-
* hardware has no such tank at all.
|
|
61659
|
-
*/
|
|
61660
|
-
var TankStatusSchema = object({
|
|
61661
|
-
/** Numeric fill 0..100 when the hardware reports a percentage; null otherwise. */
|
|
61662
|
-
level: number().min(0).max(100).nullable(),
|
|
61663
|
-
/** Discrete state when the hardware is binary-mode; null otherwise. */
|
|
61664
|
-
status: _enum([
|
|
61665
|
-
"ok",
|
|
61666
|
-
"low",
|
|
61667
|
-
"full"
|
|
61668
|
-
]).nullable()
|
|
61669
|
-
});
|
|
61670
61720
|
object({
|
|
61671
61721
|
/** Lifecycle state of the vacuum. */
|
|
61672
|
-
state:
|
|
61722
|
+
state: _enum([
|
|
61723
|
+
"idle",
|
|
61724
|
+
"cleaning",
|
|
61725
|
+
"paused",
|
|
61726
|
+
"returning",
|
|
61727
|
+
"docked",
|
|
61728
|
+
"drying",
|
|
61729
|
+
"error"
|
|
61730
|
+
]),
|
|
61673
61731
|
/** 0..100 battery percentage. Null when the device has no battery
|
|
61674
61732
|
* reading. */
|
|
61675
61733
|
batteryLevel: number().min(0).max(100).nullable(),
|
|
@@ -61678,14 +61736,6 @@ object({
|
|
|
61678
61736
|
fanSpeed: string().nullable(),
|
|
61679
61737
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
61680
61738
|
availableFanSpeeds: array(string()),
|
|
61681
|
-
/** Clean-water (mop) tank. Null when the hardware has no clean-water tank. */
|
|
61682
|
-
cleanWater: TankStatusSchema.nullable(),
|
|
61683
|
-
/** Dirty-water (recovery) tank. Null when the hardware has no dirty-water tank. */
|
|
61684
|
-
dirtyWater: TankStatusSchema.nullable(),
|
|
61685
|
-
/** Detergent tank. Null when the hardware has no detergent tank. */
|
|
61686
|
-
detergent: TankStatusSchema.nullable(),
|
|
61687
|
-
/** Dust bin. Null when the hardware has no dust bin. */
|
|
61688
|
-
dustBin: TankStatusSchema.nullable(),
|
|
61689
61739
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
61690
61740
|
progressPercent: number().min(0).max(100).nullable(),
|
|
61691
61741
|
/** Current error code (0 / null = no error). */
|
|
@@ -64226,6 +64276,12 @@ Object.freeze({
|
|
|
64226
64276
|
addonId: null,
|
|
64227
64277
|
access: "create"
|
|
64228
64278
|
},
|
|
64279
|
+
"deviceHistory.deleteOrphanSeries": {
|
|
64280
|
+
capName: "device-history",
|
|
64281
|
+
capScope: "system",
|
|
64282
|
+
addonId: null,
|
|
64283
|
+
access: "delete"
|
|
64284
|
+
},
|
|
64229
64285
|
"deviceHistory.getDeviceEnabled": {
|
|
64230
64286
|
capName: "device-history",
|
|
64231
64287
|
capScope: "system",
|
|
@@ -64244,6 +64300,12 @@ Object.freeze({
|
|
|
64244
64300
|
addonId: null,
|
|
64245
64301
|
access: "view"
|
|
64246
64302
|
},
|
|
64303
|
+
"deviceHistory.listOrphanSeries": {
|
|
64304
|
+
capName: "device-history",
|
|
64305
|
+
capScope: "system",
|
|
64306
|
+
addonId: null,
|
|
64307
|
+
access: "view"
|
|
64308
|
+
},
|
|
64247
64309
|
"deviceHistory.listSeries": {
|
|
64248
64310
|
capName: "device-history",
|
|
64249
64311
|
capScope: "system",
|
|
@@ -74249,7 +74311,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
74249
74311
|
([...RULE_TEXT], [...COMBINED_ALARM]),
|
|
74250
74312
|
([...RULE_TEXT], [...DEVICE_EVENTS]),
|
|
74251
74313
|
([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
|
|
74252
|
-
([...RULE_TEXT], [...CONSUMABLE]),
|
|
74314
|
+
([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
|
|
74253
74315
|
([...RULE_TEXT], [...TANK]),
|
|
74254
74316
|
[...RULE_TEXT],
|
|
74255
74317
|
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-export-alexa",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.163",
|
|
4
4
|
"description": "Alexa Smart Home Skill export — hub-side OAuth provider + directive handler. The companion AWS Lambda forwards Alexa directives to this addon's /addon/export-alexa/directive endpoint.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|