@camstack/addon-pipeline 1.1.45 → 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 +78 -231
  4. package/dist/detection-pipeline/index.mjs +78 -231
  5. package/dist/{dist-D04numuO.mjs → dist-Bglbcd7H.mjs} +57 -96
  6. package/dist/{dist-CjxqjgEv.js → dist-C3CWl8fV.js} +57 -96
  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-D31IILFN.mjs → remote-source-plane-BrFvA0nx.mjs} +1 -1
  14. package/dist/{remote-source-plane-CLuxyDV2.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-BGKueo9D.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-8BUVCFIR.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-DazV2RCq.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-D_F4a_3H.js → MaskShapeCanvas-DI4BY7W2-DvRngVr4.js} +1 -1
  24. package/embed-dist/assets/{MotionZonesSettings-NcxxQN8r-CfTBrn4G.js → MotionZonesSettings-NcxxQN8r-ByQeOu3_.js} +1 -1
  25. package/embed-dist/assets/{PrivacyMaskSettings-APgPLF7p-BWYkeoRj.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-_ccEdNW7.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-D0sKyXiy.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";
@@ -11221,7 +11221,7 @@ var BoundingBoxSchema = object({
11221
11221
  w: number(),
11222
11222
  h: number()
11223
11223
  });
11224
- var SpatialDetectionSchema = object({
11224
+ object({
11225
11225
  class: string(),
11226
11226
  originalClass: string(),
11227
11227
  score: number(),
@@ -11425,11 +11425,6 @@ var PipelineSchemaSchema = object({
11425
11425
  selectedEngine: PipelineEngineChoiceSchema,
11426
11426
  slots: array(PipelineSlotSchemaSchema).readonly()
11427
11427
  });
11428
- var DetectorOutputSchema = object({
11429
- detections: array(SpatialDetectionSchema).readonly(),
11430
- inferenceMs: number(),
11431
- modelId: string()
11432
- });
11433
11428
  var EngineProvisioningSchema = object({
11434
11429
  runtimeId: _enum([
11435
11430
  "onnx",
@@ -11595,23 +11590,23 @@ var pipelineExecutorCapability = {
11595
11590
  auth: "admin"
11596
11591
  }),
11597
11592
  /**
11598
- * Reset ONE node's detection-pipeline to its factory defaults, forcing
11599
- * regeneration of the (now hardware-aware) default object-detection
11600
- * model. `nodeId` is the ROUTING key — the generated cap-router strips
11601
- * it (default `nodeIdMode: 'routing'`, same as `getSelectedEngine` /
11602
- * `getDefaultSteps`) and dispatches to that node, so the provider method
11603
- * runs ON the target node and receives no `nodeId`.
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`.
11604
11599
  *
11605
- * Clears the node's persisted global pipeline seed (`pipelineSteps`) +
11606
- * legacy engine blob (`pipelineEngine`) and every device's per-camera
11607
- * step overrides, then re-seeds the hardware-aware default tree. Returns
11608
- * the regenerated object-detection model id (null when the default tree
11609
- * has no detector for this node's engine format) so the caller can
11610
- * verify the reset without a second round-trip.
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.
11611
11606
  */
11612
- resetToDefault: method(object({ nodeId: string() }), object({
11607
+ clearDeviceOverrides: method(object({ nodeId: string() }), object({
11613
11608
  success: literal(true),
11614
- regeneratedModelId: string().nullable()
11609
+ clearedDevices: number()
11615
11610
  }), {
11616
11611
  kind: "mutation",
11617
11612
  auth: "admin"
@@ -11657,11 +11652,6 @@ var pipelineExecutorCapability = {
11657
11652
  modelId: string(),
11658
11653
  format: ModelFormatSchema$1
11659
11654
  }), object({ success: literal(true) }), { kind: "mutation" }),
11660
- detect: method(object({
11661
- addonId: string(),
11662
- frame: FrameInputSchema,
11663
- config: record(string(), unknown()).optional()
11664
- }), DetectorOutputSchema),
11665
11655
  /**
11666
11656
  * Stateless single-frame execution. Callers (runner, benchmark) pass
11667
11657
  * the complete `engine` + `steps` tree; the executor holds no state
@@ -13554,7 +13544,9 @@ var AddonPageDeclarationSchema$1 = object({
13554
13544
  icon: string(),
13555
13545
  path: string(),
13556
13546
  remoteName: string(),
13557
- bundle: string()
13547
+ bundle: string(),
13548
+ section: string().optional(),
13549
+ sectionLabel: string().optional()
13558
13550
  });
13559
13551
  var AddonPageInfoSchema = object({
13560
13552
  addonId: string(),
@@ -13594,7 +13586,18 @@ var AddonPageDeclarationSchema = object({
13594
13586
  * the static-file route can compute an mtime-based cache-buster URL
13595
13587
  * without a separate filesystem stat.
13596
13588
  */
13597
- 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()
13598
13601
  });
13599
13602
  method(_void(), array(AddonPageDeclarationSchema).readonly());
13600
13603
  var AddonHttpRouteSchema = object({
@@ -16571,7 +16574,12 @@ var AgentPipelineSettingsSchema = object({
16571
16574
  detectWeight: number().positive().optional(),
16572
16575
  /** Node is eligible to run the detection pipeline (decode + inference). */
16573
16576
  detect: boolean().optional(),
16574
- /** 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
+ */
16575
16583
  decode: boolean().optional(),
16576
16584
  /** Node is eligible to run audio-analyzer sessions. */
16577
16585
  audio: boolean().optional(),
@@ -16632,25 +16640,6 @@ var PipelineAssignmentSchema = object({
16632
16640
  assignedAt: number()
16633
16641
  });
16634
16642
  /**
16635
- * Decoder placement record. Symmetric to `PipelineAssignmentSchema` but for
16636
- * the decoder-node placement domain (`balanceDecoder` decision: manual pin
16637
- * → co-located with pipeline → capacity).
16638
- */
16639
- var DecoderAssignmentSchema = object({
16640
- deviceId: number(),
16641
- /** Moleculer node id of the decoder provider currently responsible for this camera. */
16642
- decoderNodeId: string(),
16643
- /** True when the assignment was set manually via `assignDecoder`, false when chosen by the balancer. */
16644
- pinned: boolean(),
16645
- /** Why this assignment was made — useful for debugging the decoder balancer. */
16646
- reason: _enum([
16647
- "manual",
16648
- "co-located",
16649
- "capacity",
16650
- "hardware-affinity"
16651
- ])
16652
- });
16653
- /**
16654
16643
  * Per-agent load summary surfaced to the load balancer + dashboards.
16655
16644
  * Aggregated from each runner's `getLocalLoad` cap call.
16656
16645
  */
@@ -16856,15 +16845,6 @@ method(object({
16856
16845
  }), method(_void(), IngestOwnerSchema), method(object({
16857
16846
  deviceId: number(),
16858
16847
  nodeId: string()
16859
- }), _void(), {
16860
- kind: "mutation",
16861
- auth: "admin"
16862
- }), method(object({ deviceId: number() }), _void(), {
16863
- kind: "mutation",
16864
- auth: "admin"
16865
- }), method(_void(), array(DecoderAssignmentSchema).readonly()), method(object({
16866
- deviceId: number(),
16867
- nodeId: string()
16868
16848
  }), object({ success: literal(true) }), {
16869
16849
  kind: "mutation",
16870
16850
  auth: "admin"
@@ -16883,10 +16863,7 @@ method(object({
16883
16863
  nodeId: string(),
16884
16864
  pinned: boolean(),
16885
16865
  assignedAt: number()
16886
- }))), method(object({
16887
- deviceId: number(),
16888
- pipelineNodeId: string().optional()
16889
- }), DecoderAssignmentSchema), method(object({ agentNodeId: string() }), AgentPipelineSettingsSchema.nullable()), method(_void(), array(object({
16866
+ }))), method(object({ agentNodeId: string() }), AgentPipelineSettingsSchema.nullable()), method(_void(), array(object({
16890
16867
  nodeId: string(),
16891
16868
  settings: AgentPipelineSettingsSchema
16892
16869
  })).readonly()), method(object({
@@ -16916,7 +16893,6 @@ method(object({
16916
16893
  }), method(object({
16917
16894
  agentNodeId: string(),
16918
16895
  detect: boolean().nullable().optional(),
16919
- decode: boolean().nullable().optional(),
16920
16896
  audio: boolean().nullable().optional(),
16921
16897
  ingest: boolean().nullable().optional()
16922
16898
  }), object({ success: literal(true) }), {
@@ -16928,6 +16904,15 @@ method(object({
16928
16904
  }), object({ success: literal(true) }), {
16929
16905
  kind: "mutation",
16930
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"
16931
16916
  }), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
16932
16917
  deviceId: number(),
16933
16918
  addonId: string(),
@@ -22540,23 +22525,23 @@ Object.freeze({
22540
22525
  addonId: null,
22541
22526
  access: "create"
22542
22527
  },
22543
- "pipelineExecutor.deleteModel": {
22528
+ "pipelineExecutor.clearDeviceOverrides": {
22544
22529
  capName: "pipeline-executor",
22545
22530
  capScope: "system",
22546
22531
  addonId: null,
22547
22532
  access: "delete"
22548
22533
  },
22549
- "pipelineExecutor.deleteTemplate": {
22534
+ "pipelineExecutor.deleteModel": {
22550
22535
  capName: "pipeline-executor",
22551
22536
  capScope: "system",
22552
22537
  addonId: null,
22553
22538
  access: "delete"
22554
22539
  },
22555
- "pipelineExecutor.detect": {
22540
+ "pipelineExecutor.deleteTemplate": {
22556
22541
  capName: "pipeline-executor",
22557
22542
  capScope: "system",
22558
22543
  addonId: null,
22559
- access: "view"
22544
+ access: "delete"
22560
22545
  },
22561
22546
  "pipelineExecutor.downloadModel": {
22562
22547
  capName: "pipeline-executor",
@@ -22702,12 +22687,6 @@ Object.freeze({
22702
22687
  addonId: null,
22703
22688
  access: "create"
22704
22689
  },
22705
- "pipelineExecutor.resetToDefault": {
22706
- capName: "pipeline-executor",
22707
- capScope: "system",
22708
- addonId: null,
22709
- access: "delete"
22710
- },
22711
22690
  "pipelineExecutor.runAudioTest": {
22712
22691
  capName: "pipeline-executor",
22713
22692
  capScope: "system",
@@ -22768,12 +22747,6 @@ Object.freeze({
22768
22747
  addonId: null,
22769
22748
  access: "create"
22770
22749
  },
22771
- "pipelineOrchestrator.assignDecoder": {
22772
- capName: "pipeline-orchestrator",
22773
- capScope: "system",
22774
- addonId: null,
22775
- access: "create"
22776
- },
22777
22750
  "pipelineOrchestrator.assignPipeline": {
22778
22751
  capName: "pipeline-orchestrator",
22779
22752
  capScope: "system",
@@ -22852,18 +22825,6 @@ Object.freeze({
22852
22825
  addonId: null,
22853
22826
  access: "view"
22854
22827
  },
22855
- "pipelineOrchestrator.getDecoderAssignment": {
22856
- capName: "pipeline-orchestrator",
22857
- capScope: "system",
22858
- addonId: null,
22859
- access: "view"
22860
- },
22861
- "pipelineOrchestrator.getDecoderAssignments": {
22862
- capName: "pipeline-orchestrator",
22863
- capScope: "system",
22864
- addonId: null,
22865
- access: "view"
22866
- },
22867
22828
  "pipelineOrchestrator.getGlobalMetrics": {
22868
22829
  capName: "pipeline-orchestrator",
22869
22830
  capScope: "system",
@@ -22912,6 +22873,12 @@ Object.freeze({
22912
22873
  addonId: null,
22913
22874
  access: "delete"
22914
22875
  },
22876
+ "pipelineOrchestrator.resetNodePipelineDefaults": {
22877
+ capName: "pipeline-orchestrator",
22878
+ capScope: "system",
22879
+ addonId: null,
22880
+ access: "delete"
22881
+ },
22915
22882
  "pipelineOrchestrator.resolvePipeline": {
22916
22883
  capName: "pipeline-orchestrator",
22917
22884
  capScope: "system",
@@ -22984,12 +22951,6 @@ Object.freeze({
22984
22951
  addonId: null,
22985
22952
  access: "create"
22986
22953
  },
22987
- "pipelineOrchestrator.unassignDecoder": {
22988
- capName: "pipeline-orchestrator",
22989
- capScope: "system",
22990
- addonId: null,
22991
- access: "create"
22992
- },
22993
22954
  "pipelineOrchestrator.unassignPipeline": {
22994
22955
  capName: "pipeline-orchestrator",
22995
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";
@@ -11221,7 +11221,7 @@ var BoundingBoxSchema = object({
11221
11221
  w: number(),
11222
11222
  h: number()
11223
11223
  });
11224
- var SpatialDetectionSchema = object({
11224
+ object({
11225
11225
  class: string(),
11226
11226
  originalClass: string(),
11227
11227
  score: number(),
@@ -11425,11 +11425,6 @@ var PipelineSchemaSchema = object({
11425
11425
  selectedEngine: PipelineEngineChoiceSchema,
11426
11426
  slots: array(PipelineSlotSchemaSchema).readonly()
11427
11427
  });
11428
- var DetectorOutputSchema = object({
11429
- detections: array(SpatialDetectionSchema).readonly(),
11430
- inferenceMs: number(),
11431
- modelId: string()
11432
- });
11433
11428
  var EngineProvisioningSchema = object({
11434
11429
  runtimeId: _enum([
11435
11430
  "onnx",
@@ -11595,23 +11590,23 @@ var pipelineExecutorCapability = {
11595
11590
  auth: "admin"
11596
11591
  }),
11597
11592
  /**
11598
- * Reset ONE node's detection-pipeline to its factory defaults, forcing
11599
- * regeneration of the (now hardware-aware) default object-detection
11600
- * model. `nodeId` is the ROUTING key — the generated cap-router strips
11601
- * it (default `nodeIdMode: 'routing'`, same as `getSelectedEngine` /
11602
- * `getDefaultSteps`) and dispatches to that node, so the provider method
11603
- * runs ON the target node and receives no `nodeId`.
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`.
11604
11599
  *
11605
- * Clears the node's persisted global pipeline seed (`pipelineSteps`) +
11606
- * legacy engine blob (`pipelineEngine`) and every device's per-camera
11607
- * step overrides, then re-seeds the hardware-aware default tree. Returns
11608
- * the regenerated object-detection model id (null when the default tree
11609
- * has no detector for this node's engine format) so the caller can
11610
- * verify the reset without a second round-trip.
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.
11611
11606
  */
11612
- resetToDefault: method(object({ nodeId: string() }), object({
11607
+ clearDeviceOverrides: method(object({ nodeId: string() }), object({
11613
11608
  success: literal(true),
11614
- regeneratedModelId: string().nullable()
11609
+ clearedDevices: number()
11615
11610
  }), {
11616
11611
  kind: "mutation",
11617
11612
  auth: "admin"
@@ -11657,11 +11652,6 @@ var pipelineExecutorCapability = {
11657
11652
  modelId: string(),
11658
11653
  format: ModelFormatSchema$1
11659
11654
  }), object({ success: literal(true) }), { kind: "mutation" }),
11660
- detect: method(object({
11661
- addonId: string(),
11662
- frame: FrameInputSchema,
11663
- config: record(string(), unknown()).optional()
11664
- }), DetectorOutputSchema),
11665
11655
  /**
11666
11656
  * Stateless single-frame execution. Callers (runner, benchmark) pass
11667
11657
  * the complete `engine` + `steps` tree; the executor holds no state
@@ -13554,7 +13544,9 @@ var AddonPageDeclarationSchema$1 = object({
13554
13544
  icon: string(),
13555
13545
  path: string(),
13556
13546
  remoteName: string(),
13557
- bundle: string()
13547
+ bundle: string(),
13548
+ section: string().optional(),
13549
+ sectionLabel: string().optional()
13558
13550
  });
13559
13551
  var AddonPageInfoSchema = object({
13560
13552
  addonId: string(),
@@ -13594,7 +13586,18 @@ var AddonPageDeclarationSchema = object({
13594
13586
  * the static-file route can compute an mtime-based cache-buster URL
13595
13587
  * without a separate filesystem stat.
13596
13588
  */
13597
- 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()
13598
13601
  });
13599
13602
  method(_void(), array(AddonPageDeclarationSchema).readonly());
13600
13603
  var AddonHttpRouteSchema = object({
@@ -16571,7 +16574,12 @@ var AgentPipelineSettingsSchema = object({
16571
16574
  detectWeight: number().positive().optional(),
16572
16575
  /** Node is eligible to run the detection pipeline (decode + inference). */
16573
16576
  detect: boolean().optional(),
16574
- /** 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
+ */
16575
16583
  decode: boolean().optional(),
16576
16584
  /** Node is eligible to run audio-analyzer sessions. */
16577
16585
  audio: boolean().optional(),
@@ -16632,25 +16640,6 @@ var PipelineAssignmentSchema = object({
16632
16640
  assignedAt: number()
16633
16641
  });
16634
16642
  /**
16635
- * Decoder placement record. Symmetric to `PipelineAssignmentSchema` but for
16636
- * the decoder-node placement domain (`balanceDecoder` decision: manual pin
16637
- * → co-located with pipeline → capacity).
16638
- */
16639
- var DecoderAssignmentSchema = object({
16640
- deviceId: number(),
16641
- /** Moleculer node id of the decoder provider currently responsible for this camera. */
16642
- decoderNodeId: string(),
16643
- /** True when the assignment was set manually via `assignDecoder`, false when chosen by the balancer. */
16644
- pinned: boolean(),
16645
- /** Why this assignment was made — useful for debugging the decoder balancer. */
16646
- reason: _enum([
16647
- "manual",
16648
- "co-located",
16649
- "capacity",
16650
- "hardware-affinity"
16651
- ])
16652
- });
16653
- /**
16654
16643
  * Per-agent load summary surfaced to the load balancer + dashboards.
16655
16644
  * Aggregated from each runner's `getLocalLoad` cap call.
16656
16645
  */
@@ -16856,15 +16845,6 @@ method(object({
16856
16845
  }), method(_void(), IngestOwnerSchema), method(object({
16857
16846
  deviceId: number(),
16858
16847
  nodeId: string()
16859
- }), _void(), {
16860
- kind: "mutation",
16861
- auth: "admin"
16862
- }), method(object({ deviceId: number() }), _void(), {
16863
- kind: "mutation",
16864
- auth: "admin"
16865
- }), method(_void(), array(DecoderAssignmentSchema).readonly()), method(object({
16866
- deviceId: number(),
16867
- nodeId: string()
16868
16848
  }), object({ success: literal(true) }), {
16869
16849
  kind: "mutation",
16870
16850
  auth: "admin"
@@ -16883,10 +16863,7 @@ method(object({
16883
16863
  nodeId: string(),
16884
16864
  pinned: boolean(),
16885
16865
  assignedAt: number()
16886
- }))), method(object({
16887
- deviceId: number(),
16888
- pipelineNodeId: string().optional()
16889
- }), DecoderAssignmentSchema), method(object({ agentNodeId: string() }), AgentPipelineSettingsSchema.nullable()), method(_void(), array(object({
16866
+ }))), method(object({ agentNodeId: string() }), AgentPipelineSettingsSchema.nullable()), method(_void(), array(object({
16890
16867
  nodeId: string(),
16891
16868
  settings: AgentPipelineSettingsSchema
16892
16869
  })).readonly()), method(object({
@@ -16916,7 +16893,6 @@ method(object({
16916
16893
  }), method(object({
16917
16894
  agentNodeId: string(),
16918
16895
  detect: boolean().nullable().optional(),
16919
- decode: boolean().nullable().optional(),
16920
16896
  audio: boolean().nullable().optional(),
16921
16897
  ingest: boolean().nullable().optional()
16922
16898
  }), object({ success: literal(true) }), {
@@ -16928,6 +16904,15 @@ method(object({
16928
16904
  }), object({ success: literal(true) }), {
16929
16905
  kind: "mutation",
16930
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"
16931
16916
  }), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
16932
16917
  deviceId: number(),
16933
16918
  addonId: string(),
@@ -22540,23 +22525,23 @@ Object.freeze({
22540
22525
  addonId: null,
22541
22526
  access: "create"
22542
22527
  },
22543
- "pipelineExecutor.deleteModel": {
22528
+ "pipelineExecutor.clearDeviceOverrides": {
22544
22529
  capName: "pipeline-executor",
22545
22530
  capScope: "system",
22546
22531
  addonId: null,
22547
22532
  access: "delete"
22548
22533
  },
22549
- "pipelineExecutor.deleteTemplate": {
22534
+ "pipelineExecutor.deleteModel": {
22550
22535
  capName: "pipeline-executor",
22551
22536
  capScope: "system",
22552
22537
  addonId: null,
22553
22538
  access: "delete"
22554
22539
  },
22555
- "pipelineExecutor.detect": {
22540
+ "pipelineExecutor.deleteTemplate": {
22556
22541
  capName: "pipeline-executor",
22557
22542
  capScope: "system",
22558
22543
  addonId: null,
22559
- access: "view"
22544
+ access: "delete"
22560
22545
  },
22561
22546
  "pipelineExecutor.downloadModel": {
22562
22547
  capName: "pipeline-executor",
@@ -22702,12 +22687,6 @@ Object.freeze({
22702
22687
  addonId: null,
22703
22688
  access: "create"
22704
22689
  },
22705
- "pipelineExecutor.resetToDefault": {
22706
- capName: "pipeline-executor",
22707
- capScope: "system",
22708
- addonId: null,
22709
- access: "delete"
22710
- },
22711
22690
  "pipelineExecutor.runAudioTest": {
22712
22691
  capName: "pipeline-executor",
22713
22692
  capScope: "system",
@@ -22768,12 +22747,6 @@ Object.freeze({
22768
22747
  addonId: null,
22769
22748
  access: "create"
22770
22749
  },
22771
- "pipelineOrchestrator.assignDecoder": {
22772
- capName: "pipeline-orchestrator",
22773
- capScope: "system",
22774
- addonId: null,
22775
- access: "create"
22776
- },
22777
22750
  "pipelineOrchestrator.assignPipeline": {
22778
22751
  capName: "pipeline-orchestrator",
22779
22752
  capScope: "system",
@@ -22852,18 +22825,6 @@ Object.freeze({
22852
22825
  addonId: null,
22853
22826
  access: "view"
22854
22827
  },
22855
- "pipelineOrchestrator.getDecoderAssignment": {
22856
- capName: "pipeline-orchestrator",
22857
- capScope: "system",
22858
- addonId: null,
22859
- access: "view"
22860
- },
22861
- "pipelineOrchestrator.getDecoderAssignments": {
22862
- capName: "pipeline-orchestrator",
22863
- capScope: "system",
22864
- addonId: null,
22865
- access: "view"
22866
- },
22867
22828
  "pipelineOrchestrator.getGlobalMetrics": {
22868
22829
  capName: "pipeline-orchestrator",
22869
22830
  capScope: "system",
@@ -22912,6 +22873,12 @@ Object.freeze({
22912
22873
  addonId: null,
22913
22874
  access: "delete"
22914
22875
  },
22876
+ "pipelineOrchestrator.resetNodePipelineDefaults": {
22877
+ capName: "pipeline-orchestrator",
22878
+ capScope: "system",
22879
+ addonId: null,
22880
+ access: "delete"
22881
+ },
22915
22882
  "pipelineOrchestrator.resolvePipeline": {
22916
22883
  capName: "pipeline-orchestrator",
22917
22884
  capScope: "system",
@@ -22984,12 +22951,6 @@ Object.freeze({
22984
22951
  addonId: null,
22985
22952
  access: "create"
22986
22953
  },
22987
- "pipelineOrchestrator.unassignDecoder": {
22988
- capName: "pipeline-orchestrator",
22989
- capScope: "system",
22990
- addonId: null,
22991
- access: "create"
22992
- },
22993
22954
  "pipelineOrchestrator.unassignPipeline": {
22994
22955
  capName: "pipeline-orchestrator",
22995
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-CjxqjgEv.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-D04numuO.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-CjxqjgEv.js");
6
- const require_remote_source_plane = require("../remote-source-plane-CLuxyDV2.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-D04numuO.mjs";
2
- import { n as isRemoteRestream, r as profileForStreamId, t as RemoteSourcePlane } from "../remote-source-plane-D31IILFN.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-CjxqjgEv.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-D04numuO.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-D04numuO.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-CjxqjgEv.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
  /**