@camstack/addon-provider-reolink 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
|
@@ -5009,6 +5009,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
5009
5009
|
*/
|
|
5010
5010
|
EventCategory["PipelineEngineMetricsSnapshot"] = "pipeline.engine-metrics-snapshot";
|
|
5011
5011
|
/**
|
|
5012
|
+
* Per-node detection-engine runtime-provisioning transition. Emitted by
|
|
5013
|
+
* the detection-pipeline provider on every state change of its lazy
|
|
5014
|
+
* engine-provisioning machine (idle → installing → verifying → ready,
|
|
5015
|
+
* or → failed with a `nextRetryAt`). Payload is the
|
|
5016
|
+
* `EngineProvisioningState` snapshot; `event.source.nodeId` carries the
|
|
5017
|
+
* node. The Pipeline page subscribes to drive a live "installing
|
|
5018
|
+
* OpenVINO… / ready" indicator per node without polling
|
|
5019
|
+
* `pipelineExecutor.getEngineProvisioning`. Telemetry-grade (D8): the UI
|
|
5020
|
+
* also reads the cap snapshot on mount / reconnect. Phase 2.
|
|
5021
|
+
*/
|
|
5022
|
+
EventCategory["PipelineEngineProvisioning"] = "pipeline.engine-provisioning";
|
|
5023
|
+
/**
|
|
5012
5024
|
* Cluster topology snapshot. Carries the same payload returned by
|
|
5013
5025
|
* `nodes.topology` (every reachable node + addons + processes).
|
|
5014
5026
|
* Emitted by the hub on any agent / addon lifecycle change
|
|
@@ -10586,6 +10598,24 @@ var DetectorOutputSchema = object({
|
|
|
10586
10598
|
inferenceMs: number(),
|
|
10587
10599
|
modelId: string()
|
|
10588
10600
|
});
|
|
10601
|
+
var EngineProvisioningSchema = object({
|
|
10602
|
+
runtimeId: _enum([
|
|
10603
|
+
"onnx",
|
|
10604
|
+
"openvino",
|
|
10605
|
+
"coreml"
|
|
10606
|
+
]).nullable(),
|
|
10607
|
+
device: string().nullable(),
|
|
10608
|
+
state: _enum([
|
|
10609
|
+
"idle",
|
|
10610
|
+
"installing",
|
|
10611
|
+
"verifying",
|
|
10612
|
+
"ready",
|
|
10613
|
+
"failed"
|
|
10614
|
+
]),
|
|
10615
|
+
progress: number().optional(),
|
|
10616
|
+
error: string().optional(),
|
|
10617
|
+
nextRetryAt: number().optional()
|
|
10618
|
+
});
|
|
10589
10619
|
var PipelineStepInputSchema = lazy(() => object({
|
|
10590
10620
|
addonId: string(),
|
|
10591
10621
|
modelId: string(),
|
|
@@ -10654,7 +10684,7 @@ var PipelineRunResultBridge = custom$2();
|
|
|
10654
10684
|
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(), PipelineEngineChoiceSchema, {
|
|
10655
10685
|
kind: "mutation",
|
|
10656
10686
|
auth: "admin"
|
|
10657
|
-
}), method(_void(), record(string(), object({
|
|
10687
|
+
}), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
10658
10688
|
modelId: string(),
|
|
10659
10689
|
settings: record(string(), unknown()).readonly()
|
|
10660
10690
|
}))), method(object({ steps: record(string(), object({
|
|
@@ -15822,7 +15852,10 @@ var AgentAddonConfigSchema = object({
|
|
|
15822
15852
|
modelId: string(),
|
|
15823
15853
|
settings: record(string(), unknown()).readonly()
|
|
15824
15854
|
});
|
|
15825
|
-
var AgentPipelineSettingsSchema = object({
|
|
15855
|
+
var AgentPipelineSettingsSchema = object({
|
|
15856
|
+
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
15857
|
+
maxCameras: number().int().nonnegative().nullable().default(null)
|
|
15858
|
+
});
|
|
15826
15859
|
var CameraPipelineForAgentSchema = object({
|
|
15827
15860
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
15828
15861
|
audio: object({
|
|
@@ -15924,6 +15957,133 @@ var GlobalMetricsSchema = object({
|
|
|
15924
15957
|
* capability providers.
|
|
15925
15958
|
*/
|
|
15926
15959
|
var CapabilityBindingsSchema = record(string(), string());
|
|
15960
|
+
/** Source block — always present; derives from the stream catalog. */
|
|
15961
|
+
var CameraSourceStatusSchema = object({ streams: array(object({
|
|
15962
|
+
camStreamId: string(),
|
|
15963
|
+
codec: string(),
|
|
15964
|
+
width: number(),
|
|
15965
|
+
height: number(),
|
|
15966
|
+
fps: number(),
|
|
15967
|
+
kind: string()
|
|
15968
|
+
})).readonly() });
|
|
15969
|
+
/** Assignment block — always present (orchestrator-local, no remote call). */
|
|
15970
|
+
var CameraAssignmentStatusSchema = object({
|
|
15971
|
+
detectionNodeId: string().nullable(),
|
|
15972
|
+
decoderNodeId: string().nullable(),
|
|
15973
|
+
audioNodeId: string().nullable(),
|
|
15974
|
+
pinned: object({
|
|
15975
|
+
detection: boolean(),
|
|
15976
|
+
decoder: boolean(),
|
|
15977
|
+
audio: boolean()
|
|
15978
|
+
}),
|
|
15979
|
+
reasons: object({
|
|
15980
|
+
detection: string().optional(),
|
|
15981
|
+
decoder: string().optional(),
|
|
15982
|
+
audio: string().optional()
|
|
15983
|
+
})
|
|
15984
|
+
});
|
|
15985
|
+
/** Broker block — null when the broker stage is unreachable or inactive. */
|
|
15986
|
+
var CameraBrokerStatusSchema = object({
|
|
15987
|
+
profiles: array(object({
|
|
15988
|
+
profile: string(),
|
|
15989
|
+
status: string(),
|
|
15990
|
+
codec: string(),
|
|
15991
|
+
width: number(),
|
|
15992
|
+
height: number(),
|
|
15993
|
+
subscribers: number(),
|
|
15994
|
+
inFps: number(),
|
|
15995
|
+
outFps: number()
|
|
15996
|
+
})).readonly(),
|
|
15997
|
+
webrtcSessions: number(),
|
|
15998
|
+
rtspRestream: boolean()
|
|
15999
|
+
});
|
|
16000
|
+
/** Shared-memory ring statistics within the decoder block. */
|
|
16001
|
+
var CameraDecoderShmSchema = object({
|
|
16002
|
+
framesWritten: number(),
|
|
16003
|
+
getFrameHits: number(),
|
|
16004
|
+
getFrameMisses: number(),
|
|
16005
|
+
budgetMb: number()
|
|
16006
|
+
});
|
|
16007
|
+
/** Decoder block — null when the decoder stage is unreachable or inactive. */
|
|
16008
|
+
var CameraDecoderStatusSchema = object({
|
|
16009
|
+
nodeId: string(),
|
|
16010
|
+
formats: array(string()).readonly(),
|
|
16011
|
+
sessionCount: number(),
|
|
16012
|
+
shm: CameraDecoderShmSchema
|
|
16013
|
+
});
|
|
16014
|
+
/** Motion block — null when motion detection is not active for this device. */
|
|
16015
|
+
var CameraMotionStatusSchema = object({
|
|
16016
|
+
enabled: boolean(),
|
|
16017
|
+
fps: number()
|
|
16018
|
+
});
|
|
16019
|
+
/** Detection provisioning sub-block. */
|
|
16020
|
+
var CameraDetectionProvisioningSchema = object({
|
|
16021
|
+
state: _enum([
|
|
16022
|
+
"idle",
|
|
16023
|
+
"installing",
|
|
16024
|
+
"verifying",
|
|
16025
|
+
"ready",
|
|
16026
|
+
"failed"
|
|
16027
|
+
]),
|
|
16028
|
+
error: string().optional()
|
|
16029
|
+
});
|
|
16030
|
+
/** Detection phase — derived from the runner's engine phase. */
|
|
16031
|
+
var CameraDetectionPhaseSchema = _enum([
|
|
16032
|
+
"idle",
|
|
16033
|
+
"watching",
|
|
16034
|
+
"active"
|
|
16035
|
+
]);
|
|
16036
|
+
/** Detection block — null when no detection node is assigned or reachable. */
|
|
16037
|
+
var CameraDetectionStatusSchema = object({
|
|
16038
|
+
nodeId: string(),
|
|
16039
|
+
engine: object({
|
|
16040
|
+
backend: string(),
|
|
16041
|
+
device: string()
|
|
16042
|
+
}),
|
|
16043
|
+
phase: CameraDetectionPhaseSchema,
|
|
16044
|
+
configuredFps: number(),
|
|
16045
|
+
actualFps: number(),
|
|
16046
|
+
queueDepth: number(),
|
|
16047
|
+
avgInferenceMs: number(),
|
|
16048
|
+
provisioning: CameraDetectionProvisioningSchema
|
|
16049
|
+
});
|
|
16050
|
+
/** Audio block — null when no audio node is assigned or reachable. */
|
|
16051
|
+
var CameraAudioStatusSchema = object({
|
|
16052
|
+
nodeId: string(),
|
|
16053
|
+
enabled: boolean()
|
|
16054
|
+
});
|
|
16055
|
+
/** Recording block — null when no recording cap is active for this device. */
|
|
16056
|
+
var CameraRecordingStatusSchema = object({
|
|
16057
|
+
mode: _enum([
|
|
16058
|
+
"off",
|
|
16059
|
+
"continuous",
|
|
16060
|
+
"events"
|
|
16061
|
+
]),
|
|
16062
|
+
active: boolean(),
|
|
16063
|
+
storageBytes: number()
|
|
16064
|
+
});
|
|
16065
|
+
/**
|
|
16066
|
+
* Aggregated per-camera pipeline status — server-composed, single call.
|
|
16067
|
+
*
|
|
16068
|
+
* The `assignment` and `source` blocks are always present.
|
|
16069
|
+
* Every other block is `null` when the stage is inactive or unreachable
|
|
16070
|
+
* during the bounded parallel fan-out in the orchestrator implementation.
|
|
16071
|
+
*
|
|
16072
|
+
* See spec: `docs/superpowers/specs/2026-06-24-camera-status-aggregator-cap.md`
|
|
16073
|
+
*/
|
|
16074
|
+
var CameraStatusSchema = object({
|
|
16075
|
+
deviceId: number(),
|
|
16076
|
+
assignment: CameraAssignmentStatusSchema,
|
|
16077
|
+
source: CameraSourceStatusSchema,
|
|
16078
|
+
broker: CameraBrokerStatusSchema.nullable(),
|
|
16079
|
+
decoder: CameraDecoderStatusSchema.nullable(),
|
|
16080
|
+
motion: CameraMotionStatusSchema.nullable(),
|
|
16081
|
+
detection: CameraDetectionStatusSchema.nullable(),
|
|
16082
|
+
audio: CameraAudioStatusSchema.nullable(),
|
|
16083
|
+
recording: CameraRecordingStatusSchema.nullable(),
|
|
16084
|
+
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
16085
|
+
fetchedAt: number()
|
|
16086
|
+
});
|
|
15927
16087
|
method(object({
|
|
15928
16088
|
deviceId: number(),
|
|
15929
16089
|
agentNodeId: string()
|
|
@@ -15991,6 +16151,12 @@ method(object({
|
|
|
15991
16151
|
}), {
|
|
15992
16152
|
kind: "mutation",
|
|
15993
16153
|
auth: "admin"
|
|
16154
|
+
}), method(object({
|
|
16155
|
+
agentNodeId: string(),
|
|
16156
|
+
maxCameras: number().int().nonnegative().nullable()
|
|
16157
|
+
}), object({ success: literal(true) }), {
|
|
16158
|
+
kind: "mutation",
|
|
16159
|
+
auth: "admin"
|
|
15994
16160
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
15995
16161
|
deviceId: number(),
|
|
15996
16162
|
addonId: string(),
|
|
@@ -16016,7 +16182,7 @@ method(object({
|
|
|
16016
16182
|
}), method(object({
|
|
16017
16183
|
deviceId: number(),
|
|
16018
16184
|
agentNodeId: string().optional()
|
|
16019
|
-
}), CameraPipelineConfigSchema), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
16185
|
+
}), CameraPipelineConfigSchema), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
16020
16186
|
name: string(),
|
|
16021
16187
|
description: string().optional(),
|
|
16022
16188
|
config: CameraPipelineConfigSchema
|
|
@@ -22180,6 +22346,12 @@ Object.freeze({
|
|
|
22180
22346
|
addonId: null,
|
|
22181
22347
|
access: "view"
|
|
22182
22348
|
},
|
|
22349
|
+
"pipelineExecutor.getEngineProvisioning": {
|
|
22350
|
+
capName: "pipeline-executor",
|
|
22351
|
+
capScope: "system",
|
|
22352
|
+
addonId: null,
|
|
22353
|
+
access: "view"
|
|
22354
|
+
},
|
|
22183
22355
|
"pipelineExecutor.getGlobalPipelineConfig": {
|
|
22184
22356
|
capName: "pipeline-executor",
|
|
22185
22357
|
capScope: "system",
|
|
@@ -22384,6 +22556,18 @@ Object.freeze({
|
|
|
22384
22556
|
addonId: null,
|
|
22385
22557
|
access: "view"
|
|
22386
22558
|
},
|
|
22559
|
+
"pipelineOrchestrator.getCameraStatus": {
|
|
22560
|
+
capName: "pipeline-orchestrator",
|
|
22561
|
+
capScope: "system",
|
|
22562
|
+
addonId: null,
|
|
22563
|
+
access: "view"
|
|
22564
|
+
},
|
|
22565
|
+
"pipelineOrchestrator.getCameraStatuses": {
|
|
22566
|
+
capName: "pipeline-orchestrator",
|
|
22567
|
+
capScope: "system",
|
|
22568
|
+
addonId: null,
|
|
22569
|
+
access: "view"
|
|
22570
|
+
},
|
|
22387
22571
|
"pipelineOrchestrator.getCameraStepOverrides": {
|
|
22388
22572
|
capName: "pipeline-orchestrator",
|
|
22389
22573
|
capScope: "system",
|
|
@@ -22468,6 +22652,12 @@ Object.freeze({
|
|
|
22468
22652
|
addonId: null,
|
|
22469
22653
|
access: "create"
|
|
22470
22654
|
},
|
|
22655
|
+
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
22656
|
+
capName: "pipeline-orchestrator",
|
|
22657
|
+
capScope: "system",
|
|
22658
|
+
addonId: null,
|
|
22659
|
+
access: "create"
|
|
22660
|
+
},
|
|
22471
22661
|
"pipelineOrchestrator.setCameraPipelineForAgent": {
|
|
22472
22662
|
capName: "pipeline-orchestrator",
|
|
22473
22663
|
capScope: "system",
|
package/dist/addon.mjs
CHANGED
|
@@ -5004,6 +5004,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
5004
5004
|
*/
|
|
5005
5005
|
EventCategory["PipelineEngineMetricsSnapshot"] = "pipeline.engine-metrics-snapshot";
|
|
5006
5006
|
/**
|
|
5007
|
+
* Per-node detection-engine runtime-provisioning transition. Emitted by
|
|
5008
|
+
* the detection-pipeline provider on every state change of its lazy
|
|
5009
|
+
* engine-provisioning machine (idle → installing → verifying → ready,
|
|
5010
|
+
* or → failed with a `nextRetryAt`). Payload is the
|
|
5011
|
+
* `EngineProvisioningState` snapshot; `event.source.nodeId` carries the
|
|
5012
|
+
* node. The Pipeline page subscribes to drive a live "installing
|
|
5013
|
+
* OpenVINO… / ready" indicator per node without polling
|
|
5014
|
+
* `pipelineExecutor.getEngineProvisioning`. Telemetry-grade (D8): the UI
|
|
5015
|
+
* also reads the cap snapshot on mount / reconnect. Phase 2.
|
|
5016
|
+
*/
|
|
5017
|
+
EventCategory["PipelineEngineProvisioning"] = "pipeline.engine-provisioning";
|
|
5018
|
+
/**
|
|
5007
5019
|
* Cluster topology snapshot. Carries the same payload returned by
|
|
5008
5020
|
* `nodes.topology` (every reachable node + addons + processes).
|
|
5009
5021
|
* Emitted by the hub on any agent / addon lifecycle change
|
|
@@ -10581,6 +10593,24 @@ var DetectorOutputSchema = object({
|
|
|
10581
10593
|
inferenceMs: number(),
|
|
10582
10594
|
modelId: string()
|
|
10583
10595
|
});
|
|
10596
|
+
var EngineProvisioningSchema = object({
|
|
10597
|
+
runtimeId: _enum([
|
|
10598
|
+
"onnx",
|
|
10599
|
+
"openvino",
|
|
10600
|
+
"coreml"
|
|
10601
|
+
]).nullable(),
|
|
10602
|
+
device: string().nullable(),
|
|
10603
|
+
state: _enum([
|
|
10604
|
+
"idle",
|
|
10605
|
+
"installing",
|
|
10606
|
+
"verifying",
|
|
10607
|
+
"ready",
|
|
10608
|
+
"failed"
|
|
10609
|
+
]),
|
|
10610
|
+
progress: number().optional(),
|
|
10611
|
+
error: string().optional(),
|
|
10612
|
+
nextRetryAt: number().optional()
|
|
10613
|
+
});
|
|
10584
10614
|
var PipelineStepInputSchema = lazy(() => object({
|
|
10585
10615
|
addonId: string(),
|
|
10586
10616
|
modelId: string(),
|
|
@@ -10649,7 +10679,7 @@ var PipelineRunResultBridge = custom$2();
|
|
|
10649
10679
|
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(), PipelineEngineChoiceSchema, {
|
|
10650
10680
|
kind: "mutation",
|
|
10651
10681
|
auth: "admin"
|
|
10652
|
-
}), method(_void(), record(string(), object({
|
|
10682
|
+
}), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
10653
10683
|
modelId: string(),
|
|
10654
10684
|
settings: record(string(), unknown()).readonly()
|
|
10655
10685
|
}))), method(object({ steps: record(string(), object({
|
|
@@ -15817,7 +15847,10 @@ var AgentAddonConfigSchema = object({
|
|
|
15817
15847
|
modelId: string(),
|
|
15818
15848
|
settings: record(string(), unknown()).readonly()
|
|
15819
15849
|
});
|
|
15820
|
-
var AgentPipelineSettingsSchema = object({
|
|
15850
|
+
var AgentPipelineSettingsSchema = object({
|
|
15851
|
+
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
15852
|
+
maxCameras: number().int().nonnegative().nullable().default(null)
|
|
15853
|
+
});
|
|
15821
15854
|
var CameraPipelineForAgentSchema = object({
|
|
15822
15855
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
15823
15856
|
audio: object({
|
|
@@ -15919,6 +15952,133 @@ var GlobalMetricsSchema = object({
|
|
|
15919
15952
|
* capability providers.
|
|
15920
15953
|
*/
|
|
15921
15954
|
var CapabilityBindingsSchema = record(string(), string());
|
|
15955
|
+
/** Source block — always present; derives from the stream catalog. */
|
|
15956
|
+
var CameraSourceStatusSchema = object({ streams: array(object({
|
|
15957
|
+
camStreamId: string(),
|
|
15958
|
+
codec: string(),
|
|
15959
|
+
width: number(),
|
|
15960
|
+
height: number(),
|
|
15961
|
+
fps: number(),
|
|
15962
|
+
kind: string()
|
|
15963
|
+
})).readonly() });
|
|
15964
|
+
/** Assignment block — always present (orchestrator-local, no remote call). */
|
|
15965
|
+
var CameraAssignmentStatusSchema = object({
|
|
15966
|
+
detectionNodeId: string().nullable(),
|
|
15967
|
+
decoderNodeId: string().nullable(),
|
|
15968
|
+
audioNodeId: string().nullable(),
|
|
15969
|
+
pinned: object({
|
|
15970
|
+
detection: boolean(),
|
|
15971
|
+
decoder: boolean(),
|
|
15972
|
+
audio: boolean()
|
|
15973
|
+
}),
|
|
15974
|
+
reasons: object({
|
|
15975
|
+
detection: string().optional(),
|
|
15976
|
+
decoder: string().optional(),
|
|
15977
|
+
audio: string().optional()
|
|
15978
|
+
})
|
|
15979
|
+
});
|
|
15980
|
+
/** Broker block — null when the broker stage is unreachable or inactive. */
|
|
15981
|
+
var CameraBrokerStatusSchema = object({
|
|
15982
|
+
profiles: array(object({
|
|
15983
|
+
profile: string(),
|
|
15984
|
+
status: string(),
|
|
15985
|
+
codec: string(),
|
|
15986
|
+
width: number(),
|
|
15987
|
+
height: number(),
|
|
15988
|
+
subscribers: number(),
|
|
15989
|
+
inFps: number(),
|
|
15990
|
+
outFps: number()
|
|
15991
|
+
})).readonly(),
|
|
15992
|
+
webrtcSessions: number(),
|
|
15993
|
+
rtspRestream: boolean()
|
|
15994
|
+
});
|
|
15995
|
+
/** Shared-memory ring statistics within the decoder block. */
|
|
15996
|
+
var CameraDecoderShmSchema = object({
|
|
15997
|
+
framesWritten: number(),
|
|
15998
|
+
getFrameHits: number(),
|
|
15999
|
+
getFrameMisses: number(),
|
|
16000
|
+
budgetMb: number()
|
|
16001
|
+
});
|
|
16002
|
+
/** Decoder block — null when the decoder stage is unreachable or inactive. */
|
|
16003
|
+
var CameraDecoderStatusSchema = object({
|
|
16004
|
+
nodeId: string(),
|
|
16005
|
+
formats: array(string()).readonly(),
|
|
16006
|
+
sessionCount: number(),
|
|
16007
|
+
shm: CameraDecoderShmSchema
|
|
16008
|
+
});
|
|
16009
|
+
/** Motion block — null when motion detection is not active for this device. */
|
|
16010
|
+
var CameraMotionStatusSchema = object({
|
|
16011
|
+
enabled: boolean(),
|
|
16012
|
+
fps: number()
|
|
16013
|
+
});
|
|
16014
|
+
/** Detection provisioning sub-block. */
|
|
16015
|
+
var CameraDetectionProvisioningSchema = object({
|
|
16016
|
+
state: _enum([
|
|
16017
|
+
"idle",
|
|
16018
|
+
"installing",
|
|
16019
|
+
"verifying",
|
|
16020
|
+
"ready",
|
|
16021
|
+
"failed"
|
|
16022
|
+
]),
|
|
16023
|
+
error: string().optional()
|
|
16024
|
+
});
|
|
16025
|
+
/** Detection phase — derived from the runner's engine phase. */
|
|
16026
|
+
var CameraDetectionPhaseSchema = _enum([
|
|
16027
|
+
"idle",
|
|
16028
|
+
"watching",
|
|
16029
|
+
"active"
|
|
16030
|
+
]);
|
|
16031
|
+
/** Detection block — null when no detection node is assigned or reachable. */
|
|
16032
|
+
var CameraDetectionStatusSchema = object({
|
|
16033
|
+
nodeId: string(),
|
|
16034
|
+
engine: object({
|
|
16035
|
+
backend: string(),
|
|
16036
|
+
device: string()
|
|
16037
|
+
}),
|
|
16038
|
+
phase: CameraDetectionPhaseSchema,
|
|
16039
|
+
configuredFps: number(),
|
|
16040
|
+
actualFps: number(),
|
|
16041
|
+
queueDepth: number(),
|
|
16042
|
+
avgInferenceMs: number(),
|
|
16043
|
+
provisioning: CameraDetectionProvisioningSchema
|
|
16044
|
+
});
|
|
16045
|
+
/** Audio block — null when no audio node is assigned or reachable. */
|
|
16046
|
+
var CameraAudioStatusSchema = object({
|
|
16047
|
+
nodeId: string(),
|
|
16048
|
+
enabled: boolean()
|
|
16049
|
+
});
|
|
16050
|
+
/** Recording block — null when no recording cap is active for this device. */
|
|
16051
|
+
var CameraRecordingStatusSchema = object({
|
|
16052
|
+
mode: _enum([
|
|
16053
|
+
"off",
|
|
16054
|
+
"continuous",
|
|
16055
|
+
"events"
|
|
16056
|
+
]),
|
|
16057
|
+
active: boolean(),
|
|
16058
|
+
storageBytes: number()
|
|
16059
|
+
});
|
|
16060
|
+
/**
|
|
16061
|
+
* Aggregated per-camera pipeline status — server-composed, single call.
|
|
16062
|
+
*
|
|
16063
|
+
* The `assignment` and `source` blocks are always present.
|
|
16064
|
+
* Every other block is `null` when the stage is inactive or unreachable
|
|
16065
|
+
* during the bounded parallel fan-out in the orchestrator implementation.
|
|
16066
|
+
*
|
|
16067
|
+
* See spec: `docs/superpowers/specs/2026-06-24-camera-status-aggregator-cap.md`
|
|
16068
|
+
*/
|
|
16069
|
+
var CameraStatusSchema = object({
|
|
16070
|
+
deviceId: number(),
|
|
16071
|
+
assignment: CameraAssignmentStatusSchema,
|
|
16072
|
+
source: CameraSourceStatusSchema,
|
|
16073
|
+
broker: CameraBrokerStatusSchema.nullable(),
|
|
16074
|
+
decoder: CameraDecoderStatusSchema.nullable(),
|
|
16075
|
+
motion: CameraMotionStatusSchema.nullable(),
|
|
16076
|
+
detection: CameraDetectionStatusSchema.nullable(),
|
|
16077
|
+
audio: CameraAudioStatusSchema.nullable(),
|
|
16078
|
+
recording: CameraRecordingStatusSchema.nullable(),
|
|
16079
|
+
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
16080
|
+
fetchedAt: number()
|
|
16081
|
+
});
|
|
15922
16082
|
method(object({
|
|
15923
16083
|
deviceId: number(),
|
|
15924
16084
|
agentNodeId: string()
|
|
@@ -15986,6 +16146,12 @@ method(object({
|
|
|
15986
16146
|
}), {
|
|
15987
16147
|
kind: "mutation",
|
|
15988
16148
|
auth: "admin"
|
|
16149
|
+
}), method(object({
|
|
16150
|
+
agentNodeId: string(),
|
|
16151
|
+
maxCameras: number().int().nonnegative().nullable()
|
|
16152
|
+
}), object({ success: literal(true) }), {
|
|
16153
|
+
kind: "mutation",
|
|
16154
|
+
auth: "admin"
|
|
15989
16155
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
15990
16156
|
deviceId: number(),
|
|
15991
16157
|
addonId: string(),
|
|
@@ -16011,7 +16177,7 @@ method(object({
|
|
|
16011
16177
|
}), method(object({
|
|
16012
16178
|
deviceId: number(),
|
|
16013
16179
|
agentNodeId: string().optional()
|
|
16014
|
-
}), CameraPipelineConfigSchema), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
16180
|
+
}), CameraPipelineConfigSchema), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
16015
16181
|
name: string(),
|
|
16016
16182
|
description: string().optional(),
|
|
16017
16183
|
config: CameraPipelineConfigSchema
|
|
@@ -22175,6 +22341,12 @@ Object.freeze({
|
|
|
22175
22341
|
addonId: null,
|
|
22176
22342
|
access: "view"
|
|
22177
22343
|
},
|
|
22344
|
+
"pipelineExecutor.getEngineProvisioning": {
|
|
22345
|
+
capName: "pipeline-executor",
|
|
22346
|
+
capScope: "system",
|
|
22347
|
+
addonId: null,
|
|
22348
|
+
access: "view"
|
|
22349
|
+
},
|
|
22178
22350
|
"pipelineExecutor.getGlobalPipelineConfig": {
|
|
22179
22351
|
capName: "pipeline-executor",
|
|
22180
22352
|
capScope: "system",
|
|
@@ -22379,6 +22551,18 @@ Object.freeze({
|
|
|
22379
22551
|
addonId: null,
|
|
22380
22552
|
access: "view"
|
|
22381
22553
|
},
|
|
22554
|
+
"pipelineOrchestrator.getCameraStatus": {
|
|
22555
|
+
capName: "pipeline-orchestrator",
|
|
22556
|
+
capScope: "system",
|
|
22557
|
+
addonId: null,
|
|
22558
|
+
access: "view"
|
|
22559
|
+
},
|
|
22560
|
+
"pipelineOrchestrator.getCameraStatuses": {
|
|
22561
|
+
capName: "pipeline-orchestrator",
|
|
22562
|
+
capScope: "system",
|
|
22563
|
+
addonId: null,
|
|
22564
|
+
access: "view"
|
|
22565
|
+
},
|
|
22382
22566
|
"pipelineOrchestrator.getCameraStepOverrides": {
|
|
22383
22567
|
capName: "pipeline-orchestrator",
|
|
22384
22568
|
capScope: "system",
|
|
@@ -22463,6 +22647,12 @@ Object.freeze({
|
|
|
22463
22647
|
addonId: null,
|
|
22464
22648
|
access: "create"
|
|
22465
22649
|
},
|
|
22650
|
+
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
22651
|
+
capName: "pipeline-orchestrator",
|
|
22652
|
+
capScope: "system",
|
|
22653
|
+
addonId: null,
|
|
22654
|
+
access: "create"
|
|
22655
|
+
},
|
|
22466
22656
|
"pipelineOrchestrator.setCameraPipelineForAgent": {
|
|
22467
22657
|
capName: "pipeline-orchestrator",
|
|
22468
22658
|
capScope: "system",
|