@camstack/types 1.2.441 → 1.2.443
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 +19 -0
- package/dist/addon.js +1 -1
- package/dist/addon.mjs +1 -1
- package/dist/capabilities/index.d.ts +4 -1
- package/dist/capabilities/node-removal-hook.cap.d.ts +67 -0
- package/dist/capabilities/pipeline-orchestrator.cap.d.ts +1 -2
- package/dist/{composition-DCmtFE-X.js → composition-C0dlyG9U.js} +17 -0
- package/dist/{composition-DpFv_J6D.mjs → composition-bIBW5_13.mjs} +12 -1
- package/dist/ffmpeg/invocation.d.ts +9 -0
- package/dist/generated/addon-api.d.ts +15 -0
- package/dist/generated/capability-router-map.d.ts +5 -2
- package/dist/generated/method-access-map.d.ts +1 -1
- package/dist/index.js +192 -7
- package/dist/index.mjs +189 -8
- package/dist/node.js +1 -1
- package/dist/node.mjs +1 -1
- package/dist/{sleep-DJws6ho7.mjs → sleep-C_u6cEAJ.mjs} +1 -0
- package/dist/{sleep-BpwNJ1Su.js → sleep-E7qAQwTE.js} +1 -0
- package/dist/types/agent-pipeline-settings.d.ts +2 -2
- package/dist/utils/oauth-landing.d.ts +1 -1
- package/dist/vendor-login-proxy/flow-trace.d.ts +29 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,10 +7,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.2.443] - 2026-10-29
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- The vendor login proxy writes a names-only trace line per proxied sign-in request (parameter, form-field and cookie names, never values) to show where a sign-in loses a parameter
|
|
15
|
+
- Added the no_authorization_code reason to the OAuth result page codes
|
|
16
|
+
- Comments on the placement flags now say a role defaults on for every node
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- A node-removal-hook capability: addons are told when the operator forgets a cluster node
|
|
21
|
+
|
|
22
|
+
## [1.2.442] - 2026-10-29
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- A transcode of a local restream starts its first frame sooner (bounded input probe)
|
|
27
|
+
|
|
10
28
|
## [1.2.441] - 2026-10-29
|
|
11
29
|
|
|
12
30
|
### Added
|
|
13
31
|
|
|
32
|
+
- Streams re-encoded for Alexa, HomeKit and other live viewers start sooner because ffmpeg no longer probes the local restream for seconds first
|
|
14
33
|
- New ir-transmitter and remote capabilities for infrared control, and media-player status now says whether its state is reported or assumed
|
|
15
34
|
- Remote: a generic template collection, a remote Customize extension for media players, and media-player commands that run a bound IR/Actions binding first
|
|
16
35
|
|
package/dist/addon.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_sleep = require("./sleep-
|
|
2
|
+
const require_sleep = require("./sleep-E7qAQwTE.js");
|
|
3
3
|
const require_event_category = require("./event-category-E17zaHjN.js");
|
|
4
4
|
const require_err_msg = require("./err-msg-COHgq7Mb.js");
|
|
5
5
|
//#region src/generated/cap-input-defaults.ts
|
package/dist/addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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-
|
|
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-C_u6cEAJ.mjs";
|
|
2
2
|
import { t as EventCategory } from "./event-category-DmZDPDf_.mjs";
|
|
3
3
|
import { a as DeviceType, t as errMsg } from "./err-msg-BCdlR2Li.mjs";
|
|
4
4
|
//#region src/generated/cap-input-defaults.ts
|
|
@@ -70,6 +70,8 @@ export { DiscoveredDeviceSchema, deviceProviderCapability, ProviderStatusSchema,
|
|
|
70
70
|
export { type ClaimOutcome, ClaimOutcomeSchema, type ClaimsListing, ClaimsListingSchema, deviceStateCapability, type FieldClaim, type FieldClaimMode, FieldClaimModeSchema, FieldClaimSchema, } from './device-state.cap.js';
|
|
71
71
|
export type { EmbeddingFailedModel, EmbeddingFailedRequirement, EmbeddingModelFailure, EmbeddingRefusal, EmbeddingRefusalCode, EmbeddingTower, IEmbeddingEncoderProvider, } from './embedding-encoder.cap.js';
|
|
72
72
|
export { EMBEDDING_MODEL_FAILED, EMBEDDING_REQUIREMENTS_FAILED, EMBEDDING_REQUIREMENTS_UNAVAILABLE, EmbeddingFailedModelSchema, EmbeddingFailedRequirementSchema, EmbeddingInfoSchema, EmbeddingRefusalCodeSchema, EmbeddingResultSchema, EmbeddingTowerSchema, embeddingEncoderCapability, embeddingModelFailedError, embeddingModelFailedOf, embeddingRefusalOf, embeddingRequirementsFailedError, embeddingRequirementsUnavailableError, isEmbeddingModelFailed, } from './embedding-encoder.cap.js';
|
|
73
|
+
export type { INodeRemovalHookProvider, NodeRemovedInput, NodeRemovedResult, } from './node-removal-hook.cap.js';
|
|
74
|
+
export { NodeRemovedInputSchema, NodeRemovedResultSchema, nodeRemovalHookCapability, } from './node-removal-hook.cap.js';
|
|
73
75
|
export type { DeviceDataEntry, DeviceRemovedInput, DeviceRemovedResult, IDeviceRemovalHookProvider, } from './device-removal-hook.cap.js';
|
|
74
76
|
export { DeviceDataEntrySchema, DeviceRemovedInputSchema, DeviceRemovedResultSchema, deviceRemovalHookCapability, } from './device-removal-hook.cap.js';
|
|
75
77
|
export type { FailureContribution, IFailureContributionProvider, } from './failure-contribution.cap.js';
|
|
@@ -338,6 +340,7 @@ import type { deviceProviderCapability } from './device-provider.cap.js';
|
|
|
338
340
|
import type { deviceStateCapability } from './device-state.cap.js';
|
|
339
341
|
import type { deviceStatusCapability } from './device-status.cap.js';
|
|
340
342
|
import type { deviceRemovalHookCapability } from './device-removal-hook.cap.js';
|
|
343
|
+
import type { nodeRemovalHookCapability } from './node-removal-hook.cap.js';
|
|
341
344
|
import type { dishwasherCapability } from './dishwasher.cap.js';
|
|
342
345
|
import type { doorbellCapability } from './doorbell.cap.js';
|
|
343
346
|
import type { embeddingEncoderCapability } from './embedding-encoder.cap.js';
|
|
@@ -455,6 +458,6 @@ import type { trainingProviderCapability } from './training-provider.cap.js';
|
|
|
455
458
|
import type { zoneAnalyticsCapability } from './zone-analytics.cap.js';
|
|
456
459
|
import type { zoneRulesCapability } from './zone-rules.cap.js';
|
|
457
460
|
import type { zonesCapability } from './zones.cap.js';
|
|
458
|
-
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 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;
|
|
461
|
+
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 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;
|
|
459
462
|
export type CapabilityName = AnyCapability['name'];
|
|
460
463
|
export type ITypedReadinessRegistry = IReadinessRegistry<CapabilityName>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `node-removal-hook` — the reliable way an addon learns a cluster node was
|
|
3
|
+
* FORGOTTEN, so it can remove or re-point what it keeps for that node. The
|
|
4
|
+
* node-scoped twin of `device-removal-hook` (D865); same shape, same rules.
|
|
5
|
+
*
|
|
6
|
+
* ## Why not "the node is absent"
|
|
7
|
+
*
|
|
8
|
+
* A node missing from topology is offline, restarting or not yet re-registered —
|
|
9
|
+
* it is not forgotten. Deleting node-scoped data from absence destroys a live
|
|
10
|
+
* node's configuration on any failed or partial read (D49). So the hook is
|
|
11
|
+
* driven by a TOMBSTONE the hub records when the operator forgets a node
|
|
12
|
+
* (`AgentRegistryService.forgetClusterNode`); nothing else produces one.
|
|
13
|
+
*
|
|
14
|
+
* ## The pieces
|
|
15
|
+
*
|
|
16
|
+
* 1. The hub records a tombstone `{ nodeId, removedAt, pending }` before it calls
|
|
17
|
+
* anyone. `pending` is the set of implementers that have not yet acknowledged.
|
|
18
|
+
* 2. The hub calls `onNodeRemoved` on EVERY provider of this collection, one by
|
|
19
|
+
* one, with bounded retries, logged; an acknowledgement removes the
|
|
20
|
+
* implementer from `pending`.
|
|
21
|
+
* 3. The hub re-drives still-pending tombstones at boot, so an implementer that
|
|
22
|
+
* was down at forget time is told when it is back.
|
|
23
|
+
*
|
|
24
|
+
* ## Contract for an implementer
|
|
25
|
+
*
|
|
26
|
+
* - **Idempotent.** Called again by a retry and by the boot re-drive. A node with
|
|
27
|
+
* nothing left answers zero counts.
|
|
28
|
+
* - **One key per store** in `counts`, rows changed per store, so the log line
|
|
29
|
+
* can say where the data was.
|
|
30
|
+
* - **Re-point or remove, never guess.** A row that merely MENTIONS the node as
|
|
31
|
+
* a preference is re-pointed to "unset"; a row that only means something on
|
|
32
|
+
* that node (a runtime bound to it) is removed.
|
|
33
|
+
* - A provider that cannot tell is allowed to throw; the caller retries it.
|
|
34
|
+
*/
|
|
35
|
+
import { z } from 'zod';
|
|
36
|
+
import { type InferProvider } from './capability-definition.js';
|
|
37
|
+
/** What a hook is told about the removal. */
|
|
38
|
+
export declare const NodeRemovedInputSchema: z.ZodObject<{
|
|
39
|
+
nodeId: z.ZodString;
|
|
40
|
+
removedAt: z.ZodNumber;
|
|
41
|
+
}, z.core.$strip>;
|
|
42
|
+
export type NodeRemovedInput = z.infer<typeof NodeRemovedInputSchema>;
|
|
43
|
+
/** Rows changed (removed or re-pointed), per store this implementer owns. */
|
|
44
|
+
export declare const NodeRemovedResultSchema: z.ZodObject<{
|
|
45
|
+
counts: z.ZodRecord<z.ZodString, z.ZodNumber>;
|
|
46
|
+
}, z.core.$strip>;
|
|
47
|
+
export type NodeRemovedResult = z.infer<typeof NodeRemovedResultSchema>;
|
|
48
|
+
export declare const nodeRemovalHookCapability: {
|
|
49
|
+
readonly name: 'node-removal-hook';
|
|
50
|
+
readonly scope: 'system';
|
|
51
|
+
readonly mode: 'collection';
|
|
52
|
+
readonly internal: true;
|
|
53
|
+
readonly methods: {
|
|
54
|
+
/** Remove or re-point everything this addon keeps for the forgotten node. Idempotent. */
|
|
55
|
+
readonly onNodeRemoved: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
56
|
+
nodeId: z.ZodString;
|
|
57
|
+
removedAt: z.ZodNumber;
|
|
58
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
59
|
+
counts: z.ZodRecord<z.ZodString, z.ZodNumber>;
|
|
60
|
+
}, z.core.$strip>, "mutation">;
|
|
61
|
+
};
|
|
62
|
+
/** In-process only — enumerated through `addons.listCapabilityProviders`. */
|
|
63
|
+
readonly mount: {
|
|
64
|
+
readonly kind: 'skip';
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
export type INodeRemovalHookProvider = InferProvider<typeof nodeRemovalHookCapability>;
|
|
@@ -1164,8 +1164,7 @@ export declare const pipelineOrchestratorCapability: {
|
|
|
1164
1164
|
* replaced the four flat orchestrator lists (`enabledNodes`,
|
|
1165
1165
|
* `enabledDecoderNodes`, `enabledAudioNodes`, `remoteSourcingNodes`).
|
|
1166
1166
|
* Each flag is optional in the patch: omit a flag to leave it unchanged,
|
|
1167
|
-
* pass `null` to reset it to the
|
|
1168
|
-
* other node → not). Detection/audio eligibility is derived from these
|
|
1167
|
+
* pass `null` to reset it to the default (ON for every node). Detection/audio eligibility is derived from these
|
|
1169
1168
|
* flags across the cluster; changing them re-derives the enabled sets
|
|
1170
1169
|
* and reconciles dispatch immediately. There is NO separate decode flag:
|
|
1171
1170
|
* decode is always co-located with its frame consumer, so decode
|
|
@@ -459,6 +459,15 @@ function audioPlanFromEncodeProfile(audio) {
|
|
|
459
459
|
* plane. Width / height / fps / bitrate in the profile are a downstream BUDGET,
|
|
460
460
|
* not a forced rescale.
|
|
461
461
|
*/
|
|
462
|
+
/**
|
|
463
|
+
* Probe bound for an input that is one of OUR OWN RTSP restreams. Not zero: a
|
|
464
|
+
* zero-length probe makes ffmpeg trust the SDP completely, and a restream that
|
|
465
|
+
* announces a track it never sends would leave the mapping wrong unnoticed.
|
|
466
|
+
*/
|
|
467
|
+
var RESTREAM_INPUT_PROBE = {
|
|
468
|
+
analyzeDurationUs: 2e5,
|
|
469
|
+
probeSizeBytes: 64 * 1024
|
|
470
|
+
};
|
|
462
471
|
function invocationFromEncodeProfile(input) {
|
|
463
472
|
const v = input.profile.video;
|
|
464
473
|
const shouldCopy = v.codec === "copy" || input.forceReencode !== true && v.codec === input.sourceCodec;
|
|
@@ -496,6 +505,8 @@ function invocationFromEncodeProfile(input) {
|
|
|
496
505
|
url: input.sourceUrl,
|
|
497
506
|
rtspTransport: "tcp",
|
|
498
507
|
fflags: ["+discardcorrupt"],
|
|
508
|
+
analyzeDurationUs: RESTREAM_INPUT_PROBE.analyzeDurationUs,
|
|
509
|
+
probeSizeBytes: RESTREAM_INPUT_PROBE.probeSizeBytes,
|
|
499
510
|
...input.profile.inputArgs?.length ? { extraArgs: input.profile.inputArgs } : {}
|
|
500
511
|
},
|
|
501
512
|
video,
|
|
@@ -3837,6 +3848,12 @@ Object.defineProperty(exports, "RESET_PERIODS", {
|
|
|
3837
3848
|
return RESET_PERIODS;
|
|
3838
3849
|
}
|
|
3839
3850
|
});
|
|
3851
|
+
Object.defineProperty(exports, "RESTREAM_INPUT_PROBE", {
|
|
3852
|
+
enumerable: true,
|
|
3853
|
+
get: function() {
|
|
3854
|
+
return RESTREAM_INPUT_PROBE;
|
|
3855
|
+
}
|
|
3856
|
+
});
|
|
3840
3857
|
Object.defineProperty(exports, "ROLLING_SPANS", {
|
|
3841
3858
|
enumerable: true,
|
|
3842
3859
|
get: function() {
|
|
@@ -459,6 +459,15 @@ function audioPlanFromEncodeProfile(audio) {
|
|
|
459
459
|
* plane. Width / height / fps / bitrate in the profile are a downstream BUDGET,
|
|
460
460
|
* not a forced rescale.
|
|
461
461
|
*/
|
|
462
|
+
/**
|
|
463
|
+
* Probe bound for an input that is one of OUR OWN RTSP restreams. Not zero: a
|
|
464
|
+
* zero-length probe makes ffmpeg trust the SDP completely, and a restream that
|
|
465
|
+
* announces a track it never sends would leave the mapping wrong unnoticed.
|
|
466
|
+
*/
|
|
467
|
+
var RESTREAM_INPUT_PROBE = {
|
|
468
|
+
analyzeDurationUs: 2e5,
|
|
469
|
+
probeSizeBytes: 64 * 1024
|
|
470
|
+
};
|
|
462
471
|
function invocationFromEncodeProfile(input) {
|
|
463
472
|
const v = input.profile.video;
|
|
464
473
|
const shouldCopy = v.codec === "copy" || input.forceReencode !== true && v.codec === input.sourceCodec;
|
|
@@ -496,6 +505,8 @@ function invocationFromEncodeProfile(input) {
|
|
|
496
505
|
url: input.sourceUrl,
|
|
497
506
|
rtspTransport: "tcp",
|
|
498
507
|
fflags: ["+discardcorrupt"],
|
|
508
|
+
analyzeDurationUs: RESTREAM_INPUT_PROBE.analyzeDurationUs,
|
|
509
|
+
probeSizeBytes: RESTREAM_INPUT_PROBE.probeSizeBytes,
|
|
499
510
|
...input.profile.inputArgs?.length ? { extraArgs: input.profile.inputArgs } : {}
|
|
500
511
|
},
|
|
501
512
|
video,
|
|
@@ -3339,4 +3350,4 @@ function featureSources(feature) {
|
|
|
3339
3350
|
return featureFieldEntries(feature).map((e) => e.source);
|
|
3340
3351
|
}
|
|
3341
3352
|
//#endregion
|
|
3342
|
-
export { GroupTemplateIdSchema as $, validateExpressionSource as $t, composedDeviceStableId as A, sliceActiveValue as An, planResetTier as At, AGGREGATE_REDUCERS as B, AUDIO_PRESETS as Bn, wattMillisecondsToKwh as Bt, CompositionSeriesSourceSchema as C, SOURCE_CAPS as Cn, RollingWindowSchema as Ct, MAX_COMPOSITION_FIELDS_PER_FEATURE as D, evaluateSensorEdge as Dn, nextLocalMidnight as Dt, MAX_COMPOSITION_FEATURES as E, SOURCE_DEVICE_TYPES as En, maxDurationMs as Et, compositionSourceKey as F, FFMPEG_RELEASE as Fn, STATISTIC_STATS as Ft, ArithmeticHelperSpecSchema as G,
|
|
3353
|
+
export { GroupTemplateIdSchema as $, validateExpressionSource as $t, composedDeviceStableId as A, sliceActiveValue as An, planResetTier as At, AGGREGATE_REDUCERS as B, AUDIO_PRESETS as Bn, wattMillisecondsToKwh as Bt, CompositionSeriesSourceSchema as C, SOURCE_CAPS as Cn, RollingWindowSchema as Ct, MAX_COMPOSITION_FIELDS_PER_FEATURE as D, evaluateSensorEdge as Dn, nextLocalMidnight as Dt, MAX_COMPOSITION_FEATURES as E, SOURCE_DEVICE_TYPES as En, maxDurationMs as Et, compositionSourceKey as F, FFMPEG_RELEASE as Fn, STATISTIC_STATS as Ft, ArithmeticHelperSpecSchema as G, buildInputArgs as Gn, isApplianceKind as Gt, ActiveCriterionSchema as H, audioPlanFromEncodeProfile as Hn, APPLIANCE_KINDS as Ht, featureFieldEntries as I, getFfmpegArtifact as In, evaluateDerivative as It, DerivativeHelperSpecSchema as J, isSoftwareDecode as Jn, cloneStatefulExpressionMemory as Jt, BINARY_AGGREGATES as K, buildVideoArgs as Kn, sourcePickForAppliance as Kt, featureSources as L, getFfmpegDownloadUrl as Ln, evaluateStatistic as Lt, compositionItemFieldPath as M, FFMPEG_PATH_ENV as Mn, rollingDurationMs as Mt, compositionReadKey as N, chooseFfmpegBinary as Nn, statisticCadenceMs as Nt, MAX_COMPOSITION_ITEMS as O, evaluateSensorLevelEdge as On, openReset as Ot, compositionSliceKey as P, ffmpegBinaryName as Pn, SERIES_KINDS as Pt, GroupHelperSpecSchema as Q, toExpressionValue as Qt, fieldReads as R, canonicalHash as Rn, integrateReading as Rt, CompositionSchema as S, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as Sn, ROLLING_SPANS as St, MAX_COMPOSITION_CODE_LENGTH as T, SOURCE_CAP_CHANGED_AT_FIELD as Tn, integralCadenceMs as Tt, AggregateReducerSchema as U, buildAudioArgs as Un, APPLIANCE_TEMPLATE_ID as Ut, ARITHMETIC_OPS as V, RESTREAM_INPUT_PROBE as Vn, APPLIANCE_DEFAULTS as Vt, ApplianceHelperSpecSchema as W, buildFfmpegArgs as Wn, applianceDeviceType as Wt, ExpressionHelperSpecSchema as X, pickVideoEncoder as Xn, evaluateExpressionSource as Xt, EXPRESSION_OUTPUTS as Y, logBannerArgs as Yn, createStatefulExpressionMemory as Yt, GROUP_TEMPLATE_IDS as Z, resolveStreamMaps as Zn, evaluateStatefulExpressionCall as Zt, CompositionFromSourceSchema as _, evaluateCount as _n, HISTORY_TIERS as _t, CUSTOMIZATION_BLOCK_NAME_PREFIX as a, tokenize as an, NUMERIC_AGGREGATES as at, CompositionNewTargetSchema as b, ExpressionEvalError as bn, MIN_CUSTOM_MINUTES as bt, CompositionCodeSourceSchema as c, MAX_EXPRESSION_AST_NODES as cn, helperMembers as ct, CompositionExpressionSourceSchema as d, MAX_EXPRESSION_EVAL_STEPS as dn, CALENDAR_PERIODS as dt, createExpressionScope as en, HelperMemberSchema as et, CompositionFeatureSchema as f, MAX_EXPRESSION_SOURCE_LENGTH as fn, CalendarWindowSchema as ft, CompositionForwardCommandSchema as g, disarmRoseMemory as gn, HISTORY_SLOW_MS as gt, CompositionFieldsFeatureSchema as h, EXPRESSION_BUILTIN_NAMES as hn, HISTORY_FAST_MS as ht, COMPOSITION_ITEM_KEY_RE as i, parseExpression as in, MAX_HELPER_MEMBERS as it, compositionFeatureEnabled as j, sliceChangedAt as jn, planStatisticTier as jt, composedDeviceRef as k, isSourceCap as kn, openStatistic as kt, CompositionCommandTargetSchema as l, MAX_EXPRESSION_BINDINGS as ln, isHistoryHelper as lt, CompositionFieldSourceSchema as m, EXPRESSION_BUILTINS as mn, DEFAULT_HISTORY_RETENTION as mt, COMPOSER_ADDON_ID as n, compileExpression as nn, INTEGRAL_OUTPUTS as nt, CompositionAggregateSourceSchema as o, EXPRESSION_COMPILE_CACHE_CAPACITY as on, StatisticHelperSpecSchema as ot, CompositionFieldReadSchema as p, RESERVED_BINDING_NAMES as pn, DAY_MS as pt, DERIVATIVE_UNITS as q, invocationFromEncodeProfile as qn, EXPRESSION_INJECTED_NOW as qt, COMPOSITION_ITEM_ARRAY_PATH as r, compileExpressionSafe as rn, IntegralHelperSpecSchema as rt, CompositionBindingSchema as s, EXPRESSION_IDENTIFIER_RE as sn, ThresholdHelperSpecSchema as st, COMPOSED_DEVICE_STABLE_ID_PREFIX as t, evaluateAst as tn, HelperSpecSchema as tt, CompositionExistingTargetSchema as u, MAX_EXPRESSION_CALL_ARGS as un, CompositionSourceRefSchema as ut, CompositionItemEntrySchema as v, evaluateRose as vn, HOUR_MS as vt, CompositionTargetSchema as w, SOURCE_CAP_ACTIVE_FIELD as wn, StatisticWindowSchema as wt, CompositionPassthroughFeatureSchema as x, ExpressionParseError as xn, RESET_PERIODS as xt, CompositionLiteralBindingSchema as y, isStatefulBuiltin as yn, MINUTE_MS as yt, ACTIVE_CRITERIA as z, Fmp4BoxSplitter as zn, KWH_PER_WATT_MS as zt };
|
|
@@ -570,4 +570,13 @@ export interface EncodeProfileInvocationInput {
|
|
|
570
570
|
* plane. Width / height / fps / bitrate in the profile are a downstream BUDGET,
|
|
571
571
|
* not a forced rescale.
|
|
572
572
|
*/
|
|
573
|
+
/**
|
|
574
|
+
* Probe bound for an input that is one of OUR OWN RTSP restreams. Not zero: a
|
|
575
|
+
* zero-length probe makes ffmpeg trust the SDP completely, and a restream that
|
|
576
|
+
* announces a track it never sends would leave the mapping wrong unnoticed.
|
|
577
|
+
*/
|
|
578
|
+
export declare const RESTREAM_INPUT_PROBE: {
|
|
579
|
+
readonly analyzeDurationUs: 200000;
|
|
580
|
+
readonly probeSizeBytes: number;
|
|
581
|
+
};
|
|
573
582
|
export declare function invocationFromEncodeProfile(input: EncodeProfileInvocationInput): FfmpegInvocation;
|
|
@@ -91,6 +91,7 @@ import type { navigationCapability } from '../capabilities/navigation.cap.js';
|
|
|
91
91
|
import type { networkAccessCapability } from '../capabilities/network-access.cap.js';
|
|
92
92
|
import type { networkQualityCapability } from '../capabilities/network-quality.cap.js';
|
|
93
93
|
import type { nodeCertificatesCapability } from '../capabilities/node-certificates.cap.js';
|
|
94
|
+
import type { nodeRemovalHookCapability } from '../capabilities/node-removal-hook.cap.js';
|
|
94
95
|
import type { nodesCapability } from '../capabilities/nodes.cap.js';
|
|
95
96
|
import type { notificationOutputCapability } from '../capabilities/notification-output.cap.js';
|
|
96
97
|
import type { notificationRulesCapability } from '../capabilities/notification-rules.cap.js';
|
|
@@ -5694,6 +5695,20 @@ export type AppRouter = TrpcCoreRouter<{
|
|
|
5694
5695
|
meta: object;
|
|
5695
5696
|
}>;
|
|
5696
5697
|
}>>;
|
|
5698
|
+
nodeRemovalHook: TRPCBuiltRouter<{
|
|
5699
|
+
ctx: TrpcContext;
|
|
5700
|
+
meta: object;
|
|
5701
|
+
errorShape: AugmentedErrorShape;
|
|
5702
|
+
transformer: true;
|
|
5703
|
+
}, TRPCDecorateCreateRouterOptions<{
|
|
5704
|
+
onNodeRemoved: TRPCMutationProcedure<{
|
|
5705
|
+
input: {
|
|
5706
|
+
[x: string]: unknown;
|
|
5707
|
+
} & z.input<typeof nodeRemovalHookCapability.methods.onNodeRemoved.input>;
|
|
5708
|
+
output: z.infer<typeof nodeRemovalHookCapability.methods.onNodeRemoved.output>;
|
|
5709
|
+
meta: object;
|
|
5710
|
+
}>;
|
|
5711
|
+
}>>;
|
|
5697
5712
|
nodes: TRPCBuiltRouter<{
|
|
5698
5713
|
ctx: TrpcContext;
|
|
5699
5714
|
meta: object;
|
|
@@ -113,6 +113,7 @@ export { networkAccessCapability } from '../capabilities/network-access.cap.js';
|
|
|
113
113
|
export { networkLinkCapability } from '../capabilities/network-link.cap.js';
|
|
114
114
|
export { networkQualityCapability } from '../capabilities/network-quality.cap.js';
|
|
115
115
|
export { nodeCertificatesCapability } from '../capabilities/node-certificates.cap.js';
|
|
116
|
+
export { nodeRemovalHookCapability } from '../capabilities/node-removal-hook.cap.js';
|
|
116
117
|
export { nodesCapability } from '../capabilities/nodes.cap.js';
|
|
117
118
|
export { notificationOutputCapability } from '../capabilities/notification-output.cap.js';
|
|
118
119
|
export { notificationRulesCapability } from '../capabilities/notification-rules.cap.js';
|
|
@@ -304,6 +305,7 @@ export declare const CAPABILITY_NAMES: {
|
|
|
304
305
|
readonly networkLink: 'network-link';
|
|
305
306
|
readonly networkQuality: 'network-quality';
|
|
306
307
|
readonly nodeCertificates: 'node-certificates';
|
|
308
|
+
readonly nodeRemovalHook: 'node-removal-hook';
|
|
307
309
|
readonly nodes: 'nodes';
|
|
308
310
|
readonly notificationOutput: 'notification-output';
|
|
309
311
|
readonly notificationRules: 'notification-rules';
|
|
@@ -508,6 +510,7 @@ export interface CapabilityRouterMap<TRouter = unknown> {
|
|
|
508
510
|
readonly networkLink: TRouter;
|
|
509
511
|
readonly networkQuality: TRouter;
|
|
510
512
|
readonly nodeCertificates: TRouter;
|
|
513
|
+
readonly nodeRemovalHook: TRouter;
|
|
511
514
|
readonly nodes: TRouter;
|
|
512
515
|
readonly notificationOutput: TRouter;
|
|
513
516
|
readonly notificationRules: TRouter;
|
|
@@ -588,8 +591,8 @@ export interface CapabilityRouterMap<TRouter = unknown> {
|
|
|
588
591
|
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', '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'];
|
|
589
592
|
/** Union of singleton capability names (literal string union). */
|
|
590
593
|
export type SingletonCapabilityName = typeof SINGLETON_CAPABILITY_NAMES[number];
|
|
591
|
-
/** Capability names whose mode is `collection` (
|
|
592
|
-
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', 'notification-output', 'oauth-integration', 'recording', 'smtp-provider', 'storage-evictable', 'storage-occupancy', 'storage-provider', 'template', 'training-provider', 'turn-provider', 'user-passkeys', 'videoclips'];
|
|
594
|
+
/** Capability names whose mode is `collection` (38 caps). */
|
|
595
|
+
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'];
|
|
593
596
|
/** Union of collection capability names (literal string union). */
|
|
594
597
|
export type CollectionCapabilityName = typeof COLLECTION_CAPABILITY_NAMES[number];
|
|
595
598
|
/** Capability mode lookup at runtime — mirrors the `.cap.ts` definitions. */
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* scope+access check inside `protectedProcedure` (see
|
|
7
7
|
* `server/backend/src/api/trpc/trpc.middleware.ts`).
|
|
8
8
|
*
|
|
9
|
-
* Coverage:
|
|
9
|
+
* Coverage: 1417 method paths across 191 capabilities.
|
|
10
10
|
*/
|
|
11
11
|
import type { MethodRole } from '../auth/viewer-access.js';
|
|
12
12
|
import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
|