@camstack/types 1.2.380 → 1.2.382

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 (51) hide show
  1. package/dist/addon.d.ts +2 -0
  2. package/dist/addon.js +88 -2
  3. package/dist/addon.mjs +79 -3
  4. package/dist/capabilities/alerts.cap.d.ts +25 -0
  5. package/dist/capabilities/battery.cap.d.ts +1 -1
  6. package/dist/capabilities/caller-stamp.d.ts +4 -3
  7. package/dist/capabilities/dishwasher.cap.d.ts +178 -0
  8. package/dist/capabilities/heating-valve.cap.d.ts +39 -0
  9. package/dist/capabilities/index.d.ts +5 -1
  10. package/dist/capabilities/storage-admin.cap.d.ts +22 -0
  11. package/dist/client.js +71 -32
  12. package/dist/client.mjs +71 -32
  13. package/dist/{composition-DOwQB_Ua.mjs → composition-CB6PMT9p.mjs} +1 -1
  14. package/dist/{composition-CUAOHZ38.js → composition-eoYYVfOp.js} +1 -1
  15. package/dist/device/base-device-provider.d.ts +4 -2
  16. package/dist/device/device-context.d.ts +2 -0
  17. package/dist/device/device-control-resolution.d.ts +1 -1
  18. package/dist/device/device-type.d.ts +5 -1
  19. package/dist/{err-msg--2RrYiLO.mjs → err-msg-BXKzRBwg.mjs} +4 -0
  20. package/dist/{err-msg-Bb-s4Xuj.js → err-msg-BhVbr0NX.js} +4 -0
  21. package/dist/ffmpeg/fmp4-fragment-child.d.ts +2 -2
  22. package/dist/ffmpeg/process.d.ts +21 -0
  23. package/dist/generated/addon-api.d.ts +329 -230
  24. package/dist/generated/addon-cap-facts.d.ts +1 -1
  25. package/dist/generated/cap-status-types.d.ts +5 -1
  26. package/dist/generated/capability-router-map.d.ts +8 -2
  27. package/dist/generated/device-local-state.d.ts +6 -0
  28. package/dist/generated/device-proxy.d.ts +6 -0
  29. package/dist/generated/device-scoped-caps.d.ts +1 -1
  30. package/dist/generated/history-catalog.d.ts +1 -1
  31. package/dist/generated/method-access-map.d.ts +1 -1
  32. package/dist/generated/method-device-selectors.d.ts +1 -1
  33. package/dist/generated/runtime-state-durability.d.ts +1 -1
  34. package/dist/helpers/addon-slice-handle.d.ts +4 -0
  35. package/dist/helpers/trpc-leaf.d.ts +17 -0
  36. package/dist/index.d.ts +3 -2
  37. package/dist/index.js +431 -68
  38. package/dist/index.mjs +413 -67
  39. package/dist/interfaces/addon-peer-bytes.d.ts +19 -2
  40. package/dist/interfaces/config-ui-secrets.d.ts +2 -0
  41. package/dist/interfaces/config-ui.d.ts +14 -0
  42. package/dist/node.d.ts +2 -2
  43. package/dist/node.js +6 -2
  44. package/dist/node.mjs +6 -3
  45. package/dist/records/in-memory-records.d.ts +21 -0
  46. package/dist/records/index.d.ts +3 -0
  47. package/dist/records/settings-array-adopts-from.d.ts +12 -0
  48. package/dist/records/settings-brokers-adopts-from.d.ts +10 -0
  49. package/dist/{sleep-CIGOw58l.js → sleep--L6qY125.js} +572 -47
  50. package/dist/{sleep-WsrozGDL.mjs → sleep-BOjuyoPC.mjs} +489 -48
  51. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sleep = require("./sleep-CIGOw58l.js");
2
+ const require_sleep = require("./sleep--L6qY125.js");
3
3
  const require_event_category = require("./event-category-Hoe-mqbd.js");
4
- const require_composition = require("./composition-CUAOHZ38.js");
4
+ const require_composition = require("./composition-eoYYVfOp.js");
5
5
  const require_node_color = require("./node-color.js");
6
- const require_err_msg = require("./err-msg-Bb-s4Xuj.js");
6
+ const require_err_msg = require("./err-msg-BhVbr0NX.js");
7
7
  const require_enums = require("./enums.js");
8
8
  let zod = require("zod");
9
9
  //#region src/media/media-owner-key.ts
@@ -8280,8 +8280,13 @@ var AlertSeveritySchema = zod.z.enum([
8280
8280
  "info",
8281
8281
  "success",
8282
8282
  "warning",
8283
- "error"
8283
+ "error",
8284
+ "critical"
8284
8285
  ]);
8286
+ var AlertActionSchema = zod.z.object({
8287
+ label: zod.z.string(),
8288
+ href: zod.z.string().optional()
8289
+ });
8285
8290
  var AlertStatusSchema = zod.z.enum([
8286
8291
  "active",
8287
8292
  "in-progress",
@@ -8299,6 +8304,7 @@ var AlertSchema = zod.z.object({
8299
8304
  severity: AlertSeveritySchema,
8300
8305
  title: zod.z.string(),
8301
8306
  message: zod.z.string(),
8307
+ action: AlertActionSchema.optional(),
8302
8308
  status: AlertStatusSchema,
8303
8309
  progress: zod.z.number().optional(),
8304
8310
  read: zod.z.boolean(),
@@ -13949,30 +13955,6 @@ id: zod.z.union([zod.z.string(), zod.z.number()]) }), {
13949
13955
  }
13950
13956
  };
13951
13957
  //#endregion
13952
- //#region src/capabilities/caller-stamp.ts
13953
- /**
13954
- * Every cap whose provider reads a `callerAddonId` in its input (the keychain's
13955
- * owner check, device-history's `not-owner`, records' owner).
13956
- *
13957
- * The stamp is set ONLY by the transport (`stampCallerAddonId`, or stated by a
13958
- * hub in-process caller). The generated HTTP/tRPC mount parses input with
13959
- * `.loose()`, so without this a session could add the key itself and act as
13960
- * another addon. The mount strips it for these caps.
13961
- */
13962
- var CALLER_STAMPED_CAPABILITIES = [
13963
- "keychain",
13964
- "device-history",
13965
- "records",
13966
- "integrations",
13967
- "device-manager"
13968
- ];
13969
- /** A copy of `input` without the caller stamp. Anything that is not a plain object passes through. */
13970
- function withoutCallerStamp(input) {
13971
- if (input === null || typeof input !== "object" || Array.isArray(input)) return input;
13972
- if (!Object.prototype.hasOwnProperty.call(input, "callerAddonId")) return input;
13973
- return Object.fromEntries(Object.entries(input).filter(([key]) => key !== "callerAddonId"));
13974
- }
13975
- //#endregion
13976
13958
  //#region src/capabilities/records.cap.ts
13977
13959
  /**
13978
13960
  * records - an addon's own facts and documents (D881): ledgers, audit rows,
@@ -14360,13 +14342,31 @@ var storageAdminCapability = {
14360
14342
  adoptRecords: require_sleep.method(zod.z.object({
14361
14343
  owner: zod.z.string().min(1),
14362
14344
  kind: require_sleep.RecordKindNameSchema,
14363
- records: zod.z.array(RecordInputSchema).min(1).max(require_sleep.RECORD_BATCH_MAX),
14345
+ records: zod.z.array(RecordInputSchema).max(require_sleep.RECORD_BATCH_MAX),
14364
14346
  /** The LAST batch: the copy is complete, the boot guard stops asking. */
14365
14347
  complete: zod.z.boolean().optional()
14366
- }), zod.z.object({ adopted: zod.z.number().int() }), {
14348
+ }).refine((input) => input.records.length > 0 || input.complete === true, { message: "records must be non-empty unless complete is true" }), zod.z.object({ adopted: zod.z.number().int() }), {
14367
14349
  kind: "mutation",
14368
14350
  auth: "admin"
14369
- })
14351
+ }),
14352
+ /**
14353
+ * Read rows from a legacy KV table by physical name, without a running
14354
+ * `declareCollection`. Used by `records-adopt.ts` when the owner already
14355
+ * moved to records and the collection door refuses the name.
14356
+ */
14357
+ readLegacyCollection: require_sleep.method(zod.z.object({
14358
+ collection: zod.z.string().min(1),
14359
+ cursor: zod.z.string().optional(),
14360
+ limit: zod.z.number().int().min(1).max(1e3).optional()
14361
+ }), zod.z.object({
14362
+ rows: zod.z.array(zod.z.object({
14363
+ id: zod.z.string(),
14364
+ data: zod.z.record(zod.z.string(), zod.z.unknown())
14365
+ })),
14366
+ nextCursor: zod.z.string().nullable()
14367
+ }), { auth: "admin" }),
14368
+ /** True when a declared kind lists `collection` as `adoptsFrom` and adoption finished. */
14369
+ isAdoptedLegacyTable: require_sleep.method(zod.z.object({ collection: zod.z.string().min(1) }), zod.z.object({ adopted: zod.z.boolean() }), { auth: "admin" })
14370
14370
  }
14371
14371
  };
14372
14372
  //#endregion
@@ -59458,7 +59458,8 @@ var batteryCapability = {
59458
59458
  require_err_msg.DeviceType.Button,
59459
59459
  require_err_msg.DeviceType.Switch,
59460
59460
  require_err_msg.DeviceType.PetFeeder,
59461
- require_err_msg.DeviceType.Container
59461
+ require_err_msg.DeviceType.Container,
59462
+ require_err_msg.DeviceType.Thermostat
59462
59463
  ],
59463
59464
  methods: {
59464
59465
  /**
@@ -61207,6 +61208,127 @@ onStatusChanged: { data: zod.z.object({
61207
61208
  volatileStateFields: ["lastChangedAt"]
61208
61209
  };
61209
61210
  //#endregion
61211
+ //#region src/capabilities/dishwasher.cap.ts
61212
+ /**
61213
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
61214
+ * consumable levels (salt, rinse aid) and common program options.
61215
+ *
61216
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
61217
+ * by any integration that exposes the same program / option surface.
61218
+ *
61219
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
61220
+ * provider refreshes the slice on an interval and eagerly after commands.
61221
+ */
61222
+ var DishwasherStateSchema = zod.z.enum([
61223
+ "idle",
61224
+ "running",
61225
+ "paused",
61226
+ "finished",
61227
+ "error",
61228
+ "unavailable"
61229
+ ]);
61230
+ var DishwasherConsumableLevelSchema = zod.z.enum([
61231
+ "ok",
61232
+ "low",
61233
+ "empty"
61234
+ ]);
61235
+ var DishwasherStatusSchema = zod.z.object({
61236
+ state: DishwasherStateSchema,
61237
+ /** Active program id/name, or null when none selected / unknown. */
61238
+ program: zod.z.string().nullable(),
61239
+ /** Program tokens the hardware accepts — drives the UI selector. */
61240
+ availablePrograms: zod.z.array(zod.z.string()),
61241
+ /** Minutes remaining on the active cycle, or null when not running. */
61242
+ remainingMinutes: zod.z.number().int().nonnegative().nullable(),
61243
+ /** Cycle completion 0..100, or null when not applicable. */
61244
+ progressPercent: zod.z.number().min(0).max(100).nullable(),
61245
+ /** True when the door is reported open. */
61246
+ doorOpen: zod.z.boolean(),
61247
+ /** True when remote start is allowed (door closed, power on, etc.). */
61248
+ remoteStartAllowed: zod.z.boolean(),
61249
+ /** Main power / switched-on state. */
61250
+ powerOn: zod.z.boolean(),
61251
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
61252
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
61253
+ halfLoad: zod.z.boolean(),
61254
+ hygienePlus: zod.z.boolean(),
61255
+ errorCode: zod.z.number().nullable(),
61256
+ errorLabel: zod.z.string().nullable(),
61257
+ lastFetchedAt: zod.z.number()
61258
+ });
61259
+ var dishwasherCapability = {
61260
+ name: "dishwasher",
61261
+ scope: "device",
61262
+ deviceNative: true,
61263
+ mode: "singleton",
61264
+ deviceTypes: [require_err_msg.DeviceType.Dishwasher],
61265
+ methods: {
61266
+ start: require_sleep.method(zod.z.object({ deviceId: zod.z.number().int().nonnegative() }), zod.z.void(), {
61267
+ kind: "mutation",
61268
+ auth: "protected"
61269
+ }),
61270
+ pause: require_sleep.method(zod.z.object({ deviceId: zod.z.number().int().nonnegative() }), zod.z.void(), {
61271
+ kind: "mutation",
61272
+ auth: "protected"
61273
+ }),
61274
+ stop: require_sleep.method(zod.z.object({ deviceId: zod.z.number().int().nonnegative() }), zod.z.void(), {
61275
+ kind: "mutation",
61276
+ auth: "protected"
61277
+ }),
61278
+ setProgram: require_sleep.method(zod.z.object({
61279
+ deviceId: zod.z.number().int().nonnegative(),
61280
+ program: zod.z.string().min(1)
61281
+ }), zod.z.void(), {
61282
+ kind: "mutation",
61283
+ auth: "protected"
61284
+ }),
61285
+ setPower: require_sleep.method(zod.z.object({
61286
+ deviceId: zod.z.number().int().nonnegative(),
61287
+ on: zod.z.boolean()
61288
+ }), zod.z.void(), {
61289
+ kind: "mutation",
61290
+ auth: "protected"
61291
+ }),
61292
+ setHalfLoad: require_sleep.method(zod.z.object({
61293
+ deviceId: zod.z.number().int().nonnegative(),
61294
+ on: zod.z.boolean()
61295
+ }), zod.z.void(), {
61296
+ kind: "mutation",
61297
+ auth: "protected"
61298
+ }),
61299
+ setHygienePlus: require_sleep.method(zod.z.object({
61300
+ deviceId: zod.z.number().int().nonnegative(),
61301
+ on: zod.z.boolean()
61302
+ }), zod.z.void(), {
61303
+ kind: "mutation",
61304
+ auth: "protected"
61305
+ }),
61306
+ setOption: require_sleep.method(zod.z.object({
61307
+ deviceId: zod.z.number().int().nonnegative(),
61308
+ key: zod.z.string().min(1),
61309
+ value: zod.z.union([
61310
+ zod.z.boolean(),
61311
+ zod.z.string(),
61312
+ zod.z.number()
61313
+ ])
61314
+ }), zod.z.void(), {
61315
+ kind: "mutation",
61316
+ auth: "protected"
61317
+ })
61318
+ },
61319
+ status: {
61320
+ schema: DishwasherStatusSchema,
61321
+ kind: "poll"
61322
+ },
61323
+ runtimeState: DishwasherStatusSchema,
61324
+ durability: "session",
61325
+ history: { fields: { progressPercent: {
61326
+ kind: "gauge",
61327
+ unit: "%",
61328
+ deadband: 2
61329
+ } } }
61330
+ };
61331
+ //#endregion
61210
61332
  //#region src/capabilities/doorbell.cap.ts
61211
61333
  var DoorbellStatusSchema = zod.z.object({
61212
61334
  /** Ms epoch of the last press. null = never observed since this provider started. */
@@ -62064,6 +62186,34 @@ var gasCapability = {
62064
62186
  volatileStateFields: ["lastChangedAt"]
62065
62187
  };
62066
62188
  //#endregion
62189
+ //#region src/capabilities/heating-valve.cap.ts
62190
+ var HeatingValveStatusSchema = zod.z.object({
62191
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
62192
+ position: zod.z.number().min(0).max(100).nullable(),
62193
+ /** Ms epoch when the slice was last updated (push or poll). */
62194
+ lastFetchedAt: zod.z.number()
62195
+ });
62196
+ var heatingValveCapability = {
62197
+ name: "heating-valve",
62198
+ scope: "device",
62199
+ deviceNative: true,
62200
+ mode: "singleton",
62201
+ deviceTypes: [require_err_msg.DeviceType.Thermostat],
62202
+ methods: {},
62203
+ status: {
62204
+ schema: HeatingValveStatusSchema,
62205
+ kind: "push"
62206
+ },
62207
+ runtimeState: HeatingValveStatusSchema,
62208
+ durability: "session",
62209
+ history: { fields: { position: {
62210
+ kind: "gauge",
62211
+ unit: "%",
62212
+ deadband: 1
62213
+ } } },
62214
+ volatileStateFields: ["lastFetchedAt"]
62215
+ };
62216
+ //#endregion
62067
62217
  //#region src/capabilities/humidifier.cap.ts
62068
62218
  /**
62069
62219
  * Humidifier / dehumidifier cap. Models HA `humidifier.*` entities —
@@ -75136,6 +75286,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
75136
75286
  dayNight: dayNightCapability,
75137
75287
  deviceDiscovery: deviceDiscoveryCapability,
75138
75288
  deviceStatus: deviceStatusCapability,
75289
+ dishwasher: dishwasherCapability,
75139
75290
  doorbell: doorbellCapability,
75140
75291
  enumSensor: enumSensorCapability,
75141
75292
  eventEmitter: eventEmitterCapability,
@@ -75143,6 +75294,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
75143
75294
  featureProbe: featureProbeCapability,
75144
75295
  flood: floodCapability,
75145
75296
  gas: gasCapability,
75297
+ heatingValve: heatingValveCapability,
75146
75298
  humidifier: humidifierCapability,
75147
75299
  humiditySensor: humiditySensorCapability,
75148
75300
  image: imageCapability,
@@ -75230,13 +75382,14 @@ var BaseDevice = class {
75230
75382
  get state() {
75231
75383
  if (!this._stateProxyCache) {
75232
75384
  const cache = {};
75233
- const handler = { get: (_target, key) => {
75385
+ const handler = { get: (target, key) => {
75234
75386
  const k = key;
75235
- if (k in cache) return cache[k];
75387
+ const existing = Reflect.get(target, k);
75388
+ if (existing !== void 0) return existing;
75236
75389
  const cap = DEVICE_LOCAL_STATE_CAPS[k];
75237
75390
  if (!cap) return void 0;
75238
75391
  const proxy = this.sliceProxy(cap);
75239
- cache[k] = proxy;
75392
+ Reflect.set(target, k, proxy);
75240
75393
  return proxy;
75241
75394
  } };
75242
75395
  this._stateProxyCache = new Proxy(cache, handler);
@@ -75435,7 +75588,7 @@ var BaseDevice = class {
75435
75588
  async updateSourceInfo(patch) {
75436
75589
  const next = mergeSourceInfo(this.sourceInfo, patch);
75437
75590
  this._sourceInfoCache = Object.freeze({ ...next });
75438
- const action = this.ctx.api?.deviceManager?.setMetadata;
75591
+ const action = this.ctx.api.deviceManager?.setMetadata;
75439
75592
  if (action) try {
75440
75593
  await action.mutate({
75441
75594
  deviceId: this.id,
@@ -75470,7 +75623,7 @@ var BaseDevice = class {
75470
75623
  * device boot on a meta refresh.
75471
75624
  */
75472
75625
  async refreshFeatures() {
75473
- const action = this.ctx.api?.deviceManager?.registerDevice;
75626
+ const action = this.ctx.api.deviceManager?.registerDevice;
75474
75627
  if (!action) return;
75475
75628
  try {
75476
75629
  await action.mutate({
@@ -75876,6 +76029,12 @@ var BaseDeviceProvider = class extends require_sleep.BaseAddon {
75876
76029
  provider: this
75877
76030
  }];
75878
76031
  }
76032
+ /** Flatten `super.onInitialize()` whether it returned an array or an envelope. */
76033
+ providerRegistrationsFromSuper(result) {
76034
+ if (Array.isArray(result)) return result;
76035
+ if (result !== void 0 && result.providers !== void 0) return [...result.providers];
76036
+ return [];
76037
+ }
75879
76038
  async onShutdown() {
75880
76039
  this._restoreShuttingDown = true;
75881
76040
  this.cancelRestoreRetries();
@@ -77035,6 +77194,12 @@ async function exposeBlockDevices(ctx, input) {
77035
77194
  }
77036
77195
  }
77037
77196
  //#endregion
77197
+ //#region src/device/device-context.ts
77198
+ /** Map entry helper — concrete camera/hub classes widen to `DeviceConstructor<IDevice>`. */
77199
+ function widenDeviceConstructor(ctor) {
77200
+ return ctor;
77201
+ }
77202
+ //#endregion
77038
77203
  //#region src/device/device-control-resolution.ts
77039
77204
  /**
77040
77205
  * Device-control RESOLUTION LOGIC — the single, presentation-free source of
@@ -77105,7 +77270,8 @@ var DEVICE_TYPE_CONTROL_KIND = {
77105
77270
  [require_err_msg.DeviceType.LawnMower]: "lawn-mower",
77106
77271
  [require_err_msg.DeviceType.Container]: "dummy",
77107
77272
  [require_err_msg.DeviceType.Image]: "image",
77108
- [require_err_msg.DeviceType.PetFeeder]: "pet-feeder"
77273
+ [require_err_msg.DeviceType.PetFeeder]: "pet-feeder",
77274
+ [require_err_msg.DeviceType.Dishwasher]: "dishwasher"
77109
77275
  };
77110
77276
  var DEVICE_TYPE_VALUES = new Set(Object.values(require_err_msg.DeviceType));
77111
77277
  /**
@@ -79631,6 +79797,60 @@ var METHOD_ACCESS_MAP = Object.freeze({
79631
79797
  addonId: null,
79632
79798
  access: "view"
79633
79799
  },
79800
+ "dishwasher.getStatus": {
79801
+ capName: "dishwasher",
79802
+ capScope: "device",
79803
+ addonId: null,
79804
+ access: "view"
79805
+ },
79806
+ "dishwasher.pause": {
79807
+ capName: "dishwasher",
79808
+ capScope: "device",
79809
+ addonId: null,
79810
+ access: "create"
79811
+ },
79812
+ "dishwasher.setHalfLoad": {
79813
+ capName: "dishwasher",
79814
+ capScope: "device",
79815
+ addonId: null,
79816
+ access: "create"
79817
+ },
79818
+ "dishwasher.setHygienePlus": {
79819
+ capName: "dishwasher",
79820
+ capScope: "device",
79821
+ addonId: null,
79822
+ access: "create"
79823
+ },
79824
+ "dishwasher.setOption": {
79825
+ capName: "dishwasher",
79826
+ capScope: "device",
79827
+ addonId: null,
79828
+ access: "create"
79829
+ },
79830
+ "dishwasher.setPower": {
79831
+ capName: "dishwasher",
79832
+ capScope: "device",
79833
+ addonId: null,
79834
+ access: "create"
79835
+ },
79836
+ "dishwasher.setProgram": {
79837
+ capName: "dishwasher",
79838
+ capScope: "device",
79839
+ addonId: null,
79840
+ access: "create"
79841
+ },
79842
+ "dishwasher.start": {
79843
+ capName: "dishwasher",
79844
+ capScope: "device",
79845
+ addonId: null,
79846
+ access: "create"
79847
+ },
79848
+ "dishwasher.stop": {
79849
+ capName: "dishwasher",
79850
+ capScope: "device",
79851
+ addonId: null,
79852
+ access: "create"
79853
+ },
79634
79854
  "doorbell.getStatus": {
79635
79855
  capName: "doorbell",
79636
79856
  capScope: "device",
@@ -79841,6 +80061,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
79841
80061
  addonId: null,
79842
80062
  access: "view"
79843
80063
  },
80064
+ "heatingValve.getStatus": {
80065
+ capName: "heating-valve",
80066
+ capScope: "device",
80067
+ addonId: null,
80068
+ access: "view"
80069
+ },
79844
80070
  "humidifier.getStatus": {
79845
80071
  capName: "humidifier",
79846
80072
  capScope: "device",
@@ -83981,6 +84207,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
83981
84207
  addonId: null,
83982
84208
  access: "delete"
83983
84209
  },
84210
+ "storageAdmin.isAdoptedLegacyTable": {
84211
+ capName: "storage-admin",
84212
+ capScope: "system",
84213
+ addonId: null,
84214
+ access: "view"
84215
+ },
83984
84216
  "storageAdmin.listKinds": {
83985
84217
  capName: "storage-admin",
83986
84218
  capScope: "system",
@@ -83993,6 +84225,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
83993
84225
  addonId: null,
83994
84226
  access: "view"
83995
84227
  },
84228
+ "storageAdmin.readLegacyCollection": {
84229
+ capName: "storage-admin",
84230
+ capScope: "system",
84231
+ addonId: null,
84232
+ access: "view"
84233
+ },
83996
84234
  "storageAdmin.readRecords": {
83997
84235
  capName: "storage-admin",
83998
84236
  capScope: "system",
@@ -85479,6 +85717,7 @@ var KNOWN_CAP_NAMES = [
85479
85717
  "device-removal-hook",
85480
85718
  "device-state",
85481
85719
  "device-status",
85720
+ "dishwasher",
85482
85721
  "doorbell",
85483
85722
  "embedding-encoder",
85484
85723
  "enum-sensor",
@@ -85490,6 +85729,7 @@ var KNOWN_CAP_NAMES = [
85490
85729
  "filesystem-browse",
85491
85730
  "flood",
85492
85731
  "gas",
85732
+ "heating-valve",
85493
85733
  "humidifier",
85494
85734
  "humidity-sensor",
85495
85735
  "image",
@@ -85628,6 +85868,7 @@ var DEVICE_CAP_NAMES = [
85628
85868
  "device-extension",
85629
85869
  "device-ops",
85630
85870
  "device-status",
85871
+ "dishwasher",
85631
85872
  "doorbell",
85632
85873
  "enum-sensor",
85633
85874
  "event-emitter",
@@ -85635,6 +85876,7 @@ var DEVICE_CAP_NAMES = [
85635
85876
  "feature-probe",
85636
85877
  "flood",
85637
85878
  "gas",
85879
+ "heating-valve",
85638
85880
  "humidifier",
85639
85881
  "humidity-sensor",
85640
85882
  "image",
@@ -86088,6 +86330,41 @@ var DEVICE_DO_ACTIONS = [
86088
86330
  method: "callPet",
86089
86331
  args: {}
86090
86332
  },
86333
+ {
86334
+ id: "dishwasher.start",
86335
+ label: "Start cycle",
86336
+ cap: "dishwasher",
86337
+ method: "start",
86338
+ args: {}
86339
+ },
86340
+ {
86341
+ id: "dishwasher.pause",
86342
+ label: "Pause",
86343
+ cap: "dishwasher",
86344
+ method: "pause",
86345
+ args: {}
86346
+ },
86347
+ {
86348
+ id: "dishwasher.stop",
86349
+ label: "Stop",
86350
+ cap: "dishwasher",
86351
+ method: "stop",
86352
+ args: {}
86353
+ },
86354
+ {
86355
+ id: "dishwasher.powerOn",
86356
+ label: "Power on",
86357
+ cap: "dishwasher",
86358
+ method: "setPower",
86359
+ args: { on: true }
86360
+ },
86361
+ {
86362
+ id: "dishwasher.powerOff",
86363
+ label: "Power off",
86364
+ cap: "dishwasher",
86365
+ method: "setPower",
86366
+ args: { on: false }
86367
+ },
86091
86368
  {
86092
86369
  id: "ptz.goHome",
86093
86370
  label: "PTZ go home",
@@ -86364,7 +86641,8 @@ var DEVICE_TYPE_DO_CAPS = {
86364
86641
  [require_err_msg.DeviceType.LawnMower]: ["lawn-mower-control"],
86365
86642
  [require_err_msg.DeviceType.Container]: [],
86366
86643
  [require_err_msg.DeviceType.Image]: [],
86367
- [require_err_msg.DeviceType.PetFeeder]: ["pet-feeder"]
86644
+ [require_err_msg.DeviceType.PetFeeder]: ["pet-feeder"],
86645
+ [require_err_msg.DeviceType.Dishwasher]: ["dishwasher"]
86368
86646
  };
86369
86647
  /**
86370
86648
  * Whether a device type belongs in a Do / automation action device picker.
@@ -87266,9 +87544,10 @@ var SystemMirror = class {
87266
87544
  for (let i = 0; i < targets.length; i += parallelism) {
87267
87545
  const chunk = targets.slice(i, i + parallelism);
87268
87546
  const settled = await Promise.allSettled(chunk.map(async (proxy) => {
87269
- const cap = proxy[capName];
87270
- if (!cap || typeof cap[methodName] !== "function") throw new Error(`device '${proxy.deviceId}' does not expose '${capName}.${methodName}'`);
87271
- return await cap[methodName](args);
87547
+ const cap = Reflect.get(proxy, capName);
87548
+ const method = typeof cap === "object" && cap !== null ? Reflect.get(cap, methodName) : void 0;
87549
+ if (typeof method !== "function") throw new Error(`device '${proxy.deviceId}' does not expose '${capName}.${methodName}'`);
87550
+ return await Reflect.apply(method, cap, [args]);
87272
87551
  }));
87273
87552
  for (let j = 0; j < settled.length; j++) {
87274
87553
  const proxy = chunk[j];
@@ -87496,7 +87775,7 @@ function matchesString(haystack, match) {
87496
87775
  //#region src/device/zod-to-config-ui.ts
87497
87776
  /** Access Zod v4 internal .def — not in public typings but stable at runtime */
87498
87777
  function zodDef(schema) {
87499
- return schema.def;
87778
+ return Reflect.get(schema, "def");
87500
87779
  }
87501
87780
  /** Access internal properties on a Zod schema instance */
87502
87781
  function zodInternals(schema) {
@@ -87643,6 +87922,7 @@ var CAP_NAMES_WITH_STATUS = [
87643
87922
  "device-discovery",
87644
87923
  "device-export",
87645
87924
  "device-status",
87925
+ "dishwasher",
87646
87926
  "doorbell",
87647
87927
  "enum-sensor",
87648
87928
  "event-emitter",
@@ -87650,6 +87930,7 @@ var CAP_NAMES_WITH_STATUS = [
87650
87930
  "feature-probe",
87651
87931
  "flood",
87652
87932
  "gas",
87933
+ "heating-valve",
87653
87934
  "humidifier",
87654
87935
  "humidity-sensor",
87655
87936
  "image",
@@ -87757,6 +88038,7 @@ var CAPABILITY_NAMES = {
87757
88038
  deviceRemovalHook: "device-removal-hook",
87758
88039
  deviceState: "device-state",
87759
88040
  deviceStatus: "device-status",
88041
+ dishwasher: "dishwasher",
87760
88042
  doorbell: "doorbell",
87761
88043
  embeddingEncoder: "embedding-encoder",
87762
88044
  enumSensor: "enum-sensor",
@@ -87768,6 +88050,7 @@ var CAPABILITY_NAMES = {
87768
88050
  filesystemBrowse: "filesystem-browse",
87769
88051
  flood: "flood",
87770
88052
  gas: "gas",
88053
+ heatingValve: "heating-valve",
87771
88054
  humidifier: "humidifier",
87772
88055
  humiditySensor: "humidity-sensor",
87773
88056
  image: "image",
@@ -88120,6 +88403,10 @@ var CAPABILITY_ROUTER_KEYS = [
88120
88403
  key: "deviceStatus",
88121
88404
  name: "device-status"
88122
88405
  },
88406
+ {
88407
+ key: "dishwasher",
88408
+ name: "dishwasher"
88409
+ },
88123
88410
  {
88124
88411
  key: "doorbell",
88125
88412
  name: "doorbell"
@@ -88164,6 +88451,10 @@ var CAPABILITY_ROUTER_KEYS = [
88164
88451
  key: "gas",
88165
88452
  name: "gas"
88166
88453
  },
88454
+ {
88455
+ key: "heatingValve",
88456
+ name: "heating-valve"
88457
+ },
88167
88458
  {
88168
88459
  key: "humidifier",
88169
88460
  name: "humidifier"
@@ -88656,6 +88947,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
88656
88947
  deviceRemovalHookCapability,
88657
88948
  deviceStateCapability,
88658
88949
  deviceStatusCapability,
88950
+ dishwasherCapability,
88659
88951
  doorbellCapability,
88660
88952
  embeddingEncoderCapability,
88661
88953
  enumSensorCapability,
@@ -88667,6 +88959,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
88667
88959
  filesystemBrowseCapability,
88668
88960
  floodCapability,
88669
88961
  gasCapability,
88962
+ heatingValveCapability,
88670
88963
  humidifierCapability,
88671
88964
  humiditySensorCapability,
88672
88965
  imageCapability,
@@ -89597,6 +89890,51 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
89597
89890
  form: "single",
89598
89891
  optional: false
89599
89892
  }],
89893
+ "dishwasher.getStatus": [{
89894
+ name: "deviceId",
89895
+ form: "single",
89896
+ optional: false
89897
+ }],
89898
+ "dishwasher.pause": [{
89899
+ name: "deviceId",
89900
+ form: "single",
89901
+ optional: false
89902
+ }],
89903
+ "dishwasher.setHalfLoad": [{
89904
+ name: "deviceId",
89905
+ form: "single",
89906
+ optional: false
89907
+ }],
89908
+ "dishwasher.setHygienePlus": [{
89909
+ name: "deviceId",
89910
+ form: "single",
89911
+ optional: false
89912
+ }],
89913
+ "dishwasher.setOption": [{
89914
+ name: "deviceId",
89915
+ form: "single",
89916
+ optional: false
89917
+ }],
89918
+ "dishwasher.setPower": [{
89919
+ name: "deviceId",
89920
+ form: "single",
89921
+ optional: false
89922
+ }],
89923
+ "dishwasher.setProgram": [{
89924
+ name: "deviceId",
89925
+ form: "single",
89926
+ optional: false
89927
+ }],
89928
+ "dishwasher.start": [{
89929
+ name: "deviceId",
89930
+ form: "single",
89931
+ optional: false
89932
+ }],
89933
+ "dishwasher.stop": [{
89934
+ name: "deviceId",
89935
+ form: "single",
89936
+ optional: false
89937
+ }],
89600
89938
  "doorbell.getStatus": [{
89601
89939
  name: "deviceId",
89602
89940
  form: "single",
@@ -89666,6 +90004,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
89666
90004
  form: "single",
89667
90005
  optional: false
89668
90006
  }],
90007
+ "heatingValve.getStatus": [{
90008
+ name: "deviceId",
90009
+ form: "single",
90010
+ optional: false
90011
+ }],
89669
90012
  "humidifier.getStatus": [{
89670
90013
  name: "deviceId",
89671
90014
  form: "single",
@@ -91698,7 +92041,7 @@ function getCapsByProviderKind(kind) {
91698
92041
  //#region src/generated/runtime-state-durability.ts
91699
92042
  /**
91700
92043
  * Per-cap runtime-state policy, projected from every `*.cap.ts` that declares
91701
- * `runtimeState`. 69 caps: 37 `restored`, 32 `session`.
92044
+ * `runtimeState`. 71 caps: 37 `restored`, 34 `session`.
91702
92045
  *
91703
92046
  * A cap absent from this map has no runtime-state slice at all. A cap PRESENT
91704
92047
  * with `durability: 'session'` has one and has decided not to keep it.
@@ -91784,6 +92127,10 @@ var RUNTIME_STATE_POLICY = {
91784
92127
  durability: "restored",
91785
92128
  volatileFields: ["lastChangedAt"]
91786
92129
  },
92130
+ "dishwasher": {
92131
+ durability: "session",
92132
+ volatileFields: []
92133
+ },
91787
92134
  "doorbell": {
91788
92135
  durability: "restored",
91789
92136
  volatileFields: []
@@ -91812,6 +92159,10 @@ var RUNTIME_STATE_POLICY = {
91812
92159
  durability: "restored",
91813
92160
  volatileFields: ["lastChangedAt"]
91814
92161
  },
92162
+ "heating-valve": {
92163
+ durability: "session",
92164
+ volatileFields: ["lastFetchedAt"]
92165
+ },
91815
92166
  "humidifier": {
91816
92167
  durability: "session",
91817
92168
  volatileFields: []
@@ -92145,7 +92496,7 @@ var BucketAccumulator = class {
92145
92496
  //#region src/generated/history-catalog.ts
92146
92497
  /**
92147
92498
  * Cap history catalog, projected from every `*.cap.ts` `history` block.
92148
- * 32 caps with series (60 series), 37 caps answered `'none'`.
92499
+ * 34 caps with series (62 series), 37 caps answered `'none'`.
92149
92500
  * Field keys are `runtimeState` paths (`a.b` into fixed objects only).
92150
92501
  */
92151
92502
  var HISTORY_CATALOG = {
@@ -92227,6 +92578,11 @@ var HISTORY_CATALOG = {
92227
92578
  minIntervalMs: 0
92228
92579
  } },
92229
92580
  "device-status": { "online": { kind: "boolean" } },
92581
+ "dishwasher": { "progressPercent": {
92582
+ kind: "gauge",
92583
+ unit: "%",
92584
+ deadband: 2
92585
+ } },
92230
92586
  "fan-control": {
92231
92587
  "percentage": {
92232
92588
  kind: "gauge",
@@ -92237,6 +92593,11 @@ var HISTORY_CATALOG = {
92237
92593
  },
92238
92594
  "flood": { "flooded": { kind: "boolean" } },
92239
92595
  "gas": { "detected": { kind: "boolean" } },
92596
+ "heating-valve": { "position": {
92597
+ kind: "gauge",
92598
+ unit: "%",
92599
+ deadband: 1
92600
+ } },
92240
92601
  "humidifier": {
92241
92602
  "currentHumidity": {
92242
92603
  kind: "gauge",
@@ -92541,21 +92902,8 @@ var SCOPE_PRESETS = [
92541
92902
  * dropping the reference.
92542
92903
  */
92543
92904
  function createSystemProxy(api) {
92544
- const typedApi = api;
92545
- /**
92546
- * Invoke `api.<capProp>.<method>.{query|mutate|subscribe}(input)`.
92547
- * Returns `any` so the caller-side per-method declaration assigns
92548
- * cleanly into the strongly-typed `Pick<InferProvider<...>, ...>`
92549
- * shape on the `SystemProxy` interface — the proxy's contract is
92550
- * enforced by the interface, not the dispatch helper.
92551
- */
92552
92905
  function dispatch(capProp, method, kind, input, push) {
92553
- const leaf = typedApi[capProp]?.[method];
92554
- if (!leaf) throw new Error(`SystemProxy: api has no '${capProp}.${method}'`);
92555
- const fn = leaf;
92556
- if (kind === "mutation") return fn.mutate(input);
92557
- if (kind === "subscription") return fn.subscribe(input, push);
92558
- return fn.query(input);
92906
+ return require_sleep.invokeTrpcLeaf(api, capProp, method, kind, input, push);
92559
92907
  }
92560
92908
  return {
92561
92909
  addonPages: { listPages: (input) => dispatch("addonPages", "listPages", "query", input) },
@@ -101656,13 +102004,11 @@ function pointInPolygon(point, polygon) {
101656
102004
  */
101657
102005
  function bindAddonActions(api, addonId, catalog) {
101658
102006
  const out = {};
101659
- for (const action of Object.keys(catalog)) out[action] = (input) => {
101660
- return api.addons.custom.mutate({
101661
- addonId,
101662
- action,
101663
- input
101664
- });
101665
- };
102007
+ for (const action of Object.keys(catalog)) out[action] = (input) => api.addons.custom.mutate({
102008
+ addonId,
102009
+ action,
102010
+ input
102011
+ });
101666
102012
  return out;
101667
102013
  }
101668
102014
  //#endregion
@@ -102160,7 +102506,7 @@ exports.BrokerTestConnectionResultSchema = TestConnectionResultSchema;
102160
102506
  exports.BrokerUnsubscribeInputSchema = UnsubscribeInputSchema;
102161
102507
  exports.BucketAccumulator = BucketAccumulator;
102162
102508
  exports.BulkRecordSchema = BulkRecordSchema;
102163
- exports.CALLER_STAMPED_CAPABILITIES = CALLER_STAMPED_CAPABILITIES;
102509
+ exports.CALLER_STAMPED_CAPABILITIES = require_sleep.CALLER_STAMPED_CAPABILITIES;
102164
102510
  exports.CAMERA_SENSORS_NOT_LOADED = CAMERA_SENSORS_NOT_LOADED;
102165
102511
  exports.CAMERA_SENSORS_SETTINGS_KEY = CAMERA_SENSORS_SETTINGS_KEY;
102166
102512
  exports.CAMERA_SWITCH_CATALOG = CAMERA_SWITCH_CATALOG;
@@ -102529,6 +102875,9 @@ exports.DiscoveredChildDeviceSchema = DiscoveredChildDeviceSchema;
102529
102875
  exports.DiscoveredChildStatusSchema = DiscoveredChildStatusSchema;
102530
102876
  exports.DiscoveredDeviceSchema = DiscoveredDeviceSchema;
102531
102877
  exports.DiscoveredTargetSchema = DiscoveredTargetSchema;
102878
+ exports.DishwasherConsumableLevelSchema = DishwasherConsumableLevelSchema;
102879
+ exports.DishwasherStateSchema = DishwasherStateSchema;
102880
+ exports.DishwasherStatusSchema = DishwasherStatusSchema;
102532
102881
  exports.DiskReconcileJobSchema = DiskReconcileJobSchema;
102533
102882
  exports.DisposerChain = require_sleep.DisposerChain;
102534
102883
  exports.DoorbellPressEventSchema = DoorbellPressEventSchema;
@@ -102694,6 +103043,7 @@ exports.HUB_VIEWER_MOUNT = HUB_VIEWER_MOUNT;
102694
103043
  exports.HWACCEL_OPTIONS = HWACCEL_OPTIONS;
102695
103044
  exports.HardwareClassIdSchema = HardwareClassIdSchema;
102696
103045
  exports.HealthStatusSchema = HealthStatusSchema;
103046
+ exports.HeatingValveStatusSchema = HeatingValveStatusSchema;
102697
103047
  exports.HfModelResolutionSchema = HfModelResolutionSchema;
102698
103048
  exports.HistoryPointSchema = HistoryPointSchema;
102699
103049
  exports.HistoryResolutionEnum = HistoryResolutionEnum;
@@ -103532,6 +103882,8 @@ exports.SENSOR_MAP = SENSOR_MAP;
103532
103882
  exports.SERVER_NAME_MAX_LENGTH = SERVER_NAME_MAX_LENGTH;
103533
103883
  exports.SERVER_NAME_SETTING_KEY = SERVER_NAME_SETTING_KEY;
103534
103884
  exports.SESSION_PLACEMENT_SETTING_KEY = SESSION_PLACEMENT_SETTING_KEY;
103885
+ exports.SETTINGS_ARRAY_ADOPTS_PREFIX = require_sleep.SETTINGS_ARRAY_ADOPTS_PREFIX;
103886
+ exports.SETTINGS_BROKERS_ADOPTS_PREFIX = require_sleep.SETTINGS_BROKERS_ADOPTS_PREFIX;
103535
103887
  exports.SHARE_SOURCE_SETTING_KEY = SHARE_SOURCE_SETTING_KEY;
103536
103888
  exports.SHARE_VIEW_KINDS = require_sleep.SHARE_VIEW_KINDS;
103537
103889
  exports.SINGLE_HUB_ADDRESS_ROLES = SINGLE_HUB_ADDRESS_ROLES;
@@ -104061,6 +104413,8 @@ exports.defineCustomActions = require_sleep.defineCustomActions;
104061
104413
  exports.defineEntryKind = require_sleep.defineEntryKind;
104062
104414
  exports.defineExtensionSlotProvider = defineExtensionSlotProvider;
104063
104415
  exports.defineRecordKinds = require_sleep.defineRecordKinds;
104416
+ exports.dehydrateConfigField = require_sleep.dehydrateConfigField;
104417
+ exports.dehydrateSchema = require_sleep.dehydrateSchema;
104064
104418
  exports.deleteAlarmProfile = deleteAlarmProfile;
104065
104419
  exports.deriveBatteryPresence = deriveBatteryPresence;
104066
104420
  exports.deriveCameraSwitches = deriveCameraSwitches;
@@ -104104,6 +104458,7 @@ exports.deviceStateCapability = deviceStateCapability;
104104
104458
  exports.deviceStatusCapability = deviceStatusCapability;
104105
104459
  exports.diffStepSettings = diffStepSettings;
104106
104460
  exports.disarmRoseMemory = require_composition.disarmRoseMemory;
104461
+ exports.dishwasherCapability = dishwasherCapability;
104107
104462
  exports.doActionSelectValue = doActionSelectValue;
104108
104463
  exports.doorbellCapability = doorbellCapability;
104109
104464
  exports.doorbellFeatureSources = doorbellFeatureSources;
@@ -104200,6 +104555,7 @@ exports.globalSecretScope = require_sleep.globalSecretScope;
104200
104555
  exports.hasModelBoundOverrides = hasModelBoundOverrides;
104201
104556
  exports.hasMotionTrigger = hasMotionTrigger;
104202
104557
  exports.hasUrlScheme = hasUrlScheme;
104558
+ exports.heatingValveCapability = heatingValveCapability;
104203
104559
  exports.hfModelUrl = require_sleep.hfModelUrl;
104204
104560
  exports.historyFieldsFor = historyFieldsFor;
104205
104561
  exports.htmlToText = htmlToText;
@@ -104322,6 +104678,7 @@ exports.logDestinationCapability = logDestinationCapability;
104322
104678
  exports.logLevelAtMost = logLevelAtMost;
104323
104679
  exports.loginMethodCapability = loginMethodCapability;
104324
104680
  exports.looseSchema = looseSchema;
104681
+ exports.makeInMemoryRecords = require_sleep.makeInMemoryRecords;
104325
104682
  exports.makeProfileBrokerId = require_sleep.makeProfileBrokerId;
104326
104683
  exports.makeSecretMarker = require_sleep.makeSecretMarker;
104327
104684
  exports.makeSourceBrokerId = require_sleep.makeSourceBrokerId;
@@ -104386,6 +104743,7 @@ exports.objectInputDeclaresAddonId = objectInputDeclaresAddonId;
104386
104743
  exports.objectInputDeclaresRequiredDeviceId = objectInputDeclaresRequiredDeviceId;
104387
104744
  exports.occupancyScope = occupancyScope;
104388
104745
  exports.oidcConnectionsCapability = oidcConnectionsCapability;
104746
+ exports.omitTransientConfig = require_sleep.omitTransientConfig;
104389
104747
  exports.optionalAncestors = optionalAncestors;
104390
104748
  exports.optionalMethod = require_sleep.optionalMethod;
104391
104749
  exports.osdCapability = osdCapability;
@@ -104412,6 +104770,8 @@ exports.parseSecretPath = require_sleep.parseSecretPath;
104412
104770
  exports.parseSecretRef = require_sleep.parseSecretRef;
104413
104771
  exports.parseSecretStatePath = require_sleep.parseSecretStatePath;
104414
104772
  exports.parseSessionPlacementPolicy = parseSessionPlacementPolicy;
104773
+ exports.parseSettingsArrayAdoptsFrom = require_sleep.parseSettingsArrayAdoptsFrom;
104774
+ exports.parseSettingsBrokersAdoptsFrom = require_sleep.parseSettingsBrokersAdoptsFrom;
104415
104775
  exports.parseShareSource = parseShareSource;
104416
104776
  exports.parseStreamParamsFormPatch = parseStreamParamsFormPatch;
104417
104777
  exports.parseTrainingEventLine = parseTrainingEventLine;
@@ -104585,7 +104945,9 @@ exports.servedTemplateVars = servedTemplateVars;
104585
104945
  exports.serverManagementCapability = serverManagementCapability;
104586
104946
  exports.setByPath = setByPath;
104587
104947
  exports.settingValuesEqual = settingValuesEqual;
104948
+ exports.settingsArrayAdoptsFrom = require_sleep.settingsArrayAdoptsFrom;
104588
104949
  exports.settingsBelow = settingsBelow;
104950
+ exports.settingsBrokersAdoptsFrom = require_sleep.settingsBrokersAdoptsFrom;
104589
104951
  exports.settingsStoreCapability = settingsStoreCapability;
104590
104952
  exports.shortHostname = shortHostname;
104591
104953
  exports.shortSecretRefHash = require_sleep.shortSecretRefHash;
@@ -104699,6 +105061,7 @@ exports.webrtcSessionCapability = webrtcSessionCapability;
104699
105061
  exports.weeklyMaskIndex = weeklyMaskIndex;
104700
105062
  exports.weeklyMaskIsUniform = weeklyMaskIsUniform;
104701
105063
  exports.weeklyMaskToWindows = weeklyMaskToWindows;
105064
+ exports.widenDeviceConstructor = widenDeviceConstructor;
104702
105065
  exports.windowsToWeeklyMask = windowsToWeeklyMask;
104703
105066
  exports.wiringAddonHealthSchema = wiringAddonHealthSchema;
104704
105067
  exports.wiringHealthSnapshotSchema = wiringHealthSnapshotSchema;
@@ -104707,7 +105070,7 @@ exports.wiringProbeKindSchema = wiringProbeKindSchema;
104707
105070
  exports.wiringProbeResultSchema = wiringProbeResultSchema;
104708
105071
  exports.withFieldFrom = withFieldFrom;
104709
105072
  exports.withLocationMode = withLocationMode;
104710
- exports.withoutCallerStamp = withoutCallerStamp;
105073
+ exports.withoutCallerStamp = require_sleep.withoutCallerStamp;
104711
105074
  exports.withoutField = withoutField;
104712
105075
  exports.writeModelBoundSetting = writeModelBoundSetting;
104713
105076
  exports.zodEntriesToConfigUI = zodEntriesToConfigUI;