@camstack/addon-pipeline-orchestrator 1.2.303 → 1.2.304

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.
@@ -3,7 +3,7 @@ import "./dist-CYZr2fwk.mjs";
3
3
  var e = {
4
4
  "@camstack/sdk": {
5
5
  name: "@camstack/sdk",
6
- version: "1.2.128",
6
+ version: "1.2.129",
7
7
  scope: ["default"],
8
8
  loaded: !1,
9
9
  from: "addon_pipeline_orchestrator_widgets",
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.336",
21
+ version: "1.2.339",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_pipeline_orchestrator_widgets",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.2.257",
36
+ version: "1.2.259",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_pipeline_orchestrator_widgets",
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.336",
39
+ version: "1.2.339",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  singleton: !0,
@@ -45,7 +45,7 @@ async function r() {
45
45
  }
46
46
  },
47
47
  "@camstack/sdk": {
48
- version: "1.2.128",
48
+ version: "1.2.129",
49
49
  scope: "default",
50
50
  shareConfig: {
51
51
  singleton: !0,
@@ -99,7 +99,7 @@ async function r() {
99
99
  }
100
100
  },
101
101
  "@camstack/ui-library": {
102
- version: "1.2.257",
102
+ version: "1.2.259",
103
103
  scope: "default",
104
104
  shareConfig: {
105
105
  singleton: !0,
package/dist/index.js CHANGED
@@ -26969,11 +26969,14 @@ var HardwareClassIdSchema = _enum([
26969
26969
  "intel-n-series",
26970
26970
  "apple-m-base",
26971
26971
  "apple-m-pro",
26972
+ "amd-phoenix",
26972
26973
  "unknown"
26973
26974
  ]);
26974
26975
  var AcceleratorKindSchema = _enum([
26975
26976
  "intel-npu",
26976
26977
  "intel-igpu",
26978
+ "amd-igpu",
26979
+ "amd-npu",
26977
26980
  "x86-cpu",
26978
26981
  "arm-cpu",
26979
26982
  "apple-ane",
@@ -37576,7 +37579,15 @@ var GpuInfoSchema = object({
37576
37579
  name: string(),
37577
37580
  memoryMB: number().optional()
37578
37581
  });
37579
- var NpuInfoSchema = object({ type: _enum(["apple-ane", "intel-npu"]) });
37582
+ var NpuInfoSchema = object({
37583
+ type: _enum([
37584
+ "apple-ane",
37585
+ "intel-npu",
37586
+ "amd-xdna"
37587
+ ]),
37588
+ name: string().optional(),
37589
+ generation: _enum(["xdna1", "xdna2"]).optional()
37590
+ });
37580
37591
  var CoralInfoSchema = object({
37581
37592
  type: literal("coral-edgetpu"),
37582
37593
  bus: string().optional()
@@ -54559,6 +54570,8 @@ function collectModelBoundKeys(fields) {
54559
54570
  var APPLE_CHIP = /^Apple M(\d+)(?:\s+(Pro|Max|Ultra))?\b/i;
54560
54571
  var INTEL_CORE_ULTRA = /Core\(TM\)\s+Ultra|Core Ultra/i;
54561
54572
  var INTEL_N_SERIES = /Intel\(R\)\s+N\d{2,3}\b|\bIntel\s+N\d{2,3}\b/i;
54573
+ /** Phoenix / Hawk Point mobile (7040/8040) and Ryzen 8000G desktop APUs. */
54574
+ var AMD_PHOENIX = /Ryzen \d+ (7[0-9]40|8[0-9]40|8[0-9]45)[HSU]|Ryzen \d+ 8[0-9]00G/i;
54562
54575
  function parseAppleChip(cpuModel) {
54563
54576
  const match = APPLE_CHIP.exec(cpuModel.trim());
54564
54577
  if (match === null) return null;
@@ -54591,6 +54604,10 @@ function classifyInferenceHardware(hw) {
54591
54604
  hardwareClass: "intel-n-series",
54592
54605
  cpuModel
54593
54606
  };
54607
+ if (AMD_PHOENIX.test(cpuModel)) return {
54608
+ hardwareClass: "amd-phoenix",
54609
+ cpuModel
54610
+ };
54594
54611
  return {
54595
54612
  hardwareClass: "unknown",
54596
54613
  cpuModel
@@ -54607,6 +54624,8 @@ function acceleratorKindOf(deviceKey, hw) {
54607
54624
  if (backend === "coreml") return device === "cpu" ? "arm-cpu" : "apple-ane";
54608
54625
  if (backend === "openvino" && device === "npu") return "intel-npu";
54609
54626
  if (backend === "openvino" && device === "gpu") return "intel-igpu";
54627
+ if (backend === "onnx" && device === "webgpu") return "amd-igpu";
54628
+ if (backend === "vitisai" && device === "npu") return "amd-npu";
54610
54629
  if (backend === "cpu" || device === "cpu") return hw.arch === "arm64" ? "arm-cpu" : "x86-cpu";
54611
54630
  return null;
54612
54631
  }
@@ -54925,6 +54944,97 @@ var DETECTOR_PERF = {
54925
54944
  }
54926
54945
  }
54927
54946
  },
54947
+ "amd-phoenix": {
54948
+ "x86-cpu": {
54949
+ "yolov9t-320": {
54950
+ p50Ms: 24,
54951
+ fps: 42,
54952
+ measured: true
54953
+ },
54954
+ "yolov9t-320-int8": {
54955
+ p50Ms: 12,
54956
+ fps: 83,
54957
+ measured: true
54958
+ },
54959
+ "yolov9t-640": {
54960
+ p50Ms: 50,
54961
+ fps: 20,
54962
+ measured: true
54963
+ },
54964
+ "yolov9t-640-int8": {
54965
+ p50Ms: 20,
54966
+ fps: 50,
54967
+ measured: true
54968
+ },
54969
+ "yolov9s-320": {
54970
+ p50Ms: 30,
54971
+ fps: 33,
54972
+ measured: true
54973
+ },
54974
+ "yolov9s-320-int8": {
54975
+ p50Ms: 15,
54976
+ fps: 67,
54977
+ measured: true
54978
+ },
54979
+ "yolov9s-640": {
54980
+ p50Ms: 92,
54981
+ fps: 11,
54982
+ measured: true
54983
+ },
54984
+ "yolov9s-640-int8": {
54985
+ p50Ms: 27,
54986
+ fps: 37,
54987
+ measured: true
54988
+ },
54989
+ "yolov9m-320": {
54990
+ p50Ms: 67,
54991
+ fps: 15,
54992
+ measured: true
54993
+ },
54994
+ "yolov9m-320-int8": {
54995
+ p50Ms: 21,
54996
+ fps: 48,
54997
+ measured: true
54998
+ },
54999
+ "yolov9m-640": {
55000
+ p50Ms: 229,
55001
+ fps: 4,
55002
+ measured: true
55003
+ },
55004
+ "yolov9m-640-int8": {
55005
+ p50Ms: 48,
55006
+ fps: 21,
55007
+ measured: true
55008
+ }
55009
+ },
55010
+ "amd-igpu": {
55011
+ "yolov9t-320": {
55012
+ p50Ms: 188,
55013
+ fps: 5,
55014
+ measured: true
55015
+ },
55016
+ "yolov9t-640": {
55017
+ p50Ms: 671,
55018
+ fps: 1,
55019
+ measured: true
55020
+ },
55021
+ "yolov9s-320": {
55022
+ p50Ms: 401,
55023
+ fps: 2,
55024
+ measured: true
55025
+ },
55026
+ "yolov9s-640": {
55027
+ p50Ms: 1434,
55028
+ fps: 1,
55029
+ measured: true
55030
+ },
55031
+ "yolov9m-320": {
55032
+ p50Ms: 1076,
55033
+ fps: 1,
55034
+ measured: true
55035
+ }
55036
+ }
55037
+ },
54928
55038
  "apple-m-pro": { "apple-ane": {
54929
55039
  "yolov9t-320": {
54930
55040
  p50Ms: 1.1,
@@ -58486,11 +58596,8 @@ function parseDeviceKey(deviceKey) {
58486
58596
  * fall back to the universal nano default (`yolo26n`).
58487
58597
  */
58488
58598
  function defaultModelIdForDevice(deviceKey) {
58489
- const { backend, device } = parseDeviceKey(deviceKey);
58490
- if (backend === "openvino") {
58491
- if (device === "cpu") return "yolo26n";
58492
- return "yolov9m-320-int8";
58493
- }
58599
+ const { backend } = parseDeviceKey(deviceKey);
58600
+ if (backend === "openvino") return "yolov9m-320-int8";
58494
58601
  if (backend === "edgetpu") return "ssd-mobilenet-v2-coco-edgetpu";
58495
58602
  if (backend === "coreml") return "yolov9m-320";
58496
58603
  return "yolo26n";
@@ -58518,15 +58625,21 @@ function validateJumpTargets(inferenceDevices, enabledAvailableKeys) {
58518
58625
  * Merge a node's live-probed inference devices with its stored per-device map.
58519
58626
  *
58520
58627
  * The default is **AUTO = all discovered ACCELERATORS enabled** (spec C2,
58521
- * opt-OUT) with TWO deliberate exceptions, both **opt-IN** (default disabled):
58628
+ * opt-OUT) with THREE deliberate exceptions, all **opt-IN** (default disabled):
58522
58629
  *
58523
- * - **CPU**: `enumerateInferenceDevices` always emits a universal `cpu`
58524
- * floor on every platform; auto-enabling it would let the balancer
58525
- * round-robin ~1/N of sessions onto the slow CPU pool alongside the
58526
- * NPU/iGPU/ANE. CPU stays the always-available FALLBACK (a node with no
58527
- * eligible accelerator leaves `deviceKey` unset → the runner's default
58630
+ * - **CPU floor (`cpu`)**: `enumerateInferenceDevices` always emits a
58631
+ * universal `cpu` key on every platform; auto-enabling it would let the
58632
+ * balancer round-robin ~1/N of sessions onto the slow CPU pool alongside
58633
+ * the NPU/iGPU/ANE. CPU stays the always-available FALLBACK (a node with
58634
+ * no eligible accelerator leaves `deviceKey` unset → the runner's default
58528
58635
  * pool, which is CPU), not a balanced target — matching the spec's "no
58529
58636
  * device eligible → fall back to CPU".
58637
+ * - **Any `*:cpu` device** (today `openvino:cpu` on AMD): still a CPU
58638
+ * pool — Zen4 VNNI serving int8 IRs — not an accelerator. Auto-enabling
58639
+ * it next to `onnx:webgpu` would steal sessions from the iGPU the same
58640
+ * way the bare `cpu` floor would. Intel never emits `openvino:cpu`
58641
+ * (NPU/iGPU cover the IR format); AMD does, so the device-string rule
58642
+ * keeps both CPU-class keys opt-IN.
58530
58643
  * - **Coral Edge TPU (`edgetpu`)**: the standing rule since the Coral
58531
58644
  * executor landed is that it surfaces as selectable but is NEVER
58532
58645
  * auto-picked — it runs a DIFFERENT, weaker model family (tflite SSD
@@ -58537,12 +58650,12 @@ function validateJumpTargets(inferenceDevices, enabledAvailableKeys) {
58537
58650
  * hours at 2.4fps failing tflite model resolution. An operator who wants
58538
58651
  * the Coral balanced opts it in explicitly (`enabled: true`).
58539
58652
  *
58540
- * So: an NPU/iGPU/ANE accelerator with NO stored entry is `enabled:true`; a
58541
- * CPU or edgetpu device with no stored entry is `enabled:false`; an explicit
58542
- * stored `enabled` always wins (an operator can opt CPU/Coral in, or an
58543
- * accelerator out). A stored-only key (configured but the probe did not
58544
- * return it — removed/unplugged HW) keeps its stored `enabled` and surfaces
58545
- * as `available:false`, so the UI still shows it.
58653
+ * So: an NPU/iGPU/ANE/WebGPU accelerator with NO stored entry is
58654
+ * `enabled:true`; a CPU-class or edgetpu device with no stored entry is
58655
+ * `enabled:false`; an explicit stored `enabled` always wins (an operator can
58656
+ * opt CPU/Coral in, or an accelerator out). A stored-only key (configured but
58657
+ * the probe did not return it — removed/unplugged HW) keeps its stored
58658
+ * `enabled` and surfaces as `available:false`, so the UI still shows it.
58546
58659
  *
58547
58660
  * Pure + deterministic (sorted by key) — the single merge authority shared by
58548
58661
  * the `getNodeInferenceDevices` view and the dispatcher's eligible-device pick.
@@ -58556,7 +58669,7 @@ function mergeInferenceDevices(probed, stored) {
58556
58669
  const opt = stored[key];
58557
58670
  const parsed = descriptor ?? parseDeviceKey(key);
58558
58671
  const weight = opt?.weight !== void 0 && opt.weight > 0 ? opt.weight : 1;
58559
- const autoDefault = parsed.backend !== "cpu" && parsed.backend !== "edgetpu";
58672
+ const autoDefault = parsed.backend !== "cpu" && parsed.backend !== "edgetpu" && parsed.device !== "cpu";
58560
58673
  out.push({
58561
58674
  key,
58562
58675
  backend: parsed.backend,
package/dist/index.mjs CHANGED
@@ -26941,11 +26941,14 @@ var HardwareClassIdSchema = _enum([
26941
26941
  "intel-n-series",
26942
26942
  "apple-m-base",
26943
26943
  "apple-m-pro",
26944
+ "amd-phoenix",
26944
26945
  "unknown"
26945
26946
  ]);
26946
26947
  var AcceleratorKindSchema = _enum([
26947
26948
  "intel-npu",
26948
26949
  "intel-igpu",
26950
+ "amd-igpu",
26951
+ "amd-npu",
26949
26952
  "x86-cpu",
26950
26953
  "arm-cpu",
26951
26954
  "apple-ane",
@@ -37548,7 +37551,15 @@ var GpuInfoSchema = object({
37548
37551
  name: string(),
37549
37552
  memoryMB: number().optional()
37550
37553
  });
37551
- var NpuInfoSchema = object({ type: _enum(["apple-ane", "intel-npu"]) });
37554
+ var NpuInfoSchema = object({
37555
+ type: _enum([
37556
+ "apple-ane",
37557
+ "intel-npu",
37558
+ "amd-xdna"
37559
+ ]),
37560
+ name: string().optional(),
37561
+ generation: _enum(["xdna1", "xdna2"]).optional()
37562
+ });
37552
37563
  var CoralInfoSchema = object({
37553
37564
  type: literal("coral-edgetpu"),
37554
37565
  bus: string().optional()
@@ -54531,6 +54542,8 @@ function collectModelBoundKeys(fields) {
54531
54542
  var APPLE_CHIP = /^Apple M(\d+)(?:\s+(Pro|Max|Ultra))?\b/i;
54532
54543
  var INTEL_CORE_ULTRA = /Core\(TM\)\s+Ultra|Core Ultra/i;
54533
54544
  var INTEL_N_SERIES = /Intel\(R\)\s+N\d{2,3}\b|\bIntel\s+N\d{2,3}\b/i;
54545
+ /** Phoenix / Hawk Point mobile (7040/8040) and Ryzen 8000G desktop APUs. */
54546
+ var AMD_PHOENIX = /Ryzen \d+ (7[0-9]40|8[0-9]40|8[0-9]45)[HSU]|Ryzen \d+ 8[0-9]00G/i;
54534
54547
  function parseAppleChip(cpuModel) {
54535
54548
  const match = APPLE_CHIP.exec(cpuModel.trim());
54536
54549
  if (match === null) return null;
@@ -54563,6 +54576,10 @@ function classifyInferenceHardware(hw) {
54563
54576
  hardwareClass: "intel-n-series",
54564
54577
  cpuModel
54565
54578
  };
54579
+ if (AMD_PHOENIX.test(cpuModel)) return {
54580
+ hardwareClass: "amd-phoenix",
54581
+ cpuModel
54582
+ };
54566
54583
  return {
54567
54584
  hardwareClass: "unknown",
54568
54585
  cpuModel
@@ -54579,6 +54596,8 @@ function acceleratorKindOf(deviceKey, hw) {
54579
54596
  if (backend === "coreml") return device === "cpu" ? "arm-cpu" : "apple-ane";
54580
54597
  if (backend === "openvino" && device === "npu") return "intel-npu";
54581
54598
  if (backend === "openvino" && device === "gpu") return "intel-igpu";
54599
+ if (backend === "onnx" && device === "webgpu") return "amd-igpu";
54600
+ if (backend === "vitisai" && device === "npu") return "amd-npu";
54582
54601
  if (backend === "cpu" || device === "cpu") return hw.arch === "arm64" ? "arm-cpu" : "x86-cpu";
54583
54602
  return null;
54584
54603
  }
@@ -54897,6 +54916,97 @@ var DETECTOR_PERF = {
54897
54916
  }
54898
54917
  }
54899
54918
  },
54919
+ "amd-phoenix": {
54920
+ "x86-cpu": {
54921
+ "yolov9t-320": {
54922
+ p50Ms: 24,
54923
+ fps: 42,
54924
+ measured: true
54925
+ },
54926
+ "yolov9t-320-int8": {
54927
+ p50Ms: 12,
54928
+ fps: 83,
54929
+ measured: true
54930
+ },
54931
+ "yolov9t-640": {
54932
+ p50Ms: 50,
54933
+ fps: 20,
54934
+ measured: true
54935
+ },
54936
+ "yolov9t-640-int8": {
54937
+ p50Ms: 20,
54938
+ fps: 50,
54939
+ measured: true
54940
+ },
54941
+ "yolov9s-320": {
54942
+ p50Ms: 30,
54943
+ fps: 33,
54944
+ measured: true
54945
+ },
54946
+ "yolov9s-320-int8": {
54947
+ p50Ms: 15,
54948
+ fps: 67,
54949
+ measured: true
54950
+ },
54951
+ "yolov9s-640": {
54952
+ p50Ms: 92,
54953
+ fps: 11,
54954
+ measured: true
54955
+ },
54956
+ "yolov9s-640-int8": {
54957
+ p50Ms: 27,
54958
+ fps: 37,
54959
+ measured: true
54960
+ },
54961
+ "yolov9m-320": {
54962
+ p50Ms: 67,
54963
+ fps: 15,
54964
+ measured: true
54965
+ },
54966
+ "yolov9m-320-int8": {
54967
+ p50Ms: 21,
54968
+ fps: 48,
54969
+ measured: true
54970
+ },
54971
+ "yolov9m-640": {
54972
+ p50Ms: 229,
54973
+ fps: 4,
54974
+ measured: true
54975
+ },
54976
+ "yolov9m-640-int8": {
54977
+ p50Ms: 48,
54978
+ fps: 21,
54979
+ measured: true
54980
+ }
54981
+ },
54982
+ "amd-igpu": {
54983
+ "yolov9t-320": {
54984
+ p50Ms: 188,
54985
+ fps: 5,
54986
+ measured: true
54987
+ },
54988
+ "yolov9t-640": {
54989
+ p50Ms: 671,
54990
+ fps: 1,
54991
+ measured: true
54992
+ },
54993
+ "yolov9s-320": {
54994
+ p50Ms: 401,
54995
+ fps: 2,
54996
+ measured: true
54997
+ },
54998
+ "yolov9s-640": {
54999
+ p50Ms: 1434,
55000
+ fps: 1,
55001
+ measured: true
55002
+ },
55003
+ "yolov9m-320": {
55004
+ p50Ms: 1076,
55005
+ fps: 1,
55006
+ measured: true
55007
+ }
55008
+ }
55009
+ },
54900
55010
  "apple-m-pro": { "apple-ane": {
54901
55011
  "yolov9t-320": {
54902
55012
  p50Ms: 1.1,
@@ -58458,11 +58568,8 @@ function parseDeviceKey(deviceKey) {
58458
58568
  * fall back to the universal nano default (`yolo26n`).
58459
58569
  */
58460
58570
  function defaultModelIdForDevice(deviceKey) {
58461
- const { backend, device } = parseDeviceKey(deviceKey);
58462
- if (backend === "openvino") {
58463
- if (device === "cpu") return "yolo26n";
58464
- return "yolov9m-320-int8";
58465
- }
58571
+ const { backend } = parseDeviceKey(deviceKey);
58572
+ if (backend === "openvino") return "yolov9m-320-int8";
58466
58573
  if (backend === "edgetpu") return "ssd-mobilenet-v2-coco-edgetpu";
58467
58574
  if (backend === "coreml") return "yolov9m-320";
58468
58575
  return "yolo26n";
@@ -58490,15 +58597,21 @@ function validateJumpTargets(inferenceDevices, enabledAvailableKeys) {
58490
58597
  * Merge a node's live-probed inference devices with its stored per-device map.
58491
58598
  *
58492
58599
  * The default is **AUTO = all discovered ACCELERATORS enabled** (spec C2,
58493
- * opt-OUT) with TWO deliberate exceptions, both **opt-IN** (default disabled):
58600
+ * opt-OUT) with THREE deliberate exceptions, all **opt-IN** (default disabled):
58494
58601
  *
58495
- * - **CPU**: `enumerateInferenceDevices` always emits a universal `cpu`
58496
- * floor on every platform; auto-enabling it would let the balancer
58497
- * round-robin ~1/N of sessions onto the slow CPU pool alongside the
58498
- * NPU/iGPU/ANE. CPU stays the always-available FALLBACK (a node with no
58499
- * eligible accelerator leaves `deviceKey` unset → the runner's default
58602
+ * - **CPU floor (`cpu`)**: `enumerateInferenceDevices` always emits a
58603
+ * universal `cpu` key on every platform; auto-enabling it would let the
58604
+ * balancer round-robin ~1/N of sessions onto the slow CPU pool alongside
58605
+ * the NPU/iGPU/ANE. CPU stays the always-available FALLBACK (a node with
58606
+ * no eligible accelerator leaves `deviceKey` unset → the runner's default
58500
58607
  * pool, which is CPU), not a balanced target — matching the spec's "no
58501
58608
  * device eligible → fall back to CPU".
58609
+ * - **Any `*:cpu` device** (today `openvino:cpu` on AMD): still a CPU
58610
+ * pool — Zen4 VNNI serving int8 IRs — not an accelerator. Auto-enabling
58611
+ * it next to `onnx:webgpu` would steal sessions from the iGPU the same
58612
+ * way the bare `cpu` floor would. Intel never emits `openvino:cpu`
58613
+ * (NPU/iGPU cover the IR format); AMD does, so the device-string rule
58614
+ * keeps both CPU-class keys opt-IN.
58502
58615
  * - **Coral Edge TPU (`edgetpu`)**: the standing rule since the Coral
58503
58616
  * executor landed is that it surfaces as selectable but is NEVER
58504
58617
  * auto-picked — it runs a DIFFERENT, weaker model family (tflite SSD
@@ -58509,12 +58622,12 @@ function validateJumpTargets(inferenceDevices, enabledAvailableKeys) {
58509
58622
  * hours at 2.4fps failing tflite model resolution. An operator who wants
58510
58623
  * the Coral balanced opts it in explicitly (`enabled: true`).
58511
58624
  *
58512
- * So: an NPU/iGPU/ANE accelerator with NO stored entry is `enabled:true`; a
58513
- * CPU or edgetpu device with no stored entry is `enabled:false`; an explicit
58514
- * stored `enabled` always wins (an operator can opt CPU/Coral in, or an
58515
- * accelerator out). A stored-only key (configured but the probe did not
58516
- * return it — removed/unplugged HW) keeps its stored `enabled` and surfaces
58517
- * as `available:false`, so the UI still shows it.
58625
+ * So: an NPU/iGPU/ANE/WebGPU accelerator with NO stored entry is
58626
+ * `enabled:true`; a CPU-class or edgetpu device with no stored entry is
58627
+ * `enabled:false`; an explicit stored `enabled` always wins (an operator can
58628
+ * opt CPU/Coral in, or an accelerator out). A stored-only key (configured but
58629
+ * the probe did not return it — removed/unplugged HW) keeps its stored
58630
+ * `enabled` and surfaces as `available:false`, so the UI still shows it.
58518
58631
  *
58519
58632
  * Pure + deterministic (sorted by key) — the single merge authority shared by
58520
58633
  * the `getNodeInferenceDevices` view and the dispatcher's eligible-device pick.
@@ -58528,7 +58641,7 @@ function mergeInferenceDevices(probed, stored) {
58528
58641
  const opt = stored[key];
58529
58642
  const parsed = descriptor ?? parseDeviceKey(key);
58530
58643
  const weight = opt?.weight !== void 0 && opt.weight > 0 ? opt.weight : 1;
58531
- const autoDefault = parsed.backend !== "cpu" && parsed.backend !== "edgetpu";
58644
+ const autoDefault = parsed.backend !== "cpu" && parsed.backend !== "edgetpu" && parsed.device !== "cpu";
58532
58645
  out.push({
58533
58646
  key,
58534
58647
  backend: parsed.backend,
@@ -30,7 +30,7 @@ async function d(e) {
30
30
  }
31
31
  }
32
32
  async function f() {
33
- return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-DdmTyVTg.mjs")).catch((e) => {
33
+ return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-CUOcXfxm.mjs")).catch((e) => {
34
34
  throw l = void 0, e;
35
35
  }), l;
36
36
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-pipeline-orchestrator",
3
- "version": "1.2.303",
3
+ "version": "1.2.304",
4
4
  "description": "Hub-side camera-to-agent load balancer — tracks runner capacity and dispatches attachCamera calls to the optimal pipeline-runner instance",
5
5
  "keywords": [
6
6
  "camstack",