@camstack/addon-pipeline 1.2.63 → 1.2.64

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 (27) 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 +2 -2
  4. package/dist/detection-pipeline/index.mjs +2 -2
  5. package/dist/{dist-DTvDedJV.mjs → dist-B9_C-QmC.mjs} +323 -38
  6. package/dist/{dist-BNXiD8pH.js → dist-DKrqeIfS.js} +323 -38
  7. package/dist/{event-loop-stall-monitor-RLis0vRd.mjs → event-loop-stall-monitor-BucTbe9v.mjs} +1 -1
  8. package/dist/{event-loop-stall-monitor-DmscRH8r.js → event-loop-stall-monitor-CnJ5JGA2.js} +1 -1
  9. package/dist/motion-wasm/index.js +1 -1
  10. package/dist/motion-wasm/index.mjs +1 -1
  11. package/dist/pipeline-runner/index.js +3 -3
  12. package/dist/pipeline-runner/index.mjs +3 -3
  13. package/dist/recorder/index.js +211 -41
  14. package/dist/recorder/index.mjs +211 -41
  15. package/dist/session-decode/decode-worker-child.js +1 -1
  16. package/dist/session-decode/decode-worker-child.mjs +1 -1
  17. package/dist/stream-broker/_stub.js +2 -2
  18. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-CFoXGKXX.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-DkDAcqBW.mjs} +3 -3
  19. package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Cp3o2Ve6.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-C2tu4c14.mjs} +1 -1
  20. package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Bw7zJGAQ.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CJAUKSrT.mjs} +1 -1
  21. package/dist/stream-broker/{hostInit-DqexQ1ED.mjs → hostInit-C-peB-6a.mjs} +3 -3
  22. package/dist/stream-broker/index.js +1 -1
  23. package/dist/stream-broker/index.mjs +1 -1
  24. package/dist/stream-broker/remoteEntry.js +1 -1
  25. package/dist/{worker-protocol-D8ZsVii1.js → worker-protocol-CDkbdSuM.js} +1 -1
  26. package/dist/{worker-protocol-C3pPkCGe.mjs → worker-protocol-CQHY2NeB.mjs} +1 -1
  27. package/package.json +1 -1
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-BNXiD8pH.js");
6
+ const require_dist = require("../dist-DKrqeIfS.js");
7
7
  const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
8
8
  const require_addon_utils = require("../addon-utils-CQs-AjTJ.js");
9
9
  let node_fs = require("node:fs");
@@ -1,5 +1,5 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { T as audioAnalyzerCapability, dt as hydrateSchema, et as errMsg, m as HF_BASE_URL, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG, ot as BaseAddon, w as audioAnalysisCapability, z as mapAudioLabelToMacro } from "../dist-DTvDedJV.mjs";
2
+ import { T as audioAnalyzerCapability, dt as hydrateSchema, et as errMsg, m as HF_BASE_URL, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG, ot as BaseAddon, w as audioAnalysisCapability, z as mapAudioLabelToMacro } from "../dist-B9_C-QmC.mjs";
3
3
  import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
4
4
  import { i as downloadFile } from "../addon-utils-CZ2xo67g.mjs";
5
5
  import * as fs from "node:fs";
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-BNXiD8pH.js");
7
- const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-DmscRH8r.js");
6
+ const require_dist = require("../dist-DKrqeIfS.js");
7
+ const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-CnJ5JGA2.js");
8
8
  const require_lazy_sharp = require("../lazy-sharp-CcYuXtsa.js");
9
9
  const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
10
10
  const require_addon_utils = require("../addon-utils-CQs-AjTJ.js");
@@ -1,6 +1,6 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { At as union, Dt as object, I as enumerateInferenceDevices, L as evaluateZoneRules, N as detectionPipelineCapability, Q as supportedRuntimes$1, S as YAMNET_TO_MACRO, W as pipelineExecutorCapability, Y as runtimeDevices$1, dt as hydrateSchema, et as errMsg, gt as parseJsonUnknown, ht as nodePin, jt as EventCategory, k as defaultDeviceFor$1, kt as string, ot as BaseAddon, t as APPLE_SA_TO_MACRO, u as DEVICE_BACKEND_TO_FORMAT, ut as createEvent, xt as array, yt as sleep } from "../dist-DTvDedJV.mjs";
3
- import { a as getDefaultModelForFormat, c as getStepDefinition, i as ALL_STEPS, l as resolveModelForFormat, n as startEventLoopStallMonitor, o as getDefaultModelForFormatFromDef, r as ALL_PIPELINE_STEPS, s as getStep } from "../event-loop-stall-monitor-RLis0vRd.mjs";
2
+ import { At as union, Dt as object, I as enumerateInferenceDevices, L as evaluateZoneRules, N as detectionPipelineCapability, Q as supportedRuntimes$1, S as YAMNET_TO_MACRO, W as pipelineExecutorCapability, Y as runtimeDevices$1, dt as hydrateSchema, et as errMsg, gt as parseJsonUnknown, ht as nodePin, jt as EventCategory, k as defaultDeviceFor$1, kt as string, ot as BaseAddon, t as APPLE_SA_TO_MACRO, u as DEVICE_BACKEND_TO_FORMAT, ut as createEvent, xt as array, yt as sleep } from "../dist-B9_C-QmC.mjs";
3
+ import { a as getDefaultModelForFormat, c as getStepDefinition, i as ALL_STEPS, l as resolveModelForFormat, n as startEventLoopStallMonitor, o as getDefaultModelForFormatFromDef, r as ALL_PIPELINE_STEPS, s as getStep } from "../event-loop-stall-monitor-BucTbe9v.mjs";
4
4
  import { t as getSharp } from "../lazy-sharp-B-mb8uWx.mjs";
5
5
  import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
6
6
  import { a as ensureModel, o as isModelDownloaded, r as deleteModelFromDisk } from "../addon-utils-CZ2xo67g.mjs";
@@ -8555,12 +8555,11 @@ function deriveRecordingMode(config) {
8555
8555
  /**
8556
8556
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
8557
8557
  *
8558
- * One shape shared by the recorder's `relocateFootage` (segments) and
8559
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
8560
- * page renders both movers with one component. Jobs are in-RAM (a restart
8561
- * forgets them re-running is safe by construction: copy-if-absent, delete
8562
- * after verify) and each completed/failed run also lands one durable ops-log
8563
- * row on the owning addon's surface.
8558
+ * One shape shared by the recorder and pipeline-analytics internal movers.
8559
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
8560
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
8561
+ * Each completed/failed run also lands one durable ops-log row on its owning
8562
+ * addon surface.
8564
8563
  */
8565
8564
  var RelocateJobStateSchema = _enum([
8566
8565
  "running",
@@ -8587,19 +8586,100 @@ var RelocateJobSchema = object({
8587
8586
  finishedAt: number().nullable(),
8588
8587
  error: string().nullable()
8589
8588
  });
8589
+ /** Profile-derived footage selection used only by the migration coordinator:
8590
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
8591
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
8590
8592
  var RelocateFootageInputSchema = object({
8591
- deviceId: number().optional(),
8592
8593
  fromLocationId: string(),
8593
8594
  toLocationId: string(),
8594
8595
  entities: array(_enum(["segments"])).optional(),
8596
+ /** Limits relocation to the logical profile class. Omit only for the
8597
+ * pre-orchestration compatibility path. */
8598
+ footageClass: RelocateFootageClassSchema.optional(),
8595
8599
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
8596
8600
  * never allowed to starve live writers. */
8597
8601
  throttleMbps: number().min(1).max(1e3).optional()
8598
8602
  });
8599
- var RelocateMediaInputSchema = object({
8600
- deviceId: number().optional(),
8603
+ /** Internal, lease-scoped participant operation. It is intentionally separate
8604
+ * from persistent recording settings: a migration never changes
8605
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
8606
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
8607
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
8608
+ var StorageMigrationMediaMoveInputSchema = object({
8601
8609
  toLocationId: string(),
8602
8610
  throttleMbps: number().min(1).max(1e3).optional()
8611
+ }).extend({ leaseId: string().min(1) });
8612
+ /** The independently selectable logical storage classes. `recordings`
8613
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
8614
+ * segments; `eventMedia` is post-analysis blobs. */
8615
+ var StorageMigrationClassSchema = _enum([
8616
+ "recordings",
8617
+ "recordingsLow",
8618
+ "eventMedia"
8619
+ ]);
8620
+ /** A destination is always an existing, fully-qualified location id. The
8621
+ * migration API intentionally never changes a source location's `basePath`:
8622
+ * callers create a new `<type>:<slug>` location, then select it here. */
8623
+ var StorageMigrationDestinationsSchema = object({
8624
+ recordings: string().min(1).optional(),
8625
+ recordingsLow: string().min(1).optional(),
8626
+ eventMedia: string().min(1).optional()
8627
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
8628
+ /** Shared input for planning and starting an orchestrated storage migration. */
8629
+ var StorageMigrationInputSchema = object({
8630
+ destinations: StorageMigrationDestinationsSchema,
8631
+ throttleMbps: number().min(1).max(1e3).optional()
8632
+ });
8633
+ /** The durable coordinator state machine. The only phase that changes default
8634
+ * locations is `repointing`, after every selected mover has completed and been
8635
+ * verified. */
8636
+ var StorageMigrationPhaseSchema = _enum([
8637
+ "planning",
8638
+ "pausing",
8639
+ "moving",
8640
+ "verifying",
8641
+ "repointing",
8642
+ "refreshing",
8643
+ "resuming",
8644
+ "done",
8645
+ "failed",
8646
+ "cancelled"
8647
+ ]);
8648
+ var StorageMigrationParticipantSchema = _enum([
8649
+ "pipeline",
8650
+ "recorder",
8651
+ "analytics"
8652
+ ]);
8653
+ var StorageMigrationMoveSchema = object({
8654
+ storageClass: StorageMigrationClassSchema,
8655
+ fromLocationId: string(),
8656
+ toLocationId: string(),
8657
+ moverJobId: string().nullable(),
8658
+ state: RelocateJobStateSchema.nullable(),
8659
+ error: string().nullable()
8660
+ });
8661
+ var StorageMigrationJobSchema = object({
8662
+ jobId: string(),
8663
+ phase: StorageMigrationPhaseSchema,
8664
+ destinations: StorageMigrationDestinationsSchema,
8665
+ throttleMbps: number(),
8666
+ moves: array(StorageMigrationMoveSchema),
8667
+ pauseLeaseId: string().nullable(),
8668
+ pausedParticipants: array(StorageMigrationParticipantSchema),
8669
+ repointed: boolean(),
8670
+ cancelRequested: boolean(),
8671
+ startedAt: number(),
8672
+ updatedAt: number(),
8673
+ finishedAt: number().nullable(),
8674
+ error: string().nullable()
8675
+ });
8676
+ var StorageMigrationPlanSchema = object({
8677
+ destinations: StorageMigrationDestinationsSchema,
8678
+ moves: array(object({
8679
+ storageClass: StorageMigrationClassSchema,
8680
+ fromLocationId: string(),
8681
+ toLocationId: string()
8682
+ }))
8603
8683
  });
8604
8684
  /**
8605
8685
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -17761,13 +17841,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
17761
17841
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
17762
17842
  kind: "mutation",
17763
17843
  auth: "admin"
17764
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
17844
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17765
17845
  kind: "mutation",
17766
17846
  auth: "admin"
17767
- }), method(object({}), array(RelocateJobSchema).readonly(), {
17768
- kind: "query",
17847
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17848
+ kind: "mutation",
17849
+ auth: "admin"
17850
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
17851
+ kind: "mutation",
17852
+ auth: "admin"
17853
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
17854
+ kind: "mutation",
17769
17855
  auth: "admin"
17770
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
17856
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
17771
17857
  kind: "mutation",
17772
17858
  auth: "admin"
17773
17859
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -19558,7 +19644,13 @@ var NodeInferenceDevicesSchema = object({
19558
19644
  reachable: boolean(),
19559
19645
  devices: array(NodeInferenceDeviceSchema).readonly()
19560
19646
  });
19561
- method(object({
19647
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
19648
+ kind: "mutation",
19649
+ auth: "admin"
19650
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
19651
+ kind: "mutation",
19652
+ auth: "admin"
19653
+ }), method(object({
19562
19654
  deviceId: number(),
19563
19655
  agentNodeId: string()
19564
19656
  }), object({ success: literal(true) }), {
@@ -20247,6 +20339,13 @@ var storageEvictableCapability = {
20247
20339
  }), EvictResultSchema, { kind: "mutation" })
20248
20340
  }
20249
20341
  };
20342
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
20343
+ kind: "mutation",
20344
+ auth: "admin"
20345
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
20346
+ kind: "mutation",
20347
+ auth: "admin"
20348
+ });
20250
20349
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
20251
20350
  providerId: string().min(1),
20252
20351
  displayName: string().min(1),
@@ -20350,6 +20449,28 @@ var TerminalProfileInfoSchema = object({
20350
20449
  label: string(),
20351
20450
  description: string().optional()
20352
20451
  });
20452
+ /**
20453
+ * A durable operator-created Terminal instance. Profiles are templates; only
20454
+ * an instance declares a camera.
20455
+ */
20456
+ var TerminalInstanceInfoSchema = object({
20457
+ instanceId: string(),
20458
+ cameraStableId: string(),
20459
+ nodeId: string(),
20460
+ profileId: string(),
20461
+ profileLabel: string(),
20462
+ name: string(),
20463
+ enabled: boolean()
20464
+ });
20465
+ var TerminalLegacyCameraSchema = object({
20466
+ stableId: string(),
20467
+ nodeId: string(),
20468
+ profileId: string(),
20469
+ profileLabel: string(),
20470
+ name: string(),
20471
+ /** Only legacy monitor cameras can retain their historic stable identity. */
20472
+ adoptable: boolean()
20473
+ });
20353
20474
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
20354
20475
  seq: number().int().positive(),
20355
20476
  kind: literal("data"),
@@ -20366,7 +20487,29 @@ var TerminalOutputBatchSchema = object({
20366
20487
  snapshot: string().optional(),
20367
20488
  events: array(TerminalOutputEventSchema).readonly()
20368
20489
  });
20369
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
20490
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
20491
+ targetNodeId: string().min(1),
20492
+ profileId: string().min(1),
20493
+ name: string().trim().min(1).max(160).optional()
20494
+ }), TerminalInstanceInfoSchema, {
20495
+ kind: "mutation",
20496
+ auth: "admin"
20497
+ }), method(object({ instanceId: string().min(1) }), _void(), {
20498
+ kind: "mutation",
20499
+ auth: "admin"
20500
+ }), method(object({
20501
+ instanceId: string().min(1),
20502
+ enabled: boolean()
20503
+ }), TerminalInstanceInfoSchema, {
20504
+ kind: "mutation",
20505
+ auth: "admin"
20506
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
20507
+ stableId: string().min(1),
20508
+ name: string().trim().min(1).max(160).optional()
20509
+ }), TerminalInstanceInfoSchema, {
20510
+ kind: "mutation",
20511
+ auth: "admin"
20512
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
20370
20513
  profileId: string(),
20371
20514
  cols: number().int().positive(),
20372
20515
  rows: number().int().positive()
@@ -20383,7 +20526,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
20383
20526
  }), method(object({
20384
20527
  sessionId: string(),
20385
20528
  afterSeq: number().int().nonnegative(),
20386
- waitMs: number().int().min(0).max(2e3).default(0)
20529
+ waitMs: number().int().min(0).max(2e3).default(0),
20530
+ /**
20531
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
20532
+ * browser's initial repaint remains immediate; the camera snapshot
20533
+ * relay uses it to avoid encoding a blank startup frame.
20534
+ */
20535
+ waitForOutput: boolean().optional()
20387
20536
  }), TerminalOutputBatchSchema, {
20388
20537
  kind: "mutation",
20389
20538
  auth: "admin",
@@ -22404,6 +22553,7 @@ var FaceInfoSchema = object({
22404
22553
  var FaceFilterEnum = _enum([
22405
22554
  "unassigned",
22406
22555
  "recognized",
22556
+ "identified",
22407
22557
  "all"
22408
22558
  ]);
22409
22559
  var MediaFileLiteSchema$1 = object({
@@ -22432,6 +22582,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
22432
22582
  kind: "mutation",
22433
22583
  auth: "admin"
22434
22584
  }), method(object({
22585
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
22586
+ deviceId: number().int().optional(),
22435
22587
  limit: number().int().positive().optional(),
22436
22588
  filter: FaceFilterEnum.optional(),
22437
22589
  /**
@@ -24197,6 +24349,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
24197
24349
  capName: string().min(1).max(64),
24198
24350
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
24199
24351
  valuePath: string().min(1).max(64)
24352
+ }),
24353
+ object({
24354
+ kind: literal("latest-recognition"),
24355
+ recognition: _enum(["person", "plate"])
24200
24356
  })
24201
24357
  ]);
24202
24358
  var OsdSlotBindingSchema = object({
@@ -24302,6 +24458,15 @@ method(object({ deviceId: number().int() }), object({
24302
24458
  }), object({ success: literal(true) }), {
24303
24459
  kind: "mutation",
24304
24460
  auth: "admin"
24461
+ }), method(object({
24462
+ sourceDeviceId: number().int(),
24463
+ targetDeviceId: number().int()
24464
+ }), object({
24465
+ copied: number().int().nonnegative(),
24466
+ skipped: number().int().nonnegative()
24467
+ }), {
24468
+ kind: "mutation",
24469
+ auth: "admin"
24305
24470
  }), method(object({
24306
24471
  deviceId: number().int(),
24307
24472
  slotId: string().min(1),
@@ -25208,12 +25373,6 @@ var recordingCapability = {
25208
25373
  auth: "admin"
25209
25374
  }),
25210
25375
  /**
25211
- * Move footage (recorded segments) from one recordings location to
25212
- * another — the drain workflow's mover (entity-routing spec Phase 4).
25213
- * Throttled copy → size-verify → delete source → index refresh; resumable
25214
- * by construction (copy-if-absent). Single-flight: one job at a time.
25215
- */
25216
- /**
25217
25376
  * Render a short GIF from recorded footage around `aroundMs` (low profile,
25218
25377
  * palette-free ffmpeg gif). Synchronous — the window is a few seconds of
25219
25378
  * `low`, rendering in ~1-2s. Built for notification attachments: the
@@ -25265,16 +25424,28 @@ var recordingCapability = {
25265
25424
  kind: "mutation",
25266
25425
  auth: "admin"
25267
25426
  }),
25268
- relocateFootage: method(RelocateFootageInputSchema, object({ jobId: string() }), {
25427
+ /** Internal migration-participant lease. Blocks new recorder attaches and
25428
+ * waits for writers to exit while their watchers index final segments. */
25429
+ pauseForStorageMigration: method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
25269
25430
  kind: "mutation",
25270
25431
  auth: "admin"
25271
25432
  }),
25272
- /** Every known relocate job (in-RAM, newest-first). */
25273
- getRelocateStatus: method(object({}), array(RelocateJobSchema).readonly(), {
25274
- kind: "query",
25433
+ resumeForStorageMigration: method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
25434
+ kind: "mutation",
25435
+ auth: "admin"
25436
+ }),
25437
+ /** Re-resolve location roots after the coordinator changes defaults. */
25438
+ refreshStorageLocationsForMigration: method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
25439
+ kind: "mutation",
25275
25440
  auth: "admin"
25276
25441
  }),
25277
- cancelRelocate: method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25442
+ /** Internal mover, callable only by the storage-migration coordinator. */
25443
+ startStorageMigrationMove: method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
25444
+ kind: "mutation",
25445
+ auth: "admin"
25446
+ }),
25447
+ getStorageMigrationMoveStatus: method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }),
25448
+ cancelStorageMigrationMove: method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25278
25449
  kind: "mutation",
25279
25450
  auth: "admin"
25280
25451
  })
@@ -29416,6 +29587,12 @@ Object.freeze({
29416
29587
  addonId: null,
29417
29588
  access: "delete"
29418
29589
  },
29590
+ "osdManager.copyDeviceConfiguration": {
29591
+ capName: "osd-manager",
29592
+ capScope: "system",
29593
+ addonId: null,
29594
+ access: "create"
29595
+ },
29419
29596
  "osdManager.getConditionSupport": {
29420
29597
  capName: "osd-manager",
29421
29598
  capScope: "system",
@@ -29512,7 +29689,7 @@ Object.freeze({
29512
29689
  addonId: null,
29513
29690
  access: "create"
29514
29691
  },
29515
- "pipelineAnalytics.cancelMediaRelocate": {
29692
+ "pipelineAnalytics.cancelStorageMigrationMove": {
29516
29693
  capName: "pipeline-analytics",
29517
29694
  capScope: "device",
29518
29695
  addonId: null,
@@ -29584,12 +29761,6 @@ Object.freeze({
29584
29761
  addonId: null,
29585
29762
  access: "view"
29586
29763
  },
29587
- "pipelineAnalytics.getMediaRelocateStatus": {
29588
- capName: "pipeline-analytics",
29589
- capScope: "device",
29590
- addonId: null,
29591
- access: "view"
29592
- },
29593
29764
  "pipelineAnalytics.getMotionEvents": {
29594
29765
  capName: "pipeline-analytics",
29595
29766
  capScope: "device",
@@ -29626,6 +29797,12 @@ Object.freeze({
29626
29797
  addonId: null,
29627
29798
  access: "view"
29628
29799
  },
29800
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
29801
+ capName: "pipeline-analytics",
29802
+ capScope: "device",
29803
+ addonId: null,
29804
+ access: "view"
29805
+ },
29629
29806
  "pipelineAnalytics.getTrack": {
29630
29807
  capName: "pipeline-analytics",
29631
29808
  capScope: "device",
@@ -29704,6 +29881,12 @@ Object.freeze({
29704
29881
  addonId: null,
29705
29882
  access: "view"
29706
29883
  },
29884
+ "pipelineAnalytics.pauseForStorageMigration": {
29885
+ capName: "pipeline-analytics",
29886
+ capScope: "device",
29887
+ addonId: null,
29888
+ access: "create"
29889
+ },
29707
29890
  "pipelineAnalytics.proposeRetrainAnnotations": {
29708
29891
  capName: "pipeline-analytics",
29709
29892
  capScope: "device",
@@ -29734,7 +29917,7 @@ Object.freeze({
29734
29917
  addonId: null,
29735
29918
  access: "create"
29736
29919
  },
29737
- "pipelineAnalytics.relocateMedia": {
29920
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
29738
29921
  capName: "pipeline-analytics",
29739
29922
  capScope: "device",
29740
29923
  addonId: null,
@@ -29746,6 +29929,12 @@ Object.freeze({
29746
29929
  addonId: null,
29747
29930
  access: "create"
29748
29931
  },
29932
+ "pipelineAnalytics.resumeForStorageMigration": {
29933
+ capName: "pipeline-analytics",
29934
+ capScope: "device",
29935
+ addonId: null,
29936
+ access: "create"
29937
+ },
29749
29938
  "pipelineAnalytics.saveRetrainAnnotations": {
29750
29939
  capName: "pipeline-analytics",
29751
29940
  capScope: "device",
@@ -29770,6 +29959,12 @@ Object.freeze({
29770
29959
  addonId: null,
29771
29960
  access: "create"
29772
29961
  },
29962
+ "pipelineAnalytics.startStorageMigrationMove": {
29963
+ capName: "pipeline-analytics",
29964
+ capScope: "device",
29965
+ addonId: null,
29966
+ access: "create"
29967
+ },
29773
29968
  "pipelineAnalytics.wipeAllAnalytics": {
29774
29969
  capName: "pipeline-analytics",
29775
29970
  capScope: "device",
@@ -30136,6 +30331,12 @@ Object.freeze({
30136
30331
  addonId: null,
30137
30332
  access: "view"
30138
30333
  },
30334
+ "pipelineOrchestrator.pauseForStorageMigration": {
30335
+ capName: "pipeline-orchestrator",
30336
+ capScope: "system",
30337
+ addonId: null,
30338
+ access: "create"
30339
+ },
30139
30340
  "pipelineOrchestrator.rebalance": {
30140
30341
  capName: "pipeline-orchestrator",
30141
30342
  capScope: "system",
@@ -30160,6 +30361,12 @@ Object.freeze({
30160
30361
  addonId: null,
30161
30362
  access: "view"
30162
30363
  },
30364
+ "pipelineOrchestrator.resumeForStorageMigration": {
30365
+ capName: "pipeline-orchestrator",
30366
+ capScope: "system",
30367
+ addonId: null,
30368
+ access: "create"
30369
+ },
30163
30370
  "pipelineOrchestrator.saveTemplate": {
30164
30371
  capName: "pipeline-orchestrator",
30165
30372
  capScope: "system",
@@ -30556,7 +30763,7 @@ Object.freeze({
30556
30763
  addonId: null,
30557
30764
  access: "create"
30558
30765
  },
30559
- "recording.cancelRelocate": {
30766
+ "recording.cancelStorageMigrationMove": {
30560
30767
  capName: "recording",
30561
30768
  capScope: "system",
30562
30769
  addonId: null,
@@ -30592,7 +30799,7 @@ Object.freeze({
30592
30799
  addonId: null,
30593
30800
  access: "view"
30594
30801
  },
30595
- "recording.getRelocateStatus": {
30802
+ "recording.getStorageMigrationMoveStatus": {
30596
30803
  capName: "recording",
30597
30804
  capScope: "system",
30598
30805
  addonId: null,
@@ -30616,6 +30823,12 @@ Object.freeze({
30616
30823
  addonId: null,
30617
30824
  access: "view"
30618
30825
  },
30826
+ "recording.pauseForStorageMigration": {
30827
+ capName: "recording",
30828
+ capScope: "system",
30829
+ addonId: null,
30830
+ access: "create"
30831
+ },
30619
30832
  "recording.pruneFootage": {
30620
30833
  capName: "recording",
30621
30834
  capScope: "system",
@@ -30634,7 +30847,7 @@ Object.freeze({
30634
30847
  addonId: null,
30635
30848
  access: "view"
30636
30849
  },
30637
- "recording.relocateFootage": {
30850
+ "recording.refreshStorageLocationsForMigration": {
30638
30851
  capName: "recording",
30639
30852
  capScope: "system",
30640
30853
  addonId: null,
@@ -30658,12 +30871,24 @@ Object.freeze({
30658
30871
  addonId: null,
30659
30872
  access: "create"
30660
30873
  },
30874
+ "recording.resumeForStorageMigration": {
30875
+ capName: "recording",
30876
+ capScope: "system",
30877
+ addonId: null,
30878
+ access: "create"
30879
+ },
30661
30880
  "recording.setDeviceConfig": {
30662
30881
  capName: "recording",
30663
30882
  capScope: "system",
30664
30883
  addonId: null,
30665
30884
  access: "create"
30666
30885
  },
30886
+ "recording.startStorageMigrationMove": {
30887
+ capName: "recording",
30888
+ capScope: "system",
30889
+ addonId: null,
30890
+ access: "create"
30891
+ },
30667
30892
  "recordingExport.cancelExport": {
30668
30893
  capName: "recordingExport",
30669
30894
  capScope: "system",
@@ -31054,6 +31279,30 @@ Object.freeze({
31054
31279
  addonId: null,
31055
31280
  access: "view"
31056
31281
  },
31282
+ "storageMigration.cancel": {
31283
+ capName: "storage-migration",
31284
+ capScope: "system",
31285
+ addonId: null,
31286
+ access: "create"
31287
+ },
31288
+ "storageMigration.plan": {
31289
+ capName: "storage-migration",
31290
+ capScope: "system",
31291
+ addonId: null,
31292
+ access: "view"
31293
+ },
31294
+ "storageMigration.start": {
31295
+ capName: "storage-migration",
31296
+ capScope: "system",
31297
+ addonId: null,
31298
+ access: "create"
31299
+ },
31300
+ "storageMigration.status": {
31301
+ capName: "storage-migration",
31302
+ capScope: "system",
31303
+ addonId: null,
31304
+ access: "view"
31305
+ },
31057
31306
  "storageProvider.abortUpload": {
31058
31307
  capName: "storage-provider",
31059
31308
  capScope: "system",
@@ -31432,12 +31681,42 @@ Object.freeze({
31432
31681
  addonId: null,
31433
31682
  access: "create"
31434
31683
  },
31684
+ "terminalSession.adoptLegacyMonitor": {
31685
+ capName: "terminal-session",
31686
+ capScope: "system",
31687
+ addonId: null,
31688
+ access: "create"
31689
+ },
31435
31690
  "terminalSession.close": {
31436
31691
  capName: "terminal-session",
31437
31692
  capScope: "system",
31438
31693
  addonId: null,
31439
31694
  access: "create"
31440
31695
  },
31696
+ "terminalSession.createInstance": {
31697
+ capName: "terminal-session",
31698
+ capScope: "system",
31699
+ addonId: null,
31700
+ access: "create"
31701
+ },
31702
+ "terminalSession.deleteInstance": {
31703
+ capName: "terminal-session",
31704
+ capScope: "system",
31705
+ addonId: null,
31706
+ access: "delete"
31707
+ },
31708
+ "terminalSession.listInstances": {
31709
+ capName: "terminal-session",
31710
+ capScope: "system",
31711
+ addonId: null,
31712
+ access: "view"
31713
+ },
31714
+ "terminalSession.listLegacyCameras": {
31715
+ capName: "terminal-session",
31716
+ capScope: "system",
31717
+ addonId: null,
31718
+ access: "view"
31719
+ },
31441
31720
  "terminalSession.listProfiles": {
31442
31721
  capName: "terminal-session",
31443
31722
  capScope: "system",
@@ -31468,6 +31747,12 @@ Object.freeze({
31468
31747
  addonId: null,
31469
31748
  access: "create"
31470
31749
  },
31750
+ "terminalSession.setInstanceEnabled": {
31751
+ capName: "terminal-session",
31752
+ capScope: "system",
31753
+ addonId: null,
31754
+ access: "create"
31755
+ },
31471
31756
  "terminalSession.writeInput": {
31472
31757
  capName: "terminal-session",
31473
31758
  capScope: "system",