@camstack/addon-post-analysis 1.2.624 → 1.2.626

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.
Files changed (15) hide show
  1. package/dist/{clip-model-registry-BpS_EthX.mjs → clip-model-registry-DAWGt4j9.mjs} +257 -121
  2. package/dist/{clip-model-registry-WENnCB-u.js → clip-model-registry-FGmg0uYz.js} +257 -121
  3. package/dist/embedding-encoder/index.js +1 -1
  4. package/dist/embedding-encoder/index.mjs +1 -1
  5. package/dist/pipeline-analytics/_stub.js +2 -2
  6. package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-B3M-0LC0.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-Biy-u2yt.mjs} +3 -3
  7. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-yap5surJ.mjs +26 -0
  8. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-_Ip2ZGVX.mjs +26 -0
  9. package/dist/pipeline-analytics/{hostInit-BqU6Q1wQ.mjs → hostInit-4lybsFX0.mjs} +3 -3
  10. package/dist/pipeline-analytics/index.js +206 -222
  11. package/dist/pipeline-analytics/index.mjs +206 -222
  12. package/dist/pipeline-analytics/remoteEntry.js +1 -1
  13. package/package.json +1 -1
  14. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DBuMgPh6.mjs +0 -26
  15. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-B1HZu0i3.mjs +0 -26
@@ -5629,7 +5629,7 @@ var ZodIssueCode = {
5629
5629
  var ZodFirstPartyTypeKind;
5630
5630
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5631
5631
  //#endregion
5632
- //#region ../types/dist/sleep-DJFUfKvA.mjs
5632
+ //#region ../types/dist/sleep-CUp20JkO.mjs
5633
5633
  /**
5634
5634
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5635
5635
  * window to float samples (D455).
@@ -8726,7 +8726,11 @@ var ContributionSectionSchema = object({
8726
8726
  literal(4)
8727
8727
  ]).optional(),
8728
8728
  tab: string().optional(),
8729
- location: _enum(["settings", "top-tab"]).optional(),
8729
+ location: _enum([
8730
+ "settings",
8731
+ "top-tab",
8732
+ "hero"
8733
+ ]).optional(),
8730
8734
  order: number().optional(),
8731
8735
  fields: array(any())
8732
8736
  });
@@ -14741,7 +14745,11 @@ var ConfigSectionWithValuesSchema = object({
14741
14745
  literal(4)
14742
14746
  ]).optional(),
14743
14747
  tab: string().optional(),
14744
- location: _enum(["settings", "top-tab"]).optional(),
14748
+ location: _enum([
14749
+ "settings",
14750
+ "top-tab",
14751
+ "hero"
14752
+ ]).optional(),
14745
14753
  order: number().optional(),
14746
14754
  fields: array(any())
14747
14755
  });
@@ -18651,6 +18659,52 @@ var TierStatusSchema = object({
18651
18659
  countedAt: number().nullable()
18652
18660
  });
18653
18661
  /** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
18662
+ /**
18663
+ * Why a series is orphan. `device-gone`: its device is absent from the
18664
+ * successful device listings (the departure clock). `undeclared`: its `cap:`
18665
+ * key is declared by no capability any more (a field a cap removed).
18666
+ */
18667
+ var DeviceHistoryOrphanReasonSchema = _enum(["device-gone", "undeclared"]);
18668
+ /** Rows held per stored tier. */
18669
+ var TierRowsSchema = object({
18670
+ raw: number().int(),
18671
+ "5m": number().int(),
18672
+ "1h": number().int(),
18673
+ "1d": number().int()
18674
+ });
18675
+ var OrphanSeriesSchema = object({
18676
+ seriesId: number().int(),
18677
+ deviceId: number().int(),
18678
+ key: string(),
18679
+ scope: string(),
18680
+ /** The metric's display name; `null` when its metric row is gone too. */
18681
+ displayName: string().nullable(),
18682
+ reason: DeviceHistoryOrphanReasonSchema,
18683
+ /** `device-gone`: since when the device has been absent; `null` otherwise. */
18684
+ missingSince: number().nullable(),
18685
+ firstTs: number(),
18686
+ lastTs: number(),
18687
+ rows: TierRowsSchema
18688
+ });
18689
+ var DeviceHistoryOrphanDeleteRefusalSchema = _enum([
18690
+ "not-found",
18691
+ "not-orphan",
18692
+ "failed"
18693
+ ]);
18694
+ var OrphanDeleteEntrySchema = discriminatedUnion("ok", [object({
18695
+ seriesId: number().int(),
18696
+ ok: literal(true),
18697
+ deleted: TierRowsSchema
18698
+ }), object({
18699
+ seriesId: number().int(),
18700
+ ok: literal(false),
18701
+ reason: DeviceHistoryOrphanDeleteRefusalSchema
18702
+ })]);
18703
+ var OrphanListSchema = object({
18704
+ series: array(OrphanSeriesSchema).readonly(),
18705
+ /** More orphans exist than {@link DEVICE_HISTORY_ORPHAN_LIST_MAX}. */
18706
+ truncated: boolean()
18707
+ });
18654
18708
  var DeviceHistoryStatusSchema = object({
18655
18709
  startedAt: number(),
18656
18710
  /** The store is declared, series loaded and the first reconcile has answered. */
@@ -18748,7 +18802,10 @@ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly())
18748
18802
  }), object({ enabled: boolean() }), {
18749
18803
  kind: "mutation",
18750
18804
  auth: "admin"
18751
- }), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" });
18805
+ }), 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() }), {
18806
+ kind: "mutation",
18807
+ auth: "admin"
18808
+ });
18752
18809
  var DeviceCaStatusSchema = discriminatedUnion("state", [
18753
18810
  object({ state: literal("absent") }),
18754
18811
  object({
@@ -53644,6 +53701,19 @@ var NodeInferenceDeviceSchema = object({
53644
53701
  /** Whether the node's live probe reports the device as usable right now. */
53645
53702
  available: boolean(),
53646
53703
  /**
53704
+ * Is the device on the node at all (D919)? `present` — the live probe
53705
+ * reported it; `absent` — the probe ANSWERED and did not report it, so only
53706
+ * its stored settings remain (unplugged, moved to another node): never
53707
+ * eligible, whatever its stored `enabled`, and forgettable with
53708
+ * `forgetInferenceDevice`; `unknown` — the probe did not answer, nothing is
53709
+ * claimed (D315). Optional only for an orchestrator older than the field.
53710
+ */
53711
+ presence: _enum([
53712
+ "present",
53713
+ "absent",
53714
+ "unknown"
53715
+ ]).optional(),
53716
+ /**
53647
53717
  * Whether this device participates in dispatch. AUTO default (spec C2):
53648
53718
  * accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
53649
53719
  * entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
@@ -53869,7 +53939,13 @@ method(object({
53869
53939
  }), object({ success: literal(true) }), {
53870
53940
  kind: "mutation",
53871
53941
  auth: "admin"
53872
- }), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({ agentNodeId: string() }), object({
53942
+ }), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({
53943
+ agentNodeId: string(),
53944
+ deviceKey: string()
53945
+ }), object({ success: literal(true) }), {
53946
+ kind: "mutation",
53947
+ auth: "admin"
53948
+ }), method(object({ agentNodeId: string() }), object({
53873
53949
  success: literal(true),
53874
53950
  /** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
53875
53951
  effectiveModelId: string().nullable(),
@@ -58622,17 +58698,69 @@ var connectivityCapability = {
58622
58698
  volatileStateFields: ["lastChangedAt"]
58623
58699
  };
58624
58700
  /**
58625
- * Generic device-consumables capability — surfaces a device's
58626
- * maintenance items (vacuum filters/brushes, replaceable cartridges,
58627
- * descaling cycles, …) with their remaining life and an optional
58628
- * "Replaced" reset action. Device-agnostic: any provider that knows its
58629
- * device tracks consumables can register it; the cap declares no
58630
- * vocabulary of its own — the provider names each item verbatim.
58701
+ * Generic device-consumables capability — the ONE place a device reports what
58702
+ * it uses up or fills: wear parts (vacuum filters/brushes, cartridges,
58703
+ * descaling cycles), supplies it draws from (a vacuum's clean-water tank and
58704
+ * detergent, a dishwasher's salt and rinse aid) and waste it collects (a dirty
58705
+ * water tank, a dust bin). Each item carries its remaining life or fill and an
58706
+ * optional "Replaced" reset action. Device-agnostic: any provider that knows
58707
+ * its device tracks consumables registers it; the provider names each item
58708
+ * verbatim and says which `kind` it is.
58709
+ *
58710
+ * The admin UI renders it as ONE collapsible section directly under the
58711
+ * device page's hero card (`placement: 'hero'`), for every device bound to
58712
+ * this cap — never drawn by a device type's hero card itself (D915).
58631
58713
  *
58632
58714
  * Like `childLayout`, the cap is INERT until a provider sets items: no
58633
58715
  * provider populates it by guessing (no HA inference). The UI renders a
58634
58716
  * "No consumables reported" placeholder when `items` is empty.
58635
58717
  */
58718
+ /**
58719
+ * What an item IS, which decides which direction is bad:
58720
+ * - `wear` — a part that wears out (a brush, a filter); low life is bad.
58721
+ * - `supply` — something the device draws from (clean water, detergent,
58722
+ * salt, rinse aid); low or empty is bad.
58723
+ * - `waste` — something the device fills (dirty water, a dust bin); full is
58724
+ * bad.
58725
+ * Absent = `wear`.
58726
+ */
58727
+ var ConsumableKindSchema = _enum([
58728
+ "wear",
58729
+ "supply",
58730
+ "waste"
58731
+ ]);
58732
+ /**
58733
+ * What an item LOOKS like, which decides how a client draws it — independent
58734
+ * of `kind`, which decides which direction is bad:
58735
+ * - `part` — a part that wears (a brush, a filter, a mop pad): a wear bar,
58736
+ * remaining time and a reset.
58737
+ * - `tank` — a container of liquid (clean water, dirty water): a fill gauge.
58738
+ * - `product` — something bought and refilled (detergent, salt, rinse aid):
58739
+ * a stepped level and "refill".
58740
+ * - `bin` — a container that collects waste (a dust bin): a fill gauge
58741
+ * that warns when full.
58742
+ * Absent = derived from the kind ({@link consumableFormOf}).
58743
+ */
58744
+ var ConsumableFormSchema = _enum([
58745
+ "part",
58746
+ "tank",
58747
+ "product",
58748
+ "bin"
58749
+ ]);
58750
+ /** The provider's own discrete verdict on an item. */
58751
+ var ConsumableStatusSchema = _enum([
58752
+ "ok",
58753
+ "low",
58754
+ "empty",
58755
+ "full",
58756
+ "replace"
58757
+ ]);
58758
+ _enum([
58759
+ "ok",
58760
+ "low",
58761
+ "empty",
58762
+ "full"
58763
+ ]);
58636
58764
  /** Units a remaining-life counter is reported in. Closed: the panel renders
58637
58765
  * each. */
58638
58766
  var ConsumableRemainingUnitSchema = _enum([
@@ -58647,18 +58775,23 @@ var ConsumableRemainingSchema = object({
58647
58775
  unit: ConsumableRemainingUnitSchema
58648
58776
  });
58649
58777
  /** A single consumable item. Either a continuous `level` (remaining
58650
- * life %) or a discrete `status` may be known — both may be null when a
58651
- * provider only knows the item exists. `level` and `status` are not
58652
- * mutually exclusive; a provider may report both. */
58778
+ * life %, or fill % for a `supply` / `waste` item) or a discrete `status`
58779
+ * may be known — both may be null when a provider only knows the item
58780
+ * exists. `level` and `status` are not mutually exclusive; a provider may
58781
+ * report both. */
58653
58782
  var ConsumableItemSchema = object({
58654
58783
  /** Stable id, e.g. 'main-brush'. */
58655
58784
  key: string().min(1),
58656
58785
  /** Display name. */
58657
58786
  label: string().min(1),
58658
- /** Remaining life % when known (0..100). */
58787
+ /** Remaining life % (`wear`) or fill % (`supply`, `waste`) when known (0..100). */
58659
58788
  level: number().min(0).max(100).nullable(),
58660
- /** Discrete state when known (binary mode). */
58661
- status: _enum(["ok", "replace"]).nullable(),
58789
+ /** The provider's discrete verdict when known (binary mode). */
58790
+ status: ConsumableStatusSchema.nullable(),
58791
+ /** What the item is — decides whether low or full is bad. Absent = `wear`. */
58792
+ kind: ConsumableKindSchema.optional(),
58793
+ /** How the item is drawn (part, tank, product, bin). Absent = derived from `kind`. */
58794
+ form: ConsumableFormSchema.optional(),
58662
58795
  /** Ms epoch of the last replace, when known. */
58663
58796
  lastResetAt: number().nullable(),
58664
58797
  /** Whether `reset()` is meaningful for this item. */
@@ -58681,7 +58814,7 @@ var consumablesCapability = {
58681
58814
  kind: "widget",
58682
58815
  widgetId: "host/consumables-panel",
58683
58816
  tab: "consumables",
58684
- topTab: true,
58817
+ placement: "hero",
58685
58818
  label: "Consumables",
58686
58819
  order: 5
58687
58820
  } },
@@ -58742,9 +58875,37 @@ reset: method(object({
58742
58875
  */
58743
58876
  durability: "restored",
58744
58877
  /**
58745
- * History (D850): none — `items` is an array keyed by runtime ids; a history path never enters it.
58878
+ * History (D850, D917): one series per (item field, item `key`) — the item key
58879
+ * is the series scope, the item `label` names it. A vacuum tank's fill, a
58880
+ * brush's remaining life and a dishwasher's salt are each recorded the moment
58881
+ * their provider reports them; an item that appears later gets its series.
58746
58882
  */
58747
- history: "none",
58883
+ history: {
58884
+ fields: {},
58885
+ items: {
58886
+ path: "items",
58887
+ key: "key",
58888
+ label: "label",
58889
+ fields: {
58890
+ level: {
58891
+ kind: "gauge",
58892
+ unit: "%",
58893
+ deadband: 2,
58894
+ displayName: "Level"
58895
+ },
58896
+ status: {
58897
+ kind: "enum",
58898
+ displayName: "Status"
58899
+ },
58900
+ "remaining.value": {
58901
+ kind: "gauge",
58902
+ unitFrom: "remaining.unit",
58903
+ deadband: 1,
58904
+ displayName: "Remaining"
58905
+ }
58906
+ }
58907
+ }
58908
+ },
58748
58909
  /** Clocks, not content: a re-read that changed no item costs no commit. */
58749
58910
  volatileStateFields: ["lastChangedAt", "lastFetchedAt"]
58750
58911
  };
@@ -59181,8 +59342,9 @@ onStatusChanged: { data: object({
59181
59342
  volatileStateFields: ["lastChangedAt"]
59182
59343
  };
59183
59344
  /**
59184
- * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
59185
- * consumable levels (salt, rinse aid) and common program options.
59345
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates and
59346
+ * common program options. Salt and rinse aid are NOT here: they are items of
59347
+ * the device's `consumables` cap, like every other device's (D915).
59186
59348
  *
59187
59349
  * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
59188
59350
  * by any integration that exposes the same program / option surface.
@@ -59230,11 +59392,6 @@ var DishwasherAvailabilitySchema = _enum([
59230
59392
  "offline",
59231
59393
  "description-missing"
59232
59394
  ]);
59233
- var DishwasherConsumableLevelSchema = _enum([
59234
- "ok",
59235
- "low",
59236
- "empty"
59237
- ]);
59238
59395
  var DishwasherStatusSchema = object({
59239
59396
  availability: DishwasherAvailabilitySchema,
59240
59397
  /** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
@@ -59267,8 +59424,6 @@ var DishwasherStatusSchema = object({
59267
59424
  powerOn: boolean().nullable(),
59268
59425
  /** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
59269
59426
  powerState: string().nullable(),
59270
- saltLevel: DishwasherConsumableLevelSchema.nullable(),
59271
- rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
59272
59427
  /**
59273
59428
  * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
59274
59429
  * combined care-and-filter reminder raised); false when every such reminder reads clear; null
@@ -62229,7 +62384,7 @@ var motionTriggerCapability = {
62229
62384
  enabled: boolean()
62230
62385
  }), _void(), {
62231
62386
  kind: "mutation",
62232
- auth: "admin"
62387
+ auth: "protected"
62233
62388
  }) },
62234
62389
  events: { onMotionTriggerChanged: { data: object({
62235
62390
  deviceId: number(),
@@ -62959,6 +63114,13 @@ var TopologyNodeSchema = object({
62959
63114
  cpuModel: string().nullable(),
62960
63115
  cpuCores: number(),
62961
63116
  memoryMB: number(),
63117
+ /**
63118
+ * The inference RUNTIMES installed on the node (`pythonRuntimes`: onnx,
63119
+ * openvino, edgetpu …) — not its devices. An installed runtime says nothing
63120
+ * about whether its hardware is there (a Coral delegate stays installed
63121
+ * after the stick leaves, D919); the live device set is
63122
+ * `pipelineOrchestrator.getNodeInferenceDevices`.
63123
+ */
62962
63124
  engines: array(string()).readonly(),
62963
63125
  isHub: boolean(),
62964
63126
  isOnline: boolean(),
@@ -64110,7 +64272,28 @@ var ResolvedInferenceConfigSchema = object({
64110
64272
  format: ModelFormatSchema,
64111
64273
  reason: string()
64112
64274
  });
64113
- method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema), method(object({ requirements: array(ModelRequirementSchema).readonly() }), ResolvedInferenceConfigSchema), method(object({ prefer: HwAccelBackendInputSchema }), HwAccelResolutionSchema);
64275
+ /**
64276
+ * The answer of an accelerator rescan (D919): the node's device list after
64277
+ * the re-probe, what changed, and the evidence that decided the Coral answer
64278
+ * (`usbBus` — could the USB bus be read at all; `decidedBy` — USB ids, the PCI
64279
+ * bus, the installed-delegate fallback, or nothing).
64280
+ */
64281
+ var AcceleratorRescanSchema = object({
64282
+ devices: array(InferenceDeviceDescriptorSchema).readonly(),
64283
+ appeared: array(string()).readonly(),
64284
+ disappeared: array(string()).readonly(),
64285
+ usbBus: _enum(["observed", "unobservable"]),
64286
+ decidedBy: _enum([
64287
+ "usb-ids",
64288
+ "pci",
64289
+ "delegate-fallback",
64290
+ "none"
64291
+ ])
64292
+ });
64293
+ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema), method(object({ requirements: array(ModelRequirementSchema).readonly() }), ResolvedInferenceConfigSchema), method(object({ prefer: HwAccelBackendInputSchema }), HwAccelResolutionSchema), method(_void(), AcceleratorRescanSchema, {
64294
+ kind: "mutation",
64295
+ auth: "admin"
64296
+ });
64114
64297
  /**
64115
64298
  * Multi-metric electrical meter. One slice can carry any combination
64116
64299
  * of instantaneous power (W), cumulative energy (kWh), voltage (V),
@@ -68253,60 +68436,17 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
68253
68436
  auth: "admin",
68254
68437
  access: "delete"
68255
68438
  });
68256
- /**
68257
- * Robot-vacuum cap. Models HA `vacuum.*` entities — anything with a
68258
- * cleaning lifecycle plus a return-to-base / locate surface and an
68259
- * optional fan-speed selector.
68260
- *
68261
- * State follows HA's canonical vacuum lifecycle: `idle` / `cleaning` /
68262
- * `paused` / `returning` / `docked` / `error`. `batteryLevel`
68263
- * (0..100) is nullable — some vacuums don't report a battery
68264
- * percentage. `fanSpeed` is the current speed token (provider-verbatim,
68265
- * e.g. `'standard'` / `'turbo'`) and `availableFanSpeeds` lists the
68266
- * tokens the hardware accepts so the UI renders only supported choices.
68267
- *
68268
- * The `setFanSpeed` method takes the bare `speed` token — the provider
68269
- * validates it against the vacuum's own list. `locate` triggers the
68270
- * find-me chirp; `returnToBase` sends it home.
68271
- *
68272
- * Consumable / waste tanks: `cleanWater` / `dirtyWater` / `detergent` /
68273
- * `dustBin` each carry a nullable `{ level (0..100 %), status ('ok' |
68274
- * 'low' | 'full') }` reading. Native providers (e.g. Dreame, Roborock)
68275
- * SHOULD populate whichever tanks the hardware has — leave a field `null`
68276
- * only when the device has no such tank at all, and use a `TankStatus`
68277
- * with both inner fields `null` when the tank exists but its level is
68278
- * currently unknown. HA `vacuum.*` entities expose no per-tank telemetry,
68279
- * so the HA provider leaves all four `null`.
68280
- */
68281
- var VacuumStateSchema = _enum([
68282
- "idle",
68283
- "cleaning",
68284
- "paused",
68285
- "returning",
68286
- "docked",
68287
- "drying",
68288
- "error"
68289
- ]);
68290
- /**
68291
- * One consumable / waste tank on a robot vacuum (clean-water, dirty-water,
68292
- * detergent or dust-bin). A tank can report a numeric fill `level` (0..100),
68293
- * a discrete `status` (binary-style hardware), or both. Both `null` means the
68294
- * level is currently unknown; the OWNING field being `null` means the
68295
- * hardware has no such tank at all.
68296
- */
68297
- var TankStatusSchema = object({
68298
- /** Numeric fill 0..100 when the hardware reports a percentage; null otherwise. */
68299
- level: number().min(0).max(100).nullable(),
68300
- /** Discrete state when the hardware is binary-mode; null otherwise. */
68301
- status: _enum([
68302
- "ok",
68303
- "low",
68304
- "full"
68305
- ]).nullable()
68306
- });
68307
68439
  var VacuumControlStatusSchema = object({
68308
68440
  /** Lifecycle state of the vacuum. */
68309
- state: VacuumStateSchema,
68441
+ state: _enum([
68442
+ "idle",
68443
+ "cleaning",
68444
+ "paused",
68445
+ "returning",
68446
+ "docked",
68447
+ "drying",
68448
+ "error"
68449
+ ]),
68310
68450
  /** 0..100 battery percentage. Null when the device has no battery
68311
68451
  * reading. */
68312
68452
  batteryLevel: number().min(0).max(100).nullable(),
@@ -68315,14 +68455,6 @@ var VacuumControlStatusSchema = object({
68315
68455
  fanSpeed: string().nullable(),
68316
68456
  /** Speed tokens the hardware accepts — drives the UI selector. */
68317
68457
  availableFanSpeeds: array(string()),
68318
- /** Clean-water (mop) tank. Null when the hardware has no clean-water tank. */
68319
- cleanWater: TankStatusSchema.nullable(),
68320
- /** Dirty-water (recovery) tank. Null when the hardware has no dirty-water tank. */
68321
- dirtyWater: TankStatusSchema.nullable(),
68322
- /** Detergent tank. Null when the hardware has no detergent tank. */
68323
- detergent: TankStatusSchema.nullable(),
68324
- /** Dust bin. Null when the hardware has no dust bin. */
68325
- dustBin: TankStatusSchema.nullable(),
68326
68458
  /** 0..100 cleaning-completion percentage of the current task, or null. */
68327
68459
  progressPercent: number().min(0).max(100).nullable(),
68328
68460
  /** Current error code (0 / null = no error). */
@@ -68384,35 +68516,14 @@ var vacuumControlCapability = {
68384
68516
  */
68385
68517
  durability: "session",
68386
68518
  /**
68387
- * History (D850): recorded series. Tank levels are fixed-object paths (`cleanWater.level`, ...).
68519
+ * History (D850): recorded series. The tanks moved to `consumables` (D915), whose
68520
+ * items are keyed by runtime ids and record no history.
68388
68521
  */
68389
- history: { fields: {
68390
- batteryLevel: {
68391
- kind: "gauge",
68392
- unit: "%",
68393
- deadband: 2
68394
- },
68395
- "cleanWater.level": {
68396
- kind: "gauge",
68397
- unit: "%",
68398
- deadband: 2
68399
- },
68400
- "dirtyWater.level": {
68401
- kind: "gauge",
68402
- unit: "%",
68403
- deadband: 2
68404
- },
68405
- "detergent.level": {
68406
- kind: "gauge",
68407
- unit: "%",
68408
- deadband: 2
68409
- },
68410
- "dustBin.level": {
68411
- kind: "gauge",
68412
- unit: "%",
68413
- deadband: 2
68414
- }
68415
- } }
68522
+ history: { fields: { batteryLevel: {
68523
+ kind: "gauge",
68524
+ unit: "%",
68525
+ deadband: 2
68526
+ } } }
68416
68527
  };
68417
68528
  var ValveStatusSchema = object({
68418
68529
  /** Lifecycle state of the valve. */
@@ -72376,6 +72487,12 @@ Object.freeze({
72376
72487
  addonId: null,
72377
72488
  access: "create"
72378
72489
  },
72490
+ "deviceHistory.deleteOrphanSeries": {
72491
+ capName: "device-history",
72492
+ capScope: "system",
72493
+ addonId: null,
72494
+ access: "delete"
72495
+ },
72379
72496
  "deviceHistory.getDeviceEnabled": {
72380
72497
  capName: "device-history",
72381
72498
  capScope: "system",
@@ -72394,6 +72511,12 @@ Object.freeze({
72394
72511
  addonId: null,
72395
72512
  access: "view"
72396
72513
  },
72514
+ "deviceHistory.listOrphanSeries": {
72515
+ capName: "device-history",
72516
+ capScope: "system",
72517
+ addonId: null,
72518
+ access: "view"
72519
+ },
72397
72520
  "deviceHistory.listSeries": {
72398
72521
  capName: "device-history",
72399
72522
  capScope: "system",
@@ -76018,6 +76141,12 @@ Object.freeze({
76018
76141
  addonId: null,
76019
76142
  access: "delete"
76020
76143
  },
76144
+ "pipelineOrchestrator.forgetInferenceDevice": {
76145
+ capName: "pipeline-orchestrator",
76146
+ capScope: "system",
76147
+ addonId: null,
76148
+ access: "delete"
76149
+ },
76021
76150
  "pipelineOrchestrator.getAgentLoad": {
76022
76151
  capName: "pipeline-orchestrator",
76023
76152
  capScope: "system",
@@ -76594,6 +76723,12 @@ Object.freeze({
76594
76723
  addonId: null,
76595
76724
  access: "view"
76596
76725
  },
76726
+ "platformProbe.rescanAccelerators": {
76727
+ capName: "platform-probe",
76728
+ capScope: "system",
76729
+ addonId: null,
76730
+ access: "create"
76731
+ },
76597
76732
  "platformProbe.resolveHwAccel": {
76598
76733
  capName: "platform-probe",
76599
76734
  capScope: "system",
@@ -84126,17 +84261,18 @@ var NC_TEMPLATE_VARS = [
84126
84261
  {
84127
84262
  name: "item",
84128
84263
  label: "Consumable",
84264
+ description: "The device's own name for the item: a filter, a brush, the salt, a tank.",
84129
84265
  example: "Filtro",
84130
84266
  group: "system",
84131
84267
  families: ["rule"],
84132
84268
  fields: [...RULE_TEXT],
84133
84269
  kinds: ["system"],
84134
- systemEventKinds: [...CONSUMABLE]
84270
+ systemEventKinds: [...CONSUMABLE, ...TANK]
84135
84271
  },
84136
84272
  {
84137
84273
  name: "tank",
84138
84274
  label: "Tank",
84139
- description: "Which tank: clean water, dirty water, detergent or dust bin.",
84275
+ description: "Which tank, as a stable token: cleanWater, dirtyWater, detergent, dustBin, or the device key of any other supply (salt, rinse aid).",
84140
84276
  example: "clean water",
84141
84277
  group: "system",
84142
84278
  families: ["rule"],