@camstack/types 1.2.278 → 1.2.280

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.
@@ -88,8 +88,8 @@ export { type IOauthIntegrationProvider, type OauthIntegrationDescriptor, OauthI
88
88
  export { AnalyticsLtsSeriesSchema, type AudioEvent, type AudioEventDraft, AudioEventSchema, type DetectionSource, DetectionSourceSchema, EVENT_DENSITY_BATCH_MAX, type EventDensityBucket, EventDensityBucketSchema, type EventDensityForDevice, EventDensityForDeviceSchema, type EventKind, type EventKindCategory, EventKindCategorySchema, type EventKindDescriptor, EventKindDescriptorSchema, type EventKindIcon, EventKindIconSchema, EventKindSchema, type EventKindsForDevice, EventKindsForDeviceSchema, type EventMediaKindBreakdown, type EventMediaKindFootprint, type EventPruneCounts, type EventStoreDeviceFootprint, type EventStoreFootprint, type IPipelineAnalyticsProvider, type KeyEvent, KeyEventSchema, type KeyEventsForDevice, type LabelAttribution, LabelAttributionSchema, type LabelTier, LabelTierSchema, LTS_SCOPE_CLASS_SEPARATOR, type LtsBucket, LtsBucketSchema, MAX_TRACK_DEBUG_NOTE_LEN, type MediaFile, type MediaFileBytes, type MediaFileInfo, MediaFileInfoSchema, type MediaFileKind, MediaFileKindEnum, type MediaFileRef, MediaFileRefSchema, MediaFileSchema, type MotionEvent, type MotionEventDraft, MotionEventSchema, type ObjectEvent, type ObjectEventDraft, ObjectEventSchema, occupancyScope, parseOccupancyScope, 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 RebuildObjectEmbeddingsRefusal, RebuildObjectEmbeddingsRefusalSchema, 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';
89
89
  export type { EffectiveTuning, EffectiveTuningInput, NativeCropRef, PipelineStepInputOutput, PipelineValidationIssue, PipelineValidationResult, } from './pipeline-executor.cap.js';
90
90
  export { EffectiveTuningSchema, ModelSubstitutionSchema, NativeCropRefSchema, PipelineDefaultStepSchema, PipelineEngineChoiceSchema, PipelineRunResultBridge, PipelineStepInputSchema, PipelineValidationIssueSchema, PipelineValidationResultSchema, pipelineExecutorCapability, } from './pipeline-executor.cap.js';
91
- export type { CameraAssignmentStatus, CameraAudioStatus, CameraBrokerProfile, CameraBrokerStatus, CameraDecoderShm, CameraDecoderStatus, CameraDetectionPhase, CameraDetectionProvisioning, CameraDetectionProvisioningState, CameraDetectionStatus, CameraMotionStatus, CameraRecordingMode, CameraRecordingStatus, CameraSourceStatus, CameraSourceStream, CameraStatus, CameraStatusDegradation, CameraStatusDegradationReason, CameraStatusStage, ClusterModelChoice, ClusterModelChoiceUnreadableReason, DiskReconcileJob, InferenceDeviceExclusionReason, IngestOwner, NodeInferenceDevice, NodeInferenceDevices, SetCameraSensorsInput, } from './pipeline-orchestrator.cap.js';
92
- export { AgentLoadSummarySchema, CLUSTER_MODEL_CHOICE_UNREADABLE_REASONS, ClusterModelChoiceSchema, 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, SetCameraSensorsInputSchema, } from './pipeline-orchestrator.cap.js';
91
+ export type { CameraAssignmentStatus, CameraAudioStatus, CameraBrokerProfile, CameraBrokerStatus, CameraDecoderShm, CameraDecoderStatus, CameraDetectionPhase, CameraDetectionProvisioning, CameraDetectionProvisioningState, CameraDetectionStatus, CameraMotionStatus, CameraRecordingMode, CameraRecordingStatus, CameraSourceStatus, CameraSourceStream, CameraStatus, CameraStatusDegradation, CameraStatusDegradationReason, CameraStatusStage, ClusterModelChoice, ClusterModelChoiceUnreadableReason, DiskReconcileJob, InferenceDeviceExclusionReason, IngestOwner, NodeInferenceDevice, NodeInferenceDevices, OccupancyLookAnswer, OccupancyLookRefusal, OccupancyLookRequest, SetCameraSensorsInput, } from './pipeline-orchestrator.cap.js';
92
+ export { AgentLoadSummarySchema, CLUSTER_MODEL_CHOICE_UNREADABLE_REASONS, ClusterModelChoiceSchema, 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, OccupancyLookAnswerSchema, OccupancyLookRefusalSchema, OccupancyLookRequestSchema, PipelineAssignmentSchema, pipelineOrchestratorCapability, SetCameraSensorsInputSchema, } from './pipeline-orchestrator.cap.js';
93
93
  export type { DetailParent, DetailResult, MotionSource, MotionSources, OccupancyBurstRefusal, ParkedFrameKind, ParkedTrackFrame, ParkRefusal, ParkTrackFrameResult, ReportMotionInput, RunDetailSubtreeInput, RunDetailSubtreeResult, RunnerFrameSource, RunnerInferenceDevice, RunnerJumpStepProvisioning, RunStatelessStepInput, RunStatelessStepResult, StatelessStepRefusal, } from './pipeline-runner.cap.js';
94
94
  export { type DetectionSources, DetectionSourcesSchema, FrameLazyCountersSchema, FrameLazyMetricsSchema, MOTION_SOURCE_LABELS, MotionSourceEnum, MotionSourcesSchema, motionSourceLabel, type NativeCropBbox, NativeCropBboxSchema, NativeCropResultSchema, OccupancyBurstRefusalSchema, ParkedFrameKindSchema, ParkedTrackFrameSchema, ParkRefusalSchema, ParkTrackFrameResultSchema, pipelineRunnerCapability, ReportMotionInputSchema, RunnerCameraConfigSchema, RunnerCameraDeviceUIFields, RunnerFrameSourceSchema, RunnerInferenceDeviceSchema, RunnerJumpStepProvisioningSchema, RunnerLocalLoadSchema, RunnerLocalMetricsSchema, } from './pipeline-runner.cap.js';
95
95
  export { AUDIO_NOT_CLASSIFIED_REASONS, AudioChunkInputSchema, AudioClassificationLabelSchema, AudioClassifyOutcomeSchema, AudioLevelSchema, BoundingBoxSchema, FrameInputSchema, SpatialDetectionSchema, } from './schemas/detection-shared.js';
@@ -428,7 +428,7 @@ export type NcSensorTransition = z.infer<typeof NcSensorTransitionSchema>;
428
428
  /** Admin-zone membership condition (zone IDs as stamped by the ZoneEngine). */
429
429
  export declare const NcZoneConditionSchema: z.ZodObject<{
430
430
  ids: z.ZodArray<z.ZodString>;
431
- match: z.ZodDefault<z.ZodEnum<{
431
+ match: z.ZodOptional<z.ZodEnum<{
432
432
  any: "any";
433
433
  all: "all";
434
434
  }>>;
@@ -672,7 +672,7 @@ export declare const NcConditionsSchema: z.ZodObject<{
672
672
  minConfidence: z.ZodOptional<z.ZodNumber>;
673
673
  zones: z.ZodOptional<z.ZodObject<{
674
674
  ids: z.ZodArray<z.ZodString>;
675
- match: z.ZodDefault<z.ZodEnum<{
675
+ match: z.ZodOptional<z.ZodEnum<{
676
676
  any: "any";
677
677
  all: "all";
678
678
  }>>;
@@ -1015,7 +1015,7 @@ export declare const NcRuleInputSchema: z.ZodObject<{
1015
1015
  minConfidence: z.ZodOptional<z.ZodNumber>;
1016
1016
  zones: z.ZodOptional<z.ZodObject<{
1017
1017
  ids: z.ZodArray<z.ZodString>;
1018
- match: z.ZodDefault<z.ZodEnum<{
1018
+ match: z.ZodOptional<z.ZodEnum<{
1019
1019
  any: "any";
1020
1020
  all: "all";
1021
1021
  }>>;
@@ -1415,7 +1415,7 @@ export declare const NcRulePatchSchema: z.ZodObject<{
1415
1415
  minConfidence: z.ZodOptional<z.ZodNumber>;
1416
1416
  zones: z.ZodOptional<z.ZodObject<{
1417
1417
  ids: z.ZodArray<z.ZodString>;
1418
- match: z.ZodDefault<z.ZodEnum<{
1418
+ match: z.ZodOptional<z.ZodEnum<{
1419
1419
  any: "any";
1420
1420
  all: "all";
1421
1421
  }>>;
@@ -1730,7 +1730,7 @@ export declare const NcRuleUpdateInputSchema: z.ZodObject<{
1730
1730
  minConfidence: z.ZodOptional<z.ZodNumber>;
1731
1731
  zones: z.ZodOptional<z.ZodObject<{
1732
1732
  ids: z.ZodArray<z.ZodString>;
1733
- match: z.ZodDefault<z.ZodEnum<{
1733
+ match: z.ZodOptional<z.ZodEnum<{
1734
1734
  any: "any";
1735
1735
  all: "all";
1736
1736
  }>>;
@@ -1931,7 +1931,7 @@ export declare const NcRuleSchema: z.ZodObject<{
1931
1931
  minConfidence: z.ZodOptional<z.ZodNumber>;
1932
1932
  zones: z.ZodOptional<z.ZodObject<{
1933
1933
  ids: z.ZodArray<z.ZodString>;
1934
- match: z.ZodDefault<z.ZodEnum<{
1934
+ match: z.ZodOptional<z.ZodEnum<{
1935
1935
  any: "any";
1936
1936
  all: "all";
1937
1937
  }>>;
@@ -3358,7 +3358,7 @@ export declare const notificationRulesCapability: {
3358
3358
  minConfidence: z.ZodOptional<z.ZodNumber>;
3359
3359
  zones: z.ZodOptional<z.ZodObject<{
3360
3360
  ids: z.ZodArray<z.ZodString>;
3361
- match: z.ZodDefault<z.ZodEnum<{
3361
+ match: z.ZodOptional<z.ZodEnum<{
3362
3362
  any: "any";
3363
3363
  all: "all";
3364
3364
  }>>;
@@ -3655,7 +3655,7 @@ export declare const notificationRulesCapability: {
3655
3655
  minConfidence: z.ZodOptional<z.ZodNumber>;
3656
3656
  zones: z.ZodOptional<z.ZodObject<{
3657
3657
  ids: z.ZodArray<z.ZodString>;
3658
- match: z.ZodDefault<z.ZodEnum<{
3658
+ match: z.ZodOptional<z.ZodEnum<{
3659
3659
  any: "any";
3660
3660
  all: "all";
3661
3661
  }>>;
@@ -3950,7 +3950,7 @@ export declare const notificationRulesCapability: {
3950
3950
  minConfidence: z.ZodOptional<z.ZodNumber>;
3951
3951
  zones: z.ZodOptional<z.ZodObject<{
3952
3952
  ids: z.ZodArray<z.ZodString>;
3953
- match: z.ZodDefault<z.ZodEnum<{
3953
+ match: z.ZodOptional<z.ZodEnum<{
3954
3954
  any: "any";
3955
3955
  all: "all";
3956
3956
  }>>;
@@ -4239,7 +4239,7 @@ export declare const notificationRulesCapability: {
4239
4239
  minConfidence: z.ZodOptional<z.ZodNumber>;
4240
4240
  zones: z.ZodOptional<z.ZodObject<{
4241
4241
  ids: z.ZodArray<z.ZodString>;
4242
- match: z.ZodDefault<z.ZodEnum<{
4242
+ match: z.ZodOptional<z.ZodEnum<{
4243
4243
  any: "any";
4244
4244
  all: "all";
4245
4245
  }>>;
@@ -4639,7 +4639,7 @@ export declare const notificationRulesCapability: {
4639
4639
  minConfidence: z.ZodOptional<z.ZodNumber>;
4640
4640
  zones: z.ZodOptional<z.ZodObject<{
4641
4641
  ids: z.ZodArray<z.ZodString>;
4642
- match: z.ZodDefault<z.ZodEnum<{
4642
+ match: z.ZodOptional<z.ZodEnum<{
4643
4643
  any: "any";
4644
4644
  all: "all";
4645
4645
  }>>;
@@ -4838,7 +4838,7 @@ export declare const notificationRulesCapability: {
4838
4838
  minConfidence: z.ZodOptional<z.ZodNumber>;
4839
4839
  zones: z.ZodOptional<z.ZodObject<{
4840
4840
  ids: z.ZodArray<z.ZodString>;
4841
- match: z.ZodDefault<z.ZodEnum<{
4841
+ match: z.ZodOptional<z.ZodEnum<{
4842
4842
  any: "any";
4843
4843
  all: "all";
4844
4844
  }>>;
@@ -5215,7 +5215,7 @@ export declare const notificationRulesCapability: {
5215
5215
  minConfidence: z.ZodOptional<z.ZodNumber>;
5216
5216
  zones: z.ZodOptional<z.ZodObject<{
5217
5217
  ids: z.ZodArray<z.ZodString>;
5218
- match: z.ZodDefault<z.ZodEnum<{
5218
+ match: z.ZodOptional<z.ZodEnum<{
5219
5219
  any: "any";
5220
5220
  all: "all";
5221
5221
  }>>;
@@ -5529,7 +5529,7 @@ export declare const notificationRulesCapability: {
5529
5529
  minConfidence: z.ZodOptional<z.ZodNumber>;
5530
5530
  zones: z.ZodOptional<z.ZodObject<{
5531
5531
  ids: z.ZodArray<z.ZodString>;
5532
- match: z.ZodDefault<z.ZodEnum<{
5532
+ match: z.ZodOptional<z.ZodEnum<{
5533
5533
  any: "any";
5534
5534
  all: "all";
5535
5535
  }>>;
@@ -109,7 +109,7 @@ export declare const OsdSlotBindingSchema: z.ZodObject<{
109
109
  minConfidence: z.ZodOptional<z.ZodNumber>;
110
110
  zones: z.ZodOptional<z.ZodObject<{
111
111
  ids: z.ZodArray<z.ZodString>;
112
- match: z.ZodDefault<z.ZodEnum<{
112
+ match: z.ZodOptional<z.ZodEnum<{
113
113
  any: "any";
114
114
  all: "all";
115
115
  }>>;
@@ -294,7 +294,7 @@ export declare const OsdSlotViewSchema: z.ZodObject<{
294
294
  minConfidence: z.ZodOptional<z.ZodNumber>;
295
295
  zones: z.ZodOptional<z.ZodObject<{
296
296
  ids: z.ZodArray<z.ZodString>;
297
- match: z.ZodDefault<z.ZodEnum<{
297
+ match: z.ZodOptional<z.ZodEnum<{
298
298
  any: "any";
299
299
  all: "all";
300
300
  }>>;
@@ -551,7 +551,7 @@ export declare const osdManagerCapability: {
551
551
  minConfidence: z.ZodOptional<z.ZodNumber>;
552
552
  zones: z.ZodOptional<z.ZodObject<{
553
553
  ids: z.ZodArray<z.ZodString>;
554
- match: z.ZodDefault<z.ZodEnum<{
554
+ match: z.ZodOptional<z.ZodEnum<{
555
555
  any: "any";
556
556
  all: "all";
557
557
  }>>;
@@ -827,7 +827,7 @@ export declare const osdManagerCapability: {
827
827
  minConfidence: z.ZodOptional<z.ZodNumber>;
828
828
  zones: z.ZodOptional<z.ZodObject<{
829
829
  ids: z.ZodArray<z.ZodString>;
830
- match: z.ZodDefault<z.ZodEnum<{
830
+ match: z.ZodOptional<z.ZodEnum<{
831
831
  any: "any";
832
832
  all: "all";
833
833
  }>>;
@@ -1011,7 +1011,7 @@ export declare const osdManagerCapability: {
1011
1011
  minConfidence: z.ZodOptional<z.ZodNumber>;
1012
1012
  zones: z.ZodOptional<z.ZodObject<{
1013
1013
  ids: z.ZodArray<z.ZodString>;
1014
- match: z.ZodDefault<z.ZodEnum<{
1014
+ match: z.ZodOptional<z.ZodEnum<{
1015
1015
  any: "any";
1016
1016
  all: "all";
1017
1017
  }>>;
@@ -1227,7 +1227,7 @@ export declare const osdManagerCapability: {
1227
1227
  minConfidence: z.ZodOptional<z.ZodNumber>;
1228
1228
  zones: z.ZodOptional<z.ZodObject<{
1229
1229
  ids: z.ZodArray<z.ZodString>;
1230
- match: z.ZodDefault<z.ZodEnum<{
1230
+ match: z.ZodOptional<z.ZodEnum<{
1231
1231
  any: "any";
1232
1232
  all: "all";
1233
1233
  }>>;
@@ -2890,6 +2890,11 @@ export declare const pipelineAnalyticsCapability: {
2890
2890
  *
2891
2891
  * Operator-driven from the DI Events page (batch delete). Routes through
2892
2892
  * the same widened track-deletion cascade (design §5.2).
2893
+ *
2894
+ * `sparedMediaIds` (D683 Task 14): media rows the cascade LEFT because a
2895
+ * live stationary entry vouches for them (its key frame, owned by a track
2896
+ * that moved and was kept). Released when the entry retires. Optional:
2897
+ * absent from a provider that predates it.
2893
2898
  */
2894
2899
  readonly deleteTracks: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
2895
2900
  deviceId: z.ZodNumber;
@@ -2897,6 +2902,7 @@ export declare const pipelineAnalyticsCapability: {
2897
2902
  }, z.core.$strip>, z.ZodObject<{
2898
2903
  deleted: z.ZodNumber;
2899
2904
  failed: z.ZodReadonly<z.ZodArray<z.ZodString>>;
2905
+ sparedMediaIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodNumber>>>;
2900
2906
  }, z.core.$strip>, "mutation">;
2901
2907
  /**
2902
2908
  * Set the per-track operator flags (`markForTrain`, `debug`, `favourited`) on ONE track.
@@ -712,6 +712,45 @@ export declare const SetCameraSensorsInputSchema: z.ZodObject<{
712
712
  }, z.core.$strip>>;
713
713
  }, z.core.$strip>;
714
714
  export type SetCameraSensorsInput = z.infer<typeof SetCameraSensorsInputSchema>;
715
+ /**
716
+ * Why an early occupancy look (D691) was not scheduled.
717
+ *
718
+ * - `unknown-camera` — no session was ever dispatched for it, so there is no
719
+ * node and no config to attach a burst with.
720
+ * - `out-of-range` — the ask is negative or further out than the orchestrator
721
+ * will hold a timer for; the parked-object cadence is the answer there.
722
+ * - `no-burst-producer` — this build has no burst producer at all.
723
+ * - `already-looked` — this camera's ONE early look since its last session has
724
+ * been spent. A look's own burst can re-arm a flickering flip, and a look
725
+ * per arm would chain a burst every ~30 s forever (review H2); the next
726
+ * real session re-arms the budget.
727
+ */
728
+ export declare const OccupancyLookRefusalSchema: z.ZodEnum<{
729
+ "unknown-camera": "unknown-camera";
730
+ "out-of-range": "out-of-range";
731
+ "no-burst-producer": "no-burst-producer";
732
+ "already-looked": "already-looked";
733
+ }>;
734
+ export type OccupancyLookRefusal = z.infer<typeof OccupancyLookRefusalSchema>;
735
+ /** The input of `requestOccupancyLook` (D691). */
736
+ export declare const OccupancyLookRequestSchema: z.ZodObject<{
737
+ deviceId: z.ZodNumber;
738
+ afterMs: z.ZodNumber;
739
+ reason: z.ZodString;
740
+ }, z.core.$strip>;
741
+ export type OccupancyLookRequest = z.infer<typeof OccupancyLookRequestSchema>;
742
+ /** The answer of `requestOccupancyLook` (D691). */
743
+ export declare const OccupancyLookAnswerSchema: z.ZodObject<{
744
+ scheduled: z.ZodBoolean;
745
+ dueInMs: z.ZodOptional<z.ZodNumber>;
746
+ refusedBecause: z.ZodOptional<z.ZodEnum<{
747
+ "unknown-camera": "unknown-camera";
748
+ "out-of-range": "out-of-range";
749
+ "no-burst-producer": "no-burst-producer";
750
+ "already-looked": "already-looked";
751
+ }>>;
752
+ }, z.core.$strip>;
753
+ export type OccupancyLookAnswer = z.infer<typeof OccupancyLookAnswerSchema>;
715
754
  export declare const pipelineOrchestratorCapability: {
716
755
  readonly name: "pipeline-orchestrator";
717
756
  readonly scope: "system";
@@ -719,6 +758,29 @@ export declare const pipelineOrchestratorCapability: {
719
758
  readonly nodeIdMode: "data";
720
759
  readonly exposesDeviceSettings: true;
721
760
  readonly methods: {
761
+ /**
762
+ * D691 — an occupancy flip is pending on this camera and can commit
763
+ * `afterMs` from now: dial ONE occupancy burst at the end of its sustain
764
+ * window instead of leaving the commit to the 300 s parked-object cadence.
765
+ * Called by the notification centre, the only component that knows a flip
766
+ * is pending; the dial is the recheck's own (attach on the last session
767
+ * node, `requestOccupancyBurst`, detach). One pending look per camera; a
768
+ * session open at the due time is the look, and no burst is dialled.
769
+ */
770
+ readonly requestOccupancyLook: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
771
+ deviceId: z.ZodNumber;
772
+ afterMs: z.ZodNumber;
773
+ reason: z.ZodString;
774
+ }, z.core.$strip>, z.ZodObject<{
775
+ scheduled: z.ZodBoolean;
776
+ dueInMs: z.ZodOptional<z.ZodNumber>;
777
+ refusedBecause: z.ZodOptional<z.ZodEnum<{
778
+ "unknown-camera": "unknown-camera";
779
+ "out-of-range": "out-of-range";
780
+ "no-burst-producer": "no-burst-producer";
781
+ "already-looked": "already-looked";
782
+ }>>;
783
+ }, z.core.$strip>, "mutation">;
722
784
  /** Internal storage-migration participant lease. While held, dispatch
723
785
  * requests are accepted as pending but no new runner attachment starts. */
724
786
  readonly pauseForStorageMigration: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
@@ -6131,6 +6131,13 @@ export type AppRouter = TrpcCoreRouter<{
6131
6131
  output: z.infer<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.applyDeviceSettingsPatch.output>;
6132
6132
  meta: object;
6133
6133
  }>;
6134
+ requestOccupancyLook: TRPCMutationProcedure<{
6135
+ input: {
6136
+ [x: string]: unknown;
6137
+ } & z.input<typeof pipelineOrchestratorCapability.methods.requestOccupancyLook.input>;
6138
+ output: z.infer<typeof pipelineOrchestratorCapability.methods.requestOccupancyLook.output>;
6139
+ meta: object;
6140
+ }>;
6134
6141
  pauseForStorageMigration: TRPCMutationProcedure<{
6135
6142
  input: {
6136
6143
  [x: string]: unknown;
@@ -6,7 +6,7 @@
6
6
  * scope+access check inside `protectedProcedure` (see
7
7
  * `server/backend/src/api/trpc/trpc.middleware.ts`).
8
8
  *
9
- * Coverage: 1195 method paths across 162 capabilities.
9
+ * Coverage: 1196 method paths across 162 capabilities.
10
10
  */
11
11
  import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
12
12
  export interface MethodAccessRecord {
@@ -6,8 +6,8 @@
6
6
  * system-scope cap that takes a deviceId was previously never device-filtered
7
7
  * — see the generator header).
8
8
  *
9
- * Coverage: 407 methods carry a device reference, of which
10
- * 144 are on SYSTEM-scope caps.
9
+ * Coverage: 408 methods carry a device reference, of which
10
+ * 145 are on SYSTEM-scope caps.
11
11
  *
12
12
  * Top-level fields, number arrays, and one-level arrays of objects carrying
13
13
  * a numeric device field (targets[].deviceId) are all mapped; the matcher
@@ -86,7 +86,7 @@ export interface SystemProxy {
86
86
  readonly notificationRules: Pick<InferProvider<typeof notificationRulesCapability>, 'listRules' | 'getRule' | 'createRule' | 'updateRule' | 'deleteRule' | 'setRuleEnabled' | 'getClipRetentionAsks' | 'listDeviceMutes' | 'testRule' | 'previewStateSummary' | 'getConditionCatalog' | 'getTemplateCatalog' | 'previewTemplate' | 'getHistory' | 'getRuleLastRuns' | 'resolveArtifactUrl' | 'listSnoozes' | 'createSnooze' | 'cancelSnooze' | 'getAlarmConfig' | 'setAlarmConfig'>;
87
87
  readonly osdManager: Pick<InferProvider<typeof osdManagerCapability>, 'getConditionSupport' | 'copyDeviceConfiguration'>;
88
88
  readonly pipelineExecutor: Pick<InferProvider<typeof pipelineExecutorCapability>, 'getAvailableEngines' | 'getSelectedEngine' | 'getDefaultSteps' | 'getEngineProvisioning' | 'getVideoPipelineSteps' | 'setVideoPipelineSteps' | 'clearDeviceOverrides' | 'getInferenceDeviceHealth' | 'rearmInferenceDevice' | 'getSchema' | 'getGlobalSteps' | 'getGlobalPipelineConfig' | 'getOrchestratorConfigSchema' | 'validatePipeline' | 'listTemplates' | 'saveTemplate' | 'updateTemplate' | 'deleteTemplate' | 'getCapabilities' | 'getAddonModels' | 'downloadModel' | 'deleteModel' | 'cacheFrameInPool' | 'inferCached' | 'uncacheFrame' | 'getEffectiveTuning' | 'listLoadedEngines' | 'spinEngine' | 'killEngine' | 'listReferenceImages' | 'getReferenceImage' | 'getReferenceAudioFiles' | 'getReferenceAudio' | 'getAudioCapabilities' | 'runAudioTest' | 'getDetectionConfigSchema'>;
89
- readonly pipelineOrchestrator: Pick<InferProvider<typeof pipelineOrchestratorCapability>, 'pauseForStorageMigration' | 'resumeForStorageMigration' | 'rebalance' | 'getPipelineAssignments' | 'getAgentLoad' | 'getClusterModelChoice' | 'getGlobalMetrics' | 'getCapabilityBindings' | 'setCapabilityBinding' | 'getIngestOwner' | 'getAudioNodeLoad' | 'getAudioAssignments' | 'getAgentSettings' | 'listAgentSettings' | 'removeAgentSettings' | 'setAgentMaxCameras' | 'setAgentDetectWeight' | 'setAgentCapabilities' | 'setAgentDecodeLimits' | 'setAgentReachableHost' | 'setAgentInferenceDevices' | 'getNodeInferenceDevices' | 'resetNodePipelineDefaults' | 'getCameraStatuses' | 'setCameraSensors' | 'reconcileFromDisk' | 'getReconcileFromDiskStatus' | 'listTemplates' | 'saveTemplate' | 'updateTemplate' | 'deleteTemplate'>;
89
+ readonly pipelineOrchestrator: Pick<InferProvider<typeof pipelineOrchestratorCapability>, 'requestOccupancyLook' | 'pauseForStorageMigration' | 'resumeForStorageMigration' | 'rebalance' | 'getPipelineAssignments' | 'getAgentLoad' | 'getClusterModelChoice' | 'getGlobalMetrics' | 'getCapabilityBindings' | 'setCapabilityBinding' | 'getIngestOwner' | 'getAudioNodeLoad' | 'getAudioAssignments' | 'getAgentSettings' | 'listAgentSettings' | 'removeAgentSettings' | 'setAgentMaxCameras' | 'setAgentDetectWeight' | 'setAgentCapabilities' | 'setAgentDecodeLimits' | 'setAgentReachableHost' | 'setAgentInferenceDevices' | 'getNodeInferenceDevices' | 'resetNodePipelineDefaults' | 'getCameraStatuses' | 'setCameraSensors' | 'reconcileFromDisk' | 'getReconcileFromDiskStatus' | 'listTemplates' | 'saveTemplate' | 'updateTemplate' | 'deleteTemplate'>;
90
90
  readonly pipelineRunner: Pick<InferProvider<typeof pipelineRunnerCapability>, 'attachCamera' | 'reportMotion' | 'getLocalLoad' | 'getLocalMetrics' | 'getAllCameraMetrics' | 'getLocalCameras' | 'getNativeCrop' | 'runStatelessStep'>;
91
91
  readonly plateGallery: Pick<InferProvider<typeof plateGalleryCapability>, 'getPlateMedia' | 'searchPlates' | 'suggestPlateClusters' | 'correctPlateText' | 'deletePlate' | 'listVehicles' | 'createVehicle' | 'renameVehicle' | 'deleteVehicle' | 'listVehicleSamples' | 'removeVehicleSample' | 'assignPlate' | 'unassignPlate' | 'assignPlates' | 'unassignPlates'>;
92
92
  readonly recordingArchive: Pick<InferProvider<typeof recordingArchiveCapability>, 'getAvailabilityBatch' | 'getDaysWithRecordingsBatch' | 'getStorageUsage' | 'listOpsLog' | 'pauseForStorageMigration' | 'resumeForStorageMigration' | 'refreshStorageLocationsForMigration' | 'startStorageMigrationMove' | 'getStorageMigrationMoveStatus' | 'cancelStorageMigrationMove' | 'relocateFootage' | 'listRelocateJobs' | 'getRelocateResidue' | 'reconcileLedgerAgainstDisk' | 'cancelRelocateJob' | 'planStorageRebalance' | 'startStorageRebalance' | 'getPlacement' | 'setDevicePlacement'>;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * ONE dictionary of human labels for the state words the rule editors show
3
+ * (R7, D690).
4
+ *
5
+ * A device-state gate offers the words the engine compares against —
6
+ * `armed_away`, `not_home`, `unlocking` — and both rule editors printed them
7
+ * verbatim. The words are the WIRE vocabulary and must stay what they are (a
8
+ * rule stores them); what the operator reads is a label, and two editors that
9
+ * each translate on their own are two editors that disagree. Both the admin UI
10
+ * and the viewer resolve through {@link stateLabel}.
11
+ *
12
+ * Keys are the raw values themselves, flat: the vocabularies are disjoint where
13
+ * they differ and agree where they overlap (`open` is the same word on a cover
14
+ * and on a contact). An OPEN vocabulary (a presence zone the operator named,
15
+ * a cover state a new integration invents) falls back to the raw word — never
16
+ * an exception, never an empty chip.
17
+ *
18
+ * Covered, and held to their sources by the spec: the alarm panel's states,
19
+ * the cover's, the lock's, the boolean readers' words
20
+ * (`DEVICE_STATE_READERS`), presence's canonical `home`/`not_home`, and the
21
+ * scene gate's verdicts and read modes.
22
+ */
23
+ /** A label in every locale both editors ship. */
24
+ export interface StateLabel {
25
+ readonly en: string;
26
+ readonly it: string;
27
+ }
28
+ /** The locales a {@link StateLabel} carries. */
29
+ export type StateLabelLocale = keyof StateLabel;
30
+ /** Every key the dictionary answers for, in a stable order. */
31
+ export declare const STATE_LABEL_KEYS: readonly ["disarmed", "armed_home", "armed_away", "armed_night", "armed_vacation", "armed_custom_bypass", "arming", "disarming", "pending", "triggered", "open", "opening", "closing", "closed", "stopped", "locked", "unlocked", "locking", "unlocking", "jammed", "on", "off", "home", "not_home", "matched", "diverged", "unknown", "latched", "live"];
32
+ /** A key {@link STATE_LABELS} answers for. */
33
+ export type StateLabelKey = (typeof STATE_LABEL_KEYS)[number];
34
+ export declare const STATE_LABELS: Readonly<Record<StateLabelKey, StateLabel>>;
35
+ /** Is `key` one the dictionary answers for? An own key only — never `toString`. */
36
+ export declare function isStateLabelKey(key: string): key is StateLabelKey;
37
+ /**
38
+ * The human label of a state word in `locale`, or the word itself when the
39
+ * dictionary does not know it. Never throws.
40
+ */
41
+ export declare function stateLabel(key: string, locale: StateLabelLocale): string;
package/dist/index.d.ts CHANGED
@@ -124,6 +124,7 @@ export { emitDownForOwnedCaps, ReadinessRegistry, ReadinessTimeoutError, readine
124
124
  export * from './stream-selection.js';
125
125
  export type { AgentAddonConfig, AgentPipelineSettings, CameraPipelineSettings, CameraStepOverridePatch, DeviceStepConfig, } from './types/agent-pipeline-settings.js';
126
126
  export * from './types/analytics.js';
127
+ export * from './types/appearance.js';
127
128
  export type { CameraPipelineConfig, PipelineTemplate as CameraPipelineTemplate, } from './types/camera-pipeline.js';
128
129
  export * from './types/config.js';
129
130
  export * from './types/detection.js';
@@ -232,7 +233,7 @@ export { STREAM_QUALITY_LABELS, streamQualityLabel, } from './interfaces/device-
232
233
  export * from './lifecycle/index.js';
233
234
  export { AUDIO_SCALE_EPOCH_ISO, AUDIO_SCALE_EPOCH_MS, type AudioScaleEra, audioScaleEraOf, G711_SCALE_CORRECTION_DB, type G711Law, ituDbfsFromPreEpoch, } from './audio/audio-scale-epoch.js';
234
235
  export { audioIsFailClosed, audioKindId, audioLabelChoices, audioModeOf, audioOrDefaults, isAudioLabelSelected, NC_AUDIO_CONFIRM_HITS_DEFAULT, NC_AUDIO_CONFIRM_HITS_MAX, NC_AUDIO_CONFIRM_HITS_MIN, NC_AUDIO_CONFIRM_WINDOW_MAX_SEC, NC_AUDIO_CONFIRM_WINDOW_MIN_SEC, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT, 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, type NcAudioLabelChoice, type NcAudioMode, type NcAudioPatch, normalizeAudioLabel, patchAudio, toggleAudioLabel, } from './notification/audio-condition.js';
235
- export { isBaseConditionKey, knownValues, NC_BASE_CONDITION_KEYS, type NcBaseConditionKey, pickerForCondition, type TaxonomyGroup, type TaxonomyOption, type TaxonomyPicker, } from './notification/condition-taxonomy.js';
236
+ export { isAudioClassName, isBaseConditionKey, knownValues, NC_BASE_CONDITION_KEYS, type NcBaseConditionKey, pickerForCondition, pickerForRuleClasses, type TaxonomyGroup, type TaxonomyOption, type TaxonomyPicker, } from './notification/condition-taxonomy.js';
236
237
  export { type PreparedAction, type PreparedAttachment, type PreparedNotification, prepareNotification, type ResolvedLevel, } from './notification/degrade-engine.js';
237
238
  export { htmlToText, markdownToHtmlLite, markdownToText, type NotificationFormat as NotificationBodyFormat, resolveFormat, textToHtml, transcodeBody, } from './notification/format-transcode.js';
238
239
  export { conditionExclusionReason, conditionVisibleForKind, defaultDeliveryForSection, droppedConditionsForKind, isAudioRule, isOccupancyRule, isSystemDelivery, isSystemRuleKind, kindsForDiscriminator, NC_AUDIO_SEED, NC_OCCUPANCY_DEFAULTS, NC_RULE_EDITOR_SECTION_ORDER, NC_RULE_KIND_SPECS, NC_RULE_SECTIONS, NC_SYSTEM_DELIVERY, NC_SYSTEM_RULE_KINDS, type NcDroppedCondition, type NcKindVisibilitySubject, type NcRuleEditorSection, type NcRuleEditorSectionKey, type NcRuleKind, type NcRuleKindSpec, type NcRuleOwningSectionKey, type NcRuleSection, type NcRuleSectionKey, type NcRuleSectionSubject, type NcRuleSeed, parseRuleSection, ruleEditorSectionsForKind, ruleKindOf, ruleKindSpec, ruleMatchesSection, ruleSection, ruleSectionOf, ruleSeedForSection, systemFamilyOfKind, systemRuleKindOf, } from './notification/rule-kinds.js';
@@ -245,6 +246,8 @@ export { describeSystemEventFamilyProblem, isSystemEventFamily, NC_SYSTEM_EVENT_
245
246
  export { describeSystemEventDeliveryProblem, isSystemEventSummaryRule, NC_SYSTEM_EVENT_SUMMARY_FAMILIES, type NcSummarySendTime, type NcSystemEventDeliveryProblem, type NcSystemEventDeliverySubject, scheduleForSendTimes, sendTimesOfSchedule, systemEventDeliveryProblems, systemEventSummaryScheduleOf, templateCarriesSummary, } from './notification/system-event-summary.js';
246
247
  export { NC_SERVER_PACKAGE_NAME, NC_UPDATE_EVENT_PACKAGE_NAMES, type NcInstalledPackageLike, type NcScopePickerItem, nodePickerItems, packagePickerItems, } from './notification/scope-picker-items.js';
247
248
  export type { TimelapseCadencePair, TimelapsePreviewMode, TimelapseRule, TimelapseRuleInput, TimelapseRulePatch, TimelapseTemplate, } from './notification/timelapse-rule.js';
249
+ export type { StateLabel, StateLabelKey, StateLabelLocale } from './i18n/state-labels.js';
250
+ export { isStateLabelKey, STATE_LABEL_KEYS, STATE_LABELS, stateLabel, } from './i18n/state-labels.js';
248
251
  export { assertTimelapseCadences, DEFAULT_TIMELAPSE_PREVIEW_TEXT, readTimelapseGeneratedAt, TIMELAPSE_DENSE_FLOOR_SEC, TimelapseRuleInputSchema, TimelapseRulePatchSchema, TimelapseRuleSchema, TimelapseTemplateSchema, } from './notification/timelapse-rule.js';
249
252
  export { CLUSTER_MODEL_SCOPED_STEPS, CLUSTER_MODEL_SECTION_ID, CLUSTER_STEP_SETTING_FIELDS, type ClusterModelScopedStep, type ClusterStepModels, type ClusterStepSettingField, type ClusterStepSettings, clusterModelSettingKey, clusterStepSettingFieldsFor, clusterStepSettingKey, DEFAULT_CLUSTER_STEP_MODELS, DEFAULT_CLUSTER_STEP_SETTINGS, DEFAULT_MIN_LANDMARK_FACE_SIZE_PX, type HydratedClusterSection, type HydratedClusterView, interpretStoredClusterModel, type InvalidClusterStepModelEntry, invalidClusterStepModelEntries, isClusterScopedStep, overlayClusterStepSettings, pickClusterStepModels, pickClusterStepSettings, pickInvalidClusterStepModels, readClusterStepModels, readClusterStepSettings, resolveClusterStepModelId, type StepModelScope, type StoredClusterModelInterpretation, } from './pipeline/cluster-model-scope.js';
250
253
  export { CAMERA_SENSORS_NOT_LOADED, CAMERA_SENSORS_SETTINGS_KEY, CAMERA_TRIGGER, type CameraSensorAttachment, CameraSensorAttachmentSchema, type CameraSensorRef, CameraSensorRefSchema, cameraSensorRefKey, type CameraSensorsConfig, CameraSensorsConfigSchema, type CameraSensorsMode, CameraSensorsModeSchema, type CameraSensorsNotForwarded, CameraSensorsNotForwardedSchema, type CameraSensorsStatus, CameraSensorsStatusSchema, MAX_CAMERA_SENSORS, type MotionTriggeredBy, type MotionTriggeredByReading, MotionTriggeredBySchema, readMotionTriggeredBy, } from './pipeline/camera-sensors.js';