@camstack/addon-import-alexa 0.2.10 → 0.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.
Files changed (3) hide show
  1. package/dist/addon.js +357 -30
  2. package/dist/addon.mjs +357 -30
  3. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -7723,12 +7723,11 @@ var RecordingConfigSchema = object({
7723
7723
  /**
7724
7724
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7725
7725
  *
7726
- * One shape shared by the recorder's `relocateFootage` (segments) and
7727
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7728
- * page renders both movers with one component. Jobs are in-RAM (a restart
7729
- * forgets them re-running is safe by construction: copy-if-absent, delete
7730
- * after verify) and each completed/failed run also lands one durable ops-log
7731
- * row on the owning addon's surface.
7726
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7727
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7728
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7729
+ * Each completed/failed run also lands one durable ops-log row on its owning
7730
+ * addon surface.
7732
7731
  */
7733
7732
  var RelocateJobStateSchema = _enum([
7734
7733
  "running",
@@ -7755,19 +7754,100 @@ var RelocateJobSchema = object({
7755
7754
  finishedAt: number().nullable(),
7756
7755
  error: string().nullable()
7757
7756
  });
7757
+ /** Profile-derived footage selection used only by the migration coordinator:
7758
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7759
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7758
7760
  var RelocateFootageInputSchema = object({
7759
- deviceId: number().optional(),
7760
7761
  fromLocationId: string(),
7761
7762
  toLocationId: string(),
7762
7763
  entities: array(_enum(["segments"])).optional(),
7764
+ /** Limits relocation to the logical profile class. Omit only for the
7765
+ * pre-orchestration compatibility path. */
7766
+ footageClass: RelocateFootageClassSchema.optional(),
7763
7767
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7764
7768
  * never allowed to starve live writers. */
7765
7769
  throttleMbps: number().min(1).max(1e3).optional()
7766
7770
  });
7767
- var RelocateMediaInputSchema = object({
7768
- deviceId: number().optional(),
7771
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7772
+ * from persistent recording settings: a migration never changes
7773
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7774
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7775
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7776
+ var StorageMigrationMediaMoveInputSchema = object({
7769
7777
  toLocationId: string(),
7770
7778
  throttleMbps: number().min(1).max(1e3).optional()
7779
+ }).extend({ leaseId: string().min(1) });
7780
+ /** The independently selectable logical storage classes. `recordings`
7781
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7782
+ * segments; `eventMedia` is post-analysis blobs. */
7783
+ var StorageMigrationClassSchema = _enum([
7784
+ "recordings",
7785
+ "recordingsLow",
7786
+ "eventMedia"
7787
+ ]);
7788
+ /** A destination is always an existing, fully-qualified location id. The
7789
+ * migration API intentionally never changes a source location's `basePath`:
7790
+ * callers create a new `<type>:<slug>` location, then select it here. */
7791
+ var StorageMigrationDestinationsSchema = object({
7792
+ recordings: string().min(1).optional(),
7793
+ recordingsLow: string().min(1).optional(),
7794
+ eventMedia: string().min(1).optional()
7795
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7796
+ /** Shared input for planning and starting an orchestrated storage migration. */
7797
+ var StorageMigrationInputSchema = object({
7798
+ destinations: StorageMigrationDestinationsSchema,
7799
+ throttleMbps: number().min(1).max(1e3).optional()
7800
+ });
7801
+ /** The durable coordinator state machine. The only phase that changes default
7802
+ * locations is `repointing`, after every selected mover has completed and been
7803
+ * verified. */
7804
+ var StorageMigrationPhaseSchema = _enum([
7805
+ "planning",
7806
+ "pausing",
7807
+ "moving",
7808
+ "verifying",
7809
+ "repointing",
7810
+ "refreshing",
7811
+ "resuming",
7812
+ "done",
7813
+ "failed",
7814
+ "cancelled"
7815
+ ]);
7816
+ var StorageMigrationParticipantSchema = _enum([
7817
+ "pipeline",
7818
+ "recorder",
7819
+ "analytics"
7820
+ ]);
7821
+ var StorageMigrationMoveSchema = object({
7822
+ storageClass: StorageMigrationClassSchema,
7823
+ fromLocationId: string(),
7824
+ toLocationId: string(),
7825
+ moverJobId: string().nullable(),
7826
+ state: RelocateJobStateSchema.nullable(),
7827
+ error: string().nullable()
7828
+ });
7829
+ var StorageMigrationJobSchema = object({
7830
+ jobId: string(),
7831
+ phase: StorageMigrationPhaseSchema,
7832
+ destinations: StorageMigrationDestinationsSchema,
7833
+ throttleMbps: number(),
7834
+ moves: array(StorageMigrationMoveSchema),
7835
+ pauseLeaseId: string().nullable(),
7836
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7837
+ repointed: boolean(),
7838
+ cancelRequested: boolean(),
7839
+ startedAt: number(),
7840
+ updatedAt: number(),
7841
+ finishedAt: number().nullable(),
7842
+ error: string().nullable()
7843
+ });
7844
+ var StorageMigrationPlanSchema = object({
7845
+ destinations: StorageMigrationDestinationsSchema,
7846
+ moves: array(object({
7847
+ storageClass: StorageMigrationClassSchema,
7848
+ fromLocationId: string(),
7849
+ toLocationId: string()
7850
+ }))
7771
7851
  });
7772
7852
  /**
7773
7853
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16506,13 +16586,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16506
16586
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16507
16587
  kind: "mutation",
16508
16588
  auth: "admin"
16509
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16589
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16510
16590
  kind: "mutation",
16511
16591
  auth: "admin"
16512
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16513
- kind: "query",
16592
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16593
+ kind: "mutation",
16514
16594
  auth: "admin"
16515
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16595
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16596
+ kind: "mutation",
16597
+ auth: "admin"
16598
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16599
+ kind: "mutation",
16600
+ auth: "admin"
16601
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16516
16602
  kind: "mutation",
16517
16603
  auth: "admin"
16518
16604
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -18042,7 +18128,13 @@ var NodeInferenceDevicesSchema = object({
18042
18128
  reachable: boolean(),
18043
18129
  devices: array(NodeInferenceDeviceSchema).readonly()
18044
18130
  });
18045
- method(object({
18131
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
18132
+ kind: "mutation",
18133
+ auth: "admin"
18134
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
18135
+ kind: "mutation",
18136
+ auth: "admin"
18137
+ }), method(object({
18046
18138
  deviceId: number(),
18047
18139
  agentNodeId: string()
18048
18140
  }), object({ success: literal(true) }), {
@@ -18716,6 +18808,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18716
18808
  locationId: string(),
18717
18809
  targetBytes: number().int().positive()
18718
18810
  }), EvictResultSchema, { kind: "mutation" });
18811
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18812
+ kind: "mutation",
18813
+ auth: "admin"
18814
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18815
+ kind: "mutation",
18816
+ auth: "admin"
18817
+ });
18719
18818
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18720
18819
  providerId: string().min(1),
18721
18820
  displayName: string().min(1),
@@ -18819,7 +18918,67 @@ var TerminalProfileInfoSchema = object({
18819
18918
  label: string(),
18820
18919
  description: string().optional()
18821
18920
  });
18822
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18921
+ /**
18922
+ * A durable operator-created Terminal instance. Profiles are templates; only
18923
+ * an instance declares a camera.
18924
+ */
18925
+ var TerminalInstanceInfoSchema = object({
18926
+ instanceId: string(),
18927
+ cameraStableId: string(),
18928
+ nodeId: string(),
18929
+ profileId: string(),
18930
+ profileLabel: string(),
18931
+ name: string(),
18932
+ enabled: boolean()
18933
+ });
18934
+ var TerminalLegacyCameraSchema = object({
18935
+ stableId: string(),
18936
+ nodeId: string(),
18937
+ profileId: string(),
18938
+ profileLabel: string(),
18939
+ name: string(),
18940
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18941
+ adoptable: boolean()
18942
+ });
18943
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18944
+ seq: number().int().positive(),
18945
+ kind: literal("data"),
18946
+ data: string()
18947
+ }), object({
18948
+ seq: number().int().positive(),
18949
+ kind: literal("exit"),
18950
+ exitCode: number().int(),
18951
+ signal: number().int().optional()
18952
+ })]);
18953
+ var TerminalOutputBatchSchema = object({
18954
+ cursor: number().int().nonnegative(),
18955
+ reset: boolean(),
18956
+ snapshot: string().optional(),
18957
+ events: array(TerminalOutputEventSchema).readonly()
18958
+ });
18959
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18960
+ targetNodeId: string().min(1),
18961
+ profileId: string().min(1),
18962
+ name: string().trim().min(1).max(160).optional()
18963
+ }), TerminalInstanceInfoSchema, {
18964
+ kind: "mutation",
18965
+ auth: "admin"
18966
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18967
+ kind: "mutation",
18968
+ auth: "admin"
18969
+ }), method(object({
18970
+ instanceId: string().min(1),
18971
+ enabled: boolean()
18972
+ }), TerminalInstanceInfoSchema, {
18973
+ kind: "mutation",
18974
+ auth: "admin"
18975
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18976
+ stableId: string().min(1),
18977
+ name: string().trim().min(1).max(160).optional()
18978
+ }), TerminalInstanceInfoSchema, {
18979
+ kind: "mutation",
18980
+ auth: "admin"
18981
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18823
18982
  profileId: string(),
18824
18983
  cols: number().int().positive(),
18825
18984
  rows: number().int().positive()
@@ -18833,6 +18992,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18833
18992
  }), _void(), {
18834
18993
  kind: "mutation",
18835
18994
  auth: "admin"
18995
+ }), method(object({
18996
+ sessionId: string(),
18997
+ afterSeq: number().int().nonnegative(),
18998
+ waitMs: number().int().min(0).max(2e3).default(0),
18999
+ /**
19000
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
19001
+ * browser's initial repaint remains immediate; the camera snapshot
19002
+ * relay uses it to avoid encoding a blank startup frame.
19003
+ */
19004
+ waitForOutput: boolean().optional()
19005
+ }), TerminalOutputBatchSchema, {
19006
+ kind: "mutation",
19007
+ auth: "admin",
19008
+ timeoutMs: 15e3
19009
+ }), method(object({
19010
+ sessionId: string(),
19011
+ data: string().max(64 * 1024)
19012
+ }), _void(), {
19013
+ kind: "mutation",
19014
+ auth: "admin"
18836
19015
  }), method(object({ sessionId: string() }), _void(), {
18837
19016
  kind: "mutation",
18838
19017
  auth: "admin"
@@ -21337,6 +21516,7 @@ var FaceInfoSchema = object({
21337
21516
  var FaceFilterEnum = _enum([
21338
21517
  "unassigned",
21339
21518
  "recognized",
21519
+ "identified",
21340
21520
  "all"
21341
21521
  ]);
21342
21522
  var MediaFileLiteSchema$1 = object({
@@ -21365,6 +21545,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21365
21545
  kind: "mutation",
21366
21546
  auth: "admin"
21367
21547
  }), method(object({
21548
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21549
+ deviceId: number().int().optional(),
21368
21550
  limit: number().int().positive().optional(),
21369
21551
  filter: FaceFilterEnum.optional(),
21370
21552
  /**
@@ -23594,6 +23776,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23594
23776
  capName: string().min(1).max(64),
23595
23777
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23596
23778
  valuePath: string().min(1).max(64)
23779
+ }),
23780
+ object({
23781
+ kind: literal("latest-recognition"),
23782
+ recognition: _enum(["person", "plate"])
23597
23783
  })
23598
23784
  ]);
23599
23785
  var OsdSlotBindingSchema = object({
@@ -23699,6 +23885,15 @@ method(object({ deviceId: number().int() }), object({
23699
23885
  }), object({ success: literal(true) }), {
23700
23886
  kind: "mutation",
23701
23887
  auth: "admin"
23888
+ }), method(object({
23889
+ sourceDeviceId: number().int(),
23890
+ targetDeviceId: number().int()
23891
+ }), object({
23892
+ copied: number().int().nonnegative(),
23893
+ skipped: number().int().nonnegative()
23894
+ }), {
23895
+ kind: "mutation",
23896
+ auth: "admin"
23702
23897
  }), method(object({
23703
23898
  deviceId: number().int(),
23704
23899
  slotId: string().min(1),
@@ -24796,13 +24991,19 @@ method(object({
24796
24991
  }), {
24797
24992
  kind: "mutation",
24798
24993
  auth: "admin"
24799
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24994
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24800
24995
  kind: "mutation",
24801
24996
  auth: "admin"
24802
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24803
- kind: "query",
24997
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24998
+ kind: "mutation",
24804
24999
  auth: "admin"
24805
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25000
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
25001
+ kind: "mutation",
25002
+ auth: "admin"
25003
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
25004
+ kind: "mutation",
25005
+ auth: "admin"
25006
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24806
25007
  kind: "mutation",
24807
25008
  auth: "admin"
24808
25009
  });
@@ -30408,6 +30609,12 @@ Object.freeze({
30408
30609
  addonId: null,
30409
30610
  access: "delete"
30410
30611
  },
30612
+ "osdManager.copyDeviceConfiguration": {
30613
+ capName: "osd-manager",
30614
+ capScope: "system",
30615
+ addonId: null,
30616
+ access: "create"
30617
+ },
30411
30618
  "osdManager.getConditionSupport": {
30412
30619
  capName: "osd-manager",
30413
30620
  capScope: "system",
@@ -30504,7 +30711,7 @@ Object.freeze({
30504
30711
  addonId: null,
30505
30712
  access: "create"
30506
30713
  },
30507
- "pipelineAnalytics.cancelMediaRelocate": {
30714
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30508
30715
  capName: "pipeline-analytics",
30509
30716
  capScope: "device",
30510
30717
  addonId: null,
@@ -30576,12 +30783,6 @@ Object.freeze({
30576
30783
  addonId: null,
30577
30784
  access: "view"
30578
30785
  },
30579
- "pipelineAnalytics.getMediaRelocateStatus": {
30580
- capName: "pipeline-analytics",
30581
- capScope: "device",
30582
- addonId: null,
30583
- access: "view"
30584
- },
30585
30786
  "pipelineAnalytics.getMotionEvents": {
30586
30787
  capName: "pipeline-analytics",
30587
30788
  capScope: "device",
@@ -30618,6 +30819,12 @@ Object.freeze({
30618
30819
  addonId: null,
30619
30820
  access: "view"
30620
30821
  },
30822
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30823
+ capName: "pipeline-analytics",
30824
+ capScope: "device",
30825
+ addonId: null,
30826
+ access: "view"
30827
+ },
30621
30828
  "pipelineAnalytics.getTrack": {
30622
30829
  capName: "pipeline-analytics",
30623
30830
  capScope: "device",
@@ -30696,6 +30903,12 @@ Object.freeze({
30696
30903
  addonId: null,
30697
30904
  access: "view"
30698
30905
  },
30906
+ "pipelineAnalytics.pauseForStorageMigration": {
30907
+ capName: "pipeline-analytics",
30908
+ capScope: "device",
30909
+ addonId: null,
30910
+ access: "create"
30911
+ },
30699
30912
  "pipelineAnalytics.proposeRetrainAnnotations": {
30700
30913
  capName: "pipeline-analytics",
30701
30914
  capScope: "device",
@@ -30726,7 +30939,7 @@ Object.freeze({
30726
30939
  addonId: null,
30727
30940
  access: "create"
30728
30941
  },
30729
- "pipelineAnalytics.relocateMedia": {
30942
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30730
30943
  capName: "pipeline-analytics",
30731
30944
  capScope: "device",
30732
30945
  addonId: null,
@@ -30738,6 +30951,12 @@ Object.freeze({
30738
30951
  addonId: null,
30739
30952
  access: "create"
30740
30953
  },
30954
+ "pipelineAnalytics.resumeForStorageMigration": {
30955
+ capName: "pipeline-analytics",
30956
+ capScope: "device",
30957
+ addonId: null,
30958
+ access: "create"
30959
+ },
30741
30960
  "pipelineAnalytics.saveRetrainAnnotations": {
30742
30961
  capName: "pipeline-analytics",
30743
30962
  capScope: "device",
@@ -30762,6 +30981,12 @@ Object.freeze({
30762
30981
  addonId: null,
30763
30982
  access: "create"
30764
30983
  },
30984
+ "pipelineAnalytics.startStorageMigrationMove": {
30985
+ capName: "pipeline-analytics",
30986
+ capScope: "device",
30987
+ addonId: null,
30988
+ access: "create"
30989
+ },
30765
30990
  "pipelineAnalytics.wipeAllAnalytics": {
30766
30991
  capName: "pipeline-analytics",
30767
30992
  capScope: "device",
@@ -31128,6 +31353,12 @@ Object.freeze({
31128
31353
  addonId: null,
31129
31354
  access: "view"
31130
31355
  },
31356
+ "pipelineOrchestrator.pauseForStorageMigration": {
31357
+ capName: "pipeline-orchestrator",
31358
+ capScope: "system",
31359
+ addonId: null,
31360
+ access: "create"
31361
+ },
31131
31362
  "pipelineOrchestrator.rebalance": {
31132
31363
  capName: "pipeline-orchestrator",
31133
31364
  capScope: "system",
@@ -31152,6 +31383,12 @@ Object.freeze({
31152
31383
  addonId: null,
31153
31384
  access: "view"
31154
31385
  },
31386
+ "pipelineOrchestrator.resumeForStorageMigration": {
31387
+ capName: "pipeline-orchestrator",
31388
+ capScope: "system",
31389
+ addonId: null,
31390
+ access: "create"
31391
+ },
31155
31392
  "pipelineOrchestrator.saveTemplate": {
31156
31393
  capName: "pipeline-orchestrator",
31157
31394
  capScope: "system",
@@ -31548,7 +31785,7 @@ Object.freeze({
31548
31785
  addonId: null,
31549
31786
  access: "create"
31550
31787
  },
31551
- "recording.cancelRelocate": {
31788
+ "recording.cancelStorageMigrationMove": {
31552
31789
  capName: "recording",
31553
31790
  capScope: "system",
31554
31791
  addonId: null,
@@ -31584,7 +31821,7 @@ Object.freeze({
31584
31821
  addonId: null,
31585
31822
  access: "view"
31586
31823
  },
31587
- "recording.getRelocateStatus": {
31824
+ "recording.getStorageMigrationMoveStatus": {
31588
31825
  capName: "recording",
31589
31826
  capScope: "system",
31590
31827
  addonId: null,
@@ -31608,6 +31845,12 @@ Object.freeze({
31608
31845
  addonId: null,
31609
31846
  access: "view"
31610
31847
  },
31848
+ "recording.pauseForStorageMigration": {
31849
+ capName: "recording",
31850
+ capScope: "system",
31851
+ addonId: null,
31852
+ access: "create"
31853
+ },
31611
31854
  "recording.pruneFootage": {
31612
31855
  capName: "recording",
31613
31856
  capScope: "system",
@@ -31626,7 +31869,7 @@ Object.freeze({
31626
31869
  addonId: null,
31627
31870
  access: "view"
31628
31871
  },
31629
- "recording.relocateFootage": {
31872
+ "recording.refreshStorageLocationsForMigration": {
31630
31873
  capName: "recording",
31631
31874
  capScope: "system",
31632
31875
  addonId: null,
@@ -31650,12 +31893,24 @@ Object.freeze({
31650
31893
  addonId: null,
31651
31894
  access: "create"
31652
31895
  },
31896
+ "recording.resumeForStorageMigration": {
31897
+ capName: "recording",
31898
+ capScope: "system",
31899
+ addonId: null,
31900
+ access: "create"
31901
+ },
31653
31902
  "recording.setDeviceConfig": {
31654
31903
  capName: "recording",
31655
31904
  capScope: "system",
31656
31905
  addonId: null,
31657
31906
  access: "create"
31658
31907
  },
31908
+ "recording.startStorageMigrationMove": {
31909
+ capName: "recording",
31910
+ capScope: "system",
31911
+ addonId: null,
31912
+ access: "create"
31913
+ },
31659
31914
  "recordingExport.cancelExport": {
31660
31915
  capName: "recordingExport",
31661
31916
  capScope: "system",
@@ -32046,6 +32301,30 @@ Object.freeze({
32046
32301
  addonId: null,
32047
32302
  access: "view"
32048
32303
  },
32304
+ "storageMigration.cancel": {
32305
+ capName: "storage-migration",
32306
+ capScope: "system",
32307
+ addonId: null,
32308
+ access: "create"
32309
+ },
32310
+ "storageMigration.plan": {
32311
+ capName: "storage-migration",
32312
+ capScope: "system",
32313
+ addonId: null,
32314
+ access: "view"
32315
+ },
32316
+ "storageMigration.start": {
32317
+ capName: "storage-migration",
32318
+ capScope: "system",
32319
+ addonId: null,
32320
+ access: "create"
32321
+ },
32322
+ "storageMigration.status": {
32323
+ capName: "storage-migration",
32324
+ capScope: "system",
32325
+ addonId: null,
32326
+ access: "view"
32327
+ },
32049
32328
  "storageProvider.abortUpload": {
32050
32329
  capName: "storage-provider",
32051
32330
  capScope: "system",
@@ -32424,12 +32703,42 @@ Object.freeze({
32424
32703
  addonId: null,
32425
32704
  access: "create"
32426
32705
  },
32706
+ "terminalSession.adoptLegacyMonitor": {
32707
+ capName: "terminal-session",
32708
+ capScope: "system",
32709
+ addonId: null,
32710
+ access: "create"
32711
+ },
32427
32712
  "terminalSession.close": {
32428
32713
  capName: "terminal-session",
32429
32714
  capScope: "system",
32430
32715
  addonId: null,
32431
32716
  access: "create"
32432
32717
  },
32718
+ "terminalSession.createInstance": {
32719
+ capName: "terminal-session",
32720
+ capScope: "system",
32721
+ addonId: null,
32722
+ access: "create"
32723
+ },
32724
+ "terminalSession.deleteInstance": {
32725
+ capName: "terminal-session",
32726
+ capScope: "system",
32727
+ addonId: null,
32728
+ access: "delete"
32729
+ },
32730
+ "terminalSession.listInstances": {
32731
+ capName: "terminal-session",
32732
+ capScope: "system",
32733
+ addonId: null,
32734
+ access: "view"
32735
+ },
32736
+ "terminalSession.listLegacyCameras": {
32737
+ capName: "terminal-session",
32738
+ capScope: "system",
32739
+ addonId: null,
32740
+ access: "view"
32741
+ },
32433
32742
  "terminalSession.listProfiles": {
32434
32743
  capName: "terminal-session",
32435
32744
  capScope: "system",
@@ -32448,12 +32757,30 @@ Object.freeze({
32448
32757
  addonId: null,
32449
32758
  access: "create"
32450
32759
  },
32760
+ "terminalSession.pullOutput": {
32761
+ capName: "terminal-session",
32762
+ capScope: "system",
32763
+ addonId: null,
32764
+ access: "create"
32765
+ },
32451
32766
  "terminalSession.resize": {
32452
32767
  capName: "terminal-session",
32453
32768
  capScope: "system",
32454
32769
  addonId: null,
32455
32770
  access: "create"
32456
32771
  },
32772
+ "terminalSession.setInstanceEnabled": {
32773
+ capName: "terminal-session",
32774
+ capScope: "system",
32775
+ addonId: null,
32776
+ access: "create"
32777
+ },
32778
+ "terminalSession.writeInput": {
32779
+ capName: "terminal-session",
32780
+ capScope: "system",
32781
+ addonId: null,
32782
+ access: "create"
32783
+ },
32457
32784
  "toast.onToast": {
32458
32785
  capName: "toast",
32459
32786
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -7723,12 +7723,11 @@ var RecordingConfigSchema = object({
7723
7723
  /**
7724
7724
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7725
7725
  *
7726
- * One shape shared by the recorder's `relocateFootage` (segments) and
7727
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7728
- * page renders both movers with one component. Jobs are in-RAM (a restart
7729
- * forgets them re-running is safe by construction: copy-if-absent, delete
7730
- * after verify) and each completed/failed run also lands one durable ops-log
7731
- * row on the owning addon's surface.
7726
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7727
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7728
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7729
+ * Each completed/failed run also lands one durable ops-log row on its owning
7730
+ * addon surface.
7732
7731
  */
7733
7732
  var RelocateJobStateSchema = _enum([
7734
7733
  "running",
@@ -7755,19 +7754,100 @@ var RelocateJobSchema = object({
7755
7754
  finishedAt: number().nullable(),
7756
7755
  error: string().nullable()
7757
7756
  });
7757
+ /** Profile-derived footage selection used only by the migration coordinator:
7758
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7759
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7758
7760
  var RelocateFootageInputSchema = object({
7759
- deviceId: number().optional(),
7760
7761
  fromLocationId: string(),
7761
7762
  toLocationId: string(),
7762
7763
  entities: array(_enum(["segments"])).optional(),
7764
+ /** Limits relocation to the logical profile class. Omit only for the
7765
+ * pre-orchestration compatibility path. */
7766
+ footageClass: RelocateFootageClassSchema.optional(),
7763
7767
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7764
7768
  * never allowed to starve live writers. */
7765
7769
  throttleMbps: number().min(1).max(1e3).optional()
7766
7770
  });
7767
- var RelocateMediaInputSchema = object({
7768
- deviceId: number().optional(),
7771
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7772
+ * from persistent recording settings: a migration never changes
7773
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7774
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7775
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7776
+ var StorageMigrationMediaMoveInputSchema = object({
7769
7777
  toLocationId: string(),
7770
7778
  throttleMbps: number().min(1).max(1e3).optional()
7779
+ }).extend({ leaseId: string().min(1) });
7780
+ /** The independently selectable logical storage classes. `recordings`
7781
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7782
+ * segments; `eventMedia` is post-analysis blobs. */
7783
+ var StorageMigrationClassSchema = _enum([
7784
+ "recordings",
7785
+ "recordingsLow",
7786
+ "eventMedia"
7787
+ ]);
7788
+ /** A destination is always an existing, fully-qualified location id. The
7789
+ * migration API intentionally never changes a source location's `basePath`:
7790
+ * callers create a new `<type>:<slug>` location, then select it here. */
7791
+ var StorageMigrationDestinationsSchema = object({
7792
+ recordings: string().min(1).optional(),
7793
+ recordingsLow: string().min(1).optional(),
7794
+ eventMedia: string().min(1).optional()
7795
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7796
+ /** Shared input for planning and starting an orchestrated storage migration. */
7797
+ var StorageMigrationInputSchema = object({
7798
+ destinations: StorageMigrationDestinationsSchema,
7799
+ throttleMbps: number().min(1).max(1e3).optional()
7800
+ });
7801
+ /** The durable coordinator state machine. The only phase that changes default
7802
+ * locations is `repointing`, after every selected mover has completed and been
7803
+ * verified. */
7804
+ var StorageMigrationPhaseSchema = _enum([
7805
+ "planning",
7806
+ "pausing",
7807
+ "moving",
7808
+ "verifying",
7809
+ "repointing",
7810
+ "refreshing",
7811
+ "resuming",
7812
+ "done",
7813
+ "failed",
7814
+ "cancelled"
7815
+ ]);
7816
+ var StorageMigrationParticipantSchema = _enum([
7817
+ "pipeline",
7818
+ "recorder",
7819
+ "analytics"
7820
+ ]);
7821
+ var StorageMigrationMoveSchema = object({
7822
+ storageClass: StorageMigrationClassSchema,
7823
+ fromLocationId: string(),
7824
+ toLocationId: string(),
7825
+ moverJobId: string().nullable(),
7826
+ state: RelocateJobStateSchema.nullable(),
7827
+ error: string().nullable()
7828
+ });
7829
+ var StorageMigrationJobSchema = object({
7830
+ jobId: string(),
7831
+ phase: StorageMigrationPhaseSchema,
7832
+ destinations: StorageMigrationDestinationsSchema,
7833
+ throttleMbps: number(),
7834
+ moves: array(StorageMigrationMoveSchema),
7835
+ pauseLeaseId: string().nullable(),
7836
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7837
+ repointed: boolean(),
7838
+ cancelRequested: boolean(),
7839
+ startedAt: number(),
7840
+ updatedAt: number(),
7841
+ finishedAt: number().nullable(),
7842
+ error: string().nullable()
7843
+ });
7844
+ var StorageMigrationPlanSchema = object({
7845
+ destinations: StorageMigrationDestinationsSchema,
7846
+ moves: array(object({
7847
+ storageClass: StorageMigrationClassSchema,
7848
+ fromLocationId: string(),
7849
+ toLocationId: string()
7850
+ }))
7771
7851
  });
7772
7852
  /**
7773
7853
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16506,13 +16586,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16506
16586
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16507
16587
  kind: "mutation",
16508
16588
  auth: "admin"
16509
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16589
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16510
16590
  kind: "mutation",
16511
16591
  auth: "admin"
16512
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16513
- kind: "query",
16592
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16593
+ kind: "mutation",
16514
16594
  auth: "admin"
16515
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16595
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16596
+ kind: "mutation",
16597
+ auth: "admin"
16598
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16599
+ kind: "mutation",
16600
+ auth: "admin"
16601
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16516
16602
  kind: "mutation",
16517
16603
  auth: "admin"
16518
16604
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -18042,7 +18128,13 @@ var NodeInferenceDevicesSchema = object({
18042
18128
  reachable: boolean(),
18043
18129
  devices: array(NodeInferenceDeviceSchema).readonly()
18044
18130
  });
18045
- method(object({
18131
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
18132
+ kind: "mutation",
18133
+ auth: "admin"
18134
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
18135
+ kind: "mutation",
18136
+ auth: "admin"
18137
+ }), method(object({
18046
18138
  deviceId: number(),
18047
18139
  agentNodeId: string()
18048
18140
  }), object({ success: literal(true) }), {
@@ -18716,6 +18808,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18716
18808
  locationId: string(),
18717
18809
  targetBytes: number().int().positive()
18718
18810
  }), EvictResultSchema, { kind: "mutation" });
18811
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18812
+ kind: "mutation",
18813
+ auth: "admin"
18814
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18815
+ kind: "mutation",
18816
+ auth: "admin"
18817
+ });
18719
18818
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18720
18819
  providerId: string().min(1),
18721
18820
  displayName: string().min(1),
@@ -18819,7 +18918,67 @@ var TerminalProfileInfoSchema = object({
18819
18918
  label: string(),
18820
18919
  description: string().optional()
18821
18920
  });
18822
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18921
+ /**
18922
+ * A durable operator-created Terminal instance. Profiles are templates; only
18923
+ * an instance declares a camera.
18924
+ */
18925
+ var TerminalInstanceInfoSchema = object({
18926
+ instanceId: string(),
18927
+ cameraStableId: string(),
18928
+ nodeId: string(),
18929
+ profileId: string(),
18930
+ profileLabel: string(),
18931
+ name: string(),
18932
+ enabled: boolean()
18933
+ });
18934
+ var TerminalLegacyCameraSchema = object({
18935
+ stableId: string(),
18936
+ nodeId: string(),
18937
+ profileId: string(),
18938
+ profileLabel: string(),
18939
+ name: string(),
18940
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18941
+ adoptable: boolean()
18942
+ });
18943
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18944
+ seq: number().int().positive(),
18945
+ kind: literal("data"),
18946
+ data: string()
18947
+ }), object({
18948
+ seq: number().int().positive(),
18949
+ kind: literal("exit"),
18950
+ exitCode: number().int(),
18951
+ signal: number().int().optional()
18952
+ })]);
18953
+ var TerminalOutputBatchSchema = object({
18954
+ cursor: number().int().nonnegative(),
18955
+ reset: boolean(),
18956
+ snapshot: string().optional(),
18957
+ events: array(TerminalOutputEventSchema).readonly()
18958
+ });
18959
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18960
+ targetNodeId: string().min(1),
18961
+ profileId: string().min(1),
18962
+ name: string().trim().min(1).max(160).optional()
18963
+ }), TerminalInstanceInfoSchema, {
18964
+ kind: "mutation",
18965
+ auth: "admin"
18966
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18967
+ kind: "mutation",
18968
+ auth: "admin"
18969
+ }), method(object({
18970
+ instanceId: string().min(1),
18971
+ enabled: boolean()
18972
+ }), TerminalInstanceInfoSchema, {
18973
+ kind: "mutation",
18974
+ auth: "admin"
18975
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18976
+ stableId: string().min(1),
18977
+ name: string().trim().min(1).max(160).optional()
18978
+ }), TerminalInstanceInfoSchema, {
18979
+ kind: "mutation",
18980
+ auth: "admin"
18981
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18823
18982
  profileId: string(),
18824
18983
  cols: number().int().positive(),
18825
18984
  rows: number().int().positive()
@@ -18833,6 +18992,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18833
18992
  }), _void(), {
18834
18993
  kind: "mutation",
18835
18994
  auth: "admin"
18995
+ }), method(object({
18996
+ sessionId: string(),
18997
+ afterSeq: number().int().nonnegative(),
18998
+ waitMs: number().int().min(0).max(2e3).default(0),
18999
+ /**
19000
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
19001
+ * browser's initial repaint remains immediate; the camera snapshot
19002
+ * relay uses it to avoid encoding a blank startup frame.
19003
+ */
19004
+ waitForOutput: boolean().optional()
19005
+ }), TerminalOutputBatchSchema, {
19006
+ kind: "mutation",
19007
+ auth: "admin",
19008
+ timeoutMs: 15e3
19009
+ }), method(object({
19010
+ sessionId: string(),
19011
+ data: string().max(64 * 1024)
19012
+ }), _void(), {
19013
+ kind: "mutation",
19014
+ auth: "admin"
18836
19015
  }), method(object({ sessionId: string() }), _void(), {
18837
19016
  kind: "mutation",
18838
19017
  auth: "admin"
@@ -21337,6 +21516,7 @@ var FaceInfoSchema = object({
21337
21516
  var FaceFilterEnum = _enum([
21338
21517
  "unassigned",
21339
21518
  "recognized",
21519
+ "identified",
21340
21520
  "all"
21341
21521
  ]);
21342
21522
  var MediaFileLiteSchema$1 = object({
@@ -21365,6 +21545,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21365
21545
  kind: "mutation",
21366
21546
  auth: "admin"
21367
21547
  }), method(object({
21548
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21549
+ deviceId: number().int().optional(),
21368
21550
  limit: number().int().positive().optional(),
21369
21551
  filter: FaceFilterEnum.optional(),
21370
21552
  /**
@@ -23594,6 +23776,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23594
23776
  capName: string().min(1).max(64),
23595
23777
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23596
23778
  valuePath: string().min(1).max(64)
23779
+ }),
23780
+ object({
23781
+ kind: literal("latest-recognition"),
23782
+ recognition: _enum(["person", "plate"])
23597
23783
  })
23598
23784
  ]);
23599
23785
  var OsdSlotBindingSchema = object({
@@ -23699,6 +23885,15 @@ method(object({ deviceId: number().int() }), object({
23699
23885
  }), object({ success: literal(true) }), {
23700
23886
  kind: "mutation",
23701
23887
  auth: "admin"
23888
+ }), method(object({
23889
+ sourceDeviceId: number().int(),
23890
+ targetDeviceId: number().int()
23891
+ }), object({
23892
+ copied: number().int().nonnegative(),
23893
+ skipped: number().int().nonnegative()
23894
+ }), {
23895
+ kind: "mutation",
23896
+ auth: "admin"
23702
23897
  }), method(object({
23703
23898
  deviceId: number().int(),
23704
23899
  slotId: string().min(1),
@@ -24796,13 +24991,19 @@ method(object({
24796
24991
  }), {
24797
24992
  kind: "mutation",
24798
24993
  auth: "admin"
24799
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24994
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24800
24995
  kind: "mutation",
24801
24996
  auth: "admin"
24802
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24803
- kind: "query",
24997
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24998
+ kind: "mutation",
24804
24999
  auth: "admin"
24805
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25000
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
25001
+ kind: "mutation",
25002
+ auth: "admin"
25003
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
25004
+ kind: "mutation",
25005
+ auth: "admin"
25006
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24806
25007
  kind: "mutation",
24807
25008
  auth: "admin"
24808
25009
  });
@@ -30408,6 +30609,12 @@ Object.freeze({
30408
30609
  addonId: null,
30409
30610
  access: "delete"
30410
30611
  },
30612
+ "osdManager.copyDeviceConfiguration": {
30613
+ capName: "osd-manager",
30614
+ capScope: "system",
30615
+ addonId: null,
30616
+ access: "create"
30617
+ },
30411
30618
  "osdManager.getConditionSupport": {
30412
30619
  capName: "osd-manager",
30413
30620
  capScope: "system",
@@ -30504,7 +30711,7 @@ Object.freeze({
30504
30711
  addonId: null,
30505
30712
  access: "create"
30506
30713
  },
30507
- "pipelineAnalytics.cancelMediaRelocate": {
30714
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30508
30715
  capName: "pipeline-analytics",
30509
30716
  capScope: "device",
30510
30717
  addonId: null,
@@ -30576,12 +30783,6 @@ Object.freeze({
30576
30783
  addonId: null,
30577
30784
  access: "view"
30578
30785
  },
30579
- "pipelineAnalytics.getMediaRelocateStatus": {
30580
- capName: "pipeline-analytics",
30581
- capScope: "device",
30582
- addonId: null,
30583
- access: "view"
30584
- },
30585
30786
  "pipelineAnalytics.getMotionEvents": {
30586
30787
  capName: "pipeline-analytics",
30587
30788
  capScope: "device",
@@ -30618,6 +30819,12 @@ Object.freeze({
30618
30819
  addonId: null,
30619
30820
  access: "view"
30620
30821
  },
30822
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30823
+ capName: "pipeline-analytics",
30824
+ capScope: "device",
30825
+ addonId: null,
30826
+ access: "view"
30827
+ },
30621
30828
  "pipelineAnalytics.getTrack": {
30622
30829
  capName: "pipeline-analytics",
30623
30830
  capScope: "device",
@@ -30696,6 +30903,12 @@ Object.freeze({
30696
30903
  addonId: null,
30697
30904
  access: "view"
30698
30905
  },
30906
+ "pipelineAnalytics.pauseForStorageMigration": {
30907
+ capName: "pipeline-analytics",
30908
+ capScope: "device",
30909
+ addonId: null,
30910
+ access: "create"
30911
+ },
30699
30912
  "pipelineAnalytics.proposeRetrainAnnotations": {
30700
30913
  capName: "pipeline-analytics",
30701
30914
  capScope: "device",
@@ -30726,7 +30939,7 @@ Object.freeze({
30726
30939
  addonId: null,
30727
30940
  access: "create"
30728
30941
  },
30729
- "pipelineAnalytics.relocateMedia": {
30942
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30730
30943
  capName: "pipeline-analytics",
30731
30944
  capScope: "device",
30732
30945
  addonId: null,
@@ -30738,6 +30951,12 @@ Object.freeze({
30738
30951
  addonId: null,
30739
30952
  access: "create"
30740
30953
  },
30954
+ "pipelineAnalytics.resumeForStorageMigration": {
30955
+ capName: "pipeline-analytics",
30956
+ capScope: "device",
30957
+ addonId: null,
30958
+ access: "create"
30959
+ },
30741
30960
  "pipelineAnalytics.saveRetrainAnnotations": {
30742
30961
  capName: "pipeline-analytics",
30743
30962
  capScope: "device",
@@ -30762,6 +30981,12 @@ Object.freeze({
30762
30981
  addonId: null,
30763
30982
  access: "create"
30764
30983
  },
30984
+ "pipelineAnalytics.startStorageMigrationMove": {
30985
+ capName: "pipeline-analytics",
30986
+ capScope: "device",
30987
+ addonId: null,
30988
+ access: "create"
30989
+ },
30765
30990
  "pipelineAnalytics.wipeAllAnalytics": {
30766
30991
  capName: "pipeline-analytics",
30767
30992
  capScope: "device",
@@ -31128,6 +31353,12 @@ Object.freeze({
31128
31353
  addonId: null,
31129
31354
  access: "view"
31130
31355
  },
31356
+ "pipelineOrchestrator.pauseForStorageMigration": {
31357
+ capName: "pipeline-orchestrator",
31358
+ capScope: "system",
31359
+ addonId: null,
31360
+ access: "create"
31361
+ },
31131
31362
  "pipelineOrchestrator.rebalance": {
31132
31363
  capName: "pipeline-orchestrator",
31133
31364
  capScope: "system",
@@ -31152,6 +31383,12 @@ Object.freeze({
31152
31383
  addonId: null,
31153
31384
  access: "view"
31154
31385
  },
31386
+ "pipelineOrchestrator.resumeForStorageMigration": {
31387
+ capName: "pipeline-orchestrator",
31388
+ capScope: "system",
31389
+ addonId: null,
31390
+ access: "create"
31391
+ },
31155
31392
  "pipelineOrchestrator.saveTemplate": {
31156
31393
  capName: "pipeline-orchestrator",
31157
31394
  capScope: "system",
@@ -31548,7 +31785,7 @@ Object.freeze({
31548
31785
  addonId: null,
31549
31786
  access: "create"
31550
31787
  },
31551
- "recording.cancelRelocate": {
31788
+ "recording.cancelStorageMigrationMove": {
31552
31789
  capName: "recording",
31553
31790
  capScope: "system",
31554
31791
  addonId: null,
@@ -31584,7 +31821,7 @@ Object.freeze({
31584
31821
  addonId: null,
31585
31822
  access: "view"
31586
31823
  },
31587
- "recording.getRelocateStatus": {
31824
+ "recording.getStorageMigrationMoveStatus": {
31588
31825
  capName: "recording",
31589
31826
  capScope: "system",
31590
31827
  addonId: null,
@@ -31608,6 +31845,12 @@ Object.freeze({
31608
31845
  addonId: null,
31609
31846
  access: "view"
31610
31847
  },
31848
+ "recording.pauseForStorageMigration": {
31849
+ capName: "recording",
31850
+ capScope: "system",
31851
+ addonId: null,
31852
+ access: "create"
31853
+ },
31611
31854
  "recording.pruneFootage": {
31612
31855
  capName: "recording",
31613
31856
  capScope: "system",
@@ -31626,7 +31869,7 @@ Object.freeze({
31626
31869
  addonId: null,
31627
31870
  access: "view"
31628
31871
  },
31629
- "recording.relocateFootage": {
31872
+ "recording.refreshStorageLocationsForMigration": {
31630
31873
  capName: "recording",
31631
31874
  capScope: "system",
31632
31875
  addonId: null,
@@ -31650,12 +31893,24 @@ Object.freeze({
31650
31893
  addonId: null,
31651
31894
  access: "create"
31652
31895
  },
31896
+ "recording.resumeForStorageMigration": {
31897
+ capName: "recording",
31898
+ capScope: "system",
31899
+ addonId: null,
31900
+ access: "create"
31901
+ },
31653
31902
  "recording.setDeviceConfig": {
31654
31903
  capName: "recording",
31655
31904
  capScope: "system",
31656
31905
  addonId: null,
31657
31906
  access: "create"
31658
31907
  },
31908
+ "recording.startStorageMigrationMove": {
31909
+ capName: "recording",
31910
+ capScope: "system",
31911
+ addonId: null,
31912
+ access: "create"
31913
+ },
31659
31914
  "recordingExport.cancelExport": {
31660
31915
  capName: "recordingExport",
31661
31916
  capScope: "system",
@@ -32046,6 +32301,30 @@ Object.freeze({
32046
32301
  addonId: null,
32047
32302
  access: "view"
32048
32303
  },
32304
+ "storageMigration.cancel": {
32305
+ capName: "storage-migration",
32306
+ capScope: "system",
32307
+ addonId: null,
32308
+ access: "create"
32309
+ },
32310
+ "storageMigration.plan": {
32311
+ capName: "storage-migration",
32312
+ capScope: "system",
32313
+ addonId: null,
32314
+ access: "view"
32315
+ },
32316
+ "storageMigration.start": {
32317
+ capName: "storage-migration",
32318
+ capScope: "system",
32319
+ addonId: null,
32320
+ access: "create"
32321
+ },
32322
+ "storageMigration.status": {
32323
+ capName: "storage-migration",
32324
+ capScope: "system",
32325
+ addonId: null,
32326
+ access: "view"
32327
+ },
32049
32328
  "storageProvider.abortUpload": {
32050
32329
  capName: "storage-provider",
32051
32330
  capScope: "system",
@@ -32424,12 +32703,42 @@ Object.freeze({
32424
32703
  addonId: null,
32425
32704
  access: "create"
32426
32705
  },
32706
+ "terminalSession.adoptLegacyMonitor": {
32707
+ capName: "terminal-session",
32708
+ capScope: "system",
32709
+ addonId: null,
32710
+ access: "create"
32711
+ },
32427
32712
  "terminalSession.close": {
32428
32713
  capName: "terminal-session",
32429
32714
  capScope: "system",
32430
32715
  addonId: null,
32431
32716
  access: "create"
32432
32717
  },
32718
+ "terminalSession.createInstance": {
32719
+ capName: "terminal-session",
32720
+ capScope: "system",
32721
+ addonId: null,
32722
+ access: "create"
32723
+ },
32724
+ "terminalSession.deleteInstance": {
32725
+ capName: "terminal-session",
32726
+ capScope: "system",
32727
+ addonId: null,
32728
+ access: "delete"
32729
+ },
32730
+ "terminalSession.listInstances": {
32731
+ capName: "terminal-session",
32732
+ capScope: "system",
32733
+ addonId: null,
32734
+ access: "view"
32735
+ },
32736
+ "terminalSession.listLegacyCameras": {
32737
+ capName: "terminal-session",
32738
+ capScope: "system",
32739
+ addonId: null,
32740
+ access: "view"
32741
+ },
32433
32742
  "terminalSession.listProfiles": {
32434
32743
  capName: "terminal-session",
32435
32744
  capScope: "system",
@@ -32448,12 +32757,30 @@ Object.freeze({
32448
32757
  addonId: null,
32449
32758
  access: "create"
32450
32759
  },
32760
+ "terminalSession.pullOutput": {
32761
+ capName: "terminal-session",
32762
+ capScope: "system",
32763
+ addonId: null,
32764
+ access: "create"
32765
+ },
32451
32766
  "terminalSession.resize": {
32452
32767
  capName: "terminal-session",
32453
32768
  capScope: "system",
32454
32769
  addonId: null,
32455
32770
  access: "create"
32456
32771
  },
32772
+ "terminalSession.setInstanceEnabled": {
32773
+ capName: "terminal-session",
32774
+ capScope: "system",
32775
+ addonId: null,
32776
+ access: "create"
32777
+ },
32778
+ "terminalSession.writeInput": {
32779
+ capName: "terminal-session",
32780
+ capScope: "system",
32781
+ addonId: null,
32782
+ access: "create"
32783
+ },
32457
32784
  "toast.onToast": {
32458
32785
  capName: "toast",
32459
32786
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-import-alexa",
3
- "version": "0.2.10",
3
+ "version": "0.2.12",
4
4
  "description": "Alexa device-import provider for CamStack — imports the smart-home devices in a user's Alexa account via the unofficial alexa-remote2 cookie/token client (the inverse of the Alexa exporter)",
5
5
  "keywords": [
6
6
  "camstack",