@camstack/addon-post-analysis 1.1.40 → 1.1.42

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.
@@ -11246,10 +11246,7 @@ var ConfigUISchemaNullableBridge = custom();
11246
11246
  var InferenceCapabilitiesBridge = custom();
11247
11247
  var ModelAvailabilityListBridge = custom();
11248
11248
  var PipelineRunResultBridge = custom();
11249
- method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(), PipelineEngineChoiceSchema, {
11250
- kind: "mutation",
11251
- auth: "admin"
11252
- }), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
11249
+ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
11253
11250
  modelId: string(),
11254
11251
  settings: record(string(), unknown()).readonly()
11255
11252
  }))), method(object({ steps: record(string(), object({
@@ -11367,8 +11364,18 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
11367
11364
  * - `runtime` — main camera-serving engine (no idle TTL).
11368
11365
  * - `warm-override` — benchmark/test override held in the warm
11369
11366
  * cache; auto-disposed after the idle TTL.
11367
+ * - `device-pool` — a concurrent per-device pool (Phase 2
11368
+ * multi-device, keyed by `deviceKey`) resolved
11369
+ * via `resolveDeviceFactory`. Runs alongside the
11370
+ * `runtime` engine on a DIFFERENT accelerator
11371
+ * (NPU / iGPU / Coral) — this is how the
11372
+ * Engines tab shows all pools running at once.
11370
11373
  */
11371
- kind: _enum(["runtime", "warm-override"]),
11374
+ kind: _enum([
11375
+ "runtime",
11376
+ "warm-override",
11377
+ "device-pool"
11378
+ ]),
11372
11379
  /** Native pid of the underlying Python pool (null when no pool). */
11373
11380
  poolPid: number().nullable(),
11374
11381
  /** ms since this factory was last used (null when not warm-tracked). */
@@ -11738,6 +11745,19 @@ var RunnerLocalLoadSchema = object({
11738
11745
  avgInferenceTimeMs: number(),
11739
11746
  /** Total queue depth across motion + detection queues. */
11740
11747
  queueDepthTotal: number(),
11748
+ /**
11749
+ * Per-inference-device live load (multi-device C4). One entry per deviceKey
11750
+ * this runner currently has attached cameras on, so the orchestrator's second
11751
+ * `balance()` pass (over a node's devices) weights on real per-pool session
11752
+ * counts. Empty on single-device / pre-multi-device runners. `queueDepthTotal`
11753
+ * per device is 0 until the pool backlog gets a public accessor (follow-up).
11754
+ */
11755
+ devices: array(object({
11756
+ deviceKey: string(),
11757
+ backend: string(),
11758
+ attachedCameras: number(),
11759
+ queueDepthTotal: number()
11760
+ })).default([]),
11741
11761
  /** Hardware capability flags reported by this node. */
11742
11762
  hardware: object({
11743
11763
  hasGpu: boolean(),
@@ -17130,13 +17150,11 @@ var PipelineTemplateSchema = object({
17130
17150
  createdAt: string(),
17131
17151
  updatedAt: string()
17132
17152
  });
17133
- var AgentAddonConfigSchema = object({
17134
- enabled: boolean(),
17153
+ var DeviceStepConfigSchema = object({
17135
17154
  modelId: string().optional(),
17136
- settings: record(string(), unknown()).readonly()
17155
+ settings: record(string(), unknown()).optional()
17137
17156
  });
17138
17157
  var AgentPipelineSettingsSchema = object({
17139
- addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
17140
17158
  maxCameras: number().int().nonnegative().nullable().default(null),
17141
17159
  /** Per-node detection weight (relative share for the quota balancer). */
17142
17160
  detectWeight: number().positive().optional(),
@@ -17160,7 +17178,22 @@ var AgentPipelineSettingsSchema = object({
17160
17178
  * it already uses to reach the hub). Set this only when the auto-detected
17161
17179
  * address is wrong (multi-homed host, NAT, custom interface).
17162
17180
  */
17163
- reachableHost: string().optional()
17181
+ reachableHost: string().optional(),
17182
+ /**
17183
+ * Multi-device inference opt-in (Phase 4). Per-node map deviceKey → {enabled,
17184
+ * weight, steps}. Absent / all-disabled ⇒ the node's single default
17185
+ * accelerator (safe default); two+ enabled ⇒ the dispatcher balances
17186
+ * detection sessions across them so they run CONCURRENTLY. `steps` is the
17187
+ * per-(node,device) BASE provisioning (`stepId → {modelId?, settings?}`) —
17188
+ * the default model/settings for every camera landing on that accelerator;
17189
+ * a stepId absent ⇒ the step uses that device's format default.
17190
+ */
17191
+ inferenceDevices: record(string(), object({
17192
+ enabled: boolean(),
17193
+ weight: number().positive().optional(),
17194
+ maxSessions: number().int().positive().optional(),
17195
+ steps: record(string(), DeviceStepConfigSchema).optional()
17196
+ })).optional()
17164
17197
  });
17165
17198
  var CameraPipelineForAgentSchema = object({
17166
17199
  steps: array(PipelineStepInputSchema).readonly(),
@@ -17170,14 +17203,13 @@ var CameraPipelineForAgentSchema = object({
17170
17203
  }).nullable()
17171
17204
  });
17172
17205
  var CameraStepOverridePatchSchema = object({
17173
- enabled: boolean().optional(),
17174
17206
  modelId: string().optional(),
17175
17207
  settings: record(string(), unknown()).readonly().optional()
17176
17208
  });
17177
17209
  var CameraPipelineSettingsSchema = object({
17178
17210
  pinnedAgentNodeId: string().optional(),
17179
17211
  stepToggles: record(string(), boolean()).optional(),
17180
- stepOverridesByAgent: record(string(), record(string(), CameraStepOverridePatchSchema)).optional(),
17212
+ stepOverridesByDevice: record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).optional(),
17181
17213
  pipelineByAgent: record(string(), CameraPipelineForAgentSchema).optional()
17182
17214
  });
17183
17215
  /**
@@ -17391,6 +17423,44 @@ var CameraStatusSchema = object({
17391
17423
  /** Unix timestamp (ms) when this snapshot was composed server-side. */
17392
17424
  fetchedAt: number()
17393
17425
  });
17426
+ var NodeInferenceDeviceSchema = object({
17427
+ /** Stable per-node device key, e.g. `openvino:npu`, `edgetpu:usb`, `cpu`. */
17428
+ key: string(),
17429
+ backend: string(),
17430
+ device: string(),
17431
+ format: _enum(MODEL_FORMATS),
17432
+ /** Whether the node's live probe reports the device as usable right now. */
17433
+ available: boolean(),
17434
+ /**
17435
+ * Whether this device participates in dispatch. AUTO default (spec C2):
17436
+ * accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
17437
+ * entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
17438
+ * not a balanced target). An explicit stored value always wins; a stored-only
17439
+ * (unavailable) key keeps its stored value.
17440
+ */
17441
+ enabled: boolean(),
17442
+ /** Relative balancer weight for the enabled device (default 1). */
17443
+ weight: number(),
17444
+ /** Per-device concurrent-session cap; null = unlimited (multi-device C4). */
17445
+ maxSessions: number().nullable(),
17446
+ /** Object-detection model the executor defaults to for this deviceKey. */
17447
+ defaultModelId: string(),
17448
+ /**
17449
+ * Per-(node,device) BASE provisioning (C7.2/C7.4) — the RAW stored
17450
+ * `stepId → {modelId?, settings?}` map from `inferenceDevices[key].steps`.
17451
+ * Absent/empty ⇒ no base (every step uses its device format default). The
17452
+ * UI cross-references `pipelineExecutor.getSchema` for the models actually
17453
+ * available per format; this is the stored selection that becomes the
17454
+ * default for EVERY camera landing on this accelerator.
17455
+ */
17456
+ steps: record(string(), DeviceStepConfigSchema).optional()
17457
+ });
17458
+ var NodeInferenceDevicesSchema = object({
17459
+ nodeId: string(),
17460
+ /** False when the node's platform-probe was unreachable (no live device set). */
17461
+ reachable: boolean(),
17462
+ devices: array(NodeInferenceDeviceSchema).readonly()
17463
+ });
17394
17464
  method(object({
17395
17465
  deviceId: number(),
17396
17466
  agentNodeId: string()
@@ -17400,7 +17470,13 @@ method(object({
17400
17470
  }), method(object({ deviceId: number() }), object({ success: literal(true) }), {
17401
17471
  kind: "mutation",
17402
17472
  auth: "admin"
17403
- }), method(_void(), object({ migrated: number() }), {
17473
+ }), method(object({
17474
+ deviceId: number(),
17475
+ deviceKey: string()
17476
+ }), object({ success: literal(true) }), {
17477
+ kind: "mutation",
17478
+ auth: "admin"
17479
+ }), method(object({ deviceId: number() }), object({ deviceKey: string().nullable() })), method(_void(), object({ migrated: number() }), {
17404
17480
  kind: "mutation",
17405
17481
  auth: "admin"
17406
17482
  }), 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({
@@ -17434,13 +17510,7 @@ method(object({
17434
17510
  }))), method(object({ agentNodeId: string() }), AgentPipelineSettingsSchema.nullable()), method(_void(), array(object({
17435
17511
  nodeId: string(),
17436
17512
  settings: AgentPipelineSettingsSchema
17437
- })).readonly()), method(object({
17438
- agentNodeId: string(),
17439
- defaults: record(string(), AgentAddonConfigSchema)
17440
- }), object({ success: literal(true) }), {
17441
- kind: "mutation",
17442
- auth: "admin"
17443
- }), method(object({ agentNodeId: string() }), object({
17513
+ })).readonly()), method(object({ agentNodeId: string() }), object({
17444
17514
  success: boolean(),
17445
17515
  removed: boolean()
17446
17516
  }), {
@@ -17472,7 +17542,18 @@ method(object({
17472
17542
  }), object({ success: literal(true) }), {
17473
17543
  kind: "mutation",
17474
17544
  auth: "admin"
17475
- }), method(object({ agentNodeId: string() }), object({
17545
+ }), method(object({
17546
+ agentNodeId: string(),
17547
+ inferenceDevices: record(string(), object({
17548
+ enabled: boolean(),
17549
+ weight: number().positive().optional(),
17550
+ maxSessions: number().int().positive().optional(),
17551
+ steps: record(string(), DeviceStepConfigSchema).optional()
17552
+ }))
17553
+ }), object({ success: literal(true) }), {
17554
+ kind: "mutation",
17555
+ auth: "admin"
17556
+ }), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({ agentNodeId: string() }), object({
17476
17557
  success: literal(true),
17477
17558
  /** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
17478
17559
  effectiveModelId: string().nullable(),
@@ -17488,9 +17569,10 @@ method(object({
17488
17569
  }), object({ success: literal(true) }), {
17489
17570
  kind: "mutation",
17490
17571
  auth: "admin"
17491
- }), method(object({ deviceId: number() }), record(string(), record(string(), CameraStepOverridePatchSchema)).nullable()), method(object({
17572
+ }), method(object({ deviceId: number() }), record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).nullable()), method(object({
17492
17573
  deviceId: number(),
17493
17574
  agentNodeId: string(),
17575
+ deviceKey: string(),
17494
17576
  addonId: string(),
17495
17577
  patch: CameraStepOverridePatchSchema.nullable()
17496
17578
  }), object({ success: literal(true) }), {
@@ -17642,7 +17724,8 @@ method(_void(), ServerPackageStatusSchema, { auth: "admin" }), method(_void(), S
17642
17724
  /** Explicit target version; omitted = latest from the registry. */
17643
17725
  version: string().optional() }), ServerUpdateActionResultSchema, {
17644
17726
  kind: "mutation",
17645
- auth: "admin"
17727
+ auth: "admin",
17728
+ timeoutMs: 16 * 6e4
17646
17729
  }), method(_void(), ServerUpdateActionResultSchema, {
17647
17730
  kind: "mutation",
17648
17731
  auth: "admin"
@@ -23811,12 +23894,6 @@ Object.freeze({
23811
23894
  addonId: null,
23812
23895
  access: "view"
23813
23896
  },
23814
- "pipelineExecutor.reprobeEngine": {
23815
- capName: "pipeline-executor",
23816
- capScope: "system",
23817
- addonId: null,
23818
- access: "create"
23819
- },
23820
23897
  "pipelineExecutor.runAudioTest": {
23821
23898
  capName: "pipeline-executor",
23822
23899
  capScope: "system",
@@ -23967,6 +24044,12 @@ Object.freeze({
23967
24044
  addonId: null,
23968
24045
  access: "view"
23969
24046
  },
24047
+ "pipelineOrchestrator.getNodeInferenceDevices": {
24048
+ capName: "pipeline-orchestrator",
24049
+ capScope: "system",
24050
+ addonId: null,
24051
+ access: "view"
24052
+ },
23970
24053
  "pipelineOrchestrator.getPipelineAssignment": {
23971
24054
  capName: "pipeline-orchestrator",
23972
24055
  capScope: "system",
@@ -23979,6 +24062,12 @@ Object.freeze({
23979
24062
  addonId: null,
23980
24063
  access: "view"
23981
24064
  },
24065
+ "pipelineOrchestrator.getPipelineDevicePin": {
24066
+ capName: "pipeline-orchestrator",
24067
+ capScope: "system",
24068
+ addonId: null,
24069
+ access: "view"
24070
+ },
23982
24071
  "pipelineOrchestrator.listAgentSettings": {
23983
24072
  capName: "pipeline-orchestrator",
23984
24073
  capScope: "system",
@@ -24021,19 +24110,19 @@ Object.freeze({
24021
24110
  addonId: null,
24022
24111
  access: "create"
24023
24112
  },
24024
- "pipelineOrchestrator.setAgentAddonDefaults": {
24113
+ "pipelineOrchestrator.setAgentCapabilities": {
24025
24114
  capName: "pipeline-orchestrator",
24026
24115
  capScope: "system",
24027
24116
  addonId: null,
24028
24117
  access: "create"
24029
24118
  },
24030
- "pipelineOrchestrator.setAgentCapabilities": {
24119
+ "pipelineOrchestrator.setAgentDetectWeight": {
24031
24120
  capName: "pipeline-orchestrator",
24032
24121
  capScope: "system",
24033
24122
  addonId: null,
24034
24123
  access: "create"
24035
24124
  },
24036
- "pipelineOrchestrator.setAgentDetectWeight": {
24125
+ "pipelineOrchestrator.setAgentInferenceDevices": {
24037
24126
  capName: "pipeline-orchestrator",
24038
24127
  capScope: "system",
24039
24128
  addonId: null,
@@ -24075,6 +24164,12 @@ Object.freeze({
24075
24164
  addonId: null,
24076
24165
  access: "create"
24077
24166
  },
24167
+ "pipelineOrchestrator.setPipelineDevicePin": {
24168
+ capName: "pipeline-orchestrator",
24169
+ capScope: "system",
24170
+ addonId: null,
24171
+ access: "create"
24172
+ },
24078
24173
  "pipelineOrchestrator.unassignAudio": {
24079
24174
  capName: "pipeline-orchestrator",
24080
24175
  capScope: "system",
@@ -11224,10 +11224,7 @@ var ConfigUISchemaNullableBridge = custom();
11224
11224
  var InferenceCapabilitiesBridge = custom();
11225
11225
  var ModelAvailabilityListBridge = custom();
11226
11226
  var PipelineRunResultBridge = custom();
11227
- method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(), PipelineEngineChoiceSchema, {
11228
- kind: "mutation",
11229
- auth: "admin"
11230
- }), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
11227
+ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
11231
11228
  modelId: string(),
11232
11229
  settings: record(string(), unknown()).readonly()
11233
11230
  }))), method(object({ steps: record(string(), object({
@@ -11345,8 +11342,18 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
11345
11342
  * - `runtime` — main camera-serving engine (no idle TTL).
11346
11343
  * - `warm-override` — benchmark/test override held in the warm
11347
11344
  * cache; auto-disposed after the idle TTL.
11345
+ * - `device-pool` — a concurrent per-device pool (Phase 2
11346
+ * multi-device, keyed by `deviceKey`) resolved
11347
+ * via `resolveDeviceFactory`. Runs alongside the
11348
+ * `runtime` engine on a DIFFERENT accelerator
11349
+ * (NPU / iGPU / Coral) — this is how the
11350
+ * Engines tab shows all pools running at once.
11348
11351
  */
11349
- kind: _enum(["runtime", "warm-override"]),
11352
+ kind: _enum([
11353
+ "runtime",
11354
+ "warm-override",
11355
+ "device-pool"
11356
+ ]),
11350
11357
  /** Native pid of the underlying Python pool (null when no pool). */
11351
11358
  poolPid: number().nullable(),
11352
11359
  /** ms since this factory was last used (null when not warm-tracked). */
@@ -11716,6 +11723,19 @@ var RunnerLocalLoadSchema = object({
11716
11723
  avgInferenceTimeMs: number(),
11717
11724
  /** Total queue depth across motion + detection queues. */
11718
11725
  queueDepthTotal: number(),
11726
+ /**
11727
+ * Per-inference-device live load (multi-device C4). One entry per deviceKey
11728
+ * this runner currently has attached cameras on, so the orchestrator's second
11729
+ * `balance()` pass (over a node's devices) weights on real per-pool session
11730
+ * counts. Empty on single-device / pre-multi-device runners. `queueDepthTotal`
11731
+ * per device is 0 until the pool backlog gets a public accessor (follow-up).
11732
+ */
11733
+ devices: array(object({
11734
+ deviceKey: string(),
11735
+ backend: string(),
11736
+ attachedCameras: number(),
11737
+ queueDepthTotal: number()
11738
+ })).default([]),
11719
11739
  /** Hardware capability flags reported by this node. */
11720
11740
  hardware: object({
11721
11741
  hasGpu: boolean(),
@@ -17108,13 +17128,11 @@ var PipelineTemplateSchema = object({
17108
17128
  createdAt: string(),
17109
17129
  updatedAt: string()
17110
17130
  });
17111
- var AgentAddonConfigSchema = object({
17112
- enabled: boolean(),
17131
+ var DeviceStepConfigSchema = object({
17113
17132
  modelId: string().optional(),
17114
- settings: record(string(), unknown()).readonly()
17133
+ settings: record(string(), unknown()).optional()
17115
17134
  });
17116
17135
  var AgentPipelineSettingsSchema = object({
17117
- addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
17118
17136
  maxCameras: number().int().nonnegative().nullable().default(null),
17119
17137
  /** Per-node detection weight (relative share for the quota balancer). */
17120
17138
  detectWeight: number().positive().optional(),
@@ -17138,7 +17156,22 @@ var AgentPipelineSettingsSchema = object({
17138
17156
  * it already uses to reach the hub). Set this only when the auto-detected
17139
17157
  * address is wrong (multi-homed host, NAT, custom interface).
17140
17158
  */
17141
- reachableHost: string().optional()
17159
+ reachableHost: string().optional(),
17160
+ /**
17161
+ * Multi-device inference opt-in (Phase 4). Per-node map deviceKey → {enabled,
17162
+ * weight, steps}. Absent / all-disabled ⇒ the node's single default
17163
+ * accelerator (safe default); two+ enabled ⇒ the dispatcher balances
17164
+ * detection sessions across them so they run CONCURRENTLY. `steps` is the
17165
+ * per-(node,device) BASE provisioning (`stepId → {modelId?, settings?}`) —
17166
+ * the default model/settings for every camera landing on that accelerator;
17167
+ * a stepId absent ⇒ the step uses that device's format default.
17168
+ */
17169
+ inferenceDevices: record(string(), object({
17170
+ enabled: boolean(),
17171
+ weight: number().positive().optional(),
17172
+ maxSessions: number().int().positive().optional(),
17173
+ steps: record(string(), DeviceStepConfigSchema).optional()
17174
+ })).optional()
17142
17175
  });
17143
17176
  var CameraPipelineForAgentSchema = object({
17144
17177
  steps: array(PipelineStepInputSchema).readonly(),
@@ -17148,14 +17181,13 @@ var CameraPipelineForAgentSchema = object({
17148
17181
  }).nullable()
17149
17182
  });
17150
17183
  var CameraStepOverridePatchSchema = object({
17151
- enabled: boolean().optional(),
17152
17184
  modelId: string().optional(),
17153
17185
  settings: record(string(), unknown()).readonly().optional()
17154
17186
  });
17155
17187
  var CameraPipelineSettingsSchema = object({
17156
17188
  pinnedAgentNodeId: string().optional(),
17157
17189
  stepToggles: record(string(), boolean()).optional(),
17158
- stepOverridesByAgent: record(string(), record(string(), CameraStepOverridePatchSchema)).optional(),
17190
+ stepOverridesByDevice: record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).optional(),
17159
17191
  pipelineByAgent: record(string(), CameraPipelineForAgentSchema).optional()
17160
17192
  });
17161
17193
  /**
@@ -17369,6 +17401,44 @@ var CameraStatusSchema = object({
17369
17401
  /** Unix timestamp (ms) when this snapshot was composed server-side. */
17370
17402
  fetchedAt: number()
17371
17403
  });
17404
+ var NodeInferenceDeviceSchema = object({
17405
+ /** Stable per-node device key, e.g. `openvino:npu`, `edgetpu:usb`, `cpu`. */
17406
+ key: string(),
17407
+ backend: string(),
17408
+ device: string(),
17409
+ format: _enum(MODEL_FORMATS),
17410
+ /** Whether the node's live probe reports the device as usable right now. */
17411
+ available: boolean(),
17412
+ /**
17413
+ * Whether this device participates in dispatch. AUTO default (spec C2):
17414
+ * accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
17415
+ * entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
17416
+ * not a balanced target). An explicit stored value always wins; a stored-only
17417
+ * (unavailable) key keeps its stored value.
17418
+ */
17419
+ enabled: boolean(),
17420
+ /** Relative balancer weight for the enabled device (default 1). */
17421
+ weight: number(),
17422
+ /** Per-device concurrent-session cap; null = unlimited (multi-device C4). */
17423
+ maxSessions: number().nullable(),
17424
+ /** Object-detection model the executor defaults to for this deviceKey. */
17425
+ defaultModelId: string(),
17426
+ /**
17427
+ * Per-(node,device) BASE provisioning (C7.2/C7.4) — the RAW stored
17428
+ * `stepId → {modelId?, settings?}` map from `inferenceDevices[key].steps`.
17429
+ * Absent/empty ⇒ no base (every step uses its device format default). The
17430
+ * UI cross-references `pipelineExecutor.getSchema` for the models actually
17431
+ * available per format; this is the stored selection that becomes the
17432
+ * default for EVERY camera landing on this accelerator.
17433
+ */
17434
+ steps: record(string(), DeviceStepConfigSchema).optional()
17435
+ });
17436
+ var NodeInferenceDevicesSchema = object({
17437
+ nodeId: string(),
17438
+ /** False when the node's platform-probe was unreachable (no live device set). */
17439
+ reachable: boolean(),
17440
+ devices: array(NodeInferenceDeviceSchema).readonly()
17441
+ });
17372
17442
  method(object({
17373
17443
  deviceId: number(),
17374
17444
  agentNodeId: string()
@@ -17378,7 +17448,13 @@ method(object({
17378
17448
  }), method(object({ deviceId: number() }), object({ success: literal(true) }), {
17379
17449
  kind: "mutation",
17380
17450
  auth: "admin"
17381
- }), method(_void(), object({ migrated: number() }), {
17451
+ }), method(object({
17452
+ deviceId: number(),
17453
+ deviceKey: string()
17454
+ }), object({ success: literal(true) }), {
17455
+ kind: "mutation",
17456
+ auth: "admin"
17457
+ }), method(object({ deviceId: number() }), object({ deviceKey: string().nullable() })), method(_void(), object({ migrated: number() }), {
17382
17458
  kind: "mutation",
17383
17459
  auth: "admin"
17384
17460
  }), 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({
@@ -17412,13 +17488,7 @@ method(object({
17412
17488
  }))), method(object({ agentNodeId: string() }), AgentPipelineSettingsSchema.nullable()), method(_void(), array(object({
17413
17489
  nodeId: string(),
17414
17490
  settings: AgentPipelineSettingsSchema
17415
- })).readonly()), method(object({
17416
- agentNodeId: string(),
17417
- defaults: record(string(), AgentAddonConfigSchema)
17418
- }), object({ success: literal(true) }), {
17419
- kind: "mutation",
17420
- auth: "admin"
17421
- }), method(object({ agentNodeId: string() }), object({
17491
+ })).readonly()), method(object({ agentNodeId: string() }), object({
17422
17492
  success: boolean(),
17423
17493
  removed: boolean()
17424
17494
  }), {
@@ -17450,7 +17520,18 @@ method(object({
17450
17520
  }), object({ success: literal(true) }), {
17451
17521
  kind: "mutation",
17452
17522
  auth: "admin"
17453
- }), method(object({ agentNodeId: string() }), object({
17523
+ }), method(object({
17524
+ agentNodeId: string(),
17525
+ inferenceDevices: record(string(), object({
17526
+ enabled: boolean(),
17527
+ weight: number().positive().optional(),
17528
+ maxSessions: number().int().positive().optional(),
17529
+ steps: record(string(), DeviceStepConfigSchema).optional()
17530
+ }))
17531
+ }), object({ success: literal(true) }), {
17532
+ kind: "mutation",
17533
+ auth: "admin"
17534
+ }), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({ agentNodeId: string() }), object({
17454
17535
  success: literal(true),
17455
17536
  /** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
17456
17537
  effectiveModelId: string().nullable(),
@@ -17466,9 +17547,10 @@ method(object({
17466
17547
  }), object({ success: literal(true) }), {
17467
17548
  kind: "mutation",
17468
17549
  auth: "admin"
17469
- }), method(object({ deviceId: number() }), record(string(), record(string(), CameraStepOverridePatchSchema)).nullable()), method(object({
17550
+ }), method(object({ deviceId: number() }), record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).nullable()), method(object({
17470
17551
  deviceId: number(),
17471
17552
  agentNodeId: string(),
17553
+ deviceKey: string(),
17472
17554
  addonId: string(),
17473
17555
  patch: CameraStepOverridePatchSchema.nullable()
17474
17556
  }), object({ success: literal(true) }), {
@@ -17620,7 +17702,8 @@ method(_void(), ServerPackageStatusSchema, { auth: "admin" }), method(_void(), S
17620
17702
  /** Explicit target version; omitted = latest from the registry. */
17621
17703
  version: string().optional() }), ServerUpdateActionResultSchema, {
17622
17704
  kind: "mutation",
17623
- auth: "admin"
17705
+ auth: "admin",
17706
+ timeoutMs: 16 * 6e4
17624
17707
  }), method(_void(), ServerUpdateActionResultSchema, {
17625
17708
  kind: "mutation",
17626
17709
  auth: "admin"
@@ -23789,12 +23872,6 @@ Object.freeze({
23789
23872
  addonId: null,
23790
23873
  access: "view"
23791
23874
  },
23792
- "pipelineExecutor.reprobeEngine": {
23793
- capName: "pipeline-executor",
23794
- capScope: "system",
23795
- addonId: null,
23796
- access: "create"
23797
- },
23798
23875
  "pipelineExecutor.runAudioTest": {
23799
23876
  capName: "pipeline-executor",
23800
23877
  capScope: "system",
@@ -23945,6 +24022,12 @@ Object.freeze({
23945
24022
  addonId: null,
23946
24023
  access: "view"
23947
24024
  },
24025
+ "pipelineOrchestrator.getNodeInferenceDevices": {
24026
+ capName: "pipeline-orchestrator",
24027
+ capScope: "system",
24028
+ addonId: null,
24029
+ access: "view"
24030
+ },
23948
24031
  "pipelineOrchestrator.getPipelineAssignment": {
23949
24032
  capName: "pipeline-orchestrator",
23950
24033
  capScope: "system",
@@ -23957,6 +24040,12 @@ Object.freeze({
23957
24040
  addonId: null,
23958
24041
  access: "view"
23959
24042
  },
24043
+ "pipelineOrchestrator.getPipelineDevicePin": {
24044
+ capName: "pipeline-orchestrator",
24045
+ capScope: "system",
24046
+ addonId: null,
24047
+ access: "view"
24048
+ },
23960
24049
  "pipelineOrchestrator.listAgentSettings": {
23961
24050
  capName: "pipeline-orchestrator",
23962
24051
  capScope: "system",
@@ -23999,19 +24088,19 @@ Object.freeze({
23999
24088
  addonId: null,
24000
24089
  access: "create"
24001
24090
  },
24002
- "pipelineOrchestrator.setAgentAddonDefaults": {
24091
+ "pipelineOrchestrator.setAgentCapabilities": {
24003
24092
  capName: "pipeline-orchestrator",
24004
24093
  capScope: "system",
24005
24094
  addonId: null,
24006
24095
  access: "create"
24007
24096
  },
24008
- "pipelineOrchestrator.setAgentCapabilities": {
24097
+ "pipelineOrchestrator.setAgentDetectWeight": {
24009
24098
  capName: "pipeline-orchestrator",
24010
24099
  capScope: "system",
24011
24100
  addonId: null,
24012
24101
  access: "create"
24013
24102
  },
24014
- "pipelineOrchestrator.setAgentDetectWeight": {
24103
+ "pipelineOrchestrator.setAgentInferenceDevices": {
24015
24104
  capName: "pipeline-orchestrator",
24016
24105
  capScope: "system",
24017
24106
  addonId: null,
@@ -24053,6 +24142,12 @@ Object.freeze({
24053
24142
  addonId: null,
24054
24143
  access: "create"
24055
24144
  },
24145
+ "pipelineOrchestrator.setPipelineDevicePin": {
24146
+ capName: "pipeline-orchestrator",
24147
+ capScope: "system",
24148
+ addonId: null,
24149
+ access: "create"
24150
+ },
24056
24151
  "pipelineOrchestrator.unassignAudio": {
24057
24152
  capName: "pipeline-orchestrator",
24058
24153
  capScope: "system",
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-DUcGHr9E.js");
5
+ const require_dist = require("../dist-BveR79HO.js");
6
6
  let node_fs = require("node:fs");
7
7
  let node_fs$1 = require_dist.__toESM(node_fs, 1);
8
8
  node_fs = require_dist.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- import { b as BaseAddon, f as hfModelUrl, u as embeddingEncoderCapability } from "../dist-CO07v2sR.mjs";
1
+ import { b as BaseAddon, f as hfModelUrl, u as embeddingEncoderCapability } from "../dist-Cgv25jQz.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import * as fs from "node:fs";
4
4
  import * as path$1 from "node:path";
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-DUcGHr9E.js");
1
+ const require_dist = require("./dist-BveR79HO.js");
2
2
  let node_fs = require("node:fs");
3
3
  node_fs = require_dist.__toESM(node_fs, 1);
4
4
  let node_path = require("node:path");
@@ -1,6 +1,6 @@
1
1
  import { a as e, i as t, n, o as r, r as i, t as a } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.js-C0AuF9av.mjs";
2
2
  import { t as o } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-B3Wx5J80.mjs";
3
- import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-B4AjHkeF.mjs";
3
+ import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CUKChUeW.mjs";
4
4
  import { n as m, r as h, t as g } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-Bm-iyjmq.mjs";
5
5
  //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils.js
6
6
  var _ = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), v = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), y = (e) => {
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.1.55",
21
+ version: "1.1.58",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_pipeline_analytics_widgets",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.1.44",
36
+ version: "1.1.46",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_pipeline_analytics_widgets",