@camstack/types 1.2.274 → 1.2.276

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.
@@ -1,5 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { type Composition } from '../composition/composition.js';
3
+ import { DeviceType } from '../device/device-type.js';
3
4
  import { type InferProvider } from './capability-definition.js';
4
5
  /**
5
6
  * core-blocks — user-authored TypeScript, stored in the kernel and executed in
@@ -131,7 +132,7 @@ export declare const CoreBlockSourceSchema: z.ZodDiscriminatedUnion<[z.ZodObject
131
132
  composition: z.ZodObject<{
132
133
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
133
134
  kind: z.ZodLiteral<"new">;
134
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
135
+ type: z.ZodEnum<typeof DeviceType>;
135
136
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
136
137
  }, z.core.$strip>, z.ZodObject<{
137
138
  kind: z.ZodLiteral<"existing">;
@@ -240,7 +241,7 @@ export declare const CompositionBlockInputSchema: z.ZodObject<{
240
241
  composition: z.ZodObject<{
241
242
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
242
243
  kind: z.ZodLiteral<"new">;
243
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
244
+ type: z.ZodEnum<typeof DeviceType>;
244
245
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
245
246
  }, z.core.$strip>, z.ZodObject<{
246
247
  kind: z.ZodLiteral<"existing">;
@@ -401,7 +402,7 @@ export declare const CoreBlockSchema: z.ZodObject<{
401
402
  composition: z.ZodObject<{
402
403
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
403
404
  kind: z.ZodLiteral<"new">;
404
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
405
+ type: z.ZodEnum<typeof DeviceType>;
405
406
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
406
407
  }, z.core.$strip>, z.ZodObject<{
407
408
  kind: z.ZodLiteral<"existing">;
@@ -601,7 +602,7 @@ export declare const CompositionViewSchema: z.ZodObject<{
601
602
  composition: z.ZodObject<{
602
603
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
603
604
  kind: z.ZodLiteral<"new">;
604
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
605
+ type: z.ZodEnum<typeof DeviceType>;
605
606
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
606
607
  }, z.core.$strip>, z.ZodObject<{
607
608
  kind: z.ZodLiteral<"existing">;
@@ -799,7 +800,7 @@ export declare const CompositionListReadSchema: z.ZodDiscriminatedUnion<[z.ZodOb
799
800
  composition: z.ZodObject<{
800
801
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
801
802
  kind: z.ZodLiteral<"new">;
802
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
803
+ type: z.ZodEnum<typeof DeviceType>;
803
804
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
804
805
  }, z.core.$strip>, z.ZodObject<{
805
806
  kind: z.ZodLiteral<"existing">;
@@ -1001,7 +1002,7 @@ export declare const CompositionGetReadSchema: z.ZodDiscriminatedUnion<[z.ZodObj
1001
1002
  composition: z.ZodObject<{
1002
1003
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
1003
1004
  kind: z.ZodLiteral<"new">;
1004
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
1005
+ type: z.ZodEnum<typeof DeviceType>;
1005
1006
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
1006
1007
  }, z.core.$strip>, z.ZodObject<{
1007
1008
  kind: z.ZodLiteral<"existing">;
@@ -1204,7 +1205,7 @@ export declare const CompositionCustomizationReadSchema: z.ZodDiscriminatedUnion
1204
1205
  composition: z.ZodObject<{
1205
1206
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
1206
1207
  kind: z.ZodLiteral<"new">;
1207
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
1208
+ type: z.ZodEnum<typeof DeviceType>;
1208
1209
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
1209
1210
  }, z.core.$strip>, z.ZodObject<{
1210
1211
  kind: z.ZodLiteral<"existing">;
@@ -1417,7 +1418,7 @@ export declare const coreBlocksCapability: {
1417
1418
  composition: z.ZodObject<{
1418
1419
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
1419
1420
  kind: z.ZodLiteral<"new">;
1420
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
1421
+ type: z.ZodEnum<typeof DeviceType>;
1421
1422
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
1422
1423
  }, z.core.$strip>, z.ZodObject<{
1423
1424
  kind: z.ZodLiteral<"existing">;
@@ -1580,7 +1581,7 @@ export declare const coreBlocksCapability: {
1580
1581
  composition: z.ZodObject<{
1581
1582
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
1582
1583
  kind: z.ZodLiteral<"new">;
1583
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
1584
+ type: z.ZodEnum<typeof DeviceType>;
1584
1585
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
1585
1586
  }, z.core.$strip>, z.ZodObject<{
1586
1587
  kind: z.ZodLiteral<"existing">;
@@ -1754,7 +1755,7 @@ export declare const coreBlocksCapability: {
1754
1755
  composition: z.ZodObject<{
1755
1756
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
1756
1757
  kind: z.ZodLiteral<"new">;
1757
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
1758
+ type: z.ZodEnum<typeof DeviceType>;
1758
1759
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
1759
1760
  }, z.core.$strip>, z.ZodObject<{
1760
1761
  kind: z.ZodLiteral<"existing">;
@@ -1926,7 +1927,7 @@ export declare const coreBlocksCapability: {
1926
1927
  composition: z.ZodObject<{
1927
1928
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
1928
1929
  kind: z.ZodLiteral<"new">;
1929
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
1930
+ type: z.ZodEnum<typeof DeviceType>;
1930
1931
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
1931
1932
  }, z.core.$strip>, z.ZodObject<{
1932
1933
  kind: z.ZodLiteral<"existing">;
@@ -2097,7 +2098,7 @@ export declare const coreBlocksCapability: {
2097
2098
  composition: z.ZodObject<{
2098
2099
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
2099
2100
  kind: z.ZodLiteral<"new">;
2100
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
2101
+ type: z.ZodEnum<typeof DeviceType>;
2101
2102
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
2102
2103
  }, z.core.$strip>, z.ZodObject<{
2103
2104
  kind: z.ZodLiteral<"existing">;
@@ -2273,7 +2274,7 @@ export declare const coreBlocksCapability: {
2273
2274
  composition: z.ZodObject<{
2274
2275
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
2275
2276
  kind: z.ZodLiteral<"new">;
2276
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
2277
+ type: z.ZodEnum<typeof DeviceType>;
2277
2278
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
2278
2279
  }, z.core.$strip>, z.ZodObject<{
2279
2280
  kind: z.ZodLiteral<"existing">;
@@ -2407,7 +2408,7 @@ export declare const coreBlocksCapability: {
2407
2408
  composition: z.ZodObject<{
2408
2409
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
2409
2410
  kind: z.ZodLiteral<"new">;
2410
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
2411
+ type: z.ZodEnum<typeof DeviceType>;
2411
2412
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
2412
2413
  }, z.core.$strip>, z.ZodObject<{
2413
2414
  kind: z.ZodLiteral<"existing">;
@@ -2566,7 +2567,7 @@ export declare const coreBlocksCapability: {
2566
2567
  composition: z.ZodObject<{
2567
2568
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
2568
2569
  kind: z.ZodLiteral<"new">;
2569
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
2570
+ type: z.ZodEnum<typeof DeviceType>;
2570
2571
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
2571
2572
  }, z.core.$strip>, z.ZodObject<{
2572
2573
  kind: z.ZodLiteral<"existing">;
@@ -2677,7 +2678,7 @@ export declare const coreBlocksCapability: {
2677
2678
  composition: z.ZodOptional<z.ZodObject<{
2678
2679
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
2679
2680
  kind: z.ZodLiteral<"new">;
2680
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
2681
+ type: z.ZodEnum<typeof DeviceType>;
2681
2682
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
2682
2683
  }, z.core.$strip>, z.ZodObject<{
2683
2684
  kind: z.ZodLiteral<"existing">;
@@ -2836,7 +2837,7 @@ export declare const coreBlocksCapability: {
2836
2837
  composition: z.ZodObject<{
2837
2838
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
2838
2839
  kind: z.ZodLiteral<"new">;
2839
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
2840
+ type: z.ZodEnum<typeof DeviceType>;
2840
2841
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
2841
2842
  }, z.core.$strip>, z.ZodObject<{
2842
2843
  kind: z.ZodLiteral<"existing">;
@@ -3004,7 +3005,7 @@ export declare const coreBlocksCapability: {
3004
3005
  composition: z.ZodObject<{
3005
3006
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
3006
3007
  kind: z.ZodLiteral<"new">;
3007
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
3008
+ type: z.ZodEnum<typeof DeviceType>;
3008
3009
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
3009
3010
  }, z.core.$strip>, z.ZodObject<{
3010
3011
  kind: z.ZodLiteral<"existing">;
@@ -3205,7 +3206,7 @@ export declare const coreBlocksCapability: {
3205
3206
  composition: z.ZodObject<{
3206
3207
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
3207
3208
  kind: z.ZodLiteral<"new">;
3208
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
3209
+ type: z.ZodEnum<typeof DeviceType>;
3209
3210
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
3210
3211
  }, z.core.$strip>, z.ZodObject<{
3211
3212
  kind: z.ZodLiteral<"existing">;
@@ -3413,7 +3414,7 @@ export declare const coreBlocksCapability: {
3413
3414
  composition: z.ZodObject<{
3414
3415
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
3415
3416
  kind: z.ZodLiteral<"new">;
3416
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
3417
+ type: z.ZodEnum<typeof DeviceType>;
3417
3418
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
3418
3419
  }, z.core.$strip>, z.ZodObject<{
3419
3420
  kind: z.ZodLiteral<"existing">;
@@ -3546,6 +3547,36 @@ export declare const coreBlocksCapability: {
3546
3547
  state: z.ZodLiteral<"not-loaded">;
3547
3548
  reason: z.ZodString;
3548
3549
  }, z.core.$strip>], "state">, import("./capability-definition.js").CapabilityMethodKind>;
3550
+ /**
3551
+ * The capabilities a composition may BUILD on a device of `deviceType`
3552
+ * (a new device, or added to an existing one), with their fields — the
3553
+ * editor's feature list and the presets' availability (G2, D676). Built
3554
+ * from the validator's own blockers; a replace of a BOUND cap is not
3555
+ * listed here (the device's bindings say what it has).
3556
+ */
3557
+ readonly listComposableCaps: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
3558
+ deviceType: z.ZodEnum<typeof DeviceType>;
3559
+ }, z.core.$strip>, z.ZodObject<{
3560
+ caps: z.ZodArray<z.ZodObject<{
3561
+ cap: z.ZodString;
3562
+ fields: z.ZodArray<z.ZodObject<{
3563
+ path: z.ZodString;
3564
+ kind: z.ZodEnum<{
3565
+ string: "string";
3566
+ number: "number";
3567
+ boolean: "boolean";
3568
+ enum: "enum";
3569
+ }>;
3570
+ nullable: z.ZodBoolean;
3571
+ required: z.ZodBoolean;
3572
+ enumValues: z.ZodOptional<z.ZodArray<z.ZodString>>;
3573
+ }, z.core.$strip>>;
3574
+ itemArray: z.ZodOptional<z.ZodObject<{
3575
+ path: z.ZodString;
3576
+ keyField: z.ZodString;
3577
+ }, z.core.$strip>>;
3578
+ }, z.core.$strip>>;
3579
+ }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
3549
3580
  /**
3550
3581
  * Validate without saving — the same verdict the save reaches. A mutation
3551
3582
  * for its body size; it writes nothing, so its access is `view`.
@@ -3554,7 +3585,7 @@ export declare const coreBlocksCapability: {
3554
3585
  composition: z.ZodObject<{
3555
3586
  target: z.ZodDiscriminatedUnion<[z.ZodObject<{
3556
3587
  kind: z.ZodLiteral<"new">;
3557
- type: z.ZodEnum<typeof import("../index.js").DeviceType>;
3588
+ type: z.ZodEnum<typeof DeviceType>;
3558
3589
  role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
3559
3590
  }, z.core.$strip>, z.ZodObject<{
3560
3591
  kind: z.ZodLiteral<"existing">;
@@ -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, } 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, } 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, 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';
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';
@@ -694,6 +694,24 @@ declare const NodeInferenceDevicesSchema: z.ZodObject<{
694
694
  * Strictly the control plane: never sees a frame, never calls inference,
695
695
  * never drains queues. The runner does that work locally on each agent.
696
696
  */
697
+ /**
698
+ * The input of `setCameraSensors` (G5, D676): the ONE typed write path of a
699
+ * camera's attached sensors (D672). `config: null` removes the attachment —
700
+ * the camera reads `not-configured` again, never `unreadable`.
701
+ */
702
+ export declare const SetCameraSensorsInputSchema: z.ZodObject<{
703
+ deviceId: z.ZodNumber;
704
+ config: z.ZodNullable<z.ZodObject<{
705
+ mode: z.ZodEnum<{
706
+ "in-addition": "in-addition";
707
+ }>;
708
+ sensors: z.ZodArray<z.ZodObject<{
709
+ addonId: z.ZodString;
710
+ stableId: z.ZodString;
711
+ }, z.core.$strip>>;
712
+ }, z.core.$strip>>;
713
+ }, z.core.$strip>;
714
+ export type SetCameraSensorsInput = z.infer<typeof SetCameraSensorsInputSchema>;
697
715
  export declare const pipelineOrchestratorCapability: {
698
716
  readonly name: "pipeline-orchestrator";
699
717
  readonly scope: "system";
@@ -1844,6 +1862,28 @@ export declare const pipelineOrchestratorCapability: {
1844
1862
  }, z.core.$strip>>>;
1845
1863
  fetchedAt: z.ZodNumber;
1846
1864
  }, z.core.$strip>>>, import("./capability-definition.js").CapabilityMethodKind>;
1865
+ /**
1866
+ * Attach sensors to a camera, or detach them with `config: null` (D672
1867
+ * configuration, G5/D676). Written to the orchestrator's per-device store
1868
+ * under the same key `applyDeviceSettingsPatch` writes, and announced as a
1869
+ * settings change so the camera-sensors bridge refreshes. Refused by name
1870
+ * — nothing written — for a device that cannot be read, does not exist,
1871
+ * is not a camera, or names itself as its own sensor.
1872
+ */
1873
+ readonly setCameraSensors: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1874
+ deviceId: z.ZodNumber;
1875
+ config: z.ZodNullable<z.ZodObject<{
1876
+ mode: z.ZodEnum<{
1877
+ "in-addition": "in-addition";
1878
+ }>;
1879
+ sensors: z.ZodArray<z.ZodObject<{
1880
+ addonId: z.ZodString;
1881
+ stableId: z.ZodString;
1882
+ }, z.core.$strip>>;
1883
+ }, z.core.$strip>>;
1884
+ }, z.core.$strip>, z.ZodObject<{
1885
+ success: z.ZodLiteral<true>;
1886
+ }, z.core.$strip>, "mutation">;
1847
1887
  /**
1848
1888
  * Disk-wins fleet reconcile after a recordings wipe. Starts the walk in
1849
1889
  * the addon process and returns immediately with the job snapshot — the
@@ -0,0 +1,70 @@
1
+ /**
2
+ * What a composition may BUILD on a device type (G2, D676): the caps a new
3
+ * device of that type, or an existing one that lacks them, can be given. The
4
+ * blockers are the validator's own refusal codes, and a spec compares this
5
+ * listing with `planComposition` for every capability — the editor can never
6
+ * offer a feature the save would refuse for the same reason.
7
+ */
8
+ import { z } from 'zod';
9
+ import type { CapabilityDefinition } from '../capabilities/capability-definition.js';
10
+ import type { DeviceType } from '../device/device-type.js';
11
+ import { type CompositionProblemCode } from './composition-report.js';
12
+ export declare const ComposableFieldSchema: z.ZodObject<{
13
+ path: z.ZodString;
14
+ kind: z.ZodEnum<{
15
+ string: "string";
16
+ number: "number";
17
+ boolean: "boolean";
18
+ enum: "enum";
19
+ }>;
20
+ nullable: z.ZodBoolean;
21
+ required: z.ZodBoolean;
22
+ enumValues: z.ZodOptional<z.ZodArray<z.ZodString>>;
23
+ }, z.core.$strip>;
24
+ export type ComposableField = z.infer<typeof ComposableFieldSchema>;
25
+ export declare const ComposableCapabilitySchema: z.ZodObject<{
26
+ cap: z.ZodString;
27
+ fields: z.ZodArray<z.ZodObject<{
28
+ path: z.ZodString;
29
+ kind: z.ZodEnum<{
30
+ string: "string";
31
+ number: "number";
32
+ boolean: "boolean";
33
+ enum: "enum";
34
+ }>;
35
+ nullable: z.ZodBoolean;
36
+ required: z.ZodBoolean;
37
+ enumValues: z.ZodOptional<z.ZodArray<z.ZodString>>;
38
+ }, z.core.$strip>>;
39
+ itemArray: z.ZodOptional<z.ZodObject<{
40
+ path: z.ZodString;
41
+ keyField: z.ZodString;
42
+ }, z.core.$strip>>;
43
+ }, z.core.$strip>;
44
+ export type ComposableCapability = z.infer<typeof ComposableCapabilitySchema>;
45
+ export declare const ComposableCapabilitiesSchema: z.ZodObject<{
46
+ caps: z.ZodArray<z.ZodObject<{
47
+ cap: z.ZodString;
48
+ fields: z.ZodArray<z.ZodObject<{
49
+ path: z.ZodString;
50
+ kind: z.ZodEnum<{
51
+ string: "string";
52
+ number: "number";
53
+ boolean: "boolean";
54
+ enum: "enum";
55
+ }>;
56
+ nullable: z.ZodBoolean;
57
+ required: z.ZodBoolean;
58
+ enumValues: z.ZodOptional<z.ZodArray<z.ZodString>>;
59
+ }, z.core.$strip>>;
60
+ itemArray: z.ZodOptional<z.ZodObject<{
61
+ path: z.ZodString;
62
+ keyField: z.ZodString;
63
+ }, z.core.$strip>>;
64
+ }, z.core.$strip>>;
65
+ }, z.core.$strip>;
66
+ export type ComposableCapabilities = z.infer<typeof ComposableCapabilitiesSchema>;
67
+ /** Why a cap cannot be BUILT (new device, or added to an existing one) on `deviceType`; [] = it can. */
68
+ export declare function builtCapabilityBlockers(def: CapabilityDefinition, deviceType: DeviceType): readonly CompositionProblemCode[];
69
+ /** Every cap with no blocker, sorted by name. */
70
+ export declare function describeComposableCaps(defs: readonly CapabilityDefinition[], deviceType: DeviceType): readonly ComposableCapability[];
@@ -1,34 +1,3 @@
1
- /**
2
- * One composed field, evaluated from what its sources say NOW (D659).
3
- *
4
- * Pure. The composer calls it on every source change, and the slice-5 editor
5
- * will call it for its live preview, so both see the same answer.
6
- *
7
- * The rules (spec §2):
8
- * - a source that is offline or unreadable keeps its last value and is marked
9
- * STALE; the field is stale and keeps computing (D49);
10
- * - a source that is GONE makes the field UNAVAILABLE, `fatal`, and never a
11
- * plausible number (D393);
12
- * - a source that is unavailable but NOT gone (e.g. a cap unregistered at
13
- * runtime, R7b) makes the field UNAVAILABLE, non-fatal, `value: null`: it
14
- * may come back on its own, no block failure is raised for it;
15
- * - an expression that fails on a value makes the field unavailable for that
16
- * value, and NOT fatal: the next value may compute.
17
- *
18
- * `confirmed` (D663, D49): whether a NON-fatal unavailability is an ANSWER — a
19
- * cap the provider unregistered and a re-read agreed, a field the source
20
- * reported without, an expression that failed on a value — or only the
21
- * absence of one (a failed read, a first or empty read, a source not tracked
22
- * yet). Only a confirmed unavailability may hand a `release`-mode field back
23
- * to the native provider; an unconfirmed one holds it on its last value.
24
- * Absent means NOT confirmed. Fatal is always confirmed.
25
- *
26
- * When an expression has more than one unavailable binding, a FATAL one always
27
- * wins the outcome, regardless of position: every binding is scanned before
28
- * the field is judged, so an earlier non-fatal binding (e.g. a cap that is
29
- * momentarily unregistered) can never hide a later fatal one (a deleted
30
- * source) behind an early return.
31
- */
32
1
  import type { ExpressionValue } from '../expression/ast.js';
33
2
  import { type StatefulExpressionMemory } from '../expression/expression-source.js';
34
3
  import { type CompositionFieldRead, type CompositionFieldSource } from './composition.js';
@@ -2,6 +2,7 @@
2
2
  * Compositions: composed devices (D659). This is the module barrel; leaf files
3
3
  * inside @camstack/types import the deep modules, never this file.
4
4
  */
5
+ export * from './composable-caps.js';
5
6
  export * from './composition.js';
6
7
  export * from './composition-events.js';
7
8
  export * from './composition-graph.js';
@@ -10,5 +11,6 @@ export * from './composition-report.js';
10
11
  export * from './evaluate-field.js';
11
12
  export * from './examples.js';
12
13
  export * from './expression-kinds.js';
14
+ export * from './presets/doorbell-feature.js';
13
15
  export * from './state-fields.js';
14
16
  export * from './validate-composition.js';
@@ -0,0 +1,20 @@
1
+ import type { CompositionFieldsFeature, CompositionSourceRef } from '../composition.js';
2
+ /** A rise closer than this to the previous one is the same press (D671). */
3
+ export declare const DOORBELL_RISE_DEBOUNCE_MS = 2000;
4
+ /** One source cap of one device that rings: its level field and its transition time. */
5
+ export interface DoorbellFeatureSource {
6
+ readonly source: CompositionSourceRef;
7
+ readonly cap: string;
8
+ readonly activeField: string;
9
+ readonly changedAtField: string;
10
+ }
11
+ export interface DoorbellFeatureInput {
12
+ /** The device the doorbell cap lands on — `pressCountSinceStart` reads its own `lastPressedAt`. */
13
+ readonly camera: CompositionSourceRef;
14
+ readonly sources: readonly DoorbellFeatureSource[];
15
+ readonly enabled: boolean;
16
+ }
17
+ /** Every source cap of `source` that `SOURCE_CAP_ACTIVE_FIELD` knows AND the device has bound. */
18
+ export declare function doorbellFeatureSources(source: CompositionSourceRef, boundCaps: readonly string[]): readonly DoorbellFeatureSource[];
19
+ /** The D671 feature, byte for byte what the migration writes. Throws on zero sources. */
20
+ export declare function buildDoorbellCompositionFeature(input: DoorbellFeatureInput): CompositionFieldsFeature;