@camstack/addon-provider-homeassistant 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
|
@@ -4983,6 +4983,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
4983
4983
|
*/
|
|
4984
4984
|
EventCategory["PipelineEngineMetricsSnapshot"] = "pipeline.engine-metrics-snapshot";
|
|
4985
4985
|
/**
|
|
4986
|
+
* Per-node detection-engine runtime-provisioning transition. Emitted by
|
|
4987
|
+
* the detection-pipeline provider on every state change of its lazy
|
|
4988
|
+
* engine-provisioning machine (idle → installing → verifying → ready,
|
|
4989
|
+
* or → failed with a `nextRetryAt`). Payload is the
|
|
4990
|
+
* `EngineProvisioningState` snapshot; `event.source.nodeId` carries the
|
|
4991
|
+
* node. The Pipeline page subscribes to drive a live "installing
|
|
4992
|
+
* OpenVINO… / ready" indicator per node without polling
|
|
4993
|
+
* `pipelineExecutor.getEngineProvisioning`. Telemetry-grade (D8): the UI
|
|
4994
|
+
* also reads the cap snapshot on mount / reconnect. Phase 2.
|
|
4995
|
+
*/
|
|
4996
|
+
EventCategory["PipelineEngineProvisioning"] = "pipeline.engine-provisioning";
|
|
4997
|
+
/**
|
|
4986
4998
|
* Cluster topology snapshot. Carries the same payload returned by
|
|
4987
4999
|
* `nodes.topology` (every reachable node + addons + processes).
|
|
4988
5000
|
* Emitted by the hub on any agent / addon lifecycle change
|
|
@@ -10401,6 +10413,24 @@ var DetectorOutputSchema = object({
|
|
|
10401
10413
|
inferenceMs: number(),
|
|
10402
10414
|
modelId: string()
|
|
10403
10415
|
});
|
|
10416
|
+
var EngineProvisioningSchema = object({
|
|
10417
|
+
runtimeId: _enum([
|
|
10418
|
+
"onnx",
|
|
10419
|
+
"openvino",
|
|
10420
|
+
"coreml"
|
|
10421
|
+
]).nullable(),
|
|
10422
|
+
device: string().nullable(),
|
|
10423
|
+
state: _enum([
|
|
10424
|
+
"idle",
|
|
10425
|
+
"installing",
|
|
10426
|
+
"verifying",
|
|
10427
|
+
"ready",
|
|
10428
|
+
"failed"
|
|
10429
|
+
]),
|
|
10430
|
+
progress: number().optional(),
|
|
10431
|
+
error: string().optional(),
|
|
10432
|
+
nextRetryAt: number().optional()
|
|
10433
|
+
});
|
|
10404
10434
|
var PipelineStepInputSchema = lazy(() => object({
|
|
10405
10435
|
addonId: string(),
|
|
10406
10436
|
modelId: string(),
|
|
@@ -10469,7 +10499,7 @@ var PipelineRunResultBridge = custom();
|
|
|
10469
10499
|
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(), PipelineEngineChoiceSchema, {
|
|
10470
10500
|
kind: "mutation",
|
|
10471
10501
|
auth: "admin"
|
|
10472
|
-
}), method(_void(), record(string(), object({
|
|
10502
|
+
}), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
10473
10503
|
modelId: string(),
|
|
10474
10504
|
settings: record(string(), unknown()).readonly()
|
|
10475
10505
|
}))), method(object({ steps: record(string(), object({
|
|
@@ -15691,7 +15721,10 @@ var AgentAddonConfigSchema = object({
|
|
|
15691
15721
|
modelId: string(),
|
|
15692
15722
|
settings: record(string(), unknown()).readonly()
|
|
15693
15723
|
});
|
|
15694
|
-
var AgentPipelineSettingsSchema = object({
|
|
15724
|
+
var AgentPipelineSettingsSchema = object({
|
|
15725
|
+
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
15726
|
+
maxCameras: number().int().nonnegative().nullable().default(null)
|
|
15727
|
+
});
|
|
15695
15728
|
var CameraPipelineForAgentSchema = object({
|
|
15696
15729
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
15697
15730
|
audio: object({
|
|
@@ -15793,6 +15826,133 @@ var GlobalMetricsSchema = object({
|
|
|
15793
15826
|
* capability providers.
|
|
15794
15827
|
*/
|
|
15795
15828
|
var CapabilityBindingsSchema = record(string(), string());
|
|
15829
|
+
/** Source block — always present; derives from the stream catalog. */
|
|
15830
|
+
var CameraSourceStatusSchema = object({ streams: array(object({
|
|
15831
|
+
camStreamId: string(),
|
|
15832
|
+
codec: string(),
|
|
15833
|
+
width: number(),
|
|
15834
|
+
height: number(),
|
|
15835
|
+
fps: number(),
|
|
15836
|
+
kind: string()
|
|
15837
|
+
})).readonly() });
|
|
15838
|
+
/** Assignment block — always present (orchestrator-local, no remote call). */
|
|
15839
|
+
var CameraAssignmentStatusSchema = object({
|
|
15840
|
+
detectionNodeId: string().nullable(),
|
|
15841
|
+
decoderNodeId: string().nullable(),
|
|
15842
|
+
audioNodeId: string().nullable(),
|
|
15843
|
+
pinned: object({
|
|
15844
|
+
detection: boolean(),
|
|
15845
|
+
decoder: boolean(),
|
|
15846
|
+
audio: boolean()
|
|
15847
|
+
}),
|
|
15848
|
+
reasons: object({
|
|
15849
|
+
detection: string().optional(),
|
|
15850
|
+
decoder: string().optional(),
|
|
15851
|
+
audio: string().optional()
|
|
15852
|
+
})
|
|
15853
|
+
});
|
|
15854
|
+
/** Broker block — null when the broker stage is unreachable or inactive. */
|
|
15855
|
+
var CameraBrokerStatusSchema = object({
|
|
15856
|
+
profiles: array(object({
|
|
15857
|
+
profile: string(),
|
|
15858
|
+
status: string(),
|
|
15859
|
+
codec: string(),
|
|
15860
|
+
width: number(),
|
|
15861
|
+
height: number(),
|
|
15862
|
+
subscribers: number(),
|
|
15863
|
+
inFps: number(),
|
|
15864
|
+
outFps: number()
|
|
15865
|
+
})).readonly(),
|
|
15866
|
+
webrtcSessions: number(),
|
|
15867
|
+
rtspRestream: boolean()
|
|
15868
|
+
});
|
|
15869
|
+
/** Shared-memory ring statistics within the decoder block. */
|
|
15870
|
+
var CameraDecoderShmSchema = object({
|
|
15871
|
+
framesWritten: number(),
|
|
15872
|
+
getFrameHits: number(),
|
|
15873
|
+
getFrameMisses: number(),
|
|
15874
|
+
budgetMb: number()
|
|
15875
|
+
});
|
|
15876
|
+
/** Decoder block — null when the decoder stage is unreachable or inactive. */
|
|
15877
|
+
var CameraDecoderStatusSchema = object({
|
|
15878
|
+
nodeId: string(),
|
|
15879
|
+
formats: array(string()).readonly(),
|
|
15880
|
+
sessionCount: number(),
|
|
15881
|
+
shm: CameraDecoderShmSchema
|
|
15882
|
+
});
|
|
15883
|
+
/** Motion block — null when motion detection is not active for this device. */
|
|
15884
|
+
var CameraMotionStatusSchema = object({
|
|
15885
|
+
enabled: boolean(),
|
|
15886
|
+
fps: number()
|
|
15887
|
+
});
|
|
15888
|
+
/** Detection provisioning sub-block. */
|
|
15889
|
+
var CameraDetectionProvisioningSchema = object({
|
|
15890
|
+
state: _enum([
|
|
15891
|
+
"idle",
|
|
15892
|
+
"installing",
|
|
15893
|
+
"verifying",
|
|
15894
|
+
"ready",
|
|
15895
|
+
"failed"
|
|
15896
|
+
]),
|
|
15897
|
+
error: string().optional()
|
|
15898
|
+
});
|
|
15899
|
+
/** Detection phase — derived from the runner's engine phase. */
|
|
15900
|
+
var CameraDetectionPhaseSchema = _enum([
|
|
15901
|
+
"idle",
|
|
15902
|
+
"watching",
|
|
15903
|
+
"active"
|
|
15904
|
+
]);
|
|
15905
|
+
/** Detection block — null when no detection node is assigned or reachable. */
|
|
15906
|
+
var CameraDetectionStatusSchema = object({
|
|
15907
|
+
nodeId: string(),
|
|
15908
|
+
engine: object({
|
|
15909
|
+
backend: string(),
|
|
15910
|
+
device: string()
|
|
15911
|
+
}),
|
|
15912
|
+
phase: CameraDetectionPhaseSchema,
|
|
15913
|
+
configuredFps: number(),
|
|
15914
|
+
actualFps: number(),
|
|
15915
|
+
queueDepth: number(),
|
|
15916
|
+
avgInferenceMs: number(),
|
|
15917
|
+
provisioning: CameraDetectionProvisioningSchema
|
|
15918
|
+
});
|
|
15919
|
+
/** Audio block — null when no audio node is assigned or reachable. */
|
|
15920
|
+
var CameraAudioStatusSchema = object({
|
|
15921
|
+
nodeId: string(),
|
|
15922
|
+
enabled: boolean()
|
|
15923
|
+
});
|
|
15924
|
+
/** Recording block — null when no recording cap is active for this device. */
|
|
15925
|
+
var CameraRecordingStatusSchema = object({
|
|
15926
|
+
mode: _enum([
|
|
15927
|
+
"off",
|
|
15928
|
+
"continuous",
|
|
15929
|
+
"events"
|
|
15930
|
+
]),
|
|
15931
|
+
active: boolean(),
|
|
15932
|
+
storageBytes: number()
|
|
15933
|
+
});
|
|
15934
|
+
/**
|
|
15935
|
+
* Aggregated per-camera pipeline status — server-composed, single call.
|
|
15936
|
+
*
|
|
15937
|
+
* The `assignment` and `source` blocks are always present.
|
|
15938
|
+
* Every other block is `null` when the stage is inactive or unreachable
|
|
15939
|
+
* during the bounded parallel fan-out in the orchestrator implementation.
|
|
15940
|
+
*
|
|
15941
|
+
* See spec: `docs/superpowers/specs/2026-06-24-camera-status-aggregator-cap.md`
|
|
15942
|
+
*/
|
|
15943
|
+
var CameraStatusSchema = object({
|
|
15944
|
+
deviceId: number(),
|
|
15945
|
+
assignment: CameraAssignmentStatusSchema,
|
|
15946
|
+
source: CameraSourceStatusSchema,
|
|
15947
|
+
broker: CameraBrokerStatusSchema.nullable(),
|
|
15948
|
+
decoder: CameraDecoderStatusSchema.nullable(),
|
|
15949
|
+
motion: CameraMotionStatusSchema.nullable(),
|
|
15950
|
+
detection: CameraDetectionStatusSchema.nullable(),
|
|
15951
|
+
audio: CameraAudioStatusSchema.nullable(),
|
|
15952
|
+
recording: CameraRecordingStatusSchema.nullable(),
|
|
15953
|
+
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
15954
|
+
fetchedAt: number()
|
|
15955
|
+
});
|
|
15796
15956
|
method(object({
|
|
15797
15957
|
deviceId: number(),
|
|
15798
15958
|
agentNodeId: string()
|
|
@@ -15860,6 +16020,12 @@ method(object({
|
|
|
15860
16020
|
}), {
|
|
15861
16021
|
kind: "mutation",
|
|
15862
16022
|
auth: "admin"
|
|
16023
|
+
}), method(object({
|
|
16024
|
+
agentNodeId: string(),
|
|
16025
|
+
maxCameras: number().int().nonnegative().nullable()
|
|
16026
|
+
}), object({ success: literal(true) }), {
|
|
16027
|
+
kind: "mutation",
|
|
16028
|
+
auth: "admin"
|
|
15863
16029
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
15864
16030
|
deviceId: number(),
|
|
15865
16031
|
addonId: string(),
|
|
@@ -15885,7 +16051,7 @@ method(object({
|
|
|
15885
16051
|
}), method(object({
|
|
15886
16052
|
deviceId: number(),
|
|
15887
16053
|
agentNodeId: string().optional()
|
|
15888
|
-
}), CameraPipelineConfigSchema), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
16054
|
+
}), CameraPipelineConfigSchema), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
15889
16055
|
name: string(),
|
|
15890
16056
|
description: string().optional(),
|
|
15891
16057
|
config: CameraPipelineConfigSchema
|
|
@@ -21766,6 +21932,12 @@ Object.freeze({
|
|
|
21766
21932
|
addonId: null,
|
|
21767
21933
|
access: "view"
|
|
21768
21934
|
},
|
|
21935
|
+
"pipelineExecutor.getEngineProvisioning": {
|
|
21936
|
+
capName: "pipeline-executor",
|
|
21937
|
+
capScope: "system",
|
|
21938
|
+
addonId: null,
|
|
21939
|
+
access: "view"
|
|
21940
|
+
},
|
|
21769
21941
|
"pipelineExecutor.getGlobalPipelineConfig": {
|
|
21770
21942
|
capName: "pipeline-executor",
|
|
21771
21943
|
capScope: "system",
|
|
@@ -21970,6 +22142,18 @@ Object.freeze({
|
|
|
21970
22142
|
addonId: null,
|
|
21971
22143
|
access: "view"
|
|
21972
22144
|
},
|
|
22145
|
+
"pipelineOrchestrator.getCameraStatus": {
|
|
22146
|
+
capName: "pipeline-orchestrator",
|
|
22147
|
+
capScope: "system",
|
|
22148
|
+
addonId: null,
|
|
22149
|
+
access: "view"
|
|
22150
|
+
},
|
|
22151
|
+
"pipelineOrchestrator.getCameraStatuses": {
|
|
22152
|
+
capName: "pipeline-orchestrator",
|
|
22153
|
+
capScope: "system",
|
|
22154
|
+
addonId: null,
|
|
22155
|
+
access: "view"
|
|
22156
|
+
},
|
|
21973
22157
|
"pipelineOrchestrator.getCameraStepOverrides": {
|
|
21974
22158
|
capName: "pipeline-orchestrator",
|
|
21975
22159
|
capScope: "system",
|
|
@@ -22054,6 +22238,12 @@ Object.freeze({
|
|
|
22054
22238
|
addonId: null,
|
|
22055
22239
|
access: "create"
|
|
22056
22240
|
},
|
|
22241
|
+
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
22242
|
+
capName: "pipeline-orchestrator",
|
|
22243
|
+
capScope: "system",
|
|
22244
|
+
addonId: null,
|
|
22245
|
+
access: "create"
|
|
22246
|
+
},
|
|
22057
22247
|
"pipelineOrchestrator.setCameraPipelineForAgent": {
|
|
22058
22248
|
capName: "pipeline-orchestrator",
|
|
22059
22249
|
capScope: "system",
|
package/dist/addon.mjs
CHANGED
|
@@ -4982,6 +4982,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
4982
4982
|
*/
|
|
4983
4983
|
EventCategory["PipelineEngineMetricsSnapshot"] = "pipeline.engine-metrics-snapshot";
|
|
4984
4984
|
/**
|
|
4985
|
+
* Per-node detection-engine runtime-provisioning transition. Emitted by
|
|
4986
|
+
* the detection-pipeline provider on every state change of its lazy
|
|
4987
|
+
* engine-provisioning machine (idle → installing → verifying → ready,
|
|
4988
|
+
* or → failed with a `nextRetryAt`). Payload is the
|
|
4989
|
+
* `EngineProvisioningState` snapshot; `event.source.nodeId` carries the
|
|
4990
|
+
* node. The Pipeline page subscribes to drive a live "installing
|
|
4991
|
+
* OpenVINO… / ready" indicator per node without polling
|
|
4992
|
+
* `pipelineExecutor.getEngineProvisioning`. Telemetry-grade (D8): the UI
|
|
4993
|
+
* also reads the cap snapshot on mount / reconnect. Phase 2.
|
|
4994
|
+
*/
|
|
4995
|
+
EventCategory["PipelineEngineProvisioning"] = "pipeline.engine-provisioning";
|
|
4996
|
+
/**
|
|
4985
4997
|
* Cluster topology snapshot. Carries the same payload returned by
|
|
4986
4998
|
* `nodes.topology` (every reachable node + addons + processes).
|
|
4987
4999
|
* Emitted by the hub on any agent / addon lifecycle change
|
|
@@ -10400,6 +10412,24 @@ var DetectorOutputSchema = object({
|
|
|
10400
10412
|
inferenceMs: number(),
|
|
10401
10413
|
modelId: string()
|
|
10402
10414
|
});
|
|
10415
|
+
var EngineProvisioningSchema = object({
|
|
10416
|
+
runtimeId: _enum([
|
|
10417
|
+
"onnx",
|
|
10418
|
+
"openvino",
|
|
10419
|
+
"coreml"
|
|
10420
|
+
]).nullable(),
|
|
10421
|
+
device: string().nullable(),
|
|
10422
|
+
state: _enum([
|
|
10423
|
+
"idle",
|
|
10424
|
+
"installing",
|
|
10425
|
+
"verifying",
|
|
10426
|
+
"ready",
|
|
10427
|
+
"failed"
|
|
10428
|
+
]),
|
|
10429
|
+
progress: number().optional(),
|
|
10430
|
+
error: string().optional(),
|
|
10431
|
+
nextRetryAt: number().optional()
|
|
10432
|
+
});
|
|
10403
10433
|
var PipelineStepInputSchema = lazy(() => object({
|
|
10404
10434
|
addonId: string(),
|
|
10405
10435
|
modelId: string(),
|
|
@@ -10468,7 +10498,7 @@ var PipelineRunResultBridge = custom();
|
|
|
10468
10498
|
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(), PipelineEngineChoiceSchema, {
|
|
10469
10499
|
kind: "mutation",
|
|
10470
10500
|
auth: "admin"
|
|
10471
|
-
}), method(_void(), record(string(), object({
|
|
10501
|
+
}), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
10472
10502
|
modelId: string(),
|
|
10473
10503
|
settings: record(string(), unknown()).readonly()
|
|
10474
10504
|
}))), method(object({ steps: record(string(), object({
|
|
@@ -15690,7 +15720,10 @@ var AgentAddonConfigSchema = object({
|
|
|
15690
15720
|
modelId: string(),
|
|
15691
15721
|
settings: record(string(), unknown()).readonly()
|
|
15692
15722
|
});
|
|
15693
|
-
var AgentPipelineSettingsSchema = object({
|
|
15723
|
+
var AgentPipelineSettingsSchema = object({
|
|
15724
|
+
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
15725
|
+
maxCameras: number().int().nonnegative().nullable().default(null)
|
|
15726
|
+
});
|
|
15694
15727
|
var CameraPipelineForAgentSchema = object({
|
|
15695
15728
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
15696
15729
|
audio: object({
|
|
@@ -15792,6 +15825,133 @@ var GlobalMetricsSchema = object({
|
|
|
15792
15825
|
* capability providers.
|
|
15793
15826
|
*/
|
|
15794
15827
|
var CapabilityBindingsSchema = record(string(), string());
|
|
15828
|
+
/** Source block — always present; derives from the stream catalog. */
|
|
15829
|
+
var CameraSourceStatusSchema = object({ streams: array(object({
|
|
15830
|
+
camStreamId: string(),
|
|
15831
|
+
codec: string(),
|
|
15832
|
+
width: number(),
|
|
15833
|
+
height: number(),
|
|
15834
|
+
fps: number(),
|
|
15835
|
+
kind: string()
|
|
15836
|
+
})).readonly() });
|
|
15837
|
+
/** Assignment block — always present (orchestrator-local, no remote call). */
|
|
15838
|
+
var CameraAssignmentStatusSchema = object({
|
|
15839
|
+
detectionNodeId: string().nullable(),
|
|
15840
|
+
decoderNodeId: string().nullable(),
|
|
15841
|
+
audioNodeId: string().nullable(),
|
|
15842
|
+
pinned: object({
|
|
15843
|
+
detection: boolean(),
|
|
15844
|
+
decoder: boolean(),
|
|
15845
|
+
audio: boolean()
|
|
15846
|
+
}),
|
|
15847
|
+
reasons: object({
|
|
15848
|
+
detection: string().optional(),
|
|
15849
|
+
decoder: string().optional(),
|
|
15850
|
+
audio: string().optional()
|
|
15851
|
+
})
|
|
15852
|
+
});
|
|
15853
|
+
/** Broker block — null when the broker stage is unreachable or inactive. */
|
|
15854
|
+
var CameraBrokerStatusSchema = object({
|
|
15855
|
+
profiles: array(object({
|
|
15856
|
+
profile: string(),
|
|
15857
|
+
status: string(),
|
|
15858
|
+
codec: string(),
|
|
15859
|
+
width: number(),
|
|
15860
|
+
height: number(),
|
|
15861
|
+
subscribers: number(),
|
|
15862
|
+
inFps: number(),
|
|
15863
|
+
outFps: number()
|
|
15864
|
+
})).readonly(),
|
|
15865
|
+
webrtcSessions: number(),
|
|
15866
|
+
rtspRestream: boolean()
|
|
15867
|
+
});
|
|
15868
|
+
/** Shared-memory ring statistics within the decoder block. */
|
|
15869
|
+
var CameraDecoderShmSchema = object({
|
|
15870
|
+
framesWritten: number(),
|
|
15871
|
+
getFrameHits: number(),
|
|
15872
|
+
getFrameMisses: number(),
|
|
15873
|
+
budgetMb: number()
|
|
15874
|
+
});
|
|
15875
|
+
/** Decoder block — null when the decoder stage is unreachable or inactive. */
|
|
15876
|
+
var CameraDecoderStatusSchema = object({
|
|
15877
|
+
nodeId: string(),
|
|
15878
|
+
formats: array(string()).readonly(),
|
|
15879
|
+
sessionCount: number(),
|
|
15880
|
+
shm: CameraDecoderShmSchema
|
|
15881
|
+
});
|
|
15882
|
+
/** Motion block — null when motion detection is not active for this device. */
|
|
15883
|
+
var CameraMotionStatusSchema = object({
|
|
15884
|
+
enabled: boolean(),
|
|
15885
|
+
fps: number()
|
|
15886
|
+
});
|
|
15887
|
+
/** Detection provisioning sub-block. */
|
|
15888
|
+
var CameraDetectionProvisioningSchema = object({
|
|
15889
|
+
state: _enum([
|
|
15890
|
+
"idle",
|
|
15891
|
+
"installing",
|
|
15892
|
+
"verifying",
|
|
15893
|
+
"ready",
|
|
15894
|
+
"failed"
|
|
15895
|
+
]),
|
|
15896
|
+
error: string().optional()
|
|
15897
|
+
});
|
|
15898
|
+
/** Detection phase — derived from the runner's engine phase. */
|
|
15899
|
+
var CameraDetectionPhaseSchema = _enum([
|
|
15900
|
+
"idle",
|
|
15901
|
+
"watching",
|
|
15902
|
+
"active"
|
|
15903
|
+
]);
|
|
15904
|
+
/** Detection block — null when no detection node is assigned or reachable. */
|
|
15905
|
+
var CameraDetectionStatusSchema = object({
|
|
15906
|
+
nodeId: string(),
|
|
15907
|
+
engine: object({
|
|
15908
|
+
backend: string(),
|
|
15909
|
+
device: string()
|
|
15910
|
+
}),
|
|
15911
|
+
phase: CameraDetectionPhaseSchema,
|
|
15912
|
+
configuredFps: number(),
|
|
15913
|
+
actualFps: number(),
|
|
15914
|
+
queueDepth: number(),
|
|
15915
|
+
avgInferenceMs: number(),
|
|
15916
|
+
provisioning: CameraDetectionProvisioningSchema
|
|
15917
|
+
});
|
|
15918
|
+
/** Audio block — null when no audio node is assigned or reachable. */
|
|
15919
|
+
var CameraAudioStatusSchema = object({
|
|
15920
|
+
nodeId: string(),
|
|
15921
|
+
enabled: boolean()
|
|
15922
|
+
});
|
|
15923
|
+
/** Recording block — null when no recording cap is active for this device. */
|
|
15924
|
+
var CameraRecordingStatusSchema = object({
|
|
15925
|
+
mode: _enum([
|
|
15926
|
+
"off",
|
|
15927
|
+
"continuous",
|
|
15928
|
+
"events"
|
|
15929
|
+
]),
|
|
15930
|
+
active: boolean(),
|
|
15931
|
+
storageBytes: number()
|
|
15932
|
+
});
|
|
15933
|
+
/**
|
|
15934
|
+
* Aggregated per-camera pipeline status — server-composed, single call.
|
|
15935
|
+
*
|
|
15936
|
+
* The `assignment` and `source` blocks are always present.
|
|
15937
|
+
* Every other block is `null` when the stage is inactive or unreachable
|
|
15938
|
+
* during the bounded parallel fan-out in the orchestrator implementation.
|
|
15939
|
+
*
|
|
15940
|
+
* See spec: `docs/superpowers/specs/2026-06-24-camera-status-aggregator-cap.md`
|
|
15941
|
+
*/
|
|
15942
|
+
var CameraStatusSchema = object({
|
|
15943
|
+
deviceId: number(),
|
|
15944
|
+
assignment: CameraAssignmentStatusSchema,
|
|
15945
|
+
source: CameraSourceStatusSchema,
|
|
15946
|
+
broker: CameraBrokerStatusSchema.nullable(),
|
|
15947
|
+
decoder: CameraDecoderStatusSchema.nullable(),
|
|
15948
|
+
motion: CameraMotionStatusSchema.nullable(),
|
|
15949
|
+
detection: CameraDetectionStatusSchema.nullable(),
|
|
15950
|
+
audio: CameraAudioStatusSchema.nullable(),
|
|
15951
|
+
recording: CameraRecordingStatusSchema.nullable(),
|
|
15952
|
+
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
15953
|
+
fetchedAt: number()
|
|
15954
|
+
});
|
|
15795
15955
|
method(object({
|
|
15796
15956
|
deviceId: number(),
|
|
15797
15957
|
agentNodeId: string()
|
|
@@ -15859,6 +16019,12 @@ method(object({
|
|
|
15859
16019
|
}), {
|
|
15860
16020
|
kind: "mutation",
|
|
15861
16021
|
auth: "admin"
|
|
16022
|
+
}), method(object({
|
|
16023
|
+
agentNodeId: string(),
|
|
16024
|
+
maxCameras: number().int().nonnegative().nullable()
|
|
16025
|
+
}), object({ success: literal(true) }), {
|
|
16026
|
+
kind: "mutation",
|
|
16027
|
+
auth: "admin"
|
|
15862
16028
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
15863
16029
|
deviceId: number(),
|
|
15864
16030
|
addonId: string(),
|
|
@@ -15884,7 +16050,7 @@ method(object({
|
|
|
15884
16050
|
}), method(object({
|
|
15885
16051
|
deviceId: number(),
|
|
15886
16052
|
agentNodeId: string().optional()
|
|
15887
|
-
}), CameraPipelineConfigSchema), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
16053
|
+
}), CameraPipelineConfigSchema), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
|
|
15888
16054
|
name: string(),
|
|
15889
16055
|
description: string().optional(),
|
|
15890
16056
|
config: CameraPipelineConfigSchema
|
|
@@ -21765,6 +21931,12 @@ Object.freeze({
|
|
|
21765
21931
|
addonId: null,
|
|
21766
21932
|
access: "view"
|
|
21767
21933
|
},
|
|
21934
|
+
"pipelineExecutor.getEngineProvisioning": {
|
|
21935
|
+
capName: "pipeline-executor",
|
|
21936
|
+
capScope: "system",
|
|
21937
|
+
addonId: null,
|
|
21938
|
+
access: "view"
|
|
21939
|
+
},
|
|
21768
21940
|
"pipelineExecutor.getGlobalPipelineConfig": {
|
|
21769
21941
|
capName: "pipeline-executor",
|
|
21770
21942
|
capScope: "system",
|
|
@@ -21969,6 +22141,18 @@ Object.freeze({
|
|
|
21969
22141
|
addonId: null,
|
|
21970
22142
|
access: "view"
|
|
21971
22143
|
},
|
|
22144
|
+
"pipelineOrchestrator.getCameraStatus": {
|
|
22145
|
+
capName: "pipeline-orchestrator",
|
|
22146
|
+
capScope: "system",
|
|
22147
|
+
addonId: null,
|
|
22148
|
+
access: "view"
|
|
22149
|
+
},
|
|
22150
|
+
"pipelineOrchestrator.getCameraStatuses": {
|
|
22151
|
+
capName: "pipeline-orchestrator",
|
|
22152
|
+
capScope: "system",
|
|
22153
|
+
addonId: null,
|
|
22154
|
+
access: "view"
|
|
22155
|
+
},
|
|
21972
22156
|
"pipelineOrchestrator.getCameraStepOverrides": {
|
|
21973
22157
|
capName: "pipeline-orchestrator",
|
|
21974
22158
|
capScope: "system",
|
|
@@ -22053,6 +22237,12 @@ Object.freeze({
|
|
|
22053
22237
|
addonId: null,
|
|
22054
22238
|
access: "create"
|
|
22055
22239
|
},
|
|
22240
|
+
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
22241
|
+
capName: "pipeline-orchestrator",
|
|
22242
|
+
capScope: "system",
|
|
22243
|
+
addonId: null,
|
|
22244
|
+
access: "create"
|
|
22245
|
+
},
|
|
22056
22246
|
"pipelineOrchestrator.setCameraPipelineForAgent": {
|
|
22057
22247
|
capName: "pipeline-orchestrator",
|
|
22058
22248
|
capScope: "system",
|