@camstack/addon-provider-amcrest 0.2.154 → 0.2.156
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
|
@@ -5467,7 +5467,7 @@ var ZodIssueCode = {
|
|
|
5467
5467
|
var ZodFirstPartyTypeKind;
|
|
5468
5468
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5469
5469
|
//#endregion
|
|
5470
|
-
//#region ../types/dist/sleep-
|
|
5470
|
+
//#region ../types/dist/sleep-CUp20JkO.mjs
|
|
5471
5471
|
/**
|
|
5472
5472
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5473
5473
|
* window to float samples (D455).
|
|
@@ -8359,7 +8359,11 @@ var ContributionSectionSchema = object({
|
|
|
8359
8359
|
literal(4)
|
|
8360
8360
|
]).optional(),
|
|
8361
8361
|
tab: string().optional(),
|
|
8362
|
-
location: _enum([
|
|
8362
|
+
location: _enum([
|
|
8363
|
+
"settings",
|
|
8364
|
+
"top-tab",
|
|
8365
|
+
"hero"
|
|
8366
|
+
]).optional(),
|
|
8363
8367
|
order: number().optional(),
|
|
8364
8368
|
fields: array(any())
|
|
8365
8369
|
});
|
|
@@ -13316,7 +13320,11 @@ var ConfigSectionWithValuesSchema = object({
|
|
|
13316
13320
|
literal(4)
|
|
13317
13321
|
]).optional(),
|
|
13318
13322
|
tab: string().optional(),
|
|
13319
|
-
location: _enum([
|
|
13323
|
+
location: _enum([
|
|
13324
|
+
"settings",
|
|
13325
|
+
"top-tab",
|
|
13326
|
+
"hero"
|
|
13327
|
+
]).optional(),
|
|
13320
13328
|
order: number().optional(),
|
|
13321
13329
|
fields: array(any())
|
|
13322
13330
|
});
|
|
@@ -17196,6 +17204,52 @@ var TierStatusSchema = object({
|
|
|
17196
17204
|
countedAt: number().nullable()
|
|
17197
17205
|
});
|
|
17198
17206
|
/** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
|
|
17207
|
+
/**
|
|
17208
|
+
* Why a series is orphan. `device-gone`: its device is absent from the
|
|
17209
|
+
* successful device listings (the departure clock). `undeclared`: its `cap:`
|
|
17210
|
+
* key is declared by no capability any more (a field a cap removed).
|
|
17211
|
+
*/
|
|
17212
|
+
var DeviceHistoryOrphanReasonSchema = _enum(["device-gone", "undeclared"]);
|
|
17213
|
+
/** Rows held per stored tier. */
|
|
17214
|
+
var TierRowsSchema = object({
|
|
17215
|
+
raw: number().int(),
|
|
17216
|
+
"5m": number().int(),
|
|
17217
|
+
"1h": number().int(),
|
|
17218
|
+
"1d": number().int()
|
|
17219
|
+
});
|
|
17220
|
+
var OrphanSeriesSchema = object({
|
|
17221
|
+
seriesId: number().int(),
|
|
17222
|
+
deviceId: number().int(),
|
|
17223
|
+
key: string(),
|
|
17224
|
+
scope: string(),
|
|
17225
|
+
/** The metric's display name; `null` when its metric row is gone too. */
|
|
17226
|
+
displayName: string().nullable(),
|
|
17227
|
+
reason: DeviceHistoryOrphanReasonSchema,
|
|
17228
|
+
/** `device-gone`: since when the device has been absent; `null` otherwise. */
|
|
17229
|
+
missingSince: number().nullable(),
|
|
17230
|
+
firstTs: number(),
|
|
17231
|
+
lastTs: number(),
|
|
17232
|
+
rows: TierRowsSchema
|
|
17233
|
+
});
|
|
17234
|
+
var DeviceHistoryOrphanDeleteRefusalSchema = _enum([
|
|
17235
|
+
"not-found",
|
|
17236
|
+
"not-orphan",
|
|
17237
|
+
"failed"
|
|
17238
|
+
]);
|
|
17239
|
+
var OrphanDeleteEntrySchema = discriminatedUnion("ok", [object({
|
|
17240
|
+
seriesId: number().int(),
|
|
17241
|
+
ok: literal(true),
|
|
17242
|
+
deleted: TierRowsSchema
|
|
17243
|
+
}), object({
|
|
17244
|
+
seriesId: number().int(),
|
|
17245
|
+
ok: literal(false),
|
|
17246
|
+
reason: DeviceHistoryOrphanDeleteRefusalSchema
|
|
17247
|
+
})]);
|
|
17248
|
+
var OrphanListSchema = object({
|
|
17249
|
+
series: array(OrphanSeriesSchema).readonly(),
|
|
17250
|
+
/** More orphans exist than {@link DEVICE_HISTORY_ORPHAN_LIST_MAX}. */
|
|
17251
|
+
truncated: boolean()
|
|
17252
|
+
});
|
|
17199
17253
|
var DeviceHistoryStatusSchema = object({
|
|
17200
17254
|
startedAt: number(),
|
|
17201
17255
|
/** The store is declared, series loaded and the first reconcile has answered. */
|
|
@@ -17293,7 +17347,10 @@ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly())
|
|
|
17293
17347
|
}), object({ enabled: boolean() }), {
|
|
17294
17348
|
kind: "mutation",
|
|
17295
17349
|
auth: "admin"
|
|
17296
|
-
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" })
|
|
17350
|
+
}), 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() }), {
|
|
17351
|
+
kind: "mutation",
|
|
17352
|
+
auth: "admin"
|
|
17353
|
+
});
|
|
17297
17354
|
var DeviceCaStatusSchema = discriminatedUnion("state", [
|
|
17298
17355
|
object({ state: literal("absent") }),
|
|
17299
17356
|
object({
|
|
@@ -50360,6 +50417,19 @@ var NodeInferenceDeviceSchema = object({
|
|
|
50360
50417
|
/** Whether the node's live probe reports the device as usable right now. */
|
|
50361
50418
|
available: boolean(),
|
|
50362
50419
|
/**
|
|
50420
|
+
* Is the device on the node at all (D919)? `present` — the live probe
|
|
50421
|
+
* reported it; `absent` — the probe ANSWERED and did not report it, so only
|
|
50422
|
+
* its stored settings remain (unplugged, moved to another node): never
|
|
50423
|
+
* eligible, whatever its stored `enabled`, and forgettable with
|
|
50424
|
+
* `forgetInferenceDevice`; `unknown` — the probe did not answer, nothing is
|
|
50425
|
+
* claimed (D315). Optional only for an orchestrator older than the field.
|
|
50426
|
+
*/
|
|
50427
|
+
presence: _enum([
|
|
50428
|
+
"present",
|
|
50429
|
+
"absent",
|
|
50430
|
+
"unknown"
|
|
50431
|
+
]).optional(),
|
|
50432
|
+
/**
|
|
50363
50433
|
* Whether this device participates in dispatch. AUTO default (spec C2):
|
|
50364
50434
|
* accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
|
|
50365
50435
|
* entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
|
|
@@ -50585,7 +50655,13 @@ method(object({
|
|
|
50585
50655
|
}), object({ success: literal(true) }), {
|
|
50586
50656
|
kind: "mutation",
|
|
50587
50657
|
auth: "admin"
|
|
50588
|
-
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50658
|
+
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50659
|
+
agentNodeId: string(),
|
|
50660
|
+
deviceKey: string()
|
|
50661
|
+
}), object({ success: literal(true) }), {
|
|
50662
|
+
kind: "mutation",
|
|
50663
|
+
auth: "admin"
|
|
50664
|
+
}), method(object({ agentNodeId: string() }), object({
|
|
50589
50665
|
success: literal(true),
|
|
50590
50666
|
/** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
|
|
50591
50667
|
effectiveModelId: string().nullable(),
|
|
@@ -55762,17 +55838,69 @@ var connectivityCapability = {
|
|
|
55762
55838
|
volatileStateFields: ["lastChangedAt"]
|
|
55763
55839
|
};
|
|
55764
55840
|
/**
|
|
55765
|
-
* Generic device-consumables capability —
|
|
55766
|
-
*
|
|
55767
|
-
* descaling cycles,
|
|
55768
|
-
*
|
|
55769
|
-
*
|
|
55770
|
-
*
|
|
55841
|
+
* Generic device-consumables capability — the ONE place a device reports what
|
|
55842
|
+
* it uses up or fills: wear parts (vacuum filters/brushes, cartridges,
|
|
55843
|
+
* descaling cycles), supplies it draws from (a vacuum's clean-water tank and
|
|
55844
|
+
* detergent, a dishwasher's salt and rinse aid) and waste it collects (a dirty
|
|
55845
|
+
* water tank, a dust bin). Each item carries its remaining life or fill and an
|
|
55846
|
+
* optional "Replaced" reset action. Device-agnostic: any provider that knows
|
|
55847
|
+
* its device tracks consumables registers it; the provider names each item
|
|
55848
|
+
* verbatim and says which `kind` it is.
|
|
55849
|
+
*
|
|
55850
|
+
* The admin UI renders it as ONE collapsible section directly under the
|
|
55851
|
+
* device page's hero card (`placement: 'hero'`), for every device bound to
|
|
55852
|
+
* this cap — never drawn by a device type's hero card itself (D915).
|
|
55771
55853
|
*
|
|
55772
55854
|
* Like `childLayout`, the cap is INERT until a provider sets items: no
|
|
55773
55855
|
* provider populates it by guessing (no HA inference). The UI renders a
|
|
55774
55856
|
* "No consumables reported" placeholder when `items` is empty.
|
|
55775
55857
|
*/
|
|
55858
|
+
/**
|
|
55859
|
+
* What an item IS, which decides which direction is bad:
|
|
55860
|
+
* - `wear` — a part that wears out (a brush, a filter); low life is bad.
|
|
55861
|
+
* - `supply` — something the device draws from (clean water, detergent,
|
|
55862
|
+
* salt, rinse aid); low or empty is bad.
|
|
55863
|
+
* - `waste` — something the device fills (dirty water, a dust bin); full is
|
|
55864
|
+
* bad.
|
|
55865
|
+
* Absent = `wear`.
|
|
55866
|
+
*/
|
|
55867
|
+
var ConsumableKindSchema = _enum([
|
|
55868
|
+
"wear",
|
|
55869
|
+
"supply",
|
|
55870
|
+
"waste"
|
|
55871
|
+
]);
|
|
55872
|
+
/**
|
|
55873
|
+
* What an item LOOKS like, which decides how a client draws it — independent
|
|
55874
|
+
* of `kind`, which decides which direction is bad:
|
|
55875
|
+
* - `part` — a part that wears (a brush, a filter, a mop pad): a wear bar,
|
|
55876
|
+
* remaining time and a reset.
|
|
55877
|
+
* - `tank` — a container of liquid (clean water, dirty water): a fill gauge.
|
|
55878
|
+
* - `product` — something bought and refilled (detergent, salt, rinse aid):
|
|
55879
|
+
* a stepped level and "refill".
|
|
55880
|
+
* - `bin` — a container that collects waste (a dust bin): a fill gauge
|
|
55881
|
+
* that warns when full.
|
|
55882
|
+
* Absent = derived from the kind ({@link consumableFormOf}).
|
|
55883
|
+
*/
|
|
55884
|
+
var ConsumableFormSchema = _enum([
|
|
55885
|
+
"part",
|
|
55886
|
+
"tank",
|
|
55887
|
+
"product",
|
|
55888
|
+
"bin"
|
|
55889
|
+
]);
|
|
55890
|
+
/** The provider's own discrete verdict on an item. */
|
|
55891
|
+
var ConsumableStatusSchema = _enum([
|
|
55892
|
+
"ok",
|
|
55893
|
+
"low",
|
|
55894
|
+
"empty",
|
|
55895
|
+
"full",
|
|
55896
|
+
"replace"
|
|
55897
|
+
]);
|
|
55898
|
+
_enum([
|
|
55899
|
+
"ok",
|
|
55900
|
+
"low",
|
|
55901
|
+
"empty",
|
|
55902
|
+
"full"
|
|
55903
|
+
]);
|
|
55776
55904
|
/** Units a remaining-life counter is reported in. Closed: the panel renders
|
|
55777
55905
|
* each. */
|
|
55778
55906
|
var ConsumableRemainingUnitSchema = _enum([
|
|
@@ -55787,18 +55915,23 @@ var ConsumableRemainingSchema = object({
|
|
|
55787
55915
|
unit: ConsumableRemainingUnitSchema
|
|
55788
55916
|
});
|
|
55789
55917
|
/** A single consumable item. Either a continuous `level` (remaining
|
|
55790
|
-
* life
|
|
55791
|
-
*
|
|
55792
|
-
* mutually exclusive; a provider may
|
|
55918
|
+
* life %, or fill % for a `supply` / `waste` item) or a discrete `status`
|
|
55919
|
+
* may be known — both may be null when a provider only knows the item
|
|
55920
|
+
* exists. `level` and `status` are not mutually exclusive; a provider may
|
|
55921
|
+
* report both. */
|
|
55793
55922
|
var ConsumableItemSchema = object({
|
|
55794
55923
|
/** Stable id, e.g. 'main-brush'. */
|
|
55795
55924
|
key: string().min(1),
|
|
55796
55925
|
/** Display name. */
|
|
55797
55926
|
label: string().min(1),
|
|
55798
|
-
/** Remaining life % when known (0..100). */
|
|
55927
|
+
/** Remaining life % (`wear`) or fill % (`supply`, `waste`) when known (0..100). */
|
|
55799
55928
|
level: number().min(0).max(100).nullable(),
|
|
55800
|
-
/**
|
|
55801
|
-
status:
|
|
55929
|
+
/** The provider's discrete verdict when known (binary mode). */
|
|
55930
|
+
status: ConsumableStatusSchema.nullable(),
|
|
55931
|
+
/** What the item is — decides whether low or full is bad. Absent = `wear`. */
|
|
55932
|
+
kind: ConsumableKindSchema.optional(),
|
|
55933
|
+
/** How the item is drawn (part, tank, product, bin). Absent = derived from `kind`. */
|
|
55934
|
+
form: ConsumableFormSchema.optional(),
|
|
55802
55935
|
/** Ms epoch of the last replace, when known. */
|
|
55803
55936
|
lastResetAt: number().nullable(),
|
|
55804
55937
|
/** Whether `reset()` is meaningful for this item. */
|
|
@@ -55821,7 +55954,7 @@ var consumablesCapability = {
|
|
|
55821
55954
|
kind: "widget",
|
|
55822
55955
|
widgetId: "host/consumables-panel",
|
|
55823
55956
|
tab: "consumables",
|
|
55824
|
-
|
|
55957
|
+
placement: "hero",
|
|
55825
55958
|
label: "Consumables",
|
|
55826
55959
|
order: 5
|
|
55827
55960
|
} },
|
|
@@ -55882,9 +56015,37 @@ reset: method(object({
|
|
|
55882
56015
|
*/
|
|
55883
56016
|
durability: "restored",
|
|
55884
56017
|
/**
|
|
55885
|
-
* History (D850):
|
|
56018
|
+
* History (D850, D917): one series per (item field, item `key`) — the item key
|
|
56019
|
+
* is the series scope, the item `label` names it. A vacuum tank's fill, a
|
|
56020
|
+
* brush's remaining life and a dishwasher's salt are each recorded the moment
|
|
56021
|
+
* their provider reports them; an item that appears later gets its series.
|
|
55886
56022
|
*/
|
|
55887
|
-
history:
|
|
56023
|
+
history: {
|
|
56024
|
+
fields: {},
|
|
56025
|
+
items: {
|
|
56026
|
+
path: "items",
|
|
56027
|
+
key: "key",
|
|
56028
|
+
label: "label",
|
|
56029
|
+
fields: {
|
|
56030
|
+
level: {
|
|
56031
|
+
kind: "gauge",
|
|
56032
|
+
unit: "%",
|
|
56033
|
+
deadband: 2,
|
|
56034
|
+
displayName: "Level"
|
|
56035
|
+
},
|
|
56036
|
+
status: {
|
|
56037
|
+
kind: "enum",
|
|
56038
|
+
displayName: "Status"
|
|
56039
|
+
},
|
|
56040
|
+
"remaining.value": {
|
|
56041
|
+
kind: "gauge",
|
|
56042
|
+
unitFrom: "remaining.unit",
|
|
56043
|
+
deadband: 1,
|
|
56044
|
+
displayName: "Remaining"
|
|
56045
|
+
}
|
|
56046
|
+
}
|
|
56047
|
+
}
|
|
56048
|
+
},
|
|
55888
56049
|
/** Clocks, not content: a re-read that changed no item costs no commit. */
|
|
55889
56050
|
volatileStateFields: ["lastChangedAt", "lastFetchedAt"]
|
|
55890
56051
|
};
|
|
@@ -56299,8 +56460,9 @@ onStatusChanged: { data: object({
|
|
|
56299
56460
|
volatileStateFields: ["lastChangedAt"]
|
|
56300
56461
|
};
|
|
56301
56462
|
/**
|
|
56302
|
-
* Smart-dishwasher cap — program lifecycle, door / remote-start gates
|
|
56303
|
-
*
|
|
56463
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates and
|
|
56464
|
+
* common program options. Salt and rinse aid are NOT here: they are items of
|
|
56465
|
+
* the device's `consumables` cap, like every other device's (D915).
|
|
56304
56466
|
*
|
|
56305
56467
|
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
56306
56468
|
* by any integration that exposes the same program / option surface.
|
|
@@ -56348,11 +56510,6 @@ var DishwasherAvailabilitySchema = _enum([
|
|
|
56348
56510
|
"offline",
|
|
56349
56511
|
"description-missing"
|
|
56350
56512
|
]);
|
|
56351
|
-
var DishwasherConsumableLevelSchema = _enum([
|
|
56352
|
-
"ok",
|
|
56353
|
-
"low",
|
|
56354
|
-
"empty"
|
|
56355
|
-
]);
|
|
56356
56513
|
var DishwasherStatusSchema = object({
|
|
56357
56514
|
availability: DishwasherAvailabilitySchema,
|
|
56358
56515
|
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
@@ -56385,8 +56542,6 @@ var DishwasherStatusSchema = object({
|
|
|
56385
56542
|
powerOn: boolean().nullable(),
|
|
56386
56543
|
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
56387
56544
|
powerState: string().nullable(),
|
|
56388
|
-
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56389
|
-
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56390
56545
|
/**
|
|
56391
56546
|
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
56392
56547
|
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
@@ -59262,7 +59417,7 @@ var motionTriggerCapability = {
|
|
|
59262
59417
|
enabled: boolean()
|
|
59263
59418
|
}), _void(), {
|
|
59264
59419
|
kind: "mutation",
|
|
59265
|
-
auth: "
|
|
59420
|
+
auth: "protected"
|
|
59266
59421
|
}) },
|
|
59267
59422
|
events: { onMotionTriggerChanged: { data: object({
|
|
59268
59423
|
deviceId: number(),
|
|
@@ -59992,6 +60147,13 @@ var TopologyNodeSchema = object({
|
|
|
59992
60147
|
cpuModel: string().nullable(),
|
|
59993
60148
|
cpuCores: number(),
|
|
59994
60149
|
memoryMB: number(),
|
|
60150
|
+
/**
|
|
60151
|
+
* The inference RUNTIMES installed on the node (`pythonRuntimes`: onnx,
|
|
60152
|
+
* openvino, edgetpu …) — not its devices. An installed runtime says nothing
|
|
60153
|
+
* about whether its hardware is there (a Coral delegate stays installed
|
|
60154
|
+
* after the stick leaves, D919); the live device set is
|
|
60155
|
+
* `pipelineOrchestrator.getNodeInferenceDevices`.
|
|
60156
|
+
*/
|
|
59995
60157
|
engines: array(string()).readonly(),
|
|
59996
60158
|
isHub: boolean(),
|
|
59997
60159
|
isOnline: boolean(),
|
|
@@ -61155,7 +61317,28 @@ var ResolvedInferenceConfigSchema = object({
|
|
|
61155
61317
|
format: ModelFormatSchema,
|
|
61156
61318
|
reason: string()
|
|
61157
61319
|
});
|
|
61158
|
-
|
|
61320
|
+
/**
|
|
61321
|
+
* The answer of an accelerator rescan (D919): the node's device list after
|
|
61322
|
+
* the re-probe, what changed, and the evidence that decided the Coral answer
|
|
61323
|
+
* (`usbBus` — could the USB bus be read at all; `decidedBy` — USB ids, the PCI
|
|
61324
|
+
* bus, the installed-delegate fallback, or nothing).
|
|
61325
|
+
*/
|
|
61326
|
+
var AcceleratorRescanSchema = object({
|
|
61327
|
+
devices: array(InferenceDeviceDescriptorSchema).readonly(),
|
|
61328
|
+
appeared: array(string()).readonly(),
|
|
61329
|
+
disappeared: array(string()).readonly(),
|
|
61330
|
+
usbBus: _enum(["observed", "unobservable"]),
|
|
61331
|
+
decidedBy: _enum([
|
|
61332
|
+
"usb-ids",
|
|
61333
|
+
"pci",
|
|
61334
|
+
"delegate-fallback",
|
|
61335
|
+
"none"
|
|
61336
|
+
])
|
|
61337
|
+
});
|
|
61338
|
+
method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema), method(object({ requirements: array(ModelRequirementSchema).readonly() }), ResolvedInferenceConfigSchema), method(object({ prefer: HwAccelBackendInputSchema }), HwAccelResolutionSchema), method(_void(), AcceleratorRescanSchema, {
|
|
61339
|
+
kind: "mutation",
|
|
61340
|
+
auth: "admin"
|
|
61341
|
+
});
|
|
61159
61342
|
/**
|
|
61160
61343
|
* Multi-metric electrical meter. One slice can carry any combination
|
|
61161
61344
|
* of instantaneous power (W), cumulative energy (kWh), voltage (V),
|
|
@@ -65664,60 +65847,17 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
65664
65847
|
auth: "admin",
|
|
65665
65848
|
access: "delete"
|
|
65666
65849
|
});
|
|
65667
|
-
/**
|
|
65668
|
-
* Robot-vacuum cap. Models HA `vacuum.*` entities — anything with a
|
|
65669
|
-
* cleaning lifecycle plus a return-to-base / locate surface and an
|
|
65670
|
-
* optional fan-speed selector.
|
|
65671
|
-
*
|
|
65672
|
-
* State follows HA's canonical vacuum lifecycle: `idle` / `cleaning` /
|
|
65673
|
-
* `paused` / `returning` / `docked` / `error`. `batteryLevel`
|
|
65674
|
-
* (0..100) is nullable — some vacuums don't report a battery
|
|
65675
|
-
* percentage. `fanSpeed` is the current speed token (provider-verbatim,
|
|
65676
|
-
* e.g. `'standard'` / `'turbo'`) and `availableFanSpeeds` lists the
|
|
65677
|
-
* tokens the hardware accepts so the UI renders only supported choices.
|
|
65678
|
-
*
|
|
65679
|
-
* The `setFanSpeed` method takes the bare `speed` token — the provider
|
|
65680
|
-
* validates it against the vacuum's own list. `locate` triggers the
|
|
65681
|
-
* find-me chirp; `returnToBase` sends it home.
|
|
65682
|
-
*
|
|
65683
|
-
* Consumable / waste tanks: `cleanWater` / `dirtyWater` / `detergent` /
|
|
65684
|
-
* `dustBin` each carry a nullable `{ level (0..100 %), status ('ok' |
|
|
65685
|
-
* 'low' | 'full') }` reading. Native providers (e.g. Dreame, Roborock)
|
|
65686
|
-
* SHOULD populate whichever tanks the hardware has — leave a field `null`
|
|
65687
|
-
* only when the device has no such tank at all, and use a `TankStatus`
|
|
65688
|
-
* with both inner fields `null` when the tank exists but its level is
|
|
65689
|
-
* currently unknown. HA `vacuum.*` entities expose no per-tank telemetry,
|
|
65690
|
-
* so the HA provider leaves all four `null`.
|
|
65691
|
-
*/
|
|
65692
|
-
var VacuumStateSchema = _enum([
|
|
65693
|
-
"idle",
|
|
65694
|
-
"cleaning",
|
|
65695
|
-
"paused",
|
|
65696
|
-
"returning",
|
|
65697
|
-
"docked",
|
|
65698
|
-
"drying",
|
|
65699
|
-
"error"
|
|
65700
|
-
]);
|
|
65701
|
-
/**
|
|
65702
|
-
* One consumable / waste tank on a robot vacuum (clean-water, dirty-water,
|
|
65703
|
-
* detergent or dust-bin). A tank can report a numeric fill `level` (0..100),
|
|
65704
|
-
* a discrete `status` (binary-style hardware), or both. Both `null` means the
|
|
65705
|
-
* level is currently unknown; the OWNING field being `null` means the
|
|
65706
|
-
* hardware has no such tank at all.
|
|
65707
|
-
*/
|
|
65708
|
-
var TankStatusSchema = object({
|
|
65709
|
-
/** Numeric fill 0..100 when the hardware reports a percentage; null otherwise. */
|
|
65710
|
-
level: number().min(0).max(100).nullable(),
|
|
65711
|
-
/** Discrete state when the hardware is binary-mode; null otherwise. */
|
|
65712
|
-
status: _enum([
|
|
65713
|
-
"ok",
|
|
65714
|
-
"low",
|
|
65715
|
-
"full"
|
|
65716
|
-
]).nullable()
|
|
65717
|
-
});
|
|
65718
65850
|
var VacuumControlStatusSchema = object({
|
|
65719
65851
|
/** Lifecycle state of the vacuum. */
|
|
65720
|
-
state:
|
|
65852
|
+
state: _enum([
|
|
65853
|
+
"idle",
|
|
65854
|
+
"cleaning",
|
|
65855
|
+
"paused",
|
|
65856
|
+
"returning",
|
|
65857
|
+
"docked",
|
|
65858
|
+
"drying",
|
|
65859
|
+
"error"
|
|
65860
|
+
]),
|
|
65721
65861
|
/** 0..100 battery percentage. Null when the device has no battery
|
|
65722
65862
|
* reading. */
|
|
65723
65863
|
batteryLevel: number().min(0).max(100).nullable(),
|
|
@@ -65726,14 +65866,6 @@ var VacuumControlStatusSchema = object({
|
|
|
65726
65866
|
fanSpeed: string().nullable(),
|
|
65727
65867
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
65728
65868
|
availableFanSpeeds: array(string()),
|
|
65729
|
-
/** Clean-water (mop) tank. Null when the hardware has no clean-water tank. */
|
|
65730
|
-
cleanWater: TankStatusSchema.nullable(),
|
|
65731
|
-
/** Dirty-water (recovery) tank. Null when the hardware has no dirty-water tank. */
|
|
65732
|
-
dirtyWater: TankStatusSchema.nullable(),
|
|
65733
|
-
/** Detergent tank. Null when the hardware has no detergent tank. */
|
|
65734
|
-
detergent: TankStatusSchema.nullable(),
|
|
65735
|
-
/** Dust bin. Null when the hardware has no dust bin. */
|
|
65736
|
-
dustBin: TankStatusSchema.nullable(),
|
|
65737
65869
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
65738
65870
|
progressPercent: number().min(0).max(100).nullable(),
|
|
65739
65871
|
/** Current error code (0 / null = no error). */
|
|
@@ -65795,35 +65927,14 @@ var vacuumControlCapability = {
|
|
|
65795
65927
|
*/
|
|
65796
65928
|
durability: "session",
|
|
65797
65929
|
/**
|
|
65798
|
-
* History (D850): recorded series.
|
|
65930
|
+
* History (D850): recorded series. The tanks moved to `consumables` (D915), whose
|
|
65931
|
+
* items are keyed by runtime ids and record no history.
|
|
65799
65932
|
*/
|
|
65800
|
-
history: { fields: {
|
|
65801
|
-
|
|
65802
|
-
|
|
65803
|
-
|
|
65804
|
-
|
|
65805
|
-
},
|
|
65806
|
-
"cleanWater.level": {
|
|
65807
|
-
kind: "gauge",
|
|
65808
|
-
unit: "%",
|
|
65809
|
-
deadband: 2
|
|
65810
|
-
},
|
|
65811
|
-
"dirtyWater.level": {
|
|
65812
|
-
kind: "gauge",
|
|
65813
|
-
unit: "%",
|
|
65814
|
-
deadband: 2
|
|
65815
|
-
},
|
|
65816
|
-
"detergent.level": {
|
|
65817
|
-
kind: "gauge",
|
|
65818
|
-
unit: "%",
|
|
65819
|
-
deadband: 2
|
|
65820
|
-
},
|
|
65821
|
-
"dustBin.level": {
|
|
65822
|
-
kind: "gauge",
|
|
65823
|
-
unit: "%",
|
|
65824
|
-
deadband: 2
|
|
65825
|
-
}
|
|
65826
|
-
} }
|
|
65933
|
+
history: { fields: { batteryLevel: {
|
|
65934
|
+
kind: "gauge",
|
|
65935
|
+
unit: "%",
|
|
65936
|
+
deadband: 2
|
|
65937
|
+
} } }
|
|
65827
65938
|
};
|
|
65828
65939
|
var ValveStatusSchema = object({
|
|
65829
65940
|
/** Lifecycle state of the valve. */
|
|
@@ -70221,6 +70332,12 @@ Object.freeze({
|
|
|
70221
70332
|
addonId: null,
|
|
70222
70333
|
access: "create"
|
|
70223
70334
|
},
|
|
70335
|
+
"deviceHistory.deleteOrphanSeries": {
|
|
70336
|
+
capName: "device-history",
|
|
70337
|
+
capScope: "system",
|
|
70338
|
+
addonId: null,
|
|
70339
|
+
access: "delete"
|
|
70340
|
+
},
|
|
70224
70341
|
"deviceHistory.getDeviceEnabled": {
|
|
70225
70342
|
capName: "device-history",
|
|
70226
70343
|
capScope: "system",
|
|
@@ -70239,6 +70356,12 @@ Object.freeze({
|
|
|
70239
70356
|
addonId: null,
|
|
70240
70357
|
access: "view"
|
|
70241
70358
|
},
|
|
70359
|
+
"deviceHistory.listOrphanSeries": {
|
|
70360
|
+
capName: "device-history",
|
|
70361
|
+
capScope: "system",
|
|
70362
|
+
addonId: null,
|
|
70363
|
+
access: "view"
|
|
70364
|
+
},
|
|
70242
70365
|
"deviceHistory.listSeries": {
|
|
70243
70366
|
capName: "device-history",
|
|
70244
70367
|
capScope: "system",
|
|
@@ -73863,6 +73986,12 @@ Object.freeze({
|
|
|
73863
73986
|
addonId: null,
|
|
73864
73987
|
access: "delete"
|
|
73865
73988
|
},
|
|
73989
|
+
"pipelineOrchestrator.forgetInferenceDevice": {
|
|
73990
|
+
capName: "pipeline-orchestrator",
|
|
73991
|
+
capScope: "system",
|
|
73992
|
+
addonId: null,
|
|
73993
|
+
access: "delete"
|
|
73994
|
+
},
|
|
73866
73995
|
"pipelineOrchestrator.getAgentLoad": {
|
|
73867
73996
|
capName: "pipeline-orchestrator",
|
|
73868
73997
|
capScope: "system",
|
|
@@ -74439,6 +74568,12 @@ Object.freeze({
|
|
|
74439
74568
|
addonId: null,
|
|
74440
74569
|
access: "view"
|
|
74441
74570
|
},
|
|
74571
|
+
"platformProbe.rescanAccelerators": {
|
|
74572
|
+
capName: "platform-probe",
|
|
74573
|
+
capScope: "system",
|
|
74574
|
+
addonId: null,
|
|
74575
|
+
access: "create"
|
|
74576
|
+
},
|
|
74442
74577
|
"platformProbe.resolveHwAccel": {
|
|
74443
74578
|
capName: "platform-probe",
|
|
74444
74579
|
capScope: "system",
|
|
@@ -80450,7 +80585,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
80450
80585
|
([...RULE_TEXT], [...COMBINED_ALARM]),
|
|
80451
80586
|
([...RULE_TEXT], [...DEVICE_EVENTS]),
|
|
80452
80587
|
([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
|
|
80453
|
-
([...RULE_TEXT], [...CONSUMABLE]),
|
|
80588
|
+
([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
|
|
80454
80589
|
([...RULE_TEXT], [...TANK]),
|
|
80455
80590
|
[...RULE_TEXT],
|
|
80456
80591
|
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
package/dist/addon.mjs
CHANGED
|
@@ -5446,7 +5446,7 @@ var ZodIssueCode = {
|
|
|
5446
5446
|
var ZodFirstPartyTypeKind;
|
|
5447
5447
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5448
5448
|
//#endregion
|
|
5449
|
-
//#region ../types/dist/sleep-
|
|
5449
|
+
//#region ../types/dist/sleep-CUp20JkO.mjs
|
|
5450
5450
|
/**
|
|
5451
5451
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5452
5452
|
* window to float samples (D455).
|
|
@@ -8338,7 +8338,11 @@ var ContributionSectionSchema = object({
|
|
|
8338
8338
|
literal(4)
|
|
8339
8339
|
]).optional(),
|
|
8340
8340
|
tab: string().optional(),
|
|
8341
|
-
location: _enum([
|
|
8341
|
+
location: _enum([
|
|
8342
|
+
"settings",
|
|
8343
|
+
"top-tab",
|
|
8344
|
+
"hero"
|
|
8345
|
+
]).optional(),
|
|
8342
8346
|
order: number().optional(),
|
|
8343
8347
|
fields: array(any())
|
|
8344
8348
|
});
|
|
@@ -13295,7 +13299,11 @@ var ConfigSectionWithValuesSchema = object({
|
|
|
13295
13299
|
literal(4)
|
|
13296
13300
|
]).optional(),
|
|
13297
13301
|
tab: string().optional(),
|
|
13298
|
-
location: _enum([
|
|
13302
|
+
location: _enum([
|
|
13303
|
+
"settings",
|
|
13304
|
+
"top-tab",
|
|
13305
|
+
"hero"
|
|
13306
|
+
]).optional(),
|
|
13299
13307
|
order: number().optional(),
|
|
13300
13308
|
fields: array(any())
|
|
13301
13309
|
});
|
|
@@ -17175,6 +17183,52 @@ var TierStatusSchema = object({
|
|
|
17175
17183
|
countedAt: number().nullable()
|
|
17176
17184
|
});
|
|
17177
17185
|
/** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
|
|
17186
|
+
/**
|
|
17187
|
+
* Why a series is orphan. `device-gone`: its device is absent from the
|
|
17188
|
+
* successful device listings (the departure clock). `undeclared`: its `cap:`
|
|
17189
|
+
* key is declared by no capability any more (a field a cap removed).
|
|
17190
|
+
*/
|
|
17191
|
+
var DeviceHistoryOrphanReasonSchema = _enum(["device-gone", "undeclared"]);
|
|
17192
|
+
/** Rows held per stored tier. */
|
|
17193
|
+
var TierRowsSchema = object({
|
|
17194
|
+
raw: number().int(),
|
|
17195
|
+
"5m": number().int(),
|
|
17196
|
+
"1h": number().int(),
|
|
17197
|
+
"1d": number().int()
|
|
17198
|
+
});
|
|
17199
|
+
var OrphanSeriesSchema = object({
|
|
17200
|
+
seriesId: number().int(),
|
|
17201
|
+
deviceId: number().int(),
|
|
17202
|
+
key: string(),
|
|
17203
|
+
scope: string(),
|
|
17204
|
+
/** The metric's display name; `null` when its metric row is gone too. */
|
|
17205
|
+
displayName: string().nullable(),
|
|
17206
|
+
reason: DeviceHistoryOrphanReasonSchema,
|
|
17207
|
+
/** `device-gone`: since when the device has been absent; `null` otherwise. */
|
|
17208
|
+
missingSince: number().nullable(),
|
|
17209
|
+
firstTs: number(),
|
|
17210
|
+
lastTs: number(),
|
|
17211
|
+
rows: TierRowsSchema
|
|
17212
|
+
});
|
|
17213
|
+
var DeviceHistoryOrphanDeleteRefusalSchema = _enum([
|
|
17214
|
+
"not-found",
|
|
17215
|
+
"not-orphan",
|
|
17216
|
+
"failed"
|
|
17217
|
+
]);
|
|
17218
|
+
var OrphanDeleteEntrySchema = discriminatedUnion("ok", [object({
|
|
17219
|
+
seriesId: number().int(),
|
|
17220
|
+
ok: literal(true),
|
|
17221
|
+
deleted: TierRowsSchema
|
|
17222
|
+
}), object({
|
|
17223
|
+
seriesId: number().int(),
|
|
17224
|
+
ok: literal(false),
|
|
17225
|
+
reason: DeviceHistoryOrphanDeleteRefusalSchema
|
|
17226
|
+
})]);
|
|
17227
|
+
var OrphanListSchema = object({
|
|
17228
|
+
series: array(OrphanSeriesSchema).readonly(),
|
|
17229
|
+
/** More orphans exist than {@link DEVICE_HISTORY_ORPHAN_LIST_MAX}. */
|
|
17230
|
+
truncated: boolean()
|
|
17231
|
+
});
|
|
17178
17232
|
var DeviceHistoryStatusSchema = object({
|
|
17179
17233
|
startedAt: number(),
|
|
17180
17234
|
/** The store is declared, series loaded and the first reconcile has answered. */
|
|
@@ -17272,7 +17326,10 @@ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly())
|
|
|
17272
17326
|
}), object({ enabled: boolean() }), {
|
|
17273
17327
|
kind: "mutation",
|
|
17274
17328
|
auth: "admin"
|
|
17275
|
-
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" })
|
|
17329
|
+
}), 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() }), {
|
|
17330
|
+
kind: "mutation",
|
|
17331
|
+
auth: "admin"
|
|
17332
|
+
});
|
|
17276
17333
|
var DeviceCaStatusSchema = discriminatedUnion("state", [
|
|
17277
17334
|
object({ state: literal("absent") }),
|
|
17278
17335
|
object({
|
|
@@ -50339,6 +50396,19 @@ var NodeInferenceDeviceSchema = object({
|
|
|
50339
50396
|
/** Whether the node's live probe reports the device as usable right now. */
|
|
50340
50397
|
available: boolean(),
|
|
50341
50398
|
/**
|
|
50399
|
+
* Is the device on the node at all (D919)? `present` — the live probe
|
|
50400
|
+
* reported it; `absent` — the probe ANSWERED and did not report it, so only
|
|
50401
|
+
* its stored settings remain (unplugged, moved to another node): never
|
|
50402
|
+
* eligible, whatever its stored `enabled`, and forgettable with
|
|
50403
|
+
* `forgetInferenceDevice`; `unknown` — the probe did not answer, nothing is
|
|
50404
|
+
* claimed (D315). Optional only for an orchestrator older than the field.
|
|
50405
|
+
*/
|
|
50406
|
+
presence: _enum([
|
|
50407
|
+
"present",
|
|
50408
|
+
"absent",
|
|
50409
|
+
"unknown"
|
|
50410
|
+
]).optional(),
|
|
50411
|
+
/**
|
|
50342
50412
|
* Whether this device participates in dispatch. AUTO default (spec C2):
|
|
50343
50413
|
* accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
|
|
50344
50414
|
* entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
|
|
@@ -50564,7 +50634,13 @@ method(object({
|
|
|
50564
50634
|
}), object({ success: literal(true) }), {
|
|
50565
50635
|
kind: "mutation",
|
|
50566
50636
|
auth: "admin"
|
|
50567
|
-
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50637
|
+
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50638
|
+
agentNodeId: string(),
|
|
50639
|
+
deviceKey: string()
|
|
50640
|
+
}), object({ success: literal(true) }), {
|
|
50641
|
+
kind: "mutation",
|
|
50642
|
+
auth: "admin"
|
|
50643
|
+
}), method(object({ agentNodeId: string() }), object({
|
|
50568
50644
|
success: literal(true),
|
|
50569
50645
|
/** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
|
|
50570
50646
|
effectiveModelId: string().nullable(),
|
|
@@ -55741,17 +55817,69 @@ var connectivityCapability = {
|
|
|
55741
55817
|
volatileStateFields: ["lastChangedAt"]
|
|
55742
55818
|
};
|
|
55743
55819
|
/**
|
|
55744
|
-
* Generic device-consumables capability —
|
|
55745
|
-
*
|
|
55746
|
-
* descaling cycles,
|
|
55747
|
-
*
|
|
55748
|
-
*
|
|
55749
|
-
*
|
|
55820
|
+
* Generic device-consumables capability — the ONE place a device reports what
|
|
55821
|
+
* it uses up or fills: wear parts (vacuum filters/brushes, cartridges,
|
|
55822
|
+
* descaling cycles), supplies it draws from (a vacuum's clean-water tank and
|
|
55823
|
+
* detergent, a dishwasher's salt and rinse aid) and waste it collects (a dirty
|
|
55824
|
+
* water tank, a dust bin). Each item carries its remaining life or fill and an
|
|
55825
|
+
* optional "Replaced" reset action. Device-agnostic: any provider that knows
|
|
55826
|
+
* its device tracks consumables registers it; the provider names each item
|
|
55827
|
+
* verbatim and says which `kind` it is.
|
|
55828
|
+
*
|
|
55829
|
+
* The admin UI renders it as ONE collapsible section directly under the
|
|
55830
|
+
* device page's hero card (`placement: 'hero'`), for every device bound to
|
|
55831
|
+
* this cap — never drawn by a device type's hero card itself (D915).
|
|
55750
55832
|
*
|
|
55751
55833
|
* Like `childLayout`, the cap is INERT until a provider sets items: no
|
|
55752
55834
|
* provider populates it by guessing (no HA inference). The UI renders a
|
|
55753
55835
|
* "No consumables reported" placeholder when `items` is empty.
|
|
55754
55836
|
*/
|
|
55837
|
+
/**
|
|
55838
|
+
* What an item IS, which decides which direction is bad:
|
|
55839
|
+
* - `wear` — a part that wears out (a brush, a filter); low life is bad.
|
|
55840
|
+
* - `supply` — something the device draws from (clean water, detergent,
|
|
55841
|
+
* salt, rinse aid); low or empty is bad.
|
|
55842
|
+
* - `waste` — something the device fills (dirty water, a dust bin); full is
|
|
55843
|
+
* bad.
|
|
55844
|
+
* Absent = `wear`.
|
|
55845
|
+
*/
|
|
55846
|
+
var ConsumableKindSchema = _enum([
|
|
55847
|
+
"wear",
|
|
55848
|
+
"supply",
|
|
55849
|
+
"waste"
|
|
55850
|
+
]);
|
|
55851
|
+
/**
|
|
55852
|
+
* What an item LOOKS like, which decides how a client draws it — independent
|
|
55853
|
+
* of `kind`, which decides which direction is bad:
|
|
55854
|
+
* - `part` — a part that wears (a brush, a filter, a mop pad): a wear bar,
|
|
55855
|
+
* remaining time and a reset.
|
|
55856
|
+
* - `tank` — a container of liquid (clean water, dirty water): a fill gauge.
|
|
55857
|
+
* - `product` — something bought and refilled (detergent, salt, rinse aid):
|
|
55858
|
+
* a stepped level and "refill".
|
|
55859
|
+
* - `bin` — a container that collects waste (a dust bin): a fill gauge
|
|
55860
|
+
* that warns when full.
|
|
55861
|
+
* Absent = derived from the kind ({@link consumableFormOf}).
|
|
55862
|
+
*/
|
|
55863
|
+
var ConsumableFormSchema = _enum([
|
|
55864
|
+
"part",
|
|
55865
|
+
"tank",
|
|
55866
|
+
"product",
|
|
55867
|
+
"bin"
|
|
55868
|
+
]);
|
|
55869
|
+
/** The provider's own discrete verdict on an item. */
|
|
55870
|
+
var ConsumableStatusSchema = _enum([
|
|
55871
|
+
"ok",
|
|
55872
|
+
"low",
|
|
55873
|
+
"empty",
|
|
55874
|
+
"full",
|
|
55875
|
+
"replace"
|
|
55876
|
+
]);
|
|
55877
|
+
_enum([
|
|
55878
|
+
"ok",
|
|
55879
|
+
"low",
|
|
55880
|
+
"empty",
|
|
55881
|
+
"full"
|
|
55882
|
+
]);
|
|
55755
55883
|
/** Units a remaining-life counter is reported in. Closed: the panel renders
|
|
55756
55884
|
* each. */
|
|
55757
55885
|
var ConsumableRemainingUnitSchema = _enum([
|
|
@@ -55766,18 +55894,23 @@ var ConsumableRemainingSchema = object({
|
|
|
55766
55894
|
unit: ConsumableRemainingUnitSchema
|
|
55767
55895
|
});
|
|
55768
55896
|
/** A single consumable item. Either a continuous `level` (remaining
|
|
55769
|
-
* life
|
|
55770
|
-
*
|
|
55771
|
-
* mutually exclusive; a provider may
|
|
55897
|
+
* life %, or fill % for a `supply` / `waste` item) or a discrete `status`
|
|
55898
|
+
* may be known — both may be null when a provider only knows the item
|
|
55899
|
+
* exists. `level` and `status` are not mutually exclusive; a provider may
|
|
55900
|
+
* report both. */
|
|
55772
55901
|
var ConsumableItemSchema = object({
|
|
55773
55902
|
/** Stable id, e.g. 'main-brush'. */
|
|
55774
55903
|
key: string().min(1),
|
|
55775
55904
|
/** Display name. */
|
|
55776
55905
|
label: string().min(1),
|
|
55777
|
-
/** Remaining life % when known (0..100). */
|
|
55906
|
+
/** Remaining life % (`wear`) or fill % (`supply`, `waste`) when known (0..100). */
|
|
55778
55907
|
level: number().min(0).max(100).nullable(),
|
|
55779
|
-
/**
|
|
55780
|
-
status:
|
|
55908
|
+
/** The provider's discrete verdict when known (binary mode). */
|
|
55909
|
+
status: ConsumableStatusSchema.nullable(),
|
|
55910
|
+
/** What the item is — decides whether low or full is bad. Absent = `wear`. */
|
|
55911
|
+
kind: ConsumableKindSchema.optional(),
|
|
55912
|
+
/** How the item is drawn (part, tank, product, bin). Absent = derived from `kind`. */
|
|
55913
|
+
form: ConsumableFormSchema.optional(),
|
|
55781
55914
|
/** Ms epoch of the last replace, when known. */
|
|
55782
55915
|
lastResetAt: number().nullable(),
|
|
55783
55916
|
/** Whether `reset()` is meaningful for this item. */
|
|
@@ -55800,7 +55933,7 @@ var consumablesCapability = {
|
|
|
55800
55933
|
kind: "widget",
|
|
55801
55934
|
widgetId: "host/consumables-panel",
|
|
55802
55935
|
tab: "consumables",
|
|
55803
|
-
|
|
55936
|
+
placement: "hero",
|
|
55804
55937
|
label: "Consumables",
|
|
55805
55938
|
order: 5
|
|
55806
55939
|
} },
|
|
@@ -55861,9 +55994,37 @@ reset: method(object({
|
|
|
55861
55994
|
*/
|
|
55862
55995
|
durability: "restored",
|
|
55863
55996
|
/**
|
|
55864
|
-
* History (D850):
|
|
55997
|
+
* History (D850, D917): one series per (item field, item `key`) — the item key
|
|
55998
|
+
* is the series scope, the item `label` names it. A vacuum tank's fill, a
|
|
55999
|
+
* brush's remaining life and a dishwasher's salt are each recorded the moment
|
|
56000
|
+
* their provider reports them; an item that appears later gets its series.
|
|
55865
56001
|
*/
|
|
55866
|
-
history:
|
|
56002
|
+
history: {
|
|
56003
|
+
fields: {},
|
|
56004
|
+
items: {
|
|
56005
|
+
path: "items",
|
|
56006
|
+
key: "key",
|
|
56007
|
+
label: "label",
|
|
56008
|
+
fields: {
|
|
56009
|
+
level: {
|
|
56010
|
+
kind: "gauge",
|
|
56011
|
+
unit: "%",
|
|
56012
|
+
deadband: 2,
|
|
56013
|
+
displayName: "Level"
|
|
56014
|
+
},
|
|
56015
|
+
status: {
|
|
56016
|
+
kind: "enum",
|
|
56017
|
+
displayName: "Status"
|
|
56018
|
+
},
|
|
56019
|
+
"remaining.value": {
|
|
56020
|
+
kind: "gauge",
|
|
56021
|
+
unitFrom: "remaining.unit",
|
|
56022
|
+
deadband: 1,
|
|
56023
|
+
displayName: "Remaining"
|
|
56024
|
+
}
|
|
56025
|
+
}
|
|
56026
|
+
}
|
|
56027
|
+
},
|
|
55867
56028
|
/** Clocks, not content: a re-read that changed no item costs no commit. */
|
|
55868
56029
|
volatileStateFields: ["lastChangedAt", "lastFetchedAt"]
|
|
55869
56030
|
};
|
|
@@ -56278,8 +56439,9 @@ onStatusChanged: { data: object({
|
|
|
56278
56439
|
volatileStateFields: ["lastChangedAt"]
|
|
56279
56440
|
};
|
|
56280
56441
|
/**
|
|
56281
|
-
* Smart-dishwasher cap — program lifecycle, door / remote-start gates
|
|
56282
|
-
*
|
|
56442
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates and
|
|
56443
|
+
* common program options. Salt and rinse aid are NOT here: they are items of
|
|
56444
|
+
* the device's `consumables` cap, like every other device's (D915).
|
|
56283
56445
|
*
|
|
56284
56446
|
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
56285
56447
|
* by any integration that exposes the same program / option surface.
|
|
@@ -56327,11 +56489,6 @@ var DishwasherAvailabilitySchema = _enum([
|
|
|
56327
56489
|
"offline",
|
|
56328
56490
|
"description-missing"
|
|
56329
56491
|
]);
|
|
56330
|
-
var DishwasherConsumableLevelSchema = _enum([
|
|
56331
|
-
"ok",
|
|
56332
|
-
"low",
|
|
56333
|
-
"empty"
|
|
56334
|
-
]);
|
|
56335
56492
|
var DishwasherStatusSchema = object({
|
|
56336
56493
|
availability: DishwasherAvailabilitySchema,
|
|
56337
56494
|
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
@@ -56364,8 +56521,6 @@ var DishwasherStatusSchema = object({
|
|
|
56364
56521
|
powerOn: boolean().nullable(),
|
|
56365
56522
|
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
56366
56523
|
powerState: string().nullable(),
|
|
56367
|
-
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56368
|
-
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56369
56524
|
/**
|
|
56370
56525
|
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
56371
56526
|
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
@@ -59241,7 +59396,7 @@ var motionTriggerCapability = {
|
|
|
59241
59396
|
enabled: boolean()
|
|
59242
59397
|
}), _void(), {
|
|
59243
59398
|
kind: "mutation",
|
|
59244
|
-
auth: "
|
|
59399
|
+
auth: "protected"
|
|
59245
59400
|
}) },
|
|
59246
59401
|
events: { onMotionTriggerChanged: { data: object({
|
|
59247
59402
|
deviceId: number(),
|
|
@@ -59971,6 +60126,13 @@ var TopologyNodeSchema = object({
|
|
|
59971
60126
|
cpuModel: string().nullable(),
|
|
59972
60127
|
cpuCores: number(),
|
|
59973
60128
|
memoryMB: number(),
|
|
60129
|
+
/**
|
|
60130
|
+
* The inference RUNTIMES installed on the node (`pythonRuntimes`: onnx,
|
|
60131
|
+
* openvino, edgetpu …) — not its devices. An installed runtime says nothing
|
|
60132
|
+
* about whether its hardware is there (a Coral delegate stays installed
|
|
60133
|
+
* after the stick leaves, D919); the live device set is
|
|
60134
|
+
* `pipelineOrchestrator.getNodeInferenceDevices`.
|
|
60135
|
+
*/
|
|
59974
60136
|
engines: array(string()).readonly(),
|
|
59975
60137
|
isHub: boolean(),
|
|
59976
60138
|
isOnline: boolean(),
|
|
@@ -61134,7 +61296,28 @@ var ResolvedInferenceConfigSchema = object({
|
|
|
61134
61296
|
format: ModelFormatSchema,
|
|
61135
61297
|
reason: string()
|
|
61136
61298
|
});
|
|
61137
|
-
|
|
61299
|
+
/**
|
|
61300
|
+
* The answer of an accelerator rescan (D919): the node's device list after
|
|
61301
|
+
* the re-probe, what changed, and the evidence that decided the Coral answer
|
|
61302
|
+
* (`usbBus` — could the USB bus be read at all; `decidedBy` — USB ids, the PCI
|
|
61303
|
+
* bus, the installed-delegate fallback, or nothing).
|
|
61304
|
+
*/
|
|
61305
|
+
var AcceleratorRescanSchema = object({
|
|
61306
|
+
devices: array(InferenceDeviceDescriptorSchema).readonly(),
|
|
61307
|
+
appeared: array(string()).readonly(),
|
|
61308
|
+
disappeared: array(string()).readonly(),
|
|
61309
|
+
usbBus: _enum(["observed", "unobservable"]),
|
|
61310
|
+
decidedBy: _enum([
|
|
61311
|
+
"usb-ids",
|
|
61312
|
+
"pci",
|
|
61313
|
+
"delegate-fallback",
|
|
61314
|
+
"none"
|
|
61315
|
+
])
|
|
61316
|
+
});
|
|
61317
|
+
method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema), method(object({ requirements: array(ModelRequirementSchema).readonly() }), ResolvedInferenceConfigSchema), method(object({ prefer: HwAccelBackendInputSchema }), HwAccelResolutionSchema), method(_void(), AcceleratorRescanSchema, {
|
|
61318
|
+
kind: "mutation",
|
|
61319
|
+
auth: "admin"
|
|
61320
|
+
});
|
|
61138
61321
|
/**
|
|
61139
61322
|
* Multi-metric electrical meter. One slice can carry any combination
|
|
61140
61323
|
* of instantaneous power (W), cumulative energy (kWh), voltage (V),
|
|
@@ -65643,60 +65826,17 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
65643
65826
|
auth: "admin",
|
|
65644
65827
|
access: "delete"
|
|
65645
65828
|
});
|
|
65646
|
-
/**
|
|
65647
|
-
* Robot-vacuum cap. Models HA `vacuum.*` entities — anything with a
|
|
65648
|
-
* cleaning lifecycle plus a return-to-base / locate surface and an
|
|
65649
|
-
* optional fan-speed selector.
|
|
65650
|
-
*
|
|
65651
|
-
* State follows HA's canonical vacuum lifecycle: `idle` / `cleaning` /
|
|
65652
|
-
* `paused` / `returning` / `docked` / `error`. `batteryLevel`
|
|
65653
|
-
* (0..100) is nullable — some vacuums don't report a battery
|
|
65654
|
-
* percentage. `fanSpeed` is the current speed token (provider-verbatim,
|
|
65655
|
-
* e.g. `'standard'` / `'turbo'`) and `availableFanSpeeds` lists the
|
|
65656
|
-
* tokens the hardware accepts so the UI renders only supported choices.
|
|
65657
|
-
*
|
|
65658
|
-
* The `setFanSpeed` method takes the bare `speed` token — the provider
|
|
65659
|
-
* validates it against the vacuum's own list. `locate` triggers the
|
|
65660
|
-
* find-me chirp; `returnToBase` sends it home.
|
|
65661
|
-
*
|
|
65662
|
-
* Consumable / waste tanks: `cleanWater` / `dirtyWater` / `detergent` /
|
|
65663
|
-
* `dustBin` each carry a nullable `{ level (0..100 %), status ('ok' |
|
|
65664
|
-
* 'low' | 'full') }` reading. Native providers (e.g. Dreame, Roborock)
|
|
65665
|
-
* SHOULD populate whichever tanks the hardware has — leave a field `null`
|
|
65666
|
-
* only when the device has no such tank at all, and use a `TankStatus`
|
|
65667
|
-
* with both inner fields `null` when the tank exists but its level is
|
|
65668
|
-
* currently unknown. HA `vacuum.*` entities expose no per-tank telemetry,
|
|
65669
|
-
* so the HA provider leaves all four `null`.
|
|
65670
|
-
*/
|
|
65671
|
-
var VacuumStateSchema = _enum([
|
|
65672
|
-
"idle",
|
|
65673
|
-
"cleaning",
|
|
65674
|
-
"paused",
|
|
65675
|
-
"returning",
|
|
65676
|
-
"docked",
|
|
65677
|
-
"drying",
|
|
65678
|
-
"error"
|
|
65679
|
-
]);
|
|
65680
|
-
/**
|
|
65681
|
-
* One consumable / waste tank on a robot vacuum (clean-water, dirty-water,
|
|
65682
|
-
* detergent or dust-bin). A tank can report a numeric fill `level` (0..100),
|
|
65683
|
-
* a discrete `status` (binary-style hardware), or both. Both `null` means the
|
|
65684
|
-
* level is currently unknown; the OWNING field being `null` means the
|
|
65685
|
-
* hardware has no such tank at all.
|
|
65686
|
-
*/
|
|
65687
|
-
var TankStatusSchema = object({
|
|
65688
|
-
/** Numeric fill 0..100 when the hardware reports a percentage; null otherwise. */
|
|
65689
|
-
level: number().min(0).max(100).nullable(),
|
|
65690
|
-
/** Discrete state when the hardware is binary-mode; null otherwise. */
|
|
65691
|
-
status: _enum([
|
|
65692
|
-
"ok",
|
|
65693
|
-
"low",
|
|
65694
|
-
"full"
|
|
65695
|
-
]).nullable()
|
|
65696
|
-
});
|
|
65697
65829
|
var VacuumControlStatusSchema = object({
|
|
65698
65830
|
/** Lifecycle state of the vacuum. */
|
|
65699
|
-
state:
|
|
65831
|
+
state: _enum([
|
|
65832
|
+
"idle",
|
|
65833
|
+
"cleaning",
|
|
65834
|
+
"paused",
|
|
65835
|
+
"returning",
|
|
65836
|
+
"docked",
|
|
65837
|
+
"drying",
|
|
65838
|
+
"error"
|
|
65839
|
+
]),
|
|
65700
65840
|
/** 0..100 battery percentage. Null when the device has no battery
|
|
65701
65841
|
* reading. */
|
|
65702
65842
|
batteryLevel: number().min(0).max(100).nullable(),
|
|
@@ -65705,14 +65845,6 @@ var VacuumControlStatusSchema = object({
|
|
|
65705
65845
|
fanSpeed: string().nullable(),
|
|
65706
65846
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
65707
65847
|
availableFanSpeeds: array(string()),
|
|
65708
|
-
/** Clean-water (mop) tank. Null when the hardware has no clean-water tank. */
|
|
65709
|
-
cleanWater: TankStatusSchema.nullable(),
|
|
65710
|
-
/** Dirty-water (recovery) tank. Null when the hardware has no dirty-water tank. */
|
|
65711
|
-
dirtyWater: TankStatusSchema.nullable(),
|
|
65712
|
-
/** Detergent tank. Null when the hardware has no detergent tank. */
|
|
65713
|
-
detergent: TankStatusSchema.nullable(),
|
|
65714
|
-
/** Dust bin. Null when the hardware has no dust bin. */
|
|
65715
|
-
dustBin: TankStatusSchema.nullable(),
|
|
65716
65848
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
65717
65849
|
progressPercent: number().min(0).max(100).nullable(),
|
|
65718
65850
|
/** Current error code (0 / null = no error). */
|
|
@@ -65774,35 +65906,14 @@ var vacuumControlCapability = {
|
|
|
65774
65906
|
*/
|
|
65775
65907
|
durability: "session",
|
|
65776
65908
|
/**
|
|
65777
|
-
* History (D850): recorded series.
|
|
65909
|
+
* History (D850): recorded series. The tanks moved to `consumables` (D915), whose
|
|
65910
|
+
* items are keyed by runtime ids and record no history.
|
|
65778
65911
|
*/
|
|
65779
|
-
history: { fields: {
|
|
65780
|
-
|
|
65781
|
-
|
|
65782
|
-
|
|
65783
|
-
|
|
65784
|
-
},
|
|
65785
|
-
"cleanWater.level": {
|
|
65786
|
-
kind: "gauge",
|
|
65787
|
-
unit: "%",
|
|
65788
|
-
deadband: 2
|
|
65789
|
-
},
|
|
65790
|
-
"dirtyWater.level": {
|
|
65791
|
-
kind: "gauge",
|
|
65792
|
-
unit: "%",
|
|
65793
|
-
deadband: 2
|
|
65794
|
-
},
|
|
65795
|
-
"detergent.level": {
|
|
65796
|
-
kind: "gauge",
|
|
65797
|
-
unit: "%",
|
|
65798
|
-
deadband: 2
|
|
65799
|
-
},
|
|
65800
|
-
"dustBin.level": {
|
|
65801
|
-
kind: "gauge",
|
|
65802
|
-
unit: "%",
|
|
65803
|
-
deadband: 2
|
|
65804
|
-
}
|
|
65805
|
-
} }
|
|
65912
|
+
history: { fields: { batteryLevel: {
|
|
65913
|
+
kind: "gauge",
|
|
65914
|
+
unit: "%",
|
|
65915
|
+
deadband: 2
|
|
65916
|
+
} } }
|
|
65806
65917
|
};
|
|
65807
65918
|
var ValveStatusSchema = object({
|
|
65808
65919
|
/** Lifecycle state of the valve. */
|
|
@@ -70200,6 +70311,12 @@ Object.freeze({
|
|
|
70200
70311
|
addonId: null,
|
|
70201
70312
|
access: "create"
|
|
70202
70313
|
},
|
|
70314
|
+
"deviceHistory.deleteOrphanSeries": {
|
|
70315
|
+
capName: "device-history",
|
|
70316
|
+
capScope: "system",
|
|
70317
|
+
addonId: null,
|
|
70318
|
+
access: "delete"
|
|
70319
|
+
},
|
|
70203
70320
|
"deviceHistory.getDeviceEnabled": {
|
|
70204
70321
|
capName: "device-history",
|
|
70205
70322
|
capScope: "system",
|
|
@@ -70218,6 +70335,12 @@ Object.freeze({
|
|
|
70218
70335
|
addonId: null,
|
|
70219
70336
|
access: "view"
|
|
70220
70337
|
},
|
|
70338
|
+
"deviceHistory.listOrphanSeries": {
|
|
70339
|
+
capName: "device-history",
|
|
70340
|
+
capScope: "system",
|
|
70341
|
+
addonId: null,
|
|
70342
|
+
access: "view"
|
|
70343
|
+
},
|
|
70221
70344
|
"deviceHistory.listSeries": {
|
|
70222
70345
|
capName: "device-history",
|
|
70223
70346
|
capScope: "system",
|
|
@@ -73842,6 +73965,12 @@ Object.freeze({
|
|
|
73842
73965
|
addonId: null,
|
|
73843
73966
|
access: "delete"
|
|
73844
73967
|
},
|
|
73968
|
+
"pipelineOrchestrator.forgetInferenceDevice": {
|
|
73969
|
+
capName: "pipeline-orchestrator",
|
|
73970
|
+
capScope: "system",
|
|
73971
|
+
addonId: null,
|
|
73972
|
+
access: "delete"
|
|
73973
|
+
},
|
|
73845
73974
|
"pipelineOrchestrator.getAgentLoad": {
|
|
73846
73975
|
capName: "pipeline-orchestrator",
|
|
73847
73976
|
capScope: "system",
|
|
@@ -74418,6 +74547,12 @@ Object.freeze({
|
|
|
74418
74547
|
addonId: null,
|
|
74419
74548
|
access: "view"
|
|
74420
74549
|
},
|
|
74550
|
+
"platformProbe.rescanAccelerators": {
|
|
74551
|
+
capName: "platform-probe",
|
|
74552
|
+
capScope: "system",
|
|
74553
|
+
addonId: null,
|
|
74554
|
+
access: "create"
|
|
74555
|
+
},
|
|
74421
74556
|
"platformProbe.resolveHwAccel": {
|
|
74422
74557
|
capName: "platform-probe",
|
|
74423
74558
|
capScope: "system",
|
|
@@ -80429,7 +80564,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
80429
80564
|
([...RULE_TEXT], [...COMBINED_ALARM]),
|
|
80430
80565
|
([...RULE_TEXT], [...DEVICE_EVENTS]),
|
|
80431
80566
|
([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
|
|
80432
|
-
([...RULE_TEXT], [...CONSUMABLE]),
|
|
80567
|
+
([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
|
|
80433
80568
|
([...RULE_TEXT], [...TANK]),
|
|
80434
80569
|
[...RULE_TEXT],
|
|
80435
80570
|
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-amcrest",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.156",
|
|
4
4
|
"description": "Amcrest/Dahua camera device provider addon for CamStack — Dahua CGI over HTTP(S) with digest auth (snapshot, RTSP catalog, PTZ, image/day-night config)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|