@camstack/addon-pipeline 1.1.44 → 1.1.46

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 (30) hide show
  1. package/dist/audio-analyzer/index.js +1 -1
  2. package/dist/audio-analyzer/index.mjs +1 -1
  3. package/dist/detection-pipeline/index.js +2308 -2192
  4. package/dist/detection-pipeline/index.mjs +2309 -2193
  5. package/dist/{dist-CgBGV988.mjs → dist-Bglbcd7H.mjs} +76 -79
  6. package/dist/{dist-CySHUkXY.js → dist-C3CWl8fV.js} +76 -79
  7. package/dist/motion-wasm/index.js +1 -1
  8. package/dist/motion-wasm/index.mjs +1 -1
  9. package/dist/pipeline-runner/index.js +2 -2
  10. package/dist/pipeline-runner/index.mjs +2 -2
  11. package/dist/recorder/index.js +1 -1
  12. package/dist/recorder/index.mjs +1 -1
  13. package/dist/{remote-source-plane-B4hRwchu.mjs → remote-source-plane-BrFvA0nx.mjs} +1 -1
  14. package/dist/{remote-source-plane-D9m0z1N9.js → remote-source-plane-C05A2DHs.js} +1 -1
  15. package/dist/stream-broker/_stub.js +2 -2
  16. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-G6wtUb3G.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-BGyNZqVy.mjs} +2 -2
  17. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-UM9hXKco.mjs +26 -0
  18. package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BUpF966l.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-iB6N_WVh.mjs} +1 -1
  19. package/dist/stream-broker/{hostInit-BSzP3BIj.mjs → hostInit-uMl2Tcss.mjs} +2 -2
  20. package/dist/stream-broker/index.js +49 -3
  21. package/dist/stream-broker/index.mjs +49 -3
  22. package/dist/stream-broker/remoteEntry.js +1 -1
  23. package/embed-dist/assets/{MaskShapeCanvas-DI4BY7W2-D2ML5TPi.js → MaskShapeCanvas-DI4BY7W2-DvRngVr4.js} +1 -1
  24. package/embed-dist/assets/{MotionZonesSettings-NcxxQN8r-TTWGGaqv.js → MotionZonesSettings-NcxxQN8r-ByQeOu3_.js} +1 -1
  25. package/embed-dist/assets/{PrivacyMaskSettings-APgPLF7p-CJqHU2nU.js → PrivacyMaskSettings-APgPLF7p-Cs5XlrlU.js} +1 -1
  26. package/embed-dist/assets/{index-CA4kv43T.css → index-JqUY2p33.css} +1 -1
  27. package/embed-dist/assets/{index-C1oaL9s7.js → index-RqzZkNA8.js} +10 -10
  28. package/embed-dist/index.html +2 -2
  29. package/package.json +1 -1
  30. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Dlagq9X_.mjs +0 -26
@@ -4627,7 +4627,7 @@ function _instanceof(cls, params = {}) {
4627
4627
  return inst;
4628
4628
  }
4629
4629
  //#endregion
4630
- //#region ../types/dist/sleep-Cc14_yxc.mjs
4630
+ //#region ../types/dist/sleep-DiQ8xW1M.mjs
4631
4631
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
4632
4632
  EventCategory["SystemBoot"] = "system.boot";
4633
4633
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -7061,10 +7061,18 @@ var ModelVariantGroupSchema = object({
7061
7061
  precision: _enum(["fp32", "int8"]).optional(),
7062
7062
  /**
7063
7063
  * Speed-optimization axis. Omit ⇒ the standard build. `fast` marks a
7064
- * latency-optimized export (e.g. ReLU-activation / reduced-input variant)
7065
- * — the slot the future performance variants plug into.
7064
+ * latency-optimized export (e.g. ReLU-activation variant) the slot the
7065
+ * future performance variants plug into.
7066
7066
  */
7067
- optimization: _enum(["standard", "fast"]).optional()
7067
+ optimization: _enum(["standard", "fast"]).optional(),
7068
+ /**
7069
+ * Input-resolution axis (square input side, px). Omit ⇒ the family's native
7070
+ * resolution (640 for yolo26). Reduced-input builds (320 / 256) are a big,
7071
+ * cheap latency lever — especially on Apple ANE and the Intel N100 — at a
7072
+ * small-object accuracy cost. Mirrors the model's `inputSize` but lifted onto
7073
+ * the group so the selector can offer it as a variant axis.
7074
+ */
7075
+ resolution: number().int().positive().optional()
7068
7076
  });
7069
7077
  var ModelCatalogEntrySchema = object({
7070
7078
  id: string(),
@@ -11213,7 +11221,7 @@ var BoundingBoxSchema = object({
11213
11221
  w: number(),
11214
11222
  h: number()
11215
11223
  });
11216
- var SpatialDetectionSchema = object({
11224
+ object({
11217
11225
  class: string(),
11218
11226
  originalClass: string(),
11219
11227
  score: number(),
@@ -11417,11 +11425,6 @@ var PipelineSchemaSchema = object({
11417
11425
  selectedEngine: PipelineEngineChoiceSchema,
11418
11426
  slots: array(PipelineSlotSchemaSchema).readonly()
11419
11427
  });
11420
- var DetectorOutputSchema = object({
11421
- detections: array(SpatialDetectionSchema).readonly(),
11422
- inferenceMs: number(),
11423
- modelId: string()
11424
- });
11425
11428
  var EngineProvisioningSchema = object({
11426
11429
  runtimeId: _enum([
11427
11430
  "onnx",
@@ -11586,6 +11589,28 @@ var pipelineExecutorCapability = {
11586
11589
  kind: "mutation",
11587
11590
  auth: "admin"
11588
11591
  }),
11592
+ /**
11593
+ * Clear THIS node's executor-side PER-DEVICE settings stores (the
11594
+ * per-camera step overrides the object-detection root reads via
11595
+ * `applyDeviceOverridesToTree`). `nodeId` is the ROUTING key — the
11596
+ * generated cap-router strips it (default `nodeIdMode: 'routing'`) and
11597
+ * dispatches to that node, so the provider method runs ON the target
11598
+ * node and receives no `nodeId`.
11599
+ *
11600
+ * This is the slimmed executor leg of the orchestrator's
11601
+ * `resetNodePipelineDefaults` flow (which owns the real reset: node
11602
+ * addonDefaults pins + per-camera orchestrator overrides). The legacy
11603
+ * `resetToDefault` — which reset a persisted global step-tree seed
11604
+ * nothing in the live per-camera path read — was removed together with
11605
+ * that seed.
11606
+ */
11607
+ clearDeviceOverrides: method(object({ nodeId: string() }), object({
11608
+ success: literal(true),
11609
+ clearedDevices: number()
11610
+ }), {
11611
+ kind: "mutation",
11612
+ auth: "admin"
11613
+ }),
11589
11614
  getSchema: method(_void(), PipelineSchemaSchema),
11590
11615
  getGlobalSteps: method(_void(), array(PipelineDefaultStepSchema).readonly().nullable()),
11591
11616
  getGlobalPipelineConfig: method(_void(), PipelineConfigBridge),
@@ -11627,11 +11652,6 @@ var pipelineExecutorCapability = {
11627
11652
  modelId: string(),
11628
11653
  format: ModelFormatSchema$1
11629
11654
  }), object({ success: literal(true) }), { kind: "mutation" }),
11630
- detect: method(object({
11631
- addonId: string(),
11632
- frame: FrameInputSchema,
11633
- config: record(string(), unknown()).optional()
11634
- }), DetectorOutputSchema),
11635
11655
  /**
11636
11656
  * Stateless single-frame execution. Callers (runner, benchmark) pass
11637
11657
  * the complete `engine` + `steps` tree; the executor holds no state
@@ -13524,7 +13544,9 @@ var AddonPageDeclarationSchema$1 = object({
13524
13544
  icon: string(),
13525
13545
  path: string(),
13526
13546
  remoteName: string(),
13527
- bundle: string()
13547
+ bundle: string(),
13548
+ section: string().optional(),
13549
+ sectionLabel: string().optional()
13528
13550
  });
13529
13551
  var AddonPageInfoSchema = object({
13530
13552
  addonId: string(),
@@ -13564,7 +13586,18 @@ var AddonPageDeclarationSchema = object({
13564
13586
  * the static-file route can compute an mtime-based cache-buster URL
13565
13587
  * without a separate filesystem stat.
13566
13588
  */
13567
- bundle: string()
13589
+ bundle: string(),
13590
+ /**
13591
+ * Sidebar section this page docks into. Well-known ids: `'detection'`,
13592
+ * `'cluster'`, `'administration'` — the page renders inside that group.
13593
+ * Any OTHER string creates (or joins) a custom section rendered after
13594
+ * the built-in groups; its label comes from `sectionLabel` (first
13595
+ * declaration wins), falling back to the id. Absent → the legacy
13596
+ * "Addon Pages" group.
13597
+ */
13598
+ section: string().optional(),
13599
+ /** Display label for a CUSTOM `section` id (ignored for well-known ids). */
13600
+ sectionLabel: string().optional()
13568
13601
  });
13569
13602
  method(_void(), array(AddonPageDeclarationSchema).readonly());
13570
13603
  var AddonHttpRouteSchema = object({
@@ -16541,7 +16574,12 @@ var AgentPipelineSettingsSchema = object({
16541
16574
  detectWeight: number().positive().optional(),
16542
16575
  /** Node is eligible to run the detection pipeline (decode + inference). */
16543
16576
  detect: boolean().optional(),
16544
- /** Node is eligible to host decoder sessions. */
16577
+ /**
16578
+ * DEPRECATED AND IGNORED. Decode is always co-located with its frame
16579
+ * consumer, so decode eligibility IS detect eligibility. Kept optional in
16580
+ * the schema ONLY so persisted stores written before the removal still
16581
+ * parse — no code reads it and no write path emits it.
16582
+ */
16545
16583
  decode: boolean().optional(),
16546
16584
  /** Node is eligible to run audio-analyzer sessions. */
16547
16585
  audio: boolean().optional(),
@@ -16602,25 +16640,6 @@ var PipelineAssignmentSchema = object({
16602
16640
  assignedAt: number()
16603
16641
  });
16604
16642
  /**
16605
- * Decoder placement record. Symmetric to `PipelineAssignmentSchema` but for
16606
- * the decoder-node placement domain (`balanceDecoder` decision: manual pin
16607
- * → co-located with pipeline → capacity).
16608
- */
16609
- var DecoderAssignmentSchema = object({
16610
- deviceId: number(),
16611
- /** Moleculer node id of the decoder provider currently responsible for this camera. */
16612
- decoderNodeId: string(),
16613
- /** True when the assignment was set manually via `assignDecoder`, false when chosen by the balancer. */
16614
- pinned: boolean(),
16615
- /** Why this assignment was made — useful for debugging the decoder balancer. */
16616
- reason: _enum([
16617
- "manual",
16618
- "co-located",
16619
- "capacity",
16620
- "hardware-affinity"
16621
- ])
16622
- });
16623
- /**
16624
16643
  * Per-agent load summary surfaced to the load balancer + dashboards.
16625
16644
  * Aggregated from each runner's `getLocalLoad` cap call.
16626
16645
  */
@@ -16826,15 +16845,6 @@ method(object({
16826
16845
  }), method(_void(), IngestOwnerSchema), method(object({
16827
16846
  deviceId: number(),
16828
16847
  nodeId: string()
16829
- }), _void(), {
16830
- kind: "mutation",
16831
- auth: "admin"
16832
- }), method(object({ deviceId: number() }), _void(), {
16833
- kind: "mutation",
16834
- auth: "admin"
16835
- }), method(_void(), array(DecoderAssignmentSchema).readonly()), method(object({
16836
- deviceId: number(),
16837
- nodeId: string()
16838
16848
  }), object({ success: literal(true) }), {
16839
16849
  kind: "mutation",
16840
16850
  auth: "admin"
@@ -16853,10 +16863,7 @@ method(object({
16853
16863
  nodeId: string(),
16854
16864
  pinned: boolean(),
16855
16865
  assignedAt: number()
16856
- }))), method(object({
16857
- deviceId: number(),
16858
- pipelineNodeId: string().optional()
16859
- }), DecoderAssignmentSchema), method(object({ agentNodeId: string() }), AgentPipelineSettingsSchema.nullable()), method(_void(), array(object({
16866
+ }))), method(object({ agentNodeId: string() }), AgentPipelineSettingsSchema.nullable()), method(_void(), array(object({
16860
16867
  nodeId: string(),
16861
16868
  settings: AgentPipelineSettingsSchema
16862
16869
  })).readonly()), method(object({
@@ -16886,7 +16893,6 @@ method(object({
16886
16893
  }), method(object({
16887
16894
  agentNodeId: string(),
16888
16895
  detect: boolean().nullable().optional(),
16889
- decode: boolean().nullable().optional(),
16890
16896
  audio: boolean().nullable().optional(),
16891
16897
  ingest: boolean().nullable().optional()
16892
16898
  }), object({ success: literal(true) }), {
@@ -16898,6 +16904,15 @@ method(object({
16898
16904
  }), object({ success: literal(true) }), {
16899
16905
  kind: "mutation",
16900
16906
  auth: "admin"
16907
+ }), method(object({ agentNodeId: string() }), object({
16908
+ success: literal(true),
16909
+ /** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
16910
+ effectiveModelId: string().nullable(),
16911
+ /** Number of cameras whose node-scoped overrides were cleared. */
16912
+ clearedCameraOverrides: number()
16913
+ }), {
16914
+ kind: "mutation",
16915
+ auth: "admin"
16901
16916
  }), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
16902
16917
  deviceId: number(),
16903
16918
  addonId: string(),
@@ -22510,23 +22525,23 @@ Object.freeze({
22510
22525
  addonId: null,
22511
22526
  access: "create"
22512
22527
  },
22513
- "pipelineExecutor.deleteModel": {
22528
+ "pipelineExecutor.clearDeviceOverrides": {
22514
22529
  capName: "pipeline-executor",
22515
22530
  capScope: "system",
22516
22531
  addonId: null,
22517
22532
  access: "delete"
22518
22533
  },
22519
- "pipelineExecutor.deleteTemplate": {
22534
+ "pipelineExecutor.deleteModel": {
22520
22535
  capName: "pipeline-executor",
22521
22536
  capScope: "system",
22522
22537
  addonId: null,
22523
22538
  access: "delete"
22524
22539
  },
22525
- "pipelineExecutor.detect": {
22540
+ "pipelineExecutor.deleteTemplate": {
22526
22541
  capName: "pipeline-executor",
22527
22542
  capScope: "system",
22528
22543
  addonId: null,
22529
- access: "view"
22544
+ access: "delete"
22530
22545
  },
22531
22546
  "pipelineExecutor.downloadModel": {
22532
22547
  capName: "pipeline-executor",
@@ -22732,12 +22747,6 @@ Object.freeze({
22732
22747
  addonId: null,
22733
22748
  access: "create"
22734
22749
  },
22735
- "pipelineOrchestrator.assignDecoder": {
22736
- capName: "pipeline-orchestrator",
22737
- capScope: "system",
22738
- addonId: null,
22739
- access: "create"
22740
- },
22741
22750
  "pipelineOrchestrator.assignPipeline": {
22742
22751
  capName: "pipeline-orchestrator",
22743
22752
  capScope: "system",
@@ -22816,18 +22825,6 @@ Object.freeze({
22816
22825
  addonId: null,
22817
22826
  access: "view"
22818
22827
  },
22819
- "pipelineOrchestrator.getDecoderAssignment": {
22820
- capName: "pipeline-orchestrator",
22821
- capScope: "system",
22822
- addonId: null,
22823
- access: "view"
22824
- },
22825
- "pipelineOrchestrator.getDecoderAssignments": {
22826
- capName: "pipeline-orchestrator",
22827
- capScope: "system",
22828
- addonId: null,
22829
- access: "view"
22830
- },
22831
22828
  "pipelineOrchestrator.getGlobalMetrics": {
22832
22829
  capName: "pipeline-orchestrator",
22833
22830
  capScope: "system",
@@ -22876,6 +22873,12 @@ Object.freeze({
22876
22873
  addonId: null,
22877
22874
  access: "delete"
22878
22875
  },
22876
+ "pipelineOrchestrator.resetNodePipelineDefaults": {
22877
+ capName: "pipeline-orchestrator",
22878
+ capScope: "system",
22879
+ addonId: null,
22880
+ access: "delete"
22881
+ },
22879
22882
  "pipelineOrchestrator.resolvePipeline": {
22880
22883
  capName: "pipeline-orchestrator",
22881
22884
  capScope: "system",
@@ -22948,12 +22951,6 @@ Object.freeze({
22948
22951
  addonId: null,
22949
22952
  access: "create"
22950
22953
  },
22951
- "pipelineOrchestrator.unassignDecoder": {
22952
- capName: "pipeline-orchestrator",
22953
- capScope: "system",
22954
- addonId: null,
22955
- access: "create"
22956
- },
22957
22954
  "pipelineOrchestrator.unassignPipeline": {
22958
22955
  capName: "pipeline-orchestrator",
22959
22956
  capScope: "system",
@@ -4627,7 +4627,7 @@ function _instanceof(cls, params = {}) {
4627
4627
  return inst;
4628
4628
  }
4629
4629
  //#endregion
4630
- //#region ../types/dist/sleep-Cc14_yxc.mjs
4630
+ //#region ../types/dist/sleep-DiQ8xW1M.mjs
4631
4631
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
4632
4632
  EventCategory["SystemBoot"] = "system.boot";
4633
4633
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -7061,10 +7061,18 @@ var ModelVariantGroupSchema = object({
7061
7061
  precision: _enum(["fp32", "int8"]).optional(),
7062
7062
  /**
7063
7063
  * Speed-optimization axis. Omit ⇒ the standard build. `fast` marks a
7064
- * latency-optimized export (e.g. ReLU-activation / reduced-input variant)
7065
- * — the slot the future performance variants plug into.
7064
+ * latency-optimized export (e.g. ReLU-activation variant) the slot the
7065
+ * future performance variants plug into.
7066
7066
  */
7067
- optimization: _enum(["standard", "fast"]).optional()
7067
+ optimization: _enum(["standard", "fast"]).optional(),
7068
+ /**
7069
+ * Input-resolution axis (square input side, px). Omit ⇒ the family's native
7070
+ * resolution (640 for yolo26). Reduced-input builds (320 / 256) are a big,
7071
+ * cheap latency lever — especially on Apple ANE and the Intel N100 — at a
7072
+ * small-object accuracy cost. Mirrors the model's `inputSize` but lifted onto
7073
+ * the group so the selector can offer it as a variant axis.
7074
+ */
7075
+ resolution: number().int().positive().optional()
7068
7076
  });
7069
7077
  var ModelCatalogEntrySchema = object({
7070
7078
  id: string(),
@@ -11213,7 +11221,7 @@ var BoundingBoxSchema = object({
11213
11221
  w: number(),
11214
11222
  h: number()
11215
11223
  });
11216
- var SpatialDetectionSchema = object({
11224
+ object({
11217
11225
  class: string(),
11218
11226
  originalClass: string(),
11219
11227
  score: number(),
@@ -11417,11 +11425,6 @@ var PipelineSchemaSchema = object({
11417
11425
  selectedEngine: PipelineEngineChoiceSchema,
11418
11426
  slots: array(PipelineSlotSchemaSchema).readonly()
11419
11427
  });
11420
- var DetectorOutputSchema = object({
11421
- detections: array(SpatialDetectionSchema).readonly(),
11422
- inferenceMs: number(),
11423
- modelId: string()
11424
- });
11425
11428
  var EngineProvisioningSchema = object({
11426
11429
  runtimeId: _enum([
11427
11430
  "onnx",
@@ -11586,6 +11589,28 @@ var pipelineExecutorCapability = {
11586
11589
  kind: "mutation",
11587
11590
  auth: "admin"
11588
11591
  }),
11592
+ /**
11593
+ * Clear THIS node's executor-side PER-DEVICE settings stores (the
11594
+ * per-camera step overrides the object-detection root reads via
11595
+ * `applyDeviceOverridesToTree`). `nodeId` is the ROUTING key — the
11596
+ * generated cap-router strips it (default `nodeIdMode: 'routing'`) and
11597
+ * dispatches to that node, so the provider method runs ON the target
11598
+ * node and receives no `nodeId`.
11599
+ *
11600
+ * This is the slimmed executor leg of the orchestrator's
11601
+ * `resetNodePipelineDefaults` flow (which owns the real reset: node
11602
+ * addonDefaults pins + per-camera orchestrator overrides). The legacy
11603
+ * `resetToDefault` — which reset a persisted global step-tree seed
11604
+ * nothing in the live per-camera path read — was removed together with
11605
+ * that seed.
11606
+ */
11607
+ clearDeviceOverrides: method(object({ nodeId: string() }), object({
11608
+ success: literal(true),
11609
+ clearedDevices: number()
11610
+ }), {
11611
+ kind: "mutation",
11612
+ auth: "admin"
11613
+ }),
11589
11614
  getSchema: method(_void(), PipelineSchemaSchema),
11590
11615
  getGlobalSteps: method(_void(), array(PipelineDefaultStepSchema).readonly().nullable()),
11591
11616
  getGlobalPipelineConfig: method(_void(), PipelineConfigBridge),
@@ -11627,11 +11652,6 @@ var pipelineExecutorCapability = {
11627
11652
  modelId: string(),
11628
11653
  format: ModelFormatSchema$1
11629
11654
  }), object({ success: literal(true) }), { kind: "mutation" }),
11630
- detect: method(object({
11631
- addonId: string(),
11632
- frame: FrameInputSchema,
11633
- config: record(string(), unknown()).optional()
11634
- }), DetectorOutputSchema),
11635
11655
  /**
11636
11656
  * Stateless single-frame execution. Callers (runner, benchmark) pass
11637
11657
  * the complete `engine` + `steps` tree; the executor holds no state
@@ -13524,7 +13544,9 @@ var AddonPageDeclarationSchema$1 = object({
13524
13544
  icon: string(),
13525
13545
  path: string(),
13526
13546
  remoteName: string(),
13527
- bundle: string()
13547
+ bundle: string(),
13548
+ section: string().optional(),
13549
+ sectionLabel: string().optional()
13528
13550
  });
13529
13551
  var AddonPageInfoSchema = object({
13530
13552
  addonId: string(),
@@ -13564,7 +13586,18 @@ var AddonPageDeclarationSchema = object({
13564
13586
  * the static-file route can compute an mtime-based cache-buster URL
13565
13587
  * without a separate filesystem stat.
13566
13588
  */
13567
- bundle: string()
13589
+ bundle: string(),
13590
+ /**
13591
+ * Sidebar section this page docks into. Well-known ids: `'detection'`,
13592
+ * `'cluster'`, `'administration'` — the page renders inside that group.
13593
+ * Any OTHER string creates (or joins) a custom section rendered after
13594
+ * the built-in groups; its label comes from `sectionLabel` (first
13595
+ * declaration wins), falling back to the id. Absent → the legacy
13596
+ * "Addon Pages" group.
13597
+ */
13598
+ section: string().optional(),
13599
+ /** Display label for a CUSTOM `section` id (ignored for well-known ids). */
13600
+ sectionLabel: string().optional()
13568
13601
  });
13569
13602
  method(_void(), array(AddonPageDeclarationSchema).readonly());
13570
13603
  var AddonHttpRouteSchema = object({
@@ -16541,7 +16574,12 @@ var AgentPipelineSettingsSchema = object({
16541
16574
  detectWeight: number().positive().optional(),
16542
16575
  /** Node is eligible to run the detection pipeline (decode + inference). */
16543
16576
  detect: boolean().optional(),
16544
- /** Node is eligible to host decoder sessions. */
16577
+ /**
16578
+ * DEPRECATED AND IGNORED. Decode is always co-located with its frame
16579
+ * consumer, so decode eligibility IS detect eligibility. Kept optional in
16580
+ * the schema ONLY so persisted stores written before the removal still
16581
+ * parse — no code reads it and no write path emits it.
16582
+ */
16545
16583
  decode: boolean().optional(),
16546
16584
  /** Node is eligible to run audio-analyzer sessions. */
16547
16585
  audio: boolean().optional(),
@@ -16602,25 +16640,6 @@ var PipelineAssignmentSchema = object({
16602
16640
  assignedAt: number()
16603
16641
  });
16604
16642
  /**
16605
- * Decoder placement record. Symmetric to `PipelineAssignmentSchema` but for
16606
- * the decoder-node placement domain (`balanceDecoder` decision: manual pin
16607
- * → co-located with pipeline → capacity).
16608
- */
16609
- var DecoderAssignmentSchema = object({
16610
- deviceId: number(),
16611
- /** Moleculer node id of the decoder provider currently responsible for this camera. */
16612
- decoderNodeId: string(),
16613
- /** True when the assignment was set manually via `assignDecoder`, false when chosen by the balancer. */
16614
- pinned: boolean(),
16615
- /** Why this assignment was made — useful for debugging the decoder balancer. */
16616
- reason: _enum([
16617
- "manual",
16618
- "co-located",
16619
- "capacity",
16620
- "hardware-affinity"
16621
- ])
16622
- });
16623
- /**
16624
16643
  * Per-agent load summary surfaced to the load balancer + dashboards.
16625
16644
  * Aggregated from each runner's `getLocalLoad` cap call.
16626
16645
  */
@@ -16826,15 +16845,6 @@ method(object({
16826
16845
  }), method(_void(), IngestOwnerSchema), method(object({
16827
16846
  deviceId: number(),
16828
16847
  nodeId: string()
16829
- }), _void(), {
16830
- kind: "mutation",
16831
- auth: "admin"
16832
- }), method(object({ deviceId: number() }), _void(), {
16833
- kind: "mutation",
16834
- auth: "admin"
16835
- }), method(_void(), array(DecoderAssignmentSchema).readonly()), method(object({
16836
- deviceId: number(),
16837
- nodeId: string()
16838
16848
  }), object({ success: literal(true) }), {
16839
16849
  kind: "mutation",
16840
16850
  auth: "admin"
@@ -16853,10 +16863,7 @@ method(object({
16853
16863
  nodeId: string(),
16854
16864
  pinned: boolean(),
16855
16865
  assignedAt: number()
16856
- }))), method(object({
16857
- deviceId: number(),
16858
- pipelineNodeId: string().optional()
16859
- }), DecoderAssignmentSchema), method(object({ agentNodeId: string() }), AgentPipelineSettingsSchema.nullable()), method(_void(), array(object({
16866
+ }))), method(object({ agentNodeId: string() }), AgentPipelineSettingsSchema.nullable()), method(_void(), array(object({
16860
16867
  nodeId: string(),
16861
16868
  settings: AgentPipelineSettingsSchema
16862
16869
  })).readonly()), method(object({
@@ -16886,7 +16893,6 @@ method(object({
16886
16893
  }), method(object({
16887
16894
  agentNodeId: string(),
16888
16895
  detect: boolean().nullable().optional(),
16889
- decode: boolean().nullable().optional(),
16890
16896
  audio: boolean().nullable().optional(),
16891
16897
  ingest: boolean().nullable().optional()
16892
16898
  }), object({ success: literal(true) }), {
@@ -16898,6 +16904,15 @@ method(object({
16898
16904
  }), object({ success: literal(true) }), {
16899
16905
  kind: "mutation",
16900
16906
  auth: "admin"
16907
+ }), method(object({ agentNodeId: string() }), object({
16908
+ success: literal(true),
16909
+ /** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
16910
+ effectiveModelId: string().nullable(),
16911
+ /** Number of cameras whose node-scoped overrides were cleared. */
16912
+ clearedCameraOverrides: number()
16913
+ }), {
16914
+ kind: "mutation",
16915
+ auth: "admin"
16901
16916
  }), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
16902
16917
  deviceId: number(),
16903
16918
  addonId: string(),
@@ -22510,23 +22525,23 @@ Object.freeze({
22510
22525
  addonId: null,
22511
22526
  access: "create"
22512
22527
  },
22513
- "pipelineExecutor.deleteModel": {
22528
+ "pipelineExecutor.clearDeviceOverrides": {
22514
22529
  capName: "pipeline-executor",
22515
22530
  capScope: "system",
22516
22531
  addonId: null,
22517
22532
  access: "delete"
22518
22533
  },
22519
- "pipelineExecutor.deleteTemplate": {
22534
+ "pipelineExecutor.deleteModel": {
22520
22535
  capName: "pipeline-executor",
22521
22536
  capScope: "system",
22522
22537
  addonId: null,
22523
22538
  access: "delete"
22524
22539
  },
22525
- "pipelineExecutor.detect": {
22540
+ "pipelineExecutor.deleteTemplate": {
22526
22541
  capName: "pipeline-executor",
22527
22542
  capScope: "system",
22528
22543
  addonId: null,
22529
- access: "view"
22544
+ access: "delete"
22530
22545
  },
22531
22546
  "pipelineExecutor.downloadModel": {
22532
22547
  capName: "pipeline-executor",
@@ -22732,12 +22747,6 @@ Object.freeze({
22732
22747
  addonId: null,
22733
22748
  access: "create"
22734
22749
  },
22735
- "pipelineOrchestrator.assignDecoder": {
22736
- capName: "pipeline-orchestrator",
22737
- capScope: "system",
22738
- addonId: null,
22739
- access: "create"
22740
- },
22741
22750
  "pipelineOrchestrator.assignPipeline": {
22742
22751
  capName: "pipeline-orchestrator",
22743
22752
  capScope: "system",
@@ -22816,18 +22825,6 @@ Object.freeze({
22816
22825
  addonId: null,
22817
22826
  access: "view"
22818
22827
  },
22819
- "pipelineOrchestrator.getDecoderAssignment": {
22820
- capName: "pipeline-orchestrator",
22821
- capScope: "system",
22822
- addonId: null,
22823
- access: "view"
22824
- },
22825
- "pipelineOrchestrator.getDecoderAssignments": {
22826
- capName: "pipeline-orchestrator",
22827
- capScope: "system",
22828
- addonId: null,
22829
- access: "view"
22830
- },
22831
22828
  "pipelineOrchestrator.getGlobalMetrics": {
22832
22829
  capName: "pipeline-orchestrator",
22833
22830
  capScope: "system",
@@ -22876,6 +22873,12 @@ Object.freeze({
22876
22873
  addonId: null,
22877
22874
  access: "delete"
22878
22875
  },
22876
+ "pipelineOrchestrator.resetNodePipelineDefaults": {
22877
+ capName: "pipeline-orchestrator",
22878
+ capScope: "system",
22879
+ addonId: null,
22880
+ access: "delete"
22881
+ },
22879
22882
  "pipelineOrchestrator.resolvePipeline": {
22880
22883
  capName: "pipeline-orchestrator",
22881
22884
  capScope: "system",
@@ -22948,12 +22951,6 @@ Object.freeze({
22948
22951
  addonId: null,
22949
22952
  access: "create"
22950
22953
  },
22951
- "pipelineOrchestrator.unassignDecoder": {
22952
- capName: "pipeline-orchestrator",
22953
- capScope: "system",
22954
- addonId: null,
22955
- access: "create"
22956
- },
22957
22954
  "pipelineOrchestrator.unassignPipeline": {
22958
22955
  capName: "pipeline-orchestrator",
22959
22956
  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-CySHUkXY.js");
5
+ const require_dist = require("../dist-C3CWl8fV.js");
6
6
  let _camstack_shm_ring = require("@camstack/shm-ring");
7
7
  let node_fs = require("node:fs");
8
8
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { B as DeviceType, E as motionDetectionCapability, L as BaseAddon, U as hydrateSchema, x as evaluateZoneRules } from "../dist-CgBGV988.mjs";
1
+ import { B as DeviceType, E as motionDetectionCapability, L as BaseAddon, U as hydrateSchema, x as evaluateZoneRules } from "../dist-Bglbcd7H.mjs";
2
2
  import { FrameRingReaderCache } from "@camstack/shm-ring";
3
3
  import { readFileSync } from "node:fs";
4
4
  import { join } from "node:path";
@@ -2,8 +2,8 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-CySHUkXY.js");
6
- const require_remote_source_plane = require("../remote-source-plane-D9m0z1N9.js");
5
+ const require_dist = require("../dist-C3CWl8fV.js");
6
+ const require_remote_source_plane = require("../remote-source-plane-C05A2DHs.js");
7
7
  const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
8
8
  const require_worker_protocol = require("../worker-protocol-BCfO8gUF.js");
9
9
  let _camstack_shm_ring = require("@camstack/shm-ring");
@@ -1,5 +1,5 @@
1
- import { $ as boolean, D as nodePin, H as createEvent, I as errMsg, K as makeSourceBrokerId, L as BaseAddon, Q as array, V as EventCategory, Z as _enum, _ as customAction, it as object, k as pipelineRunnerCapability, ot as string, rt as number, tt as lazy, y as defineCustomActions } from "../dist-CgBGV988.mjs";
2
- import { n as isRemoteRestream, r as profileForStreamId, t as RemoteSourcePlane } from "../remote-source-plane-B4hRwchu.mjs";
1
+ import { $ as boolean, D as nodePin, H as createEvent, I as errMsg, K as makeSourceBrokerId, L as BaseAddon, Q as array, V as EventCategory, Z as _enum, _ as customAction, it as object, k as pipelineRunnerCapability, ot as string, rt as number, tt as lazy, y as defineCustomActions } from "../dist-Bglbcd7H.mjs";
2
+ import { n as isRemoteRestream, r as profileForStreamId, t as RemoteSourcePlane } from "../remote-source-plane-BrFvA0nx.mjs";
3
3
  import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
4
4
  import { t as isWorkerReply } from "../worker-protocol-pk7qdYXt.mjs";
5
5
  import { FrameRingReaderCache } from "@camstack/shm-ring";
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("../chunk-D6vf50IK.js");
2
- const require_dist = require("../dist-CySHUkXY.js");
2
+ const require_dist = require("../dist-C3CWl8fV.js");
3
3
  const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
4
4
  const require_model_download_service_C_IHWnXx = require("../model-download-service-C-IHWnXx-BLXzxpRB.js");
5
5
  let node_child_process = require("node:child_process");
@@ -1,4 +1,4 @@
1
- import { A as recordingCapability, B as DeviceType, D as nodePin, I as errMsg, L as BaseAddon, M as storageEvictableCapability, T as migrateConfigToBands, U as hydrateSchema, V as EventCategory, Y as selectAssignedProfileSlots, at as record, ot as string, s as EVENT_PAD_MS, u as RecordingConfigSchema } from "../dist-CgBGV988.mjs";
1
+ import { A as recordingCapability, B as DeviceType, D as nodePin, I as errMsg, L as BaseAddon, M as storageEvictableCapability, T as migrateConfigToBands, U as hydrateSchema, V as EventCategory, Y as selectAssignedProfileSlots, at as record, ot as string, s as EVENT_PAD_MS, u as RecordingConfigSchema } from "../dist-Bglbcd7H.mjs";
2
2
  import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
3
3
  import { t as createFileDataPlaneHandler } from "../model-download-service-C-IHWnXx-BPy6aoAx.mjs";
4
4
  import { spawn } from "node:child_process";
@@ -1,4 +1,4 @@
1
- import { D as nodePin, I as errMsg, d as RingBuffer } from "./dist-CgBGV988.mjs";
1
+ import { D as nodePin, I as errMsg, d as RingBuffer } from "./dist-Bglbcd7H.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  //#region src/stream-broker/stream-broker/decoder-session-proxy.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CySHUkXY.js");
1
+ const require_dist = require("./dist-C3CWl8fV.js");
2
2
  let node_crypto = require("node:crypto");
3
3
  //#region src/stream-broker/stream-broker/decoder-session-proxy.ts
4
4
  /**
@@ -1,8 +1,8 @@
1
- import { a as e, c as t, d as n, i as r, l as i, n as a, o, r as s, s as c, t as l, u } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BUpF966l.mjs";
1
+ import { a as e, c as t, d as n, i as r, l as i, n as a, o, r as s, s as c, t as l, u } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-iB6N_WVh.mjs";
2
2
  import { a as d, i as f, n as p, o as m, r as h, t as g } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare__react__loadShare__.js-C9j-2lBe.mjs";
3
3
  import { n as _, r as v, t as y } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-XO0-Pyu6.mjs";
4
4
  import { n as b, t as x } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-BO7TIbJV.mjs";
5
- import { t as S } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Dlagq9X_.mjs";
5
+ import { t as S } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-UM9hXKco.mjs";
6
6
  //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils.js
7
7
  var C = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), w = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), T = (e) => {
8
8
  let t = w(e);