@camstack/addon-terminal 0.1.149 → 0.1.151
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +255 -120
- package/dist/addon.mjs +255 -120
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -5463,7 +5463,7 @@ var ZodIssueCode = {
|
|
|
5463
5463
|
var ZodFirstPartyTypeKind;
|
|
5464
5464
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5465
5465
|
//#endregion
|
|
5466
|
-
//#region ../types/dist/sleep-
|
|
5466
|
+
//#region ../types/dist/sleep-CUp20JkO.mjs
|
|
5467
5467
|
/**
|
|
5468
5468
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5469
5469
|
* window to float samples (D455).
|
|
@@ -8414,7 +8414,11 @@ var ContributionSectionSchema = object({
|
|
|
8414
8414
|
literal(4)
|
|
8415
8415
|
]).optional(),
|
|
8416
8416
|
tab: string().optional(),
|
|
8417
|
-
location: _enum([
|
|
8417
|
+
location: _enum([
|
|
8418
|
+
"settings",
|
|
8419
|
+
"top-tab",
|
|
8420
|
+
"hero"
|
|
8421
|
+
]).optional(),
|
|
8418
8422
|
order: number().optional(),
|
|
8419
8423
|
fields: array(any())
|
|
8420
8424
|
});
|
|
@@ -13379,7 +13383,11 @@ var ConfigSectionWithValuesSchema = object({
|
|
|
13379
13383
|
literal(4)
|
|
13380
13384
|
]).optional(),
|
|
13381
13385
|
tab: string().optional(),
|
|
13382
|
-
location: _enum([
|
|
13386
|
+
location: _enum([
|
|
13387
|
+
"settings",
|
|
13388
|
+
"top-tab",
|
|
13389
|
+
"hero"
|
|
13390
|
+
]).optional(),
|
|
13383
13391
|
order: number().optional(),
|
|
13384
13392
|
fields: array(any())
|
|
13385
13393
|
});
|
|
@@ -17259,6 +17267,52 @@ var TierStatusSchema = object({
|
|
|
17259
17267
|
countedAt: number().nullable()
|
|
17260
17268
|
});
|
|
17261
17269
|
/** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
|
|
17270
|
+
/**
|
|
17271
|
+
* Why a series is orphan. `device-gone`: its device is absent from the
|
|
17272
|
+
* successful device listings (the departure clock). `undeclared`: its `cap:`
|
|
17273
|
+
* key is declared by no capability any more (a field a cap removed).
|
|
17274
|
+
*/
|
|
17275
|
+
var DeviceHistoryOrphanReasonSchema = _enum(["device-gone", "undeclared"]);
|
|
17276
|
+
/** Rows held per stored tier. */
|
|
17277
|
+
var TierRowsSchema = object({
|
|
17278
|
+
raw: number().int(),
|
|
17279
|
+
"5m": number().int(),
|
|
17280
|
+
"1h": number().int(),
|
|
17281
|
+
"1d": number().int()
|
|
17282
|
+
});
|
|
17283
|
+
var OrphanSeriesSchema = object({
|
|
17284
|
+
seriesId: number().int(),
|
|
17285
|
+
deviceId: number().int(),
|
|
17286
|
+
key: string(),
|
|
17287
|
+
scope: string(),
|
|
17288
|
+
/** The metric's display name; `null` when its metric row is gone too. */
|
|
17289
|
+
displayName: string().nullable(),
|
|
17290
|
+
reason: DeviceHistoryOrphanReasonSchema,
|
|
17291
|
+
/** `device-gone`: since when the device has been absent; `null` otherwise. */
|
|
17292
|
+
missingSince: number().nullable(),
|
|
17293
|
+
firstTs: number(),
|
|
17294
|
+
lastTs: number(),
|
|
17295
|
+
rows: TierRowsSchema
|
|
17296
|
+
});
|
|
17297
|
+
var DeviceHistoryOrphanDeleteRefusalSchema = _enum([
|
|
17298
|
+
"not-found",
|
|
17299
|
+
"not-orphan",
|
|
17300
|
+
"failed"
|
|
17301
|
+
]);
|
|
17302
|
+
var OrphanDeleteEntrySchema = discriminatedUnion("ok", [object({
|
|
17303
|
+
seriesId: number().int(),
|
|
17304
|
+
ok: literal(true),
|
|
17305
|
+
deleted: TierRowsSchema
|
|
17306
|
+
}), object({
|
|
17307
|
+
seriesId: number().int(),
|
|
17308
|
+
ok: literal(false),
|
|
17309
|
+
reason: DeviceHistoryOrphanDeleteRefusalSchema
|
|
17310
|
+
})]);
|
|
17311
|
+
var OrphanListSchema = object({
|
|
17312
|
+
series: array(OrphanSeriesSchema).readonly(),
|
|
17313
|
+
/** More orphans exist than {@link DEVICE_HISTORY_ORPHAN_LIST_MAX}. */
|
|
17314
|
+
truncated: boolean()
|
|
17315
|
+
});
|
|
17262
17316
|
var DeviceHistoryStatusSchema = object({
|
|
17263
17317
|
startedAt: number(),
|
|
17264
17318
|
/** The store is declared, series loaded and the first reconcile has answered. */
|
|
@@ -17356,7 +17410,10 @@ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly())
|
|
|
17356
17410
|
}), object({ enabled: boolean() }), {
|
|
17357
17411
|
kind: "mutation",
|
|
17358
17412
|
auth: "admin"
|
|
17359
|
-
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" })
|
|
17413
|
+
}), 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() }), {
|
|
17414
|
+
kind: "mutation",
|
|
17415
|
+
auth: "admin"
|
|
17416
|
+
});
|
|
17360
17417
|
var DeviceCaStatusSchema = discriminatedUnion("state", [
|
|
17361
17418
|
object({ state: literal("absent") }),
|
|
17362
17419
|
object({
|
|
@@ -50229,6 +50286,19 @@ var NodeInferenceDeviceSchema = object({
|
|
|
50229
50286
|
/** Whether the node's live probe reports the device as usable right now. */
|
|
50230
50287
|
available: boolean(),
|
|
50231
50288
|
/**
|
|
50289
|
+
* Is the device on the node at all (D919)? `present` — the live probe
|
|
50290
|
+
* reported it; `absent` — the probe ANSWERED and did not report it, so only
|
|
50291
|
+
* its stored settings remain (unplugged, moved to another node): never
|
|
50292
|
+
* eligible, whatever its stored `enabled`, and forgettable with
|
|
50293
|
+
* `forgetInferenceDevice`; `unknown` — the probe did not answer, nothing is
|
|
50294
|
+
* claimed (D315). Optional only for an orchestrator older than the field.
|
|
50295
|
+
*/
|
|
50296
|
+
presence: _enum([
|
|
50297
|
+
"present",
|
|
50298
|
+
"absent",
|
|
50299
|
+
"unknown"
|
|
50300
|
+
]).optional(),
|
|
50301
|
+
/**
|
|
50232
50302
|
* Whether this device participates in dispatch. AUTO default (spec C2):
|
|
50233
50303
|
* accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
|
|
50234
50304
|
* entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
|
|
@@ -50454,7 +50524,13 @@ method(object({
|
|
|
50454
50524
|
}), object({ success: literal(true) }), {
|
|
50455
50525
|
kind: "mutation",
|
|
50456
50526
|
auth: "admin"
|
|
50457
|
-
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50527
|
+
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50528
|
+
agentNodeId: string(),
|
|
50529
|
+
deviceKey: string()
|
|
50530
|
+
}), object({ success: literal(true) }), {
|
|
50531
|
+
kind: "mutation",
|
|
50532
|
+
auth: "admin"
|
|
50533
|
+
}), method(object({ agentNodeId: string() }), object({
|
|
50458
50534
|
success: literal(true),
|
|
50459
50535
|
/** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
|
|
50460
50536
|
effectiveModelId: string().nullable(),
|
|
@@ -55266,17 +55342,69 @@ var connectivityCapability = {
|
|
|
55266
55342
|
volatileStateFields: ["lastChangedAt"]
|
|
55267
55343
|
};
|
|
55268
55344
|
/**
|
|
55269
|
-
* Generic device-consumables capability —
|
|
55270
|
-
*
|
|
55271
|
-
* descaling cycles,
|
|
55272
|
-
*
|
|
55273
|
-
*
|
|
55274
|
-
*
|
|
55345
|
+
* Generic device-consumables capability — the ONE place a device reports what
|
|
55346
|
+
* it uses up or fills: wear parts (vacuum filters/brushes, cartridges,
|
|
55347
|
+
* descaling cycles), supplies it draws from (a vacuum's clean-water tank and
|
|
55348
|
+
* detergent, a dishwasher's salt and rinse aid) and waste it collects (a dirty
|
|
55349
|
+
* water tank, a dust bin). Each item carries its remaining life or fill and an
|
|
55350
|
+
* optional "Replaced" reset action. Device-agnostic: any provider that knows
|
|
55351
|
+
* its device tracks consumables registers it; the provider names each item
|
|
55352
|
+
* verbatim and says which `kind` it is.
|
|
55353
|
+
*
|
|
55354
|
+
* The admin UI renders it as ONE collapsible section directly under the
|
|
55355
|
+
* device page's hero card (`placement: 'hero'`), for every device bound to
|
|
55356
|
+
* this cap — never drawn by a device type's hero card itself (D915).
|
|
55275
55357
|
*
|
|
55276
55358
|
* Like `childLayout`, the cap is INERT until a provider sets items: no
|
|
55277
55359
|
* provider populates it by guessing (no HA inference). The UI renders a
|
|
55278
55360
|
* "No consumables reported" placeholder when `items` is empty.
|
|
55279
55361
|
*/
|
|
55362
|
+
/**
|
|
55363
|
+
* What an item IS, which decides which direction is bad:
|
|
55364
|
+
* - `wear` — a part that wears out (a brush, a filter); low life is bad.
|
|
55365
|
+
* - `supply` — something the device draws from (clean water, detergent,
|
|
55366
|
+
* salt, rinse aid); low or empty is bad.
|
|
55367
|
+
* - `waste` — something the device fills (dirty water, a dust bin); full is
|
|
55368
|
+
* bad.
|
|
55369
|
+
* Absent = `wear`.
|
|
55370
|
+
*/
|
|
55371
|
+
var ConsumableKindSchema = _enum([
|
|
55372
|
+
"wear",
|
|
55373
|
+
"supply",
|
|
55374
|
+
"waste"
|
|
55375
|
+
]);
|
|
55376
|
+
/**
|
|
55377
|
+
* What an item LOOKS like, which decides how a client draws it — independent
|
|
55378
|
+
* of `kind`, which decides which direction is bad:
|
|
55379
|
+
* - `part` — a part that wears (a brush, a filter, a mop pad): a wear bar,
|
|
55380
|
+
* remaining time and a reset.
|
|
55381
|
+
* - `tank` — a container of liquid (clean water, dirty water): a fill gauge.
|
|
55382
|
+
* - `product` — something bought and refilled (detergent, salt, rinse aid):
|
|
55383
|
+
* a stepped level and "refill".
|
|
55384
|
+
* - `bin` — a container that collects waste (a dust bin): a fill gauge
|
|
55385
|
+
* that warns when full.
|
|
55386
|
+
* Absent = derived from the kind ({@link consumableFormOf}).
|
|
55387
|
+
*/
|
|
55388
|
+
var ConsumableFormSchema = _enum([
|
|
55389
|
+
"part",
|
|
55390
|
+
"tank",
|
|
55391
|
+
"product",
|
|
55392
|
+
"bin"
|
|
55393
|
+
]);
|
|
55394
|
+
/** The provider's own discrete verdict on an item. */
|
|
55395
|
+
var ConsumableStatusSchema = _enum([
|
|
55396
|
+
"ok",
|
|
55397
|
+
"low",
|
|
55398
|
+
"empty",
|
|
55399
|
+
"full",
|
|
55400
|
+
"replace"
|
|
55401
|
+
]);
|
|
55402
|
+
_enum([
|
|
55403
|
+
"ok",
|
|
55404
|
+
"low",
|
|
55405
|
+
"empty",
|
|
55406
|
+
"full"
|
|
55407
|
+
]);
|
|
55280
55408
|
/** Units a remaining-life counter is reported in. Closed: the panel renders
|
|
55281
55409
|
* each. */
|
|
55282
55410
|
var ConsumableRemainingUnitSchema = _enum([
|
|
@@ -55291,18 +55419,23 @@ var ConsumableRemainingSchema = object({
|
|
|
55291
55419
|
unit: ConsumableRemainingUnitSchema
|
|
55292
55420
|
});
|
|
55293
55421
|
/** A single consumable item. Either a continuous `level` (remaining
|
|
55294
|
-
* life
|
|
55295
|
-
*
|
|
55296
|
-
* mutually exclusive; a provider may
|
|
55422
|
+
* life %, or fill % for a `supply` / `waste` item) or a discrete `status`
|
|
55423
|
+
* may be known — both may be null when a provider only knows the item
|
|
55424
|
+
* exists. `level` and `status` are not mutually exclusive; a provider may
|
|
55425
|
+
* report both. */
|
|
55297
55426
|
var ConsumableItemSchema = object({
|
|
55298
55427
|
/** Stable id, e.g. 'main-brush'. */
|
|
55299
55428
|
key: string().min(1),
|
|
55300
55429
|
/** Display name. */
|
|
55301
55430
|
label: string().min(1),
|
|
55302
|
-
/** Remaining life % when known (0..100). */
|
|
55431
|
+
/** Remaining life % (`wear`) or fill % (`supply`, `waste`) when known (0..100). */
|
|
55303
55432
|
level: number().min(0).max(100).nullable(),
|
|
55304
|
-
/**
|
|
55305
|
-
status:
|
|
55433
|
+
/** The provider's discrete verdict when known (binary mode). */
|
|
55434
|
+
status: ConsumableStatusSchema.nullable(),
|
|
55435
|
+
/** What the item is — decides whether low or full is bad. Absent = `wear`. */
|
|
55436
|
+
kind: ConsumableKindSchema.optional(),
|
|
55437
|
+
/** How the item is drawn (part, tank, product, bin). Absent = derived from `kind`. */
|
|
55438
|
+
form: ConsumableFormSchema.optional(),
|
|
55306
55439
|
/** Ms epoch of the last replace, when known. */
|
|
55307
55440
|
lastResetAt: number().nullable(),
|
|
55308
55441
|
/** Whether `reset()` is meaningful for this item. */
|
|
@@ -55325,7 +55458,7 @@ var consumablesCapability = {
|
|
|
55325
55458
|
kind: "widget",
|
|
55326
55459
|
widgetId: "host/consumables-panel",
|
|
55327
55460
|
tab: "consumables",
|
|
55328
|
-
|
|
55461
|
+
placement: "hero",
|
|
55329
55462
|
label: "Consumables",
|
|
55330
55463
|
order: 5
|
|
55331
55464
|
} },
|
|
@@ -55386,9 +55519,37 @@ reset: method(object({
|
|
|
55386
55519
|
*/
|
|
55387
55520
|
durability: "restored",
|
|
55388
55521
|
/**
|
|
55389
|
-
* History (D850):
|
|
55522
|
+
* History (D850, D917): one series per (item field, item `key`) — the item key
|
|
55523
|
+
* is the series scope, the item `label` names it. A vacuum tank's fill, a
|
|
55524
|
+
* brush's remaining life and a dishwasher's salt are each recorded the moment
|
|
55525
|
+
* their provider reports them; an item that appears later gets its series.
|
|
55390
55526
|
*/
|
|
55391
|
-
history:
|
|
55527
|
+
history: {
|
|
55528
|
+
fields: {},
|
|
55529
|
+
items: {
|
|
55530
|
+
path: "items",
|
|
55531
|
+
key: "key",
|
|
55532
|
+
label: "label",
|
|
55533
|
+
fields: {
|
|
55534
|
+
level: {
|
|
55535
|
+
kind: "gauge",
|
|
55536
|
+
unit: "%",
|
|
55537
|
+
deadband: 2,
|
|
55538
|
+
displayName: "Level"
|
|
55539
|
+
},
|
|
55540
|
+
status: {
|
|
55541
|
+
kind: "enum",
|
|
55542
|
+
displayName: "Status"
|
|
55543
|
+
},
|
|
55544
|
+
"remaining.value": {
|
|
55545
|
+
kind: "gauge",
|
|
55546
|
+
unitFrom: "remaining.unit",
|
|
55547
|
+
deadband: 1,
|
|
55548
|
+
displayName: "Remaining"
|
|
55549
|
+
}
|
|
55550
|
+
}
|
|
55551
|
+
}
|
|
55552
|
+
},
|
|
55392
55553
|
/** Clocks, not content: a re-read that changed no item costs no commit. */
|
|
55393
55554
|
volatileStateFields: ["lastChangedAt", "lastFetchedAt"]
|
|
55394
55555
|
};
|
|
@@ -55803,8 +55964,9 @@ onStatusChanged: { data: object({
|
|
|
55803
55964
|
volatileStateFields: ["lastChangedAt"]
|
|
55804
55965
|
};
|
|
55805
55966
|
/**
|
|
55806
|
-
* Smart-dishwasher cap — program lifecycle, door / remote-start gates
|
|
55807
|
-
*
|
|
55967
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates and
|
|
55968
|
+
* common program options. Salt and rinse aid are NOT here: they are items of
|
|
55969
|
+
* the device's `consumables` cap, like every other device's (D915).
|
|
55808
55970
|
*
|
|
55809
55971
|
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
55810
55972
|
* by any integration that exposes the same program / option surface.
|
|
@@ -55852,11 +56014,6 @@ var DishwasherAvailabilitySchema = _enum([
|
|
|
55852
56014
|
"offline",
|
|
55853
56015
|
"description-missing"
|
|
55854
56016
|
]);
|
|
55855
|
-
var DishwasherConsumableLevelSchema = _enum([
|
|
55856
|
-
"ok",
|
|
55857
|
-
"low",
|
|
55858
|
-
"empty"
|
|
55859
|
-
]);
|
|
55860
56017
|
var DishwasherStatusSchema = object({
|
|
55861
56018
|
availability: DishwasherAvailabilitySchema,
|
|
55862
56019
|
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
@@ -55889,8 +56046,6 @@ var DishwasherStatusSchema = object({
|
|
|
55889
56046
|
powerOn: boolean().nullable(),
|
|
55890
56047
|
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
55891
56048
|
powerState: string().nullable(),
|
|
55892
|
-
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55893
|
-
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55894
56049
|
/**
|
|
55895
56050
|
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
55896
56051
|
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
@@ -58766,7 +58921,7 @@ var motionTriggerCapability = {
|
|
|
58766
58921
|
enabled: boolean()
|
|
58767
58922
|
}), _void(), {
|
|
58768
58923
|
kind: "mutation",
|
|
58769
|
-
auth: "
|
|
58924
|
+
auth: "protected"
|
|
58770
58925
|
}) },
|
|
58771
58926
|
events: { onMotionTriggerChanged: { data: object({
|
|
58772
58927
|
deviceId: number(),
|
|
@@ -59496,6 +59651,13 @@ var TopologyNodeSchema = object({
|
|
|
59496
59651
|
cpuModel: string().nullable(),
|
|
59497
59652
|
cpuCores: number(),
|
|
59498
59653
|
memoryMB: number(),
|
|
59654
|
+
/**
|
|
59655
|
+
* The inference RUNTIMES installed on the node (`pythonRuntimes`: onnx,
|
|
59656
|
+
* openvino, edgetpu …) — not its devices. An installed runtime says nothing
|
|
59657
|
+
* about whether its hardware is there (a Coral delegate stays installed
|
|
59658
|
+
* after the stick leaves, D919); the live device set is
|
|
59659
|
+
* `pipelineOrchestrator.getNodeInferenceDevices`.
|
|
59660
|
+
*/
|
|
59499
59661
|
engines: array(string()).readonly(),
|
|
59500
59662
|
isHub: boolean(),
|
|
59501
59663
|
isOnline: boolean(),
|
|
@@ -60613,7 +60775,28 @@ var ResolvedInferenceConfigSchema = object({
|
|
|
60613
60775
|
format: ModelFormatSchema,
|
|
60614
60776
|
reason: string()
|
|
60615
60777
|
});
|
|
60616
|
-
|
|
60778
|
+
/**
|
|
60779
|
+
* The answer of an accelerator rescan (D919): the node's device list after
|
|
60780
|
+
* the re-probe, what changed, and the evidence that decided the Coral answer
|
|
60781
|
+
* (`usbBus` — could the USB bus be read at all; `decidedBy` — USB ids, the PCI
|
|
60782
|
+
* bus, the installed-delegate fallback, or nothing).
|
|
60783
|
+
*/
|
|
60784
|
+
var AcceleratorRescanSchema = object({
|
|
60785
|
+
devices: array(InferenceDeviceDescriptorSchema).readonly(),
|
|
60786
|
+
appeared: array(string()).readonly(),
|
|
60787
|
+
disappeared: array(string()).readonly(),
|
|
60788
|
+
usbBus: _enum(["observed", "unobservable"]),
|
|
60789
|
+
decidedBy: _enum([
|
|
60790
|
+
"usb-ids",
|
|
60791
|
+
"pci",
|
|
60792
|
+
"delegate-fallback",
|
|
60793
|
+
"none"
|
|
60794
|
+
])
|
|
60795
|
+
});
|
|
60796
|
+
method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema), method(object({ requirements: array(ModelRequirementSchema).readonly() }), ResolvedInferenceConfigSchema), method(object({ prefer: HwAccelBackendInputSchema }), HwAccelResolutionSchema), method(_void(), AcceleratorRescanSchema, {
|
|
60797
|
+
kind: "mutation",
|
|
60798
|
+
auth: "admin"
|
|
60799
|
+
});
|
|
60617
60800
|
/**
|
|
60618
60801
|
* Multi-metric electrical meter. One slice can carry any combination
|
|
60619
60802
|
* of instantaneous power (W), cumulative energy (kWh), voltage (V),
|
|
@@ -64706,60 +64889,17 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
64706
64889
|
auth: "admin",
|
|
64707
64890
|
access: "delete"
|
|
64708
64891
|
});
|
|
64709
|
-
/**
|
|
64710
|
-
* Robot-vacuum cap. Models HA `vacuum.*` entities — anything with a
|
|
64711
|
-
* cleaning lifecycle plus a return-to-base / locate surface and an
|
|
64712
|
-
* optional fan-speed selector.
|
|
64713
|
-
*
|
|
64714
|
-
* State follows HA's canonical vacuum lifecycle: `idle` / `cleaning` /
|
|
64715
|
-
* `paused` / `returning` / `docked` / `error`. `batteryLevel`
|
|
64716
|
-
* (0..100) is nullable — some vacuums don't report a battery
|
|
64717
|
-
* percentage. `fanSpeed` is the current speed token (provider-verbatim,
|
|
64718
|
-
* e.g. `'standard'` / `'turbo'`) and `availableFanSpeeds` lists the
|
|
64719
|
-
* tokens the hardware accepts so the UI renders only supported choices.
|
|
64720
|
-
*
|
|
64721
|
-
* The `setFanSpeed` method takes the bare `speed` token — the provider
|
|
64722
|
-
* validates it against the vacuum's own list. `locate` triggers the
|
|
64723
|
-
* find-me chirp; `returnToBase` sends it home.
|
|
64724
|
-
*
|
|
64725
|
-
* Consumable / waste tanks: `cleanWater` / `dirtyWater` / `detergent` /
|
|
64726
|
-
* `dustBin` each carry a nullable `{ level (0..100 %), status ('ok' |
|
|
64727
|
-
* 'low' | 'full') }` reading. Native providers (e.g. Dreame, Roborock)
|
|
64728
|
-
* SHOULD populate whichever tanks the hardware has — leave a field `null`
|
|
64729
|
-
* only when the device has no such tank at all, and use a `TankStatus`
|
|
64730
|
-
* with both inner fields `null` when the tank exists but its level is
|
|
64731
|
-
* currently unknown. HA `vacuum.*` entities expose no per-tank telemetry,
|
|
64732
|
-
* so the HA provider leaves all four `null`.
|
|
64733
|
-
*/
|
|
64734
|
-
var VacuumStateSchema = _enum([
|
|
64735
|
-
"idle",
|
|
64736
|
-
"cleaning",
|
|
64737
|
-
"paused",
|
|
64738
|
-
"returning",
|
|
64739
|
-
"docked",
|
|
64740
|
-
"drying",
|
|
64741
|
-
"error"
|
|
64742
|
-
]);
|
|
64743
|
-
/**
|
|
64744
|
-
* One consumable / waste tank on a robot vacuum (clean-water, dirty-water,
|
|
64745
|
-
* detergent or dust-bin). A tank can report a numeric fill `level` (0..100),
|
|
64746
|
-
* a discrete `status` (binary-style hardware), or both. Both `null` means the
|
|
64747
|
-
* level is currently unknown; the OWNING field being `null` means the
|
|
64748
|
-
* hardware has no such tank at all.
|
|
64749
|
-
*/
|
|
64750
|
-
var TankStatusSchema = object({
|
|
64751
|
-
/** Numeric fill 0..100 when the hardware reports a percentage; null otherwise. */
|
|
64752
|
-
level: number().min(0).max(100).nullable(),
|
|
64753
|
-
/** Discrete state when the hardware is binary-mode; null otherwise. */
|
|
64754
|
-
status: _enum([
|
|
64755
|
-
"ok",
|
|
64756
|
-
"low",
|
|
64757
|
-
"full"
|
|
64758
|
-
]).nullable()
|
|
64759
|
-
});
|
|
64760
64892
|
var VacuumControlStatusSchema = object({
|
|
64761
64893
|
/** Lifecycle state of the vacuum. */
|
|
64762
|
-
state:
|
|
64894
|
+
state: _enum([
|
|
64895
|
+
"idle",
|
|
64896
|
+
"cleaning",
|
|
64897
|
+
"paused",
|
|
64898
|
+
"returning",
|
|
64899
|
+
"docked",
|
|
64900
|
+
"drying",
|
|
64901
|
+
"error"
|
|
64902
|
+
]),
|
|
64763
64903
|
/** 0..100 battery percentage. Null when the device has no battery
|
|
64764
64904
|
* reading. */
|
|
64765
64905
|
batteryLevel: number().min(0).max(100).nullable(),
|
|
@@ -64768,14 +64908,6 @@ var VacuumControlStatusSchema = object({
|
|
|
64768
64908
|
fanSpeed: string().nullable(),
|
|
64769
64909
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
64770
64910
|
availableFanSpeeds: array(string()),
|
|
64771
|
-
/** Clean-water (mop) tank. Null when the hardware has no clean-water tank. */
|
|
64772
|
-
cleanWater: TankStatusSchema.nullable(),
|
|
64773
|
-
/** Dirty-water (recovery) tank. Null when the hardware has no dirty-water tank. */
|
|
64774
|
-
dirtyWater: TankStatusSchema.nullable(),
|
|
64775
|
-
/** Detergent tank. Null when the hardware has no detergent tank. */
|
|
64776
|
-
detergent: TankStatusSchema.nullable(),
|
|
64777
|
-
/** Dust bin. Null when the hardware has no dust bin. */
|
|
64778
|
-
dustBin: TankStatusSchema.nullable(),
|
|
64779
64911
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
64780
64912
|
progressPercent: number().min(0).max(100).nullable(),
|
|
64781
64913
|
/** Current error code (0 / null = no error). */
|
|
@@ -64837,35 +64969,14 @@ var vacuumControlCapability = {
|
|
|
64837
64969
|
*/
|
|
64838
64970
|
durability: "session",
|
|
64839
64971
|
/**
|
|
64840
|
-
* History (D850): recorded series.
|
|
64972
|
+
* History (D850): recorded series. The tanks moved to `consumables` (D915), whose
|
|
64973
|
+
* items are keyed by runtime ids and record no history.
|
|
64841
64974
|
*/
|
|
64842
|
-
history: { fields: {
|
|
64843
|
-
|
|
64844
|
-
|
|
64845
|
-
|
|
64846
|
-
|
|
64847
|
-
},
|
|
64848
|
-
"cleanWater.level": {
|
|
64849
|
-
kind: "gauge",
|
|
64850
|
-
unit: "%",
|
|
64851
|
-
deadband: 2
|
|
64852
|
-
},
|
|
64853
|
-
"dirtyWater.level": {
|
|
64854
|
-
kind: "gauge",
|
|
64855
|
-
unit: "%",
|
|
64856
|
-
deadband: 2
|
|
64857
|
-
},
|
|
64858
|
-
"detergent.level": {
|
|
64859
|
-
kind: "gauge",
|
|
64860
|
-
unit: "%",
|
|
64861
|
-
deadband: 2
|
|
64862
|
-
},
|
|
64863
|
-
"dustBin.level": {
|
|
64864
|
-
kind: "gauge",
|
|
64865
|
-
unit: "%",
|
|
64866
|
-
deadband: 2
|
|
64867
|
-
}
|
|
64868
|
-
} }
|
|
64975
|
+
history: { fields: { batteryLevel: {
|
|
64976
|
+
kind: "gauge",
|
|
64977
|
+
unit: "%",
|
|
64978
|
+
deadband: 2
|
|
64979
|
+
} } }
|
|
64869
64980
|
};
|
|
64870
64981
|
var ValveStatusSchema = object({
|
|
64871
64982
|
/** Lifecycle state of the valve. */
|
|
@@ -68776,6 +68887,12 @@ Object.freeze({
|
|
|
68776
68887
|
addonId: null,
|
|
68777
68888
|
access: "create"
|
|
68778
68889
|
},
|
|
68890
|
+
"deviceHistory.deleteOrphanSeries": {
|
|
68891
|
+
capName: "device-history",
|
|
68892
|
+
capScope: "system",
|
|
68893
|
+
addonId: null,
|
|
68894
|
+
access: "delete"
|
|
68895
|
+
},
|
|
68779
68896
|
"deviceHistory.getDeviceEnabled": {
|
|
68780
68897
|
capName: "device-history",
|
|
68781
68898
|
capScope: "system",
|
|
@@ -68794,6 +68911,12 @@ Object.freeze({
|
|
|
68794
68911
|
addonId: null,
|
|
68795
68912
|
access: "view"
|
|
68796
68913
|
},
|
|
68914
|
+
"deviceHistory.listOrphanSeries": {
|
|
68915
|
+
capName: "device-history",
|
|
68916
|
+
capScope: "system",
|
|
68917
|
+
addonId: null,
|
|
68918
|
+
access: "view"
|
|
68919
|
+
},
|
|
68797
68920
|
"deviceHistory.listSeries": {
|
|
68798
68921
|
capName: "device-history",
|
|
68799
68922
|
capScope: "system",
|
|
@@ -72418,6 +72541,12 @@ Object.freeze({
|
|
|
72418
72541
|
addonId: null,
|
|
72419
72542
|
access: "delete"
|
|
72420
72543
|
},
|
|
72544
|
+
"pipelineOrchestrator.forgetInferenceDevice": {
|
|
72545
|
+
capName: "pipeline-orchestrator",
|
|
72546
|
+
capScope: "system",
|
|
72547
|
+
addonId: null,
|
|
72548
|
+
access: "delete"
|
|
72549
|
+
},
|
|
72421
72550
|
"pipelineOrchestrator.getAgentLoad": {
|
|
72422
72551
|
capName: "pipeline-orchestrator",
|
|
72423
72552
|
capScope: "system",
|
|
@@ -72994,6 +73123,12 @@ Object.freeze({
|
|
|
72994
73123
|
addonId: null,
|
|
72995
73124
|
access: "view"
|
|
72996
73125
|
},
|
|
73126
|
+
"platformProbe.rescanAccelerators": {
|
|
73127
|
+
capName: "platform-probe",
|
|
73128
|
+
capScope: "system",
|
|
73129
|
+
addonId: null,
|
|
73130
|
+
access: "create"
|
|
73131
|
+
},
|
|
72997
73132
|
"platformProbe.resolveHwAccel": {
|
|
72998
73133
|
capName: "platform-probe",
|
|
72999
73134
|
capScope: "system",
|
|
@@ -78799,7 +78934,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
78799
78934
|
([...RULE_TEXT], [...COMBINED_ALARM]),
|
|
78800
78935
|
([...RULE_TEXT], [...DEVICE_EVENTS]),
|
|
78801
78936
|
([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
|
|
78802
|
-
([...RULE_TEXT], [...CONSUMABLE]),
|
|
78937
|
+
([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
|
|
78803
78938
|
([...RULE_TEXT], [...TANK]),
|
|
78804
78939
|
[...RULE_TEXT],
|
|
78805
78940
|
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
package/dist/addon.mjs
CHANGED
|
@@ -5440,7 +5440,7 @@ var ZodIssueCode = {
|
|
|
5440
5440
|
var ZodFirstPartyTypeKind;
|
|
5441
5441
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5442
5442
|
//#endregion
|
|
5443
|
-
//#region ../types/dist/sleep-
|
|
5443
|
+
//#region ../types/dist/sleep-CUp20JkO.mjs
|
|
5444
5444
|
/**
|
|
5445
5445
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5446
5446
|
* window to float samples (D455).
|
|
@@ -8391,7 +8391,11 @@ var ContributionSectionSchema = object({
|
|
|
8391
8391
|
literal(4)
|
|
8392
8392
|
]).optional(),
|
|
8393
8393
|
tab: string().optional(),
|
|
8394
|
-
location: _enum([
|
|
8394
|
+
location: _enum([
|
|
8395
|
+
"settings",
|
|
8396
|
+
"top-tab",
|
|
8397
|
+
"hero"
|
|
8398
|
+
]).optional(),
|
|
8395
8399
|
order: number().optional(),
|
|
8396
8400
|
fields: array(any())
|
|
8397
8401
|
});
|
|
@@ -13356,7 +13360,11 @@ var ConfigSectionWithValuesSchema = object({
|
|
|
13356
13360
|
literal(4)
|
|
13357
13361
|
]).optional(),
|
|
13358
13362
|
tab: string().optional(),
|
|
13359
|
-
location: _enum([
|
|
13363
|
+
location: _enum([
|
|
13364
|
+
"settings",
|
|
13365
|
+
"top-tab",
|
|
13366
|
+
"hero"
|
|
13367
|
+
]).optional(),
|
|
13360
13368
|
order: number().optional(),
|
|
13361
13369
|
fields: array(any())
|
|
13362
13370
|
});
|
|
@@ -17236,6 +17244,52 @@ var TierStatusSchema = object({
|
|
|
17236
17244
|
countedAt: number().nullable()
|
|
17237
17245
|
});
|
|
17238
17246
|
/** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
|
|
17247
|
+
/**
|
|
17248
|
+
* Why a series is orphan. `device-gone`: its device is absent from the
|
|
17249
|
+
* successful device listings (the departure clock). `undeclared`: its `cap:`
|
|
17250
|
+
* key is declared by no capability any more (a field a cap removed).
|
|
17251
|
+
*/
|
|
17252
|
+
var DeviceHistoryOrphanReasonSchema = _enum(["device-gone", "undeclared"]);
|
|
17253
|
+
/** Rows held per stored tier. */
|
|
17254
|
+
var TierRowsSchema = object({
|
|
17255
|
+
raw: number().int(),
|
|
17256
|
+
"5m": number().int(),
|
|
17257
|
+
"1h": number().int(),
|
|
17258
|
+
"1d": number().int()
|
|
17259
|
+
});
|
|
17260
|
+
var OrphanSeriesSchema = object({
|
|
17261
|
+
seriesId: number().int(),
|
|
17262
|
+
deviceId: number().int(),
|
|
17263
|
+
key: string(),
|
|
17264
|
+
scope: string(),
|
|
17265
|
+
/** The metric's display name; `null` when its metric row is gone too. */
|
|
17266
|
+
displayName: string().nullable(),
|
|
17267
|
+
reason: DeviceHistoryOrphanReasonSchema,
|
|
17268
|
+
/** `device-gone`: since when the device has been absent; `null` otherwise. */
|
|
17269
|
+
missingSince: number().nullable(),
|
|
17270
|
+
firstTs: number(),
|
|
17271
|
+
lastTs: number(),
|
|
17272
|
+
rows: TierRowsSchema
|
|
17273
|
+
});
|
|
17274
|
+
var DeviceHistoryOrphanDeleteRefusalSchema = _enum([
|
|
17275
|
+
"not-found",
|
|
17276
|
+
"not-orphan",
|
|
17277
|
+
"failed"
|
|
17278
|
+
]);
|
|
17279
|
+
var OrphanDeleteEntrySchema = discriminatedUnion("ok", [object({
|
|
17280
|
+
seriesId: number().int(),
|
|
17281
|
+
ok: literal(true),
|
|
17282
|
+
deleted: TierRowsSchema
|
|
17283
|
+
}), object({
|
|
17284
|
+
seriesId: number().int(),
|
|
17285
|
+
ok: literal(false),
|
|
17286
|
+
reason: DeviceHistoryOrphanDeleteRefusalSchema
|
|
17287
|
+
})]);
|
|
17288
|
+
var OrphanListSchema = object({
|
|
17289
|
+
series: array(OrphanSeriesSchema).readonly(),
|
|
17290
|
+
/** More orphans exist than {@link DEVICE_HISTORY_ORPHAN_LIST_MAX}. */
|
|
17291
|
+
truncated: boolean()
|
|
17292
|
+
});
|
|
17239
17293
|
var DeviceHistoryStatusSchema = object({
|
|
17240
17294
|
startedAt: number(),
|
|
17241
17295
|
/** The store is declared, series loaded and the first reconcile has answered. */
|
|
@@ -17333,7 +17387,10 @@ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly())
|
|
|
17333
17387
|
}), object({ enabled: boolean() }), {
|
|
17334
17388
|
kind: "mutation",
|
|
17335
17389
|
auth: "admin"
|
|
17336
|
-
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" })
|
|
17390
|
+
}), 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() }), {
|
|
17391
|
+
kind: "mutation",
|
|
17392
|
+
auth: "admin"
|
|
17393
|
+
});
|
|
17337
17394
|
var DeviceCaStatusSchema = discriminatedUnion("state", [
|
|
17338
17395
|
object({ state: literal("absent") }),
|
|
17339
17396
|
object({
|
|
@@ -50206,6 +50263,19 @@ var NodeInferenceDeviceSchema = object({
|
|
|
50206
50263
|
/** Whether the node's live probe reports the device as usable right now. */
|
|
50207
50264
|
available: boolean(),
|
|
50208
50265
|
/**
|
|
50266
|
+
* Is the device on the node at all (D919)? `present` — the live probe
|
|
50267
|
+
* reported it; `absent` — the probe ANSWERED and did not report it, so only
|
|
50268
|
+
* its stored settings remain (unplugged, moved to another node): never
|
|
50269
|
+
* eligible, whatever its stored `enabled`, and forgettable with
|
|
50270
|
+
* `forgetInferenceDevice`; `unknown` — the probe did not answer, nothing is
|
|
50271
|
+
* claimed (D315). Optional only for an orchestrator older than the field.
|
|
50272
|
+
*/
|
|
50273
|
+
presence: _enum([
|
|
50274
|
+
"present",
|
|
50275
|
+
"absent",
|
|
50276
|
+
"unknown"
|
|
50277
|
+
]).optional(),
|
|
50278
|
+
/**
|
|
50209
50279
|
* Whether this device participates in dispatch. AUTO default (spec C2):
|
|
50210
50280
|
* accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
|
|
50211
50281
|
* entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
|
|
@@ -50431,7 +50501,13 @@ method(object({
|
|
|
50431
50501
|
}), object({ success: literal(true) }), {
|
|
50432
50502
|
kind: "mutation",
|
|
50433
50503
|
auth: "admin"
|
|
50434
|
-
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50504
|
+
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
|
|
50505
|
+
agentNodeId: string(),
|
|
50506
|
+
deviceKey: string()
|
|
50507
|
+
}), object({ success: literal(true) }), {
|
|
50508
|
+
kind: "mutation",
|
|
50509
|
+
auth: "admin"
|
|
50510
|
+
}), method(object({ agentNodeId: string() }), object({
|
|
50435
50511
|
success: literal(true),
|
|
50436
50512
|
/** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
|
|
50437
50513
|
effectiveModelId: string().nullable(),
|
|
@@ -55243,17 +55319,69 @@ var connectivityCapability = {
|
|
|
55243
55319
|
volatileStateFields: ["lastChangedAt"]
|
|
55244
55320
|
};
|
|
55245
55321
|
/**
|
|
55246
|
-
* Generic device-consumables capability —
|
|
55247
|
-
*
|
|
55248
|
-
* descaling cycles,
|
|
55249
|
-
*
|
|
55250
|
-
*
|
|
55251
|
-
*
|
|
55322
|
+
* Generic device-consumables capability — the ONE place a device reports what
|
|
55323
|
+
* it uses up or fills: wear parts (vacuum filters/brushes, cartridges,
|
|
55324
|
+
* descaling cycles), supplies it draws from (a vacuum's clean-water tank and
|
|
55325
|
+
* detergent, a dishwasher's salt and rinse aid) and waste it collects (a dirty
|
|
55326
|
+
* water tank, a dust bin). Each item carries its remaining life or fill and an
|
|
55327
|
+
* optional "Replaced" reset action. Device-agnostic: any provider that knows
|
|
55328
|
+
* its device tracks consumables registers it; the provider names each item
|
|
55329
|
+
* verbatim and says which `kind` it is.
|
|
55330
|
+
*
|
|
55331
|
+
* The admin UI renders it as ONE collapsible section directly under the
|
|
55332
|
+
* device page's hero card (`placement: 'hero'`), for every device bound to
|
|
55333
|
+
* this cap — never drawn by a device type's hero card itself (D915).
|
|
55252
55334
|
*
|
|
55253
55335
|
* Like `childLayout`, the cap is INERT until a provider sets items: no
|
|
55254
55336
|
* provider populates it by guessing (no HA inference). The UI renders a
|
|
55255
55337
|
* "No consumables reported" placeholder when `items` is empty.
|
|
55256
55338
|
*/
|
|
55339
|
+
/**
|
|
55340
|
+
* What an item IS, which decides which direction is bad:
|
|
55341
|
+
* - `wear` — a part that wears out (a brush, a filter); low life is bad.
|
|
55342
|
+
* - `supply` — something the device draws from (clean water, detergent,
|
|
55343
|
+
* salt, rinse aid); low or empty is bad.
|
|
55344
|
+
* - `waste` — something the device fills (dirty water, a dust bin); full is
|
|
55345
|
+
* bad.
|
|
55346
|
+
* Absent = `wear`.
|
|
55347
|
+
*/
|
|
55348
|
+
var ConsumableKindSchema = _enum([
|
|
55349
|
+
"wear",
|
|
55350
|
+
"supply",
|
|
55351
|
+
"waste"
|
|
55352
|
+
]);
|
|
55353
|
+
/**
|
|
55354
|
+
* What an item LOOKS like, which decides how a client draws it — independent
|
|
55355
|
+
* of `kind`, which decides which direction is bad:
|
|
55356
|
+
* - `part` — a part that wears (a brush, a filter, a mop pad): a wear bar,
|
|
55357
|
+
* remaining time and a reset.
|
|
55358
|
+
* - `tank` — a container of liquid (clean water, dirty water): a fill gauge.
|
|
55359
|
+
* - `product` — something bought and refilled (detergent, salt, rinse aid):
|
|
55360
|
+
* a stepped level and "refill".
|
|
55361
|
+
* - `bin` — a container that collects waste (a dust bin): a fill gauge
|
|
55362
|
+
* that warns when full.
|
|
55363
|
+
* Absent = derived from the kind ({@link consumableFormOf}).
|
|
55364
|
+
*/
|
|
55365
|
+
var ConsumableFormSchema = _enum([
|
|
55366
|
+
"part",
|
|
55367
|
+
"tank",
|
|
55368
|
+
"product",
|
|
55369
|
+
"bin"
|
|
55370
|
+
]);
|
|
55371
|
+
/** The provider's own discrete verdict on an item. */
|
|
55372
|
+
var ConsumableStatusSchema = _enum([
|
|
55373
|
+
"ok",
|
|
55374
|
+
"low",
|
|
55375
|
+
"empty",
|
|
55376
|
+
"full",
|
|
55377
|
+
"replace"
|
|
55378
|
+
]);
|
|
55379
|
+
_enum([
|
|
55380
|
+
"ok",
|
|
55381
|
+
"low",
|
|
55382
|
+
"empty",
|
|
55383
|
+
"full"
|
|
55384
|
+
]);
|
|
55257
55385
|
/** Units a remaining-life counter is reported in. Closed: the panel renders
|
|
55258
55386
|
* each. */
|
|
55259
55387
|
var ConsumableRemainingUnitSchema = _enum([
|
|
@@ -55268,18 +55396,23 @@ var ConsumableRemainingSchema = object({
|
|
|
55268
55396
|
unit: ConsumableRemainingUnitSchema
|
|
55269
55397
|
});
|
|
55270
55398
|
/** A single consumable item. Either a continuous `level` (remaining
|
|
55271
|
-
* life
|
|
55272
|
-
*
|
|
55273
|
-
* mutually exclusive; a provider may
|
|
55399
|
+
* life %, or fill % for a `supply` / `waste` item) or a discrete `status`
|
|
55400
|
+
* may be known — both may be null when a provider only knows the item
|
|
55401
|
+
* exists. `level` and `status` are not mutually exclusive; a provider may
|
|
55402
|
+
* report both. */
|
|
55274
55403
|
var ConsumableItemSchema = object({
|
|
55275
55404
|
/** Stable id, e.g. 'main-brush'. */
|
|
55276
55405
|
key: string().min(1),
|
|
55277
55406
|
/** Display name. */
|
|
55278
55407
|
label: string().min(1),
|
|
55279
|
-
/** Remaining life % when known (0..100). */
|
|
55408
|
+
/** Remaining life % (`wear`) or fill % (`supply`, `waste`) when known (0..100). */
|
|
55280
55409
|
level: number().min(0).max(100).nullable(),
|
|
55281
|
-
/**
|
|
55282
|
-
status:
|
|
55410
|
+
/** The provider's discrete verdict when known (binary mode). */
|
|
55411
|
+
status: ConsumableStatusSchema.nullable(),
|
|
55412
|
+
/** What the item is — decides whether low or full is bad. Absent = `wear`. */
|
|
55413
|
+
kind: ConsumableKindSchema.optional(),
|
|
55414
|
+
/** How the item is drawn (part, tank, product, bin). Absent = derived from `kind`. */
|
|
55415
|
+
form: ConsumableFormSchema.optional(),
|
|
55283
55416
|
/** Ms epoch of the last replace, when known. */
|
|
55284
55417
|
lastResetAt: number().nullable(),
|
|
55285
55418
|
/** Whether `reset()` is meaningful for this item. */
|
|
@@ -55302,7 +55435,7 @@ var consumablesCapability = {
|
|
|
55302
55435
|
kind: "widget",
|
|
55303
55436
|
widgetId: "host/consumables-panel",
|
|
55304
55437
|
tab: "consumables",
|
|
55305
|
-
|
|
55438
|
+
placement: "hero",
|
|
55306
55439
|
label: "Consumables",
|
|
55307
55440
|
order: 5
|
|
55308
55441
|
} },
|
|
@@ -55363,9 +55496,37 @@ reset: method(object({
|
|
|
55363
55496
|
*/
|
|
55364
55497
|
durability: "restored",
|
|
55365
55498
|
/**
|
|
55366
|
-
* History (D850):
|
|
55499
|
+
* History (D850, D917): one series per (item field, item `key`) — the item key
|
|
55500
|
+
* is the series scope, the item `label` names it. A vacuum tank's fill, a
|
|
55501
|
+
* brush's remaining life and a dishwasher's salt are each recorded the moment
|
|
55502
|
+
* their provider reports them; an item that appears later gets its series.
|
|
55367
55503
|
*/
|
|
55368
|
-
history:
|
|
55504
|
+
history: {
|
|
55505
|
+
fields: {},
|
|
55506
|
+
items: {
|
|
55507
|
+
path: "items",
|
|
55508
|
+
key: "key",
|
|
55509
|
+
label: "label",
|
|
55510
|
+
fields: {
|
|
55511
|
+
level: {
|
|
55512
|
+
kind: "gauge",
|
|
55513
|
+
unit: "%",
|
|
55514
|
+
deadband: 2,
|
|
55515
|
+
displayName: "Level"
|
|
55516
|
+
},
|
|
55517
|
+
status: {
|
|
55518
|
+
kind: "enum",
|
|
55519
|
+
displayName: "Status"
|
|
55520
|
+
},
|
|
55521
|
+
"remaining.value": {
|
|
55522
|
+
kind: "gauge",
|
|
55523
|
+
unitFrom: "remaining.unit",
|
|
55524
|
+
deadband: 1,
|
|
55525
|
+
displayName: "Remaining"
|
|
55526
|
+
}
|
|
55527
|
+
}
|
|
55528
|
+
}
|
|
55529
|
+
},
|
|
55369
55530
|
/** Clocks, not content: a re-read that changed no item costs no commit. */
|
|
55370
55531
|
volatileStateFields: ["lastChangedAt", "lastFetchedAt"]
|
|
55371
55532
|
};
|
|
@@ -55780,8 +55941,9 @@ onStatusChanged: { data: object({
|
|
|
55780
55941
|
volatileStateFields: ["lastChangedAt"]
|
|
55781
55942
|
};
|
|
55782
55943
|
/**
|
|
55783
|
-
* Smart-dishwasher cap — program lifecycle, door / remote-start gates
|
|
55784
|
-
*
|
|
55944
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates and
|
|
55945
|
+
* common program options. Salt and rinse aid are NOT here: they are items of
|
|
55946
|
+
* the device's `consumables` cap, like every other device's (D915).
|
|
55785
55947
|
*
|
|
55786
55948
|
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
55787
55949
|
* by any integration that exposes the same program / option surface.
|
|
@@ -55829,11 +55991,6 @@ var DishwasherAvailabilitySchema = _enum([
|
|
|
55829
55991
|
"offline",
|
|
55830
55992
|
"description-missing"
|
|
55831
55993
|
]);
|
|
55832
|
-
var DishwasherConsumableLevelSchema = _enum([
|
|
55833
|
-
"ok",
|
|
55834
|
-
"low",
|
|
55835
|
-
"empty"
|
|
55836
|
-
]);
|
|
55837
55994
|
var DishwasherStatusSchema = object({
|
|
55838
55995
|
availability: DishwasherAvailabilitySchema,
|
|
55839
55996
|
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
@@ -55866,8 +56023,6 @@ var DishwasherStatusSchema = object({
|
|
|
55866
56023
|
powerOn: boolean().nullable(),
|
|
55867
56024
|
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
55868
56025
|
powerState: string().nullable(),
|
|
55869
|
-
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55870
|
-
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55871
56026
|
/**
|
|
55872
56027
|
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
55873
56028
|
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
@@ -58743,7 +58898,7 @@ var motionTriggerCapability = {
|
|
|
58743
58898
|
enabled: boolean()
|
|
58744
58899
|
}), _void(), {
|
|
58745
58900
|
kind: "mutation",
|
|
58746
|
-
auth: "
|
|
58901
|
+
auth: "protected"
|
|
58747
58902
|
}) },
|
|
58748
58903
|
events: { onMotionTriggerChanged: { data: object({
|
|
58749
58904
|
deviceId: number(),
|
|
@@ -59473,6 +59628,13 @@ var TopologyNodeSchema = object({
|
|
|
59473
59628
|
cpuModel: string().nullable(),
|
|
59474
59629
|
cpuCores: number(),
|
|
59475
59630
|
memoryMB: number(),
|
|
59631
|
+
/**
|
|
59632
|
+
* The inference RUNTIMES installed on the node (`pythonRuntimes`: onnx,
|
|
59633
|
+
* openvino, edgetpu …) — not its devices. An installed runtime says nothing
|
|
59634
|
+
* about whether its hardware is there (a Coral delegate stays installed
|
|
59635
|
+
* after the stick leaves, D919); the live device set is
|
|
59636
|
+
* `pipelineOrchestrator.getNodeInferenceDevices`.
|
|
59637
|
+
*/
|
|
59476
59638
|
engines: array(string()).readonly(),
|
|
59477
59639
|
isHub: boolean(),
|
|
59478
59640
|
isOnline: boolean(),
|
|
@@ -60590,7 +60752,28 @@ var ResolvedInferenceConfigSchema = object({
|
|
|
60590
60752
|
format: ModelFormatSchema,
|
|
60591
60753
|
reason: string()
|
|
60592
60754
|
});
|
|
60593
|
-
|
|
60755
|
+
/**
|
|
60756
|
+
* The answer of an accelerator rescan (D919): the node's device list after
|
|
60757
|
+
* the re-probe, what changed, and the evidence that decided the Coral answer
|
|
60758
|
+
* (`usbBus` — could the USB bus be read at all; `decidedBy` — USB ids, the PCI
|
|
60759
|
+
* bus, the installed-delegate fallback, or nothing).
|
|
60760
|
+
*/
|
|
60761
|
+
var AcceleratorRescanSchema = object({
|
|
60762
|
+
devices: array(InferenceDeviceDescriptorSchema).readonly(),
|
|
60763
|
+
appeared: array(string()).readonly(),
|
|
60764
|
+
disappeared: array(string()).readonly(),
|
|
60765
|
+
usbBus: _enum(["observed", "unobservable"]),
|
|
60766
|
+
decidedBy: _enum([
|
|
60767
|
+
"usb-ids",
|
|
60768
|
+
"pci",
|
|
60769
|
+
"delegate-fallback",
|
|
60770
|
+
"none"
|
|
60771
|
+
])
|
|
60772
|
+
});
|
|
60773
|
+
method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema), method(object({ requirements: array(ModelRequirementSchema).readonly() }), ResolvedInferenceConfigSchema), method(object({ prefer: HwAccelBackendInputSchema }), HwAccelResolutionSchema), method(_void(), AcceleratorRescanSchema, {
|
|
60774
|
+
kind: "mutation",
|
|
60775
|
+
auth: "admin"
|
|
60776
|
+
});
|
|
60594
60777
|
/**
|
|
60595
60778
|
* Multi-metric electrical meter. One slice can carry any combination
|
|
60596
60779
|
* of instantaneous power (W), cumulative energy (kWh), voltage (V),
|
|
@@ -64683,60 +64866,17 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
64683
64866
|
auth: "admin",
|
|
64684
64867
|
access: "delete"
|
|
64685
64868
|
});
|
|
64686
|
-
/**
|
|
64687
|
-
* Robot-vacuum cap. Models HA `vacuum.*` entities — anything with a
|
|
64688
|
-
* cleaning lifecycle plus a return-to-base / locate surface and an
|
|
64689
|
-
* optional fan-speed selector.
|
|
64690
|
-
*
|
|
64691
|
-
* State follows HA's canonical vacuum lifecycle: `idle` / `cleaning` /
|
|
64692
|
-
* `paused` / `returning` / `docked` / `error`. `batteryLevel`
|
|
64693
|
-
* (0..100) is nullable — some vacuums don't report a battery
|
|
64694
|
-
* percentage. `fanSpeed` is the current speed token (provider-verbatim,
|
|
64695
|
-
* e.g. `'standard'` / `'turbo'`) and `availableFanSpeeds` lists the
|
|
64696
|
-
* tokens the hardware accepts so the UI renders only supported choices.
|
|
64697
|
-
*
|
|
64698
|
-
* The `setFanSpeed` method takes the bare `speed` token — the provider
|
|
64699
|
-
* validates it against the vacuum's own list. `locate` triggers the
|
|
64700
|
-
* find-me chirp; `returnToBase` sends it home.
|
|
64701
|
-
*
|
|
64702
|
-
* Consumable / waste tanks: `cleanWater` / `dirtyWater` / `detergent` /
|
|
64703
|
-
* `dustBin` each carry a nullable `{ level (0..100 %), status ('ok' |
|
|
64704
|
-
* 'low' | 'full') }` reading. Native providers (e.g. Dreame, Roborock)
|
|
64705
|
-
* SHOULD populate whichever tanks the hardware has — leave a field `null`
|
|
64706
|
-
* only when the device has no such tank at all, and use a `TankStatus`
|
|
64707
|
-
* with both inner fields `null` when the tank exists but its level is
|
|
64708
|
-
* currently unknown. HA `vacuum.*` entities expose no per-tank telemetry,
|
|
64709
|
-
* so the HA provider leaves all four `null`.
|
|
64710
|
-
*/
|
|
64711
|
-
var VacuumStateSchema = _enum([
|
|
64712
|
-
"idle",
|
|
64713
|
-
"cleaning",
|
|
64714
|
-
"paused",
|
|
64715
|
-
"returning",
|
|
64716
|
-
"docked",
|
|
64717
|
-
"drying",
|
|
64718
|
-
"error"
|
|
64719
|
-
]);
|
|
64720
|
-
/**
|
|
64721
|
-
* One consumable / waste tank on a robot vacuum (clean-water, dirty-water,
|
|
64722
|
-
* detergent or dust-bin). A tank can report a numeric fill `level` (0..100),
|
|
64723
|
-
* a discrete `status` (binary-style hardware), or both. Both `null` means the
|
|
64724
|
-
* level is currently unknown; the OWNING field being `null` means the
|
|
64725
|
-
* hardware has no such tank at all.
|
|
64726
|
-
*/
|
|
64727
|
-
var TankStatusSchema = object({
|
|
64728
|
-
/** Numeric fill 0..100 when the hardware reports a percentage; null otherwise. */
|
|
64729
|
-
level: number().min(0).max(100).nullable(),
|
|
64730
|
-
/** Discrete state when the hardware is binary-mode; null otherwise. */
|
|
64731
|
-
status: _enum([
|
|
64732
|
-
"ok",
|
|
64733
|
-
"low",
|
|
64734
|
-
"full"
|
|
64735
|
-
]).nullable()
|
|
64736
|
-
});
|
|
64737
64869
|
var VacuumControlStatusSchema = object({
|
|
64738
64870
|
/** Lifecycle state of the vacuum. */
|
|
64739
|
-
state:
|
|
64871
|
+
state: _enum([
|
|
64872
|
+
"idle",
|
|
64873
|
+
"cleaning",
|
|
64874
|
+
"paused",
|
|
64875
|
+
"returning",
|
|
64876
|
+
"docked",
|
|
64877
|
+
"drying",
|
|
64878
|
+
"error"
|
|
64879
|
+
]),
|
|
64740
64880
|
/** 0..100 battery percentage. Null when the device has no battery
|
|
64741
64881
|
* reading. */
|
|
64742
64882
|
batteryLevel: number().min(0).max(100).nullable(),
|
|
@@ -64745,14 +64885,6 @@ var VacuumControlStatusSchema = object({
|
|
|
64745
64885
|
fanSpeed: string().nullable(),
|
|
64746
64886
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
64747
64887
|
availableFanSpeeds: array(string()),
|
|
64748
|
-
/** Clean-water (mop) tank. Null when the hardware has no clean-water tank. */
|
|
64749
|
-
cleanWater: TankStatusSchema.nullable(),
|
|
64750
|
-
/** Dirty-water (recovery) tank. Null when the hardware has no dirty-water tank. */
|
|
64751
|
-
dirtyWater: TankStatusSchema.nullable(),
|
|
64752
|
-
/** Detergent tank. Null when the hardware has no detergent tank. */
|
|
64753
|
-
detergent: TankStatusSchema.nullable(),
|
|
64754
|
-
/** Dust bin. Null when the hardware has no dust bin. */
|
|
64755
|
-
dustBin: TankStatusSchema.nullable(),
|
|
64756
64888
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
64757
64889
|
progressPercent: number().min(0).max(100).nullable(),
|
|
64758
64890
|
/** Current error code (0 / null = no error). */
|
|
@@ -64814,35 +64946,14 @@ var vacuumControlCapability = {
|
|
|
64814
64946
|
*/
|
|
64815
64947
|
durability: "session",
|
|
64816
64948
|
/**
|
|
64817
|
-
* History (D850): recorded series.
|
|
64949
|
+
* History (D850): recorded series. The tanks moved to `consumables` (D915), whose
|
|
64950
|
+
* items are keyed by runtime ids and record no history.
|
|
64818
64951
|
*/
|
|
64819
|
-
history: { fields: {
|
|
64820
|
-
|
|
64821
|
-
|
|
64822
|
-
|
|
64823
|
-
|
|
64824
|
-
},
|
|
64825
|
-
"cleanWater.level": {
|
|
64826
|
-
kind: "gauge",
|
|
64827
|
-
unit: "%",
|
|
64828
|
-
deadband: 2
|
|
64829
|
-
},
|
|
64830
|
-
"dirtyWater.level": {
|
|
64831
|
-
kind: "gauge",
|
|
64832
|
-
unit: "%",
|
|
64833
|
-
deadband: 2
|
|
64834
|
-
},
|
|
64835
|
-
"detergent.level": {
|
|
64836
|
-
kind: "gauge",
|
|
64837
|
-
unit: "%",
|
|
64838
|
-
deadband: 2
|
|
64839
|
-
},
|
|
64840
|
-
"dustBin.level": {
|
|
64841
|
-
kind: "gauge",
|
|
64842
|
-
unit: "%",
|
|
64843
|
-
deadband: 2
|
|
64844
|
-
}
|
|
64845
|
-
} }
|
|
64952
|
+
history: { fields: { batteryLevel: {
|
|
64953
|
+
kind: "gauge",
|
|
64954
|
+
unit: "%",
|
|
64955
|
+
deadband: 2
|
|
64956
|
+
} } }
|
|
64846
64957
|
};
|
|
64847
64958
|
var ValveStatusSchema = object({
|
|
64848
64959
|
/** Lifecycle state of the valve. */
|
|
@@ -68753,6 +68864,12 @@ Object.freeze({
|
|
|
68753
68864
|
addonId: null,
|
|
68754
68865
|
access: "create"
|
|
68755
68866
|
},
|
|
68867
|
+
"deviceHistory.deleteOrphanSeries": {
|
|
68868
|
+
capName: "device-history",
|
|
68869
|
+
capScope: "system",
|
|
68870
|
+
addonId: null,
|
|
68871
|
+
access: "delete"
|
|
68872
|
+
},
|
|
68756
68873
|
"deviceHistory.getDeviceEnabled": {
|
|
68757
68874
|
capName: "device-history",
|
|
68758
68875
|
capScope: "system",
|
|
@@ -68771,6 +68888,12 @@ Object.freeze({
|
|
|
68771
68888
|
addonId: null,
|
|
68772
68889
|
access: "view"
|
|
68773
68890
|
},
|
|
68891
|
+
"deviceHistory.listOrphanSeries": {
|
|
68892
|
+
capName: "device-history",
|
|
68893
|
+
capScope: "system",
|
|
68894
|
+
addonId: null,
|
|
68895
|
+
access: "view"
|
|
68896
|
+
},
|
|
68774
68897
|
"deviceHistory.listSeries": {
|
|
68775
68898
|
capName: "device-history",
|
|
68776
68899
|
capScope: "system",
|
|
@@ -72395,6 +72518,12 @@ Object.freeze({
|
|
|
72395
72518
|
addonId: null,
|
|
72396
72519
|
access: "delete"
|
|
72397
72520
|
},
|
|
72521
|
+
"pipelineOrchestrator.forgetInferenceDevice": {
|
|
72522
|
+
capName: "pipeline-orchestrator",
|
|
72523
|
+
capScope: "system",
|
|
72524
|
+
addonId: null,
|
|
72525
|
+
access: "delete"
|
|
72526
|
+
},
|
|
72398
72527
|
"pipelineOrchestrator.getAgentLoad": {
|
|
72399
72528
|
capName: "pipeline-orchestrator",
|
|
72400
72529
|
capScope: "system",
|
|
@@ -72971,6 +73100,12 @@ Object.freeze({
|
|
|
72971
73100
|
addonId: null,
|
|
72972
73101
|
access: "view"
|
|
72973
73102
|
},
|
|
73103
|
+
"platformProbe.rescanAccelerators": {
|
|
73104
|
+
capName: "platform-probe",
|
|
73105
|
+
capScope: "system",
|
|
73106
|
+
addonId: null,
|
|
73107
|
+
access: "create"
|
|
73108
|
+
},
|
|
72974
73109
|
"platformProbe.resolveHwAccel": {
|
|
72975
73110
|
capName: "platform-probe",
|
|
72976
73111
|
capScope: "system",
|
|
@@ -78776,7 +78911,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
78776
78911
|
([...RULE_TEXT], [...COMBINED_ALARM]),
|
|
78777
78912
|
([...RULE_TEXT], [...DEVICE_EVENTS]),
|
|
78778
78913
|
([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
|
|
78779
|
-
([...RULE_TEXT], [...CONSUMABLE]),
|
|
78914
|
+
([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
|
|
78780
78915
|
([...RULE_TEXT], [...TANK]),
|
|
78781
78916
|
[...RULE_TEXT],
|
|
78782
78917
|
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|