@camstack/addon-provider-homematic 1.2.153 → 1.2.155
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
|
@@ -5573,7 +5573,7 @@ var ZodIssueCode = {
|
|
|
5573
5573
|
var ZodFirstPartyTypeKind;
|
|
5574
5574
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5575
5575
|
//#endregion
|
|
5576
|
-
//#region ../types/dist/sleep-
|
|
5576
|
+
//#region ../types/dist/sleep-CUp20JkO.mjs
|
|
5577
5577
|
/**
|
|
5578
5578
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5579
5579
|
* window to float samples (D455).
|
|
@@ -8653,7 +8653,11 @@ var ContributionSectionSchema = object({
|
|
|
8653
8653
|
literal(4)
|
|
8654
8654
|
]).optional(),
|
|
8655
8655
|
tab: string().optional(),
|
|
8656
|
-
location: _enum([
|
|
8656
|
+
location: _enum([
|
|
8657
|
+
"settings",
|
|
8658
|
+
"top-tab",
|
|
8659
|
+
"hero"
|
|
8660
|
+
]).optional(),
|
|
8657
8661
|
order: number().optional(),
|
|
8658
8662
|
fields: array(any())
|
|
8659
8663
|
});
|
|
@@ -13586,7 +13590,11 @@ var ConfigSectionWithValuesSchema = object({
|
|
|
13586
13590
|
literal(4)
|
|
13587
13591
|
]).optional(),
|
|
13588
13592
|
tab: string().optional(),
|
|
13589
|
-
location: _enum([
|
|
13593
|
+
location: _enum([
|
|
13594
|
+
"settings",
|
|
13595
|
+
"top-tab",
|
|
13596
|
+
"hero"
|
|
13597
|
+
]).optional(),
|
|
13590
13598
|
order: number().optional(),
|
|
13591
13599
|
fields: array(any())
|
|
13592
13600
|
});
|
|
@@ -17515,6 +17523,52 @@ var TierStatusSchema = object({
|
|
|
17515
17523
|
countedAt: number().nullable()
|
|
17516
17524
|
});
|
|
17517
17525
|
/** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
|
|
17526
|
+
/**
|
|
17527
|
+
* Why a series is orphan. `device-gone`: its device is absent from the
|
|
17528
|
+
* successful device listings (the departure clock). `undeclared`: its `cap:`
|
|
17529
|
+
* key is declared by no capability any more (a field a cap removed).
|
|
17530
|
+
*/
|
|
17531
|
+
var DeviceHistoryOrphanReasonSchema = _enum(["device-gone", "undeclared"]);
|
|
17532
|
+
/** Rows held per stored tier. */
|
|
17533
|
+
var TierRowsSchema = object({
|
|
17534
|
+
raw: number().int(),
|
|
17535
|
+
"5m": number().int(),
|
|
17536
|
+
"1h": number().int(),
|
|
17537
|
+
"1d": number().int()
|
|
17538
|
+
});
|
|
17539
|
+
var OrphanSeriesSchema = object({
|
|
17540
|
+
seriesId: number().int(),
|
|
17541
|
+
deviceId: number().int(),
|
|
17542
|
+
key: string(),
|
|
17543
|
+
scope: string(),
|
|
17544
|
+
/** The metric's display name; `null` when its metric row is gone too. */
|
|
17545
|
+
displayName: string().nullable(),
|
|
17546
|
+
reason: DeviceHistoryOrphanReasonSchema,
|
|
17547
|
+
/** `device-gone`: since when the device has been absent; `null` otherwise. */
|
|
17548
|
+
missingSince: number().nullable(),
|
|
17549
|
+
firstTs: number(),
|
|
17550
|
+
lastTs: number(),
|
|
17551
|
+
rows: TierRowsSchema
|
|
17552
|
+
});
|
|
17553
|
+
var DeviceHistoryOrphanDeleteRefusalSchema = _enum([
|
|
17554
|
+
"not-found",
|
|
17555
|
+
"not-orphan",
|
|
17556
|
+
"failed"
|
|
17557
|
+
]);
|
|
17558
|
+
var OrphanDeleteEntrySchema = discriminatedUnion("ok", [object({
|
|
17559
|
+
seriesId: number().int(),
|
|
17560
|
+
ok: literal(true),
|
|
17561
|
+
deleted: TierRowsSchema
|
|
17562
|
+
}), object({
|
|
17563
|
+
seriesId: number().int(),
|
|
17564
|
+
ok: literal(false),
|
|
17565
|
+
reason: DeviceHistoryOrphanDeleteRefusalSchema
|
|
17566
|
+
})]);
|
|
17567
|
+
var OrphanListSchema = object({
|
|
17568
|
+
series: array(OrphanSeriesSchema).readonly(),
|
|
17569
|
+
/** More orphans exist than {@link DEVICE_HISTORY_ORPHAN_LIST_MAX}. */
|
|
17570
|
+
truncated: boolean()
|
|
17571
|
+
});
|
|
17518
17572
|
var DeviceHistoryStatusSchema = object({
|
|
17519
17573
|
startedAt: number(),
|
|
17520
17574
|
/** The store is declared, series loaded and the first reconcile has answered. */
|
|
@@ -17612,7 +17666,10 @@ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly())
|
|
|
17612
17666
|
}), object({ enabled: boolean() }), {
|
|
17613
17667
|
kind: "mutation",
|
|
17614
17668
|
auth: "admin"
|
|
17615
|
-
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" })
|
|
17669
|
+
}), 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() }), {
|
|
17670
|
+
kind: "mutation",
|
|
17671
|
+
auth: "admin"
|
|
17672
|
+
});
|
|
17616
17673
|
var DeviceCaStatusSchema = discriminatedUnion("state", [
|
|
17617
17674
|
object({ state: literal("absent") }),
|
|
17618
17675
|
object({
|
|
@@ -50696,6 +50753,19 @@ var NodeInferenceDeviceSchema = object({
|
|
|
50696
50753
|
/** Whether the node's live probe reports the device as usable right now. */
|
|
50697
50754
|
available: boolean(),
|
|
50698
50755
|
/**
|
|
50756
|
+
* Is the device on the node at all (D919)? `present` — the live probe
|
|
50757
|
+
* reported it; `absent` — the probe ANSWERED and did not report it, so only
|
|
50758
|
+
* its stored settings remain (unplugged, moved to another node): never
|
|
50759
|
+
* eligible, whatever its stored `enabled`, and forgettable with
|
|
50760
|
+
* `forgetInferenceDevice`; `unknown` — the probe did not answer, nothing is
|
|
50761
|
+
* claimed (D315). Optional only for an orchestrator older than the field.
|
|
50762
|
+
*/
|
|
50763
|
+
presence: _enum([
|
|
50764
|
+
"present",
|
|
50765
|
+
"absent",
|
|
50766
|
+
"unknown"
|
|
50767
|
+
]).optional(),
|
|
50768
|
+
/**
|
|
50699
50769
|
* Whether this device participates in dispatch. AUTO default (spec C2):
|
|
50700
50770
|
* accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
|
|
50701
50771
|
* entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
|
|
@@ -50921,7 +50991,13 @@ method(object({
|
|
|
50921
50991
|
}), object({ success: literal(true) }), {
|
|
50922
50992
|
kind: "mutation",
|
|
50923
50993
|
auth: "admin"
|
|
50924
|
-
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50994
|
+
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50995
|
+
agentNodeId: string(),
|
|
50996
|
+
deviceKey: string()
|
|
50997
|
+
}), object({ success: literal(true) }), {
|
|
50998
|
+
kind: "mutation",
|
|
50999
|
+
auth: "admin"
|
|
51000
|
+
}), method(object({ agentNodeId: string() }), object({
|
|
50925
51001
|
success: literal(true),
|
|
50926
51002
|
/** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
|
|
50927
51003
|
effectiveModelId: string().nullable(),
|
|
@@ -55585,17 +55661,69 @@ var connectivityCapability = {
|
|
|
55585
55661
|
volatileStateFields: ["lastChangedAt"]
|
|
55586
55662
|
};
|
|
55587
55663
|
/**
|
|
55588
|
-
* Generic device-consumables capability —
|
|
55589
|
-
*
|
|
55590
|
-
* descaling cycles,
|
|
55591
|
-
*
|
|
55592
|
-
*
|
|
55593
|
-
*
|
|
55664
|
+
* Generic device-consumables capability — the ONE place a device reports what
|
|
55665
|
+
* it uses up or fills: wear parts (vacuum filters/brushes, cartridges,
|
|
55666
|
+
* descaling cycles), supplies it draws from (a vacuum's clean-water tank and
|
|
55667
|
+
* detergent, a dishwasher's salt and rinse aid) and waste it collects (a dirty
|
|
55668
|
+
* water tank, a dust bin). Each item carries its remaining life or fill and an
|
|
55669
|
+
* optional "Replaced" reset action. Device-agnostic: any provider that knows
|
|
55670
|
+
* its device tracks consumables registers it; the provider names each item
|
|
55671
|
+
* verbatim and says which `kind` it is.
|
|
55672
|
+
*
|
|
55673
|
+
* The admin UI renders it as ONE collapsible section directly under the
|
|
55674
|
+
* device page's hero card (`placement: 'hero'`), for every device bound to
|
|
55675
|
+
* this cap — never drawn by a device type's hero card itself (D915).
|
|
55594
55676
|
*
|
|
55595
55677
|
* Like `childLayout`, the cap is INERT until a provider sets items: no
|
|
55596
55678
|
* provider populates it by guessing (no HA inference). The UI renders a
|
|
55597
55679
|
* "No consumables reported" placeholder when `items` is empty.
|
|
55598
55680
|
*/
|
|
55681
|
+
/**
|
|
55682
|
+
* What an item IS, which decides which direction is bad:
|
|
55683
|
+
* - `wear` — a part that wears out (a brush, a filter); low life is bad.
|
|
55684
|
+
* - `supply` — something the device draws from (clean water, detergent,
|
|
55685
|
+
* salt, rinse aid); low or empty is bad.
|
|
55686
|
+
* - `waste` — something the device fills (dirty water, a dust bin); full is
|
|
55687
|
+
* bad.
|
|
55688
|
+
* Absent = `wear`.
|
|
55689
|
+
*/
|
|
55690
|
+
var ConsumableKindSchema = _enum([
|
|
55691
|
+
"wear",
|
|
55692
|
+
"supply",
|
|
55693
|
+
"waste"
|
|
55694
|
+
]);
|
|
55695
|
+
/**
|
|
55696
|
+
* What an item LOOKS like, which decides how a client draws it — independent
|
|
55697
|
+
* of `kind`, which decides which direction is bad:
|
|
55698
|
+
* - `part` — a part that wears (a brush, a filter, a mop pad): a wear bar,
|
|
55699
|
+
* remaining time and a reset.
|
|
55700
|
+
* - `tank` — a container of liquid (clean water, dirty water): a fill gauge.
|
|
55701
|
+
* - `product` — something bought and refilled (detergent, salt, rinse aid):
|
|
55702
|
+
* a stepped level and "refill".
|
|
55703
|
+
* - `bin` — a container that collects waste (a dust bin): a fill gauge
|
|
55704
|
+
* that warns when full.
|
|
55705
|
+
* Absent = derived from the kind ({@link consumableFormOf}).
|
|
55706
|
+
*/
|
|
55707
|
+
var ConsumableFormSchema = _enum([
|
|
55708
|
+
"part",
|
|
55709
|
+
"tank",
|
|
55710
|
+
"product",
|
|
55711
|
+
"bin"
|
|
55712
|
+
]);
|
|
55713
|
+
/** The provider's own discrete verdict on an item. */
|
|
55714
|
+
var ConsumableStatusSchema = _enum([
|
|
55715
|
+
"ok",
|
|
55716
|
+
"low",
|
|
55717
|
+
"empty",
|
|
55718
|
+
"full",
|
|
55719
|
+
"replace"
|
|
55720
|
+
]);
|
|
55721
|
+
_enum([
|
|
55722
|
+
"ok",
|
|
55723
|
+
"low",
|
|
55724
|
+
"empty",
|
|
55725
|
+
"full"
|
|
55726
|
+
]);
|
|
55599
55727
|
/** Units a remaining-life counter is reported in. Closed: the panel renders
|
|
55600
55728
|
* each. */
|
|
55601
55729
|
var ConsumableRemainingUnitSchema = _enum([
|
|
@@ -55610,18 +55738,23 @@ var ConsumableRemainingSchema = object({
|
|
|
55610
55738
|
unit: ConsumableRemainingUnitSchema
|
|
55611
55739
|
});
|
|
55612
55740
|
/** A single consumable item. Either a continuous `level` (remaining
|
|
55613
|
-
* life
|
|
55614
|
-
*
|
|
55615
|
-
* mutually exclusive; a provider may
|
|
55741
|
+
* life %, or fill % for a `supply` / `waste` item) or a discrete `status`
|
|
55742
|
+
* may be known — both may be null when a provider only knows the item
|
|
55743
|
+
* exists. `level` and `status` are not mutually exclusive; a provider may
|
|
55744
|
+
* report both. */
|
|
55616
55745
|
var ConsumableItemSchema = object({
|
|
55617
55746
|
/** Stable id, e.g. 'main-brush'. */
|
|
55618
55747
|
key: string().min(1),
|
|
55619
55748
|
/** Display name. */
|
|
55620
55749
|
label: string().min(1),
|
|
55621
|
-
/** Remaining life % when known (0..100). */
|
|
55750
|
+
/** Remaining life % (`wear`) or fill % (`supply`, `waste`) when known (0..100). */
|
|
55622
55751
|
level: number().min(0).max(100).nullable(),
|
|
55623
|
-
/**
|
|
55624
|
-
status:
|
|
55752
|
+
/** The provider's discrete verdict when known (binary mode). */
|
|
55753
|
+
status: ConsumableStatusSchema.nullable(),
|
|
55754
|
+
/** What the item is — decides whether low or full is bad. Absent = `wear`. */
|
|
55755
|
+
kind: ConsumableKindSchema.optional(),
|
|
55756
|
+
/** How the item is drawn (part, tank, product, bin). Absent = derived from `kind`. */
|
|
55757
|
+
form: ConsumableFormSchema.optional(),
|
|
55625
55758
|
/** Ms epoch of the last replace, when known. */
|
|
55626
55759
|
lastResetAt: number().nullable(),
|
|
55627
55760
|
/** Whether `reset()` is meaningful for this item. */
|
|
@@ -55644,7 +55777,7 @@ var consumablesCapability = {
|
|
|
55644
55777
|
kind: "widget",
|
|
55645
55778
|
widgetId: "host/consumables-panel",
|
|
55646
55779
|
tab: "consumables",
|
|
55647
|
-
|
|
55780
|
+
placement: "hero",
|
|
55648
55781
|
label: "Consumables",
|
|
55649
55782
|
order: 5
|
|
55650
55783
|
} },
|
|
@@ -55705,9 +55838,37 @@ reset: method(object({
|
|
|
55705
55838
|
*/
|
|
55706
55839
|
durability: "restored",
|
|
55707
55840
|
/**
|
|
55708
|
-
* History (D850):
|
|
55841
|
+
* History (D850, D917): one series per (item field, item `key`) — the item key
|
|
55842
|
+
* is the series scope, the item `label` names it. A vacuum tank's fill, a
|
|
55843
|
+
* brush's remaining life and a dishwasher's salt are each recorded the moment
|
|
55844
|
+
* their provider reports them; an item that appears later gets its series.
|
|
55709
55845
|
*/
|
|
55710
|
-
history:
|
|
55846
|
+
history: {
|
|
55847
|
+
fields: {},
|
|
55848
|
+
items: {
|
|
55849
|
+
path: "items",
|
|
55850
|
+
key: "key",
|
|
55851
|
+
label: "label",
|
|
55852
|
+
fields: {
|
|
55853
|
+
level: {
|
|
55854
|
+
kind: "gauge",
|
|
55855
|
+
unit: "%",
|
|
55856
|
+
deadband: 2,
|
|
55857
|
+
displayName: "Level"
|
|
55858
|
+
},
|
|
55859
|
+
status: {
|
|
55860
|
+
kind: "enum",
|
|
55861
|
+
displayName: "Status"
|
|
55862
|
+
},
|
|
55863
|
+
"remaining.value": {
|
|
55864
|
+
kind: "gauge",
|
|
55865
|
+
unitFrom: "remaining.unit",
|
|
55866
|
+
deadband: 1,
|
|
55867
|
+
displayName: "Remaining"
|
|
55868
|
+
}
|
|
55869
|
+
}
|
|
55870
|
+
}
|
|
55871
|
+
},
|
|
55711
55872
|
/** Clocks, not content: a re-read that changed no item costs no commit. */
|
|
55712
55873
|
volatileStateFields: ["lastChangedAt", "lastFetchedAt"]
|
|
55713
55874
|
};
|
|
@@ -56122,8 +56283,9 @@ onStatusChanged: { data: object({
|
|
|
56122
56283
|
volatileStateFields: ["lastChangedAt"]
|
|
56123
56284
|
};
|
|
56124
56285
|
/**
|
|
56125
|
-
* Smart-dishwasher cap — program lifecycle, door / remote-start gates
|
|
56126
|
-
*
|
|
56286
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates and
|
|
56287
|
+
* common program options. Salt and rinse aid are NOT here: they are items of
|
|
56288
|
+
* the device's `consumables` cap, like every other device's (D915).
|
|
56127
56289
|
*
|
|
56128
56290
|
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
56129
56291
|
* by any integration that exposes the same program / option surface.
|
|
@@ -56171,11 +56333,6 @@ var DishwasherAvailabilitySchema = _enum([
|
|
|
56171
56333
|
"offline",
|
|
56172
56334
|
"description-missing"
|
|
56173
56335
|
]);
|
|
56174
|
-
var DishwasherConsumableLevelSchema = _enum([
|
|
56175
|
-
"ok",
|
|
56176
|
-
"low",
|
|
56177
|
-
"empty"
|
|
56178
|
-
]);
|
|
56179
56336
|
var DishwasherStatusSchema = object({
|
|
56180
56337
|
availability: DishwasherAvailabilitySchema,
|
|
56181
56338
|
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
@@ -56208,8 +56365,6 @@ var DishwasherStatusSchema = object({
|
|
|
56208
56365
|
powerOn: boolean().nullable(),
|
|
56209
56366
|
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
56210
56367
|
powerState: string().nullable(),
|
|
56211
|
-
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56212
|
-
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56213
56368
|
/**
|
|
56214
56369
|
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
56215
56370
|
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
@@ -59085,7 +59240,7 @@ var motionTriggerCapability = {
|
|
|
59085
59240
|
enabled: boolean()
|
|
59086
59241
|
}), _void(), {
|
|
59087
59242
|
kind: "mutation",
|
|
59088
|
-
auth: "
|
|
59243
|
+
auth: "protected"
|
|
59089
59244
|
}) },
|
|
59090
59245
|
events: { onMotionTriggerChanged: { data: object({
|
|
59091
59246
|
deviceId: number(),
|
|
@@ -59815,6 +59970,13 @@ var TopologyNodeSchema = object({
|
|
|
59815
59970
|
cpuModel: string().nullable(),
|
|
59816
59971
|
cpuCores: number(),
|
|
59817
59972
|
memoryMB: number(),
|
|
59973
|
+
/**
|
|
59974
|
+
* The inference RUNTIMES installed on the node (`pythonRuntimes`: onnx,
|
|
59975
|
+
* openvino, edgetpu …) — not its devices. An installed runtime says nothing
|
|
59976
|
+
* about whether its hardware is there (a Coral delegate stays installed
|
|
59977
|
+
* after the stick leaves, D919); the live device set is
|
|
59978
|
+
* `pipelineOrchestrator.getNodeInferenceDevices`.
|
|
59979
|
+
*/
|
|
59818
59980
|
engines: array(string()).readonly(),
|
|
59819
59981
|
isHub: boolean(),
|
|
59820
59982
|
isOnline: boolean(),
|
|
@@ -60932,7 +61094,28 @@ var ResolvedInferenceConfigSchema = object({
|
|
|
60932
61094
|
format: ModelFormatSchema,
|
|
60933
61095
|
reason: string()
|
|
60934
61096
|
});
|
|
60935
|
-
|
|
61097
|
+
/**
|
|
61098
|
+
* The answer of an accelerator rescan (D919): the node's device list after
|
|
61099
|
+
* the re-probe, what changed, and the evidence that decided the Coral answer
|
|
61100
|
+
* (`usbBus` — could the USB bus be read at all; `decidedBy` — USB ids, the PCI
|
|
61101
|
+
* bus, the installed-delegate fallback, or nothing).
|
|
61102
|
+
*/
|
|
61103
|
+
var AcceleratorRescanSchema = object({
|
|
61104
|
+
devices: array(InferenceDeviceDescriptorSchema).readonly(),
|
|
61105
|
+
appeared: array(string()).readonly(),
|
|
61106
|
+
disappeared: array(string()).readonly(),
|
|
61107
|
+
usbBus: _enum(["observed", "unobservable"]),
|
|
61108
|
+
decidedBy: _enum([
|
|
61109
|
+
"usb-ids",
|
|
61110
|
+
"pci",
|
|
61111
|
+
"delegate-fallback",
|
|
61112
|
+
"none"
|
|
61113
|
+
])
|
|
61114
|
+
});
|
|
61115
|
+
method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema), method(object({ requirements: array(ModelRequirementSchema).readonly() }), ResolvedInferenceConfigSchema), method(object({ prefer: HwAccelBackendInputSchema }), HwAccelResolutionSchema), method(_void(), AcceleratorRescanSchema, {
|
|
61116
|
+
kind: "mutation",
|
|
61117
|
+
auth: "admin"
|
|
61118
|
+
});
|
|
60936
61119
|
/**
|
|
60937
61120
|
* Multi-metric electrical meter. One slice can carry any combination
|
|
60938
61121
|
* of instantaneous power (W), cumulative energy (kWh), voltage (V),
|
|
@@ -65025,60 +65208,17 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
65025
65208
|
auth: "admin",
|
|
65026
65209
|
access: "delete"
|
|
65027
65210
|
});
|
|
65028
|
-
/**
|
|
65029
|
-
* Robot-vacuum cap. Models HA `vacuum.*` entities — anything with a
|
|
65030
|
-
* cleaning lifecycle plus a return-to-base / locate surface and an
|
|
65031
|
-
* optional fan-speed selector.
|
|
65032
|
-
*
|
|
65033
|
-
* State follows HA's canonical vacuum lifecycle: `idle` / `cleaning` /
|
|
65034
|
-
* `paused` / `returning` / `docked` / `error`. `batteryLevel`
|
|
65035
|
-
* (0..100) is nullable — some vacuums don't report a battery
|
|
65036
|
-
* percentage. `fanSpeed` is the current speed token (provider-verbatim,
|
|
65037
|
-
* e.g. `'standard'` / `'turbo'`) and `availableFanSpeeds` lists the
|
|
65038
|
-
* tokens the hardware accepts so the UI renders only supported choices.
|
|
65039
|
-
*
|
|
65040
|
-
* The `setFanSpeed` method takes the bare `speed` token — the provider
|
|
65041
|
-
* validates it against the vacuum's own list. `locate` triggers the
|
|
65042
|
-
* find-me chirp; `returnToBase` sends it home.
|
|
65043
|
-
*
|
|
65044
|
-
* Consumable / waste tanks: `cleanWater` / `dirtyWater` / `detergent` /
|
|
65045
|
-
* `dustBin` each carry a nullable `{ level (0..100 %), status ('ok' |
|
|
65046
|
-
* 'low' | 'full') }` reading. Native providers (e.g. Dreame, Roborock)
|
|
65047
|
-
* SHOULD populate whichever tanks the hardware has — leave a field `null`
|
|
65048
|
-
* only when the device has no such tank at all, and use a `TankStatus`
|
|
65049
|
-
* with both inner fields `null` when the tank exists but its level is
|
|
65050
|
-
* currently unknown. HA `vacuum.*` entities expose no per-tank telemetry,
|
|
65051
|
-
* so the HA provider leaves all four `null`.
|
|
65052
|
-
*/
|
|
65053
|
-
var VacuumStateSchema = _enum([
|
|
65054
|
-
"idle",
|
|
65055
|
-
"cleaning",
|
|
65056
|
-
"paused",
|
|
65057
|
-
"returning",
|
|
65058
|
-
"docked",
|
|
65059
|
-
"drying",
|
|
65060
|
-
"error"
|
|
65061
|
-
]);
|
|
65062
|
-
/**
|
|
65063
|
-
* One consumable / waste tank on a robot vacuum (clean-water, dirty-water,
|
|
65064
|
-
* detergent or dust-bin). A tank can report a numeric fill `level` (0..100),
|
|
65065
|
-
* a discrete `status` (binary-style hardware), or both. Both `null` means the
|
|
65066
|
-
* level is currently unknown; the OWNING field being `null` means the
|
|
65067
|
-
* hardware has no such tank at all.
|
|
65068
|
-
*/
|
|
65069
|
-
var TankStatusSchema = object({
|
|
65070
|
-
/** Numeric fill 0..100 when the hardware reports a percentage; null otherwise. */
|
|
65071
|
-
level: number().min(0).max(100).nullable(),
|
|
65072
|
-
/** Discrete state when the hardware is binary-mode; null otherwise. */
|
|
65073
|
-
status: _enum([
|
|
65074
|
-
"ok",
|
|
65075
|
-
"low",
|
|
65076
|
-
"full"
|
|
65077
|
-
]).nullable()
|
|
65078
|
-
});
|
|
65079
65211
|
var VacuumControlStatusSchema = object({
|
|
65080
65212
|
/** Lifecycle state of the vacuum. */
|
|
65081
|
-
state:
|
|
65213
|
+
state: _enum([
|
|
65214
|
+
"idle",
|
|
65215
|
+
"cleaning",
|
|
65216
|
+
"paused",
|
|
65217
|
+
"returning",
|
|
65218
|
+
"docked",
|
|
65219
|
+
"drying",
|
|
65220
|
+
"error"
|
|
65221
|
+
]),
|
|
65082
65222
|
/** 0..100 battery percentage. Null when the device has no battery
|
|
65083
65223
|
* reading. */
|
|
65084
65224
|
batteryLevel: number().min(0).max(100).nullable(),
|
|
@@ -65087,14 +65227,6 @@ var VacuumControlStatusSchema = object({
|
|
|
65087
65227
|
fanSpeed: string().nullable(),
|
|
65088
65228
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
65089
65229
|
availableFanSpeeds: array(string()),
|
|
65090
|
-
/** Clean-water (mop) tank. Null when the hardware has no clean-water tank. */
|
|
65091
|
-
cleanWater: TankStatusSchema.nullable(),
|
|
65092
|
-
/** Dirty-water (recovery) tank. Null when the hardware has no dirty-water tank. */
|
|
65093
|
-
dirtyWater: TankStatusSchema.nullable(),
|
|
65094
|
-
/** Detergent tank. Null when the hardware has no detergent tank. */
|
|
65095
|
-
detergent: TankStatusSchema.nullable(),
|
|
65096
|
-
/** Dust bin. Null when the hardware has no dust bin. */
|
|
65097
|
-
dustBin: TankStatusSchema.nullable(),
|
|
65098
65230
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
65099
65231
|
progressPercent: number().min(0).max(100).nullable(),
|
|
65100
65232
|
/** Current error code (0 / null = no error). */
|
|
@@ -65156,35 +65288,14 @@ var vacuumControlCapability = {
|
|
|
65156
65288
|
*/
|
|
65157
65289
|
durability: "session",
|
|
65158
65290
|
/**
|
|
65159
|
-
* History (D850): recorded series.
|
|
65291
|
+
* History (D850): recorded series. The tanks moved to `consumables` (D915), whose
|
|
65292
|
+
* items are keyed by runtime ids and record no history.
|
|
65160
65293
|
*/
|
|
65161
|
-
history: { fields: {
|
|
65162
|
-
|
|
65163
|
-
|
|
65164
|
-
|
|
65165
|
-
|
|
65166
|
-
},
|
|
65167
|
-
"cleanWater.level": {
|
|
65168
|
-
kind: "gauge",
|
|
65169
|
-
unit: "%",
|
|
65170
|
-
deadband: 2
|
|
65171
|
-
},
|
|
65172
|
-
"dirtyWater.level": {
|
|
65173
|
-
kind: "gauge",
|
|
65174
|
-
unit: "%",
|
|
65175
|
-
deadband: 2
|
|
65176
|
-
},
|
|
65177
|
-
"detergent.level": {
|
|
65178
|
-
kind: "gauge",
|
|
65179
|
-
unit: "%",
|
|
65180
|
-
deadband: 2
|
|
65181
|
-
},
|
|
65182
|
-
"dustBin.level": {
|
|
65183
|
-
kind: "gauge",
|
|
65184
|
-
unit: "%",
|
|
65185
|
-
deadband: 2
|
|
65186
|
-
}
|
|
65187
|
-
} }
|
|
65294
|
+
history: { fields: { batteryLevel: {
|
|
65295
|
+
kind: "gauge",
|
|
65296
|
+
unit: "%",
|
|
65297
|
+
deadband: 2
|
|
65298
|
+
} } }
|
|
65188
65299
|
};
|
|
65189
65300
|
var ValveStatusSchema = object({
|
|
65190
65301
|
/** Lifecycle state of the valve. */
|
|
@@ -69578,6 +69689,12 @@ Object.freeze({
|
|
|
69578
69689
|
addonId: null,
|
|
69579
69690
|
access: "create"
|
|
69580
69691
|
},
|
|
69692
|
+
"deviceHistory.deleteOrphanSeries": {
|
|
69693
|
+
capName: "device-history",
|
|
69694
|
+
capScope: "system",
|
|
69695
|
+
addonId: null,
|
|
69696
|
+
access: "delete"
|
|
69697
|
+
},
|
|
69581
69698
|
"deviceHistory.getDeviceEnabled": {
|
|
69582
69699
|
capName: "device-history",
|
|
69583
69700
|
capScope: "system",
|
|
@@ -69596,6 +69713,12 @@ Object.freeze({
|
|
|
69596
69713
|
addonId: null,
|
|
69597
69714
|
access: "view"
|
|
69598
69715
|
},
|
|
69716
|
+
"deviceHistory.listOrphanSeries": {
|
|
69717
|
+
capName: "device-history",
|
|
69718
|
+
capScope: "system",
|
|
69719
|
+
addonId: null,
|
|
69720
|
+
access: "view"
|
|
69721
|
+
},
|
|
69599
69722
|
"deviceHistory.listSeries": {
|
|
69600
69723
|
capName: "device-history",
|
|
69601
69724
|
capScope: "system",
|
|
@@ -73220,6 +73343,12 @@ Object.freeze({
|
|
|
73220
73343
|
addonId: null,
|
|
73221
73344
|
access: "delete"
|
|
73222
73345
|
},
|
|
73346
|
+
"pipelineOrchestrator.forgetInferenceDevice": {
|
|
73347
|
+
capName: "pipeline-orchestrator",
|
|
73348
|
+
capScope: "system",
|
|
73349
|
+
addonId: null,
|
|
73350
|
+
access: "delete"
|
|
73351
|
+
},
|
|
73223
73352
|
"pipelineOrchestrator.getAgentLoad": {
|
|
73224
73353
|
capName: "pipeline-orchestrator",
|
|
73225
73354
|
capScope: "system",
|
|
@@ -73796,6 +73925,12 @@ Object.freeze({
|
|
|
73796
73925
|
addonId: null,
|
|
73797
73926
|
access: "view"
|
|
73798
73927
|
},
|
|
73928
|
+
"platformProbe.rescanAccelerators": {
|
|
73929
|
+
capName: "platform-probe",
|
|
73930
|
+
capScope: "system",
|
|
73931
|
+
addonId: null,
|
|
73932
|
+
access: "create"
|
|
73933
|
+
},
|
|
73799
73934
|
"platformProbe.resolveHwAccel": {
|
|
73800
73935
|
capName: "platform-probe",
|
|
73801
73936
|
capScope: "system",
|
|
@@ -79601,7 +79736,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
79601
79736
|
([...RULE_TEXT], [...COMBINED_ALARM]),
|
|
79602
79737
|
([...RULE_TEXT], [...DEVICE_EVENTS]),
|
|
79603
79738
|
([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
|
|
79604
|
-
([...RULE_TEXT], [...CONSUMABLE]),
|
|
79739
|
+
([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
|
|
79605
79740
|
([...RULE_TEXT], [...TANK]),
|
|
79606
79741
|
[...RULE_TEXT],
|
|
79607
79742
|
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
package/dist/addon.mjs
CHANGED
|
@@ -5574,7 +5574,7 @@ var ZodIssueCode = {
|
|
|
5574
5574
|
var ZodFirstPartyTypeKind;
|
|
5575
5575
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5576
5576
|
//#endregion
|
|
5577
|
-
//#region ../types/dist/sleep-
|
|
5577
|
+
//#region ../types/dist/sleep-CUp20JkO.mjs
|
|
5578
5578
|
/**
|
|
5579
5579
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5580
5580
|
* window to float samples (D455).
|
|
@@ -8654,7 +8654,11 @@ var ContributionSectionSchema = object({
|
|
|
8654
8654
|
literal(4)
|
|
8655
8655
|
]).optional(),
|
|
8656
8656
|
tab: string().optional(),
|
|
8657
|
-
location: _enum([
|
|
8657
|
+
location: _enum([
|
|
8658
|
+
"settings",
|
|
8659
|
+
"top-tab",
|
|
8660
|
+
"hero"
|
|
8661
|
+
]).optional(),
|
|
8658
8662
|
order: number().optional(),
|
|
8659
8663
|
fields: array(any())
|
|
8660
8664
|
});
|
|
@@ -13587,7 +13591,11 @@ var ConfigSectionWithValuesSchema = object({
|
|
|
13587
13591
|
literal(4)
|
|
13588
13592
|
]).optional(),
|
|
13589
13593
|
tab: string().optional(),
|
|
13590
|
-
location: _enum([
|
|
13594
|
+
location: _enum([
|
|
13595
|
+
"settings",
|
|
13596
|
+
"top-tab",
|
|
13597
|
+
"hero"
|
|
13598
|
+
]).optional(),
|
|
13591
13599
|
order: number().optional(),
|
|
13592
13600
|
fields: array(any())
|
|
13593
13601
|
});
|
|
@@ -17516,6 +17524,52 @@ var TierStatusSchema = object({
|
|
|
17516
17524
|
countedAt: number().nullable()
|
|
17517
17525
|
});
|
|
17518
17526
|
/** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
|
|
17527
|
+
/**
|
|
17528
|
+
* Why a series is orphan. `device-gone`: its device is absent from the
|
|
17529
|
+
* successful device listings (the departure clock). `undeclared`: its `cap:`
|
|
17530
|
+
* key is declared by no capability any more (a field a cap removed).
|
|
17531
|
+
*/
|
|
17532
|
+
var DeviceHistoryOrphanReasonSchema = _enum(["device-gone", "undeclared"]);
|
|
17533
|
+
/** Rows held per stored tier. */
|
|
17534
|
+
var TierRowsSchema = object({
|
|
17535
|
+
raw: number().int(),
|
|
17536
|
+
"5m": number().int(),
|
|
17537
|
+
"1h": number().int(),
|
|
17538
|
+
"1d": number().int()
|
|
17539
|
+
});
|
|
17540
|
+
var OrphanSeriesSchema = object({
|
|
17541
|
+
seriesId: number().int(),
|
|
17542
|
+
deviceId: number().int(),
|
|
17543
|
+
key: string(),
|
|
17544
|
+
scope: string(),
|
|
17545
|
+
/** The metric's display name; `null` when its metric row is gone too. */
|
|
17546
|
+
displayName: string().nullable(),
|
|
17547
|
+
reason: DeviceHistoryOrphanReasonSchema,
|
|
17548
|
+
/** `device-gone`: since when the device has been absent; `null` otherwise. */
|
|
17549
|
+
missingSince: number().nullable(),
|
|
17550
|
+
firstTs: number(),
|
|
17551
|
+
lastTs: number(),
|
|
17552
|
+
rows: TierRowsSchema
|
|
17553
|
+
});
|
|
17554
|
+
var DeviceHistoryOrphanDeleteRefusalSchema = _enum([
|
|
17555
|
+
"not-found",
|
|
17556
|
+
"not-orphan",
|
|
17557
|
+
"failed"
|
|
17558
|
+
]);
|
|
17559
|
+
var OrphanDeleteEntrySchema = discriminatedUnion("ok", [object({
|
|
17560
|
+
seriesId: number().int(),
|
|
17561
|
+
ok: literal(true),
|
|
17562
|
+
deleted: TierRowsSchema
|
|
17563
|
+
}), object({
|
|
17564
|
+
seriesId: number().int(),
|
|
17565
|
+
ok: literal(false),
|
|
17566
|
+
reason: DeviceHistoryOrphanDeleteRefusalSchema
|
|
17567
|
+
})]);
|
|
17568
|
+
var OrphanListSchema = object({
|
|
17569
|
+
series: array(OrphanSeriesSchema).readonly(),
|
|
17570
|
+
/** More orphans exist than {@link DEVICE_HISTORY_ORPHAN_LIST_MAX}. */
|
|
17571
|
+
truncated: boolean()
|
|
17572
|
+
});
|
|
17519
17573
|
var DeviceHistoryStatusSchema = object({
|
|
17520
17574
|
startedAt: number(),
|
|
17521
17575
|
/** The store is declared, series loaded and the first reconcile has answered. */
|
|
@@ -17613,7 +17667,10 @@ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly())
|
|
|
17613
17667
|
}), object({ enabled: boolean() }), {
|
|
17614
17668
|
kind: "mutation",
|
|
17615
17669
|
auth: "admin"
|
|
17616
|
-
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" })
|
|
17670
|
+
}), 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() }), {
|
|
17671
|
+
kind: "mutation",
|
|
17672
|
+
auth: "admin"
|
|
17673
|
+
});
|
|
17617
17674
|
var DeviceCaStatusSchema = discriminatedUnion("state", [
|
|
17618
17675
|
object({ state: literal("absent") }),
|
|
17619
17676
|
object({
|
|
@@ -50697,6 +50754,19 @@ var NodeInferenceDeviceSchema = object({
|
|
|
50697
50754
|
/** Whether the node's live probe reports the device as usable right now. */
|
|
50698
50755
|
available: boolean(),
|
|
50699
50756
|
/**
|
|
50757
|
+
* Is the device on the node at all (D919)? `present` — the live probe
|
|
50758
|
+
* reported it; `absent` — the probe ANSWERED and did not report it, so only
|
|
50759
|
+
* its stored settings remain (unplugged, moved to another node): never
|
|
50760
|
+
* eligible, whatever its stored `enabled`, and forgettable with
|
|
50761
|
+
* `forgetInferenceDevice`; `unknown` — the probe did not answer, nothing is
|
|
50762
|
+
* claimed (D315). Optional only for an orchestrator older than the field.
|
|
50763
|
+
*/
|
|
50764
|
+
presence: _enum([
|
|
50765
|
+
"present",
|
|
50766
|
+
"absent",
|
|
50767
|
+
"unknown"
|
|
50768
|
+
]).optional(),
|
|
50769
|
+
/**
|
|
50700
50770
|
* Whether this device participates in dispatch. AUTO default (spec C2):
|
|
50701
50771
|
* accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
|
|
50702
50772
|
* entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
|
|
@@ -50922,7 +50992,13 @@ method(object({
|
|
|
50922
50992
|
}), object({ success: literal(true) }), {
|
|
50923
50993
|
kind: "mutation",
|
|
50924
50994
|
auth: "admin"
|
|
50925
|
-
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50995
|
+
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50996
|
+
agentNodeId: string(),
|
|
50997
|
+
deviceKey: string()
|
|
50998
|
+
}), object({ success: literal(true) }), {
|
|
50999
|
+
kind: "mutation",
|
|
51000
|
+
auth: "admin"
|
|
51001
|
+
}), method(object({ agentNodeId: string() }), object({
|
|
50926
51002
|
success: literal(true),
|
|
50927
51003
|
/** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
|
|
50928
51004
|
effectiveModelId: string().nullable(),
|
|
@@ -55586,17 +55662,69 @@ var connectivityCapability = {
|
|
|
55586
55662
|
volatileStateFields: ["lastChangedAt"]
|
|
55587
55663
|
};
|
|
55588
55664
|
/**
|
|
55589
|
-
* Generic device-consumables capability —
|
|
55590
|
-
*
|
|
55591
|
-
* descaling cycles,
|
|
55592
|
-
*
|
|
55593
|
-
*
|
|
55594
|
-
*
|
|
55665
|
+
* Generic device-consumables capability — the ONE place a device reports what
|
|
55666
|
+
* it uses up or fills: wear parts (vacuum filters/brushes, cartridges,
|
|
55667
|
+
* descaling cycles), supplies it draws from (a vacuum's clean-water tank and
|
|
55668
|
+
* detergent, a dishwasher's salt and rinse aid) and waste it collects (a dirty
|
|
55669
|
+
* water tank, a dust bin). Each item carries its remaining life or fill and an
|
|
55670
|
+
* optional "Replaced" reset action. Device-agnostic: any provider that knows
|
|
55671
|
+
* its device tracks consumables registers it; the provider names each item
|
|
55672
|
+
* verbatim and says which `kind` it is.
|
|
55673
|
+
*
|
|
55674
|
+
* The admin UI renders it as ONE collapsible section directly under the
|
|
55675
|
+
* device page's hero card (`placement: 'hero'`), for every device bound to
|
|
55676
|
+
* this cap — never drawn by a device type's hero card itself (D915).
|
|
55595
55677
|
*
|
|
55596
55678
|
* Like `childLayout`, the cap is INERT until a provider sets items: no
|
|
55597
55679
|
* provider populates it by guessing (no HA inference). The UI renders a
|
|
55598
55680
|
* "No consumables reported" placeholder when `items` is empty.
|
|
55599
55681
|
*/
|
|
55682
|
+
/**
|
|
55683
|
+
* What an item IS, which decides which direction is bad:
|
|
55684
|
+
* - `wear` — a part that wears out (a brush, a filter); low life is bad.
|
|
55685
|
+
* - `supply` — something the device draws from (clean water, detergent,
|
|
55686
|
+
* salt, rinse aid); low or empty is bad.
|
|
55687
|
+
* - `waste` — something the device fills (dirty water, a dust bin); full is
|
|
55688
|
+
* bad.
|
|
55689
|
+
* Absent = `wear`.
|
|
55690
|
+
*/
|
|
55691
|
+
var ConsumableKindSchema = _enum([
|
|
55692
|
+
"wear",
|
|
55693
|
+
"supply",
|
|
55694
|
+
"waste"
|
|
55695
|
+
]);
|
|
55696
|
+
/**
|
|
55697
|
+
* What an item LOOKS like, which decides how a client draws it — independent
|
|
55698
|
+
* of `kind`, which decides which direction is bad:
|
|
55699
|
+
* - `part` — a part that wears (a brush, a filter, a mop pad): a wear bar,
|
|
55700
|
+
* remaining time and a reset.
|
|
55701
|
+
* - `tank` — a container of liquid (clean water, dirty water): a fill gauge.
|
|
55702
|
+
* - `product` — something bought and refilled (detergent, salt, rinse aid):
|
|
55703
|
+
* a stepped level and "refill".
|
|
55704
|
+
* - `bin` — a container that collects waste (a dust bin): a fill gauge
|
|
55705
|
+
* that warns when full.
|
|
55706
|
+
* Absent = derived from the kind ({@link consumableFormOf}).
|
|
55707
|
+
*/
|
|
55708
|
+
var ConsumableFormSchema = _enum([
|
|
55709
|
+
"part",
|
|
55710
|
+
"tank",
|
|
55711
|
+
"product",
|
|
55712
|
+
"bin"
|
|
55713
|
+
]);
|
|
55714
|
+
/** The provider's own discrete verdict on an item. */
|
|
55715
|
+
var ConsumableStatusSchema = _enum([
|
|
55716
|
+
"ok",
|
|
55717
|
+
"low",
|
|
55718
|
+
"empty",
|
|
55719
|
+
"full",
|
|
55720
|
+
"replace"
|
|
55721
|
+
]);
|
|
55722
|
+
_enum([
|
|
55723
|
+
"ok",
|
|
55724
|
+
"low",
|
|
55725
|
+
"empty",
|
|
55726
|
+
"full"
|
|
55727
|
+
]);
|
|
55600
55728
|
/** Units a remaining-life counter is reported in. Closed: the panel renders
|
|
55601
55729
|
* each. */
|
|
55602
55730
|
var ConsumableRemainingUnitSchema = _enum([
|
|
@@ -55611,18 +55739,23 @@ var ConsumableRemainingSchema = object({
|
|
|
55611
55739
|
unit: ConsumableRemainingUnitSchema
|
|
55612
55740
|
});
|
|
55613
55741
|
/** A single consumable item. Either a continuous `level` (remaining
|
|
55614
|
-
* life
|
|
55615
|
-
*
|
|
55616
|
-
* mutually exclusive; a provider may
|
|
55742
|
+
* life %, or fill % for a `supply` / `waste` item) or a discrete `status`
|
|
55743
|
+
* may be known — both may be null when a provider only knows the item
|
|
55744
|
+
* exists. `level` and `status` are not mutually exclusive; a provider may
|
|
55745
|
+
* report both. */
|
|
55617
55746
|
var ConsumableItemSchema = object({
|
|
55618
55747
|
/** Stable id, e.g. 'main-brush'. */
|
|
55619
55748
|
key: string().min(1),
|
|
55620
55749
|
/** Display name. */
|
|
55621
55750
|
label: string().min(1),
|
|
55622
|
-
/** Remaining life % when known (0..100). */
|
|
55751
|
+
/** Remaining life % (`wear`) or fill % (`supply`, `waste`) when known (0..100). */
|
|
55623
55752
|
level: number().min(0).max(100).nullable(),
|
|
55624
|
-
/**
|
|
55625
|
-
status:
|
|
55753
|
+
/** The provider's discrete verdict when known (binary mode). */
|
|
55754
|
+
status: ConsumableStatusSchema.nullable(),
|
|
55755
|
+
/** What the item is — decides whether low or full is bad. Absent = `wear`. */
|
|
55756
|
+
kind: ConsumableKindSchema.optional(),
|
|
55757
|
+
/** How the item is drawn (part, tank, product, bin). Absent = derived from `kind`. */
|
|
55758
|
+
form: ConsumableFormSchema.optional(),
|
|
55626
55759
|
/** Ms epoch of the last replace, when known. */
|
|
55627
55760
|
lastResetAt: number().nullable(),
|
|
55628
55761
|
/** Whether `reset()` is meaningful for this item. */
|
|
@@ -55645,7 +55778,7 @@ var consumablesCapability = {
|
|
|
55645
55778
|
kind: "widget",
|
|
55646
55779
|
widgetId: "host/consumables-panel",
|
|
55647
55780
|
tab: "consumables",
|
|
55648
|
-
|
|
55781
|
+
placement: "hero",
|
|
55649
55782
|
label: "Consumables",
|
|
55650
55783
|
order: 5
|
|
55651
55784
|
} },
|
|
@@ -55706,9 +55839,37 @@ reset: method(object({
|
|
|
55706
55839
|
*/
|
|
55707
55840
|
durability: "restored",
|
|
55708
55841
|
/**
|
|
55709
|
-
* History (D850):
|
|
55842
|
+
* History (D850, D917): one series per (item field, item `key`) — the item key
|
|
55843
|
+
* is the series scope, the item `label` names it. A vacuum tank's fill, a
|
|
55844
|
+
* brush's remaining life and a dishwasher's salt are each recorded the moment
|
|
55845
|
+
* their provider reports them; an item that appears later gets its series.
|
|
55710
55846
|
*/
|
|
55711
|
-
history:
|
|
55847
|
+
history: {
|
|
55848
|
+
fields: {},
|
|
55849
|
+
items: {
|
|
55850
|
+
path: "items",
|
|
55851
|
+
key: "key",
|
|
55852
|
+
label: "label",
|
|
55853
|
+
fields: {
|
|
55854
|
+
level: {
|
|
55855
|
+
kind: "gauge",
|
|
55856
|
+
unit: "%",
|
|
55857
|
+
deadband: 2,
|
|
55858
|
+
displayName: "Level"
|
|
55859
|
+
},
|
|
55860
|
+
status: {
|
|
55861
|
+
kind: "enum",
|
|
55862
|
+
displayName: "Status"
|
|
55863
|
+
},
|
|
55864
|
+
"remaining.value": {
|
|
55865
|
+
kind: "gauge",
|
|
55866
|
+
unitFrom: "remaining.unit",
|
|
55867
|
+
deadband: 1,
|
|
55868
|
+
displayName: "Remaining"
|
|
55869
|
+
}
|
|
55870
|
+
}
|
|
55871
|
+
}
|
|
55872
|
+
},
|
|
55712
55873
|
/** Clocks, not content: a re-read that changed no item costs no commit. */
|
|
55713
55874
|
volatileStateFields: ["lastChangedAt", "lastFetchedAt"]
|
|
55714
55875
|
};
|
|
@@ -56123,8 +56284,9 @@ onStatusChanged: { data: object({
|
|
|
56123
56284
|
volatileStateFields: ["lastChangedAt"]
|
|
56124
56285
|
};
|
|
56125
56286
|
/**
|
|
56126
|
-
* Smart-dishwasher cap — program lifecycle, door / remote-start gates
|
|
56127
|
-
*
|
|
56287
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates and
|
|
56288
|
+
* common program options. Salt and rinse aid are NOT here: they are items of
|
|
56289
|
+
* the device's `consumables` cap, like every other device's (D915).
|
|
56128
56290
|
*
|
|
56129
56291
|
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
56130
56292
|
* by any integration that exposes the same program / option surface.
|
|
@@ -56172,11 +56334,6 @@ var DishwasherAvailabilitySchema = _enum([
|
|
|
56172
56334
|
"offline",
|
|
56173
56335
|
"description-missing"
|
|
56174
56336
|
]);
|
|
56175
|
-
var DishwasherConsumableLevelSchema = _enum([
|
|
56176
|
-
"ok",
|
|
56177
|
-
"low",
|
|
56178
|
-
"empty"
|
|
56179
|
-
]);
|
|
56180
56337
|
var DishwasherStatusSchema = object({
|
|
56181
56338
|
availability: DishwasherAvailabilitySchema,
|
|
56182
56339
|
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
@@ -56209,8 +56366,6 @@ var DishwasherStatusSchema = object({
|
|
|
56209
56366
|
powerOn: boolean().nullable(),
|
|
56210
56367
|
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
56211
56368
|
powerState: string().nullable(),
|
|
56212
|
-
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56213
|
-
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56214
56369
|
/**
|
|
56215
56370
|
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
56216
56371
|
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
@@ -59086,7 +59241,7 @@ var motionTriggerCapability = {
|
|
|
59086
59241
|
enabled: boolean()
|
|
59087
59242
|
}), _void(), {
|
|
59088
59243
|
kind: "mutation",
|
|
59089
|
-
auth: "
|
|
59244
|
+
auth: "protected"
|
|
59090
59245
|
}) },
|
|
59091
59246
|
events: { onMotionTriggerChanged: { data: object({
|
|
59092
59247
|
deviceId: number(),
|
|
@@ -59816,6 +59971,13 @@ var TopologyNodeSchema = object({
|
|
|
59816
59971
|
cpuModel: string().nullable(),
|
|
59817
59972
|
cpuCores: number(),
|
|
59818
59973
|
memoryMB: number(),
|
|
59974
|
+
/**
|
|
59975
|
+
* The inference RUNTIMES installed on the node (`pythonRuntimes`: onnx,
|
|
59976
|
+
* openvino, edgetpu …) — not its devices. An installed runtime says nothing
|
|
59977
|
+
* about whether its hardware is there (a Coral delegate stays installed
|
|
59978
|
+
* after the stick leaves, D919); the live device set is
|
|
59979
|
+
* `pipelineOrchestrator.getNodeInferenceDevices`.
|
|
59980
|
+
*/
|
|
59819
59981
|
engines: array(string()).readonly(),
|
|
59820
59982
|
isHub: boolean(),
|
|
59821
59983
|
isOnline: boolean(),
|
|
@@ -60933,7 +61095,28 @@ var ResolvedInferenceConfigSchema = object({
|
|
|
60933
61095
|
format: ModelFormatSchema,
|
|
60934
61096
|
reason: string()
|
|
60935
61097
|
});
|
|
60936
|
-
|
|
61098
|
+
/**
|
|
61099
|
+
* The answer of an accelerator rescan (D919): the node's device list after
|
|
61100
|
+
* the re-probe, what changed, and the evidence that decided the Coral answer
|
|
61101
|
+
* (`usbBus` — could the USB bus be read at all; `decidedBy` — USB ids, the PCI
|
|
61102
|
+
* bus, the installed-delegate fallback, or nothing).
|
|
61103
|
+
*/
|
|
61104
|
+
var AcceleratorRescanSchema = object({
|
|
61105
|
+
devices: array(InferenceDeviceDescriptorSchema).readonly(),
|
|
61106
|
+
appeared: array(string()).readonly(),
|
|
61107
|
+
disappeared: array(string()).readonly(),
|
|
61108
|
+
usbBus: _enum(["observed", "unobservable"]),
|
|
61109
|
+
decidedBy: _enum([
|
|
61110
|
+
"usb-ids",
|
|
61111
|
+
"pci",
|
|
61112
|
+
"delegate-fallback",
|
|
61113
|
+
"none"
|
|
61114
|
+
])
|
|
61115
|
+
});
|
|
61116
|
+
method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema), method(object({ requirements: array(ModelRequirementSchema).readonly() }), ResolvedInferenceConfigSchema), method(object({ prefer: HwAccelBackendInputSchema }), HwAccelResolutionSchema), method(_void(), AcceleratorRescanSchema, {
|
|
61117
|
+
kind: "mutation",
|
|
61118
|
+
auth: "admin"
|
|
61119
|
+
});
|
|
60937
61120
|
/**
|
|
60938
61121
|
* Multi-metric electrical meter. One slice can carry any combination
|
|
60939
61122
|
* of instantaneous power (W), cumulative energy (kWh), voltage (V),
|
|
@@ -65026,60 +65209,17 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
65026
65209
|
auth: "admin",
|
|
65027
65210
|
access: "delete"
|
|
65028
65211
|
});
|
|
65029
|
-
/**
|
|
65030
|
-
* Robot-vacuum cap. Models HA `vacuum.*` entities — anything with a
|
|
65031
|
-
* cleaning lifecycle plus a return-to-base / locate surface and an
|
|
65032
|
-
* optional fan-speed selector.
|
|
65033
|
-
*
|
|
65034
|
-
* State follows HA's canonical vacuum lifecycle: `idle` / `cleaning` /
|
|
65035
|
-
* `paused` / `returning` / `docked` / `error`. `batteryLevel`
|
|
65036
|
-
* (0..100) is nullable — some vacuums don't report a battery
|
|
65037
|
-
* percentage. `fanSpeed` is the current speed token (provider-verbatim,
|
|
65038
|
-
* e.g. `'standard'` / `'turbo'`) and `availableFanSpeeds` lists the
|
|
65039
|
-
* tokens the hardware accepts so the UI renders only supported choices.
|
|
65040
|
-
*
|
|
65041
|
-
* The `setFanSpeed` method takes the bare `speed` token — the provider
|
|
65042
|
-
* validates it against the vacuum's own list. `locate` triggers the
|
|
65043
|
-
* find-me chirp; `returnToBase` sends it home.
|
|
65044
|
-
*
|
|
65045
|
-
* Consumable / waste tanks: `cleanWater` / `dirtyWater` / `detergent` /
|
|
65046
|
-
* `dustBin` each carry a nullable `{ level (0..100 %), status ('ok' |
|
|
65047
|
-
* 'low' | 'full') }` reading. Native providers (e.g. Dreame, Roborock)
|
|
65048
|
-
* SHOULD populate whichever tanks the hardware has — leave a field `null`
|
|
65049
|
-
* only when the device has no such tank at all, and use a `TankStatus`
|
|
65050
|
-
* with both inner fields `null` when the tank exists but its level is
|
|
65051
|
-
* currently unknown. HA `vacuum.*` entities expose no per-tank telemetry,
|
|
65052
|
-
* so the HA provider leaves all four `null`.
|
|
65053
|
-
*/
|
|
65054
|
-
var VacuumStateSchema = _enum([
|
|
65055
|
-
"idle",
|
|
65056
|
-
"cleaning",
|
|
65057
|
-
"paused",
|
|
65058
|
-
"returning",
|
|
65059
|
-
"docked",
|
|
65060
|
-
"drying",
|
|
65061
|
-
"error"
|
|
65062
|
-
]);
|
|
65063
|
-
/**
|
|
65064
|
-
* One consumable / waste tank on a robot vacuum (clean-water, dirty-water,
|
|
65065
|
-
* detergent or dust-bin). A tank can report a numeric fill `level` (0..100),
|
|
65066
|
-
* a discrete `status` (binary-style hardware), or both. Both `null` means the
|
|
65067
|
-
* level is currently unknown; the OWNING field being `null` means the
|
|
65068
|
-
* hardware has no such tank at all.
|
|
65069
|
-
*/
|
|
65070
|
-
var TankStatusSchema = object({
|
|
65071
|
-
/** Numeric fill 0..100 when the hardware reports a percentage; null otherwise. */
|
|
65072
|
-
level: number().min(0).max(100).nullable(),
|
|
65073
|
-
/** Discrete state when the hardware is binary-mode; null otherwise. */
|
|
65074
|
-
status: _enum([
|
|
65075
|
-
"ok",
|
|
65076
|
-
"low",
|
|
65077
|
-
"full"
|
|
65078
|
-
]).nullable()
|
|
65079
|
-
});
|
|
65080
65212
|
var VacuumControlStatusSchema = object({
|
|
65081
65213
|
/** Lifecycle state of the vacuum. */
|
|
65082
|
-
state:
|
|
65214
|
+
state: _enum([
|
|
65215
|
+
"idle",
|
|
65216
|
+
"cleaning",
|
|
65217
|
+
"paused",
|
|
65218
|
+
"returning",
|
|
65219
|
+
"docked",
|
|
65220
|
+
"drying",
|
|
65221
|
+
"error"
|
|
65222
|
+
]),
|
|
65083
65223
|
/** 0..100 battery percentage. Null when the device has no battery
|
|
65084
65224
|
* reading. */
|
|
65085
65225
|
batteryLevel: number().min(0).max(100).nullable(),
|
|
@@ -65088,14 +65228,6 @@ var VacuumControlStatusSchema = object({
|
|
|
65088
65228
|
fanSpeed: string().nullable(),
|
|
65089
65229
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
65090
65230
|
availableFanSpeeds: array(string()),
|
|
65091
|
-
/** Clean-water (mop) tank. Null when the hardware has no clean-water tank. */
|
|
65092
|
-
cleanWater: TankStatusSchema.nullable(),
|
|
65093
|
-
/** Dirty-water (recovery) tank. Null when the hardware has no dirty-water tank. */
|
|
65094
|
-
dirtyWater: TankStatusSchema.nullable(),
|
|
65095
|
-
/** Detergent tank. Null when the hardware has no detergent tank. */
|
|
65096
|
-
detergent: TankStatusSchema.nullable(),
|
|
65097
|
-
/** Dust bin. Null when the hardware has no dust bin. */
|
|
65098
|
-
dustBin: TankStatusSchema.nullable(),
|
|
65099
65231
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
65100
65232
|
progressPercent: number().min(0).max(100).nullable(),
|
|
65101
65233
|
/** Current error code (0 / null = no error). */
|
|
@@ -65157,35 +65289,14 @@ var vacuumControlCapability = {
|
|
|
65157
65289
|
*/
|
|
65158
65290
|
durability: "session",
|
|
65159
65291
|
/**
|
|
65160
|
-
* History (D850): recorded series.
|
|
65292
|
+
* History (D850): recorded series. The tanks moved to `consumables` (D915), whose
|
|
65293
|
+
* items are keyed by runtime ids and record no history.
|
|
65161
65294
|
*/
|
|
65162
|
-
history: { fields: {
|
|
65163
|
-
|
|
65164
|
-
|
|
65165
|
-
|
|
65166
|
-
|
|
65167
|
-
},
|
|
65168
|
-
"cleanWater.level": {
|
|
65169
|
-
kind: "gauge",
|
|
65170
|
-
unit: "%",
|
|
65171
|
-
deadband: 2
|
|
65172
|
-
},
|
|
65173
|
-
"dirtyWater.level": {
|
|
65174
|
-
kind: "gauge",
|
|
65175
|
-
unit: "%",
|
|
65176
|
-
deadband: 2
|
|
65177
|
-
},
|
|
65178
|
-
"detergent.level": {
|
|
65179
|
-
kind: "gauge",
|
|
65180
|
-
unit: "%",
|
|
65181
|
-
deadband: 2
|
|
65182
|
-
},
|
|
65183
|
-
"dustBin.level": {
|
|
65184
|
-
kind: "gauge",
|
|
65185
|
-
unit: "%",
|
|
65186
|
-
deadband: 2
|
|
65187
|
-
}
|
|
65188
|
-
} }
|
|
65295
|
+
history: { fields: { batteryLevel: {
|
|
65296
|
+
kind: "gauge",
|
|
65297
|
+
unit: "%",
|
|
65298
|
+
deadband: 2
|
|
65299
|
+
} } }
|
|
65189
65300
|
};
|
|
65190
65301
|
var ValveStatusSchema = object({
|
|
65191
65302
|
/** Lifecycle state of the valve. */
|
|
@@ -69579,6 +69690,12 @@ Object.freeze({
|
|
|
69579
69690
|
addonId: null,
|
|
69580
69691
|
access: "create"
|
|
69581
69692
|
},
|
|
69693
|
+
"deviceHistory.deleteOrphanSeries": {
|
|
69694
|
+
capName: "device-history",
|
|
69695
|
+
capScope: "system",
|
|
69696
|
+
addonId: null,
|
|
69697
|
+
access: "delete"
|
|
69698
|
+
},
|
|
69582
69699
|
"deviceHistory.getDeviceEnabled": {
|
|
69583
69700
|
capName: "device-history",
|
|
69584
69701
|
capScope: "system",
|
|
@@ -69597,6 +69714,12 @@ Object.freeze({
|
|
|
69597
69714
|
addonId: null,
|
|
69598
69715
|
access: "view"
|
|
69599
69716
|
},
|
|
69717
|
+
"deviceHistory.listOrphanSeries": {
|
|
69718
|
+
capName: "device-history",
|
|
69719
|
+
capScope: "system",
|
|
69720
|
+
addonId: null,
|
|
69721
|
+
access: "view"
|
|
69722
|
+
},
|
|
69600
69723
|
"deviceHistory.listSeries": {
|
|
69601
69724
|
capName: "device-history",
|
|
69602
69725
|
capScope: "system",
|
|
@@ -73221,6 +73344,12 @@ Object.freeze({
|
|
|
73221
73344
|
addonId: null,
|
|
73222
73345
|
access: "delete"
|
|
73223
73346
|
},
|
|
73347
|
+
"pipelineOrchestrator.forgetInferenceDevice": {
|
|
73348
|
+
capName: "pipeline-orchestrator",
|
|
73349
|
+
capScope: "system",
|
|
73350
|
+
addonId: null,
|
|
73351
|
+
access: "delete"
|
|
73352
|
+
},
|
|
73224
73353
|
"pipelineOrchestrator.getAgentLoad": {
|
|
73225
73354
|
capName: "pipeline-orchestrator",
|
|
73226
73355
|
capScope: "system",
|
|
@@ -73797,6 +73926,12 @@ Object.freeze({
|
|
|
73797
73926
|
addonId: null,
|
|
73798
73927
|
access: "view"
|
|
73799
73928
|
},
|
|
73929
|
+
"platformProbe.rescanAccelerators": {
|
|
73930
|
+
capName: "platform-probe",
|
|
73931
|
+
capScope: "system",
|
|
73932
|
+
addonId: null,
|
|
73933
|
+
access: "create"
|
|
73934
|
+
},
|
|
73800
73935
|
"platformProbe.resolveHwAccel": {
|
|
73801
73936
|
capName: "platform-probe",
|
|
73802
73937
|
capScope: "system",
|
|
@@ -79602,7 +79737,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
79602
79737
|
([...RULE_TEXT], [...COMBINED_ALARM]),
|
|
79603
79738
|
([...RULE_TEXT], [...DEVICE_EVENTS]),
|
|
79604
79739
|
([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
|
|
79605
|
-
([...RULE_TEXT], [...CONSUMABLE]),
|
|
79740
|
+
([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
|
|
79606
79741
|
([...RULE_TEXT], [...TANK]),
|
|
79607
79742
|
[...RULE_TEXT],
|
|
79608
79743
|
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
package/package.json
CHANGED