@camstack/addon-remote-storage 1.2.11 → 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-BwQMDLbh.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-Dm3P5Qop.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-BwQMDLbh.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-Dm3P5Qop.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",
16067
+ auth: "admin"
16068
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16069
+ kind: "mutation",
16070
+ auth: "admin"
16071
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16072
+ kind: "mutation",
15987
16073
  auth: "admin"
15988
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
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,6 +18403,28 @@ var TerminalProfileInfoSchema = object({
18304
18403
  label: string(),
18305
18404
  description: string().optional()
18306
18405
  });
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
+ });
18307
18428
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18308
18429
  seq: number().int().positive(),
18309
18430
  kind: literal("data"),
@@ -18320,7 +18441,29 @@ var TerminalOutputBatchSchema = object({
18320
18441
  snapshot: string().optional(),
18321
18442
  events: array(TerminalOutputEventSchema).readonly()
18322
18443
  });
18323
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
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({
18324
18467
  profileId: string(),
18325
18468
  cols: number().int().positive(),
18326
18469
  rows: number().int().positive()
@@ -18337,7 +18480,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18337
18480
  }), method(object({
18338
18481
  sessionId: string(),
18339
18482
  afterSeq: number().int().nonnegative(),
18340
- waitMs: number().int().min(0).max(2e3).default(0)
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()
18341
18490
  }), TerminalOutputBatchSchema, {
18342
18491
  kind: "mutation",
18343
18492
  auth: "admin",
@@ -20278,6 +20427,7 @@ var FaceInfoSchema = object({
20278
20427
  var FaceFilterEnum = _enum([
20279
20428
  "unassigned",
20280
20429
  "recognized",
20430
+ "identified",
20281
20431
  "all"
20282
20432
  ]);
20283
20433
  var MediaFileLiteSchema$1 = object({
@@ -20306,6 +20456,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20306
20456
  kind: "mutation",
20307
20457
  auth: "admin"
20308
20458
  }), method(object({
20459
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20460
+ deviceId: number().int().optional(),
20309
20461
  limit: number().int().positive().optional(),
20310
20462
  filter: FaceFilterEnum.optional(),
20311
20463
  /**
@@ -22071,6 +22223,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22071
22223
  capName: string().min(1).max(64),
22072
22224
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22073
22225
  valuePath: string().min(1).max(64)
22226
+ }),
22227
+ object({
22228
+ kind: literal("latest-recognition"),
22229
+ recognition: _enum(["person", "plate"])
22074
22230
  })
22075
22231
  ]);
22076
22232
  var OsdSlotBindingSchema = object({
@@ -22176,6 +22332,15 @@ method(object({ deviceId: number().int() }), object({
22176
22332
  }), object({ success: literal(true) }), {
22177
22333
  kind: "mutation",
22178
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"
22179
22344
  }), method(object({
22180
22345
  deviceId: number().int(),
22181
22346
  slotId: string().min(1),
@@ -23061,13 +23226,19 @@ method(object({
23061
23226
  }), {
23062
23227
  kind: "mutation",
23063
23228
  auth: "admin"
23064
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23229
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23065
23230
  kind: "mutation",
23066
23231
  auth: "admin"
23067
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23068
- kind: "query",
23232
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23233
+ kind: "mutation",
23069
23234
  auth: "admin"
23070
- }), 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() }), {
23071
23242
  kind: "mutation",
23072
23243
  auth: "admin"
23073
23244
  });
@@ -27189,6 +27360,12 @@ Object.freeze({
27189
27360
  addonId: null,
27190
27361
  access: "delete"
27191
27362
  },
27363
+ "osdManager.copyDeviceConfiguration": {
27364
+ capName: "osd-manager",
27365
+ capScope: "system",
27366
+ addonId: null,
27367
+ access: "create"
27368
+ },
27192
27369
  "osdManager.getConditionSupport": {
27193
27370
  capName: "osd-manager",
27194
27371
  capScope: "system",
@@ -27285,7 +27462,7 @@ Object.freeze({
27285
27462
  addonId: null,
27286
27463
  access: "create"
27287
27464
  },
27288
- "pipelineAnalytics.cancelMediaRelocate": {
27465
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27289
27466
  capName: "pipeline-analytics",
27290
27467
  capScope: "device",
27291
27468
  addonId: null,
@@ -27357,12 +27534,6 @@ Object.freeze({
27357
27534
  addonId: null,
27358
27535
  access: "view"
27359
27536
  },
27360
- "pipelineAnalytics.getMediaRelocateStatus": {
27361
- capName: "pipeline-analytics",
27362
- capScope: "device",
27363
- addonId: null,
27364
- access: "view"
27365
- },
27366
27537
  "pipelineAnalytics.getMotionEvents": {
27367
27538
  capName: "pipeline-analytics",
27368
27539
  capScope: "device",
@@ -27399,6 +27570,12 @@ Object.freeze({
27399
27570
  addonId: null,
27400
27571
  access: "view"
27401
27572
  },
27573
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
27574
+ capName: "pipeline-analytics",
27575
+ capScope: "device",
27576
+ addonId: null,
27577
+ access: "view"
27578
+ },
27402
27579
  "pipelineAnalytics.getTrack": {
27403
27580
  capName: "pipeline-analytics",
27404
27581
  capScope: "device",
@@ -27477,6 +27654,12 @@ Object.freeze({
27477
27654
  addonId: null,
27478
27655
  access: "view"
27479
27656
  },
27657
+ "pipelineAnalytics.pauseForStorageMigration": {
27658
+ capName: "pipeline-analytics",
27659
+ capScope: "device",
27660
+ addonId: null,
27661
+ access: "create"
27662
+ },
27480
27663
  "pipelineAnalytics.proposeRetrainAnnotations": {
27481
27664
  capName: "pipeline-analytics",
27482
27665
  capScope: "device",
@@ -27507,7 +27690,7 @@ Object.freeze({
27507
27690
  addonId: null,
27508
27691
  access: "create"
27509
27692
  },
27510
- "pipelineAnalytics.relocateMedia": {
27693
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
27511
27694
  capName: "pipeline-analytics",
27512
27695
  capScope: "device",
27513
27696
  addonId: null,
@@ -27519,6 +27702,12 @@ Object.freeze({
27519
27702
  addonId: null,
27520
27703
  access: "create"
27521
27704
  },
27705
+ "pipelineAnalytics.resumeForStorageMigration": {
27706
+ capName: "pipeline-analytics",
27707
+ capScope: "device",
27708
+ addonId: null,
27709
+ access: "create"
27710
+ },
27522
27711
  "pipelineAnalytics.saveRetrainAnnotations": {
27523
27712
  capName: "pipeline-analytics",
27524
27713
  capScope: "device",
@@ -27543,6 +27732,12 @@ Object.freeze({
27543
27732
  addonId: null,
27544
27733
  access: "create"
27545
27734
  },
27735
+ "pipelineAnalytics.startStorageMigrationMove": {
27736
+ capName: "pipeline-analytics",
27737
+ capScope: "device",
27738
+ addonId: null,
27739
+ access: "create"
27740
+ },
27546
27741
  "pipelineAnalytics.wipeAllAnalytics": {
27547
27742
  capName: "pipeline-analytics",
27548
27743
  capScope: "device",
@@ -27909,6 +28104,12 @@ Object.freeze({
27909
28104
  addonId: null,
27910
28105
  access: "view"
27911
28106
  },
28107
+ "pipelineOrchestrator.pauseForStorageMigration": {
28108
+ capName: "pipeline-orchestrator",
28109
+ capScope: "system",
28110
+ addonId: null,
28111
+ access: "create"
28112
+ },
27912
28113
  "pipelineOrchestrator.rebalance": {
27913
28114
  capName: "pipeline-orchestrator",
27914
28115
  capScope: "system",
@@ -27933,6 +28134,12 @@ Object.freeze({
27933
28134
  addonId: null,
27934
28135
  access: "view"
27935
28136
  },
28137
+ "pipelineOrchestrator.resumeForStorageMigration": {
28138
+ capName: "pipeline-orchestrator",
28139
+ capScope: "system",
28140
+ addonId: null,
28141
+ access: "create"
28142
+ },
27936
28143
  "pipelineOrchestrator.saveTemplate": {
27937
28144
  capName: "pipeline-orchestrator",
27938
28145
  capScope: "system",
@@ -28329,7 +28536,7 @@ Object.freeze({
28329
28536
  addonId: null,
28330
28537
  access: "create"
28331
28538
  },
28332
- "recording.cancelRelocate": {
28539
+ "recording.cancelStorageMigrationMove": {
28333
28540
  capName: "recording",
28334
28541
  capScope: "system",
28335
28542
  addonId: null,
@@ -28365,7 +28572,7 @@ Object.freeze({
28365
28572
  addonId: null,
28366
28573
  access: "view"
28367
28574
  },
28368
- "recording.getRelocateStatus": {
28575
+ "recording.getStorageMigrationMoveStatus": {
28369
28576
  capName: "recording",
28370
28577
  capScope: "system",
28371
28578
  addonId: null,
@@ -28389,6 +28596,12 @@ Object.freeze({
28389
28596
  addonId: null,
28390
28597
  access: "view"
28391
28598
  },
28599
+ "recording.pauseForStorageMigration": {
28600
+ capName: "recording",
28601
+ capScope: "system",
28602
+ addonId: null,
28603
+ access: "create"
28604
+ },
28392
28605
  "recording.pruneFootage": {
28393
28606
  capName: "recording",
28394
28607
  capScope: "system",
@@ -28407,7 +28620,7 @@ Object.freeze({
28407
28620
  addonId: null,
28408
28621
  access: "view"
28409
28622
  },
28410
- "recording.relocateFootage": {
28623
+ "recording.refreshStorageLocationsForMigration": {
28411
28624
  capName: "recording",
28412
28625
  capScope: "system",
28413
28626
  addonId: null,
@@ -28431,12 +28644,24 @@ Object.freeze({
28431
28644
  addonId: null,
28432
28645
  access: "create"
28433
28646
  },
28647
+ "recording.resumeForStorageMigration": {
28648
+ capName: "recording",
28649
+ capScope: "system",
28650
+ addonId: null,
28651
+ access: "create"
28652
+ },
28434
28653
  "recording.setDeviceConfig": {
28435
28654
  capName: "recording",
28436
28655
  capScope: "system",
28437
28656
  addonId: null,
28438
28657
  access: "create"
28439
28658
  },
28659
+ "recording.startStorageMigrationMove": {
28660
+ capName: "recording",
28661
+ capScope: "system",
28662
+ addonId: null,
28663
+ access: "create"
28664
+ },
28440
28665
  "recordingExport.cancelExport": {
28441
28666
  capName: "recordingExport",
28442
28667
  capScope: "system",
@@ -28827,6 +29052,30 @@ Object.freeze({
28827
29052
  addonId: null,
28828
29053
  access: "view"
28829
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
+ },
28830
29079
  "storageProvider.abortUpload": {
28831
29080
  capName: "storage-provider",
28832
29081
  capScope: "system",
@@ -29205,12 +29454,42 @@ Object.freeze({
29205
29454
  addonId: null,
29206
29455
  access: "create"
29207
29456
  },
29457
+ "terminalSession.adoptLegacyMonitor": {
29458
+ capName: "terminal-session",
29459
+ capScope: "system",
29460
+ addonId: null,
29461
+ access: "create"
29462
+ },
29208
29463
  "terminalSession.close": {
29209
29464
  capName: "terminal-session",
29210
29465
  capScope: "system",
29211
29466
  addonId: null,
29212
29467
  access: "create"
29213
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
+ },
29214
29493
  "terminalSession.listProfiles": {
29215
29494
  capName: "terminal-session",
29216
29495
  capScope: "system",
@@ -29241,6 +29520,12 @@ Object.freeze({
29241
29520
  addonId: null,
29242
29521
  access: "create"
29243
29522
  },
29523
+ "terminalSession.setInstanceEnabled": {
29524
+ capName: "terminal-session",
29525
+ capScope: "system",
29526
+ addonId: null,
29527
+ access: "create"
29528
+ },
29244
29529
  "terminalSession.writeInput": {
29245
29530
  capName: "terminal-session",
29246
29531
  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",
16044
+ auth: "admin"
16045
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16046
+ kind: "mutation",
16047
+ auth: "admin"
16048
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16049
+ kind: "mutation",
15964
16050
  auth: "admin"
15965
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
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,6 +18380,28 @@ var TerminalProfileInfoSchema = object({
18281
18380
  label: string(),
18282
18381
  description: string().optional()
18283
18382
  });
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
+ });
18284
18405
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18285
18406
  seq: number().int().positive(),
18286
18407
  kind: literal("data"),
@@ -18297,7 +18418,29 @@ var TerminalOutputBatchSchema = object({
18297
18418
  snapshot: string().optional(),
18298
18419
  events: array(TerminalOutputEventSchema).readonly()
18299
18420
  });
18300
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
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({
18301
18444
  profileId: string(),
18302
18445
  cols: number().int().positive(),
18303
18446
  rows: number().int().positive()
@@ -18314,7 +18457,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18314
18457
  }), method(object({
18315
18458
  sessionId: string(),
18316
18459
  afterSeq: number().int().nonnegative(),
18317
- waitMs: number().int().min(0).max(2e3).default(0)
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()
18318
18467
  }), TerminalOutputBatchSchema, {
18319
18468
  kind: "mutation",
18320
18469
  auth: "admin",
@@ -20255,6 +20404,7 @@ var FaceInfoSchema = object({
20255
20404
  var FaceFilterEnum = _enum([
20256
20405
  "unassigned",
20257
20406
  "recognized",
20407
+ "identified",
20258
20408
  "all"
20259
20409
  ]);
20260
20410
  var MediaFileLiteSchema$1 = object({
@@ -20283,6 +20433,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20283
20433
  kind: "mutation",
20284
20434
  auth: "admin"
20285
20435
  }), method(object({
20436
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20437
+ deviceId: number().int().optional(),
20286
20438
  limit: number().int().positive().optional(),
20287
20439
  filter: FaceFilterEnum.optional(),
20288
20440
  /**
@@ -22048,6 +22200,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22048
22200
  capName: string().min(1).max(64),
22049
22201
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22050
22202
  valuePath: string().min(1).max(64)
22203
+ }),
22204
+ object({
22205
+ kind: literal("latest-recognition"),
22206
+ recognition: _enum(["person", "plate"])
22051
22207
  })
22052
22208
  ]);
22053
22209
  var OsdSlotBindingSchema = object({
@@ -22153,6 +22309,15 @@ method(object({ deviceId: number().int() }), object({
22153
22309
  }), object({ success: literal(true) }), {
22154
22310
  kind: "mutation",
22155
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"
22156
22321
  }), method(object({
22157
22322
  deviceId: number().int(),
22158
22323
  slotId: string().min(1),
@@ -23038,13 +23203,19 @@ method(object({
23038
23203
  }), {
23039
23204
  kind: "mutation",
23040
23205
  auth: "admin"
23041
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23206
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23042
23207
  kind: "mutation",
23043
23208
  auth: "admin"
23044
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23045
- kind: "query",
23209
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23210
+ kind: "mutation",
23046
23211
  auth: "admin"
23047
- }), 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() }), {
23048
23219
  kind: "mutation",
23049
23220
  auth: "admin"
23050
23221
  });
@@ -27166,6 +27337,12 @@ Object.freeze({
27166
27337
  addonId: null,
27167
27338
  access: "delete"
27168
27339
  },
27340
+ "osdManager.copyDeviceConfiguration": {
27341
+ capName: "osd-manager",
27342
+ capScope: "system",
27343
+ addonId: null,
27344
+ access: "create"
27345
+ },
27169
27346
  "osdManager.getConditionSupport": {
27170
27347
  capName: "osd-manager",
27171
27348
  capScope: "system",
@@ -27262,7 +27439,7 @@ Object.freeze({
27262
27439
  addonId: null,
27263
27440
  access: "create"
27264
27441
  },
27265
- "pipelineAnalytics.cancelMediaRelocate": {
27442
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27266
27443
  capName: "pipeline-analytics",
27267
27444
  capScope: "device",
27268
27445
  addonId: null,
@@ -27334,12 +27511,6 @@ Object.freeze({
27334
27511
  addonId: null,
27335
27512
  access: "view"
27336
27513
  },
27337
- "pipelineAnalytics.getMediaRelocateStatus": {
27338
- capName: "pipeline-analytics",
27339
- capScope: "device",
27340
- addonId: null,
27341
- access: "view"
27342
- },
27343
27514
  "pipelineAnalytics.getMotionEvents": {
27344
27515
  capName: "pipeline-analytics",
27345
27516
  capScope: "device",
@@ -27376,6 +27547,12 @@ Object.freeze({
27376
27547
  addonId: null,
27377
27548
  access: "view"
27378
27549
  },
27550
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
27551
+ capName: "pipeline-analytics",
27552
+ capScope: "device",
27553
+ addonId: null,
27554
+ access: "view"
27555
+ },
27379
27556
  "pipelineAnalytics.getTrack": {
27380
27557
  capName: "pipeline-analytics",
27381
27558
  capScope: "device",
@@ -27454,6 +27631,12 @@ Object.freeze({
27454
27631
  addonId: null,
27455
27632
  access: "view"
27456
27633
  },
27634
+ "pipelineAnalytics.pauseForStorageMigration": {
27635
+ capName: "pipeline-analytics",
27636
+ capScope: "device",
27637
+ addonId: null,
27638
+ access: "create"
27639
+ },
27457
27640
  "pipelineAnalytics.proposeRetrainAnnotations": {
27458
27641
  capName: "pipeline-analytics",
27459
27642
  capScope: "device",
@@ -27484,7 +27667,7 @@ Object.freeze({
27484
27667
  addonId: null,
27485
27668
  access: "create"
27486
27669
  },
27487
- "pipelineAnalytics.relocateMedia": {
27670
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
27488
27671
  capName: "pipeline-analytics",
27489
27672
  capScope: "device",
27490
27673
  addonId: null,
@@ -27496,6 +27679,12 @@ Object.freeze({
27496
27679
  addonId: null,
27497
27680
  access: "create"
27498
27681
  },
27682
+ "pipelineAnalytics.resumeForStorageMigration": {
27683
+ capName: "pipeline-analytics",
27684
+ capScope: "device",
27685
+ addonId: null,
27686
+ access: "create"
27687
+ },
27499
27688
  "pipelineAnalytics.saveRetrainAnnotations": {
27500
27689
  capName: "pipeline-analytics",
27501
27690
  capScope: "device",
@@ -27520,6 +27709,12 @@ Object.freeze({
27520
27709
  addonId: null,
27521
27710
  access: "create"
27522
27711
  },
27712
+ "pipelineAnalytics.startStorageMigrationMove": {
27713
+ capName: "pipeline-analytics",
27714
+ capScope: "device",
27715
+ addonId: null,
27716
+ access: "create"
27717
+ },
27523
27718
  "pipelineAnalytics.wipeAllAnalytics": {
27524
27719
  capName: "pipeline-analytics",
27525
27720
  capScope: "device",
@@ -27886,6 +28081,12 @@ Object.freeze({
27886
28081
  addonId: null,
27887
28082
  access: "view"
27888
28083
  },
28084
+ "pipelineOrchestrator.pauseForStorageMigration": {
28085
+ capName: "pipeline-orchestrator",
28086
+ capScope: "system",
28087
+ addonId: null,
28088
+ access: "create"
28089
+ },
27889
28090
  "pipelineOrchestrator.rebalance": {
27890
28091
  capName: "pipeline-orchestrator",
27891
28092
  capScope: "system",
@@ -27910,6 +28111,12 @@ Object.freeze({
27910
28111
  addonId: null,
27911
28112
  access: "view"
27912
28113
  },
28114
+ "pipelineOrchestrator.resumeForStorageMigration": {
28115
+ capName: "pipeline-orchestrator",
28116
+ capScope: "system",
28117
+ addonId: null,
28118
+ access: "create"
28119
+ },
27913
28120
  "pipelineOrchestrator.saveTemplate": {
27914
28121
  capName: "pipeline-orchestrator",
27915
28122
  capScope: "system",
@@ -28306,7 +28513,7 @@ Object.freeze({
28306
28513
  addonId: null,
28307
28514
  access: "create"
28308
28515
  },
28309
- "recording.cancelRelocate": {
28516
+ "recording.cancelStorageMigrationMove": {
28310
28517
  capName: "recording",
28311
28518
  capScope: "system",
28312
28519
  addonId: null,
@@ -28342,7 +28549,7 @@ Object.freeze({
28342
28549
  addonId: null,
28343
28550
  access: "view"
28344
28551
  },
28345
- "recording.getRelocateStatus": {
28552
+ "recording.getStorageMigrationMoveStatus": {
28346
28553
  capName: "recording",
28347
28554
  capScope: "system",
28348
28555
  addonId: null,
@@ -28366,6 +28573,12 @@ Object.freeze({
28366
28573
  addonId: null,
28367
28574
  access: "view"
28368
28575
  },
28576
+ "recording.pauseForStorageMigration": {
28577
+ capName: "recording",
28578
+ capScope: "system",
28579
+ addonId: null,
28580
+ access: "create"
28581
+ },
28369
28582
  "recording.pruneFootage": {
28370
28583
  capName: "recording",
28371
28584
  capScope: "system",
@@ -28384,7 +28597,7 @@ Object.freeze({
28384
28597
  addonId: null,
28385
28598
  access: "view"
28386
28599
  },
28387
- "recording.relocateFootage": {
28600
+ "recording.refreshStorageLocationsForMigration": {
28388
28601
  capName: "recording",
28389
28602
  capScope: "system",
28390
28603
  addonId: null,
@@ -28408,12 +28621,24 @@ Object.freeze({
28408
28621
  addonId: null,
28409
28622
  access: "create"
28410
28623
  },
28624
+ "recording.resumeForStorageMigration": {
28625
+ capName: "recording",
28626
+ capScope: "system",
28627
+ addonId: null,
28628
+ access: "create"
28629
+ },
28411
28630
  "recording.setDeviceConfig": {
28412
28631
  capName: "recording",
28413
28632
  capScope: "system",
28414
28633
  addonId: null,
28415
28634
  access: "create"
28416
28635
  },
28636
+ "recording.startStorageMigrationMove": {
28637
+ capName: "recording",
28638
+ capScope: "system",
28639
+ addonId: null,
28640
+ access: "create"
28641
+ },
28417
28642
  "recordingExport.cancelExport": {
28418
28643
  capName: "recordingExport",
28419
28644
  capScope: "system",
@@ -28804,6 +29029,30 @@ Object.freeze({
28804
29029
  addonId: null,
28805
29030
  access: "view"
28806
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
+ },
28807
29056
  "storageProvider.abortUpload": {
28808
29057
  capName: "storage-provider",
28809
29058
  capScope: "system",
@@ -29182,12 +29431,42 @@ Object.freeze({
29182
29431
  addonId: null,
29183
29432
  access: "create"
29184
29433
  },
29434
+ "terminalSession.adoptLegacyMonitor": {
29435
+ capName: "terminal-session",
29436
+ capScope: "system",
29437
+ addonId: null,
29438
+ access: "create"
29439
+ },
29185
29440
  "terminalSession.close": {
29186
29441
  capName: "terminal-session",
29187
29442
  capScope: "system",
29188
29443
  addonId: null,
29189
29444
  access: "create"
29190
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
+ },
29191
29470
  "terminalSession.listProfiles": {
29192
29471
  capName: "terminal-session",
29193
29472
  capScope: "system",
@@ -29218,6 +29497,12 @@ Object.freeze({
29218
29497
  addonId: null,
29219
29498
  access: "create"
29220
29499
  },
29500
+ "terminalSession.setInstanceEnabled": {
29501
+ capName: "terminal-session",
29502
+ capScope: "system",
29503
+ addonId: null,
29504
+ access: "create"
29505
+ },
29221
29506
  "terminalSession.writeInput": {
29222
29507
  capName: "terminal-session",
29223
29508
  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-BwQMDLbh.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-Dm3P5Qop.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.11",
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",