@camstack/types 1.2.437 → 1.2.439

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 (36) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/addon.js +2 -2
  3. package/dist/addon.mjs +2 -2
  4. package/dist/capabilities/alerts.cap.d.ts +36 -0
  5. package/dist/capabilities/index.d.ts +3 -1
  6. package/dist/capabilities/ir-transmitter.cap.d.ts +84 -0
  7. package/dist/capabilities/pet-feeder.cap.d.ts +12 -0
  8. package/dist/client.js +5 -0
  9. package/dist/client.mjs +5 -0
  10. package/dist/{composition-WNkEpwkF.js → composition-DCmtFE-X.js} +1 -1
  11. package/dist/{composition-DwA0uVW5.mjs → composition-DpFv_J6D.mjs} +1 -1
  12. package/dist/device/cap-vocabulary/entries/actuators.d.ts +1 -1
  13. package/dist/device/device-type.d.ts +4 -1
  14. package/dist/{err-msg-DIorGYeC.mjs → err-msg-BCdlR2Li.mjs} +3 -0
  15. package/dist/{err-msg-U7lLUMNz.js → err-msg-COHgq7Mb.js} +3 -0
  16. package/dist/generated/addon-api.d.ts +22 -0
  17. package/dist/generated/addon-cap-facts.d.ts +1 -1
  18. package/dist/generated/capability-router-map.d.ts +5 -2
  19. package/dist/generated/device-proxy.d.ts +2 -0
  20. package/dist/generated/device-scoped-caps.d.ts +1 -1
  21. package/dist/generated/method-access-map.d.ts +1 -1
  22. package/dist/generated/method-device-selectors.d.ts +1 -1
  23. package/dist/index.d.ts +1 -0
  24. package/dist/index.js +320 -5
  25. package/dist/index.mjs +308 -6
  26. package/dist/ir/index.d.ts +5 -0
  27. package/dist/ir/ir-error.d.ts +6 -0
  28. package/dist/ir/ir-payload.d.ts +23 -0
  29. package/dist/ir/ir-timings.d.ts +17 -0
  30. package/dist/ir/pronto.d.ts +10 -0
  31. package/dist/ir/smartir.d.ts +31 -0
  32. package/dist/node.js +2 -2
  33. package/dist/node.mjs +2 -2
  34. package/dist/{sleep-Crlmu_tO.mjs → sleep-BAvUCi_2.mjs} +13 -1
  35. package/dist/{sleep-DHitF_e4.js → sleep-g6ZjBHBL.js} +13 -1
  36. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.2.439] - 2026-10-28
11
+
12
+ ### Changed
13
+
14
+ - An alert action can now run an addon's custom action as well as link to a page
15
+
16
+ ## [1.2.438] - 2026-10-28
17
+
18
+ ### Changed
19
+
20
+ - A pet feeder shows whether it runs on mains or on its battery
21
+ - Pure IR/RF codecs: pulse-train and transmit-settings schemas, Pronto decoding and SmartIR media_player import.
22
+ - Added the ir-transmitter capability: send an infrared or RF pulse train with per-call settings.
23
+
10
24
  ## [1.2.437] - 2026-10-28
11
25
 
12
26
  ### Changed
package/dist/addon.js CHANGED
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sleep = require("./sleep-DHitF_e4.js");
2
+ const require_sleep = require("./sleep-g6ZjBHBL.js");
3
3
  const require_event_category = require("./event-category-E17zaHjN.js");
4
- const require_err_msg = require("./err-msg-U7lLUMNz.js");
4
+ const require_err_msg = require("./err-msg-COHgq7Mb.js");
5
5
  //#region src/generated/cap-input-defaults.ts
6
6
  /**
7
7
  * AUTO-GENERATED by scripts/generate-cap-input-defaults.ts — DO NOT EDIT.
package/dist/addon.mjs CHANGED
@@ -1,6 +1,6 @@
1
- import { $ as expandCapMethods, $n as REVALIDATE_AFTER_MS, $r as isSecretMarker, $t as RecordFieldPathSchema, A as HF_REPO, An as RecordUniqueViolationError, Ar as buildSecretRef, B as withoutCallerStamp, Bn as RECORD_CLASSES, C as addonSliceHandleApi, Cn as InvalidRecordError, Dn as RecordNotFoundError, En as RECORDS_ERROR_CODES, Fn as UnknownRecordKindError, Fr as parseSecretRef, G as adminUiCapability, Gn as RECORD_MAX_DATA_BYTES, Hn as RECORD_DEFAULT_MAX_DATA_BYTES, I as deviceOpsCapability, In as asRecordsError, Jn as RECORD_QUERY_MAX, Jt as defineEntryKind, Kn as RECORD_MAX_INDEXES, L as viewerUiCapability, Ln as recordsErrorFromMessage, M as CAP_ADVANCE_FIELDS, Mn as RevConflictError, Mr as globalSecretScope, Nn as TransactRefusedError, Nr as isSecretRef, On as RecordSecretUnavailableError, Or as SECRET_REF_SCHEME, P as CAP_STATE_LEAVES, Pn as UnindexedFilterError, Pr as normalizeSecretOwner, Qn as resolveSecretViewsIn, Qr as isSecretFieldView, Qt as EntryDescriptorSchema, R as DEVICE_CHILDREN_BATCH_MAX, Rn as RECORD_BATCH_MAX, Rr as createEvent, Sn as ForeignSecretMarkerError, Tn as PlaintextSecretError, U as describeCustomActions, Un as RECORD_DELETE_BATCH, Vn as RECORD_DATABASES, Wn as RECORD_ID_MAX_LENGTH, Xn as RECORD_SETTINGS_MAX_ROWS, Xr as classifySecretWrite, Xt as createRecordsAccess, Yn as RECORD_SECRET_COLLECTION_PREFIX, Yr as SECRET_CLEAR, Yt as entryBody, Zn as RECORD_SWEEP_INTERVAL_MS, Zr as isSecretClear, Zt as assertTransactScope, _ as readErrorI18n, _n as collectZodSecretPaths, an as assertValidDeclaration, ar as registerKnownSecret, b as isDeviceScopedCap, bn as DeclarationRefusedError, c as asString, cn as REMOVE_LEAF, cr as PEER_BYTES_CHUNK_BYTES, ct as readNodePin, d as parseJsonUnknown, dn as parseSecretPath, dr as PEER_BYTES_TICKET_TTL_MS, dt as ReadinessRegistry, ei as isSecretMarkerLike, en as RecordIndexSchema, er as createSecretsAccess, f as hfModelUrl, fn as recordArrayItemPath, ft as ReadinessTimeoutError, g as ErrorI18nPayloadSchema, gr as BaseAddon, hn as secretArrayPrefixes, hr as DisposerChain, ht as scopeKey, in as StoredRecordKindDeclarationSchema, ir as knownSecretCount, jn as RecordsError, jr as formatSecretScope, kn as RecordTooLargeError, kr as arrayItemFieldPath, ln as collectSecretLeaves, lr as PEER_BYTES_MAX_OUTSTANDING, mn as recordSecretRef, ni as toSecretFieldView, nn as RecordKindNameSchema, nr as clearKnownSecrets, o as asJsonObject, on as declarationsOf, or as scrubKnownSecrets, p as BOOT_RECOVERY_BACKOFF_MS, pn as recordSecretCollection, pr as DATAPLANE_SECRET_HEADER, qn as RECORD_MAX_INDEX_FIELDS, qt as makeInMemoryRecords, r as maskUrlCredentials, rn as RecordRetentionSchema, rr as forgetKnownSecret, sn as defineRecordKinds, sr as shortSecretRefHash, st as nodePin, t as sleep, ti as makeSecretMarker, tn as RecordKindDeclarationSchema, tr as MIN_SCRUBBED_LENGTH, un as mapSecretLeaves, ur as PEER_BYTES_STALL_MS, ut as MODEL_FORMATS, vn as isZodSecret, vr as normalizeAddonInitResult, w as createEventBusSliceSource, wn as NoCallerError, x as createDeviceProxy, xn as FilterRequiredError, y as DEVICE_SCOPED_CAPS, yn as BatchTooLargeError, z as CALLER_STAMPED_CAPABILITIES, zn as RECORD_BATCH_MAX_BYTES, zr as emitReadiness } from "./sleep-Crlmu_tO.mjs";
1
+ import { $ as expandCapMethods, $n as REVALIDATE_AFTER_MS, $r as isSecretMarker, $t as RecordFieldPathSchema, A as HF_REPO, An as RecordUniqueViolationError, Ar as buildSecretRef, B as withoutCallerStamp, Bn as RECORD_CLASSES, C as addonSliceHandleApi, Cn as InvalidRecordError, Dn as RecordNotFoundError, En as RECORDS_ERROR_CODES, Fn as UnknownRecordKindError, Fr as parseSecretRef, G as adminUiCapability, Gn as RECORD_MAX_DATA_BYTES, Hn as RECORD_DEFAULT_MAX_DATA_BYTES, I as deviceOpsCapability, In as asRecordsError, Jn as RECORD_QUERY_MAX, Jt as defineEntryKind, Kn as RECORD_MAX_INDEXES, L as viewerUiCapability, Ln as recordsErrorFromMessage, M as CAP_ADVANCE_FIELDS, Mn as RevConflictError, Mr as globalSecretScope, Nn as TransactRefusedError, Nr as isSecretRef, On as RecordSecretUnavailableError, Or as SECRET_REF_SCHEME, P as CAP_STATE_LEAVES, Pn as UnindexedFilterError, Pr as normalizeSecretOwner, Qn as resolveSecretViewsIn, Qr as isSecretFieldView, Qt as EntryDescriptorSchema, R as DEVICE_CHILDREN_BATCH_MAX, Rn as RECORD_BATCH_MAX, Rr as createEvent, Sn as ForeignSecretMarkerError, Tn as PlaintextSecretError, U as describeCustomActions, Un as RECORD_DELETE_BATCH, Vn as RECORD_DATABASES, Wn as RECORD_ID_MAX_LENGTH, Xn as RECORD_SETTINGS_MAX_ROWS, Xr as classifySecretWrite, Xt as createRecordsAccess, Yn as RECORD_SECRET_COLLECTION_PREFIX, Yr as SECRET_CLEAR, Yt as entryBody, Zn as RECORD_SWEEP_INTERVAL_MS, Zr as isSecretClear, Zt as assertTransactScope, _ as readErrorI18n, _n as collectZodSecretPaths, an as assertValidDeclaration, ar as registerKnownSecret, b as isDeviceScopedCap, bn as DeclarationRefusedError, c as asString, cn as REMOVE_LEAF, cr as PEER_BYTES_CHUNK_BYTES, ct as readNodePin, d as parseJsonUnknown, dn as parseSecretPath, dr as PEER_BYTES_TICKET_TTL_MS, dt as ReadinessRegistry, ei as isSecretMarkerLike, en as RecordIndexSchema, er as createSecretsAccess, f as hfModelUrl, fn as recordArrayItemPath, ft as ReadinessTimeoutError, g as ErrorI18nPayloadSchema, gr as BaseAddon, hn as secretArrayPrefixes, hr as DisposerChain, ht as scopeKey, in as StoredRecordKindDeclarationSchema, ir as knownSecretCount, jn as RecordsError, jr as formatSecretScope, kn as RecordTooLargeError, kr as arrayItemFieldPath, ln as collectSecretLeaves, lr as PEER_BYTES_MAX_OUTSTANDING, mn as recordSecretRef, ni as toSecretFieldView, nn as RecordKindNameSchema, nr as clearKnownSecrets, o as asJsonObject, on as declarationsOf, or as scrubKnownSecrets, p as BOOT_RECOVERY_BACKOFF_MS, pn as recordSecretCollection, pr as DATAPLANE_SECRET_HEADER, qn as RECORD_MAX_INDEX_FIELDS, qt as makeInMemoryRecords, r as maskUrlCredentials, rn as RecordRetentionSchema, rr as forgetKnownSecret, sn as defineRecordKinds, sr as shortSecretRefHash, st as nodePin, t as sleep, ti as makeSecretMarker, tn as RecordKindDeclarationSchema, tr as MIN_SCRUBBED_LENGTH, un as mapSecretLeaves, ur as PEER_BYTES_STALL_MS, ut as MODEL_FORMATS, vn as isZodSecret, vr as normalizeAddonInitResult, w as createEventBusSliceSource, wn as NoCallerError, x as createDeviceProxy, xn as FilterRequiredError, y as DEVICE_SCOPED_CAPS, yn as BatchTooLargeError, z as CALLER_STAMPED_CAPABILITIES, zn as RECORD_BATCH_MAX_BYTES, zr as emitReadiness } from "./sleep-BAvUCi_2.mjs";
2
2
  import { t as EventCategory } from "./event-category-DmZDPDf_.mjs";
3
- import { a as DeviceType, t as errMsg } from "./err-msg-DIorGYeC.mjs";
3
+ import { a as DeviceType, t as errMsg } from "./err-msg-BCdlR2Li.mjs";
4
4
  //#region src/generated/cap-input-defaults.ts
5
5
  /**
6
6
  * AUTO-GENERATED by scripts/generate-cap-input-defaults.ts — DO NOT EDIT.
@@ -14,9 +14,25 @@ export declare const AlertSeveritySchema: z.ZodEnum<{
14
14
  success: "success";
15
15
  warning: "warning";
16
16
  }>;
17
+ /**
18
+ * An action that RUNS something instead of going somewhere: the admin UI calls
19
+ * the addon's custom action (`addons.custom`) with exactly these fields. The
20
+ * producer owns the meaning; the UI knows nothing about the addon or the kind.
21
+ */
22
+ export declare const AlertActionInvokeSchema: z.ZodObject<{
23
+ addonId: z.ZodString;
24
+ action: z.ZodString;
25
+ input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
26
+ }, z.core.$strip>;
27
+ /** An action has `href` (a link) OR `invoke` (a button that runs a custom action). */
17
28
  export declare const AlertActionSchema: z.ZodObject<{
18
29
  label: z.ZodString;
19
30
  href: z.ZodOptional<z.ZodString>;
31
+ invoke: z.ZodOptional<z.ZodObject<{
32
+ addonId: z.ZodString;
33
+ action: z.ZodString;
34
+ input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
35
+ }, z.core.$strip>>;
20
36
  navigation: z.ZodOptional<z.ZodEnum<{
21
37
  app: "app";
22
38
  server: "server";
@@ -48,6 +64,11 @@ export declare const AlertSchema: z.ZodObject<{
48
64
  action: z.ZodOptional<z.ZodObject<{
49
65
  label: z.ZodString;
50
66
  href: z.ZodOptional<z.ZodString>;
67
+ invoke: z.ZodOptional<z.ZodObject<{
68
+ addonId: z.ZodString;
69
+ action: z.ZodString;
70
+ input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
71
+ }, z.core.$strip>>;
51
72
  navigation: z.ZodOptional<z.ZodEnum<{
52
73
  app: "app";
53
74
  server: "server";
@@ -93,6 +114,11 @@ export declare const alertsCapability: {
93
114
  action: z.ZodOptional<z.ZodObject<{
94
115
  label: z.ZodString;
95
116
  href: z.ZodOptional<z.ZodString>;
117
+ invoke: z.ZodOptional<z.ZodObject<{
118
+ addonId: z.ZodString;
119
+ action: z.ZodString;
120
+ input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
121
+ }, z.core.$strip>>;
96
122
  navigation: z.ZodOptional<z.ZodEnum<{
97
123
  app: "app";
98
124
  server: "server";
@@ -132,6 +158,11 @@ export declare const alertsCapability: {
132
158
  action: z.ZodOptional<z.ZodOptional<z.ZodObject<{
133
159
  label: z.ZodString;
134
160
  href: z.ZodOptional<z.ZodString>;
161
+ invoke: z.ZodOptional<z.ZodObject<{
162
+ addonId: z.ZodString;
163
+ action: z.ZodString;
164
+ input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
165
+ }, z.core.$strip>>;
135
166
  navigation: z.ZodOptional<z.ZodEnum<{
136
167
  app: "app";
137
168
  server: "server";
@@ -173,6 +204,11 @@ export declare const alertsCapability: {
173
204
  action: z.ZodOptional<z.ZodObject<{
174
205
  label: z.ZodString;
175
206
  href: z.ZodOptional<z.ZodString>;
207
+ invoke: z.ZodOptional<z.ZodObject<{
208
+ addonId: z.ZodString;
209
+ action: z.ZodString;
210
+ input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
211
+ }, z.core.$strip>>;
176
212
  navigation: z.ZodOptional<z.ZodEnum<{
177
213
  app: "app";
178
214
  server: "server";
@@ -158,6 +158,7 @@ export { type BatteryStatus, BatteryStatusSchema, batteryCapability, type IBatte
158
158
  export { type BinaryStatus, BinaryStatusSchema, binaryCapability, type IBinaryProvider, } from './binary.cap.js';
159
159
  export { type BrightnessStatus, BrightnessStatusSchema, brightnessCapability, type IBrightnessProvider, } from './brightness.cap.js';
160
160
  export { buttonCapability, type IButtonProvider } from './button.cap.js';
161
+ export { irTransmitterCapability, TransmitSettingKeySchema, IrMediumSchema, IrSendResultSchema, IrTransmitterInfoSchema, type IIrTransmitterProvider, type TransmitSettingKey, type IrMedium, type IrSendResult, type IrTransmitterInfo, } from './ir-transmitter.cap.js';
161
162
  export type { CalendarEvent, CalendarInfo, CalendarListEventsInput, CalendarLocalSpan, CalendarSourceKind, ICalendarSourceProvider, } from './calendar-source.cap.js';
162
163
  export { CalendarEventSchema, CalendarInfoSchema, CalendarListEventsInputSchema, CalendarSourceKindSchema, calendarEventLocalSpan, calendarEventOnLocalDay, calendarSourceCapability, } from './calendar-source.cap.js';
163
164
  export type { CalendarColor, CalendarEntry, CalendarPreferenceEntry, CalendarPreferences, CalendarSetPreferenceInput, ICalendarsProvider, } from './calendars.cap.js';
@@ -289,6 +290,7 @@ import type { binaryCapability } from './binary.cap.js';
289
290
  import type { brightnessCapability } from './brightness.cap.js';
290
291
  import type { brokerCapability } from './broker.cap.js';
291
292
  import type { buttonCapability } from './button.cap.js';
293
+ import type { irTransmitterCapability } from './ir-transmitter.cap.js';
292
294
  import type { calendarSourceCapability } from './calendar-source.cap.js';
293
295
  import type { calendarsCapability } from './calendars.cap.js';
294
296
  import type { cameraCredentialsCapability } from './camera-credentials.cap.js';
@@ -449,6 +451,6 @@ import type { trainingProviderCapability } from './training-provider.cap.js';
449
451
  import type { zoneAnalyticsCapability } from './zone-analytics.cap.js';
450
452
  import type { zoneRulesCapability } from './zone-rules.cap.js';
451
453
  import type { zonesCapability } from './zones.cap.js';
452
- type AnyCapability = typeof streamSignalsCapability | typeof addonSettingsCapability | typeof alertsCapability | typeof storageCapability | typeof storageMigrationCapability | typeof storageProviderCapability | typeof storageEvictableCapability | typeof storageOccupancyCapability | typeof filesystemBrowseCapability | typeof backupCapability | typeof terminalSessionCapability | typeof settingsStoreCapability | typeof dataStoreProviderCapability | typeof databaseSnapshotCapability | typeof storageAdminCapability | typeof recordsCapability | typeof recordEntriesCapability | typeof deviceHistoryCapability | typeof keychainCapability | typeof keychainAdminCapability | typeof deviceCredentialsCapability | typeof nodeCertificatesCapability | typeof logChannelsCapability | typeof logDestinationCapability | typeof loadContributionCapability | typeof failureContributionCapability | typeof deviceRemovalHookCapability | typeof adminUiCapability | typeof viewerUiCapability | typeof ssoBridgeCapability | typeof userPasskeysCapability | typeof smtpProviderCapability | typeof mqttBrokerCapability | typeof brokerCapability | typeof deviceAdoptionCapability | typeof deviceAdminLinkCapability | typeof deviceExportCapability | typeof addonPagesCapability | typeof addonPagesSourceCapability | typeof addonWidgetsCapability | typeof addonWidgetsSourceCapability | typeof customModelRegistryCapability | typeof modelDistributorCapability | typeof modelConvertCapability | typeof addonRoutesCapability | typeof streamBrokerCapability | typeof decoderCapability | typeof webrtcSessionCapability | typeof cameraStreamsCapability | typeof calendarSourceCapability | typeof calendarsCapability | typeof motionDetectionCapability | typeof pipelineExecutorCapability | typeof detectionPipelineCapability | typeof cameraPipelineConfigCapability | typeof pipelineRunnerCapability | typeof pipelineOrchestratorCapability | typeof audioAnalyzerCapability | typeof audioAnalysisCapability | typeof audioCodecCapability | typeof embeddingEncoderCapability | typeof vectorStoreCapability | typeof deviceProviderCapability | typeof deviceManagerCapability | typeof deviceStateCapability | typeof authProviderCapability | typeof loginMethodCapability | typeof networkAccessCapability | typeof turnProviderCapability | typeof snapshotCapability | typeof llmCapability | typeof llmRuntimeCapability | typeof notificationOutputCapability | typeof composerCapability | typeof coreBlocksCapability | typeof notificationRulesCapability | typeof pipelineAnalyticsCapability | typeof metricsProviderCapability | typeof ptzCapability | typeof ptzAutotrackCapability | typeof navigationCapability | typeof consumablesCapability | typeof connectionTestCapability | typeof runningStateCapability | typeof rebootCapability | typeof deviceDiscoveryCapability | typeof brightnessCapability | typeof colorCapability | typeof climateControlCapability | typeof coverCapability | typeof valveCapability | typeof humidifierCapability | typeof waterHeaterCapability | typeof weatherCapability | typeof imageCapability | typeof lockControlCapability | typeof vacuumControlCapability | typeof petFeederCapability | typeof lawnMowerControlCapability | typeof fanControlCapability | typeof controlCapability | typeof notifierCapability | typeof mediaPlayerCapability | typeof meterCapability | typeof alarmPanelCapability | typeof presenceCapability | typeof scriptRunnerCapability | typeof actionSourceCapability | typeof actionsCapability | typeof automationControlCapability | typeof motionTriggerCapability | typeof zonesCapability | typeof zoneRulesCapability | typeof trainingCapability | typeof trainingProviderCapability | typeof zoneAnalyticsCapability | typeof audioMetricsCapability | typeof motionCapability | typeof contactCapability | typeof floodCapability | typeof smokeCapability | typeof carbonMonoxideCapability | typeof gasCapability | typeof groupActiveCapability | typeof groupCommandsCapability | typeof groupStatusCapability | typeof tamperCapability | typeof vibrationCapability | typeof connectivityCapability | typeof binaryCapability | typeof temperatureSensorCapability | typeof heatingValveCapability | typeof humiditySensorCapability | typeof ambientLightSensorCapability | typeof pressureSensorCapability | typeof powerMeterCapability | typeof airQualitySensorCapability | typeof numericSensorCapability | typeof enumSensorCapability | typeof recordingCapability | typeof recordingArchiveCapability | typeof recordingExportCapability | typeof recordingSignalCapability | typeof deviceOpsCapability | typeof displayPaletteCapability | typeof platformProbeCapability | typeof localNetworkCapability | typeof meshNetworkCapability | typeof userManagementCapability | typeof systemCapability | typeof networkQualityCapability | typeof toastCapability | typeof nodesCapability | typeof serverManagementCapability | typeof integrationsCapability | typeof addonsCapability | typeof oauthIntegrationCapability | typeof oidcConnectionsCapability | typeof streamParamsCapability | typeof streamCatalogCapability | typeof motionZonesCapability | typeof cameraGridLayoutCapability | typeof sceneMonitorCapability | typeof privacyMaskCapability | typeof dayNightCapability | typeof recordingOnboardCapability | typeof imageSettingsCapability | typeof osdCapability | typeof osdManagerCapability | typeof accessoriesCapability | typeof batteryCapability | typeof networkLinkCapability | typeof buttonCapability | typeof cameraCredentialsCapability | typeof deviceStatusCapability | typeof doorbellCapability | typeof eventEmitterCapability | typeof faceGalleryCapability | typeof featureProbeCapability | typeof intercomCapability | typeof nativeObjectDetectionCapability | typeof plateGalleryCapability | typeof switchCapability | typeof updateCapability | typeof videoclipsCapability | typeof deviceExtensionCapability | typeof dishwasherCapability;
454
+ type AnyCapability = typeof streamSignalsCapability | typeof addonSettingsCapability | typeof alertsCapability | typeof storageCapability | typeof storageMigrationCapability | typeof storageProviderCapability | typeof storageEvictableCapability | typeof storageOccupancyCapability | typeof filesystemBrowseCapability | typeof backupCapability | typeof terminalSessionCapability | typeof settingsStoreCapability | typeof dataStoreProviderCapability | typeof databaseSnapshotCapability | typeof storageAdminCapability | typeof recordsCapability | typeof recordEntriesCapability | typeof deviceHistoryCapability | typeof keychainCapability | typeof keychainAdminCapability | typeof deviceCredentialsCapability | typeof nodeCertificatesCapability | typeof logChannelsCapability | typeof logDestinationCapability | typeof loadContributionCapability | typeof failureContributionCapability | typeof deviceRemovalHookCapability | typeof adminUiCapability | typeof viewerUiCapability | typeof ssoBridgeCapability | typeof userPasskeysCapability | typeof smtpProviderCapability | typeof mqttBrokerCapability | typeof brokerCapability | typeof deviceAdoptionCapability | typeof deviceAdminLinkCapability | typeof deviceExportCapability | typeof addonPagesCapability | typeof addonPagesSourceCapability | typeof addonWidgetsCapability | typeof addonWidgetsSourceCapability | typeof customModelRegistryCapability | typeof modelDistributorCapability | typeof modelConvertCapability | typeof addonRoutesCapability | typeof streamBrokerCapability | typeof decoderCapability | typeof webrtcSessionCapability | typeof cameraStreamsCapability | typeof calendarSourceCapability | typeof calendarsCapability | typeof motionDetectionCapability | typeof pipelineExecutorCapability | typeof detectionPipelineCapability | typeof cameraPipelineConfigCapability | typeof pipelineRunnerCapability | typeof pipelineOrchestratorCapability | typeof audioAnalyzerCapability | typeof audioAnalysisCapability | typeof audioCodecCapability | typeof embeddingEncoderCapability | typeof vectorStoreCapability | typeof deviceProviderCapability | typeof deviceManagerCapability | typeof deviceStateCapability | typeof authProviderCapability | typeof loginMethodCapability | typeof networkAccessCapability | typeof turnProviderCapability | typeof snapshotCapability | typeof llmCapability | typeof llmRuntimeCapability | typeof notificationOutputCapability | typeof composerCapability | typeof coreBlocksCapability | typeof notificationRulesCapability | typeof pipelineAnalyticsCapability | typeof metricsProviderCapability | typeof ptzCapability | typeof ptzAutotrackCapability | typeof navigationCapability | typeof consumablesCapability | typeof connectionTestCapability | typeof runningStateCapability | typeof rebootCapability | typeof deviceDiscoveryCapability | typeof brightnessCapability | typeof colorCapability | typeof climateControlCapability | typeof coverCapability | typeof valveCapability | typeof humidifierCapability | typeof waterHeaterCapability | typeof weatherCapability | typeof imageCapability | typeof lockControlCapability | typeof vacuumControlCapability | typeof petFeederCapability | typeof lawnMowerControlCapability | typeof fanControlCapability | typeof controlCapability | typeof notifierCapability | typeof mediaPlayerCapability | typeof meterCapability | typeof alarmPanelCapability | typeof presenceCapability | typeof scriptRunnerCapability | typeof actionSourceCapability | typeof actionsCapability | typeof automationControlCapability | typeof motionTriggerCapability | typeof zonesCapability | typeof zoneRulesCapability | typeof trainingCapability | typeof trainingProviderCapability | typeof zoneAnalyticsCapability | typeof audioMetricsCapability | typeof motionCapability | typeof contactCapability | typeof floodCapability | typeof smokeCapability | typeof carbonMonoxideCapability | typeof gasCapability | typeof groupActiveCapability | typeof groupCommandsCapability | typeof groupStatusCapability | typeof tamperCapability | typeof vibrationCapability | typeof connectivityCapability | typeof binaryCapability | typeof temperatureSensorCapability | typeof heatingValveCapability | typeof humiditySensorCapability | typeof ambientLightSensorCapability | typeof pressureSensorCapability | typeof powerMeterCapability | typeof airQualitySensorCapability | typeof numericSensorCapability | typeof enumSensorCapability | typeof recordingCapability | typeof recordingArchiveCapability | typeof recordingExportCapability | typeof recordingSignalCapability | typeof deviceOpsCapability | typeof displayPaletteCapability | typeof platformProbeCapability | typeof localNetworkCapability | typeof meshNetworkCapability | typeof userManagementCapability | typeof systemCapability | typeof networkQualityCapability | typeof toastCapability | typeof nodesCapability | typeof serverManagementCapability | typeof integrationsCapability | typeof addonsCapability | typeof oauthIntegrationCapability | typeof oidcConnectionsCapability | typeof streamParamsCapability | typeof streamCatalogCapability | typeof motionZonesCapability | typeof cameraGridLayoutCapability | typeof sceneMonitorCapability | typeof privacyMaskCapability | typeof dayNightCapability | typeof recordingOnboardCapability | typeof imageSettingsCapability | typeof osdCapability | typeof osdManagerCapability | typeof accessoriesCapability | typeof batteryCapability | typeof networkLinkCapability | typeof buttonCapability | typeof irTransmitterCapability | typeof cameraCredentialsCapability | typeof deviceStatusCapability | typeof doorbellCapability | typeof eventEmitterCapability | typeof faceGalleryCapability | typeof featureProbeCapability | typeof intercomCapability | typeof nativeObjectDetectionCapability | typeof plateGalleryCapability | typeof switchCapability | typeof updateCapability | typeof videoclipsCapability | typeof deviceExtensionCapability | typeof dishwasherCapability;
453
455
  export type CapabilityName = AnyCapability['name'];
454
456
  export type ITypedReadinessRegistry = IReadinessRegistry<CapabilityName>;
@@ -0,0 +1,84 @@
1
+ import { z } from 'zod';
2
+ import { type InferProvider } from './capability-definition.js';
3
+ import { DeviceType } from '../device/device-type.js';
4
+ /** The setting keys a transmitter may declare as settable (`getInfo.settable`). */
5
+ export declare const TransmitSettingKeySchema: z.ZodEnum<{
6
+ carrierHz: "carrierHz";
7
+ dutyCyclePercent: "dutyCyclePercent";
8
+ repeat: "repeat";
9
+ repeatDelayMs: "repeatDelayMs";
10
+ }>;
11
+ export type TransmitSettingKey = z.infer<typeof TransmitSettingKeySchema>;
12
+ export declare const IrMediumSchema: z.ZodEnum<{
13
+ ir: "ir";
14
+ rf: "rf";
15
+ }>;
16
+ export type IrMedium = z.infer<typeof IrMediumSchema>;
17
+ export declare const IrSendResultSchema: z.ZodObject<{
18
+ ok: z.ZodLiteral<true>;
19
+ ignoredSettings: z.ZodArray<z.ZodString>;
20
+ }, z.core.$strip>;
21
+ export type IrSendResult = z.infer<typeof IrSendResultSchema>;
22
+ export declare const IrTransmitterInfoSchema: z.ZodObject<{
23
+ media: z.ZodArray<z.ZodEnum<{
24
+ ir: "ir";
25
+ rf: "rf";
26
+ }>>;
27
+ settable: z.ZodArray<z.ZodEnum<{
28
+ carrierHz: "carrierHz";
29
+ dutyCyclePercent: "dutyCyclePercent";
30
+ repeat: "repeat";
31
+ repeatDelayMs: "repeatDelayMs";
32
+ }>>;
33
+ maxTimings: z.ZodNumber;
34
+ }, z.core.$strip>;
35
+ export type IrTransmitterInfo = z.infer<typeof IrTransmitterInfoSchema>;
36
+ /**
37
+ * ir-transmitter — emit a pulse train (infrared or RF) with settings. One cap
38
+ * for both media: everything medium-specific is a per-call setting, validated
39
+ * against what the transmitter declares in `getInfo`.
40
+ *
41
+ * `send` refuses with a typed user error: `ir-transmitter.offline` (the
42
+ * transmitter cannot be reached) and `ir-transmitter.too-long` (more pulses
43
+ * than the transmitter's `maxTimings`). A setting the transmitter cannot apply
44
+ * is NOT a refusal: the train is sent and the key comes back in
45
+ * `ignoredSettings`.
46
+ */
47
+ export declare const irTransmitterCapability: {
48
+ readonly name: 'ir-transmitter';
49
+ readonly scope: 'device';
50
+ readonly deviceNative: true;
51
+ readonly mode: 'singleton';
52
+ readonly deviceTypes: readonly [DeviceType.Generic];
53
+ readonly methods: {
54
+ readonly send: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
55
+ deviceId: z.ZodNumber;
56
+ timings: z.ZodArray<z.ZodNumber>;
57
+ settings: z.ZodOptional<z.ZodObject<{
58
+ carrierHz: z.ZodOptional<z.ZodNumber>;
59
+ dutyCyclePercent: z.ZodOptional<z.ZodNumber>;
60
+ repeat: z.ZodOptional<z.ZodNumber>;
61
+ repeatDelayMs: z.ZodOptional<z.ZodNumber>;
62
+ }, z.core.$strip>>;
63
+ }, z.core.$strip>, z.ZodObject<{
64
+ ok: z.ZodLiteral<true>;
65
+ ignoredSettings: z.ZodArray<z.ZodString>;
66
+ }, z.core.$strip>, "mutation">;
67
+ readonly getInfo: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
68
+ deviceId: z.ZodNumber;
69
+ }, z.core.$strip>, z.ZodObject<{
70
+ media: z.ZodArray<z.ZodEnum<{
71
+ ir: "ir";
72
+ rf: "rf";
73
+ }>>;
74
+ settable: z.ZodArray<z.ZodEnum<{
75
+ carrierHz: "carrierHz";
76
+ dutyCyclePercent: "dutyCyclePercent";
77
+ repeat: "repeat";
78
+ repeatDelayMs: "repeatDelayMs";
79
+ }>>;
80
+ maxTimings: z.ZodNumber;
81
+ }, z.core.$strip>, "query">;
82
+ };
83
+ };
84
+ export type IIrTransmitterProvider = InferProvider<typeof irTransmitterCapability>;
@@ -53,6 +53,10 @@ export declare const PetFeederStatusSchema: z.ZodObject<{
53
53
  food2: z.ZodNullable<z.ZodNumber>;
54
54
  lowFood: z.ZodBoolean;
55
55
  batteryPower: z.ZodNullable<z.ZodNumber>;
56
+ powerSource: z.ZodNullable<z.ZodEnum<{
57
+ battery: "battery";
58
+ mains: "mains";
59
+ }>>;
56
60
  desiccantLeftDays: z.ZodNullable<z.ZodNumber>;
57
61
  feeding: z.ZodBoolean;
58
62
  status: z.ZodNullable<z.ZodEnum<{
@@ -144,6 +148,10 @@ export declare const petFeederCapability: {
144
148
  food2: z.ZodNullable<z.ZodNumber>;
145
149
  lowFood: z.ZodBoolean;
146
150
  batteryPower: z.ZodNullable<z.ZodNumber>;
151
+ powerSource: z.ZodNullable<z.ZodEnum<{
152
+ battery: "battery";
153
+ mains: "mains";
154
+ }>>;
147
155
  desiccantLeftDays: z.ZodNullable<z.ZodNumber>;
148
156
  feeding: z.ZodBoolean;
149
157
  status: z.ZodNullable<z.ZodEnum<{
@@ -176,6 +184,10 @@ export declare const petFeederCapability: {
176
184
  food2: z.ZodNullable<z.ZodNumber>;
177
185
  lowFood: z.ZodBoolean;
178
186
  batteryPower: z.ZodNullable<z.ZodNumber>;
187
+ powerSource: z.ZodNullable<z.ZodEnum<{
188
+ battery: "battery";
189
+ mains: "mains";
190
+ }>>;
179
191
  desiccantLeftDays: z.ZodNullable<z.ZodNumber>;
180
192
  feeding: z.ZodBoolean;
181
193
  status: z.ZodNullable<z.ZodEnum<{
package/dist/client.js CHANGED
@@ -26921,6 +26921,10 @@ function createDeviceProxy(api, binding, opts) {
26921
26921
  endTalkSession: (input) => dispatch("intercom", "intercom", "endTalkSession", "mutation", input),
26922
26922
  getStatus: (input) => dispatch("intercom", "intercom", "getStatus", "query", input)
26923
26923
  };
26924
+ const irTransmitterInterface = {
26925
+ send: (input) => dispatch("ir-transmitter", "irTransmitter", "send", "mutation", input),
26926
+ getInfo: (input) => dispatch("ir-transmitter", "irTransmitter", "getInfo", "query", input)
26927
+ };
26924
26928
  const lawnMowerControlInterface = {
26925
26929
  startMowing: (input) => dispatch("lawn-mower-control", "lawnMowerControl", "startMowing", "mutation", input),
26926
26930
  pause: (input) => dispatch("lawn-mower-control", "lawnMowerControl", "pause", "mutation", input),
@@ -27555,6 +27559,7 @@ function createDeviceProxy(api, binding, opts) {
27555
27559
  ...bound("image") ? { image: imageInterface } : {},
27556
27560
  ...bound("image-settings") ? { imageSettings: imageSettingsInterface } : {},
27557
27561
  ...bound("intercom") ? { intercom: intercomInterface } : {},
27562
+ ...bound("ir-transmitter") ? { irTransmitter: irTransmitterInterface } : {},
27558
27563
  ...bound("lawn-mower-control") ? { lawnMowerControl: lawnMowerControlInterface } : {},
27559
27564
  ...bound("lock-control") ? { lockControl: lockControlInterface } : {},
27560
27565
  ...bound("media-player") ? { mediaPlayer: mediaPlayerInterface } : {},
package/dist/client.mjs CHANGED
@@ -26920,6 +26920,10 @@ function createDeviceProxy(api, binding, opts) {
26920
26920
  endTalkSession: (input) => dispatch("intercom", "intercom", "endTalkSession", "mutation", input),
26921
26921
  getStatus: (input) => dispatch("intercom", "intercom", "getStatus", "query", input)
26922
26922
  };
26923
+ const irTransmitterInterface = {
26924
+ send: (input) => dispatch("ir-transmitter", "irTransmitter", "send", "mutation", input),
26925
+ getInfo: (input) => dispatch("ir-transmitter", "irTransmitter", "getInfo", "query", input)
26926
+ };
26923
26927
  const lawnMowerControlInterface = {
26924
26928
  startMowing: (input) => dispatch("lawn-mower-control", "lawnMowerControl", "startMowing", "mutation", input),
26925
26929
  pause: (input) => dispatch("lawn-mower-control", "lawnMowerControl", "pause", "mutation", input),
@@ -27554,6 +27558,7 @@ function createDeviceProxy(api, binding, opts) {
27554
27558
  ...bound("image") ? { image: imageInterface } : {},
27555
27559
  ...bound("image-settings") ? { imageSettings: imageSettingsInterface } : {},
27556
27560
  ...bound("intercom") ? { intercom: intercomInterface } : {},
27561
+ ...bound("ir-transmitter") ? { irTransmitter: irTransmitterInterface } : {},
27557
27562
  ...bound("lawn-mower-control") ? { lawnMowerControl: lawnMowerControlInterface } : {},
27558
27563
  ...bound("lock-control") ? { lockControl: lockControlInterface } : {},
27559
27564
  ...bound("media-player") ? { mediaPlayer: mediaPlayerInterface } : {},
@@ -1,4 +1,4 @@
1
- const require_err_msg = require("./err-msg-U7lLUMNz.js");
1
+ const require_err_msg = require("./err-msg-COHgq7Mb.js");
2
2
  let zod = require("zod");
3
3
  let node_crypto = require("node:crypto");
4
4
  //#region src/ffmpeg/invocation.ts
@@ -1,4 +1,4 @@
1
- import { a as DeviceType, i as DeviceRole } from "./err-msg-DIorGYeC.mjs";
1
+ import { a as DeviceType, i as DeviceRole } from "./err-msg-BCdlR2Li.mjs";
2
2
  import { z } from "zod";
3
3
  import { createHash } from "node:crypto";
4
4
  //#region src/ffmpeg/invocation.ts
@@ -1,5 +1,5 @@
1
1
  import type { CapVocabularySlice } from '../types.js';
2
- type ActuatorCap = 'switch' | 'brightness' | 'color' | 'cover' | 'valve' | 'lock-control' | 'climate-control' | 'fan-control' | 'humidifier' | 'water-heater' | 'heating-valve' | 'alarm-panel' | 'button' | 'control' | 'motion-trigger';
2
+ type ActuatorCap = 'switch' | 'brightness' | 'color' | 'cover' | 'valve' | 'lock-control' | 'climate-control' | 'fan-control' | 'humidifier' | 'water-heater' | 'heating-valve' | 'alarm-panel' | 'button' | 'ir-transmitter' | 'control' | 'motion-trigger';
3
3
  /** The actuator family of the vocabulary. */
4
4
  export declare const ACTUATOR_CAP_VOCABULARY: CapVocabularySlice<ActuatorCap>;
5
5
  export {};
@@ -345,5 +345,8 @@ export declare enum DeviceRole {
345
345
  EmailNotifier = "email-notifier",
346
346
  /** Fallback when the notifier service name doesn't match a known
347
347
  * pattern. */
348
- GenericNotifier = "generic-notifier"
348
+ GenericNotifier = "generic-notifier",
349
+ /** Emits a pulse train (infrared or RF) on request — the `ir-transmitter`
350
+ * cap. A `DeviceType.Generic` device. */
351
+ IrTransmitter = "ir-transmitter"
349
352
  }
@@ -350,6 +350,9 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
350
350
  /** Fallback when the notifier service name doesn't match a known
351
351
  * pattern. */
352
352
  DeviceRole["GenericNotifier"] = "generic-notifier";
353
+ /** Emits a pulse train (infrared or RF) on request — the `ir-transmitter`
354
+ * cap. A `DeviceType.Generic` device. */
355
+ DeviceRole["IrTransmitter"] = "ir-transmitter";
353
356
  return DeviceRole;
354
357
  }({});
355
358
  //#endregion
@@ -350,6 +350,9 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
350
350
  /** Fallback when the notifier service name doesn't match a known
351
351
  * pattern. */
352
352
  DeviceRole["GenericNotifier"] = "generic-notifier";
353
+ /** Emits a pulse train (infrared or RF) on request — the `ir-transmitter`
354
+ * cap. A `DeviceType.Generic` device. */
355
+ DeviceRole["IrTransmitter"] = "ir-transmitter";
353
356
  return DeviceRole;
354
357
  }({});
355
358
  //#endregion
@@ -65,6 +65,7 @@ import type { humidifierCapability } from '../capabilities/humidifier.cap.js';
65
65
  import type { imageSettingsCapability } from '../capabilities/image-settings.cap.js';
66
66
  import type { integrationsCapability } from '../capabilities/integrations.cap.js';
67
67
  import type { intercomCapability } from '../capabilities/intercom.cap.js';
68
+ import type { irTransmitterCapability } from '../capabilities/ir-transmitter.cap.js';
68
69
  import type { keychainAdminCapability } from '../capabilities/keychain-admin.cap.js';
69
70
  import type { keychainCapability } from '../capabilities/keychain.cap.js';
70
71
  import type { lawnMowerControlCapability } from '../capabilities/lawn-mower-control.cap.js';
@@ -4265,6 +4266,27 @@ export type AppRouter = TrpcCoreRouter<{
4265
4266
  meta: object;
4266
4267
  }>;
4267
4268
  }>>;
4269
+ irTransmitter: TRPCBuiltRouter<{
4270
+ ctx: TrpcContext;
4271
+ meta: object;
4272
+ errorShape: AugmentedErrorShape;
4273
+ transformer: true;
4274
+ }, TRPCDecorateCreateRouterOptions<{
4275
+ send: TRPCMutationProcedure<{
4276
+ input: {
4277
+ [x: string]: unknown;
4278
+ } & z.input<typeof irTransmitterCapability.methods.send.input>;
4279
+ output: z.infer<typeof irTransmitterCapability.methods.send.output>;
4280
+ meta: object;
4281
+ }>;
4282
+ getInfo: TRPCQueryProcedure<{
4283
+ input: {
4284
+ [x: string]: unknown;
4285
+ } & z.input<typeof irTransmitterCapability.methods.getInfo.input>;
4286
+ output: z.infer<typeof irTransmitterCapability.methods.getInfo.output>;
4287
+ meta: object;
4288
+ }>;
4289
+ }>>;
4268
4290
  keychain: TRPCBuiltRouter<{
4269
4291
  ctx: TrpcContext;
4270
4292
  meta: object;
@@ -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, 77 caps with 355 state leaves.
8
+ * Coverage: 1 advance-derived caps, 77 caps with 356 state leaves.
9
9
  */
10
10
  /** A bindable scalar in a capability's runtime state. */
11
11
  export interface CapStateLeaf {
@@ -84,6 +84,7 @@ export { imageCapability } from '../capabilities/image.cap.js';
84
84
  export { imageSettingsCapability } from '../capabilities/image-settings.cap.js';
85
85
  export { integrationsCapability } from '../capabilities/integrations.cap.js';
86
86
  export { intercomCapability } from '../capabilities/intercom.cap.js';
87
+ export { irTransmitterCapability } from '../capabilities/ir-transmitter.cap.js';
87
88
  export { keychainCapability } from '../capabilities/keychain.cap.js';
88
89
  export { keychainAdminCapability } from '../capabilities/keychain-admin.cap.js';
89
90
  export { lawnMowerControlCapability } from '../capabilities/lawn-mower-control.cap.js';
@@ -272,6 +273,7 @@ export declare const CAPABILITY_NAMES: {
272
273
  readonly imageSettings: 'image-settings';
273
274
  readonly integrations: 'integrations';
274
275
  readonly intercom: 'intercom';
276
+ readonly irTransmitter: 'ir-transmitter';
275
277
  readonly keychain: 'keychain';
276
278
  readonly keychainAdmin: 'keychain-admin';
277
279
  readonly lawnMowerControl: 'lawn-mower-control';
@@ -473,6 +475,7 @@ export interface CapabilityRouterMap<TRouter = unknown> {
473
475
  readonly imageSettings: TRouter;
474
476
  readonly integrations: TRouter;
475
477
  readonly intercom: TRouter;
478
+ readonly irTransmitter: TRouter;
476
479
  readonly keychain: TRouter;
477
480
  readonly keychainAdmin: TRouter;
478
481
  readonly lawnMowerControl: TRouter;
@@ -575,8 +578,8 @@ export interface CapabilityRouterMap<TRouter = unknown> {
575
578
  readonly zoneRules: TRouter;
576
579
  readonly zones: TRouter;
577
580
  }
578
- /** Capability names whose mode is `singleton` (151 caps). */
579
- export declare const SINGLETON_CAPABILITY_NAMES: readonly ['accessories', 'actions', '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', 'display-palette', 'doorbell', 'enum-sensor', 'event-emitter', 'face-gallery', 'fan-control', 'feature-probe', 'filesystem-browse', 'flood', 'gas', 'group-active', 'group-commands', 'group-status', 'heating-valve', 'humidifier', 'humidity-sensor', 'image', 'image-settings', 'integrations', 'intercom', 'keychain', 'keychain-admin', 'lawn-mower-control', 'llm-runtime', 'local-network', 'lock-control', 'media-player', 'meter', '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', 'running-state', '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'];
581
+ /** Capability names whose mode is `singleton` (152 caps). */
582
+ export declare const SINGLETON_CAPABILITY_NAMES: readonly ['accessories', 'actions', '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', 'display-palette', 'doorbell', 'enum-sensor', 'event-emitter', 'face-gallery', 'fan-control', 'feature-probe', 'filesystem-browse', 'flood', 'gas', 'group-active', 'group-commands', 'group-status', 'heating-valve', 'humidifier', 'humidity-sensor', 'image', 'image-settings', 'integrations', 'intercom', 'ir-transmitter', 'keychain', 'keychain-admin', 'lawn-mower-control', 'llm-runtime', 'local-network', 'lock-control', 'media-player', 'meter', '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', 'running-state', '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'];
580
583
  /** Union of singleton capability names (literal string union). */
581
584
  export type SingletonCapabilityName = typeof SINGLETON_CAPABILITY_NAMES[number];
582
585
  /** Capability names whose mode is `collection` (36 caps). */
@@ -49,6 +49,7 @@ import type { humiditySensorCapability } from '../capabilities/humidity-sensor.c
49
49
  import type { imageCapability } from '../capabilities/image.cap.js';
50
50
  import type { imageSettingsCapability } from '../capabilities/image-settings.cap.js';
51
51
  import type { intercomCapability } from '../capabilities/intercom.cap.js';
52
+ import type { irTransmitterCapability } from '../capabilities/ir-transmitter.cap.js';
52
53
  import type { lawnMowerControlCapability } from '../capabilities/lawn-mower-control.cap.js';
53
54
  import type { lockControlCapability } from '../capabilities/lock-control.cap.js';
54
55
  import type { mediaPlayerCapability } from '../capabilities/media-player.cap.js';
@@ -264,6 +265,7 @@ export interface DeviceProxy {
264
265
  readonly image?: InferDeviceProxyCap<typeof imageCapability>;
265
266
  readonly imageSettings?: InferDeviceProxyCap<typeof imageSettingsCapability>;
266
267
  readonly intercom?: InferDeviceProxyCap<typeof intercomCapability>;
268
+ readonly irTransmitter?: InferDeviceProxyCap<typeof irTransmitterCapability>;
267
269
  readonly lawnMowerControl?: InferDeviceProxyCap<typeof lawnMowerControlCapability>;
268
270
  readonly lockControl?: InferDeviceProxyCap<typeof lockControlCapability>;
269
271
  readonly mediaPlayer?: InferDeviceProxyCap<typeof mediaPlayerCapability>;
@@ -5,7 +5,7 @@
5
5
  * can answer "may a rule actuate this?" without importing the schema barrel
6
6
  * (~144MB RSS per runner, D28).
7
7
  *
8
- * Coverage: 95 device-scoped capabilities.
8
+ * Coverage: 96 device-scoped capabilities.
9
9
  */
10
10
  export declare const DEVICE_SCOPED_CAPS: ReadonlySet<string>;
11
11
  /**
@@ -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: 1404 method paths across 187 capabilities.
9
+ * Coverage: 1406 method paths across 188 capabilities.
10
10
  */
11
11
  import type { MethodRole } from '../auth/viewer-access.js';
12
12
  import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
@@ -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: 555 methods carry a device reference, of which
9
+ * Coverage: 557 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.d.ts CHANGED
@@ -376,3 +376,4 @@ export { SiteZoneSchema, siteZoneKey } from './device/site-zone.js';
376
376
  export type { ServerNameInfo } from './system/server-name.js';
377
377
  export { resolveServerName, SERVER_NAME_MAX_LENGTH, SERVER_NAME_SETTING_KEY, ServerNameInfoSchema, ServerNameSchema, shortHostname, } from './system/server-name.js';
378
378
  export { armRemovalReconcile, reconcileRemovedDevices, REMOVAL_RECONCILE_INTERVAL_MS, type RemovalReconcileOptions, type RemovalReconcileOutcome, type TombstoneSource, } from './device/device-removal-reconcile.js';
379
+ export * from './ir/index.js';