@camstack/addon-provider-rtsp 1.0.4 → 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.
- package/dist/addon.js +193 -3
- package/dist/addon.mjs +193 -3
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -4996,6 +4996,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
4996
4996
|
*/
|
|
4997
4997
|
EventCategory["PipelineEngineMetricsSnapshot"] = "pipeline.engine-metrics-snapshot";
|
|
4998
4998
|
/**
|
|
4999
|
+
* Per-node detection-engine runtime-provisioning transition. Emitted by
|
|
5000
|
+
* the detection-pipeline provider on every state change of its lazy
|
|
5001
|
+
* engine-provisioning machine (idle → installing → verifying → ready,
|
|
5002
|
+
* or → failed with a `nextRetryAt`). Payload is the
|
|
5003
|
+
* `EngineProvisioningState` snapshot; `event.source.nodeId` carries the
|
|
5004
|
+
* node. The Pipeline page subscribes to drive a live "installing
|
|
5005
|
+
* OpenVINO… / ready" indicator per node without polling
|
|
5006
|
+
* `pipelineExecutor.getEngineProvisioning`. Telemetry-grade (D8): the UI
|
|
5007
|
+
* also reads the cap snapshot on mount / reconnect. Phase 2.
|
|
5008
|
+
*/
|
|
5009
|
+
EventCategory["PipelineEngineProvisioning"] = "pipeline.engine-provisioning";
|
|
5010
|
+
/**
|
|
4999
5011
|
* Cluster topology snapshot. Carries the same payload returned by
|
|
5000
5012
|
* `nodes.topology` (every reachable node + addons + processes).
|
|
5001
5013
|
* Emitted by the hub on any agent / addon lifecycle change
|
|
@@ -10391,6 +10403,24 @@ var DetectorOutputSchema = object({
|
|
|
10391
10403
|
inferenceMs: number(),
|
|
10392
10404
|
modelId: string()
|
|
10393
10405
|
});
|
|
10406
|
+
var EngineProvisioningSchema = object({
|
|
10407
|
+
runtimeId: _enum([
|
|
10408
|
+
"onnx",
|
|
10409
|
+
"openvino",
|
|
10410
|
+
"coreml"
|
|
10411
|
+
]).nullable(),
|
|
10412
|
+
device: string().nullable(),
|
|
10413
|
+
state: _enum([
|
|
10414
|
+
"idle",
|
|
10415
|
+
"installing",
|
|
10416
|
+
"verifying",
|
|
10417
|
+
"ready",
|
|
10418
|
+
"failed"
|
|
10419
|
+
]),
|
|
10420
|
+
progress: number().optional(),
|
|
10421
|
+
error: string().optional(),
|
|
10422
|
+
nextRetryAt: number().optional()
|
|
10423
|
+
});
|
|
10394
10424
|
var PipelineStepInputSchema = lazy(() => object({
|
|
10395
10425
|
addonId: string(),
|
|
10396
10426
|
modelId: string(),
|
|
@@ -10459,7 +10489,7 @@ var PipelineRunResultBridge = custom();
|
|
|
10459
10489
|
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(), PipelineEngineChoiceSchema, {
|
|
10460
10490
|
kind: "mutation",
|
|
10461
10491
|
auth: "admin"
|
|
10462
|
-
}), method(_void(), record(string(), object({
|
|
10492
|
+
}), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
10463
10493
|
modelId: string(),
|
|
10464
10494
|
settings: record(string(), unknown()).readonly()
|
|
10465
10495
|
}))), method(object({ steps: record(string(), object({
|
|
@@ -15615,7 +15645,10 @@ var AgentAddonConfigSchema = object({
|
|
|
15615
15645
|
modelId: string(),
|
|
15616
15646
|
settings: record(string(), unknown()).readonly()
|
|
15617
15647
|
});
|
|
15618
|
-
var AgentPipelineSettingsSchema = object({
|
|
15648
|
+
var AgentPipelineSettingsSchema = object({
|
|
15649
|
+
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
15650
|
+
maxCameras: number().int().nonnegative().nullable().default(null)
|
|
15651
|
+
});
|
|
15619
15652
|
var CameraPipelineForAgentSchema = object({
|
|
15620
15653
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
15621
15654
|
audio: object({
|
|
@@ -15717,6 +15750,133 @@ var GlobalMetricsSchema = object({
|
|
|
15717
15750
|
* capability providers.
|
|
15718
15751
|
*/
|
|
15719
15752
|
var CapabilityBindingsSchema = record(string(), string());
|
|
15753
|
+
/** Source block — always present; derives from the stream catalog. */
|
|
15754
|
+
var CameraSourceStatusSchema = object({ streams: array(object({
|
|
15755
|
+
camStreamId: string(),
|
|
15756
|
+
codec: string(),
|
|
15757
|
+
width: number(),
|
|
15758
|
+
height: number(),
|
|
15759
|
+
fps: number(),
|
|
15760
|
+
kind: string()
|
|
15761
|
+
})).readonly() });
|
|
15762
|
+
/** Assignment block — always present (orchestrator-local, no remote call). */
|
|
15763
|
+
var CameraAssignmentStatusSchema = object({
|
|
15764
|
+
detectionNodeId: string().nullable(),
|
|
15765
|
+
decoderNodeId: string().nullable(),
|
|
15766
|
+
audioNodeId: string().nullable(),
|
|
15767
|
+
pinned: object({
|
|
15768
|
+
detection: boolean(),
|
|
15769
|
+
decoder: boolean(),
|
|
15770
|
+
audio: boolean()
|
|
15771
|
+
}),
|
|
15772
|
+
reasons: object({
|
|
15773
|
+
detection: string().optional(),
|
|
15774
|
+
decoder: string().optional(),
|
|
15775
|
+
audio: string().optional()
|
|
15776
|
+
})
|
|
15777
|
+
});
|
|
15778
|
+
/** Broker block — null when the broker stage is unreachable or inactive. */
|
|
15779
|
+
var CameraBrokerStatusSchema = object({
|
|
15780
|
+
profiles: array(object({
|
|
15781
|
+
profile: string(),
|
|
15782
|
+
status: string(),
|
|
15783
|
+
codec: string(),
|
|
15784
|
+
width: number(),
|
|
15785
|
+
height: number(),
|
|
15786
|
+
subscribers: number(),
|
|
15787
|
+
inFps: number(),
|
|
15788
|
+
outFps: number()
|
|
15789
|
+
})).readonly(),
|
|
15790
|
+
webrtcSessions: number(),
|
|
15791
|
+
rtspRestream: boolean()
|
|
15792
|
+
});
|
|
15793
|
+
/** Shared-memory ring statistics within the decoder block. */
|
|
15794
|
+
var CameraDecoderShmSchema = object({
|
|
15795
|
+
framesWritten: number(),
|
|
15796
|
+
getFrameHits: number(),
|
|
15797
|
+
getFrameMisses: number(),
|
|
15798
|
+
budgetMb: number()
|
|
15799
|
+
});
|
|
15800
|
+
/** Decoder block — null when the decoder stage is unreachable or inactive. */
|
|
15801
|
+
var CameraDecoderStatusSchema = object({
|
|
15802
|
+
nodeId: string(),
|
|
15803
|
+
formats: array(string()).readonly(),
|
|
15804
|
+
sessionCount: number(),
|
|
15805
|
+
shm: CameraDecoderShmSchema
|
|
15806
|
+
});
|
|
15807
|
+
/** Motion block — null when motion detection is not active for this device. */
|
|
15808
|
+
var CameraMotionStatusSchema = object({
|
|
15809
|
+
enabled: boolean(),
|
|
15810
|
+
fps: number()
|
|
15811
|
+
});
|
|
15812
|
+
/** Detection provisioning sub-block. */
|
|
15813
|
+
var CameraDetectionProvisioningSchema = object({
|
|
15814
|
+
state: _enum([
|
|
15815
|
+
"idle",
|
|
15816
|
+
"installing",
|
|
15817
|
+
"verifying",
|
|
15818
|
+
"ready",
|
|
15819
|
+
"failed"
|
|
15820
|
+
]),
|
|
15821
|
+
error: string().optional()
|
|
15822
|
+
});
|
|
15823
|
+
/** Detection phase — derived from the runner's engine phase. */
|
|
15824
|
+
var CameraDetectionPhaseSchema = _enum([
|
|
15825
|
+
"idle",
|
|
15826
|
+
"watching",
|
|
15827
|
+
"active"
|
|
15828
|
+
]);
|
|
15829
|
+
/** Detection block — null when no detection node is assigned or reachable. */
|
|
15830
|
+
var CameraDetectionStatusSchema = object({
|
|
15831
|
+
nodeId: string(),
|
|
15832
|
+
engine: object({
|
|
15833
|
+
backend: string(),
|
|
15834
|
+
device: string()
|
|
15835
|
+
}),
|
|
15836
|
+
phase: CameraDetectionPhaseSchema,
|
|
15837
|
+
configuredFps: number(),
|
|
15838
|
+
actualFps: number(),
|
|
15839
|
+
queueDepth: number(),
|
|
15840
|
+
avgInferenceMs: number(),
|
|
15841
|
+
provisioning: CameraDetectionProvisioningSchema
|
|
15842
|
+
});
|
|
15843
|
+
/** Audio block — null when no audio node is assigned or reachable. */
|
|
15844
|
+
var CameraAudioStatusSchema = object({
|
|
15845
|
+
nodeId: string(),
|
|
15846
|
+
enabled: boolean()
|
|
15847
|
+
});
|
|
15848
|
+
/** Recording block — null when no recording cap is active for this device. */
|
|
15849
|
+
var CameraRecordingStatusSchema = object({
|
|
15850
|
+
mode: _enum([
|
|
15851
|
+
"off",
|
|
15852
|
+
"continuous",
|
|
15853
|
+
"events"
|
|
15854
|
+
]),
|
|
15855
|
+
active: boolean(),
|
|
15856
|
+
storageBytes: number()
|
|
15857
|
+
});
|
|
15858
|
+
/**
|
|
15859
|
+
* Aggregated per-camera pipeline status — server-composed, single call.
|
|
15860
|
+
*
|
|
15861
|
+
* The `assignment` and `source` blocks are always present.
|
|
15862
|
+
* Every other block is `null` when the stage is inactive or unreachable
|
|
15863
|
+
* during the bounded parallel fan-out in the orchestrator implementation.
|
|
15864
|
+
*
|
|
15865
|
+
* See spec: `docs/superpowers/specs/2026-06-24-camera-status-aggregator-cap.md`
|
|
15866
|
+
*/
|
|
15867
|
+
var CameraStatusSchema = object({
|
|
15868
|
+
deviceId: number(),
|
|
15869
|
+
assignment: CameraAssignmentStatusSchema,
|
|
15870
|
+
source: CameraSourceStatusSchema,
|
|
15871
|
+
broker: CameraBrokerStatusSchema.nullable(),
|
|
15872
|
+
decoder: CameraDecoderStatusSchema.nullable(),
|
|
15873
|
+
motion: CameraMotionStatusSchema.nullable(),
|
|
15874
|
+
detection: CameraDetectionStatusSchema.nullable(),
|
|
15875
|
+
audio: CameraAudioStatusSchema.nullable(),
|
|
15876
|
+
recording: CameraRecordingStatusSchema.nullable(),
|
|
15877
|
+
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
15878
|
+
fetchedAt: number()
|
|
15879
|
+
});
|
|
15720
15880
|
method(object({
|
|
15721
15881
|
deviceId: number(),
|
|
15722
15882
|
agentNodeId: string()
|
|
@@ -15784,6 +15944,12 @@ method(object({
|
|
|
15784
15944
|
}), {
|
|
15785
15945
|
kind: "mutation",
|
|
15786
15946
|
auth: "admin"
|
|
15947
|
+
}), method(object({
|
|
15948
|
+
agentNodeId: string(),
|
|
15949
|
+
maxCameras: number().int().nonnegative().nullable()
|
|
15950
|
+
}), object({ success: literal(true) }), {
|
|
15951
|
+
kind: "mutation",
|
|
15952
|
+
auth: "admin"
|
|
15787
15953
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
15788
15954
|
deviceId: number(),
|
|
15789
15955
|
addonId: string(),
|
|
@@ -15809,7 +15975,7 @@ method(object({
|
|
|
15809
15975
|
}), method(object({
|
|
15810
15976
|
deviceId: number(),
|
|
15811
15977
|
agentNodeId: string().optional()
|
|
15812
|
-
}), CameraPipelineConfigSchema), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
15978
|
+
}), CameraPipelineConfigSchema), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
15813
15979
|
name: string(),
|
|
15814
15980
|
description: string().optional(),
|
|
15815
15981
|
config: CameraPipelineConfigSchema
|
|
@@ -21657,6 +21823,12 @@ Object.freeze({
|
|
|
21657
21823
|
addonId: null,
|
|
21658
21824
|
access: "view"
|
|
21659
21825
|
},
|
|
21826
|
+
"pipelineExecutor.getEngineProvisioning": {
|
|
21827
|
+
capName: "pipeline-executor",
|
|
21828
|
+
capScope: "system",
|
|
21829
|
+
addonId: null,
|
|
21830
|
+
access: "view"
|
|
21831
|
+
},
|
|
21660
21832
|
"pipelineExecutor.getGlobalPipelineConfig": {
|
|
21661
21833
|
capName: "pipeline-executor",
|
|
21662
21834
|
capScope: "system",
|
|
@@ -21861,6 +22033,18 @@ Object.freeze({
|
|
|
21861
22033
|
addonId: null,
|
|
21862
22034
|
access: "view"
|
|
21863
22035
|
},
|
|
22036
|
+
"pipelineOrchestrator.getCameraStatus": {
|
|
22037
|
+
capName: "pipeline-orchestrator",
|
|
22038
|
+
capScope: "system",
|
|
22039
|
+
addonId: null,
|
|
22040
|
+
access: "view"
|
|
22041
|
+
},
|
|
22042
|
+
"pipelineOrchestrator.getCameraStatuses": {
|
|
22043
|
+
capName: "pipeline-orchestrator",
|
|
22044
|
+
capScope: "system",
|
|
22045
|
+
addonId: null,
|
|
22046
|
+
access: "view"
|
|
22047
|
+
},
|
|
21864
22048
|
"pipelineOrchestrator.getCameraStepOverrides": {
|
|
21865
22049
|
capName: "pipeline-orchestrator",
|
|
21866
22050
|
capScope: "system",
|
|
@@ -21945,6 +22129,12 @@ Object.freeze({
|
|
|
21945
22129
|
addonId: null,
|
|
21946
22130
|
access: "create"
|
|
21947
22131
|
},
|
|
22132
|
+
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
22133
|
+
capName: "pipeline-orchestrator",
|
|
22134
|
+
capScope: "system",
|
|
22135
|
+
addonId: null,
|
|
22136
|
+
access: "create"
|
|
22137
|
+
},
|
|
21948
22138
|
"pipelineOrchestrator.setCameraPipelineForAgent": {
|
|
21949
22139
|
capName: "pipeline-orchestrator",
|
|
21950
22140
|
capScope: "system",
|
package/dist/addon.mjs
CHANGED
|
@@ -4995,6 +4995,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
4995
4995
|
*/
|
|
4996
4996
|
EventCategory["PipelineEngineMetricsSnapshot"] = "pipeline.engine-metrics-snapshot";
|
|
4997
4997
|
/**
|
|
4998
|
+
* Per-node detection-engine runtime-provisioning transition. Emitted by
|
|
4999
|
+
* the detection-pipeline provider on every state change of its lazy
|
|
5000
|
+
* engine-provisioning machine (idle → installing → verifying → ready,
|
|
5001
|
+
* or → failed with a `nextRetryAt`). Payload is the
|
|
5002
|
+
* `EngineProvisioningState` snapshot; `event.source.nodeId` carries the
|
|
5003
|
+
* node. The Pipeline page subscribes to drive a live "installing
|
|
5004
|
+
* OpenVINO… / ready" indicator per node without polling
|
|
5005
|
+
* `pipelineExecutor.getEngineProvisioning`. Telemetry-grade (D8): the UI
|
|
5006
|
+
* also reads the cap snapshot on mount / reconnect. Phase 2.
|
|
5007
|
+
*/
|
|
5008
|
+
EventCategory["PipelineEngineProvisioning"] = "pipeline.engine-provisioning";
|
|
5009
|
+
/**
|
|
4998
5010
|
* Cluster topology snapshot. Carries the same payload returned by
|
|
4999
5011
|
* `nodes.topology` (every reachable node + addons + processes).
|
|
5000
5012
|
* Emitted by the hub on any agent / addon lifecycle change
|
|
@@ -10390,6 +10402,24 @@ var DetectorOutputSchema = object({
|
|
|
10390
10402
|
inferenceMs: number(),
|
|
10391
10403
|
modelId: string()
|
|
10392
10404
|
});
|
|
10405
|
+
var EngineProvisioningSchema = object({
|
|
10406
|
+
runtimeId: _enum([
|
|
10407
|
+
"onnx",
|
|
10408
|
+
"openvino",
|
|
10409
|
+
"coreml"
|
|
10410
|
+
]).nullable(),
|
|
10411
|
+
device: string().nullable(),
|
|
10412
|
+
state: _enum([
|
|
10413
|
+
"idle",
|
|
10414
|
+
"installing",
|
|
10415
|
+
"verifying",
|
|
10416
|
+
"ready",
|
|
10417
|
+
"failed"
|
|
10418
|
+
]),
|
|
10419
|
+
progress: number().optional(),
|
|
10420
|
+
error: string().optional(),
|
|
10421
|
+
nextRetryAt: number().optional()
|
|
10422
|
+
});
|
|
10393
10423
|
var PipelineStepInputSchema = lazy(() => object({
|
|
10394
10424
|
addonId: string(),
|
|
10395
10425
|
modelId: string(),
|
|
@@ -10458,7 +10488,7 @@ var PipelineRunResultBridge = custom();
|
|
|
10458
10488
|
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(), PipelineEngineChoiceSchema, {
|
|
10459
10489
|
kind: "mutation",
|
|
10460
10490
|
auth: "admin"
|
|
10461
|
-
}), method(_void(), record(string(), object({
|
|
10491
|
+
}), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
10462
10492
|
modelId: string(),
|
|
10463
10493
|
settings: record(string(), unknown()).readonly()
|
|
10464
10494
|
}))), method(object({ steps: record(string(), object({
|
|
@@ -15614,7 +15644,10 @@ var AgentAddonConfigSchema = object({
|
|
|
15614
15644
|
modelId: string(),
|
|
15615
15645
|
settings: record(string(), unknown()).readonly()
|
|
15616
15646
|
});
|
|
15617
|
-
var AgentPipelineSettingsSchema = object({
|
|
15647
|
+
var AgentPipelineSettingsSchema = object({
|
|
15648
|
+
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
15649
|
+
maxCameras: number().int().nonnegative().nullable().default(null)
|
|
15650
|
+
});
|
|
15618
15651
|
var CameraPipelineForAgentSchema = object({
|
|
15619
15652
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
15620
15653
|
audio: object({
|
|
@@ -15716,6 +15749,133 @@ var GlobalMetricsSchema = object({
|
|
|
15716
15749
|
* capability providers.
|
|
15717
15750
|
*/
|
|
15718
15751
|
var CapabilityBindingsSchema = record(string(), string());
|
|
15752
|
+
/** Source block — always present; derives from the stream catalog. */
|
|
15753
|
+
var CameraSourceStatusSchema = object({ streams: array(object({
|
|
15754
|
+
camStreamId: string(),
|
|
15755
|
+
codec: string(),
|
|
15756
|
+
width: number(),
|
|
15757
|
+
height: number(),
|
|
15758
|
+
fps: number(),
|
|
15759
|
+
kind: string()
|
|
15760
|
+
})).readonly() });
|
|
15761
|
+
/** Assignment block — always present (orchestrator-local, no remote call). */
|
|
15762
|
+
var CameraAssignmentStatusSchema = object({
|
|
15763
|
+
detectionNodeId: string().nullable(),
|
|
15764
|
+
decoderNodeId: string().nullable(),
|
|
15765
|
+
audioNodeId: string().nullable(),
|
|
15766
|
+
pinned: object({
|
|
15767
|
+
detection: boolean(),
|
|
15768
|
+
decoder: boolean(),
|
|
15769
|
+
audio: boolean()
|
|
15770
|
+
}),
|
|
15771
|
+
reasons: object({
|
|
15772
|
+
detection: string().optional(),
|
|
15773
|
+
decoder: string().optional(),
|
|
15774
|
+
audio: string().optional()
|
|
15775
|
+
})
|
|
15776
|
+
});
|
|
15777
|
+
/** Broker block — null when the broker stage is unreachable or inactive. */
|
|
15778
|
+
var CameraBrokerStatusSchema = object({
|
|
15779
|
+
profiles: array(object({
|
|
15780
|
+
profile: string(),
|
|
15781
|
+
status: string(),
|
|
15782
|
+
codec: string(),
|
|
15783
|
+
width: number(),
|
|
15784
|
+
height: number(),
|
|
15785
|
+
subscribers: number(),
|
|
15786
|
+
inFps: number(),
|
|
15787
|
+
outFps: number()
|
|
15788
|
+
})).readonly(),
|
|
15789
|
+
webrtcSessions: number(),
|
|
15790
|
+
rtspRestream: boolean()
|
|
15791
|
+
});
|
|
15792
|
+
/** Shared-memory ring statistics within the decoder block. */
|
|
15793
|
+
var CameraDecoderShmSchema = object({
|
|
15794
|
+
framesWritten: number(),
|
|
15795
|
+
getFrameHits: number(),
|
|
15796
|
+
getFrameMisses: number(),
|
|
15797
|
+
budgetMb: number()
|
|
15798
|
+
});
|
|
15799
|
+
/** Decoder block — null when the decoder stage is unreachable or inactive. */
|
|
15800
|
+
var CameraDecoderStatusSchema = object({
|
|
15801
|
+
nodeId: string(),
|
|
15802
|
+
formats: array(string()).readonly(),
|
|
15803
|
+
sessionCount: number(),
|
|
15804
|
+
shm: CameraDecoderShmSchema
|
|
15805
|
+
});
|
|
15806
|
+
/** Motion block — null when motion detection is not active for this device. */
|
|
15807
|
+
var CameraMotionStatusSchema = object({
|
|
15808
|
+
enabled: boolean(),
|
|
15809
|
+
fps: number()
|
|
15810
|
+
});
|
|
15811
|
+
/** Detection provisioning sub-block. */
|
|
15812
|
+
var CameraDetectionProvisioningSchema = object({
|
|
15813
|
+
state: _enum([
|
|
15814
|
+
"idle",
|
|
15815
|
+
"installing",
|
|
15816
|
+
"verifying",
|
|
15817
|
+
"ready",
|
|
15818
|
+
"failed"
|
|
15819
|
+
]),
|
|
15820
|
+
error: string().optional()
|
|
15821
|
+
});
|
|
15822
|
+
/** Detection phase — derived from the runner's engine phase. */
|
|
15823
|
+
var CameraDetectionPhaseSchema = _enum([
|
|
15824
|
+
"idle",
|
|
15825
|
+
"watching",
|
|
15826
|
+
"active"
|
|
15827
|
+
]);
|
|
15828
|
+
/** Detection block — null when no detection node is assigned or reachable. */
|
|
15829
|
+
var CameraDetectionStatusSchema = object({
|
|
15830
|
+
nodeId: string(),
|
|
15831
|
+
engine: object({
|
|
15832
|
+
backend: string(),
|
|
15833
|
+
device: string()
|
|
15834
|
+
}),
|
|
15835
|
+
phase: CameraDetectionPhaseSchema,
|
|
15836
|
+
configuredFps: number(),
|
|
15837
|
+
actualFps: number(),
|
|
15838
|
+
queueDepth: number(),
|
|
15839
|
+
avgInferenceMs: number(),
|
|
15840
|
+
provisioning: CameraDetectionProvisioningSchema
|
|
15841
|
+
});
|
|
15842
|
+
/** Audio block — null when no audio node is assigned or reachable. */
|
|
15843
|
+
var CameraAudioStatusSchema = object({
|
|
15844
|
+
nodeId: string(),
|
|
15845
|
+
enabled: boolean()
|
|
15846
|
+
});
|
|
15847
|
+
/** Recording block — null when no recording cap is active for this device. */
|
|
15848
|
+
var CameraRecordingStatusSchema = object({
|
|
15849
|
+
mode: _enum([
|
|
15850
|
+
"off",
|
|
15851
|
+
"continuous",
|
|
15852
|
+
"events"
|
|
15853
|
+
]),
|
|
15854
|
+
active: boolean(),
|
|
15855
|
+
storageBytes: number()
|
|
15856
|
+
});
|
|
15857
|
+
/**
|
|
15858
|
+
* Aggregated per-camera pipeline status — server-composed, single call.
|
|
15859
|
+
*
|
|
15860
|
+
* The `assignment` and `source` blocks are always present.
|
|
15861
|
+
* Every other block is `null` when the stage is inactive or unreachable
|
|
15862
|
+
* during the bounded parallel fan-out in the orchestrator implementation.
|
|
15863
|
+
*
|
|
15864
|
+
* See spec: `docs/superpowers/specs/2026-06-24-camera-status-aggregator-cap.md`
|
|
15865
|
+
*/
|
|
15866
|
+
var CameraStatusSchema = object({
|
|
15867
|
+
deviceId: number(),
|
|
15868
|
+
assignment: CameraAssignmentStatusSchema,
|
|
15869
|
+
source: CameraSourceStatusSchema,
|
|
15870
|
+
broker: CameraBrokerStatusSchema.nullable(),
|
|
15871
|
+
decoder: CameraDecoderStatusSchema.nullable(),
|
|
15872
|
+
motion: CameraMotionStatusSchema.nullable(),
|
|
15873
|
+
detection: CameraDetectionStatusSchema.nullable(),
|
|
15874
|
+
audio: CameraAudioStatusSchema.nullable(),
|
|
15875
|
+
recording: CameraRecordingStatusSchema.nullable(),
|
|
15876
|
+
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
15877
|
+
fetchedAt: number()
|
|
15878
|
+
});
|
|
15719
15879
|
method(object({
|
|
15720
15880
|
deviceId: number(),
|
|
15721
15881
|
agentNodeId: string()
|
|
@@ -15783,6 +15943,12 @@ method(object({
|
|
|
15783
15943
|
}), {
|
|
15784
15944
|
kind: "mutation",
|
|
15785
15945
|
auth: "admin"
|
|
15946
|
+
}), method(object({
|
|
15947
|
+
agentNodeId: string(),
|
|
15948
|
+
maxCameras: number().int().nonnegative().nullable()
|
|
15949
|
+
}), object({ success: literal(true) }), {
|
|
15950
|
+
kind: "mutation",
|
|
15951
|
+
auth: "admin"
|
|
15786
15952
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
15787
15953
|
deviceId: number(),
|
|
15788
15954
|
addonId: string(),
|
|
@@ -15808,7 +15974,7 @@ method(object({
|
|
|
15808
15974
|
}), method(object({
|
|
15809
15975
|
deviceId: number(),
|
|
15810
15976
|
agentNodeId: string().optional()
|
|
15811
|
-
}), CameraPipelineConfigSchema), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
15977
|
+
}), CameraPipelineConfigSchema), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
15812
15978
|
name: string(),
|
|
15813
15979
|
description: string().optional(),
|
|
15814
15980
|
config: CameraPipelineConfigSchema
|
|
@@ -21656,6 +21822,12 @@ Object.freeze({
|
|
|
21656
21822
|
addonId: null,
|
|
21657
21823
|
access: "view"
|
|
21658
21824
|
},
|
|
21825
|
+
"pipelineExecutor.getEngineProvisioning": {
|
|
21826
|
+
capName: "pipeline-executor",
|
|
21827
|
+
capScope: "system",
|
|
21828
|
+
addonId: null,
|
|
21829
|
+
access: "view"
|
|
21830
|
+
},
|
|
21659
21831
|
"pipelineExecutor.getGlobalPipelineConfig": {
|
|
21660
21832
|
capName: "pipeline-executor",
|
|
21661
21833
|
capScope: "system",
|
|
@@ -21860,6 +22032,18 @@ Object.freeze({
|
|
|
21860
22032
|
addonId: null,
|
|
21861
22033
|
access: "view"
|
|
21862
22034
|
},
|
|
22035
|
+
"pipelineOrchestrator.getCameraStatus": {
|
|
22036
|
+
capName: "pipeline-orchestrator",
|
|
22037
|
+
capScope: "system",
|
|
22038
|
+
addonId: null,
|
|
22039
|
+
access: "view"
|
|
22040
|
+
},
|
|
22041
|
+
"pipelineOrchestrator.getCameraStatuses": {
|
|
22042
|
+
capName: "pipeline-orchestrator",
|
|
22043
|
+
capScope: "system",
|
|
22044
|
+
addonId: null,
|
|
22045
|
+
access: "view"
|
|
22046
|
+
},
|
|
21863
22047
|
"pipelineOrchestrator.getCameraStepOverrides": {
|
|
21864
22048
|
capName: "pipeline-orchestrator",
|
|
21865
22049
|
capScope: "system",
|
|
@@ -21944,6 +22128,12 @@ Object.freeze({
|
|
|
21944
22128
|
addonId: null,
|
|
21945
22129
|
access: "create"
|
|
21946
22130
|
},
|
|
22131
|
+
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
22132
|
+
capName: "pipeline-orchestrator",
|
|
22133
|
+
capScope: "system",
|
|
22134
|
+
addonId: null,
|
|
22135
|
+
access: "create"
|
|
22136
|
+
},
|
|
21947
22137
|
"pipelineOrchestrator.setCameraPipelineForAgent": {
|
|
21948
22138
|
capName: "pipeline-orchestrator",
|
|
21949
22139
|
capScope: "system",
|