@camstack/addon-agent-ui 1.2.179 → 1.2.181

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.
Files changed (2) hide show
  1. package/dist/addon.js +81 -20
  2. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -10478,7 +10478,18 @@ var LABEL_SUPPLY_STEP_IDS = [
10478
10478
  ];
10479
10479
  /** Steps whose box a root detection can BE. */
10480
10480
  var CROP_SUPPLY_STEP_IDS = ["plate-detection", "face-detection"];
10481
- [...LABEL_SUPPLY_STEP_IDS, ...CROP_SUPPLY_STEP_IDS];
10481
+ /**
10482
+ * Steps whose per-detection MASK a root detection can carry (D737). The live
10483
+ * mask step is `segmentation` — a frame-plane refiner that runs its own model
10484
+ * once per detection crop. (`instance-segmentation` is a dormant step id that
10485
+ * no camera tree carries.)
10486
+ */
10487
+ var MASK_SUPPLY_STEP_IDS = ["segmentation"];
10488
+ [
10489
+ ...LABEL_SUPPLY_STEP_IDS,
10490
+ ...CROP_SUPPLY_STEP_IDS,
10491
+ ...MASK_SUPPLY_STEP_IDS
10492
+ ];
10482
10493
  var MODEL_FORMATS = [
10483
10494
  "onnx",
10484
10495
  "coreml",
@@ -10621,25 +10632,36 @@ var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { wei
10621
10632
  * - `crop`: the root draws the box the step would have found (`license_plate`
10622
10633
  * for plate-detection, `face` for face-detection). The box becomes a detail
10623
10634
  * child of the `parentMacro` detection that contains it — never a track.
10635
+ * - `mask`: the root's decode emits an instance mask with every detection (a
10636
+ * YOLO26-seg root, D737) — the `segmentation` step's result, carried on the
10637
+ * detection in the shape that step produces. Derived from the model's
10638
+ * postprocessor on read, never stored by an import.
10624
10639
  */
10625
- var RootStepSupplySchema = discriminatedUnion("kind", [object({
10626
- kind: literal("label"),
10627
- stepId: _enum(LABEL_SUPPLY_STEP_IDS),
10628
- labelToEffect: record(string(), string()),
10629
- uncovered: array(string()).readonly()
10630
- }), object({
10631
- kind: literal("crop"),
10632
- stepId: _enum(CROP_SUPPLY_STEP_IDS),
10633
- rootLabels: array(string()).readonly(),
10634
- parentMacro: _enum(["vehicle", "person"]),
10635
- childClass: _enum(["plate", "face"]),
10636
- /**
10637
- * The root's smaller input side, stamped on read by `rootSuppliesOf` from
10638
- * the model entry — what a step's `minRootInputPx` gate judges. Never
10639
- * stored by an import.
10640
- */
10641
- rootInputPx: number().int().positive().optional()
10642
- })]);
10640
+ var RootStepSupplySchema = discriminatedUnion("kind", [
10641
+ object({
10642
+ kind: literal("label"),
10643
+ stepId: _enum(LABEL_SUPPLY_STEP_IDS),
10644
+ labelToEffect: record(string(), string()),
10645
+ uncovered: array(string()).readonly()
10646
+ }),
10647
+ object({
10648
+ kind: literal("crop"),
10649
+ stepId: _enum(CROP_SUPPLY_STEP_IDS),
10650
+ rootLabels: array(string()).readonly(),
10651
+ parentMacro: _enum(["vehicle", "person"]),
10652
+ childClass: _enum(["plate", "face"]),
10653
+ /**
10654
+ * The root's smaller input side, stamped on read by `rootSuppliesOf` from
10655
+ * the model entry — what a step's `minRootInputPx` gate judges. Never
10656
+ * stored by an import.
10657
+ */
10658
+ rootInputPx: number().int().positive().optional()
10659
+ }),
10660
+ object({
10661
+ kind: literal("mask"),
10662
+ stepId: _enum(MASK_SUPPLY_STEP_IDS)
10663
+ })
10664
+ ]);
10643
10665
  var ModelCatalogEntrySchema = object({
10644
10666
  id: string(),
10645
10667
  name: string(),
@@ -10705,6 +10727,35 @@ var ModelCatalogEntrySchema = object({
10705
10727
  */
10706
10728
  defaultConfidence: number().min(0).max(1).optional(),
10707
10729
  /**
10730
+ * Per-MODEL default of the per-class confidence floors (`minConfidence<Macro>`
10731
+ * on a detector step), keyed by macro class: `{ person: 0.45 }`. A class
10732
+ * absent here runs at the step slider's global default. The same row shape
10733
+ * the floor measurement produces (`model-floors.json`: modelId → floors), so
10734
+ * a measured table is copied in as-is. An operator override is bound to the
10735
+ * model it was made for and does not survive a model change (D738). A custom
10736
+ * / imported model may declare it; without it, the global defaults apply.
10737
+ */
10738
+ defaultClassFloors: record(string(), number().min(0).max(1)).optional(),
10739
+ /**
10740
+ * The inference precision this model's OpenVINO IR needs on an Intel GPU.
10741
+ * Absent ⇒ the device default (f16 on a GPU). Set to `'f32'` for an FP32 IR
10742
+ * that produces invalid output at f16 — measured 2026-10-07 for YOLO26
10743
+ * base IRs (`yolo26s`: 0 true / 146 false positives; `yolo26m*`: NaN
10744
+ * scores) on the Core Ultra iGPU and the N100. Threaded to the pool as
10745
+ * `PoolModelConfig.gpuInferencePrecision`; the pool sets
10746
+ * INFERENCE_PRECISION_HINT on a GPU only. Costs ~60% latency on the GPU.
10747
+ */
10748
+ gpuInferencePrecision: _enum(["f32", "f16"]).optional(),
10749
+ /**
10750
+ * ROOT detectors only: per supplied step (`animal-classifier`, …), the
10751
+ * minimum DETECTION score from which this root's own fine label (species,
10752
+ * vehicle type — D736 root supply) is taken (D741). Below it the detection
10753
+ * keeps its macro class without the fine label. `1` = never take it from
10754
+ * this root. Absent ⇒ no floor beyond the macro floor. The supplied step's
10755
+ * `minConfidence` slider, bound to the ROOT model, overrides it.
10756
+ */
10757
+ suppliedLabelFloors: record(string(), number().min(0).max(1)).optional(),
10758
+ /**
10708
10759
  * When true, the executor produces a landmark-aligned crop (similarity warp
10709
10760
  * onto the canonical template) before this step runs, instead of a plain
10710
10761
  * axis-aligned bbox crop. Required for face-recognition embedders (ArcFace):
@@ -36321,6 +36372,16 @@ DeviceType.Camera, method(object({
36321
36372
  package: array(ZoneRuleSchema).readonly()
36322
36373
  });
36323
36374
  SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
36375
+ Object.freeze({
36376
+ person: .5,
36377
+ vehicle: .5,
36378
+ animal: .5
36379
+ });
36380
+ Object.freeze({
36381
+ person: .65,
36382
+ vehicle: .65,
36383
+ animal: .65
36384
+ });
36324
36385
  /**
36325
36386
  * Accessory device helpers — shared across drivers.
36326
36387
  *
@@ -48692,7 +48753,7 @@ var AgentUIAddon = class extends BaseAddon {
48692
48753
  capability: adminUiCapability,
48693
48754
  provider: {
48694
48755
  getStaticDir: async () => ({ staticDir: path.resolve(__dirname) }),
48695
- getVersion: async () => ({ version: "1.2.179" })
48756
+ getVersion: async () => ({ version: "1.2.181" })
48696
48757
  }
48697
48758
  }];
48698
48759
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-agent-ui",
3
- "version": "1.2.179",
3
+ "version": "1.2.181",
4
4
  "description": "Agent UI — lightweight status dashboard served by every agent node",
5
5
  "keywords": [
6
6
  "camstack",