@camstack/addon-osd-manager 0.1.4 → 0.1.5

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/index.mjs CHANGED
@@ -7622,12 +7622,11 @@ var RecordingConfigSchema = object({
7622
7622
  /**
7623
7623
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7624
7624
  *
7625
- * One shape shared by the recorder's `relocateFootage` (segments) and
7626
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7627
- * page renders both movers with one component. Jobs are in-RAM (a restart
7628
- * forgets them re-running is safe by construction: copy-if-absent, delete
7629
- * after verify) and each completed/failed run also lands one durable ops-log
7630
- * row on the owning addon's surface.
7625
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7626
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7627
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7628
+ * Each completed/failed run also lands one durable ops-log row on its owning
7629
+ * addon surface.
7631
7630
  */
7632
7631
  var RelocateJobStateSchema = _enum([
7633
7632
  "running",
@@ -7654,19 +7653,100 @@ var RelocateJobSchema = object({
7654
7653
  finishedAt: number().nullable(),
7655
7654
  error: string().nullable()
7656
7655
  });
7656
+ /** Profile-derived footage selection used only by the migration coordinator:
7657
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7658
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7657
7659
  var RelocateFootageInputSchema = object({
7658
- deviceId: number().optional(),
7659
7660
  fromLocationId: string(),
7660
7661
  toLocationId: string(),
7661
7662
  entities: array(_enum(["segments"])).optional(),
7663
+ /** Limits relocation to the logical profile class. Omit only for the
7664
+ * pre-orchestration compatibility path. */
7665
+ footageClass: RelocateFootageClassSchema.optional(),
7662
7666
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7663
7667
  * never allowed to starve live writers. */
7664
7668
  throttleMbps: number().min(1).max(1e3).optional()
7665
7669
  });
7666
- var RelocateMediaInputSchema = object({
7667
- deviceId: number().optional(),
7670
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7671
+ * from persistent recording settings: a migration never changes
7672
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7673
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7674
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7675
+ var StorageMigrationMediaMoveInputSchema = object({
7668
7676
  toLocationId: string(),
7669
7677
  throttleMbps: number().min(1).max(1e3).optional()
7678
+ }).extend({ leaseId: string().min(1) });
7679
+ /** The independently selectable logical storage classes. `recordings`
7680
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7681
+ * segments; `eventMedia` is post-analysis blobs. */
7682
+ var StorageMigrationClassSchema = _enum([
7683
+ "recordings",
7684
+ "recordingsLow",
7685
+ "eventMedia"
7686
+ ]);
7687
+ /** A destination is always an existing, fully-qualified location id. The
7688
+ * migration API intentionally never changes a source location's `basePath`:
7689
+ * callers create a new `<type>:<slug>` location, then select it here. */
7690
+ var StorageMigrationDestinationsSchema = object({
7691
+ recordings: string().min(1).optional(),
7692
+ recordingsLow: string().min(1).optional(),
7693
+ eventMedia: string().min(1).optional()
7694
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7695
+ /** Shared input for planning and starting an orchestrated storage migration. */
7696
+ var StorageMigrationInputSchema = object({
7697
+ destinations: StorageMigrationDestinationsSchema,
7698
+ throttleMbps: number().min(1).max(1e3).optional()
7699
+ });
7700
+ /** The durable coordinator state machine. The only phase that changes default
7701
+ * locations is `repointing`, after every selected mover has completed and been
7702
+ * verified. */
7703
+ var StorageMigrationPhaseSchema = _enum([
7704
+ "planning",
7705
+ "pausing",
7706
+ "moving",
7707
+ "verifying",
7708
+ "repointing",
7709
+ "refreshing",
7710
+ "resuming",
7711
+ "done",
7712
+ "failed",
7713
+ "cancelled"
7714
+ ]);
7715
+ var StorageMigrationParticipantSchema = _enum([
7716
+ "pipeline",
7717
+ "recorder",
7718
+ "analytics"
7719
+ ]);
7720
+ var StorageMigrationMoveSchema = object({
7721
+ storageClass: StorageMigrationClassSchema,
7722
+ fromLocationId: string(),
7723
+ toLocationId: string(),
7724
+ moverJobId: string().nullable(),
7725
+ state: RelocateJobStateSchema.nullable(),
7726
+ error: string().nullable()
7727
+ });
7728
+ var StorageMigrationJobSchema = object({
7729
+ jobId: string(),
7730
+ phase: StorageMigrationPhaseSchema,
7731
+ destinations: StorageMigrationDestinationsSchema,
7732
+ throttleMbps: number(),
7733
+ moves: array(StorageMigrationMoveSchema),
7734
+ pauseLeaseId: string().nullable(),
7735
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7736
+ repointed: boolean(),
7737
+ cancelRequested: boolean(),
7738
+ startedAt: number(),
7739
+ updatedAt: number(),
7740
+ finishedAt: number().nullable(),
7741
+ error: string().nullable()
7742
+ });
7743
+ var StorageMigrationPlanSchema = object({
7744
+ destinations: StorageMigrationDestinationsSchema,
7745
+ moves: array(object({
7746
+ storageClass: StorageMigrationClassSchema,
7747
+ fromLocationId: string(),
7748
+ toLocationId: string()
7749
+ }))
7670
7750
  });
7671
7751
  /**
7672
7752
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -18436,20 +18516,28 @@ var pipelineAnalyticsCapability = {
18436
18516
  }),
18437
18517
  /** The events ops-log rows (newest-first), optionally scoped to one camera.
18438
18518
  * Backed by a declared pipeline-analytics SQLite collection. */
18439
- /**
18440
- * Move event-media blobs onto `toLocationId` (entity-routing spec Phase
18441
- * 4): per-row copy stamp row.locationId → delete old blob. Rows already
18442
- * at the target are skipped, so a re-run resumes. Single-flight.
18443
- */
18444
- relocateMedia: method(RelocateMediaInputSchema, object({ jobId: string() }), {
18519
+ /** Internal migration-participant lease. It drains active MediaStore
18520
+ * writes and refuses new ones without changing analytics bindings. */
18521
+ pauseForStorageMigration: method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
18445
18522
  kind: "mutation",
18446
18523
  auth: "admin"
18447
18524
  }),
18448
- getMediaRelocateStatus: method(object({}), array(RelocateJobSchema).readonly(), {
18449
- kind: "query",
18525
+ resumeForStorageMigration: method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
18526
+ kind: "mutation",
18527
+ auth: "admin"
18528
+ }),
18529
+ /** Drops cached location roots after the storage coordinator repoints a
18530
+ * default so future event-media writes use the new root. */
18531
+ refreshStorageLocationsForMigration: method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
18532
+ kind: "mutation",
18450
18533
  auth: "admin"
18451
18534
  }),
18452
- cancelMediaRelocate: method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18535
+ startStorageMigrationMove: method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
18536
+ kind: "mutation",
18537
+ auth: "admin"
18538
+ }),
18539
+ getStorageMigrationMoveStatus: method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }),
18540
+ cancelStorageMigrationMove: method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18453
18541
  kind: "mutation",
18454
18542
  auth: "admin"
18455
18543
  }),
@@ -20498,6 +20586,16 @@ var pipelineOrchestratorCapability = {
20498
20586
  nodeIdMode: "data",
20499
20587
  exposesDeviceSettings: true,
20500
20588
  methods: {
20589
+ /** Internal storage-migration participant lease. While held, dispatch
20590
+ * requests are accepted as pending but no new runner attachment starts. */
20591
+ pauseForStorageMigration: method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
20592
+ kind: "mutation",
20593
+ auth: "admin"
20594
+ }),
20595
+ resumeForStorageMigration: method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
20596
+ kind: "mutation",
20597
+ auth: "admin"
20598
+ }),
20501
20599
  /**
20502
20600
  * Pin a camera's pipeline to a specific agent (L1 affinity).
20503
20601
  * The orchestrator re-evaluates the assignment immediately and persists
@@ -21639,6 +21737,28 @@ var storageEvictableCapability = {
21639
21737
  }), EvictResultSchema, { kind: "mutation" })
21640
21738
  }
21641
21739
  };
21740
+ /**
21741
+ * The single operator-facing storage migration surface. It coordinates the
21742
+ * pipeline, recorder and post-analysis participants; callers never mutate a
21743
+ * camera recording config or invoke an individual mover directly.
21744
+ */
21745
+ var storageMigrationCapability = {
21746
+ name: "storage-migration",
21747
+ scope: "system",
21748
+ mode: "singleton",
21749
+ methods: {
21750
+ plan: method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }),
21751
+ start: method(StorageMigrationInputSchema, object({ jobId: string() }), {
21752
+ kind: "mutation",
21753
+ auth: "admin"
21754
+ }),
21755
+ status: method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }),
21756
+ cancel: method(object({ jobId: string() }), object({ cancelled: boolean() }), {
21757
+ kind: "mutation",
21758
+ auth: "admin"
21759
+ })
21760
+ }
21761
+ };
21642
21762
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
21643
21763
  providerId: string().min(1),
21644
21764
  displayName: string().min(1),
@@ -21787,6 +21907,28 @@ var TerminalProfileInfoSchema = object({
21787
21907
  label: string(),
21788
21908
  description: string().optional()
21789
21909
  });
21910
+ /**
21911
+ * A durable operator-created Terminal instance. Profiles are templates; only
21912
+ * an instance declares a camera.
21913
+ */
21914
+ var TerminalInstanceInfoSchema = object({
21915
+ instanceId: string(),
21916
+ cameraStableId: string(),
21917
+ nodeId: string(),
21918
+ profileId: string(),
21919
+ profileLabel: string(),
21920
+ name: string(),
21921
+ enabled: boolean()
21922
+ });
21923
+ var TerminalLegacyCameraSchema = object({
21924
+ stableId: string(),
21925
+ nodeId: string(),
21926
+ profileId: string(),
21927
+ profileLabel: string(),
21928
+ name: string(),
21929
+ /** Only legacy monitor cameras can retain their historic stable identity. */
21930
+ adoptable: boolean()
21931
+ });
21790
21932
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
21791
21933
  seq: number().int().positive(),
21792
21934
  kind: literal("data"),
@@ -21806,10 +21948,9 @@ var TerminalOutputBatchSchema = object({
21806
21948
  /**
21807
21949
  * terminal-session — singleton system capability for interactive TTY sessions.
21808
21950
  *
21809
- * Phase 1 (this cap): open/resize/close/list a pty running an allowlisted
21810
- * profile, streamed to xterm.js over the data plane. Phase 2 (streaming a
21811
- * session as a camera) is a separate device-provider concern and does not
21812
- * change this contract.
21951
+ * Owns both live PTY lifecycle and durable Terminal instance management.
21952
+ * Profiles are allowlisted templates; an explicit instance is the only path
21953
+ * that declares a camera.
21813
21954
  */
21814
21955
  var terminalSessionCapability = {
21815
21956
  name: "terminal-session",
@@ -21818,6 +21959,37 @@ var terminalSessionCapability = {
21818
21959
  methods: {
21819
21960
  /** Pre-declared profiles the operator may open. */
21820
21961
  listProfiles: method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
21962
+ /** Explicit durable Terminal instances, managed centrally on the hub. */
21963
+ listInstances: method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }),
21964
+ createInstance: method(object({
21965
+ targetNodeId: string().min(1),
21966
+ profileId: string().min(1),
21967
+ name: string().trim().min(1).max(160).optional()
21968
+ }), TerminalInstanceInfoSchema, {
21969
+ kind: "mutation",
21970
+ auth: "admin"
21971
+ }),
21972
+ deleteInstance: method(object({ instanceId: string().min(1) }), _void(), {
21973
+ kind: "mutation",
21974
+ auth: "admin"
21975
+ }),
21976
+ setInstanceEnabled: method(object({
21977
+ instanceId: string().min(1),
21978
+ enabled: boolean()
21979
+ }), TerminalInstanceInfoSchema, {
21980
+ kind: "mutation",
21981
+ auth: "admin"
21982
+ }),
21983
+ /** Existing automatic cameras are shown for explicit migration only. */
21984
+ listLegacyCameras: method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }),
21985
+ /** Explicitly adopt one legacy monitor camera, retaining its stable id. */
21986
+ adoptLegacyMonitor: method(object({
21987
+ stableId: string().min(1),
21988
+ name: string().trim().min(1).max(160).optional()
21989
+ }), TerminalInstanceInfoSchema, {
21990
+ kind: "mutation",
21991
+ auth: "admin"
21992
+ }),
21821
21993
  /** Live sessions currently hosted by the provider. */
21822
21994
  listSessions: method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }),
21823
21995
  /**
@@ -21849,7 +22021,13 @@ var terminalSessionCapability = {
21849
22021
  pullOutput: method(object({
21850
22022
  sessionId: string(),
21851
22023
  afterSeq: number().int().nonnegative(),
21852
- waitMs: number().int().min(0).max(2e3).default(0)
22024
+ waitMs: number().int().min(0).max(2e3).default(0),
22025
+ /**
22026
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
22027
+ * browser's initial repaint remains immediate; the camera snapshot
22028
+ * relay uses it to avoid encoding a blank startup frame.
22029
+ */
22030
+ waitForOutput: boolean().optional()
21853
22031
  }), TerminalOutputBatchSchema, {
21854
22032
  kind: "mutation",
21855
22033
  auth: "admin",
@@ -28777,12 +28955,6 @@ var recordingCapability = {
28777
28955
  auth: "admin"
28778
28956
  }),
28779
28957
  /**
28780
- * Move footage (recorded segments) from one recordings location to
28781
- * another — the drain workflow's mover (entity-routing spec Phase 4).
28782
- * Throttled copy → size-verify → delete source → index refresh; resumable
28783
- * by construction (copy-if-absent). Single-flight: one job at a time.
28784
- */
28785
- /**
28786
28958
  * Render a short GIF from recorded footage around `aroundMs` (low profile,
28787
28959
  * palette-free ffmpeg gif). Synchronous — the window is a few seconds of
28788
28960
  * `low`, rendering in ~1-2s. Built for notification attachments: the
@@ -28834,16 +29006,28 @@ var recordingCapability = {
28834
29006
  kind: "mutation",
28835
29007
  auth: "admin"
28836
29008
  }),
28837
- relocateFootage: method(RelocateFootageInputSchema, object({ jobId: string() }), {
29009
+ /** Internal migration-participant lease. Blocks new recorder attaches and
29010
+ * waits for writers to exit while their watchers index final segments. */
29011
+ pauseForStorageMigration: method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
28838
29012
  kind: "mutation",
28839
29013
  auth: "admin"
28840
29014
  }),
28841
- /** Every known relocate job (in-RAM, newest-first). */
28842
- getRelocateStatus: method(object({}), array(RelocateJobSchema).readonly(), {
28843
- kind: "query",
29015
+ resumeForStorageMigration: method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
29016
+ kind: "mutation",
29017
+ auth: "admin"
29018
+ }),
29019
+ /** Re-resolve location roots after the coordinator changes defaults. */
29020
+ refreshStorageLocationsForMigration: method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
29021
+ kind: "mutation",
28844
29022
  auth: "admin"
28845
29023
  }),
28846
- cancelRelocate: method(object({ jobId: string() }), object({ cancelled: boolean() }), {
29024
+ /** Internal mover, callable only by the storage-migration coordinator. */
29025
+ startStorageMigrationMove: method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
29026
+ kind: "mutation",
29027
+ auth: "admin"
29028
+ }),
29029
+ getStorageMigrationMoveStatus: method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }),
29030
+ cancelStorageMigrationMove: method(object({ jobId: string() }), object({ cancelled: boolean() }), {
28847
29031
  kind: "mutation",
28848
29032
  auth: "admin"
28849
29033
  })
@@ -30798,6 +30982,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
30798
30982
  ssoBridgeCapability,
30799
30983
  storageCapability,
30800
30984
  storageEvictableCapability,
30985
+ storageMigrationCapability,
30801
30986
  storageProviderCapability,
30802
30987
  streamBrokerCapability,
30803
30988
  streamCatalogCapability,
@@ -33826,7 +34011,7 @@ Object.freeze({
33826
34011
  addonId: null,
33827
34012
  access: "create"
33828
34013
  },
33829
- "pipelineAnalytics.cancelMediaRelocate": {
34014
+ "pipelineAnalytics.cancelStorageMigrationMove": {
33830
34015
  capName: "pipeline-analytics",
33831
34016
  capScope: "device",
33832
34017
  addonId: null,
@@ -33898,12 +34083,6 @@ Object.freeze({
33898
34083
  addonId: null,
33899
34084
  access: "view"
33900
34085
  },
33901
- "pipelineAnalytics.getMediaRelocateStatus": {
33902
- capName: "pipeline-analytics",
33903
- capScope: "device",
33904
- addonId: null,
33905
- access: "view"
33906
- },
33907
34086
  "pipelineAnalytics.getMotionEvents": {
33908
34087
  capName: "pipeline-analytics",
33909
34088
  capScope: "device",
@@ -33940,6 +34119,12 @@ Object.freeze({
33940
34119
  addonId: null,
33941
34120
  access: "view"
33942
34121
  },
34122
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
34123
+ capName: "pipeline-analytics",
34124
+ capScope: "device",
34125
+ addonId: null,
34126
+ access: "view"
34127
+ },
33943
34128
  "pipelineAnalytics.getTrack": {
33944
34129
  capName: "pipeline-analytics",
33945
34130
  capScope: "device",
@@ -34018,6 +34203,12 @@ Object.freeze({
34018
34203
  addonId: null,
34019
34204
  access: "view"
34020
34205
  },
34206
+ "pipelineAnalytics.pauseForStorageMigration": {
34207
+ capName: "pipeline-analytics",
34208
+ capScope: "device",
34209
+ addonId: null,
34210
+ access: "create"
34211
+ },
34021
34212
  "pipelineAnalytics.proposeRetrainAnnotations": {
34022
34213
  capName: "pipeline-analytics",
34023
34214
  capScope: "device",
@@ -34048,7 +34239,7 @@ Object.freeze({
34048
34239
  addonId: null,
34049
34240
  access: "create"
34050
34241
  },
34051
- "pipelineAnalytics.relocateMedia": {
34242
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
34052
34243
  capName: "pipeline-analytics",
34053
34244
  capScope: "device",
34054
34245
  addonId: null,
@@ -34060,6 +34251,12 @@ Object.freeze({
34060
34251
  addonId: null,
34061
34252
  access: "create"
34062
34253
  },
34254
+ "pipelineAnalytics.resumeForStorageMigration": {
34255
+ capName: "pipeline-analytics",
34256
+ capScope: "device",
34257
+ addonId: null,
34258
+ access: "create"
34259
+ },
34063
34260
  "pipelineAnalytics.saveRetrainAnnotations": {
34064
34261
  capName: "pipeline-analytics",
34065
34262
  capScope: "device",
@@ -34084,6 +34281,12 @@ Object.freeze({
34084
34281
  addonId: null,
34085
34282
  access: "create"
34086
34283
  },
34284
+ "pipelineAnalytics.startStorageMigrationMove": {
34285
+ capName: "pipeline-analytics",
34286
+ capScope: "device",
34287
+ addonId: null,
34288
+ access: "create"
34289
+ },
34087
34290
  "pipelineAnalytics.wipeAllAnalytics": {
34088
34291
  capName: "pipeline-analytics",
34089
34292
  capScope: "device",
@@ -34450,6 +34653,12 @@ Object.freeze({
34450
34653
  addonId: null,
34451
34654
  access: "view"
34452
34655
  },
34656
+ "pipelineOrchestrator.pauseForStorageMigration": {
34657
+ capName: "pipeline-orchestrator",
34658
+ capScope: "system",
34659
+ addonId: null,
34660
+ access: "create"
34661
+ },
34453
34662
  "pipelineOrchestrator.rebalance": {
34454
34663
  capName: "pipeline-orchestrator",
34455
34664
  capScope: "system",
@@ -34474,6 +34683,12 @@ Object.freeze({
34474
34683
  addonId: null,
34475
34684
  access: "view"
34476
34685
  },
34686
+ "pipelineOrchestrator.resumeForStorageMigration": {
34687
+ capName: "pipeline-orchestrator",
34688
+ capScope: "system",
34689
+ addonId: null,
34690
+ access: "create"
34691
+ },
34477
34692
  "pipelineOrchestrator.saveTemplate": {
34478
34693
  capName: "pipeline-orchestrator",
34479
34694
  capScope: "system",
@@ -34870,7 +35085,7 @@ Object.freeze({
34870
35085
  addonId: null,
34871
35086
  access: "create"
34872
35087
  },
34873
- "recording.cancelRelocate": {
35088
+ "recording.cancelStorageMigrationMove": {
34874
35089
  capName: "recording",
34875
35090
  capScope: "system",
34876
35091
  addonId: null,
@@ -34906,7 +35121,7 @@ Object.freeze({
34906
35121
  addonId: null,
34907
35122
  access: "view"
34908
35123
  },
34909
- "recording.getRelocateStatus": {
35124
+ "recording.getStorageMigrationMoveStatus": {
34910
35125
  capName: "recording",
34911
35126
  capScope: "system",
34912
35127
  addonId: null,
@@ -34930,6 +35145,12 @@ Object.freeze({
34930
35145
  addonId: null,
34931
35146
  access: "view"
34932
35147
  },
35148
+ "recording.pauseForStorageMigration": {
35149
+ capName: "recording",
35150
+ capScope: "system",
35151
+ addonId: null,
35152
+ access: "create"
35153
+ },
34933
35154
  "recording.pruneFootage": {
34934
35155
  capName: "recording",
34935
35156
  capScope: "system",
@@ -34948,7 +35169,7 @@ Object.freeze({
34948
35169
  addonId: null,
34949
35170
  access: "view"
34950
35171
  },
34951
- "recording.relocateFootage": {
35172
+ "recording.refreshStorageLocationsForMigration": {
34952
35173
  capName: "recording",
34953
35174
  capScope: "system",
34954
35175
  addonId: null,
@@ -34972,12 +35193,24 @@ Object.freeze({
34972
35193
  addonId: null,
34973
35194
  access: "create"
34974
35195
  },
35196
+ "recording.resumeForStorageMigration": {
35197
+ capName: "recording",
35198
+ capScope: "system",
35199
+ addonId: null,
35200
+ access: "create"
35201
+ },
34975
35202
  "recording.setDeviceConfig": {
34976
35203
  capName: "recording",
34977
35204
  capScope: "system",
34978
35205
  addonId: null,
34979
35206
  access: "create"
34980
35207
  },
35208
+ "recording.startStorageMigrationMove": {
35209
+ capName: "recording",
35210
+ capScope: "system",
35211
+ addonId: null,
35212
+ access: "create"
35213
+ },
34981
35214
  "recordingExport.cancelExport": {
34982
35215
  capName: "recordingExport",
34983
35216
  capScope: "system",
@@ -35368,6 +35601,30 @@ Object.freeze({
35368
35601
  addonId: null,
35369
35602
  access: "view"
35370
35603
  },
35604
+ "storageMigration.cancel": {
35605
+ capName: "storage-migration",
35606
+ capScope: "system",
35607
+ addonId: null,
35608
+ access: "create"
35609
+ },
35610
+ "storageMigration.plan": {
35611
+ capName: "storage-migration",
35612
+ capScope: "system",
35613
+ addonId: null,
35614
+ access: "view"
35615
+ },
35616
+ "storageMigration.start": {
35617
+ capName: "storage-migration",
35618
+ capScope: "system",
35619
+ addonId: null,
35620
+ access: "create"
35621
+ },
35622
+ "storageMigration.status": {
35623
+ capName: "storage-migration",
35624
+ capScope: "system",
35625
+ addonId: null,
35626
+ access: "view"
35627
+ },
35371
35628
  "storageProvider.abortUpload": {
35372
35629
  capName: "storage-provider",
35373
35630
  capScope: "system",
@@ -35746,12 +36003,42 @@ Object.freeze({
35746
36003
  addonId: null,
35747
36004
  access: "create"
35748
36005
  },
36006
+ "terminalSession.adoptLegacyMonitor": {
36007
+ capName: "terminal-session",
36008
+ capScope: "system",
36009
+ addonId: null,
36010
+ access: "create"
36011
+ },
35749
36012
  "terminalSession.close": {
35750
36013
  capName: "terminal-session",
35751
36014
  capScope: "system",
35752
36015
  addonId: null,
35753
36016
  access: "create"
35754
36017
  },
36018
+ "terminalSession.createInstance": {
36019
+ capName: "terminal-session",
36020
+ capScope: "system",
36021
+ addonId: null,
36022
+ access: "create"
36023
+ },
36024
+ "terminalSession.deleteInstance": {
36025
+ capName: "terminal-session",
36026
+ capScope: "system",
36027
+ addonId: null,
36028
+ access: "delete"
36029
+ },
36030
+ "terminalSession.listInstances": {
36031
+ capName: "terminal-session",
36032
+ capScope: "system",
36033
+ addonId: null,
36034
+ access: "view"
36035
+ },
36036
+ "terminalSession.listLegacyCameras": {
36037
+ capName: "terminal-session",
36038
+ capScope: "system",
36039
+ addonId: null,
36040
+ access: "view"
36041
+ },
35755
36042
  "terminalSession.listProfiles": {
35756
36043
  capName: "terminal-session",
35757
36044
  capScope: "system",
@@ -35782,6 +36069,12 @@ Object.freeze({
35782
36069
  addonId: null,
35783
36070
  access: "create"
35784
36071
  },
36072
+ "terminalSession.setInstanceEnabled": {
36073
+ capName: "terminal-session",
36074
+ capScope: "system",
36075
+ addonId: null,
36076
+ access: "create"
36077
+ },
35785
36078
  "terminalSession.writeInput": {
35786
36079
  capName: "terminal-session",
35787
36080
  capScope: "system",
@@ -1,6 +1,6 @@
1
1
  import { c as e, g as t, h as n, l as r, n as i, p as a, r as o, t as s, u as c, y as l } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-Bs1t18EM.mjs";
2
2
  import { n as u, r as d, t as f } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DalfdIDw.mjs";
3
- import { g as p } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D722amjy.mjs";
3
+ import { g as p } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-y06ok-co.mjs";
4
4
  //#region ../ui-library/src/lib/cap-error.ts
5
5
  function m(e) {
6
6
  if (typeof e != "object" || !e) return null;
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-CdG2yVd0.mjs";
1
+ import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-BbeKMP0f.mjs";
2
2
  export { t as get, e as init };
@@ -1,4 +1,4 @@
1
- import { s as e } from "./player-overlays-CwbydND6.mjs";
1
+ import { s as e } from "./player-overlays-DjxfQys9.mjs";
2
2
  var t = e("eye-off", [
3
3
  ["path", {
4
4
  d: "M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",
@@ -2753,7 +2753,7 @@ async function rr(e) {
2753
2753
  }
2754
2754
  }
2755
2755
  async function ir() {
2756
- return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-CL-YG2or.mjs")).catch((e) => {
2756
+ return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-DPF0_skI.mjs")).catch((e) => {
2757
2757
  throw tr = void 0, e;
2758
2758
  }), tr;
2759
2759
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-osd-manager",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "Binds camera on-screen-display slots to live state and recognitions",
5
5
  "keywords": [
6
6
  "camstack",