@camstack/addon-provider-wyze 0.2.155 → 0.2.157
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
|
@@ -5463,7 +5463,7 @@ var ZodIssueCode = {
|
|
|
5463
5463
|
var ZodFirstPartyTypeKind;
|
|
5464
5464
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5465
5465
|
//#endregion
|
|
5466
|
-
//#region ../types/dist/sleep-
|
|
5466
|
+
//#region ../types/dist/sleep-CUp20JkO.mjs
|
|
5467
5467
|
/**
|
|
5468
5468
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5469
5469
|
* window to float samples (D455).
|
|
@@ -8355,7 +8355,11 @@ var ContributionSectionSchema = object({
|
|
|
8355
8355
|
literal(4)
|
|
8356
8356
|
]).optional(),
|
|
8357
8357
|
tab: string().optional(),
|
|
8358
|
-
location: _enum([
|
|
8358
|
+
location: _enum([
|
|
8359
|
+
"settings",
|
|
8360
|
+
"top-tab",
|
|
8361
|
+
"hero"
|
|
8362
|
+
]).optional(),
|
|
8359
8363
|
order: number().optional(),
|
|
8360
8364
|
fields: array(any())
|
|
8361
8365
|
});
|
|
@@ -13322,7 +13326,11 @@ var ConfigSectionWithValuesSchema = object({
|
|
|
13322
13326
|
literal(4)
|
|
13323
13327
|
]).optional(),
|
|
13324
13328
|
tab: string().optional(),
|
|
13325
|
-
location: _enum([
|
|
13329
|
+
location: _enum([
|
|
13330
|
+
"settings",
|
|
13331
|
+
"top-tab",
|
|
13332
|
+
"hero"
|
|
13333
|
+
]).optional(),
|
|
13326
13334
|
order: number().optional(),
|
|
13327
13335
|
fields: array(any())
|
|
13328
13336
|
});
|
|
@@ -17202,6 +17210,52 @@ var TierStatusSchema = object({
|
|
|
17202
17210
|
countedAt: number().nullable()
|
|
17203
17211
|
});
|
|
17204
17212
|
/** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
|
|
17213
|
+
/**
|
|
17214
|
+
* Why a series is orphan. `device-gone`: its device is absent from the
|
|
17215
|
+
* successful device listings (the departure clock). `undeclared`: its `cap:`
|
|
17216
|
+
* key is declared by no capability any more (a field a cap removed).
|
|
17217
|
+
*/
|
|
17218
|
+
var DeviceHistoryOrphanReasonSchema = _enum(["device-gone", "undeclared"]);
|
|
17219
|
+
/** Rows held per stored tier. */
|
|
17220
|
+
var TierRowsSchema = object({
|
|
17221
|
+
raw: number().int(),
|
|
17222
|
+
"5m": number().int(),
|
|
17223
|
+
"1h": number().int(),
|
|
17224
|
+
"1d": number().int()
|
|
17225
|
+
});
|
|
17226
|
+
var OrphanSeriesSchema = object({
|
|
17227
|
+
seriesId: number().int(),
|
|
17228
|
+
deviceId: number().int(),
|
|
17229
|
+
key: string(),
|
|
17230
|
+
scope: string(),
|
|
17231
|
+
/** The metric's display name; `null` when its metric row is gone too. */
|
|
17232
|
+
displayName: string().nullable(),
|
|
17233
|
+
reason: DeviceHistoryOrphanReasonSchema,
|
|
17234
|
+
/** `device-gone`: since when the device has been absent; `null` otherwise. */
|
|
17235
|
+
missingSince: number().nullable(),
|
|
17236
|
+
firstTs: number(),
|
|
17237
|
+
lastTs: number(),
|
|
17238
|
+
rows: TierRowsSchema
|
|
17239
|
+
});
|
|
17240
|
+
var DeviceHistoryOrphanDeleteRefusalSchema = _enum([
|
|
17241
|
+
"not-found",
|
|
17242
|
+
"not-orphan",
|
|
17243
|
+
"failed"
|
|
17244
|
+
]);
|
|
17245
|
+
var OrphanDeleteEntrySchema = discriminatedUnion("ok", [object({
|
|
17246
|
+
seriesId: number().int(),
|
|
17247
|
+
ok: literal(true),
|
|
17248
|
+
deleted: TierRowsSchema
|
|
17249
|
+
}), object({
|
|
17250
|
+
seriesId: number().int(),
|
|
17251
|
+
ok: literal(false),
|
|
17252
|
+
reason: DeviceHistoryOrphanDeleteRefusalSchema
|
|
17253
|
+
})]);
|
|
17254
|
+
var OrphanListSchema = object({
|
|
17255
|
+
series: array(OrphanSeriesSchema).readonly(),
|
|
17256
|
+
/** More orphans exist than {@link DEVICE_HISTORY_ORPHAN_LIST_MAX}. */
|
|
17257
|
+
truncated: boolean()
|
|
17258
|
+
});
|
|
17205
17259
|
var DeviceHistoryStatusSchema = object({
|
|
17206
17260
|
startedAt: number(),
|
|
17207
17261
|
/** The store is declared, series loaded and the first reconcile has answered. */
|
|
@@ -17299,7 +17353,10 @@ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly())
|
|
|
17299
17353
|
}), object({ enabled: boolean() }), {
|
|
17300
17354
|
kind: "mutation",
|
|
17301
17355
|
auth: "admin"
|
|
17302
|
-
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" })
|
|
17356
|
+
}), 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() }), {
|
|
17357
|
+
kind: "mutation",
|
|
17358
|
+
auth: "admin"
|
|
17359
|
+
});
|
|
17303
17360
|
var DeviceCaStatusSchema = discriminatedUnion("state", [
|
|
17304
17361
|
object({ state: literal("absent") }),
|
|
17305
17362
|
object({
|
|
@@ -50270,6 +50327,19 @@ var NodeInferenceDeviceSchema = object({
|
|
|
50270
50327
|
/** Whether the node's live probe reports the device as usable right now. */
|
|
50271
50328
|
available: boolean(),
|
|
50272
50329
|
/**
|
|
50330
|
+
* Is the device on the node at all (D919)? `present` — the live probe
|
|
50331
|
+
* reported it; `absent` — the probe ANSWERED and did not report it, so only
|
|
50332
|
+
* its stored settings remain (unplugged, moved to another node): never
|
|
50333
|
+
* eligible, whatever its stored `enabled`, and forgettable with
|
|
50334
|
+
* `forgetInferenceDevice`; `unknown` — the probe did not answer, nothing is
|
|
50335
|
+
* claimed (D315). Optional only for an orchestrator older than the field.
|
|
50336
|
+
*/
|
|
50337
|
+
presence: _enum([
|
|
50338
|
+
"present",
|
|
50339
|
+
"absent",
|
|
50340
|
+
"unknown"
|
|
50341
|
+
]).optional(),
|
|
50342
|
+
/**
|
|
50273
50343
|
* Whether this device participates in dispatch. AUTO default (spec C2):
|
|
50274
50344
|
* accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
|
|
50275
50345
|
* entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
|
|
@@ -50495,7 +50565,13 @@ method(object({
|
|
|
50495
50565
|
}), object({ success: literal(true) }), {
|
|
50496
50566
|
kind: "mutation",
|
|
50497
50567
|
auth: "admin"
|
|
50498
|
-
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50568
|
+
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50569
|
+
agentNodeId: string(),
|
|
50570
|
+
deviceKey: string()
|
|
50571
|
+
}), object({ success: literal(true) }), {
|
|
50572
|
+
kind: "mutation",
|
|
50573
|
+
auth: "admin"
|
|
50574
|
+
}), method(object({ agentNodeId: string() }), object({
|
|
50499
50575
|
success: literal(true),
|
|
50500
50576
|
/** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
|
|
50501
50577
|
effectiveModelId: string().nullable(),
|
|
@@ -55271,17 +55347,69 @@ var connectivityCapability = {
|
|
|
55271
55347
|
volatileStateFields: ["lastChangedAt"]
|
|
55272
55348
|
};
|
|
55273
55349
|
/**
|
|
55274
|
-
* Generic device-consumables capability —
|
|
55275
|
-
*
|
|
55276
|
-
* descaling cycles,
|
|
55277
|
-
*
|
|
55278
|
-
*
|
|
55279
|
-
*
|
|
55350
|
+
* Generic device-consumables capability — the ONE place a device reports what
|
|
55351
|
+
* it uses up or fills: wear parts (vacuum filters/brushes, cartridges,
|
|
55352
|
+
* descaling cycles), supplies it draws from (a vacuum's clean-water tank and
|
|
55353
|
+
* detergent, a dishwasher's salt and rinse aid) and waste it collects (a dirty
|
|
55354
|
+
* water tank, a dust bin). Each item carries its remaining life or fill and an
|
|
55355
|
+
* optional "Replaced" reset action. Device-agnostic: any provider that knows
|
|
55356
|
+
* its device tracks consumables registers it; the provider names each item
|
|
55357
|
+
* verbatim and says which `kind` it is.
|
|
55358
|
+
*
|
|
55359
|
+
* The admin UI renders it as ONE collapsible section directly under the
|
|
55360
|
+
* device page's hero card (`placement: 'hero'`), for every device bound to
|
|
55361
|
+
* this cap — never drawn by a device type's hero card itself (D915).
|
|
55280
55362
|
*
|
|
55281
55363
|
* Like `childLayout`, the cap is INERT until a provider sets items: no
|
|
55282
55364
|
* provider populates it by guessing (no HA inference). The UI renders a
|
|
55283
55365
|
* "No consumables reported" placeholder when `items` is empty.
|
|
55284
55366
|
*/
|
|
55367
|
+
/**
|
|
55368
|
+
* What an item IS, which decides which direction is bad:
|
|
55369
|
+
* - `wear` — a part that wears out (a brush, a filter); low life is bad.
|
|
55370
|
+
* - `supply` — something the device draws from (clean water, detergent,
|
|
55371
|
+
* salt, rinse aid); low or empty is bad.
|
|
55372
|
+
* - `waste` — something the device fills (dirty water, a dust bin); full is
|
|
55373
|
+
* bad.
|
|
55374
|
+
* Absent = `wear`.
|
|
55375
|
+
*/
|
|
55376
|
+
var ConsumableKindSchema = _enum([
|
|
55377
|
+
"wear",
|
|
55378
|
+
"supply",
|
|
55379
|
+
"waste"
|
|
55380
|
+
]);
|
|
55381
|
+
/**
|
|
55382
|
+
* What an item LOOKS like, which decides how a client draws it — independent
|
|
55383
|
+
* of `kind`, which decides which direction is bad:
|
|
55384
|
+
* - `part` — a part that wears (a brush, a filter, a mop pad): a wear bar,
|
|
55385
|
+
* remaining time and a reset.
|
|
55386
|
+
* - `tank` — a container of liquid (clean water, dirty water): a fill gauge.
|
|
55387
|
+
* - `product` — something bought and refilled (detergent, salt, rinse aid):
|
|
55388
|
+
* a stepped level and "refill".
|
|
55389
|
+
* - `bin` — a container that collects waste (a dust bin): a fill gauge
|
|
55390
|
+
* that warns when full.
|
|
55391
|
+
* Absent = derived from the kind ({@link consumableFormOf}).
|
|
55392
|
+
*/
|
|
55393
|
+
var ConsumableFormSchema = _enum([
|
|
55394
|
+
"part",
|
|
55395
|
+
"tank",
|
|
55396
|
+
"product",
|
|
55397
|
+
"bin"
|
|
55398
|
+
]);
|
|
55399
|
+
/** The provider's own discrete verdict on an item. */
|
|
55400
|
+
var ConsumableStatusSchema = _enum([
|
|
55401
|
+
"ok",
|
|
55402
|
+
"low",
|
|
55403
|
+
"empty",
|
|
55404
|
+
"full",
|
|
55405
|
+
"replace"
|
|
55406
|
+
]);
|
|
55407
|
+
_enum([
|
|
55408
|
+
"ok",
|
|
55409
|
+
"low",
|
|
55410
|
+
"empty",
|
|
55411
|
+
"full"
|
|
55412
|
+
]);
|
|
55285
55413
|
/** Units a remaining-life counter is reported in. Closed: the panel renders
|
|
55286
55414
|
* each. */
|
|
55287
55415
|
var ConsumableRemainingUnitSchema = _enum([
|
|
@@ -55296,18 +55424,23 @@ var ConsumableRemainingSchema = object({
|
|
|
55296
55424
|
unit: ConsumableRemainingUnitSchema
|
|
55297
55425
|
});
|
|
55298
55426
|
/** A single consumable item. Either a continuous `level` (remaining
|
|
55299
|
-
* life
|
|
55300
|
-
*
|
|
55301
|
-
* mutually exclusive; a provider may
|
|
55427
|
+
* life %, or fill % for a `supply` / `waste` item) or a discrete `status`
|
|
55428
|
+
* may be known — both may be null when a provider only knows the item
|
|
55429
|
+
* exists. `level` and `status` are not mutually exclusive; a provider may
|
|
55430
|
+
* report both. */
|
|
55302
55431
|
var ConsumableItemSchema = object({
|
|
55303
55432
|
/** Stable id, e.g. 'main-brush'. */
|
|
55304
55433
|
key: string().min(1),
|
|
55305
55434
|
/** Display name. */
|
|
55306
55435
|
label: string().min(1),
|
|
55307
|
-
/** Remaining life % when known (0..100). */
|
|
55436
|
+
/** Remaining life % (`wear`) or fill % (`supply`, `waste`) when known (0..100). */
|
|
55308
55437
|
level: number().min(0).max(100).nullable(),
|
|
55309
|
-
/**
|
|
55310
|
-
status:
|
|
55438
|
+
/** The provider's discrete verdict when known (binary mode). */
|
|
55439
|
+
status: ConsumableStatusSchema.nullable(),
|
|
55440
|
+
/** What the item is — decides whether low or full is bad. Absent = `wear`. */
|
|
55441
|
+
kind: ConsumableKindSchema.optional(),
|
|
55442
|
+
/** How the item is drawn (part, tank, product, bin). Absent = derived from `kind`. */
|
|
55443
|
+
form: ConsumableFormSchema.optional(),
|
|
55311
55444
|
/** Ms epoch of the last replace, when known. */
|
|
55312
55445
|
lastResetAt: number().nullable(),
|
|
55313
55446
|
/** Whether `reset()` is meaningful for this item. */
|
|
@@ -55330,7 +55463,7 @@ var consumablesCapability = {
|
|
|
55330
55463
|
kind: "widget",
|
|
55331
55464
|
widgetId: "host/consumables-panel",
|
|
55332
55465
|
tab: "consumables",
|
|
55333
|
-
|
|
55466
|
+
placement: "hero",
|
|
55334
55467
|
label: "Consumables",
|
|
55335
55468
|
order: 5
|
|
55336
55469
|
} },
|
|
@@ -55391,9 +55524,37 @@ reset: method(object({
|
|
|
55391
55524
|
*/
|
|
55392
55525
|
durability: "restored",
|
|
55393
55526
|
/**
|
|
55394
|
-
* History (D850):
|
|
55527
|
+
* History (D850, D917): one series per (item field, item `key`) — the item key
|
|
55528
|
+
* is the series scope, the item `label` names it. A vacuum tank's fill, a
|
|
55529
|
+
* brush's remaining life and a dishwasher's salt are each recorded the moment
|
|
55530
|
+
* their provider reports them; an item that appears later gets its series.
|
|
55395
55531
|
*/
|
|
55396
|
-
history:
|
|
55532
|
+
history: {
|
|
55533
|
+
fields: {},
|
|
55534
|
+
items: {
|
|
55535
|
+
path: "items",
|
|
55536
|
+
key: "key",
|
|
55537
|
+
label: "label",
|
|
55538
|
+
fields: {
|
|
55539
|
+
level: {
|
|
55540
|
+
kind: "gauge",
|
|
55541
|
+
unit: "%",
|
|
55542
|
+
deadband: 2,
|
|
55543
|
+
displayName: "Level"
|
|
55544
|
+
},
|
|
55545
|
+
status: {
|
|
55546
|
+
kind: "enum",
|
|
55547
|
+
displayName: "Status"
|
|
55548
|
+
},
|
|
55549
|
+
"remaining.value": {
|
|
55550
|
+
kind: "gauge",
|
|
55551
|
+
unitFrom: "remaining.unit",
|
|
55552
|
+
deadband: 1,
|
|
55553
|
+
displayName: "Remaining"
|
|
55554
|
+
}
|
|
55555
|
+
}
|
|
55556
|
+
}
|
|
55557
|
+
},
|
|
55397
55558
|
/** Clocks, not content: a re-read that changed no item costs no commit. */
|
|
55398
55559
|
volatileStateFields: ["lastChangedAt", "lastFetchedAt"]
|
|
55399
55560
|
};
|
|
@@ -55808,8 +55969,9 @@ onStatusChanged: { data: object({
|
|
|
55808
55969
|
volatileStateFields: ["lastChangedAt"]
|
|
55809
55970
|
};
|
|
55810
55971
|
/**
|
|
55811
|
-
* Smart-dishwasher cap — program lifecycle, door / remote-start gates
|
|
55812
|
-
*
|
|
55972
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates and
|
|
55973
|
+
* common program options. Salt and rinse aid are NOT here: they are items of
|
|
55974
|
+
* the device's `consumables` cap, like every other device's (D915).
|
|
55813
55975
|
*
|
|
55814
55976
|
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
55815
55977
|
* by any integration that exposes the same program / option surface.
|
|
@@ -55857,11 +56019,6 @@ var DishwasherAvailabilitySchema = _enum([
|
|
|
55857
56019
|
"offline",
|
|
55858
56020
|
"description-missing"
|
|
55859
56021
|
]);
|
|
55860
|
-
var DishwasherConsumableLevelSchema = _enum([
|
|
55861
|
-
"ok",
|
|
55862
|
-
"low",
|
|
55863
|
-
"empty"
|
|
55864
|
-
]);
|
|
55865
56022
|
var DishwasherStatusSchema = object({
|
|
55866
56023
|
availability: DishwasherAvailabilitySchema,
|
|
55867
56024
|
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
@@ -55894,8 +56051,6 @@ var DishwasherStatusSchema = object({
|
|
|
55894
56051
|
powerOn: boolean().nullable(),
|
|
55895
56052
|
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
55896
56053
|
powerState: string().nullable(),
|
|
55897
|
-
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55898
|
-
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55899
56054
|
/**
|
|
55900
56055
|
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
55901
56056
|
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
@@ -58771,7 +58926,7 @@ var motionTriggerCapability = {
|
|
|
58771
58926
|
enabled: boolean()
|
|
58772
58927
|
}), _void(), {
|
|
58773
58928
|
kind: "mutation",
|
|
58774
|
-
auth: "
|
|
58929
|
+
auth: "protected"
|
|
58775
58930
|
}) },
|
|
58776
58931
|
events: { onMotionTriggerChanged: { data: object({
|
|
58777
58932
|
deviceId: number(),
|
|
@@ -59501,6 +59656,13 @@ var TopologyNodeSchema = object({
|
|
|
59501
59656
|
cpuModel: string().nullable(),
|
|
59502
59657
|
cpuCores: number(),
|
|
59503
59658
|
memoryMB: number(),
|
|
59659
|
+
/**
|
|
59660
|
+
* The inference RUNTIMES installed on the node (`pythonRuntimes`: onnx,
|
|
59661
|
+
* openvino, edgetpu …) — not its devices. An installed runtime says nothing
|
|
59662
|
+
* about whether its hardware is there (a Coral delegate stays installed
|
|
59663
|
+
* after the stick leaves, D919); the live device set is
|
|
59664
|
+
* `pipelineOrchestrator.getNodeInferenceDevices`.
|
|
59665
|
+
*/
|
|
59504
59666
|
engines: array(string()).readonly(),
|
|
59505
59667
|
isHub: boolean(),
|
|
59506
59668
|
isOnline: boolean(),
|
|
@@ -60618,7 +60780,28 @@ var ResolvedInferenceConfigSchema = object({
|
|
|
60618
60780
|
format: ModelFormatSchema,
|
|
60619
60781
|
reason: string()
|
|
60620
60782
|
});
|
|
60621
|
-
|
|
60783
|
+
/**
|
|
60784
|
+
* The answer of an accelerator rescan (D919): the node's device list after
|
|
60785
|
+
* the re-probe, what changed, and the evidence that decided the Coral answer
|
|
60786
|
+
* (`usbBus` — could the USB bus be read at all; `decidedBy` — USB ids, the PCI
|
|
60787
|
+
* bus, the installed-delegate fallback, or nothing).
|
|
60788
|
+
*/
|
|
60789
|
+
var AcceleratorRescanSchema = object({
|
|
60790
|
+
devices: array(InferenceDeviceDescriptorSchema).readonly(),
|
|
60791
|
+
appeared: array(string()).readonly(),
|
|
60792
|
+
disappeared: array(string()).readonly(),
|
|
60793
|
+
usbBus: _enum(["observed", "unobservable"]),
|
|
60794
|
+
decidedBy: _enum([
|
|
60795
|
+
"usb-ids",
|
|
60796
|
+
"pci",
|
|
60797
|
+
"delegate-fallback",
|
|
60798
|
+
"none"
|
|
60799
|
+
])
|
|
60800
|
+
});
|
|
60801
|
+
method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema), method(object({ requirements: array(ModelRequirementSchema).readonly() }), ResolvedInferenceConfigSchema), method(object({ prefer: HwAccelBackendInputSchema }), HwAccelResolutionSchema), method(_void(), AcceleratorRescanSchema, {
|
|
60802
|
+
kind: "mutation",
|
|
60803
|
+
auth: "admin"
|
|
60804
|
+
});
|
|
60622
60805
|
/**
|
|
60623
60806
|
* Multi-metric electrical meter. One slice can carry any combination
|
|
60624
60807
|
* of instantaneous power (W), cumulative energy (kWh), voltage (V),
|
|
@@ -64711,60 +64894,17 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
64711
64894
|
auth: "admin",
|
|
64712
64895
|
access: "delete"
|
|
64713
64896
|
});
|
|
64714
|
-
/**
|
|
64715
|
-
* Robot-vacuum cap. Models HA `vacuum.*` entities — anything with a
|
|
64716
|
-
* cleaning lifecycle plus a return-to-base / locate surface and an
|
|
64717
|
-
* optional fan-speed selector.
|
|
64718
|
-
*
|
|
64719
|
-
* State follows HA's canonical vacuum lifecycle: `idle` / `cleaning` /
|
|
64720
|
-
* `paused` / `returning` / `docked` / `error`. `batteryLevel`
|
|
64721
|
-
* (0..100) is nullable — some vacuums don't report a battery
|
|
64722
|
-
* percentage. `fanSpeed` is the current speed token (provider-verbatim,
|
|
64723
|
-
* e.g. `'standard'` / `'turbo'`) and `availableFanSpeeds` lists the
|
|
64724
|
-
* tokens the hardware accepts so the UI renders only supported choices.
|
|
64725
|
-
*
|
|
64726
|
-
* The `setFanSpeed` method takes the bare `speed` token — the provider
|
|
64727
|
-
* validates it against the vacuum's own list. `locate` triggers the
|
|
64728
|
-
* find-me chirp; `returnToBase` sends it home.
|
|
64729
|
-
*
|
|
64730
|
-
* Consumable / waste tanks: `cleanWater` / `dirtyWater` / `detergent` /
|
|
64731
|
-
* `dustBin` each carry a nullable `{ level (0..100 %), status ('ok' |
|
|
64732
|
-
* 'low' | 'full') }` reading. Native providers (e.g. Dreame, Roborock)
|
|
64733
|
-
* SHOULD populate whichever tanks the hardware has — leave a field `null`
|
|
64734
|
-
* only when the device has no such tank at all, and use a `TankStatus`
|
|
64735
|
-
* with both inner fields `null` when the tank exists but its level is
|
|
64736
|
-
* currently unknown. HA `vacuum.*` entities expose no per-tank telemetry,
|
|
64737
|
-
* so the HA provider leaves all four `null`.
|
|
64738
|
-
*/
|
|
64739
|
-
var VacuumStateSchema = _enum([
|
|
64740
|
-
"idle",
|
|
64741
|
-
"cleaning",
|
|
64742
|
-
"paused",
|
|
64743
|
-
"returning",
|
|
64744
|
-
"docked",
|
|
64745
|
-
"drying",
|
|
64746
|
-
"error"
|
|
64747
|
-
]);
|
|
64748
|
-
/**
|
|
64749
|
-
* One consumable / waste tank on a robot vacuum (clean-water, dirty-water,
|
|
64750
|
-
* detergent or dust-bin). A tank can report a numeric fill `level` (0..100),
|
|
64751
|
-
* a discrete `status` (binary-style hardware), or both. Both `null` means the
|
|
64752
|
-
* level is currently unknown; the OWNING field being `null` means the
|
|
64753
|
-
* hardware has no such tank at all.
|
|
64754
|
-
*/
|
|
64755
|
-
var TankStatusSchema = object({
|
|
64756
|
-
/** Numeric fill 0..100 when the hardware reports a percentage; null otherwise. */
|
|
64757
|
-
level: number().min(0).max(100).nullable(),
|
|
64758
|
-
/** Discrete state when the hardware is binary-mode; null otherwise. */
|
|
64759
|
-
status: _enum([
|
|
64760
|
-
"ok",
|
|
64761
|
-
"low",
|
|
64762
|
-
"full"
|
|
64763
|
-
]).nullable()
|
|
64764
|
-
});
|
|
64765
64897
|
var VacuumControlStatusSchema = object({
|
|
64766
64898
|
/** Lifecycle state of the vacuum. */
|
|
64767
|
-
state:
|
|
64899
|
+
state: _enum([
|
|
64900
|
+
"idle",
|
|
64901
|
+
"cleaning",
|
|
64902
|
+
"paused",
|
|
64903
|
+
"returning",
|
|
64904
|
+
"docked",
|
|
64905
|
+
"drying",
|
|
64906
|
+
"error"
|
|
64907
|
+
]),
|
|
64768
64908
|
/** 0..100 battery percentage. Null when the device has no battery
|
|
64769
64909
|
* reading. */
|
|
64770
64910
|
batteryLevel: number().min(0).max(100).nullable(),
|
|
@@ -64773,14 +64913,6 @@ var VacuumControlStatusSchema = object({
|
|
|
64773
64913
|
fanSpeed: string().nullable(),
|
|
64774
64914
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
64775
64915
|
availableFanSpeeds: array(string()),
|
|
64776
|
-
/** Clean-water (mop) tank. Null when the hardware has no clean-water tank. */
|
|
64777
|
-
cleanWater: TankStatusSchema.nullable(),
|
|
64778
|
-
/** Dirty-water (recovery) tank. Null when the hardware has no dirty-water tank. */
|
|
64779
|
-
dirtyWater: TankStatusSchema.nullable(),
|
|
64780
|
-
/** Detergent tank. Null when the hardware has no detergent tank. */
|
|
64781
|
-
detergent: TankStatusSchema.nullable(),
|
|
64782
|
-
/** Dust bin. Null when the hardware has no dust bin. */
|
|
64783
|
-
dustBin: TankStatusSchema.nullable(),
|
|
64784
64916
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
64785
64917
|
progressPercent: number().min(0).max(100).nullable(),
|
|
64786
64918
|
/** Current error code (0 / null = no error). */
|
|
@@ -64842,35 +64974,14 @@ var vacuumControlCapability = {
|
|
|
64842
64974
|
*/
|
|
64843
64975
|
durability: "session",
|
|
64844
64976
|
/**
|
|
64845
|
-
* History (D850): recorded series.
|
|
64977
|
+
* History (D850): recorded series. The tanks moved to `consumables` (D915), whose
|
|
64978
|
+
* items are keyed by runtime ids and record no history.
|
|
64846
64979
|
*/
|
|
64847
|
-
history: { fields: {
|
|
64848
|
-
|
|
64849
|
-
|
|
64850
|
-
|
|
64851
|
-
|
|
64852
|
-
},
|
|
64853
|
-
"cleanWater.level": {
|
|
64854
|
-
kind: "gauge",
|
|
64855
|
-
unit: "%",
|
|
64856
|
-
deadband: 2
|
|
64857
|
-
},
|
|
64858
|
-
"dirtyWater.level": {
|
|
64859
|
-
kind: "gauge",
|
|
64860
|
-
unit: "%",
|
|
64861
|
-
deadband: 2
|
|
64862
|
-
},
|
|
64863
|
-
"detergent.level": {
|
|
64864
|
-
kind: "gauge",
|
|
64865
|
-
unit: "%",
|
|
64866
|
-
deadband: 2
|
|
64867
|
-
},
|
|
64868
|
-
"dustBin.level": {
|
|
64869
|
-
kind: "gauge",
|
|
64870
|
-
unit: "%",
|
|
64871
|
-
deadband: 2
|
|
64872
|
-
}
|
|
64873
|
-
} }
|
|
64980
|
+
history: { fields: { batteryLevel: {
|
|
64981
|
+
kind: "gauge",
|
|
64982
|
+
unit: "%",
|
|
64983
|
+
deadband: 2
|
|
64984
|
+
} } }
|
|
64874
64985
|
};
|
|
64875
64986
|
var ValveStatusSchema = object({
|
|
64876
64987
|
/** Lifecycle state of the valve. */
|
|
@@ -69264,6 +69375,12 @@ Object.freeze({
|
|
|
69264
69375
|
addonId: null,
|
|
69265
69376
|
access: "create"
|
|
69266
69377
|
},
|
|
69378
|
+
"deviceHistory.deleteOrphanSeries": {
|
|
69379
|
+
capName: "device-history",
|
|
69380
|
+
capScope: "system",
|
|
69381
|
+
addonId: null,
|
|
69382
|
+
access: "delete"
|
|
69383
|
+
},
|
|
69267
69384
|
"deviceHistory.getDeviceEnabled": {
|
|
69268
69385
|
capName: "device-history",
|
|
69269
69386
|
capScope: "system",
|
|
@@ -69282,6 +69399,12 @@ Object.freeze({
|
|
|
69282
69399
|
addonId: null,
|
|
69283
69400
|
access: "view"
|
|
69284
69401
|
},
|
|
69402
|
+
"deviceHistory.listOrphanSeries": {
|
|
69403
|
+
capName: "device-history",
|
|
69404
|
+
capScope: "system",
|
|
69405
|
+
addonId: null,
|
|
69406
|
+
access: "view"
|
|
69407
|
+
},
|
|
69285
69408
|
"deviceHistory.listSeries": {
|
|
69286
69409
|
capName: "device-history",
|
|
69287
69410
|
capScope: "system",
|
|
@@ -72906,6 +73029,12 @@ Object.freeze({
|
|
|
72906
73029
|
addonId: null,
|
|
72907
73030
|
access: "delete"
|
|
72908
73031
|
},
|
|
73032
|
+
"pipelineOrchestrator.forgetInferenceDevice": {
|
|
73033
|
+
capName: "pipeline-orchestrator",
|
|
73034
|
+
capScope: "system",
|
|
73035
|
+
addonId: null,
|
|
73036
|
+
access: "delete"
|
|
73037
|
+
},
|
|
72909
73038
|
"pipelineOrchestrator.getAgentLoad": {
|
|
72910
73039
|
capName: "pipeline-orchestrator",
|
|
72911
73040
|
capScope: "system",
|
|
@@ -73482,6 +73611,12 @@ Object.freeze({
|
|
|
73482
73611
|
addonId: null,
|
|
73483
73612
|
access: "view"
|
|
73484
73613
|
},
|
|
73614
|
+
"platformProbe.rescanAccelerators": {
|
|
73615
|
+
capName: "platform-probe",
|
|
73616
|
+
capScope: "system",
|
|
73617
|
+
addonId: null,
|
|
73618
|
+
access: "create"
|
|
73619
|
+
},
|
|
73485
73620
|
"platformProbe.resolveHwAccel": {
|
|
73486
73621
|
capName: "platform-probe",
|
|
73487
73622
|
capScope: "system",
|
|
@@ -79287,7 +79422,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
79287
79422
|
([...RULE_TEXT], [...COMBINED_ALARM]),
|
|
79288
79423
|
([...RULE_TEXT], [...DEVICE_EVENTS]),
|
|
79289
79424
|
([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
|
|
79290
|
-
([...RULE_TEXT], [...CONSUMABLE]),
|
|
79425
|
+
([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
|
|
79291
79426
|
([...RULE_TEXT], [...TANK]),
|
|
79292
79427
|
[...RULE_TEXT],
|
|
79293
79428
|
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
package/dist/addon.mjs
CHANGED
|
@@ -5442,7 +5442,7 @@ var ZodIssueCode = {
|
|
|
5442
5442
|
var ZodFirstPartyTypeKind;
|
|
5443
5443
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5444
5444
|
//#endregion
|
|
5445
|
-
//#region ../types/dist/sleep-
|
|
5445
|
+
//#region ../types/dist/sleep-CUp20JkO.mjs
|
|
5446
5446
|
/**
|
|
5447
5447
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5448
5448
|
* window to float samples (D455).
|
|
@@ -8334,7 +8334,11 @@ var ContributionSectionSchema = object({
|
|
|
8334
8334
|
literal(4)
|
|
8335
8335
|
]).optional(),
|
|
8336
8336
|
tab: string().optional(),
|
|
8337
|
-
location: _enum([
|
|
8337
|
+
location: _enum([
|
|
8338
|
+
"settings",
|
|
8339
|
+
"top-tab",
|
|
8340
|
+
"hero"
|
|
8341
|
+
]).optional(),
|
|
8338
8342
|
order: number().optional(),
|
|
8339
8343
|
fields: array(any())
|
|
8340
8344
|
});
|
|
@@ -13301,7 +13305,11 @@ var ConfigSectionWithValuesSchema = object({
|
|
|
13301
13305
|
literal(4)
|
|
13302
13306
|
]).optional(),
|
|
13303
13307
|
tab: string().optional(),
|
|
13304
|
-
location: _enum([
|
|
13308
|
+
location: _enum([
|
|
13309
|
+
"settings",
|
|
13310
|
+
"top-tab",
|
|
13311
|
+
"hero"
|
|
13312
|
+
]).optional(),
|
|
13305
13313
|
order: number().optional(),
|
|
13306
13314
|
fields: array(any())
|
|
13307
13315
|
});
|
|
@@ -17181,6 +17189,52 @@ var TierStatusSchema = object({
|
|
|
17181
17189
|
countedAt: number().nullable()
|
|
17182
17190
|
});
|
|
17183
17191
|
/** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
|
|
17192
|
+
/**
|
|
17193
|
+
* Why a series is orphan. `device-gone`: its device is absent from the
|
|
17194
|
+
* successful device listings (the departure clock). `undeclared`: its `cap:`
|
|
17195
|
+
* key is declared by no capability any more (a field a cap removed).
|
|
17196
|
+
*/
|
|
17197
|
+
var DeviceHistoryOrphanReasonSchema = _enum(["device-gone", "undeclared"]);
|
|
17198
|
+
/** Rows held per stored tier. */
|
|
17199
|
+
var TierRowsSchema = object({
|
|
17200
|
+
raw: number().int(),
|
|
17201
|
+
"5m": number().int(),
|
|
17202
|
+
"1h": number().int(),
|
|
17203
|
+
"1d": number().int()
|
|
17204
|
+
});
|
|
17205
|
+
var OrphanSeriesSchema = object({
|
|
17206
|
+
seriesId: number().int(),
|
|
17207
|
+
deviceId: number().int(),
|
|
17208
|
+
key: string(),
|
|
17209
|
+
scope: string(),
|
|
17210
|
+
/** The metric's display name; `null` when its metric row is gone too. */
|
|
17211
|
+
displayName: string().nullable(),
|
|
17212
|
+
reason: DeviceHistoryOrphanReasonSchema,
|
|
17213
|
+
/** `device-gone`: since when the device has been absent; `null` otherwise. */
|
|
17214
|
+
missingSince: number().nullable(),
|
|
17215
|
+
firstTs: number(),
|
|
17216
|
+
lastTs: number(),
|
|
17217
|
+
rows: TierRowsSchema
|
|
17218
|
+
});
|
|
17219
|
+
var DeviceHistoryOrphanDeleteRefusalSchema = _enum([
|
|
17220
|
+
"not-found",
|
|
17221
|
+
"not-orphan",
|
|
17222
|
+
"failed"
|
|
17223
|
+
]);
|
|
17224
|
+
var OrphanDeleteEntrySchema = discriminatedUnion("ok", [object({
|
|
17225
|
+
seriesId: number().int(),
|
|
17226
|
+
ok: literal(true),
|
|
17227
|
+
deleted: TierRowsSchema
|
|
17228
|
+
}), object({
|
|
17229
|
+
seriesId: number().int(),
|
|
17230
|
+
ok: literal(false),
|
|
17231
|
+
reason: DeviceHistoryOrphanDeleteRefusalSchema
|
|
17232
|
+
})]);
|
|
17233
|
+
var OrphanListSchema = object({
|
|
17234
|
+
series: array(OrphanSeriesSchema).readonly(),
|
|
17235
|
+
/** More orphans exist than {@link DEVICE_HISTORY_ORPHAN_LIST_MAX}. */
|
|
17236
|
+
truncated: boolean()
|
|
17237
|
+
});
|
|
17184
17238
|
var DeviceHistoryStatusSchema = object({
|
|
17185
17239
|
startedAt: number(),
|
|
17186
17240
|
/** The store is declared, series loaded and the first reconcile has answered. */
|
|
@@ -17278,7 +17332,10 @@ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly())
|
|
|
17278
17332
|
}), object({ enabled: boolean() }), {
|
|
17279
17333
|
kind: "mutation",
|
|
17280
17334
|
auth: "admin"
|
|
17281
|
-
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" })
|
|
17335
|
+
}), 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() }), {
|
|
17336
|
+
kind: "mutation",
|
|
17337
|
+
auth: "admin"
|
|
17338
|
+
});
|
|
17282
17339
|
var DeviceCaStatusSchema = discriminatedUnion("state", [
|
|
17283
17340
|
object({ state: literal("absent") }),
|
|
17284
17341
|
object({
|
|
@@ -50249,6 +50306,19 @@ var NodeInferenceDeviceSchema = object({
|
|
|
50249
50306
|
/** Whether the node's live probe reports the device as usable right now. */
|
|
50250
50307
|
available: boolean(),
|
|
50251
50308
|
/**
|
|
50309
|
+
* Is the device on the node at all (D919)? `present` — the live probe
|
|
50310
|
+
* reported it; `absent` — the probe ANSWERED and did not report it, so only
|
|
50311
|
+
* its stored settings remain (unplugged, moved to another node): never
|
|
50312
|
+
* eligible, whatever its stored `enabled`, and forgettable with
|
|
50313
|
+
* `forgetInferenceDevice`; `unknown` — the probe did not answer, nothing is
|
|
50314
|
+
* claimed (D315). Optional only for an orchestrator older than the field.
|
|
50315
|
+
*/
|
|
50316
|
+
presence: _enum([
|
|
50317
|
+
"present",
|
|
50318
|
+
"absent",
|
|
50319
|
+
"unknown"
|
|
50320
|
+
]).optional(),
|
|
50321
|
+
/**
|
|
50252
50322
|
* Whether this device participates in dispatch. AUTO default (spec C2):
|
|
50253
50323
|
* accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
|
|
50254
50324
|
* entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
|
|
@@ -50474,7 +50544,13 @@ method(object({
|
|
|
50474
50544
|
}), object({ success: literal(true) }), {
|
|
50475
50545
|
kind: "mutation",
|
|
50476
50546
|
auth: "admin"
|
|
50477
|
-
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50547
|
+
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50548
|
+
agentNodeId: string(),
|
|
50549
|
+
deviceKey: string()
|
|
50550
|
+
}), object({ success: literal(true) }), {
|
|
50551
|
+
kind: "mutation",
|
|
50552
|
+
auth: "admin"
|
|
50553
|
+
}), method(object({ agentNodeId: string() }), object({
|
|
50478
50554
|
success: literal(true),
|
|
50479
50555
|
/** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
|
|
50480
50556
|
effectiveModelId: string().nullable(),
|
|
@@ -55250,17 +55326,69 @@ var connectivityCapability = {
|
|
|
55250
55326
|
volatileStateFields: ["lastChangedAt"]
|
|
55251
55327
|
};
|
|
55252
55328
|
/**
|
|
55253
|
-
* Generic device-consumables capability —
|
|
55254
|
-
*
|
|
55255
|
-
* descaling cycles,
|
|
55256
|
-
*
|
|
55257
|
-
*
|
|
55258
|
-
*
|
|
55329
|
+
* Generic device-consumables capability — the ONE place a device reports what
|
|
55330
|
+
* it uses up or fills: wear parts (vacuum filters/brushes, cartridges,
|
|
55331
|
+
* descaling cycles), supplies it draws from (a vacuum's clean-water tank and
|
|
55332
|
+
* detergent, a dishwasher's salt and rinse aid) and waste it collects (a dirty
|
|
55333
|
+
* water tank, a dust bin). Each item carries its remaining life or fill and an
|
|
55334
|
+
* optional "Replaced" reset action. Device-agnostic: any provider that knows
|
|
55335
|
+
* its device tracks consumables registers it; the provider names each item
|
|
55336
|
+
* verbatim and says which `kind` it is.
|
|
55337
|
+
*
|
|
55338
|
+
* The admin UI renders it as ONE collapsible section directly under the
|
|
55339
|
+
* device page's hero card (`placement: 'hero'`), for every device bound to
|
|
55340
|
+
* this cap — never drawn by a device type's hero card itself (D915).
|
|
55259
55341
|
*
|
|
55260
55342
|
* Like `childLayout`, the cap is INERT until a provider sets items: no
|
|
55261
55343
|
* provider populates it by guessing (no HA inference). The UI renders a
|
|
55262
55344
|
* "No consumables reported" placeholder when `items` is empty.
|
|
55263
55345
|
*/
|
|
55346
|
+
/**
|
|
55347
|
+
* What an item IS, which decides which direction is bad:
|
|
55348
|
+
* - `wear` — a part that wears out (a brush, a filter); low life is bad.
|
|
55349
|
+
* - `supply` — something the device draws from (clean water, detergent,
|
|
55350
|
+
* salt, rinse aid); low or empty is bad.
|
|
55351
|
+
* - `waste` — something the device fills (dirty water, a dust bin); full is
|
|
55352
|
+
* bad.
|
|
55353
|
+
* Absent = `wear`.
|
|
55354
|
+
*/
|
|
55355
|
+
var ConsumableKindSchema = _enum([
|
|
55356
|
+
"wear",
|
|
55357
|
+
"supply",
|
|
55358
|
+
"waste"
|
|
55359
|
+
]);
|
|
55360
|
+
/**
|
|
55361
|
+
* What an item LOOKS like, which decides how a client draws it — independent
|
|
55362
|
+
* of `kind`, which decides which direction is bad:
|
|
55363
|
+
* - `part` — a part that wears (a brush, a filter, a mop pad): a wear bar,
|
|
55364
|
+
* remaining time and a reset.
|
|
55365
|
+
* - `tank` — a container of liquid (clean water, dirty water): a fill gauge.
|
|
55366
|
+
* - `product` — something bought and refilled (detergent, salt, rinse aid):
|
|
55367
|
+
* a stepped level and "refill".
|
|
55368
|
+
* - `bin` — a container that collects waste (a dust bin): a fill gauge
|
|
55369
|
+
* that warns when full.
|
|
55370
|
+
* Absent = derived from the kind ({@link consumableFormOf}).
|
|
55371
|
+
*/
|
|
55372
|
+
var ConsumableFormSchema = _enum([
|
|
55373
|
+
"part",
|
|
55374
|
+
"tank",
|
|
55375
|
+
"product",
|
|
55376
|
+
"bin"
|
|
55377
|
+
]);
|
|
55378
|
+
/** The provider's own discrete verdict on an item. */
|
|
55379
|
+
var ConsumableStatusSchema = _enum([
|
|
55380
|
+
"ok",
|
|
55381
|
+
"low",
|
|
55382
|
+
"empty",
|
|
55383
|
+
"full",
|
|
55384
|
+
"replace"
|
|
55385
|
+
]);
|
|
55386
|
+
_enum([
|
|
55387
|
+
"ok",
|
|
55388
|
+
"low",
|
|
55389
|
+
"empty",
|
|
55390
|
+
"full"
|
|
55391
|
+
]);
|
|
55264
55392
|
/** Units a remaining-life counter is reported in. Closed: the panel renders
|
|
55265
55393
|
* each. */
|
|
55266
55394
|
var ConsumableRemainingUnitSchema = _enum([
|
|
@@ -55275,18 +55403,23 @@ var ConsumableRemainingSchema = object({
|
|
|
55275
55403
|
unit: ConsumableRemainingUnitSchema
|
|
55276
55404
|
});
|
|
55277
55405
|
/** A single consumable item. Either a continuous `level` (remaining
|
|
55278
|
-
* life
|
|
55279
|
-
*
|
|
55280
|
-
* mutually exclusive; a provider may
|
|
55406
|
+
* life %, or fill % for a `supply` / `waste` item) or a discrete `status`
|
|
55407
|
+
* may be known — both may be null when a provider only knows the item
|
|
55408
|
+
* exists. `level` and `status` are not mutually exclusive; a provider may
|
|
55409
|
+
* report both. */
|
|
55281
55410
|
var ConsumableItemSchema = object({
|
|
55282
55411
|
/** Stable id, e.g. 'main-brush'. */
|
|
55283
55412
|
key: string().min(1),
|
|
55284
55413
|
/** Display name. */
|
|
55285
55414
|
label: string().min(1),
|
|
55286
|
-
/** Remaining life % when known (0..100). */
|
|
55415
|
+
/** Remaining life % (`wear`) or fill % (`supply`, `waste`) when known (0..100). */
|
|
55287
55416
|
level: number().min(0).max(100).nullable(),
|
|
55288
|
-
/**
|
|
55289
|
-
status:
|
|
55417
|
+
/** The provider's discrete verdict when known (binary mode). */
|
|
55418
|
+
status: ConsumableStatusSchema.nullable(),
|
|
55419
|
+
/** What the item is — decides whether low or full is bad. Absent = `wear`. */
|
|
55420
|
+
kind: ConsumableKindSchema.optional(),
|
|
55421
|
+
/** How the item is drawn (part, tank, product, bin). Absent = derived from `kind`. */
|
|
55422
|
+
form: ConsumableFormSchema.optional(),
|
|
55290
55423
|
/** Ms epoch of the last replace, when known. */
|
|
55291
55424
|
lastResetAt: number().nullable(),
|
|
55292
55425
|
/** Whether `reset()` is meaningful for this item. */
|
|
@@ -55309,7 +55442,7 @@ var consumablesCapability = {
|
|
|
55309
55442
|
kind: "widget",
|
|
55310
55443
|
widgetId: "host/consumables-panel",
|
|
55311
55444
|
tab: "consumables",
|
|
55312
|
-
|
|
55445
|
+
placement: "hero",
|
|
55313
55446
|
label: "Consumables",
|
|
55314
55447
|
order: 5
|
|
55315
55448
|
} },
|
|
@@ -55370,9 +55503,37 @@ reset: method(object({
|
|
|
55370
55503
|
*/
|
|
55371
55504
|
durability: "restored",
|
|
55372
55505
|
/**
|
|
55373
|
-
* History (D850):
|
|
55506
|
+
* History (D850, D917): one series per (item field, item `key`) — the item key
|
|
55507
|
+
* is the series scope, the item `label` names it. A vacuum tank's fill, a
|
|
55508
|
+
* brush's remaining life and a dishwasher's salt are each recorded the moment
|
|
55509
|
+
* their provider reports them; an item that appears later gets its series.
|
|
55374
55510
|
*/
|
|
55375
|
-
history:
|
|
55511
|
+
history: {
|
|
55512
|
+
fields: {},
|
|
55513
|
+
items: {
|
|
55514
|
+
path: "items",
|
|
55515
|
+
key: "key",
|
|
55516
|
+
label: "label",
|
|
55517
|
+
fields: {
|
|
55518
|
+
level: {
|
|
55519
|
+
kind: "gauge",
|
|
55520
|
+
unit: "%",
|
|
55521
|
+
deadband: 2,
|
|
55522
|
+
displayName: "Level"
|
|
55523
|
+
},
|
|
55524
|
+
status: {
|
|
55525
|
+
kind: "enum",
|
|
55526
|
+
displayName: "Status"
|
|
55527
|
+
},
|
|
55528
|
+
"remaining.value": {
|
|
55529
|
+
kind: "gauge",
|
|
55530
|
+
unitFrom: "remaining.unit",
|
|
55531
|
+
deadband: 1,
|
|
55532
|
+
displayName: "Remaining"
|
|
55533
|
+
}
|
|
55534
|
+
}
|
|
55535
|
+
}
|
|
55536
|
+
},
|
|
55376
55537
|
/** Clocks, not content: a re-read that changed no item costs no commit. */
|
|
55377
55538
|
volatileStateFields: ["lastChangedAt", "lastFetchedAt"]
|
|
55378
55539
|
};
|
|
@@ -55787,8 +55948,9 @@ onStatusChanged: { data: object({
|
|
|
55787
55948
|
volatileStateFields: ["lastChangedAt"]
|
|
55788
55949
|
};
|
|
55789
55950
|
/**
|
|
55790
|
-
* Smart-dishwasher cap — program lifecycle, door / remote-start gates
|
|
55791
|
-
*
|
|
55951
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates and
|
|
55952
|
+
* common program options. Salt and rinse aid are NOT here: they are items of
|
|
55953
|
+
* the device's `consumables` cap, like every other device's (D915).
|
|
55792
55954
|
*
|
|
55793
55955
|
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
55794
55956
|
* by any integration that exposes the same program / option surface.
|
|
@@ -55836,11 +55998,6 @@ var DishwasherAvailabilitySchema = _enum([
|
|
|
55836
55998
|
"offline",
|
|
55837
55999
|
"description-missing"
|
|
55838
56000
|
]);
|
|
55839
|
-
var DishwasherConsumableLevelSchema = _enum([
|
|
55840
|
-
"ok",
|
|
55841
|
-
"low",
|
|
55842
|
-
"empty"
|
|
55843
|
-
]);
|
|
55844
56001
|
var DishwasherStatusSchema = object({
|
|
55845
56002
|
availability: DishwasherAvailabilitySchema,
|
|
55846
56003
|
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
@@ -55873,8 +56030,6 @@ var DishwasherStatusSchema = object({
|
|
|
55873
56030
|
powerOn: boolean().nullable(),
|
|
55874
56031
|
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
55875
56032
|
powerState: string().nullable(),
|
|
55876
|
-
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55877
|
-
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55878
56033
|
/**
|
|
55879
56034
|
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
55880
56035
|
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
@@ -58750,7 +58905,7 @@ var motionTriggerCapability = {
|
|
|
58750
58905
|
enabled: boolean()
|
|
58751
58906
|
}), _void(), {
|
|
58752
58907
|
kind: "mutation",
|
|
58753
|
-
auth: "
|
|
58908
|
+
auth: "protected"
|
|
58754
58909
|
}) },
|
|
58755
58910
|
events: { onMotionTriggerChanged: { data: object({
|
|
58756
58911
|
deviceId: number(),
|
|
@@ -59480,6 +59635,13 @@ var TopologyNodeSchema = object({
|
|
|
59480
59635
|
cpuModel: string().nullable(),
|
|
59481
59636
|
cpuCores: number(),
|
|
59482
59637
|
memoryMB: number(),
|
|
59638
|
+
/**
|
|
59639
|
+
* The inference RUNTIMES installed on the node (`pythonRuntimes`: onnx,
|
|
59640
|
+
* openvino, edgetpu …) — not its devices. An installed runtime says nothing
|
|
59641
|
+
* about whether its hardware is there (a Coral delegate stays installed
|
|
59642
|
+
* after the stick leaves, D919); the live device set is
|
|
59643
|
+
* `pipelineOrchestrator.getNodeInferenceDevices`.
|
|
59644
|
+
*/
|
|
59483
59645
|
engines: array(string()).readonly(),
|
|
59484
59646
|
isHub: boolean(),
|
|
59485
59647
|
isOnline: boolean(),
|
|
@@ -60597,7 +60759,28 @@ var ResolvedInferenceConfigSchema = object({
|
|
|
60597
60759
|
format: ModelFormatSchema,
|
|
60598
60760
|
reason: string()
|
|
60599
60761
|
});
|
|
60600
|
-
|
|
60762
|
+
/**
|
|
60763
|
+
* The answer of an accelerator rescan (D919): the node's device list after
|
|
60764
|
+
* the re-probe, what changed, and the evidence that decided the Coral answer
|
|
60765
|
+
* (`usbBus` — could the USB bus be read at all; `decidedBy` — USB ids, the PCI
|
|
60766
|
+
* bus, the installed-delegate fallback, or nothing).
|
|
60767
|
+
*/
|
|
60768
|
+
var AcceleratorRescanSchema = object({
|
|
60769
|
+
devices: array(InferenceDeviceDescriptorSchema).readonly(),
|
|
60770
|
+
appeared: array(string()).readonly(),
|
|
60771
|
+
disappeared: array(string()).readonly(),
|
|
60772
|
+
usbBus: _enum(["observed", "unobservable"]),
|
|
60773
|
+
decidedBy: _enum([
|
|
60774
|
+
"usb-ids",
|
|
60775
|
+
"pci",
|
|
60776
|
+
"delegate-fallback",
|
|
60777
|
+
"none"
|
|
60778
|
+
])
|
|
60779
|
+
});
|
|
60780
|
+
method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema), method(object({ requirements: array(ModelRequirementSchema).readonly() }), ResolvedInferenceConfigSchema), method(object({ prefer: HwAccelBackendInputSchema }), HwAccelResolutionSchema), method(_void(), AcceleratorRescanSchema, {
|
|
60781
|
+
kind: "mutation",
|
|
60782
|
+
auth: "admin"
|
|
60783
|
+
});
|
|
60601
60784
|
/**
|
|
60602
60785
|
* Multi-metric electrical meter. One slice can carry any combination
|
|
60603
60786
|
* of instantaneous power (W), cumulative energy (kWh), voltage (V),
|
|
@@ -64690,60 +64873,17 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
64690
64873
|
auth: "admin",
|
|
64691
64874
|
access: "delete"
|
|
64692
64875
|
});
|
|
64693
|
-
/**
|
|
64694
|
-
* Robot-vacuum cap. Models HA `vacuum.*` entities — anything with a
|
|
64695
|
-
* cleaning lifecycle plus a return-to-base / locate surface and an
|
|
64696
|
-
* optional fan-speed selector.
|
|
64697
|
-
*
|
|
64698
|
-
* State follows HA's canonical vacuum lifecycle: `idle` / `cleaning` /
|
|
64699
|
-
* `paused` / `returning` / `docked` / `error`. `batteryLevel`
|
|
64700
|
-
* (0..100) is nullable — some vacuums don't report a battery
|
|
64701
|
-
* percentage. `fanSpeed` is the current speed token (provider-verbatim,
|
|
64702
|
-
* e.g. `'standard'` / `'turbo'`) and `availableFanSpeeds` lists the
|
|
64703
|
-
* tokens the hardware accepts so the UI renders only supported choices.
|
|
64704
|
-
*
|
|
64705
|
-
* The `setFanSpeed` method takes the bare `speed` token — the provider
|
|
64706
|
-
* validates it against the vacuum's own list. `locate` triggers the
|
|
64707
|
-
* find-me chirp; `returnToBase` sends it home.
|
|
64708
|
-
*
|
|
64709
|
-
* Consumable / waste tanks: `cleanWater` / `dirtyWater` / `detergent` /
|
|
64710
|
-
* `dustBin` each carry a nullable `{ level (0..100 %), status ('ok' |
|
|
64711
|
-
* 'low' | 'full') }` reading. Native providers (e.g. Dreame, Roborock)
|
|
64712
|
-
* SHOULD populate whichever tanks the hardware has — leave a field `null`
|
|
64713
|
-
* only when the device has no such tank at all, and use a `TankStatus`
|
|
64714
|
-
* with both inner fields `null` when the tank exists but its level is
|
|
64715
|
-
* currently unknown. HA `vacuum.*` entities expose no per-tank telemetry,
|
|
64716
|
-
* so the HA provider leaves all four `null`.
|
|
64717
|
-
*/
|
|
64718
|
-
var VacuumStateSchema = _enum([
|
|
64719
|
-
"idle",
|
|
64720
|
-
"cleaning",
|
|
64721
|
-
"paused",
|
|
64722
|
-
"returning",
|
|
64723
|
-
"docked",
|
|
64724
|
-
"drying",
|
|
64725
|
-
"error"
|
|
64726
|
-
]);
|
|
64727
|
-
/**
|
|
64728
|
-
* One consumable / waste tank on a robot vacuum (clean-water, dirty-water,
|
|
64729
|
-
* detergent or dust-bin). A tank can report a numeric fill `level` (0..100),
|
|
64730
|
-
* a discrete `status` (binary-style hardware), or both. Both `null` means the
|
|
64731
|
-
* level is currently unknown; the OWNING field being `null` means the
|
|
64732
|
-
* hardware has no such tank at all.
|
|
64733
|
-
*/
|
|
64734
|
-
var TankStatusSchema = object({
|
|
64735
|
-
/** Numeric fill 0..100 when the hardware reports a percentage; null otherwise. */
|
|
64736
|
-
level: number().min(0).max(100).nullable(),
|
|
64737
|
-
/** Discrete state when the hardware is binary-mode; null otherwise. */
|
|
64738
|
-
status: _enum([
|
|
64739
|
-
"ok",
|
|
64740
|
-
"low",
|
|
64741
|
-
"full"
|
|
64742
|
-
]).nullable()
|
|
64743
|
-
});
|
|
64744
64876
|
var VacuumControlStatusSchema = object({
|
|
64745
64877
|
/** Lifecycle state of the vacuum. */
|
|
64746
|
-
state:
|
|
64878
|
+
state: _enum([
|
|
64879
|
+
"idle",
|
|
64880
|
+
"cleaning",
|
|
64881
|
+
"paused",
|
|
64882
|
+
"returning",
|
|
64883
|
+
"docked",
|
|
64884
|
+
"drying",
|
|
64885
|
+
"error"
|
|
64886
|
+
]),
|
|
64747
64887
|
/** 0..100 battery percentage. Null when the device has no battery
|
|
64748
64888
|
* reading. */
|
|
64749
64889
|
batteryLevel: number().min(0).max(100).nullable(),
|
|
@@ -64752,14 +64892,6 @@ var VacuumControlStatusSchema = object({
|
|
|
64752
64892
|
fanSpeed: string().nullable(),
|
|
64753
64893
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
64754
64894
|
availableFanSpeeds: array(string()),
|
|
64755
|
-
/** Clean-water (mop) tank. Null when the hardware has no clean-water tank. */
|
|
64756
|
-
cleanWater: TankStatusSchema.nullable(),
|
|
64757
|
-
/** Dirty-water (recovery) tank. Null when the hardware has no dirty-water tank. */
|
|
64758
|
-
dirtyWater: TankStatusSchema.nullable(),
|
|
64759
|
-
/** Detergent tank. Null when the hardware has no detergent tank. */
|
|
64760
|
-
detergent: TankStatusSchema.nullable(),
|
|
64761
|
-
/** Dust bin. Null when the hardware has no dust bin. */
|
|
64762
|
-
dustBin: TankStatusSchema.nullable(),
|
|
64763
64895
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
64764
64896
|
progressPercent: number().min(0).max(100).nullable(),
|
|
64765
64897
|
/** Current error code (0 / null = no error). */
|
|
@@ -64821,35 +64953,14 @@ var vacuumControlCapability = {
|
|
|
64821
64953
|
*/
|
|
64822
64954
|
durability: "session",
|
|
64823
64955
|
/**
|
|
64824
|
-
* History (D850): recorded series.
|
|
64956
|
+
* History (D850): recorded series. The tanks moved to `consumables` (D915), whose
|
|
64957
|
+
* items are keyed by runtime ids and record no history.
|
|
64825
64958
|
*/
|
|
64826
|
-
history: { fields: {
|
|
64827
|
-
|
|
64828
|
-
|
|
64829
|
-
|
|
64830
|
-
|
|
64831
|
-
},
|
|
64832
|
-
"cleanWater.level": {
|
|
64833
|
-
kind: "gauge",
|
|
64834
|
-
unit: "%",
|
|
64835
|
-
deadband: 2
|
|
64836
|
-
},
|
|
64837
|
-
"dirtyWater.level": {
|
|
64838
|
-
kind: "gauge",
|
|
64839
|
-
unit: "%",
|
|
64840
|
-
deadband: 2
|
|
64841
|
-
},
|
|
64842
|
-
"detergent.level": {
|
|
64843
|
-
kind: "gauge",
|
|
64844
|
-
unit: "%",
|
|
64845
|
-
deadband: 2
|
|
64846
|
-
},
|
|
64847
|
-
"dustBin.level": {
|
|
64848
|
-
kind: "gauge",
|
|
64849
|
-
unit: "%",
|
|
64850
|
-
deadband: 2
|
|
64851
|
-
}
|
|
64852
|
-
} }
|
|
64959
|
+
history: { fields: { batteryLevel: {
|
|
64960
|
+
kind: "gauge",
|
|
64961
|
+
unit: "%",
|
|
64962
|
+
deadband: 2
|
|
64963
|
+
} } }
|
|
64853
64964
|
};
|
|
64854
64965
|
var ValveStatusSchema = object({
|
|
64855
64966
|
/** Lifecycle state of the valve. */
|
|
@@ -69243,6 +69354,12 @@ Object.freeze({
|
|
|
69243
69354
|
addonId: null,
|
|
69244
69355
|
access: "create"
|
|
69245
69356
|
},
|
|
69357
|
+
"deviceHistory.deleteOrphanSeries": {
|
|
69358
|
+
capName: "device-history",
|
|
69359
|
+
capScope: "system",
|
|
69360
|
+
addonId: null,
|
|
69361
|
+
access: "delete"
|
|
69362
|
+
},
|
|
69246
69363
|
"deviceHistory.getDeviceEnabled": {
|
|
69247
69364
|
capName: "device-history",
|
|
69248
69365
|
capScope: "system",
|
|
@@ -69261,6 +69378,12 @@ Object.freeze({
|
|
|
69261
69378
|
addonId: null,
|
|
69262
69379
|
access: "view"
|
|
69263
69380
|
},
|
|
69381
|
+
"deviceHistory.listOrphanSeries": {
|
|
69382
|
+
capName: "device-history",
|
|
69383
|
+
capScope: "system",
|
|
69384
|
+
addonId: null,
|
|
69385
|
+
access: "view"
|
|
69386
|
+
},
|
|
69264
69387
|
"deviceHistory.listSeries": {
|
|
69265
69388
|
capName: "device-history",
|
|
69266
69389
|
capScope: "system",
|
|
@@ -72885,6 +73008,12 @@ Object.freeze({
|
|
|
72885
73008
|
addonId: null,
|
|
72886
73009
|
access: "delete"
|
|
72887
73010
|
},
|
|
73011
|
+
"pipelineOrchestrator.forgetInferenceDevice": {
|
|
73012
|
+
capName: "pipeline-orchestrator",
|
|
73013
|
+
capScope: "system",
|
|
73014
|
+
addonId: null,
|
|
73015
|
+
access: "delete"
|
|
73016
|
+
},
|
|
72888
73017
|
"pipelineOrchestrator.getAgentLoad": {
|
|
72889
73018
|
capName: "pipeline-orchestrator",
|
|
72890
73019
|
capScope: "system",
|
|
@@ -73461,6 +73590,12 @@ Object.freeze({
|
|
|
73461
73590
|
addonId: null,
|
|
73462
73591
|
access: "view"
|
|
73463
73592
|
},
|
|
73593
|
+
"platformProbe.rescanAccelerators": {
|
|
73594
|
+
capName: "platform-probe",
|
|
73595
|
+
capScope: "system",
|
|
73596
|
+
addonId: null,
|
|
73597
|
+
access: "create"
|
|
73598
|
+
},
|
|
73464
73599
|
"platformProbe.resolveHwAccel": {
|
|
73465
73600
|
capName: "platform-probe",
|
|
73466
73601
|
capScope: "system",
|
|
@@ -79266,7 +79401,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
79266
79401
|
([...RULE_TEXT], [...COMBINED_ALARM]),
|
|
79267
79402
|
([...RULE_TEXT], [...DEVICE_EVENTS]),
|
|
79268
79403
|
([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
|
|
79269
|
-
([...RULE_TEXT], [...CONSUMABLE]),
|
|
79404
|
+
([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
|
|
79270
79405
|
([...RULE_TEXT], [...TANK]),
|
|
79271
79406
|
[...RULE_TEXT],
|
|
79272
79407
|
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-wyze",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.157",
|
|
4
4
|
"description": "Wyze camera device-provider addon for CamStack — wraps the @apocaliss92/wyze-bridge-js P2P/DTLS client, feeding the stream-broker via the pull-rfc4571 lazy-publish path (a structural twin of addon-provider-reolink)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|