@camstack/addon-model-studio 1.0.28 → 1.1.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/{MotionZonesSettings-JuOM4wpI.mjs → MotionZonesSettings-DSMa6CQ-.mjs} +1 -1
- package/dist/{PrivacyMaskSettings-B4AFKvVk.mjs → PrivacyMaskSettings-ZgbJIFMN.mjs} +2 -2
- package/dist/_stub.js +8578 -1862
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-NMFv_zoJ.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BK3xUMr7.mjs} +4 -4
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BVOnSREM.mjs +26 -0
- package/dist/addon-model-studio.css +1 -1
- package/dist/{hostInit-CdGt-Tbt.mjs → hostInit-BD5uAgF_.mjs} +3 -3
- package/dist/model-studio.addon.js +213 -106
- package/dist/model-studio.addon.mjs +213 -106
- package/dist/{player-overlays-BR3IAbV5.mjs → player-overlays-C54-e_Df.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{trash-2-CCPJ47Sy.mjs → trash-2-CkTgQAkA.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-DvnLvZMm.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-C3kcXNUK.mjs} +1 -1
- package/package.json +1 -1
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BOsI55Qr.mjs +0 -26
|
@@ -7078,6 +7078,17 @@ var ModelCatalogEntrySchema = object({
|
|
|
7078
7078
|
"imagenet",
|
|
7079
7079
|
"none"
|
|
7080
7080
|
]).optional(),
|
|
7081
|
+
/**
|
|
7082
|
+
* The model already applies softmax IN-GRAPH — its raw output is a
|
|
7083
|
+
* probability distribution, not logits. When set, the `softmax`
|
|
7084
|
+
* postprocessor must NOT re-apply softmax: re-softmaxing an already-normalised
|
|
7085
|
+
* probability vector collapses it toward uniform (top-1 score craters far
|
|
7086
|
+
* below its true value, making every confidence gate meaningless). Absent ⇒
|
|
7087
|
+
* the output is raw logits and the postprocessor applies softmax (the normal
|
|
7088
|
+
* case). Set on the Google AIY Birds `bird-classifier` (softmax baked into the
|
|
7089
|
+
* TF graph). Threaded to the Python pool via `PoolModelConfig.outputProbabilities`.
|
|
7090
|
+
*/
|
|
7091
|
+
outputProbabilities: boolean().optional(),
|
|
7081
7092
|
preprocessMode: _enum(["letterbox", "resize"]).optional(),
|
|
7082
7093
|
/**
|
|
7083
7094
|
* Per-MODEL postprocessor override. Absent ⇒ the step's own
|
|
@@ -11122,10 +11133,7 @@ var ConfigUISchemaNullableBridge = custom();
|
|
|
11122
11133
|
var InferenceCapabilitiesBridge = custom();
|
|
11123
11134
|
var ModelAvailabilityListBridge = custom();
|
|
11124
11135
|
var PipelineRunResultBridge = custom();
|
|
11125
|
-
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(),
|
|
11126
|
-
kind: "mutation",
|
|
11127
|
-
auth: "admin"
|
|
11128
|
-
}), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
11136
|
+
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
11129
11137
|
modelId: string(),
|
|
11130
11138
|
settings: record(string(), unknown()).readonly()
|
|
11131
11139
|
}))), method(object({ steps: record(string(), object({
|
|
@@ -11185,13 +11193,33 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
11185
11193
|
* (inputClasses ≠ null) are skipped and served per-track via
|
|
11186
11194
|
* pipelineRunner.runDetailSubtree (two-plane design).
|
|
11187
11195
|
*/
|
|
11188
|
-
plane: _enum(["full", "frame"]).optional()
|
|
11196
|
+
plane: _enum(["full", "frame"]).optional(),
|
|
11197
|
+
/**
|
|
11198
|
+
* Inference-device selector (Phase 2 multi-device). Format
|
|
11199
|
+
* `<backend>:<device>` (e.g. `openvino:gpu`, `edgetpu:usb`, `cpu`).
|
|
11200
|
+
* Omitted ⇒ the runner's default device (current single-engine
|
|
11201
|
+
* behaviour). Selects WHICH device pool of the node runs the call.
|
|
11202
|
+
*/
|
|
11203
|
+
deviceKey: string().optional()
|
|
11189
11204
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
11190
11205
|
engine: PipelineEngineChoiceSchema.optional(),
|
|
11191
11206
|
steps: array(PipelineStepInputSchema).min(1),
|
|
11192
11207
|
frames: array(FrameInputSchema).min(1).max(255),
|
|
11193
11208
|
deviceId: number().optional(),
|
|
11194
|
-
sessionId: string().optional()
|
|
11209
|
+
sessionId: string().optional(),
|
|
11210
|
+
/**
|
|
11211
|
+
* Pure-inference benchmark hint. A NONZERO uint32 pins every frame in
|
|
11212
|
+
* the batch to the Python pool's bench preprocess cache
|
|
11213
|
+
* (`_bench_frame_id`) so a REPEATED benchmark frame is decoded +
|
|
11214
|
+
* preprocessed ONCE and every later inference is a pure-inference cache
|
|
11215
|
+
* hit — the sustained-throughput run measures inference, not
|
|
11216
|
+
* decode+preprocess+infer. Omitted/0 for live frames (all different →
|
|
11217
|
+
* full preprocess every call, correct). Fresh per sustained run;
|
|
11218
|
+
* released via `uncacheFrame`.
|
|
11219
|
+
*/
|
|
11220
|
+
frameId: number().int().nonnegative().optional(),
|
|
11221
|
+
/** Inference-device selector (Phase 2 multi-device); see runPipeline. */
|
|
11222
|
+
deviceKey: string().optional()
|
|
11195
11223
|
}), object({ results: array(PipelineRunResultBridge).readonly() }), { kind: "mutation" }), method(object({
|
|
11196
11224
|
data: _instanceof(Uint8Array),
|
|
11197
11225
|
width: number().int().positive(),
|
|
@@ -11223,8 +11251,18 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
11223
11251
|
* - `runtime` — main camera-serving engine (no idle TTL).
|
|
11224
11252
|
* - `warm-override` — benchmark/test override held in the warm
|
|
11225
11253
|
* cache; auto-disposed after the idle TTL.
|
|
11254
|
+
* - `device-pool` — a concurrent per-device pool (Phase 2
|
|
11255
|
+
* multi-device, keyed by `deviceKey`) resolved
|
|
11256
|
+
* via `resolveDeviceFactory`. Runs alongside the
|
|
11257
|
+
* `runtime` engine on a DIFFERENT accelerator
|
|
11258
|
+
* (NPU / iGPU / Coral) — this is how the
|
|
11259
|
+
* Engines tab shows all pools running at once.
|
|
11226
11260
|
*/
|
|
11227
|
-
kind: _enum([
|
|
11261
|
+
kind: _enum([
|
|
11262
|
+
"runtime",
|
|
11263
|
+
"warm-override",
|
|
11264
|
+
"device-pool"
|
|
11265
|
+
]),
|
|
11228
11266
|
/** Native pid of the underlying Python pool (null when no pool). */
|
|
11229
11267
|
poolPid: number().nullable(),
|
|
11230
11268
|
/** ms since this factory was last used (null when not warm-tracked). */
|
|
@@ -11326,7 +11364,21 @@ var NativeCropResultSchema = object({
|
|
|
11326
11364
|
/** Packed rgb (24-bit) pixels of the crop. */
|
|
11327
11365
|
bytes: _instanceof(Uint8Array),
|
|
11328
11366
|
width: number().int().positive(),
|
|
11329
|
-
height: number().int().positive()
|
|
11367
|
+
height: number().int().positive(),
|
|
11368
|
+
/**
|
|
11369
|
+
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
11370
|
+
* `keyFrame`) can reject a degraded fallback:
|
|
11371
|
+
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
11372
|
+
* quality path).
|
|
11373
|
+
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
11374
|
+
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
11375
|
+
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
11376
|
+
*
|
|
11377
|
+
* OPTIONAL: a pre-tier runner (version skew) omits it — an ABSENT `tier` MUST be
|
|
11378
|
+
* treated as `native` (accepted) by every consumer so mixed-version clusters
|
|
11379
|
+
* keep the pre-tier behaviour. An ROI miss returns `null` (no tier at all).
|
|
11380
|
+
*/
|
|
11381
|
+
tier: _enum(["native", "ram-fullframe"]).optional()
|
|
11330
11382
|
});
|
|
11331
11383
|
/** Parent detection context passed to `runDetailSubtree` — the crop's
|
|
11332
11384
|
* originating detection, in FRAME-space coordinates. Reuses
|
|
@@ -11566,7 +11618,14 @@ var RunnerCameraConfigSchema = object({
|
|
|
11566
11618
|
* camera's detect node differs from its source-owner (P2d, gated by the
|
|
11567
11619
|
* `remoteSourcingNodes` rollout setting).
|
|
11568
11620
|
*/
|
|
11569
|
-
frameSource: RunnerFrameSourceSchema.default({ kind: "local-broker" })
|
|
11621
|
+
frameSource: RunnerFrameSourceSchema.default({ kind: "local-broker" }),
|
|
11622
|
+
/**
|
|
11623
|
+
* Inference-device selector for this camera's sessions (Phase 2 multi-device).
|
|
11624
|
+
* Format `<backend>:<device>` (e.g. `openvino:gpu`, `edgetpu:usb`, `cpu`);
|
|
11625
|
+
* omitted ⇒ the runner's default device. The engine itself stays node-local —
|
|
11626
|
+
* this only selects WHICH device pool of that node runs the session.
|
|
11627
|
+
*/
|
|
11628
|
+
deviceKey: string().optional()
|
|
11570
11629
|
});
|
|
11571
11630
|
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;
|
|
11572
11631
|
/**
|
|
@@ -11587,6 +11646,19 @@ var RunnerLocalLoadSchema = object({
|
|
|
11587
11646
|
avgInferenceTimeMs: number(),
|
|
11588
11647
|
/** Total queue depth across motion + detection queues. */
|
|
11589
11648
|
queueDepthTotal: number(),
|
|
11649
|
+
/**
|
|
11650
|
+
* Per-inference-device live load (multi-device C4). One entry per deviceKey
|
|
11651
|
+
* this runner currently has attached cameras on, so the orchestrator's second
|
|
11652
|
+
* `balance()` pass (over a node's devices) weights on real per-pool session
|
|
11653
|
+
* counts. Empty on single-device / pre-multi-device runners. `queueDepthTotal`
|
|
11654
|
+
* per device is 0 until the pool backlog gets a public accessor (follow-up).
|
|
11655
|
+
*/
|
|
11656
|
+
devices: array(object({
|
|
11657
|
+
deviceKey: string(),
|
|
11658
|
+
backend: string(),
|
|
11659
|
+
attachedCameras: number(),
|
|
11660
|
+
queueDepthTotal: number()
|
|
11661
|
+
})).default([]),
|
|
11590
11662
|
/** Hardware capability flags reported by this node. */
|
|
11591
11663
|
hardware: object({
|
|
11592
11664
|
hasGpu: boolean(),
|
|
@@ -13062,6 +13134,8 @@ method(_void(), _void(), { kind: "mutation" }), method(_void(), _void(), { kind:
|
|
|
13062
13134
|
kind: "mutation",
|
|
13063
13135
|
auth: "admin"
|
|
13064
13136
|
});
|
|
13137
|
+
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;
|
|
13138
|
+
new Set(Object.values(DeviceType));
|
|
13065
13139
|
/**
|
|
13066
13140
|
* `addon-pages` — system-scoped singleton aggregator cap. Public-facing
|
|
13067
13141
|
* surface that admin-ui consumes through `useAddonPagesListPages()`.
|
|
@@ -14668,7 +14742,8 @@ var LinkedDeviceSchema = object({
|
|
|
14668
14742
|
deviceId: number(),
|
|
14669
14743
|
name: string(),
|
|
14670
14744
|
location: string().nullable(),
|
|
14671
|
-
features: array(string())
|
|
14745
|
+
features: array(string()),
|
|
14746
|
+
producesTrackedEvents: boolean().optional()
|
|
14672
14747
|
});
|
|
14673
14748
|
var SavedDeviceRowSchema = object({
|
|
14674
14749
|
/** Numeric id reserved at allocateDeviceId time. */
|
|
@@ -16304,6 +16379,7 @@ var TrackSchema = object({
|
|
|
16304
16379
|
deviceId: number(),
|
|
16305
16380
|
className: string(),
|
|
16306
16381
|
label: string().optional(),
|
|
16382
|
+
producingDeviceName: string().optional(),
|
|
16307
16383
|
/** Track provenance. Absent ⇒ `pipeline` (legacy rows). */
|
|
16308
16384
|
source: TrackSourceSchema.optional(),
|
|
16309
16385
|
firstSeen: number(),
|
|
@@ -16441,7 +16517,8 @@ var MediaFileKindEnum = _enum([
|
|
|
16441
16517
|
"fullFrameBoxed",
|
|
16442
16518
|
"faceCrop",
|
|
16443
16519
|
"plateCrop",
|
|
16444
|
-
"keyFrame"
|
|
16520
|
+
"keyFrame",
|
|
16521
|
+
"keyFrameSmall"
|
|
16445
16522
|
]);
|
|
16446
16523
|
var MediaFileSchema = object({
|
|
16447
16524
|
key: string(),
|
|
@@ -16770,13 +16847,11 @@ var PipelineTemplateSchema = object({
|
|
|
16770
16847
|
createdAt: string(),
|
|
16771
16848
|
updatedAt: string()
|
|
16772
16849
|
});
|
|
16773
|
-
var
|
|
16774
|
-
enabled: boolean(),
|
|
16850
|
+
var DeviceStepConfigSchema = object({
|
|
16775
16851
|
modelId: string().optional(),
|
|
16776
|
-
settings: record(string(), unknown()).
|
|
16852
|
+
settings: record(string(), unknown()).optional()
|
|
16777
16853
|
});
|
|
16778
16854
|
var AgentPipelineSettingsSchema = object({
|
|
16779
|
-
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
16780
16855
|
maxCameras: number().int().nonnegative().nullable().default(null),
|
|
16781
16856
|
/** Per-node detection weight (relative share for the quota balancer). */
|
|
16782
16857
|
detectWeight: number().positive().optional(),
|
|
@@ -16800,7 +16875,22 @@ var AgentPipelineSettingsSchema = object({
|
|
|
16800
16875
|
* it already uses to reach the hub). Set this only when the auto-detected
|
|
16801
16876
|
* address is wrong (multi-homed host, NAT, custom interface).
|
|
16802
16877
|
*/
|
|
16803
|
-
reachableHost: string().optional()
|
|
16878
|
+
reachableHost: string().optional(),
|
|
16879
|
+
/**
|
|
16880
|
+
* Multi-device inference opt-in (Phase 4). Per-node map deviceKey → {enabled,
|
|
16881
|
+
* weight, steps}. Absent / all-disabled ⇒ the node's single default
|
|
16882
|
+
* accelerator (safe default); two+ enabled ⇒ the dispatcher balances
|
|
16883
|
+
* detection sessions across them so they run CONCURRENTLY. `steps` is the
|
|
16884
|
+
* per-(node,device) BASE provisioning (`stepId → {modelId?, settings?}`) —
|
|
16885
|
+
* the default model/settings for every camera landing on that accelerator;
|
|
16886
|
+
* a stepId absent ⇒ the step uses that device's format default.
|
|
16887
|
+
*/
|
|
16888
|
+
inferenceDevices: record(string(), object({
|
|
16889
|
+
enabled: boolean(),
|
|
16890
|
+
weight: number().positive().optional(),
|
|
16891
|
+
maxSessions: number().int().positive().optional(),
|
|
16892
|
+
steps: record(string(), DeviceStepConfigSchema).optional()
|
|
16893
|
+
})).optional()
|
|
16804
16894
|
});
|
|
16805
16895
|
var CameraPipelineForAgentSchema = object({
|
|
16806
16896
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
@@ -16810,14 +16900,13 @@ var CameraPipelineForAgentSchema = object({
|
|
|
16810
16900
|
}).nullable()
|
|
16811
16901
|
});
|
|
16812
16902
|
var CameraStepOverridePatchSchema = object({
|
|
16813
|
-
enabled: boolean().optional(),
|
|
16814
16903
|
modelId: string().optional(),
|
|
16815
16904
|
settings: record(string(), unknown()).readonly().optional()
|
|
16816
16905
|
});
|
|
16817
16906
|
var CameraPipelineSettingsSchema = object({
|
|
16818
16907
|
pinnedAgentNodeId: string().optional(),
|
|
16819
16908
|
stepToggles: record(string(), boolean()).optional(),
|
|
16820
|
-
|
|
16909
|
+
stepOverridesByDevice: record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).optional(),
|
|
16821
16910
|
pipelineByAgent: record(string(), CameraPipelineForAgentSchema).optional()
|
|
16822
16911
|
});
|
|
16823
16912
|
/**
|
|
@@ -17031,6 +17120,44 @@ var CameraStatusSchema = object({
|
|
|
17031
17120
|
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
17032
17121
|
fetchedAt: number()
|
|
17033
17122
|
});
|
|
17123
|
+
var NodeInferenceDeviceSchema = object({
|
|
17124
|
+
/** Stable per-node device key, e.g. `openvino:npu`, `edgetpu:usb`, `cpu`. */
|
|
17125
|
+
key: string(),
|
|
17126
|
+
backend: string(),
|
|
17127
|
+
device: string(),
|
|
17128
|
+
format: _enum(MODEL_FORMATS),
|
|
17129
|
+
/** Whether the node's live probe reports the device as usable right now. */
|
|
17130
|
+
available: boolean(),
|
|
17131
|
+
/**
|
|
17132
|
+
* Whether this device participates in dispatch. AUTO default (spec C2):
|
|
17133
|
+
* accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
|
|
17134
|
+
* entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
|
|
17135
|
+
* not a balanced target). An explicit stored value always wins; a stored-only
|
|
17136
|
+
* (unavailable) key keeps its stored value.
|
|
17137
|
+
*/
|
|
17138
|
+
enabled: boolean(),
|
|
17139
|
+
/** Relative balancer weight for the enabled device (default 1). */
|
|
17140
|
+
weight: number(),
|
|
17141
|
+
/** Per-device concurrent-session cap; null = unlimited (multi-device C4). */
|
|
17142
|
+
maxSessions: number().nullable(),
|
|
17143
|
+
/** Object-detection model the executor defaults to for this deviceKey. */
|
|
17144
|
+
defaultModelId: string(),
|
|
17145
|
+
/**
|
|
17146
|
+
* Per-(node,device) BASE provisioning (C7.2/C7.4) — the RAW stored
|
|
17147
|
+
* `stepId → {modelId?, settings?}` map from `inferenceDevices[key].steps`.
|
|
17148
|
+
* Absent/empty ⇒ no base (every step uses its device format default). The
|
|
17149
|
+
* UI cross-references `pipelineExecutor.getSchema` for the models actually
|
|
17150
|
+
* available per format; this is the stored selection that becomes the
|
|
17151
|
+
* default for EVERY camera landing on this accelerator.
|
|
17152
|
+
*/
|
|
17153
|
+
steps: record(string(), DeviceStepConfigSchema).optional()
|
|
17154
|
+
});
|
|
17155
|
+
var NodeInferenceDevicesSchema = object({
|
|
17156
|
+
nodeId: string(),
|
|
17157
|
+
/** False when the node's platform-probe was unreachable (no live device set). */
|
|
17158
|
+
reachable: boolean(),
|
|
17159
|
+
devices: array(NodeInferenceDeviceSchema).readonly()
|
|
17160
|
+
});
|
|
17034
17161
|
method(object({
|
|
17035
17162
|
deviceId: number(),
|
|
17036
17163
|
agentNodeId: string()
|
|
@@ -17040,7 +17167,13 @@ method(object({
|
|
|
17040
17167
|
}), method(object({ deviceId: number() }), object({ success: literal(true) }), {
|
|
17041
17168
|
kind: "mutation",
|
|
17042
17169
|
auth: "admin"
|
|
17043
|
-
}), method(
|
|
17170
|
+
}), method(object({
|
|
17171
|
+
deviceId: number(),
|
|
17172
|
+
deviceKey: string()
|
|
17173
|
+
}), object({ success: literal(true) }), {
|
|
17174
|
+
kind: "mutation",
|
|
17175
|
+
auth: "admin"
|
|
17176
|
+
}), method(object({ deviceId: number() }), object({ deviceKey: string().nullable() })), method(_void(), object({ migrated: number() }), {
|
|
17044
17177
|
kind: "mutation",
|
|
17045
17178
|
auth: "admin"
|
|
17046
17179
|
}), 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({
|
|
@@ -17074,13 +17207,7 @@ method(object({
|
|
|
17074
17207
|
}))), method(object({ agentNodeId: string() }), AgentPipelineSettingsSchema.nullable()), method(_void(), array(object({
|
|
17075
17208
|
nodeId: string(),
|
|
17076
17209
|
settings: AgentPipelineSettingsSchema
|
|
17077
|
-
})).readonly()), method(object({
|
|
17078
|
-
agentNodeId: string(),
|
|
17079
|
-
defaults: record(string(), AgentAddonConfigSchema)
|
|
17080
|
-
}), object({ success: literal(true) }), {
|
|
17081
|
-
kind: "mutation",
|
|
17082
|
-
auth: "admin"
|
|
17083
|
-
}), method(object({ agentNodeId: string() }), object({
|
|
17210
|
+
})).readonly()), method(object({ agentNodeId: string() }), object({
|
|
17084
17211
|
success: boolean(),
|
|
17085
17212
|
removed: boolean()
|
|
17086
17213
|
}), {
|
|
@@ -17112,7 +17239,18 @@ method(object({
|
|
|
17112
17239
|
}), object({ success: literal(true) }), {
|
|
17113
17240
|
kind: "mutation",
|
|
17114
17241
|
auth: "admin"
|
|
17115
|
-
}), method(object({
|
|
17242
|
+
}), method(object({
|
|
17243
|
+
agentNodeId: string(),
|
|
17244
|
+
inferenceDevices: record(string(), object({
|
|
17245
|
+
enabled: boolean(),
|
|
17246
|
+
weight: number().positive().optional(),
|
|
17247
|
+
maxSessions: number().int().positive().optional(),
|
|
17248
|
+
steps: record(string(), DeviceStepConfigSchema).optional()
|
|
17249
|
+
}))
|
|
17250
|
+
}), object({ success: literal(true) }), {
|
|
17251
|
+
kind: "mutation",
|
|
17252
|
+
auth: "admin"
|
|
17253
|
+
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({ agentNodeId: string() }), object({
|
|
17116
17254
|
success: literal(true),
|
|
17117
17255
|
/** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
|
|
17118
17256
|
effectiveModelId: string().nullable(),
|
|
@@ -17128,9 +17266,10 @@ method(object({
|
|
|
17128
17266
|
}), object({ success: literal(true) }), {
|
|
17129
17267
|
kind: "mutation",
|
|
17130
17268
|
auth: "admin"
|
|
17131
|
-
}), method(object({ deviceId: number() }), record(string(), record(string(), CameraStepOverridePatchSchema)).nullable()), method(object({
|
|
17269
|
+
}), method(object({ deviceId: number() }), record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).nullable()), method(object({
|
|
17132
17270
|
deviceId: number(),
|
|
17133
17271
|
agentNodeId: string(),
|
|
17272
|
+
deviceKey: string(),
|
|
17134
17273
|
addonId: string(),
|
|
17135
17274
|
patch: CameraStepOverridePatchSchema.nullable()
|
|
17136
17275
|
}), object({ success: literal(true) }), {
|
|
@@ -17167,14 +17306,13 @@ method(object({
|
|
|
17167
17306
|
});
|
|
17168
17307
|
/**
|
|
17169
17308
|
* server-management — per-NODE singleton capability for a node's ROOT
|
|
17170
|
-
* package lifecycle (runtime-updatable node packages
|
|
17171
|
-
* agents).
|
|
17309
|
+
* package lifecycle (runtime-updatable node packages).
|
|
17172
17310
|
*
|
|
17173
|
-
*
|
|
17174
|
-
*
|
|
17175
|
-
*
|
|
17176
|
-
*
|
|
17177
|
-
*
|
|
17311
|
+
* Every node role runs the SAME root package (`@camstack/server`), which
|
|
17312
|
+
* carries the whole software stack in its npm dep tree, so ONE version
|
|
17313
|
+
* describes the node. Updates stage into `<dataDir>/server-root/` and apply
|
|
17314
|
+
* on restart via the baked starter (single-copy in-place swap — no probation,
|
|
17315
|
+
* no auto-rollback).
|
|
17178
17316
|
*
|
|
17179
17317
|
* Providers:
|
|
17180
17318
|
* - HUB: `ServerUpdateService` behind the `server-provided` mount
|
|
@@ -17282,7 +17420,8 @@ method(_void(), ServerPackageStatusSchema, { auth: "admin" }), method(_void(), S
|
|
|
17282
17420
|
/** Explicit target version; omitted = latest from the registry. */
|
|
17283
17421
|
version: string().optional() }), ServerUpdateActionResultSchema, {
|
|
17284
17422
|
kind: "mutation",
|
|
17285
|
-
auth: "admin"
|
|
17423
|
+
auth: "admin",
|
|
17424
|
+
timeoutMs: 16 * 6e4
|
|
17286
17425
|
}), method(_void(), ServerUpdateActionResultSchema, {
|
|
17287
17426
|
kind: "mutation",
|
|
17288
17427
|
auth: "admin"
|
|
@@ -18326,22 +18465,6 @@ var AddonAutoUpdateSchema = ChannelWithInheritSchema;
|
|
|
18326
18465
|
var RestartAddonResultSchema = unknown();
|
|
18327
18466
|
var InstallPackageResultSchema = unknown();
|
|
18328
18467
|
var ReloadPackagesResultSchema = unknown();
|
|
18329
|
-
/**
|
|
18330
|
-
* Result of `updateFrameworkPackage`. The cap method returns BEFORE the
|
|
18331
|
-
* server restarts so the admin UI can react to the `restartingAt`
|
|
18332
|
-
* timestamp (shows reconnect overlay). The transition from
|
|
18333
|
-
* `fromVersion` to `toVersion` will be confirmed by a subsequent
|
|
18334
|
-
* `system.restart-completed` event after the new process boots.
|
|
18335
|
-
*
|
|
18336
|
-
* Spec: docs/superpowers/specs/2026-05-14-framework-live-update-design.md
|
|
18337
|
-
*/
|
|
18338
|
-
var UpdateFrameworkPackageResultSchema = object({
|
|
18339
|
-
packageName: string(),
|
|
18340
|
-
fromVersion: string(),
|
|
18341
|
-
toVersion: string(),
|
|
18342
|
-
/** Ms-epoch the server scheduled its self-restart. */
|
|
18343
|
-
restartingAt: number()
|
|
18344
|
-
});
|
|
18345
18468
|
var BulkUpdateItemStatusSchema = _enum([
|
|
18346
18469
|
"queued",
|
|
18347
18470
|
"updating",
|
|
@@ -18469,13 +18592,6 @@ method(_void(), array(AddonListItemSchema).readonly()), method(object({
|
|
|
18469
18592
|
}), object({ success: literal(true) }), {
|
|
18470
18593
|
kind: "mutation",
|
|
18471
18594
|
auth: "admin"
|
|
18472
|
-
}), method(object({
|
|
18473
|
-
packageName: string().min(1),
|
|
18474
|
-
version: string().optional(),
|
|
18475
|
-
deferRestart: boolean().optional()
|
|
18476
|
-
}), UpdateFrameworkPackageResultSchema, {
|
|
18477
|
-
kind: "mutation",
|
|
18478
|
-
auth: "admin"
|
|
18479
18595
|
}), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({ addonId: string() }), RestartAddonResultSchema, {
|
|
18480
18596
|
kind: "mutation",
|
|
18481
18597
|
auth: "admin"
|
|
@@ -19341,10 +19457,10 @@ var TopologyCategorySchema = object({
|
|
|
19341
19457
|
addons: array(TopologyCategoryAddonSchema).readonly()
|
|
19342
19458
|
});
|
|
19343
19459
|
/**
|
|
19344
|
-
* The node's runtime-updatable ROOT package (`@camstack/server`
|
|
19345
|
-
*
|
|
19346
|
-
* version visibility for the Server management surface. Nullable:
|
|
19347
|
-
* rows and
|
|
19460
|
+
* The node's runtime-updatable ROOT package (`@camstack/server` — the single
|
|
19461
|
+
* root package for every node role) as reported by its `registerNode`
|
|
19462
|
+
* manifest — version visibility for the Server management surface. Nullable:
|
|
19463
|
+
* offline rows and nodes that never reported one.
|
|
19348
19464
|
*/
|
|
19349
19465
|
var TopologyRootPackageSchema = object({
|
|
19350
19466
|
name: string(),
|
|
@@ -19732,17 +19848,28 @@ var PlatformScoreSchema = object({
|
|
|
19732
19848
|
format: _enum([
|
|
19733
19849
|
"onnx",
|
|
19734
19850
|
"coreml",
|
|
19735
|
-
"openvino"
|
|
19851
|
+
"openvino",
|
|
19852
|
+
"tflite"
|
|
19736
19853
|
]),
|
|
19737
19854
|
score: number(),
|
|
19738
19855
|
reason: string(),
|
|
19739
19856
|
available: boolean()
|
|
19740
19857
|
});
|
|
19858
|
+
var InferenceDeviceDescriptorSchema = object({
|
|
19859
|
+
key: string(),
|
|
19860
|
+
backend: string(),
|
|
19861
|
+
device: string(),
|
|
19862
|
+
format: ModelFormatSchema,
|
|
19863
|
+
runtime: literal("python"),
|
|
19864
|
+
score: number(),
|
|
19865
|
+
available: boolean()
|
|
19866
|
+
});
|
|
19741
19867
|
var PlatformCapabilitiesSchema = object({
|
|
19742
19868
|
hardware: HardwareInfoSchema,
|
|
19743
19869
|
scores: array(PlatformScoreSchema).readonly(),
|
|
19744
19870
|
bestScore: PlatformScoreSchema,
|
|
19745
|
-
pythonPath: string().nullable()
|
|
19871
|
+
pythonPath: string().nullable(),
|
|
19872
|
+
devices: array(InferenceDeviceDescriptorSchema).readonly()
|
|
19746
19873
|
});
|
|
19747
19874
|
var ModelRequirementSchema = object({
|
|
19748
19875
|
modelId: string(),
|
|
@@ -20621,12 +20748,6 @@ Object.freeze({
|
|
|
20621
20748
|
addonId: null,
|
|
20622
20749
|
access: "delete"
|
|
20623
20750
|
},
|
|
20624
|
-
"addons.updateFrameworkPackage": {
|
|
20625
|
-
capName: "addons",
|
|
20626
|
-
capScope: "system",
|
|
20627
|
-
addonId: null,
|
|
20628
|
-
access: "create"
|
|
20629
|
-
},
|
|
20630
20751
|
"addons.updatePackage": {
|
|
20631
20752
|
capName: "addons",
|
|
20632
20753
|
capScope: "system",
|
|
@@ -23399,12 +23520,6 @@ Object.freeze({
|
|
|
23399
23520
|
addonId: null,
|
|
23400
23521
|
access: "view"
|
|
23401
23522
|
},
|
|
23402
|
-
"pipelineExecutor.reprobeEngine": {
|
|
23403
|
-
capName: "pipeline-executor",
|
|
23404
|
-
capScope: "system",
|
|
23405
|
-
addonId: null,
|
|
23406
|
-
access: "create"
|
|
23407
|
-
},
|
|
23408
23523
|
"pipelineExecutor.runAudioTest": {
|
|
23409
23524
|
capName: "pipeline-executor",
|
|
23410
23525
|
capScope: "system",
|
|
@@ -23555,6 +23670,12 @@ Object.freeze({
|
|
|
23555
23670
|
addonId: null,
|
|
23556
23671
|
access: "view"
|
|
23557
23672
|
},
|
|
23673
|
+
"pipelineOrchestrator.getNodeInferenceDevices": {
|
|
23674
|
+
capName: "pipeline-orchestrator",
|
|
23675
|
+
capScope: "system",
|
|
23676
|
+
addonId: null,
|
|
23677
|
+
access: "view"
|
|
23678
|
+
},
|
|
23558
23679
|
"pipelineOrchestrator.getPipelineAssignment": {
|
|
23559
23680
|
capName: "pipeline-orchestrator",
|
|
23560
23681
|
capScope: "system",
|
|
@@ -23567,6 +23688,12 @@ Object.freeze({
|
|
|
23567
23688
|
addonId: null,
|
|
23568
23689
|
access: "view"
|
|
23569
23690
|
},
|
|
23691
|
+
"pipelineOrchestrator.getPipelineDevicePin": {
|
|
23692
|
+
capName: "pipeline-orchestrator",
|
|
23693
|
+
capScope: "system",
|
|
23694
|
+
addonId: null,
|
|
23695
|
+
access: "view"
|
|
23696
|
+
},
|
|
23570
23697
|
"pipelineOrchestrator.listAgentSettings": {
|
|
23571
23698
|
capName: "pipeline-orchestrator",
|
|
23572
23699
|
capScope: "system",
|
|
@@ -23609,19 +23736,19 @@ Object.freeze({
|
|
|
23609
23736
|
addonId: null,
|
|
23610
23737
|
access: "create"
|
|
23611
23738
|
},
|
|
23612
|
-
"pipelineOrchestrator.
|
|
23739
|
+
"pipelineOrchestrator.setAgentCapabilities": {
|
|
23613
23740
|
capName: "pipeline-orchestrator",
|
|
23614
23741
|
capScope: "system",
|
|
23615
23742
|
addonId: null,
|
|
23616
23743
|
access: "create"
|
|
23617
23744
|
},
|
|
23618
|
-
"pipelineOrchestrator.
|
|
23745
|
+
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
23619
23746
|
capName: "pipeline-orchestrator",
|
|
23620
23747
|
capScope: "system",
|
|
23621
23748
|
addonId: null,
|
|
23622
23749
|
access: "create"
|
|
23623
23750
|
},
|
|
23624
|
-
"pipelineOrchestrator.
|
|
23751
|
+
"pipelineOrchestrator.setAgentInferenceDevices": {
|
|
23625
23752
|
capName: "pipeline-orchestrator",
|
|
23626
23753
|
capScope: "system",
|
|
23627
23754
|
addonId: null,
|
|
@@ -23663,6 +23790,12 @@ Object.freeze({
|
|
|
23663
23790
|
addonId: null,
|
|
23664
23791
|
access: "create"
|
|
23665
23792
|
},
|
|
23793
|
+
"pipelineOrchestrator.setPipelineDevicePin": {
|
|
23794
|
+
capName: "pipeline-orchestrator",
|
|
23795
|
+
capScope: "system",
|
|
23796
|
+
addonId: null,
|
|
23797
|
+
access: "create"
|
|
23798
|
+
},
|
|
23666
23799
|
"pipelineOrchestrator.unassignAudio": {
|
|
23667
23800
|
capName: "pipeline-orchestrator",
|
|
23668
23801
|
capScope: "system",
|
|
@@ -25215,32 +25348,6 @@ Object.freeze({
|
|
|
25215
25348
|
"network-access": "ingress",
|
|
25216
25349
|
"smtp-provider": "email"
|
|
25217
25350
|
});
|
|
25218
|
-
var frameworkSwapPackageSchema = object({
|
|
25219
|
-
name: string(),
|
|
25220
|
-
stagedPath: string(),
|
|
25221
|
-
backupPath: string(),
|
|
25222
|
-
toVersion: string(),
|
|
25223
|
-
fromVersion: string().nullable()
|
|
25224
|
-
});
|
|
25225
|
-
object({
|
|
25226
|
-
jobId: string(),
|
|
25227
|
-
taskId: string(),
|
|
25228
|
-
packages: array(frameworkSwapPackageSchema),
|
|
25229
|
-
requestedAtMs: number(),
|
|
25230
|
-
schemaVersion: literal(1)
|
|
25231
|
-
});
|
|
25232
|
-
object({
|
|
25233
|
-
jobId: string(),
|
|
25234
|
-
taskId: string(),
|
|
25235
|
-
backups: array(object({
|
|
25236
|
-
name: string(),
|
|
25237
|
-
backupPath: string(),
|
|
25238
|
-
livePath: string()
|
|
25239
|
-
})),
|
|
25240
|
-
appliedAtMs: number(),
|
|
25241
|
-
bootAttempts: number(),
|
|
25242
|
-
schemaVersion: literal(1)
|
|
25243
|
-
});
|
|
25244
25351
|
//#endregion
|
|
25245
25352
|
//#region ../system/dist/model-download-service-Cp9f4dk6.mjs
|
|
25246
25353
|
/** Build fetch headers, including HF auth token for huggingface.co URLs */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { c as e, g as t, h as n, l as r, n as i, p as a, r as o, t as s, u as c, y as l } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DJDHChgO.mjs";
|
|
2
2
|
import { n as u, r as d, t as f } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { p } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BVOnSREM.mjs";
|
|
4
4
|
//#region ../ui-library/src/lib/cap-error.ts
|
|
5
5
|
function m(e) {
|
|
6
6
|
if (typeof e != "object" || !e) return null;
|
package/dist/remoteEntry.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-
|
|
1
|
+
import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-C3kcXNUK.mjs";
|
|
2
2
|
export { t as get, e as init };
|
|
@@ -2753,7 +2753,7 @@ async function rr(e) {
|
|
|
2753
2753
|
}
|
|
2754
2754
|
}
|
|
2755
2755
|
async function ir() {
|
|
2756
|
-
return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-
|
|
2756
|
+
return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BK3xUMr7.mjs")).catch((e) => {
|
|
2757
2757
|
throw tr = void 0, e;
|
|
2758
2758
|
}), tr;
|
|
2759
2759
|
}
|