@camstack/addon-provider-homematic 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
|
@@ -5005,6 +5005,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
5005
5005
|
*/
|
|
5006
5006
|
EventCategory["PipelineEngineMetricsSnapshot"] = "pipeline.engine-metrics-snapshot";
|
|
5007
5007
|
/**
|
|
5008
|
+
* Per-node detection-engine runtime-provisioning transition. Emitted by
|
|
5009
|
+
* the detection-pipeline provider on every state change of its lazy
|
|
5010
|
+
* engine-provisioning machine (idle → installing → verifying → ready,
|
|
5011
|
+
* or → failed with a `nextRetryAt`). Payload is the
|
|
5012
|
+
* `EngineProvisioningState` snapshot; `event.source.nodeId` carries the
|
|
5013
|
+
* node. The Pipeline page subscribes to drive a live "installing
|
|
5014
|
+
* OpenVINO… / ready" indicator per node without polling
|
|
5015
|
+
* `pipelineExecutor.getEngineProvisioning`. Telemetry-grade (D8): the UI
|
|
5016
|
+
* also reads the cap snapshot on mount / reconnect. Phase 2.
|
|
5017
|
+
*/
|
|
5018
|
+
EventCategory["PipelineEngineProvisioning"] = "pipeline.engine-provisioning";
|
|
5019
|
+
/**
|
|
5008
5020
|
* Cluster topology snapshot. Carries the same payload returned by
|
|
5009
5021
|
* `nodes.topology` (every reachable node + addons + processes).
|
|
5010
5022
|
* Emitted by the hub on any agent / addon lifecycle change
|
|
@@ -10378,6 +10390,24 @@ var DetectorOutputSchema = object({
|
|
|
10378
10390
|
inferenceMs: number(),
|
|
10379
10391
|
modelId: string()
|
|
10380
10392
|
});
|
|
10393
|
+
var EngineProvisioningSchema = object({
|
|
10394
|
+
runtimeId: _enum([
|
|
10395
|
+
"onnx",
|
|
10396
|
+
"openvino",
|
|
10397
|
+
"coreml"
|
|
10398
|
+
]).nullable(),
|
|
10399
|
+
device: string().nullable(),
|
|
10400
|
+
state: _enum([
|
|
10401
|
+
"idle",
|
|
10402
|
+
"installing",
|
|
10403
|
+
"verifying",
|
|
10404
|
+
"ready",
|
|
10405
|
+
"failed"
|
|
10406
|
+
]),
|
|
10407
|
+
progress: number().optional(),
|
|
10408
|
+
error: string().optional(),
|
|
10409
|
+
nextRetryAt: number().optional()
|
|
10410
|
+
});
|
|
10381
10411
|
var PipelineStepInputSchema = lazy(() => object({
|
|
10382
10412
|
addonId: string(),
|
|
10383
10413
|
modelId: string(),
|
|
@@ -10446,7 +10476,7 @@ var PipelineRunResultBridge = custom();
|
|
|
10446
10476
|
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(), PipelineEngineChoiceSchema, {
|
|
10447
10477
|
kind: "mutation",
|
|
10448
10478
|
auth: "admin"
|
|
10449
|
-
}), method(_void(), record(string(), object({
|
|
10479
|
+
}), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
10450
10480
|
modelId: string(),
|
|
10451
10481
|
settings: record(string(), unknown()).readonly()
|
|
10452
10482
|
}))), method(object({ steps: record(string(), object({
|
|
@@ -15668,7 +15698,10 @@ var AgentAddonConfigSchema = object({
|
|
|
15668
15698
|
modelId: string(),
|
|
15669
15699
|
settings: record(string(), unknown()).readonly()
|
|
15670
15700
|
});
|
|
15671
|
-
var AgentPipelineSettingsSchema = object({
|
|
15701
|
+
var AgentPipelineSettingsSchema = object({
|
|
15702
|
+
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
15703
|
+
maxCameras: number().int().nonnegative().nullable().default(null)
|
|
15704
|
+
});
|
|
15672
15705
|
var CameraPipelineForAgentSchema = object({
|
|
15673
15706
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
15674
15707
|
audio: object({
|
|
@@ -15770,6 +15803,133 @@ var GlobalMetricsSchema = object({
|
|
|
15770
15803
|
* capability providers.
|
|
15771
15804
|
*/
|
|
15772
15805
|
var CapabilityBindingsSchema = record(string(), string());
|
|
15806
|
+
/** Source block — always present; derives from the stream catalog. */
|
|
15807
|
+
var CameraSourceStatusSchema = object({ streams: array(object({
|
|
15808
|
+
camStreamId: string(),
|
|
15809
|
+
codec: string(),
|
|
15810
|
+
width: number(),
|
|
15811
|
+
height: number(),
|
|
15812
|
+
fps: number(),
|
|
15813
|
+
kind: string()
|
|
15814
|
+
})).readonly() });
|
|
15815
|
+
/** Assignment block — always present (orchestrator-local, no remote call). */
|
|
15816
|
+
var CameraAssignmentStatusSchema = object({
|
|
15817
|
+
detectionNodeId: string().nullable(),
|
|
15818
|
+
decoderNodeId: string().nullable(),
|
|
15819
|
+
audioNodeId: string().nullable(),
|
|
15820
|
+
pinned: object({
|
|
15821
|
+
detection: boolean(),
|
|
15822
|
+
decoder: boolean(),
|
|
15823
|
+
audio: boolean()
|
|
15824
|
+
}),
|
|
15825
|
+
reasons: object({
|
|
15826
|
+
detection: string().optional(),
|
|
15827
|
+
decoder: string().optional(),
|
|
15828
|
+
audio: string().optional()
|
|
15829
|
+
})
|
|
15830
|
+
});
|
|
15831
|
+
/** Broker block — null when the broker stage is unreachable or inactive. */
|
|
15832
|
+
var CameraBrokerStatusSchema = object({
|
|
15833
|
+
profiles: array(object({
|
|
15834
|
+
profile: string(),
|
|
15835
|
+
status: string(),
|
|
15836
|
+
codec: string(),
|
|
15837
|
+
width: number(),
|
|
15838
|
+
height: number(),
|
|
15839
|
+
subscribers: number(),
|
|
15840
|
+
inFps: number(),
|
|
15841
|
+
outFps: number()
|
|
15842
|
+
})).readonly(),
|
|
15843
|
+
webrtcSessions: number(),
|
|
15844
|
+
rtspRestream: boolean()
|
|
15845
|
+
});
|
|
15846
|
+
/** Shared-memory ring statistics within the decoder block. */
|
|
15847
|
+
var CameraDecoderShmSchema = object({
|
|
15848
|
+
framesWritten: number(),
|
|
15849
|
+
getFrameHits: number(),
|
|
15850
|
+
getFrameMisses: number(),
|
|
15851
|
+
budgetMb: number()
|
|
15852
|
+
});
|
|
15853
|
+
/** Decoder block — null when the decoder stage is unreachable or inactive. */
|
|
15854
|
+
var CameraDecoderStatusSchema = object({
|
|
15855
|
+
nodeId: string(),
|
|
15856
|
+
formats: array(string()).readonly(),
|
|
15857
|
+
sessionCount: number(),
|
|
15858
|
+
shm: CameraDecoderShmSchema
|
|
15859
|
+
});
|
|
15860
|
+
/** Motion block — null when motion detection is not active for this device. */
|
|
15861
|
+
var CameraMotionStatusSchema = object({
|
|
15862
|
+
enabled: boolean(),
|
|
15863
|
+
fps: number()
|
|
15864
|
+
});
|
|
15865
|
+
/** Detection provisioning sub-block. */
|
|
15866
|
+
var CameraDetectionProvisioningSchema = object({
|
|
15867
|
+
state: _enum([
|
|
15868
|
+
"idle",
|
|
15869
|
+
"installing",
|
|
15870
|
+
"verifying",
|
|
15871
|
+
"ready",
|
|
15872
|
+
"failed"
|
|
15873
|
+
]),
|
|
15874
|
+
error: string().optional()
|
|
15875
|
+
});
|
|
15876
|
+
/** Detection phase — derived from the runner's engine phase. */
|
|
15877
|
+
var CameraDetectionPhaseSchema = _enum([
|
|
15878
|
+
"idle",
|
|
15879
|
+
"watching",
|
|
15880
|
+
"active"
|
|
15881
|
+
]);
|
|
15882
|
+
/** Detection block — null when no detection node is assigned or reachable. */
|
|
15883
|
+
var CameraDetectionStatusSchema = object({
|
|
15884
|
+
nodeId: string(),
|
|
15885
|
+
engine: object({
|
|
15886
|
+
backend: string(),
|
|
15887
|
+
device: string()
|
|
15888
|
+
}),
|
|
15889
|
+
phase: CameraDetectionPhaseSchema,
|
|
15890
|
+
configuredFps: number(),
|
|
15891
|
+
actualFps: number(),
|
|
15892
|
+
queueDepth: number(),
|
|
15893
|
+
avgInferenceMs: number(),
|
|
15894
|
+
provisioning: CameraDetectionProvisioningSchema
|
|
15895
|
+
});
|
|
15896
|
+
/** Audio block — null when no audio node is assigned or reachable. */
|
|
15897
|
+
var CameraAudioStatusSchema = object({
|
|
15898
|
+
nodeId: string(),
|
|
15899
|
+
enabled: boolean()
|
|
15900
|
+
});
|
|
15901
|
+
/** Recording block — null when no recording cap is active for this device. */
|
|
15902
|
+
var CameraRecordingStatusSchema = object({
|
|
15903
|
+
mode: _enum([
|
|
15904
|
+
"off",
|
|
15905
|
+
"continuous",
|
|
15906
|
+
"events"
|
|
15907
|
+
]),
|
|
15908
|
+
active: boolean(),
|
|
15909
|
+
storageBytes: number()
|
|
15910
|
+
});
|
|
15911
|
+
/**
|
|
15912
|
+
* Aggregated per-camera pipeline status — server-composed, single call.
|
|
15913
|
+
*
|
|
15914
|
+
* The `assignment` and `source` blocks are always present.
|
|
15915
|
+
* Every other block is `null` when the stage is inactive or unreachable
|
|
15916
|
+
* during the bounded parallel fan-out in the orchestrator implementation.
|
|
15917
|
+
*
|
|
15918
|
+
* See spec: `docs/superpowers/specs/2026-06-24-camera-status-aggregator-cap.md`
|
|
15919
|
+
*/
|
|
15920
|
+
var CameraStatusSchema = object({
|
|
15921
|
+
deviceId: number(),
|
|
15922
|
+
assignment: CameraAssignmentStatusSchema,
|
|
15923
|
+
source: CameraSourceStatusSchema,
|
|
15924
|
+
broker: CameraBrokerStatusSchema.nullable(),
|
|
15925
|
+
decoder: CameraDecoderStatusSchema.nullable(),
|
|
15926
|
+
motion: CameraMotionStatusSchema.nullable(),
|
|
15927
|
+
detection: CameraDetectionStatusSchema.nullable(),
|
|
15928
|
+
audio: CameraAudioStatusSchema.nullable(),
|
|
15929
|
+
recording: CameraRecordingStatusSchema.nullable(),
|
|
15930
|
+
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
15931
|
+
fetchedAt: number()
|
|
15932
|
+
});
|
|
15773
15933
|
method(object({
|
|
15774
15934
|
deviceId: number(),
|
|
15775
15935
|
agentNodeId: string()
|
|
@@ -15837,6 +15997,12 @@ method(object({
|
|
|
15837
15997
|
}), {
|
|
15838
15998
|
kind: "mutation",
|
|
15839
15999
|
auth: "admin"
|
|
16000
|
+
}), method(object({
|
|
16001
|
+
agentNodeId: string(),
|
|
16002
|
+
maxCameras: number().int().nonnegative().nullable()
|
|
16003
|
+
}), object({ success: literal(true) }), {
|
|
16004
|
+
kind: "mutation",
|
|
16005
|
+
auth: "admin"
|
|
15840
16006
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
15841
16007
|
deviceId: number(),
|
|
15842
16008
|
addonId: string(),
|
|
@@ -15862,7 +16028,7 @@ method(object({
|
|
|
15862
16028
|
}), method(object({
|
|
15863
16029
|
deviceId: number(),
|
|
15864
16030
|
agentNodeId: string().optional()
|
|
15865
|
-
}), CameraPipelineConfigSchema), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
16031
|
+
}), CameraPipelineConfigSchema), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
15866
16032
|
name: string(),
|
|
15867
16033
|
description: string().optional(),
|
|
15868
16034
|
config: CameraPipelineConfigSchema
|
|
@@ -21654,6 +21820,12 @@ Object.freeze({
|
|
|
21654
21820
|
addonId: null,
|
|
21655
21821
|
access: "view"
|
|
21656
21822
|
},
|
|
21823
|
+
"pipelineExecutor.getEngineProvisioning": {
|
|
21824
|
+
capName: "pipeline-executor",
|
|
21825
|
+
capScope: "system",
|
|
21826
|
+
addonId: null,
|
|
21827
|
+
access: "view"
|
|
21828
|
+
},
|
|
21657
21829
|
"pipelineExecutor.getGlobalPipelineConfig": {
|
|
21658
21830
|
capName: "pipeline-executor",
|
|
21659
21831
|
capScope: "system",
|
|
@@ -21858,6 +22030,18 @@ Object.freeze({
|
|
|
21858
22030
|
addonId: null,
|
|
21859
22031
|
access: "view"
|
|
21860
22032
|
},
|
|
22033
|
+
"pipelineOrchestrator.getCameraStatus": {
|
|
22034
|
+
capName: "pipeline-orchestrator",
|
|
22035
|
+
capScope: "system",
|
|
22036
|
+
addonId: null,
|
|
22037
|
+
access: "view"
|
|
22038
|
+
},
|
|
22039
|
+
"pipelineOrchestrator.getCameraStatuses": {
|
|
22040
|
+
capName: "pipeline-orchestrator",
|
|
22041
|
+
capScope: "system",
|
|
22042
|
+
addonId: null,
|
|
22043
|
+
access: "view"
|
|
22044
|
+
},
|
|
21861
22045
|
"pipelineOrchestrator.getCameraStepOverrides": {
|
|
21862
22046
|
capName: "pipeline-orchestrator",
|
|
21863
22047
|
capScope: "system",
|
|
@@ -21942,6 +22126,12 @@ Object.freeze({
|
|
|
21942
22126
|
addonId: null,
|
|
21943
22127
|
access: "create"
|
|
21944
22128
|
},
|
|
22129
|
+
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
22130
|
+
capName: "pipeline-orchestrator",
|
|
22131
|
+
capScope: "system",
|
|
22132
|
+
addonId: null,
|
|
22133
|
+
access: "create"
|
|
22134
|
+
},
|
|
21945
22135
|
"pipelineOrchestrator.setCameraPipelineForAgent": {
|
|
21946
22136
|
capName: "pipeline-orchestrator",
|
|
21947
22137
|
capScope: "system",
|
package/dist/addon.mjs
CHANGED
|
@@ -5006,6 +5006,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
5006
5006
|
*/
|
|
5007
5007
|
EventCategory["PipelineEngineMetricsSnapshot"] = "pipeline.engine-metrics-snapshot";
|
|
5008
5008
|
/**
|
|
5009
|
+
* Per-node detection-engine runtime-provisioning transition. Emitted by
|
|
5010
|
+
* the detection-pipeline provider on every state change of its lazy
|
|
5011
|
+
* engine-provisioning machine (idle → installing → verifying → ready,
|
|
5012
|
+
* or → failed with a `nextRetryAt`). Payload is the
|
|
5013
|
+
* `EngineProvisioningState` snapshot; `event.source.nodeId` carries the
|
|
5014
|
+
* node. The Pipeline page subscribes to drive a live "installing
|
|
5015
|
+
* OpenVINO… / ready" indicator per node without polling
|
|
5016
|
+
* `pipelineExecutor.getEngineProvisioning`. Telemetry-grade (D8): the UI
|
|
5017
|
+
* also reads the cap snapshot on mount / reconnect. Phase 2.
|
|
5018
|
+
*/
|
|
5019
|
+
EventCategory["PipelineEngineProvisioning"] = "pipeline.engine-provisioning";
|
|
5020
|
+
/**
|
|
5009
5021
|
* Cluster topology snapshot. Carries the same payload returned by
|
|
5010
5022
|
* `nodes.topology` (every reachable node + addons + processes).
|
|
5011
5023
|
* Emitted by the hub on any agent / addon lifecycle change
|
|
@@ -10379,6 +10391,24 @@ var DetectorOutputSchema = object({
|
|
|
10379
10391
|
inferenceMs: number(),
|
|
10380
10392
|
modelId: string()
|
|
10381
10393
|
});
|
|
10394
|
+
var EngineProvisioningSchema = object({
|
|
10395
|
+
runtimeId: _enum([
|
|
10396
|
+
"onnx",
|
|
10397
|
+
"openvino",
|
|
10398
|
+
"coreml"
|
|
10399
|
+
]).nullable(),
|
|
10400
|
+
device: string().nullable(),
|
|
10401
|
+
state: _enum([
|
|
10402
|
+
"idle",
|
|
10403
|
+
"installing",
|
|
10404
|
+
"verifying",
|
|
10405
|
+
"ready",
|
|
10406
|
+
"failed"
|
|
10407
|
+
]),
|
|
10408
|
+
progress: number().optional(),
|
|
10409
|
+
error: string().optional(),
|
|
10410
|
+
nextRetryAt: number().optional()
|
|
10411
|
+
});
|
|
10382
10412
|
var PipelineStepInputSchema = lazy(() => object({
|
|
10383
10413
|
addonId: string(),
|
|
10384
10414
|
modelId: string(),
|
|
@@ -10447,7 +10477,7 @@ var PipelineRunResultBridge = custom();
|
|
|
10447
10477
|
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(), PipelineEngineChoiceSchema, {
|
|
10448
10478
|
kind: "mutation",
|
|
10449
10479
|
auth: "admin"
|
|
10450
|
-
}), method(_void(), record(string(), object({
|
|
10480
|
+
}), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
10451
10481
|
modelId: string(),
|
|
10452
10482
|
settings: record(string(), unknown()).readonly()
|
|
10453
10483
|
}))), method(object({ steps: record(string(), object({
|
|
@@ -15669,7 +15699,10 @@ var AgentAddonConfigSchema = object({
|
|
|
15669
15699
|
modelId: string(),
|
|
15670
15700
|
settings: record(string(), unknown()).readonly()
|
|
15671
15701
|
});
|
|
15672
|
-
var AgentPipelineSettingsSchema = object({
|
|
15702
|
+
var AgentPipelineSettingsSchema = object({
|
|
15703
|
+
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
15704
|
+
maxCameras: number().int().nonnegative().nullable().default(null)
|
|
15705
|
+
});
|
|
15673
15706
|
var CameraPipelineForAgentSchema = object({
|
|
15674
15707
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
15675
15708
|
audio: object({
|
|
@@ -15771,6 +15804,133 @@ var GlobalMetricsSchema = object({
|
|
|
15771
15804
|
* capability providers.
|
|
15772
15805
|
*/
|
|
15773
15806
|
var CapabilityBindingsSchema = record(string(), string());
|
|
15807
|
+
/** Source block — always present; derives from the stream catalog. */
|
|
15808
|
+
var CameraSourceStatusSchema = object({ streams: array(object({
|
|
15809
|
+
camStreamId: string(),
|
|
15810
|
+
codec: string(),
|
|
15811
|
+
width: number(),
|
|
15812
|
+
height: number(),
|
|
15813
|
+
fps: number(),
|
|
15814
|
+
kind: string()
|
|
15815
|
+
})).readonly() });
|
|
15816
|
+
/** Assignment block — always present (orchestrator-local, no remote call). */
|
|
15817
|
+
var CameraAssignmentStatusSchema = object({
|
|
15818
|
+
detectionNodeId: string().nullable(),
|
|
15819
|
+
decoderNodeId: string().nullable(),
|
|
15820
|
+
audioNodeId: string().nullable(),
|
|
15821
|
+
pinned: object({
|
|
15822
|
+
detection: boolean(),
|
|
15823
|
+
decoder: boolean(),
|
|
15824
|
+
audio: boolean()
|
|
15825
|
+
}),
|
|
15826
|
+
reasons: object({
|
|
15827
|
+
detection: string().optional(),
|
|
15828
|
+
decoder: string().optional(),
|
|
15829
|
+
audio: string().optional()
|
|
15830
|
+
})
|
|
15831
|
+
});
|
|
15832
|
+
/** Broker block — null when the broker stage is unreachable or inactive. */
|
|
15833
|
+
var CameraBrokerStatusSchema = object({
|
|
15834
|
+
profiles: array(object({
|
|
15835
|
+
profile: string(),
|
|
15836
|
+
status: string(),
|
|
15837
|
+
codec: string(),
|
|
15838
|
+
width: number(),
|
|
15839
|
+
height: number(),
|
|
15840
|
+
subscribers: number(),
|
|
15841
|
+
inFps: number(),
|
|
15842
|
+
outFps: number()
|
|
15843
|
+
})).readonly(),
|
|
15844
|
+
webrtcSessions: number(),
|
|
15845
|
+
rtspRestream: boolean()
|
|
15846
|
+
});
|
|
15847
|
+
/** Shared-memory ring statistics within the decoder block. */
|
|
15848
|
+
var CameraDecoderShmSchema = object({
|
|
15849
|
+
framesWritten: number(),
|
|
15850
|
+
getFrameHits: number(),
|
|
15851
|
+
getFrameMisses: number(),
|
|
15852
|
+
budgetMb: number()
|
|
15853
|
+
});
|
|
15854
|
+
/** Decoder block — null when the decoder stage is unreachable or inactive. */
|
|
15855
|
+
var CameraDecoderStatusSchema = object({
|
|
15856
|
+
nodeId: string(),
|
|
15857
|
+
formats: array(string()).readonly(),
|
|
15858
|
+
sessionCount: number(),
|
|
15859
|
+
shm: CameraDecoderShmSchema
|
|
15860
|
+
});
|
|
15861
|
+
/** Motion block — null when motion detection is not active for this device. */
|
|
15862
|
+
var CameraMotionStatusSchema = object({
|
|
15863
|
+
enabled: boolean(),
|
|
15864
|
+
fps: number()
|
|
15865
|
+
});
|
|
15866
|
+
/** Detection provisioning sub-block. */
|
|
15867
|
+
var CameraDetectionProvisioningSchema = object({
|
|
15868
|
+
state: _enum([
|
|
15869
|
+
"idle",
|
|
15870
|
+
"installing",
|
|
15871
|
+
"verifying",
|
|
15872
|
+
"ready",
|
|
15873
|
+
"failed"
|
|
15874
|
+
]),
|
|
15875
|
+
error: string().optional()
|
|
15876
|
+
});
|
|
15877
|
+
/** Detection phase — derived from the runner's engine phase. */
|
|
15878
|
+
var CameraDetectionPhaseSchema = _enum([
|
|
15879
|
+
"idle",
|
|
15880
|
+
"watching",
|
|
15881
|
+
"active"
|
|
15882
|
+
]);
|
|
15883
|
+
/** Detection block — null when no detection node is assigned or reachable. */
|
|
15884
|
+
var CameraDetectionStatusSchema = object({
|
|
15885
|
+
nodeId: string(),
|
|
15886
|
+
engine: object({
|
|
15887
|
+
backend: string(),
|
|
15888
|
+
device: string()
|
|
15889
|
+
}),
|
|
15890
|
+
phase: CameraDetectionPhaseSchema,
|
|
15891
|
+
configuredFps: number(),
|
|
15892
|
+
actualFps: number(),
|
|
15893
|
+
queueDepth: number(),
|
|
15894
|
+
avgInferenceMs: number(),
|
|
15895
|
+
provisioning: CameraDetectionProvisioningSchema
|
|
15896
|
+
});
|
|
15897
|
+
/** Audio block — null when no audio node is assigned or reachable. */
|
|
15898
|
+
var CameraAudioStatusSchema = object({
|
|
15899
|
+
nodeId: string(),
|
|
15900
|
+
enabled: boolean()
|
|
15901
|
+
});
|
|
15902
|
+
/** Recording block — null when no recording cap is active for this device. */
|
|
15903
|
+
var CameraRecordingStatusSchema = object({
|
|
15904
|
+
mode: _enum([
|
|
15905
|
+
"off",
|
|
15906
|
+
"continuous",
|
|
15907
|
+
"events"
|
|
15908
|
+
]),
|
|
15909
|
+
active: boolean(),
|
|
15910
|
+
storageBytes: number()
|
|
15911
|
+
});
|
|
15912
|
+
/**
|
|
15913
|
+
* Aggregated per-camera pipeline status — server-composed, single call.
|
|
15914
|
+
*
|
|
15915
|
+
* The `assignment` and `source` blocks are always present.
|
|
15916
|
+
* Every other block is `null` when the stage is inactive or unreachable
|
|
15917
|
+
* during the bounded parallel fan-out in the orchestrator implementation.
|
|
15918
|
+
*
|
|
15919
|
+
* See spec: `docs/superpowers/specs/2026-06-24-camera-status-aggregator-cap.md`
|
|
15920
|
+
*/
|
|
15921
|
+
var CameraStatusSchema = object({
|
|
15922
|
+
deviceId: number(),
|
|
15923
|
+
assignment: CameraAssignmentStatusSchema,
|
|
15924
|
+
source: CameraSourceStatusSchema,
|
|
15925
|
+
broker: CameraBrokerStatusSchema.nullable(),
|
|
15926
|
+
decoder: CameraDecoderStatusSchema.nullable(),
|
|
15927
|
+
motion: CameraMotionStatusSchema.nullable(),
|
|
15928
|
+
detection: CameraDetectionStatusSchema.nullable(),
|
|
15929
|
+
audio: CameraAudioStatusSchema.nullable(),
|
|
15930
|
+
recording: CameraRecordingStatusSchema.nullable(),
|
|
15931
|
+
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
15932
|
+
fetchedAt: number()
|
|
15933
|
+
});
|
|
15774
15934
|
method(object({
|
|
15775
15935
|
deviceId: number(),
|
|
15776
15936
|
agentNodeId: string()
|
|
@@ -15838,6 +15998,12 @@ method(object({
|
|
|
15838
15998
|
}), {
|
|
15839
15999
|
kind: "mutation",
|
|
15840
16000
|
auth: "admin"
|
|
16001
|
+
}), method(object({
|
|
16002
|
+
agentNodeId: string(),
|
|
16003
|
+
maxCameras: number().int().nonnegative().nullable()
|
|
16004
|
+
}), object({ success: literal(true) }), {
|
|
16005
|
+
kind: "mutation",
|
|
16006
|
+
auth: "admin"
|
|
15841
16007
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
15842
16008
|
deviceId: number(),
|
|
15843
16009
|
addonId: string(),
|
|
@@ -15863,7 +16029,7 @@ method(object({
|
|
|
15863
16029
|
}), method(object({
|
|
15864
16030
|
deviceId: number(),
|
|
15865
16031
|
agentNodeId: string().optional()
|
|
15866
|
-
}), CameraPipelineConfigSchema), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
16032
|
+
}), CameraPipelineConfigSchema), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
15867
16033
|
name: string(),
|
|
15868
16034
|
description: string().optional(),
|
|
15869
16035
|
config: CameraPipelineConfigSchema
|
|
@@ -21655,6 +21821,12 @@ Object.freeze({
|
|
|
21655
21821
|
addonId: null,
|
|
21656
21822
|
access: "view"
|
|
21657
21823
|
},
|
|
21824
|
+
"pipelineExecutor.getEngineProvisioning": {
|
|
21825
|
+
capName: "pipeline-executor",
|
|
21826
|
+
capScope: "system",
|
|
21827
|
+
addonId: null,
|
|
21828
|
+
access: "view"
|
|
21829
|
+
},
|
|
21658
21830
|
"pipelineExecutor.getGlobalPipelineConfig": {
|
|
21659
21831
|
capName: "pipeline-executor",
|
|
21660
21832
|
capScope: "system",
|
|
@@ -21859,6 +22031,18 @@ Object.freeze({
|
|
|
21859
22031
|
addonId: null,
|
|
21860
22032
|
access: "view"
|
|
21861
22033
|
},
|
|
22034
|
+
"pipelineOrchestrator.getCameraStatus": {
|
|
22035
|
+
capName: "pipeline-orchestrator",
|
|
22036
|
+
capScope: "system",
|
|
22037
|
+
addonId: null,
|
|
22038
|
+
access: "view"
|
|
22039
|
+
},
|
|
22040
|
+
"pipelineOrchestrator.getCameraStatuses": {
|
|
22041
|
+
capName: "pipeline-orchestrator",
|
|
22042
|
+
capScope: "system",
|
|
22043
|
+
addonId: null,
|
|
22044
|
+
access: "view"
|
|
22045
|
+
},
|
|
21862
22046
|
"pipelineOrchestrator.getCameraStepOverrides": {
|
|
21863
22047
|
capName: "pipeline-orchestrator",
|
|
21864
22048
|
capScope: "system",
|
|
@@ -21943,6 +22127,12 @@ Object.freeze({
|
|
|
21943
22127
|
addonId: null,
|
|
21944
22128
|
access: "create"
|
|
21945
22129
|
},
|
|
22130
|
+
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
22131
|
+
capName: "pipeline-orchestrator",
|
|
22132
|
+
capScope: "system",
|
|
22133
|
+
addonId: null,
|
|
22134
|
+
access: "create"
|
|
22135
|
+
},
|
|
21946
22136
|
"pipelineOrchestrator.setCameraPipelineForAgent": {
|
|
21947
22137
|
capName: "pipeline-orchestrator",
|
|
21948
22138
|
capScope: "system",
|
package/package.json
CHANGED