@camstack/types 1.0.3 → 1.0.5

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.
@@ -173,6 +173,271 @@ declare const GlobalMetricsSchema: z.ZodObject<{
173
173
  * capability providers.
174
174
  */
175
175
  declare const CapabilityBindingsSchema: z.ZodRecord<z.ZodString, z.ZodString>;
176
+ /** Stream entry surfaced from the stream-catalog for one device. */
177
+ declare const CameraSourceStreamSchema: z.ZodObject<{
178
+ camStreamId: z.ZodString;
179
+ codec: z.ZodString;
180
+ width: z.ZodNumber;
181
+ height: z.ZodNumber;
182
+ fps: z.ZodNumber;
183
+ kind: z.ZodString;
184
+ }, z.core.$strip>;
185
+ /** Source block — always present; derives from the stream catalog. */
186
+ declare const CameraSourceStatusSchema: z.ZodObject<{
187
+ streams: z.ZodReadonly<z.ZodArray<z.ZodObject<{
188
+ camStreamId: z.ZodString;
189
+ codec: z.ZodString;
190
+ width: z.ZodNumber;
191
+ height: z.ZodNumber;
192
+ fps: z.ZodNumber;
193
+ kind: z.ZodString;
194
+ }, z.core.$strip>>>;
195
+ }, z.core.$strip>;
196
+ /** Assignment block — always present (orchestrator-local, no remote call). */
197
+ declare const CameraAssignmentStatusSchema: z.ZodObject<{
198
+ detectionNodeId: z.ZodNullable<z.ZodString>;
199
+ decoderNodeId: z.ZodNullable<z.ZodString>;
200
+ audioNodeId: z.ZodNullable<z.ZodString>;
201
+ pinned: z.ZodObject<{
202
+ detection: z.ZodBoolean;
203
+ decoder: z.ZodBoolean;
204
+ audio: z.ZodBoolean;
205
+ }, z.core.$strip>;
206
+ reasons: z.ZodObject<{
207
+ detection: z.ZodOptional<z.ZodString>;
208
+ decoder: z.ZodOptional<z.ZodString>;
209
+ audio: z.ZodOptional<z.ZodString>;
210
+ }, z.core.$strip>;
211
+ }, z.core.$strip>;
212
+ /** Broker profile slot entry within the broker block. */
213
+ declare const CameraBrokerProfileSchema: z.ZodObject<{
214
+ profile: z.ZodString;
215
+ status: z.ZodString;
216
+ codec: z.ZodString;
217
+ width: z.ZodNumber;
218
+ height: z.ZodNumber;
219
+ subscribers: z.ZodNumber;
220
+ inFps: z.ZodNumber;
221
+ outFps: z.ZodNumber;
222
+ }, z.core.$strip>;
223
+ /** Broker block — null when the broker stage is unreachable or inactive. */
224
+ declare const CameraBrokerStatusSchema: z.ZodObject<{
225
+ profiles: z.ZodReadonly<z.ZodArray<z.ZodObject<{
226
+ profile: z.ZodString;
227
+ status: z.ZodString;
228
+ codec: z.ZodString;
229
+ width: z.ZodNumber;
230
+ height: z.ZodNumber;
231
+ subscribers: z.ZodNumber;
232
+ inFps: z.ZodNumber;
233
+ outFps: z.ZodNumber;
234
+ }, z.core.$strip>>>;
235
+ webrtcSessions: z.ZodNumber;
236
+ rtspRestream: z.ZodBoolean;
237
+ }, z.core.$strip>;
238
+ /** Shared-memory ring statistics within the decoder block. */
239
+ declare const CameraDecoderShmSchema: z.ZodObject<{
240
+ framesWritten: z.ZodNumber;
241
+ getFrameHits: z.ZodNumber;
242
+ getFrameMisses: z.ZodNumber;
243
+ budgetMb: z.ZodNumber;
244
+ }, z.core.$strip>;
245
+ /** Decoder block — null when the decoder stage is unreachable or inactive. */
246
+ declare const CameraDecoderStatusSchema: z.ZodObject<{
247
+ nodeId: z.ZodString;
248
+ formats: z.ZodReadonly<z.ZodArray<z.ZodString>>;
249
+ sessionCount: z.ZodNumber;
250
+ shm: z.ZodObject<{
251
+ framesWritten: z.ZodNumber;
252
+ getFrameHits: z.ZodNumber;
253
+ getFrameMisses: z.ZodNumber;
254
+ budgetMb: z.ZodNumber;
255
+ }, z.core.$strip>;
256
+ }, z.core.$strip>;
257
+ /** Motion block — null when motion detection is not active for this device. */
258
+ declare const CameraMotionStatusSchema: z.ZodObject<{
259
+ enabled: z.ZodBoolean;
260
+ fps: z.ZodNumber;
261
+ }, z.core.$strip>;
262
+ /** Detection engine provisioning state (mirrors pipeline-executor provisioning states). */
263
+ declare const CameraDetectionProvisioningStateSchema: z.ZodEnum<{
264
+ ready: "ready";
265
+ idle: "idle";
266
+ installing: "installing";
267
+ verifying: "verifying";
268
+ failed: "failed";
269
+ }>;
270
+ /** Detection provisioning sub-block. */
271
+ declare const CameraDetectionProvisioningSchema: z.ZodObject<{
272
+ state: z.ZodEnum<{
273
+ ready: "ready";
274
+ idle: "idle";
275
+ installing: "installing";
276
+ verifying: "verifying";
277
+ failed: "failed";
278
+ }>;
279
+ error: z.ZodOptional<z.ZodString>;
280
+ }, z.core.$strip>;
281
+ /** Detection phase — derived from the runner's engine phase. */
282
+ declare const CameraDetectionPhaseSchema: z.ZodEnum<{
283
+ idle: "idle";
284
+ active: "active";
285
+ watching: "watching";
286
+ }>;
287
+ /** Detection block — null when no detection node is assigned or reachable. */
288
+ declare const CameraDetectionStatusSchema: z.ZodObject<{
289
+ nodeId: z.ZodString;
290
+ engine: z.ZodObject<{
291
+ backend: z.ZodString;
292
+ device: z.ZodString;
293
+ }, z.core.$strip>;
294
+ phase: z.ZodEnum<{
295
+ idle: "idle";
296
+ active: "active";
297
+ watching: "watching";
298
+ }>;
299
+ configuredFps: z.ZodNumber;
300
+ actualFps: z.ZodNumber;
301
+ queueDepth: z.ZodNumber;
302
+ avgInferenceMs: z.ZodNumber;
303
+ provisioning: z.ZodObject<{
304
+ state: z.ZodEnum<{
305
+ ready: "ready";
306
+ idle: "idle";
307
+ installing: "installing";
308
+ verifying: "verifying";
309
+ failed: "failed";
310
+ }>;
311
+ error: z.ZodOptional<z.ZodString>;
312
+ }, z.core.$strip>;
313
+ }, z.core.$strip>;
314
+ /** Audio block — null when no audio node is assigned or reachable. */
315
+ declare const CameraAudioStatusSchema: z.ZodObject<{
316
+ nodeId: z.ZodString;
317
+ enabled: z.ZodBoolean;
318
+ }, z.core.$strip>;
319
+ /** Recording mode enum (matches recording cap). */
320
+ declare const CameraRecordingModeSchema: z.ZodEnum<{
321
+ events: "events";
322
+ off: "off";
323
+ continuous: "continuous";
324
+ }>;
325
+ /** Recording block — null when no recording cap is active for this device. */
326
+ declare const CameraRecordingStatusSchema: z.ZodObject<{
327
+ mode: z.ZodEnum<{
328
+ events: "events";
329
+ off: "off";
330
+ continuous: "continuous";
331
+ }>;
332
+ active: z.ZodBoolean;
333
+ storageBytes: z.ZodNumber;
334
+ }, z.core.$strip>;
335
+ /**
336
+ * Aggregated per-camera pipeline status — server-composed, single call.
337
+ *
338
+ * The `assignment` and `source` blocks are always present.
339
+ * Every other block is `null` when the stage is inactive or unreachable
340
+ * during the bounded parallel fan-out in the orchestrator implementation.
341
+ *
342
+ * See spec: `docs/superpowers/specs/2026-06-24-camera-status-aggregator-cap.md`
343
+ */
344
+ declare const CameraStatusSchema: z.ZodObject<{
345
+ deviceId: z.ZodNumber;
346
+ assignment: z.ZodObject<{
347
+ detectionNodeId: z.ZodNullable<z.ZodString>;
348
+ decoderNodeId: z.ZodNullable<z.ZodString>;
349
+ audioNodeId: z.ZodNullable<z.ZodString>;
350
+ pinned: z.ZodObject<{
351
+ detection: z.ZodBoolean;
352
+ decoder: z.ZodBoolean;
353
+ audio: z.ZodBoolean;
354
+ }, z.core.$strip>;
355
+ reasons: z.ZodObject<{
356
+ detection: z.ZodOptional<z.ZodString>;
357
+ decoder: z.ZodOptional<z.ZodString>;
358
+ audio: z.ZodOptional<z.ZodString>;
359
+ }, z.core.$strip>;
360
+ }, z.core.$strip>;
361
+ source: z.ZodObject<{
362
+ streams: z.ZodReadonly<z.ZodArray<z.ZodObject<{
363
+ camStreamId: z.ZodString;
364
+ codec: z.ZodString;
365
+ width: z.ZodNumber;
366
+ height: z.ZodNumber;
367
+ fps: z.ZodNumber;
368
+ kind: z.ZodString;
369
+ }, z.core.$strip>>>;
370
+ }, z.core.$strip>;
371
+ broker: z.ZodNullable<z.ZodObject<{
372
+ profiles: z.ZodReadonly<z.ZodArray<z.ZodObject<{
373
+ profile: z.ZodString;
374
+ status: z.ZodString;
375
+ codec: z.ZodString;
376
+ width: z.ZodNumber;
377
+ height: z.ZodNumber;
378
+ subscribers: z.ZodNumber;
379
+ inFps: z.ZodNumber;
380
+ outFps: z.ZodNumber;
381
+ }, z.core.$strip>>>;
382
+ webrtcSessions: z.ZodNumber;
383
+ rtspRestream: z.ZodBoolean;
384
+ }, z.core.$strip>>;
385
+ decoder: z.ZodNullable<z.ZodObject<{
386
+ nodeId: z.ZodString;
387
+ formats: z.ZodReadonly<z.ZodArray<z.ZodString>>;
388
+ sessionCount: z.ZodNumber;
389
+ shm: z.ZodObject<{
390
+ framesWritten: z.ZodNumber;
391
+ getFrameHits: z.ZodNumber;
392
+ getFrameMisses: z.ZodNumber;
393
+ budgetMb: z.ZodNumber;
394
+ }, z.core.$strip>;
395
+ }, z.core.$strip>>;
396
+ motion: z.ZodNullable<z.ZodObject<{
397
+ enabled: z.ZodBoolean;
398
+ fps: z.ZodNumber;
399
+ }, z.core.$strip>>;
400
+ detection: z.ZodNullable<z.ZodObject<{
401
+ nodeId: z.ZodString;
402
+ engine: z.ZodObject<{
403
+ backend: z.ZodString;
404
+ device: z.ZodString;
405
+ }, z.core.$strip>;
406
+ phase: z.ZodEnum<{
407
+ idle: "idle";
408
+ active: "active";
409
+ watching: "watching";
410
+ }>;
411
+ configuredFps: z.ZodNumber;
412
+ actualFps: z.ZodNumber;
413
+ queueDepth: z.ZodNumber;
414
+ avgInferenceMs: z.ZodNumber;
415
+ provisioning: z.ZodObject<{
416
+ state: z.ZodEnum<{
417
+ ready: "ready";
418
+ idle: "idle";
419
+ installing: "installing";
420
+ verifying: "verifying";
421
+ failed: "failed";
422
+ }>;
423
+ error: z.ZodOptional<z.ZodString>;
424
+ }, z.core.$strip>;
425
+ }, z.core.$strip>>;
426
+ audio: z.ZodNullable<z.ZodObject<{
427
+ nodeId: z.ZodString;
428
+ enabled: z.ZodBoolean;
429
+ }, z.core.$strip>>;
430
+ recording: z.ZodNullable<z.ZodObject<{
431
+ mode: z.ZodEnum<{
432
+ events: "events";
433
+ off: "off";
434
+ continuous: "continuous";
435
+ }>;
436
+ active: z.ZodBoolean;
437
+ storageBytes: z.ZodNumber;
438
+ }, z.core.$strip>>;
439
+ fetchedAt: z.ZodNumber;
440
+ }, z.core.$strip>;
176
441
  /**
177
442
  * Pipeline Orchestrator capability — global load balancer + camera dispatcher.
178
443
  *
@@ -413,6 +678,7 @@ export declare const pipelineOrchestratorCapability: {
413
678
  modelId: z.ZodString;
414
679
  settings: z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
415
680
  }, z.core.$strip>>>;
681
+ maxCameras: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
416
682
  }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
417
683
  /** Enumerate every agent's settings (hub + remote runners). */
418
684
  readonly listAgentSettings: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodReadonly<z.ZodArray<z.ZodObject<{
@@ -423,6 +689,7 @@ export declare const pipelineOrchestratorCapability: {
423
689
  modelId: z.ZodString;
424
690
  settings: z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
425
691
  }, z.core.$strip>>>;
692
+ maxCameras: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
426
693
  }, z.core.$strip>;
427
694
  }, z.core.$strip>>>, import("./capability-definition.js").CapabilityMethodKind>;
428
695
  /** Bulk-replace ALL addon configs on one agent. Used by the agent-level PipelineEditor which emits the full map per edit. Merges on top of existing entries — omitted addonIds are left alone. */
@@ -452,6 +719,24 @@ export declare const pipelineOrchestratorCapability: {
452
719
  success: z.ZodBoolean;
453
720
  removed: z.ZodBoolean;
454
721
  }, z.core.$strip>, "mutation">;
722
+ /**
723
+ * Set the per-node camera cap for one agent.
724
+ *
725
+ * `maxCameras: 0` and `maxCameras: null` are both treated as unlimited
726
+ * by the load balancer (0 is stored as-is; the balancer treats ≤0 as
727
+ * unlimited alongside null). Pass `null` to clear an existing cap.
728
+ * Note: the admin UI normalises 0→null before calling this method, so
729
+ * `maxCameras: 0` only reaches the store via direct SDK or CLI calls.
730
+ * Changes take effect immediately on the next dispatch cycle — cameras
731
+ * currently assigned over-cap are left in place (no forced eviction),
732
+ * but new assignments obey the updated cap.
733
+ */
734
+ readonly setAgentMaxCameras: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
735
+ agentNodeId: z.ZodString;
736
+ maxCameras: z.ZodNullable<z.ZodNumber>;
737
+ }, z.core.$strip>, z.ZodObject<{
738
+ success: z.ZodLiteral<true>;
739
+ }, z.core.$strip>, "mutation">;
455
740
  /** Read one camera's settings. Null when never touched (inherits agent defaults fully). */
456
741
  readonly getCameraSettings: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
457
742
  deviceId: z.ZodNumber;
@@ -559,6 +844,225 @@ export declare const pipelineOrchestratorCapability: {
559
844
  settings: z.ZodOptional<z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
560
845
  }, z.core.$strip>>>;
561
846
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
847
+ /**
848
+ * Server-composed aggregated status for a single camera.
849
+ *
850
+ * Fans out in parallel (bounded, per-stage graceful degradation) to
851
+ * broker / decoder / motion / detection / audio / recording source caps
852
+ * via `ctx.api`. A stage whose source errors or times out becomes `null`
853
+ * in the returned payload — one slow agent never breaks the whole call.
854
+ *
855
+ * Intended for "on open / on camera select" snapshots. Live deltas
856
+ * keep arriving from the existing ~1Hz events the UI already subscribes to.
857
+ */
858
+ readonly getCameraStatus: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
859
+ deviceId: z.ZodNumber;
860
+ }, z.core.$strip>, z.ZodObject<{
861
+ deviceId: z.ZodNumber;
862
+ assignment: z.ZodObject<{
863
+ detectionNodeId: z.ZodNullable<z.ZodString>;
864
+ decoderNodeId: z.ZodNullable<z.ZodString>;
865
+ audioNodeId: z.ZodNullable<z.ZodString>;
866
+ pinned: z.ZodObject<{
867
+ detection: z.ZodBoolean;
868
+ decoder: z.ZodBoolean;
869
+ audio: z.ZodBoolean;
870
+ }, z.core.$strip>;
871
+ reasons: z.ZodObject<{
872
+ detection: z.ZodOptional<z.ZodString>;
873
+ decoder: z.ZodOptional<z.ZodString>;
874
+ audio: z.ZodOptional<z.ZodString>;
875
+ }, z.core.$strip>;
876
+ }, z.core.$strip>;
877
+ source: z.ZodObject<{
878
+ streams: z.ZodReadonly<z.ZodArray<z.ZodObject<{
879
+ camStreamId: z.ZodString;
880
+ codec: z.ZodString;
881
+ width: z.ZodNumber;
882
+ height: z.ZodNumber;
883
+ fps: z.ZodNumber;
884
+ kind: z.ZodString;
885
+ }, z.core.$strip>>>;
886
+ }, z.core.$strip>;
887
+ broker: z.ZodNullable<z.ZodObject<{
888
+ profiles: z.ZodReadonly<z.ZodArray<z.ZodObject<{
889
+ profile: z.ZodString;
890
+ status: z.ZodString;
891
+ codec: z.ZodString;
892
+ width: z.ZodNumber;
893
+ height: z.ZodNumber;
894
+ subscribers: z.ZodNumber;
895
+ inFps: z.ZodNumber;
896
+ outFps: z.ZodNumber;
897
+ }, z.core.$strip>>>;
898
+ webrtcSessions: z.ZodNumber;
899
+ rtspRestream: z.ZodBoolean;
900
+ }, z.core.$strip>>;
901
+ decoder: z.ZodNullable<z.ZodObject<{
902
+ nodeId: z.ZodString;
903
+ formats: z.ZodReadonly<z.ZodArray<z.ZodString>>;
904
+ sessionCount: z.ZodNumber;
905
+ shm: z.ZodObject<{
906
+ framesWritten: z.ZodNumber;
907
+ getFrameHits: z.ZodNumber;
908
+ getFrameMisses: z.ZodNumber;
909
+ budgetMb: z.ZodNumber;
910
+ }, z.core.$strip>;
911
+ }, z.core.$strip>>;
912
+ motion: z.ZodNullable<z.ZodObject<{
913
+ enabled: z.ZodBoolean;
914
+ fps: z.ZodNumber;
915
+ }, z.core.$strip>>;
916
+ detection: z.ZodNullable<z.ZodObject<{
917
+ nodeId: z.ZodString;
918
+ engine: z.ZodObject<{
919
+ backend: z.ZodString;
920
+ device: z.ZodString;
921
+ }, z.core.$strip>;
922
+ phase: z.ZodEnum<{
923
+ idle: "idle";
924
+ active: "active";
925
+ watching: "watching";
926
+ }>;
927
+ configuredFps: z.ZodNumber;
928
+ actualFps: z.ZodNumber;
929
+ queueDepth: z.ZodNumber;
930
+ avgInferenceMs: z.ZodNumber;
931
+ provisioning: z.ZodObject<{
932
+ state: z.ZodEnum<{
933
+ ready: "ready";
934
+ idle: "idle";
935
+ installing: "installing";
936
+ verifying: "verifying";
937
+ failed: "failed";
938
+ }>;
939
+ error: z.ZodOptional<z.ZodString>;
940
+ }, z.core.$strip>;
941
+ }, z.core.$strip>>;
942
+ audio: z.ZodNullable<z.ZodObject<{
943
+ nodeId: z.ZodString;
944
+ enabled: z.ZodBoolean;
945
+ }, z.core.$strip>>;
946
+ recording: z.ZodNullable<z.ZodObject<{
947
+ mode: z.ZodEnum<{
948
+ events: "events";
949
+ off: "off";
950
+ continuous: "continuous";
951
+ }>;
952
+ active: z.ZodBoolean;
953
+ storageBytes: z.ZodNumber;
954
+ }, z.core.$strip>>;
955
+ fetchedAt: z.ZodNumber;
956
+ }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
957
+ /**
958
+ * Server-composed aggregated status for multiple cameras in one call.
959
+ *
960
+ * `deviceIds` defaults to all cameras currently tracked by the
961
+ * orchestrator's assignment map when omitted.
962
+ *
963
+ * Runs per-device composition in parallel (bounded). Use this to
964
+ * populate the cluster assignments table and the pipeline flow overview
965
+ * rail without issuing N parallel browser round-trips.
966
+ */
967
+ readonly getCameraStatuses: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
968
+ deviceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
969
+ }, z.core.$strip>, z.ZodReadonly<z.ZodArray<z.ZodObject<{
970
+ deviceId: z.ZodNumber;
971
+ assignment: z.ZodObject<{
972
+ detectionNodeId: z.ZodNullable<z.ZodString>;
973
+ decoderNodeId: z.ZodNullable<z.ZodString>;
974
+ audioNodeId: z.ZodNullable<z.ZodString>;
975
+ pinned: z.ZodObject<{
976
+ detection: z.ZodBoolean;
977
+ decoder: z.ZodBoolean;
978
+ audio: z.ZodBoolean;
979
+ }, z.core.$strip>;
980
+ reasons: z.ZodObject<{
981
+ detection: z.ZodOptional<z.ZodString>;
982
+ decoder: z.ZodOptional<z.ZodString>;
983
+ audio: z.ZodOptional<z.ZodString>;
984
+ }, z.core.$strip>;
985
+ }, z.core.$strip>;
986
+ source: z.ZodObject<{
987
+ streams: z.ZodReadonly<z.ZodArray<z.ZodObject<{
988
+ camStreamId: z.ZodString;
989
+ codec: z.ZodString;
990
+ width: z.ZodNumber;
991
+ height: z.ZodNumber;
992
+ fps: z.ZodNumber;
993
+ kind: z.ZodString;
994
+ }, z.core.$strip>>>;
995
+ }, z.core.$strip>;
996
+ broker: z.ZodNullable<z.ZodObject<{
997
+ profiles: z.ZodReadonly<z.ZodArray<z.ZodObject<{
998
+ profile: z.ZodString;
999
+ status: z.ZodString;
1000
+ codec: z.ZodString;
1001
+ width: z.ZodNumber;
1002
+ height: z.ZodNumber;
1003
+ subscribers: z.ZodNumber;
1004
+ inFps: z.ZodNumber;
1005
+ outFps: z.ZodNumber;
1006
+ }, z.core.$strip>>>;
1007
+ webrtcSessions: z.ZodNumber;
1008
+ rtspRestream: z.ZodBoolean;
1009
+ }, z.core.$strip>>;
1010
+ decoder: z.ZodNullable<z.ZodObject<{
1011
+ nodeId: z.ZodString;
1012
+ formats: z.ZodReadonly<z.ZodArray<z.ZodString>>;
1013
+ sessionCount: z.ZodNumber;
1014
+ shm: z.ZodObject<{
1015
+ framesWritten: z.ZodNumber;
1016
+ getFrameHits: z.ZodNumber;
1017
+ getFrameMisses: z.ZodNumber;
1018
+ budgetMb: z.ZodNumber;
1019
+ }, z.core.$strip>;
1020
+ }, z.core.$strip>>;
1021
+ motion: z.ZodNullable<z.ZodObject<{
1022
+ enabled: z.ZodBoolean;
1023
+ fps: z.ZodNumber;
1024
+ }, z.core.$strip>>;
1025
+ detection: z.ZodNullable<z.ZodObject<{
1026
+ nodeId: z.ZodString;
1027
+ engine: z.ZodObject<{
1028
+ backend: z.ZodString;
1029
+ device: z.ZodString;
1030
+ }, z.core.$strip>;
1031
+ phase: z.ZodEnum<{
1032
+ idle: "idle";
1033
+ active: "active";
1034
+ watching: "watching";
1035
+ }>;
1036
+ configuredFps: z.ZodNumber;
1037
+ actualFps: z.ZodNumber;
1038
+ queueDepth: z.ZodNumber;
1039
+ avgInferenceMs: z.ZodNumber;
1040
+ provisioning: z.ZodObject<{
1041
+ state: z.ZodEnum<{
1042
+ ready: "ready";
1043
+ idle: "idle";
1044
+ installing: "installing";
1045
+ verifying: "verifying";
1046
+ failed: "failed";
1047
+ }>;
1048
+ error: z.ZodOptional<z.ZodString>;
1049
+ }, z.core.$strip>;
1050
+ }, z.core.$strip>>;
1051
+ audio: z.ZodNullable<z.ZodObject<{
1052
+ nodeId: z.ZodString;
1053
+ enabled: z.ZodBoolean;
1054
+ }, z.core.$strip>>;
1055
+ recording: z.ZodNullable<z.ZodObject<{
1056
+ mode: z.ZodEnum<{
1057
+ events: "events";
1058
+ off: "off";
1059
+ continuous: "continuous";
1060
+ }>;
1061
+ active: z.ZodBoolean;
1062
+ storageBytes: z.ZodNumber;
1063
+ }, z.core.$strip>>;
1064
+ fetchedAt: z.ZodNumber;
1065
+ }, z.core.$strip>>>, import("./capability-definition.js").CapabilityMethodKind>;
562
1066
  /** List every template the operator has saved. */
563
1067
  readonly listTemplates: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodReadonly<z.ZodArray<z.ZodObject<{
564
1068
  id: z.ZodString;
@@ -789,4 +1293,20 @@ export declare const pipelineOrchestratorCapability: {
789
1293
  };
790
1294
  };
791
1295
  export type IPipelineOrchestratorProvider = InferProvider<typeof pipelineOrchestratorCapability>;
792
- export { PipelineAssignmentSchema, DecoderAssignmentSchema, AgentLoadSummarySchema, GlobalMetricsSchema, CapabilityBindingsSchema, CameraPipelineConfigSchema, CameraStepOverridePatchSchema, PipelineTemplateSchema as OrchestratorPipelineTemplateSchema, };
1296
+ export type CameraStatus = z.infer<typeof CameraStatusSchema>;
1297
+ export type CameraAssignmentStatus = z.infer<typeof CameraAssignmentStatusSchema>;
1298
+ export type CameraSourceStatus = z.infer<typeof CameraSourceStatusSchema>;
1299
+ export type CameraSourceStream = z.infer<typeof CameraSourceStreamSchema>;
1300
+ export type CameraBrokerStatus = z.infer<typeof CameraBrokerStatusSchema>;
1301
+ export type CameraBrokerProfile = z.infer<typeof CameraBrokerProfileSchema>;
1302
+ export type CameraDecoderStatus = z.infer<typeof CameraDecoderStatusSchema>;
1303
+ export type CameraDecoderShm = z.infer<typeof CameraDecoderShmSchema>;
1304
+ export type CameraMotionStatus = z.infer<typeof CameraMotionStatusSchema>;
1305
+ export type CameraDetectionStatus = z.infer<typeof CameraDetectionStatusSchema>;
1306
+ export type CameraDetectionProvisioning = z.infer<typeof CameraDetectionProvisioningSchema>;
1307
+ export type CameraDetectionProvisioningState = z.infer<typeof CameraDetectionProvisioningStateSchema>;
1308
+ export type CameraDetectionPhase = z.infer<typeof CameraDetectionPhaseSchema>;
1309
+ export type CameraAudioStatus = z.infer<typeof CameraAudioStatusSchema>;
1310
+ export type CameraRecordingStatus = z.infer<typeof CameraRecordingStatusSchema>;
1311
+ export type CameraRecordingMode = z.infer<typeof CameraRecordingModeSchema>;
1312
+ export { PipelineAssignmentSchema, DecoderAssignmentSchema, AgentLoadSummarySchema, GlobalMetricsSchema, CapabilityBindingsSchema, CameraPipelineConfigSchema, CameraStepOverridePatchSchema, PipelineTemplateSchema as OrchestratorPipelineTemplateSchema, CameraStatusSchema, CameraAssignmentStatusSchema, CameraSourceStatusSchema, CameraSourceStreamSchema, CameraBrokerStatusSchema, CameraBrokerProfileSchema, CameraDecoderStatusSchema, CameraDecoderShmSchema, CameraMotionStatusSchema, CameraDetectionStatusSchema, CameraDetectionProvisioningSchema, CameraDetectionProvisioningStateSchema, CameraDetectionPhaseSchema, CameraAudioStatusSchema, CameraRecordingStatusSchema, CameraRecordingModeSchema, };
@@ -48,8 +48,8 @@ export type CameraStream = z.infer<typeof CameraStreamSchema>;
48
48
  export declare const ProfileSlotStatusSchema: z.ZodEnum<{
49
49
  error: "error";
50
50
  streaming: "streaming";
51
- unassigned: "unassigned";
52
51
  idle: "idle";
52
+ unassigned: "unassigned";
53
53
  connecting: "connecting";
54
54
  }>;
55
55
  export type ProfileSlotStatus = z.infer<typeof ProfileSlotStatusSchema>;
@@ -65,8 +65,8 @@ export declare const ProfileSlotSchema: z.ZodObject<{
65
65
  status: z.ZodEnum<{
66
66
  error: "error";
67
67
  streaming: "streaming";
68
- unassigned: "unassigned";
69
68
  idle: "idle";
69
+ unassigned: "unassigned";
70
70
  connecting: "connecting";
71
71
  }>;
72
72
  resolution: z.ZodOptional<z.ZodObject<{
@@ -281,16 +281,16 @@ export type SubscribeAudioChunksResult = z.infer<typeof SubscribeAudioChunksResu
281
281
  export declare const BrokerStatusSchema: z.ZodEnum<{
282
282
  error: "error";
283
283
  streaming: "streaming";
284
- stopped: "stopped";
285
284
  idle: "idle";
285
+ stopped: "stopped";
286
286
  connecting: "connecting";
287
287
  }>;
288
288
  export declare const BrokerStatsSchema: z.ZodObject<{
289
289
  status: z.ZodEnum<{
290
290
  error: "error";
291
291
  streaming: "streaming";
292
- stopped: "stopped";
293
292
  idle: "idle";
293
+ stopped: "stopped";
294
294
  connecting: "connecting";
295
295
  }>;
296
296
  inputFps: z.ZodNumber;
@@ -410,8 +410,8 @@ export declare const streamBrokerCapability: {
410
410
  status: z.ZodEnum<{
411
411
  error: "error";
412
412
  streaming: "streaming";
413
- unassigned: "unassigned";
414
413
  idle: "idle";
414
+ unassigned: "unassigned";
415
415
  connecting: "connecting";
416
416
  }>;
417
417
  resolution: z.ZodOptional<z.ZodObject<{
@@ -428,8 +428,8 @@ export declare const streamBrokerCapability: {
428
428
  status: z.ZodEnum<{
429
429
  error: "error";
430
430
  streaming: "streaming";
431
- stopped: "stopped";
432
431
  idle: "idle";
432
+ stopped: "stopped";
433
433
  connecting: "connecting";
434
434
  }>;
435
435
  inputFps: z.ZodNumber;
@@ -54,8 +54,8 @@ export declare const WebrtcStreamChoiceSchema: z.ZodObject<{
54
54
  status: z.ZodNullable<z.ZodEnum<{
55
55
  error: "error";
56
56
  streaming: "streaming";
57
- stopped: "stopped";
58
57
  idle: "idle";
58
+ stopped: "stopped";
59
59
  connecting: "connecting";
60
60
  }>>;
61
61
  inputFps: z.ZodNullable<z.ZodNumber>;
@@ -119,8 +119,8 @@ export declare const webrtcSessionCapability: {
119
119
  status: z.ZodNullable<z.ZodEnum<{
120
120
  error: "error";
121
121
  streaming: "streaming";
122
- stopped: "stopped";
123
122
  idle: "idle";
123
+ stopped: "stopped";
124
124
  connecting: "connecting";
125
125
  }>>;
126
126
  inputFps: z.ZodNullable<z.ZodNumber>;
@@ -294,6 +294,18 @@ export declare enum EventCategory {
294
294
  * without polling `pipelineExecutor.listLoadedEngines`.
295
295
  */
296
296
  PipelineEngineMetricsSnapshot = "pipeline.engine-metrics-snapshot",
297
+ /**
298
+ * Per-node detection-engine runtime-provisioning transition. Emitted by
299
+ * the detection-pipeline provider on every state change of its lazy
300
+ * engine-provisioning machine (idle → installing → verifying → ready,
301
+ * or → failed with a `nextRetryAt`). Payload is the
302
+ * `EngineProvisioningState` snapshot; `event.source.nodeId` carries the
303
+ * node. The Pipeline page subscribes to drive a live "installing
304
+ * OpenVINO… / ready" indicator per node without polling
305
+ * `pipelineExecutor.getEngineProvisioning`. Telemetry-grade (D8): the UI
306
+ * also reads the cap snapshot on mount / reconnect. Phase 2.
307
+ */
308
+ PipelineEngineProvisioning = "pipeline.engine-provisioning",
297
309
  /**
298
310
  * Cluster topology snapshot. Carries the same payload returned by
299
311
  * `nodes.topology` (every reachable node + addons + processes).
@@ -444,14 +456,15 @@ export declare enum EventCategory {
444
456
  DeviceSleeping = "device.sleeping",
445
457
  RetentionCleanup = "retention.cleanup",
446
458
  /**
447
- * Progress snapshot emitted by `BulkUpdateCoordinator` on every state
448
- * transition (item status change, phase change, completion, cancel).
449
- * Payload is `BulkUpdateState`. Admin UI subscribes via `useLiveEvent`
450
- * to drive the sticky `BulkUpdateBanner` and per-row `AddonRowBadge`.
451
- *
452
- * Spec: docs/superpowers/specs/2026-05-21-addons-bulk-update-progress-design.md
459
+ * Legacy bulk-update progress snapshot (payload `BulkUpdateState`). No longer
460
+ * emitted F3 removed the coordinator that produced it; "Update all" now runs
461
+ * as one lifecycle engine job (`AddonsJobProgress`/`AddonsJobLog`). Retained
462
+ * (with `BulkUpdateState`) only to avoid regenerating the event maps; removed
463
+ * in F4 once live bulk progress is re-implemented over the engine events.
453
464
  */
454
465
  AddonsBulkUpdateProgress = "addons.bulk-update-progress",
466
+ AddonsJobProgress = "addons.job-progress",
467
+ AddonsJobLog = "addons.job-log",
455
468
  /**
456
469
  * A container's child visibility toggled (hidden/shown). Emitted by the
457
470
  * `accessories` cap when a child device is hidden or revealed.