@camstack/addon-remote-storage 1.2.10 → 1.2.12

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.
package/dist/s3.addon.js CHANGED
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_shared = require("./shared-EioeELYE.js");
5
+ const require_shared = require("./shared-1q5AVmdq.js");
6
6
  let node_stream = require("node:stream");
7
7
  let _aws_sdk_client_s3 = require("@aws-sdk/client-s3");
8
8
  let _aws_sdk_lib_storage = require("@aws-sdk/lib-storage");
package/dist/s3.addon.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { c as BaseAddon, i as rearmIdleAbort, n as getOptionalBasePath, o as scheduleIdleAbort, s as storageProviderCapability, t as createSessionId } from "./shared-CkUj94Yk.mjs";
1
+ import { c as BaseAddon, i as rearmIdleAbort, n as getOptionalBasePath, o as scheduleIdleAbort, s as storageProviderCapability, t as createSessionId } from "./shared-SriyOObK.mjs";
2
2
  import { PassThrough } from "node:stream";
3
3
  import { DeleteObjectCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectsV2Command, PutObjectCommand, S3Client } from "@aws-sdk/client-s3";
4
4
  import { Upload } from "@aws-sdk/lib-storage";
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_shared = require("./shared-EioeELYE.js");
5
+ const require_shared = require("./shared-1q5AVmdq.js");
6
6
  let ssh2 = require("ssh2");
7
7
  let node_path = require("node:path");
8
8
  node_path = require_shared.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-CkUj94Yk.mjs";
1
+ import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-SriyOObK.mjs";
2
2
  import { Client } from "ssh2";
3
3
  import * as path from "node:path";
4
4
  //#region src/providers/sftp/sftp-config-schema.ts
@@ -7559,12 +7559,11 @@ var RecordingConfigSchema = object({
7559
7559
  /**
7560
7560
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7561
7561
  *
7562
- * One shape shared by the recorder's `relocateFootage` (segments) and
7563
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7564
- * page renders both movers with one component. Jobs are in-RAM (a restart
7565
- * forgets them re-running is safe by construction: copy-if-absent, delete
7566
- * after verify) and each completed/failed run also lands one durable ops-log
7567
- * row on the owning addon's surface.
7562
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7563
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7564
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7565
+ * Each completed/failed run also lands one durable ops-log row on its owning
7566
+ * addon surface.
7568
7567
  */
7569
7568
  var RelocateJobStateSchema = _enum([
7570
7569
  "running",
@@ -7591,19 +7590,100 @@ var RelocateJobSchema = object({
7591
7590
  finishedAt: number().nullable(),
7592
7591
  error: string().nullable()
7593
7592
  });
7593
+ /** Profile-derived footage selection used only by the migration coordinator:
7594
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7595
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7594
7596
  var RelocateFootageInputSchema = object({
7595
- deviceId: number().optional(),
7596
7597
  fromLocationId: string(),
7597
7598
  toLocationId: string(),
7598
7599
  entities: array(_enum(["segments"])).optional(),
7600
+ /** Limits relocation to the logical profile class. Omit only for the
7601
+ * pre-orchestration compatibility path. */
7602
+ footageClass: RelocateFootageClassSchema.optional(),
7599
7603
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7600
7604
  * never allowed to starve live writers. */
7601
7605
  throttleMbps: number().min(1).max(1e3).optional()
7602
7606
  });
7603
- var RelocateMediaInputSchema = object({
7604
- deviceId: number().optional(),
7607
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7608
+ * from persistent recording settings: a migration never changes
7609
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7610
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7611
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7612
+ var StorageMigrationMediaMoveInputSchema = object({
7605
7613
  toLocationId: string(),
7606
7614
  throttleMbps: number().min(1).max(1e3).optional()
7615
+ }).extend({ leaseId: string().min(1) });
7616
+ /** The independently selectable logical storage classes. `recordings`
7617
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7618
+ * segments; `eventMedia` is post-analysis blobs. */
7619
+ var StorageMigrationClassSchema = _enum([
7620
+ "recordings",
7621
+ "recordingsLow",
7622
+ "eventMedia"
7623
+ ]);
7624
+ /** A destination is always an existing, fully-qualified location id. The
7625
+ * migration API intentionally never changes a source location's `basePath`:
7626
+ * callers create a new `<type>:<slug>` location, then select it here. */
7627
+ var StorageMigrationDestinationsSchema = object({
7628
+ recordings: string().min(1).optional(),
7629
+ recordingsLow: string().min(1).optional(),
7630
+ eventMedia: string().min(1).optional()
7631
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7632
+ /** Shared input for planning and starting an orchestrated storage migration. */
7633
+ var StorageMigrationInputSchema = object({
7634
+ destinations: StorageMigrationDestinationsSchema,
7635
+ throttleMbps: number().min(1).max(1e3).optional()
7636
+ });
7637
+ /** The durable coordinator state machine. The only phase that changes default
7638
+ * locations is `repointing`, after every selected mover has completed and been
7639
+ * verified. */
7640
+ var StorageMigrationPhaseSchema = _enum([
7641
+ "planning",
7642
+ "pausing",
7643
+ "moving",
7644
+ "verifying",
7645
+ "repointing",
7646
+ "refreshing",
7647
+ "resuming",
7648
+ "done",
7649
+ "failed",
7650
+ "cancelled"
7651
+ ]);
7652
+ var StorageMigrationParticipantSchema = _enum([
7653
+ "pipeline",
7654
+ "recorder",
7655
+ "analytics"
7656
+ ]);
7657
+ var StorageMigrationMoveSchema = object({
7658
+ storageClass: StorageMigrationClassSchema,
7659
+ fromLocationId: string(),
7660
+ toLocationId: string(),
7661
+ moverJobId: string().nullable(),
7662
+ state: RelocateJobStateSchema.nullable(),
7663
+ error: string().nullable()
7664
+ });
7665
+ var StorageMigrationJobSchema = object({
7666
+ jobId: string(),
7667
+ phase: StorageMigrationPhaseSchema,
7668
+ destinations: StorageMigrationDestinationsSchema,
7669
+ throttleMbps: number(),
7670
+ moves: array(StorageMigrationMoveSchema),
7671
+ pauseLeaseId: string().nullable(),
7672
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7673
+ repointed: boolean(),
7674
+ cancelRequested: boolean(),
7675
+ startedAt: number(),
7676
+ updatedAt: number(),
7677
+ finishedAt: number().nullable(),
7678
+ error: string().nullable()
7679
+ });
7680
+ var StorageMigrationPlanSchema = object({
7681
+ destinations: StorageMigrationDestinationsSchema,
7682
+ moves: array(object({
7683
+ storageClass: StorageMigrationClassSchema,
7684
+ fromLocationId: string(),
7685
+ toLocationId: string()
7686
+ }))
7607
7687
  });
7608
7688
  /**
7609
7689
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -15979,13 +16059,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
15979
16059
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
15980
16060
  kind: "mutation",
15981
16061
  auth: "admin"
15982
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16062
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
15983
16063
  kind: "mutation",
15984
16064
  auth: "admin"
15985
- }), method(object({}), array(RelocateJobSchema).readonly(), {
15986
- kind: "query",
16065
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16066
+ kind: "mutation",
15987
16067
  auth: "admin"
15988
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16068
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16069
+ kind: "mutation",
16070
+ auth: "admin"
16071
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16072
+ kind: "mutation",
16073
+ auth: "admin"
16074
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
15989
16075
  kind: "mutation",
15990
16076
  auth: "admin"
15991
16077
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17482,7 +17568,13 @@ var NodeInferenceDevicesSchema = object({
17482
17568
  reachable: boolean(),
17483
17569
  devices: array(NodeInferenceDeviceSchema).readonly()
17484
17570
  });
17485
- method(object({
17571
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17572
+ kind: "mutation",
17573
+ auth: "admin"
17574
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17575
+ kind: "mutation",
17576
+ auth: "admin"
17577
+ }), method(object({
17486
17578
  deviceId: number(),
17487
17579
  agentNodeId: string()
17488
17580
  }), object({ success: literal(true) }), {
@@ -18156,6 +18248,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18156
18248
  locationId: string(),
18157
18249
  targetBytes: number().int().positive()
18158
18250
  }), EvictResultSchema, { kind: "mutation" });
18251
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18252
+ kind: "mutation",
18253
+ auth: "admin"
18254
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18255
+ kind: "mutation",
18256
+ auth: "admin"
18257
+ });
18159
18258
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18160
18259
  providerId: string().min(1),
18161
18260
  displayName: string().min(1),
@@ -18304,7 +18403,67 @@ var TerminalProfileInfoSchema = object({
18304
18403
  label: string(),
18305
18404
  description: string().optional()
18306
18405
  });
18307
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18406
+ /**
18407
+ * A durable operator-created Terminal instance. Profiles are templates; only
18408
+ * an instance declares a camera.
18409
+ */
18410
+ var TerminalInstanceInfoSchema = object({
18411
+ instanceId: string(),
18412
+ cameraStableId: string(),
18413
+ nodeId: string(),
18414
+ profileId: string(),
18415
+ profileLabel: string(),
18416
+ name: string(),
18417
+ enabled: boolean()
18418
+ });
18419
+ var TerminalLegacyCameraSchema = object({
18420
+ stableId: string(),
18421
+ nodeId: string(),
18422
+ profileId: string(),
18423
+ profileLabel: string(),
18424
+ name: string(),
18425
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18426
+ adoptable: boolean()
18427
+ });
18428
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18429
+ seq: number().int().positive(),
18430
+ kind: literal("data"),
18431
+ data: string()
18432
+ }), object({
18433
+ seq: number().int().positive(),
18434
+ kind: literal("exit"),
18435
+ exitCode: number().int(),
18436
+ signal: number().int().optional()
18437
+ })]);
18438
+ var TerminalOutputBatchSchema = object({
18439
+ cursor: number().int().nonnegative(),
18440
+ reset: boolean(),
18441
+ snapshot: string().optional(),
18442
+ events: array(TerminalOutputEventSchema).readonly()
18443
+ });
18444
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18445
+ targetNodeId: string().min(1),
18446
+ profileId: string().min(1),
18447
+ name: string().trim().min(1).max(160).optional()
18448
+ }), TerminalInstanceInfoSchema, {
18449
+ kind: "mutation",
18450
+ auth: "admin"
18451
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18452
+ kind: "mutation",
18453
+ auth: "admin"
18454
+ }), method(object({
18455
+ instanceId: string().min(1),
18456
+ enabled: boolean()
18457
+ }), TerminalInstanceInfoSchema, {
18458
+ kind: "mutation",
18459
+ auth: "admin"
18460
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18461
+ stableId: string().min(1),
18462
+ name: string().trim().min(1).max(160).optional()
18463
+ }), TerminalInstanceInfoSchema, {
18464
+ kind: "mutation",
18465
+ auth: "admin"
18466
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18308
18467
  profileId: string(),
18309
18468
  cols: number().int().positive(),
18310
18469
  rows: number().int().positive()
@@ -18318,6 +18477,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18318
18477
  }), _void(), {
18319
18478
  kind: "mutation",
18320
18479
  auth: "admin"
18480
+ }), method(object({
18481
+ sessionId: string(),
18482
+ afterSeq: number().int().nonnegative(),
18483
+ waitMs: number().int().min(0).max(2e3).default(0),
18484
+ /**
18485
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18486
+ * browser's initial repaint remains immediate; the camera snapshot
18487
+ * relay uses it to avoid encoding a blank startup frame.
18488
+ */
18489
+ waitForOutput: boolean().optional()
18490
+ }), TerminalOutputBatchSchema, {
18491
+ kind: "mutation",
18492
+ auth: "admin",
18493
+ timeoutMs: 15e3
18494
+ }), method(object({
18495
+ sessionId: string(),
18496
+ data: string().max(64 * 1024)
18497
+ }), _void(), {
18498
+ kind: "mutation",
18499
+ auth: "admin"
18321
18500
  }), method(object({ sessionId: string() }), _void(), {
18322
18501
  kind: "mutation",
18323
18502
  auth: "admin"
@@ -20248,6 +20427,7 @@ var FaceInfoSchema = object({
20248
20427
  var FaceFilterEnum = _enum([
20249
20428
  "unassigned",
20250
20429
  "recognized",
20430
+ "identified",
20251
20431
  "all"
20252
20432
  ]);
20253
20433
  var MediaFileLiteSchema$1 = object({
@@ -20276,6 +20456,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20276
20456
  kind: "mutation",
20277
20457
  auth: "admin"
20278
20458
  }), method(object({
20459
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20460
+ deviceId: number().int().optional(),
20279
20461
  limit: number().int().positive().optional(),
20280
20462
  filter: FaceFilterEnum.optional(),
20281
20463
  /**
@@ -22041,6 +22223,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22041
22223
  capName: string().min(1).max(64),
22042
22224
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22043
22225
  valuePath: string().min(1).max(64)
22226
+ }),
22227
+ object({
22228
+ kind: literal("latest-recognition"),
22229
+ recognition: _enum(["person", "plate"])
22044
22230
  })
22045
22231
  ]);
22046
22232
  var OsdSlotBindingSchema = object({
@@ -22146,6 +22332,15 @@ method(object({ deviceId: number().int() }), object({
22146
22332
  }), object({ success: literal(true) }), {
22147
22333
  kind: "mutation",
22148
22334
  auth: "admin"
22335
+ }), method(object({
22336
+ sourceDeviceId: number().int(),
22337
+ targetDeviceId: number().int()
22338
+ }), object({
22339
+ copied: number().int().nonnegative(),
22340
+ skipped: number().int().nonnegative()
22341
+ }), {
22342
+ kind: "mutation",
22343
+ auth: "admin"
22149
22344
  }), method(object({
22150
22345
  deviceId: number().int(),
22151
22346
  slotId: string().min(1),
@@ -23031,13 +23226,19 @@ method(object({
23031
23226
  }), {
23032
23227
  kind: "mutation",
23033
23228
  auth: "admin"
23034
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23229
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23035
23230
  kind: "mutation",
23036
23231
  auth: "admin"
23037
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23038
- kind: "query",
23232
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23233
+ kind: "mutation",
23039
23234
  auth: "admin"
23040
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23235
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
23236
+ kind: "mutation",
23237
+ auth: "admin"
23238
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
23239
+ kind: "mutation",
23240
+ auth: "admin"
23241
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23041
23242
  kind: "mutation",
23042
23243
  auth: "admin"
23043
23244
  });
@@ -27159,6 +27360,12 @@ Object.freeze({
27159
27360
  addonId: null,
27160
27361
  access: "delete"
27161
27362
  },
27363
+ "osdManager.copyDeviceConfiguration": {
27364
+ capName: "osd-manager",
27365
+ capScope: "system",
27366
+ addonId: null,
27367
+ access: "create"
27368
+ },
27162
27369
  "osdManager.getConditionSupport": {
27163
27370
  capName: "osd-manager",
27164
27371
  capScope: "system",
@@ -27255,7 +27462,7 @@ Object.freeze({
27255
27462
  addonId: null,
27256
27463
  access: "create"
27257
27464
  },
27258
- "pipelineAnalytics.cancelMediaRelocate": {
27465
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27259
27466
  capName: "pipeline-analytics",
27260
27467
  capScope: "device",
27261
27468
  addonId: null,
@@ -27327,12 +27534,6 @@ Object.freeze({
27327
27534
  addonId: null,
27328
27535
  access: "view"
27329
27536
  },
27330
- "pipelineAnalytics.getMediaRelocateStatus": {
27331
- capName: "pipeline-analytics",
27332
- capScope: "device",
27333
- addonId: null,
27334
- access: "view"
27335
- },
27336
27537
  "pipelineAnalytics.getMotionEvents": {
27337
27538
  capName: "pipeline-analytics",
27338
27539
  capScope: "device",
@@ -27369,6 +27570,12 @@ Object.freeze({
27369
27570
  addonId: null,
27370
27571
  access: "view"
27371
27572
  },
27573
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
27574
+ capName: "pipeline-analytics",
27575
+ capScope: "device",
27576
+ addonId: null,
27577
+ access: "view"
27578
+ },
27372
27579
  "pipelineAnalytics.getTrack": {
27373
27580
  capName: "pipeline-analytics",
27374
27581
  capScope: "device",
@@ -27447,6 +27654,12 @@ Object.freeze({
27447
27654
  addonId: null,
27448
27655
  access: "view"
27449
27656
  },
27657
+ "pipelineAnalytics.pauseForStorageMigration": {
27658
+ capName: "pipeline-analytics",
27659
+ capScope: "device",
27660
+ addonId: null,
27661
+ access: "create"
27662
+ },
27450
27663
  "pipelineAnalytics.proposeRetrainAnnotations": {
27451
27664
  capName: "pipeline-analytics",
27452
27665
  capScope: "device",
@@ -27477,7 +27690,7 @@ Object.freeze({
27477
27690
  addonId: null,
27478
27691
  access: "create"
27479
27692
  },
27480
- "pipelineAnalytics.relocateMedia": {
27693
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
27481
27694
  capName: "pipeline-analytics",
27482
27695
  capScope: "device",
27483
27696
  addonId: null,
@@ -27489,6 +27702,12 @@ Object.freeze({
27489
27702
  addonId: null,
27490
27703
  access: "create"
27491
27704
  },
27705
+ "pipelineAnalytics.resumeForStorageMigration": {
27706
+ capName: "pipeline-analytics",
27707
+ capScope: "device",
27708
+ addonId: null,
27709
+ access: "create"
27710
+ },
27492
27711
  "pipelineAnalytics.saveRetrainAnnotations": {
27493
27712
  capName: "pipeline-analytics",
27494
27713
  capScope: "device",
@@ -27513,6 +27732,12 @@ Object.freeze({
27513
27732
  addonId: null,
27514
27733
  access: "create"
27515
27734
  },
27735
+ "pipelineAnalytics.startStorageMigrationMove": {
27736
+ capName: "pipeline-analytics",
27737
+ capScope: "device",
27738
+ addonId: null,
27739
+ access: "create"
27740
+ },
27516
27741
  "pipelineAnalytics.wipeAllAnalytics": {
27517
27742
  capName: "pipeline-analytics",
27518
27743
  capScope: "device",
@@ -27879,6 +28104,12 @@ Object.freeze({
27879
28104
  addonId: null,
27880
28105
  access: "view"
27881
28106
  },
28107
+ "pipelineOrchestrator.pauseForStorageMigration": {
28108
+ capName: "pipeline-orchestrator",
28109
+ capScope: "system",
28110
+ addonId: null,
28111
+ access: "create"
28112
+ },
27882
28113
  "pipelineOrchestrator.rebalance": {
27883
28114
  capName: "pipeline-orchestrator",
27884
28115
  capScope: "system",
@@ -27903,6 +28134,12 @@ Object.freeze({
27903
28134
  addonId: null,
27904
28135
  access: "view"
27905
28136
  },
28137
+ "pipelineOrchestrator.resumeForStorageMigration": {
28138
+ capName: "pipeline-orchestrator",
28139
+ capScope: "system",
28140
+ addonId: null,
28141
+ access: "create"
28142
+ },
27906
28143
  "pipelineOrchestrator.saveTemplate": {
27907
28144
  capName: "pipeline-orchestrator",
27908
28145
  capScope: "system",
@@ -28299,7 +28536,7 @@ Object.freeze({
28299
28536
  addonId: null,
28300
28537
  access: "create"
28301
28538
  },
28302
- "recording.cancelRelocate": {
28539
+ "recording.cancelStorageMigrationMove": {
28303
28540
  capName: "recording",
28304
28541
  capScope: "system",
28305
28542
  addonId: null,
@@ -28335,7 +28572,7 @@ Object.freeze({
28335
28572
  addonId: null,
28336
28573
  access: "view"
28337
28574
  },
28338
- "recording.getRelocateStatus": {
28575
+ "recording.getStorageMigrationMoveStatus": {
28339
28576
  capName: "recording",
28340
28577
  capScope: "system",
28341
28578
  addonId: null,
@@ -28359,6 +28596,12 @@ Object.freeze({
28359
28596
  addonId: null,
28360
28597
  access: "view"
28361
28598
  },
28599
+ "recording.pauseForStorageMigration": {
28600
+ capName: "recording",
28601
+ capScope: "system",
28602
+ addonId: null,
28603
+ access: "create"
28604
+ },
28362
28605
  "recording.pruneFootage": {
28363
28606
  capName: "recording",
28364
28607
  capScope: "system",
@@ -28377,7 +28620,7 @@ Object.freeze({
28377
28620
  addonId: null,
28378
28621
  access: "view"
28379
28622
  },
28380
- "recording.relocateFootage": {
28623
+ "recording.refreshStorageLocationsForMigration": {
28381
28624
  capName: "recording",
28382
28625
  capScope: "system",
28383
28626
  addonId: null,
@@ -28401,12 +28644,24 @@ Object.freeze({
28401
28644
  addonId: null,
28402
28645
  access: "create"
28403
28646
  },
28647
+ "recording.resumeForStorageMigration": {
28648
+ capName: "recording",
28649
+ capScope: "system",
28650
+ addonId: null,
28651
+ access: "create"
28652
+ },
28404
28653
  "recording.setDeviceConfig": {
28405
28654
  capName: "recording",
28406
28655
  capScope: "system",
28407
28656
  addonId: null,
28408
28657
  access: "create"
28409
28658
  },
28659
+ "recording.startStorageMigrationMove": {
28660
+ capName: "recording",
28661
+ capScope: "system",
28662
+ addonId: null,
28663
+ access: "create"
28664
+ },
28410
28665
  "recordingExport.cancelExport": {
28411
28666
  capName: "recordingExport",
28412
28667
  capScope: "system",
@@ -28797,6 +29052,30 @@ Object.freeze({
28797
29052
  addonId: null,
28798
29053
  access: "view"
28799
29054
  },
29055
+ "storageMigration.cancel": {
29056
+ capName: "storage-migration",
29057
+ capScope: "system",
29058
+ addonId: null,
29059
+ access: "create"
29060
+ },
29061
+ "storageMigration.plan": {
29062
+ capName: "storage-migration",
29063
+ capScope: "system",
29064
+ addonId: null,
29065
+ access: "view"
29066
+ },
29067
+ "storageMigration.start": {
29068
+ capName: "storage-migration",
29069
+ capScope: "system",
29070
+ addonId: null,
29071
+ access: "create"
29072
+ },
29073
+ "storageMigration.status": {
29074
+ capName: "storage-migration",
29075
+ capScope: "system",
29076
+ addonId: null,
29077
+ access: "view"
29078
+ },
28800
29079
  "storageProvider.abortUpload": {
28801
29080
  capName: "storage-provider",
28802
29081
  capScope: "system",
@@ -29175,12 +29454,42 @@ Object.freeze({
29175
29454
  addonId: null,
29176
29455
  access: "create"
29177
29456
  },
29457
+ "terminalSession.adoptLegacyMonitor": {
29458
+ capName: "terminal-session",
29459
+ capScope: "system",
29460
+ addonId: null,
29461
+ access: "create"
29462
+ },
29178
29463
  "terminalSession.close": {
29179
29464
  capName: "terminal-session",
29180
29465
  capScope: "system",
29181
29466
  addonId: null,
29182
29467
  access: "create"
29183
29468
  },
29469
+ "terminalSession.createInstance": {
29470
+ capName: "terminal-session",
29471
+ capScope: "system",
29472
+ addonId: null,
29473
+ access: "create"
29474
+ },
29475
+ "terminalSession.deleteInstance": {
29476
+ capName: "terminal-session",
29477
+ capScope: "system",
29478
+ addonId: null,
29479
+ access: "delete"
29480
+ },
29481
+ "terminalSession.listInstances": {
29482
+ capName: "terminal-session",
29483
+ capScope: "system",
29484
+ addonId: null,
29485
+ access: "view"
29486
+ },
29487
+ "terminalSession.listLegacyCameras": {
29488
+ capName: "terminal-session",
29489
+ capScope: "system",
29490
+ addonId: null,
29491
+ access: "view"
29492
+ },
29184
29493
  "terminalSession.listProfiles": {
29185
29494
  capName: "terminal-session",
29186
29495
  capScope: "system",
@@ -29199,12 +29508,30 @@ Object.freeze({
29199
29508
  addonId: null,
29200
29509
  access: "create"
29201
29510
  },
29511
+ "terminalSession.pullOutput": {
29512
+ capName: "terminal-session",
29513
+ capScope: "system",
29514
+ addonId: null,
29515
+ access: "create"
29516
+ },
29202
29517
  "terminalSession.resize": {
29203
29518
  capName: "terminal-session",
29204
29519
  capScope: "system",
29205
29520
  addonId: null,
29206
29521
  access: "create"
29207
29522
  },
29523
+ "terminalSession.setInstanceEnabled": {
29524
+ capName: "terminal-session",
29525
+ capScope: "system",
29526
+ addonId: null,
29527
+ access: "create"
29528
+ },
29529
+ "terminalSession.writeInput": {
29530
+ capName: "terminal-session",
29531
+ capScope: "system",
29532
+ addonId: null,
29533
+ access: "create"
29534
+ },
29208
29535
  "toast.onToast": {
29209
29536
  capName: "toast",
29210
29537
  capScope: "system",
@@ -7536,12 +7536,11 @@ var RecordingConfigSchema = object({
7536
7536
  /**
7537
7537
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7538
7538
  *
7539
- * One shape shared by the recorder's `relocateFootage` (segments) and
7540
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7541
- * page renders both movers with one component. Jobs are in-RAM (a restart
7542
- * forgets them re-running is safe by construction: copy-if-absent, delete
7543
- * after verify) and each completed/failed run also lands one durable ops-log
7544
- * row on the owning addon's surface.
7539
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7540
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7541
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7542
+ * Each completed/failed run also lands one durable ops-log row on its owning
7543
+ * addon surface.
7545
7544
  */
7546
7545
  var RelocateJobStateSchema = _enum([
7547
7546
  "running",
@@ -7568,19 +7567,100 @@ var RelocateJobSchema = object({
7568
7567
  finishedAt: number().nullable(),
7569
7568
  error: string().nullable()
7570
7569
  });
7570
+ /** Profile-derived footage selection used only by the migration coordinator:
7571
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7572
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7571
7573
  var RelocateFootageInputSchema = object({
7572
- deviceId: number().optional(),
7573
7574
  fromLocationId: string(),
7574
7575
  toLocationId: string(),
7575
7576
  entities: array(_enum(["segments"])).optional(),
7577
+ /** Limits relocation to the logical profile class. Omit only for the
7578
+ * pre-orchestration compatibility path. */
7579
+ footageClass: RelocateFootageClassSchema.optional(),
7576
7580
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7577
7581
  * never allowed to starve live writers. */
7578
7582
  throttleMbps: number().min(1).max(1e3).optional()
7579
7583
  });
7580
- var RelocateMediaInputSchema = object({
7581
- deviceId: number().optional(),
7584
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7585
+ * from persistent recording settings: a migration never changes
7586
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7587
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7588
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7589
+ var StorageMigrationMediaMoveInputSchema = object({
7582
7590
  toLocationId: string(),
7583
7591
  throttleMbps: number().min(1).max(1e3).optional()
7592
+ }).extend({ leaseId: string().min(1) });
7593
+ /** The independently selectable logical storage classes. `recordings`
7594
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7595
+ * segments; `eventMedia` is post-analysis blobs. */
7596
+ var StorageMigrationClassSchema = _enum([
7597
+ "recordings",
7598
+ "recordingsLow",
7599
+ "eventMedia"
7600
+ ]);
7601
+ /** A destination is always an existing, fully-qualified location id. The
7602
+ * migration API intentionally never changes a source location's `basePath`:
7603
+ * callers create a new `<type>:<slug>` location, then select it here. */
7604
+ var StorageMigrationDestinationsSchema = object({
7605
+ recordings: string().min(1).optional(),
7606
+ recordingsLow: string().min(1).optional(),
7607
+ eventMedia: string().min(1).optional()
7608
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7609
+ /** Shared input for planning and starting an orchestrated storage migration. */
7610
+ var StorageMigrationInputSchema = object({
7611
+ destinations: StorageMigrationDestinationsSchema,
7612
+ throttleMbps: number().min(1).max(1e3).optional()
7613
+ });
7614
+ /** The durable coordinator state machine. The only phase that changes default
7615
+ * locations is `repointing`, after every selected mover has completed and been
7616
+ * verified. */
7617
+ var StorageMigrationPhaseSchema = _enum([
7618
+ "planning",
7619
+ "pausing",
7620
+ "moving",
7621
+ "verifying",
7622
+ "repointing",
7623
+ "refreshing",
7624
+ "resuming",
7625
+ "done",
7626
+ "failed",
7627
+ "cancelled"
7628
+ ]);
7629
+ var StorageMigrationParticipantSchema = _enum([
7630
+ "pipeline",
7631
+ "recorder",
7632
+ "analytics"
7633
+ ]);
7634
+ var StorageMigrationMoveSchema = object({
7635
+ storageClass: StorageMigrationClassSchema,
7636
+ fromLocationId: string(),
7637
+ toLocationId: string(),
7638
+ moverJobId: string().nullable(),
7639
+ state: RelocateJobStateSchema.nullable(),
7640
+ error: string().nullable()
7641
+ });
7642
+ var StorageMigrationJobSchema = object({
7643
+ jobId: string(),
7644
+ phase: StorageMigrationPhaseSchema,
7645
+ destinations: StorageMigrationDestinationsSchema,
7646
+ throttleMbps: number(),
7647
+ moves: array(StorageMigrationMoveSchema),
7648
+ pauseLeaseId: string().nullable(),
7649
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7650
+ repointed: boolean(),
7651
+ cancelRequested: boolean(),
7652
+ startedAt: number(),
7653
+ updatedAt: number(),
7654
+ finishedAt: number().nullable(),
7655
+ error: string().nullable()
7656
+ });
7657
+ var StorageMigrationPlanSchema = object({
7658
+ destinations: StorageMigrationDestinationsSchema,
7659
+ moves: array(object({
7660
+ storageClass: StorageMigrationClassSchema,
7661
+ fromLocationId: string(),
7662
+ toLocationId: string()
7663
+ }))
7584
7664
  });
7585
7665
  /**
7586
7666
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -15956,13 +16036,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
15956
16036
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
15957
16037
  kind: "mutation",
15958
16038
  auth: "admin"
15959
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16039
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
15960
16040
  kind: "mutation",
15961
16041
  auth: "admin"
15962
- }), method(object({}), array(RelocateJobSchema).readonly(), {
15963
- kind: "query",
16042
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16043
+ kind: "mutation",
15964
16044
  auth: "admin"
15965
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16045
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16046
+ kind: "mutation",
16047
+ auth: "admin"
16048
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16049
+ kind: "mutation",
16050
+ auth: "admin"
16051
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
15966
16052
  kind: "mutation",
15967
16053
  auth: "admin"
15968
16054
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17459,7 +17545,13 @@ var NodeInferenceDevicesSchema = object({
17459
17545
  reachable: boolean(),
17460
17546
  devices: array(NodeInferenceDeviceSchema).readonly()
17461
17547
  });
17462
- method(object({
17548
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17549
+ kind: "mutation",
17550
+ auth: "admin"
17551
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17552
+ kind: "mutation",
17553
+ auth: "admin"
17554
+ }), method(object({
17463
17555
  deviceId: number(),
17464
17556
  agentNodeId: string()
17465
17557
  }), object({ success: literal(true) }), {
@@ -18133,6 +18225,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18133
18225
  locationId: string(),
18134
18226
  targetBytes: number().int().positive()
18135
18227
  }), EvictResultSchema, { kind: "mutation" });
18228
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18229
+ kind: "mutation",
18230
+ auth: "admin"
18231
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18232
+ kind: "mutation",
18233
+ auth: "admin"
18234
+ });
18136
18235
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18137
18236
  providerId: string().min(1),
18138
18237
  displayName: string().min(1),
@@ -18281,7 +18380,67 @@ var TerminalProfileInfoSchema = object({
18281
18380
  label: string(),
18282
18381
  description: string().optional()
18283
18382
  });
18284
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18383
+ /**
18384
+ * A durable operator-created Terminal instance. Profiles are templates; only
18385
+ * an instance declares a camera.
18386
+ */
18387
+ var TerminalInstanceInfoSchema = object({
18388
+ instanceId: string(),
18389
+ cameraStableId: string(),
18390
+ nodeId: string(),
18391
+ profileId: string(),
18392
+ profileLabel: string(),
18393
+ name: string(),
18394
+ enabled: boolean()
18395
+ });
18396
+ var TerminalLegacyCameraSchema = object({
18397
+ stableId: string(),
18398
+ nodeId: string(),
18399
+ profileId: string(),
18400
+ profileLabel: string(),
18401
+ name: string(),
18402
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18403
+ adoptable: boolean()
18404
+ });
18405
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18406
+ seq: number().int().positive(),
18407
+ kind: literal("data"),
18408
+ data: string()
18409
+ }), object({
18410
+ seq: number().int().positive(),
18411
+ kind: literal("exit"),
18412
+ exitCode: number().int(),
18413
+ signal: number().int().optional()
18414
+ })]);
18415
+ var TerminalOutputBatchSchema = object({
18416
+ cursor: number().int().nonnegative(),
18417
+ reset: boolean(),
18418
+ snapshot: string().optional(),
18419
+ events: array(TerminalOutputEventSchema).readonly()
18420
+ });
18421
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18422
+ targetNodeId: string().min(1),
18423
+ profileId: string().min(1),
18424
+ name: string().trim().min(1).max(160).optional()
18425
+ }), TerminalInstanceInfoSchema, {
18426
+ kind: "mutation",
18427
+ auth: "admin"
18428
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18429
+ kind: "mutation",
18430
+ auth: "admin"
18431
+ }), method(object({
18432
+ instanceId: string().min(1),
18433
+ enabled: boolean()
18434
+ }), TerminalInstanceInfoSchema, {
18435
+ kind: "mutation",
18436
+ auth: "admin"
18437
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18438
+ stableId: string().min(1),
18439
+ name: string().trim().min(1).max(160).optional()
18440
+ }), TerminalInstanceInfoSchema, {
18441
+ kind: "mutation",
18442
+ auth: "admin"
18443
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18285
18444
  profileId: string(),
18286
18445
  cols: number().int().positive(),
18287
18446
  rows: number().int().positive()
@@ -18295,6 +18454,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18295
18454
  }), _void(), {
18296
18455
  kind: "mutation",
18297
18456
  auth: "admin"
18457
+ }), method(object({
18458
+ sessionId: string(),
18459
+ afterSeq: number().int().nonnegative(),
18460
+ waitMs: number().int().min(0).max(2e3).default(0),
18461
+ /**
18462
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18463
+ * browser's initial repaint remains immediate; the camera snapshot
18464
+ * relay uses it to avoid encoding a blank startup frame.
18465
+ */
18466
+ waitForOutput: boolean().optional()
18467
+ }), TerminalOutputBatchSchema, {
18468
+ kind: "mutation",
18469
+ auth: "admin",
18470
+ timeoutMs: 15e3
18471
+ }), method(object({
18472
+ sessionId: string(),
18473
+ data: string().max(64 * 1024)
18474
+ }), _void(), {
18475
+ kind: "mutation",
18476
+ auth: "admin"
18298
18477
  }), method(object({ sessionId: string() }), _void(), {
18299
18478
  kind: "mutation",
18300
18479
  auth: "admin"
@@ -20225,6 +20404,7 @@ var FaceInfoSchema = object({
20225
20404
  var FaceFilterEnum = _enum([
20226
20405
  "unassigned",
20227
20406
  "recognized",
20407
+ "identified",
20228
20408
  "all"
20229
20409
  ]);
20230
20410
  var MediaFileLiteSchema$1 = object({
@@ -20253,6 +20433,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20253
20433
  kind: "mutation",
20254
20434
  auth: "admin"
20255
20435
  }), method(object({
20436
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20437
+ deviceId: number().int().optional(),
20256
20438
  limit: number().int().positive().optional(),
20257
20439
  filter: FaceFilterEnum.optional(),
20258
20440
  /**
@@ -22018,6 +22200,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22018
22200
  capName: string().min(1).max(64),
22019
22201
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22020
22202
  valuePath: string().min(1).max(64)
22203
+ }),
22204
+ object({
22205
+ kind: literal("latest-recognition"),
22206
+ recognition: _enum(["person", "plate"])
22021
22207
  })
22022
22208
  ]);
22023
22209
  var OsdSlotBindingSchema = object({
@@ -22123,6 +22309,15 @@ method(object({ deviceId: number().int() }), object({
22123
22309
  }), object({ success: literal(true) }), {
22124
22310
  kind: "mutation",
22125
22311
  auth: "admin"
22312
+ }), method(object({
22313
+ sourceDeviceId: number().int(),
22314
+ targetDeviceId: number().int()
22315
+ }), object({
22316
+ copied: number().int().nonnegative(),
22317
+ skipped: number().int().nonnegative()
22318
+ }), {
22319
+ kind: "mutation",
22320
+ auth: "admin"
22126
22321
  }), method(object({
22127
22322
  deviceId: number().int(),
22128
22323
  slotId: string().min(1),
@@ -23008,13 +23203,19 @@ method(object({
23008
23203
  }), {
23009
23204
  kind: "mutation",
23010
23205
  auth: "admin"
23011
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23206
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23012
23207
  kind: "mutation",
23013
23208
  auth: "admin"
23014
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23015
- kind: "query",
23209
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23210
+ kind: "mutation",
23016
23211
  auth: "admin"
23017
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23212
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
23213
+ kind: "mutation",
23214
+ auth: "admin"
23215
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
23216
+ kind: "mutation",
23217
+ auth: "admin"
23218
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23018
23219
  kind: "mutation",
23019
23220
  auth: "admin"
23020
23221
  });
@@ -27136,6 +27337,12 @@ Object.freeze({
27136
27337
  addonId: null,
27137
27338
  access: "delete"
27138
27339
  },
27340
+ "osdManager.copyDeviceConfiguration": {
27341
+ capName: "osd-manager",
27342
+ capScope: "system",
27343
+ addonId: null,
27344
+ access: "create"
27345
+ },
27139
27346
  "osdManager.getConditionSupport": {
27140
27347
  capName: "osd-manager",
27141
27348
  capScope: "system",
@@ -27232,7 +27439,7 @@ Object.freeze({
27232
27439
  addonId: null,
27233
27440
  access: "create"
27234
27441
  },
27235
- "pipelineAnalytics.cancelMediaRelocate": {
27442
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27236
27443
  capName: "pipeline-analytics",
27237
27444
  capScope: "device",
27238
27445
  addonId: null,
@@ -27304,12 +27511,6 @@ Object.freeze({
27304
27511
  addonId: null,
27305
27512
  access: "view"
27306
27513
  },
27307
- "pipelineAnalytics.getMediaRelocateStatus": {
27308
- capName: "pipeline-analytics",
27309
- capScope: "device",
27310
- addonId: null,
27311
- access: "view"
27312
- },
27313
27514
  "pipelineAnalytics.getMotionEvents": {
27314
27515
  capName: "pipeline-analytics",
27315
27516
  capScope: "device",
@@ -27346,6 +27547,12 @@ Object.freeze({
27346
27547
  addonId: null,
27347
27548
  access: "view"
27348
27549
  },
27550
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
27551
+ capName: "pipeline-analytics",
27552
+ capScope: "device",
27553
+ addonId: null,
27554
+ access: "view"
27555
+ },
27349
27556
  "pipelineAnalytics.getTrack": {
27350
27557
  capName: "pipeline-analytics",
27351
27558
  capScope: "device",
@@ -27424,6 +27631,12 @@ Object.freeze({
27424
27631
  addonId: null,
27425
27632
  access: "view"
27426
27633
  },
27634
+ "pipelineAnalytics.pauseForStorageMigration": {
27635
+ capName: "pipeline-analytics",
27636
+ capScope: "device",
27637
+ addonId: null,
27638
+ access: "create"
27639
+ },
27427
27640
  "pipelineAnalytics.proposeRetrainAnnotations": {
27428
27641
  capName: "pipeline-analytics",
27429
27642
  capScope: "device",
@@ -27454,7 +27667,7 @@ Object.freeze({
27454
27667
  addonId: null,
27455
27668
  access: "create"
27456
27669
  },
27457
- "pipelineAnalytics.relocateMedia": {
27670
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
27458
27671
  capName: "pipeline-analytics",
27459
27672
  capScope: "device",
27460
27673
  addonId: null,
@@ -27466,6 +27679,12 @@ Object.freeze({
27466
27679
  addonId: null,
27467
27680
  access: "create"
27468
27681
  },
27682
+ "pipelineAnalytics.resumeForStorageMigration": {
27683
+ capName: "pipeline-analytics",
27684
+ capScope: "device",
27685
+ addonId: null,
27686
+ access: "create"
27687
+ },
27469
27688
  "pipelineAnalytics.saveRetrainAnnotations": {
27470
27689
  capName: "pipeline-analytics",
27471
27690
  capScope: "device",
@@ -27490,6 +27709,12 @@ Object.freeze({
27490
27709
  addonId: null,
27491
27710
  access: "create"
27492
27711
  },
27712
+ "pipelineAnalytics.startStorageMigrationMove": {
27713
+ capName: "pipeline-analytics",
27714
+ capScope: "device",
27715
+ addonId: null,
27716
+ access: "create"
27717
+ },
27493
27718
  "pipelineAnalytics.wipeAllAnalytics": {
27494
27719
  capName: "pipeline-analytics",
27495
27720
  capScope: "device",
@@ -27856,6 +28081,12 @@ Object.freeze({
27856
28081
  addonId: null,
27857
28082
  access: "view"
27858
28083
  },
28084
+ "pipelineOrchestrator.pauseForStorageMigration": {
28085
+ capName: "pipeline-orchestrator",
28086
+ capScope: "system",
28087
+ addonId: null,
28088
+ access: "create"
28089
+ },
27859
28090
  "pipelineOrchestrator.rebalance": {
27860
28091
  capName: "pipeline-orchestrator",
27861
28092
  capScope: "system",
@@ -27880,6 +28111,12 @@ Object.freeze({
27880
28111
  addonId: null,
27881
28112
  access: "view"
27882
28113
  },
28114
+ "pipelineOrchestrator.resumeForStorageMigration": {
28115
+ capName: "pipeline-orchestrator",
28116
+ capScope: "system",
28117
+ addonId: null,
28118
+ access: "create"
28119
+ },
27883
28120
  "pipelineOrchestrator.saveTemplate": {
27884
28121
  capName: "pipeline-orchestrator",
27885
28122
  capScope: "system",
@@ -28276,7 +28513,7 @@ Object.freeze({
28276
28513
  addonId: null,
28277
28514
  access: "create"
28278
28515
  },
28279
- "recording.cancelRelocate": {
28516
+ "recording.cancelStorageMigrationMove": {
28280
28517
  capName: "recording",
28281
28518
  capScope: "system",
28282
28519
  addonId: null,
@@ -28312,7 +28549,7 @@ Object.freeze({
28312
28549
  addonId: null,
28313
28550
  access: "view"
28314
28551
  },
28315
- "recording.getRelocateStatus": {
28552
+ "recording.getStorageMigrationMoveStatus": {
28316
28553
  capName: "recording",
28317
28554
  capScope: "system",
28318
28555
  addonId: null,
@@ -28336,6 +28573,12 @@ Object.freeze({
28336
28573
  addonId: null,
28337
28574
  access: "view"
28338
28575
  },
28576
+ "recording.pauseForStorageMigration": {
28577
+ capName: "recording",
28578
+ capScope: "system",
28579
+ addonId: null,
28580
+ access: "create"
28581
+ },
28339
28582
  "recording.pruneFootage": {
28340
28583
  capName: "recording",
28341
28584
  capScope: "system",
@@ -28354,7 +28597,7 @@ Object.freeze({
28354
28597
  addonId: null,
28355
28598
  access: "view"
28356
28599
  },
28357
- "recording.relocateFootage": {
28600
+ "recording.refreshStorageLocationsForMigration": {
28358
28601
  capName: "recording",
28359
28602
  capScope: "system",
28360
28603
  addonId: null,
@@ -28378,12 +28621,24 @@ Object.freeze({
28378
28621
  addonId: null,
28379
28622
  access: "create"
28380
28623
  },
28624
+ "recording.resumeForStorageMigration": {
28625
+ capName: "recording",
28626
+ capScope: "system",
28627
+ addonId: null,
28628
+ access: "create"
28629
+ },
28381
28630
  "recording.setDeviceConfig": {
28382
28631
  capName: "recording",
28383
28632
  capScope: "system",
28384
28633
  addonId: null,
28385
28634
  access: "create"
28386
28635
  },
28636
+ "recording.startStorageMigrationMove": {
28637
+ capName: "recording",
28638
+ capScope: "system",
28639
+ addonId: null,
28640
+ access: "create"
28641
+ },
28387
28642
  "recordingExport.cancelExport": {
28388
28643
  capName: "recordingExport",
28389
28644
  capScope: "system",
@@ -28774,6 +29029,30 @@ Object.freeze({
28774
29029
  addonId: null,
28775
29030
  access: "view"
28776
29031
  },
29032
+ "storageMigration.cancel": {
29033
+ capName: "storage-migration",
29034
+ capScope: "system",
29035
+ addonId: null,
29036
+ access: "create"
29037
+ },
29038
+ "storageMigration.plan": {
29039
+ capName: "storage-migration",
29040
+ capScope: "system",
29041
+ addonId: null,
29042
+ access: "view"
29043
+ },
29044
+ "storageMigration.start": {
29045
+ capName: "storage-migration",
29046
+ capScope: "system",
29047
+ addonId: null,
29048
+ access: "create"
29049
+ },
29050
+ "storageMigration.status": {
29051
+ capName: "storage-migration",
29052
+ capScope: "system",
29053
+ addonId: null,
29054
+ access: "view"
29055
+ },
28777
29056
  "storageProvider.abortUpload": {
28778
29057
  capName: "storage-provider",
28779
29058
  capScope: "system",
@@ -29152,12 +29431,42 @@ Object.freeze({
29152
29431
  addonId: null,
29153
29432
  access: "create"
29154
29433
  },
29434
+ "terminalSession.adoptLegacyMonitor": {
29435
+ capName: "terminal-session",
29436
+ capScope: "system",
29437
+ addonId: null,
29438
+ access: "create"
29439
+ },
29155
29440
  "terminalSession.close": {
29156
29441
  capName: "terminal-session",
29157
29442
  capScope: "system",
29158
29443
  addonId: null,
29159
29444
  access: "create"
29160
29445
  },
29446
+ "terminalSession.createInstance": {
29447
+ capName: "terminal-session",
29448
+ capScope: "system",
29449
+ addonId: null,
29450
+ access: "create"
29451
+ },
29452
+ "terminalSession.deleteInstance": {
29453
+ capName: "terminal-session",
29454
+ capScope: "system",
29455
+ addonId: null,
29456
+ access: "delete"
29457
+ },
29458
+ "terminalSession.listInstances": {
29459
+ capName: "terminal-session",
29460
+ capScope: "system",
29461
+ addonId: null,
29462
+ access: "view"
29463
+ },
29464
+ "terminalSession.listLegacyCameras": {
29465
+ capName: "terminal-session",
29466
+ capScope: "system",
29467
+ addonId: null,
29468
+ access: "view"
29469
+ },
29161
29470
  "terminalSession.listProfiles": {
29162
29471
  capName: "terminal-session",
29163
29472
  capScope: "system",
@@ -29176,12 +29485,30 @@ Object.freeze({
29176
29485
  addonId: null,
29177
29486
  access: "create"
29178
29487
  },
29488
+ "terminalSession.pullOutput": {
29489
+ capName: "terminal-session",
29490
+ capScope: "system",
29491
+ addonId: null,
29492
+ access: "create"
29493
+ },
29179
29494
  "terminalSession.resize": {
29180
29495
  capName: "terminal-session",
29181
29496
  capScope: "system",
29182
29497
  addonId: null,
29183
29498
  access: "create"
29184
29499
  },
29500
+ "terminalSession.setInstanceEnabled": {
29501
+ capName: "terminal-session",
29502
+ capScope: "system",
29503
+ addonId: null,
29504
+ access: "create"
29505
+ },
29506
+ "terminalSession.writeInput": {
29507
+ capName: "terminal-session",
29508
+ capScope: "system",
29509
+ addonId: null,
29510
+ access: "create"
29511
+ },
29185
29512
  "toast.onToast": {
29186
29513
  capName: "toast",
29187
29514
  capScope: "system",
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_shared = require("./shared-EioeELYE.js");
5
+ const require_shared = require("./shared-1q5AVmdq.js");
6
6
  let node_stream = require("node:stream");
7
7
  let webdav = require("webdav");
8
8
  //#region src/providers/webdav/webdav-config-schema.ts
@@ -1,4 +1,4 @@
1
- import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-CkUj94Yk.mjs";
1
+ import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-SriyOObK.mjs";
2
2
  import { PassThrough } from "node:stream";
3
3
  import { AuthType, createClient } from "webdav";
4
4
  //#region src/providers/webdav/webdav-config-schema.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-remote-storage",
3
- "version": "1.2.10",
3
+ "version": "1.2.12",
4
4
  "description": "Remote storage providers (SFTP, S3, WebDAV) — unifies remote backends behind the storage-provider cap",
5
5
  "keywords": [
6
6
  "camstack",