@camstack/types 1.2.383 → 1.2.384

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 CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sleep = require("./sleep--L6qY125.js");
2
+ const require_sleep = require("./sleep-REHQvLV6.js");
3
3
  const require_event_category = require("./event-category-Hoe-mqbd.js");
4
4
  const require_err_msg = require("./err-msg-BhVbr0NX.js");
5
5
  //#region src/generated/cap-input-defaults.ts
@@ -1035,6 +1035,22 @@ var CAP_STATE_LEAVES = Object.freeze({
1035
1035
  "path": "hygienePlus",
1036
1036
  "valueType": "boolean"
1037
1037
  },
1038
+ {
1039
+ "path": "extraDry",
1040
+ "valueType": "boolean"
1041
+ },
1042
+ {
1043
+ "path": "intensiveZone",
1044
+ "valueType": "boolean"
1045
+ },
1046
+ {
1047
+ "path": "varioSpeedPlus",
1048
+ "valueType": "boolean"
1049
+ },
1050
+ {
1051
+ "path": "childLock",
1052
+ "valueType": "boolean"
1053
+ },
1038
1054
  {
1039
1055
  "path": "errorCode",
1040
1056
  "valueType": "number"
package/dist/addon.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { $n as PEER_BYTES_CHUNK_BYTES, $t as REMOVE_LEAF, A as HF_REPO, An as RECORD_BATCH_MAX_BYTES, Ar as emitReadiness, B as describeCustomActions, Bn as RECORD_SECRET_COLLECTION_PREFIX, Br as SECRET_CLEAR, Bt as settingsBrokersAdoptsFrom, C as addonSliceHandleApi, Cn as RecordsError, Cr as globalSecretScope, Dn as asRecordsError, En as UnknownRecordKindError, Er as parseSecretRef, F as DEVICE_CHILDREN_BATCH_MAX, Fn as RECORD_ID_MAX_LENGTH, Ft as SETTINGS_ARRAY_ADOPTS_PREFIX, Gn as createSecretsAccess, Gr as isSecretMarkerLike, Gt as RecordFieldPathSchema, H as adminUiCapability, Hn as RECORD_SWEEP_INTERVAL_MS, Hr as isSecretClear, Ht as entryBody, I as CALLER_STAMPED_CAPABILITIES, In as RECORD_MAX_DATA_BYTES, It as parseSettingsArrayAdoptsFrom, Jn as forgetKnownSecret, Jt as RecordKindNameSchema, Kn as MIN_SCRUBBED_LENGTH, Kr as makeSecretMarker, Kt as RecordIndexSchema, L as withoutCallerStamp, Ln as RECORD_MAX_INDEXES, Lt as settingsArrayAdoptsFrom, Mn as RECORD_DATABASES, N as deviceOpsCapability, Nn as RECORD_DEFAULT_MAX_DATA_BYTES, On as recordsErrorFromMessage, P as viewerUiCapability, Pn as RECORD_DELETE_BATCH, Pt as makeInMemoryRecords, Qn as shortSecretRefHash, Qt as defineRecordKinds, Rn as RECORD_MAX_INDEX_FIELDS, Rt as SETTINGS_BROKERS_ADOPTS_PREFIX, Sn as RecordUniqueViolationError, Sr as formatSecretScope, Tn as UnindexedFilterError, Tr as normalizeSecretOwner, Un as resolveSecretViewsIn, Ur as isSecretFieldView, Ut as createRecordsAccess, Vn as RECORD_SETTINGS_MAX_ROWS, Vr as classifySecretWrite, Vt as defineEntryKind, Wn as REVALIDATE_AFTER_MS, Wr as isSecretMarker, Wt as EntryDescriptorSchema, X as expandCapMethods, Xn as registerKnownSecret, Xt as assertValidDeclaration, Yn as knownSecretCount, Yt as RecordRetentionSchema, Zn as scrubKnownSecrets, Zt as declarationsOf, _ as readErrorI18n, _n as PlaintextSecretError, an as recordSecretRef, b as isDeviceScopedCap, bn as RecordSecretUnavailableError, br as arrayItemFieldPath, c as asString, cn as collectZodSecretPaths, ct as ReadinessTimeoutError, d as parseJsonUnknown, dn as BatchTooLargeError, dt as scopeKey, en as collectSecretLeaves, er as PEER_BYTES_MAX_OUTSTANDING, f as hfModelUrl, fn as DeclarationRefusedError, g as ErrorI18nPayloadSchema, gn as NoCallerError, hn as InvalidRecordError, in as recordSecretCollection, ir as DATAPLANE_SECRET_HEADER, it as readNodePin, jn as RECORD_CLASSES, kn as RECORD_BATCH_MAX, kr as createEvent, ln as isZodSecret, lr as normalizeAddonInitResult, mn as ForeignSecretMarkerError, nn as parseSecretPath, nr as PEER_BYTES_TICKET_TTL_MS, o as asJsonObject, on as secretArrayPrefixes, or as DisposerChain, ot as MODEL_FORMATS, p as BOOT_RECOVERY_BACKOFF_MS, pn as FilterRequiredError, qn as clearKnownSecrets, qr as toSecretFieldView, qt as RecordKindDeclarationSchema, r as maskUrlCredentials, rn as recordArrayItemPath, rt as nodePin, sr as BaseAddon, st as ReadinessRegistry, t as sleep, tn as mapSecretLeaves, tr as PEER_BYTES_STALL_MS, un as AdoptionPendingError, vn as RECORDS_ERROR_CODES, w as createEventBusSliceSource, wn as RevConflictError, wr as isSecretRef, x as createDeviceProxy, xn as RecordTooLargeError, xr as buildSecretRef, y as DEVICE_SCOPED_CAPS, yn as RecordNotFoundError, yr as SECRET_REF_SCHEME, zn as RECORD_QUERY_MAX, zt as parseSettingsBrokersAdoptsFrom } from "./sleep-BOjuyoPC.mjs";
1
+ import { $n as PEER_BYTES_CHUNK_BYTES, $t as REMOVE_LEAF, A as HF_REPO, An as RECORD_BATCH_MAX_BYTES, Ar as emitReadiness, B as describeCustomActions, Bn as RECORD_SECRET_COLLECTION_PREFIX, Br as SECRET_CLEAR, Bt as settingsBrokersAdoptsFrom, C as addonSliceHandleApi, Cn as RecordsError, Cr as globalSecretScope, Dn as asRecordsError, En as UnknownRecordKindError, Er as parseSecretRef, F as DEVICE_CHILDREN_BATCH_MAX, Fn as RECORD_ID_MAX_LENGTH, Ft as SETTINGS_ARRAY_ADOPTS_PREFIX, Gn as createSecretsAccess, Gr as isSecretMarkerLike, Gt as RecordFieldPathSchema, H as adminUiCapability, Hn as RECORD_SWEEP_INTERVAL_MS, Hr as isSecretClear, Ht as entryBody, I as CALLER_STAMPED_CAPABILITIES, In as RECORD_MAX_DATA_BYTES, It as parseSettingsArrayAdoptsFrom, Jn as forgetKnownSecret, Jt as RecordKindNameSchema, Kn as MIN_SCRUBBED_LENGTH, Kr as makeSecretMarker, Kt as RecordIndexSchema, L as withoutCallerStamp, Ln as RECORD_MAX_INDEXES, Lt as settingsArrayAdoptsFrom, Mn as RECORD_DATABASES, N as deviceOpsCapability, Nn as RECORD_DEFAULT_MAX_DATA_BYTES, On as recordsErrorFromMessage, P as viewerUiCapability, Pn as RECORD_DELETE_BATCH, Pt as makeInMemoryRecords, Qn as shortSecretRefHash, Qt as defineRecordKinds, Rn as RECORD_MAX_INDEX_FIELDS, Rt as SETTINGS_BROKERS_ADOPTS_PREFIX, Sn as RecordUniqueViolationError, Sr as formatSecretScope, Tn as UnindexedFilterError, Tr as normalizeSecretOwner, Un as resolveSecretViewsIn, Ur as isSecretFieldView, Ut as createRecordsAccess, Vn as RECORD_SETTINGS_MAX_ROWS, Vr as classifySecretWrite, Vt as defineEntryKind, Wn as REVALIDATE_AFTER_MS, Wr as isSecretMarker, Wt as EntryDescriptorSchema, X as expandCapMethods, Xn as registerKnownSecret, Xt as assertValidDeclaration, Yn as knownSecretCount, Yt as RecordRetentionSchema, Zn as scrubKnownSecrets, Zt as declarationsOf, _ as readErrorI18n, _n as PlaintextSecretError, an as recordSecretRef, b as isDeviceScopedCap, bn as RecordSecretUnavailableError, br as arrayItemFieldPath, c as asString, cn as collectZodSecretPaths, ct as ReadinessTimeoutError, d as parseJsonUnknown, dn as BatchTooLargeError, dt as scopeKey, en as collectSecretLeaves, er as PEER_BYTES_MAX_OUTSTANDING, f as hfModelUrl, fn as DeclarationRefusedError, g as ErrorI18nPayloadSchema, gn as NoCallerError, hn as InvalidRecordError, in as recordSecretCollection, ir as DATAPLANE_SECRET_HEADER, it as readNodePin, jn as RECORD_CLASSES, kn as RECORD_BATCH_MAX, kr as createEvent, ln as isZodSecret, lr as normalizeAddonInitResult, mn as ForeignSecretMarkerError, nn as parseSecretPath, nr as PEER_BYTES_TICKET_TTL_MS, o as asJsonObject, on as secretArrayPrefixes, or as DisposerChain, ot as MODEL_FORMATS, p as BOOT_RECOVERY_BACKOFF_MS, pn as FilterRequiredError, qn as clearKnownSecrets, qr as toSecretFieldView, qt as RecordKindDeclarationSchema, r as maskUrlCredentials, rn as recordArrayItemPath, rt as nodePin, sr as BaseAddon, st as ReadinessRegistry, t as sleep, tn as mapSecretLeaves, tr as PEER_BYTES_STALL_MS, un as AdoptionPendingError, vn as RECORDS_ERROR_CODES, w as createEventBusSliceSource, wn as RevConflictError, wr as isSecretRef, x as createDeviceProxy, xn as RecordTooLargeError, xr as buildSecretRef, y as DEVICE_SCOPED_CAPS, yn as RecordNotFoundError, yr as SECRET_REF_SCHEME, zn as RECORD_QUERY_MAX, zt as parseSettingsBrokersAdoptsFrom } from "./sleep-BegKjwUu.mjs";
2
2
  import { t as EventCategory } from "./event-category-BvOFi6PY.mjs";
3
3
  import { a as DeviceType, t as errMsg } from "./err-msg-BXKzRBwg.mjs";
4
4
  //#region src/generated/cap-input-defaults.ts
@@ -1034,6 +1034,22 @@ var CAP_STATE_LEAVES = Object.freeze({
1034
1034
  "path": "hygienePlus",
1035
1035
  "valueType": "boolean"
1036
1036
  },
1037
+ {
1038
+ "path": "extraDry",
1039
+ "valueType": "boolean"
1040
+ },
1041
+ {
1042
+ "path": "intensiveZone",
1043
+ "valueType": "boolean"
1044
+ },
1045
+ {
1046
+ "path": "varioSpeedPlus",
1047
+ "valueType": "boolean"
1048
+ },
1049
+ {
1050
+ "path": "childLock",
1051
+ "valueType": "boolean"
1052
+ },
1037
1053
  {
1038
1054
  "path": "errorCode",
1039
1055
  "valueType": "number"
@@ -2,7 +2,11 @@ import { z } from 'zod';
2
2
  import { type InferProvider } from './capability-definition.js';
3
3
  /**
4
4
  * `device-adoption` — generic discovery + adoption surface,
5
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
5
+ * system-scoped collection (one provider per integration addon), routed
6
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
7
+ * pin model as `connection-test`. The admin UI keeps using
8
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
9
+ * successor to `ha-discovery`:
6
10
  * keyed by `integrationId` (the addon resolves integrationId → broker
7
11
  * internally) rather than a connection-specific `brokerId`, and it
8
12
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -122,7 +126,7 @@ export declare const ResyncResultSchema: z.ZodObject<{
122
126
  export declare const deviceAdoptionCapability: {
123
127
  readonly name: 'device-adoption';
124
128
  readonly scope: 'system';
125
- readonly mode: 'singleton';
129
+ readonly mode: 'collection';
126
130
  readonly status: {
127
131
  readonly schema: z.ZodObject<{
128
132
  lastDiscoveryAt: z.ZodNullable<z.ZodNumber>;
@@ -1801,7 +1801,7 @@ export declare const deviceManagerCapability: {
1801
1801
  error: z.ZodOptional<z.ZodString>;
1802
1802
  }, z.core.$strip>, "mutation">;
1803
1803
  /** List candidate filter chips for an integration via its device-adoption
1804
- * provider — addonId-routed so it never hits the singleton shadow. */
1804
+ * provider — addonId-routed via the collection pin. */
1805
1805
  readonly adoptionListCandidateFilters: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1806
1806
  addonId: z.ZodString;
1807
1807
  integrationId: z.ZodString;
@@ -54,6 +54,10 @@ export declare const DishwasherStatusSchema: z.ZodObject<{
54
54
  }>>;
55
55
  halfLoad: z.ZodBoolean;
56
56
  hygienePlus: z.ZodBoolean;
57
+ extraDry: z.ZodBoolean;
58
+ intensiveZone: z.ZodBoolean;
59
+ varioSpeedPlus: z.ZodBoolean;
60
+ childLock: z.ZodBoolean;
57
61
  errorCode: z.ZodNullable<z.ZodNumber>;
58
62
  errorLabel: z.ZodNullable<z.ZodString>;
59
63
  lastFetchedAt: z.ZodNumber;
@@ -91,6 +95,22 @@ export declare const dishwasherCapability: {
91
95
  deviceId: z.ZodNumber;
92
96
  on: z.ZodBoolean;
93
97
  }, z.core.$strip>, z.ZodVoid, "mutation">;
98
+ readonly setExtraDry: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
99
+ deviceId: z.ZodNumber;
100
+ on: z.ZodBoolean;
101
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
102
+ readonly setIntensiveZone: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
103
+ deviceId: z.ZodNumber;
104
+ on: z.ZodBoolean;
105
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
106
+ readonly setVarioSpeedPlus: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
107
+ deviceId: z.ZodNumber;
108
+ on: z.ZodBoolean;
109
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
110
+ readonly setChildLock: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
111
+ deviceId: z.ZodNumber;
112
+ on: z.ZodBoolean;
113
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
94
114
  readonly setOption: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
95
115
  deviceId: z.ZodNumber;
96
116
  key: z.ZodString;
@@ -126,6 +146,10 @@ export declare const dishwasherCapability: {
126
146
  }>>;
127
147
  halfLoad: z.ZodBoolean;
128
148
  hygienePlus: z.ZodBoolean;
149
+ extraDry: z.ZodBoolean;
150
+ intensiveZone: z.ZodBoolean;
151
+ varioSpeedPlus: z.ZodBoolean;
152
+ childLock: z.ZodBoolean;
129
153
  errorCode: z.ZodNullable<z.ZodNumber>;
130
154
  errorLabel: z.ZodNullable<z.ZodString>;
131
155
  lastFetchedAt: z.ZodNumber;
@@ -160,6 +184,10 @@ export declare const dishwasherCapability: {
160
184
  }>>;
161
185
  halfLoad: z.ZodBoolean;
162
186
  hygienePlus: z.ZodBoolean;
187
+ extraDry: z.ZodBoolean;
188
+ intensiveZone: z.ZodBoolean;
189
+ varioSpeedPlus: z.ZodBoolean;
190
+ childLock: z.ZodBoolean;
163
191
  errorCode: z.ZodNullable<z.ZodNumber>;
164
192
  errorLabel: z.ZodNullable<z.ZodString>;
165
193
  lastFetchedAt: z.ZodNumber;
package/dist/client.js CHANGED
@@ -25906,14 +25906,19 @@ function addonSliceHandleApi(api) {
25906
25906
  }
25907
25907
  //#endregion
25908
25908
  //#region src/helpers/trpc-leaf.ts
25909
+ function isCapRecord(value) {
25910
+ if (value === null || Array.isArray(value)) return false;
25911
+ const kind = typeof value;
25912
+ return kind === "object" || kind === "function";
25913
+ }
25909
25914
  function isTrpcProcedureLeaf(value) {
25910
- if (typeof value !== "object" || value === null) return false;
25915
+ if (!isCapRecord(value)) return false;
25911
25916
  const record = value;
25912
- return (typeof record.query === "function" || typeof record.mutate === "function" || typeof record.subscribe === "function") && !Array.isArray(value);
25917
+ return typeof record.query === "function" || typeof record.mutate === "function" || typeof record.subscribe === "function";
25913
25918
  }
25914
25919
  function readCapRecord(api, capProp) {
25915
25920
  const cap = Reflect.get(api, capProp);
25916
- if (typeof cap !== "object" || cap === null || Array.isArray(cap)) return void 0;
25921
+ if (!isCapRecord(cap)) return void 0;
25917
25922
  return cap;
25918
25923
  }
25919
25924
  function readTrpcLeaf(api, capProp, method) {
@@ -26137,6 +26142,10 @@ function createDeviceProxy(api, binding, opts) {
26137
26142
  setPower: (input) => dispatch("dishwasher", "dishwasher", "setPower", "mutation", input),
26138
26143
  setHalfLoad: (input) => dispatch("dishwasher", "dishwasher", "setHalfLoad", "mutation", input),
26139
26144
  setHygienePlus: (input) => dispatch("dishwasher", "dishwasher", "setHygienePlus", "mutation", input),
26145
+ setExtraDry: (input) => dispatch("dishwasher", "dishwasher", "setExtraDry", "mutation", input),
26146
+ setIntensiveZone: (input) => dispatch("dishwasher", "dishwasher", "setIntensiveZone", "mutation", input),
26147
+ setVarioSpeedPlus: (input) => dispatch("dishwasher", "dishwasher", "setVarioSpeedPlus", "mutation", input),
26148
+ setChildLock: (input) => dispatch("dishwasher", "dishwasher", "setChildLock", "mutation", input),
26140
26149
  setOption: (input) => dispatch("dishwasher", "dishwasher", "setOption", "mutation", input),
26141
26150
  getStatus: (input) => dispatch("dishwasher", "dishwasher", "getStatus", "query", input)
26142
26151
  };
package/dist/client.mjs CHANGED
@@ -25905,14 +25905,19 @@ function addonSliceHandleApi(api) {
25905
25905
  }
25906
25906
  //#endregion
25907
25907
  //#region src/helpers/trpc-leaf.ts
25908
+ function isCapRecord(value) {
25909
+ if (value === null || Array.isArray(value)) return false;
25910
+ const kind = typeof value;
25911
+ return kind === "object" || kind === "function";
25912
+ }
25908
25913
  function isTrpcProcedureLeaf(value) {
25909
- if (typeof value !== "object" || value === null) return false;
25914
+ if (!isCapRecord(value)) return false;
25910
25915
  const record = value;
25911
- return (typeof record.query === "function" || typeof record.mutate === "function" || typeof record.subscribe === "function") && !Array.isArray(value);
25916
+ return typeof record.query === "function" || typeof record.mutate === "function" || typeof record.subscribe === "function";
25912
25917
  }
25913
25918
  function readCapRecord(api, capProp) {
25914
25919
  const cap = Reflect.get(api, capProp);
25915
- if (typeof cap !== "object" || cap === null || Array.isArray(cap)) return void 0;
25920
+ if (!isCapRecord(cap)) return void 0;
25916
25921
  return cap;
25917
25922
  }
25918
25923
  function readTrpcLeaf(api, capProp, method) {
@@ -26136,6 +26141,10 @@ function createDeviceProxy(api, binding, opts) {
26136
26141
  setPower: (input) => dispatch("dishwasher", "dishwasher", "setPower", "mutation", input),
26137
26142
  setHalfLoad: (input) => dispatch("dishwasher", "dishwasher", "setHalfLoad", "mutation", input),
26138
26143
  setHygienePlus: (input) => dispatch("dishwasher", "dishwasher", "setHygienePlus", "mutation", input),
26144
+ setExtraDry: (input) => dispatch("dishwasher", "dishwasher", "setExtraDry", "mutation", input),
26145
+ setIntensiveZone: (input) => dispatch("dishwasher", "dishwasher", "setIntensiveZone", "mutation", input),
26146
+ setVarioSpeedPlus: (input) => dispatch("dishwasher", "dishwasher", "setVarioSpeedPlus", "mutation", input),
26147
+ setChildLock: (input) => dispatch("dishwasher", "dishwasher", "setChildLock", "mutation", input),
26139
26148
  setOption: (input) => dispatch("dishwasher", "dishwasher", "setOption", "mutation", input),
26140
26149
  getStatus: (input) => dispatch("dishwasher", "dishwasher", "getStatus", "query", input)
26141
26150
  };
@@ -3427,6 +3427,34 @@ export type AppRouter = TrpcCoreRouter<{
3427
3427
  output: z.infer<typeof dishwasherCapability.methods.setHygienePlus.output>;
3428
3428
  meta: object;
3429
3429
  }>;
3430
+ setExtraDry: TRPCMutationProcedure<{
3431
+ input: {
3432
+ [x: string]: unknown;
3433
+ } & z.input<typeof dishwasherCapability.methods.setExtraDry.input>;
3434
+ output: z.infer<typeof dishwasherCapability.methods.setExtraDry.output>;
3435
+ meta: object;
3436
+ }>;
3437
+ setIntensiveZone: TRPCMutationProcedure<{
3438
+ input: {
3439
+ [x: string]: unknown;
3440
+ } & z.input<typeof dishwasherCapability.methods.setIntensiveZone.input>;
3441
+ output: z.infer<typeof dishwasherCapability.methods.setIntensiveZone.output>;
3442
+ meta: object;
3443
+ }>;
3444
+ setVarioSpeedPlus: TRPCMutationProcedure<{
3445
+ input: {
3446
+ [x: string]: unknown;
3447
+ } & z.input<typeof dishwasherCapability.methods.setVarioSpeedPlus.input>;
3448
+ output: z.infer<typeof dishwasherCapability.methods.setVarioSpeedPlus.output>;
3449
+ meta: object;
3450
+ }>;
3451
+ setChildLock: TRPCMutationProcedure<{
3452
+ input: {
3453
+ [x: string]: unknown;
3454
+ } & z.input<typeof dishwasherCapability.methods.setChildLock.input>;
3455
+ output: z.infer<typeof dishwasherCapability.methods.setChildLock.output>;
3456
+ meta: object;
3457
+ }>;
3430
3458
  setOption: TRPCMutationProcedure<{
3431
3459
  input: {
3432
3460
  [x: string]: unknown;
@@ -5,7 +5,7 @@
5
5
  * `ALL_CAPABILITY_DEFINITIONS` (the whole Zod schema graph, ~+100 MB heap per
6
6
  * runner). See docs/decisions/adr-0028.md.
7
7
  *
8
- * Coverage: 1 advance-derived caps, 73 caps with 358 state leaves.
8
+ * Coverage: 1 advance-derived caps, 73 caps with 362 state leaves.
9
9
  */
10
10
  /** A bindable scalar in a capability's runtime state. */
11
11
  export interface CapStateLeaf {
@@ -551,12 +551,12 @@ export interface CapabilityRouterMap<TRouter = unknown> {
551
551
  readonly zoneRules: TRouter;
552
552
  readonly zones: TRouter;
553
553
  }
554
- /** Capability names whose mode is `singleton` (145 caps). */
555
- export declare const SINGLETON_CAPABILITY_NAMES: readonly ['accessories', 'addon-pages', 'addon-settings', 'addon-widgets', 'addons', 'admin-ui', 'air-quality-sensor', 'alarm-panel', 'alerts', 'ambient-light-sensor', 'audio-analysis', 'audio-analyzer', 'audio-codec', 'audio-metrics', 'automation-control', 'backup', 'battery', 'binary', 'brightness', 'button', 'calendars', 'camera-credentials', 'camera-grid-layout', 'camera-pipeline-config', 'camera-streams', 'carbon-monoxide', 'climate-control', 'color', 'composer', 'connectivity', 'consumables', 'contact', 'control', 'core-blocks', 'cover', 'database-snapshot', 'day-night', 'decoder', 'detection-pipeline', 'device-admin-link', 'device-adoption', 'device-credentials', 'device-discovery', 'device-history', 'device-manager', 'device-ops', 'device-state', 'device-status', 'dishwasher', 'doorbell', 'enum-sensor', 'event-emitter', 'face-gallery', 'fan-control', 'feature-probe', 'filesystem-browse', 'flood', 'gas', 'heating-valve', 'humidifier', 'humidity-sensor', 'image', 'image-settings', 'integrations', 'intercom', 'keychain', 'keychain-admin', 'lawn-mower-control', 'llm-runtime', 'local-network', 'lock-control', 'media-player', 'metrics-provider', 'model-convert', 'model-distributor', 'motion', 'motion-detection', 'motion-trigger', 'motion-zones', 'native-object-detection', 'navigation', 'network-link', 'network-quality', 'node-certificates', 'nodes', 'notification-rules', 'notifier', 'numeric-sensor', 'oidc-connections', 'osd', 'osd-manager', 'pet-feeder', 'pipeline-analytics', 'pipeline-executor', 'pipeline-orchestrator', 'pipeline-runner', 'plate-gallery', 'platform-probe', 'power-meter', 'presence', 'pressure-sensor', 'privacy-mask', 'ptz', 'ptz-autotrack', 'reboot', 'record-entries', 'recording-archive', 'recording-export', 'recording-onboard', 'recording-signal', 'records', 'scene-monitor', 'script-runner', 'server-management', 'settings-store', 'smoke', 'snapshot', 'sso-bridge', 'storage', 'storage-admin', 'storage-migration', 'stream-broker', 'stream-catalog', 'stream-params', 'stream-signals', 'switch', 'system', 'tamper', 'temperature-sensor', 'terminal-session', 'toast', 'training', 'update', 'user-management', 'vacuum-control', 'valve', 'vector-store', 'vibration', 'viewer-ui', 'water-heater', 'weather', 'webrtc-session', 'zone-analytics', 'zone-rules', 'zones'];
554
+ /** Capability names whose mode is `singleton` (144 caps). */
555
+ export declare const SINGLETON_CAPABILITY_NAMES: readonly ['accessories', 'addon-pages', 'addon-settings', 'addon-widgets', 'addons', 'admin-ui', 'air-quality-sensor', 'alarm-panel', 'alerts', 'ambient-light-sensor', 'audio-analysis', 'audio-analyzer', 'audio-codec', 'audio-metrics', 'automation-control', 'backup', 'battery', 'binary', 'brightness', 'button', 'calendars', 'camera-credentials', 'camera-grid-layout', 'camera-pipeline-config', 'camera-streams', 'carbon-monoxide', 'climate-control', 'color', 'composer', 'connectivity', 'consumables', 'contact', 'control', 'core-blocks', 'cover', 'database-snapshot', 'day-night', 'decoder', 'detection-pipeline', 'device-admin-link', 'device-credentials', 'device-discovery', 'device-history', 'device-manager', 'device-ops', 'device-state', 'device-status', 'dishwasher', 'doorbell', 'enum-sensor', 'event-emitter', 'face-gallery', 'fan-control', 'feature-probe', 'filesystem-browse', 'flood', 'gas', 'heating-valve', 'humidifier', 'humidity-sensor', 'image', 'image-settings', 'integrations', 'intercom', 'keychain', 'keychain-admin', 'lawn-mower-control', 'llm-runtime', 'local-network', 'lock-control', 'media-player', 'metrics-provider', 'model-convert', 'model-distributor', 'motion', 'motion-detection', 'motion-trigger', 'motion-zones', 'native-object-detection', 'navigation', 'network-link', 'network-quality', 'node-certificates', 'nodes', 'notification-rules', 'notifier', 'numeric-sensor', 'oidc-connections', 'osd', 'osd-manager', 'pet-feeder', 'pipeline-analytics', 'pipeline-executor', 'pipeline-orchestrator', 'pipeline-runner', 'plate-gallery', 'platform-probe', 'power-meter', 'presence', 'pressure-sensor', 'privacy-mask', 'ptz', 'ptz-autotrack', 'reboot', 'record-entries', 'recording-archive', 'recording-export', 'recording-onboard', 'recording-signal', 'records', 'scene-monitor', 'script-runner', 'server-management', 'settings-store', 'smoke', 'snapshot', 'sso-bridge', 'storage', 'storage-admin', 'storage-migration', 'stream-broker', 'stream-catalog', 'stream-params', 'stream-signals', 'switch', 'system', 'tamper', 'temperature-sensor', 'terminal-session', 'toast', 'training', 'update', 'user-management', 'vacuum-control', 'valve', 'vector-store', 'vibration', 'viewer-ui', 'water-heater', 'weather', 'webrtc-session', 'zone-analytics', 'zone-rules', 'zones'];
556
556
  /** Union of singleton capability names (literal string union). */
557
557
  export type SingletonCapabilityName = typeof SINGLETON_CAPABILITY_NAMES[number];
558
- /** Capability names whose mode is `collection` (34 caps). */
559
- export declare const COLLECTION_CAPABILITY_NAMES: readonly ['addon-pages-source', 'addon-routes', 'addon-widgets-source', 'auth-provider', 'broker', 'calendar-source', 'connection-test', 'custom-model-registry', 'data-store-provider', 'device-export', 'device-extension', 'device-provider', 'device-removal-hook', 'embedding-encoder', 'failure-contribution', 'llm', 'load-contribution', 'log-channels', 'log-destination', 'login-method', 'mesh-network', 'mqtt-broker', 'network-access', 'notification-output', 'oauth-integration', 'recording', 'smtp-provider', 'storage-evictable', 'storage-occupancy', 'storage-provider', 'training-provider', 'turn-provider', 'user-passkeys', 'videoclips'];
558
+ /** Capability names whose mode is `collection` (35 caps). */
559
+ export declare const COLLECTION_CAPABILITY_NAMES: readonly ['addon-pages-source', 'addon-routes', 'addon-widgets-source', 'auth-provider', 'broker', 'calendar-source', 'connection-test', 'custom-model-registry', 'data-store-provider', 'device-adoption', 'device-export', 'device-extension', 'device-provider', 'device-removal-hook', 'embedding-encoder', 'failure-contribution', 'llm', 'load-contribution', 'log-channels', 'log-destination', 'login-method', 'mesh-network', 'mqtt-broker', 'network-access', 'notification-output', 'oauth-integration', 'recording', 'smtp-provider', 'storage-evictable', 'storage-occupancy', 'storage-provider', 'training-provider', 'turn-provider', 'user-passkeys', 'videoclips'];
560
560
  /** Union of collection capability names (literal string union). */
561
561
  export type CollectionCapabilityName = typeof COLLECTION_CAPABILITY_NAMES[number];
562
562
  /** Capability mode lookup at runtime — mirrors the `.cap.ts` definitions. */
@@ -6,7 +6,7 @@
6
6
  * scope+access check inside `protectedProcedure` (see
7
7
  * `server/backend/src/api/trpc/trpc.middleware.ts`).
8
8
  *
9
- * Coverage: 1379 method paths across 179 capabilities.
9
+ * Coverage: 1383 method paths across 179 capabilities.
10
10
  */
11
11
  import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
12
12
  export interface MethodAccessRecord {
@@ -6,7 +6,7 @@
6
6
  * system-scope cap that takes a deviceId was previously never device-filtered
7
7
  * — see the generator header).
8
8
  *
9
- * Coverage: 544 methods carry a device reference, of which
9
+ * Coverage: 548 methods carry a device reference, of which
10
10
  * 179 are on SYSTEM-scope caps.
11
11
  *
12
12
  * Top-level fields, number arrays, and one-level arrays of objects carrying
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sleep = require("./sleep--L6qY125.js");
2
+ const require_sleep = require("./sleep-REHQvLV6.js");
3
3
  const require_event_category = require("./event-category-Hoe-mqbd.js");
4
4
  const require_composition = require("./composition-eoYYVfOp.js");
5
5
  const require_node_color = require("./node-color.js");
@@ -15962,7 +15962,11 @@ var deviceDiscoveryCapability = {
15962
15962
  //#region src/capabilities/device-adoption.cap.ts
15963
15963
  /**
15964
15964
  * `device-adoption` — generic discovery + adoption surface,
15965
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
15965
+ * system-scoped collection (one provider per integration addon), routed
15966
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
15967
+ * pin model as `connection-test`. The admin UI keeps using
15968
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
15969
+ * successor to `ha-discovery`:
15966
15970
  * keyed by `integrationId` (the addon resolves integrationId → broker
15967
15971
  * internally) rather than a connection-specific `brokerId`, and it
15968
15972
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -16127,7 +16131,7 @@ var ResyncResultSchema = zod.z.object({
16127
16131
  var deviceAdoptionCapability = {
16128
16132
  name: "device-adoption",
16129
16133
  scope: "system",
16130
- mode: "singleton",
16134
+ mode: "collection",
16131
16135
  status: {
16132
16136
  schema: AdoptionStatusSchema,
16133
16137
  kind: "poll"
@@ -37851,7 +37855,7 @@ var deviceManagerCapability = {
37851
37855
  auth: "admin"
37852
37856
  }),
37853
37857
  /** List candidate filter chips for an integration via its device-adoption
37854
- * provider — addonId-routed so it never hits the singleton shadow. */
37858
+ * provider — addonId-routed via the collection pin. */
37855
37859
  adoptionListCandidateFilters: require_sleep.method(zod.z.object({
37856
37860
  addonId: zod.z.string(),
37857
37861
  integrationId: zod.z.string()
@@ -61252,6 +61256,14 @@ var DishwasherStatusSchema = zod.z.object({
61252
61256
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
61253
61257
  halfLoad: zod.z.boolean(),
61254
61258
  hygienePlus: zod.z.boolean(),
61259
+ /** Extra dry option when the appliance exposes it. */
61260
+ extraDry: zod.z.boolean(),
61261
+ /** Intensive zone (lower basket) when the appliance exposes it. */
61262
+ intensiveZone: zod.z.boolean(),
61263
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
61264
+ varioSpeedPlus: zod.z.boolean(),
61265
+ /** Child lock (controls disabled on the appliance). */
61266
+ childLock: zod.z.boolean(),
61255
61267
  errorCode: zod.z.number().nullable(),
61256
61268
  errorLabel: zod.z.string().nullable(),
61257
61269
  lastFetchedAt: zod.z.number()
@@ -61303,6 +61315,34 @@ var dishwasherCapability = {
61303
61315
  kind: "mutation",
61304
61316
  auth: "protected"
61305
61317
  }),
61318
+ setExtraDry: require_sleep.method(zod.z.object({
61319
+ deviceId: zod.z.number().int().nonnegative(),
61320
+ on: zod.z.boolean()
61321
+ }), zod.z.void(), {
61322
+ kind: "mutation",
61323
+ auth: "protected"
61324
+ }),
61325
+ setIntensiveZone: require_sleep.method(zod.z.object({
61326
+ deviceId: zod.z.number().int().nonnegative(),
61327
+ on: zod.z.boolean()
61328
+ }), zod.z.void(), {
61329
+ kind: "mutation",
61330
+ auth: "protected"
61331
+ }),
61332
+ setVarioSpeedPlus: require_sleep.method(zod.z.object({
61333
+ deviceId: zod.z.number().int().nonnegative(),
61334
+ on: zod.z.boolean()
61335
+ }), zod.z.void(), {
61336
+ kind: "mutation",
61337
+ auth: "protected"
61338
+ }),
61339
+ setChildLock: require_sleep.method(zod.z.object({
61340
+ deviceId: zod.z.number().int().nonnegative(),
61341
+ on: zod.z.boolean()
61342
+ }), zod.z.void(), {
61343
+ kind: "mutation",
61344
+ auth: "protected"
61345
+ }),
61306
61346
  setOption: require_sleep.method(zod.z.object({
61307
61347
  deviceId: zod.z.number().int().nonnegative(),
61308
61348
  key: zod.z.string().min(1),
@@ -76658,6 +76698,7 @@ var CONTAINER_CHILD_PRIORITY = [
76658
76698
  "fan",
76659
76699
  "vacuum",
76660
76700
  "lawn-mower",
76701
+ "dishwasher",
76661
76702
  "light",
76662
76703
  "switch",
76663
76704
  "siren",
@@ -79809,6 +79850,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
79809
79850
  addonId: null,
79810
79851
  access: "create"
79811
79852
  },
79853
+ "dishwasher.setChildLock": {
79854
+ capName: "dishwasher",
79855
+ capScope: "device",
79856
+ addonId: null,
79857
+ access: "create"
79858
+ },
79859
+ "dishwasher.setExtraDry": {
79860
+ capName: "dishwasher",
79861
+ capScope: "device",
79862
+ addonId: null,
79863
+ access: "create"
79864
+ },
79812
79865
  "dishwasher.setHalfLoad": {
79813
79866
  capName: "dishwasher",
79814
79867
  capScope: "device",
@@ -79821,6 +79874,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
79821
79874
  addonId: null,
79822
79875
  access: "create"
79823
79876
  },
79877
+ "dishwasher.setIntensiveZone": {
79878
+ capName: "dishwasher",
79879
+ capScope: "device",
79880
+ addonId: null,
79881
+ access: "create"
79882
+ },
79824
79883
  "dishwasher.setOption": {
79825
79884
  capName: "dishwasher",
79826
79885
  capScope: "device",
@@ -79839,6 +79898,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
79839
79898
  addonId: null,
79840
79899
  access: "create"
79841
79900
  },
79901
+ "dishwasher.setVarioSpeedPlus": {
79902
+ capName: "dishwasher",
79903
+ capScope: "device",
79904
+ addonId: null,
79905
+ access: "create"
79906
+ },
79842
79907
  "dishwasher.start": {
79843
79908
  capName: "dishwasher",
79844
79909
  capScope: "device",
@@ -89900,6 +89965,16 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
89900
89965
  form: "single",
89901
89966
  optional: false
89902
89967
  }],
89968
+ "dishwasher.setChildLock": [{
89969
+ name: "deviceId",
89970
+ form: "single",
89971
+ optional: false
89972
+ }],
89973
+ "dishwasher.setExtraDry": [{
89974
+ name: "deviceId",
89975
+ form: "single",
89976
+ optional: false
89977
+ }],
89903
89978
  "dishwasher.setHalfLoad": [{
89904
89979
  name: "deviceId",
89905
89980
  form: "single",
@@ -89910,6 +89985,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
89910
89985
  form: "single",
89911
89986
  optional: false
89912
89987
  }],
89988
+ "dishwasher.setIntensiveZone": [{
89989
+ name: "deviceId",
89990
+ form: "single",
89991
+ optional: false
89992
+ }],
89913
89993
  "dishwasher.setOption": [{
89914
89994
  name: "deviceId",
89915
89995
  form: "single",
@@ -89925,6 +90005,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
89925
90005
  form: "single",
89926
90006
  optional: false
89927
90007
  }],
90008
+ "dishwasher.setVarioSpeedPlus": [{
90009
+ name: "deviceId",
90010
+ form: "single",
90011
+ optional: false
90012
+ }],
89928
90013
  "dishwasher.start": [{
89929
90014
  name: "deviceId",
89930
90015
  form: "single",
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as optionalMethod, $n as PEER_BYTES_CHUNK_BYTES, $r as omitTransientConfig, $t as REMOVE_LEAF, A as HF_REPO, An as RECORD_BATCH_MAX_BYTES, Ar as emitReadiness, At as makeProfileBrokerId, B as describeCustomActions, Bn as RECORD_SECRET_COLLECTION_PREFIX, Br as SECRET_CLEAR, Bt as settingsBrokersAdoptsFrom, Cn as RecordsError, Cr as globalSecretScope, Ct as ProfileRtspEntrySchema, D as createSliceHandle, Dn as asRecordsError, Dr as normalizeNodeId, Dt as StreamSourceSchema, E as createMirrorSource, En as UnknownRecordKindError, Er as parseSecretRef, Et as StreamSourceEntrySchema, F as DEVICE_CHILDREN_BATCH_MAX, Fn as RECORD_ID_MAX_LENGTH, Fr as collectHydratedFieldValues, Ft as SETTINGS_ARRAY_ADOPTS_PREFIX, G as DEVICE_STATUS_METHOD, Gn as createSecretsAccess, Gr as isSecretMarkerLike, Gt as RecordFieldPathSchema, H as adminUiCapability, Hn as RECORD_SWEEP_INTERVAL_MS, Hr as isSecretClear, Ht as entryBody, I as CALLER_STAMPED_CAPABILITIES, In as RECORD_MAX_DATA_BYTES, Ir as dehydrateConfigField, It as parseSettingsArrayAdoptsFrom, J as PROVIDER_PIN_FIELD, Jn as forgetKnownSecret, Jr as REDACTED_SECRET, Jt as RecordKindNameSchema, K as HISTORY_DEFAULT_MIN_INTERVAL_MS, Kn as MIN_SCRUBBED_LENGTH, Kr as makeSecretMarker, Kt as RecordIndexSchema, L as withoutCallerStamp, Ln as RECORD_MAX_INDEXES, Lr as dehydrateSchema, Lt as settingsArrayAdoptsFrom, M as RawStateResultSchema, Mn as RECORD_DATABASES, Mr as WELL_KNOWN_TABS, Mt as parseProfileBrokerId, N as deviceOpsCapability, Nn as RECORD_DEFAULT_MAX_DATA_BYTES, Nr as WELL_KNOWN_TAB_MAP, Nt as selectAssignedProfileSlots, O as DEFAULT_TOKEN_EXPIRY, On as recordsErrorFromMessage, Or as createDurableState, Ot as SubscribeAudioChunksInputSchema, P as viewerUiCapability, Pn as RECORD_DELETE_BATCH, Pr as collectHydratedFieldEntries, Pt as makeInMemoryRecords, Q as method, Qn as shortSecretRefHash, Qr as isSecretConfigField, Qt as defineRecordKinds, R as customAction, Rn as RECORD_MAX_INDEX_FIELDS, Rr as hydrateSchema, Rt as SETTINGS_BROKERS_ADOPTS_PREFIX, S as invokeTrpcLeaf, Sn as RecordUniqueViolationError, Sr as formatSecretScope, St as FrameHandleSchema, T as createLazyTrpcSource, Tn as UnindexedFilterError, Tr as normalizeSecretOwner, Tt as ProfileSlotStatusSchema, U as DEFAULT_RUNTIME_STATE_DURABILITY, Un as resolveSecretViewsIn, Ur as isSecretFieldView, Ut as createRecordsAccess, V as deviceCustomAction, Vn as RECORD_SETTINGS_MAX_ROWS, Vr as classifySecretWrite, Vt as defineEntryKind, W as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Wn as REVALIDATE_AFTER_MS, Wr as isSecretMarker, Wt as EntryDescriptorSchema, X as expandCapMethods, Xn as registerKnownSecret, Xr as collectSecretConfigKeys, Xt as assertValidDeclaration, Y as event, Yn as knownSecretCount, Yr as collectKeychainStoredKeys, Yt as RecordRetentionSchema, Z as isDeviceConfigCap, Zn as scrubKnownSecrets, Zr as isKeychainStoredField, Zt as declarationsOf, _ as readErrorI18n, _n as PlaintextSecretError, _r as resolveSecretMarkers, _t as CamProfileSchema, a as asJsonArray, an as recordSecretRef, ar as SHARE_VIEW_KINDS, at as toNodeId, b as isDeviceScopedCap, bn as RecordSecretUnavailableError, br as arrayItemFieldPath, bt as CameraStreamSchema, c as asString, cn as collectZodSecretPaths, cr as classifyStoreError, ct as ReadinessTimeoutError, d as parseJsonUnknown, dn as BatchTooLargeError, dr as parseSecretStatePath, dt as scopeKey, ei as schemaDeclaresAnyField, en as collectSecretLeaves, er as PEER_BYTES_MAX_OUTSTANDING, et as resolveCapMount, f as hfModelUrl, fn as DeclarationRefusedError, fr as secretTreeFromPaths, ft as AudioChunkFormatSchema, g as ErrorI18nPayloadSchema, gn as NoCallerError, gr as isSecretRefOwnedBy, gt as CAM_PROFILE_ORDER, h as ErrorCodeSchema, hn as InvalidRecordError, hr as collectSecretMarkerRefs, ht as BrokerStatusSchema, i as asBoolean, ii as isAudioChunkFormat, in as recordSecretCollection, ir as DATAPLANE_SECRET_HEADER, it as readNodePin, j as RUNTIME_DEFAULTS, jn as RECORD_CLASSES, jr as isEvent, jt as makeSourceBrokerId, k as HF_BASE_URL, kn as RECORD_BATCH_MAX, kr as createEvent, kt as SubscribeAudioChunksResultSchema, l as parseJsonArray, ln as isZodSecret, lr as normalizeAddonInitResult, lt as emitDownForOwnedCaps, m as CamstackError, mn as ForeignSecretMarkerError, mr as KeychainWriteRefusedError, mt as BrokerStatsSchema, n as sleepCancellable, ni as audioChunkBytesPerSample, nn as parseSecretPath, nr as PEER_BYTES_TICKET_TTL_MS, nt as CAP_NODE_PIN_CONTEXT_KEY, o as asJsonObject, on as secretArrayPrefixes, or as DisposerChain, ot as MODEL_FORMATS, p as BOOT_RECOVERY_BACKOFF_MS, pn as FilterRequiredError, pr as secretTreeFromSchema, pt as AudioStreamPickSchema, q as HISTORY_UNIT_LABELS, qn as clearKnownSecrets, qr as toSecretFieldView, qt as RecordKindDeclarationSchema, r as maskUrlCredentials, ri as expandAudioChunkToF32le, rn as recordArrayItemPath, rr as PeerBytesTicketSchema, rt as nodePin, s as asNumber, sn as SECRET_META, sr as BaseAddon, st as ReadinessRegistry, t as sleep, ti as AUDIO_CHUNK_FORMATS, tn as mapSecretLeaves, tr as PEER_BYTES_STALL_MS, tt as systemMethod, u as parseJsonObject, un as AdoptionPendingError, ur as mergeSecretStatePaths, ut as readinessKey, v as userError, vn as RECORDS_ERROR_CODES, vr as transformSecretWrite, vt as CamStreamKindSchema, w as createEventBusSliceSource, wn as RevConflictError, wr as isSecretRef, wt as ProfileSlotSchema, x as createDeviceProxy, xn as RecordTooLargeError, xr as buildSecretRef, xt as DecodedAudioChunkSchema, y as DEVICE_SCOPED_CAPS, yn as RecordNotFoundError, yr as SECRET_REF_SCHEME, yt as CamStreamResolutionSchema, z as defineCustomActions, zn as RECORD_QUERY_MAX, zr as resolveHydratedFieldValue, zt as parseSettingsBrokersAdoptsFrom } from "./sleep-BOjuyoPC.mjs";
1
+ import { $ as optionalMethod, $n as PEER_BYTES_CHUNK_BYTES, $r as omitTransientConfig, $t as REMOVE_LEAF, A as HF_REPO, An as RECORD_BATCH_MAX_BYTES, Ar as emitReadiness, At as makeProfileBrokerId, B as describeCustomActions, Bn as RECORD_SECRET_COLLECTION_PREFIX, Br as SECRET_CLEAR, Bt as settingsBrokersAdoptsFrom, Cn as RecordsError, Cr as globalSecretScope, Ct as ProfileRtspEntrySchema, D as createSliceHandle, Dn as asRecordsError, Dr as normalizeNodeId, Dt as StreamSourceSchema, E as createMirrorSource, En as UnknownRecordKindError, Er as parseSecretRef, Et as StreamSourceEntrySchema, F as DEVICE_CHILDREN_BATCH_MAX, Fn as RECORD_ID_MAX_LENGTH, Fr as collectHydratedFieldValues, Ft as SETTINGS_ARRAY_ADOPTS_PREFIX, G as DEVICE_STATUS_METHOD, Gn as createSecretsAccess, Gr as isSecretMarkerLike, Gt as RecordFieldPathSchema, H as adminUiCapability, Hn as RECORD_SWEEP_INTERVAL_MS, Hr as isSecretClear, Ht as entryBody, I as CALLER_STAMPED_CAPABILITIES, In as RECORD_MAX_DATA_BYTES, Ir as dehydrateConfigField, It as parseSettingsArrayAdoptsFrom, J as PROVIDER_PIN_FIELD, Jn as forgetKnownSecret, Jr as REDACTED_SECRET, Jt as RecordKindNameSchema, K as HISTORY_DEFAULT_MIN_INTERVAL_MS, Kn as MIN_SCRUBBED_LENGTH, Kr as makeSecretMarker, Kt as RecordIndexSchema, L as withoutCallerStamp, Ln as RECORD_MAX_INDEXES, Lr as dehydrateSchema, Lt as settingsArrayAdoptsFrom, M as RawStateResultSchema, Mn as RECORD_DATABASES, Mr as WELL_KNOWN_TABS, Mt as parseProfileBrokerId, N as deviceOpsCapability, Nn as RECORD_DEFAULT_MAX_DATA_BYTES, Nr as WELL_KNOWN_TAB_MAP, Nt as selectAssignedProfileSlots, O as DEFAULT_TOKEN_EXPIRY, On as recordsErrorFromMessage, Or as createDurableState, Ot as SubscribeAudioChunksInputSchema, P as viewerUiCapability, Pn as RECORD_DELETE_BATCH, Pr as collectHydratedFieldEntries, Pt as makeInMemoryRecords, Q as method, Qn as shortSecretRefHash, Qr as isSecretConfigField, Qt as defineRecordKinds, R as customAction, Rn as RECORD_MAX_INDEX_FIELDS, Rr as hydrateSchema, Rt as SETTINGS_BROKERS_ADOPTS_PREFIX, S as invokeTrpcLeaf, Sn as RecordUniqueViolationError, Sr as formatSecretScope, St as FrameHandleSchema, T as createLazyTrpcSource, Tn as UnindexedFilterError, Tr as normalizeSecretOwner, Tt as ProfileSlotStatusSchema, U as DEFAULT_RUNTIME_STATE_DURABILITY, Un as resolveSecretViewsIn, Ur as isSecretFieldView, Ut as createRecordsAccess, V as deviceCustomAction, Vn as RECORD_SETTINGS_MAX_ROWS, Vr as classifySecretWrite, Vt as defineEntryKind, W as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Wn as REVALIDATE_AFTER_MS, Wr as isSecretMarker, Wt as EntryDescriptorSchema, X as expandCapMethods, Xn as registerKnownSecret, Xr as collectSecretConfigKeys, Xt as assertValidDeclaration, Y as event, Yn as knownSecretCount, Yr as collectKeychainStoredKeys, Yt as RecordRetentionSchema, Z as isDeviceConfigCap, Zn as scrubKnownSecrets, Zr as isKeychainStoredField, Zt as declarationsOf, _ as readErrorI18n, _n as PlaintextSecretError, _r as resolveSecretMarkers, _t as CamProfileSchema, a as asJsonArray, an as recordSecretRef, ar as SHARE_VIEW_KINDS, at as toNodeId, b as isDeviceScopedCap, bn as RecordSecretUnavailableError, br as arrayItemFieldPath, bt as CameraStreamSchema, c as asString, cn as collectZodSecretPaths, cr as classifyStoreError, ct as ReadinessTimeoutError, d as parseJsonUnknown, dn as BatchTooLargeError, dr as parseSecretStatePath, dt as scopeKey, ei as schemaDeclaresAnyField, en as collectSecretLeaves, er as PEER_BYTES_MAX_OUTSTANDING, et as resolveCapMount, f as hfModelUrl, fn as DeclarationRefusedError, fr as secretTreeFromPaths, ft as AudioChunkFormatSchema, g as ErrorI18nPayloadSchema, gn as NoCallerError, gr as isSecretRefOwnedBy, gt as CAM_PROFILE_ORDER, h as ErrorCodeSchema, hn as InvalidRecordError, hr as collectSecretMarkerRefs, ht as BrokerStatusSchema, i as asBoolean, ii as isAudioChunkFormat, in as recordSecretCollection, ir as DATAPLANE_SECRET_HEADER, it as readNodePin, j as RUNTIME_DEFAULTS, jn as RECORD_CLASSES, jr as isEvent, jt as makeSourceBrokerId, k as HF_BASE_URL, kn as RECORD_BATCH_MAX, kr as createEvent, kt as SubscribeAudioChunksResultSchema, l as parseJsonArray, ln as isZodSecret, lr as normalizeAddonInitResult, lt as emitDownForOwnedCaps, m as CamstackError, mn as ForeignSecretMarkerError, mr as KeychainWriteRefusedError, mt as BrokerStatsSchema, n as sleepCancellable, ni as audioChunkBytesPerSample, nn as parseSecretPath, nr as PEER_BYTES_TICKET_TTL_MS, nt as CAP_NODE_PIN_CONTEXT_KEY, o as asJsonObject, on as secretArrayPrefixes, or as DisposerChain, ot as MODEL_FORMATS, p as BOOT_RECOVERY_BACKOFF_MS, pn as FilterRequiredError, pr as secretTreeFromSchema, pt as AudioStreamPickSchema, q as HISTORY_UNIT_LABELS, qn as clearKnownSecrets, qr as toSecretFieldView, qt as RecordKindDeclarationSchema, r as maskUrlCredentials, ri as expandAudioChunkToF32le, rn as recordArrayItemPath, rr as PeerBytesTicketSchema, rt as nodePin, s as asNumber, sn as SECRET_META, sr as BaseAddon, st as ReadinessRegistry, t as sleep, ti as AUDIO_CHUNK_FORMATS, tn as mapSecretLeaves, tr as PEER_BYTES_STALL_MS, tt as systemMethod, u as parseJsonObject, un as AdoptionPendingError, ur as mergeSecretStatePaths, ut as readinessKey, v as userError, vn as RECORDS_ERROR_CODES, vr as transformSecretWrite, vt as CamStreamKindSchema, w as createEventBusSliceSource, wn as RevConflictError, wr as isSecretRef, wt as ProfileSlotSchema, x as createDeviceProxy, xn as RecordTooLargeError, xr as buildSecretRef, xt as DecodedAudioChunkSchema, y as DEVICE_SCOPED_CAPS, yn as RecordNotFoundError, yr as SECRET_REF_SCHEME, yt as CamStreamResolutionSchema, z as defineCustomActions, zn as RECORD_QUERY_MAX, zr as resolveHydratedFieldValue, zt as parseSettingsBrokersAdoptsFrom } from "./sleep-BegKjwUu.mjs";
2
2
  import { i as publicEventCategories, n as OWNER_ONLY_EVENT_CATEGORIES, r as isOwnerOnlyEventCategory, t as EventCategory } from "./event-category-BvOFi6PY.mjs";
3
3
  import { $ as MAX_EXPRESSION_AST_NODES, A as compositionFeatureEnabled, At as Fmp4BoxSplitter, B as createStatefulExpressionMemory, Bt as pickVideoEncoder, C as CompositionTargetSchema, Ct as FFMPEG_PATH_ENV, D as MAX_COMPOSITION_ITEMS, E as MAX_COMPOSITION_FIELDS_PER_FEATURE, F as featureFieldEntries, Ft as buildInputArgs, G as createExpressionScope, H as evaluateStatefulExpressionCall, I as featureSources, It as buildVideoArgs, J as compileExpressionSafe, K as evaluateAst, L as fieldReads, Lt as invocationFromEncodeProfile, M as compositionReadKey, Mt as audioPlanFromEncodeProfile, N as compositionSliceKey, Nt as buildAudioArgs, O as composedDeviceRef, P as compositionSourceKey, Pt as buildFfmpegArgs, Q as EXPRESSION_IDENTIFIER_RE, R as EXPRESSION_INJECTED_NOW, Rt as isSoftwareDecode, S as CompositionSourceRefSchema, St as sliceChangedAt, T as MAX_COMPOSITION_FEATURES, U as toExpressionValue, V as evaluateExpressionSource, Vt as resolveStreamMaps, W as validateExpressionSource, X as tokenize, Y as parseExpression, Z as EXPRESSION_COMPILE_CACHE_CAPACITY, _ as CompositionItemEntrySchema, _t as SOURCE_DEVICE_TYPES, a as CUSTOMIZATION_BLOCK_NAME_PREFIX, at as EXPRESSION_BUILTINS, b as CompositionPassthroughFeatureSchema, bt as isSourceCap, c as CompositionCommandTargetSchema, ct as evaluateCount, d as CompositionFeatureSchema, dt as ExpressionEvalError, et as MAX_EXPRESSION_BINDINGS, f as CompositionFieldReadSchema, ft as ExpressionParseError, g as CompositionFromSourceSchema, gt as SOURCE_CAP_CHANGED_AT_FIELD, h as CompositionForwardCommandSchema, ht as SOURCE_CAP_ACTIVE_FIELD, i as COMPOSITION_ITEM_KEY_RE, it as RESERVED_BINDING_NAMES, j as compositionItemFieldPath, jt as AUDIO_PRESETS, k as composedDeviceStableId, kt as canonicalHash, l as CompositionExistingTargetSchema, lt as evaluateRose, m as CompositionFieldsFeatureSchema, mt as SOURCE_CAPS, n as COMPOSER_ADDON_ID, nt as MAX_EXPRESSION_EVAL_STEPS, o as CompositionBindingSchema, ot as EXPRESSION_BUILTIN_NAMES, p as CompositionFieldSourceSchema, pt as DEFAULT_FIRST_SIGHTING_FRESHNESS_MS, q as compileExpression, r as COMPOSITION_ITEM_ARRAY_PATH, rt as MAX_EXPRESSION_SOURCE_LENGTH, s as CompositionCodeSourceSchema, st as disarmRoseMemory, t as COMPOSED_DEVICE_STABLE_ID_PREFIX, tt as MAX_EXPRESSION_CALL_ARGS, u as CompositionExpressionSourceSchema, ut as isStatefulBuiltin, v as CompositionLiteralBindingSchema, vt as evaluateSensorEdge, w as MAX_COMPOSITION_CODE_LENGTH, x as CompositionSchema, xt as sliceActiveValue, y as CompositionNewTargetSchema, yt as evaluateSensorLevelEdge, z as cloneStatefulExpressionMemory, zt as logBannerArgs } from "./composition-CB6PMT9p.mjs";
4
4
  import { NODE_COLOR_IDS, NodeColorIdSchema, assignNodeColorId } from "./node-color.mjs";
@@ -15961,7 +15961,11 @@ var deviceDiscoveryCapability = {
15961
15961
  //#region src/capabilities/device-adoption.cap.ts
15962
15962
  /**
15963
15963
  * `device-adoption` — generic discovery + adoption surface,
15964
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
15964
+ * system-scoped collection (one provider per integration addon), routed
15965
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
15966
+ * pin model as `connection-test`. The admin UI keeps using
15967
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
15968
+ * successor to `ha-discovery`:
15965
15969
  * keyed by `integrationId` (the addon resolves integrationId → broker
15966
15970
  * internally) rather than a connection-specific `brokerId`, and it
15967
15971
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -16126,7 +16130,7 @@ var ResyncResultSchema = z.object({
16126
16130
  var deviceAdoptionCapability = {
16127
16131
  name: "device-adoption",
16128
16132
  scope: "system",
16129
- mode: "singleton",
16133
+ mode: "collection",
16130
16134
  status: {
16131
16135
  schema: AdoptionStatusSchema,
16132
16136
  kind: "poll"
@@ -37850,7 +37854,7 @@ var deviceManagerCapability = {
37850
37854
  auth: "admin"
37851
37855
  }),
37852
37856
  /** List candidate filter chips for an integration via its device-adoption
37853
- * provider — addonId-routed so it never hits the singleton shadow. */
37857
+ * provider — addonId-routed via the collection pin. */
37854
37858
  adoptionListCandidateFilters: method(z.object({
37855
37859
  addonId: z.string(),
37856
37860
  integrationId: z.string()
@@ -61251,6 +61255,14 @@ var DishwasherStatusSchema = z.object({
61251
61255
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
61252
61256
  halfLoad: z.boolean(),
61253
61257
  hygienePlus: z.boolean(),
61258
+ /** Extra dry option when the appliance exposes it. */
61259
+ extraDry: z.boolean(),
61260
+ /** Intensive zone (lower basket) when the appliance exposes it. */
61261
+ intensiveZone: z.boolean(),
61262
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
61263
+ varioSpeedPlus: z.boolean(),
61264
+ /** Child lock (controls disabled on the appliance). */
61265
+ childLock: z.boolean(),
61254
61266
  errorCode: z.number().nullable(),
61255
61267
  errorLabel: z.string().nullable(),
61256
61268
  lastFetchedAt: z.number()
@@ -61302,6 +61314,34 @@ var dishwasherCapability = {
61302
61314
  kind: "mutation",
61303
61315
  auth: "protected"
61304
61316
  }),
61317
+ setExtraDry: method(z.object({
61318
+ deviceId: z.number().int().nonnegative(),
61319
+ on: z.boolean()
61320
+ }), z.void(), {
61321
+ kind: "mutation",
61322
+ auth: "protected"
61323
+ }),
61324
+ setIntensiveZone: method(z.object({
61325
+ deviceId: z.number().int().nonnegative(),
61326
+ on: z.boolean()
61327
+ }), z.void(), {
61328
+ kind: "mutation",
61329
+ auth: "protected"
61330
+ }),
61331
+ setVarioSpeedPlus: method(z.object({
61332
+ deviceId: z.number().int().nonnegative(),
61333
+ on: z.boolean()
61334
+ }), z.void(), {
61335
+ kind: "mutation",
61336
+ auth: "protected"
61337
+ }),
61338
+ setChildLock: method(z.object({
61339
+ deviceId: z.number().int().nonnegative(),
61340
+ on: z.boolean()
61341
+ }), z.void(), {
61342
+ kind: "mutation",
61343
+ auth: "protected"
61344
+ }),
61305
61345
  setOption: method(z.object({
61306
61346
  deviceId: z.number().int().nonnegative(),
61307
61347
  key: z.string().min(1),
@@ -76657,6 +76697,7 @@ var CONTAINER_CHILD_PRIORITY = [
76657
76697
  "fan",
76658
76698
  "vacuum",
76659
76699
  "lawn-mower",
76700
+ "dishwasher",
76660
76701
  "light",
76661
76702
  "switch",
76662
76703
  "siren",
@@ -79808,6 +79849,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
79808
79849
  addonId: null,
79809
79850
  access: "create"
79810
79851
  },
79852
+ "dishwasher.setChildLock": {
79853
+ capName: "dishwasher",
79854
+ capScope: "device",
79855
+ addonId: null,
79856
+ access: "create"
79857
+ },
79858
+ "dishwasher.setExtraDry": {
79859
+ capName: "dishwasher",
79860
+ capScope: "device",
79861
+ addonId: null,
79862
+ access: "create"
79863
+ },
79811
79864
  "dishwasher.setHalfLoad": {
79812
79865
  capName: "dishwasher",
79813
79866
  capScope: "device",
@@ -79820,6 +79873,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
79820
79873
  addonId: null,
79821
79874
  access: "create"
79822
79875
  },
79876
+ "dishwasher.setIntensiveZone": {
79877
+ capName: "dishwasher",
79878
+ capScope: "device",
79879
+ addonId: null,
79880
+ access: "create"
79881
+ },
79823
79882
  "dishwasher.setOption": {
79824
79883
  capName: "dishwasher",
79825
79884
  capScope: "device",
@@ -79838,6 +79897,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
79838
79897
  addonId: null,
79839
79898
  access: "create"
79840
79899
  },
79900
+ "dishwasher.setVarioSpeedPlus": {
79901
+ capName: "dishwasher",
79902
+ capScope: "device",
79903
+ addonId: null,
79904
+ access: "create"
79905
+ },
79841
79906
  "dishwasher.start": {
79842
79907
  capName: "dishwasher",
79843
79908
  capScope: "device",
@@ -89899,6 +89964,16 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
89899
89964
  form: "single",
89900
89965
  optional: false
89901
89966
  }],
89967
+ "dishwasher.setChildLock": [{
89968
+ name: "deviceId",
89969
+ form: "single",
89970
+ optional: false
89971
+ }],
89972
+ "dishwasher.setExtraDry": [{
89973
+ name: "deviceId",
89974
+ form: "single",
89975
+ optional: false
89976
+ }],
89902
89977
  "dishwasher.setHalfLoad": [{
89903
89978
  name: "deviceId",
89904
89979
  form: "single",
@@ -89909,6 +89984,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
89909
89984
  form: "single",
89910
89985
  optional: false
89911
89986
  }],
89987
+ "dishwasher.setIntensiveZone": [{
89988
+ name: "deviceId",
89989
+ form: "single",
89990
+ optional: false
89991
+ }],
89912
89992
  "dishwasher.setOption": [{
89913
89993
  name: "deviceId",
89914
89994
  form: "single",
@@ -89924,6 +90004,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
89924
90004
  form: "single",
89925
90005
  optional: false
89926
90006
  }],
90007
+ "dishwasher.setVarioSpeedPlus": [{
90008
+ name: "deviceId",
90009
+ form: "single",
90010
+ optional: false
90011
+ }],
89927
90012
  "dishwasher.start": [{
89928
90013
  name: "deviceId",
89929
90014
  form: "single",
@@ -6157,14 +6157,19 @@ function addonSliceHandleApi(api) {
6157
6157
  }
6158
6158
  //#endregion
6159
6159
  //#region src/helpers/trpc-leaf.ts
6160
+ function isCapRecord(value) {
6161
+ if (value === null || Array.isArray(value)) return false;
6162
+ const kind = typeof value;
6163
+ return kind === "object" || kind === "function";
6164
+ }
6160
6165
  function isTrpcProcedureLeaf(value) {
6161
- if (typeof value !== "object" || value === null) return false;
6166
+ if (!isCapRecord(value)) return false;
6162
6167
  const record = value;
6163
- return (typeof record.query === "function" || typeof record.mutate === "function" || typeof record.subscribe === "function") && !Array.isArray(value);
6168
+ return typeof record.query === "function" || typeof record.mutate === "function" || typeof record.subscribe === "function";
6164
6169
  }
6165
6170
  function readCapRecord(api, capProp) {
6166
6171
  const cap = Reflect.get(api, capProp);
6167
- if (typeof cap !== "object" || cap === null || Array.isArray(cap)) return void 0;
6172
+ if (!isCapRecord(cap)) return void 0;
6168
6173
  return cap;
6169
6174
  }
6170
6175
  function readTrpcLeaf(api, capProp, method) {
@@ -6388,6 +6393,10 @@ function createDeviceProxy(api, binding, opts) {
6388
6393
  setPower: (input) => dispatch("dishwasher", "dishwasher", "setPower", "mutation", input),
6389
6394
  setHalfLoad: (input) => dispatch("dishwasher", "dishwasher", "setHalfLoad", "mutation", input),
6390
6395
  setHygienePlus: (input) => dispatch("dishwasher", "dishwasher", "setHygienePlus", "mutation", input),
6396
+ setExtraDry: (input) => dispatch("dishwasher", "dishwasher", "setExtraDry", "mutation", input),
6397
+ setIntensiveZone: (input) => dispatch("dishwasher", "dishwasher", "setIntensiveZone", "mutation", input),
6398
+ setVarioSpeedPlus: (input) => dispatch("dishwasher", "dishwasher", "setVarioSpeedPlus", "mutation", input),
6399
+ setChildLock: (input) => dispatch("dishwasher", "dishwasher", "setChildLock", "mutation", input),
6391
6400
  setOption: (input) => dispatch("dishwasher", "dishwasher", "setOption", "mutation", input),
6392
6401
  getStatus: (input) => dispatch("dishwasher", "dishwasher", "getStatus", "query", input)
6393
6402
  };
@@ -6157,14 +6157,19 @@ function addonSliceHandleApi(api) {
6157
6157
  }
6158
6158
  //#endregion
6159
6159
  //#region src/helpers/trpc-leaf.ts
6160
+ function isCapRecord(value) {
6161
+ if (value === null || Array.isArray(value)) return false;
6162
+ const kind = typeof value;
6163
+ return kind === "object" || kind === "function";
6164
+ }
6160
6165
  function isTrpcProcedureLeaf(value) {
6161
- if (typeof value !== "object" || value === null) return false;
6166
+ if (!isCapRecord(value)) return false;
6162
6167
  const record = value;
6163
- return (typeof record.query === "function" || typeof record.mutate === "function" || typeof record.subscribe === "function") && !Array.isArray(value);
6168
+ return typeof record.query === "function" || typeof record.mutate === "function" || typeof record.subscribe === "function";
6164
6169
  }
6165
6170
  function readCapRecord(api, capProp) {
6166
6171
  const cap = Reflect.get(api, capProp);
6167
- if (typeof cap !== "object" || cap === null || Array.isArray(cap)) return void 0;
6172
+ if (!isCapRecord(cap)) return void 0;
6168
6173
  return cap;
6169
6174
  }
6170
6175
  function readTrpcLeaf(api, capProp, method) {
@@ -6388,6 +6393,10 @@ function createDeviceProxy(api, binding, opts) {
6388
6393
  setPower: (input) => dispatch("dishwasher", "dishwasher", "setPower", "mutation", input),
6389
6394
  setHalfLoad: (input) => dispatch("dishwasher", "dishwasher", "setHalfLoad", "mutation", input),
6390
6395
  setHygienePlus: (input) => dispatch("dishwasher", "dishwasher", "setHygienePlus", "mutation", input),
6396
+ setExtraDry: (input) => dispatch("dishwasher", "dishwasher", "setExtraDry", "mutation", input),
6397
+ setIntensiveZone: (input) => dispatch("dishwasher", "dishwasher", "setIntensiveZone", "mutation", input),
6398
+ setVarioSpeedPlus: (input) => dispatch("dishwasher", "dishwasher", "setVarioSpeedPlus", "mutation", input),
6399
+ setChildLock: (input) => dispatch("dishwasher", "dishwasher", "setChildLock", "mutation", input),
6391
6400
  setOption: (input) => dispatch("dishwasher", "dishwasher", "setOption", "mutation", input),
6392
6401
  getStatus: (input) => dispatch("dishwasher", "dishwasher", "getStatus", "query", input)
6393
6402
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/types",
3
- "version": "1.2.383",
3
+ "version": "1.2.384",
4
4
  "description": "Shared types, interfaces, and model catalogs for the CamStack detection ecosystem",
5
5
  "keywords": [
6
6
  "camstack",