@camstack/addon-provider-hikvision 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
|
@@ -4985,6 +4985,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
4985
4985
|
*/
|
|
4986
4986
|
EventCategory["PipelineEngineMetricsSnapshot"] = "pipeline.engine-metrics-snapshot";
|
|
4987
4987
|
/**
|
|
4988
|
+
* Per-node detection-engine runtime-provisioning transition. Emitted by
|
|
4989
|
+
* the detection-pipeline provider on every state change of its lazy
|
|
4990
|
+
* engine-provisioning machine (idle → installing → verifying → ready,
|
|
4991
|
+
* or → failed with a `nextRetryAt`). Payload is the
|
|
4992
|
+
* `EngineProvisioningState` snapshot; `event.source.nodeId` carries the
|
|
4993
|
+
* node. The Pipeline page subscribes to drive a live "installing
|
|
4994
|
+
* OpenVINO… / ready" indicator per node without polling
|
|
4995
|
+
* `pipelineExecutor.getEngineProvisioning`. Telemetry-grade (D8): the UI
|
|
4996
|
+
* also reads the cap snapshot on mount / reconnect. Phase 2.
|
|
4997
|
+
*/
|
|
4998
|
+
EventCategory["PipelineEngineProvisioning"] = "pipeline.engine-provisioning";
|
|
4999
|
+
/**
|
|
4988
5000
|
* Cluster topology snapshot. Carries the same payload returned by
|
|
4989
5001
|
* `nodes.topology` (every reachable node + addons + processes).
|
|
4990
5002
|
* Emitted by the hub on any agent / addon lifecycle change
|
|
@@ -10562,6 +10574,24 @@ var DetectorOutputSchema = object({
|
|
|
10562
10574
|
inferenceMs: number(),
|
|
10563
10575
|
modelId: string()
|
|
10564
10576
|
});
|
|
10577
|
+
var EngineProvisioningSchema = object({
|
|
10578
|
+
runtimeId: _enum([
|
|
10579
|
+
"onnx",
|
|
10580
|
+
"openvino",
|
|
10581
|
+
"coreml"
|
|
10582
|
+
]).nullable(),
|
|
10583
|
+
device: string().nullable(),
|
|
10584
|
+
state: _enum([
|
|
10585
|
+
"idle",
|
|
10586
|
+
"installing",
|
|
10587
|
+
"verifying",
|
|
10588
|
+
"ready",
|
|
10589
|
+
"failed"
|
|
10590
|
+
]),
|
|
10591
|
+
progress: number().optional(),
|
|
10592
|
+
error: string().optional(),
|
|
10593
|
+
nextRetryAt: number().optional()
|
|
10594
|
+
});
|
|
10565
10595
|
var PipelineStepInputSchema = lazy(() => object({
|
|
10566
10596
|
addonId: string(),
|
|
10567
10597
|
modelId: string(),
|
|
@@ -10630,7 +10660,7 @@ var PipelineRunResultBridge = custom();
|
|
|
10630
10660
|
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(), PipelineEngineChoiceSchema, {
|
|
10631
10661
|
kind: "mutation",
|
|
10632
10662
|
auth: "admin"
|
|
10633
|
-
}), method(_void(), record(string(), object({
|
|
10663
|
+
}), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
10634
10664
|
modelId: string(),
|
|
10635
10665
|
settings: record(string(), unknown()).readonly()
|
|
10636
10666
|
}))), method(object({ steps: record(string(), object({
|
|
@@ -15798,7 +15828,10 @@ var AgentAddonConfigSchema = object({
|
|
|
15798
15828
|
modelId: string(),
|
|
15799
15829
|
settings: record(string(), unknown()).readonly()
|
|
15800
15830
|
});
|
|
15801
|
-
var AgentPipelineSettingsSchema = object({
|
|
15831
|
+
var AgentPipelineSettingsSchema = object({
|
|
15832
|
+
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
15833
|
+
maxCameras: number().int().nonnegative().nullable().default(null)
|
|
15834
|
+
});
|
|
15802
15835
|
var CameraPipelineForAgentSchema = object({
|
|
15803
15836
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
15804
15837
|
audio: object({
|
|
@@ -15900,6 +15933,133 @@ var GlobalMetricsSchema = object({
|
|
|
15900
15933
|
* capability providers.
|
|
15901
15934
|
*/
|
|
15902
15935
|
var CapabilityBindingsSchema = record(string(), string());
|
|
15936
|
+
/** Source block — always present; derives from the stream catalog. */
|
|
15937
|
+
var CameraSourceStatusSchema = object({ streams: array(object({
|
|
15938
|
+
camStreamId: string(),
|
|
15939
|
+
codec: string(),
|
|
15940
|
+
width: number(),
|
|
15941
|
+
height: number(),
|
|
15942
|
+
fps: number(),
|
|
15943
|
+
kind: string()
|
|
15944
|
+
})).readonly() });
|
|
15945
|
+
/** Assignment block — always present (orchestrator-local, no remote call). */
|
|
15946
|
+
var CameraAssignmentStatusSchema = object({
|
|
15947
|
+
detectionNodeId: string().nullable(),
|
|
15948
|
+
decoderNodeId: string().nullable(),
|
|
15949
|
+
audioNodeId: string().nullable(),
|
|
15950
|
+
pinned: object({
|
|
15951
|
+
detection: boolean(),
|
|
15952
|
+
decoder: boolean(),
|
|
15953
|
+
audio: boolean()
|
|
15954
|
+
}),
|
|
15955
|
+
reasons: object({
|
|
15956
|
+
detection: string().optional(),
|
|
15957
|
+
decoder: string().optional(),
|
|
15958
|
+
audio: string().optional()
|
|
15959
|
+
})
|
|
15960
|
+
});
|
|
15961
|
+
/** Broker block — null when the broker stage is unreachable or inactive. */
|
|
15962
|
+
var CameraBrokerStatusSchema = object({
|
|
15963
|
+
profiles: array(object({
|
|
15964
|
+
profile: string(),
|
|
15965
|
+
status: string(),
|
|
15966
|
+
codec: string(),
|
|
15967
|
+
width: number(),
|
|
15968
|
+
height: number(),
|
|
15969
|
+
subscribers: number(),
|
|
15970
|
+
inFps: number(),
|
|
15971
|
+
outFps: number()
|
|
15972
|
+
})).readonly(),
|
|
15973
|
+
webrtcSessions: number(),
|
|
15974
|
+
rtspRestream: boolean()
|
|
15975
|
+
});
|
|
15976
|
+
/** Shared-memory ring statistics within the decoder block. */
|
|
15977
|
+
var CameraDecoderShmSchema = object({
|
|
15978
|
+
framesWritten: number(),
|
|
15979
|
+
getFrameHits: number(),
|
|
15980
|
+
getFrameMisses: number(),
|
|
15981
|
+
budgetMb: number()
|
|
15982
|
+
});
|
|
15983
|
+
/** Decoder block — null when the decoder stage is unreachable or inactive. */
|
|
15984
|
+
var CameraDecoderStatusSchema = object({
|
|
15985
|
+
nodeId: string(),
|
|
15986
|
+
formats: array(string()).readonly(),
|
|
15987
|
+
sessionCount: number(),
|
|
15988
|
+
shm: CameraDecoderShmSchema
|
|
15989
|
+
});
|
|
15990
|
+
/** Motion block — null when motion detection is not active for this device. */
|
|
15991
|
+
var CameraMotionStatusSchema = object({
|
|
15992
|
+
enabled: boolean(),
|
|
15993
|
+
fps: number()
|
|
15994
|
+
});
|
|
15995
|
+
/** Detection provisioning sub-block. */
|
|
15996
|
+
var CameraDetectionProvisioningSchema = object({
|
|
15997
|
+
state: _enum([
|
|
15998
|
+
"idle",
|
|
15999
|
+
"installing",
|
|
16000
|
+
"verifying",
|
|
16001
|
+
"ready",
|
|
16002
|
+
"failed"
|
|
16003
|
+
]),
|
|
16004
|
+
error: string().optional()
|
|
16005
|
+
});
|
|
16006
|
+
/** Detection phase — derived from the runner's engine phase. */
|
|
16007
|
+
var CameraDetectionPhaseSchema = _enum([
|
|
16008
|
+
"idle",
|
|
16009
|
+
"watching",
|
|
16010
|
+
"active"
|
|
16011
|
+
]);
|
|
16012
|
+
/** Detection block — null when no detection node is assigned or reachable. */
|
|
16013
|
+
var CameraDetectionStatusSchema = object({
|
|
16014
|
+
nodeId: string(),
|
|
16015
|
+
engine: object({
|
|
16016
|
+
backend: string(),
|
|
16017
|
+
device: string()
|
|
16018
|
+
}),
|
|
16019
|
+
phase: CameraDetectionPhaseSchema,
|
|
16020
|
+
configuredFps: number(),
|
|
16021
|
+
actualFps: number(),
|
|
16022
|
+
queueDepth: number(),
|
|
16023
|
+
avgInferenceMs: number(),
|
|
16024
|
+
provisioning: CameraDetectionProvisioningSchema
|
|
16025
|
+
});
|
|
16026
|
+
/** Audio block — null when no audio node is assigned or reachable. */
|
|
16027
|
+
var CameraAudioStatusSchema = object({
|
|
16028
|
+
nodeId: string(),
|
|
16029
|
+
enabled: boolean()
|
|
16030
|
+
});
|
|
16031
|
+
/** Recording block — null when no recording cap is active for this device. */
|
|
16032
|
+
var CameraRecordingStatusSchema = object({
|
|
16033
|
+
mode: _enum([
|
|
16034
|
+
"off",
|
|
16035
|
+
"continuous",
|
|
16036
|
+
"events"
|
|
16037
|
+
]),
|
|
16038
|
+
active: boolean(),
|
|
16039
|
+
storageBytes: number()
|
|
16040
|
+
});
|
|
16041
|
+
/**
|
|
16042
|
+
* Aggregated per-camera pipeline status — server-composed, single call.
|
|
16043
|
+
*
|
|
16044
|
+
* The `assignment` and `source` blocks are always present.
|
|
16045
|
+
* Every other block is `null` when the stage is inactive or unreachable
|
|
16046
|
+
* during the bounded parallel fan-out in the orchestrator implementation.
|
|
16047
|
+
*
|
|
16048
|
+
* See spec: `docs/superpowers/specs/2026-06-24-camera-status-aggregator-cap.md`
|
|
16049
|
+
*/
|
|
16050
|
+
var CameraStatusSchema = object({
|
|
16051
|
+
deviceId: number(),
|
|
16052
|
+
assignment: CameraAssignmentStatusSchema,
|
|
16053
|
+
source: CameraSourceStatusSchema,
|
|
16054
|
+
broker: CameraBrokerStatusSchema.nullable(),
|
|
16055
|
+
decoder: CameraDecoderStatusSchema.nullable(),
|
|
16056
|
+
motion: CameraMotionStatusSchema.nullable(),
|
|
16057
|
+
detection: CameraDetectionStatusSchema.nullable(),
|
|
16058
|
+
audio: CameraAudioStatusSchema.nullable(),
|
|
16059
|
+
recording: CameraRecordingStatusSchema.nullable(),
|
|
16060
|
+
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
16061
|
+
fetchedAt: number()
|
|
16062
|
+
});
|
|
15903
16063
|
method(object({
|
|
15904
16064
|
deviceId: number(),
|
|
15905
16065
|
agentNodeId: string()
|
|
@@ -15967,6 +16127,12 @@ method(object({
|
|
|
15967
16127
|
}), {
|
|
15968
16128
|
kind: "mutation",
|
|
15969
16129
|
auth: "admin"
|
|
16130
|
+
}), method(object({
|
|
16131
|
+
agentNodeId: string(),
|
|
16132
|
+
maxCameras: number().int().nonnegative().nullable()
|
|
16133
|
+
}), object({ success: literal(true) }), {
|
|
16134
|
+
kind: "mutation",
|
|
16135
|
+
auth: "admin"
|
|
15970
16136
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
15971
16137
|
deviceId: number(),
|
|
15972
16138
|
addonId: string(),
|
|
@@ -15992,7 +16158,7 @@ method(object({
|
|
|
15992
16158
|
}), method(object({
|
|
15993
16159
|
deviceId: number(),
|
|
15994
16160
|
agentNodeId: string().optional()
|
|
15995
|
-
}), CameraPipelineConfigSchema), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
16161
|
+
}), CameraPipelineConfigSchema), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
15996
16162
|
name: string(),
|
|
15997
16163
|
description: string().optional(),
|
|
15998
16164
|
config: CameraPipelineConfigSchema
|
|
@@ -22202,6 +22368,12 @@ Object.freeze({
|
|
|
22202
22368
|
addonId: null,
|
|
22203
22369
|
access: "view"
|
|
22204
22370
|
},
|
|
22371
|
+
"pipelineExecutor.getEngineProvisioning": {
|
|
22372
|
+
capName: "pipeline-executor",
|
|
22373
|
+
capScope: "system",
|
|
22374
|
+
addonId: null,
|
|
22375
|
+
access: "view"
|
|
22376
|
+
},
|
|
22205
22377
|
"pipelineExecutor.getGlobalPipelineConfig": {
|
|
22206
22378
|
capName: "pipeline-executor",
|
|
22207
22379
|
capScope: "system",
|
|
@@ -22406,6 +22578,18 @@ Object.freeze({
|
|
|
22406
22578
|
addonId: null,
|
|
22407
22579
|
access: "view"
|
|
22408
22580
|
},
|
|
22581
|
+
"pipelineOrchestrator.getCameraStatus": {
|
|
22582
|
+
capName: "pipeline-orchestrator",
|
|
22583
|
+
capScope: "system",
|
|
22584
|
+
addonId: null,
|
|
22585
|
+
access: "view"
|
|
22586
|
+
},
|
|
22587
|
+
"pipelineOrchestrator.getCameraStatuses": {
|
|
22588
|
+
capName: "pipeline-orchestrator",
|
|
22589
|
+
capScope: "system",
|
|
22590
|
+
addonId: null,
|
|
22591
|
+
access: "view"
|
|
22592
|
+
},
|
|
22409
22593
|
"pipelineOrchestrator.getCameraStepOverrides": {
|
|
22410
22594
|
capName: "pipeline-orchestrator",
|
|
22411
22595
|
capScope: "system",
|
|
@@ -22490,6 +22674,12 @@ Object.freeze({
|
|
|
22490
22674
|
addonId: null,
|
|
22491
22675
|
access: "create"
|
|
22492
22676
|
},
|
|
22677
|
+
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
22678
|
+
capName: "pipeline-orchestrator",
|
|
22679
|
+
capScope: "system",
|
|
22680
|
+
addonId: null,
|
|
22681
|
+
access: "create"
|
|
22682
|
+
},
|
|
22493
22683
|
"pipelineOrchestrator.setCameraPipelineForAgent": {
|
|
22494
22684
|
capName: "pipeline-orchestrator",
|
|
22495
22685
|
capScope: "system",
|
package/dist/addon.mjs
CHANGED
|
@@ -4984,6 +4984,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
4984
4984
|
*/
|
|
4985
4985
|
EventCategory["PipelineEngineMetricsSnapshot"] = "pipeline.engine-metrics-snapshot";
|
|
4986
4986
|
/**
|
|
4987
|
+
* Per-node detection-engine runtime-provisioning transition. Emitted by
|
|
4988
|
+
* the detection-pipeline provider on every state change of its lazy
|
|
4989
|
+
* engine-provisioning machine (idle → installing → verifying → ready,
|
|
4990
|
+
* or → failed with a `nextRetryAt`). Payload is the
|
|
4991
|
+
* `EngineProvisioningState` snapshot; `event.source.nodeId` carries the
|
|
4992
|
+
* node. The Pipeline page subscribes to drive a live "installing
|
|
4993
|
+
* OpenVINO… / ready" indicator per node without polling
|
|
4994
|
+
* `pipelineExecutor.getEngineProvisioning`. Telemetry-grade (D8): the UI
|
|
4995
|
+
* also reads the cap snapshot on mount / reconnect. Phase 2.
|
|
4996
|
+
*/
|
|
4997
|
+
EventCategory["PipelineEngineProvisioning"] = "pipeline.engine-provisioning";
|
|
4998
|
+
/**
|
|
4987
4999
|
* Cluster topology snapshot. Carries the same payload returned by
|
|
4988
5000
|
* `nodes.topology` (every reachable node + addons + processes).
|
|
4989
5001
|
* Emitted by the hub on any agent / addon lifecycle change
|
|
@@ -10561,6 +10573,24 @@ var DetectorOutputSchema = object({
|
|
|
10561
10573
|
inferenceMs: number(),
|
|
10562
10574
|
modelId: string()
|
|
10563
10575
|
});
|
|
10576
|
+
var EngineProvisioningSchema = object({
|
|
10577
|
+
runtimeId: _enum([
|
|
10578
|
+
"onnx",
|
|
10579
|
+
"openvino",
|
|
10580
|
+
"coreml"
|
|
10581
|
+
]).nullable(),
|
|
10582
|
+
device: string().nullable(),
|
|
10583
|
+
state: _enum([
|
|
10584
|
+
"idle",
|
|
10585
|
+
"installing",
|
|
10586
|
+
"verifying",
|
|
10587
|
+
"ready",
|
|
10588
|
+
"failed"
|
|
10589
|
+
]),
|
|
10590
|
+
progress: number().optional(),
|
|
10591
|
+
error: string().optional(),
|
|
10592
|
+
nextRetryAt: number().optional()
|
|
10593
|
+
});
|
|
10564
10594
|
var PipelineStepInputSchema = lazy(() => object({
|
|
10565
10595
|
addonId: string(),
|
|
10566
10596
|
modelId: string(),
|
|
@@ -10629,7 +10659,7 @@ var PipelineRunResultBridge = custom();
|
|
|
10629
10659
|
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(), PipelineEngineChoiceSchema, {
|
|
10630
10660
|
kind: "mutation",
|
|
10631
10661
|
auth: "admin"
|
|
10632
|
-
}), method(_void(), record(string(), object({
|
|
10662
|
+
}), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
10633
10663
|
modelId: string(),
|
|
10634
10664
|
settings: record(string(), unknown()).readonly()
|
|
10635
10665
|
}))), method(object({ steps: record(string(), object({
|
|
@@ -15797,7 +15827,10 @@ var AgentAddonConfigSchema = object({
|
|
|
15797
15827
|
modelId: string(),
|
|
15798
15828
|
settings: record(string(), unknown()).readonly()
|
|
15799
15829
|
});
|
|
15800
|
-
var AgentPipelineSettingsSchema = object({
|
|
15830
|
+
var AgentPipelineSettingsSchema = object({
|
|
15831
|
+
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
15832
|
+
maxCameras: number().int().nonnegative().nullable().default(null)
|
|
15833
|
+
});
|
|
15801
15834
|
var CameraPipelineForAgentSchema = object({
|
|
15802
15835
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
15803
15836
|
audio: object({
|
|
@@ -15899,6 +15932,133 @@ var GlobalMetricsSchema = object({
|
|
|
15899
15932
|
* capability providers.
|
|
15900
15933
|
*/
|
|
15901
15934
|
var CapabilityBindingsSchema = record(string(), string());
|
|
15935
|
+
/** Source block — always present; derives from the stream catalog. */
|
|
15936
|
+
var CameraSourceStatusSchema = object({ streams: array(object({
|
|
15937
|
+
camStreamId: string(),
|
|
15938
|
+
codec: string(),
|
|
15939
|
+
width: number(),
|
|
15940
|
+
height: number(),
|
|
15941
|
+
fps: number(),
|
|
15942
|
+
kind: string()
|
|
15943
|
+
})).readonly() });
|
|
15944
|
+
/** Assignment block — always present (orchestrator-local, no remote call). */
|
|
15945
|
+
var CameraAssignmentStatusSchema = object({
|
|
15946
|
+
detectionNodeId: string().nullable(),
|
|
15947
|
+
decoderNodeId: string().nullable(),
|
|
15948
|
+
audioNodeId: string().nullable(),
|
|
15949
|
+
pinned: object({
|
|
15950
|
+
detection: boolean(),
|
|
15951
|
+
decoder: boolean(),
|
|
15952
|
+
audio: boolean()
|
|
15953
|
+
}),
|
|
15954
|
+
reasons: object({
|
|
15955
|
+
detection: string().optional(),
|
|
15956
|
+
decoder: string().optional(),
|
|
15957
|
+
audio: string().optional()
|
|
15958
|
+
})
|
|
15959
|
+
});
|
|
15960
|
+
/** Broker block — null when the broker stage is unreachable or inactive. */
|
|
15961
|
+
var CameraBrokerStatusSchema = object({
|
|
15962
|
+
profiles: array(object({
|
|
15963
|
+
profile: string(),
|
|
15964
|
+
status: string(),
|
|
15965
|
+
codec: string(),
|
|
15966
|
+
width: number(),
|
|
15967
|
+
height: number(),
|
|
15968
|
+
subscribers: number(),
|
|
15969
|
+
inFps: number(),
|
|
15970
|
+
outFps: number()
|
|
15971
|
+
})).readonly(),
|
|
15972
|
+
webrtcSessions: number(),
|
|
15973
|
+
rtspRestream: boolean()
|
|
15974
|
+
});
|
|
15975
|
+
/** Shared-memory ring statistics within the decoder block. */
|
|
15976
|
+
var CameraDecoderShmSchema = object({
|
|
15977
|
+
framesWritten: number(),
|
|
15978
|
+
getFrameHits: number(),
|
|
15979
|
+
getFrameMisses: number(),
|
|
15980
|
+
budgetMb: number()
|
|
15981
|
+
});
|
|
15982
|
+
/** Decoder block — null when the decoder stage is unreachable or inactive. */
|
|
15983
|
+
var CameraDecoderStatusSchema = object({
|
|
15984
|
+
nodeId: string(),
|
|
15985
|
+
formats: array(string()).readonly(),
|
|
15986
|
+
sessionCount: number(),
|
|
15987
|
+
shm: CameraDecoderShmSchema
|
|
15988
|
+
});
|
|
15989
|
+
/** Motion block — null when motion detection is not active for this device. */
|
|
15990
|
+
var CameraMotionStatusSchema = object({
|
|
15991
|
+
enabled: boolean(),
|
|
15992
|
+
fps: number()
|
|
15993
|
+
});
|
|
15994
|
+
/** Detection provisioning sub-block. */
|
|
15995
|
+
var CameraDetectionProvisioningSchema = object({
|
|
15996
|
+
state: _enum([
|
|
15997
|
+
"idle",
|
|
15998
|
+
"installing",
|
|
15999
|
+
"verifying",
|
|
16000
|
+
"ready",
|
|
16001
|
+
"failed"
|
|
16002
|
+
]),
|
|
16003
|
+
error: string().optional()
|
|
16004
|
+
});
|
|
16005
|
+
/** Detection phase — derived from the runner's engine phase. */
|
|
16006
|
+
var CameraDetectionPhaseSchema = _enum([
|
|
16007
|
+
"idle",
|
|
16008
|
+
"watching",
|
|
16009
|
+
"active"
|
|
16010
|
+
]);
|
|
16011
|
+
/** Detection block — null when no detection node is assigned or reachable. */
|
|
16012
|
+
var CameraDetectionStatusSchema = object({
|
|
16013
|
+
nodeId: string(),
|
|
16014
|
+
engine: object({
|
|
16015
|
+
backend: string(),
|
|
16016
|
+
device: string()
|
|
16017
|
+
}),
|
|
16018
|
+
phase: CameraDetectionPhaseSchema,
|
|
16019
|
+
configuredFps: number(),
|
|
16020
|
+
actualFps: number(),
|
|
16021
|
+
queueDepth: number(),
|
|
16022
|
+
avgInferenceMs: number(),
|
|
16023
|
+
provisioning: CameraDetectionProvisioningSchema
|
|
16024
|
+
});
|
|
16025
|
+
/** Audio block — null when no audio node is assigned or reachable. */
|
|
16026
|
+
var CameraAudioStatusSchema = object({
|
|
16027
|
+
nodeId: string(),
|
|
16028
|
+
enabled: boolean()
|
|
16029
|
+
});
|
|
16030
|
+
/** Recording block — null when no recording cap is active for this device. */
|
|
16031
|
+
var CameraRecordingStatusSchema = object({
|
|
16032
|
+
mode: _enum([
|
|
16033
|
+
"off",
|
|
16034
|
+
"continuous",
|
|
16035
|
+
"events"
|
|
16036
|
+
]),
|
|
16037
|
+
active: boolean(),
|
|
16038
|
+
storageBytes: number()
|
|
16039
|
+
});
|
|
16040
|
+
/**
|
|
16041
|
+
* Aggregated per-camera pipeline status — server-composed, single call.
|
|
16042
|
+
*
|
|
16043
|
+
* The `assignment` and `source` blocks are always present.
|
|
16044
|
+
* Every other block is `null` when the stage is inactive or unreachable
|
|
16045
|
+
* during the bounded parallel fan-out in the orchestrator implementation.
|
|
16046
|
+
*
|
|
16047
|
+
* See spec: `docs/superpowers/specs/2026-06-24-camera-status-aggregator-cap.md`
|
|
16048
|
+
*/
|
|
16049
|
+
var CameraStatusSchema = object({
|
|
16050
|
+
deviceId: number(),
|
|
16051
|
+
assignment: CameraAssignmentStatusSchema,
|
|
16052
|
+
source: CameraSourceStatusSchema,
|
|
16053
|
+
broker: CameraBrokerStatusSchema.nullable(),
|
|
16054
|
+
decoder: CameraDecoderStatusSchema.nullable(),
|
|
16055
|
+
motion: CameraMotionStatusSchema.nullable(),
|
|
16056
|
+
detection: CameraDetectionStatusSchema.nullable(),
|
|
16057
|
+
audio: CameraAudioStatusSchema.nullable(),
|
|
16058
|
+
recording: CameraRecordingStatusSchema.nullable(),
|
|
16059
|
+
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
16060
|
+
fetchedAt: number()
|
|
16061
|
+
});
|
|
15902
16062
|
method(object({
|
|
15903
16063
|
deviceId: number(),
|
|
15904
16064
|
agentNodeId: string()
|
|
@@ -15966,6 +16126,12 @@ method(object({
|
|
|
15966
16126
|
}), {
|
|
15967
16127
|
kind: "mutation",
|
|
15968
16128
|
auth: "admin"
|
|
16129
|
+
}), method(object({
|
|
16130
|
+
agentNodeId: string(),
|
|
16131
|
+
maxCameras: number().int().nonnegative().nullable()
|
|
16132
|
+
}), object({ success: literal(true) }), {
|
|
16133
|
+
kind: "mutation",
|
|
16134
|
+
auth: "admin"
|
|
15969
16135
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
15970
16136
|
deviceId: number(),
|
|
15971
16137
|
addonId: string(),
|
|
@@ -15991,7 +16157,7 @@ method(object({
|
|
|
15991
16157
|
}), method(object({
|
|
15992
16158
|
deviceId: number(),
|
|
15993
16159
|
agentNodeId: string().optional()
|
|
15994
|
-
}), CameraPipelineConfigSchema), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
16160
|
+
}), CameraPipelineConfigSchema), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
15995
16161
|
name: string(),
|
|
15996
16162
|
description: string().optional(),
|
|
15997
16163
|
config: CameraPipelineConfigSchema
|
|
@@ -22201,6 +22367,12 @@ Object.freeze({
|
|
|
22201
22367
|
addonId: null,
|
|
22202
22368
|
access: "view"
|
|
22203
22369
|
},
|
|
22370
|
+
"pipelineExecutor.getEngineProvisioning": {
|
|
22371
|
+
capName: "pipeline-executor",
|
|
22372
|
+
capScope: "system",
|
|
22373
|
+
addonId: null,
|
|
22374
|
+
access: "view"
|
|
22375
|
+
},
|
|
22204
22376
|
"pipelineExecutor.getGlobalPipelineConfig": {
|
|
22205
22377
|
capName: "pipeline-executor",
|
|
22206
22378
|
capScope: "system",
|
|
@@ -22405,6 +22577,18 @@ Object.freeze({
|
|
|
22405
22577
|
addonId: null,
|
|
22406
22578
|
access: "view"
|
|
22407
22579
|
},
|
|
22580
|
+
"pipelineOrchestrator.getCameraStatus": {
|
|
22581
|
+
capName: "pipeline-orchestrator",
|
|
22582
|
+
capScope: "system",
|
|
22583
|
+
addonId: null,
|
|
22584
|
+
access: "view"
|
|
22585
|
+
},
|
|
22586
|
+
"pipelineOrchestrator.getCameraStatuses": {
|
|
22587
|
+
capName: "pipeline-orchestrator",
|
|
22588
|
+
capScope: "system",
|
|
22589
|
+
addonId: null,
|
|
22590
|
+
access: "view"
|
|
22591
|
+
},
|
|
22408
22592
|
"pipelineOrchestrator.getCameraStepOverrides": {
|
|
22409
22593
|
capName: "pipeline-orchestrator",
|
|
22410
22594
|
capScope: "system",
|
|
@@ -22489,6 +22673,12 @@ Object.freeze({
|
|
|
22489
22673
|
addonId: null,
|
|
22490
22674
|
access: "create"
|
|
22491
22675
|
},
|
|
22676
|
+
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
22677
|
+
capName: "pipeline-orchestrator",
|
|
22678
|
+
capScope: "system",
|
|
22679
|
+
addonId: null,
|
|
22680
|
+
access: "create"
|
|
22681
|
+
},
|
|
22492
22682
|
"pipelineOrchestrator.setCameraPipelineForAgent": {
|
|
22493
22683
|
capName: "pipeline-orchestrator",
|
|
22494
22684
|
capScope: "system",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-hikvision",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "Hikvision camera device provider addon for CamStack — ISAPI over HTTP(S) with digest auth (snapshot, alarm stream, RTSP discovery)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|