camstack 1.0.5 → 1.0.6
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.
|
@@ -18242,6 +18242,24 @@ var DetectorOutputSchema = external_exports.object({
|
|
|
18242
18242
|
inferenceMs: external_exports.number(),
|
|
18243
18243
|
modelId: external_exports.string()
|
|
18244
18244
|
});
|
|
18245
|
+
var EngineProvisioningSchema = external_exports.object({
|
|
18246
|
+
runtimeId: external_exports.enum([
|
|
18247
|
+
"onnx",
|
|
18248
|
+
"openvino",
|
|
18249
|
+
"coreml"
|
|
18250
|
+
]).nullable(),
|
|
18251
|
+
device: external_exports.string().nullable(),
|
|
18252
|
+
state: external_exports.enum([
|
|
18253
|
+
"idle",
|
|
18254
|
+
"installing",
|
|
18255
|
+
"verifying",
|
|
18256
|
+
"ready",
|
|
18257
|
+
"failed"
|
|
18258
|
+
]),
|
|
18259
|
+
progress: external_exports.number().optional(),
|
|
18260
|
+
error: external_exports.string().optional(),
|
|
18261
|
+
nextRetryAt: external_exports.number().optional()
|
|
18262
|
+
});
|
|
18245
18263
|
var PipelineStepInputSchema = external_exports.lazy(() => external_exports.object({
|
|
18246
18264
|
addonId: external_exports.string(),
|
|
18247
18265
|
modelId: external_exports.string(),
|
|
@@ -18319,6 +18337,15 @@ var pipelineExecutorCapability = {
|
|
|
18319
18337
|
kind: "mutation",
|
|
18320
18338
|
auth: "admin"
|
|
18321
18339
|
}),
|
|
18340
|
+
/**
|
|
18341
|
+
* Per-node detection-engine provisioning snapshot. Returns the live
|
|
18342
|
+
* state of the lazy runtime-provisioning machine on `nodeId`
|
|
18343
|
+
* (idle / installing / verifying / ready / failed). The UI pairs this
|
|
18344
|
+
* one-shot query with the `pipeline.engine-provisioning` live event
|
|
18345
|
+
* (emitted on every transition) to drive a per-node "engine ready?"
|
|
18346
|
+
* indicator without polling. Phase 2.
|
|
18347
|
+
*/
|
|
18348
|
+
getEngineProvisioning: method(external_exports.object({ nodeId: external_exports.string() }), EngineProvisioningSchema),
|
|
18322
18349
|
getVideoPipelineSteps: method(external_exports.void(), external_exports.record(external_exports.string(), external_exports.object({
|
|
18323
18350
|
modelId: external_exports.string(),
|
|
18324
18351
|
settings: external_exports.record(external_exports.string(), external_exports.unknown()).readonly()
|
|
@@ -22474,7 +22501,10 @@ var AgentAddonConfigSchema = external_exports.object({
|
|
|
22474
22501
|
modelId: external_exports.string(),
|
|
22475
22502
|
settings: external_exports.record(external_exports.string(), external_exports.unknown()).readonly()
|
|
22476
22503
|
});
|
|
22477
|
-
var AgentPipelineSettingsSchema = external_exports.object({
|
|
22504
|
+
var AgentPipelineSettingsSchema = external_exports.object({
|
|
22505
|
+
addonDefaults: external_exports.record(external_exports.string(), AgentAddonConfigSchema).readonly(),
|
|
22506
|
+
maxCameras: external_exports.number().int().nonnegative().nullable().default(null)
|
|
22507
|
+
});
|
|
22478
22508
|
var CameraPipelineForAgentSchema = external_exports.object({
|
|
22479
22509
|
steps: external_exports.array(PipelineStepInputSchema).readonly(),
|
|
22480
22510
|
audio: external_exports.object({
|
|
@@ -22543,6 +22573,117 @@ var GlobalMetricsSchema = external_exports.object({
|
|
|
22543
22573
|
queueDepth: external_exports.number()
|
|
22544
22574
|
});
|
|
22545
22575
|
var CapabilityBindingsSchema = external_exports.record(external_exports.string(), external_exports.string());
|
|
22576
|
+
var CameraSourceStreamSchema = external_exports.object({
|
|
22577
|
+
camStreamId: external_exports.string(),
|
|
22578
|
+
codec: external_exports.string(),
|
|
22579
|
+
width: external_exports.number(),
|
|
22580
|
+
height: external_exports.number(),
|
|
22581
|
+
fps: external_exports.number(),
|
|
22582
|
+
kind: external_exports.string()
|
|
22583
|
+
});
|
|
22584
|
+
var CameraSourceStatusSchema = external_exports.object({ streams: external_exports.array(CameraSourceStreamSchema).readonly() });
|
|
22585
|
+
var CameraAssignmentStatusSchema = external_exports.object({
|
|
22586
|
+
detectionNodeId: external_exports.string().nullable(),
|
|
22587
|
+
decoderNodeId: external_exports.string().nullable(),
|
|
22588
|
+
audioNodeId: external_exports.string().nullable(),
|
|
22589
|
+
pinned: external_exports.object({
|
|
22590
|
+
detection: external_exports.boolean(),
|
|
22591
|
+
decoder: external_exports.boolean(),
|
|
22592
|
+
audio: external_exports.boolean()
|
|
22593
|
+
}),
|
|
22594
|
+
reasons: external_exports.object({
|
|
22595
|
+
detection: external_exports.string().optional(),
|
|
22596
|
+
decoder: external_exports.string().optional(),
|
|
22597
|
+
audio: external_exports.string().optional()
|
|
22598
|
+
})
|
|
22599
|
+
});
|
|
22600
|
+
var CameraBrokerProfileSchema = external_exports.object({
|
|
22601
|
+
profile: external_exports.string(),
|
|
22602
|
+
status: external_exports.string(),
|
|
22603
|
+
codec: external_exports.string(),
|
|
22604
|
+
width: external_exports.number(),
|
|
22605
|
+
height: external_exports.number(),
|
|
22606
|
+
subscribers: external_exports.number(),
|
|
22607
|
+
inFps: external_exports.number(),
|
|
22608
|
+
outFps: external_exports.number()
|
|
22609
|
+
});
|
|
22610
|
+
var CameraBrokerStatusSchema = external_exports.object({
|
|
22611
|
+
profiles: external_exports.array(CameraBrokerProfileSchema).readonly(),
|
|
22612
|
+
webrtcSessions: external_exports.number(),
|
|
22613
|
+
rtspRestream: external_exports.boolean()
|
|
22614
|
+
});
|
|
22615
|
+
var CameraDecoderShmSchema = external_exports.object({
|
|
22616
|
+
framesWritten: external_exports.number(),
|
|
22617
|
+
getFrameHits: external_exports.number(),
|
|
22618
|
+
getFrameMisses: external_exports.number(),
|
|
22619
|
+
budgetMb: external_exports.number()
|
|
22620
|
+
});
|
|
22621
|
+
var CameraDecoderStatusSchema = external_exports.object({
|
|
22622
|
+
nodeId: external_exports.string(),
|
|
22623
|
+
formats: external_exports.array(external_exports.string()).readonly(),
|
|
22624
|
+
sessionCount: external_exports.number(),
|
|
22625
|
+
shm: CameraDecoderShmSchema
|
|
22626
|
+
});
|
|
22627
|
+
var CameraMotionStatusSchema = external_exports.object({
|
|
22628
|
+
enabled: external_exports.boolean(),
|
|
22629
|
+
fps: external_exports.number()
|
|
22630
|
+
});
|
|
22631
|
+
var CameraDetectionProvisioningStateSchema = external_exports.enum([
|
|
22632
|
+
"idle",
|
|
22633
|
+
"installing",
|
|
22634
|
+
"verifying",
|
|
22635
|
+
"ready",
|
|
22636
|
+
"failed"
|
|
22637
|
+
]);
|
|
22638
|
+
var CameraDetectionProvisioningSchema = external_exports.object({
|
|
22639
|
+
state: CameraDetectionProvisioningStateSchema,
|
|
22640
|
+
error: external_exports.string().optional()
|
|
22641
|
+
});
|
|
22642
|
+
var CameraDetectionPhaseSchema = external_exports.enum([
|
|
22643
|
+
"idle",
|
|
22644
|
+
"watching",
|
|
22645
|
+
"active"
|
|
22646
|
+
]);
|
|
22647
|
+
var CameraDetectionStatusSchema = external_exports.object({
|
|
22648
|
+
nodeId: external_exports.string(),
|
|
22649
|
+
engine: external_exports.object({
|
|
22650
|
+
backend: external_exports.string(),
|
|
22651
|
+
device: external_exports.string()
|
|
22652
|
+
}),
|
|
22653
|
+
phase: CameraDetectionPhaseSchema,
|
|
22654
|
+
configuredFps: external_exports.number(),
|
|
22655
|
+
actualFps: external_exports.number(),
|
|
22656
|
+
queueDepth: external_exports.number(),
|
|
22657
|
+
avgInferenceMs: external_exports.number(),
|
|
22658
|
+
provisioning: CameraDetectionProvisioningSchema
|
|
22659
|
+
});
|
|
22660
|
+
var CameraAudioStatusSchema = external_exports.object({
|
|
22661
|
+
nodeId: external_exports.string(),
|
|
22662
|
+
enabled: external_exports.boolean()
|
|
22663
|
+
});
|
|
22664
|
+
var CameraRecordingModeSchema = external_exports.enum([
|
|
22665
|
+
"off",
|
|
22666
|
+
"continuous",
|
|
22667
|
+
"events"
|
|
22668
|
+
]);
|
|
22669
|
+
var CameraRecordingStatusSchema = external_exports.object({
|
|
22670
|
+
mode: CameraRecordingModeSchema,
|
|
22671
|
+
active: external_exports.boolean(),
|
|
22672
|
+
storageBytes: external_exports.number()
|
|
22673
|
+
});
|
|
22674
|
+
var CameraStatusSchema = external_exports.object({
|
|
22675
|
+
deviceId: external_exports.number(),
|
|
22676
|
+
assignment: CameraAssignmentStatusSchema,
|
|
22677
|
+
source: CameraSourceStatusSchema,
|
|
22678
|
+
broker: CameraBrokerStatusSchema.nullable(),
|
|
22679
|
+
decoder: CameraDecoderStatusSchema.nullable(),
|
|
22680
|
+
motion: CameraMotionStatusSchema.nullable(),
|
|
22681
|
+
detection: CameraDetectionStatusSchema.nullable(),
|
|
22682
|
+
audio: CameraAudioStatusSchema.nullable(),
|
|
22683
|
+
recording: CameraRecordingStatusSchema.nullable(),
|
|
22684
|
+
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
22685
|
+
fetchedAt: external_exports.number()
|
|
22686
|
+
});
|
|
22546
22687
|
var pipelineOrchestratorCapability = {
|
|
22547
22688
|
name: "pipeline-orchestrator",
|
|
22548
22689
|
scope: "system",
|
|
@@ -22707,6 +22848,25 @@ var pipelineOrchestratorCapability = {
|
|
|
22707
22848
|
kind: "mutation",
|
|
22708
22849
|
auth: "admin"
|
|
22709
22850
|
}),
|
|
22851
|
+
/**
|
|
22852
|
+
* Set the per-node camera cap for one agent.
|
|
22853
|
+
*
|
|
22854
|
+
* `maxCameras: 0` and `maxCameras: null` are both treated as unlimited
|
|
22855
|
+
* by the load balancer (0 is stored as-is; the balancer treats ≤0 as
|
|
22856
|
+
* unlimited alongside null). Pass `null` to clear an existing cap.
|
|
22857
|
+
* Note: the admin UI normalises 0→null before calling this method, so
|
|
22858
|
+
* `maxCameras: 0` only reaches the store via direct SDK or CLI calls.
|
|
22859
|
+
* Changes take effect immediately on the next dispatch cycle — cameras
|
|
22860
|
+
* currently assigned over-cap are left in place (no forced eviction),
|
|
22861
|
+
* but new assignments obey the updated cap.
|
|
22862
|
+
*/
|
|
22863
|
+
setAgentMaxCameras: method(external_exports.object({
|
|
22864
|
+
agentNodeId: external_exports.string(),
|
|
22865
|
+
maxCameras: external_exports.number().int().nonnegative().nullable()
|
|
22866
|
+
}), external_exports.object({ success: external_exports.literal(true) }), {
|
|
22867
|
+
kind: "mutation",
|
|
22868
|
+
auth: "admin"
|
|
22869
|
+
}),
|
|
22710
22870
|
/** Read one camera's settings. Null when never touched (inherits agent defaults fully). */
|
|
22711
22871
|
getCameraSettings: method(external_exports.object({ deviceId: external_exports.number() }), CameraPipelineSettingsSchema.nullable()),
|
|
22712
22872
|
/** Set or clear the 3-state toggle for one (camera, addonId). Pass `enabled: null` to clear and revert to agent default. */
|
|
@@ -22747,6 +22907,29 @@ var pipelineOrchestratorCapability = {
|
|
|
22747
22907
|
deviceId: external_exports.number(),
|
|
22748
22908
|
agentNodeId: external_exports.string().optional()
|
|
22749
22909
|
}), CameraPipelineConfigSchema),
|
|
22910
|
+
/**
|
|
22911
|
+
* Server-composed aggregated status for a single camera.
|
|
22912
|
+
*
|
|
22913
|
+
* Fans out in parallel (bounded, per-stage graceful degradation) to
|
|
22914
|
+
* broker / decoder / motion / detection / audio / recording source caps
|
|
22915
|
+
* via `ctx.api`. A stage whose source errors or times out becomes `null`
|
|
22916
|
+
* in the returned payload — one slow agent never breaks the whole call.
|
|
22917
|
+
*
|
|
22918
|
+
* Intended for "on open / on camera select" snapshots. Live deltas
|
|
22919
|
+
* keep arriving from the existing ~1Hz events the UI already subscribes to.
|
|
22920
|
+
*/
|
|
22921
|
+
getCameraStatus: method(external_exports.object({ deviceId: external_exports.number() }), CameraStatusSchema),
|
|
22922
|
+
/**
|
|
22923
|
+
* Server-composed aggregated status for multiple cameras in one call.
|
|
22924
|
+
*
|
|
22925
|
+
* `deviceIds` defaults to all cameras currently tracked by the
|
|
22926
|
+
* orchestrator's assignment map when omitted.
|
|
22927
|
+
*
|
|
22928
|
+
* Runs per-device composition in parallel (bounded). Use this to
|
|
22929
|
+
* populate the cluster assignments table and the pipeline flow overview
|
|
22930
|
+
* rail without issuing N parallel browser round-trips.
|
|
22931
|
+
*/
|
|
22932
|
+
getCameraStatuses: method(external_exports.object({ deviceIds: external_exports.array(external_exports.number()).optional() }), external_exports.array(CameraStatusSchema).readonly()),
|
|
22750
22933
|
/** List every template the operator has saved. */
|
|
22751
22934
|
listTemplates: method(external_exports.void(), external_exports.array(PipelineTemplateSchema).readonly()),
|
|
22752
22935
|
/** Create a new named preset from a given CameraPipelineConfig. */
|
|
@@ -29538,6 +29721,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
29538
29721
|
addonId: null,
|
|
29539
29722
|
access: "view"
|
|
29540
29723
|
},
|
|
29724
|
+
"pipelineExecutor.getEngineProvisioning": {
|
|
29725
|
+
capName: "pipeline-executor",
|
|
29726
|
+
capScope: "system",
|
|
29727
|
+
addonId: null,
|
|
29728
|
+
access: "view"
|
|
29729
|
+
},
|
|
29541
29730
|
"pipelineExecutor.getGlobalPipelineConfig": {
|
|
29542
29731
|
capName: "pipeline-executor",
|
|
29543
29732
|
capScope: "system",
|
|
@@ -29742,6 +29931,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
29742
29931
|
addonId: null,
|
|
29743
29932
|
access: "view"
|
|
29744
29933
|
},
|
|
29934
|
+
"pipelineOrchestrator.getCameraStatus": {
|
|
29935
|
+
capName: "pipeline-orchestrator",
|
|
29936
|
+
capScope: "system",
|
|
29937
|
+
addonId: null,
|
|
29938
|
+
access: "view"
|
|
29939
|
+
},
|
|
29940
|
+
"pipelineOrchestrator.getCameraStatuses": {
|
|
29941
|
+
capName: "pipeline-orchestrator",
|
|
29942
|
+
capScope: "system",
|
|
29943
|
+
addonId: null,
|
|
29944
|
+
access: "view"
|
|
29945
|
+
},
|
|
29745
29946
|
"pipelineOrchestrator.getCameraStepOverrides": {
|
|
29746
29947
|
capName: "pipeline-orchestrator",
|
|
29747
29948
|
capScope: "system",
|
|
@@ -29826,6 +30027,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
29826
30027
|
addonId: null,
|
|
29827
30028
|
access: "create"
|
|
29828
30029
|
},
|
|
30030
|
+
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
30031
|
+
capName: "pipeline-orchestrator",
|
|
30032
|
+
capScope: "system",
|
|
30033
|
+
addonId: null,
|
|
30034
|
+
access: "create"
|
|
30035
|
+
},
|
|
29829
30036
|
"pipelineOrchestrator.setCameraPipelineForAgent": {
|
|
29830
30037
|
capName: "pipeline-orchestrator",
|
|
29831
30038
|
capScope: "system",
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runDiscover
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-YPXFYDJW.js";
|
|
5
5
|
import "./chunk-K3NQKI34.js";
|
|
6
6
|
|
|
7
7
|
// src/cli.ts
|
|
@@ -608,7 +608,7 @@ function isUnknown(_value) {
|
|
|
608
608
|
return true;
|
|
609
609
|
}
|
|
610
610
|
async function resolveServerInteractive(presetNamespace) {
|
|
611
|
-
const { discoverNodes, resolveHubFromDiscovered } = await import("./discover-
|
|
611
|
+
const { discoverNodes, resolveHubFromDiscovered } = await import("./discover-ETACVQW3.js");
|
|
612
612
|
if (presetNamespace) {
|
|
613
613
|
const spinner4 = clack.spinner();
|
|
614
614
|
spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
|