@camstack/types 1.2.447 → 1.2.449

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/CHANGELOG.md CHANGED
@@ -7,11 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.2.449] - 2026-10-30
11
+
12
+ ### Changed
13
+
14
+ - Built-in remote components show icons on rocker, D-pad and media keys, and colour keys carry only their colour
15
+
16
+ ## [1.2.448] - 2026-10-29
17
+
18
+ ### Changed
19
+
20
+ - The node-restarting and node-updating events carry what is being updated, and both can be used in notification templates
21
+ - Remote templates gain section dividers, titled panels, button shapes and tones, and a palette of components (D-pad, rockers, keypad, colour keys, media row) that addons can extend
22
+
10
23
  ## [1.2.447] - 2026-10-29
11
24
 
12
25
  ### Changed
13
26
 
14
27
  - Numbers tied to a physical quantity can be entered in a unit you pick: automation conditions and steps accept { value, unit }, converted to the stored unit, and a bare API number is accepted with a warning
28
+ - node-restarting and node-updating are offered in the served notification template catalog again
15
29
 
16
30
  ## [1.2.446] - 2026-10-29
17
31
 
package/dist/addon.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sleep = require("./sleep-UXDHn-oJ.js");
2
+ const require_sleep = require("./sleep-BSPhInRm.js");
3
3
  const require_event_category = require("./event-category-E17zaHjN.js");
4
4
  const require_err_msg = require("./err-msg-EJhsFHqa.js");
5
5
  //#region src/generated/cap-input-defaults.ts
@@ -367,7 +367,7 @@ function materialise(defaults) {
367
367
  * barrel (`ALL_CAPABILITY_DEFINITIONS`), which would cost ~144MB RSS per
368
368
  * forked runner. See docs/decisions/adr-0028.md.
369
369
  *
370
- * Coverage: 28 collection caps, 48 array methods.
370
+ * Coverage: 29 collection caps, 49 array methods.
371
371
  */
372
372
  var COLLECTION_ARRAY_METHODS = Object.freeze({
373
373
  "action-source": ["listActions"],
@@ -408,6 +408,7 @@ var COLLECTION_ARRAY_METHODS = Object.freeze({
408
408
  "listTargets"
409
409
  ],
410
410
  "recording": ["listSources"],
411
+ "remote-layout-components": ["listComponents"],
411
412
  "storage-occupancy": ["getOccupancy"],
412
413
  "storage-provider": ["list"],
413
414
  "template": ["list"],
package/dist/addon.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { $n as RECORD_SECRET_COLLECTION_PREFIX, $r as SECRET_CLEAR, $t as entryBody, A as HF_REPO, An as RECORDS_ERROR_CODES, B as DEVICE_CHILDREN_BATCH_MAX, Bn as asRecordsError, C as addonSliceHandleApi, Cn as BatchTooLargeError, Dn as InvalidRecordError, En as ForeignSecretMarkerError, Fn as RecordsError, Fr as formatSecretScope, G as describeCustomActions, Gn as RECORD_DATABASES, H as withoutCallerStamp, Hn as RECORD_BATCH_MAX, Hr as createEvent, I as deviceOpsCapability, In as RevConflictError, Ir as globalSecretScope, Jn as RECORD_ID_MAX_LENGTH, Kn as RECORD_DEFAULT_MAX_DATA_BYTES, L as viewerUiCapability, Ln as TransactRefusedError, Lr as isSecretRef, M as CAP_ADVANCE_FIELDS, Mn as RecordSecretUnavailableError, Mr as SECRET_REF_SCHEME, Nn as RecordTooLargeError, Nr as arrayItemFieldPath, On as NoCallerError, P as CAP_STATE_LEAVES, Pn as RecordUniqueViolationError, Pr as buildSecretRef, Q as readNodePin, Qn as RECORD_QUERY_MAX, Qt as defineEntryKind, R as PipelineRunResultBridge, Rn as UnindexedFilterError, Rr as normalizeSecretOwner, Sn as isZodSecret, Sr as normalizeAddonInitResult, Tn as FilterRequiredError, U as customAction, Un as RECORD_BATCH_MAX_BYTES, Ur as emitReadiness, V as CALLER_STAMPED_CAPABILITIES, Vn as recordsErrorFromMessage, W as defineCustomActions, Wn as RECORD_CLASSES, Xn as RECORD_MAX_INDEXES, Y as addonPagesSourceCapability, Yn as RECORD_MAX_DATA_BYTES, Z as nodePin, Zn as RECORD_MAX_INDEX_FIELDS, Zt as makeInMemoryRecords, _ as readErrorI18n, _n as recordSecretCollection, _r as DATAPLANE_SECRET_HEADER, ai as makeSecretMarker, an as RecordKindDeclarationSchema, ar as MIN_SCRUBBED_LENGTH, b as isDeviceScopedCap, br as BaseAddon, c as asString, cn as StoredRecordKindDeclarationSchema, cr as knownSecretCount, d as parseJsonUnknown, dn as defineRecordKinds, dr as shortSecretRefHash, ei as classifySecretWrite, en as createRecordsAccess, er as RECORD_SETTINGS_MAX_ROWS, f as hfModelUrl, fn as REMOVE_LEAF, fr as PEER_BYTES_CHUNK_BYTES, g as ErrorI18nPayloadSchema, gn as recordArrayItemPath, gt as ReadinessTimeoutError, hn as parseSecretPath, hr as PEER_BYTES_TICKET_TTL_MS, ht as ReadinessRegistry, ii as isSecretMarkerLike, in as RecordIndexSchema, ir as createSecretsAccess, jn as RecordNotFoundError, kn as PlaintextSecretError, ln as assertValidDeclaration, lr as registerKnownSecret, mn as mapSecretLeaves, mr as PEER_BYTES_STALL_MS, mt as MODEL_FORMATS, ni as isSecretFieldView, nn as EntryDescriptorSchema, nr as resolveSecretViewsIn, o as asJsonObject, oi as toSecretFieldView, on as RecordKindNameSchema, or as clearKnownSecrets, p as BOOT_RECOVERY_BACKOFF_MS, pn as collectSecretLeaves, pr as PEER_BYTES_MAX_OUTSTANDING, q as adminUiCapability, qn as RECORD_DELETE_BATCH, r as maskUrlCredentials, ri as isSecretMarker, rn as RecordFieldPathSchema, rr as REVALIDATE_AFTER_MS, sn as RecordRetentionSchema, sr as forgetKnownSecret, st as expandCapMethods, t as sleep, ti as isSecretClear, tn as assertTransactScope, tr as RECORD_SWEEP_INTERVAL_MS, un as declarationsOf, ur as scrubKnownSecrets, vn as recordSecretRef, w as createEventBusSliceSource, wn as DeclarationRefusedError, x as createDeviceProxy, xn as collectZodSecretPaths, y as DEVICE_SCOPED_CAPS, yn as secretArrayPrefixes, yr as DisposerChain, yt as scopeKey, z as PipelineStepInputSchema, zn as UnknownRecordKindError, zr as parseSecretRef } from "./sleep-6eG9C8Xl.mjs";
1
+ import { $n as RECORD_SECRET_COLLECTION_PREFIX, $r as SECRET_CLEAR, $t as entryBody, A as HF_REPO, An as RECORDS_ERROR_CODES, B as DEVICE_CHILDREN_BATCH_MAX, Bn as asRecordsError, C as addonSliceHandleApi, Cn as BatchTooLargeError, Dn as InvalidRecordError, En as ForeignSecretMarkerError, Fn as RecordsError, Fr as formatSecretScope, G as describeCustomActions, Gn as RECORD_DATABASES, H as withoutCallerStamp, Hn as RECORD_BATCH_MAX, Hr as createEvent, I as deviceOpsCapability, In as RevConflictError, Ir as globalSecretScope, Jn as RECORD_ID_MAX_LENGTH, Kn as RECORD_DEFAULT_MAX_DATA_BYTES, L as viewerUiCapability, Ln as TransactRefusedError, Lr as isSecretRef, M as CAP_ADVANCE_FIELDS, Mn as RecordSecretUnavailableError, Mr as SECRET_REF_SCHEME, Nn as RecordTooLargeError, Nr as arrayItemFieldPath, On as NoCallerError, P as CAP_STATE_LEAVES, Pn as RecordUniqueViolationError, Pr as buildSecretRef, Q as readNodePin, Qn as RECORD_QUERY_MAX, Qt as defineEntryKind, R as PipelineRunResultBridge, Rn as UnindexedFilterError, Rr as normalizeSecretOwner, Sn as isZodSecret, Sr as normalizeAddonInitResult, Tn as FilterRequiredError, U as customAction, Un as RECORD_BATCH_MAX_BYTES, Ur as emitReadiness, V as CALLER_STAMPED_CAPABILITIES, Vn as recordsErrorFromMessage, W as defineCustomActions, Wn as RECORD_CLASSES, Xn as RECORD_MAX_INDEXES, Y as addonPagesSourceCapability, Yn as RECORD_MAX_DATA_BYTES, Z as nodePin, Zn as RECORD_MAX_INDEX_FIELDS, Zt as makeInMemoryRecords, _ as readErrorI18n, _n as recordSecretCollection, _r as DATAPLANE_SECRET_HEADER, ai as makeSecretMarker, an as RecordKindDeclarationSchema, ar as MIN_SCRUBBED_LENGTH, b as isDeviceScopedCap, br as BaseAddon, c as asString, cn as StoredRecordKindDeclarationSchema, cr as knownSecretCount, d as parseJsonUnknown, dn as defineRecordKinds, dr as shortSecretRefHash, ei as classifySecretWrite, en as createRecordsAccess, er as RECORD_SETTINGS_MAX_ROWS, f as hfModelUrl, fn as REMOVE_LEAF, fr as PEER_BYTES_CHUNK_BYTES, g as ErrorI18nPayloadSchema, gn as recordArrayItemPath, gt as ReadinessTimeoutError, hn as parseSecretPath, hr as PEER_BYTES_TICKET_TTL_MS, ht as ReadinessRegistry, ii as isSecretMarkerLike, in as RecordIndexSchema, ir as createSecretsAccess, jn as RecordNotFoundError, kn as PlaintextSecretError, ln as assertValidDeclaration, lr as registerKnownSecret, mn as mapSecretLeaves, mr as PEER_BYTES_STALL_MS, mt as MODEL_FORMATS, ni as isSecretFieldView, nn as EntryDescriptorSchema, nr as resolveSecretViewsIn, o as asJsonObject, oi as toSecretFieldView, on as RecordKindNameSchema, or as clearKnownSecrets, p as BOOT_RECOVERY_BACKOFF_MS, pn as collectSecretLeaves, pr as PEER_BYTES_MAX_OUTSTANDING, q as adminUiCapability, qn as RECORD_DELETE_BATCH, r as maskUrlCredentials, ri as isSecretMarker, rn as RecordFieldPathSchema, rr as REVALIDATE_AFTER_MS, sn as RecordRetentionSchema, sr as forgetKnownSecret, st as expandCapMethods, t as sleep, ti as isSecretClear, tn as assertTransactScope, tr as RECORD_SWEEP_INTERVAL_MS, un as declarationsOf, ur as scrubKnownSecrets, vn as recordSecretRef, w as createEventBusSliceSource, wn as DeclarationRefusedError, x as createDeviceProxy, xn as collectZodSecretPaths, y as DEVICE_SCOPED_CAPS, yn as secretArrayPrefixes, yr as DisposerChain, yt as scopeKey, z as PipelineStepInputSchema, zn as UnknownRecordKindError, zr as parseSecretRef } from "./sleep-63gM_1JR.mjs";
2
2
  import { t as EventCategory } from "./event-category-DmZDPDf_.mjs";
3
3
  import { a as DeviceType, t as errMsg } from "./err-msg-DWXWc0Di.mjs";
4
4
  //#region src/generated/cap-input-defaults.ts
@@ -366,7 +366,7 @@ function materialise(defaults) {
366
366
  * barrel (`ALL_CAPABILITY_DEFINITIONS`), which would cost ~144MB RSS per
367
367
  * forked runner. See docs/decisions/adr-0028.md.
368
368
  *
369
- * Coverage: 28 collection caps, 48 array methods.
369
+ * Coverage: 29 collection caps, 49 array methods.
370
370
  */
371
371
  var COLLECTION_ARRAY_METHODS = Object.freeze({
372
372
  "action-source": ["listActions"],
@@ -407,6 +407,7 @@ var COLLECTION_ARRAY_METHODS = Object.freeze({
407
407
  "listTargets"
408
408
  ],
409
409
  "recording": ["listSources"],
410
+ "remote-layout-components": ["listComponents"],
410
411
  "storage-occupancy": ["getOccupancy"],
411
412
  "storage-provider": ["list"],
412
413
  "template": ["list"],
@@ -161,6 +161,7 @@ export { type BinaryStatus, BinaryStatusSchema, binaryCapability, type IBinaryPr
161
161
  export { type BrightnessStatus, BrightnessStatusSchema, brightnessCapability, type IBrightnessProvider, } from './brightness.cap.js';
162
162
  export { type IRemoteProvider, REMOTE_CONFIG_REFUSALS, REMOTE_MAX_REPEAT, REMOTE_MEDIA_COMMANDS, REMOTE_REFUSAL_REASONS, type RemoteBoundCommand, type RemoteCommandList, RemoteCommandListSchema, RemoteBoundCommandSchema, type RemoteMediaCommand, type RemoteMediaCommandResult, RemoteMediaCommandResultSchema, RemoteMediaCommandSchema, type RemoteRefusalReason, RemoteRefusalReasonSchema, type RemoteSendResult, RemoteSendResultSchema, type RemoteSetConfigResult, RemoteSetConfigResultSchema, remoteCapability, } from './remote.cap.js';
163
163
  export { type ITemplateProvider, TEMPLATE_WRITE_REFUSALS, type TemplateDeleteResult, TemplateDeleteResultSchema, type TemplateRecord, TemplateRecordSchema, type TemplateUser, TemplateUserSchema, type TemplateWriteResult, TemplateWriteResultSchema, templateCapability, } from './template.cap.js';
164
+ export { type IRemoteLayoutComponentsProvider, remoteLayoutComponentsCapability, } from './remote-layout-components.cap.js';
164
165
  export { buttonCapability, type IButtonProvider } from './button.cap.js';
165
166
  export { irTransmitterCapability, TransmitSettingKeySchema, IrMediumSchema, IrSendResultSchema, IrTransmitterInfoSchema, type IIrTransmitterProvider, type TransmitSettingKey, type IrMedium, type IrSendResult, type IrTransmitterInfo, } from './ir-transmitter.cap.js';
166
167
  export type { CalendarEvent, CalendarInfo, CalendarListEventsInput, CalendarLocalSpan, CalendarSourceKind, ICalendarSourceProvider, } from './calendar-source.cap.js';
@@ -298,6 +299,7 @@ import type { buttonCapability } from './button.cap.js';
298
299
  import type { irTransmitterCapability } from './ir-transmitter.cap.js';
299
300
  import type { remoteCapability } from './remote.cap.js';
300
301
  import type { templateCapability } from './template.cap.js';
302
+ import type { remoteLayoutComponentsCapability } from './remote-layout-components.cap.js';
301
303
  import type { calendarSourceCapability } from './calendar-source.cap.js';
302
304
  import type { calendarsCapability } from './calendars.cap.js';
303
305
  import type { cameraCredentialsCapability } from './camera-credentials.cap.js';
@@ -460,6 +462,6 @@ import type { trainingProviderCapability } from './training-provider.cap.js';
460
462
  import type { zoneAnalyticsCapability } from './zone-analytics.cap.js';
461
463
  import type { zoneRulesCapability } from './zone-rules.cap.js';
462
464
  import type { zonesCapability } from './zones.cap.js';
463
- 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 nodeRemovalHookCapability | 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 petFountainCapability | 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 remoteCapability | typeof templateCapability | 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;
465
+ 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 nodeRemovalHookCapability | 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 petFountainCapability | 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 remoteCapability | typeof templateCapability | typeof remoteLayoutComponentsCapability | 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;
464
466
  export type CapabilityName = AnyCapability['name'];
465
467
  export type ITypedReadinessRegistry = IReadinessRegistry<CapabilityName>;
@@ -0,0 +1,81 @@
1
+ import { z } from 'zod';
2
+ import { type InferProvider } from './capability-definition.js';
3
+ /**
4
+ * remote-layout-components — the palette of the remote template editor's "Add
5
+ * component" (D973). A provider DECLARES components as data (buttons placed
6
+ * relative to the component, a frame, shapes and tones from closed
7
+ * vocabularies the UI draws); it ships no UI code.
8
+ *
9
+ * Collection: `listComponents` returns an array, so the generated mount
10
+ * concat-fans it across every enabled provider. The core-blocks builtin
11
+ * provides the built-in set (`core:*`); an addon adds its own under
12
+ * `<addonId>:<name>`. The caller dedupes by id, built-ins first.
13
+ */
14
+ export declare const remoteLayoutComponentsCapability: {
15
+ readonly name: 'remote-layout-components';
16
+ readonly scope: 'system';
17
+ readonly mode: 'collection';
18
+ readonly methods: {
19
+ readonly listComponents: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{}, z.core.$strip>, z.ZodArray<z.ZodObject<{
20
+ id: z.ZodString;
21
+ name: z.ZodString;
22
+ nameI18n: z.ZodOptional<z.ZodObject<{
23
+ en: z.ZodString;
24
+ it: z.ZodString;
25
+ }, z.core.$strip>>;
26
+ icon: z.ZodString;
27
+ category: z.ZodEnum<{
28
+ apps: "apps";
29
+ colour: "colour";
30
+ layout: "layout";
31
+ media: "media";
32
+ navigation: "navigation";
33
+ numbers: "numbers";
34
+ power: "power";
35
+ volume: "volume";
36
+ }>;
37
+ size: z.ZodObject<{
38
+ rows: z.ZodNumber;
39
+ cols: z.ZodNumber;
40
+ }, z.core.$strip>;
41
+ group: z.ZodNullable<z.ZodObject<{
42
+ frame: z.ZodEnum<{
43
+ divider: "divider";
44
+ dpad: "dpad";
45
+ keypad: "keypad";
46
+ none: "none";
47
+ panel: "panel";
48
+ "rocker-h": "rocker-h";
49
+ "rocker-v": "rocker-v";
50
+ }>;
51
+ title: z.ZodOptional<z.ZodString>;
52
+ }, z.core.$strip>>;
53
+ buttons: z.ZodArray<z.ZodObject<{
54
+ idSuffix: z.ZodString;
55
+ row: z.ZodNumber;
56
+ col: z.ZodNumber;
57
+ rowSpan: z.ZodNumber;
58
+ colSpan: z.ZodNumber;
59
+ role: z.ZodString;
60
+ icon: z.ZodOptional<z.ZodString>;
61
+ label: z.ZodOptional<z.ZodString>;
62
+ shape: z.ZodOptional<z.ZodEnum<{
63
+ pill: "pill";
64
+ rect: "rect";
65
+ round: "round";
66
+ rounded: "rounded";
67
+ }>>;
68
+ tone: z.ZodOptional<z.ZodEnum<{
69
+ accent: "accent";
70
+ blue: "blue";
71
+ danger: "danger";
72
+ green: "green";
73
+ neutral: "neutral";
74
+ red: "red";
75
+ yellow: "yellow";
76
+ }>>;
77
+ }, z.core.$strip>>;
78
+ }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
79
+ };
80
+ };
81
+ export type IRemoteLayoutComponentsProvider = InferProvider<typeof remoteLayoutComponentsCapability>;
package/dist/client.js CHANGED
@@ -28965,6 +28965,7 @@ function createSystemProxy(api) {
28965
28965
  sendCommand: (input) => dispatch("remote", "sendCommand", "mutation", input),
28966
28966
  sendMediaCommand: (input) => dispatch("remote", "sendMediaCommand", "mutation", input)
28967
28967
  },
28968
+ remoteLayoutComponents: { listComponents: (input) => dispatch("remoteLayoutComponents", "listComponents", "query", input) },
28968
28969
  serverManagement: {
28969
28970
  getServerPackageStatus: (input) => dispatch("serverManagement", "getServerPackageStatus", "query", input),
28970
28971
  checkServerUpdate: (input) => dispatch("serverManagement", "checkServerUpdate", "mutation", input),
@@ -31742,8 +31743,6 @@ var NC_TEMPLATE_VARS = [
31742
31743
  * delete it from here then, and the served catalog names it again.
31743
31744
  */
31744
31745
  var NC_TEMPLATE_HELD_BACK_SYSTEM_EVENT_KINDS = [
31745
- "node-restarting",
31746
- "node-updating",
31747
31746
  "alert-critical",
31748
31747
  "alert-error",
31749
31748
  "alert-critical-resolved",
package/dist/client.mjs CHANGED
@@ -28964,6 +28964,7 @@ function createSystemProxy(api) {
28964
28964
  sendCommand: (input) => dispatch("remote", "sendCommand", "mutation", input),
28965
28965
  sendMediaCommand: (input) => dispatch("remote", "sendMediaCommand", "mutation", input)
28966
28966
  },
28967
+ remoteLayoutComponents: { listComponents: (input) => dispatch("remoteLayoutComponents", "listComponents", "query", input) },
28967
28968
  serverManagement: {
28968
28969
  getServerPackageStatus: (input) => dispatch("serverManagement", "getServerPackageStatus", "query", input),
28969
28970
  checkServerUpdate: (input) => dispatch("serverManagement", "checkServerUpdate", "mutation", input),
@@ -31741,8 +31742,6 @@ var NC_TEMPLATE_VARS = [
31741
31742
  * delete it from here then, and the served catalog names it again.
31742
31743
  */
31743
31744
  var NC_TEMPLATE_HELD_BACK_SYSTEM_EVENT_KINDS = [
31744
- "node-restarting",
31745
- "node-updating",
31746
31745
  "alert-critical",
31747
31746
  "alert-error",
31748
31747
  "alert-critical-resolved",
@@ -119,6 +119,7 @@ import type { recordingOnboardCapability } from '../capabilities/recording-onboa
119
119
  import type { recordingSignalCapability } from '../capabilities/recording-signal.cap.js';
120
120
  import type { recordingCapability } from '../capabilities/recording.cap.js';
121
121
  import type { recordsCapability } from '../capabilities/records.cap.js';
122
+ import type { remoteLayoutComponentsCapability } from '../capabilities/remote-layout-components.cap.js';
122
123
  import type { remoteCapability } from '../capabilities/remote.cap.js';
123
124
  import type { sceneMonitorCapability } from '../capabilities/scene-monitor.cap.js';
124
125
  import type { scriptRunnerCapability } from '../capabilities/script-runner.cap.js';
@@ -8927,6 +8928,20 @@ export type AppRouter = TrpcCoreRouter<{
8927
8928
  meta: object;
8928
8929
  }>;
8929
8930
  }>>;
8931
+ remoteLayoutComponents: TRPCBuiltRouter<{
8932
+ ctx: TrpcContext;
8933
+ meta: object;
8934
+ errorShape: AugmentedErrorShape;
8935
+ transformer: true;
8936
+ }, TRPCDecorateCreateRouterOptions<{
8937
+ listComponents: TRPCQueryProcedure<{
8938
+ input: {
8939
+ [x: string]: unknown;
8940
+ } & z.input<typeof remoteLayoutComponentsCapability.methods.listComponents.input>;
8941
+ output: z.infer<typeof remoteLayoutComponentsCapability.methods.listComponents.output>;
8942
+ meta: object;
8943
+ }>;
8944
+ }>>;
8930
8945
  runningState: TRPCBuiltRouter<{
8931
8946
  ctx: TrpcContext;
8932
8947
  meta: object;
@@ -146,6 +146,7 @@ export { recordingOnboardCapability } from '../capabilities/recording-onboard.ca
146
146
  export { recordingSignalCapability } from '../capabilities/recording-signal.cap.js';
147
147
  export { recordsCapability } from '../capabilities/records.cap.js';
148
148
  export { remoteCapability } from '../capabilities/remote.cap.js';
149
+ export { remoteLayoutComponentsCapability } from '../capabilities/remote-layout-components.cap.js';
149
150
  export { runningStateCapability } from '../capabilities/running-state.cap.js';
150
151
  export { sceneMonitorCapability } from '../capabilities/scene-monitor.cap.js';
151
152
  export { scriptRunnerCapability } from '../capabilities/script-runner.cap.js';
@@ -339,6 +340,7 @@ export declare const CAPABILITY_NAMES: {
339
340
  readonly recordingSignal: 'recording-signal';
340
341
  readonly records: 'records';
341
342
  readonly remote: 'remote';
343
+ readonly remoteLayoutComponents: 'remote-layout-components';
342
344
  readonly runningState: 'running-state';
343
345
  readonly sceneMonitor: 'scene-monitor';
344
346
  readonly scriptRunner: 'script-runner';
@@ -545,6 +547,7 @@ export interface CapabilityRouterMap<TRouter = unknown> {
545
547
  readonly recordingSignal: TRouter;
546
548
  readonly records: TRouter;
547
549
  readonly remote: TRouter;
550
+ readonly remoteLayoutComponents: TRouter;
548
551
  readonly runningState: TRouter;
549
552
  readonly sceneMonitor: TRouter;
550
553
  readonly scriptRunner: TRouter;
@@ -594,8 +597,8 @@ export interface CapabilityRouterMap<TRouter = unknown> {
594
597
  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', 'pet-fountain', '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', 'remote', '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'];
595
598
  /** Union of singleton capability names (literal string union). */
596
599
  export type SingletonCapabilityName = typeof SINGLETON_CAPABILITY_NAMES[number];
597
- /** Capability names whose mode is `collection` (38 caps). */
598
- export declare const COLLECTION_CAPABILITY_NAMES: readonly ['action-source', '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', 'node-removal-hook', 'notification-output', 'oauth-integration', 'recording', 'smtp-provider', 'storage-evictable', 'storage-occupancy', 'storage-provider', 'template', 'training-provider', 'turn-provider', 'user-passkeys', 'videoclips'];
600
+ /** Capability names whose mode is `collection` (39 caps). */
601
+ export declare const COLLECTION_CAPABILITY_NAMES: readonly ['action-source', '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', 'node-removal-hook', 'notification-output', 'oauth-integration', 'recording', 'remote-layout-components', 'smtp-provider', 'storage-evictable', 'storage-occupancy', 'storage-provider', 'template', 'training-provider', 'turn-provider', 'user-passkeys', 'videoclips'];
599
602
  /** Union of collection capability names (literal string union). */
600
603
  export type CollectionCapabilityName = typeof COLLECTION_CAPABILITY_NAMES[number];
601
604
  /** Capability mode lookup at runtime — mirrors the `.cap.ts` definitions. */
@@ -8,7 +8,7 @@
8
8
  * barrel (`ALL_CAPABILITY_DEFINITIONS`), which would cost ~144MB RSS per
9
9
  * forked runner. See docs/decisions/adr-0028.md.
10
10
  *
11
- * Coverage: 28 collection caps, 48 array methods.
11
+ * Coverage: 29 collection caps, 49 array methods.
12
12
  */
13
13
  export declare const COLLECTION_ARRAY_METHODS: Readonly<Record<string, readonly string[]>>;
14
14
  /**
@@ -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: 1430 method paths across 192 capabilities.
9
+ * Coverage: 1431 method paths across 193 capabilities.
10
10
  */
11
11
  import type { MethodRole } from '../auth/viewer-access.js';
12
12
  import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
@@ -46,6 +46,7 @@ import type { recordEntriesCapability } from '../capabilities/record-entries.cap
46
46
  import type { recordingArchiveCapability } from '../capabilities/recording-archive.cap.js';
47
47
  import type { recordingExportCapability } from '../capabilities/recording-export.cap.js';
48
48
  import type { remoteCapability } from '../capabilities/remote.cap.js';
49
+ import type { remoteLayoutComponentsCapability } from '../capabilities/remote-layout-components.cap.js';
49
50
  import type { serverManagementCapability } from '../capabilities/server-management.cap.js';
50
51
  import type { settingsStoreCapability } from '../capabilities/settings-store.cap.js';
51
52
  import type { storageCapability } from '../capabilities/storage.cap.js';
@@ -113,6 +114,7 @@ export interface SystemProxy {
113
114
  readonly recordingArchive: Pick<InferProvider<typeof recordingArchiveCapability>, 'getAvailabilityBatch' | 'getDaysWithRecordingsBatch' | 'getStorageUsage' | 'listOpsLog' | 'pauseForStorageMigration' | 'resumeForStorageMigration' | 'refreshStorageLocationsForMigration' | 'startStorageMigrationMove' | 'getStorageMigrationMoveStatus' | 'cancelStorageMigrationMove' | 'relocateFootage' | 'listRelocateJobs' | 'getRelocateResidue' | 'reconcileLedgerAgainstDisk' | 'cancelRelocateJob' | 'planStorageRebalance' | 'startStorageRebalance' | 'getPlacement' | 'setDevicePlacement'>;
114
115
  readonly recordingExport: Pick<InferProvider<typeof recordingExportCapability>, 'createExport' | 'getExport' | 'cancelExport' | 'deleteExport' | 'getDownloadUrl' | 'readExportBytes'>;
115
116
  readonly remote: Pick<InferProvider<typeof remoteCapability>, 'getConfig' | 'setConfig' | 'listCommands' | 'sendCommand' | 'sendMediaCommand'>;
117
+ readonly remoteLayoutComponents: Pick<InferProvider<typeof remoteLayoutComponentsCapability>, 'listComponents'>;
116
118
  readonly serverManagement: Pick<InferProvider<typeof serverManagementCapability>, 'getServerPackageStatus' | 'checkServerUpdate' | 'applyServerUpdate' | 'installDesktopUpdate' | 'rollbackServerUpdate' | 'restartServer' | 'getLaunchOverrides' | 'setLaunchOverrides'>;
117
119
  readonly settingsStore: Pick<InferProvider<typeof settingsStoreCapability>, 'get' | 'set' | 'query' | 'upsert' | 'upsertMany' | 'insert' | 'insertMany' | 'transact' | 'update' | 'delete' | 'deleteWhere' | 'updateWhere' | 'count' | 'aggregate' | 'histogram' | 'isEmpty' | 'declareCollection'>;
118
120
  readonly storage: Pick<InferProvider<typeof storageCapability>, 'resolve' | 'write' | 'read' | 'exists' | 'list' | 'delete' | 'getAvailableSpace' | 'beginUpload' | 'writeChunk' | 'finalizeUpload' | 'abortUpload' | 'beginDownload' | 'readChunk' | 'endDownload' | 'listLocations' | 'listLocationDeclarations' | 'upsertLocation' | 'deleteLocation' | 'listDrainProgress' | 'testLocation' | 'listProviders' | 'testConfig'>;
package/dist/index.d.ts CHANGED
@@ -175,6 +175,9 @@ export * from './capabilities/index.js';
175
175
  export * from './running-state/defaults.js';
176
176
  export * from './remote/remote-roles.js';
177
177
  export * from './remote/remote-config.js';
178
+ export * from './remote/remote-components.js';
179
+ export * from './remote/remote-layout-ops.js';
180
+ export * from './remote/remote-builtin-components.js';
178
181
  export * from './remote/smartir-draft.js';
179
182
  export * from './template/template-kinds.js';
180
183
  export * from './running-state/from-operation.js';