@camstack/types 1.2.442 → 1.2.444

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 (61) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/addon.d.ts +5 -1
  3. package/dist/addon.js +21 -5
  4. package/dist/addon.mjs +17 -6
  5. package/dist/automation/export-entities.d.ts +98 -0
  6. package/dist/capabilities/capability-definition.d.ts +1 -1
  7. package/dist/capabilities/composer.cap.d.ts +34 -0
  8. package/dist/capabilities/consumables.cap.d.ts +4 -5
  9. package/dist/capabilities/core-blocks.cap.d.ts +244 -0
  10. package/dist/capabilities/device-export.cap.d.ts +111 -1
  11. package/dist/capabilities/index.d.ts +8 -3
  12. package/dist/capabilities/metrics-provider.cap.d.ts +16 -16
  13. package/dist/capabilities/node-removal-hook.cap.d.ts +67 -0
  14. package/dist/capabilities/nodes.cap.d.ts +2 -2
  15. package/dist/capabilities/pet-fountain.cap.d.ts +138 -0
  16. package/dist/capabilities/pipeline-executor.cap.d.ts +6 -22
  17. package/dist/capabilities/pipeline-orchestrator.cap.d.ts +3 -4
  18. package/dist/capabilities/pipeline-runner.cap.d.ts +2 -2
  19. package/dist/capabilities/pipeline-step-input.d.ts +33 -0
  20. package/dist/client.js +817 -798
  21. package/dist/client.mjs +817 -798
  22. package/dist/composition/composition-items.d.ts +3 -3
  23. package/dist/composition/composition-report.d.ts +17 -0
  24. package/dist/composition/composition.d.ts +68 -1
  25. package/dist/composition/index.d.ts +2 -0
  26. package/dist/composition/presets/pet-fountain.d.ts +36 -0
  27. package/dist/composition/validate-forward.d.ts +31 -0
  28. package/dist/{composition-C0dlyG9U.js → composition-CO6Sak-s.js} +49 -5
  29. package/dist/{composition-bIBW5_13.mjs → composition-kSuOifuG.mjs} +32 -6
  30. package/dist/device/cap-vocabulary/entries/appliances.d.ts +1 -1
  31. package/dist/device/device-control-resolution.d.ts +1 -1
  32. package/dist/device/device-type.d.ts +4 -0
  33. package/dist/{err-msg-BCdlR2Li.mjs → err-msg-DWXWc0Di.mjs} +4 -0
  34. package/dist/{err-msg-COHgq7Mb.js → err-msg-EJhsFHqa.js} +4 -0
  35. package/dist/generated/addon-api.d.ts +149 -32
  36. package/dist/generated/addon-cap-facts.d.ts +1 -1
  37. package/dist/generated/cap-status-types.d.ts +3 -1
  38. package/dist/generated/capability-router-map.d.ts +10 -4
  39. package/dist/generated/collection-array-methods.d.ts +2 -2
  40. package/dist/generated/customize-catalog.d.ts +1 -1
  41. package/dist/generated/device-local-state.d.ts +3 -0
  42. package/dist/generated/device-proxy.d.ts +3 -0
  43. package/dist/generated/device-scoped-caps.d.ts +1 -1
  44. package/dist/generated/history-catalog.d.ts +1 -1
  45. package/dist/generated/method-access-map.d.ts +1 -1
  46. package/dist/generated/method-device-selectors.d.ts +1 -1
  47. package/dist/generated/runtime-state-durability.d.ts +1 -1
  48. package/dist/generated/system-proxy.d.ts +1 -1
  49. package/dist/index.d.ts +1 -0
  50. package/dist/index.js +1616 -607
  51. package/dist/index.mjs +1581 -596
  52. package/dist/interfaces/agent.d.ts +6 -2
  53. package/dist/interfaces/event-bus.d.ts +1 -1
  54. package/dist/node.js +2 -2
  55. package/dist/node.mjs +2 -2
  56. package/dist/{sleep-DJws6ho7.mjs → sleep-6eG9C8Xl.mjs} +224 -72
  57. package/dist/{sleep-BpwNJ1Su.js → sleep-UXDHn-oJ.js} +247 -71
  58. package/dist/types/agent-pipeline-settings.d.ts +2 -2
  59. package/dist/utils/oauth-landing.d.ts +1 -1
  60. package/dist/vendor-login-proxy/flow-trace.d.ts +29 -0
  61. package/package.json +1 -1
@@ -57,6 +57,63 @@ declare const ExposeInputSchema: z.ZodObject<{
57
57
  declare const UnexposeInputSchema: z.ZodObject<{
58
58
  deviceId: z.ZodString;
59
59
  }, z.core.$strip>;
60
+ /**
61
+ * What an exporter may expose besides devices (D968). An action and a
62
+ * notification target are LIST ENTRIES, never devices (D954): they enter an
63
+ * exporter's own selection, not the device registry.
64
+ */
65
+ declare const ExportEntityKindSchema: z.ZodEnum<{
66
+ action: "action";
67
+ device: "device";
68
+ notifier: "notifier";
69
+ }>;
70
+ declare const ExportEntityRefSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
71
+ kind: z.ZodLiteral<"device">;
72
+ deviceId: z.ZodString;
73
+ }, z.core.$strip>, z.ZodObject<{
74
+ kind: z.ZodLiteral<"action">;
75
+ actionId: z.ZodString;
76
+ }, z.core.$strip>, z.ZodObject<{
77
+ kind: z.ZodLiteral<"notifier">;
78
+ targetId: z.ZodString;
79
+ }, z.core.$strip>], "kind">;
80
+ declare const ExposedEntitySchema: z.ZodObject<{
81
+ entity: z.ZodDiscriminatedUnion<[z.ZodObject<{
82
+ kind: z.ZodLiteral<"device">;
83
+ deviceId: z.ZodString;
84
+ }, z.core.$strip>, z.ZodObject<{
85
+ kind: z.ZodLiteral<"action">;
86
+ actionId: z.ZodString;
87
+ }, z.core.$strip>, z.ZodObject<{
88
+ kind: z.ZodLiteral<"notifier">;
89
+ targetId: z.ZodString;
90
+ }, z.core.$strip>], "kind">;
91
+ exposedAs: z.ZodOptional<z.ZodString>;
92
+ }, z.core.$strip>;
93
+ declare const ExposeEntityInputSchema: z.ZodObject<{
94
+ entity: z.ZodDiscriminatedUnion<[z.ZodObject<{
95
+ kind: z.ZodLiteral<"device">;
96
+ deviceId: z.ZodString;
97
+ }, z.core.$strip>, z.ZodObject<{
98
+ kind: z.ZodLiteral<"action">;
99
+ actionId: z.ZodString;
100
+ }, z.core.$strip>, z.ZodObject<{
101
+ kind: z.ZodLiteral<"notifier">;
102
+ targetId: z.ZodString;
103
+ }, z.core.$strip>], "kind">;
104
+ }, z.core.$strip>;
105
+ declare const UnexposeEntityInputSchema: z.ZodObject<{
106
+ entity: z.ZodDiscriminatedUnion<[z.ZodObject<{
107
+ kind: z.ZodLiteral<"device">;
108
+ deviceId: z.ZodString;
109
+ }, z.core.$strip>, z.ZodObject<{
110
+ kind: z.ZodLiteral<"action">;
111
+ actionId: z.ZodString;
112
+ }, z.core.$strip>, z.ZodObject<{
113
+ kind: z.ZodLiteral<"notifier">;
114
+ targetId: z.ZodString;
115
+ }, z.core.$strip>], "kind">;
116
+ }, z.core.$strip>;
60
117
  export declare const deviceExportCapability: {
61
118
  readonly name: 'device-export';
62
119
  readonly scope: 'system';
@@ -124,7 +181,60 @@ export declare const deviceExportCapability: {
124
181
  readonly unexposeDevice: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
125
182
  deviceId: z.ZodString;
126
183
  }, z.core.$strip>, z.ZodVoid, "mutation">;
184
+ readonly listSupportedEntityKinds: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodArray<z.ZodEnum<{
185
+ action: "action";
186
+ device: "device";
187
+ notifier: "notifier";
188
+ }>>, import("./capability-definition.js").CapabilityMethodKind> & {
189
+ readonly providerOptional: true;
190
+ };
191
+ readonly listExposedEntities: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodArray<z.ZodObject<{
192
+ entity: z.ZodDiscriminatedUnion<[z.ZodObject<{
193
+ kind: z.ZodLiteral<"device">;
194
+ deviceId: z.ZodString;
195
+ }, z.core.$strip>, z.ZodObject<{
196
+ kind: z.ZodLiteral<"action">;
197
+ actionId: z.ZodString;
198
+ }, z.core.$strip>, z.ZodObject<{
199
+ kind: z.ZodLiteral<"notifier">;
200
+ targetId: z.ZodString;
201
+ }, z.core.$strip>], "kind">;
202
+ exposedAs: z.ZodOptional<z.ZodString>;
203
+ }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind> & {
204
+ readonly providerOptional: true;
205
+ };
206
+ readonly exposeEntity: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
207
+ entity: z.ZodDiscriminatedUnion<[z.ZodObject<{
208
+ kind: z.ZodLiteral<"device">;
209
+ deviceId: z.ZodString;
210
+ }, z.core.$strip>, z.ZodObject<{
211
+ kind: z.ZodLiteral<"action">;
212
+ actionId: z.ZodString;
213
+ }, z.core.$strip>, z.ZodObject<{
214
+ kind: z.ZodLiteral<"notifier">;
215
+ targetId: z.ZodString;
216
+ }, z.core.$strip>], "kind">;
217
+ }, z.core.$strip>, z.ZodVoid, "mutation"> & {
218
+ readonly providerOptional: true;
219
+ };
220
+ readonly unexposeEntity: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
221
+ entity: z.ZodDiscriminatedUnion<[z.ZodObject<{
222
+ kind: z.ZodLiteral<"device">;
223
+ deviceId: z.ZodString;
224
+ }, z.core.$strip>, z.ZodObject<{
225
+ kind: z.ZodLiteral<"action">;
226
+ actionId: z.ZodString;
227
+ }, z.core.$strip>, z.ZodObject<{
228
+ kind: z.ZodLiteral<"notifier">;
229
+ targetId: z.ZodString;
230
+ }, z.core.$strip>], "kind">;
231
+ }, z.core.$strip>, z.ZodVoid, "mutation"> & {
232
+ readonly providerOptional: true;
233
+ };
127
234
  };
128
235
  };
129
236
  export type IDeviceExportProvider = InferProvider<typeof deviceExportCapability>;
130
- export { DeviceExportStatusSchema, ExportSetupSchema, ExportSetupFieldSchema, ExposedDeviceSchema, ExposeInputSchema, UnexposeInputSchema, };
237
+ export { DeviceExportStatusSchema, ExportSetupSchema, ExportSetupFieldSchema, ExposedDeviceSchema, ExposeInputSchema, UnexposeInputSchema, ExportEntityKindSchema, ExportEntityRefSchema, ExposedEntitySchema, ExposeEntityInputSchema, UnexposeEntityInputSchema, };
238
+ export type ExportEntityKind = z.infer<typeof ExportEntityKindSchema>;
239
+ export type ExportEntityRef = z.infer<typeof ExportEntityRefSchema>;
240
+ export type ExposedEntity = z.infer<typeof ExposedEntitySchema>;
@@ -60,8 +60,8 @@ export { detectionPipelineCapability, type IDetectionPipelineProvider, } from '.
60
60
  export { type AdminLinkTarget, AdminLinkTargetEnum, type DeviceAdminLink, DeviceAdminLinkSchema, deviceAdminLinkCapability, type IDeviceAdminLinkProvider, } from './device-admin-link.cap.js';
61
61
  export { buildDeviceAdminUrl, type DeviceAdminBase, type DeviceAdminBaseRefusal, type DeviceAdminBaseResult, type DeviceAdminScheme, type DeviceAdminUrlParts, type DeviceAdminUrlRefusal, type DeviceAdminUrlResult, parseAdminBase, } from './device-admin-link-url.js';
62
62
  export { AdoptInputSchema as AdoptionAdoptInputSchema, type AdoptionFilter, AdoptionFilterSchema, type AdoptionStatus, AdoptionStatusSchema, AdoptResultSchema as AdoptionAdoptResultSchema, CandidateQueryFilterSchema, deviceAdoptionCapability, GetCandidateInputSchema as AdoptionGetCandidateInputSchema, type IDeviceAdoptionProvider, ListCandidatesInputSchema as AdoptionListCandidatesInputSchema, ListCandidatesOutputSchema as AdoptionListCandidatesOutputSchema, ReleaseInputSchema as AdoptionReleaseInputSchema, } from './device-adoption.cap.js';
63
- export type { IDeviceExportProvider } from './device-export.cap.js';
64
- export { DeviceExportStatusSchema, deviceExportCapability, ExportSetupFieldSchema, ExportSetupSchema, ExposedDeviceSchema, ExposeInputSchema as DeviceExportExposeInputSchema, UnexposeInputSchema as DeviceExportUnexposeInputSchema, } from './device-export.cap.js';
63
+ export type { ExportEntityKind, ExportEntityRef, ExposedEntity, IDeviceExportProvider, } from './device-export.cap.js';
64
+ export { DeviceExportStatusSchema, deviceExportCapability, ExportEntityKindSchema, ExportEntityRefSchema, ExposedEntitySchema, ExposeEntityInputSchema, UnexposeEntityInputSchema, ExportSetupFieldSchema, ExportSetupSchema, ExposedDeviceSchema, ExposeInputSchema as DeviceExportExposeInputSchema, UnexposeInputSchema as DeviceExportUnexposeInputSchema, } from './device-export.cap.js';
65
65
  export type { ExtensionCandidate, ExtensionCandidates, ExtensionSetResult, ExtensionSetSlotInput, ExtensionSlotActivation, ExtensionSlotRefInput, ExtensionSlotRow, ExtensionSlotSource, ExtensionSlotState, ExtensionSlotUnreachable, ExtensionSource, ExtensionSourceAvailability, ExtensionSourceHealth, IDeviceExtensionProvider, } from './device-extension.cap.js';
66
66
  export { deviceExtensionCapability, EXTENSION_SLOT_LISTING_METHOD, EXTENSION_SLOT_REF_SEPARATOR, ExtensionCandidateSchema, ExtensionCandidatesSchema, ExtensionSetResultSchema, ExtensionSetSlotInputSchema, ExtensionSlotActivationSchema, ExtensionSlotRefInputSchema, ExtensionSlotRowSchema, ExtensionSlotSourceSchema, ExtensionSlotStateSchema, ExtensionSlotUnreachableSchema, ExtensionSourceAvailabilitySchema, ExtensionSourceHealthSchema, ExtensionSourceSchema, unreachableExtensionSlotRow, } from './device-extension.cap.js';
67
67
  export type { CleanupDeletedDevicesResult, DeviceInfo, DeviceManagerApplyInitialMetaInput, DeviceTombstone, OrphanDeviceData, } from './device-manager.cap.js';
@@ -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';
@@ -220,6 +222,7 @@ export { type INumericSensorProvider, type NumericSensorStatus, NumericSensorSta
220
222
  export { type IOsdProvider, type OsdOverlay, type OsdOverlayKind, OsdOverlayKindEnum, OsdOverlayPatchSchema, OsdOverlaySchema, type OsdPosition, OsdPositionEnum, type OsdStatus, OsdStatusSchema, osdCapability, } from './osd.cap.js';
221
223
  export { type IOsdManagerProvider, type OsdNamedTemplate, OsdNamedTemplateSchema, type OsdRenderOutcome, OsdRenderOutcomeEnum, type OsdRenderResult, OsdRenderResultSchema, type OsdSlotBinding, OsdSlotBindingSchema, type OsdSlotView, OsdSlotViewSchema, type OsdSource, type OsdSourceOption, OsdSourceOptionSchema, OsdSourceSchema, type OsdSourceValueType, OsdSourceValueTypeEnum, type OsdTemplateBinding, OsdTemplateBindingSchema, type OsdTemplateFormat, OsdTemplateFormatSchema, type OsdTemplatePick, OsdTemplatePickSchema, type OsdTemplateTokenKind, OsdTemplateTokenKindSchema, osdManagerCapability, } from './osd-manager.cap.js';
222
224
  export { type IPetFeederProvider, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, type PetFeederStatus, PetFeederStatusSchema, petFeederCapability, } from './pet-feeder.cap.js';
225
+ export { type IPetFountainProvider, type PetFountainStatus, PetFountainStatusSchema, petFountainCapability, } from './pet-fountain.cap.js';
223
226
  export { type IPlateGalleryProvider, type PlateInfo, plateGalleryCapability, type Vehicle, type VehicleSampleInfo, } from './plate-gallery.cap.js';
224
227
  export { type AcceleratorRescan, type HardwareDecodeAccels, type HardwareEncoderId, type HardwareEncoderProbe, type HardwareEncoders, type IPlatformProbeProvider, platformProbeCapability, } from './platform-probe.cap.js';
225
228
  export { type IPowerMeterProvider, type PowerMeterStatus, PowerMeterStatusSchema, powerMeterCapability, } from './power-meter.cap.js';
@@ -338,6 +341,7 @@ import type { deviceProviderCapability } from './device-provider.cap.js';
338
341
  import type { deviceStateCapability } from './device-state.cap.js';
339
342
  import type { deviceStatusCapability } from './device-status.cap.js';
340
343
  import type { deviceRemovalHookCapability } from './device-removal-hook.cap.js';
344
+ import type { nodeRemovalHookCapability } from './node-removal-hook.cap.js';
341
345
  import type { dishwasherCapability } from './dishwasher.cap.js';
342
346
  import type { doorbellCapability } from './doorbell.cap.js';
343
347
  import type { embeddingEncoderCapability } from './embedding-encoder.cap.js';
@@ -395,6 +399,7 @@ import type { oidcConnectionsCapability } from './oidc-connections.cap.js';
395
399
  import type { osdCapability } from './osd.cap.js';
396
400
  import type { osdManagerCapability } from './osd-manager.cap.js';
397
401
  import type { petFeederCapability } from './pet-feeder.cap.js';
402
+ import type { petFountainCapability } from './pet-fountain.cap.js';
398
403
  import type { pipelineAnalyticsCapability } from './pipeline-analytics.cap.js';
399
404
  import type { pipelineExecutorCapability } from './pipeline-executor.cap.js';
400
405
  import type { pipelineOrchestratorCapability } from './pipeline-orchestrator.cap.js';
@@ -455,6 +460,6 @@ import type { trainingProviderCapability } from './training-provider.cap.js';
455
460
  import type { zoneAnalyticsCapability } from './zone-analytics.cap.js';
456
461
  import type { zoneRulesCapability } from './zone-rules.cap.js';
457
462
  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;
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;
459
464
  export type CapabilityName = AnyCapability['name'];
460
465
  export type ITypedReadinessRegistry = IReadinessRegistry<CapabilityName>;
@@ -10,10 +10,10 @@ declare const CpuBreakdownSchema: z.ZodObject<{
10
10
  cores: z.ZodNumber;
11
11
  }, z.core.$strip>;
12
12
  declare const MemoryInfoSchema: z.ZodObject<{
13
- percent: z.ZodNumber;
13
+ percent: z.ZodNullable<z.ZodNumber>;
14
14
  totalBytes: z.ZodNumber;
15
- usedBytes: z.ZodNumber;
16
- availableBytes: z.ZodNumber;
15
+ usedBytes: z.ZodNullable<z.ZodNumber>;
16
+ availableBytes: z.ZodNullable<z.ZodNumber>;
17
17
  swapUsedBytes: z.ZodNumber;
18
18
  swapTotalBytes: z.ZodNumber;
19
19
  }, z.core.$strip>;
@@ -69,10 +69,10 @@ declare const SystemResourceSnapshotSchema: z.ZodObject<{
69
69
  cores: z.ZodNumber;
70
70
  }, z.core.$strip>;
71
71
  memory: z.ZodObject<{
72
- percent: z.ZodNumber;
72
+ percent: z.ZodNullable<z.ZodNumber>;
73
73
  totalBytes: z.ZodNumber;
74
- usedBytes: z.ZodNumber;
75
- availableBytes: z.ZodNumber;
74
+ usedBytes: z.ZodNullable<z.ZodNumber>;
75
+ availableBytes: z.ZodNullable<z.ZodNumber>;
76
76
  swapUsedBytes: z.ZodNumber;
77
77
  swapTotalBytes: z.ZodNumber;
78
78
  }, z.core.$strip>;
@@ -337,8 +337,8 @@ declare const GetLoadSeriesInputSchema: z.ZodObject<{
337
337
  }, z.core.$strip>;
338
338
  declare const SystemMetricsSchema: z.ZodObject<{
339
339
  cpuPercent: z.ZodNumber;
340
- memoryPercent: z.ZodNumber;
341
- memoryUsedMB: z.ZodNumber;
340
+ memoryPercent: z.ZodNullable<z.ZodNumber>;
341
+ memoryUsedMB: z.ZodNullable<z.ZodNumber>;
342
342
  memoryTotalMB: z.ZodNumber;
343
343
  diskPercent: z.ZodOptional<z.ZodNumber>;
344
344
  temperature: z.ZodOptional<z.ZodNumber>;
@@ -362,10 +362,10 @@ export declare const metricsProviderCapability: {
362
362
  cores: z.ZodNumber;
363
363
  }, z.core.$strip>;
364
364
  memory: z.ZodObject<{
365
- percent: z.ZodNumber;
365
+ percent: z.ZodNullable<z.ZodNumber>;
366
366
  totalBytes: z.ZodNumber;
367
- usedBytes: z.ZodNumber;
368
- availableBytes: z.ZodNumber;
367
+ usedBytes: z.ZodNullable<z.ZodNumber>;
368
+ availableBytes: z.ZodNullable<z.ZodNumber>;
369
369
  swapUsedBytes: z.ZodNumber;
370
370
  swapTotalBytes: z.ZodNumber;
371
371
  }, z.core.$strip>;
@@ -451,10 +451,10 @@ export declare const metricsProviderCapability: {
451
451
  cores: z.ZodNumber;
452
452
  }, z.core.$strip>;
453
453
  memory: z.ZodObject<{
454
- percent: z.ZodNumber;
454
+ percent: z.ZodNullable<z.ZodNumber>;
455
455
  totalBytes: z.ZodNumber;
456
- usedBytes: z.ZodNumber;
457
- availableBytes: z.ZodNumber;
456
+ usedBytes: z.ZodNullable<z.ZodNumber>;
457
+ availableBytes: z.ZodNullable<z.ZodNumber>;
458
458
  swapUsedBytes: z.ZodNumber;
459
459
  swapTotalBytes: z.ZodNumber;
460
460
  }, z.core.$strip>;
@@ -531,8 +531,8 @@ export declare const metricsProviderCapability: {
531
531
  /** Light-weight cached summary for heartbeats and list views. */
532
532
  readonly getCurrent: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodObject<{
533
533
  cpuPercent: z.ZodNumber;
534
- memoryPercent: z.ZodNumber;
535
- memoryUsedMB: z.ZodNumber;
534
+ memoryPercent: z.ZodNullable<z.ZodNumber>;
535
+ memoryUsedMB: z.ZodNullable<z.ZodNumber>;
536
536
  memoryTotalMB: z.ZodNumber;
537
537
  diskPercent: z.ZodOptional<z.ZodNumber>;
538
538
  temperature: z.ZodOptional<z.ZodNumber>;
@@ -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>;
@@ -55,7 +55,7 @@ declare const TopologyNodeSchema: z.ZodObject<{
55
55
  isHub: z.ZodBoolean;
56
56
  isOnline: z.ZodBoolean;
57
57
  cpuPercent: z.ZodNumber;
58
- memoryPercent: z.ZodNumber;
58
+ memoryPercent: z.ZodNullable<z.ZodNumber>;
59
59
  uptime: z.ZodNumber;
60
60
  lastSeen: z.ZodString;
61
61
  localIps: z.ZodReadonly<z.ZodArray<z.ZodString>>;
@@ -189,7 +189,7 @@ export declare const nodesCapability: {
189
189
  isHub: z.ZodBoolean;
190
190
  isOnline: z.ZodBoolean;
191
191
  cpuPercent: z.ZodNumber;
192
- memoryPercent: z.ZodNumber;
192
+ memoryPercent: z.ZodNullable<z.ZodNumber>;
193
193
  uptime: z.ZodNumber;
194
194
  lastSeen: z.ZodString;
195
195
  localIps: z.ZodReadonly<z.ZodArray<z.ZodString>>;
@@ -0,0 +1,138 @@
1
+ import { z } from 'zod';
2
+ import { DeviceType } from '../device/device-type.js';
3
+ import { type InferProvider } from './capability-definition.js';
4
+ /**
5
+ * Pet water-fountain cap. Models the telemetry and the control surface of a
6
+ * circulating drinking fountain: how much water is in the tank, how much the
7
+ * pet drank, whether the pump runs and on what duty cycle.
8
+ *
9
+ * It has no native vendor provider of its own: a fountain reaches CamStack as
10
+ * a container of loose entities (a pump switch, two number boxes, a "filter
11
+ * changed" button), and an operator BUILDS the device from them — a composed
12
+ * device of this type (D659, D967). Every method is therefore a forward to ONE
13
+ * method of ONE source entity, and every reading is a field derived from a
14
+ * source entity; the provider-shaped interface below exists so the composed
15
+ * device and any future native provider answer the same contract.
16
+ *
17
+ * Quantities are stored in the base unit of their kind (D944): volumes in
18
+ * LITRES, durations in SECONDS, the tank level in percent. A source that
19
+ * reports millilitres or minutes is converted in the composition's expression,
20
+ * never here. Every reading may be `null`: a source that is offline or does
21
+ * not report is unknown, never zero.
22
+ *
23
+ * The filter is not a field of this cap: it is an item of the `consumables`
24
+ * cap on the same device (kind `wear`), reset by the same forward mechanism.
25
+ */
26
+ export declare const PetFountainStatusSchema: z.ZodObject<{
27
+ waterLevel: z.ZodNullable<z.ZodNumber>;
28
+ waterVolume: z.ZodNullable<z.ZodNumber>;
29
+ empty: z.ZodNullable<z.ZodBoolean>;
30
+ pumpRunning: z.ZodNullable<z.ZodBoolean>;
31
+ pumpIntervalEnabled: z.ZodNullable<z.ZodBoolean>;
32
+ pumpOnTime: z.ZodNullable<z.ZodNumber>;
33
+ pumpOffTime: z.ZodNullable<z.ZodNumber>;
34
+ lastDrink: z.ZodNullable<z.ZodNumber>;
35
+ currentHourDrink: z.ZodNullable<z.ZodNumber>;
36
+ last24hDrink: z.ZodNullable<z.ZodNumber>;
37
+ todayDrink: z.ZodNullable<z.ZodNumber>;
38
+ error: z.ZodNullable<z.ZodString>;
39
+ lastFetchedAt: z.ZodNumber;
40
+ }, z.core.$strip>;
41
+ export type PetFountainStatus = z.infer<typeof PetFountainStatusSchema>;
42
+ export declare const petFountainCapability: {
43
+ readonly name: 'pet-fountain';
44
+ readonly scope: 'device';
45
+ readonly deviceNative: true;
46
+ readonly mode: 'singleton';
47
+ readonly deviceTypes: readonly [DeviceType.PetFountain];
48
+ readonly methods: {
49
+ /** Start or stop the pump. */
50
+ readonly setPump: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
51
+ deviceId: z.ZodNumber;
52
+ on: z.ZodBoolean;
53
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
54
+ /** Switch the on/off duty cycle on or off (off = the pump runs continuously). */
55
+ readonly setPumpInterval: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
56
+ deviceId: z.ZodNumber;
57
+ on: z.ZodBoolean;
58
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
59
+ /** Set how many minutes the pump runs per cycle. */
60
+ readonly setPumpOnMinutes: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
61
+ deviceId: z.ZodNumber;
62
+ minutes: z.ZodNumber;
63
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
64
+ /** Set how many minutes the pump rests per cycle. */
65
+ readonly setPumpOffMinutes: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
66
+ deviceId: z.ZodNumber;
67
+ minutes: z.ZodNumber;
68
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
69
+ /** Clear the rolling daily consumption counters on the device. */
70
+ readonly resetDailyConsumption: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
71
+ deviceId: z.ZodNumber;
72
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
73
+ };
74
+ readonly status: {
75
+ readonly schema: z.ZodObject<{
76
+ waterLevel: z.ZodNullable<z.ZodNumber>;
77
+ waterVolume: z.ZodNullable<z.ZodNumber>;
78
+ empty: z.ZodNullable<z.ZodBoolean>;
79
+ pumpRunning: z.ZodNullable<z.ZodBoolean>;
80
+ pumpIntervalEnabled: z.ZodNullable<z.ZodBoolean>;
81
+ pumpOnTime: z.ZodNullable<z.ZodNumber>;
82
+ pumpOffTime: z.ZodNullable<z.ZodNumber>;
83
+ lastDrink: z.ZodNullable<z.ZodNumber>;
84
+ currentHourDrink: z.ZodNullable<z.ZodNumber>;
85
+ last24hDrink: z.ZodNullable<z.ZodNumber>;
86
+ todayDrink: z.ZodNullable<z.ZodNumber>;
87
+ error: z.ZodNullable<z.ZodString>;
88
+ lastFetchedAt: z.ZodNumber;
89
+ }, z.core.$strip>;
90
+ readonly kind: 'push';
91
+ };
92
+ /** Runtime-state slice — mirrored by the kernel; the hero card reads it whole. */
93
+ readonly runtimeState: z.ZodObject<{
94
+ waterLevel: z.ZodNullable<z.ZodNumber>;
95
+ waterVolume: z.ZodNullable<z.ZodNumber>;
96
+ empty: z.ZodNullable<z.ZodBoolean>;
97
+ pumpRunning: z.ZodNullable<z.ZodBoolean>;
98
+ pumpIntervalEnabled: z.ZodNullable<z.ZodBoolean>;
99
+ pumpOnTime: z.ZodNullable<z.ZodNumber>;
100
+ pumpOffTime: z.ZodNullable<z.ZodNumber>;
101
+ lastDrink: z.ZodNullable<z.ZodNumber>;
102
+ currentHourDrink: z.ZodNullable<z.ZodNumber>;
103
+ last24hDrink: z.ZodNullable<z.ZodNumber>;
104
+ todayDrink: z.ZodNullable<z.ZodNumber>;
105
+ error: z.ZodNullable<z.ZodString>;
106
+ lastFetchedAt: z.ZodNumber;
107
+ }, z.core.$strip>;
108
+ /**
109
+ * Runtime-state durability: **session** — live appliance state re-published on connect.
110
+ *
111
+ * See `RuntimeStateDurability`. Enforced by
112
+ * `scripts/check-runtime-state-durability.ts`.
113
+ */
114
+ readonly durability: 'session';
115
+ /** History (D850): recorded series. */
116
+ readonly history: {
117
+ readonly fields: {
118
+ readonly waterLevel: {
119
+ readonly kind: 'gauge';
120
+ readonly unit: '%';
121
+ readonly deadband: 1;
122
+ };
123
+ readonly waterVolume: {
124
+ readonly kind: 'gauge';
125
+ readonly unit: 'L';
126
+ };
127
+ readonly todayDrink: {
128
+ readonly kind: 'gauge';
129
+ readonly unit: 'L';
130
+ };
131
+ readonly last24hDrink: {
132
+ readonly kind: 'gauge';
133
+ readonly unit: 'L';
134
+ };
135
+ };
136
+ };
137
+ };
138
+ export type IPetFountainProvider = InferProvider<typeof petFountainCapability>;
@@ -1,7 +1,10 @@
1
1
  import { z } from 'zod';
2
2
  import type { ConfigField, ConfigUISchema } from '../interfaces/config-ui.js';
3
3
  import type { InferenceCapabilities, ModelAvailability } from '../interfaces/inference-capabilities.js';
4
- import type { AudioResult, FrameResult } from '../types/detection.js';
4
+ import type { AudioResult } from '../types/detection.js';
5
+ import { PipelineRunResultBridge, PipelineStepInputSchema, type PipelineStepInputOutput } from './pipeline-step-input.js';
6
+ export { PipelineRunResultBridge, PipelineStepInputSchema };
7
+ export type { PipelineStepInputOutput };
5
8
  import { type InferProvider } from './capability-definition.js';
6
9
  /**
7
10
  * A root model's boxes standing in for one crop-kind step's own inference
@@ -615,24 +618,6 @@ declare const EngineProvisioningSchema: z.ZodObject<{
615
618
  configIssues: z.ZodOptional<z.ZodArray<z.ZodString>>;
616
619
  }, z.core.$strip>;
617
620
  export type EngineProvisioning = z.infer<typeof EngineProvisioningSchema>;
618
- export type PipelineStepInputOutput = {
619
- readonly addonId: string;
620
- readonly modelId?: string;
621
- readonly enabled: boolean;
622
- readonly children?: readonly PipelineStepInputOutput[];
623
- readonly settings?: Readonly<Record<string, unknown>>;
624
- /**
625
- * Step-tree device jump (same-node, phase 1). Operator manual override
626
- * carried from the per-(node,device) BASE
627
- * (`inferenceDevices[node][deviceKey].steps[step].jumpDeviceKey`): run THIS
628
- * enrichment step (and its inherited children) on a DIFFERENT enabled device
629
- * of the SAME node — `<backend>:<device>` (e.g. `openvino:npu`). Absent ⇒ the
630
- * runner AUTO-jumps only when the effective device's format cannot run the
631
- * step's model, else the step inherits the effective device. Same-node only.
632
- */
633
- readonly jumpDeviceKey?: string;
634
- };
635
- export declare const PipelineStepInputSchema: z.ZodType<PipelineStepInputOutput>;
636
621
  declare const ModelSubstitutionSchema: z.ZodObject<{
637
622
  addonId: z.ZodString;
638
623
  chosen: z.ZodString;
@@ -669,7 +654,6 @@ declare const PipelineValidationResultSchema: z.ZodObject<{
669
654
  }, z.core.$strip>;
670
655
  export type PipelineValidationResult = z.infer<typeof PipelineValidationResultSchema>;
671
656
  export type PipelineValidationIssue = z.infer<typeof PipelineValidationIssueSchema>;
672
- export declare const PipelineRunResultBridge: z.ZodCustom<FrameResult, FrameResult>;
673
657
  /**
674
658
  * Pipeline executor — detection engine + configuration + inference API.
675
659
  *
@@ -1150,7 +1134,7 @@ export declare const pipelineExecutorCapability: {
1150
1134
  }, z.core.$strip>>>;
1151
1135
  }, z.core.$strip>>;
1152
1136
  }, z.core.$strip>>;
1153
- }, z.core.$strip>, z.ZodCustom<FrameResult, FrameResult>, "mutation">;
1137
+ }, z.core.$strip>, z.ZodCustom<import("../index.js").FrameResult, import("../index.js").FrameResult>, "mutation">;
1154
1138
  /**
1155
1139
  * Batched run — N raw frames packed into one cap call. The provider
1156
1140
  * routes the batch through `SharedInferencePool.inferBatch`
@@ -1182,7 +1166,7 @@ export declare const pipelineExecutorCapability: {
1182
1166
  frameId: z.ZodOptional<z.ZodNumber>;
1183
1167
  deviceKey: z.ZodOptional<z.ZodString>;
1184
1168
  }, z.core.$strip>, z.ZodObject<{
1185
- results: z.ZodReadonly<z.ZodArray<z.ZodCustom<FrameResult, FrameResult>>>;
1169
+ results: z.ZodReadonly<z.ZodArray<z.ZodCustom<import("../index.js").FrameResult, import("../index.js").FrameResult>>>;
1186
1170
  }, z.core.$strip>, "mutation">;
1187
1171
  /**
1188
1172
  * Cache a raw frame inside the Python inference pool's memory.
@@ -15,7 +15,7 @@ declare const CameraPipelineConfigSchema: z.ZodObject<{
15
15
  }>;
16
16
  device: z.ZodOptional<z.ZodString>;
17
17
  }, z.core.$strip>>;
18
- steps: z.ZodReadonly<z.ZodArray<z.ZodType<import("./pipeline-executor.cap.js").PipelineStepInputOutput, unknown, z.core.$ZodTypeInternals<import("./pipeline-executor.cap.js").PipelineStepInputOutput, unknown>>>>;
18
+ steps: z.ZodReadonly<z.ZodArray<z.ZodType<import("./pipeline-step-input.js").PipelineStepInputOutput, unknown, z.core.$ZodTypeInternals<import("./pipeline-step-input.js").PipelineStepInputOutput, unknown>>>>;
19
19
  audio: z.ZodOptional<z.ZodNullable<z.ZodObject<{
20
20
  engine: z.ZodOptional<z.ZodObject<{
21
21
  runtime: z.ZodLiteral<"python">;
@@ -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 node default (`hub` → capable, every
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
@@ -2395,7 +2394,7 @@ export declare const pipelineOrchestratorCapability: {
2395
2394
  }>;
2396
2395
  device: z.ZodOptional<z.ZodString>;
2397
2396
  }, z.core.$strip>>;
2398
- steps: z.ZodReadonly<z.ZodArray<z.ZodType<import("./pipeline-executor.cap.js").PipelineStepInputOutput, unknown, z.core.$ZodTypeInternals<import("./pipeline-executor.cap.js").PipelineStepInputOutput, unknown>>>>;
2397
+ steps: z.ZodReadonly<z.ZodArray<z.ZodType<import("./pipeline-step-input.js").PipelineStepInputOutput, unknown, z.core.$ZodTypeInternals<import("./pipeline-step-input.js").PipelineStepInputOutput, unknown>>>>;
2399
2398
  audio: z.ZodOptional<z.ZodNullable<z.ZodObject<{
2400
2399
  engine: z.ZodOptional<z.ZodObject<{
2401
2400
  runtime: z.ZodLiteral<"python">;
@@ -416,7 +416,7 @@ declare const RunnerCameraConfigSchema: z.ZodObject<{
416
416
  pipeline: "pipeline";
417
417
  }>>>>;
418
418
  pipelineEnabled: z.ZodDefault<z.ZodBoolean>;
419
- steps: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodType<import("./pipeline-executor.cap.js").PipelineStepInputOutput, unknown, z.core.$ZodTypeInternals<import("./pipeline-executor.cap.js").PipelineStepInputOutput, unknown>>>>>;
419
+ steps: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodType<import("./pipeline-step-input.js").PipelineStepInputOutput, unknown, z.core.$ZodTypeInternals<import("./pipeline-step-input.js").PipelineStepInputOutput, unknown>>>>>;
420
420
  audio: z.ZodOptional<z.ZodNullable<z.ZodObject<{
421
421
  modelId: z.ZodOptional<z.ZodString>;
422
422
  enabled: z.ZodBoolean;
@@ -718,7 +718,7 @@ export declare const pipelineRunnerCapability: {
718
718
  pipeline: "pipeline";
719
719
  }>>>>;
720
720
  pipelineEnabled: z.ZodDefault<z.ZodBoolean>;
721
- steps: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodType<import("./pipeline-executor.cap.js").PipelineStepInputOutput, unknown, z.core.$ZodTypeInternals<import("./pipeline-executor.cap.js").PipelineStepInputOutput, unknown>>>>>;
721
+ steps: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodType<import("./pipeline-step-input.js").PipelineStepInputOutput, unknown, z.core.$ZodTypeInternals<import("./pipeline-step-input.js").PipelineStepInputOutput, unknown>>>>>;
722
722
  audio: z.ZodOptional<z.ZodNullable<z.ZodObject<{
723
723
  modelId: z.ZodOptional<z.ZodString>;
724
724
  enabled: z.ZodBoolean;