@camstack/addon-export-hap 1.2.18 → 1.2.20

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.
@@ -8207,12 +8207,11 @@ var RecordingConfigSchema = object({
8207
8207
  /**
8208
8208
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
8209
8209
  *
8210
- * One shape shared by the recorder's `relocateFootage` (segments) and
8211
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
8212
- * page renders both movers with one component. Jobs are in-RAM (a restart
8213
- * forgets them re-running is safe by construction: copy-if-absent, delete
8214
- * after verify) and each completed/failed run also lands one durable ops-log
8215
- * row on the owning addon's surface.
8210
+ * One shape shared by the recorder and pipeline-analytics internal movers.
8211
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
8212
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
8213
+ * Each completed/failed run also lands one durable ops-log row on its owning
8214
+ * addon surface.
8216
8215
  */
8217
8216
  var RelocateJobStateSchema = _enum([
8218
8217
  "running",
@@ -8239,19 +8238,100 @@ var RelocateJobSchema = object({
8239
8238
  finishedAt: number().nullable(),
8240
8239
  error: string().nullable()
8241
8240
  });
8241
+ /** Profile-derived footage selection used only by the migration coordinator:
8242
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
8243
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
8242
8244
  var RelocateFootageInputSchema = object({
8243
- deviceId: number().optional(),
8244
8245
  fromLocationId: string(),
8245
8246
  toLocationId: string(),
8246
8247
  entities: array(_enum(["segments"])).optional(),
8248
+ /** Limits relocation to the logical profile class. Omit only for the
8249
+ * pre-orchestration compatibility path. */
8250
+ footageClass: RelocateFootageClassSchema.optional(),
8247
8251
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
8248
8252
  * never allowed to starve live writers. */
8249
8253
  throttleMbps: number().min(1).max(1e3).optional()
8250
8254
  });
8251
- var RelocateMediaInputSchema = object({
8252
- deviceId: number().optional(),
8255
+ /** Internal, lease-scoped participant operation. It is intentionally separate
8256
+ * from persistent recording settings: a migration never changes
8257
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
8258
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
8259
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
8260
+ var StorageMigrationMediaMoveInputSchema = object({
8253
8261
  toLocationId: string(),
8254
8262
  throttleMbps: number().min(1).max(1e3).optional()
8263
+ }).extend({ leaseId: string().min(1) });
8264
+ /** The independently selectable logical storage classes. `recordings`
8265
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
8266
+ * segments; `eventMedia` is post-analysis blobs. */
8267
+ var StorageMigrationClassSchema = _enum([
8268
+ "recordings",
8269
+ "recordingsLow",
8270
+ "eventMedia"
8271
+ ]);
8272
+ /** A destination is always an existing, fully-qualified location id. The
8273
+ * migration API intentionally never changes a source location's `basePath`:
8274
+ * callers create a new `<type>:<slug>` location, then select it here. */
8275
+ var StorageMigrationDestinationsSchema = object({
8276
+ recordings: string().min(1).optional(),
8277
+ recordingsLow: string().min(1).optional(),
8278
+ eventMedia: string().min(1).optional()
8279
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
8280
+ /** Shared input for planning and starting an orchestrated storage migration. */
8281
+ var StorageMigrationInputSchema = object({
8282
+ destinations: StorageMigrationDestinationsSchema,
8283
+ throttleMbps: number().min(1).max(1e3).optional()
8284
+ });
8285
+ /** The durable coordinator state machine. The only phase that changes default
8286
+ * locations is `repointing`, after every selected mover has completed and been
8287
+ * verified. */
8288
+ var StorageMigrationPhaseSchema = _enum([
8289
+ "planning",
8290
+ "pausing",
8291
+ "moving",
8292
+ "verifying",
8293
+ "repointing",
8294
+ "refreshing",
8295
+ "resuming",
8296
+ "done",
8297
+ "failed",
8298
+ "cancelled"
8299
+ ]);
8300
+ var StorageMigrationParticipantSchema = _enum([
8301
+ "pipeline",
8302
+ "recorder",
8303
+ "analytics"
8304
+ ]);
8305
+ var StorageMigrationMoveSchema = object({
8306
+ storageClass: StorageMigrationClassSchema,
8307
+ fromLocationId: string(),
8308
+ toLocationId: string(),
8309
+ moverJobId: string().nullable(),
8310
+ state: RelocateJobStateSchema.nullable(),
8311
+ error: string().nullable()
8312
+ });
8313
+ var StorageMigrationJobSchema = object({
8314
+ jobId: string(),
8315
+ phase: StorageMigrationPhaseSchema,
8316
+ destinations: StorageMigrationDestinationsSchema,
8317
+ throttleMbps: number(),
8318
+ moves: array(StorageMigrationMoveSchema),
8319
+ pauseLeaseId: string().nullable(),
8320
+ pausedParticipants: array(StorageMigrationParticipantSchema),
8321
+ repointed: boolean(),
8322
+ cancelRequested: boolean(),
8323
+ startedAt: number(),
8324
+ updatedAt: number(),
8325
+ finishedAt: number().nullable(),
8326
+ error: string().nullable()
8327
+ });
8328
+ var StorageMigrationPlanSchema = object({
8329
+ destinations: StorageMigrationDestinationsSchema,
8330
+ moves: array(object({
8331
+ storageClass: StorageMigrationClassSchema,
8332
+ fromLocationId: string(),
8333
+ toLocationId: string()
8334
+ }))
8255
8335
  });
8256
8336
  /**
8257
8337
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16762,13 +16842,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16762
16842
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16763
16843
  kind: "mutation",
16764
16844
  auth: "admin"
16765
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16845
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16766
16846
  kind: "mutation",
16767
16847
  auth: "admin"
16768
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16769
- kind: "query",
16848
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16849
+ kind: "mutation",
16770
16850
  auth: "admin"
16771
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16851
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16852
+ kind: "mutation",
16853
+ auth: "admin"
16854
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16855
+ kind: "mutation",
16856
+ auth: "admin"
16857
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16772
16858
  kind: "mutation",
16773
16859
  auth: "admin"
16774
16860
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -18265,7 +18351,13 @@ var NodeInferenceDevicesSchema = object({
18265
18351
  reachable: boolean(),
18266
18352
  devices: array(NodeInferenceDeviceSchema).readonly()
18267
18353
  });
18268
- method(object({
18354
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
18355
+ kind: "mutation",
18356
+ auth: "admin"
18357
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
18358
+ kind: "mutation",
18359
+ auth: "admin"
18360
+ }), method(object({
18269
18361
  deviceId: number(),
18270
18362
  agentNodeId: string()
18271
18363
  }), object({ success: literal(true) }), {
@@ -18939,6 +19031,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18939
19031
  locationId: string(),
18940
19032
  targetBytes: number().int().positive()
18941
19033
  }), EvictResultSchema, { kind: "mutation" });
19034
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
19035
+ kind: "mutation",
19036
+ auth: "admin"
19037
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
19038
+ kind: "mutation",
19039
+ auth: "admin"
19040
+ });
18942
19041
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18943
19042
  providerId: string().min(1),
18944
19043
  displayName: string().min(1),
@@ -19042,7 +19141,67 @@ var TerminalProfileInfoSchema = object({
19042
19141
  label: string(),
19043
19142
  description: string().optional()
19044
19143
  });
19045
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
19144
+ /**
19145
+ * A durable operator-created Terminal instance. Profiles are templates; only
19146
+ * an instance declares a camera.
19147
+ */
19148
+ var TerminalInstanceInfoSchema = object({
19149
+ instanceId: string(),
19150
+ cameraStableId: string(),
19151
+ nodeId: string(),
19152
+ profileId: string(),
19153
+ profileLabel: string(),
19154
+ name: string(),
19155
+ enabled: boolean()
19156
+ });
19157
+ var TerminalLegacyCameraSchema = object({
19158
+ stableId: string(),
19159
+ nodeId: string(),
19160
+ profileId: string(),
19161
+ profileLabel: string(),
19162
+ name: string(),
19163
+ /** Only legacy monitor cameras can retain their historic stable identity. */
19164
+ adoptable: boolean()
19165
+ });
19166
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
19167
+ seq: number().int().positive(),
19168
+ kind: literal("data"),
19169
+ data: string()
19170
+ }), object({
19171
+ seq: number().int().positive(),
19172
+ kind: literal("exit"),
19173
+ exitCode: number().int(),
19174
+ signal: number().int().optional()
19175
+ })]);
19176
+ var TerminalOutputBatchSchema = object({
19177
+ cursor: number().int().nonnegative(),
19178
+ reset: boolean(),
19179
+ snapshot: string().optional(),
19180
+ events: array(TerminalOutputEventSchema).readonly()
19181
+ });
19182
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
19183
+ targetNodeId: string().min(1),
19184
+ profileId: string().min(1),
19185
+ name: string().trim().min(1).max(160).optional()
19186
+ }), TerminalInstanceInfoSchema, {
19187
+ kind: "mutation",
19188
+ auth: "admin"
19189
+ }), method(object({ instanceId: string().min(1) }), _void(), {
19190
+ kind: "mutation",
19191
+ auth: "admin"
19192
+ }), method(object({
19193
+ instanceId: string().min(1),
19194
+ enabled: boolean()
19195
+ }), TerminalInstanceInfoSchema, {
19196
+ kind: "mutation",
19197
+ auth: "admin"
19198
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
19199
+ stableId: string().min(1),
19200
+ name: string().trim().min(1).max(160).optional()
19201
+ }), TerminalInstanceInfoSchema, {
19202
+ kind: "mutation",
19203
+ auth: "admin"
19204
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
19046
19205
  profileId: string(),
19047
19206
  cols: number().int().positive(),
19048
19207
  rows: number().int().positive()
@@ -19056,6 +19215,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
19056
19215
  }), _void(), {
19057
19216
  kind: "mutation",
19058
19217
  auth: "admin"
19218
+ }), method(object({
19219
+ sessionId: string(),
19220
+ afterSeq: number().int().nonnegative(),
19221
+ waitMs: number().int().min(0).max(2e3).default(0),
19222
+ /**
19223
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
19224
+ * browser's initial repaint remains immediate; the camera snapshot
19225
+ * relay uses it to avoid encoding a blank startup frame.
19226
+ */
19227
+ waitForOutput: boolean().optional()
19228
+ }), TerminalOutputBatchSchema, {
19229
+ kind: "mutation",
19230
+ auth: "admin",
19231
+ timeoutMs: 15e3
19232
+ }), method(object({
19233
+ sessionId: string(),
19234
+ data: string().max(64 * 1024)
19235
+ }), _void(), {
19236
+ kind: "mutation",
19237
+ auth: "admin"
19059
19238
  }), method(object({ sessionId: string() }), _void(), {
19060
19239
  kind: "mutation",
19061
19240
  auth: "admin"
@@ -20986,6 +21165,7 @@ var FaceInfoSchema = object({
20986
21165
  var FaceFilterEnum = _enum([
20987
21166
  "unassigned",
20988
21167
  "recognized",
21168
+ "identified",
20989
21169
  "all"
20990
21170
  ]);
20991
21171
  var MediaFileLiteSchema$1 = object({
@@ -21014,6 +21194,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21014
21194
  kind: "mutation",
21015
21195
  auth: "admin"
21016
21196
  }), method(object({
21197
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21198
+ deviceId: number().int().optional(),
21017
21199
  limit: number().int().positive().optional(),
21018
21200
  filter: FaceFilterEnum.optional(),
21019
21201
  /**
@@ -22779,6 +22961,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22779
22961
  capName: string().min(1).max(64),
22780
22962
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22781
22963
  valuePath: string().min(1).max(64)
22964
+ }),
22965
+ object({
22966
+ kind: literal("latest-recognition"),
22967
+ recognition: _enum(["person", "plate"])
22782
22968
  })
22783
22969
  ]);
22784
22970
  var OsdSlotBindingSchema = object({
@@ -22884,6 +23070,15 @@ method(object({ deviceId: number().int() }), object({
22884
23070
  }), object({ success: literal(true) }), {
22885
23071
  kind: "mutation",
22886
23072
  auth: "admin"
23073
+ }), method(object({
23074
+ sourceDeviceId: number().int(),
23075
+ targetDeviceId: number().int()
23076
+ }), object({
23077
+ copied: number().int().nonnegative(),
23078
+ skipped: number().int().nonnegative()
23079
+ }), {
23080
+ kind: "mutation",
23081
+ auth: "admin"
22887
23082
  }), method(object({
22888
23083
  deviceId: number().int(),
22889
23084
  slotId: string().min(1),
@@ -23769,13 +23964,19 @@ method(object({
23769
23964
  }), {
23770
23965
  kind: "mutation",
23771
23966
  auth: "admin"
23772
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23967
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23773
23968
  kind: "mutation",
23774
23969
  auth: "admin"
23775
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23776
- kind: "query",
23970
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23971
+ kind: "mutation",
23777
23972
  auth: "admin"
23778
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23973
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
23974
+ kind: "mutation",
23975
+ auth: "admin"
23976
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
23977
+ kind: "mutation",
23978
+ auth: "admin"
23979
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23779
23980
  kind: "mutation",
23780
23981
  auth: "admin"
23781
23982
  });
@@ -27897,6 +28098,12 @@ Object.freeze({
27897
28098
  addonId: null,
27898
28099
  access: "delete"
27899
28100
  },
28101
+ "osdManager.copyDeviceConfiguration": {
28102
+ capName: "osd-manager",
28103
+ capScope: "system",
28104
+ addonId: null,
28105
+ access: "create"
28106
+ },
27900
28107
  "osdManager.getConditionSupport": {
27901
28108
  capName: "osd-manager",
27902
28109
  capScope: "system",
@@ -27993,7 +28200,7 @@ Object.freeze({
27993
28200
  addonId: null,
27994
28201
  access: "create"
27995
28202
  },
27996
- "pipelineAnalytics.cancelMediaRelocate": {
28203
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27997
28204
  capName: "pipeline-analytics",
27998
28205
  capScope: "device",
27999
28206
  addonId: null,
@@ -28065,12 +28272,6 @@ Object.freeze({
28065
28272
  addonId: null,
28066
28273
  access: "view"
28067
28274
  },
28068
- "pipelineAnalytics.getMediaRelocateStatus": {
28069
- capName: "pipeline-analytics",
28070
- capScope: "device",
28071
- addonId: null,
28072
- access: "view"
28073
- },
28074
28275
  "pipelineAnalytics.getMotionEvents": {
28075
28276
  capName: "pipeline-analytics",
28076
28277
  capScope: "device",
@@ -28107,6 +28308,12 @@ Object.freeze({
28107
28308
  addonId: null,
28108
28309
  access: "view"
28109
28310
  },
28311
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
28312
+ capName: "pipeline-analytics",
28313
+ capScope: "device",
28314
+ addonId: null,
28315
+ access: "view"
28316
+ },
28110
28317
  "pipelineAnalytics.getTrack": {
28111
28318
  capName: "pipeline-analytics",
28112
28319
  capScope: "device",
@@ -28185,6 +28392,12 @@ Object.freeze({
28185
28392
  addonId: null,
28186
28393
  access: "view"
28187
28394
  },
28395
+ "pipelineAnalytics.pauseForStorageMigration": {
28396
+ capName: "pipeline-analytics",
28397
+ capScope: "device",
28398
+ addonId: null,
28399
+ access: "create"
28400
+ },
28188
28401
  "pipelineAnalytics.proposeRetrainAnnotations": {
28189
28402
  capName: "pipeline-analytics",
28190
28403
  capScope: "device",
@@ -28215,7 +28428,7 @@ Object.freeze({
28215
28428
  addonId: null,
28216
28429
  access: "create"
28217
28430
  },
28218
- "pipelineAnalytics.relocateMedia": {
28431
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
28219
28432
  capName: "pipeline-analytics",
28220
28433
  capScope: "device",
28221
28434
  addonId: null,
@@ -28227,6 +28440,12 @@ Object.freeze({
28227
28440
  addonId: null,
28228
28441
  access: "create"
28229
28442
  },
28443
+ "pipelineAnalytics.resumeForStorageMigration": {
28444
+ capName: "pipeline-analytics",
28445
+ capScope: "device",
28446
+ addonId: null,
28447
+ access: "create"
28448
+ },
28230
28449
  "pipelineAnalytics.saveRetrainAnnotations": {
28231
28450
  capName: "pipeline-analytics",
28232
28451
  capScope: "device",
@@ -28251,6 +28470,12 @@ Object.freeze({
28251
28470
  addonId: null,
28252
28471
  access: "create"
28253
28472
  },
28473
+ "pipelineAnalytics.startStorageMigrationMove": {
28474
+ capName: "pipeline-analytics",
28475
+ capScope: "device",
28476
+ addonId: null,
28477
+ access: "create"
28478
+ },
28254
28479
  "pipelineAnalytics.wipeAllAnalytics": {
28255
28480
  capName: "pipeline-analytics",
28256
28481
  capScope: "device",
@@ -28617,6 +28842,12 @@ Object.freeze({
28617
28842
  addonId: null,
28618
28843
  access: "view"
28619
28844
  },
28845
+ "pipelineOrchestrator.pauseForStorageMigration": {
28846
+ capName: "pipeline-orchestrator",
28847
+ capScope: "system",
28848
+ addonId: null,
28849
+ access: "create"
28850
+ },
28620
28851
  "pipelineOrchestrator.rebalance": {
28621
28852
  capName: "pipeline-orchestrator",
28622
28853
  capScope: "system",
@@ -28641,6 +28872,12 @@ Object.freeze({
28641
28872
  addonId: null,
28642
28873
  access: "view"
28643
28874
  },
28875
+ "pipelineOrchestrator.resumeForStorageMigration": {
28876
+ capName: "pipeline-orchestrator",
28877
+ capScope: "system",
28878
+ addonId: null,
28879
+ access: "create"
28880
+ },
28644
28881
  "pipelineOrchestrator.saveTemplate": {
28645
28882
  capName: "pipeline-orchestrator",
28646
28883
  capScope: "system",
@@ -29037,7 +29274,7 @@ Object.freeze({
29037
29274
  addonId: null,
29038
29275
  access: "create"
29039
29276
  },
29040
- "recording.cancelRelocate": {
29277
+ "recording.cancelStorageMigrationMove": {
29041
29278
  capName: "recording",
29042
29279
  capScope: "system",
29043
29280
  addonId: null,
@@ -29073,7 +29310,7 @@ Object.freeze({
29073
29310
  addonId: null,
29074
29311
  access: "view"
29075
29312
  },
29076
- "recording.getRelocateStatus": {
29313
+ "recording.getStorageMigrationMoveStatus": {
29077
29314
  capName: "recording",
29078
29315
  capScope: "system",
29079
29316
  addonId: null,
@@ -29097,6 +29334,12 @@ Object.freeze({
29097
29334
  addonId: null,
29098
29335
  access: "view"
29099
29336
  },
29337
+ "recording.pauseForStorageMigration": {
29338
+ capName: "recording",
29339
+ capScope: "system",
29340
+ addonId: null,
29341
+ access: "create"
29342
+ },
29100
29343
  "recording.pruneFootage": {
29101
29344
  capName: "recording",
29102
29345
  capScope: "system",
@@ -29115,7 +29358,7 @@ Object.freeze({
29115
29358
  addonId: null,
29116
29359
  access: "view"
29117
29360
  },
29118
- "recording.relocateFootage": {
29361
+ "recording.refreshStorageLocationsForMigration": {
29119
29362
  capName: "recording",
29120
29363
  capScope: "system",
29121
29364
  addonId: null,
@@ -29139,12 +29382,24 @@ Object.freeze({
29139
29382
  addonId: null,
29140
29383
  access: "create"
29141
29384
  },
29385
+ "recording.resumeForStorageMigration": {
29386
+ capName: "recording",
29387
+ capScope: "system",
29388
+ addonId: null,
29389
+ access: "create"
29390
+ },
29142
29391
  "recording.setDeviceConfig": {
29143
29392
  capName: "recording",
29144
29393
  capScope: "system",
29145
29394
  addonId: null,
29146
29395
  access: "create"
29147
29396
  },
29397
+ "recording.startStorageMigrationMove": {
29398
+ capName: "recording",
29399
+ capScope: "system",
29400
+ addonId: null,
29401
+ access: "create"
29402
+ },
29148
29403
  "recordingExport.cancelExport": {
29149
29404
  capName: "recordingExport",
29150
29405
  capScope: "system",
@@ -29535,6 +29790,30 @@ Object.freeze({
29535
29790
  addonId: null,
29536
29791
  access: "view"
29537
29792
  },
29793
+ "storageMigration.cancel": {
29794
+ capName: "storage-migration",
29795
+ capScope: "system",
29796
+ addonId: null,
29797
+ access: "create"
29798
+ },
29799
+ "storageMigration.plan": {
29800
+ capName: "storage-migration",
29801
+ capScope: "system",
29802
+ addonId: null,
29803
+ access: "view"
29804
+ },
29805
+ "storageMigration.start": {
29806
+ capName: "storage-migration",
29807
+ capScope: "system",
29808
+ addonId: null,
29809
+ access: "create"
29810
+ },
29811
+ "storageMigration.status": {
29812
+ capName: "storage-migration",
29813
+ capScope: "system",
29814
+ addonId: null,
29815
+ access: "view"
29816
+ },
29538
29817
  "storageProvider.abortUpload": {
29539
29818
  capName: "storage-provider",
29540
29819
  capScope: "system",
@@ -29913,12 +30192,42 @@ Object.freeze({
29913
30192
  addonId: null,
29914
30193
  access: "create"
29915
30194
  },
30195
+ "terminalSession.adoptLegacyMonitor": {
30196
+ capName: "terminal-session",
30197
+ capScope: "system",
30198
+ addonId: null,
30199
+ access: "create"
30200
+ },
29916
30201
  "terminalSession.close": {
29917
30202
  capName: "terminal-session",
29918
30203
  capScope: "system",
29919
30204
  addonId: null,
29920
30205
  access: "create"
29921
30206
  },
30207
+ "terminalSession.createInstance": {
30208
+ capName: "terminal-session",
30209
+ capScope: "system",
30210
+ addonId: null,
30211
+ access: "create"
30212
+ },
30213
+ "terminalSession.deleteInstance": {
30214
+ capName: "terminal-session",
30215
+ capScope: "system",
30216
+ addonId: null,
30217
+ access: "delete"
30218
+ },
30219
+ "terminalSession.listInstances": {
30220
+ capName: "terminal-session",
30221
+ capScope: "system",
30222
+ addonId: null,
30223
+ access: "view"
30224
+ },
30225
+ "terminalSession.listLegacyCameras": {
30226
+ capName: "terminal-session",
30227
+ capScope: "system",
30228
+ addonId: null,
30229
+ access: "view"
30230
+ },
29922
30231
  "terminalSession.listProfiles": {
29923
30232
  capName: "terminal-session",
29924
30233
  capScope: "system",
@@ -29937,12 +30246,30 @@ Object.freeze({
29937
30246
  addonId: null,
29938
30247
  access: "create"
29939
30248
  },
30249
+ "terminalSession.pullOutput": {
30250
+ capName: "terminal-session",
30251
+ capScope: "system",
30252
+ addonId: null,
30253
+ access: "create"
30254
+ },
29940
30255
  "terminalSession.resize": {
29941
30256
  capName: "terminal-session",
29942
30257
  capScope: "system",
29943
30258
  addonId: null,
29944
30259
  access: "create"
29945
30260
  },
30261
+ "terminalSession.setInstanceEnabled": {
30262
+ capName: "terminal-session",
30263
+ capScope: "system",
30264
+ addonId: null,
30265
+ access: "create"
30266
+ },
30267
+ "terminalSession.writeInput": {
30268
+ capName: "terminal-session",
30269
+ capScope: "system",
30270
+ addonId: null,
30271
+ access: "create"
30272
+ },
29946
30273
  "toast.onToast": {
29947
30274
  capName: "toast",
29948
30275
  capScope: "system",
@@ -8181,12 +8181,11 @@ var RecordingConfigSchema = object({
8181
8181
  /**
8182
8182
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
8183
8183
  *
8184
- * One shape shared by the recorder's `relocateFootage` (segments) and
8185
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
8186
- * page renders both movers with one component. Jobs are in-RAM (a restart
8187
- * forgets them re-running is safe by construction: copy-if-absent, delete
8188
- * after verify) and each completed/failed run also lands one durable ops-log
8189
- * row on the owning addon's surface.
8184
+ * One shape shared by the recorder and pipeline-analytics internal movers.
8185
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
8186
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
8187
+ * Each completed/failed run also lands one durable ops-log row on its owning
8188
+ * addon surface.
8190
8189
  */
8191
8190
  var RelocateJobStateSchema = _enum([
8192
8191
  "running",
@@ -8213,19 +8212,100 @@ var RelocateJobSchema = object({
8213
8212
  finishedAt: number().nullable(),
8214
8213
  error: string().nullable()
8215
8214
  });
8215
+ /** Profile-derived footage selection used only by the migration coordinator:
8216
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
8217
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
8216
8218
  var RelocateFootageInputSchema = object({
8217
- deviceId: number().optional(),
8218
8219
  fromLocationId: string(),
8219
8220
  toLocationId: string(),
8220
8221
  entities: array(_enum(["segments"])).optional(),
8222
+ /** Limits relocation to the logical profile class. Omit only for the
8223
+ * pre-orchestration compatibility path. */
8224
+ footageClass: RelocateFootageClassSchema.optional(),
8221
8225
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
8222
8226
  * never allowed to starve live writers. */
8223
8227
  throttleMbps: number().min(1).max(1e3).optional()
8224
8228
  });
8225
- var RelocateMediaInputSchema = object({
8226
- deviceId: number().optional(),
8229
+ /** Internal, lease-scoped participant operation. It is intentionally separate
8230
+ * from persistent recording settings: a migration never changes
8231
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
8232
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
8233
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
8234
+ var StorageMigrationMediaMoveInputSchema = object({
8227
8235
  toLocationId: string(),
8228
8236
  throttleMbps: number().min(1).max(1e3).optional()
8237
+ }).extend({ leaseId: string().min(1) });
8238
+ /** The independently selectable logical storage classes. `recordings`
8239
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
8240
+ * segments; `eventMedia` is post-analysis blobs. */
8241
+ var StorageMigrationClassSchema = _enum([
8242
+ "recordings",
8243
+ "recordingsLow",
8244
+ "eventMedia"
8245
+ ]);
8246
+ /** A destination is always an existing, fully-qualified location id. The
8247
+ * migration API intentionally never changes a source location's `basePath`:
8248
+ * callers create a new `<type>:<slug>` location, then select it here. */
8249
+ var StorageMigrationDestinationsSchema = object({
8250
+ recordings: string().min(1).optional(),
8251
+ recordingsLow: string().min(1).optional(),
8252
+ eventMedia: string().min(1).optional()
8253
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
8254
+ /** Shared input for planning and starting an orchestrated storage migration. */
8255
+ var StorageMigrationInputSchema = object({
8256
+ destinations: StorageMigrationDestinationsSchema,
8257
+ throttleMbps: number().min(1).max(1e3).optional()
8258
+ });
8259
+ /** The durable coordinator state machine. The only phase that changes default
8260
+ * locations is `repointing`, after every selected mover has completed and been
8261
+ * verified. */
8262
+ var StorageMigrationPhaseSchema = _enum([
8263
+ "planning",
8264
+ "pausing",
8265
+ "moving",
8266
+ "verifying",
8267
+ "repointing",
8268
+ "refreshing",
8269
+ "resuming",
8270
+ "done",
8271
+ "failed",
8272
+ "cancelled"
8273
+ ]);
8274
+ var StorageMigrationParticipantSchema = _enum([
8275
+ "pipeline",
8276
+ "recorder",
8277
+ "analytics"
8278
+ ]);
8279
+ var StorageMigrationMoveSchema = object({
8280
+ storageClass: StorageMigrationClassSchema,
8281
+ fromLocationId: string(),
8282
+ toLocationId: string(),
8283
+ moverJobId: string().nullable(),
8284
+ state: RelocateJobStateSchema.nullable(),
8285
+ error: string().nullable()
8286
+ });
8287
+ var StorageMigrationJobSchema = object({
8288
+ jobId: string(),
8289
+ phase: StorageMigrationPhaseSchema,
8290
+ destinations: StorageMigrationDestinationsSchema,
8291
+ throttleMbps: number(),
8292
+ moves: array(StorageMigrationMoveSchema),
8293
+ pauseLeaseId: string().nullable(),
8294
+ pausedParticipants: array(StorageMigrationParticipantSchema),
8295
+ repointed: boolean(),
8296
+ cancelRequested: boolean(),
8297
+ startedAt: number(),
8298
+ updatedAt: number(),
8299
+ finishedAt: number().nullable(),
8300
+ error: string().nullable()
8301
+ });
8302
+ var StorageMigrationPlanSchema = object({
8303
+ destinations: StorageMigrationDestinationsSchema,
8304
+ moves: array(object({
8305
+ storageClass: StorageMigrationClassSchema,
8306
+ fromLocationId: string(),
8307
+ toLocationId: string()
8308
+ }))
8229
8309
  });
8230
8310
  /**
8231
8311
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16736,13 +16816,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16736
16816
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16737
16817
  kind: "mutation",
16738
16818
  auth: "admin"
16739
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16819
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16740
16820
  kind: "mutation",
16741
16821
  auth: "admin"
16742
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16743
- kind: "query",
16822
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16823
+ kind: "mutation",
16744
16824
  auth: "admin"
16745
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16825
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16826
+ kind: "mutation",
16827
+ auth: "admin"
16828
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16829
+ kind: "mutation",
16830
+ auth: "admin"
16831
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16746
16832
  kind: "mutation",
16747
16833
  auth: "admin"
16748
16834
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -18239,7 +18325,13 @@ var NodeInferenceDevicesSchema = object({
18239
18325
  reachable: boolean(),
18240
18326
  devices: array(NodeInferenceDeviceSchema).readonly()
18241
18327
  });
18242
- method(object({
18328
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
18329
+ kind: "mutation",
18330
+ auth: "admin"
18331
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
18332
+ kind: "mutation",
18333
+ auth: "admin"
18334
+ }), method(object({
18243
18335
  deviceId: number(),
18244
18336
  agentNodeId: string()
18245
18337
  }), object({ success: literal(true) }), {
@@ -18913,6 +19005,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18913
19005
  locationId: string(),
18914
19006
  targetBytes: number().int().positive()
18915
19007
  }), EvictResultSchema, { kind: "mutation" });
19008
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
19009
+ kind: "mutation",
19010
+ auth: "admin"
19011
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
19012
+ kind: "mutation",
19013
+ auth: "admin"
19014
+ });
18916
19015
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18917
19016
  providerId: string().min(1),
18918
19017
  displayName: string().min(1),
@@ -19016,7 +19115,67 @@ var TerminalProfileInfoSchema = object({
19016
19115
  label: string(),
19017
19116
  description: string().optional()
19018
19117
  });
19019
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
19118
+ /**
19119
+ * A durable operator-created Terminal instance. Profiles are templates; only
19120
+ * an instance declares a camera.
19121
+ */
19122
+ var TerminalInstanceInfoSchema = object({
19123
+ instanceId: string(),
19124
+ cameraStableId: string(),
19125
+ nodeId: string(),
19126
+ profileId: string(),
19127
+ profileLabel: string(),
19128
+ name: string(),
19129
+ enabled: boolean()
19130
+ });
19131
+ var TerminalLegacyCameraSchema = object({
19132
+ stableId: string(),
19133
+ nodeId: string(),
19134
+ profileId: string(),
19135
+ profileLabel: string(),
19136
+ name: string(),
19137
+ /** Only legacy monitor cameras can retain their historic stable identity. */
19138
+ adoptable: boolean()
19139
+ });
19140
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
19141
+ seq: number().int().positive(),
19142
+ kind: literal("data"),
19143
+ data: string()
19144
+ }), object({
19145
+ seq: number().int().positive(),
19146
+ kind: literal("exit"),
19147
+ exitCode: number().int(),
19148
+ signal: number().int().optional()
19149
+ })]);
19150
+ var TerminalOutputBatchSchema = object({
19151
+ cursor: number().int().nonnegative(),
19152
+ reset: boolean(),
19153
+ snapshot: string().optional(),
19154
+ events: array(TerminalOutputEventSchema).readonly()
19155
+ });
19156
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
19157
+ targetNodeId: string().min(1),
19158
+ profileId: string().min(1),
19159
+ name: string().trim().min(1).max(160).optional()
19160
+ }), TerminalInstanceInfoSchema, {
19161
+ kind: "mutation",
19162
+ auth: "admin"
19163
+ }), method(object({ instanceId: string().min(1) }), _void(), {
19164
+ kind: "mutation",
19165
+ auth: "admin"
19166
+ }), method(object({
19167
+ instanceId: string().min(1),
19168
+ enabled: boolean()
19169
+ }), TerminalInstanceInfoSchema, {
19170
+ kind: "mutation",
19171
+ auth: "admin"
19172
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
19173
+ stableId: string().min(1),
19174
+ name: string().trim().min(1).max(160).optional()
19175
+ }), TerminalInstanceInfoSchema, {
19176
+ kind: "mutation",
19177
+ auth: "admin"
19178
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
19020
19179
  profileId: string(),
19021
19180
  cols: number().int().positive(),
19022
19181
  rows: number().int().positive()
@@ -19030,6 +19189,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
19030
19189
  }), _void(), {
19031
19190
  kind: "mutation",
19032
19191
  auth: "admin"
19192
+ }), method(object({
19193
+ sessionId: string(),
19194
+ afterSeq: number().int().nonnegative(),
19195
+ waitMs: number().int().min(0).max(2e3).default(0),
19196
+ /**
19197
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
19198
+ * browser's initial repaint remains immediate; the camera snapshot
19199
+ * relay uses it to avoid encoding a blank startup frame.
19200
+ */
19201
+ waitForOutput: boolean().optional()
19202
+ }), TerminalOutputBatchSchema, {
19203
+ kind: "mutation",
19204
+ auth: "admin",
19205
+ timeoutMs: 15e3
19206
+ }), method(object({
19207
+ sessionId: string(),
19208
+ data: string().max(64 * 1024)
19209
+ }), _void(), {
19210
+ kind: "mutation",
19211
+ auth: "admin"
19033
19212
  }), method(object({ sessionId: string() }), _void(), {
19034
19213
  kind: "mutation",
19035
19214
  auth: "admin"
@@ -20960,6 +21139,7 @@ var FaceInfoSchema = object({
20960
21139
  var FaceFilterEnum = _enum([
20961
21140
  "unassigned",
20962
21141
  "recognized",
21142
+ "identified",
20963
21143
  "all"
20964
21144
  ]);
20965
21145
  var MediaFileLiteSchema$1 = object({
@@ -20988,6 +21168,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20988
21168
  kind: "mutation",
20989
21169
  auth: "admin"
20990
21170
  }), method(object({
21171
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21172
+ deviceId: number().int().optional(),
20991
21173
  limit: number().int().positive().optional(),
20992
21174
  filter: FaceFilterEnum.optional(),
20993
21175
  /**
@@ -22753,6 +22935,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22753
22935
  capName: string().min(1).max(64),
22754
22936
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22755
22937
  valuePath: string().min(1).max(64)
22938
+ }),
22939
+ object({
22940
+ kind: literal("latest-recognition"),
22941
+ recognition: _enum(["person", "plate"])
22756
22942
  })
22757
22943
  ]);
22758
22944
  var OsdSlotBindingSchema = object({
@@ -22858,6 +23044,15 @@ method(object({ deviceId: number().int() }), object({
22858
23044
  }), object({ success: literal(true) }), {
22859
23045
  kind: "mutation",
22860
23046
  auth: "admin"
23047
+ }), method(object({
23048
+ sourceDeviceId: number().int(),
23049
+ targetDeviceId: number().int()
23050
+ }), object({
23051
+ copied: number().int().nonnegative(),
23052
+ skipped: number().int().nonnegative()
23053
+ }), {
23054
+ kind: "mutation",
23055
+ auth: "admin"
22861
23056
  }), method(object({
22862
23057
  deviceId: number().int(),
22863
23058
  slotId: string().min(1),
@@ -23743,13 +23938,19 @@ method(object({
23743
23938
  }), {
23744
23939
  kind: "mutation",
23745
23940
  auth: "admin"
23746
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23941
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23747
23942
  kind: "mutation",
23748
23943
  auth: "admin"
23749
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23750
- kind: "query",
23944
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23945
+ kind: "mutation",
23751
23946
  auth: "admin"
23752
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23947
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
23948
+ kind: "mutation",
23949
+ auth: "admin"
23950
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
23951
+ kind: "mutation",
23952
+ auth: "admin"
23953
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23753
23954
  kind: "mutation",
23754
23955
  auth: "admin"
23755
23956
  });
@@ -27871,6 +28072,12 @@ Object.freeze({
27871
28072
  addonId: null,
27872
28073
  access: "delete"
27873
28074
  },
28075
+ "osdManager.copyDeviceConfiguration": {
28076
+ capName: "osd-manager",
28077
+ capScope: "system",
28078
+ addonId: null,
28079
+ access: "create"
28080
+ },
27874
28081
  "osdManager.getConditionSupport": {
27875
28082
  capName: "osd-manager",
27876
28083
  capScope: "system",
@@ -27967,7 +28174,7 @@ Object.freeze({
27967
28174
  addonId: null,
27968
28175
  access: "create"
27969
28176
  },
27970
- "pipelineAnalytics.cancelMediaRelocate": {
28177
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27971
28178
  capName: "pipeline-analytics",
27972
28179
  capScope: "device",
27973
28180
  addonId: null,
@@ -28039,12 +28246,6 @@ Object.freeze({
28039
28246
  addonId: null,
28040
28247
  access: "view"
28041
28248
  },
28042
- "pipelineAnalytics.getMediaRelocateStatus": {
28043
- capName: "pipeline-analytics",
28044
- capScope: "device",
28045
- addonId: null,
28046
- access: "view"
28047
- },
28048
28249
  "pipelineAnalytics.getMotionEvents": {
28049
28250
  capName: "pipeline-analytics",
28050
28251
  capScope: "device",
@@ -28081,6 +28282,12 @@ Object.freeze({
28081
28282
  addonId: null,
28082
28283
  access: "view"
28083
28284
  },
28285
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
28286
+ capName: "pipeline-analytics",
28287
+ capScope: "device",
28288
+ addonId: null,
28289
+ access: "view"
28290
+ },
28084
28291
  "pipelineAnalytics.getTrack": {
28085
28292
  capName: "pipeline-analytics",
28086
28293
  capScope: "device",
@@ -28159,6 +28366,12 @@ Object.freeze({
28159
28366
  addonId: null,
28160
28367
  access: "view"
28161
28368
  },
28369
+ "pipelineAnalytics.pauseForStorageMigration": {
28370
+ capName: "pipeline-analytics",
28371
+ capScope: "device",
28372
+ addonId: null,
28373
+ access: "create"
28374
+ },
28162
28375
  "pipelineAnalytics.proposeRetrainAnnotations": {
28163
28376
  capName: "pipeline-analytics",
28164
28377
  capScope: "device",
@@ -28189,7 +28402,7 @@ Object.freeze({
28189
28402
  addonId: null,
28190
28403
  access: "create"
28191
28404
  },
28192
- "pipelineAnalytics.relocateMedia": {
28405
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
28193
28406
  capName: "pipeline-analytics",
28194
28407
  capScope: "device",
28195
28408
  addonId: null,
@@ -28201,6 +28414,12 @@ Object.freeze({
28201
28414
  addonId: null,
28202
28415
  access: "create"
28203
28416
  },
28417
+ "pipelineAnalytics.resumeForStorageMigration": {
28418
+ capName: "pipeline-analytics",
28419
+ capScope: "device",
28420
+ addonId: null,
28421
+ access: "create"
28422
+ },
28204
28423
  "pipelineAnalytics.saveRetrainAnnotations": {
28205
28424
  capName: "pipeline-analytics",
28206
28425
  capScope: "device",
@@ -28225,6 +28444,12 @@ Object.freeze({
28225
28444
  addonId: null,
28226
28445
  access: "create"
28227
28446
  },
28447
+ "pipelineAnalytics.startStorageMigrationMove": {
28448
+ capName: "pipeline-analytics",
28449
+ capScope: "device",
28450
+ addonId: null,
28451
+ access: "create"
28452
+ },
28228
28453
  "pipelineAnalytics.wipeAllAnalytics": {
28229
28454
  capName: "pipeline-analytics",
28230
28455
  capScope: "device",
@@ -28591,6 +28816,12 @@ Object.freeze({
28591
28816
  addonId: null,
28592
28817
  access: "view"
28593
28818
  },
28819
+ "pipelineOrchestrator.pauseForStorageMigration": {
28820
+ capName: "pipeline-orchestrator",
28821
+ capScope: "system",
28822
+ addonId: null,
28823
+ access: "create"
28824
+ },
28594
28825
  "pipelineOrchestrator.rebalance": {
28595
28826
  capName: "pipeline-orchestrator",
28596
28827
  capScope: "system",
@@ -28615,6 +28846,12 @@ Object.freeze({
28615
28846
  addonId: null,
28616
28847
  access: "view"
28617
28848
  },
28849
+ "pipelineOrchestrator.resumeForStorageMigration": {
28850
+ capName: "pipeline-orchestrator",
28851
+ capScope: "system",
28852
+ addonId: null,
28853
+ access: "create"
28854
+ },
28618
28855
  "pipelineOrchestrator.saveTemplate": {
28619
28856
  capName: "pipeline-orchestrator",
28620
28857
  capScope: "system",
@@ -29011,7 +29248,7 @@ Object.freeze({
29011
29248
  addonId: null,
29012
29249
  access: "create"
29013
29250
  },
29014
- "recording.cancelRelocate": {
29251
+ "recording.cancelStorageMigrationMove": {
29015
29252
  capName: "recording",
29016
29253
  capScope: "system",
29017
29254
  addonId: null,
@@ -29047,7 +29284,7 @@ Object.freeze({
29047
29284
  addonId: null,
29048
29285
  access: "view"
29049
29286
  },
29050
- "recording.getRelocateStatus": {
29287
+ "recording.getStorageMigrationMoveStatus": {
29051
29288
  capName: "recording",
29052
29289
  capScope: "system",
29053
29290
  addonId: null,
@@ -29071,6 +29308,12 @@ Object.freeze({
29071
29308
  addonId: null,
29072
29309
  access: "view"
29073
29310
  },
29311
+ "recording.pauseForStorageMigration": {
29312
+ capName: "recording",
29313
+ capScope: "system",
29314
+ addonId: null,
29315
+ access: "create"
29316
+ },
29074
29317
  "recording.pruneFootage": {
29075
29318
  capName: "recording",
29076
29319
  capScope: "system",
@@ -29089,7 +29332,7 @@ Object.freeze({
29089
29332
  addonId: null,
29090
29333
  access: "view"
29091
29334
  },
29092
- "recording.relocateFootage": {
29335
+ "recording.refreshStorageLocationsForMigration": {
29093
29336
  capName: "recording",
29094
29337
  capScope: "system",
29095
29338
  addonId: null,
@@ -29113,12 +29356,24 @@ Object.freeze({
29113
29356
  addonId: null,
29114
29357
  access: "create"
29115
29358
  },
29359
+ "recording.resumeForStorageMigration": {
29360
+ capName: "recording",
29361
+ capScope: "system",
29362
+ addonId: null,
29363
+ access: "create"
29364
+ },
29116
29365
  "recording.setDeviceConfig": {
29117
29366
  capName: "recording",
29118
29367
  capScope: "system",
29119
29368
  addonId: null,
29120
29369
  access: "create"
29121
29370
  },
29371
+ "recording.startStorageMigrationMove": {
29372
+ capName: "recording",
29373
+ capScope: "system",
29374
+ addonId: null,
29375
+ access: "create"
29376
+ },
29122
29377
  "recordingExport.cancelExport": {
29123
29378
  capName: "recordingExport",
29124
29379
  capScope: "system",
@@ -29509,6 +29764,30 @@ Object.freeze({
29509
29764
  addonId: null,
29510
29765
  access: "view"
29511
29766
  },
29767
+ "storageMigration.cancel": {
29768
+ capName: "storage-migration",
29769
+ capScope: "system",
29770
+ addonId: null,
29771
+ access: "create"
29772
+ },
29773
+ "storageMigration.plan": {
29774
+ capName: "storage-migration",
29775
+ capScope: "system",
29776
+ addonId: null,
29777
+ access: "view"
29778
+ },
29779
+ "storageMigration.start": {
29780
+ capName: "storage-migration",
29781
+ capScope: "system",
29782
+ addonId: null,
29783
+ access: "create"
29784
+ },
29785
+ "storageMigration.status": {
29786
+ capName: "storage-migration",
29787
+ capScope: "system",
29788
+ addonId: null,
29789
+ access: "view"
29790
+ },
29512
29791
  "storageProvider.abortUpload": {
29513
29792
  capName: "storage-provider",
29514
29793
  capScope: "system",
@@ -29887,12 +30166,42 @@ Object.freeze({
29887
30166
  addonId: null,
29888
30167
  access: "create"
29889
30168
  },
30169
+ "terminalSession.adoptLegacyMonitor": {
30170
+ capName: "terminal-session",
30171
+ capScope: "system",
30172
+ addonId: null,
30173
+ access: "create"
30174
+ },
29890
30175
  "terminalSession.close": {
29891
30176
  capName: "terminal-session",
29892
30177
  capScope: "system",
29893
30178
  addonId: null,
29894
30179
  access: "create"
29895
30180
  },
30181
+ "terminalSession.createInstance": {
30182
+ capName: "terminal-session",
30183
+ capScope: "system",
30184
+ addonId: null,
30185
+ access: "create"
30186
+ },
30187
+ "terminalSession.deleteInstance": {
30188
+ capName: "terminal-session",
30189
+ capScope: "system",
30190
+ addonId: null,
30191
+ access: "delete"
30192
+ },
30193
+ "terminalSession.listInstances": {
30194
+ capName: "terminal-session",
30195
+ capScope: "system",
30196
+ addonId: null,
30197
+ access: "view"
30198
+ },
30199
+ "terminalSession.listLegacyCameras": {
30200
+ capName: "terminal-session",
30201
+ capScope: "system",
30202
+ addonId: null,
30203
+ access: "view"
30204
+ },
29896
30205
  "terminalSession.listProfiles": {
29897
30206
  capName: "terminal-session",
29898
30207
  capScope: "system",
@@ -29911,12 +30220,30 @@ Object.freeze({
29911
30220
  addonId: null,
29912
30221
  access: "create"
29913
30222
  },
30223
+ "terminalSession.pullOutput": {
30224
+ capName: "terminal-session",
30225
+ capScope: "system",
30226
+ addonId: null,
30227
+ access: "create"
30228
+ },
29914
30229
  "terminalSession.resize": {
29915
30230
  capName: "terminal-session",
29916
30231
  capScope: "system",
29917
30232
  addonId: null,
29918
30233
  access: "create"
29919
30234
  },
30235
+ "terminalSession.setInstanceEnabled": {
30236
+ capName: "terminal-session",
30237
+ capScope: "system",
30238
+ addonId: null,
30239
+ access: "create"
30240
+ },
30241
+ "terminalSession.writeInput": {
30242
+ capName: "terminal-session",
30243
+ capScope: "system",
30244
+ addonId: null,
30245
+ access: "create"
30246
+ },
29920
30247
  "toast.onToast": {
29921
30248
  capName: "toast",
29922
30249
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-export-hap",
3
- "version": "1.2.18",
3
+ "version": "1.2.20",
4
4
  "description": "HomeKit (HAP) bridge exporter for CamStack devices. Publishes a bridged accessory per exposed device — MotionSensor in this MVP; Camera/Doorbell/Switch/Light follow.",
5
5
  "keywords": [
6
6
  "camstack",