@camstack/types 1.2.94 → 1.2.96
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +2 -2
- package/dist/addon.mjs +2 -2
- package/dist/capabilities/index.d.ts +3 -3
- package/dist/capabilities/local-network.cap.d.ts +41 -1
- package/dist/capabilities/pipeline-orchestrator.cap.d.ts +38 -1
- package/dist/device/index.d.ts +2 -2
- package/dist/device/runtime-state-helpers.d.ts +63 -2
- package/dist/enums/event-category.d.ts +9 -0
- package/dist/enums.js +1 -1
- package/dist/enums.mjs +1 -1
- package/dist/{event-category-XfKNtfCc.mjs → event-category-CIa_iT6b.mjs} +9 -0
- package/dist/{event-category-CRPORAAz.js → event-category-EY0GNjV9.js} +9 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +192 -14
- package/dist/index.mjs +189 -15
- package/dist/interfaces/config-ui.d.ts +34 -0
- package/dist/interfaces/event-bus.d.ts +32 -7
- package/dist/{sleep-zMxKWD0M.mjs → sleep-B8EIZt4h.mjs} +1 -1
- package/dist/{sleep-CMRLJj2e.js → sleep-C2XhJhkd.js} +1 -1
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_event_category = require("./event-category-
|
|
3
|
-
const require_sleep = require("./sleep-
|
|
2
|
+
const require_event_category = require("./event-category-EY0GNjV9.js");
|
|
3
|
+
const require_sleep = require("./sleep-C2XhJhkd.js");
|
|
4
4
|
const require_err_msg = require("./err-msg-COpsHMw2.js");
|
|
5
5
|
//#region src/generated/cap-input-defaults.ts
|
|
6
6
|
/**
|
package/dist/addon.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as EventCategory } from "./event-category-
|
|
2
|
-
import { A as expandCapMethods, B as ReadinessTimeoutError, I as nodePin, L as readNodePin, T as adminUiCapability, U as scopeKey, _t as BaseAddon, a as asJsonObject, b as viewerUiCapability, d as BOOT_RECOVERY_BACKOFF_MS, f as DEVICE_SCOPED_CAPS, gt as DisposerChain, ht as DATAPLANE_SECRET_HEADER, m as createDeviceProxy, p as isDeviceScopedCap, s as asString, t as sleep, u as parseJsonUnknown, vt as normalizeAddonInitResult, w as DeviceType, xt as emitReadiness, y as deviceOpsCapability, z as ReadinessRegistry } from "./sleep-
|
|
1
|
+
import { t as EventCategory } from "./event-category-CIa_iT6b.mjs";
|
|
2
|
+
import { A as expandCapMethods, B as ReadinessTimeoutError, I as nodePin, L as readNodePin, T as adminUiCapability, U as scopeKey, _t as BaseAddon, a as asJsonObject, b as viewerUiCapability, d as BOOT_RECOVERY_BACKOFF_MS, f as DEVICE_SCOPED_CAPS, gt as DisposerChain, ht as DATAPLANE_SECRET_HEADER, m as createDeviceProxy, p as isDeviceScopedCap, s as asString, t as sleep, u as parseJsonUnknown, vt as normalizeAddonInitResult, w as DeviceType, xt as emitReadiness, y as deviceOpsCapability, z as ReadinessRegistry } from "./sleep-B8EIZt4h.mjs";
|
|
3
3
|
import { t as errMsg } from "./err-msg-IQTHeDzc.mjs";
|
|
4
4
|
//#region src/generated/cap-input-defaults.ts
|
|
5
5
|
/**
|
|
@@ -79,8 +79,8 @@ export { type IOauthIntegrationProvider, type OauthIntegrationDescriptor, OauthI
|
|
|
79
79
|
export { type AudioEvent, AudioEventSchema, type DetectionSource, DetectionSourceSchema, type EventKind, type EventKindCategory, EventKindCategorySchema, type EventKindDescriptor, EventKindDescriptorSchema, type EventKindIcon, EventKindIconSchema, EventKindSchema, type EventKindsForDevice, EventKindsForDeviceSchema, type EventPruneCounts, type EventStoreDeviceFootprint, type EventStoreFootprint, type IPipelineAnalyticsProvider, type KeyEvent, KeyEventSchema, type LabelAttribution, LabelAttributionSchema, type LabelTier, LabelTierSchema, type MediaFile, type MediaFileInfo, MediaFileInfoSchema, type MediaFileKind, MediaFileSchema, type MotionEvent, MotionEventSchema, type ObjectEvent, ObjectEventSchema, pipelineAnalyticsCapability, type RecentTracksPage, RecentTracksPageSchema, type RecentTracksQuery, RecentTracksQueryInput, type RetrainAnnotation, type RetrainAnnotationDraft, RetrainAnnotationDraftSchema, RetrainAnnotationKindSchema, RetrainAnnotationSchema, RetrainAnnotationSourceSchema, type RetrainAssistResult, RetrainAssistResultSchema, RetrainAssistSubjectSchema, RetrainCopyRefusalSchema, type RetrainFrame, type RetrainFrameCandidate, RetrainFrameCandidateSchema, type RetrainFrameList, RetrainFrameListSchema, RetrainFrameSchema, type RetrainFrameSelection, RetrainFrameSelectionSchema, type RetrainMacroClass, RetrainMacroClassSchema, type RetrainStatus, RetrainStatusSchema, type RetrainTrack, RetrainTrackSchema, type RetrainTransitionResult, RetrainTransitionResultSchema, type ScoredObjectEvent, ScoredObjectEventSchema, type SensorEvent, SensorEventSchema, type Track, type TrackCascadeCounts, TrackCascadeCountsSchema, type TrackEnvelope, TrackEnvelopeSchema, TrackedDetectionSchema, type TrackFlags, type TrackFlagsPatch, TrackFlagsPatchSchema, TrackFlagsSchema, type TrackProjection, TrackProjectionSchema, TrackSchema, type TrackSource, TrackSourceSchema, type TrackState, TrackStateSchema, type TrackZoneFilter, TrackZoneFilterSchema, type TrainingExportDeviceTotals, TrainingExportDeviceTotalsSchema, type TrainingExportSummary, TrainingExportSummarySchema, type ZoneCrossing, type ZoneCrossingDirection, ZoneCrossingDirectionSchema, ZoneCrossingSchema, } from './pipeline-analytics.cap.js';
|
|
80
80
|
export type { NativeCropRef, PipelineStepInputOutput, PipelineValidationIssue, PipelineValidationResult, } from './pipeline-executor.cap.js';
|
|
81
81
|
export { ModelSubstitutionSchema, NativeCropRefSchema, PipelineDefaultStepSchema, PipelineEngineChoiceSchema, PipelineRunResultBridge, PipelineStepInputSchema, PipelineValidationIssueSchema, PipelineValidationResultSchema, pipelineExecutorCapability, } from './pipeline-executor.cap.js';
|
|
82
|
-
export type { CameraAssignmentStatus, CameraAudioStatus, CameraBrokerProfile, CameraBrokerStatus, CameraDecoderShm, CameraDecoderStatus, CameraDetectionPhase, CameraDetectionProvisioning, CameraDetectionProvisioningState, CameraDetectionStatus, CameraMotionStatus, CameraRecordingMode, CameraRecordingStatus, CameraSourceStatus, CameraSourceStream, CameraStatus, CameraStatusDegradation, CameraStatusDegradationReason, CameraStatusStage, DiskReconcileJob, IngestOwner, NodeInferenceDevice, NodeInferenceDevices, } from './pipeline-orchestrator.cap.js';
|
|
83
|
-
export { AgentLoadSummarySchema, CameraAssignmentStatusSchema, CameraAudioStatusSchema, CameraBrokerProfileSchema, CameraBrokerStatusSchema, CameraDecoderShmSchema, CameraDecoderStatusSchema, CameraDetectionPhaseSchema, CameraDetectionProvisioningSchema, CameraDetectionProvisioningStateSchema, CameraDetectionStatusSchema, CameraMotionStatusSchema, CameraRecordingModeSchema, CameraRecordingStatusSchema, CameraSourceStatusSchema, CameraSourceStreamSchema, CameraStatusDegradationReasonSchema, CameraStatusDegradationSchema, CameraStatusSchema, CameraStatusStageSchema, CapabilityBindingsSchema, DiskReconcileJobSchema, GlobalMetricsSchema, IngestOwnerSchema, PipelineAssignmentSchema, pipelineOrchestratorCapability, } from './pipeline-orchestrator.cap.js';
|
|
82
|
+
export type { CameraAssignmentStatus, CameraAudioStatus, CameraBrokerProfile, CameraBrokerStatus, CameraDecoderShm, CameraDecoderStatus, CameraDetectionPhase, CameraDetectionProvisioning, CameraDetectionProvisioningState, CameraDetectionStatus, CameraMotionStatus, CameraRecordingMode, CameraRecordingStatus, CameraSourceStatus, CameraSourceStream, CameraStatus, CameraStatusDegradation, CameraStatusDegradationReason, CameraStatusStage, DiskReconcileJob, InferenceDeviceExclusionReason, IngestOwner, NodeInferenceDevice, NodeInferenceDevices, } from './pipeline-orchestrator.cap.js';
|
|
83
|
+
export { AgentLoadSummarySchema, CameraAssignmentStatusSchema, CameraAudioStatusSchema, CameraBrokerProfileSchema, CameraBrokerStatusSchema, CameraDecoderShmSchema, CameraDecoderStatusSchema, CameraDetectionPhaseSchema, CameraDetectionProvisioningSchema, CameraDetectionProvisioningStateSchema, CameraDetectionStatusSchema, CameraMotionStatusSchema, CameraRecordingModeSchema, CameraRecordingStatusSchema, CameraSourceStatusSchema, CameraSourceStreamSchema, CameraStatusDegradationReasonSchema, CameraStatusDegradationSchema, CameraStatusSchema, CameraStatusStageSchema, CapabilityBindingsSchema, DiskReconcileJobSchema, GlobalMetricsSchema, INFERENCE_DEVICE_EXCLUSION_REASONS, InferenceDeviceExclusionReasonSchema, IngestOwnerSchema, PipelineAssignmentSchema, pipelineOrchestratorCapability, } from './pipeline-orchestrator.cap.js';
|
|
84
84
|
export type { DetailParent, DetailResult, MotionSource, MotionSources, ReportMotionInput, RunDetailSubtreeInput, RunDetailSubtreeResult, RunnerFrameSource, RunnerInferenceDevice, RunStatelessStepInput, RunStatelessStepResult, StatelessStepRefusal, } from './pipeline-runner.cap.js';
|
|
85
85
|
export { MotionSourceEnum, MotionSourcesSchema, type NativeCropBbox, NativeCropBboxSchema, NativeCropResultSchema, pipelineRunnerCapability, ReportMotionInputSchema, RunnerCameraConfigSchema, RunnerCameraDeviceUIFields, RunnerFrameSourceSchema, RunnerInferenceDeviceSchema, RunnerLocalLoadSchema, RunnerLocalMetricsSchema, } from './pipeline-runner.cap.js';
|
|
86
86
|
export { AudioChunkInputSchema, AudioClassificationLabelSchema, AudioLevelSchema, BoundingBoxSchema, FrameInputSchema, SpatialDetectionSchema, } from './schemas/detection-shared.js';
|
|
@@ -154,7 +154,7 @@ export { type BacklightMode, BacklightModeSchema, type ExposureMode, ExposureMod
|
|
|
154
154
|
export { AvailableIntegrationTypeSchema, CreateIntegrationInputSchema, DeleteIntegrationResultSchema, type IIntegrationsProvider, IntegrationLiteSchema, type IntegrationTestConnectionResult, type IntegrationTestConnectionStatus, IntegrationWithStateSchema, integrationsCapability, TestConnectionResultSchema, TestConnectionStatusEnum, UpdateIntegrationInputSchema, } from './integrations.cap.js';
|
|
155
155
|
export { type IIntercomProvider, type IntercomAbility, IntercomAbilitySchema, type IntercomStatus, IntercomStatusSchema, intercomCapability, } from './intercom.cap.js';
|
|
156
156
|
export { type DeviceCodeSeverity, DeviceCodeSeveritySchema, type ILawnMowerControlProvider, type LawnMowerActivity, LawnMowerActivitySchema, type LawnMowerControlStatus, LawnMowerControlStatusSchema, lawnMowerControlCapability, } from './lawn-mower-control.cap.js';
|
|
157
|
-
export { type ConnectionEndpoint, type ILocalNetworkProvider, type LocalInterface, localNetworkCapability, } from './local-network.cap.js';
|
|
157
|
+
export { type AdvertisedLocalPort, type ConnectionEndpoint, type ILocalNetworkProvider, type LocalInterface, localNetworkCapability, } from './local-network.cap.js';
|
|
158
158
|
export { type ILockControlProvider, type LockControlStatus, LockControlStatusSchema, type LockState, LockStateSchema, lockControlCapability, } from './lock-control.cap.js';
|
|
159
159
|
export { type MaskGridDims, MaskGridDimsSchema, type MaskGridShape, MaskGridShapeSchema, type MaskLineShape, MaskLineShapeSchema, type MaskPoint, MaskPointSchema, type MaskPolygonShape, MaskPolygonShapeSchema, type MaskPolygonVertices, MaskPolygonVerticesSchema, type MaskRectShape, MaskRectShapeSchema, type MaskShape, type MaskShapeKind, MaskShapeKindSchema, MaskShapeSchema, } from './mask-shape.js';
|
|
160
160
|
export { type IMediaPlayerProvider, type MediaInfo, type MediaPlayerRepeat, MediaPlayerRepeatSchema, type MediaPlayerState, MediaPlayerStateSchema, type MediaPlayerStatus, MediaPlayerStatusSchema, mediaPlayerCapability, } from './media-player.cap.js';
|
|
@@ -74,6 +74,17 @@ declare const ConnectionEndpointSchema: z.ZodObject<{
|
|
|
74
74
|
plausibleReason: z.ZodString;
|
|
75
75
|
priority: z.ZodNumber;
|
|
76
76
|
}, z.core.$strip>;
|
|
77
|
+
/** The port every LAN/loopback `baseUrl` in the same result was built with. */
|
|
78
|
+
declare const AdvertisedLocalPortSchema: z.ZodObject<{
|
|
79
|
+
port: z.ZodNumber;
|
|
80
|
+
source: z.ZodEnum<{
|
|
81
|
+
default: "default";
|
|
82
|
+
"server-config": "server-config";
|
|
83
|
+
"server-env": "server-env";
|
|
84
|
+
"caller-hint": "caller-hint";
|
|
85
|
+
}>;
|
|
86
|
+
}, z.core.$strip>;
|
|
87
|
+
export type AdvertisedLocalPort = z.infer<typeof AdvertisedLocalPortSchema>;
|
|
77
88
|
/**
|
|
78
89
|
* The chosen outbound endpoint for notification artifacts. `baseUrl: null` =
|
|
79
90
|
* AUTO (resolved from the candidate ranking at send time); `resolved` reports
|
|
@@ -157,9 +168,29 @@ export declare const localNetworkCapability: {
|
|
|
157
168
|
* Honours `getAllowedAddresses()` when set — addresses outside
|
|
158
169
|
* the allowlist are dropped (the public tunnel + loopback are
|
|
159
170
|
* always included as escape hatches).
|
|
171
|
+
*
|
|
172
|
+
* **The port is the hub's, not the caller's** (D62 — a function's fact
|
|
173
|
+
* belongs to whoever already owns it). This method used to take a `port`
|
|
174
|
+
* and echo it onto every LAN and loopback URL it advertised, which made
|
|
175
|
+
* every client a second authority on a socket only the hub binds. A viewer
|
|
176
|
+
* configured with a port-less public URL (`https://camstack.example.top`)
|
|
177
|
+
* infers 443 from the scheme, asks with 443, and was handed
|
|
178
|
+
* `https://192.168.1.9:443` for a hub listening on 4443. That candidate
|
|
179
|
+
* cannot ever answer, and losing its race reads in the log exactly like
|
|
180
|
+
* "the LAN was tried and it was slower" — so an operator sitting on his own
|
|
181
|
+
* WiFi stayed on the public tunnel for weeks, with the LAN candidate born
|
|
182
|
+
* dead on every single connect.
|
|
183
|
+
*
|
|
184
|
+
* The hub now resolves its own listen port and reports it as `localPort`,
|
|
185
|
+
* with the SOURCE of the number, so a client can tell a fact from an echo.
|
|
186
|
+
*
|
|
187
|
+
* Out of scope on purpose: a LAN URL that is not the hub's own socket (a
|
|
188
|
+
* reverse proxy in front of it on another port) is not this method's to
|
|
189
|
+
* invent either — pin it with `setNotificationEndpoint` / a configured
|
|
190
|
+
* origin, which is an operator statement rather than a guess.
|
|
160
191
|
*/
|
|
161
192
|
readonly getConnectionEndpoints: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
162
|
-
port: z.ZodNumber
|
|
193
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
163
194
|
includeLoopback: z.ZodOptional<z.ZodBoolean>;
|
|
164
195
|
ipv4Only: z.ZodOptional<z.ZodBoolean>;
|
|
165
196
|
scheme: z.ZodOptional<z.ZodEnum<{
|
|
@@ -189,6 +220,15 @@ export declare const localNetworkCapability: {
|
|
|
189
220
|
plausibleReason: z.ZodString;
|
|
190
221
|
priority: z.ZodNumber;
|
|
191
222
|
}, z.core.$strip>>>;
|
|
223
|
+
localPort: z.ZodObject<{
|
|
224
|
+
port: z.ZodNumber;
|
|
225
|
+
source: z.ZodEnum<{
|
|
226
|
+
default: "default";
|
|
227
|
+
"server-config": "server-config";
|
|
228
|
+
"server-env": "server-env";
|
|
229
|
+
"caller-hint": "caller-hint";
|
|
230
|
+
}>;
|
|
231
|
+
}, z.core.$strip>;
|
|
192
232
|
}, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
|
|
193
233
|
/**
|
|
194
234
|
* The endpoint OUTBOUND artifacts must be addressed by — notification
|
|
@@ -532,6 +532,24 @@ declare const CameraStatusSchema: z.ZodObject<{
|
|
|
532
532
|
}, z.core.$strip>>>;
|
|
533
533
|
fetchedAt: z.ZodNumber;
|
|
534
534
|
}, z.core.$strip>;
|
|
535
|
+
/**
|
|
536
|
+
* Why the dispatcher does NOT consider a device the node HAS for the
|
|
537
|
+
* camera-root election. The list is the CONTRACT between the orchestrator's
|
|
538
|
+
* `resolveInferenceDeviceEligibility` (which computes it) and the admin UI
|
|
539
|
+
* (which renders it) — the orchestrator's `InferenceDeviceExclusionReason`
|
|
540
|
+
* derives from this tuple so the two can never drift.
|
|
541
|
+
*
|
|
542
|
+
* Every one of these drops used to be silent, and an accelerator that is
|
|
543
|
+
* enabled, available, and never chosen is indistinguishable from one that was
|
|
544
|
+
* never configured. The reason is the difference.
|
|
545
|
+
*/
|
|
546
|
+
declare const INFERENCE_DEVICE_EXCLUSION_REASONS: readonly ["disabled", "unavailable", "cannot-host-camera-root", "accelerator-preferred"];
|
|
547
|
+
declare const InferenceDeviceExclusionReasonSchema: z.ZodEnum<{
|
|
548
|
+
disabled: "disabled";
|
|
549
|
+
unavailable: "unavailable";
|
|
550
|
+
"cannot-host-camera-root": "cannot-host-camera-root";
|
|
551
|
+
"accelerator-preferred": "accelerator-preferred";
|
|
552
|
+
}>;
|
|
535
553
|
declare const NodeInferenceDeviceSchema: z.ZodObject<{
|
|
536
554
|
key: z.ZodString;
|
|
537
555
|
backend: z.ZodString;
|
|
@@ -554,6 +572,12 @@ declare const NodeInferenceDeviceSchema: z.ZodObject<{
|
|
|
554
572
|
settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
555
573
|
jumpDeviceKey: z.ZodOptional<z.ZodString>;
|
|
556
574
|
}, z.core.$strip>>>;
|
|
575
|
+
exclusion: z.ZodNullable<z.ZodEnum<{
|
|
576
|
+
disabled: "disabled";
|
|
577
|
+
unavailable: "unavailable";
|
|
578
|
+
"cannot-host-camera-root": "cannot-host-camera-root";
|
|
579
|
+
"accelerator-preferred": "accelerator-preferred";
|
|
580
|
+
}>>;
|
|
557
581
|
}, z.core.$strip>;
|
|
558
582
|
declare const NodeInferenceDevicesSchema: z.ZodObject<{
|
|
559
583
|
nodeId: z.ZodString;
|
|
@@ -580,6 +604,12 @@ declare const NodeInferenceDevicesSchema: z.ZodObject<{
|
|
|
580
604
|
settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
581
605
|
jumpDeviceKey: z.ZodOptional<z.ZodString>;
|
|
582
606
|
}, z.core.$strip>>>;
|
|
607
|
+
exclusion: z.ZodNullable<z.ZodEnum<{
|
|
608
|
+
disabled: "disabled";
|
|
609
|
+
unavailable: "unavailable";
|
|
610
|
+
"cannot-host-camera-root": "cannot-host-camera-root";
|
|
611
|
+
"accelerator-preferred": "accelerator-preferred";
|
|
612
|
+
}>>;
|
|
583
613
|
}, z.core.$strip>>>;
|
|
584
614
|
}, z.core.$strip>;
|
|
585
615
|
/**
|
|
@@ -1027,6 +1057,12 @@ export declare const pipelineOrchestratorCapability: {
|
|
|
1027
1057
|
settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1028
1058
|
jumpDeviceKey: z.ZodOptional<z.ZodString>;
|
|
1029
1059
|
}, z.core.$strip>>>;
|
|
1060
|
+
exclusion: z.ZodNullable<z.ZodEnum<{
|
|
1061
|
+
disabled: "disabled";
|
|
1062
|
+
unavailable: "unavailable";
|
|
1063
|
+
"cannot-host-camera-root": "cannot-host-camera-root";
|
|
1064
|
+
"accelerator-preferred": "accelerator-preferred";
|
|
1065
|
+
}>>;
|
|
1030
1066
|
}, z.core.$strip>>>;
|
|
1031
1067
|
}, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
|
|
1032
1068
|
/**
|
|
@@ -1887,4 +1923,5 @@ export type CameraRecordingMode = z.infer<typeof CameraRecordingModeSchema>;
|
|
|
1887
1923
|
export type IngestOwner = z.infer<typeof IngestOwnerSchema>;
|
|
1888
1924
|
export type NodeInferenceDevice = z.infer<typeof NodeInferenceDeviceSchema>;
|
|
1889
1925
|
export type NodeInferenceDevices = z.infer<typeof NodeInferenceDevicesSchema>;
|
|
1890
|
-
export
|
|
1926
|
+
export type InferenceDeviceExclusionReason = z.infer<typeof InferenceDeviceExclusionReasonSchema>;
|
|
1927
|
+
export { AgentLoadSummarySchema, CameraAssignmentStatusSchema, CameraAudioStatusSchema, CameraBrokerProfileSchema, CameraBrokerStatusSchema, CameraDecoderShmSchema, CameraDecoderStatusSchema, CameraDetectionPhaseSchema, CameraDetectionProvisioningSchema, CameraDetectionProvisioningStateSchema, CameraDetectionStatusSchema, CameraMotionStatusSchema, CameraPipelineConfigSchema, CameraRecordingModeSchema, CameraRecordingStatusSchema, CameraSourceStatusSchema, CameraSourceStreamSchema, CameraStatusDegradationReasonSchema, CameraStatusDegradationSchema, CameraStatusSchema, CameraStatusStageSchema, CameraStepOverridePatchSchema, CapabilityBindingsSchema, DiskReconcileJobSchema, GlobalMetricsSchema, INFERENCE_DEVICE_EXCLUSION_REASONS, InferenceDeviceExclusionReasonSchema, IngestOwnerSchema, PipelineAssignmentSchema, PipelineTemplateSchema as OrchestratorPipelineTemplateSchema, };
|
package/dist/device/index.d.ts
CHANGED
|
@@ -18,8 +18,8 @@ export type { IBatteryOperated, IDoorbellButton, INativeSnapshot, IPanTiltZoom,
|
|
|
18
18
|
export { getByPath, setByPath } from './path-util.js';
|
|
19
19
|
export type { ReachabilityPollHandle, ReachabilityPollLogger, ReachabilityPollOptions, } from './reachability-poll.js';
|
|
20
20
|
export { REACHABILITY_FAILURES_TO_OFFLINE, REACHABILITY_POLL_INTERVAL_MS, REACHABILITY_PROBE_TIMEOUT_MS, startReachabilityPoll, } from './reachability-poll.js';
|
|
21
|
-
export type { RuntimeStateBridge } from './runtime-state-helpers.js';
|
|
22
|
-
export { createRuntimeStateBridge } from './runtime-state-helpers.js';
|
|
21
|
+
export type { RuntimeStateBridge, RuntimeStateStaleReadPolicy, } from './runtime-state-helpers.js';
|
|
22
|
+
export { createRuntimeStateBridge, OPERATOR_WRITTEN_STALE_MS, RUNTIME_STATE_REFRESH_MISS_COOLDOWN_MS, } from './runtime-state-helpers.js';
|
|
23
23
|
export type { WireableField } from './schema-fields.js';
|
|
24
24
|
export { enumerateItemArrayFields, enumerateSchemaFields } from './schema-fields.js';
|
|
25
25
|
export type { DeviceConfigEntry } from './zod-to-config-ui.js';
|
|
@@ -13,6 +13,45 @@ import type { IDeviceRuntimeState } from './device-runtime-state.js';
|
|
|
13
13
|
* coming back; per-read is enough to stall the viewer's first paint.
|
|
14
14
|
*/
|
|
15
15
|
export declare const RUNTIME_STATE_REFRESH_MISS_COOLDOWN_MS = 60000;
|
|
16
|
+
/**
|
|
17
|
+
* The freshness window for a cap whose value changes ONLY when WE write it.
|
|
18
|
+
*
|
|
19
|
+
* The usual `staleMs: 10_000` is tuned for a reading that moves on its own — a
|
|
20
|
+
* battery level, a day/night state that flips at dusk. It is the wrong number
|
|
21
|
+
* for a cap like `privacy-mask`, whose two facts (is the video mask on, is the
|
|
22
|
+
* microphone on) change when an operator changes them, through a `setMask` /
|
|
23
|
+
* `setAudioEnabled` that **re-reads the camera and rewrites this very slice**.
|
|
24
|
+
* A write is therefore its own invalidation: the window never delays an
|
|
25
|
+
* operator's own change, however long it is.
|
|
26
|
+
*
|
|
27
|
+
* What the window really bounds is the ONE case we do not write: somebody
|
|
28
|
+
* changing the mask in the vendor app or the camera's web UI. Ten minutes is
|
|
29
|
+
* the trade — that change is visible within ten minutes, and a fleet of 29
|
|
30
|
+
* cameras behind a page that polls every 5s costs about 3 camera round trips a
|
|
31
|
+
* minute instead of 696
|
|
32
|
+
* ([D221](../../../../docs/decisions/adr-0221-a-polled-list-never-dials-a-camera.md)).
|
|
33
|
+
*
|
|
34
|
+
* Use it ONLY with {@link RuntimeStateStaleReadPolicy} `'serve-and-revalidate'`.
|
|
35
|
+
* On the awaiting default a window this long does not remove the stall, it
|
|
36
|
+
* merely makes it rarer and just as long.
|
|
37
|
+
*/
|
|
38
|
+
export declare const OPERATOR_WRITTEN_STALE_MS: number;
|
|
39
|
+
/**
|
|
40
|
+
* What a read does when the slice it finds is STALE **and present**.
|
|
41
|
+
*
|
|
42
|
+
* - `'await-refresh'` (default) — the caller waits for the camera. Right for a
|
|
43
|
+
* reader that asked BECAUSE it wants the current value: an open settings
|
|
44
|
+
* form, a write path reading back what the firmware accepted.
|
|
45
|
+
* - `'serve-and-revalidate'` — the caller is answered from the slice
|
|
46
|
+
* immediately and the refresh runs behind it, for the next caller. Right for
|
|
47
|
+
* a POLLED reader, which by definition will ask again shortly and must never
|
|
48
|
+
* put a camera round trip on a request path (D49, D221).
|
|
49
|
+
*
|
|
50
|
+
* A COLD slice — one that was never fetched — awaits under both policies. The
|
|
51
|
+
* first render has to be a real answer rather than a flash of the `empty()`
|
|
52
|
+
* default, and a default is exactly what "the operator muted this" looks like.
|
|
53
|
+
*/
|
|
54
|
+
export type RuntimeStateStaleReadPolicy = 'await-refresh' | 'serve-and-revalidate';
|
|
16
55
|
/**
|
|
17
56
|
* Minimal logger surface the bridge uses. Declared with METHOD syntax
|
|
18
57
|
* (not a property arrow) so the parameter check is bivariant — a scoped
|
|
@@ -69,6 +108,23 @@ export interface RuntimeStateBridgeLogger {
|
|
|
69
108
|
* helper stays thin so a single provider can host multiple cap-bridged
|
|
70
109
|
* readers without fighting over a shared promise.
|
|
71
110
|
*
|
|
111
|
+
* ## The freshness window belongs to the READER, not to the cap
|
|
112
|
+
*
|
|
113
|
+
* `staleMs` plus {@link RuntimeStateStaleReadPolicy} are what make this the
|
|
114
|
+
* ONLY cache in front of a cap. Before D221 they were not: `privacy-mask` kept
|
|
115
|
+
* the 10s window meant for a self-changing reading while a fleet-wide list
|
|
116
|
+
* polled it every 5s, so the slice was stale on nearly every read and the badge
|
|
117
|
+
* dialled 29 cameras twelve times a minute. The answer was a SECOND cache in
|
|
118
|
+
* the consumer — two authorities over one fact, and the write path that did not
|
|
119
|
+
* route through that consumer (the mask editor, which writes the cap directly)
|
|
120
|
+
* left it lying.
|
|
121
|
+
*
|
|
122
|
+
* So a cap whose value only an operator changes takes
|
|
123
|
+
* {@link OPERATOR_WRITTEN_STALE_MS} and `'serve-and-revalidate'`, here, once:
|
|
124
|
+
* the write path already re-reads the camera into this slice, which is a
|
|
125
|
+
* stronger invalidation than any downstream mirror can offer, and no consumer
|
|
126
|
+
* needs a cache of its own.
|
|
127
|
+
*
|
|
72
128
|
* ## A refresh that does not LAND is a miss, and a miss costs the caller
|
|
73
129
|
*
|
|
74
130
|
* Providers swallow their own camera errors (they keep the last slice
|
|
@@ -91,8 +147,10 @@ export interface RuntimeStateBridgeLogger {
|
|
|
91
147
|
*/
|
|
92
148
|
export interface RuntimeStateBridge<TStatus> {
|
|
93
149
|
/** Run a stale-check; if the slice is missing or older than
|
|
94
|
-
* `staleMs`,
|
|
95
|
-
*
|
|
150
|
+
* `staleMs`, refresh it — awaiting the camera, or behind the caller
|
|
151
|
+
* when `staleRead` is `'serve-and-revalidate'` and a slice already
|
|
152
|
+
* exists. Idempotent within the freshness window — back-to-back calls
|
|
153
|
+
* touch zero camera I/O. */
|
|
96
154
|
readonly ensureFresh: () => Promise<void>;
|
|
97
155
|
/** Drop-in `getStatus` provider method. Includes the cross-device
|
|
98
156
|
* guard + freshness check + status projection from the slice. */
|
|
@@ -113,6 +171,9 @@ export declare function createRuntimeStateBridge<TCap extends CapabilityDefiniti
|
|
|
113
171
|
readonly empty: () => z.infer<TCap['status']['schema']>;
|
|
114
172
|
/** Override the miss cooldown (tests, or a cap whose fetch is cheap). */
|
|
115
173
|
readonly refreshMissCooldownMs?: number;
|
|
174
|
+
/** What a stale-but-present slice does. Defaults to `'await-refresh'`,
|
|
175
|
+
* which is what every caller did before the policy existed. */
|
|
176
|
+
readonly staleRead?: RuntimeStateStaleReadPolicy;
|
|
116
177
|
/** Scoped logger so a refresh that never lands is visible per-device. */
|
|
117
178
|
readonly logger?: RuntimeStateBridgeLogger;
|
|
118
179
|
}): RuntimeStateBridge<z.infer<TCap['status']['schema']>>;
|
|
@@ -12,6 +12,15 @@ export declare enum EventCategory {
|
|
|
12
12
|
* Spec: docs/superpowers/specs/2026-05-14-framework-live-update-design.md
|
|
13
13
|
*/
|
|
14
14
|
SystemRestartCompleted = "system.restart-completed",
|
|
15
|
+
/**
|
|
16
|
+
* The hub reissued its own TLS certificate at boot (`ensureTlsCert`).
|
|
17
|
+
* Emitted only when the material on disk actually changed, so an
|
|
18
|
+
* operator who trusted the old certificate by hand is told rather than
|
|
19
|
+
* discovering it as a browser error. Payload `TlsCertChangedPayload`.
|
|
20
|
+
*
|
|
21
|
+
* Rule: docs/decisions/adr-0227-*.md
|
|
22
|
+
*/
|
|
23
|
+
SystemTlsCertChanged = "system.tls-cert-changed",
|
|
15
24
|
/**
|
|
16
25
|
* A newer addon or server-root package version was found by the
|
|
17
26
|
* authoritative registry check. Emitted once when any observed
|
package/dist/enums.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_event_category = require("./event-category-
|
|
2
|
+
const require_event_category = require("./event-category-EY0GNjV9.js");
|
|
3
3
|
//#region src/enums/event-source-type.ts
|
|
4
4
|
var EventSourceType = /* @__PURE__ */ function(EventSourceType) {
|
|
5
5
|
EventSourceType["Addon"] = "addon";
|
package/dist/enums.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as EventCategory } from "./event-category-
|
|
1
|
+
import { t as EventCategory } from "./event-category-CIa_iT6b.mjs";
|
|
2
2
|
//#region src/enums/event-source-type.ts
|
|
3
3
|
var EventSourceType = /* @__PURE__ */ function(EventSourceType) {
|
|
4
4
|
EventSourceType["Addon"] = "addon";
|
|
@@ -14,6 +14,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
14
14
|
*/
|
|
15
15
|
EventCategory["SystemRestartCompleted"] = "system.restart-completed";
|
|
16
16
|
/**
|
|
17
|
+
* The hub reissued its own TLS certificate at boot (`ensureTlsCert`).
|
|
18
|
+
* Emitted only when the material on disk actually changed, so an
|
|
19
|
+
* operator who trusted the old certificate by hand is told rather than
|
|
20
|
+
* discovering it as a browser error. Payload `TlsCertChangedPayload`.
|
|
21
|
+
*
|
|
22
|
+
* Rule: docs/decisions/adr-0227-*.md
|
|
23
|
+
*/
|
|
24
|
+
EventCategory["SystemTlsCertChanged"] = "system.tls-cert-changed";
|
|
25
|
+
/**
|
|
17
26
|
* A newer addon or server-root package version was found by the
|
|
18
27
|
* authoritative registry check. Emitted once when any observed
|
|
19
28
|
* `latestVersion` changes (or a package/node first appears behind);
|
|
@@ -14,6 +14,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
14
14
|
*/
|
|
15
15
|
EventCategory["SystemRestartCompleted"] = "system.restart-completed";
|
|
16
16
|
/**
|
|
17
|
+
* The hub reissued its own TLS certificate at boot (`ensureTlsCert`).
|
|
18
|
+
* Emitted only when the material on disk actually changed, so an
|
|
19
|
+
* operator who trusted the old certificate by hand is told rather than
|
|
20
|
+
* discovering it as a browser error. Payload `TlsCertChangedPayload`.
|
|
21
|
+
*
|
|
22
|
+
* Rule: docs/decisions/adr-0227-*.md
|
|
23
|
+
*/
|
|
24
|
+
EventCategory["SystemTlsCertChanged"] = "system.tls-cert-changed";
|
|
25
|
+
/**
|
|
17
26
|
* A newer addon or server-root package version was found by the
|
|
18
27
|
* authoritative registry check. Emitted once when any observed
|
|
19
28
|
* `latestVersion` changes (or a package/node first appears behind);
|
package/dist/index.d.ts
CHANGED
|
@@ -153,8 +153,8 @@ export type { IBatteryOperated, IDoorbellButton, INativeSnapshot, IPanTiltZoom,
|
|
|
153
153
|
export { getByPath, setByPath } from './device/path-util.js';
|
|
154
154
|
export type { ReachabilityPollHandle, ReachabilityPollLogger, ReachabilityPollOptions, } from './device/reachability-poll.js';
|
|
155
155
|
export { REACHABILITY_FAILURES_TO_OFFLINE, REACHABILITY_POLL_INTERVAL_MS, REACHABILITY_PROBE_TIMEOUT_MS, startReachabilityPoll, } from './device/reachability-poll.js';
|
|
156
|
-
export type { RuntimeStateBridge } from './device/runtime-state-helpers.js';
|
|
157
|
-
export { createRuntimeStateBridge } from './device/runtime-state-helpers.js';
|
|
156
|
+
export type { RuntimeStateBridge, RuntimeStateStaleReadPolicy, } from './device/runtime-state-helpers.js';
|
|
157
|
+
export { createRuntimeStateBridge, OPERATOR_WRITTEN_STALE_MS, RUNTIME_STATE_REFRESH_MISS_COOLDOWN_MS, } from './device/runtime-state-helpers.js';
|
|
158
158
|
export type { WireableField } from './device/schema-fields.js';
|
|
159
159
|
export { enumerateItemArrayFields, enumerateSchemaFields } from './device/schema-fields.js';
|
|
160
160
|
export type { SourceInfo } from './device/source-info.js';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_event_category = require("./event-category-
|
|
3
|
-
const require_sleep = require("./sleep-
|
|
2
|
+
const require_event_category = require("./event-category-EY0GNjV9.js");
|
|
3
|
+
const require_sleep = require("./sleep-C2XhJhkd.js");
|
|
4
4
|
const require_canonical_hash = require("./canonical-hash-DNV8S5ET.js");
|
|
5
5
|
const require_enums = require("./enums.js");
|
|
6
6
|
const require_err_msg = require("./err-msg-COpsHMw2.js");
|
|
@@ -18236,6 +18236,24 @@ var CameraStatusSchema = zod.z.object({
|
|
|
18236
18236
|
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
18237
18237
|
fetchedAt: zod.z.number()
|
|
18238
18238
|
});
|
|
18239
|
+
/**
|
|
18240
|
+
* Why the dispatcher does NOT consider a device the node HAS for the
|
|
18241
|
+
* camera-root election. The list is the CONTRACT between the orchestrator's
|
|
18242
|
+
* `resolveInferenceDeviceEligibility` (which computes it) and the admin UI
|
|
18243
|
+
* (which renders it) — the orchestrator's `InferenceDeviceExclusionReason`
|
|
18244
|
+
* derives from this tuple so the two can never drift.
|
|
18245
|
+
*
|
|
18246
|
+
* Every one of these drops used to be silent, and an accelerator that is
|
|
18247
|
+
* enabled, available, and never chosen is indistinguishable from one that was
|
|
18248
|
+
* never configured. The reason is the difference.
|
|
18249
|
+
*/
|
|
18250
|
+
var INFERENCE_DEVICE_EXCLUSION_REASONS = [
|
|
18251
|
+
"disabled",
|
|
18252
|
+
"unavailable",
|
|
18253
|
+
"cannot-host-camera-root",
|
|
18254
|
+
"accelerator-preferred"
|
|
18255
|
+
];
|
|
18256
|
+
var InferenceDeviceExclusionReasonSchema = zod.z.enum(INFERENCE_DEVICE_EXCLUSION_REASONS);
|
|
18239
18257
|
var NodeInferenceDeviceSchema = zod.z.object({
|
|
18240
18258
|
/** Stable per-node device key, e.g. `openvino:npu`, `edgetpu:usb`, `cpu`. */
|
|
18241
18259
|
key: zod.z.string(),
|
|
@@ -18266,7 +18284,17 @@ var NodeInferenceDeviceSchema = zod.z.object({
|
|
|
18266
18284
|
* available per format; this is the stored selection that becomes the
|
|
18267
18285
|
* default for EVERY camera landing on this accelerator.
|
|
18268
18286
|
*/
|
|
18269
|
-
steps: zod.z.record(zod.z.string(), DeviceStepConfigSchema).optional()
|
|
18287
|
+
steps: zod.z.record(zod.z.string(), DeviceStepConfigSchema).optional(),
|
|
18288
|
+
/**
|
|
18289
|
+
* `null` when the device IS a camera-root candidate on this node; otherwise
|
|
18290
|
+
* the reason the dispatcher drops it. Computed by the SAME
|
|
18291
|
+
* `resolveInferenceDeviceEligibility` the dispatcher runs, so this view can
|
|
18292
|
+
* never disagree with the election — deriving it in the UI from
|
|
18293
|
+
* `enabled`/`available` would silently miss `cannot-host-camera-root` (needs
|
|
18294
|
+
* the node's model catalog) and `accelerator-preferred` (needs the node-wide
|
|
18295
|
+
* "an accelerator is serving" predicate).
|
|
18296
|
+
*/
|
|
18297
|
+
exclusion: InferenceDeviceExclusionReasonSchema.nullable()
|
|
18270
18298
|
});
|
|
18271
18299
|
var NodeInferenceDevicesSchema = zod.z.object({
|
|
18272
18300
|
nodeId: zod.z.string(),
|
|
@@ -24586,7 +24614,41 @@ var ConnectionEndpointSchema = zod.z.object({
|
|
|
24586
24614
|
*/
|
|
24587
24615
|
priority: zod.z.number()
|
|
24588
24616
|
});
|
|
24589
|
-
|
|
24617
|
+
/**
|
|
24618
|
+
* Where the advertised local port came from. Ordered most → least
|
|
24619
|
+
* authoritative, and the whole point of returning it: a client must be able to
|
|
24620
|
+
* tell a FACT about the hub's socket from an echo of its own guess.
|
|
24621
|
+
*/
|
|
24622
|
+
var LocalPortSourceEnum = zod.z.enum([
|
|
24623
|
+
"server-config",
|
|
24624
|
+
"server-env",
|
|
24625
|
+
"caller-hint",
|
|
24626
|
+
"default"
|
|
24627
|
+
]);
|
|
24628
|
+
/** The port every LAN/loopback `baseUrl` in the same result was built with. */
|
|
24629
|
+
var AdvertisedLocalPortSchema = zod.z.object({
|
|
24630
|
+
port: zod.z.number().int().min(1).max(65535),
|
|
24631
|
+
source: LocalPortSourceEnum
|
|
24632
|
+
});
|
|
24633
|
+
var GetConnectionEndpointsResultSchema = zod.z.object({
|
|
24634
|
+
endpoints: zod.z.array(ConnectionEndpointSchema).readonly(),
|
|
24635
|
+
/**
|
|
24636
|
+
* The port the hub built the LAN/loopback URLs with, and where that number
|
|
24637
|
+
* came from.
|
|
24638
|
+
*
|
|
24639
|
+
* Returned rather than merely applied, because "the URL is right" and "the
|
|
24640
|
+
* client can KNOW the URL is right" are different properties. A client that
|
|
24641
|
+
* only sees a corrected URL cannot distinguish a hub that fixed the port from
|
|
24642
|
+
* a hub that echoed the port the client sent, so it cannot decide whether to
|
|
24643
|
+
* race the candidate or discard it. With `source` it can: anything but
|
|
24644
|
+
* `caller-hint` is the hub's own socket.
|
|
24645
|
+
*
|
|
24646
|
+
* Absent on hubs predating this field — a client that finds it missing is
|
|
24647
|
+
* talking to an echoing hub and must degrade exactly as it does for
|
|
24648
|
+
* `caller-hint`.
|
|
24649
|
+
*/
|
|
24650
|
+
localPort: AdvertisedLocalPortSchema
|
|
24651
|
+
});
|
|
24590
24652
|
/**
|
|
24591
24653
|
* The chosen outbound endpoint for notification artifacts. `baseUrl: null` =
|
|
24592
24654
|
* AUTO (resolved from the candidate ranking at send time); `resolved` reports
|
|
@@ -24632,10 +24694,35 @@ var localNetworkCapability = {
|
|
|
24632
24694
|
* Honours `getAllowedAddresses()` when set — addresses outside
|
|
24633
24695
|
* the allowlist are dropped (the public tunnel + loopback are
|
|
24634
24696
|
* always included as escape hatches).
|
|
24697
|
+
*
|
|
24698
|
+
* **The port is the hub's, not the caller's** (D62 — a function's fact
|
|
24699
|
+
* belongs to whoever already owns it). This method used to take a `port`
|
|
24700
|
+
* and echo it onto every LAN and loopback URL it advertised, which made
|
|
24701
|
+
* every client a second authority on a socket only the hub binds. A viewer
|
|
24702
|
+
* configured with a port-less public URL (`https://camstack.example.top`)
|
|
24703
|
+
* infers 443 from the scheme, asks with 443, and was handed
|
|
24704
|
+
* `https://192.168.1.9:443` for a hub listening on 4443. That candidate
|
|
24705
|
+
* cannot ever answer, and losing its race reads in the log exactly like
|
|
24706
|
+
* "the LAN was tried and it was slower" — so an operator sitting on his own
|
|
24707
|
+
* WiFi stayed on the public tunnel for weeks, with the LAN candidate born
|
|
24708
|
+
* dead on every single connect.
|
|
24709
|
+
*
|
|
24710
|
+
* The hub now resolves its own listen port and reports it as `localPort`,
|
|
24711
|
+
* with the SOURCE of the number, so a client can tell a fact from an echo.
|
|
24712
|
+
*
|
|
24713
|
+
* Out of scope on purpose: a LAN URL that is not the hub's own socket (a
|
|
24714
|
+
* reverse proxy in front of it on another port) is not this method's to
|
|
24715
|
+
* invent either — pin it with `setNotificationEndpoint` / a configured
|
|
24716
|
+
* origin, which is an operator statement rather than a guess.
|
|
24635
24717
|
*/
|
|
24636
24718
|
getConnectionEndpoints: require_sleep.method(zod.z.object({
|
|
24637
|
-
/**
|
|
24638
|
-
|
|
24719
|
+
/**
|
|
24720
|
+
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
24721
|
+
* written against the echoing contract keep working; the hub uses it
|
|
24722
|
+
* only when it cannot read its own port, and says so via
|
|
24723
|
+
* `localPort.source === 'caller-hint'`.
|
|
24724
|
+
*/
|
|
24725
|
+
port: zod.z.number().int().min(1).max(65535).optional(),
|
|
24639
24726
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
24640
24727
|
* candidate. Default `true`. */
|
|
24641
24728
|
includeLoopback: zod.z.boolean().optional(),
|
|
@@ -32409,11 +32496,63 @@ function startReachabilityPoll(options) {
|
|
|
32409
32496
|
//#endregion
|
|
32410
32497
|
//#region src/device/runtime-state-helpers.ts
|
|
32411
32498
|
var LAST_FETCHED_FIELD = "lastFetchedAt";
|
|
32499
|
+
/**
|
|
32500
|
+
* How long a bridge stops re-attempting a refresh that did not land.
|
|
32501
|
+
*
|
|
32502
|
+
* Sized against the failure it exists for: a camera whose control plane
|
|
32503
|
+
* is unreachable costs the FULL connect give-up (~3s on Linux when the
|
|
32504
|
+
* neighbour never answers, up to the client's own timeout otherwise) on
|
|
32505
|
+
* every attempt, and a failed refresh never advances `lastFetchedAt`, so
|
|
32506
|
+
* without a cooldown the slice is permanently stale and EVERY read pays
|
|
32507
|
+
* that price. One attempt per minute is enough to notice the camera
|
|
32508
|
+
* coming back; per-read is enough to stall the viewer's first paint.
|
|
32509
|
+
*/
|
|
32510
|
+
var RUNTIME_STATE_REFRESH_MISS_COOLDOWN_MS = 6e4;
|
|
32511
|
+
/**
|
|
32512
|
+
* The freshness window for a cap whose value changes ONLY when WE write it.
|
|
32513
|
+
*
|
|
32514
|
+
* The usual `staleMs: 10_000` is tuned for a reading that moves on its own — a
|
|
32515
|
+
* battery level, a day/night state that flips at dusk. It is the wrong number
|
|
32516
|
+
* for a cap like `privacy-mask`, whose two facts (is the video mask on, is the
|
|
32517
|
+
* microphone on) change when an operator changes them, through a `setMask` /
|
|
32518
|
+
* `setAudioEnabled` that **re-reads the camera and rewrites this very slice**.
|
|
32519
|
+
* A write is therefore its own invalidation: the window never delays an
|
|
32520
|
+
* operator's own change, however long it is.
|
|
32521
|
+
*
|
|
32522
|
+
* What the window really bounds is the ONE case we do not write: somebody
|
|
32523
|
+
* changing the mask in the vendor app or the camera's web UI. Ten minutes is
|
|
32524
|
+
* the trade — that change is visible within ten minutes, and a fleet of 29
|
|
32525
|
+
* cameras behind a page that polls every 5s costs about 3 camera round trips a
|
|
32526
|
+
* minute instead of 696
|
|
32527
|
+
* ([D221](../../../../docs/decisions/adr-0221-a-polled-list-never-dials-a-camera.md)).
|
|
32528
|
+
*
|
|
32529
|
+
* Use it ONLY with {@link RuntimeStateStaleReadPolicy} `'serve-and-revalidate'`.
|
|
32530
|
+
* On the awaiting default a window this long does not remove the stall, it
|
|
32531
|
+
* merely makes it rarer and just as long.
|
|
32532
|
+
*/
|
|
32533
|
+
var OPERATOR_WRITTEN_STALE_MS = 10 * 6e4;
|
|
32412
32534
|
function createRuntimeStateBridge(params) {
|
|
32413
32535
|
const { runtimeState, cap, ownDeviceId, refresh, staleMs, empty, logger } = params;
|
|
32414
32536
|
const missCooldownMs = params.refreshMissCooldownMs ?? 6e4;
|
|
32537
|
+
const staleRead = params.staleRead ?? "await-refresh";
|
|
32415
32538
|
/** Epoch ms until which a refresh is not re-attempted. 0 = no cooldown. */
|
|
32416
32539
|
let missCooldownUntil = 0;
|
|
32540
|
+
/**
|
|
32541
|
+
* The refresh this bridge currently has in the air, if any.
|
|
32542
|
+
*
|
|
32543
|
+
* Providers single-flight their own camera client, so this is not what stops
|
|
32544
|
+
* a second round trip. What it stops is a POLLED reader JOINING one: under
|
|
32545
|
+
* `'serve-and-revalidate'` a read that finds a refresh already outstanding is
|
|
32546
|
+
* answered from the slice at once — even a cold, empty slice, which reports
|
|
32547
|
+
* UNKNOWN, which is the truth about a camera nobody has reached.
|
|
32548
|
+
*
|
|
32549
|
+
* That distinction is the whole cost of an unreachable camera. Measured on
|
|
32550
|
+
* the live hub (device 3629, an offline battery Reolink): its refresh takes
|
|
32551
|
+
* 23.1s to give up, so without this every 5s poll landing inside those 23s
|
|
32552
|
+
* joined the wait and spent the caller's full 1.2s source budget — five
|
|
32553
|
+
* stalled polls per cooldown cycle, for one camera, forever.
|
|
32554
|
+
*/
|
|
32555
|
+
let refreshInFlight = null;
|
|
32417
32556
|
const readFetchedAt = () => {
|
|
32418
32557
|
const value = runtimeState.getCapState(cap.name)?.[LAST_FETCHED_FIELD];
|
|
32419
32558
|
return typeof value === "number" ? value : 0;
|
|
@@ -32434,14 +32573,14 @@ function createRuntimeStateBridge(params) {
|
|
|
32434
32573
|
}
|
|
32435
32574
|
});
|
|
32436
32575
|
};
|
|
32437
|
-
|
|
32438
|
-
|
|
32439
|
-
|
|
32440
|
-
|
|
32441
|
-
|
|
32442
|
-
|
|
32443
|
-
|
|
32444
|
-
|
|
32576
|
+
/**
|
|
32577
|
+
* One refresh attempt, plus the LANDED check that decides the cooldown.
|
|
32578
|
+
*
|
|
32579
|
+
* @param fetchedAt What `lastFetchedAt` was before the attempt — the only
|
|
32580
|
+
* evidence the bridge has that the refresh persisted
|
|
32581
|
+
* anything, since providers swallow their own camera errors.
|
|
32582
|
+
*/
|
|
32583
|
+
const runRefresh = async (fetchedAt) => {
|
|
32445
32584
|
try {
|
|
32446
32585
|
await refresh();
|
|
32447
32586
|
} catch (err) {
|
|
@@ -32457,6 +32596,41 @@ function createRuntimeStateBridge(params) {
|
|
|
32457
32596
|
}
|
|
32458
32597
|
openMissCooldown(void 0);
|
|
32459
32598
|
};
|
|
32599
|
+
/**
|
|
32600
|
+
* Start a refresh and remember it, at most one at a time.
|
|
32601
|
+
*
|
|
32602
|
+
* It never rejects: under `'serve-and-revalidate'` the caller is answered
|
|
32603
|
+
* from the slice either way, so a floating rejection would take the process
|
|
32604
|
+
* down for a fault the miss cooldown has already recorded and logged.
|
|
32605
|
+
*/
|
|
32606
|
+
const startRefresh = (fetchedAt) => {
|
|
32607
|
+
const existing = refreshInFlight;
|
|
32608
|
+
if (existing !== null) return existing;
|
|
32609
|
+
const started = runRefresh(fetchedAt).catch(() => void 0).finally(() => {
|
|
32610
|
+
refreshInFlight = null;
|
|
32611
|
+
});
|
|
32612
|
+
refreshInFlight = started;
|
|
32613
|
+
return started;
|
|
32614
|
+
};
|
|
32615
|
+
const ensureFresh = async () => {
|
|
32616
|
+
const slice = runtimeState.getCapState(cap.name);
|
|
32617
|
+
const fetchedAt = readFetchedAt();
|
|
32618
|
+
if (slice && Date.now() - fetchedAt <= staleMs) {
|
|
32619
|
+
missCooldownUntil = 0;
|
|
32620
|
+
return;
|
|
32621
|
+
}
|
|
32622
|
+
if (Date.now() < missCooldownUntil) return;
|
|
32623
|
+
if (staleRead === "serve-and-revalidate") {
|
|
32624
|
+
if (refreshInFlight !== null) return;
|
|
32625
|
+
if (slice && fetchedAt > 0) {
|
|
32626
|
+
startRefresh(fetchedAt);
|
|
32627
|
+
return;
|
|
32628
|
+
}
|
|
32629
|
+
await startRefresh(fetchedAt);
|
|
32630
|
+
return;
|
|
32631
|
+
}
|
|
32632
|
+
await runRefresh(fetchedAt);
|
|
32633
|
+
};
|
|
32460
32634
|
const projectStatus = () => {
|
|
32461
32635
|
const slice = runtimeState.getCapState(cap.name);
|
|
32462
32636
|
if (!slice) return empty();
|
|
@@ -47267,6 +47441,7 @@ exports.HistoryResolutionEnum = HistoryResolutionEnum;
|
|
|
47267
47441
|
exports.HumidifierStatusSchema = HumidifierStatusSchema;
|
|
47268
47442
|
exports.HumiditySensorStatusSchema = HumiditySensorStatusSchema;
|
|
47269
47443
|
exports.HvacModeSchema = HvacModeSchema;
|
|
47444
|
+
exports.INFERENCE_DEVICE_EXCLUSION_REASONS = INFERENCE_DEVICE_EXCLUSION_REASONS;
|
|
47270
47445
|
exports.ImageContractSchema = ImageContractSchema;
|
|
47271
47446
|
exports.ImageContractStateSchema = ImageContractStateSchema;
|
|
47272
47447
|
exports.ImageRotateSchema = ImageRotateSchema;
|
|
@@ -47274,6 +47449,7 @@ exports.ImageSettingsOptionsSchema = ImageSettingsOptionsSchema;
|
|
|
47274
47449
|
exports.ImageSettingsPatchSchema = ImageSettingsPatchSchema;
|
|
47275
47450
|
exports.ImageSettingsStatusSchema = ImageSettingsStatusSchema;
|
|
47276
47451
|
exports.ImageStatusSchema = ImageStatusSchema;
|
|
47452
|
+
exports.InferenceDeviceExclusionReasonSchema = InferenceDeviceExclusionReasonSchema;
|
|
47277
47453
|
exports.IngestOwnerSchema = IngestOwnerSchema;
|
|
47278
47454
|
exports.InstalledPackageSchema = InstalledPackageSchema;
|
|
47279
47455
|
exports.IntegrationLiteSchema = IntegrationLiteSchema;
|
|
@@ -47486,6 +47662,7 @@ exports.NotificationFormatSchema = NotificationFormatSchema;
|
|
|
47486
47662
|
exports.NotificationSchema = NotificationSchema;
|
|
47487
47663
|
exports.NotifierStatusSchema = NotifierStatusSchema;
|
|
47488
47664
|
exports.NumericSensorStatusSchema = NumericSensorStatusSchema;
|
|
47665
|
+
exports.OPERATOR_WRITTEN_STALE_MS = OPERATOR_WRITTEN_STALE_MS;
|
|
47489
47666
|
exports.OPS_LOG_DEFAULT_LIMIT = OPS_LOG_DEFAULT_LIMIT;
|
|
47490
47667
|
exports.OPS_LOG_RING_DEFAULT_MAX = OPS_LOG_RING_DEFAULT_MAX;
|
|
47491
47668
|
exports.OauthIntegrationDescriptorSchema = OauthIntegrationDescriptorSchema;
|
|
@@ -47568,6 +47745,7 @@ exports.RESERVED_BINDING_NAMES = RESERVED_BINDING_NAMES;
|
|
|
47568
47745
|
exports.RESTORED_CAP_NAMES = RESTORED_CAP_NAMES;
|
|
47569
47746
|
exports.RUNTIME_DEFAULTS = RUNTIME_DEFAULTS;
|
|
47570
47747
|
exports.RUNTIME_STATE_POLICY = RUNTIME_STATE_POLICY;
|
|
47748
|
+
exports.RUNTIME_STATE_REFRESH_MISS_COOLDOWN_MS = RUNTIME_STATE_REFRESH_MISS_COOLDOWN_MS;
|
|
47571
47749
|
exports.RUNTIME_TO_FORMAT = RUNTIME_TO_FORMAT;
|
|
47572
47750
|
exports.RawStateResultSchema = require_sleep.RawStateResultSchema;
|
|
47573
47751
|
exports.ReadGopBytesResultSchema = ReadGopBytesResultSchema;
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as EventCategory } from "./event-category-
|
|
2
|
-
import { $ as EncodedPacketSchema, A as expandCapMethods, B as ReadinessTimeoutError, C as DeviceRole, Ct as WELL_KNOWN_TABS, D as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Dt as hydrateSchema, E as DEFAULT_RUNTIME_STATE_DURABILITY, Et as collectHydratedFieldValues, F as CAP_NODE_PIN_CONTEXT_KEY, G as BrokerStatusSchema, H as readinessKey, I as nodePin, J as CamStreamKindSchema, K as CAM_PROFILE_ORDER, L as readNodePin, M as method, N as resolveCapMount, O as DEVICE_STATUS_METHOD, Ot as resolveHydratedFieldValue, P as systemMethod, Q as DecodedFrameSchema, R as toNodeId, S as DeviceFeature, St as isEvent, T as adminUiCapability, Tt as collectHydratedFieldEntries, U as scopeKey, V as emitDownForOwnedCaps, W as BrokerStatsSchema, X as CameraStreamSchema, Y as CamStreamResolutionSchema, Z as DecodedAudioChunkSchema, _ as createSliceHandle, _t as BaseAddon, a as asJsonObject, at as StreamSourceEntrySchema, b as viewerUiCapability, bt as createEvent, c as parseJsonArray, ct as SubscribeAudioChunksResultSchema, d as BOOT_RECOVERY_BACKOFF_MS, dt as makeProfileBrokerId, et as FrameHandleFormatSchema, f as DEVICE_SCOPED_CAPS, ft as makeSourceBrokerId, g as createMirrorSource, gt as DisposerChain, h as createLazyTrpcSource, ht as DATAPLANE_SECRET_HEADER, i as asJsonArray, it as ProfileSlotStatusSchema, j as isDeviceConfigCap, k as event, l as parseJsonObject, lt as SubscribeFramesInputSchema, m as createDeviceProxy, mt as selectAssignedProfileSlots, n as sleepCancellable, nt as ProfileRtspEntrySchema, o as asNumber, ot as StreamSourceSchema, p as isDeviceScopedCap, pt as parseProfileBrokerId, q as CamProfileSchema, r as asBoolean, rt as ProfileSlotSchema, s as asString, st as SubscribeAudioChunksInputSchema, t as sleep, tt as FrameHandleSchema, u as parseJsonUnknown, ut as SubscribeFramesResultSchema, v as RawStateResultSchema, vt as normalizeAddonInitResult, w as DeviceType, wt as WELL_KNOWN_TAB_MAP, x as ChargingStatus, xt as emitReadiness, y as deviceOpsCapability, yt as createDurableState, z as ReadinessRegistry } from "./sleep-
|
|
1
|
+
import { t as EventCategory } from "./event-category-CIa_iT6b.mjs";
|
|
2
|
+
import { $ as EncodedPacketSchema, A as expandCapMethods, B as ReadinessTimeoutError, C as DeviceRole, Ct as WELL_KNOWN_TABS, D as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Dt as hydrateSchema, E as DEFAULT_RUNTIME_STATE_DURABILITY, Et as collectHydratedFieldValues, F as CAP_NODE_PIN_CONTEXT_KEY, G as BrokerStatusSchema, H as readinessKey, I as nodePin, J as CamStreamKindSchema, K as CAM_PROFILE_ORDER, L as readNodePin, M as method, N as resolveCapMount, O as DEVICE_STATUS_METHOD, Ot as resolveHydratedFieldValue, P as systemMethod, Q as DecodedFrameSchema, R as toNodeId, S as DeviceFeature, St as isEvent, T as adminUiCapability, Tt as collectHydratedFieldEntries, U as scopeKey, V as emitDownForOwnedCaps, W as BrokerStatsSchema, X as CameraStreamSchema, Y as CamStreamResolutionSchema, Z as DecodedAudioChunkSchema, _ as createSliceHandle, _t as BaseAddon, a as asJsonObject, at as StreamSourceEntrySchema, b as viewerUiCapability, bt as createEvent, c as parseJsonArray, ct as SubscribeAudioChunksResultSchema, d as BOOT_RECOVERY_BACKOFF_MS, dt as makeProfileBrokerId, et as FrameHandleFormatSchema, f as DEVICE_SCOPED_CAPS, ft as makeSourceBrokerId, g as createMirrorSource, gt as DisposerChain, h as createLazyTrpcSource, ht as DATAPLANE_SECRET_HEADER, i as asJsonArray, it as ProfileSlotStatusSchema, j as isDeviceConfigCap, k as event, l as parseJsonObject, lt as SubscribeFramesInputSchema, m as createDeviceProxy, mt as selectAssignedProfileSlots, n as sleepCancellable, nt as ProfileRtspEntrySchema, o as asNumber, ot as StreamSourceSchema, p as isDeviceScopedCap, pt as parseProfileBrokerId, q as CamProfileSchema, r as asBoolean, rt as ProfileSlotSchema, s as asString, st as SubscribeAudioChunksInputSchema, t as sleep, tt as FrameHandleSchema, u as parseJsonUnknown, ut as SubscribeFramesResultSchema, v as RawStateResultSchema, vt as normalizeAddonInitResult, w as DeviceType, wt as WELL_KNOWN_TAB_MAP, x as ChargingStatus, xt as emitReadiness, y as deviceOpsCapability, yt as createDurableState, z as ReadinessRegistry } from "./sleep-B8EIZt4h.mjs";
|
|
3
3
|
import { a as buildAudioArgs, c as buildVideoArgs, d as logBannerArgs, f as pickVideoEncoder, i as audioPlanFromEncodeProfile, l as invocationFromEncodeProfile, n as Fmp4BoxSplitter, o as buildFfmpegArgs, r as AUDIO_PRESETS, s as buildInputArgs, t as canonicalHash, u as isSoftwareDecode } from "./canonical-hash-rO1sRmEK.mjs";
|
|
4
4
|
import { EventSourceType } from "./enums.mjs";
|
|
5
5
|
import { t as errMsg } from "./err-msg-IQTHeDzc.mjs";
|
|
@@ -18235,6 +18235,24 @@ var CameraStatusSchema = z.object({
|
|
|
18235
18235
|
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
18236
18236
|
fetchedAt: z.number()
|
|
18237
18237
|
});
|
|
18238
|
+
/**
|
|
18239
|
+
* Why the dispatcher does NOT consider a device the node HAS for the
|
|
18240
|
+
* camera-root election. The list is the CONTRACT between the orchestrator's
|
|
18241
|
+
* `resolveInferenceDeviceEligibility` (which computes it) and the admin UI
|
|
18242
|
+
* (which renders it) — the orchestrator's `InferenceDeviceExclusionReason`
|
|
18243
|
+
* derives from this tuple so the two can never drift.
|
|
18244
|
+
*
|
|
18245
|
+
* Every one of these drops used to be silent, and an accelerator that is
|
|
18246
|
+
* enabled, available, and never chosen is indistinguishable from one that was
|
|
18247
|
+
* never configured. The reason is the difference.
|
|
18248
|
+
*/
|
|
18249
|
+
var INFERENCE_DEVICE_EXCLUSION_REASONS = [
|
|
18250
|
+
"disabled",
|
|
18251
|
+
"unavailable",
|
|
18252
|
+
"cannot-host-camera-root",
|
|
18253
|
+
"accelerator-preferred"
|
|
18254
|
+
];
|
|
18255
|
+
var InferenceDeviceExclusionReasonSchema = z.enum(INFERENCE_DEVICE_EXCLUSION_REASONS);
|
|
18238
18256
|
var NodeInferenceDeviceSchema = z.object({
|
|
18239
18257
|
/** Stable per-node device key, e.g. `openvino:npu`, `edgetpu:usb`, `cpu`. */
|
|
18240
18258
|
key: z.string(),
|
|
@@ -18265,7 +18283,17 @@ var NodeInferenceDeviceSchema = z.object({
|
|
|
18265
18283
|
* available per format; this is the stored selection that becomes the
|
|
18266
18284
|
* default for EVERY camera landing on this accelerator.
|
|
18267
18285
|
*/
|
|
18268
|
-
steps: z.record(z.string(), DeviceStepConfigSchema).optional()
|
|
18286
|
+
steps: z.record(z.string(), DeviceStepConfigSchema).optional(),
|
|
18287
|
+
/**
|
|
18288
|
+
* `null` when the device IS a camera-root candidate on this node; otherwise
|
|
18289
|
+
* the reason the dispatcher drops it. Computed by the SAME
|
|
18290
|
+
* `resolveInferenceDeviceEligibility` the dispatcher runs, so this view can
|
|
18291
|
+
* never disagree with the election — deriving it in the UI from
|
|
18292
|
+
* `enabled`/`available` would silently miss `cannot-host-camera-root` (needs
|
|
18293
|
+
* the node's model catalog) and `accelerator-preferred` (needs the node-wide
|
|
18294
|
+
* "an accelerator is serving" predicate).
|
|
18295
|
+
*/
|
|
18296
|
+
exclusion: InferenceDeviceExclusionReasonSchema.nullable()
|
|
18269
18297
|
});
|
|
18270
18298
|
var NodeInferenceDevicesSchema = z.object({
|
|
18271
18299
|
nodeId: z.string(),
|
|
@@ -24585,7 +24613,41 @@ var ConnectionEndpointSchema = z.object({
|
|
|
24585
24613
|
*/
|
|
24586
24614
|
priority: z.number()
|
|
24587
24615
|
});
|
|
24588
|
-
|
|
24616
|
+
/**
|
|
24617
|
+
* Where the advertised local port came from. Ordered most → least
|
|
24618
|
+
* authoritative, and the whole point of returning it: a client must be able to
|
|
24619
|
+
* tell a FACT about the hub's socket from an echo of its own guess.
|
|
24620
|
+
*/
|
|
24621
|
+
var LocalPortSourceEnum = z.enum([
|
|
24622
|
+
"server-config",
|
|
24623
|
+
"server-env",
|
|
24624
|
+
"caller-hint",
|
|
24625
|
+
"default"
|
|
24626
|
+
]);
|
|
24627
|
+
/** The port every LAN/loopback `baseUrl` in the same result was built with. */
|
|
24628
|
+
var AdvertisedLocalPortSchema = z.object({
|
|
24629
|
+
port: z.number().int().min(1).max(65535),
|
|
24630
|
+
source: LocalPortSourceEnum
|
|
24631
|
+
});
|
|
24632
|
+
var GetConnectionEndpointsResultSchema = z.object({
|
|
24633
|
+
endpoints: z.array(ConnectionEndpointSchema).readonly(),
|
|
24634
|
+
/**
|
|
24635
|
+
* The port the hub built the LAN/loopback URLs with, and where that number
|
|
24636
|
+
* came from.
|
|
24637
|
+
*
|
|
24638
|
+
* Returned rather than merely applied, because "the URL is right" and "the
|
|
24639
|
+
* client can KNOW the URL is right" are different properties. A client that
|
|
24640
|
+
* only sees a corrected URL cannot distinguish a hub that fixed the port from
|
|
24641
|
+
* a hub that echoed the port the client sent, so it cannot decide whether to
|
|
24642
|
+
* race the candidate or discard it. With `source` it can: anything but
|
|
24643
|
+
* `caller-hint` is the hub's own socket.
|
|
24644
|
+
*
|
|
24645
|
+
* Absent on hubs predating this field — a client that finds it missing is
|
|
24646
|
+
* talking to an echoing hub and must degrade exactly as it does for
|
|
24647
|
+
* `caller-hint`.
|
|
24648
|
+
*/
|
|
24649
|
+
localPort: AdvertisedLocalPortSchema
|
|
24650
|
+
});
|
|
24589
24651
|
/**
|
|
24590
24652
|
* The chosen outbound endpoint for notification artifacts. `baseUrl: null` =
|
|
24591
24653
|
* AUTO (resolved from the candidate ranking at send time); `resolved` reports
|
|
@@ -24631,10 +24693,35 @@ var localNetworkCapability = {
|
|
|
24631
24693
|
* Honours `getAllowedAddresses()` when set — addresses outside
|
|
24632
24694
|
* the allowlist are dropped (the public tunnel + loopback are
|
|
24633
24695
|
* always included as escape hatches).
|
|
24696
|
+
*
|
|
24697
|
+
* **The port is the hub's, not the caller's** (D62 — a function's fact
|
|
24698
|
+
* belongs to whoever already owns it). This method used to take a `port`
|
|
24699
|
+
* and echo it onto every LAN and loopback URL it advertised, which made
|
|
24700
|
+
* every client a second authority on a socket only the hub binds. A viewer
|
|
24701
|
+
* configured with a port-less public URL (`https://camstack.example.top`)
|
|
24702
|
+
* infers 443 from the scheme, asks with 443, and was handed
|
|
24703
|
+
* `https://192.168.1.9:443` for a hub listening on 4443. That candidate
|
|
24704
|
+
* cannot ever answer, and losing its race reads in the log exactly like
|
|
24705
|
+
* "the LAN was tried and it was slower" — so an operator sitting on his own
|
|
24706
|
+
* WiFi stayed on the public tunnel for weeks, with the LAN candidate born
|
|
24707
|
+
* dead on every single connect.
|
|
24708
|
+
*
|
|
24709
|
+
* The hub now resolves its own listen port and reports it as `localPort`,
|
|
24710
|
+
* with the SOURCE of the number, so a client can tell a fact from an echo.
|
|
24711
|
+
*
|
|
24712
|
+
* Out of scope on purpose: a LAN URL that is not the hub's own socket (a
|
|
24713
|
+
* reverse proxy in front of it on another port) is not this method's to
|
|
24714
|
+
* invent either — pin it with `setNotificationEndpoint` / a configured
|
|
24715
|
+
* origin, which is an operator statement rather than a guess.
|
|
24634
24716
|
*/
|
|
24635
24717
|
getConnectionEndpoints: method(z.object({
|
|
24636
|
-
/**
|
|
24637
|
-
|
|
24718
|
+
/**
|
|
24719
|
+
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
24720
|
+
* written against the echoing contract keep working; the hub uses it
|
|
24721
|
+
* only when it cannot read its own port, and says so via
|
|
24722
|
+
* `localPort.source === 'caller-hint'`.
|
|
24723
|
+
*/
|
|
24724
|
+
port: z.number().int().min(1).max(65535).optional(),
|
|
24638
24725
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
24639
24726
|
* candidate. Default `true`. */
|
|
24640
24727
|
includeLoopback: z.boolean().optional(),
|
|
@@ -32401,11 +32488,63 @@ function startReachabilityPoll(options) {
|
|
|
32401
32488
|
//#endregion
|
|
32402
32489
|
//#region src/device/runtime-state-helpers.ts
|
|
32403
32490
|
var LAST_FETCHED_FIELD = "lastFetchedAt";
|
|
32491
|
+
/**
|
|
32492
|
+
* How long a bridge stops re-attempting a refresh that did not land.
|
|
32493
|
+
*
|
|
32494
|
+
* Sized against the failure it exists for: a camera whose control plane
|
|
32495
|
+
* is unreachable costs the FULL connect give-up (~3s on Linux when the
|
|
32496
|
+
* neighbour never answers, up to the client's own timeout otherwise) on
|
|
32497
|
+
* every attempt, and a failed refresh never advances `lastFetchedAt`, so
|
|
32498
|
+
* without a cooldown the slice is permanently stale and EVERY read pays
|
|
32499
|
+
* that price. One attempt per minute is enough to notice the camera
|
|
32500
|
+
* coming back; per-read is enough to stall the viewer's first paint.
|
|
32501
|
+
*/
|
|
32502
|
+
var RUNTIME_STATE_REFRESH_MISS_COOLDOWN_MS = 6e4;
|
|
32503
|
+
/**
|
|
32504
|
+
* The freshness window for a cap whose value changes ONLY when WE write it.
|
|
32505
|
+
*
|
|
32506
|
+
* The usual `staleMs: 10_000` is tuned for a reading that moves on its own — a
|
|
32507
|
+
* battery level, a day/night state that flips at dusk. It is the wrong number
|
|
32508
|
+
* for a cap like `privacy-mask`, whose two facts (is the video mask on, is the
|
|
32509
|
+
* microphone on) change when an operator changes them, through a `setMask` /
|
|
32510
|
+
* `setAudioEnabled` that **re-reads the camera and rewrites this very slice**.
|
|
32511
|
+
* A write is therefore its own invalidation: the window never delays an
|
|
32512
|
+
* operator's own change, however long it is.
|
|
32513
|
+
*
|
|
32514
|
+
* What the window really bounds is the ONE case we do not write: somebody
|
|
32515
|
+
* changing the mask in the vendor app or the camera's web UI. Ten minutes is
|
|
32516
|
+
* the trade — that change is visible within ten minutes, and a fleet of 29
|
|
32517
|
+
* cameras behind a page that polls every 5s costs about 3 camera round trips a
|
|
32518
|
+
* minute instead of 696
|
|
32519
|
+
* ([D221](../../../../docs/decisions/adr-0221-a-polled-list-never-dials-a-camera.md)).
|
|
32520
|
+
*
|
|
32521
|
+
* Use it ONLY with {@link RuntimeStateStaleReadPolicy} `'serve-and-revalidate'`.
|
|
32522
|
+
* On the awaiting default a window this long does not remove the stall, it
|
|
32523
|
+
* merely makes it rarer and just as long.
|
|
32524
|
+
*/
|
|
32525
|
+
var OPERATOR_WRITTEN_STALE_MS = 10 * 6e4;
|
|
32404
32526
|
function createRuntimeStateBridge(params) {
|
|
32405
32527
|
const { runtimeState, cap, ownDeviceId, refresh, staleMs, empty, logger } = params;
|
|
32406
32528
|
const missCooldownMs = params.refreshMissCooldownMs ?? 6e4;
|
|
32529
|
+
const staleRead = params.staleRead ?? "await-refresh";
|
|
32407
32530
|
/** Epoch ms until which a refresh is not re-attempted. 0 = no cooldown. */
|
|
32408
32531
|
let missCooldownUntil = 0;
|
|
32532
|
+
/**
|
|
32533
|
+
* The refresh this bridge currently has in the air, if any.
|
|
32534
|
+
*
|
|
32535
|
+
* Providers single-flight their own camera client, so this is not what stops
|
|
32536
|
+
* a second round trip. What it stops is a POLLED reader JOINING one: under
|
|
32537
|
+
* `'serve-and-revalidate'` a read that finds a refresh already outstanding is
|
|
32538
|
+
* answered from the slice at once — even a cold, empty slice, which reports
|
|
32539
|
+
* UNKNOWN, which is the truth about a camera nobody has reached.
|
|
32540
|
+
*
|
|
32541
|
+
* That distinction is the whole cost of an unreachable camera. Measured on
|
|
32542
|
+
* the live hub (device 3629, an offline battery Reolink): its refresh takes
|
|
32543
|
+
* 23.1s to give up, so without this every 5s poll landing inside those 23s
|
|
32544
|
+
* joined the wait and spent the caller's full 1.2s source budget — five
|
|
32545
|
+
* stalled polls per cooldown cycle, for one camera, forever.
|
|
32546
|
+
*/
|
|
32547
|
+
let refreshInFlight = null;
|
|
32409
32548
|
const readFetchedAt = () => {
|
|
32410
32549
|
const value = runtimeState.getCapState(cap.name)?.[LAST_FETCHED_FIELD];
|
|
32411
32550
|
return typeof value === "number" ? value : 0;
|
|
@@ -32426,14 +32565,14 @@ function createRuntimeStateBridge(params) {
|
|
|
32426
32565
|
}
|
|
32427
32566
|
});
|
|
32428
32567
|
};
|
|
32429
|
-
|
|
32430
|
-
|
|
32431
|
-
|
|
32432
|
-
|
|
32433
|
-
|
|
32434
|
-
|
|
32435
|
-
|
|
32436
|
-
|
|
32568
|
+
/**
|
|
32569
|
+
* One refresh attempt, plus the LANDED check that decides the cooldown.
|
|
32570
|
+
*
|
|
32571
|
+
* @param fetchedAt What `lastFetchedAt` was before the attempt — the only
|
|
32572
|
+
* evidence the bridge has that the refresh persisted
|
|
32573
|
+
* anything, since providers swallow their own camera errors.
|
|
32574
|
+
*/
|
|
32575
|
+
const runRefresh = async (fetchedAt) => {
|
|
32437
32576
|
try {
|
|
32438
32577
|
await refresh();
|
|
32439
32578
|
} catch (err) {
|
|
@@ -32449,6 +32588,41 @@ function createRuntimeStateBridge(params) {
|
|
|
32449
32588
|
}
|
|
32450
32589
|
openMissCooldown(void 0);
|
|
32451
32590
|
};
|
|
32591
|
+
/**
|
|
32592
|
+
* Start a refresh and remember it, at most one at a time.
|
|
32593
|
+
*
|
|
32594
|
+
* It never rejects: under `'serve-and-revalidate'` the caller is answered
|
|
32595
|
+
* from the slice either way, so a floating rejection would take the process
|
|
32596
|
+
* down for a fault the miss cooldown has already recorded and logged.
|
|
32597
|
+
*/
|
|
32598
|
+
const startRefresh = (fetchedAt) => {
|
|
32599
|
+
const existing = refreshInFlight;
|
|
32600
|
+
if (existing !== null) return existing;
|
|
32601
|
+
const started = runRefresh(fetchedAt).catch(() => void 0).finally(() => {
|
|
32602
|
+
refreshInFlight = null;
|
|
32603
|
+
});
|
|
32604
|
+
refreshInFlight = started;
|
|
32605
|
+
return started;
|
|
32606
|
+
};
|
|
32607
|
+
const ensureFresh = async () => {
|
|
32608
|
+
const slice = runtimeState.getCapState(cap.name);
|
|
32609
|
+
const fetchedAt = readFetchedAt();
|
|
32610
|
+
if (slice && Date.now() - fetchedAt <= staleMs) {
|
|
32611
|
+
missCooldownUntil = 0;
|
|
32612
|
+
return;
|
|
32613
|
+
}
|
|
32614
|
+
if (Date.now() < missCooldownUntil) return;
|
|
32615
|
+
if (staleRead === "serve-and-revalidate") {
|
|
32616
|
+
if (refreshInFlight !== null) return;
|
|
32617
|
+
if (slice && fetchedAt > 0) {
|
|
32618
|
+
startRefresh(fetchedAt);
|
|
32619
|
+
return;
|
|
32620
|
+
}
|
|
32621
|
+
await startRefresh(fetchedAt);
|
|
32622
|
+
return;
|
|
32623
|
+
}
|
|
32624
|
+
await runRefresh(fetchedAt);
|
|
32625
|
+
};
|
|
32452
32626
|
const projectStatus = () => {
|
|
32453
32627
|
const slice = runtimeState.getCapState(cap.name);
|
|
32454
32628
|
if (!slice) return empty();
|
|
@@ -46910,4 +47084,4 @@ function enumerateInferenceDevices(hw) {
|
|
|
46910
47084
|
return out;
|
|
46911
47085
|
}
|
|
46912
47086
|
//#endregion
|
|
46913
|
-
export { ACCESSORY_LABEL, ACCESS_ROLES, ALEXA_EGRESS_PROFILE, ALL_CAPABILITY_DEFINITIONS, APPLE_SA_TO_MACRO, AUDIO_ANALYSIS_CAP_NAME, AUDIO_BACKEND_CHOICES, AUDIO_MACRO_LABELS, AUDIO_PRESETS, AccessoriesStatusSchema, AccessoryKind, AddBrokerInputSchema, AddonAutoUpdateSchema, AddonListItemSchema, AddonPageDeclarationSchema, AddonPageInfoSchema, AdoptInputSchema as AdoptionAdoptInputSchema, AdoptResultSchema as AdoptionAdoptResultSchema, AdoptionCandidateResultSchema, AdoptionFilterSchema, GetCandidateInputSchema as AdoptionGetCandidateInputSchema, AdoptionJobSchema, AdoptionJobStateSchema, ListCandidatesInputSchema as AdoptionListCandidatesInputSchema, ListCandidatesOutputSchema as AdoptionListCandidatesOutputSchema, AdoptionOutcomeSchema, ReleaseInputSchema as AdoptionReleaseInputSchema, AdoptionStatusSchema, AgentLoadSummarySchema, AirQualitySensorStatusSchema, AlarmArmModeSchema, AlarmPanelStatusSchema, AlarmStateSchema, AlertSchema, AlertSeveritySchema, AlertSourceSchema, AlertStatusSchema, AmbientLightSensorStatusSchema, ApiKeyRecordSchema, ApiKeySummarySchema, ArchiveEntrySchema, ArchiveManifestSchema, AttachmentMediaTypeSchema, AttachmentSchema, AudioAnalysisResultSchema, AudioAnalysisSettingsSchema, AudioChunkInputSchema, AudioClassSummarySchema, AudioClassificationLabelSchema, AudioClassificationResultSchema, AudioCodecInfoSchema, AudioDecodeSessionConfigSchema, AudioEncodeSchema, AudioEncodeSessionConfigSchema, AudioEncodedChunkSchema, AudioEventSchema, AudioLevelSchema, AudioMetricsHistoryPointSchema, AudioMetricsHistorySchema, AudioMetricsSnapshotSchema, AudioPcmChunkSchema, AuthResultSchema, AutoUpdateSettingsSchema, AutomationActionSchema, AutomationConditionOperatorSchema, AutomationConditionSchema, AutomationControlStatusSchema, AutomationRecipeSchema, AutomationTriggerSchema, AvailableIntegrationTypeSchema, BACKEND_TO_FORMAT, BASE_LIVE_EGRESS_PROFILE, BATTERY_DEVICE_PROFILE, BATTERY_UNREACHABLE_AFTER_MS, BOOT_RECOVERY_BACKOFF_MS, BacklightModeSchema, BackupDestinationInfoSchema, BackupEntrySchema, BaseAddon, BaseDevice, BaseDeviceProvider, BatteryStatusSchema, BinaryStatusSchema, BoundingBoxSchema, BrightnessStatusSchema, AddInputSchema as BrokerAddInputSchema, BrokerAudioClientSchema, BrokerClientsSchema, BrokerConnectionDetailsSchema, BrokerConsumerAttributionSchema, BrokerConsumerKindSchema, BrokerDecodedClientSchema, BrokerEncodedClientSchema, GetStateInputSchema as BrokerGetStateInputSchema, BrokerInfoSchema, BrokerProviderInfoSchema, PublishInputSchema as BrokerPublishInputSchema, RegistryStatusSchema as BrokerRegistryStatusSchema, BrokerRtspClientSchema, BrokerStatsSchema, BrokerStatusEnum, BrokerStatusSchema, SubscribeInputSchema as BrokerSubscribeInputSchema, SubscribeResultSchema as BrokerSubscribeResultSchema, TestConnectionResultSchema as BrokerTestConnectionResultSchema, UnsubscribeInputSchema as BrokerUnsubscribeInputSchema, CAMERA_SWITCH_CATALOG, CAMERA_SWITCH_ORDER, CAM_PROFILE_ORDER, CAPABILITY_NAMES, CAPABILITY_ROUTER_KEYS, CAP_NAMES_WITH_STATUS, CAP_NODE_PIN_CONTEXT_KEY, CAP_PROVIDER_KIND_MAP, CLUSTER_MODEL_SCOPED_STEPS, CLUSTER_MODEL_SECTION_ID, COCO_80_LABELS, COCO_TO_MACRO, CONNECTION_TEST_TIMEOUT_MS, CORE_BLOCKS_ADDON_ID, CORE_BLOCK_ADDON_PREFIX, CamProfileSchema, CamStreamDescriptorSchema, CamStreamKindSchema, CamStreamResolutionSchema, CameraAssignmentStatusSchema, CameraAudioStatusSchema, CameraBrokerProfileSchema, CameraBrokerStatusSchema, CameraCredentialsSchema, CameraCredentialsStatusSchema, CameraDecoderShmSchema, CameraDecoderStatusSchema, CameraDetectionPhaseSchema, CameraDetectionProvisioningSchema, CameraDetectionProvisioningStateSchema, CameraDetectionStatusSchema, CameraMetricsSchema, CameraMetricsWithDeviceIdSchema, CameraMotionStatusSchema, CameraRecordingModeSchema, CameraRecordingStatusSchema, CameraSourceStatusSchema, CameraSourceStreamSchema, CameraStatusDegradationReasonSchema, CameraStatusDegradationSchema, CameraStatusSchema, CameraStatusStageSchema, CameraStreamSchema, CameraSwitchAuthoritySchema, CameraSwitchGroupSchema, CameraSwitchIdSchema, CameraSwitchSchema, CameraSwitchUnavailableReasonSchema, CandidateQueryFilterSchema, CapScopeSchema, CapabilityBindingsSchema, CarbonMonoxideStatusSchema, ChargingStatus, ClientNetworkStatsSchema, ClimateControlStatusSchema, ClipPlaybackSchema, ClipSchema, ClusterAddonNodeDeploymentSchema, ClusterAddonStatusEntrySchema, CollectionColumnSchema, CollectionIndexSchema, ColorStatusSchema, ConfigEntrySchema, ConfigSectionWithValuesSchema, ConfigTabDeclarationSchema, ConnectionTestDescriptorSchema, ConnectionTestInputSchema, ConnectionTestOutcomeSchema, ConnectivityStatusSchema, ConsumableItemSchema, ConsumablesStatusSchema, ContactStatusSchema, ControlKindSchema, ControlStatusSchema, ConvertArtifactSchema, ConvertResultSchema, ConvertTargetSchema, CoreBlockCompileResultSchema, CoreBlockInputSchema, CoreBlockPlacementSchema, CoreBlockSchema, CoreBlockStatusSchema, CoverStateSchema, CoverStatusSchema, CreateApiKeyInputSchema, CreateApiKeyResultSchema, CreateIntegrationInputSchema, CreateScopedTokenInputSchema, CreateScopedTokenResultSchema, CreateUserInputSchema, CustomActionInputSchema, CustomModelDescriptorSchema, DATAPLANE_SECRET_HEADER, DECLARED_DEVICE_SWEEP_LIMIT, DECLARED_INTEGRATION_FIXED_KEY, DEFAULT_ADDON_PLACEMENT, DEFAULT_AUDIO_ANALYZER_CONFIG, DEFAULT_CLUSTER_STEP_MODELS, DEFAULT_DECODER_HWACCEL_CONFIG, DEFAULT_DETAIL_CROP_CONVENTION, DEFAULT_EVENTS_BAND_BUFFER_SEC, DEFAULT_EVENT_COLOR, DEFAULT_FEATURES, DEFAULT_NATIVE_LEASE_SETTINGS, DEFAULT_POOL_MEMORY_POLICY, DEFAULT_RECORDING_PROFILES, DEFAULT_RETENTION, DEFAULT_RUNTIME_STATE_DURABILITY, DEFAULT_SCRUB_THUMBNAIL_PRESET, DEFAULT_TIMELAPSE_PREVIEW_TEXT, DETAIL_CROP_PADDING_FIELD, DETAIL_CROP_PADDING_KEY, DETAIL_CROP_SECTION_ID, DETAIL_CROP_SQUARE_KEY, DETECTION_MACRO_CLASSES, DETECTION_PIPELINE_CAP_NAME, DEVICE_BACKEND_TO_FORMAT, DEVICE_CAP_NAMES, DEVICE_PROFILES, DEVICE_SCOPED_CAPS, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATE_READERS, DEVICE_STATUS_METHOD, DEVICE_TYPE_CONTROL_KIND, DEVICE_TYPE_INFO, EngineInfoSchema as DataStoreEngineInfoSchema, DayNightModeSchema, DayNightOptionsSchema, DayNightSettingsPatchSchema, DayNightStatusSchema, DeclaredDevices, DecodedAudioChunkSchema, DecodedFrameSchema, DecoderSessionConfigSchema, DecoderStatsSchema, DeleteIntegrationResultSchema, DetailCropConventionSchema, DetectionSourceSchema, DeviceCodeSeveritySchema, DeviceConfig, DeviceDiscoveryStatusSchema, ExposeInputSchema as DeviceExportExposeInputSchema, DeviceExportStatusSchema, UnexposeInputSchema as DeviceExportUnexposeInputSchema, DeviceFeature, DeviceInfoSchema, DeviceNetworkStatsSchema, DeviceRole, DeviceRuntimeState, DeviceSelectorSchema, DeviceStatusSchema, DeviceType, DiscoveredChildDeviceSchema, DiscoveredChildStatusSchema, DiscoveredDeviceSchema, DiscoveredTargetSchema, DiskReconcileJobSchema, DisposerChain, DoorbellPressEventSchema, DoorbellStatusSchema, EVENTFUL_CAP_NAMES, EVENT_KIND_BY_CAP, EVENT_PAD_MS, EVENT_TAXONOMY, EXPORT_DENSE_MAX_RANGES, EXPRESSION_BUILTINS, EXPRESSION_BUILTIN_NAMES, EXPRESSION_COMPILE_CACHE_CAPACITY, EXPRESSION_IDENTIFIER_RE, EXPRESSION_INJECTED_NOW, EgressEncodeSchema, EgressRateControlSchema, EgressTranscodeRequestSchema, EgressTranscodeSchema, ElementConfigStore, EmbeddingInfoSchema, EmbeddingResultSchema, EncodeProfileSchema, EncodedPacketSchema, EnrichedWidgetMetadataSchema, EnumSensorDateTimeFormatSchema, EnumSensorStatusSchema, EventCategory, EventEmitterStatusSchema, EventFireSchema, EventItemSchema, EventKindCategorySchema, EventKindDescriptorSchema, EventKindIconSchema, EventKindSchema, EventKindsForDeviceSchema, EventMediaArtifactSchema, EventMediaCoverageSchema, EventMediaKindSchema, EventMediaProductionSchema, EventSourceType, ExportBytesSchema, ExportDenseRangeSchema, ExportDenseSchema, ExportDownloadSchema, ExportOptionsSchema, ExportRecordSchema, ExportSetupFieldSchema, ExportSetupSchema, ExportSpeedSchema, ExportStateSchema, ExportTimelapseSchema, ExposedDeviceSchema, ExposureModeSchema, ExpressionBindingSourceSchema, ExpressionEvalError, ExpressionFieldBindingSchema, ExpressionGlobalBindingSchema, ExpressionLiteralBindingSchema, ExpressionParseError, ExpressionSourceSchema, FULL_IMAGE_BBOX, FanControlStatusSchema, FanDirectionSchema, FeatureManifestSchema, FeatureProbeStatusSchema, FloodStatusSchema, Fmp4BoxSplitter, FrameHandleFormatSchema, FrameHandleSchema, FrameInputSchema, GasStatusSchema, GetStreamWithCodecInputSchema, GlobalMetricsSchema, HAP_AUDIO_BASE, HAP_AUDIO_BITRATE_KBPS, HAP_AUDIO_VBV_KBITS, HAP_KEYFRAME_INTERVAL_SEC, HF_BASE_URL, HF_REPO, HWACCEL_OPTIONS, HealthStatusSchema, HfModelResolutionSchema, HistoryPointSchema, HistoryResolutionEnum, HumidifierStatusSchema, HumiditySensorStatusSchema, HvacModeSchema, ImageContractSchema, ImageContractStateSchema, ImageRotateSchema, ImageSettingsOptionsSchema, ImageSettingsPatchSchema, ImageSettingsStatusSchema, ImageStatusSchema, IngestOwnerSchema, InstalledPackageSchema, IntegrationLiteSchema, IntegrationWithStateSchema, IntercomAbilitySchema, IntercomStatusSchema, KNOWN_CAP_NAMES, KeyEventSchema, LOG_LEVEL_RANK, LabelAttributionSchema, LabelDefinitionSchema, LabelTierSchema, LawnMowerActivitySchema, LawnMowerControlStatusSchema, LinkedDeviceSchema, LinkedDevicesModeSchema, LlmDefaultSchema, LlmDefaultSelectorSchema, LlmDownloadProgressSchema, LlmErrorCodeSchema, LlmGenerateBaseInputSchema, LlmGenerateErrSchema, LlmGenerateOkSchema, LlmGenerateResultSchema, LlmImageSchema, LlmNodeModelSchema, LlmProfileKindDescriptorSchema, LlmProfileKindSchema, LlmProfileSchema, LlmRetryPolicySchema, LlmRuntimeCompleteInputSchema, LlmRuntimeDiskUsageSchema, LlmRuntimeNodeSchema, LlmRuntimeStatusSchema, LlmTimeoutDefaults, LlmUsageRollupSchema, LlmUsageSchema, LocateSegmentResultSchema, LocationStatSchema, LockControlStatusSchema, LockStateSchema, LogEntrySchema, LogLevelSchema, LogStreamEntrySchema, LoginMethodContributionSchema, LoginStageEnum, MACRO_LABELS, MAX_CLIP_EVENT_IDS, MAX_CLIP_LABELS, MAX_CONDITION_DEPTH, MAX_CONDITION_LEAVES, MAX_EXPRESSION_AST_NODES, MAX_EXPRESSION_BINDINGS, MAX_EXPRESSION_CALL_ARGS, MAX_EXPRESSION_EVAL_STEPS, MAX_EXPRESSION_SOURCE_LENGTH, METHOD_ACCESS_MAP, METHOD_DEVICE_SELECTORS, MODEL_FORMATS, MOTION_TRIGGER_FEATURE, ManagedModelCatalogEntrySchema, ManagedModelExtraFileSchema, ManagedModelRefSchema, ManagedRuntimeConfigSchema, MaskGridDimsSchema, MaskGridShapeSchema, MaskLineShapeSchema, MaskPointSchema, MaskPolygonShapeSchema, MaskPolygonVerticesSchema, MaskRectShapeSchema, MaskShapeKindSchema, MaskShapeSchema, MediaFileInfoSchema, MediaFileSchema, MediaPlayerRepeatSchema, MediaPlayerStateSchema, MediaPlayerStatusSchema, MeshPeerSchema, MeshStatusSchema, MethodAccessSchema, ModelCatalogEntrySchema, ModelConvertInputSchema, ModelConvertMetadataSchema, ModelDistributeInputSchema, ModelDistributeResultSchema, ModelExtraFileSchema, ModelFormatEntrySchema, ModelFormatsSchema, ModelSubstitutionSchema, ModelVariantGroupSchema, MotionAnalysisResultSchema, MotionEventSchema, MotionOnMotionChangedDataSchema, MotionRegionSchema, MotionSourceEnum, MotionSourcesSchema, MotionStatusSchema, MotionTriggerRuntimeStateSchema, MotionTriggerStatusSchema, MotionZoneOptionsSchema, MotionZonePatchSchema, MotionZoneRegionSchema, MotionZoneStatusSchema, StatusSchema as MqttBrokerStatusSchema, MutationFilterSchema, NATIVE_LEASE_ACTIVITY_FIELD, NATIVE_LEASE_ACTIVITY_KEY, NATIVE_LEASE_ADMISSION_FIELD, NATIVE_LEASE_ADMISSION_KEY, NATIVE_LEASE_BUDGET_FIELD, NATIVE_LEASE_BUDGET_KEY, NATIVE_LEASE_HOLD_FIELD, NATIVE_LEASE_HOLD_KEY, NATIVE_LEASE_SECTION_ID, NATIVE_LEASE_TILE_BUDGET_FIELD, NATIVE_LEASE_TILE_BUDGET_KEY, NC_ALARM_SYSTEM_EVENT_KINDS, NC_AUDIO_DBFS_FLOOR, NC_AUDIO_DB_MAX, NC_AUDIO_DB_MIN, NC_AUDIO_DB_OFFERED, NC_AUDIO_DB_STEP, NC_AUDIO_DEFAULTS, NC_AUDIO_HIT_PERCENT_MAX, NC_AUDIO_HIT_PERCENT_MIN, NC_AUDIO_SAMPLING_MAX_SEC, NC_AUDIO_SAMPLING_MIN_SEC, NC_AUDIO_SEED, NC_AUTHORABLE_SYSTEM_EVENT_KINDS, NC_BASE_CONDITION_KEYS, NC_CONDITION_CATALOG, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX, NC_CONFIRM_DEFAULT_TIMEOUT_MS, NC_CONFIRM_MAX_TIMEOUT_MS, NC_CONFIRM_MIN_TIMEOUT_MS, NC_DEFAULT_SNOOZE_MINUTES, NC_HISTORY_LIMIT_DEFAULT, NC_HISTORY_LIMIT_MAX, NC_MAX_PER_TRACK_IMMEDIATE, NC_OCCUPANCY_DEFAULTS, NC_RULE_EDITOR_SECTION_ORDER, NC_RULE_KIND_SPECS, NC_RULE_SECTIONS, NC_SNOOZE_MAX_MINUTES, NC_SYSTEM_DELIVERY, NC_SYSTEM_EVENT_FILTER_KEYS, NC_TAXONOMY, NativeCropBboxSchema, NativeCropRefSchema, NativeCropResultSchema, NativeDetectionSchema, NativeLeaseAdmissionSchema, NativeLeaseSettingsSchema, NativeObjectClassEnum, NativeObjectDetectionRuntimeStateSchema, NativeObjectDetectionStatusSchema, NcAlarmConfigSchema, NcAlarmModeCoverageSchema, NcAlarmSettingsPatchSchema, NcAlarmSettingsSchema, NcAlarmSkipReasonSchema, NcAlarmSkippedDeviceSchema, NcAudioConditionSchema, NcConditionDescriptorSchema, NcConditionsSchema, NcConfirmExpectSchema, NcConfirmSchema, NcCrossingSchema, NcDeliverySchema, NcDeviceStateConditionSchema, NcHistoryEntrySchema, NcHistoryFilterSchema, NcHistoryRecordKindSchema, NcHistoryStatusSchema, NcHistorySubjectSchema, NcMediaFrameSchema, NcMediaPolicySchema, NcOccupancyConditionSchema, NcPlateMatcherSchema, NcRuleActionSchema, NcRuleActionSequenceSchema, NcRuleActionsSchema, NcRuleInputSchema, NcRuleNotificationButtonSchema, NcRulePatchSchema, NcRuleSchema, NcRuleTargetSchema, NcSceneConditionSchema, NcScheduleSchema, NcScheduleWindowSchema, NcSnoozeInputSchema, NcSnoozeSchema, NcSnoozeScopeSchema, NcSnoozeSuppressedSchema, NcSystemEventConditionSchema, NcSystemEventKindSchema, NcTaxonomyEntrySchema, NcTaxonomySchema, NcTestResultSchema, NcThrottleGranularitySchema, NcThrottleSchema, NcZoneConditionSchema, NetworkAccessStatusSchema, NetworkAddressSchema, NetworkEndpointSchema, NotificationActionIconSchema, NotificationActionSchema, NotificationFormatSchema, NotificationSchema, NotifierStatusSchema, NumericSensorStatusSchema, OPS_LOG_DEFAULT_LIMIT, OPS_LOG_RING_DEFAULT_MAX, OauthIntegrationDescriptorSchema, ObjectEventSchema, OpsLogDomainSchema, OpsLogEntrySchema, OpsLogOpSchema, OpsLogQueryInputSchema, OpsLogReasonSchema, OrchestratorMetricsSchema, OsdOverlayKindEnum, OsdOverlayPatchSchema, OsdOverlaySchema, OsdPositionEnum, OsdRenderOutcomeEnum, OsdRenderResultSchema, OsdSlotBindingSchema, OsdSlotViewSchema, OsdSourceOptionSchema, OsdSourceSchema, OsdSourceValueTypeEnum, OsdStatusSchema, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, PIPELINE_FLOW_CAPABILITY_NAMES, PIPELINE_OWNER_CAPABILITY_NAMES, PRIVACY_MASK_CAP_NAME, PROVIDER_KIND_CAP_NAMES, PYTHON_SCRIPT, PackageUpdateSchema, PackageVersionInfoSchema, PasskeyLoginMethodSchema, PasskeySummarySchema, PcmSampleFormatSchema, PerScopeBreakdownSchema, PetFeederStatusSchema, PickStreamPreferencesSchema, PickStreamRequirementsSchema, PickedCamStreamSchema, PipelineAssignmentSchema, PipelineDefaultStepSchema, PipelineEngineChoiceSchema, PipelineRunResultBridge, PipelineStepInputSchema, PipelineValidationIssueSchema, PipelineValidationResultSchema, PlaceholderReasonSchema, PolygonPointSchema, PoolMemoryWatchdog, PowerMeterStatusSchema, PresenceStatusSchema, PressureSensorStatusSchema, PrivacyMaskOptionsSchema, PrivacyMaskPatchSchema, PrivacyMaskRegionSchema, PrivacyMaskShapeSchema, PrivacyMaskStatusSchema, ProfileRtspEntrySchema, ProfileSlotSchema, ProfileSlotStatusSchema, ProviderStatusSchema, PtzAutotrackRuntimeStateSchema, PtzAutotrackSettingsSchema, PtzAutotrackStatusSchema, PtzAutotrackTargetOptionSchema, PtzMoveCommandSchema, PtzOptionsSchema, PtzPositionSchema, PtzPresetSchema, PtzStatusSchema, QueryFilterSchema, RATE_CONTROL_RELAXED, RATE_CONTROL_TIGHT, REACHABILITY_FAILURES_TO_OFFLINE, REACHABILITY_POLL_INTERVAL_MS, REACHABILITY_PROBE_TIMEOUT_MS, RECOGNITION_TYPES, RECORDING_EXPORT_MAX_READ_BYTES, RESERVED_BINDING_NAMES, RESTORED_CAP_NAMES, RUNTIME_DEFAULTS, RUNTIME_STATE_POLICY, RUNTIME_TO_FORMAT, RawStateResultSchema, ReadGopBytesResultSchema, ReadSegmentBytesResultSchema, ReadinessRegistry, ReadinessTimeoutError, RecentTracksPageSchema, RecentTracksQueryInput, RecordingAvailabilitySchema, RecordingBandModeSchema, RecordingBandSchema, RecordingBandTriggersSchema, RecordingConfigSchema, RecordingDaysSchema, RecordingDeviceUsageSchema, RecordingLocationUsageSchema, RecordingManifestSchema, RecordingRangeSchema, RecordingRebalanceInputSchema, RecordingRebalanceMoveSchema, RecordingRebalancePlanSchema, RecordingRebalanceSkipReasonSchema, RecordingRebalanceSkipSchema, RecordingRetentionSchema, RecordingStatusSchema, RecordingStorageModeSchema, RecordingStorageUsageSchema, RecordingTriggersSchema, RecordingWeekdaySchema, RedirectLoginMethodSchema, RelocateFootageClassSchema, RelocateFootageInputSchema, RelocateJobSchema, RelocateJobStateSchema, RelocateMediaInputSchema, RenderedAsSchema, ReportMotionInputSchema, RetrainAnnotationDraftSchema, RetrainAnnotationKindSchema, RetrainAnnotationSchema, RetrainAnnotationSourceSchema, RetrainAssistResultSchema, RetrainAssistSubjectSchema, RetrainCopyRefusalSchema, RetrainFrameCandidateSchema, RetrainFrameListSchema, RetrainFrameSchema, RetrainFrameSelectionSchema, RetrainMacroClassSchema, RetrainStatusSchema, RetrainTrackSchema, RetrainTransitionResultSchema, RingBuffer, RtpSourceSchema, RtspRestreamEntrySchema, RunnerCameraConfigSchema, RunnerCameraDeviceUIFields, RunnerFrameSourceSchema, RunnerInferenceDeviceSchema, RunnerLocalLoadSchema, RunnerLocalMetricsSchema, SCENE_CONDITIONS, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS, SCENE_DEFAULT_ANCHOR_THRESHOLD, SCENE_DEFAULT_CHECK_INTERVAL_SEC, SCENE_DEFAULT_OBSERVATION_SPACING_SEC, SCENE_DEFAULT_QUIET_SECONDS, SCENE_DEFAULT_UNCOVERED_POLICY, SCENE_DIVERGED, SCENE_RESET_RECAPTURES, SCOPE_PRESETS, SCRUB_THUMBNAIL_PRESETS, SCRUB_THUMBNAIL_PRESET_LABELS, SCRUB_THUMBNAIL_PRESET_ORDER, SENSOR_FEATURES, SENSOR_MAP, SOURCE_INFO_METADATA_KEY, STREAM_PROFILE_META, STREAM_QUALITY_LABELS, SUB_DETECTION_TYPES, SYSTEM_CAP_NAMES, SYSTEM_SCOPE_DEVICE_METHODS, SceneCheckSchema, SceneConditionSchema, SceneConfirmSchema, SceneMonitorSchema, SceneMonitorStateSchema, SceneMonitorStatusSchema, SceneReferenceSchema, SceneUnavailableSchema, SceneUncoveredPolicySchema, SceneVerdictSchema, ScopedTokenSchema, ScopedTokenSummarySchema, ScoredObjectEventSchema, ScriptRunnerStatusSchema, ScrubThumbnailPresetSchema, SearchResultSchema, SendEmailInputSchema, SendEmailResultSchema, SendResultSchema, SensorEventSchema, ServerBootModeSchema, ServerPackageStatusSchema, ServerRollbackInfoSchema, ServerUpdateActionResultSchema, ServerUpdateCheckResultSchema, ServerUpdateStateSchema, SetSiteLocationInputSchema, SettingsPatchSchema, SettingsRecordSchema, SettingsSchemaWithValuesSchema, SettingsUpdateResultSchema, ShmRingStatsSchema, SiteLocationSchema, SiteLocationSourceSchema, SiteLocationStatusSchema, SmokeStatusSchema, SmtpStatusSchema, SnapshotImageSchema, SourceInfoSchema, SpatialDetectionSchema, SsoBridgeClaimsSchema, StartEmbeddedInputSchema, StationaryObjectSchema, AbortUploadInputSchema as StorageAbortUploadInputSchema, BeginDownloadInputSchema as StorageBeginDownloadInputSchema, BeginDownloadResultSchema as StorageBeginDownloadResultSchema, BeginUploadInputSchema as StorageBeginUploadInputSchema, BeginUploadResultSchema as StorageBeginUploadResultSchema, EndDownloadInputSchema as StorageEndDownloadInputSchema, FinalizeUploadInputSchema as StorageFinalizeUploadInputSchema, StorageLocationDeclarationSchema, StorageLocationRefSchema, StorageLocationSchema, StorageLocationTypeSchema, StorageMigrationClassSchema, StorageMigrationDestinationsSchema, StorageMigrationFootageMoveInputSchema, StorageMigrationInputSchema, StorageMigrationJobSchema, StorageMigrationLeaseInputSchema, StorageMigrationMediaMoveInputSchema, StorageMigrationMoveSchema, StorageMigrationParticipantSchema, StorageMigrationPhaseSchema, StorageMigrationPlanSchema, ProviderInfoSchema as StorageProviderInfoSchema, ReadChunkInputSchema as StorageReadChunkInputSchema, TestLocationResultSchema as StorageTestLocationResultSchema, WriteChunkInputSchema as StorageWriteChunkInputSchema, StreamCodecSchema, StreamFormatSchema, StreamNetworkStatsSchema, StreamParamsOptionsSchema, StreamParamsStatusSchema, StreamProfileConfigSchema, StreamProfileOptionsSchema, StreamProfilePatchSchema, StreamProfileSchema, StreamSourceEntrySchema, StreamSourceSchema, SubscribeAudioChunksInputSchema, SubscribeAudioChunksResultSchema, SubscribeFramesInputSchema, SubscribeFramesResultSchema, SwitchStatusSchema, SystemMetricsSchema, SystemMirror, TAXONOMY_COLORS, TIMELAPSE_DENSE_FLOOR_SEC, TIMEZONES, TRANSCODE_DOWN_MAX_BITRATE_KBPS, TRANSCODE_DOWN_MAX_HEIGHT, TamperStatusSchema, TankStatusSchema, TargetKindCapsSchema, TargetKindLevelSchema, TargetKindSchema, TargetSchema, TemperatureSensorStatusSchema, TerminalInstanceInfoSchema, TerminalLegacyCameraSchema, TerminalOutputBatchSchema, TerminalOutputEventSchema, TerminalProfileInfoSchema, TerminalSessionInfoSchema, TestConnectionResultSchema$1 as TestConnectionResultSchema, TestConnectionStatusEnum, TestResultSchema, TimelapseRuleInputSchema, TimelapseRulePatchSchema, TimelapseRuleSchema, TimelapseTemplateSchema, ToastSchema, TokenScopeSchema, TopologyNodeSchema, TopologyProcessSchema, TopologyServiceSchema, TrackCascadeCountsSchema, TrackEnvelopeSchema, TrackFlagsPatchSchema, TrackFlagsSchema, TrackProjectionSchema, TrackSchema, TrackSourceSchema, TrackStateSchema, TrackZoneFilterSchema, TrackedDetectionSchema, TrainingExportDeviceTotalsSchema, TrainingExportSummarySchema, TurnServerSchema, UNIT_TABLE, BrokerInfoSchema$1 as UnifiedBrokerInfoSchema, UnitConversionError, UpdateIntegrationInputSchema, UpdateStatusSchema, UpdateUserInputSchema, UserRecordSchema, UserSummarySchema, VISIT_MERGE_GAP_MS, VacuumControlStatusSchema, VacuumStateSchema, ValveStateSchema, ValveStatusSchema, VectorDeclareIndexInputSchema, VectorDeleteByFilterInputSchema, VectorDeleteInputSchema, VectorDeleteResultSchema, VectorFilterSchema, VectorGetInputSchema, VectorGetResultSchema, VectorItemSchema, VectorMatchSchema, VectorMetadataSchema, VectorMetricSchema, VectorQueryInputSchema, VectorQueryResultSchema, VectorStatsInputSchema, VectorStatsResultSchema, VectorUpsertInputSchema, VectorUpsertResultSchema, VibrationStatusSchema, VideoEncodeSchema, WEBRTC_EGRESS_PROFILE, WELL_KNOWN_TABS, WELL_KNOWN_TAB_MAP, WaterHeaterStatusSchema, WeatherStatusSchema, WebrtcStreamChoiceSchema, WebrtcStreamTargetSchema, WhiteBalanceModeSchema, WidgetHostEnum, WidgetLoginMethodSchema, WidgetMetadataSchema, WidgetRemoteSchema, WidgetSizeEnum, YAMNET_TO_MACRO, ZoneCrossingDirectionSchema, ZoneCrossingSchema, ZoneKindEnum, ZoneRuleModeEnum, ZoneRuleSchema, ZoneRuleStageEnum, ZoneRulesArraySchema, ZoneSchema, ZoneScopeBreakdownSchema, accessoriesCapability, accessoryStableId, addonPagesCapability, addonPagesSourceCapability, addonRoutesCapability, addonSettingsCapability, addonWidgetsCapability, addonWidgetsSourceCapability, addonsCapability, adminUiCapability, airQualitySensorCapability, alarmPanelCapability, alertsCapability, ambientLightSensorCapability, asBoolean, asJsonArray, asJsonObject, asNumber, asString, assertTimelapseCadences, audioAnalysisCapability, audioAnalyzerCapability, audioCodecCapability, audioIsFailClosed, audioKindId, audioLabelChoices, audioMetricsCapability, audioModeOf, audioOrDefaults, audioPlanFromEncodeProfile, authProviderCapability, autoAssignProfiles, automationControlCapability, backupCapability, bareAddonId, batteryCapability, bestLocationMatch, binaryCapability, bindAddonActions, brightnessCapability, brokerCapability, buildAddonRouteProvider, buildAudioArgs, buildEventKindDescriptor, buildFfmpegArgs, buildInputArgs, buildModelVariantGroups, buildNcTaxonomy, buildRoleScopes, buildStreamParamsConfigSchema, buildVideoArgs, buttonCapability, cameraCredentialsCapability, cameraPipelineConfigCapability, cameraStreamsCapability, canConvertUnit, canonicalEgressPlan, carbonMonoxideCapability, cellsToRects, classifyBearerPrincipal, classifyStream, classifyStreams, climateControlCapability, clusterModelSettingKey, collectHydratedFieldEntries, collectHydratedFieldValues, colorCapability, colorForKind, commitWatchdogRestart, compileExpression, compileExpressionSafe, composeSwitchedOff, conditionDepth, conditionExclusionReason, conditionVisibleForKind, connectionTestCapability, connectivityCapability, consumablesCapability, contactCapability, controlCapability, convertUnit, coreBlockAddonId, coreBlockIdFromAddonId, coreBlocksCapability, cosineSimilarity, countConditionLeaves, coverCapability, createDeviceProxy, createDurableState, createEvent, createExpressionScope, createHwAccelCache, createLazyTrpcSource, createMirrorSource, createRuntimeStateBridge, createSliceHandle, createSystemProxy, customAction, customModelRegistryCapability, dataStoreProviderCapability, dayNightCapability, declarationOwnerNodeId, decodeVectorBase64, decoderCapability, defaultDeliveryForSection, defaultDeviceFor, defineCustomActions, deriveBatteryPresence, deriveCameraSwitches, deriveDetailCropRect, deriveRecordingMode, describeModelVariant, detectAccessRole, detectionPipelineCapability, deviceAdoptionCapability, deviceBackendToFormat, deviceCustomAction, deviceDiscoveryCapability, deviceExportCapability, deviceManagerCapability, deviceMatchesProfile, deviceOpsCapability, deviceProviderCapability, deviceSelectorMatches, deviceStateCapability, deviceStatusCapability, doorbellCapability, droppedConditionsForKind, egressTranscodeSharingKey, egressTransportFromRequest, embeddingEncoderCapability, emitDownForOwnedCaps, emitReadiness, encodeProfileFromStreamShape, encodeVectorBase64, enumSensorCapability, enumerateInferenceDevices, enumerateItemArrayFields, enumerateSchemaFields, errMsg, evaluateAst, evaluateExpressionSource, evaluatePoolMemory, evaluateZoneRules, event, eventEmitterCapability, eventsCapability, expandCapMethods, extractNestedAddonId, extractSourceInfoFromMetadata, faceGalleryCapability, fanControlCapability, featureProbeCapability, filesystemBrowseCapability, findTimezone, floodCapability, formatForBackend, formatForRuntime, gasCapability, generateAutomationBlock, getAudioMacroClassIds, getByPath, getCapsByProviderKind, getTaxonomyEntry, hasMotionTrigger, hfModelUrl, htmlToText, humidifierCapability, humiditySensorCapability, hydrateSchema, imageCapability, imageSettingsCapability, initialPoolMemoryState, integrationsCapability, intercomCapability, invocationFromEncodeProfile, isAgentOnlyPlacement, isArrayOutputSchema, isAudioLabelSelected, isAudioRule, isBaseConditionKey, isBatteryPresenceFault, isClusterScopedStep, isCollectionArrayMethod, isDeployableToAgent, isDetectionMacroClass, isDeviceConfigCap, isDeviceScopedCap, isEvent, isIsolatedBuiltin, isNode, isObjectInput, isOccupancyRule, isRestoredCap, isSameAddonId, isScheduleActive, isSoftwareDecode, isSystemDelivery, isVoidInput, jobKindSchema, kebabToCamel, knownValues, lawnMowerControlCapability, lifecycleJobSchema, lifecycleJobScopeSchema, lifecycleJobStateSchema, lifecycleTaskSchema, llmCapability, llmRuntimeCapability, localNetworkCapability, locationSimilarity, lockControlCapability, logBannerArgs, logDestinationCapability, logLevelAtMost, loginMethodCapability, looseSchema, makeProfileBrokerId, makeSourceBrokerId, mapAudioLabelToMacro, markdownToHtmlLite, markdownToText, maskUrlCredentials, mediaPlayerCapability, mergeSourceInfo, meshNetworkCapability, method, methodAccessForHttpMethod, metricsProviderCapability, modelConvertCapability, modelDistributorCapability, modelFormatForRuntime, motionCapability, motionDetectionCapability, motionTriggerCapability, motionZonesCapability, mqttBrokerCapability, nativeObjectDetectionCapability, networkAccessCapability, networkQualityCapability, nodePin, nodesCapability, normalizeAddonInitResult, normalizeAudioLabel, normalizeTokenScopes, normalizeUnit, notificationOutputCapability, notificationRulesCapability, notifierCapability, numericSensorCapability, oauthIntegrationCapability, objectInputDeclaresAddonId, osdCapability, osdManagerCapability, parseCameraStreamConfig, parseExpression, parseJsonArray, parseJsonObject, parseJsonUnknown, parseProcStatus, parseProfileBrokerId, parseRuleSection, parseStreamParamsFormPatch, patchAudio, petFeederCapability, pickAccessoryControl, pickClusterStepModels, pickDetailCropConvention, pickNativeLeaseOverride, pickPreferredRtspEntry, pickRestartCandidate, pickVideoEncoder, pickerForCondition, pipelineAnalyticsCapability, pipelineExecutorCapability, pipelineOrchestratorCapability, pipelineRunnerCapability, plateGalleryCapability, platformProbeCapability, poolMemoryThreshold, powerMeterCapability, prepareNotification, presenceCapability, pressureSensorCapability, principalMayReachAddon, privacyMaskCapability, procedureAuthKey, ptzAutotrackCapability, ptzCapability, pythonScriptForBackend, readClusterStepModels, readDetailCropConvention, readDeviceStateFrom, readNativeLeaseOverride, readNodePin, readTimelapseGeneratedAt, readinessKey, rebootCapability, recordingCapability, recordingExportCapability, rectsToCells, requiresPython, resetPoolBaseline, resolveAddonExecution, resolveAddonGroup, resolveAddonPlacement, resolveAddonRuntime, resolveCapMount, resolveClusterStepModelId, resolveDetectionRuntime, resolveDeviceControlKind, resolveDeviceProfile, resolveEgressDecodeHwAccel, resolveFormat, resolveHydratedFieldValue, resolveModelFormat, resolveMutate, resolvePoolMemoryPolicy, resolveRecordingProfiles, resolveRunnerId, resolveScrubThumbnailGeometry, resolveVariantModelId, resolveViewableDeviceIds, roleSpec, ruleEditorSectionsForKind, ruleKindOf, ruleKindSpec, ruleMatchesSection, ruleSection, ruleSectionOf, ruleSeedForSection, runInferenceStep, runtimeDevices, runtimeStatePolicyFor, sceneMonitorCapability, scopeInherits, scopeKey, scopesAllowAddon, scopesAllowDeviceCap, scoreRuntimes, scriptRunnerCapability, selectAssignedProfileSlots, serverManagementCapability, setByPath, settingsStoreCapability, sleep, sleepCancellable, smokeCapability, smtpProviderCapability, snapshotCapability, ssoBridgeCapability, startReachabilityPoll, stateVocabularyFor, storageCapability, storageEvictableCapability, storageMigrationCapability, storageProviderCapability, streamBrokerCapability, streamCatalogCapability, streamParamsCapability, streamPixels, streamQualityLabel, subKindsOf, summarisePrivacyAudio, summarizeEffectiveScope, supportedRuntimes, switchCapability, switchedOffIds, synthesizeSourceInfo, systemCapability, systemEventFilterApplies, systemEventFilterAppliesToAnyKind, tamperCapability, taskLogEntrySchema, taskPhaseSchema, taskTargetSchema, temperatureSensorCapability, terminalSessionCapability, textToHtml, toDeviceSummary, toExpressionValue, toNodeId, toStreamSourceEntry, toastCapability, toggleAudioLabel, tokenize, transcodeBody, tryConvertUnit, turnProviderCapability, unitDimension, unitsForDimension, updateCapability, userManagementCapability, userPasskeysCapability, vacuumControlCapability, validateExpressionSource, validateRecipeBounds, valveCapability, vectorDimFromBase64, vectorStoreCapability, vibrationCapability, videoclipsCapability, viewerUiCapability, waterHeaterCapability, weatherCapability, webrtcClientHintsSchema, webrtcSessionCapability, wiringAddonHealthSchema, wiringHealthSnapshotSchema, wiringNodeHealthSchema, wiringProbeKindSchema, wiringProbeResultSchema, zodEntriesToConfigUI, zoneAnalyticsCapability, zoneRulesCapability, zonesCapability };
|
|
47087
|
+
export { ACCESSORY_LABEL, ACCESS_ROLES, ALEXA_EGRESS_PROFILE, ALL_CAPABILITY_DEFINITIONS, APPLE_SA_TO_MACRO, AUDIO_ANALYSIS_CAP_NAME, AUDIO_BACKEND_CHOICES, AUDIO_MACRO_LABELS, AUDIO_PRESETS, AccessoriesStatusSchema, AccessoryKind, AddBrokerInputSchema, AddonAutoUpdateSchema, AddonListItemSchema, AddonPageDeclarationSchema, AddonPageInfoSchema, AdoptInputSchema as AdoptionAdoptInputSchema, AdoptResultSchema as AdoptionAdoptResultSchema, AdoptionCandidateResultSchema, AdoptionFilterSchema, GetCandidateInputSchema as AdoptionGetCandidateInputSchema, AdoptionJobSchema, AdoptionJobStateSchema, ListCandidatesInputSchema as AdoptionListCandidatesInputSchema, ListCandidatesOutputSchema as AdoptionListCandidatesOutputSchema, AdoptionOutcomeSchema, ReleaseInputSchema as AdoptionReleaseInputSchema, AdoptionStatusSchema, AgentLoadSummarySchema, AirQualitySensorStatusSchema, AlarmArmModeSchema, AlarmPanelStatusSchema, AlarmStateSchema, AlertSchema, AlertSeveritySchema, AlertSourceSchema, AlertStatusSchema, AmbientLightSensorStatusSchema, ApiKeyRecordSchema, ApiKeySummarySchema, ArchiveEntrySchema, ArchiveManifestSchema, AttachmentMediaTypeSchema, AttachmentSchema, AudioAnalysisResultSchema, AudioAnalysisSettingsSchema, AudioChunkInputSchema, AudioClassSummarySchema, AudioClassificationLabelSchema, AudioClassificationResultSchema, AudioCodecInfoSchema, AudioDecodeSessionConfigSchema, AudioEncodeSchema, AudioEncodeSessionConfigSchema, AudioEncodedChunkSchema, AudioEventSchema, AudioLevelSchema, AudioMetricsHistoryPointSchema, AudioMetricsHistorySchema, AudioMetricsSnapshotSchema, AudioPcmChunkSchema, AuthResultSchema, AutoUpdateSettingsSchema, AutomationActionSchema, AutomationConditionOperatorSchema, AutomationConditionSchema, AutomationControlStatusSchema, AutomationRecipeSchema, AutomationTriggerSchema, AvailableIntegrationTypeSchema, BACKEND_TO_FORMAT, BASE_LIVE_EGRESS_PROFILE, BATTERY_DEVICE_PROFILE, BATTERY_UNREACHABLE_AFTER_MS, BOOT_RECOVERY_BACKOFF_MS, BacklightModeSchema, BackupDestinationInfoSchema, BackupEntrySchema, BaseAddon, BaseDevice, BaseDeviceProvider, BatteryStatusSchema, BinaryStatusSchema, BoundingBoxSchema, BrightnessStatusSchema, AddInputSchema as BrokerAddInputSchema, BrokerAudioClientSchema, BrokerClientsSchema, BrokerConnectionDetailsSchema, BrokerConsumerAttributionSchema, BrokerConsumerKindSchema, BrokerDecodedClientSchema, BrokerEncodedClientSchema, GetStateInputSchema as BrokerGetStateInputSchema, BrokerInfoSchema, BrokerProviderInfoSchema, PublishInputSchema as BrokerPublishInputSchema, RegistryStatusSchema as BrokerRegistryStatusSchema, BrokerRtspClientSchema, BrokerStatsSchema, BrokerStatusEnum, BrokerStatusSchema, SubscribeInputSchema as BrokerSubscribeInputSchema, SubscribeResultSchema as BrokerSubscribeResultSchema, TestConnectionResultSchema as BrokerTestConnectionResultSchema, UnsubscribeInputSchema as BrokerUnsubscribeInputSchema, CAMERA_SWITCH_CATALOG, CAMERA_SWITCH_ORDER, CAM_PROFILE_ORDER, CAPABILITY_NAMES, CAPABILITY_ROUTER_KEYS, CAP_NAMES_WITH_STATUS, CAP_NODE_PIN_CONTEXT_KEY, CAP_PROVIDER_KIND_MAP, CLUSTER_MODEL_SCOPED_STEPS, CLUSTER_MODEL_SECTION_ID, COCO_80_LABELS, COCO_TO_MACRO, CONNECTION_TEST_TIMEOUT_MS, CORE_BLOCKS_ADDON_ID, CORE_BLOCK_ADDON_PREFIX, CamProfileSchema, CamStreamDescriptorSchema, CamStreamKindSchema, CamStreamResolutionSchema, CameraAssignmentStatusSchema, CameraAudioStatusSchema, CameraBrokerProfileSchema, CameraBrokerStatusSchema, CameraCredentialsSchema, CameraCredentialsStatusSchema, CameraDecoderShmSchema, CameraDecoderStatusSchema, CameraDetectionPhaseSchema, CameraDetectionProvisioningSchema, CameraDetectionProvisioningStateSchema, CameraDetectionStatusSchema, CameraMetricsSchema, CameraMetricsWithDeviceIdSchema, CameraMotionStatusSchema, CameraRecordingModeSchema, CameraRecordingStatusSchema, CameraSourceStatusSchema, CameraSourceStreamSchema, CameraStatusDegradationReasonSchema, CameraStatusDegradationSchema, CameraStatusSchema, CameraStatusStageSchema, CameraStreamSchema, CameraSwitchAuthoritySchema, CameraSwitchGroupSchema, CameraSwitchIdSchema, CameraSwitchSchema, CameraSwitchUnavailableReasonSchema, CandidateQueryFilterSchema, CapScopeSchema, CapabilityBindingsSchema, CarbonMonoxideStatusSchema, ChargingStatus, ClientNetworkStatsSchema, ClimateControlStatusSchema, ClipPlaybackSchema, ClipSchema, ClusterAddonNodeDeploymentSchema, ClusterAddonStatusEntrySchema, CollectionColumnSchema, CollectionIndexSchema, ColorStatusSchema, ConfigEntrySchema, ConfigSectionWithValuesSchema, ConfigTabDeclarationSchema, ConnectionTestDescriptorSchema, ConnectionTestInputSchema, ConnectionTestOutcomeSchema, ConnectivityStatusSchema, ConsumableItemSchema, ConsumablesStatusSchema, ContactStatusSchema, ControlKindSchema, ControlStatusSchema, ConvertArtifactSchema, ConvertResultSchema, ConvertTargetSchema, CoreBlockCompileResultSchema, CoreBlockInputSchema, CoreBlockPlacementSchema, CoreBlockSchema, CoreBlockStatusSchema, CoverStateSchema, CoverStatusSchema, CreateApiKeyInputSchema, CreateApiKeyResultSchema, CreateIntegrationInputSchema, CreateScopedTokenInputSchema, CreateScopedTokenResultSchema, CreateUserInputSchema, CustomActionInputSchema, CustomModelDescriptorSchema, DATAPLANE_SECRET_HEADER, DECLARED_DEVICE_SWEEP_LIMIT, DECLARED_INTEGRATION_FIXED_KEY, DEFAULT_ADDON_PLACEMENT, DEFAULT_AUDIO_ANALYZER_CONFIG, DEFAULT_CLUSTER_STEP_MODELS, DEFAULT_DECODER_HWACCEL_CONFIG, DEFAULT_DETAIL_CROP_CONVENTION, DEFAULT_EVENTS_BAND_BUFFER_SEC, DEFAULT_EVENT_COLOR, DEFAULT_FEATURES, DEFAULT_NATIVE_LEASE_SETTINGS, DEFAULT_POOL_MEMORY_POLICY, DEFAULT_RECORDING_PROFILES, DEFAULT_RETENTION, DEFAULT_RUNTIME_STATE_DURABILITY, DEFAULT_SCRUB_THUMBNAIL_PRESET, DEFAULT_TIMELAPSE_PREVIEW_TEXT, DETAIL_CROP_PADDING_FIELD, DETAIL_CROP_PADDING_KEY, DETAIL_CROP_SECTION_ID, DETAIL_CROP_SQUARE_KEY, DETECTION_MACRO_CLASSES, DETECTION_PIPELINE_CAP_NAME, DEVICE_BACKEND_TO_FORMAT, DEVICE_CAP_NAMES, DEVICE_PROFILES, DEVICE_SCOPED_CAPS, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATE_READERS, DEVICE_STATUS_METHOD, DEVICE_TYPE_CONTROL_KIND, DEVICE_TYPE_INFO, EngineInfoSchema as DataStoreEngineInfoSchema, DayNightModeSchema, DayNightOptionsSchema, DayNightSettingsPatchSchema, DayNightStatusSchema, DeclaredDevices, DecodedAudioChunkSchema, DecodedFrameSchema, DecoderSessionConfigSchema, DecoderStatsSchema, DeleteIntegrationResultSchema, DetailCropConventionSchema, DetectionSourceSchema, DeviceCodeSeveritySchema, DeviceConfig, DeviceDiscoveryStatusSchema, ExposeInputSchema as DeviceExportExposeInputSchema, DeviceExportStatusSchema, UnexposeInputSchema as DeviceExportUnexposeInputSchema, DeviceFeature, DeviceInfoSchema, DeviceNetworkStatsSchema, DeviceRole, DeviceRuntimeState, DeviceSelectorSchema, DeviceStatusSchema, DeviceType, DiscoveredChildDeviceSchema, DiscoveredChildStatusSchema, DiscoveredDeviceSchema, DiscoveredTargetSchema, DiskReconcileJobSchema, DisposerChain, DoorbellPressEventSchema, DoorbellStatusSchema, EVENTFUL_CAP_NAMES, EVENT_KIND_BY_CAP, EVENT_PAD_MS, EVENT_TAXONOMY, EXPORT_DENSE_MAX_RANGES, EXPRESSION_BUILTINS, EXPRESSION_BUILTIN_NAMES, EXPRESSION_COMPILE_CACHE_CAPACITY, EXPRESSION_IDENTIFIER_RE, EXPRESSION_INJECTED_NOW, EgressEncodeSchema, EgressRateControlSchema, EgressTranscodeRequestSchema, EgressTranscodeSchema, ElementConfigStore, EmbeddingInfoSchema, EmbeddingResultSchema, EncodeProfileSchema, EncodedPacketSchema, EnrichedWidgetMetadataSchema, EnumSensorDateTimeFormatSchema, EnumSensorStatusSchema, EventCategory, EventEmitterStatusSchema, EventFireSchema, EventItemSchema, EventKindCategorySchema, EventKindDescriptorSchema, EventKindIconSchema, EventKindSchema, EventKindsForDeviceSchema, EventMediaArtifactSchema, EventMediaCoverageSchema, EventMediaKindSchema, EventMediaProductionSchema, EventSourceType, ExportBytesSchema, ExportDenseRangeSchema, ExportDenseSchema, ExportDownloadSchema, ExportOptionsSchema, ExportRecordSchema, ExportSetupFieldSchema, ExportSetupSchema, ExportSpeedSchema, ExportStateSchema, ExportTimelapseSchema, ExposedDeviceSchema, ExposureModeSchema, ExpressionBindingSourceSchema, ExpressionEvalError, ExpressionFieldBindingSchema, ExpressionGlobalBindingSchema, ExpressionLiteralBindingSchema, ExpressionParseError, ExpressionSourceSchema, FULL_IMAGE_BBOX, FanControlStatusSchema, FanDirectionSchema, FeatureManifestSchema, FeatureProbeStatusSchema, FloodStatusSchema, Fmp4BoxSplitter, FrameHandleFormatSchema, FrameHandleSchema, FrameInputSchema, GasStatusSchema, GetStreamWithCodecInputSchema, GlobalMetricsSchema, HAP_AUDIO_BASE, HAP_AUDIO_BITRATE_KBPS, HAP_AUDIO_VBV_KBITS, HAP_KEYFRAME_INTERVAL_SEC, HF_BASE_URL, HF_REPO, HWACCEL_OPTIONS, HealthStatusSchema, HfModelResolutionSchema, HistoryPointSchema, HistoryResolutionEnum, HumidifierStatusSchema, HumiditySensorStatusSchema, HvacModeSchema, INFERENCE_DEVICE_EXCLUSION_REASONS, ImageContractSchema, ImageContractStateSchema, ImageRotateSchema, ImageSettingsOptionsSchema, ImageSettingsPatchSchema, ImageSettingsStatusSchema, ImageStatusSchema, InferenceDeviceExclusionReasonSchema, IngestOwnerSchema, InstalledPackageSchema, IntegrationLiteSchema, IntegrationWithStateSchema, IntercomAbilitySchema, IntercomStatusSchema, KNOWN_CAP_NAMES, KeyEventSchema, LOG_LEVEL_RANK, LabelAttributionSchema, LabelDefinitionSchema, LabelTierSchema, LawnMowerActivitySchema, LawnMowerControlStatusSchema, LinkedDeviceSchema, LinkedDevicesModeSchema, LlmDefaultSchema, LlmDefaultSelectorSchema, LlmDownloadProgressSchema, LlmErrorCodeSchema, LlmGenerateBaseInputSchema, LlmGenerateErrSchema, LlmGenerateOkSchema, LlmGenerateResultSchema, LlmImageSchema, LlmNodeModelSchema, LlmProfileKindDescriptorSchema, LlmProfileKindSchema, LlmProfileSchema, LlmRetryPolicySchema, LlmRuntimeCompleteInputSchema, LlmRuntimeDiskUsageSchema, LlmRuntimeNodeSchema, LlmRuntimeStatusSchema, LlmTimeoutDefaults, LlmUsageRollupSchema, LlmUsageSchema, LocateSegmentResultSchema, LocationStatSchema, LockControlStatusSchema, LockStateSchema, LogEntrySchema, LogLevelSchema, LogStreamEntrySchema, LoginMethodContributionSchema, LoginStageEnum, MACRO_LABELS, MAX_CLIP_EVENT_IDS, MAX_CLIP_LABELS, MAX_CONDITION_DEPTH, MAX_CONDITION_LEAVES, MAX_EXPRESSION_AST_NODES, MAX_EXPRESSION_BINDINGS, MAX_EXPRESSION_CALL_ARGS, MAX_EXPRESSION_EVAL_STEPS, MAX_EXPRESSION_SOURCE_LENGTH, METHOD_ACCESS_MAP, METHOD_DEVICE_SELECTORS, MODEL_FORMATS, MOTION_TRIGGER_FEATURE, ManagedModelCatalogEntrySchema, ManagedModelExtraFileSchema, ManagedModelRefSchema, ManagedRuntimeConfigSchema, MaskGridDimsSchema, MaskGridShapeSchema, MaskLineShapeSchema, MaskPointSchema, MaskPolygonShapeSchema, MaskPolygonVerticesSchema, MaskRectShapeSchema, MaskShapeKindSchema, MaskShapeSchema, MediaFileInfoSchema, MediaFileSchema, MediaPlayerRepeatSchema, MediaPlayerStateSchema, MediaPlayerStatusSchema, MeshPeerSchema, MeshStatusSchema, MethodAccessSchema, ModelCatalogEntrySchema, ModelConvertInputSchema, ModelConvertMetadataSchema, ModelDistributeInputSchema, ModelDistributeResultSchema, ModelExtraFileSchema, ModelFormatEntrySchema, ModelFormatsSchema, ModelSubstitutionSchema, ModelVariantGroupSchema, MotionAnalysisResultSchema, MotionEventSchema, MotionOnMotionChangedDataSchema, MotionRegionSchema, MotionSourceEnum, MotionSourcesSchema, MotionStatusSchema, MotionTriggerRuntimeStateSchema, MotionTriggerStatusSchema, MotionZoneOptionsSchema, MotionZonePatchSchema, MotionZoneRegionSchema, MotionZoneStatusSchema, StatusSchema as MqttBrokerStatusSchema, MutationFilterSchema, NATIVE_LEASE_ACTIVITY_FIELD, NATIVE_LEASE_ACTIVITY_KEY, NATIVE_LEASE_ADMISSION_FIELD, NATIVE_LEASE_ADMISSION_KEY, NATIVE_LEASE_BUDGET_FIELD, NATIVE_LEASE_BUDGET_KEY, NATIVE_LEASE_HOLD_FIELD, NATIVE_LEASE_HOLD_KEY, NATIVE_LEASE_SECTION_ID, NATIVE_LEASE_TILE_BUDGET_FIELD, NATIVE_LEASE_TILE_BUDGET_KEY, NC_ALARM_SYSTEM_EVENT_KINDS, NC_AUDIO_DBFS_FLOOR, NC_AUDIO_DB_MAX, NC_AUDIO_DB_MIN, NC_AUDIO_DB_OFFERED, NC_AUDIO_DB_STEP, NC_AUDIO_DEFAULTS, NC_AUDIO_HIT_PERCENT_MAX, NC_AUDIO_HIT_PERCENT_MIN, NC_AUDIO_SAMPLING_MAX_SEC, NC_AUDIO_SAMPLING_MIN_SEC, NC_AUDIO_SEED, NC_AUTHORABLE_SYSTEM_EVENT_KINDS, NC_BASE_CONDITION_KEYS, NC_CONDITION_CATALOG, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX, NC_CONFIRM_DEFAULT_TIMEOUT_MS, NC_CONFIRM_MAX_TIMEOUT_MS, NC_CONFIRM_MIN_TIMEOUT_MS, NC_DEFAULT_SNOOZE_MINUTES, NC_HISTORY_LIMIT_DEFAULT, NC_HISTORY_LIMIT_MAX, NC_MAX_PER_TRACK_IMMEDIATE, NC_OCCUPANCY_DEFAULTS, NC_RULE_EDITOR_SECTION_ORDER, NC_RULE_KIND_SPECS, NC_RULE_SECTIONS, NC_SNOOZE_MAX_MINUTES, NC_SYSTEM_DELIVERY, NC_SYSTEM_EVENT_FILTER_KEYS, NC_TAXONOMY, NativeCropBboxSchema, NativeCropRefSchema, NativeCropResultSchema, NativeDetectionSchema, NativeLeaseAdmissionSchema, NativeLeaseSettingsSchema, NativeObjectClassEnum, NativeObjectDetectionRuntimeStateSchema, NativeObjectDetectionStatusSchema, NcAlarmConfigSchema, NcAlarmModeCoverageSchema, NcAlarmSettingsPatchSchema, NcAlarmSettingsSchema, NcAlarmSkipReasonSchema, NcAlarmSkippedDeviceSchema, NcAudioConditionSchema, NcConditionDescriptorSchema, NcConditionsSchema, NcConfirmExpectSchema, NcConfirmSchema, NcCrossingSchema, NcDeliverySchema, NcDeviceStateConditionSchema, NcHistoryEntrySchema, NcHistoryFilterSchema, NcHistoryRecordKindSchema, NcHistoryStatusSchema, NcHistorySubjectSchema, NcMediaFrameSchema, NcMediaPolicySchema, NcOccupancyConditionSchema, NcPlateMatcherSchema, NcRuleActionSchema, NcRuleActionSequenceSchema, NcRuleActionsSchema, NcRuleInputSchema, NcRuleNotificationButtonSchema, NcRulePatchSchema, NcRuleSchema, NcRuleTargetSchema, NcSceneConditionSchema, NcScheduleSchema, NcScheduleWindowSchema, NcSnoozeInputSchema, NcSnoozeSchema, NcSnoozeScopeSchema, NcSnoozeSuppressedSchema, NcSystemEventConditionSchema, NcSystemEventKindSchema, NcTaxonomyEntrySchema, NcTaxonomySchema, NcTestResultSchema, NcThrottleGranularitySchema, NcThrottleSchema, NcZoneConditionSchema, NetworkAccessStatusSchema, NetworkAddressSchema, NetworkEndpointSchema, NotificationActionIconSchema, NotificationActionSchema, NotificationFormatSchema, NotificationSchema, NotifierStatusSchema, NumericSensorStatusSchema, OPERATOR_WRITTEN_STALE_MS, OPS_LOG_DEFAULT_LIMIT, OPS_LOG_RING_DEFAULT_MAX, OauthIntegrationDescriptorSchema, ObjectEventSchema, OpsLogDomainSchema, OpsLogEntrySchema, OpsLogOpSchema, OpsLogQueryInputSchema, OpsLogReasonSchema, OrchestratorMetricsSchema, OsdOverlayKindEnum, OsdOverlayPatchSchema, OsdOverlaySchema, OsdPositionEnum, OsdRenderOutcomeEnum, OsdRenderResultSchema, OsdSlotBindingSchema, OsdSlotViewSchema, OsdSourceOptionSchema, OsdSourceSchema, OsdSourceValueTypeEnum, OsdStatusSchema, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, PIPELINE_FLOW_CAPABILITY_NAMES, PIPELINE_OWNER_CAPABILITY_NAMES, PRIVACY_MASK_CAP_NAME, PROVIDER_KIND_CAP_NAMES, PYTHON_SCRIPT, PackageUpdateSchema, PackageVersionInfoSchema, PasskeyLoginMethodSchema, PasskeySummarySchema, PcmSampleFormatSchema, PerScopeBreakdownSchema, PetFeederStatusSchema, PickStreamPreferencesSchema, PickStreamRequirementsSchema, PickedCamStreamSchema, PipelineAssignmentSchema, PipelineDefaultStepSchema, PipelineEngineChoiceSchema, PipelineRunResultBridge, PipelineStepInputSchema, PipelineValidationIssueSchema, PipelineValidationResultSchema, PlaceholderReasonSchema, PolygonPointSchema, PoolMemoryWatchdog, PowerMeterStatusSchema, PresenceStatusSchema, PressureSensorStatusSchema, PrivacyMaskOptionsSchema, PrivacyMaskPatchSchema, PrivacyMaskRegionSchema, PrivacyMaskShapeSchema, PrivacyMaskStatusSchema, ProfileRtspEntrySchema, ProfileSlotSchema, ProfileSlotStatusSchema, ProviderStatusSchema, PtzAutotrackRuntimeStateSchema, PtzAutotrackSettingsSchema, PtzAutotrackStatusSchema, PtzAutotrackTargetOptionSchema, PtzMoveCommandSchema, PtzOptionsSchema, PtzPositionSchema, PtzPresetSchema, PtzStatusSchema, QueryFilterSchema, RATE_CONTROL_RELAXED, RATE_CONTROL_TIGHT, REACHABILITY_FAILURES_TO_OFFLINE, REACHABILITY_POLL_INTERVAL_MS, REACHABILITY_PROBE_TIMEOUT_MS, RECOGNITION_TYPES, RECORDING_EXPORT_MAX_READ_BYTES, RESERVED_BINDING_NAMES, RESTORED_CAP_NAMES, RUNTIME_DEFAULTS, RUNTIME_STATE_POLICY, RUNTIME_STATE_REFRESH_MISS_COOLDOWN_MS, RUNTIME_TO_FORMAT, RawStateResultSchema, ReadGopBytesResultSchema, ReadSegmentBytesResultSchema, ReadinessRegistry, ReadinessTimeoutError, RecentTracksPageSchema, RecentTracksQueryInput, RecordingAvailabilitySchema, RecordingBandModeSchema, RecordingBandSchema, RecordingBandTriggersSchema, RecordingConfigSchema, RecordingDaysSchema, RecordingDeviceUsageSchema, RecordingLocationUsageSchema, RecordingManifestSchema, RecordingRangeSchema, RecordingRebalanceInputSchema, RecordingRebalanceMoveSchema, RecordingRebalancePlanSchema, RecordingRebalanceSkipReasonSchema, RecordingRebalanceSkipSchema, RecordingRetentionSchema, RecordingStatusSchema, RecordingStorageModeSchema, RecordingStorageUsageSchema, RecordingTriggersSchema, RecordingWeekdaySchema, RedirectLoginMethodSchema, RelocateFootageClassSchema, RelocateFootageInputSchema, RelocateJobSchema, RelocateJobStateSchema, RelocateMediaInputSchema, RenderedAsSchema, ReportMotionInputSchema, RetrainAnnotationDraftSchema, RetrainAnnotationKindSchema, RetrainAnnotationSchema, RetrainAnnotationSourceSchema, RetrainAssistResultSchema, RetrainAssistSubjectSchema, RetrainCopyRefusalSchema, RetrainFrameCandidateSchema, RetrainFrameListSchema, RetrainFrameSchema, RetrainFrameSelectionSchema, RetrainMacroClassSchema, RetrainStatusSchema, RetrainTrackSchema, RetrainTransitionResultSchema, RingBuffer, RtpSourceSchema, RtspRestreamEntrySchema, RunnerCameraConfigSchema, RunnerCameraDeviceUIFields, RunnerFrameSourceSchema, RunnerInferenceDeviceSchema, RunnerLocalLoadSchema, RunnerLocalMetricsSchema, SCENE_CONDITIONS, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS, SCENE_DEFAULT_ANCHOR_THRESHOLD, SCENE_DEFAULT_CHECK_INTERVAL_SEC, SCENE_DEFAULT_OBSERVATION_SPACING_SEC, SCENE_DEFAULT_QUIET_SECONDS, SCENE_DEFAULT_UNCOVERED_POLICY, SCENE_DIVERGED, SCENE_RESET_RECAPTURES, SCOPE_PRESETS, SCRUB_THUMBNAIL_PRESETS, SCRUB_THUMBNAIL_PRESET_LABELS, SCRUB_THUMBNAIL_PRESET_ORDER, SENSOR_FEATURES, SENSOR_MAP, SOURCE_INFO_METADATA_KEY, STREAM_PROFILE_META, STREAM_QUALITY_LABELS, SUB_DETECTION_TYPES, SYSTEM_CAP_NAMES, SYSTEM_SCOPE_DEVICE_METHODS, SceneCheckSchema, SceneConditionSchema, SceneConfirmSchema, SceneMonitorSchema, SceneMonitorStateSchema, SceneMonitorStatusSchema, SceneReferenceSchema, SceneUnavailableSchema, SceneUncoveredPolicySchema, SceneVerdictSchema, ScopedTokenSchema, ScopedTokenSummarySchema, ScoredObjectEventSchema, ScriptRunnerStatusSchema, ScrubThumbnailPresetSchema, SearchResultSchema, SendEmailInputSchema, SendEmailResultSchema, SendResultSchema, SensorEventSchema, ServerBootModeSchema, ServerPackageStatusSchema, ServerRollbackInfoSchema, ServerUpdateActionResultSchema, ServerUpdateCheckResultSchema, ServerUpdateStateSchema, SetSiteLocationInputSchema, SettingsPatchSchema, SettingsRecordSchema, SettingsSchemaWithValuesSchema, SettingsUpdateResultSchema, ShmRingStatsSchema, SiteLocationSchema, SiteLocationSourceSchema, SiteLocationStatusSchema, SmokeStatusSchema, SmtpStatusSchema, SnapshotImageSchema, SourceInfoSchema, SpatialDetectionSchema, SsoBridgeClaimsSchema, StartEmbeddedInputSchema, StationaryObjectSchema, AbortUploadInputSchema as StorageAbortUploadInputSchema, BeginDownloadInputSchema as StorageBeginDownloadInputSchema, BeginDownloadResultSchema as StorageBeginDownloadResultSchema, BeginUploadInputSchema as StorageBeginUploadInputSchema, BeginUploadResultSchema as StorageBeginUploadResultSchema, EndDownloadInputSchema as StorageEndDownloadInputSchema, FinalizeUploadInputSchema as StorageFinalizeUploadInputSchema, StorageLocationDeclarationSchema, StorageLocationRefSchema, StorageLocationSchema, StorageLocationTypeSchema, StorageMigrationClassSchema, StorageMigrationDestinationsSchema, StorageMigrationFootageMoveInputSchema, StorageMigrationInputSchema, StorageMigrationJobSchema, StorageMigrationLeaseInputSchema, StorageMigrationMediaMoveInputSchema, StorageMigrationMoveSchema, StorageMigrationParticipantSchema, StorageMigrationPhaseSchema, StorageMigrationPlanSchema, ProviderInfoSchema as StorageProviderInfoSchema, ReadChunkInputSchema as StorageReadChunkInputSchema, TestLocationResultSchema as StorageTestLocationResultSchema, WriteChunkInputSchema as StorageWriteChunkInputSchema, StreamCodecSchema, StreamFormatSchema, StreamNetworkStatsSchema, StreamParamsOptionsSchema, StreamParamsStatusSchema, StreamProfileConfigSchema, StreamProfileOptionsSchema, StreamProfilePatchSchema, StreamProfileSchema, StreamSourceEntrySchema, StreamSourceSchema, SubscribeAudioChunksInputSchema, SubscribeAudioChunksResultSchema, SubscribeFramesInputSchema, SubscribeFramesResultSchema, SwitchStatusSchema, SystemMetricsSchema, SystemMirror, TAXONOMY_COLORS, TIMELAPSE_DENSE_FLOOR_SEC, TIMEZONES, TRANSCODE_DOWN_MAX_BITRATE_KBPS, TRANSCODE_DOWN_MAX_HEIGHT, TamperStatusSchema, TankStatusSchema, TargetKindCapsSchema, TargetKindLevelSchema, TargetKindSchema, TargetSchema, TemperatureSensorStatusSchema, TerminalInstanceInfoSchema, TerminalLegacyCameraSchema, TerminalOutputBatchSchema, TerminalOutputEventSchema, TerminalProfileInfoSchema, TerminalSessionInfoSchema, TestConnectionResultSchema$1 as TestConnectionResultSchema, TestConnectionStatusEnum, TestResultSchema, TimelapseRuleInputSchema, TimelapseRulePatchSchema, TimelapseRuleSchema, TimelapseTemplateSchema, ToastSchema, TokenScopeSchema, TopologyNodeSchema, TopologyProcessSchema, TopologyServiceSchema, TrackCascadeCountsSchema, TrackEnvelopeSchema, TrackFlagsPatchSchema, TrackFlagsSchema, TrackProjectionSchema, TrackSchema, TrackSourceSchema, TrackStateSchema, TrackZoneFilterSchema, TrackedDetectionSchema, TrainingExportDeviceTotalsSchema, TrainingExportSummarySchema, TurnServerSchema, UNIT_TABLE, BrokerInfoSchema$1 as UnifiedBrokerInfoSchema, UnitConversionError, UpdateIntegrationInputSchema, UpdateStatusSchema, UpdateUserInputSchema, UserRecordSchema, UserSummarySchema, VISIT_MERGE_GAP_MS, VacuumControlStatusSchema, VacuumStateSchema, ValveStateSchema, ValveStatusSchema, VectorDeclareIndexInputSchema, VectorDeleteByFilterInputSchema, VectorDeleteInputSchema, VectorDeleteResultSchema, VectorFilterSchema, VectorGetInputSchema, VectorGetResultSchema, VectorItemSchema, VectorMatchSchema, VectorMetadataSchema, VectorMetricSchema, VectorQueryInputSchema, VectorQueryResultSchema, VectorStatsInputSchema, VectorStatsResultSchema, VectorUpsertInputSchema, VectorUpsertResultSchema, VibrationStatusSchema, VideoEncodeSchema, WEBRTC_EGRESS_PROFILE, WELL_KNOWN_TABS, WELL_KNOWN_TAB_MAP, WaterHeaterStatusSchema, WeatherStatusSchema, WebrtcStreamChoiceSchema, WebrtcStreamTargetSchema, WhiteBalanceModeSchema, WidgetHostEnum, WidgetLoginMethodSchema, WidgetMetadataSchema, WidgetRemoteSchema, WidgetSizeEnum, YAMNET_TO_MACRO, ZoneCrossingDirectionSchema, ZoneCrossingSchema, ZoneKindEnum, ZoneRuleModeEnum, ZoneRuleSchema, ZoneRuleStageEnum, ZoneRulesArraySchema, ZoneSchema, ZoneScopeBreakdownSchema, accessoriesCapability, accessoryStableId, addonPagesCapability, addonPagesSourceCapability, addonRoutesCapability, addonSettingsCapability, addonWidgetsCapability, addonWidgetsSourceCapability, addonsCapability, adminUiCapability, airQualitySensorCapability, alarmPanelCapability, alertsCapability, ambientLightSensorCapability, asBoolean, asJsonArray, asJsonObject, asNumber, asString, assertTimelapseCadences, audioAnalysisCapability, audioAnalyzerCapability, audioCodecCapability, audioIsFailClosed, audioKindId, audioLabelChoices, audioMetricsCapability, audioModeOf, audioOrDefaults, audioPlanFromEncodeProfile, authProviderCapability, autoAssignProfiles, automationControlCapability, backupCapability, bareAddonId, batteryCapability, bestLocationMatch, binaryCapability, bindAddonActions, brightnessCapability, brokerCapability, buildAddonRouteProvider, buildAudioArgs, buildEventKindDescriptor, buildFfmpegArgs, buildInputArgs, buildModelVariantGroups, buildNcTaxonomy, buildRoleScopes, buildStreamParamsConfigSchema, buildVideoArgs, buttonCapability, cameraCredentialsCapability, cameraPipelineConfigCapability, cameraStreamsCapability, canConvertUnit, canonicalEgressPlan, carbonMonoxideCapability, cellsToRects, classifyBearerPrincipal, classifyStream, classifyStreams, climateControlCapability, clusterModelSettingKey, collectHydratedFieldEntries, collectHydratedFieldValues, colorCapability, colorForKind, commitWatchdogRestart, compileExpression, compileExpressionSafe, composeSwitchedOff, conditionDepth, conditionExclusionReason, conditionVisibleForKind, connectionTestCapability, connectivityCapability, consumablesCapability, contactCapability, controlCapability, convertUnit, coreBlockAddonId, coreBlockIdFromAddonId, coreBlocksCapability, cosineSimilarity, countConditionLeaves, coverCapability, createDeviceProxy, createDurableState, createEvent, createExpressionScope, createHwAccelCache, createLazyTrpcSource, createMirrorSource, createRuntimeStateBridge, createSliceHandle, createSystemProxy, customAction, customModelRegistryCapability, dataStoreProviderCapability, dayNightCapability, declarationOwnerNodeId, decodeVectorBase64, decoderCapability, defaultDeliveryForSection, defaultDeviceFor, defineCustomActions, deriveBatteryPresence, deriveCameraSwitches, deriveDetailCropRect, deriveRecordingMode, describeModelVariant, detectAccessRole, detectionPipelineCapability, deviceAdoptionCapability, deviceBackendToFormat, deviceCustomAction, deviceDiscoveryCapability, deviceExportCapability, deviceManagerCapability, deviceMatchesProfile, deviceOpsCapability, deviceProviderCapability, deviceSelectorMatches, deviceStateCapability, deviceStatusCapability, doorbellCapability, droppedConditionsForKind, egressTranscodeSharingKey, egressTransportFromRequest, embeddingEncoderCapability, emitDownForOwnedCaps, emitReadiness, encodeProfileFromStreamShape, encodeVectorBase64, enumSensorCapability, enumerateInferenceDevices, enumerateItemArrayFields, enumerateSchemaFields, errMsg, evaluateAst, evaluateExpressionSource, evaluatePoolMemory, evaluateZoneRules, event, eventEmitterCapability, eventsCapability, expandCapMethods, extractNestedAddonId, extractSourceInfoFromMetadata, faceGalleryCapability, fanControlCapability, featureProbeCapability, filesystemBrowseCapability, findTimezone, floodCapability, formatForBackend, formatForRuntime, gasCapability, generateAutomationBlock, getAudioMacroClassIds, getByPath, getCapsByProviderKind, getTaxonomyEntry, hasMotionTrigger, hfModelUrl, htmlToText, humidifierCapability, humiditySensorCapability, hydrateSchema, imageCapability, imageSettingsCapability, initialPoolMemoryState, integrationsCapability, intercomCapability, invocationFromEncodeProfile, isAgentOnlyPlacement, isArrayOutputSchema, isAudioLabelSelected, isAudioRule, isBaseConditionKey, isBatteryPresenceFault, isClusterScopedStep, isCollectionArrayMethod, isDeployableToAgent, isDetectionMacroClass, isDeviceConfigCap, isDeviceScopedCap, isEvent, isIsolatedBuiltin, isNode, isObjectInput, isOccupancyRule, isRestoredCap, isSameAddonId, isScheduleActive, isSoftwareDecode, isSystemDelivery, isVoidInput, jobKindSchema, kebabToCamel, knownValues, lawnMowerControlCapability, lifecycleJobSchema, lifecycleJobScopeSchema, lifecycleJobStateSchema, lifecycleTaskSchema, llmCapability, llmRuntimeCapability, localNetworkCapability, locationSimilarity, lockControlCapability, logBannerArgs, logDestinationCapability, logLevelAtMost, loginMethodCapability, looseSchema, makeProfileBrokerId, makeSourceBrokerId, mapAudioLabelToMacro, markdownToHtmlLite, markdownToText, maskUrlCredentials, mediaPlayerCapability, mergeSourceInfo, meshNetworkCapability, method, methodAccessForHttpMethod, metricsProviderCapability, modelConvertCapability, modelDistributorCapability, modelFormatForRuntime, motionCapability, motionDetectionCapability, motionTriggerCapability, motionZonesCapability, mqttBrokerCapability, nativeObjectDetectionCapability, networkAccessCapability, networkQualityCapability, nodePin, nodesCapability, normalizeAddonInitResult, normalizeAudioLabel, normalizeTokenScopes, normalizeUnit, notificationOutputCapability, notificationRulesCapability, notifierCapability, numericSensorCapability, oauthIntegrationCapability, objectInputDeclaresAddonId, osdCapability, osdManagerCapability, parseCameraStreamConfig, parseExpression, parseJsonArray, parseJsonObject, parseJsonUnknown, parseProcStatus, parseProfileBrokerId, parseRuleSection, parseStreamParamsFormPatch, patchAudio, petFeederCapability, pickAccessoryControl, pickClusterStepModels, pickDetailCropConvention, pickNativeLeaseOverride, pickPreferredRtspEntry, pickRestartCandidate, pickVideoEncoder, pickerForCondition, pipelineAnalyticsCapability, pipelineExecutorCapability, pipelineOrchestratorCapability, pipelineRunnerCapability, plateGalleryCapability, platformProbeCapability, poolMemoryThreshold, powerMeterCapability, prepareNotification, presenceCapability, pressureSensorCapability, principalMayReachAddon, privacyMaskCapability, procedureAuthKey, ptzAutotrackCapability, ptzCapability, pythonScriptForBackend, readClusterStepModels, readDetailCropConvention, readDeviceStateFrom, readNativeLeaseOverride, readNodePin, readTimelapseGeneratedAt, readinessKey, rebootCapability, recordingCapability, recordingExportCapability, rectsToCells, requiresPython, resetPoolBaseline, resolveAddonExecution, resolveAddonGroup, resolveAddonPlacement, resolveAddonRuntime, resolveCapMount, resolveClusterStepModelId, resolveDetectionRuntime, resolveDeviceControlKind, resolveDeviceProfile, resolveEgressDecodeHwAccel, resolveFormat, resolveHydratedFieldValue, resolveModelFormat, resolveMutate, resolvePoolMemoryPolicy, resolveRecordingProfiles, resolveRunnerId, resolveScrubThumbnailGeometry, resolveVariantModelId, resolveViewableDeviceIds, roleSpec, ruleEditorSectionsForKind, ruleKindOf, ruleKindSpec, ruleMatchesSection, ruleSection, ruleSectionOf, ruleSeedForSection, runInferenceStep, runtimeDevices, runtimeStatePolicyFor, sceneMonitorCapability, scopeInherits, scopeKey, scopesAllowAddon, scopesAllowDeviceCap, scoreRuntimes, scriptRunnerCapability, selectAssignedProfileSlots, serverManagementCapability, setByPath, settingsStoreCapability, sleep, sleepCancellable, smokeCapability, smtpProviderCapability, snapshotCapability, ssoBridgeCapability, startReachabilityPoll, stateVocabularyFor, storageCapability, storageEvictableCapability, storageMigrationCapability, storageProviderCapability, streamBrokerCapability, streamCatalogCapability, streamParamsCapability, streamPixels, streamQualityLabel, subKindsOf, summarisePrivacyAudio, summarizeEffectiveScope, supportedRuntimes, switchCapability, switchedOffIds, synthesizeSourceInfo, systemCapability, systemEventFilterApplies, systemEventFilterAppliesToAnyKind, tamperCapability, taskLogEntrySchema, taskPhaseSchema, taskTargetSchema, temperatureSensorCapability, terminalSessionCapability, textToHtml, toDeviceSummary, toExpressionValue, toNodeId, toStreamSourceEntry, toastCapability, toggleAudioLabel, tokenize, transcodeBody, tryConvertUnit, turnProviderCapability, unitDimension, unitsForDimension, updateCapability, userManagementCapability, userPasskeysCapability, vacuumControlCapability, validateExpressionSource, validateRecipeBounds, valveCapability, vectorDimFromBase64, vectorStoreCapability, vibrationCapability, videoclipsCapability, viewerUiCapability, waterHeaterCapability, weatherCapability, webrtcClientHintsSchema, webrtcSessionCapability, wiringAddonHealthSchema, wiringHealthSnapshotSchema, wiringNodeHealthSchema, wiringProbeKindSchema, wiringProbeResultSchema, zodEntriesToConfigUI, zoneAnalyticsCapability, zoneRulesCapability, zonesCapability };
|
|
@@ -81,6 +81,38 @@ export interface ConfigSection {
|
|
|
81
81
|
readonly fields: readonly ConfigField[];
|
|
82
82
|
}
|
|
83
83
|
export type ConfigField = ConfigTextField | ConfigNumberField | ConfigBooleanField | ConfigSelectField | ConfigMultiSelectField | ConfigTimezoneField | ConfigDateTimeField | ConfigColorField | ConfigPasswordField | ConfigTextAreaField | ConfigSliderField | ConfigTagsField | ConfigGroupField | ConfigSubTabsField | ConfigSeparatorField | ConfigInfoField | ConfigQrCodeField | ConfigObjectArrayField | ConfigEditableArrayField | ConfigModelSelectorField | ConfigStorageLocationField | ConfigProbeField | ConfigButtonField | ConfigPipelineEditorField | ConfigNodeSelectField | ConfigNodeMultiSelectField | ConfigDeviceSelectField | ConfigDeviceMultiSelectField | ConfigWidgetField | ConfigAddonActionSelectField | ConfigAddonActionButtonField | ConfigDeviceActionButtonField;
|
|
84
|
+
/**
|
|
85
|
+
* Per-MODEL applicability of a pipeline-step setting (D214).
|
|
86
|
+
*
|
|
87
|
+
* A step's config schema is static, but whether a knob has any effect depends
|
|
88
|
+
* on WHICH model the step runs: an NMS IoU threshold means nothing to a model
|
|
89
|
+
* whose export fuses NMS into the graph (Frigate YOLO-NAS, TFLite SSD), a
|
|
90
|
+
* per-macro confidence slider is moot for a macro the model's labelmap cannot
|
|
91
|
+
* produce, and a class allow-list must offer the MODEL's labels, not the
|
|
92
|
+
* catalog's. Computed server-side (`buildSchemaSlots` → the step's model
|
|
93
|
+
* union, static + custom registry) and consumed by the step editors, which
|
|
94
|
+
* disable an inapplicable knob WITH its reason instead of rendering a control
|
|
95
|
+
* that silently does nothing.
|
|
96
|
+
*
|
|
97
|
+
* COMPILE-TIME ONLY on the wire: `ConfigField` crosses the cap boundary via
|
|
98
|
+
* `z.custom<ConfigField>()` (no stripping), so an addon compiled against this
|
|
99
|
+
* field runs on hubs whose installed framework predates it — same pattern as
|
|
100
|
+
* the `yolonas` `PostprocessorType` member (D208).
|
|
101
|
+
*/
|
|
102
|
+
export interface ConfigFieldModelApplicability {
|
|
103
|
+
/**
|
|
104
|
+
* modelId → operator-readable reason this knob has NO effect with that
|
|
105
|
+
* model. The editor disables the control and shows the reason.
|
|
106
|
+
*/
|
|
107
|
+
readonly inapplicable?: Readonly<Record<string, string>>;
|
|
108
|
+
/**
|
|
109
|
+
* modelId → replacement options for select/multiselect fields whose offer
|
|
110
|
+
* derives from the model's own labelmap (custom models: a class allow-list
|
|
111
|
+
* must operate on THE MODEL's labels — options from another labelmap build
|
|
112
|
+
* a filter that can never match).
|
|
113
|
+
*/
|
|
114
|
+
readonly optionsByModel?: Readonly<Record<string, readonly ConfigOption[]>>;
|
|
115
|
+
}
|
|
84
116
|
export interface ConfigFieldBase {
|
|
85
117
|
readonly key: string;
|
|
86
118
|
readonly label: string;
|
|
@@ -92,6 +124,8 @@ export interface ConfigFieldBase {
|
|
|
92
124
|
readonly default?: unknown;
|
|
93
125
|
readonly span?: 1 | 2 | 3 | 4;
|
|
94
126
|
readonly showWhen?: ConfigCondition;
|
|
127
|
+
/** Per-model knob applicability — see {@link ConfigFieldModelApplicability}. */
|
|
128
|
+
readonly modelApplicability?: ConfigFieldModelApplicability;
|
|
95
129
|
/**
|
|
96
130
|
* Save behavior when value changes.
|
|
97
131
|
* - true: save immediately on change (toggles, selects, checkboxes)
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { PipelineExecutionTrace, StepCadence } from '../types/pipeline-step.js';
|
|
1
|
+
import type { BulkUpdateState } from '../capabilities/addons.cap.js';
|
|
3
2
|
import type { MotionRegion } from '../capabilities/motion-detection.cap.js';
|
|
3
|
+
import type { CamProfile } from '../capabilities/schemas/streaming-shared.js';
|
|
4
4
|
import type { CameraPipelineConfig } from '../types/camera-pipeline.js';
|
|
5
|
+
import type { AudioResult, FrameResult, ObjectDetection } from '../types/detection.js';
|
|
6
|
+
import type { PipelineEngineChoice } from '../types/pipeline.js';
|
|
7
|
+
import type { PipelineExecutionTrace, StepCadence } from '../types/pipeline-step.js';
|
|
5
8
|
import type { CameraMetrics } from './api-shared.js';
|
|
9
|
+
import type { FrameHandle } from './frame-handle.js';
|
|
10
|
+
import type { NodeProcess, SystemResourceSnapshot } from './metrics-provider.js';
|
|
6
11
|
import type { RunnerLocalLoad } from './pipeline-runner-capability.js';
|
|
7
12
|
import type { BrokerStats } from './stream-broker.js';
|
|
8
|
-
import type { PipelineEngineChoice } from '../types/pipeline.js';
|
|
9
|
-
import type { NodeProcess, SystemResourceSnapshot } from './metrics-provider.js';
|
|
10
|
-
import type { FrameHandle } from './frame-handle.js';
|
|
11
|
-
import type { BulkUpdateState } from '../capabilities/addons.cap.js';
|
|
12
|
-
import type { CamProfile } from '../capabilities/schemas/streaming-shared.js';
|
|
13
13
|
export interface EventSource {
|
|
14
14
|
/** Primary source type: 'core', 'addon', 'device', 'pipeline', etc. */
|
|
15
15
|
type: string;
|
|
@@ -460,6 +460,30 @@ export interface PendingRestartMarkerPayload {
|
|
|
460
460
|
readonly nodeId?: string;
|
|
461
461
|
readonly [key: string]: unknown;
|
|
462
462
|
}
|
|
463
|
+
/**
|
|
464
|
+
* The hub reissued its own TLS certificate (`ensureTlsCert`, D227).
|
|
465
|
+
*
|
|
466
|
+
* Emitted once per boot, only when the certificate actually changed. An
|
|
467
|
+
* operator who installed the previous certificate as trusted by hand has
|
|
468
|
+
* to install `caCertPath` — this event is how they find out, instead of
|
|
469
|
+
* from a browser error.
|
|
470
|
+
*/
|
|
471
|
+
export interface TlsCertChangedPayload {
|
|
472
|
+
/** Machine-readable trigger — see `CertRegenerationReason`. */
|
|
473
|
+
readonly reason: string;
|
|
474
|
+
/** SHA-256 fingerprint of the new leaf. */
|
|
475
|
+
readonly fingerprintSha256: string;
|
|
476
|
+
/** SHA-256 fingerprint of the local root — the file to trust. */
|
|
477
|
+
readonly caFingerprintSha256: string;
|
|
478
|
+
/** True when the ROOT rotated too, i.e. previously granted trust is void. */
|
|
479
|
+
readonly caRotated: boolean;
|
|
480
|
+
/** Absolute path of the root certificate the operator should install. */
|
|
481
|
+
readonly caCertPath: string;
|
|
482
|
+
/** ISO timestamp at which the new leaf stops being valid. */
|
|
483
|
+
readonly validTo: string;
|
|
484
|
+
readonly sans: readonly string[];
|
|
485
|
+
readonly [key: string]: unknown;
|
|
486
|
+
}
|
|
463
487
|
/** One service entry inside a topology process — addon + capabilities. */
|
|
464
488
|
export interface TopologyService {
|
|
465
489
|
readonly addonId: string;
|
|
@@ -561,6 +585,7 @@ export interface EventCatalog {
|
|
|
561
585
|
};
|
|
562
586
|
'system.restarting': PendingRestartMarkerPayload;
|
|
563
587
|
'system.restart-completed': PendingRestartMarkerPayload;
|
|
588
|
+
'system.tls-cert-changed': TlsCertChangedPayload;
|
|
564
589
|
'update.available': {
|
|
565
590
|
readonly target: 'addon' | 'server';
|
|
566
591
|
readonly packageName: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_event_category = require("./event-category-
|
|
1
|
+
const require_event_category = require("./event-category-EY0GNjV9.js");
|
|
2
2
|
let zod = require("zod");
|
|
3
3
|
//#region src/interfaces/config-ui.ts
|
|
4
4
|
/** Predefined tabs with standard label, icon, and sort order.
|