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