@camstack/addon-pipeline 1.2.129 → 1.2.130

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 (123) hide show
  1. package/dist/{addon-utils-CKB-2oM9.js → addon-utils-DH78p79i.js} +1 -1
  2. package/dist/audio-analyzer/index.js +3 -3
  3. package/dist/audio-analyzer/index.mjs +2 -2
  4. package/dist/detection-pipeline/index.js +5 -5
  5. package/dist/detection-pipeline/index.mjs +3 -3
  6. package/dist/{dist-D9x2_csL.js → dist-DOw-izoI.js} +201 -49
  7. package/dist/{dist-CMio-1qq.mjs → dist-Wt81pN5Y.mjs} +201 -49
  8. package/dist/{event-loop-stall-monitor-UW8nsiMb.js → event-loop-stall-monitor-Bld7jNCb.js} +1 -1
  9. package/dist/{event-loop-stall-monitor-B9dxYxyf.mjs → event-loop-stall-monitor-CtQCOZqm.mjs} +1 -1
  10. package/dist/{lazy-sharp-DrLwLKpg.js → lazy-sharp-BbNI2ZD-.js} +1 -1
  11. package/dist/motion-wasm/index.js +2 -2
  12. package/dist/motion-wasm/index.mjs +1 -1
  13. package/dist/pipeline-runner/index.js +4 -4
  14. package/dist/pipeline-runner/index.mjs +3 -3
  15. package/dist/{process-memory-C6es8dMA.mjs → process-memory-1_D3EZT9.mjs} +1 -1
  16. package/dist/{process-memory-CSJ7-Wlp.js → process-memory-D9H5qjDl.js} +1 -1
  17. package/dist/recorder/index.js +467 -29
  18. package/dist/recorder/index.mjs +465 -28
  19. package/dist/{segment-demux-js-BRCjXbI0.mjs → segment-demux-js-BW-Q-j2A.mjs} +1 -1
  20. package/dist/{segment-demux-js-DiLDoV9_.js → segment-demux-js-C2jBBqGW.js} +1 -1
  21. package/dist/session-decode/decode-worker-child.js +2 -2
  22. package/dist/session-decode/decode-worker-child.mjs +1 -1
  23. package/dist/stream-broker/_stub.js +2 -2
  24. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-1O99xPTr.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-Dw-iwP4y.mjs} +3 -3
  25. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Bme2OZQp.mjs +26 -0
  26. package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Do2DEtRt.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-D36MoVV1.mjs} +1 -1
  27. package/dist/stream-broker/demux-worker-child.js +1 -1
  28. package/dist/stream-broker/demux-worker-child.mjs +1 -1
  29. package/dist/stream-broker/{hostInit-8scvCWua.mjs → hostInit-DEVCEYgu.mjs} +3 -3
  30. package/dist/stream-broker/index.js +426 -319
  31. package/dist/stream-broker/index.mjs +426 -319
  32. package/dist/stream-broker/remoteEntry.js +1 -1
  33. package/dist/{worker-protocol-BmBYCioC.js → worker-protocol-nAZl_Rsv.js} +1 -1
  34. package/dist/{worker-protocol-BHNWB9Ve.mjs → worker-protocol-rpnr7Ldd.mjs} +1 -1
  35. package/package.json +1 -1
  36. package/python/__pycache__/inference_pool.cpython-312.pyc +0 -0
  37. package/python/__pycache__/inference_pool.cpython-313.pyc +0 -0
  38. package/python/__pycache__/inference_pool.cpython-314.pyc +0 -0
  39. package/python/__pycache__/test_inference_pool_backpressure.cpython-312-pytest-9.1.1.pyc +0 -0
  40. package/python/__pycache__/test_inference_pool_backpressure.cpython-312.pyc +0 -0
  41. package/python/__pycache__/test_inference_pool_backpressure.cpython-314.pyc +0 -0
  42. package/python/__pycache__/test_inference_pool_coreml_cache.cpython-312-pytest-9.1.1.pyc +0 -0
  43. package/python/__pycache__/test_inference_pool_coreml_cache.cpython-312.pyc +0 -0
  44. package/python/__pycache__/test_inference_pool_coreml_cache.cpython-314.pyc +0 -0
  45. package/python/__pycache__/test_inference_pool_device_selection.cpython-312-pytest-9.1.1.pyc +0 -0
  46. package/python/__pycache__/test_inference_pool_device_selection.cpython-312.pyc +0 -0
  47. package/python/__pycache__/test_inference_pool_device_selection.cpython-314.pyc +0 -0
  48. package/python/__pycache__/test_inference_pool_layout.cpython-312-pytest-9.1.1.pyc +0 -0
  49. package/python/__pycache__/test_inference_pool_layout.cpython-314.pyc +0 -0
  50. package/python/__pycache__/test_inference_pool_memstats.cpython-312-pytest-9.1.1.pyc +0 -0
  51. package/python/__pycache__/test_inference_pool_memstats.cpython-312.pyc +0 -0
  52. package/python/__pycache__/test_inference_pool_memstats.cpython-314.pyc +0 -0
  53. package/python/__pycache__/test_inference_pool_ov_ppp.cpython-312-pytest-9.1.1.pyc +0 -0
  54. package/python/__pycache__/test_inference_pool_ov_ppp.cpython-312.pyc +0 -0
  55. package/python/__pycache__/test_inference_pool_ov_ppp.cpython-314.pyc +0 -0
  56. package/python/__pycache__/test_inference_pool_preprocess.cpython-312-pytest-9.1.1.pyc +0 -0
  57. package/python/__pycache__/test_inference_pool_preprocess.cpython-314.pyc +0 -0
  58. package/python/__pycache__/test_inference_pool_reconfigure.cpython-314.pyc +0 -0
  59. package/python/__pycache__/test_inference_pool_static_batch.cpython-312-pytest-9.1.1.pyc +0 -0
  60. package/python/__pycache__/test_inference_pool_static_batch.cpython-312.pyc +0 -0
  61. package/python/__pycache__/test_inference_pool_static_batch.cpython-314.pyc +0 -0
  62. package/python/__pycache__/yamnet_audio.cpython-314.pyc +0 -0
  63. package/python/postprocessors/__pycache__/__init__.cpython-312.pyc +0 -0
  64. package/python/postprocessors/__pycache__/__init__.cpython-313.pyc +0 -0
  65. package/python/postprocessors/__pycache__/__init__.cpython-314.pyc +0 -0
  66. package/python/postprocessors/__pycache__/_safety.cpython-313.pyc +0 -0
  67. package/python/postprocessors/__pycache__/arcface.cpython-312.pyc +0 -0
  68. package/python/postprocessors/__pycache__/arcface.cpython-313.pyc +0 -0
  69. package/python/postprocessors/__pycache__/arcface.cpython-314.pyc +0 -0
  70. package/python/postprocessors/__pycache__/clip.cpython-312.pyc +0 -0
  71. package/python/postprocessors/__pycache__/clip.cpython-313.pyc +0 -0
  72. package/python/postprocessors/__pycache__/clip.cpython-314.pyc +0 -0
  73. package/python/postprocessors/__pycache__/ctc.cpython-312.pyc +0 -0
  74. package/python/postprocessors/__pycache__/ctc.cpython-313.pyc +0 -0
  75. package/python/postprocessors/__pycache__/ctc.cpython-314.pyc +0 -0
  76. package/python/postprocessors/__pycache__/plate_slots.cpython-312.pyc +0 -0
  77. package/python/postprocessors/__pycache__/plate_slots.cpython-314.pyc +0 -0
  78. package/python/postprocessors/__pycache__/rfdetr.cpython-312.pyc +0 -0
  79. package/python/postprocessors/__pycache__/rfdetr.cpython-314.pyc +0 -0
  80. package/python/postprocessors/__pycache__/saliency.cpython-312.pyc +0 -0
  81. package/python/postprocessors/__pycache__/saliency.cpython-313.pyc +0 -0
  82. package/python/postprocessors/__pycache__/saliency.cpython-314.pyc +0 -0
  83. package/python/postprocessors/__pycache__/scrfd.cpython-312.pyc +0 -0
  84. package/python/postprocessors/__pycache__/scrfd.cpython-313.pyc +0 -0
  85. package/python/postprocessors/__pycache__/scrfd.cpython-314.pyc +0 -0
  86. package/python/postprocessors/__pycache__/softmax.cpython-312.pyc +0 -0
  87. package/python/postprocessors/__pycache__/softmax.cpython-313.pyc +0 -0
  88. package/python/postprocessors/__pycache__/softmax.cpython-314.pyc +0 -0
  89. package/python/postprocessors/__pycache__/ssd.cpython-312.pyc +0 -0
  90. package/python/postprocessors/__pycache__/ssd.cpython-313.pyc +0 -0
  91. package/python/postprocessors/__pycache__/ssd.cpython-314.pyc +0 -0
  92. package/python/postprocessors/__pycache__/test_clip.cpython-312-pytest-9.1.1.pyc +0 -0
  93. package/python/postprocessors/__pycache__/test_clip.cpython-313-pytest-9.1.1.pyc +0 -0
  94. package/python/postprocessors/__pycache__/test_ctc.cpython-312-pytest-9.1.1.pyc +0 -0
  95. package/python/postprocessors/__pycache__/test_ctc.cpython-312.pyc +0 -0
  96. package/python/postprocessors/__pycache__/test_ctc.cpython-313-pytest-9.1.1.pyc +0 -0
  97. package/python/postprocessors/__pycache__/test_ctc.cpython-313.pyc +0 -0
  98. package/python/postprocessors/__pycache__/test_ctc.cpython-314.pyc +0 -0
  99. package/python/postprocessors/__pycache__/test_plate_slots.cpython-312-pytest-9.1.1.pyc +0 -0
  100. package/python/postprocessors/__pycache__/test_rfdetr.cpython-312-pytest-9.1.1.pyc +0 -0
  101. package/python/postprocessors/__pycache__/test_rfdetr.cpython-314.pyc +0 -0
  102. package/python/postprocessors/__pycache__/test_saliency.cpython-312-pytest-9.1.1.pyc +0 -0
  103. package/python/postprocessors/__pycache__/test_saliency.cpython-313-pytest-9.1.1.pyc +0 -0
  104. package/python/postprocessors/__pycache__/test_saliency.cpython-314.pyc +0 -0
  105. package/python/postprocessors/__pycache__/test_softmax.cpython-312-pytest-9.1.1.pyc +0 -0
  106. package/python/postprocessors/__pycache__/test_softmax.cpython-314.pyc +0 -0
  107. package/python/postprocessors/__pycache__/test_yolo_nms.cpython-312-pytest-9.1.1.pyc +0 -0
  108. package/python/postprocessors/__pycache__/test_yolo_nms.cpython-314.pyc +0 -0
  109. package/python/postprocessors/__pycache__/test_yolo_nms.cpython-39.pyc +0 -0
  110. package/python/postprocessors/__pycache__/test_yolonas.cpython-312-pytest-9.1.1.pyc +0 -0
  111. package/python/postprocessors/__pycache__/yamnet.cpython-312.pyc +0 -0
  112. package/python/postprocessors/__pycache__/yamnet.cpython-313.pyc +0 -0
  113. package/python/postprocessors/__pycache__/yamnet.cpython-314.pyc +0 -0
  114. package/python/postprocessors/__pycache__/yolo.cpython-312.pyc +0 -0
  115. package/python/postprocessors/__pycache__/yolo.cpython-313.pyc +0 -0
  116. package/python/postprocessors/__pycache__/yolo.cpython-314.pyc +0 -0
  117. package/python/postprocessors/__pycache__/yolo.cpython-39.pyc +0 -0
  118. package/python/postprocessors/__pycache__/yolo_seg.cpython-312.pyc +0 -0
  119. package/python/postprocessors/__pycache__/yolo_seg.cpython-313.pyc +0 -0
  120. package/python/postprocessors/__pycache__/yolo_seg.cpython-314.pyc +0 -0
  121. package/python/postprocessors/__pycache__/yolonas.cpython-312.pyc +0 -0
  122. package/python/postprocessors/__pycache__/yolonas.cpython-314.pyc +0 -0
  123. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CxppPmXr.mjs +0 -26
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-D9x2_csL.js");
1
+ const require_dist = require("./dist-DOw-izoI.js");
2
2
  require("node:crypto");
3
3
  let node_path = require("node:path");
4
4
  node_path = require_dist.__toESM(node_path, 1);
@@ -2,9 +2,9 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-D9x2_csL.js");
6
- const require_process_memory = require("../process-memory-CSJ7-Wlp.js");
7
- const require_addon_utils = require("../addon-utils-CKB-2oM9.js");
5
+ const require_dist = require("../dist-DOw-izoI.js");
6
+ const require_process_memory = require("../process-memory-D9H5qjDl.js");
7
+ const require_addon_utils = require("../addon-utils-DH78p79i.js");
8
8
  let node_path = require("node:path");
9
9
  node_path = require_dist.__toESM(node_path);
10
10
  let node_fs = require("node:fs");
@@ -1,6 +1,6 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { A as audioAnalyzerCapability, Dt as hydrateSchema, J as mapAudioLabelToMacro, St as BaseAddon, _ as HF_BASE_URL, gt as errMsg, k as audioAnalysisCapability, lt as resolvePoolMemoryPolicy, n as AUDIO_BACKEND_CHOICES, s as DEFAULT_AUDIO_ANALYZER_CONFIG, x as PoolMemoryWatchdog } from "../dist-CMio-1qq.mjs";
3
- import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-C6es8dMA.mjs";
2
+ import { A as audioAnalyzerCapability, Dt as hydrateSchema, J as mapAudioLabelToMacro, St as BaseAddon, _ as HF_BASE_URL, gt as errMsg, k as audioAnalysisCapability, lt as resolvePoolMemoryPolicy, n as AUDIO_BACKEND_CHOICES, s as DEFAULT_AUDIO_ANALYZER_CONFIG, x as PoolMemoryWatchdog } from "../dist-Wt81pN5Y.mjs";
3
+ import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-1_D3EZT9.mjs";
4
4
  import { i as downloadFile } from "../addon-utils-CgBCF-mE.mjs";
5
5
  import * as path$1 from "node:path";
6
6
  import * as fs from "node:fs";
@@ -2,11 +2,11 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-D9x2_csL.js");
6
- const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-UW8nsiMb.js");
7
- const require_lazy_sharp = require("../lazy-sharp-DrLwLKpg.js");
8
- const require_process_memory = require("../process-memory-CSJ7-Wlp.js");
9
- const require_addon_utils = require("../addon-utils-CKB-2oM9.js");
5
+ const require_dist = require("../dist-DOw-izoI.js");
6
+ const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-Bld7jNCb.js");
7
+ const require_lazy_sharp = require("../lazy-sharp-BbNI2ZD-.js");
8
+ const require_process_memory = require("../process-memory-D9H5qjDl.js");
9
+ const require_addon_utils = require("../addon-utils-DH78p79i.js");
10
10
  let sharp = require("sharp");
11
11
  sharp = require_dist.__toESM(sharp);
12
12
  let node_child_process = require("node:child_process");
@@ -1,8 +1,8 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { $ as pickClusterStepModels, D as YAMNET_TO_MACRO, Dt as hydrateSchema, Et as createEvent, Ft as sleep, G as evaluateZoneRules, Gt as string, I as defaultDeviceFor$1, Kt as union, Lt as array, Mt as parseJsonUnknown, St as BaseAddon, Ut as object, V as detectionPipelineCapability, W as enumerateInferenceDevices, Z as overlayClusterStepSettings, c as DEFAULT_CLUSTER_STEP_MODELS, dt as runtimeDevices$1, et as pickClusterStepSettings, gt as errMsg, jt as nodePin, l as DEFAULT_CLUSTER_STEP_SETTINGS, lt as resolvePoolMemoryPolicy, mt as supportedRuntimes$1, p as DEVICE_BACKEND_TO_FORMAT, q as inferModelProvider, qt as EventCategory, rt as pipelineExecutorCapability, st as resolveClusterStepModelId, t as APPLE_SA_TO_MACRO, x as PoolMemoryWatchdog } from "../dist-CMio-1qq.mjs";
3
- import { a as ALL_PIPELINE_STEPS, c as getDefaultModelForFormatFromDef, d as resolveModelForFormat, f as landmarkPrecisionVerdict, l as getStep, n as startEventLoopStallMonitor, o as ALL_STEPS, r as localFrameRegistry, s as getDefaultModelForFormat, u as getStepDefinition } from "../event-loop-stall-monitor-B9dxYxyf.mjs";
2
+ import { $ as pickClusterStepModels, D as YAMNET_TO_MACRO, Dt as hydrateSchema, Et as createEvent, Ft as sleep, G as evaluateZoneRules, Gt as string, I as defaultDeviceFor$1, Kt as union, Lt as array, Mt as parseJsonUnknown, St as BaseAddon, Ut as object, V as detectionPipelineCapability, W as enumerateInferenceDevices, Z as overlayClusterStepSettings, c as DEFAULT_CLUSTER_STEP_MODELS, dt as runtimeDevices$1, et as pickClusterStepSettings, gt as errMsg, jt as nodePin, l as DEFAULT_CLUSTER_STEP_SETTINGS, lt as resolvePoolMemoryPolicy, mt as supportedRuntimes$1, p as DEVICE_BACKEND_TO_FORMAT, q as inferModelProvider, qt as EventCategory, rt as pipelineExecutorCapability, st as resolveClusterStepModelId, t as APPLE_SA_TO_MACRO, x as PoolMemoryWatchdog } from "../dist-Wt81pN5Y.mjs";
3
+ import { a as ALL_PIPELINE_STEPS, c as getDefaultModelForFormatFromDef, d as resolveModelForFormat, f as landmarkPrecisionVerdict, l as getStep, n as startEventLoopStallMonitor, o as ALL_STEPS, r as localFrameRegistry, s as getDefaultModelForFormat, u as getStepDefinition } from "../event-loop-stall-monitor-CtQCOZqm.mjs";
4
4
  import { t as getSharp } from "../lazy-sharp-BtT5x-qP.mjs";
5
- import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-C6es8dMA.mjs";
5
+ import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-1_D3EZT9.mjs";
6
6
  import { a as ensureModel, o as isModelDownloaded, r as deleteModelFromDisk } from "../addon-utils-CgBCF-mE.mjs";
7
7
  import sharp from "sharp";
8
8
  import { spawn } from "node:child_process";
@@ -6792,7 +6792,7 @@ function method(input, output, options) {
6792
6792
  input,
6793
6793
  output,
6794
6794
  kind: options?.kind ?? "query",
6795
- auth: options?.auth ?? "protected",
6795
+ ...options?.auth !== void 0 ? { auth: options.auth } : {},
6796
6796
  ...options?.access !== void 0 ? { access: options.access } : {},
6797
6797
  ...options?.caller !== void 0 ? { caller: options.caller } : {},
6798
6798
  timeoutMs: options?.timeoutMs
@@ -6816,7 +6816,7 @@ function event(data) {
6816
6816
  }
6817
6817
  var StaticDirOutputSchema$1 = object({ staticDir: string() });
6818
6818
  var VersionOutputSchema$1 = object({ version: string() });
6819
- method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
6819
+ method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
6820
6820
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
6821
6821
  DeviceType["Camera"] = "camera";
6822
6822
  DeviceType["Hub"] = "hub";
@@ -7137,7 +7137,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
7137
7137
  }({});
7138
7138
  var StaticDirOutputSchema = object({ staticDir: string() });
7139
7139
  var VersionOutputSchema = object({ version: string() });
7140
- method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
7140
+ method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
7141
7141
  /**
7142
7142
  * device-ops — device-scoped cap that unifies the per-IDevice operations
7143
7143
  * previously routed through the `.device-ops` Moleculer bridge service.
@@ -8772,10 +8772,11 @@ var RelocateFootageInputSchema = object({
8772
8772
  * `RecordingConfig.enabled` or camera wrapper bindings. */
8773
8773
  var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
8774
8774
  var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
8775
- var StorageMigrationMediaMoveInputSchema = object({
8775
+ var RelocateMediaInputSchema = object({
8776
8776
  toLocationId: string(),
8777
8777
  throttleMbps: number().min(1).max(1e3).optional()
8778
- }).extend({ leaseId: string().min(1) });
8778
+ });
8779
+ var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
8779
8780
  /** The independently selectable logical storage classes. `recordings`
8780
8781
  * encompasses the high and mid segment profiles; `recordingsLow` is low
8781
8782
  * segments; `eventMedia` is post-analysis blobs. */
@@ -9070,7 +9071,26 @@ var LabelDefinitionSchema = object({
9070
9071
  description: string().optional(),
9071
9072
  icon: string().optional()
9072
9073
  });
9073
- var ClassMapDefinitionSchema = object({
9074
+ /**
9075
+ * Wire schema for a per-model CATALOG classMap override
9076
+ * (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
9077
+ * restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
9078
+ * detection pipeline executor actually routes.
9079
+ *
9080
+ * This is deliberately a DIFFERENT, narrower shape than the general-purpose
9081
+ * `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
9082
+ * and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
9083
+ * enum) — the two used to share the name `ClassMapDefinition`/
9084
+ * `ClassMapDefinitionSchema`, which made the schema-type-twin guard
9085
+ * (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
9086
+ * are not: it is two different concepts colliding on a name. Keep this type
9087
+ * under its own name rather than reusing `ClassMapDefinition` — reusing it
9088
+ * would either narrow every `ClassMapDefinition` consumer to the four
9089
+ * detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
9090
+ * schema exists for (see the "rejects a classMap whose target is not a
9091
+ * detection macro" test in `model-catalog-schema.test.ts`).
9092
+ */
9093
+ var DetectionCatalogClassMapSchema = object({
9074
9094
  mapping: record(string(), _enum([
9075
9095
  "person",
9076
9096
  "vehicle",
@@ -9288,7 +9308,7 @@ var ModelCatalogEntrySchema = object({
9288
9308
  * applies (Frigate / COCO public catalog). Set on a custom model whose raw
9289
9309
  * labels already ARE the CamStack macros (Scrypted identity map).
9290
9310
  */
9291
- classMap: ClassMapDefinitionSchema.optional()
9311
+ classMap: DetectionCatalogClassMapSchema.optional()
9292
9312
  });
9293
9313
  var ConvertTargetSchema = discriminatedUnion("format", [object({
9294
9314
  format: literal("openvino"),
@@ -9318,7 +9338,7 @@ var ModelConvertMetadataSchema = object({
9318
9338
  "segmentation"
9319
9339
  ]),
9320
9340
  faceAlignment: boolean().optional(),
9321
- classMap: ClassMapDefinitionSchema.optional()
9341
+ classMap: DetectionCatalogClassMapSchema.optional()
9322
9342
  });
9323
9343
  var ConvertResultSchema = object({
9324
9344
  entry: ModelCatalogEntrySchema,
@@ -10181,7 +10201,7 @@ var AddonPageDeclarationSchema = object({
10181
10201
  /** Display label for a CUSTOM `section` id (ignored for well-known ids). */
10182
10202
  sectionLabel: string().optional()
10183
10203
  });
10184
- method(_void(), array(AddonPageDeclarationSchema).readonly());
10204
+ method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
10185
10205
  var AddonHttpRouteSchema = object({
10186
10206
  method: _enum([
10187
10207
  "GET",
@@ -10421,7 +10441,20 @@ var addonWidgetsSourceCapability = {
10421
10441
  scope: "system",
10422
10442
  mode: "collection",
10423
10443
  internal: true,
10424
- methods: { listWidgets: method(_void(), array(WidgetMetadataSchema).readonly()) }
10444
+ methods: {
10445
+ /**
10446
+ * `internal: true` did not gate the mount (see the 2026-08-26 note on
10447
+ * `data-store-provider`) — this was reachable on the AppRouter by ANY
10448
+ * authenticated session at the default `auth: 'protected'`. The only
10449
+ * consumer, the `addon-widgets-aggregator` builtin, reads it via
10450
+ * `ctx.capabilities.getCollection('addon-widgets-source')` — LOCAL-PROCESS
10451
+ * only, never tRPC. The public, enriched listing admin-ui actually
10452
+ * consumes is the separate `addon-widgets` cap (`listWidgets` there is
10453
+ * gated separately, and a `preAuth: true` widget is surfaced through the
10454
+ * PUBLIC `auth.listLoginMethods` contribution channel instead) —
10455
+ * neither is affected by this change.
10456
+ */
10457
+ listWidgets: method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" }) }
10425
10458
  };
10426
10459
  /**
10427
10460
  * `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
@@ -12357,7 +12390,7 @@ var CustomModelDescriptorSchema = object({
12357
12390
  stepId: string(),
12358
12391
  entry: ModelCatalogEntrySchema
12359
12392
  });
12360
- method(_void(), array(CustomModelDescriptorSchema).readonly());
12393
+ method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
12361
12394
  /**
12362
12395
  * Query filter for settings-store collections.
12363
12396
  */
@@ -12508,56 +12541,87 @@ var EngineInfoSchema = object({
12508
12541
  kind: _enum(["relational", "vector"]),
12509
12542
  displayName: string()
12510
12543
  });
12511
- method(_void(), EngineInfoSchema), method(object({
12544
+ method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
12512
12545
  namespace: string().optional(),
12513
12546
  collection: string(),
12514
12547
  key: string()
12515
- }), unknown()), method(object({
12548
+ }), unknown(), { auth: "admin" }), method(object({
12516
12549
  namespace: string().optional(),
12517
12550
  collection: string(),
12518
12551
  key: string(),
12519
12552
  value: unknown()
12520
- }), _void(), { kind: "mutation" }), method(object({
12553
+ }), _void(), {
12554
+ kind: "mutation",
12555
+ auth: "admin"
12556
+ }), method(object({
12521
12557
  namespace: string().optional(),
12522
12558
  collection: string(),
12523
12559
  filter: QueryFilterSchema.optional(),
12524
12560
  /**
12525
12561
  * SQL-level column projection — MUST mirror `settings-store.query`.
12526
12562
  *
12527
- * This is the second schema the same call passes through, and Zod
12528
- * objects STRIP what they do not declare: a field present on the door
12529
- * and absent here does not error, it silently disappears one hop before
12530
- * the engine, and the caller concludes the projection does nothing.
12531
- * `data-door-schema-parity.spec.ts` is what keeps the two in step.
12563
+ * An earlier version of this comment blamed Zod stripping, and that
12564
+ * was wrong corrected 2026-08-26 after the hop map
12565
+ * (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
12566
+ * There is **no Zod parse at all** between the door and the engine: the
12567
+ * dispatcher forwards the payload verbatim and UDS carries it whole. A
12568
+ * field declared here reaches `SqliteSettingsBackend` either way.
12569
+ *
12570
+ * What actually lost `columns` was the THIRD declaration of this shape:
12571
+ * `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
12572
+ * interface the engine destructures from. The field existed on both
12573
+ * schemas and the engine still never read it, because nothing checks a
12574
+ * registered provider against `InferProvider<cap>` —
12575
+ * `ProviderRegistration.provider` is typed `object`.
12576
+ *
12577
+ * It is declared here anyway, and must stay in step with
12578
+ * `settings-store.query`: a caller reading only the cap definitions has
12579
+ * to be able to see that this call carries a projection.
12580
+ * `data-door-schema-parity.spec.ts` keeps the two aligned.
12532
12581
  */
12533
12582
  columns: array(string()).readonly().optional()
12534
- }), array(SettingsRecordSchema).readonly()), method(object({
12583
+ }), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
12535
12584
  namespace: string().optional(),
12536
12585
  collection: string(),
12537
12586
  record: SettingsRecordSchema
12538
- }), _void(), { kind: "mutation" }), method(object({
12587
+ }), _void(), {
12588
+ kind: "mutation",
12589
+ auth: "admin"
12590
+ }), method(object({
12539
12591
  namespace: string().optional(),
12540
12592
  collection: string(),
12541
12593
  id: string(),
12542
12594
  data: record(string(), unknown())
12543
- }), _void(), { kind: "mutation" }), method(object({
12595
+ }), _void(), {
12596
+ kind: "mutation",
12597
+ auth: "admin"
12598
+ }), method(object({
12544
12599
  namespace: string().optional(),
12545
12600
  collection: string(),
12546
12601
  key: string()
12547
- }), _void(), { kind: "mutation" }), method(object({
12602
+ }), _void(), {
12603
+ kind: "mutation",
12604
+ auth: "admin"
12605
+ }), method(object({
12548
12606
  namespace: string().optional(),
12549
12607
  collection: string(),
12550
12608
  filter: MutationFilterSchema
12551
- }), object({ deleted: number().int() }), { kind: "mutation" }), method(object({
12609
+ }), object({ deleted: number().int() }), {
12610
+ kind: "mutation",
12611
+ auth: "admin"
12612
+ }), method(object({
12552
12613
  namespace: string().optional(),
12553
12614
  collection: string(),
12554
12615
  filter: MutationFilterSchema,
12555
12616
  data: record(string(), unknown())
12556
- }), object({ updated: number().int() }), { kind: "mutation" }), method(object({
12617
+ }), object({ updated: number().int() }), {
12618
+ kind: "mutation",
12619
+ auth: "admin"
12620
+ }), method(object({
12557
12621
  namespace: string().optional(),
12558
12622
  collection: string(),
12559
12623
  filter: QueryFilterSchema.optional()
12560
- }), number()), method(object({
12624
+ }), number(), { auth: "admin" }), method(object({
12561
12625
  namespace: string().optional(),
12562
12626
  collection: string(),
12563
12627
  field: string(),
@@ -12567,15 +12631,18 @@ method(_void(), EngineInfoSchema), method(object({
12567
12631
  }), array(object({
12568
12632
  bucket: number().int(),
12569
12633
  count: number().int()
12570
- })).readonly()), method(object({
12634
+ })).readonly(), { auth: "admin" }), method(object({
12571
12635
  namespace: string().optional(),
12572
12636
  collection: string()
12573
- }), boolean()), method(object({
12637
+ }), boolean(), { auth: "admin" }), method(object({
12574
12638
  namespace: string().optional(),
12575
12639
  collection: string(),
12576
12640
  columns: array(CollectionColumnSchema).readonly(),
12577
12641
  indexes: array(CollectionIndexSchema).readonly().optional()
12578
- }), _void(), { kind: "mutation" });
12642
+ }), _void(), {
12643
+ kind: "mutation",
12644
+ auth: "admin"
12645
+ });
12579
12646
  /**
12580
12647
  * shm ring usage stats for a `frameSink: 'shm'` decoder session —
12581
12648
  * exposed via `decoder.getShmStats` so downstream consumers can
@@ -13734,7 +13801,7 @@ method(object({
13734
13801
  crop: _instanceof(Uint8Array),
13735
13802
  width: number(),
13736
13803
  height: number()
13737
- }), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
13804
+ }), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
13738
13805
  /**
13739
13806
  * filesystem-browse — per-node capability for browsing the node's local
13740
13807
  * filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
@@ -14027,19 +14094,22 @@ method(LlmGenerateBaseInputSchema.extend({
14027
14094
  runtime: ManagedRuntimeConfigSchema,
14028
14095
  /** The managed profile's timeout, threaded by the hub provider. */
14029
14096
  timeoutMs: number().int().positive().optional()
14030
- }), LlmGenerateResultSchema, { kind: "mutation" }), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
14097
+ }), LlmGenerateResultSchema, {
14098
+ kind: "mutation",
14099
+ auth: "admin"
14100
+ }), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
14031
14101
  kind: "mutation",
14032
14102
  auth: "admin"
14033
14103
  }), method(object({}), _void(), {
14034
14104
  kind: "mutation",
14035
14105
  auth: "admin"
14036
- }), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
14106
+ }), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
14037
14107
  kind: "mutation",
14038
14108
  auth: "admin"
14039
14109
  }), method(object({ file: string() }), _void(), {
14040
14110
  kind: "mutation",
14041
14111
  auth: "admin"
14042
- }), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
14112
+ }), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
14043
14113
  /**
14044
14114
  * `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
14045
14115
  * methods concat-fan across providers; single-row methods route to ONE
@@ -17855,7 +17925,7 @@ var OauthIntegrationDescriptorSchema = object({
17855
17925
  */
17856
17926
  refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
17857
17927
  });
17858
- method(_void(), OauthIntegrationDescriptorSchema);
17928
+ method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
17859
17929
  /**
17860
17930
  * pipeline-analytics — device-scoped wrapper cap. Refines raw
17861
17931
  * per-frame detections emitted by the pipeline runner into tracked
@@ -19050,6 +19120,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19050
19120
  }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
19051
19121
  kind: "mutation",
19052
19122
  auth: "admin"
19123
+ }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
19124
+ kind: "mutation",
19125
+ auth: "admin"
19126
+ }), method(object({}), array(RelocateJobSchema).readonly(), {
19127
+ kind: "query",
19128
+ auth: "admin"
19129
+ }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
19130
+ kind: "mutation",
19131
+ auth: "admin"
19053
19132
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
19054
19133
  kind: "query",
19055
19134
  auth: "admin"
@@ -19204,6 +19283,11 @@ object({
19204
19283
  "jpeg"
19205
19284
  ])
19206
19285
  });
19286
+ /**
19287
+ * Process-local frame identity. It is serializable so it can ride an in-process
19288
+ * capability call, but `registryId` deliberately prevents resolution in any
19289
+ * other process or execution group.
19290
+ */
19207
19291
  var FrameRefSchema = object({
19208
19292
  registryId: string().min(1),
19209
19293
  id: string().min(1),
@@ -21663,7 +21747,7 @@ method(object({
21663
21747
  * linking rather than produce an eternal token.
21664
21748
  */
21665
21749
  ttlSec: union([number().int().positive(), literal("never")]).optional()
21666
- }), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
21750
+ }), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
21667
21751
  var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
21668
21752
  providerId: string().min(1),
21669
21753
  displayName: string().min(1),
@@ -21764,8 +21848,15 @@ var storageEvictableCapability = {
21764
21848
  mode: "collection",
21765
21849
  internal: true,
21766
21850
  methods: {
21851
+ /**
21852
+ * `internal: true` did not gate the mount (see the 2026-08-26 note on
21853
+ * `data-store-provider`) — this was reachable on the AppRouter by ANY
21854
+ * authenticated session at the default `auth: 'protected'`. The only
21855
+ * consumer is the orchestrator's `StoragePressureManager`, which calls
21856
+ * `ctx.api` — never tRPC — so `auth: 'admin'` costs it nothing.
21857
+ */
21767
21858
  /** Bytes this provider holds on the given location — drives proportional fan-out. */
21768
- getEvictableUsage: method(object({ locationId: string() }), EvictableUsageSchema),
21859
+ getEvictableUsage: method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }),
21769
21860
  /**
21770
21861
  * Free approximately `targetBytes` of this provider's OWN least-valuable
21771
21862
  * data on the location (oldest footage, expired clips, …). Returns what it
@@ -21774,7 +21865,10 @@ var storageEvictableCapability = {
21774
21865
  evict: method(object({
21775
21866
  locationId: string(),
21776
21867
  targetBytes: number().int().positive()
21777
- }), EvictResultSchema, { kind: "mutation" })
21868
+ }), EvictResultSchema, {
21869
+ kind: "mutation",
21870
+ auth: "admin"
21871
+ })
21778
21872
  }
21779
21873
  };
21780
21874
  method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
@@ -21836,26 +21930,50 @@ var ReadChunkInputSchema = object({
21836
21930
  length: number()
21837
21931
  });
21838
21932
  var EndDownloadInputSchema = object({ downloadId: string() });
21839
- method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
21933
+ method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
21840
21934
  location: StorageLocationSchema,
21841
21935
  relativePath: string()
21842
- }), string()), method(object({
21936
+ }), string(), { auth: "admin" }), method(object({
21843
21937
  location: StorageLocationSchema,
21844
21938
  relativePath: string(),
21845
21939
  data: _instanceof(Uint8Array)
21846
- }), _void(), { kind: "mutation" }), method(object({
21940
+ }), _void(), {
21941
+ kind: "mutation",
21942
+ auth: "admin"
21943
+ }), method(object({
21847
21944
  location: StorageLocationSchema,
21848
21945
  relativePath: string()
21849
- }), _instanceof(Uint8Array)), method(object({
21946
+ }), _instanceof(Uint8Array), { auth: "admin" }), method(object({
21850
21947
  location: StorageLocationSchema,
21851
21948
  relativePath: string()
21852
- }), boolean()), method(object({
21949
+ }), boolean(), { auth: "admin" }), method(object({
21853
21950
  location: StorageLocationSchema,
21854
21951
  prefix: string().optional()
21855
- }), array(string()).readonly()), method(object({
21952
+ }), array(string()).readonly(), { auth: "admin" }), method(object({
21856
21953
  location: StorageLocationSchema,
21857
21954
  relativePath: string()
21858
- }), _void(), { kind: "mutation" }), method(object({ location: StorageLocationSchema }), number().nullable()), method(BeginUploadInputSchema, BeginUploadResultSchema, { kind: "mutation" }), method(WriteChunkInputSchema, _void(), { kind: "mutation" }), method(FinalizeUploadInputSchema, _void(), { kind: "mutation" }), method(AbortUploadInputSchema, _void(), { kind: "mutation" }), method(BeginDownloadInputSchema, BeginDownloadResultSchema, { kind: "mutation" }), method(ReadChunkInputSchema, _instanceof(Uint8Array)), method(EndDownloadInputSchema, _void(), { kind: "mutation" });
21955
+ }), _void(), {
21956
+ kind: "mutation",
21957
+ auth: "admin"
21958
+ }), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
21959
+ kind: "mutation",
21960
+ auth: "admin"
21961
+ }), method(WriteChunkInputSchema, _void(), {
21962
+ kind: "mutation",
21963
+ auth: "admin"
21964
+ }), method(FinalizeUploadInputSchema, _void(), {
21965
+ kind: "mutation",
21966
+ auth: "admin"
21967
+ }), method(AbortUploadInputSchema, _void(), {
21968
+ kind: "mutation",
21969
+ auth: "admin"
21970
+ }), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
21971
+ kind: "mutation",
21972
+ auth: "admin"
21973
+ }), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
21974
+ kind: "mutation",
21975
+ auth: "admin"
21976
+ });
21859
21977
  /** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
21860
21978
  var ProfileSettingsSchemaBridge = unknown().nullable();
21861
21979
  var ProfileSettingsBagSchema = record(string(), unknown());
@@ -22113,7 +22231,8 @@ method(object({
22113
22231
  access: "create"
22114
22232
  }), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
22115
22233
  kind: "mutation",
22116
- access: "view"
22234
+ access: "view",
22235
+ auth: "admin"
22117
22236
  }), method(object({
22118
22237
  /** Required — the user the assertion belongs to (verified). */
22119
22238
  userId: string(),
@@ -22121,10 +22240,12 @@ method(object({
22121
22240
  response: record(string(), unknown())
22122
22241
  }), object({ verified: boolean() }), {
22123
22242
  kind: "mutation",
22124
- access: "view"
22243
+ access: "view",
22244
+ auth: "admin"
22125
22245
  }), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
22126
22246
  kind: "mutation",
22127
- access: "view"
22247
+ access: "view",
22248
+ auth: "admin"
22128
22249
  }), method(object({
22129
22250
  /** AuthenticationResponseJSON from the browser. */
22130
22251
  response: record(string(), unknown()) }), object({
@@ -22132,7 +22253,8 @@ response: record(string(), unknown()) }), object({
22132
22253
  userId: string().nullable()
22133
22254
  }), {
22134
22255
  kind: "mutation",
22135
- access: "view"
22256
+ access: "view",
22257
+ auth: "admin"
22136
22258
  }), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
22137
22259
  userId: string(),
22138
22260
  credentialId: string()
@@ -22304,7 +22426,19 @@ var VectorStatsResultSchema = object({
22304
22426
  /** False when the backend ranks approximately. */
22305
22427
  exact: boolean()
22306
22428
  });
22307
- method(VectorDeclareIndexInputSchema, _void(), { kind: "mutation" }), method(VectorUpsertInputSchema, VectorUpsertResultSchema, { kind: "mutation" }), method(VectorQueryInputSchema, VectorQueryResultSchema), method(VectorGetInputSchema, VectorGetResultSchema), method(VectorDeleteInputSchema, VectorDeleteResultSchema, { kind: "mutation" }), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, { kind: "mutation" }), method(VectorStatsInputSchema, VectorStatsResultSchema);
22429
+ method(VectorDeclareIndexInputSchema, _void(), {
22430
+ kind: "mutation",
22431
+ auth: "admin"
22432
+ }), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
22433
+ kind: "mutation",
22434
+ auth: "admin"
22435
+ }), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
22436
+ kind: "mutation",
22437
+ auth: "admin"
22438
+ }), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
22439
+ kind: "mutation",
22440
+ auth: "admin"
22441
+ }), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
22308
22442
  var ClipSchema = object({
22309
22443
  /** Opaque, provider-namespaced id. The default provider encodes the time
22310
22444
  * window so `getClipPlayback` is self-contained (no event re-query). */
@@ -31960,6 +32094,12 @@ Object.freeze({
31960
32094
  addonId: null,
31961
32095
  access: "create"
31962
32096
  },
32097
+ "pipelineAnalytics.cancelRelocateMedia": {
32098
+ capName: "pipeline-analytics",
32099
+ capScope: "device",
32100
+ addonId: null,
32101
+ access: "create"
32102
+ },
31963
32103
  "pipelineAnalytics.cancelStorageMigrationMove": {
31964
32104
  capName: "pipeline-analytics",
31965
32105
  capScope: "device",
@@ -32134,6 +32274,12 @@ Object.freeze({
32134
32274
  addonId: null,
32135
32275
  access: "view"
32136
32276
  },
32277
+ "pipelineAnalytics.listRelocateMediaJobs": {
32278
+ capName: "pipeline-analytics",
32279
+ capScope: "device",
32280
+ addonId: null,
32281
+ access: "view"
32282
+ },
32137
32283
  "pipelineAnalytics.listRetrainAnnotations": {
32138
32284
  capName: "pipeline-analytics",
32139
32285
  capScope: "device",
@@ -32212,6 +32358,12 @@ Object.freeze({
32212
32358
  addonId: null,
32213
32359
  access: "create"
32214
32360
  },
32361
+ "pipelineAnalytics.relocateMedia": {
32362
+ capName: "pipeline-analytics",
32363
+ capScope: "device",
32364
+ addonId: null,
32365
+ access: "create"
32366
+ },
32215
32367
  "pipelineAnalytics.restageRetrainTrack": {
32216
32368
  capName: "pipeline-analytics",
32217
32369
  capScope: "device",