@camstack/types 1.2.261 → 1.2.263

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/addon.js +1 -1
  2. package/dist/addon.mjs +1 -1
  3. package/dist/capabilities/audio-analyzer.cap.d.ts +22 -0
  4. package/dist/capabilities/device-extension.cap.d.ts +38 -0
  5. package/dist/capabilities/device-manager.cap.d.ts +16 -3
  6. package/dist/capabilities/doorbell.cap.d.ts +0 -1
  7. package/dist/capabilities/index.d.ts +2 -1
  8. package/dist/capabilities/llm-runtime.cap.d.ts +2 -2
  9. package/dist/capabilities/llm-shared.d.ts +3 -3
  10. package/dist/capabilities/llm.cap.d.ts +3 -3
  11. package/dist/capabilities/notification-rules.cap.d.ts +3 -3
  12. package/dist/capabilities/osd-manager.cap.d.ts +1 -1
  13. package/dist/capabilities/pipeline-analytics.cap.d.ts +38 -16
  14. package/dist/capabilities/pipeline-executor.cap.d.ts +1 -0
  15. package/dist/capabilities/schemas/detection-shared.d.ts +31 -0
  16. package/dist/capabilities/storage.cap.d.ts +1 -1
  17. package/dist/device-extension/slot-provider.d.ts +5 -3
  18. package/dist/generated/addon-api.d.ts +0 -42
  19. package/dist/generated/device-proxy.d.ts +1 -1
  20. package/dist/generated/extension-slots.d.ts +1 -0
  21. package/dist/generated/method-access-map.d.ts +1 -1
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.js +97 -46
  24. package/dist/index.mjs +95 -47
  25. package/dist/interfaces/storage-location-declaration.d.ts +1 -1
  26. package/dist/pipeline/step-format-runnable.d.ts +31 -0
  27. package/dist/{sleep-QxyLiUId.js → sleep-8K9gue-H.js} +2 -10
  28. package/dist/{sleep-BXv0ZcRa.mjs → sleep-DC-wdyeS.mjs} +2 -10
  29. package/dist/types/detection.d.ts +9 -0
  30. package/dist/types/io.d.ts +7 -0
  31. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sleep = require("./sleep-QxyLiUId.js");
2
+ const require_sleep = require("./sleep-8K9gue-H.js");
3
3
  const require_event_category = require("./event-category-BVfsrBYA.js");
4
4
  const require_err_msg = require("./err-msg-COpsHMw2.js");
5
5
  //#region src/generated/cap-input-defaults.ts
package/dist/addon.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { A as DeviceType, At as DATAPLANE_SECRET_HEADER, Dt as PEER_BYTES_STALL_MS, Et as PEER_BYTES_MAX_OUTSTANDING, G as readNodePin, J as ReadinessTimeoutError, L as expandCapMethods, Mt as DisposerChain, Nt as BaseAddon, Ot as PEER_BYTES_TICKET_TTL_MS, Pt as normalizeAddonInitResult, Rt as emitReadiness, S as DEVICE_CHILDREN_BATCH_MAX, T as describeCustomActions, Tt as PEER_BYTES_CHUNK_BYTES, W as nodePin, Z as scopeKey, a as asJsonObject, b as deviceOpsCapability, d as BOOT_RECOVERY_BACKOFF_MS, f as DEVICE_SCOPED_CAPS, h as createEventBusSliceSource, j as adminUiCapability, m as createDeviceProxy, p as isDeviceScopedCap, q as ReadinessRegistry, s as asString, t as sleep, u as parseJsonUnknown, x as viewerUiCapability } from "./sleep-BXv0ZcRa.mjs";
1
+ import { A as DeviceType, At as DATAPLANE_SECRET_HEADER, Dt as PEER_BYTES_STALL_MS, Et as PEER_BYTES_MAX_OUTSTANDING, G as readNodePin, J as ReadinessTimeoutError, L as expandCapMethods, Mt as DisposerChain, Nt as BaseAddon, Ot as PEER_BYTES_TICKET_TTL_MS, Pt as normalizeAddonInitResult, Rt as emitReadiness, S as DEVICE_CHILDREN_BATCH_MAX, T as describeCustomActions, Tt as PEER_BYTES_CHUNK_BYTES, W as nodePin, Z as scopeKey, a as asJsonObject, b as deviceOpsCapability, d as BOOT_RECOVERY_BACKOFF_MS, f as DEVICE_SCOPED_CAPS, h as createEventBusSliceSource, j as adminUiCapability, m as createDeviceProxy, p as isDeviceScopedCap, q as ReadinessRegistry, s as asString, t as sleep, u as parseJsonUnknown, x as viewerUiCapability } from "./sleep-DC-wdyeS.mjs";
2
2
  import { t as EventCategory } from "./event-category-BVDXG4tB.mjs";
3
3
  import { t as errMsg } from "./err-msg-IQTHeDzc.mjs";
4
4
  //#region src/generated/cap-input-defaults.ts
@@ -13,6 +13,17 @@ declare const AudioAnalysisResultSchema: z.ZodObject<{
13
13
  }, z.core.$strip>>>;
14
14
  inferenceMs: z.ZodNumber;
15
15
  }, z.core.$strip>>;
16
+ classifyOutcome: z.ZodDiscriminatedUnion<[z.ZodObject<{
17
+ state: z.ZodLiteral<"classified">;
18
+ }, z.core.$strip>, z.ZodObject<{
19
+ state: z.ZodLiteral<"not-classified">;
20
+ reason: z.ZodEnum<{
21
+ superseded: "superseded";
22
+ error: "error";
23
+ timeout: "timeout";
24
+ disposed: "disposed";
25
+ }>;
26
+ }, z.core.$strip>], "state">;
16
27
  timestamp: z.ZodNumber;
17
28
  }, z.core.$strip>;
18
29
  declare const AudioAnalysisSettingsSchema: z.ZodObject<{
@@ -142,6 +153,17 @@ export declare const audioAnalyzerCapability: {
142
153
  }, z.core.$strip>>>;
143
154
  inferenceMs: z.ZodNumber;
144
155
  }, z.core.$strip>>;
156
+ classifyOutcome: z.ZodDiscriminatedUnion<[z.ZodObject<{
157
+ state: z.ZodLiteral<"classified">;
158
+ }, z.core.$strip>, z.ZodObject<{
159
+ state: z.ZodLiteral<"not-classified">;
160
+ reason: z.ZodEnum<{
161
+ superseded: "superseded";
162
+ error: "error";
163
+ timeout: "timeout";
164
+ disposed: "disposed";
165
+ }>;
166
+ }, z.core.$strip>], "state">;
145
167
  timestamp: z.ZodNumber;
146
168
  }, z.core.$strip>>, "mutation">;
147
169
  readonly classify: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
@@ -123,6 +123,7 @@ export declare const ExtensionSlotStateSchema: z.ZodObject<{
123
123
  slot: z.ZodLiteral<"doorbell-source">;
124
124
  }, z.core.$strip>, z.ZodObject<{
125
125
  deviceIds: z.ZodArray<z.ZodNumber>;
126
+ trackedDeviceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
126
127
  slot: z.ZodLiteral<"linked-devices">;
127
128
  }, z.core.$strip>], "slot">;
128
129
  sources: z.ZodArray<z.ZodObject<{
@@ -136,6 +137,17 @@ export declare const ExtensionSlotStateSchema: z.ZodObject<{
136
137
  }>;
137
138
  detail: z.ZodOptional<z.ZodString>;
138
139
  }, z.core.$strip>>;
140
+ impliedSources: z.ZodOptional<z.ZodArray<z.ZodObject<{
141
+ deviceId: z.ZodNumber;
142
+ name: z.ZodNullable<z.ZodString>;
143
+ health: z.ZodEnum<{
144
+ ok: "ok";
145
+ missing: "missing";
146
+ foreign: "foreign";
147
+ unavailable: "unavailable";
148
+ }>;
149
+ detail: z.ZodOptional<z.ZodString>;
150
+ }, z.core.$strip>>>;
139
151
  }, z.core.$strip>;
140
152
  export type ExtensionSlotState = z.infer<typeof ExtensionSlotStateSchema>;
141
153
  /**
@@ -173,6 +185,7 @@ export declare const ExtensionSlotRowSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
173
185
  slot: z.ZodLiteral<"doorbell-source">;
174
186
  }, z.core.$strip>, z.ZodObject<{
175
187
  deviceIds: z.ZodArray<z.ZodNumber>;
188
+ trackedDeviceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
176
189
  slot: z.ZodLiteral<"linked-devices">;
177
190
  }, z.core.$strip>], "slot">;
178
191
  sources: z.ZodArray<z.ZodObject<{
@@ -186,6 +199,17 @@ export declare const ExtensionSlotRowSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
186
199
  }>;
187
200
  detail: z.ZodOptional<z.ZodString>;
188
201
  }, z.core.$strip>>;
202
+ impliedSources: z.ZodOptional<z.ZodArray<z.ZodObject<{
203
+ deviceId: z.ZodNumber;
204
+ name: z.ZodNullable<z.ZodString>;
205
+ health: z.ZodEnum<{
206
+ ok: "ok";
207
+ missing: "missing";
208
+ foreign: "foreign";
209
+ unavailable: "unavailable";
210
+ }>;
211
+ detail: z.ZodOptional<z.ZodString>;
212
+ }, z.core.$strip>>>;
189
213
  }, z.core.$strip>, z.ZodObject<{
190
214
  state: z.ZodLiteral<"unreachable">;
191
215
  addonId: z.ZodString;
@@ -244,6 +268,7 @@ export declare const ExtensionSetSlotInputSchema: z.ZodObject<{
244
268
  slot: z.ZodLiteral<"doorbell-source">;
245
269
  }, z.core.$strip>, z.ZodObject<{
246
270
  deviceIds: z.ZodArray<z.ZodNumber>;
271
+ trackedDeviceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
247
272
  slot: z.ZodLiteral<"linked-devices">;
248
273
  }, z.core.$strip>], "slot">;
249
274
  }, z.core.$strip>;
@@ -309,6 +334,7 @@ export declare const deviceExtensionCapability: {
309
334
  slot: z.ZodLiteral<"doorbell-source">;
310
335
  }, z.core.$strip>, z.ZodObject<{
311
336
  deviceIds: z.ZodArray<z.ZodNumber>;
337
+ trackedDeviceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
312
338
  slot: z.ZodLiteral<"linked-devices">;
313
339
  }, z.core.$strip>], "slot">;
314
340
  sources: z.ZodArray<z.ZodObject<{
@@ -322,6 +348,17 @@ export declare const deviceExtensionCapability: {
322
348
  }>;
323
349
  detail: z.ZodOptional<z.ZodString>;
324
350
  }, z.core.$strip>>;
351
+ impliedSources: z.ZodOptional<z.ZodArray<z.ZodObject<{
352
+ deviceId: z.ZodNumber;
353
+ name: z.ZodNullable<z.ZodString>;
354
+ health: z.ZodEnum<{
355
+ ok: "ok";
356
+ missing: "missing";
357
+ foreign: "foreign";
358
+ unavailable: "unavailable";
359
+ }>;
360
+ detail: z.ZodOptional<z.ZodString>;
361
+ }, z.core.$strip>>>;
325
362
  }, z.core.$strip>, z.ZodObject<{
326
363
  state: z.ZodLiteral<"unreachable">;
327
364
  addonId: z.ZodString;
@@ -355,6 +392,7 @@ export declare const deviceExtensionCapability: {
355
392
  slot: z.ZodLiteral<"doorbell-source">;
356
393
  }, z.core.$strip>, z.ZodObject<{
357
394
  deviceIds: z.ZodArray<z.ZodNumber>;
395
+ trackedDeviceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
358
396
  slot: z.ZodLiteral<"linked-devices">;
359
397
  }, z.core.$strip>], "slot">;
360
398
  }, z.core.$strip>, z.ZodObject<{
@@ -129,9 +129,21 @@ export type LinkedDevice = z.infer<typeof LinkedDeviceSchema>;
129
129
  * The `linked-devices` extension slot's editable value (D648): the operator's
130
130
  * pick list, exactly what `_linkedDeviceIds` persists. Tree children are NOT
131
131
  * in it — they are always linked and are not a pick.
132
+ *
133
+ * `trackedDeviceIds` (D655) is the tracked-event opt-in, exactly what
134
+ * `_linkedDeviceTrackedIds` persists: which linked devices materialize a
135
+ * synthetic tracked event on the camera. A read always carries it AS STORED
136
+ * (an absent key reads as `[]`, which is what the resolver makes of it —
137
+ * NONE). On a write it is optional: absent leaves the opt-in untouched, so a
138
+ * card built before D655 cannot erase it by saving the pick list. A present
139
+ * list REPLACES the opt-in; each id must be a pick, a device the camera links
140
+ * by structure (the row's `impliedSources`: tree children, a picked
141
+ * container's child) or already stored — so what was read can always be
142
+ * written back unchanged, and a NEW opt-in outside the linked set is refused.
132
143
  */
133
144
  export declare const LinkedDevicesSlotValueSchema: z.ZodObject<{
134
145
  deviceIds: z.ZodArray<z.ZodNumber>;
146
+ trackedDeviceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
135
147
  }, z.core.$strip>;
136
148
  export type LinkedDevicesSlotValue = z.infer<typeof LinkedDevicesSlotValueSchema>;
137
149
  /**
@@ -150,6 +162,7 @@ export declare const LINKED_DEVICES_SLOT: {
150
162
  readonly cardinality: "many";
151
163
  readonly value: z.ZodObject<{
152
164
  deviceIds: z.ZodArray<z.ZodNumber>;
165
+ trackedDeviceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
153
166
  }, z.core.$strip>;
154
167
  };
155
168
  /** One camera's resolved linked set, tagged with the camera it belongs to.
@@ -346,9 +359,9 @@ export declare const deviceManagerCapability: {
346
359
  readonly cardinality: "many";
347
360
  readonly value: z.ZodObject<{
348
361
  deviceIds: z.ZodArray<z.ZodNumber>;
362
+ trackedDeviceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
349
363
  }, z.core.$strip>;
350
364
  }];
351
- readonly exposesDeviceSettings: true;
352
365
  readonly methods: {
353
366
  /** Reserve (or re-resolve) a progressive numeric id for `(addonId, stableId)`.
354
367
  * Idempotent: returns the existing id if one is already persisted for the
@@ -1177,8 +1190,8 @@ export declare const deviceManagerCapability: {
1177
1190
  * operator's persisted pick list (`mode` is always `manual` since D356:
1178
1191
  * same-location devices are suggested by the picker, never linked on
1179
1192
  * their own). Excludes the camera itself; deduped. The list is written by
1180
- * the settings section or the `linked-devices` extension slot, both over
1181
- * `_linkedDeviceIds` (see the module docblock).
1193
+ * the `linked-devices` extension slot over `_linkedDeviceIds` (see the
1194
+ * module docblock).
1182
1195
  */
1183
1196
  readonly getLinkedDevices: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1184
1197
  deviceId: z.ZodNumber;
@@ -71,7 +71,6 @@ export declare const doorbellCapability: {
71
71
  readonly kind: "wrapper";
72
72
  readonly defaultActive: false;
73
73
  readonly deviceTypes: readonly [DeviceType.Button, DeviceType.Camera];
74
- readonly exposesDeviceSettings: true;
75
74
  readonly extensionSlots: readonly [{
76
75
  readonly id: "doorbell-source";
77
76
  readonly label: "Doorbell trigger devices";
@@ -91,7 +91,8 @@ export type { CameraAssignmentStatus, CameraAudioStatus, CameraBrokerProfile, Ca
91
91
  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';
92
92
  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';
93
93
  export { type DetectionSources, DetectionSourcesSchema, FrameLazyCountersSchema, FrameLazyMetricsSchema, MotionSourceEnum, MotionSourcesSchema, type NativeCropBbox, NativeCropBboxSchema, NativeCropResultSchema, OccupancyBurstRefusalSchema, ParkedFrameKindSchema, ParkedTrackFrameSchema, ParkRefusalSchema, ParkTrackFrameResultSchema, pipelineRunnerCapability, ReportMotionInputSchema, RunnerCameraConfigSchema, RunnerCameraDeviceUIFields, RunnerFrameSourceSchema, RunnerInferenceDeviceSchema, RunnerJumpStepProvisioningSchema, RunnerLocalLoadSchema, RunnerLocalMetricsSchema, } from './pipeline-runner.cap.js';
94
- export { AudioChunkInputSchema, AudioClassificationLabelSchema, AudioLevelSchema, BoundingBoxSchema, FrameInputSchema, SpatialDetectionSchema, } from './schemas/detection-shared.js';
94
+ export { AUDIO_NOT_CLASSIFIED_REASONS, AudioChunkInputSchema, AudioClassificationLabelSchema, AudioClassifyOutcomeSchema, AudioLevelSchema, BoundingBoxSchema, FrameInputSchema, SpatialDetectionSchema, } from './schemas/detection-shared.js';
95
+ export type { AudioClassifyOutcome, AudioNotClassifiedReason, } from './schemas/detection-shared.js';
95
96
  export { CameraMetricsSchema, CameraMetricsWithDeviceIdSchema, OrchestratorMetricsSchema, } from './schemas/orchestrator-metrics.js';
96
97
  export type { AudioStreamPick, CameraStream, CamProfile, CamStreamKind, DecodedAudioChunkWire, FrameHandleFormat, ProfileRtspEntry, ProfileSlot, ProfileSlotStatus, SubscribeAudioChunksInput, SubscribeAudioChunksResult, SubscribeFramesInput, SubscribeFramesResult, } from './schemas/streaming-shared.js';
97
98
  export { AudioChunkFormatSchema, AudioStreamPickSchema, BrokerStatsSchema, BrokerStatusSchema, CAM_PROFILE_ORDER, CameraStreamSchema, CamProfileSchema, CamStreamKindSchema, CamStreamResolutionSchema, DecodedAudioChunkSchema, DecodedFrameSchema, EncodedPacketSchema, FrameHandleFormatSchema, FrameHandleSchema, makeProfileBrokerId, makeSourceBrokerId, ProfileRtspEntrySchema, ProfileSlotSchema, ProfileSlotStatusSchema, parseProfileBrokerId, StreamSourceEntrySchema, StreamSourceSchema, SubscribeAudioChunksInputSchema, SubscribeAudioChunksResultSchema, SubscribeFramesInputSchema, SubscribeFramesResultSchema, selectAssignedProfileSlots, } from './schemas/streaming-shared.js';
@@ -426,10 +426,10 @@ export declare const llmRuntimeCapability: {
426
426
  }, z.core.$strip>, z.ZodObject<{
427
427
  ok: z.ZodLiteral<false>;
428
428
  code: z.ZodEnum<{
429
+ timeout: "timeout";
429
430
  refusal: "refusal";
430
431
  auth: "auth";
431
432
  unavailable: "unavailable";
432
- timeout: "timeout";
433
433
  "rate-limited": "rate-limited";
434
434
  "bad-request": "bad-request";
435
435
  "no-profile": "no-profile";
@@ -671,10 +671,10 @@ export declare const llmRuntimeCapability: {
671
671
  }, z.core.$strip>, z.ZodObject<{
672
672
  ok: z.ZodLiteral<false>;
673
673
  code: z.ZodEnum<{
674
+ timeout: "timeout";
674
675
  refusal: "refusal";
675
676
  auth: "auth";
676
677
  unavailable: "unavailable";
677
- timeout: "timeout";
678
678
  "rate-limited": "rate-limited";
679
679
  "bad-request": "bad-request";
680
680
  "no-profile": "no-profile";
@@ -14,10 +14,10 @@ export declare const LlmUsageSchema: z.ZodObject<{
14
14
  }, z.core.$strip>;
15
15
  export type LlmUsage = z.infer<typeof LlmUsageSchema>;
16
16
  export declare const LlmErrorCodeSchema: z.ZodEnum<{
17
+ timeout: "timeout";
17
18
  refusal: "refusal";
18
19
  auth: "auth";
19
20
  unavailable: "unavailable";
20
- timeout: "timeout";
21
21
  "rate-limited": "rate-limited";
22
22
  "bad-request": "bad-request";
23
23
  "no-profile": "no-profile";
@@ -53,10 +53,10 @@ export type LlmRefusalSource = z.infer<typeof LlmRefusalSourceSchema>;
53
53
  export declare const LlmGenerateErrSchema: z.ZodObject<{
54
54
  ok: z.ZodLiteral<false>;
55
55
  code: z.ZodEnum<{
56
+ timeout: "timeout";
56
57
  refusal: "refusal";
57
58
  auth: "auth";
58
59
  unavailable: "unavailable";
59
- timeout: "timeout";
60
60
  "rate-limited": "rate-limited";
61
61
  "bad-request": "bad-request";
62
62
  "no-profile": "no-profile";
@@ -83,10 +83,10 @@ export declare const LlmGenerateResultSchema: z.ZodDiscriminatedUnion<[z.ZodObje
83
83
  }, z.core.$strip>, z.ZodObject<{
84
84
  ok: z.ZodLiteral<false>;
85
85
  code: z.ZodEnum<{
86
+ timeout: "timeout";
86
87
  refusal: "refusal";
87
88
  auth: "auth";
88
89
  unavailable: "unavailable";
89
- timeout: "timeout";
90
90
  "rate-limited": "rate-limited";
91
91
  "bad-request": "bad-request";
92
92
  "no-profile": "no-profile";
@@ -336,10 +336,10 @@ export declare const llmCapability: {
336
336
  }, z.core.$strip>, z.ZodObject<{
337
337
  ok: z.ZodLiteral<false>;
338
338
  code: z.ZodEnum<{
339
+ timeout: "timeout";
339
340
  refusal: "refusal";
340
341
  auth: "auth";
341
342
  unavailable: "unavailable";
342
- timeout: "timeout";
343
343
  "rate-limited": "rate-limited";
344
344
  "bad-request": "bad-request";
345
345
  "no-profile": "no-profile";
@@ -387,10 +387,10 @@ export declare const llmCapability: {
387
387
  }, z.core.$strip>, z.ZodObject<{
388
388
  ok: z.ZodLiteral<false>;
389
389
  code: z.ZodEnum<{
390
+ timeout: "timeout";
390
391
  refusal: "refusal";
391
392
  auth: "auth";
392
393
  unavailable: "unavailable";
393
- timeout: "timeout";
394
394
  "rate-limited": "rate-limited";
395
395
  "bad-request": "bad-request";
396
396
  "no-profile": "no-profile";
@@ -726,10 +726,10 @@ export declare const llmCapability: {
726
726
  }, z.core.$strip>, z.ZodObject<{
727
727
  ok: z.ZodLiteral<false>;
728
728
  code: z.ZodEnum<{
729
+ timeout: "timeout";
729
730
  refusal: "refusal";
730
731
  auth: "auth";
731
732
  unavailable: "unavailable";
732
- timeout: "timeout";
733
733
  "rate-limited": "rate-limited";
734
734
  "bad-request": "bad-request";
735
735
  "no-profile": "no-profile";
@@ -320,7 +320,7 @@ export declare const NcOccupancyConditionSchema: z.ZodObject<{
320
320
  export type NcOccupancyCondition = z.infer<typeof NcOccupancyConditionSchema>;
321
321
  /**
322
322
  * The dBFS floor the analyzer reports on digital silence
323
- * (`audio-analyzer-provider.ts`: `dbfs = rms > 0 ? 20*log10(rms) : -96`).
323
+ * (`AudioAnalyzerProvider.analyseChunk`: `dbfs = rms > 0 ? 20*log10(rms) : -96`).
324
324
  *
325
325
  * It is the lower bound of {@link NcAudioConditionSchema.shape.dbThreshold} for
326
326
  * one reason worth stating out loud: **the scale is dBFS and it is
@@ -2573,8 +2573,8 @@ export declare const NcConditionDescriptorSchema: z.ZodObject<{
2573
2573
  id: z.ZodString;
2574
2574
  group: z.ZodEnum<{
2575
2575
  package: "package";
2576
- audio: "audio";
2577
2576
  class: "class";
2577
+ audio: "audio";
2578
2578
  label: "label";
2579
2579
  zones: "zones";
2580
2580
  device: "device";
@@ -5817,8 +5817,8 @@ export declare const notificationRulesCapability: {
5817
5817
  id: z.ZodString;
5818
5818
  group: z.ZodEnum<{
5819
5819
  package: "package";
5820
- audio: "audio";
5821
5820
  class: "class";
5821
+ audio: "audio";
5822
5822
  label: "label";
5823
5823
  zones: "zones";
5824
5824
  device: "device";
@@ -705,8 +705,8 @@ export declare const osdManagerCapability: {
705
705
  id: z.ZodString;
706
706
  group: z.ZodEnum<{
707
707
  package: "package";
708
- audio: "audio";
709
708
  class: "class";
709
+ audio: "audio";
710
710
  label: "label";
711
711
  zones: "zones";
712
712
  device: "device";
@@ -707,6 +707,17 @@ declare const AudioEventSchema: z.ZodObject<{
707
707
  originalClass: z.ZodOptional<z.ZodString>;
708
708
  score: z.ZodNumber;
709
709
  }, z.core.$strip>>;
710
+ classifyOutcome: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
711
+ state: z.ZodLiteral<"classified">;
712
+ }, z.core.$strip>, z.ZodObject<{
713
+ state: z.ZodLiteral<"not-classified">;
714
+ reason: z.ZodEnum<{
715
+ superseded: "superseded";
716
+ error: "error";
717
+ timeout: "timeout";
718
+ disposed: "disposed";
719
+ }>;
720
+ }, z.core.$strip>], "state">>;
710
721
  mediaUrl: z.ZodOptional<z.ZodString>;
711
722
  id: z.ZodNumber;
712
723
  deviceId: z.ZodNumber;
@@ -962,16 +973,16 @@ export declare const RetrainAnnotationSchema: z.ZodObject<{
962
973
  export type RetrainAnnotation = z.infer<typeof RetrainAnnotationSchema>;
963
974
  /** The write form — the server owns `id`, `createdAt` and the frame binding. */
964
975
  export declare const RetrainAnnotationDraftSchema: z.ZodObject<{
965
- kind: z.ZodEnum<{
966
- subject: "subject";
967
- model_error: "model_error";
968
- }>;
969
976
  bbox: z.ZodObject<{
970
977
  x: z.ZodNumber;
971
978
  y: z.ZodNumber;
972
979
  w: z.ZodNumber;
973
980
  h: z.ZodNumber;
974
981
  }, z.core.$strip>;
982
+ kind: z.ZodEnum<{
983
+ subject: "subject";
984
+ model_error: "model_error";
985
+ }>;
975
986
  label: z.ZodOptional<z.ZodString>;
976
987
  source: z.ZodEnum<{
977
988
  operator: "operator";
@@ -1184,16 +1195,16 @@ export declare const RetrainAssistResultSchema: z.ZodDiscriminatedUnion<[z.ZodOb
1184
1195
  stepId: z.ZodString;
1185
1196
  minScore: z.ZodNumber;
1186
1197
  proposals: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1187
- kind: z.ZodEnum<{
1188
- subject: "subject";
1189
- model_error: "model_error";
1190
- }>;
1191
1198
  bbox: z.ZodObject<{
1192
1199
  x: z.ZodNumber;
1193
1200
  y: z.ZodNumber;
1194
1201
  w: z.ZodNumber;
1195
1202
  h: z.ZodNumber;
1196
1203
  }, z.core.$strip>;
1204
+ kind: z.ZodEnum<{
1205
+ subject: "subject";
1206
+ model_error: "model_error";
1207
+ }>;
1197
1208
  label: z.ZodOptional<z.ZodString>;
1198
1209
  source: z.ZodEnum<{
1199
1210
  operator: "operator";
@@ -2633,6 +2644,17 @@ export declare const pipelineAnalyticsCapability: {
2633
2644
  originalClass: z.ZodOptional<z.ZodString>;
2634
2645
  score: z.ZodNumber;
2635
2646
  }, z.core.$strip>>;
2647
+ classifyOutcome: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2648
+ state: z.ZodLiteral<"classified">;
2649
+ }, z.core.$strip>, z.ZodObject<{
2650
+ state: z.ZodLiteral<"not-classified">;
2651
+ reason: z.ZodEnum<{
2652
+ superseded: "superseded";
2653
+ error: "error";
2654
+ timeout: "timeout";
2655
+ disposed: "disposed";
2656
+ }>;
2657
+ }, z.core.$strip>], "state">>;
2636
2658
  mediaUrl: z.ZodOptional<z.ZodString>;
2637
2659
  id: z.ZodNumber;
2638
2660
  deviceId: z.ZodNumber;
@@ -3806,16 +3828,16 @@ export declare const pipelineAnalyticsCapability: {
3806
3828
  stepId: z.ZodString;
3807
3829
  minScore: z.ZodNumber;
3808
3830
  proposals: z.ZodReadonly<z.ZodArray<z.ZodObject<{
3809
- kind: z.ZodEnum<{
3810
- subject: "subject";
3811
- model_error: "model_error";
3812
- }>;
3813
3831
  bbox: z.ZodObject<{
3814
3832
  x: z.ZodNumber;
3815
3833
  y: z.ZodNumber;
3816
3834
  w: z.ZodNumber;
3817
3835
  h: z.ZodNumber;
3818
3836
  }, z.core.$strip>;
3837
+ kind: z.ZodEnum<{
3838
+ subject: "subject";
3839
+ model_error: "model_error";
3840
+ }>;
3819
3841
  label: z.ZodOptional<z.ZodString>;
3820
3842
  source: z.ZodEnum<{
3821
3843
  operator: "operator";
@@ -3894,16 +3916,16 @@ export declare const pipelineAnalyticsCapability: {
3894
3916
  trackId: z.ZodString;
3895
3917
  frameId: z.ZodString;
3896
3918
  annotations: z.ZodArray<z.ZodObject<{
3897
- kind: z.ZodEnum<{
3898
- subject: "subject";
3899
- model_error: "model_error";
3900
- }>;
3901
3919
  bbox: z.ZodObject<{
3902
3920
  x: z.ZodNumber;
3903
3921
  y: z.ZodNumber;
3904
3922
  w: z.ZodNumber;
3905
3923
  h: z.ZodNumber;
3906
3924
  }, z.core.$strip>;
3925
+ kind: z.ZodEnum<{
3926
+ subject: "subject";
3927
+ model_error: "model_error";
3928
+ }>;
3907
3929
  label: z.ZodOptional<z.ZodString>;
3908
3930
  source: z.ZodEnum<{
3909
3931
  operator: "operator";
@@ -1125,6 +1125,7 @@ export declare const pipelineExecutorCapability: {
1125
1125
  readonly inferCached: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1126
1126
  stepId: z.ZodString;
1127
1127
  frameId: z.ZodNumber;
1128
+ modelId: z.ZodString;
1128
1129
  }, z.core.$strip>, z.ZodRecord<z.ZodString, z.ZodUnknown>, "mutation">;
1129
1130
  /**
1130
1131
  * Release a cached frame from the Python pool's memory.
@@ -73,3 +73,34 @@ export declare const AudioClassificationLabelSchema: z.ZodObject<{
73
73
  originalClass: z.ZodOptional<z.ZodString>;
74
74
  score: z.ZodNumber;
75
75
  }, z.core.$strip>;
76
+ /**
77
+ * Why an audio window reached no classifier (D660). `superseded` is the ONLY
78
+ * contention drop the analyzer makes: a camera's pending window replaced by
79
+ * its own newer one while the single pipeline served other cameras. `error`
80
+ * is an inference (or pipeline spawn) that failed, including a backend that
81
+ * exited or was disposed mid-inference; `timeout` is an inference that did not
82
+ * answer within the analyzer's bound (the backend is then killed and
83
+ * respawned); `disposed` is a window still queued when the analyzer shut down.
84
+ */
85
+ export declare const AUDIO_NOT_CLASSIFIED_REASONS: readonly ["superseded", "error", "timeout", "disposed"];
86
+ /**
87
+ * Did the classifier RUN on this window? (D660)
88
+ *
89
+ * `classified` with no labels means the model heard nothing above the
90
+ * camera's floor. `not-classified` means nobody listened — and until D660 the
91
+ * two were the same shape (`classification` absent), so a window the global
92
+ * busy gate threw away read downstream exactly like a quiet one (D393).
93
+ */
94
+ export declare const AudioClassifyOutcomeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
95
+ state: z.ZodLiteral<"classified">;
96
+ }, z.core.$strip>, z.ZodObject<{
97
+ state: z.ZodLiteral<"not-classified">;
98
+ reason: z.ZodEnum<{
99
+ superseded: "superseded";
100
+ error: "error";
101
+ timeout: "timeout";
102
+ disposed: "disposed";
103
+ }>;
104
+ }, z.core.$strip>], "state">;
105
+ export type AudioClassifyOutcome = z.infer<typeof AudioClassifyOutcomeSchema>;
106
+ export type AudioNotClassifiedReason = (typeof AUDIO_NOT_CLASSIFIED_REASONS)[number];
@@ -127,8 +127,8 @@ export declare const storageCapability: {
127
127
  }>>;
128
128
  defaultsTo: z.ZodOptional<z.ZodString>;
129
129
  defaultRoot: z.ZodOptional<z.ZodEnum<{
130
- media: "media";
131
130
  data: "data";
131
+ media: "media";
132
132
  backup: "backup";
133
133
  }>>;
134
134
  }, z.core.$strip>>>, import("./capability-definition.js").CapabilityMethodKind>;
@@ -9,9 +9,9 @@
9
9
  * `scripts/check-extension-slots.ts` counts to prove every declared slot has
10
10
  * exactly one owner.
11
11
  *
12
- * Nothing here persists. An owner's `set` goes through the same function its
13
- * pre-existing surface uses; this module only routes, checks the host type and
14
- * logs the write.
12
+ * Nothing here persists. An owner's `set` goes through the write path the
13
+ * owner already had for its store; this module only routes, checks the host
14
+ * type and logs the write.
15
15
  */
16
16
  import type { IScopedLogger } from '../interfaces/logging.js';
17
17
  import { type ExtensionCandidate, type ExtensionSetResult, type ExtensionSlotActivation, type ExtensionSlotSource, type IDeviceExtensionProvider } from '../capabilities/device-extension.cap.js';
@@ -29,6 +29,8 @@ export interface ExtensionSlotListing<Id extends ExtensionSlotId> {
29
29
  readonly activation: ExtensionSlotActivation | null;
30
30
  readonly value: ExtensionSlotValueOf<Id>;
31
31
  readonly sources: readonly ExtensionSlotSource[];
32
+ /** Linked by the owner's own structure, not picked (D655). Omit when none. */
33
+ readonly impliedSources?: readonly ExtensionSlotSource[];
32
34
  }
33
35
  /** The three functions an owner implements for one slot. */
34
36
  export interface ExtensionSlotImpl<Id extends ExtensionSlotId> {
@@ -2146,27 +2146,6 @@ export type AppRouter = TrpcCoreRouter<{
2146
2146
  errorShape: AugmentedErrorShape;
2147
2147
  transformer: true;
2148
2148
  }, TRPCDecorateCreateRouterOptions<{
2149
- getDeviceSettingsContribution: TRPCQueryProcedure<{
2150
- input: {
2151
- [x: string]: unknown;
2152
- } & z.input<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.getDeviceSettingsContribution.input>;
2153
- output: z.infer<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.getDeviceSettingsContribution.output>;
2154
- meta: object;
2155
- }>;
2156
- getDeviceLiveContribution: TRPCQueryProcedure<{
2157
- input: {
2158
- [x: string]: unknown;
2159
- } & z.input<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.getDeviceLiveContribution.input>;
2160
- output: z.infer<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.getDeviceLiveContribution.output>;
2161
- meta: object;
2162
- }>;
2163
- applyDeviceSettingsPatch: TRPCMutationProcedure<{
2164
- input: {
2165
- [x: string]: unknown;
2166
- } & z.input<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.applyDeviceSettingsPatch.input>;
2167
- output: z.infer<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.applyDeviceSettingsPatch.output>;
2168
- meta: object;
2169
- }>;
2170
2149
  allocateDeviceId: TRPCMutationProcedure<{
2171
2150
  input: {
2172
2151
  [x: string]: unknown;
@@ -3018,27 +2997,6 @@ export type AppRouter = TrpcCoreRouter<{
3018
2997
  output: z.infer<typeof DEVICE_STATUS_METHOD.getStatus.output>;
3019
2998
  meta: object;
3020
2999
  }>;
3021
- getDeviceSettingsContribution: TRPCQueryProcedure<{
3022
- input: {
3023
- [x: string]: unknown;
3024
- } & z.input<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.getDeviceSettingsContribution.input>;
3025
- output: z.infer<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.getDeviceSettingsContribution.output>;
3026
- meta: object;
3027
- }>;
3028
- getDeviceLiveContribution: TRPCQueryProcedure<{
3029
- input: {
3030
- [x: string]: unknown;
3031
- } & z.input<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.getDeviceLiveContribution.input>;
3032
- output: z.infer<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.getDeviceLiveContribution.output>;
3033
- meta: object;
3034
- }>;
3035
- applyDeviceSettingsPatch: TRPCMutationProcedure<{
3036
- input: {
3037
- [x: string]: unknown;
3038
- } & z.input<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.applyDeviceSettingsPatch.input>;
3039
- output: z.infer<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.applyDeviceSettingsPatch.output>;
3040
- meta: object;
3041
- }>;
3042
3000
  }>>;
3043
3001
  embeddingEncoder: TRPCBuiltRouter<{
3044
3002
  ctx: TrpcContext;
@@ -293,7 +293,7 @@ export interface DeviceProxy {
293
293
  readonly audioAnalyzer: Pick<InferDeviceProxyCap<typeof audioAnalyzerCapability>, 'detachDevice'>;
294
294
  readonly deviceAdoption: Pick<InferDeviceProxyCap<typeof deviceAdoptionCapability>, 'getStatus'>;
295
295
  readonly deviceExport: Pick<InferDeviceProxyCap<typeof deviceExportCapability>, 'getDeviceSettingsContribution' | 'getDeviceLiveContribution' | 'applyDeviceSettingsPatch'>;
296
- readonly deviceManager: Pick<InferDeviceProxyCap<typeof deviceManagerCapability>, 'loadConfig' | 'loadRuntimeState' | 'loadMeta' | 'setName' | 'setLocation' | 'setType' | 'setIntegrationId' | 'setLinkDeviceId' | 'setPrimaryChildEntityId' | 'setChildLayout' | 'setDisplay' | 'getWireableFields' | 'setRole' | 'applyInitialMeta' | 'setMetadata' | 'setDisabled' | 'getDevice' | 'getLinkedDevices' | 'getStreamSources' | 'getConfigSchema' | 'getSettingsSchema' | 'updateConfig' | 'enable' | 'disable' | 'remove' | 'getStreamProfileMap' | 'setStreamProfileMap' | 'probeStreams' | 'getBindings' | 'setWrapperActive' | 'getDeviceSettingsAggregate' | 'getDeviceLiveInfoAggregate' | 'getDeviceAggregate' | 'runDeviceAction' | 'updateDeviceField' | 'updateDeviceFieldsBatch' | 'testField' | 'getDeviceStatusAggregate' | 'getDeviceSettingsContribution' | 'getDeviceLiveContribution' | 'applyDeviceSettingsPatch'>;
296
+ readonly deviceManager: Pick<InferDeviceProxyCap<typeof deviceManagerCapability>, 'loadConfig' | 'loadRuntimeState' | 'loadMeta' | 'setName' | 'setLocation' | 'setType' | 'setIntegrationId' | 'setLinkDeviceId' | 'setPrimaryChildEntityId' | 'setChildLayout' | 'setDisplay' | 'getWireableFields' | 'setRole' | 'applyInitialMeta' | 'setMetadata' | 'setDisabled' | 'getDevice' | 'getLinkedDevices' | 'getStreamSources' | 'getConfigSchema' | 'getSettingsSchema' | 'updateConfig' | 'enable' | 'disable' | 'remove' | 'getStreamProfileMap' | 'setStreamProfileMap' | 'probeStreams' | 'getBindings' | 'setWrapperActive' | 'getDeviceSettingsAggregate' | 'getDeviceLiveInfoAggregate' | 'getDeviceAggregate' | 'runDeviceAction' | 'updateDeviceField' | 'updateDeviceFieldsBatch' | 'testField' | 'getDeviceStatusAggregate'>;
297
297
  readonly deviceState: Pick<InferDeviceProxyCap<typeof deviceStateCapability>, 'getSnapshot' | 'getCapSlice' | 'setCapSlice'>;
298
298
  readonly faceGallery: Pick<InferDeviceProxyCap<typeof faceGalleryCapability>, 'listRecentFaces' | 'getFaceByTrack'>;
299
299
  readonly networkQuality: Pick<InferDeviceProxyCap<typeof networkQualityCapability>, 'getDeviceStats' | 'reportClientStats'>;
@@ -32,6 +32,7 @@ export declare const ExtensionSlotValueSchema: z.ZodDiscriminatedUnion<[z.ZodObj
32
32
  slot: z.ZodLiteral<"doorbell-source">;
33
33
  }, z.core.$strip>, z.ZodObject<{
34
34
  deviceIds: z.ZodArray<z.ZodNumber>;
35
+ trackedDeviceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
35
36
  slot: z.ZodLiteral<"linked-devices">;
36
37
  }, z.core.$strip>], "slot">;
37
38
  export type ExtensionSlotValue = z.infer<typeof ExtensionSlotValueSchema>;
@@ -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: 1184 method paths across 161 capabilities.
9
+ * Coverage: 1178 method paths across 161 capabilities.
10
10
  */
11
11
  import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
12
12
  export interface MethodAccessRecord {