@camstack/addon-mqtt-broker 1.1.28 → 1.2.1
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/mqtt-broker.addon.js +213 -106
- package/dist/mqtt-broker.addon.mjs +213 -106
- package/package.json +1 -1
|
@@ -7113,6 +7113,17 @@ var ModelCatalogEntrySchema = object({
|
|
|
7113
7113
|
"imagenet",
|
|
7114
7114
|
"none"
|
|
7115
7115
|
]).optional(),
|
|
7116
|
+
/**
|
|
7117
|
+
* The model already applies softmax IN-GRAPH — its raw output is a
|
|
7118
|
+
* probability distribution, not logits. When set, the `softmax`
|
|
7119
|
+
* postprocessor must NOT re-apply softmax: re-softmaxing an already-normalised
|
|
7120
|
+
* probability vector collapses it toward uniform (top-1 score craters far
|
|
7121
|
+
* below its true value, making every confidence gate meaningless). Absent ⇒
|
|
7122
|
+
* the output is raw logits and the postprocessor applies softmax (the normal
|
|
7123
|
+
* case). Set on the Google AIY Birds `bird-classifier` (softmax baked into the
|
|
7124
|
+
* TF graph). Threaded to the Python pool via `PoolModelConfig.outputProbabilities`.
|
|
7125
|
+
*/
|
|
7126
|
+
outputProbabilities: boolean().optional(),
|
|
7116
7127
|
preprocessMode: _enum(["letterbox", "resize"]).optional(),
|
|
7117
7128
|
/**
|
|
7118
7129
|
* Per-MODEL postprocessor override. Absent ⇒ the step's own
|
|
@@ -11126,10 +11137,7 @@ var ConfigUISchemaNullableBridge = custom();
|
|
|
11126
11137
|
var InferenceCapabilitiesBridge = custom();
|
|
11127
11138
|
var ModelAvailabilityListBridge = custom();
|
|
11128
11139
|
var PipelineRunResultBridge = custom();
|
|
11129
|
-
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(),
|
|
11130
|
-
kind: "mutation",
|
|
11131
|
-
auth: "admin"
|
|
11132
|
-
}), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
11140
|
+
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
11133
11141
|
modelId: string(),
|
|
11134
11142
|
settings: record(string(), unknown()).readonly()
|
|
11135
11143
|
}))), method(object({ steps: record(string(), object({
|
|
@@ -11189,13 +11197,33 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
11189
11197
|
* (inputClasses ≠ null) are skipped and served per-track via
|
|
11190
11198
|
* pipelineRunner.runDetailSubtree (two-plane design).
|
|
11191
11199
|
*/
|
|
11192
|
-
plane: _enum(["full", "frame"]).optional()
|
|
11200
|
+
plane: _enum(["full", "frame"]).optional(),
|
|
11201
|
+
/**
|
|
11202
|
+
* Inference-device selector (Phase 2 multi-device). Format
|
|
11203
|
+
* `<backend>:<device>` (e.g. `openvino:gpu`, `edgetpu:usb`, `cpu`).
|
|
11204
|
+
* Omitted ⇒ the runner's default device (current single-engine
|
|
11205
|
+
* behaviour). Selects WHICH device pool of the node runs the call.
|
|
11206
|
+
*/
|
|
11207
|
+
deviceKey: string().optional()
|
|
11193
11208
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
11194
11209
|
engine: PipelineEngineChoiceSchema.optional(),
|
|
11195
11210
|
steps: array(PipelineStepInputSchema).min(1),
|
|
11196
11211
|
frames: array(FrameInputSchema).min(1).max(255),
|
|
11197
11212
|
deviceId: number().optional(),
|
|
11198
|
-
sessionId: string().optional()
|
|
11213
|
+
sessionId: string().optional(),
|
|
11214
|
+
/**
|
|
11215
|
+
* Pure-inference benchmark hint. A NONZERO uint32 pins every frame in
|
|
11216
|
+
* the batch to the Python pool's bench preprocess cache
|
|
11217
|
+
* (`_bench_frame_id`) so a REPEATED benchmark frame is decoded +
|
|
11218
|
+
* preprocessed ONCE and every later inference is a pure-inference cache
|
|
11219
|
+
* hit — the sustained-throughput run measures inference, not
|
|
11220
|
+
* decode+preprocess+infer. Omitted/0 for live frames (all different →
|
|
11221
|
+
* full preprocess every call, correct). Fresh per sustained run;
|
|
11222
|
+
* released via `uncacheFrame`.
|
|
11223
|
+
*/
|
|
11224
|
+
frameId: number().int().nonnegative().optional(),
|
|
11225
|
+
/** Inference-device selector (Phase 2 multi-device); see runPipeline. */
|
|
11226
|
+
deviceKey: string().optional()
|
|
11199
11227
|
}), object({ results: array(PipelineRunResultBridge).readonly() }), { kind: "mutation" }), method(object({
|
|
11200
11228
|
data: _instanceof(Uint8Array),
|
|
11201
11229
|
width: number().int().positive(),
|
|
@@ -11227,8 +11255,18 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
11227
11255
|
* - `runtime` — main camera-serving engine (no idle TTL).
|
|
11228
11256
|
* - `warm-override` — benchmark/test override held in the warm
|
|
11229
11257
|
* cache; auto-disposed after the idle TTL.
|
|
11258
|
+
* - `device-pool` — a concurrent per-device pool (Phase 2
|
|
11259
|
+
* multi-device, keyed by `deviceKey`) resolved
|
|
11260
|
+
* via `resolveDeviceFactory`. Runs alongside the
|
|
11261
|
+
* `runtime` engine on a DIFFERENT accelerator
|
|
11262
|
+
* (NPU / iGPU / Coral) — this is how the
|
|
11263
|
+
* Engines tab shows all pools running at once.
|
|
11230
11264
|
*/
|
|
11231
|
-
kind: _enum([
|
|
11265
|
+
kind: _enum([
|
|
11266
|
+
"runtime",
|
|
11267
|
+
"warm-override",
|
|
11268
|
+
"device-pool"
|
|
11269
|
+
]),
|
|
11232
11270
|
/** Native pid of the underlying Python pool (null when no pool). */
|
|
11233
11271
|
poolPid: number().nullable(),
|
|
11234
11272
|
/** ms since this factory was last used (null when not warm-tracked). */
|
|
@@ -11330,7 +11368,21 @@ var NativeCropResultSchema = object({
|
|
|
11330
11368
|
/** Packed rgb (24-bit) pixels of the crop. */
|
|
11331
11369
|
bytes: _instanceof(Uint8Array),
|
|
11332
11370
|
width: number().int().positive(),
|
|
11333
|
-
height: number().int().positive()
|
|
11371
|
+
height: number().int().positive(),
|
|
11372
|
+
/**
|
|
11373
|
+
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
11374
|
+
* `keyFrame`) can reject a degraded fallback:
|
|
11375
|
+
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
11376
|
+
* quality path).
|
|
11377
|
+
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
11378
|
+
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
11379
|
+
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
11380
|
+
*
|
|
11381
|
+
* OPTIONAL: a pre-tier runner (version skew) omits it — an ABSENT `tier` MUST be
|
|
11382
|
+
* treated as `native` (accepted) by every consumer so mixed-version clusters
|
|
11383
|
+
* keep the pre-tier behaviour. An ROI miss returns `null` (no tier at all).
|
|
11384
|
+
*/
|
|
11385
|
+
tier: _enum(["native", "ram-fullframe"]).optional()
|
|
11334
11386
|
});
|
|
11335
11387
|
/** Parent detection context passed to `runDetailSubtree` — the crop's
|
|
11336
11388
|
* originating detection, in FRAME-space coordinates. Reuses
|
|
@@ -11570,7 +11622,14 @@ var RunnerCameraConfigSchema = object({
|
|
|
11570
11622
|
* camera's detect node differs from its source-owner (P2d, gated by the
|
|
11571
11623
|
* `remoteSourcingNodes` rollout setting).
|
|
11572
11624
|
*/
|
|
11573
|
-
frameSource: RunnerFrameSourceSchema.default({ kind: "local-broker" })
|
|
11625
|
+
frameSource: RunnerFrameSourceSchema.default({ kind: "local-broker" }),
|
|
11626
|
+
/**
|
|
11627
|
+
* Inference-device selector for this camera's sessions (Phase 2 multi-device).
|
|
11628
|
+
* Format `<backend>:<device>` (e.g. `openvino:gpu`, `edgetpu:usb`, `cpu`);
|
|
11629
|
+
* omitted ⇒ the runner's default device. The engine itself stays node-local —
|
|
11630
|
+
* this only selects WHICH device pool of that node runs the session.
|
|
11631
|
+
*/
|
|
11632
|
+
deviceKey: string().optional()
|
|
11574
11633
|
});
|
|
11575
11634
|
motionFpsField.min, motionFpsField.max, motionFpsField.step, motionFpsField.default, detectionFpsField.min, detectionFpsField.max, detectionFpsField.step, detectionFpsField.default, motionCooldownMsField.min, motionCooldownMsField.max, motionCooldownMsField.step, motionCooldownMsField.default, occupancyRecheckSecField.min, occupancyRecheckSecField.max, occupancyRecheckSecField.step, occupancyRecheckSecField.default, occupancyRecheckFramesField.min, occupancyRecheckFramesField.max, occupancyRecheckFramesField.step, occupancyRecheckFramesField.default;
|
|
11576
11635
|
/**
|
|
@@ -11591,6 +11650,19 @@ var RunnerLocalLoadSchema = object({
|
|
|
11591
11650
|
avgInferenceTimeMs: number(),
|
|
11592
11651
|
/** Total queue depth across motion + detection queues. */
|
|
11593
11652
|
queueDepthTotal: number(),
|
|
11653
|
+
/**
|
|
11654
|
+
* Per-inference-device live load (multi-device C4). One entry per deviceKey
|
|
11655
|
+
* this runner currently has attached cameras on, so the orchestrator's second
|
|
11656
|
+
* `balance()` pass (over a node's devices) weights on real per-pool session
|
|
11657
|
+
* counts. Empty on single-device / pre-multi-device runners. `queueDepthTotal`
|
|
11658
|
+
* per device is 0 until the pool backlog gets a public accessor (follow-up).
|
|
11659
|
+
*/
|
|
11660
|
+
devices: array(object({
|
|
11661
|
+
deviceKey: string(),
|
|
11662
|
+
backend: string(),
|
|
11663
|
+
attachedCameras: number(),
|
|
11664
|
+
queueDepthTotal: number()
|
|
11665
|
+
})).default([]),
|
|
11594
11666
|
/** Hardware capability flags reported by this node. */
|
|
11595
11667
|
hardware: object({
|
|
11596
11668
|
hasGpu: boolean(),
|
|
@@ -13066,6 +13138,8 @@ method(_void(), _void(), { kind: "mutation" }), method(_void(), _void(), { kind:
|
|
|
13066
13138
|
kind: "mutation",
|
|
13067
13139
|
auth: "admin"
|
|
13068
13140
|
});
|
|
13141
|
+
DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
|
|
13142
|
+
new Set(Object.values(DeviceType));
|
|
13069
13143
|
/**
|
|
13070
13144
|
* `addon-pages` — system-scoped singleton aggregator cap. Public-facing
|
|
13071
13145
|
* surface that admin-ui consumes through `useAddonPagesListPages()`.
|
|
@@ -14688,7 +14762,8 @@ var LinkedDeviceSchema = object({
|
|
|
14688
14762
|
deviceId: number(),
|
|
14689
14763
|
name: string(),
|
|
14690
14764
|
location: string().nullable(),
|
|
14691
|
-
features: array(string())
|
|
14765
|
+
features: array(string()),
|
|
14766
|
+
producesTrackedEvents: boolean().optional()
|
|
14692
14767
|
});
|
|
14693
14768
|
var SavedDeviceRowSchema = object({
|
|
14694
14769
|
/** Numeric id reserved at allocateDeviceId time. */
|
|
@@ -16337,6 +16412,7 @@ var TrackSchema = object({
|
|
|
16337
16412
|
deviceId: number(),
|
|
16338
16413
|
className: string(),
|
|
16339
16414
|
label: string().optional(),
|
|
16415
|
+
producingDeviceName: string().optional(),
|
|
16340
16416
|
/** Track provenance. Absent ⇒ `pipeline` (legacy rows). */
|
|
16341
16417
|
source: TrackSourceSchema.optional(),
|
|
16342
16418
|
firstSeen: number(),
|
|
@@ -16474,7 +16550,8 @@ var MediaFileKindEnum = _enum([
|
|
|
16474
16550
|
"fullFrameBoxed",
|
|
16475
16551
|
"faceCrop",
|
|
16476
16552
|
"plateCrop",
|
|
16477
|
-
"keyFrame"
|
|
16553
|
+
"keyFrame",
|
|
16554
|
+
"keyFrameSmall"
|
|
16478
16555
|
]);
|
|
16479
16556
|
var MediaFileSchema = object({
|
|
16480
16557
|
key: string(),
|
|
@@ -16803,13 +16880,11 @@ var PipelineTemplateSchema = object({
|
|
|
16803
16880
|
createdAt: string(),
|
|
16804
16881
|
updatedAt: string()
|
|
16805
16882
|
});
|
|
16806
|
-
var
|
|
16807
|
-
enabled: boolean(),
|
|
16883
|
+
var DeviceStepConfigSchema = object({
|
|
16808
16884
|
modelId: string().optional(),
|
|
16809
|
-
settings: record(string(), unknown()).
|
|
16885
|
+
settings: record(string(), unknown()).optional()
|
|
16810
16886
|
});
|
|
16811
16887
|
var AgentPipelineSettingsSchema = object({
|
|
16812
|
-
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
16813
16888
|
maxCameras: number().int().nonnegative().nullable().default(null),
|
|
16814
16889
|
/** Per-node detection weight (relative share for the quota balancer). */
|
|
16815
16890
|
detectWeight: number().positive().optional(),
|
|
@@ -16833,7 +16908,22 @@ var AgentPipelineSettingsSchema = object({
|
|
|
16833
16908
|
* it already uses to reach the hub). Set this only when the auto-detected
|
|
16834
16909
|
* address is wrong (multi-homed host, NAT, custom interface).
|
|
16835
16910
|
*/
|
|
16836
|
-
reachableHost: string().optional()
|
|
16911
|
+
reachableHost: string().optional(),
|
|
16912
|
+
/**
|
|
16913
|
+
* Multi-device inference opt-in (Phase 4). Per-node map deviceKey → {enabled,
|
|
16914
|
+
* weight, steps}. Absent / all-disabled ⇒ the node's single default
|
|
16915
|
+
* accelerator (safe default); two+ enabled ⇒ the dispatcher balances
|
|
16916
|
+
* detection sessions across them so they run CONCURRENTLY. `steps` is the
|
|
16917
|
+
* per-(node,device) BASE provisioning (`stepId → {modelId?, settings?}`) —
|
|
16918
|
+
* the default model/settings for every camera landing on that accelerator;
|
|
16919
|
+
* a stepId absent ⇒ the step uses that device's format default.
|
|
16920
|
+
*/
|
|
16921
|
+
inferenceDevices: record(string(), object({
|
|
16922
|
+
enabled: boolean(),
|
|
16923
|
+
weight: number().positive().optional(),
|
|
16924
|
+
maxSessions: number().int().positive().optional(),
|
|
16925
|
+
steps: record(string(), DeviceStepConfigSchema).optional()
|
|
16926
|
+
})).optional()
|
|
16837
16927
|
});
|
|
16838
16928
|
var CameraPipelineForAgentSchema = object({
|
|
16839
16929
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
@@ -16843,14 +16933,13 @@ var CameraPipelineForAgentSchema = object({
|
|
|
16843
16933
|
}).nullable()
|
|
16844
16934
|
});
|
|
16845
16935
|
var CameraStepOverridePatchSchema = object({
|
|
16846
|
-
enabled: boolean().optional(),
|
|
16847
16936
|
modelId: string().optional(),
|
|
16848
16937
|
settings: record(string(), unknown()).readonly().optional()
|
|
16849
16938
|
});
|
|
16850
16939
|
var CameraPipelineSettingsSchema = object({
|
|
16851
16940
|
pinnedAgentNodeId: string().optional(),
|
|
16852
16941
|
stepToggles: record(string(), boolean()).optional(),
|
|
16853
|
-
|
|
16942
|
+
stepOverridesByDevice: record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).optional(),
|
|
16854
16943
|
pipelineByAgent: record(string(), CameraPipelineForAgentSchema).optional()
|
|
16855
16944
|
});
|
|
16856
16945
|
/**
|
|
@@ -17064,6 +17153,44 @@ var CameraStatusSchema = object({
|
|
|
17064
17153
|
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
17065
17154
|
fetchedAt: number()
|
|
17066
17155
|
});
|
|
17156
|
+
var NodeInferenceDeviceSchema = object({
|
|
17157
|
+
/** Stable per-node device key, e.g. `openvino:npu`, `edgetpu:usb`, `cpu`. */
|
|
17158
|
+
key: string(),
|
|
17159
|
+
backend: string(),
|
|
17160
|
+
device: string(),
|
|
17161
|
+
format: _enum(MODEL_FORMATS),
|
|
17162
|
+
/** Whether the node's live probe reports the device as usable right now. */
|
|
17163
|
+
available: boolean(),
|
|
17164
|
+
/**
|
|
17165
|
+
* Whether this device participates in dispatch. AUTO default (spec C2):
|
|
17166
|
+
* accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
|
|
17167
|
+
* entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
|
|
17168
|
+
* not a balanced target). An explicit stored value always wins; a stored-only
|
|
17169
|
+
* (unavailable) key keeps its stored value.
|
|
17170
|
+
*/
|
|
17171
|
+
enabled: boolean(),
|
|
17172
|
+
/** Relative balancer weight for the enabled device (default 1). */
|
|
17173
|
+
weight: number(),
|
|
17174
|
+
/** Per-device concurrent-session cap; null = unlimited (multi-device C4). */
|
|
17175
|
+
maxSessions: number().nullable(),
|
|
17176
|
+
/** Object-detection model the executor defaults to for this deviceKey. */
|
|
17177
|
+
defaultModelId: string(),
|
|
17178
|
+
/**
|
|
17179
|
+
* Per-(node,device) BASE provisioning (C7.2/C7.4) — the RAW stored
|
|
17180
|
+
* `stepId → {modelId?, settings?}` map from `inferenceDevices[key].steps`.
|
|
17181
|
+
* Absent/empty ⇒ no base (every step uses its device format default). The
|
|
17182
|
+
* UI cross-references `pipelineExecutor.getSchema` for the models actually
|
|
17183
|
+
* available per format; this is the stored selection that becomes the
|
|
17184
|
+
* default for EVERY camera landing on this accelerator.
|
|
17185
|
+
*/
|
|
17186
|
+
steps: record(string(), DeviceStepConfigSchema).optional()
|
|
17187
|
+
});
|
|
17188
|
+
var NodeInferenceDevicesSchema = object({
|
|
17189
|
+
nodeId: string(),
|
|
17190
|
+
/** False when the node's platform-probe was unreachable (no live device set). */
|
|
17191
|
+
reachable: boolean(),
|
|
17192
|
+
devices: array(NodeInferenceDeviceSchema).readonly()
|
|
17193
|
+
});
|
|
17067
17194
|
method(object({
|
|
17068
17195
|
deviceId: number(),
|
|
17069
17196
|
agentNodeId: string()
|
|
@@ -17073,7 +17200,13 @@ method(object({
|
|
|
17073
17200
|
}), method(object({ deviceId: number() }), object({ success: literal(true) }), {
|
|
17074
17201
|
kind: "mutation",
|
|
17075
17202
|
auth: "admin"
|
|
17076
|
-
}), method(
|
|
17203
|
+
}), method(object({
|
|
17204
|
+
deviceId: number(),
|
|
17205
|
+
deviceKey: string()
|
|
17206
|
+
}), object({ success: literal(true) }), {
|
|
17207
|
+
kind: "mutation",
|
|
17208
|
+
auth: "admin"
|
|
17209
|
+
}), method(object({ deviceId: number() }), object({ deviceKey: string().nullable() })), method(_void(), object({ migrated: number() }), {
|
|
17077
17210
|
kind: "mutation",
|
|
17078
17211
|
auth: "admin"
|
|
17079
17212
|
}), method(_void(), array(PipelineAssignmentSchema).readonly()), method(object({ deviceId: number() }), PipelineAssignmentSchema.nullable()), method(_void(), array(AgentLoadSummarySchema).readonly()), method(_void(), GlobalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(object({ nodeId: string() }), CapabilityBindingsSchema), method(object({
|
|
@@ -17107,13 +17240,7 @@ method(object({
|
|
|
17107
17240
|
}))), method(object({ agentNodeId: string() }), AgentPipelineSettingsSchema.nullable()), method(_void(), array(object({
|
|
17108
17241
|
nodeId: string(),
|
|
17109
17242
|
settings: AgentPipelineSettingsSchema
|
|
17110
|
-
})).readonly()), method(object({
|
|
17111
|
-
agentNodeId: string(),
|
|
17112
|
-
defaults: record(string(), AgentAddonConfigSchema)
|
|
17113
|
-
}), object({ success: literal(true) }), {
|
|
17114
|
-
kind: "mutation",
|
|
17115
|
-
auth: "admin"
|
|
17116
|
-
}), method(object({ agentNodeId: string() }), object({
|
|
17243
|
+
})).readonly()), method(object({ agentNodeId: string() }), object({
|
|
17117
17244
|
success: boolean(),
|
|
17118
17245
|
removed: boolean()
|
|
17119
17246
|
}), {
|
|
@@ -17145,7 +17272,18 @@ method(object({
|
|
|
17145
17272
|
}), object({ success: literal(true) }), {
|
|
17146
17273
|
kind: "mutation",
|
|
17147
17274
|
auth: "admin"
|
|
17148
|
-
}), method(object({
|
|
17275
|
+
}), method(object({
|
|
17276
|
+
agentNodeId: string(),
|
|
17277
|
+
inferenceDevices: record(string(), object({
|
|
17278
|
+
enabled: boolean(),
|
|
17279
|
+
weight: number().positive().optional(),
|
|
17280
|
+
maxSessions: number().int().positive().optional(),
|
|
17281
|
+
steps: record(string(), DeviceStepConfigSchema).optional()
|
|
17282
|
+
}))
|
|
17283
|
+
}), object({ success: literal(true) }), {
|
|
17284
|
+
kind: "mutation",
|
|
17285
|
+
auth: "admin"
|
|
17286
|
+
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({ agentNodeId: string() }), object({
|
|
17149
17287
|
success: literal(true),
|
|
17150
17288
|
/** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
|
|
17151
17289
|
effectiveModelId: string().nullable(),
|
|
@@ -17161,9 +17299,10 @@ method(object({
|
|
|
17161
17299
|
}), object({ success: literal(true) }), {
|
|
17162
17300
|
kind: "mutation",
|
|
17163
17301
|
auth: "admin"
|
|
17164
|
-
}), method(object({ deviceId: number() }), record(string(), record(string(), CameraStepOverridePatchSchema)).nullable()), method(object({
|
|
17302
|
+
}), method(object({ deviceId: number() }), record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).nullable()), method(object({
|
|
17165
17303
|
deviceId: number(),
|
|
17166
17304
|
agentNodeId: string(),
|
|
17305
|
+
deviceKey: string(),
|
|
17167
17306
|
addonId: string(),
|
|
17168
17307
|
patch: CameraStepOverridePatchSchema.nullable()
|
|
17169
17308
|
}), object({ success: literal(true) }), {
|
|
@@ -17200,14 +17339,13 @@ method(object({
|
|
|
17200
17339
|
});
|
|
17201
17340
|
/**
|
|
17202
17341
|
* server-management — per-NODE singleton capability for a node's ROOT
|
|
17203
|
-
* package lifecycle (runtime-updatable node packages
|
|
17204
|
-
* agents).
|
|
17342
|
+
* package lifecycle (runtime-updatable node packages).
|
|
17205
17343
|
*
|
|
17206
|
-
*
|
|
17207
|
-
*
|
|
17208
|
-
*
|
|
17209
|
-
*
|
|
17210
|
-
*
|
|
17344
|
+
* Every node role runs the SAME root package (`@camstack/server`), which
|
|
17345
|
+
* carries the whole software stack in its npm dep tree, so ONE version
|
|
17346
|
+
* describes the node. Updates stage into `<dataDir>/server-root/` and apply
|
|
17347
|
+
* on restart via the baked starter (single-copy in-place swap — no probation,
|
|
17348
|
+
* no auto-rollback).
|
|
17211
17349
|
*
|
|
17212
17350
|
* Providers:
|
|
17213
17351
|
* - HUB: `ServerUpdateService` behind the `server-provided` mount
|
|
@@ -17315,7 +17453,8 @@ method(_void(), ServerPackageStatusSchema, { auth: "admin" }), method(_void(), S
|
|
|
17315
17453
|
/** Explicit target version; omitted = latest from the registry. */
|
|
17316
17454
|
version: string().optional() }), ServerUpdateActionResultSchema, {
|
|
17317
17455
|
kind: "mutation",
|
|
17318
|
-
auth: "admin"
|
|
17456
|
+
auth: "admin",
|
|
17457
|
+
timeoutMs: 16 * 6e4
|
|
17319
17458
|
}), method(_void(), ServerUpdateActionResultSchema, {
|
|
17320
17459
|
kind: "mutation",
|
|
17321
17460
|
auth: "admin"
|
|
@@ -18359,22 +18498,6 @@ var AddonAutoUpdateSchema = ChannelWithInheritSchema;
|
|
|
18359
18498
|
var RestartAddonResultSchema = unknown();
|
|
18360
18499
|
var InstallPackageResultSchema = unknown();
|
|
18361
18500
|
var ReloadPackagesResultSchema = unknown();
|
|
18362
|
-
/**
|
|
18363
|
-
* Result of `updateFrameworkPackage`. The cap method returns BEFORE the
|
|
18364
|
-
* server restarts so the admin UI can react to the `restartingAt`
|
|
18365
|
-
* timestamp (shows reconnect overlay). The transition from
|
|
18366
|
-
* `fromVersion` to `toVersion` will be confirmed by a subsequent
|
|
18367
|
-
* `system.restart-completed` event after the new process boots.
|
|
18368
|
-
*
|
|
18369
|
-
* Spec: docs/superpowers/specs/2026-05-14-framework-live-update-design.md
|
|
18370
|
-
*/
|
|
18371
|
-
var UpdateFrameworkPackageResultSchema = object({
|
|
18372
|
-
packageName: string(),
|
|
18373
|
-
fromVersion: string(),
|
|
18374
|
-
toVersion: string(),
|
|
18375
|
-
/** Ms-epoch the server scheduled its self-restart. */
|
|
18376
|
-
restartingAt: number()
|
|
18377
|
-
});
|
|
18378
18501
|
var BulkUpdateItemStatusSchema = _enum([
|
|
18379
18502
|
"queued",
|
|
18380
18503
|
"updating",
|
|
@@ -18502,13 +18625,6 @@ method(_void(), array(AddonListItemSchema).readonly()), method(object({
|
|
|
18502
18625
|
}), object({ success: literal(true) }), {
|
|
18503
18626
|
kind: "mutation",
|
|
18504
18627
|
auth: "admin"
|
|
18505
|
-
}), method(object({
|
|
18506
|
-
packageName: string().min(1),
|
|
18507
|
-
version: string().optional(),
|
|
18508
|
-
deferRestart: boolean().optional()
|
|
18509
|
-
}), UpdateFrameworkPackageResultSchema, {
|
|
18510
|
-
kind: "mutation",
|
|
18511
|
-
auth: "admin"
|
|
18512
18628
|
}), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({ addonId: string() }), RestartAddonResultSchema, {
|
|
18513
18629
|
kind: "mutation",
|
|
18514
18630
|
auth: "admin"
|
|
@@ -19374,10 +19490,10 @@ var TopologyCategorySchema = object({
|
|
|
19374
19490
|
addons: array(TopologyCategoryAddonSchema).readonly()
|
|
19375
19491
|
});
|
|
19376
19492
|
/**
|
|
19377
|
-
* The node's runtime-updatable ROOT package (`@camstack/server`
|
|
19378
|
-
*
|
|
19379
|
-
* version visibility for the Server management surface. Nullable:
|
|
19380
|
-
* rows and
|
|
19493
|
+
* The node's runtime-updatable ROOT package (`@camstack/server` — the single
|
|
19494
|
+
* root package for every node role) as reported by its `registerNode`
|
|
19495
|
+
* manifest — version visibility for the Server management surface. Nullable:
|
|
19496
|
+
* offline rows and nodes that never reported one.
|
|
19381
19497
|
*/
|
|
19382
19498
|
var TopologyRootPackageSchema = object({
|
|
19383
19499
|
name: string(),
|
|
@@ -19765,17 +19881,28 @@ var PlatformScoreSchema = object({
|
|
|
19765
19881
|
format: _enum([
|
|
19766
19882
|
"onnx",
|
|
19767
19883
|
"coreml",
|
|
19768
|
-
"openvino"
|
|
19884
|
+
"openvino",
|
|
19885
|
+
"tflite"
|
|
19769
19886
|
]),
|
|
19770
19887
|
score: number(),
|
|
19771
19888
|
reason: string(),
|
|
19772
19889
|
available: boolean()
|
|
19773
19890
|
});
|
|
19891
|
+
var InferenceDeviceDescriptorSchema = object({
|
|
19892
|
+
key: string(),
|
|
19893
|
+
backend: string(),
|
|
19894
|
+
device: string(),
|
|
19895
|
+
format: ModelFormatSchema,
|
|
19896
|
+
runtime: literal("python"),
|
|
19897
|
+
score: number(),
|
|
19898
|
+
available: boolean()
|
|
19899
|
+
});
|
|
19774
19900
|
var PlatformCapabilitiesSchema = object({
|
|
19775
19901
|
hardware: HardwareInfoSchema,
|
|
19776
19902
|
scores: array(PlatformScoreSchema).readonly(),
|
|
19777
19903
|
bestScore: PlatformScoreSchema,
|
|
19778
|
-
pythonPath: string().nullable()
|
|
19904
|
+
pythonPath: string().nullable(),
|
|
19905
|
+
devices: array(InferenceDeviceDescriptorSchema).readonly()
|
|
19779
19906
|
});
|
|
19780
19907
|
var ModelRequirementSchema = object({
|
|
19781
19908
|
modelId: string(),
|
|
@@ -20654,12 +20781,6 @@ Object.freeze({
|
|
|
20654
20781
|
addonId: null,
|
|
20655
20782
|
access: "delete"
|
|
20656
20783
|
},
|
|
20657
|
-
"addons.updateFrameworkPackage": {
|
|
20658
|
-
capName: "addons",
|
|
20659
|
-
capScope: "system",
|
|
20660
|
-
addonId: null,
|
|
20661
|
-
access: "create"
|
|
20662
|
-
},
|
|
20663
20784
|
"addons.updatePackage": {
|
|
20664
20785
|
capName: "addons",
|
|
20665
20786
|
capScope: "system",
|
|
@@ -23432,12 +23553,6 @@ Object.freeze({
|
|
|
23432
23553
|
addonId: null,
|
|
23433
23554
|
access: "view"
|
|
23434
23555
|
},
|
|
23435
|
-
"pipelineExecutor.reprobeEngine": {
|
|
23436
|
-
capName: "pipeline-executor",
|
|
23437
|
-
capScope: "system",
|
|
23438
|
-
addonId: null,
|
|
23439
|
-
access: "create"
|
|
23440
|
-
},
|
|
23441
23556
|
"pipelineExecutor.runAudioTest": {
|
|
23442
23557
|
capName: "pipeline-executor",
|
|
23443
23558
|
capScope: "system",
|
|
@@ -23588,6 +23703,12 @@ Object.freeze({
|
|
|
23588
23703
|
addonId: null,
|
|
23589
23704
|
access: "view"
|
|
23590
23705
|
},
|
|
23706
|
+
"pipelineOrchestrator.getNodeInferenceDevices": {
|
|
23707
|
+
capName: "pipeline-orchestrator",
|
|
23708
|
+
capScope: "system",
|
|
23709
|
+
addonId: null,
|
|
23710
|
+
access: "view"
|
|
23711
|
+
},
|
|
23591
23712
|
"pipelineOrchestrator.getPipelineAssignment": {
|
|
23592
23713
|
capName: "pipeline-orchestrator",
|
|
23593
23714
|
capScope: "system",
|
|
@@ -23600,6 +23721,12 @@ Object.freeze({
|
|
|
23600
23721
|
addonId: null,
|
|
23601
23722
|
access: "view"
|
|
23602
23723
|
},
|
|
23724
|
+
"pipelineOrchestrator.getPipelineDevicePin": {
|
|
23725
|
+
capName: "pipeline-orchestrator",
|
|
23726
|
+
capScope: "system",
|
|
23727
|
+
addonId: null,
|
|
23728
|
+
access: "view"
|
|
23729
|
+
},
|
|
23603
23730
|
"pipelineOrchestrator.listAgentSettings": {
|
|
23604
23731
|
capName: "pipeline-orchestrator",
|
|
23605
23732
|
capScope: "system",
|
|
@@ -23642,19 +23769,19 @@ Object.freeze({
|
|
|
23642
23769
|
addonId: null,
|
|
23643
23770
|
access: "create"
|
|
23644
23771
|
},
|
|
23645
|
-
"pipelineOrchestrator.
|
|
23772
|
+
"pipelineOrchestrator.setAgentCapabilities": {
|
|
23646
23773
|
capName: "pipeline-orchestrator",
|
|
23647
23774
|
capScope: "system",
|
|
23648
23775
|
addonId: null,
|
|
23649
23776
|
access: "create"
|
|
23650
23777
|
},
|
|
23651
|
-
"pipelineOrchestrator.
|
|
23778
|
+
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
23652
23779
|
capName: "pipeline-orchestrator",
|
|
23653
23780
|
capScope: "system",
|
|
23654
23781
|
addonId: null,
|
|
23655
23782
|
access: "create"
|
|
23656
23783
|
},
|
|
23657
|
-
"pipelineOrchestrator.
|
|
23784
|
+
"pipelineOrchestrator.setAgentInferenceDevices": {
|
|
23658
23785
|
capName: "pipeline-orchestrator",
|
|
23659
23786
|
capScope: "system",
|
|
23660
23787
|
addonId: null,
|
|
@@ -23696,6 +23823,12 @@ Object.freeze({
|
|
|
23696
23823
|
addonId: null,
|
|
23697
23824
|
access: "create"
|
|
23698
23825
|
},
|
|
23826
|
+
"pipelineOrchestrator.setPipelineDevicePin": {
|
|
23827
|
+
capName: "pipeline-orchestrator",
|
|
23828
|
+
capScope: "system",
|
|
23829
|
+
addonId: null,
|
|
23830
|
+
access: "create"
|
|
23831
|
+
},
|
|
23699
23832
|
"pipelineOrchestrator.unassignAudio": {
|
|
23700
23833
|
capName: "pipeline-orchestrator",
|
|
23701
23834
|
capScope: "system",
|
|
@@ -25248,32 +25381,6 @@ Object.freeze({
|
|
|
25248
25381
|
"network-access": "ingress",
|
|
25249
25382
|
"smtp-provider": "email"
|
|
25250
25383
|
});
|
|
25251
|
-
var frameworkSwapPackageSchema = object({
|
|
25252
|
-
name: string(),
|
|
25253
|
-
stagedPath: string(),
|
|
25254
|
-
backupPath: string(),
|
|
25255
|
-
toVersion: string(),
|
|
25256
|
-
fromVersion: string().nullable()
|
|
25257
|
-
});
|
|
25258
|
-
object({
|
|
25259
|
-
jobId: string(),
|
|
25260
|
-
taskId: string(),
|
|
25261
|
-
packages: array(frameworkSwapPackageSchema),
|
|
25262
|
-
requestedAtMs: number(),
|
|
25263
|
-
schemaVersion: literal(1)
|
|
25264
|
-
});
|
|
25265
|
-
object({
|
|
25266
|
-
jobId: string(),
|
|
25267
|
-
taskId: string(),
|
|
25268
|
-
backups: array(object({
|
|
25269
|
-
name: string(),
|
|
25270
|
-
backupPath: string(),
|
|
25271
|
-
livePath: string()
|
|
25272
|
-
})),
|
|
25273
|
-
appliedAtMs: number(),
|
|
25274
|
-
bootAttempts: number(),
|
|
25275
|
-
schemaVersion: literal(1)
|
|
25276
|
-
});
|
|
25277
25384
|
//#endregion
|
|
25278
25385
|
//#region ../../node_modules/xtend/immutable.js
|
|
25279
25386
|
var require_immutable = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
@@ -7108,6 +7108,17 @@ var ModelCatalogEntrySchema = object({
|
|
|
7108
7108
|
"imagenet",
|
|
7109
7109
|
"none"
|
|
7110
7110
|
]).optional(),
|
|
7111
|
+
/**
|
|
7112
|
+
* The model already applies softmax IN-GRAPH — its raw output is a
|
|
7113
|
+
* probability distribution, not logits. When set, the `softmax`
|
|
7114
|
+
* postprocessor must NOT re-apply softmax: re-softmaxing an already-normalised
|
|
7115
|
+
* probability vector collapses it toward uniform (top-1 score craters far
|
|
7116
|
+
* below its true value, making every confidence gate meaningless). Absent ⇒
|
|
7117
|
+
* the output is raw logits and the postprocessor applies softmax (the normal
|
|
7118
|
+
* case). Set on the Google AIY Birds `bird-classifier` (softmax baked into the
|
|
7119
|
+
* TF graph). Threaded to the Python pool via `PoolModelConfig.outputProbabilities`.
|
|
7120
|
+
*/
|
|
7121
|
+
outputProbabilities: boolean().optional(),
|
|
7111
7122
|
preprocessMode: _enum(["letterbox", "resize"]).optional(),
|
|
7112
7123
|
/**
|
|
7113
7124
|
* Per-MODEL postprocessor override. Absent ⇒ the step's own
|
|
@@ -11121,10 +11132,7 @@ var ConfigUISchemaNullableBridge = custom();
|
|
|
11121
11132
|
var InferenceCapabilitiesBridge = custom();
|
|
11122
11133
|
var ModelAvailabilityListBridge = custom();
|
|
11123
11134
|
var PipelineRunResultBridge = custom();
|
|
11124
|
-
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(),
|
|
11125
|
-
kind: "mutation",
|
|
11126
|
-
auth: "admin"
|
|
11127
|
-
}), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
11135
|
+
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
11128
11136
|
modelId: string(),
|
|
11129
11137
|
settings: record(string(), unknown()).readonly()
|
|
11130
11138
|
}))), method(object({ steps: record(string(), object({
|
|
@@ -11184,13 +11192,33 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
11184
11192
|
* (inputClasses ≠ null) are skipped and served per-track via
|
|
11185
11193
|
* pipelineRunner.runDetailSubtree (two-plane design).
|
|
11186
11194
|
*/
|
|
11187
|
-
plane: _enum(["full", "frame"]).optional()
|
|
11195
|
+
plane: _enum(["full", "frame"]).optional(),
|
|
11196
|
+
/**
|
|
11197
|
+
* Inference-device selector (Phase 2 multi-device). Format
|
|
11198
|
+
* `<backend>:<device>` (e.g. `openvino:gpu`, `edgetpu:usb`, `cpu`).
|
|
11199
|
+
* Omitted ⇒ the runner's default device (current single-engine
|
|
11200
|
+
* behaviour). Selects WHICH device pool of the node runs the call.
|
|
11201
|
+
*/
|
|
11202
|
+
deviceKey: string().optional()
|
|
11188
11203
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
11189
11204
|
engine: PipelineEngineChoiceSchema.optional(),
|
|
11190
11205
|
steps: array(PipelineStepInputSchema).min(1),
|
|
11191
11206
|
frames: array(FrameInputSchema).min(1).max(255),
|
|
11192
11207
|
deviceId: number().optional(),
|
|
11193
|
-
sessionId: string().optional()
|
|
11208
|
+
sessionId: string().optional(),
|
|
11209
|
+
/**
|
|
11210
|
+
* Pure-inference benchmark hint. A NONZERO uint32 pins every frame in
|
|
11211
|
+
* the batch to the Python pool's bench preprocess cache
|
|
11212
|
+
* (`_bench_frame_id`) so a REPEATED benchmark frame is decoded +
|
|
11213
|
+
* preprocessed ONCE and every later inference is a pure-inference cache
|
|
11214
|
+
* hit — the sustained-throughput run measures inference, not
|
|
11215
|
+
* decode+preprocess+infer. Omitted/0 for live frames (all different →
|
|
11216
|
+
* full preprocess every call, correct). Fresh per sustained run;
|
|
11217
|
+
* released via `uncacheFrame`.
|
|
11218
|
+
*/
|
|
11219
|
+
frameId: number().int().nonnegative().optional(),
|
|
11220
|
+
/** Inference-device selector (Phase 2 multi-device); see runPipeline. */
|
|
11221
|
+
deviceKey: string().optional()
|
|
11194
11222
|
}), object({ results: array(PipelineRunResultBridge).readonly() }), { kind: "mutation" }), method(object({
|
|
11195
11223
|
data: _instanceof(Uint8Array),
|
|
11196
11224
|
width: number().int().positive(),
|
|
@@ -11222,8 +11250,18 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
11222
11250
|
* - `runtime` — main camera-serving engine (no idle TTL).
|
|
11223
11251
|
* - `warm-override` — benchmark/test override held in the warm
|
|
11224
11252
|
* cache; auto-disposed after the idle TTL.
|
|
11253
|
+
* - `device-pool` — a concurrent per-device pool (Phase 2
|
|
11254
|
+
* multi-device, keyed by `deviceKey`) resolved
|
|
11255
|
+
* via `resolveDeviceFactory`. Runs alongside the
|
|
11256
|
+
* `runtime` engine on a DIFFERENT accelerator
|
|
11257
|
+
* (NPU / iGPU / Coral) — this is how the
|
|
11258
|
+
* Engines tab shows all pools running at once.
|
|
11225
11259
|
*/
|
|
11226
|
-
kind: _enum([
|
|
11260
|
+
kind: _enum([
|
|
11261
|
+
"runtime",
|
|
11262
|
+
"warm-override",
|
|
11263
|
+
"device-pool"
|
|
11264
|
+
]),
|
|
11227
11265
|
/** Native pid of the underlying Python pool (null when no pool). */
|
|
11228
11266
|
poolPid: number().nullable(),
|
|
11229
11267
|
/** ms since this factory was last used (null when not warm-tracked). */
|
|
@@ -11325,7 +11363,21 @@ var NativeCropResultSchema = object({
|
|
|
11325
11363
|
/** Packed rgb (24-bit) pixels of the crop. */
|
|
11326
11364
|
bytes: _instanceof(Uint8Array),
|
|
11327
11365
|
width: number().int().positive(),
|
|
11328
|
-
height: number().int().positive()
|
|
11366
|
+
height: number().int().positive(),
|
|
11367
|
+
/**
|
|
11368
|
+
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
11369
|
+
* `keyFrame`) can reject a degraded fallback:
|
|
11370
|
+
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
11371
|
+
* quality path).
|
|
11372
|
+
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
11373
|
+
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
11374
|
+
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
11375
|
+
*
|
|
11376
|
+
* OPTIONAL: a pre-tier runner (version skew) omits it — an ABSENT `tier` MUST be
|
|
11377
|
+
* treated as `native` (accepted) by every consumer so mixed-version clusters
|
|
11378
|
+
* keep the pre-tier behaviour. An ROI miss returns `null` (no tier at all).
|
|
11379
|
+
*/
|
|
11380
|
+
tier: _enum(["native", "ram-fullframe"]).optional()
|
|
11329
11381
|
});
|
|
11330
11382
|
/** Parent detection context passed to `runDetailSubtree` — the crop's
|
|
11331
11383
|
* originating detection, in FRAME-space coordinates. Reuses
|
|
@@ -11565,7 +11617,14 @@ var RunnerCameraConfigSchema = object({
|
|
|
11565
11617
|
* camera's detect node differs from its source-owner (P2d, gated by the
|
|
11566
11618
|
* `remoteSourcingNodes` rollout setting).
|
|
11567
11619
|
*/
|
|
11568
|
-
frameSource: RunnerFrameSourceSchema.default({ kind: "local-broker" })
|
|
11620
|
+
frameSource: RunnerFrameSourceSchema.default({ kind: "local-broker" }),
|
|
11621
|
+
/**
|
|
11622
|
+
* Inference-device selector for this camera's sessions (Phase 2 multi-device).
|
|
11623
|
+
* Format `<backend>:<device>` (e.g. `openvino:gpu`, `edgetpu:usb`, `cpu`);
|
|
11624
|
+
* omitted ⇒ the runner's default device. The engine itself stays node-local —
|
|
11625
|
+
* this only selects WHICH device pool of that node runs the session.
|
|
11626
|
+
*/
|
|
11627
|
+
deviceKey: string().optional()
|
|
11569
11628
|
});
|
|
11570
11629
|
motionFpsField.min, motionFpsField.max, motionFpsField.step, motionFpsField.default, detectionFpsField.min, detectionFpsField.max, detectionFpsField.step, detectionFpsField.default, motionCooldownMsField.min, motionCooldownMsField.max, motionCooldownMsField.step, motionCooldownMsField.default, occupancyRecheckSecField.min, occupancyRecheckSecField.max, occupancyRecheckSecField.step, occupancyRecheckSecField.default, occupancyRecheckFramesField.min, occupancyRecheckFramesField.max, occupancyRecheckFramesField.step, occupancyRecheckFramesField.default;
|
|
11571
11630
|
/**
|
|
@@ -11586,6 +11645,19 @@ var RunnerLocalLoadSchema = object({
|
|
|
11586
11645
|
avgInferenceTimeMs: number(),
|
|
11587
11646
|
/** Total queue depth across motion + detection queues. */
|
|
11588
11647
|
queueDepthTotal: number(),
|
|
11648
|
+
/**
|
|
11649
|
+
* Per-inference-device live load (multi-device C4). One entry per deviceKey
|
|
11650
|
+
* this runner currently has attached cameras on, so the orchestrator's second
|
|
11651
|
+
* `balance()` pass (over a node's devices) weights on real per-pool session
|
|
11652
|
+
* counts. Empty on single-device / pre-multi-device runners. `queueDepthTotal`
|
|
11653
|
+
* per device is 0 until the pool backlog gets a public accessor (follow-up).
|
|
11654
|
+
*/
|
|
11655
|
+
devices: array(object({
|
|
11656
|
+
deviceKey: string(),
|
|
11657
|
+
backend: string(),
|
|
11658
|
+
attachedCameras: number(),
|
|
11659
|
+
queueDepthTotal: number()
|
|
11660
|
+
})).default([]),
|
|
11589
11661
|
/** Hardware capability flags reported by this node. */
|
|
11590
11662
|
hardware: object({
|
|
11591
11663
|
hasGpu: boolean(),
|
|
@@ -13061,6 +13133,8 @@ method(_void(), _void(), { kind: "mutation" }), method(_void(), _void(), { kind:
|
|
|
13061
13133
|
kind: "mutation",
|
|
13062
13134
|
auth: "admin"
|
|
13063
13135
|
});
|
|
13136
|
+
DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
|
|
13137
|
+
new Set(Object.values(DeviceType));
|
|
13064
13138
|
/**
|
|
13065
13139
|
* `addon-pages` — system-scoped singleton aggregator cap. Public-facing
|
|
13066
13140
|
* surface that admin-ui consumes through `useAddonPagesListPages()`.
|
|
@@ -14683,7 +14757,8 @@ var LinkedDeviceSchema = object({
|
|
|
14683
14757
|
deviceId: number(),
|
|
14684
14758
|
name: string(),
|
|
14685
14759
|
location: string().nullable(),
|
|
14686
|
-
features: array(string())
|
|
14760
|
+
features: array(string()),
|
|
14761
|
+
producesTrackedEvents: boolean().optional()
|
|
14687
14762
|
});
|
|
14688
14763
|
var SavedDeviceRowSchema = object({
|
|
14689
14764
|
/** Numeric id reserved at allocateDeviceId time. */
|
|
@@ -16332,6 +16407,7 @@ var TrackSchema = object({
|
|
|
16332
16407
|
deviceId: number(),
|
|
16333
16408
|
className: string(),
|
|
16334
16409
|
label: string().optional(),
|
|
16410
|
+
producingDeviceName: string().optional(),
|
|
16335
16411
|
/** Track provenance. Absent ⇒ `pipeline` (legacy rows). */
|
|
16336
16412
|
source: TrackSourceSchema.optional(),
|
|
16337
16413
|
firstSeen: number(),
|
|
@@ -16469,7 +16545,8 @@ var MediaFileKindEnum = _enum([
|
|
|
16469
16545
|
"fullFrameBoxed",
|
|
16470
16546
|
"faceCrop",
|
|
16471
16547
|
"plateCrop",
|
|
16472
|
-
"keyFrame"
|
|
16548
|
+
"keyFrame",
|
|
16549
|
+
"keyFrameSmall"
|
|
16473
16550
|
]);
|
|
16474
16551
|
var MediaFileSchema = object({
|
|
16475
16552
|
key: string(),
|
|
@@ -16798,13 +16875,11 @@ var PipelineTemplateSchema = object({
|
|
|
16798
16875
|
createdAt: string(),
|
|
16799
16876
|
updatedAt: string()
|
|
16800
16877
|
});
|
|
16801
|
-
var
|
|
16802
|
-
enabled: boolean(),
|
|
16878
|
+
var DeviceStepConfigSchema = object({
|
|
16803
16879
|
modelId: string().optional(),
|
|
16804
|
-
settings: record(string(), unknown()).
|
|
16880
|
+
settings: record(string(), unknown()).optional()
|
|
16805
16881
|
});
|
|
16806
16882
|
var AgentPipelineSettingsSchema = object({
|
|
16807
|
-
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
16808
16883
|
maxCameras: number().int().nonnegative().nullable().default(null),
|
|
16809
16884
|
/** Per-node detection weight (relative share for the quota balancer). */
|
|
16810
16885
|
detectWeight: number().positive().optional(),
|
|
@@ -16828,7 +16903,22 @@ var AgentPipelineSettingsSchema = object({
|
|
|
16828
16903
|
* it already uses to reach the hub). Set this only when the auto-detected
|
|
16829
16904
|
* address is wrong (multi-homed host, NAT, custom interface).
|
|
16830
16905
|
*/
|
|
16831
|
-
reachableHost: string().optional()
|
|
16906
|
+
reachableHost: string().optional(),
|
|
16907
|
+
/**
|
|
16908
|
+
* Multi-device inference opt-in (Phase 4). Per-node map deviceKey → {enabled,
|
|
16909
|
+
* weight, steps}. Absent / all-disabled ⇒ the node's single default
|
|
16910
|
+
* accelerator (safe default); two+ enabled ⇒ the dispatcher balances
|
|
16911
|
+
* detection sessions across them so they run CONCURRENTLY. `steps` is the
|
|
16912
|
+
* per-(node,device) BASE provisioning (`stepId → {modelId?, settings?}`) —
|
|
16913
|
+
* the default model/settings for every camera landing on that accelerator;
|
|
16914
|
+
* a stepId absent ⇒ the step uses that device's format default.
|
|
16915
|
+
*/
|
|
16916
|
+
inferenceDevices: record(string(), object({
|
|
16917
|
+
enabled: boolean(),
|
|
16918
|
+
weight: number().positive().optional(),
|
|
16919
|
+
maxSessions: number().int().positive().optional(),
|
|
16920
|
+
steps: record(string(), DeviceStepConfigSchema).optional()
|
|
16921
|
+
})).optional()
|
|
16832
16922
|
});
|
|
16833
16923
|
var CameraPipelineForAgentSchema = object({
|
|
16834
16924
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
@@ -16838,14 +16928,13 @@ var CameraPipelineForAgentSchema = object({
|
|
|
16838
16928
|
}).nullable()
|
|
16839
16929
|
});
|
|
16840
16930
|
var CameraStepOverridePatchSchema = object({
|
|
16841
|
-
enabled: boolean().optional(),
|
|
16842
16931
|
modelId: string().optional(),
|
|
16843
16932
|
settings: record(string(), unknown()).readonly().optional()
|
|
16844
16933
|
});
|
|
16845
16934
|
var CameraPipelineSettingsSchema = object({
|
|
16846
16935
|
pinnedAgentNodeId: string().optional(),
|
|
16847
16936
|
stepToggles: record(string(), boolean()).optional(),
|
|
16848
|
-
|
|
16937
|
+
stepOverridesByDevice: record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).optional(),
|
|
16849
16938
|
pipelineByAgent: record(string(), CameraPipelineForAgentSchema).optional()
|
|
16850
16939
|
});
|
|
16851
16940
|
/**
|
|
@@ -17059,6 +17148,44 @@ var CameraStatusSchema = object({
|
|
|
17059
17148
|
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
17060
17149
|
fetchedAt: number()
|
|
17061
17150
|
});
|
|
17151
|
+
var NodeInferenceDeviceSchema = object({
|
|
17152
|
+
/** Stable per-node device key, e.g. `openvino:npu`, `edgetpu:usb`, `cpu`. */
|
|
17153
|
+
key: string(),
|
|
17154
|
+
backend: string(),
|
|
17155
|
+
device: string(),
|
|
17156
|
+
format: _enum(MODEL_FORMATS),
|
|
17157
|
+
/** Whether the node's live probe reports the device as usable right now. */
|
|
17158
|
+
available: boolean(),
|
|
17159
|
+
/**
|
|
17160
|
+
* Whether this device participates in dispatch. AUTO default (spec C2):
|
|
17161
|
+
* accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
|
|
17162
|
+
* entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
|
|
17163
|
+
* not a balanced target). An explicit stored value always wins; a stored-only
|
|
17164
|
+
* (unavailable) key keeps its stored value.
|
|
17165
|
+
*/
|
|
17166
|
+
enabled: boolean(),
|
|
17167
|
+
/** Relative balancer weight for the enabled device (default 1). */
|
|
17168
|
+
weight: number(),
|
|
17169
|
+
/** Per-device concurrent-session cap; null = unlimited (multi-device C4). */
|
|
17170
|
+
maxSessions: number().nullable(),
|
|
17171
|
+
/** Object-detection model the executor defaults to for this deviceKey. */
|
|
17172
|
+
defaultModelId: string(),
|
|
17173
|
+
/**
|
|
17174
|
+
* Per-(node,device) BASE provisioning (C7.2/C7.4) — the RAW stored
|
|
17175
|
+
* `stepId → {modelId?, settings?}` map from `inferenceDevices[key].steps`.
|
|
17176
|
+
* Absent/empty ⇒ no base (every step uses its device format default). The
|
|
17177
|
+
* UI cross-references `pipelineExecutor.getSchema` for the models actually
|
|
17178
|
+
* available per format; this is the stored selection that becomes the
|
|
17179
|
+
* default for EVERY camera landing on this accelerator.
|
|
17180
|
+
*/
|
|
17181
|
+
steps: record(string(), DeviceStepConfigSchema).optional()
|
|
17182
|
+
});
|
|
17183
|
+
var NodeInferenceDevicesSchema = object({
|
|
17184
|
+
nodeId: string(),
|
|
17185
|
+
/** False when the node's platform-probe was unreachable (no live device set). */
|
|
17186
|
+
reachable: boolean(),
|
|
17187
|
+
devices: array(NodeInferenceDeviceSchema).readonly()
|
|
17188
|
+
});
|
|
17062
17189
|
method(object({
|
|
17063
17190
|
deviceId: number(),
|
|
17064
17191
|
agentNodeId: string()
|
|
@@ -17068,7 +17195,13 @@ method(object({
|
|
|
17068
17195
|
}), method(object({ deviceId: number() }), object({ success: literal(true) }), {
|
|
17069
17196
|
kind: "mutation",
|
|
17070
17197
|
auth: "admin"
|
|
17071
|
-
}), method(
|
|
17198
|
+
}), method(object({
|
|
17199
|
+
deviceId: number(),
|
|
17200
|
+
deviceKey: string()
|
|
17201
|
+
}), object({ success: literal(true) }), {
|
|
17202
|
+
kind: "mutation",
|
|
17203
|
+
auth: "admin"
|
|
17204
|
+
}), method(object({ deviceId: number() }), object({ deviceKey: string().nullable() })), method(_void(), object({ migrated: number() }), {
|
|
17072
17205
|
kind: "mutation",
|
|
17073
17206
|
auth: "admin"
|
|
17074
17207
|
}), method(_void(), array(PipelineAssignmentSchema).readonly()), method(object({ deviceId: number() }), PipelineAssignmentSchema.nullable()), method(_void(), array(AgentLoadSummarySchema).readonly()), method(_void(), GlobalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(object({ nodeId: string() }), CapabilityBindingsSchema), method(object({
|
|
@@ -17102,13 +17235,7 @@ method(object({
|
|
|
17102
17235
|
}))), method(object({ agentNodeId: string() }), AgentPipelineSettingsSchema.nullable()), method(_void(), array(object({
|
|
17103
17236
|
nodeId: string(),
|
|
17104
17237
|
settings: AgentPipelineSettingsSchema
|
|
17105
|
-
})).readonly()), method(object({
|
|
17106
|
-
agentNodeId: string(),
|
|
17107
|
-
defaults: record(string(), AgentAddonConfigSchema)
|
|
17108
|
-
}), object({ success: literal(true) }), {
|
|
17109
|
-
kind: "mutation",
|
|
17110
|
-
auth: "admin"
|
|
17111
|
-
}), method(object({ agentNodeId: string() }), object({
|
|
17238
|
+
})).readonly()), method(object({ agentNodeId: string() }), object({
|
|
17112
17239
|
success: boolean(),
|
|
17113
17240
|
removed: boolean()
|
|
17114
17241
|
}), {
|
|
@@ -17140,7 +17267,18 @@ method(object({
|
|
|
17140
17267
|
}), object({ success: literal(true) }), {
|
|
17141
17268
|
kind: "mutation",
|
|
17142
17269
|
auth: "admin"
|
|
17143
|
-
}), method(object({
|
|
17270
|
+
}), method(object({
|
|
17271
|
+
agentNodeId: string(),
|
|
17272
|
+
inferenceDevices: record(string(), object({
|
|
17273
|
+
enabled: boolean(),
|
|
17274
|
+
weight: number().positive().optional(),
|
|
17275
|
+
maxSessions: number().int().positive().optional(),
|
|
17276
|
+
steps: record(string(), DeviceStepConfigSchema).optional()
|
|
17277
|
+
}))
|
|
17278
|
+
}), object({ success: literal(true) }), {
|
|
17279
|
+
kind: "mutation",
|
|
17280
|
+
auth: "admin"
|
|
17281
|
+
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({ agentNodeId: string() }), object({
|
|
17144
17282
|
success: literal(true),
|
|
17145
17283
|
/** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
|
|
17146
17284
|
effectiveModelId: string().nullable(),
|
|
@@ -17156,9 +17294,10 @@ method(object({
|
|
|
17156
17294
|
}), object({ success: literal(true) }), {
|
|
17157
17295
|
kind: "mutation",
|
|
17158
17296
|
auth: "admin"
|
|
17159
|
-
}), method(object({ deviceId: number() }), record(string(), record(string(), CameraStepOverridePatchSchema)).nullable()), method(object({
|
|
17297
|
+
}), method(object({ deviceId: number() }), record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).nullable()), method(object({
|
|
17160
17298
|
deviceId: number(),
|
|
17161
17299
|
agentNodeId: string(),
|
|
17300
|
+
deviceKey: string(),
|
|
17162
17301
|
addonId: string(),
|
|
17163
17302
|
patch: CameraStepOverridePatchSchema.nullable()
|
|
17164
17303
|
}), object({ success: literal(true) }), {
|
|
@@ -17195,14 +17334,13 @@ method(object({
|
|
|
17195
17334
|
});
|
|
17196
17335
|
/**
|
|
17197
17336
|
* server-management — per-NODE singleton capability for a node's ROOT
|
|
17198
|
-
* package lifecycle (runtime-updatable node packages
|
|
17199
|
-
* agents).
|
|
17337
|
+
* package lifecycle (runtime-updatable node packages).
|
|
17200
17338
|
*
|
|
17201
|
-
*
|
|
17202
|
-
*
|
|
17203
|
-
*
|
|
17204
|
-
*
|
|
17205
|
-
*
|
|
17339
|
+
* Every node role runs the SAME root package (`@camstack/server`), which
|
|
17340
|
+
* carries the whole software stack in its npm dep tree, so ONE version
|
|
17341
|
+
* describes the node. Updates stage into `<dataDir>/server-root/` and apply
|
|
17342
|
+
* on restart via the baked starter (single-copy in-place swap — no probation,
|
|
17343
|
+
* no auto-rollback).
|
|
17206
17344
|
*
|
|
17207
17345
|
* Providers:
|
|
17208
17346
|
* - HUB: `ServerUpdateService` behind the `server-provided` mount
|
|
@@ -17310,7 +17448,8 @@ method(_void(), ServerPackageStatusSchema, { auth: "admin" }), method(_void(), S
|
|
|
17310
17448
|
/** Explicit target version; omitted = latest from the registry. */
|
|
17311
17449
|
version: string().optional() }), ServerUpdateActionResultSchema, {
|
|
17312
17450
|
kind: "mutation",
|
|
17313
|
-
auth: "admin"
|
|
17451
|
+
auth: "admin",
|
|
17452
|
+
timeoutMs: 16 * 6e4
|
|
17314
17453
|
}), method(_void(), ServerUpdateActionResultSchema, {
|
|
17315
17454
|
kind: "mutation",
|
|
17316
17455
|
auth: "admin"
|
|
@@ -18354,22 +18493,6 @@ var AddonAutoUpdateSchema = ChannelWithInheritSchema;
|
|
|
18354
18493
|
var RestartAddonResultSchema = unknown();
|
|
18355
18494
|
var InstallPackageResultSchema = unknown();
|
|
18356
18495
|
var ReloadPackagesResultSchema = unknown();
|
|
18357
|
-
/**
|
|
18358
|
-
* Result of `updateFrameworkPackage`. The cap method returns BEFORE the
|
|
18359
|
-
* server restarts so the admin UI can react to the `restartingAt`
|
|
18360
|
-
* timestamp (shows reconnect overlay). The transition from
|
|
18361
|
-
* `fromVersion` to `toVersion` will be confirmed by a subsequent
|
|
18362
|
-
* `system.restart-completed` event after the new process boots.
|
|
18363
|
-
*
|
|
18364
|
-
* Spec: docs/superpowers/specs/2026-05-14-framework-live-update-design.md
|
|
18365
|
-
*/
|
|
18366
|
-
var UpdateFrameworkPackageResultSchema = object({
|
|
18367
|
-
packageName: string(),
|
|
18368
|
-
fromVersion: string(),
|
|
18369
|
-
toVersion: string(),
|
|
18370
|
-
/** Ms-epoch the server scheduled its self-restart. */
|
|
18371
|
-
restartingAt: number()
|
|
18372
|
-
});
|
|
18373
18496
|
var BulkUpdateItemStatusSchema = _enum([
|
|
18374
18497
|
"queued",
|
|
18375
18498
|
"updating",
|
|
@@ -18497,13 +18620,6 @@ method(_void(), array(AddonListItemSchema).readonly()), method(object({
|
|
|
18497
18620
|
}), object({ success: literal(true) }), {
|
|
18498
18621
|
kind: "mutation",
|
|
18499
18622
|
auth: "admin"
|
|
18500
|
-
}), method(object({
|
|
18501
|
-
packageName: string().min(1),
|
|
18502
|
-
version: string().optional(),
|
|
18503
|
-
deferRestart: boolean().optional()
|
|
18504
|
-
}), UpdateFrameworkPackageResultSchema, {
|
|
18505
|
-
kind: "mutation",
|
|
18506
|
-
auth: "admin"
|
|
18507
18623
|
}), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({ addonId: string() }), RestartAddonResultSchema, {
|
|
18508
18624
|
kind: "mutation",
|
|
18509
18625
|
auth: "admin"
|
|
@@ -19369,10 +19485,10 @@ var TopologyCategorySchema = object({
|
|
|
19369
19485
|
addons: array(TopologyCategoryAddonSchema).readonly()
|
|
19370
19486
|
});
|
|
19371
19487
|
/**
|
|
19372
|
-
* The node's runtime-updatable ROOT package (`@camstack/server`
|
|
19373
|
-
*
|
|
19374
|
-
* version visibility for the Server management surface. Nullable:
|
|
19375
|
-
* rows and
|
|
19488
|
+
* The node's runtime-updatable ROOT package (`@camstack/server` — the single
|
|
19489
|
+
* root package for every node role) as reported by its `registerNode`
|
|
19490
|
+
* manifest — version visibility for the Server management surface. Nullable:
|
|
19491
|
+
* offline rows and nodes that never reported one.
|
|
19376
19492
|
*/
|
|
19377
19493
|
var TopologyRootPackageSchema = object({
|
|
19378
19494
|
name: string(),
|
|
@@ -19760,17 +19876,28 @@ var PlatformScoreSchema = object({
|
|
|
19760
19876
|
format: _enum([
|
|
19761
19877
|
"onnx",
|
|
19762
19878
|
"coreml",
|
|
19763
|
-
"openvino"
|
|
19879
|
+
"openvino",
|
|
19880
|
+
"tflite"
|
|
19764
19881
|
]),
|
|
19765
19882
|
score: number(),
|
|
19766
19883
|
reason: string(),
|
|
19767
19884
|
available: boolean()
|
|
19768
19885
|
});
|
|
19886
|
+
var InferenceDeviceDescriptorSchema = object({
|
|
19887
|
+
key: string(),
|
|
19888
|
+
backend: string(),
|
|
19889
|
+
device: string(),
|
|
19890
|
+
format: ModelFormatSchema,
|
|
19891
|
+
runtime: literal("python"),
|
|
19892
|
+
score: number(),
|
|
19893
|
+
available: boolean()
|
|
19894
|
+
});
|
|
19769
19895
|
var PlatformCapabilitiesSchema = object({
|
|
19770
19896
|
hardware: HardwareInfoSchema,
|
|
19771
19897
|
scores: array(PlatformScoreSchema).readonly(),
|
|
19772
19898
|
bestScore: PlatformScoreSchema,
|
|
19773
|
-
pythonPath: string().nullable()
|
|
19899
|
+
pythonPath: string().nullable(),
|
|
19900
|
+
devices: array(InferenceDeviceDescriptorSchema).readonly()
|
|
19774
19901
|
});
|
|
19775
19902
|
var ModelRequirementSchema = object({
|
|
19776
19903
|
modelId: string(),
|
|
@@ -20649,12 +20776,6 @@ Object.freeze({
|
|
|
20649
20776
|
addonId: null,
|
|
20650
20777
|
access: "delete"
|
|
20651
20778
|
},
|
|
20652
|
-
"addons.updateFrameworkPackage": {
|
|
20653
|
-
capName: "addons",
|
|
20654
|
-
capScope: "system",
|
|
20655
|
-
addonId: null,
|
|
20656
|
-
access: "create"
|
|
20657
|
-
},
|
|
20658
20779
|
"addons.updatePackage": {
|
|
20659
20780
|
capName: "addons",
|
|
20660
20781
|
capScope: "system",
|
|
@@ -23427,12 +23548,6 @@ Object.freeze({
|
|
|
23427
23548
|
addonId: null,
|
|
23428
23549
|
access: "view"
|
|
23429
23550
|
},
|
|
23430
|
-
"pipelineExecutor.reprobeEngine": {
|
|
23431
|
-
capName: "pipeline-executor",
|
|
23432
|
-
capScope: "system",
|
|
23433
|
-
addonId: null,
|
|
23434
|
-
access: "create"
|
|
23435
|
-
},
|
|
23436
23551
|
"pipelineExecutor.runAudioTest": {
|
|
23437
23552
|
capName: "pipeline-executor",
|
|
23438
23553
|
capScope: "system",
|
|
@@ -23583,6 +23698,12 @@ Object.freeze({
|
|
|
23583
23698
|
addonId: null,
|
|
23584
23699
|
access: "view"
|
|
23585
23700
|
},
|
|
23701
|
+
"pipelineOrchestrator.getNodeInferenceDevices": {
|
|
23702
|
+
capName: "pipeline-orchestrator",
|
|
23703
|
+
capScope: "system",
|
|
23704
|
+
addonId: null,
|
|
23705
|
+
access: "view"
|
|
23706
|
+
},
|
|
23586
23707
|
"pipelineOrchestrator.getPipelineAssignment": {
|
|
23587
23708
|
capName: "pipeline-orchestrator",
|
|
23588
23709
|
capScope: "system",
|
|
@@ -23595,6 +23716,12 @@ Object.freeze({
|
|
|
23595
23716
|
addonId: null,
|
|
23596
23717
|
access: "view"
|
|
23597
23718
|
},
|
|
23719
|
+
"pipelineOrchestrator.getPipelineDevicePin": {
|
|
23720
|
+
capName: "pipeline-orchestrator",
|
|
23721
|
+
capScope: "system",
|
|
23722
|
+
addonId: null,
|
|
23723
|
+
access: "view"
|
|
23724
|
+
},
|
|
23598
23725
|
"pipelineOrchestrator.listAgentSettings": {
|
|
23599
23726
|
capName: "pipeline-orchestrator",
|
|
23600
23727
|
capScope: "system",
|
|
@@ -23637,19 +23764,19 @@ Object.freeze({
|
|
|
23637
23764
|
addonId: null,
|
|
23638
23765
|
access: "create"
|
|
23639
23766
|
},
|
|
23640
|
-
"pipelineOrchestrator.
|
|
23767
|
+
"pipelineOrchestrator.setAgentCapabilities": {
|
|
23641
23768
|
capName: "pipeline-orchestrator",
|
|
23642
23769
|
capScope: "system",
|
|
23643
23770
|
addonId: null,
|
|
23644
23771
|
access: "create"
|
|
23645
23772
|
},
|
|
23646
|
-
"pipelineOrchestrator.
|
|
23773
|
+
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
23647
23774
|
capName: "pipeline-orchestrator",
|
|
23648
23775
|
capScope: "system",
|
|
23649
23776
|
addonId: null,
|
|
23650
23777
|
access: "create"
|
|
23651
23778
|
},
|
|
23652
|
-
"pipelineOrchestrator.
|
|
23779
|
+
"pipelineOrchestrator.setAgentInferenceDevices": {
|
|
23653
23780
|
capName: "pipeline-orchestrator",
|
|
23654
23781
|
capScope: "system",
|
|
23655
23782
|
addonId: null,
|
|
@@ -23691,6 +23818,12 @@ Object.freeze({
|
|
|
23691
23818
|
addonId: null,
|
|
23692
23819
|
access: "create"
|
|
23693
23820
|
},
|
|
23821
|
+
"pipelineOrchestrator.setPipelineDevicePin": {
|
|
23822
|
+
capName: "pipeline-orchestrator",
|
|
23823
|
+
capScope: "system",
|
|
23824
|
+
addonId: null,
|
|
23825
|
+
access: "create"
|
|
23826
|
+
},
|
|
23694
23827
|
"pipelineOrchestrator.unassignAudio": {
|
|
23695
23828
|
capName: "pipeline-orchestrator",
|
|
23696
23829
|
capScope: "system",
|
|
@@ -25243,32 +25376,6 @@ Object.freeze({
|
|
|
25243
25376
|
"network-access": "ingress",
|
|
25244
25377
|
"smtp-provider": "email"
|
|
25245
25378
|
});
|
|
25246
|
-
var frameworkSwapPackageSchema = object({
|
|
25247
|
-
name: string(),
|
|
25248
|
-
stagedPath: string(),
|
|
25249
|
-
backupPath: string(),
|
|
25250
|
-
toVersion: string(),
|
|
25251
|
-
fromVersion: string().nullable()
|
|
25252
|
-
});
|
|
25253
|
-
object({
|
|
25254
|
-
jobId: string(),
|
|
25255
|
-
taskId: string(),
|
|
25256
|
-
packages: array(frameworkSwapPackageSchema),
|
|
25257
|
-
requestedAtMs: number(),
|
|
25258
|
-
schemaVersion: literal(1)
|
|
25259
|
-
});
|
|
25260
|
-
object({
|
|
25261
|
-
jobId: string(),
|
|
25262
|
-
taskId: string(),
|
|
25263
|
-
backups: array(object({
|
|
25264
|
-
name: string(),
|
|
25265
|
-
backupPath: string(),
|
|
25266
|
-
livePath: string()
|
|
25267
|
-
})),
|
|
25268
|
-
appliedAtMs: number(),
|
|
25269
|
-
bootAttempts: number(),
|
|
25270
|
-
schemaVersion: literal(1)
|
|
25271
|
-
});
|
|
25272
25379
|
//#endregion
|
|
25273
25380
|
//#region ../../node_modules/xtend/immutable.js
|
|
25274
25381
|
var require_immutable = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-mqtt-broker",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "MQTT broker registry addon for CamStack — manages external broker entries + an optional embedded aedes broker. Consumers spin up their own `mqtt.js` clients via the `mqtt-broker` cap.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|