@camstack/addon-osd-manager 0.1.148 → 0.1.150

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 (18) hide show
  1. package/dist/{MotionZonesSettings-BE9WUdRt.mjs → MotionZonesSettings-BsoHRAwv.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-DS9QMvLQ.mjs → PrivacyMaskSettings-CzteSZYz.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-Dp9VUno1.mjs → SceneMonitorEditor-lNMMCYld.mjs} +3 -3
  4. package/dist/_stub.js +11 -11
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-BrVYU0wm.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-c-xC4wkm.mjs} +3 -3
  6. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B5zRUNv0.mjs +26 -0
  7. package/dist/{hostInit-5x_5PqnW.mjs → hostInit-Dt8cFobm.mjs} +2 -2
  8. package/dist/index.js +320 -44
  9. package/dist/index.mjs +320 -44
  10. package/dist/{player-overlays-BF0CGxFK.mjs → player-overlays-DXCWBCD_.mjs} +1 -1
  11. package/dist/remoteEntry.js +1 -1
  12. package/dist/{responsive-COf1R73i.mjs → responsive-CyswsC7o.mjs} +1 -1
  13. package/dist/{scene-monitor-copy-D_ksge64.mjs → scene-monitor-copy-BVg1hi48.mjs} +1 -1
  14. package/dist/{square-D6ZZGuyC.mjs → square-B7BGSM9i.mjs} +1 -1
  15. package/dist/{trash-2-B-TzfoNr.mjs → trash-2-CuhyORxB.mjs} +1 -1
  16. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-Cq_qaEBf.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-CbJBbGRZ.mjs} +1 -1
  17. package/package.json +1 -1
  18. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CCyGyV4m.mjs +0 -26
package/dist/index.js CHANGED
@@ -5373,7 +5373,7 @@ var ZodIssueCode = {
5373
5373
  var ZodFirstPartyTypeKind;
5374
5374
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5375
5375
  //#endregion
5376
- //#region ../types/dist/sleep-C-v96WpE.mjs
5376
+ //#region ../types/dist/sleep-gU6hqv4_.mjs
5377
5377
  /**
5378
5378
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5379
5379
  * window to float samples (D455).
@@ -7514,7 +7514,59 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
7514
7514
  return DeviceRole;
7515
7515
  }({});
7516
7516
  //#endregion
7517
- //#region ../types/dist/composition-BK-GTFYb.mjs
7517
+ //#region ../types/dist/composition-Dq42XWp0.mjs
7518
+ /**
7519
+ * The ffmpeg build every CamStack node downloads, per platform and arch.
7520
+ *
7521
+ * ## Why a download, on every node, including the container
7522
+ *
7523
+ * The version of ffmpeg used to be CODE: baked into the image, changeable only
7524
+ * by rebuilding and rolling it. Now it is DATA — this file states the release,
7525
+ * and a node that boots with a different one downloads it. Changing ffmpeg is a
7526
+ * framework bump, not an image rebuild.
7527
+ *
7528
+ * It also settles the licence question by removing it. FFmpeg's licence is
7529
+ * chosen at compile time: the core is LGPL 2.1+, `--enable-gpl` makes it GPL
7530
+ * (for x264/x265), `--enable-version3` makes that v3, and `--enable-nonfree`
7531
+ * makes the result undistributable. These are GPL v3 builds, and we do not
7532
+ * distribute them: the user's own node fetches the archive from the project
7533
+ * that publishes it, so we convey no GPL work and inherit none of the
7534
+ * obligations that come with conveying one. That is the whole reason the image
7535
+ * no longer installs ffmpeg at all — not a technical preference.
7536
+ *
7537
+ * ## Why jellyfin-ffmpeg
7538
+ *
7539
+ * One vendor covering linux-amd64, linux-arm64, darwin-arm64 and darwin-x64
7540
+ * from one release, with the widest hardware surface of anything maintained:
7541
+ * VAAPI, QSV, NVENC/NVDEC, AMF, Vulkan, OpenCL and DRM on amd64, plus Rockchip
7542
+ * MPP on arm64. It reaches the vendor libraries through dlopen trampolines,
7543
+ * so the binary is not linked against a driver stack it may not find.
7544
+ *
7545
+ * **What it still needs from the host, measured 2026-09-19.** On the Unraid
7546
+ * HOST, which has no libva, `-vaapi_device` aborts the process outright —
7547
+ * `implib-gen: libva-drm.so.2: failed to load library ... Assertion '0 &&
7548
+ * "Assertion in generated code"' failed`. Inside our container, which installs
7549
+ * libva plus the iHD driver, the same command encodes: verified end to end with
7550
+ * `testsrc → format=nv12,hwupload → h264_vaapi`. So the image drops ffmpeg and
7551
+ * KEEPS the Intel media stack; the drivers are the part a binary cannot bring.
7552
+ *
7553
+ * ## Why each artifact carries a checksum and a claim
7554
+ *
7555
+ * The download is now the only source, so `sha256` is verified before anything
7556
+ * is extracted — jellyfin publishes no checksums on its release assets, so
7557
+ * these are ours, taken at the version bump. And `expectedHwaccels` is what the
7558
+ * build is supposed to be able to do: a binary that probes short of its own
7559
+ * claim is a source that changed under us, which is precisely what went
7560
+ * unnoticed for months when a static build turned out to carry no VAAPI at all
7561
+ * (D536).
7562
+ */
7563
+ /** The pinned jellyfin-ffmpeg release. Changing this is the version change. */
7564
+ var FFMPEG_RELEASE = "8.1.2-5";
7565
+ var BASE = `https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v${FFMPEG_RELEASE}`;
7566
+ function portable(target) {
7567
+ return `${BASE}/jellyfin-ffmpeg_${FFMPEG_RELEASE}_portable_${target}-gpl.tar.xz`;
7568
+ }
7569
+ portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64");
7518
7570
  /**
7519
7571
  * LA tabella "quale booleano di questo tipo di device conta come ALTO", e il
7520
7572
  * valutatore puro del suo FRONTE.
@@ -8988,6 +9040,82 @@ var ArchivedDebugNoteQueryInputSchema = object({
8988
9040
  /** Max rows returned, newest-first. */
8989
9041
  limit: number().int().min(1).max(1e3).optional()
8990
9042
  });
9043
+ var TrackRelationKindSchema = _enum(["same-subject", "different-subjects"]);
9044
+ var TrackSideSchema = _enum(["before", "after"]);
9045
+ var TrackPurityValueSchema = _enum(["mixed", "not-a-subject"]);
9046
+ var TrackRelationSchema = object({
9047
+ id: string(),
9048
+ deviceId: number().int(),
9049
+ leftTrackId: string(),
9050
+ rightTrackId: string(),
9051
+ leftSide: TrackSideSchema.nullable(),
9052
+ rightSide: TrackSideSchema.nullable(),
9053
+ relation: TrackRelationKindSchema,
9054
+ presence: literal("continuous").nullable(),
9055
+ leftStartedAt: number().int().nullable(),
9056
+ rightStartedAt: number().int().nullable(),
9057
+ createdAt: number().int(),
9058
+ updatedAt: number().int(),
9059
+ author: string().nullable()
9060
+ });
9061
+ var TrackPuritySchema = object({
9062
+ id: string(),
9063
+ deviceId: number().int(),
9064
+ sourceTrackId: string(),
9065
+ purity: TrackPurityValueSchema,
9066
+ switchAtMs: number().int().nullable(),
9067
+ startedAt: number().int().nullable(),
9068
+ createdAt: number().int(),
9069
+ updatedAt: number().int(),
9070
+ author: string().nullable()
9071
+ });
9072
+ var SetTrackRelationInputSchema = object({
9073
+ deviceId: number().int(),
9074
+ trackId: string().min(1),
9075
+ otherTrackId: string().min(1),
9076
+ relation: TrackRelationKindSchema,
9077
+ presence: literal("continuous").optional(),
9078
+ trackSide: TrackSideSchema.optional(),
9079
+ otherSide: TrackSideSchema.optional()
9080
+ });
9081
+ var ClearTrackRelationInputSchema = object({
9082
+ deviceId: number().int(),
9083
+ trackId: string().min(1),
9084
+ otherTrackId: string().min(1)
9085
+ });
9086
+ var ClearTrackRelationResultSchema = object({ cleared: boolean() });
9087
+ var SetTrackPurityInputSchema = object({
9088
+ deviceId: number().int(),
9089
+ trackId: string().min(1),
9090
+ purity: _enum([
9091
+ "pure",
9092
+ "mixed",
9093
+ "not-a-subject"
9094
+ ]),
9095
+ switchAtMs: number().int().optional()
9096
+ });
9097
+ /** `null` when `pure` cleared the row. */
9098
+ var SetTrackPurityResultSchema = object({ purity: TrackPuritySchema.nullable() });
9099
+ var ListTrackRelationsInputSchema = object({
9100
+ deviceId: number().int(),
9101
+ trackId: string().optional(),
9102
+ since: number().int().optional(),
9103
+ until: number().int().optional(),
9104
+ limit: number().int().min(1).max(5e3).optional()
9105
+ });
9106
+ var ListTrackRelationsResultSchema = object({
9107
+ relations: array(TrackRelationSchema).readonly(),
9108
+ purities: array(TrackPuritySchema).readonly(),
9109
+ truncated: boolean()
9110
+ });
9111
+ _enum([
9112
+ "unknown-track",
9113
+ "cross-device",
9114
+ "self-relation",
9115
+ "contradiction",
9116
+ "switch-outside-track",
9117
+ "switch-needs-mixed"
9118
+ ]);
8991
9119
  /**
8992
9120
  * Ops-log — the durable, append-only operations audit shared by the
8993
9121
  * recordings and events management surfaces.
@@ -13851,6 +13979,70 @@ var CompositionBlockStateSchema = object({
13851
13979
  reason: string().optional(),
13852
13980
  fields: array(CompositionFieldStateSchema)
13853
13981
  });
13982
+ var NUMBER = {
13983
+ kind: "fixed",
13984
+ result: ["number"]
13985
+ };
13986
+ var BOOLEAN = {
13987
+ kind: "fixed",
13988
+ result: ["boolean"]
13989
+ };
13990
+ Object.freeze({
13991
+ min: NUMBER,
13992
+ max: NUMBER,
13993
+ abs: NUMBER,
13994
+ floor: NUMBER,
13995
+ ceil: NUMBER,
13996
+ sqrt: NUMBER,
13997
+ round: NUMBER,
13998
+ pow: NUMBER,
13999
+ clamp: NUMBER,
14000
+ avg: NUMBER,
14001
+ sum: NUMBER,
14002
+ age: NUMBER,
14003
+ convert: NUMBER,
14004
+ coalesce: { kind: "coalesce" },
14005
+ any: BOOLEAN,
14006
+ all: BOOLEAN,
14007
+ within: BOOLEAN,
14008
+ latest: {
14009
+ kind: "fixed",
14010
+ result: ["number", "null"]
14011
+ },
14012
+ number: {
14013
+ kind: "fixed",
14014
+ result: ["number", "null"]
14015
+ },
14016
+ rose: {
14017
+ kind: "fixed",
14018
+ result: ["number", "null"]
14019
+ },
14020
+ count: NUMBER
14021
+ });
14022
+ `${COMPOSED_DEVICE_STABLE_ID_PREFIX}`;
14023
+ /**
14024
+ * What a composition may BUILD on a device type (G2, D676): the caps a new
14025
+ * device of that type, or an existing one that lacks them, can be given. The
14026
+ * blockers are the validator's own refusal codes, and a spec compares this
14027
+ * listing with `planComposition` for every capability — the editor can never
14028
+ * offer a feature the save would refuse for the same reason.
14029
+ */
14030
+ var ComposableFieldSchema = object({
14031
+ path: string(),
14032
+ kind: CompositionFieldKindSchema,
14033
+ nullable: boolean(),
14034
+ required: boolean(),
14035
+ enumValues: array(string()).optional()
14036
+ });
14037
+ var ComposableCapabilitiesSchema = object({ caps: array(object({
14038
+ cap: string(),
14039
+ fields: array(ComposableFieldSchema),
14040
+ /** Present for an item-array cap (`consumables.items`). */
14041
+ itemArray: object({
14042
+ path: string(),
14043
+ keyField: string()
14044
+ }).optional()
14045
+ })) });
13854
14046
  /** Where a block runs. The operator chooses — a block driving a device on an
13855
14047
  * agent is the reason placement is not fixed to the hub. */
13856
14048
  var CoreBlockPlacementSchema = union([literal("hub"), string().min(1)]);
@@ -14081,6 +14273,14 @@ var coreBlocksCapability = {
14081
14273
  stableId: string().min(1)
14082
14274
  }), CompositionCustomizationReadSchema, { auth: "admin" }),
14083
14275
  /**
14276
+ * The capabilities a composition may BUILD on a device of `deviceType`
14277
+ * (a new device, or added to an existing one), with their fields — the
14278
+ * editor's feature list and the presets' availability (G2, D676). Built
14279
+ * from the validator's own blockers; a replace of a BOUND cap is not
14280
+ * listed here (the device's bindings say what it has).
14281
+ */
14282
+ listComposableCaps: method(object({ deviceType: _enum(DeviceType) }), ComposableCapabilitiesSchema, { auth: "admin" }),
14283
+ /**
14084
14284
  * Validate without saving — the same verdict the save reaches. A mutation
14085
14285
  * for its body size; it writes nothing, so its access is `view`.
14086
14286
  */
@@ -23421,7 +23621,7 @@ function cameraSensorRefKey(ref) {
23421
23621
  }
23422
23622
  /** CS-1 accepts exactly one mode; CS-2 (D673) widens it to confirm / replace. */
23423
23623
  var CameraSensorsModeSchema = _enum(["in-addition"]);
23424
- object({
23624
+ var CameraSensorsConfigSchema = object({
23425
23625
  mode: CameraSensorsModeSchema,
23426
23626
  sensors: array(CameraSensorRefSchema).min(1).max(8)
23427
23627
  }).superRefine((value, ctx) => {
@@ -24411,6 +24611,21 @@ var ObjectEventSchema = object({
24411
24611
  keyFrameMediaId: number().int().optional(),
24412
24612
  /** Populated by B5 (recording playback URL for this event). */
24413
24613
  mediaUrl: string().optional(),
24614
+ /**
24615
+ * When the change this row records HAPPENED, epoch ms, when that is earlier
24616
+ * than {@link timestamp} and the producer could date it (D684).
24617
+ *
24618
+ * Set on a package PICK-UP row only: its `timestamp` is when the departure
24619
+ * was CONCLUDED — five minutes of unseen observed time after the parcel went
24620
+ * — and a notification's footage has to be cut around the pick-up, not the
24621
+ * empty doormat after it (D682). Stored so every path that rebuilds a
24622
+ * notification subject from the row (the boot reconcile, a dry-run) anchors
24623
+ * on the same instant the live hook did.
24624
+ *
24625
+ * `timestamp` keeps its meaning. Absent on every other row and on every
24626
+ * pick-up written before D684 — UNKNOWN, never 0 and never `timestamp`.
24627
+ */
24628
+ observedAt: number().optional(),
24414
24629
  /** The parent track's key-event importance [0,1], propagated to every object
24415
24630
  * event of the track (so an event row can be sorted by importance without a
24416
24631
  * track join). Absent on legacy rows / before the track was scored. */
@@ -25568,6 +25783,25 @@ var pipelineAnalyticsCapability = {
25568
25783
  */
25569
25784
  listArchivedDebugNotes: method(ArchivedDebugNoteQueryInputSchema, array(ArchivedDebugNoteSchema).readonly(), { kind: "query" }),
25570
25785
  /**
25786
+ * Tracking-bench ground truth (D681): "this track and that one are the
25787
+ * same subject" / "different subjects". One row per unordered pair —
25788
+ * re-marking replaces it — and a mark that contradicts an existing chain
25789
+ * is REFUSED with the chain named. Writing a mark also sets `debug` on
25790
+ * both tracks. `protected`, matching `setTrackFlags`: marking is done from
25791
+ * the viewer's track detail by an authenticated non-admin session.
25792
+ */
25793
+ setTrackRelation: method(SetTrackRelationInputSchema, TrackRelationSchema, { kind: "mutation" }),
25794
+ /** Remove the mark between two tracks. */
25795
+ clearTrackRelation: method(ClearTrackRelationInputSchema, ClearTrackRelationResultSchema, { kind: "mutation" }),
25796
+ /**
25797
+ * A track that is not ONE subject: `mixed` (two subjects, optionally
25798
+ * switching at `switchAtMs`) or `not-a-subject`. `pure` clears the mark
25799
+ * and answers `{ purity: null }` (D681).
25800
+ */
25801
+ setTrackPurity: method(SetTrackPurityInputSchema, SetTrackPurityResultSchema, { kind: "mutation" }),
25802
+ /** A camera's marks, optionally one track's, windowed by track start. */
25803
+ listTrackRelations: method(ListTrackRelationsInputSchema, ListTrackRelationsResultSchema, { kind: "query" }),
25804
+ /**
25571
25805
  * Birth decisions — one row per resolved confirmation-gate verdict (D409).
25572
25806
  *
25573
25807
  * The READ half of a measurement, and only that: it gates nothing and no
@@ -28554,6 +28788,16 @@ var NodeInferenceDevicesSchema = object({
28554
28788
  * Strictly the control plane: never sees a frame, never calls inference,
28555
28789
  * never drains queues. The runner does that work locally on each agent.
28556
28790
  */
28791
+ /**
28792
+ * The input of `setCameraSensors` (G5, D676): the ONE typed write path of a
28793
+ * camera's attached sensors (D672). `config: null` removes the attachment —
28794
+ * the camera reads `not-configured` again, never `unreadable`.
28795
+ */
28796
+ var SetCameraSensorsInputSchema = object({
28797
+ deviceId: number().int().nonnegative(),
28798
+ /** `null` removes the attachment: the camera goes back to `not-configured`. */
28799
+ config: CameraSensorsConfigSchema.nullable()
28800
+ });
28557
28801
  var pipelineOrchestratorCapability = {
28558
28802
  name: "pipeline-orchestrator",
28559
28803
  scope: "system",
@@ -29019,6 +29263,18 @@ var pipelineOrchestratorCapability = {
29019
29263
  */
29020
29264
  getCameraStatuses: method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()),
29021
29265
  /**
29266
+ * Attach sensors to a camera, or detach them with `config: null` (D672
29267
+ * configuration, G5/D676). Written to the orchestrator's per-device store
29268
+ * under the same key `applyDeviceSettingsPatch` writes, and announced as a
29269
+ * settings change so the camera-sensors bridge refreshes. Refused by name
29270
+ * — nothing written — for a device that cannot be read, does not exist,
29271
+ * is not a camera, or names itself as its own sensor.
29272
+ */
29273
+ setCameraSensors: method(SetCameraSensorsInputSchema, object({ success: literal(true) }), {
29274
+ kind: "mutation",
29275
+ auth: "admin"
29276
+ }),
29277
+ /**
29022
29278
  * Disk-wins fleet reconcile after a recordings wipe. Starts the walk in
29023
29279
  * the addon process and returns immediately with the job snapshot — the
29024
29280
  * work outlives the tRPC/UDS 60s timeout. Poll `getReconcileFromDiskStatus`.
@@ -44761,47 +45017,6 @@ var zoneRulesCapability = {
44761
45017
  */
44762
45018
  durability: "restored"
44763
45019
  };
44764
- var NUMBER = {
44765
- kind: "fixed",
44766
- result: ["number"]
44767
- };
44768
- var BOOLEAN = {
44769
- kind: "fixed",
44770
- result: ["boolean"]
44771
- };
44772
- Object.freeze({
44773
- min: NUMBER,
44774
- max: NUMBER,
44775
- abs: NUMBER,
44776
- floor: NUMBER,
44777
- ceil: NUMBER,
44778
- sqrt: NUMBER,
44779
- round: NUMBER,
44780
- pow: NUMBER,
44781
- clamp: NUMBER,
44782
- avg: NUMBER,
44783
- sum: NUMBER,
44784
- age: NUMBER,
44785
- convert: NUMBER,
44786
- coalesce: { kind: "coalesce" },
44787
- any: BOOLEAN,
44788
- all: BOOLEAN,
44789
- within: BOOLEAN,
44790
- latest: {
44791
- kind: "fixed",
44792
- result: ["number", "null"]
44793
- },
44794
- number: {
44795
- kind: "fixed",
44796
- result: ["number", "null"]
44797
- },
44798
- rose: {
44799
- kind: "fixed",
44800
- result: ["number", "null"]
44801
- },
44802
- count: NUMBER
44803
- });
44804
- `${COMPOSED_DEVICE_STABLE_ID_PREFIX}`;
44805
45020
  /**
44806
45021
  * Most specific first. Extending this list is how a new device kind becomes
44807
45022
  * gateable; nothing else needs to change.
@@ -47450,6 +47665,12 @@ Object.freeze({
47450
47665
  addonId: null,
47451
47666
  access: "view"
47452
47667
  },
47668
+ "coreBlocks.listComposableCaps": {
47669
+ capName: "core-blocks",
47670
+ capScope: "system",
47671
+ addonId: null,
47672
+ access: "view"
47673
+ },
47453
47674
  "coreBlocks.listCompositions": {
47454
47675
  capName: "core-blocks",
47455
47676
  capScope: "system",
@@ -50264,6 +50485,12 @@ Object.freeze({
50264
50485
  addonId: null,
50265
50486
  access: "create"
50266
50487
  },
50488
+ "pipelineAnalytics.clearTrackRelation": {
50489
+ capName: "pipeline-analytics",
50490
+ capScope: "device",
50491
+ addonId: null,
50492
+ access: "delete"
50493
+ },
50267
50494
  "pipelineAnalytics.clearTracks": {
50268
50495
  capName: "pipeline-analytics",
50269
50496
  capScope: "device",
@@ -50516,6 +50743,12 @@ Object.freeze({
50516
50743
  addonId: null,
50517
50744
  access: "view"
50518
50745
  },
50746
+ "pipelineAnalytics.listTrackRelations": {
50747
+ capName: "pipeline-analytics",
50748
+ capScope: "device",
50749
+ addonId: null,
50750
+ access: "view"
50751
+ },
50519
50752
  "pipelineAnalytics.listTracks": {
50520
50753
  capName: "pipeline-analytics",
50521
50754
  capScope: "device",
@@ -50630,6 +50863,18 @@ Object.freeze({
50630
50863
  addonId: null,
50631
50864
  access: "create"
50632
50865
  },
50866
+ "pipelineAnalytics.setTrackPurity": {
50867
+ capName: "pipeline-analytics",
50868
+ capScope: "device",
50869
+ addonId: null,
50870
+ access: "create"
50871
+ },
50872
+ "pipelineAnalytics.setTrackRelation": {
50873
+ capName: "pipeline-analytics",
50874
+ capScope: "device",
50875
+ addonId: null,
50876
+ access: "create"
50877
+ },
50633
50878
  "pipelineAnalytics.startStorageMigrationMove": {
50634
50879
  capName: "pipeline-analytics",
50635
50880
  capScope: "device",
@@ -51134,6 +51379,12 @@ Object.freeze({
51134
51379
  addonId: null,
51135
51380
  access: "create"
51136
51381
  },
51382
+ "pipelineOrchestrator.setCameraSensors": {
51383
+ capName: "pipeline-orchestrator",
51384
+ capScope: "system",
51385
+ addonId: null,
51386
+ access: "create"
51387
+ },
51137
51388
  "pipelineOrchestrator.setCameraStepOverride": {
51138
51389
  capName: "pipeline-orchestrator",
51139
51390
  capScope: "system",
@@ -54544,6 +54795,11 @@ Object.freeze({
54544
54795
  form: "single",
54545
54796
  optional: false
54546
54797
  }],
54798
+ "pipelineAnalytics.clearTrackRelation": [{
54799
+ name: "deviceId",
54800
+ form: "single",
54801
+ optional: false
54802
+ }],
54547
54803
  "pipelineAnalytics.clearTracks": [{
54548
54804
  name: "deviceId",
54549
54805
  form: "single",
@@ -54694,6 +54950,11 @@ Object.freeze({
54694
54950
  form: "single",
54695
54951
  optional: false
54696
54952
  }],
54953
+ "pipelineAnalytics.listTrackRelations": [{
54954
+ name: "deviceId",
54955
+ form: "single",
54956
+ optional: false
54957
+ }],
54697
54958
  "pipelineAnalytics.listTracks": [{
54698
54959
  name: "deviceId",
54699
54960
  form: "single",
@@ -54764,6 +55025,16 @@ Object.freeze({
54764
55025
  form: "single",
54765
55026
  optional: false
54766
55027
  }],
55028
+ "pipelineAnalytics.setTrackPurity": [{
55029
+ name: "deviceId",
55030
+ form: "single",
55031
+ optional: false
55032
+ }],
55033
+ "pipelineAnalytics.setTrackRelation": [{
55034
+ name: "deviceId",
55035
+ form: "single",
55036
+ optional: false
55037
+ }],
54767
55038
  "pipelineAnalytics.wipeAllAnalytics": [{
54768
55039
  name: "deviceId",
54769
55040
  form: "single",
@@ -54844,6 +55115,11 @@ Object.freeze({
54844
55115
  form: "single",
54845
55116
  optional: false
54846
55117
  }],
55118
+ "pipelineOrchestrator.setCameraSensors": [{
55119
+ name: "deviceId",
55120
+ form: "single",
55121
+ optional: false
55122
+ }],
54847
55123
  "pipelineOrchestrator.setCameraStepOverride": [{
54848
55124
  name: "deviceId",
54849
55125
  form: "single",