@camstack/addon-provider-velux 0.2.143 → 0.2.145
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +255 -120
- package/dist/addon.mjs +255 -120
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -5431,7 +5431,7 @@ var ZodIssueCode = {
|
|
|
5431
5431
|
var ZodFirstPartyTypeKind;
|
|
5432
5432
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5433
5433
|
//#endregion
|
|
5434
|
-
//#region ../types/dist/sleep-
|
|
5434
|
+
//#region ../types/dist/sleep-CUp20JkO.mjs
|
|
5435
5435
|
/**
|
|
5436
5436
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5437
5437
|
* window to float samples (D455).
|
|
@@ -8323,7 +8323,11 @@ var ContributionSectionSchema = object({
|
|
|
8323
8323
|
literal(4)
|
|
8324
8324
|
]).optional(),
|
|
8325
8325
|
tab: string().optional(),
|
|
8326
|
-
location: _enum([
|
|
8326
|
+
location: _enum([
|
|
8327
|
+
"settings",
|
|
8328
|
+
"top-tab",
|
|
8329
|
+
"hero"
|
|
8330
|
+
]).optional(),
|
|
8327
8331
|
order: number().optional(),
|
|
8328
8332
|
fields: array(any())
|
|
8329
8333
|
});
|
|
@@ -13270,7 +13274,11 @@ var ConfigSectionWithValuesSchema = object({
|
|
|
13270
13274
|
literal(4)
|
|
13271
13275
|
]).optional(),
|
|
13272
13276
|
tab: string().optional(),
|
|
13273
|
-
location: _enum([
|
|
13277
|
+
location: _enum([
|
|
13278
|
+
"settings",
|
|
13279
|
+
"top-tab",
|
|
13280
|
+
"hero"
|
|
13281
|
+
]).optional(),
|
|
13274
13282
|
order: number().optional(),
|
|
13275
13283
|
fields: array(any())
|
|
13276
13284
|
});
|
|
@@ -17150,6 +17158,52 @@ var TierStatusSchema = object({
|
|
|
17150
17158
|
countedAt: number().nullable()
|
|
17151
17159
|
});
|
|
17152
17160
|
/** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
|
|
17161
|
+
/**
|
|
17162
|
+
* Why a series is orphan. `device-gone`: its device is absent from the
|
|
17163
|
+
* successful device listings (the departure clock). `undeclared`: its `cap:`
|
|
17164
|
+
* key is declared by no capability any more (a field a cap removed).
|
|
17165
|
+
*/
|
|
17166
|
+
var DeviceHistoryOrphanReasonSchema = _enum(["device-gone", "undeclared"]);
|
|
17167
|
+
/** Rows held per stored tier. */
|
|
17168
|
+
var TierRowsSchema = object({
|
|
17169
|
+
raw: number().int(),
|
|
17170
|
+
"5m": number().int(),
|
|
17171
|
+
"1h": number().int(),
|
|
17172
|
+
"1d": number().int()
|
|
17173
|
+
});
|
|
17174
|
+
var OrphanSeriesSchema = object({
|
|
17175
|
+
seriesId: number().int(),
|
|
17176
|
+
deviceId: number().int(),
|
|
17177
|
+
key: string(),
|
|
17178
|
+
scope: string(),
|
|
17179
|
+
/** The metric's display name; `null` when its metric row is gone too. */
|
|
17180
|
+
displayName: string().nullable(),
|
|
17181
|
+
reason: DeviceHistoryOrphanReasonSchema,
|
|
17182
|
+
/** `device-gone`: since when the device has been absent; `null` otherwise. */
|
|
17183
|
+
missingSince: number().nullable(),
|
|
17184
|
+
firstTs: number(),
|
|
17185
|
+
lastTs: number(),
|
|
17186
|
+
rows: TierRowsSchema
|
|
17187
|
+
});
|
|
17188
|
+
var DeviceHistoryOrphanDeleteRefusalSchema = _enum([
|
|
17189
|
+
"not-found",
|
|
17190
|
+
"not-orphan",
|
|
17191
|
+
"failed"
|
|
17192
|
+
]);
|
|
17193
|
+
var OrphanDeleteEntrySchema = discriminatedUnion("ok", [object({
|
|
17194
|
+
seriesId: number().int(),
|
|
17195
|
+
ok: literal(true),
|
|
17196
|
+
deleted: TierRowsSchema
|
|
17197
|
+
}), object({
|
|
17198
|
+
seriesId: number().int(),
|
|
17199
|
+
ok: literal(false),
|
|
17200
|
+
reason: DeviceHistoryOrphanDeleteRefusalSchema
|
|
17201
|
+
})]);
|
|
17202
|
+
var OrphanListSchema = object({
|
|
17203
|
+
series: array(OrphanSeriesSchema).readonly(),
|
|
17204
|
+
/** More orphans exist than {@link DEVICE_HISTORY_ORPHAN_LIST_MAX}. */
|
|
17205
|
+
truncated: boolean()
|
|
17206
|
+
});
|
|
17153
17207
|
var DeviceHistoryStatusSchema = object({
|
|
17154
17208
|
startedAt: number(),
|
|
17155
17209
|
/** The store is declared, series loaded and the first reconcile has answered. */
|
|
@@ -17247,7 +17301,10 @@ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly())
|
|
|
17247
17301
|
}), object({ enabled: boolean() }), {
|
|
17248
17302
|
kind: "mutation",
|
|
17249
17303
|
auth: "admin"
|
|
17250
|
-
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" })
|
|
17304
|
+
}), 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() }), {
|
|
17305
|
+
kind: "mutation",
|
|
17306
|
+
auth: "admin"
|
|
17307
|
+
});
|
|
17251
17308
|
var DeviceCaStatusSchema = discriminatedUnion("state", [
|
|
17252
17309
|
object({ state: literal("absent") }),
|
|
17253
17310
|
object({
|
|
@@ -50314,6 +50371,19 @@ var NodeInferenceDeviceSchema = object({
|
|
|
50314
50371
|
/** Whether the node's live probe reports the device as usable right now. */
|
|
50315
50372
|
available: boolean(),
|
|
50316
50373
|
/**
|
|
50374
|
+
* Is the device on the node at all (D919)? `present` — the live probe
|
|
50375
|
+
* reported it; `absent` — the probe ANSWERED and did not report it, so only
|
|
50376
|
+
* its stored settings remain (unplugged, moved to another node): never
|
|
50377
|
+
* eligible, whatever its stored `enabled`, and forgettable with
|
|
50378
|
+
* `forgetInferenceDevice`; `unknown` — the probe did not answer, nothing is
|
|
50379
|
+
* claimed (D315). Optional only for an orchestrator older than the field.
|
|
50380
|
+
*/
|
|
50381
|
+
presence: _enum([
|
|
50382
|
+
"present",
|
|
50383
|
+
"absent",
|
|
50384
|
+
"unknown"
|
|
50385
|
+
]).optional(),
|
|
50386
|
+
/**
|
|
50317
50387
|
* Whether this device participates in dispatch. AUTO default (spec C2):
|
|
50318
50388
|
* accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
|
|
50319
50389
|
* entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
|
|
@@ -50539,7 +50609,13 @@ method(object({
|
|
|
50539
50609
|
}), object({ success: literal(true) }), {
|
|
50540
50610
|
kind: "mutation",
|
|
50541
50611
|
auth: "admin"
|
|
50542
|
-
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50612
|
+
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50613
|
+
agentNodeId: string(),
|
|
50614
|
+
deviceKey: string()
|
|
50615
|
+
}), object({ success: literal(true) }), {
|
|
50616
|
+
kind: "mutation",
|
|
50617
|
+
auth: "admin"
|
|
50618
|
+
}), method(object({ agentNodeId: string() }), object({
|
|
50543
50619
|
success: literal(true),
|
|
50544
50620
|
/** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
|
|
50545
50621
|
effectiveModelId: string().nullable(),
|
|
@@ -55203,17 +55279,69 @@ var connectivityCapability = {
|
|
|
55203
55279
|
volatileStateFields: ["lastChangedAt"]
|
|
55204
55280
|
};
|
|
55205
55281
|
/**
|
|
55206
|
-
* Generic device-consumables capability —
|
|
55207
|
-
*
|
|
55208
|
-
* descaling cycles,
|
|
55209
|
-
*
|
|
55210
|
-
*
|
|
55211
|
-
*
|
|
55282
|
+
* Generic device-consumables capability — the ONE place a device reports what
|
|
55283
|
+
* it uses up or fills: wear parts (vacuum filters/brushes, cartridges,
|
|
55284
|
+
* descaling cycles), supplies it draws from (a vacuum's clean-water tank and
|
|
55285
|
+
* detergent, a dishwasher's salt and rinse aid) and waste it collects (a dirty
|
|
55286
|
+
* water tank, a dust bin). Each item carries its remaining life or fill and an
|
|
55287
|
+
* optional "Replaced" reset action. Device-agnostic: any provider that knows
|
|
55288
|
+
* its device tracks consumables registers it; the provider names each item
|
|
55289
|
+
* verbatim and says which `kind` it is.
|
|
55290
|
+
*
|
|
55291
|
+
* The admin UI renders it as ONE collapsible section directly under the
|
|
55292
|
+
* device page's hero card (`placement: 'hero'`), for every device bound to
|
|
55293
|
+
* this cap — never drawn by a device type's hero card itself (D915).
|
|
55212
55294
|
*
|
|
55213
55295
|
* Like `childLayout`, the cap is INERT until a provider sets items: no
|
|
55214
55296
|
* provider populates it by guessing (no HA inference). The UI renders a
|
|
55215
55297
|
* "No consumables reported" placeholder when `items` is empty.
|
|
55216
55298
|
*/
|
|
55299
|
+
/**
|
|
55300
|
+
* What an item IS, which decides which direction is bad:
|
|
55301
|
+
* - `wear` — a part that wears out (a brush, a filter); low life is bad.
|
|
55302
|
+
* - `supply` — something the device draws from (clean water, detergent,
|
|
55303
|
+
* salt, rinse aid); low or empty is bad.
|
|
55304
|
+
* - `waste` — something the device fills (dirty water, a dust bin); full is
|
|
55305
|
+
* bad.
|
|
55306
|
+
* Absent = `wear`.
|
|
55307
|
+
*/
|
|
55308
|
+
var ConsumableKindSchema = _enum([
|
|
55309
|
+
"wear",
|
|
55310
|
+
"supply",
|
|
55311
|
+
"waste"
|
|
55312
|
+
]);
|
|
55313
|
+
/**
|
|
55314
|
+
* What an item LOOKS like, which decides how a client draws it — independent
|
|
55315
|
+
* of `kind`, which decides which direction is bad:
|
|
55316
|
+
* - `part` — a part that wears (a brush, a filter, a mop pad): a wear bar,
|
|
55317
|
+
* remaining time and a reset.
|
|
55318
|
+
* - `tank` — a container of liquid (clean water, dirty water): a fill gauge.
|
|
55319
|
+
* - `product` — something bought and refilled (detergent, salt, rinse aid):
|
|
55320
|
+
* a stepped level and "refill".
|
|
55321
|
+
* - `bin` — a container that collects waste (a dust bin): a fill gauge
|
|
55322
|
+
* that warns when full.
|
|
55323
|
+
* Absent = derived from the kind ({@link consumableFormOf}).
|
|
55324
|
+
*/
|
|
55325
|
+
var ConsumableFormSchema = _enum([
|
|
55326
|
+
"part",
|
|
55327
|
+
"tank",
|
|
55328
|
+
"product",
|
|
55329
|
+
"bin"
|
|
55330
|
+
]);
|
|
55331
|
+
/** The provider's own discrete verdict on an item. */
|
|
55332
|
+
var ConsumableStatusSchema = _enum([
|
|
55333
|
+
"ok",
|
|
55334
|
+
"low",
|
|
55335
|
+
"empty",
|
|
55336
|
+
"full",
|
|
55337
|
+
"replace"
|
|
55338
|
+
]);
|
|
55339
|
+
_enum([
|
|
55340
|
+
"ok",
|
|
55341
|
+
"low",
|
|
55342
|
+
"empty",
|
|
55343
|
+
"full"
|
|
55344
|
+
]);
|
|
55217
55345
|
/** Units a remaining-life counter is reported in. Closed: the panel renders
|
|
55218
55346
|
* each. */
|
|
55219
55347
|
var ConsumableRemainingUnitSchema = _enum([
|
|
@@ -55228,18 +55356,23 @@ var ConsumableRemainingSchema = object({
|
|
|
55228
55356
|
unit: ConsumableRemainingUnitSchema
|
|
55229
55357
|
});
|
|
55230
55358
|
/** A single consumable item. Either a continuous `level` (remaining
|
|
55231
|
-
* life
|
|
55232
|
-
*
|
|
55233
|
-
* mutually exclusive; a provider may
|
|
55359
|
+
* life %, or fill % for a `supply` / `waste` item) or a discrete `status`
|
|
55360
|
+
* may be known — both may be null when a provider only knows the item
|
|
55361
|
+
* exists. `level` and `status` are not mutually exclusive; a provider may
|
|
55362
|
+
* report both. */
|
|
55234
55363
|
var ConsumableItemSchema = object({
|
|
55235
55364
|
/** Stable id, e.g. 'main-brush'. */
|
|
55236
55365
|
key: string().min(1),
|
|
55237
55366
|
/** Display name. */
|
|
55238
55367
|
label: string().min(1),
|
|
55239
|
-
/** Remaining life % when known (0..100). */
|
|
55368
|
+
/** Remaining life % (`wear`) or fill % (`supply`, `waste`) when known (0..100). */
|
|
55240
55369
|
level: number().min(0).max(100).nullable(),
|
|
55241
|
-
/**
|
|
55242
|
-
status:
|
|
55370
|
+
/** The provider's discrete verdict when known (binary mode). */
|
|
55371
|
+
status: ConsumableStatusSchema.nullable(),
|
|
55372
|
+
/** What the item is — decides whether low or full is bad. Absent = `wear`. */
|
|
55373
|
+
kind: ConsumableKindSchema.optional(),
|
|
55374
|
+
/** How the item is drawn (part, tank, product, bin). Absent = derived from `kind`. */
|
|
55375
|
+
form: ConsumableFormSchema.optional(),
|
|
55243
55376
|
/** Ms epoch of the last replace, when known. */
|
|
55244
55377
|
lastResetAt: number().nullable(),
|
|
55245
55378
|
/** Whether `reset()` is meaningful for this item. */
|
|
@@ -55262,7 +55395,7 @@ var consumablesCapability = {
|
|
|
55262
55395
|
kind: "widget",
|
|
55263
55396
|
widgetId: "host/consumables-panel",
|
|
55264
55397
|
tab: "consumables",
|
|
55265
|
-
|
|
55398
|
+
placement: "hero",
|
|
55266
55399
|
label: "Consumables",
|
|
55267
55400
|
order: 5
|
|
55268
55401
|
} },
|
|
@@ -55323,9 +55456,37 @@ reset: method(object({
|
|
|
55323
55456
|
*/
|
|
55324
55457
|
durability: "restored",
|
|
55325
55458
|
/**
|
|
55326
|
-
* History (D850):
|
|
55459
|
+
* History (D850, D917): one series per (item field, item `key`) — the item key
|
|
55460
|
+
* is the series scope, the item `label` names it. A vacuum tank's fill, a
|
|
55461
|
+
* brush's remaining life and a dishwasher's salt are each recorded the moment
|
|
55462
|
+
* their provider reports them; an item that appears later gets its series.
|
|
55327
55463
|
*/
|
|
55328
|
-
history:
|
|
55464
|
+
history: {
|
|
55465
|
+
fields: {},
|
|
55466
|
+
items: {
|
|
55467
|
+
path: "items",
|
|
55468
|
+
key: "key",
|
|
55469
|
+
label: "label",
|
|
55470
|
+
fields: {
|
|
55471
|
+
level: {
|
|
55472
|
+
kind: "gauge",
|
|
55473
|
+
unit: "%",
|
|
55474
|
+
deadband: 2,
|
|
55475
|
+
displayName: "Level"
|
|
55476
|
+
},
|
|
55477
|
+
status: {
|
|
55478
|
+
kind: "enum",
|
|
55479
|
+
displayName: "Status"
|
|
55480
|
+
},
|
|
55481
|
+
"remaining.value": {
|
|
55482
|
+
kind: "gauge",
|
|
55483
|
+
unitFrom: "remaining.unit",
|
|
55484
|
+
deadband: 1,
|
|
55485
|
+
displayName: "Remaining"
|
|
55486
|
+
}
|
|
55487
|
+
}
|
|
55488
|
+
}
|
|
55489
|
+
},
|
|
55329
55490
|
/** Clocks, not content: a re-read that changed no item costs no commit. */
|
|
55330
55491
|
volatileStateFields: ["lastChangedAt", "lastFetchedAt"]
|
|
55331
55492
|
};
|
|
@@ -55740,8 +55901,9 @@ onStatusChanged: { data: object({
|
|
|
55740
55901
|
volatileStateFields: ["lastChangedAt"]
|
|
55741
55902
|
};
|
|
55742
55903
|
/**
|
|
55743
|
-
* Smart-dishwasher cap — program lifecycle, door / remote-start gates
|
|
55744
|
-
*
|
|
55904
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates and
|
|
55905
|
+
* common program options. Salt and rinse aid are NOT here: they are items of
|
|
55906
|
+
* the device's `consumables` cap, like every other device's (D915).
|
|
55745
55907
|
*
|
|
55746
55908
|
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
55747
55909
|
* by any integration that exposes the same program / option surface.
|
|
@@ -55789,11 +55951,6 @@ var DishwasherAvailabilitySchema = _enum([
|
|
|
55789
55951
|
"offline",
|
|
55790
55952
|
"description-missing"
|
|
55791
55953
|
]);
|
|
55792
|
-
var DishwasherConsumableLevelSchema = _enum([
|
|
55793
|
-
"ok",
|
|
55794
|
-
"low",
|
|
55795
|
-
"empty"
|
|
55796
|
-
]);
|
|
55797
55954
|
var DishwasherStatusSchema = object({
|
|
55798
55955
|
availability: DishwasherAvailabilitySchema,
|
|
55799
55956
|
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
@@ -55826,8 +55983,6 @@ var DishwasherStatusSchema = object({
|
|
|
55826
55983
|
powerOn: boolean().nullable(),
|
|
55827
55984
|
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
55828
55985
|
powerState: string().nullable(),
|
|
55829
|
-
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55830
|
-
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55831
55986
|
/**
|
|
55832
55987
|
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
55833
55988
|
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
@@ -58703,7 +58858,7 @@ var motionTriggerCapability = {
|
|
|
58703
58858
|
enabled: boolean()
|
|
58704
58859
|
}), _void(), {
|
|
58705
58860
|
kind: "mutation",
|
|
58706
|
-
auth: "
|
|
58861
|
+
auth: "protected"
|
|
58707
58862
|
}) },
|
|
58708
58863
|
events: { onMotionTriggerChanged: { data: object({
|
|
58709
58864
|
deviceId: number(),
|
|
@@ -59433,6 +59588,13 @@ var TopologyNodeSchema = object({
|
|
|
59433
59588
|
cpuModel: string().nullable(),
|
|
59434
59589
|
cpuCores: number(),
|
|
59435
59590
|
memoryMB: number(),
|
|
59591
|
+
/**
|
|
59592
|
+
* The inference RUNTIMES installed on the node (`pythonRuntimes`: onnx,
|
|
59593
|
+
* openvino, edgetpu …) — not its devices. An installed runtime says nothing
|
|
59594
|
+
* about whether its hardware is there (a Coral delegate stays installed
|
|
59595
|
+
* after the stick leaves, D919); the live device set is
|
|
59596
|
+
* `pipelineOrchestrator.getNodeInferenceDevices`.
|
|
59597
|
+
*/
|
|
59436
59598
|
engines: array(string()).readonly(),
|
|
59437
59599
|
isHub: boolean(),
|
|
59438
59600
|
isOnline: boolean(),
|
|
@@ -60550,7 +60712,28 @@ var ResolvedInferenceConfigSchema = object({
|
|
|
60550
60712
|
format: ModelFormatSchema,
|
|
60551
60713
|
reason: string()
|
|
60552
60714
|
});
|
|
60553
|
-
|
|
60715
|
+
/**
|
|
60716
|
+
* The answer of an accelerator rescan (D919): the node's device list after
|
|
60717
|
+
* the re-probe, what changed, and the evidence that decided the Coral answer
|
|
60718
|
+
* (`usbBus` — could the USB bus be read at all; `decidedBy` — USB ids, the PCI
|
|
60719
|
+
* bus, the installed-delegate fallback, or nothing).
|
|
60720
|
+
*/
|
|
60721
|
+
var AcceleratorRescanSchema = object({
|
|
60722
|
+
devices: array(InferenceDeviceDescriptorSchema).readonly(),
|
|
60723
|
+
appeared: array(string()).readonly(),
|
|
60724
|
+
disappeared: array(string()).readonly(),
|
|
60725
|
+
usbBus: _enum(["observed", "unobservable"]),
|
|
60726
|
+
decidedBy: _enum([
|
|
60727
|
+
"usb-ids",
|
|
60728
|
+
"pci",
|
|
60729
|
+
"delegate-fallback",
|
|
60730
|
+
"none"
|
|
60731
|
+
])
|
|
60732
|
+
});
|
|
60733
|
+
method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema), method(object({ requirements: array(ModelRequirementSchema).readonly() }), ResolvedInferenceConfigSchema), method(object({ prefer: HwAccelBackendInputSchema }), HwAccelResolutionSchema), method(_void(), AcceleratorRescanSchema, {
|
|
60734
|
+
kind: "mutation",
|
|
60735
|
+
auth: "admin"
|
|
60736
|
+
});
|
|
60554
60737
|
/**
|
|
60555
60738
|
* Multi-metric electrical meter. One slice can carry any combination
|
|
60556
60739
|
* of instantaneous power (W), cumulative energy (kWh), voltage (V),
|
|
@@ -64643,60 +64826,17 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
64643
64826
|
auth: "admin",
|
|
64644
64827
|
access: "delete"
|
|
64645
64828
|
});
|
|
64646
|
-
/**
|
|
64647
|
-
* Robot-vacuum cap. Models HA `vacuum.*` entities — anything with a
|
|
64648
|
-
* cleaning lifecycle plus a return-to-base / locate surface and an
|
|
64649
|
-
* optional fan-speed selector.
|
|
64650
|
-
*
|
|
64651
|
-
* State follows HA's canonical vacuum lifecycle: `idle` / `cleaning` /
|
|
64652
|
-
* `paused` / `returning` / `docked` / `error`. `batteryLevel`
|
|
64653
|
-
* (0..100) is nullable — some vacuums don't report a battery
|
|
64654
|
-
* percentage. `fanSpeed` is the current speed token (provider-verbatim,
|
|
64655
|
-
* e.g. `'standard'` / `'turbo'`) and `availableFanSpeeds` lists the
|
|
64656
|
-
* tokens the hardware accepts so the UI renders only supported choices.
|
|
64657
|
-
*
|
|
64658
|
-
* The `setFanSpeed` method takes the bare `speed` token — the provider
|
|
64659
|
-
* validates it against the vacuum's own list. `locate` triggers the
|
|
64660
|
-
* find-me chirp; `returnToBase` sends it home.
|
|
64661
|
-
*
|
|
64662
|
-
* Consumable / waste tanks: `cleanWater` / `dirtyWater` / `detergent` /
|
|
64663
|
-
* `dustBin` each carry a nullable `{ level (0..100 %), status ('ok' |
|
|
64664
|
-
* 'low' | 'full') }` reading. Native providers (e.g. Dreame, Roborock)
|
|
64665
|
-
* SHOULD populate whichever tanks the hardware has — leave a field `null`
|
|
64666
|
-
* only when the device has no such tank at all, and use a `TankStatus`
|
|
64667
|
-
* with both inner fields `null` when the tank exists but its level is
|
|
64668
|
-
* currently unknown. HA `vacuum.*` entities expose no per-tank telemetry,
|
|
64669
|
-
* so the HA provider leaves all four `null`.
|
|
64670
|
-
*/
|
|
64671
|
-
var VacuumStateSchema = _enum([
|
|
64672
|
-
"idle",
|
|
64673
|
-
"cleaning",
|
|
64674
|
-
"paused",
|
|
64675
|
-
"returning",
|
|
64676
|
-
"docked",
|
|
64677
|
-
"drying",
|
|
64678
|
-
"error"
|
|
64679
|
-
]);
|
|
64680
|
-
/**
|
|
64681
|
-
* One consumable / waste tank on a robot vacuum (clean-water, dirty-water,
|
|
64682
|
-
* detergent or dust-bin). A tank can report a numeric fill `level` (0..100),
|
|
64683
|
-
* a discrete `status` (binary-style hardware), or both. Both `null` means the
|
|
64684
|
-
* level is currently unknown; the OWNING field being `null` means the
|
|
64685
|
-
* hardware has no such tank at all.
|
|
64686
|
-
*/
|
|
64687
|
-
var TankStatusSchema = object({
|
|
64688
|
-
/** Numeric fill 0..100 when the hardware reports a percentage; null otherwise. */
|
|
64689
|
-
level: number().min(0).max(100).nullable(),
|
|
64690
|
-
/** Discrete state when the hardware is binary-mode; null otherwise. */
|
|
64691
|
-
status: _enum([
|
|
64692
|
-
"ok",
|
|
64693
|
-
"low",
|
|
64694
|
-
"full"
|
|
64695
|
-
]).nullable()
|
|
64696
|
-
});
|
|
64697
64829
|
var VacuumControlStatusSchema = object({
|
|
64698
64830
|
/** Lifecycle state of the vacuum. */
|
|
64699
|
-
state:
|
|
64831
|
+
state: _enum([
|
|
64832
|
+
"idle",
|
|
64833
|
+
"cleaning",
|
|
64834
|
+
"paused",
|
|
64835
|
+
"returning",
|
|
64836
|
+
"docked",
|
|
64837
|
+
"drying",
|
|
64838
|
+
"error"
|
|
64839
|
+
]),
|
|
64700
64840
|
/** 0..100 battery percentage. Null when the device has no battery
|
|
64701
64841
|
* reading. */
|
|
64702
64842
|
batteryLevel: number().min(0).max(100).nullable(),
|
|
@@ -64705,14 +64845,6 @@ var VacuumControlStatusSchema = object({
|
|
|
64705
64845
|
fanSpeed: string().nullable(),
|
|
64706
64846
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
64707
64847
|
availableFanSpeeds: array(string()),
|
|
64708
|
-
/** Clean-water (mop) tank. Null when the hardware has no clean-water tank. */
|
|
64709
|
-
cleanWater: TankStatusSchema.nullable(),
|
|
64710
|
-
/** Dirty-water (recovery) tank. Null when the hardware has no dirty-water tank. */
|
|
64711
|
-
dirtyWater: TankStatusSchema.nullable(),
|
|
64712
|
-
/** Detergent tank. Null when the hardware has no detergent tank. */
|
|
64713
|
-
detergent: TankStatusSchema.nullable(),
|
|
64714
|
-
/** Dust bin. Null when the hardware has no dust bin. */
|
|
64715
|
-
dustBin: TankStatusSchema.nullable(),
|
|
64716
64848
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
64717
64849
|
progressPercent: number().min(0).max(100).nullable(),
|
|
64718
64850
|
/** Current error code (0 / null = no error). */
|
|
@@ -64774,35 +64906,14 @@ var vacuumControlCapability = {
|
|
|
64774
64906
|
*/
|
|
64775
64907
|
durability: "session",
|
|
64776
64908
|
/**
|
|
64777
|
-
* History (D850): recorded series.
|
|
64909
|
+
* History (D850): recorded series. The tanks moved to `consumables` (D915), whose
|
|
64910
|
+
* items are keyed by runtime ids and record no history.
|
|
64778
64911
|
*/
|
|
64779
|
-
history: { fields: {
|
|
64780
|
-
|
|
64781
|
-
|
|
64782
|
-
|
|
64783
|
-
|
|
64784
|
-
},
|
|
64785
|
-
"cleanWater.level": {
|
|
64786
|
-
kind: "gauge",
|
|
64787
|
-
unit: "%",
|
|
64788
|
-
deadband: 2
|
|
64789
|
-
},
|
|
64790
|
-
"dirtyWater.level": {
|
|
64791
|
-
kind: "gauge",
|
|
64792
|
-
unit: "%",
|
|
64793
|
-
deadband: 2
|
|
64794
|
-
},
|
|
64795
|
-
"detergent.level": {
|
|
64796
|
-
kind: "gauge",
|
|
64797
|
-
unit: "%",
|
|
64798
|
-
deadband: 2
|
|
64799
|
-
},
|
|
64800
|
-
"dustBin.level": {
|
|
64801
|
-
kind: "gauge",
|
|
64802
|
-
unit: "%",
|
|
64803
|
-
deadband: 2
|
|
64804
|
-
}
|
|
64805
|
-
} }
|
|
64912
|
+
history: { fields: { batteryLevel: {
|
|
64913
|
+
kind: "gauge",
|
|
64914
|
+
unit: "%",
|
|
64915
|
+
deadband: 2
|
|
64916
|
+
} } }
|
|
64806
64917
|
};
|
|
64807
64918
|
var ValveStatusSchema = object({
|
|
64808
64919
|
/** Lifecycle state of the valve. */
|
|
@@ -69196,6 +69307,12 @@ Object.freeze({
|
|
|
69196
69307
|
addonId: null,
|
|
69197
69308
|
access: "create"
|
|
69198
69309
|
},
|
|
69310
|
+
"deviceHistory.deleteOrphanSeries": {
|
|
69311
|
+
capName: "device-history",
|
|
69312
|
+
capScope: "system",
|
|
69313
|
+
addonId: null,
|
|
69314
|
+
access: "delete"
|
|
69315
|
+
},
|
|
69199
69316
|
"deviceHistory.getDeviceEnabled": {
|
|
69200
69317
|
capName: "device-history",
|
|
69201
69318
|
capScope: "system",
|
|
@@ -69214,6 +69331,12 @@ Object.freeze({
|
|
|
69214
69331
|
addonId: null,
|
|
69215
69332
|
access: "view"
|
|
69216
69333
|
},
|
|
69334
|
+
"deviceHistory.listOrphanSeries": {
|
|
69335
|
+
capName: "device-history",
|
|
69336
|
+
capScope: "system",
|
|
69337
|
+
addonId: null,
|
|
69338
|
+
access: "view"
|
|
69339
|
+
},
|
|
69217
69340
|
"deviceHistory.listSeries": {
|
|
69218
69341
|
capName: "device-history",
|
|
69219
69342
|
capScope: "system",
|
|
@@ -72838,6 +72961,12 @@ Object.freeze({
|
|
|
72838
72961
|
addonId: null,
|
|
72839
72962
|
access: "delete"
|
|
72840
72963
|
},
|
|
72964
|
+
"pipelineOrchestrator.forgetInferenceDevice": {
|
|
72965
|
+
capName: "pipeline-orchestrator",
|
|
72966
|
+
capScope: "system",
|
|
72967
|
+
addonId: null,
|
|
72968
|
+
access: "delete"
|
|
72969
|
+
},
|
|
72841
72970
|
"pipelineOrchestrator.getAgentLoad": {
|
|
72842
72971
|
capName: "pipeline-orchestrator",
|
|
72843
72972
|
capScope: "system",
|
|
@@ -73414,6 +73543,12 @@ Object.freeze({
|
|
|
73414
73543
|
addonId: null,
|
|
73415
73544
|
access: "view"
|
|
73416
73545
|
},
|
|
73546
|
+
"platformProbe.rescanAccelerators": {
|
|
73547
|
+
capName: "platform-probe",
|
|
73548
|
+
capScope: "system",
|
|
73549
|
+
addonId: null,
|
|
73550
|
+
access: "create"
|
|
73551
|
+
},
|
|
73417
73552
|
"platformProbe.resolveHwAccel": {
|
|
73418
73553
|
capName: "platform-probe",
|
|
73419
73554
|
capScope: "system",
|
|
@@ -79219,7 +79354,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
79219
79354
|
([...RULE_TEXT], [...COMBINED_ALARM]),
|
|
79220
79355
|
([...RULE_TEXT], [...DEVICE_EVENTS]),
|
|
79221
79356
|
([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
|
|
79222
|
-
([...RULE_TEXT], [...CONSUMABLE]),
|
|
79357
|
+
([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
|
|
79223
79358
|
([...RULE_TEXT], [...TANK]),
|
|
79224
79359
|
[...RULE_TEXT],
|
|
79225
79360
|
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
package/dist/addon.mjs
CHANGED
|
@@ -5430,7 +5430,7 @@ var ZodIssueCode = {
|
|
|
5430
5430
|
var ZodFirstPartyTypeKind;
|
|
5431
5431
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5432
5432
|
//#endregion
|
|
5433
|
-
//#region ../types/dist/sleep-
|
|
5433
|
+
//#region ../types/dist/sleep-CUp20JkO.mjs
|
|
5434
5434
|
/**
|
|
5435
5435
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5436
5436
|
* window to float samples (D455).
|
|
@@ -8322,7 +8322,11 @@ var ContributionSectionSchema = object({
|
|
|
8322
8322
|
literal(4)
|
|
8323
8323
|
]).optional(),
|
|
8324
8324
|
tab: string().optional(),
|
|
8325
|
-
location: _enum([
|
|
8325
|
+
location: _enum([
|
|
8326
|
+
"settings",
|
|
8327
|
+
"top-tab",
|
|
8328
|
+
"hero"
|
|
8329
|
+
]).optional(),
|
|
8326
8330
|
order: number().optional(),
|
|
8327
8331
|
fields: array(any())
|
|
8328
8332
|
});
|
|
@@ -13269,7 +13273,11 @@ var ConfigSectionWithValuesSchema = object({
|
|
|
13269
13273
|
literal(4)
|
|
13270
13274
|
]).optional(),
|
|
13271
13275
|
tab: string().optional(),
|
|
13272
|
-
location: _enum([
|
|
13276
|
+
location: _enum([
|
|
13277
|
+
"settings",
|
|
13278
|
+
"top-tab",
|
|
13279
|
+
"hero"
|
|
13280
|
+
]).optional(),
|
|
13273
13281
|
order: number().optional(),
|
|
13274
13282
|
fields: array(any())
|
|
13275
13283
|
});
|
|
@@ -17149,6 +17157,52 @@ var TierStatusSchema = object({
|
|
|
17149
17157
|
countedAt: number().nullable()
|
|
17150
17158
|
});
|
|
17151
17159
|
/** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
|
|
17160
|
+
/**
|
|
17161
|
+
* Why a series is orphan. `device-gone`: its device is absent from the
|
|
17162
|
+
* successful device listings (the departure clock). `undeclared`: its `cap:`
|
|
17163
|
+
* key is declared by no capability any more (a field a cap removed).
|
|
17164
|
+
*/
|
|
17165
|
+
var DeviceHistoryOrphanReasonSchema = _enum(["device-gone", "undeclared"]);
|
|
17166
|
+
/** Rows held per stored tier. */
|
|
17167
|
+
var TierRowsSchema = object({
|
|
17168
|
+
raw: number().int(),
|
|
17169
|
+
"5m": number().int(),
|
|
17170
|
+
"1h": number().int(),
|
|
17171
|
+
"1d": number().int()
|
|
17172
|
+
});
|
|
17173
|
+
var OrphanSeriesSchema = object({
|
|
17174
|
+
seriesId: number().int(),
|
|
17175
|
+
deviceId: number().int(),
|
|
17176
|
+
key: string(),
|
|
17177
|
+
scope: string(),
|
|
17178
|
+
/** The metric's display name; `null` when its metric row is gone too. */
|
|
17179
|
+
displayName: string().nullable(),
|
|
17180
|
+
reason: DeviceHistoryOrphanReasonSchema,
|
|
17181
|
+
/** `device-gone`: since when the device has been absent; `null` otherwise. */
|
|
17182
|
+
missingSince: number().nullable(),
|
|
17183
|
+
firstTs: number(),
|
|
17184
|
+
lastTs: number(),
|
|
17185
|
+
rows: TierRowsSchema
|
|
17186
|
+
});
|
|
17187
|
+
var DeviceHistoryOrphanDeleteRefusalSchema = _enum([
|
|
17188
|
+
"not-found",
|
|
17189
|
+
"not-orphan",
|
|
17190
|
+
"failed"
|
|
17191
|
+
]);
|
|
17192
|
+
var OrphanDeleteEntrySchema = discriminatedUnion("ok", [object({
|
|
17193
|
+
seriesId: number().int(),
|
|
17194
|
+
ok: literal(true),
|
|
17195
|
+
deleted: TierRowsSchema
|
|
17196
|
+
}), object({
|
|
17197
|
+
seriesId: number().int(),
|
|
17198
|
+
ok: literal(false),
|
|
17199
|
+
reason: DeviceHistoryOrphanDeleteRefusalSchema
|
|
17200
|
+
})]);
|
|
17201
|
+
var OrphanListSchema = object({
|
|
17202
|
+
series: array(OrphanSeriesSchema).readonly(),
|
|
17203
|
+
/** More orphans exist than {@link DEVICE_HISTORY_ORPHAN_LIST_MAX}. */
|
|
17204
|
+
truncated: boolean()
|
|
17205
|
+
});
|
|
17152
17206
|
var DeviceHistoryStatusSchema = object({
|
|
17153
17207
|
startedAt: number(),
|
|
17154
17208
|
/** The store is declared, series loaded and the first reconcile has answered. */
|
|
@@ -17246,7 +17300,10 @@ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly())
|
|
|
17246
17300
|
}), object({ enabled: boolean() }), {
|
|
17247
17301
|
kind: "mutation",
|
|
17248
17302
|
auth: "admin"
|
|
17249
|
-
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" })
|
|
17303
|
+
}), 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() }), {
|
|
17304
|
+
kind: "mutation",
|
|
17305
|
+
auth: "admin"
|
|
17306
|
+
});
|
|
17250
17307
|
var DeviceCaStatusSchema = discriminatedUnion("state", [
|
|
17251
17308
|
object({ state: literal("absent") }),
|
|
17252
17309
|
object({
|
|
@@ -50313,6 +50370,19 @@ var NodeInferenceDeviceSchema = object({
|
|
|
50313
50370
|
/** Whether the node's live probe reports the device as usable right now. */
|
|
50314
50371
|
available: boolean(),
|
|
50315
50372
|
/**
|
|
50373
|
+
* Is the device on the node at all (D919)? `present` — the live probe
|
|
50374
|
+
* reported it; `absent` — the probe ANSWERED and did not report it, so only
|
|
50375
|
+
* its stored settings remain (unplugged, moved to another node): never
|
|
50376
|
+
* eligible, whatever its stored `enabled`, and forgettable with
|
|
50377
|
+
* `forgetInferenceDevice`; `unknown` — the probe did not answer, nothing is
|
|
50378
|
+
* claimed (D315). Optional only for an orchestrator older than the field.
|
|
50379
|
+
*/
|
|
50380
|
+
presence: _enum([
|
|
50381
|
+
"present",
|
|
50382
|
+
"absent",
|
|
50383
|
+
"unknown"
|
|
50384
|
+
]).optional(),
|
|
50385
|
+
/**
|
|
50316
50386
|
* Whether this device participates in dispatch. AUTO default (spec C2):
|
|
50317
50387
|
* accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
|
|
50318
50388
|
* entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
|
|
@@ -50538,7 +50608,13 @@ method(object({
|
|
|
50538
50608
|
}), object({ success: literal(true) }), {
|
|
50539
50609
|
kind: "mutation",
|
|
50540
50610
|
auth: "admin"
|
|
50541
|
-
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50611
|
+
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50612
|
+
agentNodeId: string(),
|
|
50613
|
+
deviceKey: string()
|
|
50614
|
+
}), object({ success: literal(true) }), {
|
|
50615
|
+
kind: "mutation",
|
|
50616
|
+
auth: "admin"
|
|
50617
|
+
}), method(object({ agentNodeId: string() }), object({
|
|
50542
50618
|
success: literal(true),
|
|
50543
50619
|
/** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
|
|
50544
50620
|
effectiveModelId: string().nullable(),
|
|
@@ -55202,17 +55278,69 @@ var connectivityCapability = {
|
|
|
55202
55278
|
volatileStateFields: ["lastChangedAt"]
|
|
55203
55279
|
};
|
|
55204
55280
|
/**
|
|
55205
|
-
* Generic device-consumables capability —
|
|
55206
|
-
*
|
|
55207
|
-
* descaling cycles,
|
|
55208
|
-
*
|
|
55209
|
-
*
|
|
55210
|
-
*
|
|
55281
|
+
* Generic device-consumables capability — the ONE place a device reports what
|
|
55282
|
+
* it uses up or fills: wear parts (vacuum filters/brushes, cartridges,
|
|
55283
|
+
* descaling cycles), supplies it draws from (a vacuum's clean-water tank and
|
|
55284
|
+
* detergent, a dishwasher's salt and rinse aid) and waste it collects (a dirty
|
|
55285
|
+
* water tank, a dust bin). Each item carries its remaining life or fill and an
|
|
55286
|
+
* optional "Replaced" reset action. Device-agnostic: any provider that knows
|
|
55287
|
+
* its device tracks consumables registers it; the provider names each item
|
|
55288
|
+
* verbatim and says which `kind` it is.
|
|
55289
|
+
*
|
|
55290
|
+
* The admin UI renders it as ONE collapsible section directly under the
|
|
55291
|
+
* device page's hero card (`placement: 'hero'`), for every device bound to
|
|
55292
|
+
* this cap — never drawn by a device type's hero card itself (D915).
|
|
55211
55293
|
*
|
|
55212
55294
|
* Like `childLayout`, the cap is INERT until a provider sets items: no
|
|
55213
55295
|
* provider populates it by guessing (no HA inference). The UI renders a
|
|
55214
55296
|
* "No consumables reported" placeholder when `items` is empty.
|
|
55215
55297
|
*/
|
|
55298
|
+
/**
|
|
55299
|
+
* What an item IS, which decides which direction is bad:
|
|
55300
|
+
* - `wear` — a part that wears out (a brush, a filter); low life is bad.
|
|
55301
|
+
* - `supply` — something the device draws from (clean water, detergent,
|
|
55302
|
+
* salt, rinse aid); low or empty is bad.
|
|
55303
|
+
* - `waste` — something the device fills (dirty water, a dust bin); full is
|
|
55304
|
+
* bad.
|
|
55305
|
+
* Absent = `wear`.
|
|
55306
|
+
*/
|
|
55307
|
+
var ConsumableKindSchema = _enum([
|
|
55308
|
+
"wear",
|
|
55309
|
+
"supply",
|
|
55310
|
+
"waste"
|
|
55311
|
+
]);
|
|
55312
|
+
/**
|
|
55313
|
+
* What an item LOOKS like, which decides how a client draws it — independent
|
|
55314
|
+
* of `kind`, which decides which direction is bad:
|
|
55315
|
+
* - `part` — a part that wears (a brush, a filter, a mop pad): a wear bar,
|
|
55316
|
+
* remaining time and a reset.
|
|
55317
|
+
* - `tank` — a container of liquid (clean water, dirty water): a fill gauge.
|
|
55318
|
+
* - `product` — something bought and refilled (detergent, salt, rinse aid):
|
|
55319
|
+
* a stepped level and "refill".
|
|
55320
|
+
* - `bin` — a container that collects waste (a dust bin): a fill gauge
|
|
55321
|
+
* that warns when full.
|
|
55322
|
+
* Absent = derived from the kind ({@link consumableFormOf}).
|
|
55323
|
+
*/
|
|
55324
|
+
var ConsumableFormSchema = _enum([
|
|
55325
|
+
"part",
|
|
55326
|
+
"tank",
|
|
55327
|
+
"product",
|
|
55328
|
+
"bin"
|
|
55329
|
+
]);
|
|
55330
|
+
/** The provider's own discrete verdict on an item. */
|
|
55331
|
+
var ConsumableStatusSchema = _enum([
|
|
55332
|
+
"ok",
|
|
55333
|
+
"low",
|
|
55334
|
+
"empty",
|
|
55335
|
+
"full",
|
|
55336
|
+
"replace"
|
|
55337
|
+
]);
|
|
55338
|
+
_enum([
|
|
55339
|
+
"ok",
|
|
55340
|
+
"low",
|
|
55341
|
+
"empty",
|
|
55342
|
+
"full"
|
|
55343
|
+
]);
|
|
55216
55344
|
/** Units a remaining-life counter is reported in. Closed: the panel renders
|
|
55217
55345
|
* each. */
|
|
55218
55346
|
var ConsumableRemainingUnitSchema = _enum([
|
|
@@ -55227,18 +55355,23 @@ var ConsumableRemainingSchema = object({
|
|
|
55227
55355
|
unit: ConsumableRemainingUnitSchema
|
|
55228
55356
|
});
|
|
55229
55357
|
/** A single consumable item. Either a continuous `level` (remaining
|
|
55230
|
-
* life
|
|
55231
|
-
*
|
|
55232
|
-
* mutually exclusive; a provider may
|
|
55358
|
+
* life %, or fill % for a `supply` / `waste` item) or a discrete `status`
|
|
55359
|
+
* may be known — both may be null when a provider only knows the item
|
|
55360
|
+
* exists. `level` and `status` are not mutually exclusive; a provider may
|
|
55361
|
+
* report both. */
|
|
55233
55362
|
var ConsumableItemSchema = object({
|
|
55234
55363
|
/** Stable id, e.g. 'main-brush'. */
|
|
55235
55364
|
key: string().min(1),
|
|
55236
55365
|
/** Display name. */
|
|
55237
55366
|
label: string().min(1),
|
|
55238
|
-
/** Remaining life % when known (0..100). */
|
|
55367
|
+
/** Remaining life % (`wear`) or fill % (`supply`, `waste`) when known (0..100). */
|
|
55239
55368
|
level: number().min(0).max(100).nullable(),
|
|
55240
|
-
/**
|
|
55241
|
-
status:
|
|
55369
|
+
/** The provider's discrete verdict when known (binary mode). */
|
|
55370
|
+
status: ConsumableStatusSchema.nullable(),
|
|
55371
|
+
/** What the item is — decides whether low or full is bad. Absent = `wear`. */
|
|
55372
|
+
kind: ConsumableKindSchema.optional(),
|
|
55373
|
+
/** How the item is drawn (part, tank, product, bin). Absent = derived from `kind`. */
|
|
55374
|
+
form: ConsumableFormSchema.optional(),
|
|
55242
55375
|
/** Ms epoch of the last replace, when known. */
|
|
55243
55376
|
lastResetAt: number().nullable(),
|
|
55244
55377
|
/** Whether `reset()` is meaningful for this item. */
|
|
@@ -55261,7 +55394,7 @@ var consumablesCapability = {
|
|
|
55261
55394
|
kind: "widget",
|
|
55262
55395
|
widgetId: "host/consumables-panel",
|
|
55263
55396
|
tab: "consumables",
|
|
55264
|
-
|
|
55397
|
+
placement: "hero",
|
|
55265
55398
|
label: "Consumables",
|
|
55266
55399
|
order: 5
|
|
55267
55400
|
} },
|
|
@@ -55322,9 +55455,37 @@ reset: method(object({
|
|
|
55322
55455
|
*/
|
|
55323
55456
|
durability: "restored",
|
|
55324
55457
|
/**
|
|
55325
|
-
* History (D850):
|
|
55458
|
+
* History (D850, D917): one series per (item field, item `key`) — the item key
|
|
55459
|
+
* is the series scope, the item `label` names it. A vacuum tank's fill, a
|
|
55460
|
+
* brush's remaining life and a dishwasher's salt are each recorded the moment
|
|
55461
|
+
* their provider reports them; an item that appears later gets its series.
|
|
55326
55462
|
*/
|
|
55327
|
-
history:
|
|
55463
|
+
history: {
|
|
55464
|
+
fields: {},
|
|
55465
|
+
items: {
|
|
55466
|
+
path: "items",
|
|
55467
|
+
key: "key",
|
|
55468
|
+
label: "label",
|
|
55469
|
+
fields: {
|
|
55470
|
+
level: {
|
|
55471
|
+
kind: "gauge",
|
|
55472
|
+
unit: "%",
|
|
55473
|
+
deadband: 2,
|
|
55474
|
+
displayName: "Level"
|
|
55475
|
+
},
|
|
55476
|
+
status: {
|
|
55477
|
+
kind: "enum",
|
|
55478
|
+
displayName: "Status"
|
|
55479
|
+
},
|
|
55480
|
+
"remaining.value": {
|
|
55481
|
+
kind: "gauge",
|
|
55482
|
+
unitFrom: "remaining.unit",
|
|
55483
|
+
deadband: 1,
|
|
55484
|
+
displayName: "Remaining"
|
|
55485
|
+
}
|
|
55486
|
+
}
|
|
55487
|
+
}
|
|
55488
|
+
},
|
|
55328
55489
|
/** Clocks, not content: a re-read that changed no item costs no commit. */
|
|
55329
55490
|
volatileStateFields: ["lastChangedAt", "lastFetchedAt"]
|
|
55330
55491
|
};
|
|
@@ -55739,8 +55900,9 @@ onStatusChanged: { data: object({
|
|
|
55739
55900
|
volatileStateFields: ["lastChangedAt"]
|
|
55740
55901
|
};
|
|
55741
55902
|
/**
|
|
55742
|
-
* Smart-dishwasher cap — program lifecycle, door / remote-start gates
|
|
55743
|
-
*
|
|
55903
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates and
|
|
55904
|
+
* common program options. Salt and rinse aid are NOT here: they are items of
|
|
55905
|
+
* the device's `consumables` cap, like every other device's (D915).
|
|
55744
55906
|
*
|
|
55745
55907
|
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
55746
55908
|
* by any integration that exposes the same program / option surface.
|
|
@@ -55788,11 +55950,6 @@ var DishwasherAvailabilitySchema = _enum([
|
|
|
55788
55950
|
"offline",
|
|
55789
55951
|
"description-missing"
|
|
55790
55952
|
]);
|
|
55791
|
-
var DishwasherConsumableLevelSchema = _enum([
|
|
55792
|
-
"ok",
|
|
55793
|
-
"low",
|
|
55794
|
-
"empty"
|
|
55795
|
-
]);
|
|
55796
55953
|
var DishwasherStatusSchema = object({
|
|
55797
55954
|
availability: DishwasherAvailabilitySchema,
|
|
55798
55955
|
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
@@ -55825,8 +55982,6 @@ var DishwasherStatusSchema = object({
|
|
|
55825
55982
|
powerOn: boolean().nullable(),
|
|
55826
55983
|
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
55827
55984
|
powerState: string().nullable(),
|
|
55828
|
-
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55829
|
-
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55830
55985
|
/**
|
|
55831
55986
|
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
55832
55987
|
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
@@ -58702,7 +58857,7 @@ var motionTriggerCapability = {
|
|
|
58702
58857
|
enabled: boolean()
|
|
58703
58858
|
}), _void(), {
|
|
58704
58859
|
kind: "mutation",
|
|
58705
|
-
auth: "
|
|
58860
|
+
auth: "protected"
|
|
58706
58861
|
}) },
|
|
58707
58862
|
events: { onMotionTriggerChanged: { data: object({
|
|
58708
58863
|
deviceId: number(),
|
|
@@ -59432,6 +59587,13 @@ var TopologyNodeSchema = object({
|
|
|
59432
59587
|
cpuModel: string().nullable(),
|
|
59433
59588
|
cpuCores: number(),
|
|
59434
59589
|
memoryMB: number(),
|
|
59590
|
+
/**
|
|
59591
|
+
* The inference RUNTIMES installed on the node (`pythonRuntimes`: onnx,
|
|
59592
|
+
* openvino, edgetpu …) — not its devices. An installed runtime says nothing
|
|
59593
|
+
* about whether its hardware is there (a Coral delegate stays installed
|
|
59594
|
+
* after the stick leaves, D919); the live device set is
|
|
59595
|
+
* `pipelineOrchestrator.getNodeInferenceDevices`.
|
|
59596
|
+
*/
|
|
59435
59597
|
engines: array(string()).readonly(),
|
|
59436
59598
|
isHub: boolean(),
|
|
59437
59599
|
isOnline: boolean(),
|
|
@@ -60549,7 +60711,28 @@ var ResolvedInferenceConfigSchema = object({
|
|
|
60549
60711
|
format: ModelFormatSchema,
|
|
60550
60712
|
reason: string()
|
|
60551
60713
|
});
|
|
60552
|
-
|
|
60714
|
+
/**
|
|
60715
|
+
* The answer of an accelerator rescan (D919): the node's device list after
|
|
60716
|
+
* the re-probe, what changed, and the evidence that decided the Coral answer
|
|
60717
|
+
* (`usbBus` — could the USB bus be read at all; `decidedBy` — USB ids, the PCI
|
|
60718
|
+
* bus, the installed-delegate fallback, or nothing).
|
|
60719
|
+
*/
|
|
60720
|
+
var AcceleratorRescanSchema = object({
|
|
60721
|
+
devices: array(InferenceDeviceDescriptorSchema).readonly(),
|
|
60722
|
+
appeared: array(string()).readonly(),
|
|
60723
|
+
disappeared: array(string()).readonly(),
|
|
60724
|
+
usbBus: _enum(["observed", "unobservable"]),
|
|
60725
|
+
decidedBy: _enum([
|
|
60726
|
+
"usb-ids",
|
|
60727
|
+
"pci",
|
|
60728
|
+
"delegate-fallback",
|
|
60729
|
+
"none"
|
|
60730
|
+
])
|
|
60731
|
+
});
|
|
60732
|
+
method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema), method(object({ requirements: array(ModelRequirementSchema).readonly() }), ResolvedInferenceConfigSchema), method(object({ prefer: HwAccelBackendInputSchema }), HwAccelResolutionSchema), method(_void(), AcceleratorRescanSchema, {
|
|
60733
|
+
kind: "mutation",
|
|
60734
|
+
auth: "admin"
|
|
60735
|
+
});
|
|
60553
60736
|
/**
|
|
60554
60737
|
* Multi-metric electrical meter. One slice can carry any combination
|
|
60555
60738
|
* of instantaneous power (W), cumulative energy (kWh), voltage (V),
|
|
@@ -64642,60 +64825,17 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
64642
64825
|
auth: "admin",
|
|
64643
64826
|
access: "delete"
|
|
64644
64827
|
});
|
|
64645
|
-
/**
|
|
64646
|
-
* Robot-vacuum cap. Models HA `vacuum.*` entities — anything with a
|
|
64647
|
-
* cleaning lifecycle plus a return-to-base / locate surface and an
|
|
64648
|
-
* optional fan-speed selector.
|
|
64649
|
-
*
|
|
64650
|
-
* State follows HA's canonical vacuum lifecycle: `idle` / `cleaning` /
|
|
64651
|
-
* `paused` / `returning` / `docked` / `error`. `batteryLevel`
|
|
64652
|
-
* (0..100) is nullable — some vacuums don't report a battery
|
|
64653
|
-
* percentage. `fanSpeed` is the current speed token (provider-verbatim,
|
|
64654
|
-
* e.g. `'standard'` / `'turbo'`) and `availableFanSpeeds` lists the
|
|
64655
|
-
* tokens the hardware accepts so the UI renders only supported choices.
|
|
64656
|
-
*
|
|
64657
|
-
* The `setFanSpeed` method takes the bare `speed` token — the provider
|
|
64658
|
-
* validates it against the vacuum's own list. `locate` triggers the
|
|
64659
|
-
* find-me chirp; `returnToBase` sends it home.
|
|
64660
|
-
*
|
|
64661
|
-
* Consumable / waste tanks: `cleanWater` / `dirtyWater` / `detergent` /
|
|
64662
|
-
* `dustBin` each carry a nullable `{ level (0..100 %), status ('ok' |
|
|
64663
|
-
* 'low' | 'full') }` reading. Native providers (e.g. Dreame, Roborock)
|
|
64664
|
-
* SHOULD populate whichever tanks the hardware has — leave a field `null`
|
|
64665
|
-
* only when the device has no such tank at all, and use a `TankStatus`
|
|
64666
|
-
* with both inner fields `null` when the tank exists but its level is
|
|
64667
|
-
* currently unknown. HA `vacuum.*` entities expose no per-tank telemetry,
|
|
64668
|
-
* so the HA provider leaves all four `null`.
|
|
64669
|
-
*/
|
|
64670
|
-
var VacuumStateSchema = _enum([
|
|
64671
|
-
"idle",
|
|
64672
|
-
"cleaning",
|
|
64673
|
-
"paused",
|
|
64674
|
-
"returning",
|
|
64675
|
-
"docked",
|
|
64676
|
-
"drying",
|
|
64677
|
-
"error"
|
|
64678
|
-
]);
|
|
64679
|
-
/**
|
|
64680
|
-
* One consumable / waste tank on a robot vacuum (clean-water, dirty-water,
|
|
64681
|
-
* detergent or dust-bin). A tank can report a numeric fill `level` (0..100),
|
|
64682
|
-
* a discrete `status` (binary-style hardware), or both. Both `null` means the
|
|
64683
|
-
* level is currently unknown; the OWNING field being `null` means the
|
|
64684
|
-
* hardware has no such tank at all.
|
|
64685
|
-
*/
|
|
64686
|
-
var TankStatusSchema = object({
|
|
64687
|
-
/** Numeric fill 0..100 when the hardware reports a percentage; null otherwise. */
|
|
64688
|
-
level: number().min(0).max(100).nullable(),
|
|
64689
|
-
/** Discrete state when the hardware is binary-mode; null otherwise. */
|
|
64690
|
-
status: _enum([
|
|
64691
|
-
"ok",
|
|
64692
|
-
"low",
|
|
64693
|
-
"full"
|
|
64694
|
-
]).nullable()
|
|
64695
|
-
});
|
|
64696
64828
|
var VacuumControlStatusSchema = object({
|
|
64697
64829
|
/** Lifecycle state of the vacuum. */
|
|
64698
|
-
state:
|
|
64830
|
+
state: _enum([
|
|
64831
|
+
"idle",
|
|
64832
|
+
"cleaning",
|
|
64833
|
+
"paused",
|
|
64834
|
+
"returning",
|
|
64835
|
+
"docked",
|
|
64836
|
+
"drying",
|
|
64837
|
+
"error"
|
|
64838
|
+
]),
|
|
64699
64839
|
/** 0..100 battery percentage. Null when the device has no battery
|
|
64700
64840
|
* reading. */
|
|
64701
64841
|
batteryLevel: number().min(0).max(100).nullable(),
|
|
@@ -64704,14 +64844,6 @@ var VacuumControlStatusSchema = object({
|
|
|
64704
64844
|
fanSpeed: string().nullable(),
|
|
64705
64845
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
64706
64846
|
availableFanSpeeds: array(string()),
|
|
64707
|
-
/** Clean-water (mop) tank. Null when the hardware has no clean-water tank. */
|
|
64708
|
-
cleanWater: TankStatusSchema.nullable(),
|
|
64709
|
-
/** Dirty-water (recovery) tank. Null when the hardware has no dirty-water tank. */
|
|
64710
|
-
dirtyWater: TankStatusSchema.nullable(),
|
|
64711
|
-
/** Detergent tank. Null when the hardware has no detergent tank. */
|
|
64712
|
-
detergent: TankStatusSchema.nullable(),
|
|
64713
|
-
/** Dust bin. Null when the hardware has no dust bin. */
|
|
64714
|
-
dustBin: TankStatusSchema.nullable(),
|
|
64715
64847
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
64716
64848
|
progressPercent: number().min(0).max(100).nullable(),
|
|
64717
64849
|
/** Current error code (0 / null = no error). */
|
|
@@ -64773,35 +64905,14 @@ var vacuumControlCapability = {
|
|
|
64773
64905
|
*/
|
|
64774
64906
|
durability: "session",
|
|
64775
64907
|
/**
|
|
64776
|
-
* History (D850): recorded series.
|
|
64908
|
+
* History (D850): recorded series. The tanks moved to `consumables` (D915), whose
|
|
64909
|
+
* items are keyed by runtime ids and record no history.
|
|
64777
64910
|
*/
|
|
64778
|
-
history: { fields: {
|
|
64779
|
-
|
|
64780
|
-
|
|
64781
|
-
|
|
64782
|
-
|
|
64783
|
-
},
|
|
64784
|
-
"cleanWater.level": {
|
|
64785
|
-
kind: "gauge",
|
|
64786
|
-
unit: "%",
|
|
64787
|
-
deadband: 2
|
|
64788
|
-
},
|
|
64789
|
-
"dirtyWater.level": {
|
|
64790
|
-
kind: "gauge",
|
|
64791
|
-
unit: "%",
|
|
64792
|
-
deadband: 2
|
|
64793
|
-
},
|
|
64794
|
-
"detergent.level": {
|
|
64795
|
-
kind: "gauge",
|
|
64796
|
-
unit: "%",
|
|
64797
|
-
deadband: 2
|
|
64798
|
-
},
|
|
64799
|
-
"dustBin.level": {
|
|
64800
|
-
kind: "gauge",
|
|
64801
|
-
unit: "%",
|
|
64802
|
-
deadband: 2
|
|
64803
|
-
}
|
|
64804
|
-
} }
|
|
64911
|
+
history: { fields: { batteryLevel: {
|
|
64912
|
+
kind: "gauge",
|
|
64913
|
+
unit: "%",
|
|
64914
|
+
deadband: 2
|
|
64915
|
+
} } }
|
|
64805
64916
|
};
|
|
64806
64917
|
var ValveStatusSchema = object({
|
|
64807
64918
|
/** Lifecycle state of the valve. */
|
|
@@ -69195,6 +69306,12 @@ Object.freeze({
|
|
|
69195
69306
|
addonId: null,
|
|
69196
69307
|
access: "create"
|
|
69197
69308
|
},
|
|
69309
|
+
"deviceHistory.deleteOrphanSeries": {
|
|
69310
|
+
capName: "device-history",
|
|
69311
|
+
capScope: "system",
|
|
69312
|
+
addonId: null,
|
|
69313
|
+
access: "delete"
|
|
69314
|
+
},
|
|
69198
69315
|
"deviceHistory.getDeviceEnabled": {
|
|
69199
69316
|
capName: "device-history",
|
|
69200
69317
|
capScope: "system",
|
|
@@ -69213,6 +69330,12 @@ Object.freeze({
|
|
|
69213
69330
|
addonId: null,
|
|
69214
69331
|
access: "view"
|
|
69215
69332
|
},
|
|
69333
|
+
"deviceHistory.listOrphanSeries": {
|
|
69334
|
+
capName: "device-history",
|
|
69335
|
+
capScope: "system",
|
|
69336
|
+
addonId: null,
|
|
69337
|
+
access: "view"
|
|
69338
|
+
},
|
|
69216
69339
|
"deviceHistory.listSeries": {
|
|
69217
69340
|
capName: "device-history",
|
|
69218
69341
|
capScope: "system",
|
|
@@ -72837,6 +72960,12 @@ Object.freeze({
|
|
|
72837
72960
|
addonId: null,
|
|
72838
72961
|
access: "delete"
|
|
72839
72962
|
},
|
|
72963
|
+
"pipelineOrchestrator.forgetInferenceDevice": {
|
|
72964
|
+
capName: "pipeline-orchestrator",
|
|
72965
|
+
capScope: "system",
|
|
72966
|
+
addonId: null,
|
|
72967
|
+
access: "delete"
|
|
72968
|
+
},
|
|
72840
72969
|
"pipelineOrchestrator.getAgentLoad": {
|
|
72841
72970
|
capName: "pipeline-orchestrator",
|
|
72842
72971
|
capScope: "system",
|
|
@@ -73413,6 +73542,12 @@ Object.freeze({
|
|
|
73413
73542
|
addonId: null,
|
|
73414
73543
|
access: "view"
|
|
73415
73544
|
},
|
|
73545
|
+
"platformProbe.rescanAccelerators": {
|
|
73546
|
+
capName: "platform-probe",
|
|
73547
|
+
capScope: "system",
|
|
73548
|
+
addonId: null,
|
|
73549
|
+
access: "create"
|
|
73550
|
+
},
|
|
73416
73551
|
"platformProbe.resolveHwAccel": {
|
|
73417
73552
|
capName: "platform-probe",
|
|
73418
73553
|
capScope: "system",
|
|
@@ -79218,7 +79353,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
79218
79353
|
([...RULE_TEXT], [...COMBINED_ALARM]),
|
|
79219
79354
|
([...RULE_TEXT], [...DEVICE_EVENTS]),
|
|
79220
79355
|
([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
|
|
79221
|
-
([...RULE_TEXT], [...CONSUMABLE]),
|
|
79356
|
+
([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
|
|
79222
79357
|
([...RULE_TEXT], [...TANK]),
|
|
79223
79358
|
[...RULE_TEXT],
|
|
79224
79359
|
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
package/package.json
CHANGED