@camstack/addon-agent-ui 1.2.50 → 1.2.52

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 (2) hide show
  1. package/dist/addon.js +235 -74
  2. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -8099,6 +8099,13 @@ var MediaRelocateModeSchema = _enum([
8099
8099
  ]);
8100
8100
  var RelocateMediaInputSchema = object({
8101
8101
  toLocationId: string(),
8102
+ /**
8103
+ * Restrict the pass to rows currently on this location. Omitted / `'*'` =
8104
+ * every row that is not already on `toLocationId` (the historical
8105
+ * behaviour). A named source is what a from→to migration needs: without it
8106
+ * "move events off disk 2" also emptied disk 1.
8107
+ */
8108
+ fromLocationId: string().optional(),
8102
8109
  throttleMbps: number().min(1).max(1e3).optional(),
8103
8110
  /** Omitted = `move`, the pre-existing behaviour. */
8104
8111
  mode: MediaRelocateModeSchema.optional()
@@ -8166,6 +8173,19 @@ var StorageMigrationDestinationsSchema = object({
8166
8173
  galleryMedia: string().min(1).optional()
8167
8174
  }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
8168
8175
  /**
8176
+ * Optional named source per class. Omitted = the class's current default
8177
+ * (the historical behaviour). A named source that is NOT the default is a
8178
+ * drain of that disk: bytes move, the default stays, and the source is
8179
+ * disabled when the move finishes.
8180
+ */
8181
+ var StorageMigrationSourcesSchema = object({
8182
+ recordings: string().min(1).optional(),
8183
+ recordingsLow: string().min(1).optional(),
8184
+ eventMedia: string().min(1).optional(),
8185
+ backups: string().min(1).optional(),
8186
+ galleryMedia: string().min(1).optional()
8187
+ }).optional();
8188
+ /**
8169
8189
  * How a migration sequences the cutover against the byte move.
8170
8190
  *
8171
8191
  * - `blocking` — the historical order: pause, move every byte, repoint,
@@ -8187,6 +8207,8 @@ var StorageMigrationModeSchema = _enum(["blocking", "nonBlocking"]);
8187
8207
  /** Shared input for planning and starting an orchestrated storage migration. */
8188
8208
  var StorageMigrationInputSchema = object({
8189
8209
  destinations: StorageMigrationDestinationsSchema,
8210
+ /** Omitted = each class's current default. */
8211
+ sources: StorageMigrationSourcesSchema,
8190
8212
  throttleMbps: number().min(1).max(1e3).optional(),
8191
8213
  /** Omitted = `blocking`, which stays the default. */
8192
8214
  mode: StorageMigrationModeSchema.optional()
@@ -8266,6 +8288,13 @@ var StorageMigrationMoveSchema = object({
8266
8288
  storageClass: StorageMigrationClassSchema,
8267
8289
  fromLocationId: string(),
8268
8290
  toLocationId: string(),
8291
+ /**
8292
+ * True when `from` was NOT the class default at plan time. The move still
8293
+ * copies bytes, but the default is left alone and the source is disabled
8294
+ * once the copy verifies. Absent on jobs planned before this field existed
8295
+ * — those jobs always repointed, which is `false`.
8296
+ */
8297
+ freezeSource: boolean().optional(),
8269
8298
  moverJobId: string().nullable(),
8270
8299
  state: RelocateJobStateSchema.nullable(),
8271
8300
  error: string().nullable(),
@@ -8279,6 +8308,7 @@ var StorageMigrationJobSchema = object({
8279
8308
  * can tell a seconds-long cutover from a thirty-hour one. */
8280
8309
  mode: StorageMigrationModeSchema,
8281
8310
  destinations: StorageMigrationDestinationsSchema,
8311
+ sources: StorageMigrationSourcesSchema,
8282
8312
  throttleMbps: number(),
8283
8313
  moves: array(StorageMigrationMoveSchema),
8284
8314
  pauseLeaseId: string().nullable(),
@@ -8304,6 +8334,7 @@ var StorageMigrationFindingSchema = object({
8304
8334
  });
8305
8335
  var StorageMigrationPlanSchema = object({
8306
8336
  destinations: StorageMigrationDestinationsSchema,
8337
+ sources: StorageMigrationSourcesSchema,
8307
8338
  /** The mode this plan was built for. A plan is only valid for its mode: the
8308
8339
  * `eventMedia` seal gate and the single-cardinality refusal both depend on
8309
8340
  * it. */
@@ -8311,7 +8342,8 @@ var StorageMigrationPlanSchema = object({
8311
8342
  moves: array(object({
8312
8343
  storageClass: StorageMigrationClassSchema,
8313
8344
  fromLocationId: string(),
8314
- toLocationId: string()
8345
+ toLocationId: string(),
8346
+ freezeSource: boolean().optional()
8315
8347
  })),
8316
8348
  findings: array(StorageMigrationFindingSchema)
8317
8349
  });
@@ -8489,10 +8521,51 @@ var LedgerWalkReportSchema = object({
8489
8521
  var RelocatableMediaCountSchema = object({ rows: number().int().nonnegative() }).nullable();
8490
8522
  var RelocatableMediaCountInputSchema = object({
8491
8523
  toLocationId: string().min(1),
8524
+ /** Restrict the count to one source; omitted / `'*'` = every non-target row. */
8525
+ fromLocationId: string().optional(),
8492
8526
  /** Omitted = `move`. */
8493
8527
  mode: MediaRelocateModeSchema.optional()
8494
8528
  });
8495
8529
  /**
8530
+ * Operator cleanup of leftover analytics rows, optional debug media, and
8531
+ * ghost ledger entries on frozen footage locations.
8532
+ *
8533
+ * A pass is tens of minutes on a standing backlog. The hub method RETURNS
8534
+ * `{ jobId }` immediately; progress is `cleanupStatus`. Awaiting the work
8535
+ * is how `addons.custom` hit the 60 s UDS deadline while reclaim continued
8536
+ * with no operator-visible status.
8537
+ */
8538
+ var StorageCleanupPhaseSchema = _enum([
8539
+ "orphans",
8540
+ "debug-media",
8541
+ "ghost-ledger",
8542
+ "done",
8543
+ "failed",
8544
+ "cancelled"
8545
+ ]);
8546
+ var StorageCleanupInputSchema = object({
8547
+ /** Also walk motion stills / track filmstrips. Off by default. */
8548
+ includeDebugMedia: boolean().optional() });
8549
+ var StorageCleanupJobSchema = object({
8550
+ jobId: string(),
8551
+ phase: StorageCleanupPhaseSchema,
8552
+ includeDebugMedia: boolean(),
8553
+ orphansReclaimed: number().int().nonnegative(),
8554
+ orphanBytesReclaimed: number().int().nonnegative(),
8555
+ debugMediaReclaimed: number().int().nonnegative(),
8556
+ debugMediaBytesReclaimed: number().int().nonnegative(),
8557
+ ghostsForgotten: number().int().nonnegative(),
8558
+ ghostBytesForgotten: number().int().nonnegative(),
8559
+ /** Short operator-facing line: current collection, pass, or location. */
8560
+ detail: string().nullable(),
8561
+ cancelRequested: boolean(),
8562
+ startedAt: number(),
8563
+ updatedAt: number(),
8564
+ finishedAt: number().nullable(),
8565
+ error: string().nullable()
8566
+ });
8567
+ var StorageCleanupStatusInputSchema = object({ jobId: string().optional() });
8568
+ /**
8496
8569
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
8497
8570
  * storage a location serves. Defined here (not in `capabilities/storage.cap.ts`)
8498
8571
  * so the persisted record schema and the consumer-facing cap can both consume it
@@ -8520,11 +8593,10 @@ var StorageLocationTypeSchema = string().regex(/^[a-z][a-zA-Z0-9-]*$/);
8520
8593
  * The default location for a type uses `id === <type>:default` by
8521
8594
  * convention (the bare type ref like `'backups'` resolves to it).
8522
8595
  *
8523
- * `isSystem: true` marks a location as orchestrator-seeded and
8524
- * undeletable. The bootstrap-installed defaults (one per type) carry
8525
- * this flag; operator-added locations don't. Editing the config of
8526
- * a system location is allowed (path migration, provider swap) but
8527
- * deleting it is rejected at the cap level.
8596
+ * `isSystem` is a legacy persisted flag. Seed still creates the initial
8597
+ * `<type>:default` locations; the flag is no longer a lock, a badge, or a
8598
+ * prune selector. New writes leave it false. Deletion is gated on uniqueness
8599
+ * / last-enabled, not on this bit.
8528
8600
  */
8529
8601
  var StorageLocationSchema = object({
8530
8602
  id: string().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/),
@@ -12786,6 +12858,12 @@ method(object({
12786
12858
  }), _void(), {
12787
12859
  kind: "mutation",
12788
12860
  auth: "admin"
12861
+ }), method(object({
12862
+ from: string(),
12863
+ to: string()
12864
+ }), object({ moved: number() }), {
12865
+ kind: "mutation",
12866
+ auth: "admin"
12789
12867
  }), method(object({
12790
12868
  deviceId: number(),
12791
12869
  disabled: boolean()
@@ -18716,46 +18794,6 @@ var RecentTracksPageSchema = object({
18716
18794
  /** Cursor for the next page, or null when this page is the last. */
18717
18795
  nextCursor: string().nullable()
18718
18796
  });
18719
- var LIST_GROUPS_DEFAULT_LIMIT = 40;
18720
- var LIST_GROUPS_MAX_LIMIT = 100;
18721
- var AnalyticsGroupRecordSchema = object({
18722
- id: string(),
18723
- deviceId: number().int(),
18724
- openedAt: number().int(),
18725
- closedAt: number().int(),
18726
- timestamp: number().int(),
18727
- memberCount: number().int(),
18728
- memberTrackIds: array(string()).readonly(),
18729
- className: string(),
18730
- classes: array(string()).readonly(),
18731
- /** Relative event-media path, or null when the group has no picture yet. */
18732
- mediaUrl: string().nullable(),
18733
- singleton: boolean()
18734
- });
18735
- var AnalyticsGroupMemberSchema = object({
18736
- trackId: string(),
18737
- deviceId: number().int(),
18738
- className: string(),
18739
- firstSeen: number().int(),
18740
- lastSeen: number().int(),
18741
- mediaUrl: string().nullable()
18742
- });
18743
- var AnalyticsGroupDetailSchema = AnalyticsGroupRecordSchema.extend({ members: array(AnalyticsGroupMemberSchema).readonly() });
18744
- var ListGroupsQueryInput = object({
18745
- /** Devices to merge. An empty array yields `{ groups: [], nextCursor: null }`. */
18746
- deviceIds: array(number()),
18747
- /** Window lower bound on `closedAt` (inclusive). */
18748
- since: number().optional(),
18749
- /** Window upper bound on `openedAt` (inclusive). */
18750
- until: number().optional(),
18751
- limit: number().int().min(1).max(LIST_GROUPS_MAX_LIMIT).default(LIST_GROUPS_DEFAULT_LIMIT),
18752
- /** Opaque continuation cursor from a previous page's `nextCursor`. */
18753
- cursor: string().optional()
18754
- });
18755
- var ListGroupsPageSchema = object({
18756
- groups: array(AnalyticsGroupRecordSchema).readonly(),
18757
- nextCursor: string().nullable()
18758
- });
18759
18797
  var KEY_EVENTS_DEFAULT_LIMIT = 50;
18760
18798
  var KEY_EVENTS_MAX_LIMIT = 200;
18761
18799
  var KeyEventQueryInput = object({
@@ -18859,9 +18897,7 @@ var TrackCascadeCountsSchema = object({
18859
18897
  /** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
18860
18898
  plates: number().int(),
18861
18899
  /** Per-track CLIP search vectors removed (best-effort). */
18862
- embeddings: number().int(),
18863
- /** Group membership + group rows removed with their last member (best-effort). */
18864
- groups: number().int()
18900
+ embeddings: number().int()
18865
18901
  });
18866
18902
  /** Disk-wins reconcile: media rows whose blobs are gone, then empty tracks. */
18867
18903
  var DiskReconcileCountsSchema = object({
@@ -19031,6 +19067,47 @@ var RebuildStatusSchema = object({
19031
19067
  /** Present when the pass ended by throwing. */
19032
19068
  error: string().nullable()
19033
19069
  });
19070
+ /**
19071
+ * Acknowledgement that a debug-media reclaim STARTED.
19072
+ *
19073
+ * The pass is paced at ~2 MB/s over a standing 100 GB — tens of minutes — so
19074
+ * it runs detached and this returns immediately. Awaiting it is how the
19075
+ * `addons.custom` door hit the 60 s UDS deadline while the walk carried on
19076
+ * with no status. Poll {@link pipelineAnalyticsCapability.methods.getMediaReclaimStatus}.
19077
+ */
19078
+ var MediaReclaimStartResultSchema = object({
19079
+ started: boolean(),
19080
+ /** True when a pass was already running; the new request is ignored. */
19081
+ alreadyRunning: boolean()
19082
+ });
19083
+ var MediaReclaimInputSchema = object({
19084
+ mode: _enum(["report", "reclaim"]).default("report"),
19085
+ scopes: array(_enum(["motion-still", "track-filmstrip"])).min(1).optional(),
19086
+ deviceIds: array(number().int()).min(1).optional(),
19087
+ restart: boolean().optional(),
19088
+ pageSize: number().int().min(50).max(5e3).optional(),
19089
+ maxRowsPerDevice: number().int().min(1).max(5e5).optional(),
19090
+ maxReclaimPerDevice: number().int().min(1).max(5e5).optional(),
19091
+ maxBytesPerRun: number().int().min(1).optional(),
19092
+ budgetMinutes: number().int().min(1).max(720).optional(),
19093
+ throttleBytesPerSec: number().int().min(64 * 1024).optional(),
19094
+ graceMinutes: number().int().min(1).max(10080).optional()
19095
+ });
19096
+ var MediaReclaimStatusSchema = object({
19097
+ running: boolean(),
19098
+ mode: _enum(["report", "reclaim"]).nullable(),
19099
+ totalExamined: number(),
19100
+ totalEligible: number(),
19101
+ totalReclaimed: number(),
19102
+ totalBytesReclaimed: number(),
19103
+ totalRefused: number(),
19104
+ /** Device+scope windows finished in this pass. */
19105
+ devicesDone: number(),
19106
+ complete: boolean().nullable(),
19107
+ startedAtMs: number().nullable(),
19108
+ finishedAtMs: number().nullable(),
19109
+ error: string().nullable()
19110
+ });
19034
19111
  var ReplayFrameInputSchema = object({
19035
19112
  timestamp: number(),
19036
19113
  frame: PipelineRunResultBridge
@@ -19069,10 +19146,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19069
19146
  * stationary registry). Default false: the timeline lists passages,
19070
19147
  * not parking records (operator decision, 2026-08-15). */
19071
19148
  includeStationary: boolean().optional()
19072
- }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(ListGroupsQueryInput, ListGroupsPageSchema), method(object({
19073
- deviceId: number(),
19074
- groupId: string().min(1)
19075
- }), AnalyticsGroupDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19149
+ }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
19076
19150
  kind: "mutation",
19077
19151
  auth: "admin"
19078
19152
  }), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(object({ deviceId: number() }), array(EventKindDescriptorSchema).readonly()), method(object({ deviceIds: array(number()).min(1).max(200) }), array(EventKindsForDeviceSchema).readonly()), method(object({
@@ -19172,6 +19246,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19172
19246
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
19173
19247
  kind: "query",
19174
19248
  auth: "admin"
19249
+ }), method(MediaReclaimInputSchema, MediaReclaimStartResultSchema, {
19250
+ kind: "mutation",
19251
+ auth: "admin"
19252
+ }), method(object({}), MediaReclaimStatusSchema, {
19253
+ kind: "query",
19254
+ auth: "admin"
19175
19255
  }), method(object({ deviceIds: array(number()).optional() }), TrainingExportSummarySchema, {
19176
19256
  kind: "query",
19177
19257
  auth: "admin"
@@ -21142,7 +21222,13 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
21142
21222
  }), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
21143
21223
  kind: "mutation",
21144
21224
  auth: "admin"
21145
- });
21225
+ }), method(StorageCleanupInputSchema, object({ jobId: string() }), {
21226
+ kind: "mutation",
21227
+ auth: "admin"
21228
+ }), method(StorageCleanupStatusInputSchema, StorageCleanupJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
21229
+ kind: "mutation",
21230
+ auth: "admin"
21231
+ }), method(object({}), array(StorageMigrationJobSchema).readonly(), { auth: "admin" });
21146
21232
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
21147
21233
  providerId: string().min(1),
21148
21234
  displayName: string().min(1),
@@ -26520,6 +26606,33 @@ var RecordingRebalanceInputSchema = object({
26520
26606
  minMoveGb: number().min(0).optional()
26521
26607
  });
26522
26608
  /**
26609
+ * Operator-facing placement of one camera onto a recordings location.
26610
+ *
26611
+ * `pinLocationId` is the operator instruction: a location id, or `null` for
26612
+ * Auto (the planner may move this camera). `locationId` is where high/mid
26613
+ * currently write — the plan, which may disagree with the pin when Auto.
26614
+ */
26615
+ var RecordingDevicePlacementSchema = object({
26616
+ deviceId: number().int(),
26617
+ profile: string(),
26618
+ locationId: string()
26619
+ });
26620
+ var RecordingDevicePinSchema = object({
26621
+ deviceId: number().int(),
26622
+ /** Recordings-class location this camera is pinned to. */
26623
+ locationId: string()
26624
+ });
26625
+ var RecordingPlacementViewSchema = object({
26626
+ assignments: array(RecordingDevicePlacementSchema),
26627
+ pins: array(RecordingDevicePinSchema),
26628
+ defaultLocations: record(string(), string())
26629
+ });
26630
+ var RecordingSetDevicePlacementInputSchema = object({
26631
+ deviceId: number().int(),
26632
+ /** `null` = Auto. Otherwise a `recordings:*` location id. */
26633
+ locationId: string().nullable()
26634
+ });
26635
+ /**
26523
26636
  * Result of locating footage at a wall-clock instant for one device/profile.
26524
26637
  * `segment` carries the covering segment's window; `gap` reports the forward
26525
26638
  * nearest covered edge (`null` past the end of footage / when none exists)
@@ -26745,6 +26858,12 @@ method(object({
26745
26858
  }), method(RecordingRebalanceInputSchema, RecordingRebalancePlanSchema, {
26746
26859
  kind: "mutation",
26747
26860
  auth: "admin"
26861
+ }), method(object({}), RecordingPlacementViewSchema, {
26862
+ kind: "query",
26863
+ auth: "admin"
26864
+ }), method(RecordingSetDevicePlacementInputSchema, object({ ok: literal(true) }), {
26865
+ kind: "mutation",
26866
+ auth: "admin"
26748
26867
  });
26749
26868
  /**
26750
26869
  * `recording-export` cap — render a footage time range into a single downloadable
@@ -30115,6 +30234,12 @@ Object.freeze({
30115
30234
  addonId: null,
30116
30235
  access: "delete"
30117
30236
  },
30237
+ "deviceManager.renameLocation": {
30238
+ capName: "device-manager",
30239
+ capScope: "system",
30240
+ addonId: null,
30241
+ access: "create"
30242
+ },
30118
30243
  "deviceManager.runDeviceAction": {
30119
30244
  capName: "device-manager",
30120
30245
  capScope: "system",
@@ -31807,19 +31932,19 @@ Object.freeze({
31807
31932
  addonId: null,
31808
31933
  access: "view"
31809
31934
  },
31810
- "pipelineAnalytics.getGroup": {
31935
+ "pipelineAnalytics.getKeyEvents": {
31811
31936
  capName: "pipeline-analytics",
31812
31937
  capScope: "device",
31813
31938
  addonId: null,
31814
31939
  access: "view"
31815
31940
  },
31816
- "pipelineAnalytics.getKeyEvents": {
31941
+ "pipelineAnalytics.getKeyEventsBatch": {
31817
31942
  capName: "pipeline-analytics",
31818
31943
  capScope: "device",
31819
31944
  addonId: null,
31820
31945
  access: "view"
31821
31946
  },
31822
- "pipelineAnalytics.getKeyEventsBatch": {
31947
+ "pipelineAnalytics.getMediaReclaimStatus": {
31823
31948
  capName: "pipeline-analytics",
31824
31949
  capScope: "device",
31825
31950
  addonId: null,
@@ -31909,12 +32034,6 @@ Object.freeze({
31909
32034
  addonId: null,
31910
32035
  access: "view"
31911
32036
  },
31912
- "pipelineAnalytics.listGroups": {
31913
- capName: "pipeline-analytics",
31914
- capScope: "device",
31915
- addonId: null,
31916
- access: "view"
31917
- },
31918
32037
  "pipelineAnalytics.listOpsLog": {
31919
32038
  capName: "pipeline-analytics",
31920
32039
  capScope: "device",
@@ -31999,6 +32118,12 @@ Object.freeze({
31999
32118
  addonId: null,
32000
32119
  access: "create"
32001
32120
  },
32121
+ "pipelineAnalytics.reclaimDebugMedia": {
32122
+ capName: "pipeline-analytics",
32123
+ capScope: "device",
32124
+ addonId: null,
32125
+ access: "create"
32126
+ },
32002
32127
  "pipelineAnalytics.reconcileFromDisk": {
32003
32128
  capName: "pipeline-analytics",
32004
32129
  capScope: "device",
@@ -32923,6 +33048,12 @@ Object.freeze({
32923
33048
  addonId: null,
32924
33049
  access: "view"
32925
33050
  },
33051
+ "recording.getPlacement": {
33052
+ capName: "recording",
33053
+ capScope: "system",
33054
+ addonId: null,
33055
+ access: "view"
33056
+ },
32926
33057
  "recording.getPlaybackManifest": {
32927
33058
  capName: "recording",
32928
33059
  capScope: "system",
@@ -33049,6 +33180,12 @@ Object.freeze({
33049
33180
  addonId: null,
33050
33181
  access: "create"
33051
33182
  },
33183
+ "recording.setDevicePlacement": {
33184
+ capName: "recording",
33185
+ capScope: "system",
33186
+ addonId: null,
33187
+ access: "create"
33188
+ },
33052
33189
  "recording.startStorageMigrationMove": {
33053
33190
  capName: "recording",
33054
33191
  capScope: "system",
@@ -33493,12 +33630,36 @@ Object.freeze({
33493
33630
  addonId: null,
33494
33631
  access: "create"
33495
33632
  },
33633
+ "storageMigration.cleanupCancel": {
33634
+ capName: "storage-migration",
33635
+ capScope: "system",
33636
+ addonId: null,
33637
+ access: "create"
33638
+ },
33639
+ "storageMigration.cleanupStart": {
33640
+ capName: "storage-migration",
33641
+ capScope: "system",
33642
+ addonId: null,
33643
+ access: "create"
33644
+ },
33645
+ "storageMigration.cleanupStatus": {
33646
+ capName: "storage-migration",
33647
+ capScope: "system",
33648
+ addonId: null,
33649
+ access: "view"
33650
+ },
33496
33651
  "storageMigration.drain": {
33497
33652
  capName: "storage-migration",
33498
33653
  capScope: "system",
33499
33654
  addonId: null,
33500
33655
  access: "create"
33501
33656
  },
33657
+ "storageMigration.history": {
33658
+ capName: "storage-migration",
33659
+ capScope: "system",
33660
+ addonId: null,
33661
+ access: "view"
33662
+ },
33502
33663
  "storageMigration.movers": {
33503
33664
  capName: "storage-migration",
33504
33665
  capScope: "system",
@@ -35495,11 +35656,6 @@ Object.freeze({
35495
35656
  form: "single",
35496
35657
  optional: true
35497
35658
  }],
35498
- "pipelineAnalytics.getGroup": [{
35499
- name: "deviceId",
35500
- form: "single",
35501
- optional: false
35502
- }],
35503
35659
  "pipelineAnalytics.getKeyEvents": [{
35504
35660
  name: "deviceId",
35505
35661
  form: "single",
@@ -35565,11 +35721,6 @@ Object.freeze({
35565
35721
  form: "single",
35566
35722
  optional: false
35567
35723
  }],
35568
- "pipelineAnalytics.listGroups": [{
35569
- name: "deviceIds",
35570
- form: "array",
35571
- optional: false
35572
- }],
35573
35724
  "pipelineAnalytics.listOpsLog": [{
35574
35725
  name: "deviceId",
35575
35726
  form: "single",
@@ -35615,6 +35766,11 @@ Object.freeze({
35615
35766
  form: "single",
35616
35767
  optional: true
35617
35768
  }],
35769
+ "pipelineAnalytics.reclaimDebugMedia": [{
35770
+ name: "deviceIds",
35771
+ form: "array",
35772
+ optional: true
35773
+ }],
35618
35774
  "pipelineAnalytics.reconcileFromDisk": [{
35619
35775
  name: "deviceId",
35620
35776
  form: "single",
@@ -35980,6 +36136,11 @@ Object.freeze({
35980
36136
  form: "single",
35981
36137
  optional: false
35982
36138
  }],
36139
+ "recording.setDevicePlacement": [{
36140
+ name: "deviceId",
36141
+ form: "single",
36142
+ optional: false
36143
+ }],
35983
36144
  "recording.startStorageMigrationMove": [{
35984
36145
  name: "deviceId",
35985
36146
  form: "single",
@@ -36844,7 +37005,7 @@ var AgentUIAddon = class extends BaseAddon {
36844
37005
  capability: adminUiCapability,
36845
37006
  provider: {
36846
37007
  getStaticDir: async () => ({ staticDir: path.resolve(__dirname) }),
36847
- getVersion: async () => ({ version: "1.2.50" })
37008
+ getVersion: async () => ({ version: "1.2.52" })
36848
37009
  }
36849
37010
  }];
36850
37011
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-agent-ui",
3
- "version": "1.2.50",
3
+ "version": "1.2.52",
4
4
  "description": "Agent UI — lightweight status dashboard served by every agent node",
5
5
  "keywords": [
6
6
  "camstack",