@camstack/addon-pipeline 1.2.156 → 1.2.160

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 (38) hide show
  1. package/dist/audio-analyzer/index.js +2 -2
  2. package/dist/audio-analyzer/index.mjs +2 -2
  3. package/dist/detection-pipeline/index.js +5 -5
  4. package/dist/detection-pipeline/index.mjs +4 -4
  5. package/dist/{dist-C499qEUf.js → dist-5VmTxa8x.js} +183 -76
  6. package/dist/{dist-C9ohtgTQ.mjs → dist-C8zVKhzA.mjs} +183 -76
  7. package/dist/{lazy-sharp-D5uApbbe.js → lazy-sharp-C89jIlwj.js} +1 -1
  8. package/dist/{local-frame-registry-VkzIezFI.js → local-frame-registry-BNMgZ5uA.js} +1 -1
  9. package/dist/{local-frame-registry-DAVug-jA.mjs → local-frame-registry-Bh-egEcl.mjs} +1 -1
  10. package/dist/motion-wasm/index.js +2 -2
  11. package/dist/motion-wasm/index.mjs +1 -1
  12. package/dist/{node-DEq8mutP.js → node-FsbZDqyh.js} +1 -1
  13. package/dist/{node-CwIlVFyz.mjs → node-G9AiO_JJ.mjs} +1 -1
  14. package/dist/pipeline-runner/index.js +5 -5
  15. package/dist/pipeline-runner/index.mjs +4 -4
  16. package/dist/{process-memory-DWw7FrV5.mjs → process-memory-Bbvc_vQS.mjs} +1 -1
  17. package/dist/{process-memory-DzycAIEm.js → process-memory-CMC_42XT.js} +1 -1
  18. package/dist/recorder/index.js +535 -28
  19. package/dist/recorder/index.mjs +532 -30
  20. package/dist/{segment-demux-js-D2InpBpa.mjs → segment-demux-js-Cw--C40J.mjs} +1 -1
  21. package/dist/{segment-demux-js-Df1rAqNh.js → segment-demux-js-iEt5OWTd.js} +1 -1
  22. package/dist/session-decode/decode-worker-child.js +2 -2
  23. package/dist/session-decode/decode-worker-child.mjs +1 -1
  24. package/dist/stream-broker/_stub.js +2 -2
  25. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-BJlcLzCs.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-l7NtBWCj.mjs} +3 -3
  26. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Blnh70uP.mjs +26 -0
  27. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CWtPG7OH.mjs +26 -0
  28. package/dist/stream-broker/demux-worker-child.js +1 -1
  29. package/dist/stream-broker/demux-worker-child.mjs +1 -1
  30. package/dist/stream-broker/{hostInit-QpJx-TgK.mjs → hostInit-C2zs9368.mjs} +3 -3
  31. package/dist/stream-broker/index.js +20 -14
  32. package/dist/stream-broker/index.mjs +20 -14
  33. package/dist/stream-broker/remoteEntry.js +1 -1
  34. package/dist/{worker-protocol-CFHcqXoS.mjs → worker-protocol-CA_SVsYj.mjs} +1 -1
  35. package/dist/{worker-protocol-ge8Ce0Bo.js → worker-protocol-CB8pNFkV.js} +1 -1
  36. package/package.json +1 -1
  37. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-lMPlG5w5.mjs +0 -26
  38. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-yWrVN7u8.mjs +0 -26
@@ -9408,6 +9408,13 @@ var MediaRelocateModeSchema = _enum([
9408
9408
  ]);
9409
9409
  var RelocateMediaInputSchema = object({
9410
9410
  toLocationId: string(),
9411
+ /**
9412
+ * Restrict the pass to rows currently on this location. Omitted / `'*'` =
9413
+ * every row that is not already on `toLocationId` (the historical
9414
+ * behaviour). A named source is what a from→to migration needs: without it
9415
+ * "move events off disk 2" also emptied disk 1.
9416
+ */
9417
+ fromLocationId: string().optional(),
9411
9418
  throttleMbps: number().min(1).max(1e3).optional(),
9412
9419
  /** Omitted = `move`, the pre-existing behaviour. */
9413
9420
  mode: MediaRelocateModeSchema.optional()
@@ -9475,6 +9482,19 @@ var StorageMigrationDestinationsSchema = object({
9475
9482
  galleryMedia: string().min(1).optional()
9476
9483
  }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
9477
9484
  /**
9485
+ * Optional named source per class. Omitted = the class's current default
9486
+ * (the historical behaviour). A named source that is NOT the default is a
9487
+ * drain of that disk: bytes move, the default stays, and the source is
9488
+ * disabled when the move finishes.
9489
+ */
9490
+ var StorageMigrationSourcesSchema = object({
9491
+ recordings: string().min(1).optional(),
9492
+ recordingsLow: string().min(1).optional(),
9493
+ eventMedia: string().min(1).optional(),
9494
+ backups: string().min(1).optional(),
9495
+ galleryMedia: string().min(1).optional()
9496
+ }).optional();
9497
+ /**
9478
9498
  * How a migration sequences the cutover against the byte move.
9479
9499
  *
9480
9500
  * - `blocking` — the historical order: pause, move every byte, repoint,
@@ -9496,6 +9516,8 @@ var StorageMigrationModeSchema = _enum(["blocking", "nonBlocking"]);
9496
9516
  /** Shared input for planning and starting an orchestrated storage migration. */
9497
9517
  var StorageMigrationInputSchema = object({
9498
9518
  destinations: StorageMigrationDestinationsSchema,
9519
+ /** Omitted = each class's current default. */
9520
+ sources: StorageMigrationSourcesSchema,
9499
9521
  throttleMbps: number().min(1).max(1e3).optional(),
9500
9522
  /** Omitted = `blocking`, which stays the default. */
9501
9523
  mode: StorageMigrationModeSchema.optional()
@@ -9575,6 +9597,13 @@ var StorageMigrationMoveSchema = object({
9575
9597
  storageClass: StorageMigrationClassSchema,
9576
9598
  fromLocationId: string(),
9577
9599
  toLocationId: string(),
9600
+ /**
9601
+ * True when `from` was NOT the class default at plan time. The move still
9602
+ * copies bytes, but the default is left alone and the source is disabled
9603
+ * once the copy verifies. Absent on jobs planned before this field existed
9604
+ * — those jobs always repointed, which is `false`.
9605
+ */
9606
+ freezeSource: boolean().optional(),
9578
9607
  moverJobId: string().nullable(),
9579
9608
  state: RelocateJobStateSchema.nullable(),
9580
9609
  error: string().nullable(),
@@ -9588,6 +9617,7 @@ var StorageMigrationJobSchema = object({
9588
9617
  * can tell a seconds-long cutover from a thirty-hour one. */
9589
9618
  mode: StorageMigrationModeSchema,
9590
9619
  destinations: StorageMigrationDestinationsSchema,
9620
+ sources: StorageMigrationSourcesSchema,
9591
9621
  throttleMbps: number(),
9592
9622
  moves: array(StorageMigrationMoveSchema),
9593
9623
  pauseLeaseId: string().nullable(),
@@ -9613,6 +9643,7 @@ var StorageMigrationFindingSchema = object({
9613
9643
  });
9614
9644
  var StorageMigrationPlanSchema = object({
9615
9645
  destinations: StorageMigrationDestinationsSchema,
9646
+ sources: StorageMigrationSourcesSchema,
9616
9647
  /** The mode this plan was built for. A plan is only valid for its mode: the
9617
9648
  * `eventMedia` seal gate and the single-cardinality refusal both depend on
9618
9649
  * it. */
@@ -9620,7 +9651,8 @@ var StorageMigrationPlanSchema = object({
9620
9651
  moves: array(object({
9621
9652
  storageClass: StorageMigrationClassSchema,
9622
9653
  fromLocationId: string(),
9623
- toLocationId: string()
9654
+ toLocationId: string(),
9655
+ freezeSource: boolean().optional()
9624
9656
  })),
9625
9657
  findings: array(StorageMigrationFindingSchema)
9626
9658
  });
@@ -9798,10 +9830,51 @@ var LedgerWalkReportSchema = object({
9798
9830
  var RelocatableMediaCountSchema = object({ rows: number().int().nonnegative() }).nullable();
9799
9831
  var RelocatableMediaCountInputSchema = object({
9800
9832
  toLocationId: string().min(1),
9833
+ /** Restrict the count to one source; omitted / `'*'` = every non-target row. */
9834
+ fromLocationId: string().optional(),
9801
9835
  /** Omitted = `move`. */
9802
9836
  mode: MediaRelocateModeSchema.optional()
9803
9837
  });
9804
9838
  /**
9839
+ * Operator cleanup of leftover analytics rows, optional debug media, and
9840
+ * ghost ledger entries on frozen footage locations.
9841
+ *
9842
+ * A pass is tens of minutes on a standing backlog. The hub method RETURNS
9843
+ * `{ jobId }` immediately; progress is `cleanupStatus`. Awaiting the work
9844
+ * is how `addons.custom` hit the 60 s UDS deadline while reclaim continued
9845
+ * with no operator-visible status.
9846
+ */
9847
+ var StorageCleanupPhaseSchema = _enum([
9848
+ "orphans",
9849
+ "debug-media",
9850
+ "ghost-ledger",
9851
+ "done",
9852
+ "failed",
9853
+ "cancelled"
9854
+ ]);
9855
+ var StorageCleanupInputSchema = object({
9856
+ /** Also walk motion stills / track filmstrips. Off by default. */
9857
+ includeDebugMedia: boolean().optional() });
9858
+ var StorageCleanupJobSchema = object({
9859
+ jobId: string(),
9860
+ phase: StorageCleanupPhaseSchema,
9861
+ includeDebugMedia: boolean(),
9862
+ orphansReclaimed: number().int().nonnegative(),
9863
+ orphanBytesReclaimed: number().int().nonnegative(),
9864
+ debugMediaReclaimed: number().int().nonnegative(),
9865
+ debugMediaBytesReclaimed: number().int().nonnegative(),
9866
+ ghostsForgotten: number().int().nonnegative(),
9867
+ ghostBytesForgotten: number().int().nonnegative(),
9868
+ /** Short operator-facing line: current collection, pass, or location. */
9869
+ detail: string().nullable(),
9870
+ cancelRequested: boolean(),
9871
+ startedAt: number(),
9872
+ updatedAt: number(),
9873
+ finishedAt: number().nullable(),
9874
+ error: string().nullable()
9875
+ });
9876
+ var StorageCleanupStatusInputSchema = object({ jobId: string().optional() });
9877
+ /**
9805
9878
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
9806
9879
  * storage a location serves. Defined here (not in `capabilities/storage.cap.ts`)
9807
9880
  * so the persisted record schema and the consumer-facing cap can both consume it
@@ -9829,11 +9902,10 @@ var StorageLocationTypeSchema = string().regex(/^[a-z][a-zA-Z0-9-]*$/);
9829
9902
  * The default location for a type uses `id === <type>:default` by
9830
9903
  * convention (the bare type ref like `'backups'` resolves to it).
9831
9904
  *
9832
- * `isSystem: true` marks a location as orchestrator-seeded and
9833
- * undeletable. The bootstrap-installed defaults (one per type) carry
9834
- * this flag; operator-added locations don't. Editing the config of
9835
- * a system location is allowed (path migration, provider swap) but
9836
- * deleting it is rejected at the cap level.
9905
+ * `isSystem` is a legacy persisted flag. Seed still creates the initial
9906
+ * `<type>:default` locations; the flag is no longer a lock, a badge, or a
9907
+ * prune selector. New writes leave it false. Deletion is gated on uniqueness
9908
+ * / last-enabled, not on this bit.
9837
9909
  */
9838
9910
  var StorageLocationSchema = object({
9839
9911
  id: string().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/),
@@ -14676,6 +14748,12 @@ method(object({
14676
14748
  }), _void(), {
14677
14749
  kind: "mutation",
14678
14750
  auth: "admin"
14751
+ }), method(object({
14752
+ from: string(),
14753
+ to: string()
14754
+ }), object({ moved: number() }), {
14755
+ kind: "mutation",
14756
+ auth: "admin"
14679
14757
  }), method(object({
14680
14758
  deviceId: number(),
14681
14759
  disabled: boolean()
@@ -21187,46 +21265,6 @@ var RecentTracksPageSchema = object({
21187
21265
  /** Cursor for the next page, or null when this page is the last. */
21188
21266
  nextCursor: string().nullable()
21189
21267
  });
21190
- var LIST_GROUPS_DEFAULT_LIMIT = 40;
21191
- var LIST_GROUPS_MAX_LIMIT = 100;
21192
- var AnalyticsGroupRecordSchema = object({
21193
- id: string(),
21194
- deviceId: number().int(),
21195
- openedAt: number().int(),
21196
- closedAt: number().int(),
21197
- timestamp: number().int(),
21198
- memberCount: number().int(),
21199
- memberTrackIds: array(string()).readonly(),
21200
- className: string(),
21201
- classes: array(string()).readonly(),
21202
- /** Relative event-media path, or null when the group has no picture yet. */
21203
- mediaUrl: string().nullable(),
21204
- singleton: boolean()
21205
- });
21206
- var AnalyticsGroupMemberSchema = object({
21207
- trackId: string(),
21208
- deviceId: number().int(),
21209
- className: string(),
21210
- firstSeen: number().int(),
21211
- lastSeen: number().int(),
21212
- mediaUrl: string().nullable()
21213
- });
21214
- var AnalyticsGroupDetailSchema = AnalyticsGroupRecordSchema.extend({ members: array(AnalyticsGroupMemberSchema).readonly() });
21215
- var ListGroupsQueryInput = object({
21216
- /** Devices to merge. An empty array yields `{ groups: [], nextCursor: null }`. */
21217
- deviceIds: array(number()),
21218
- /** Window lower bound on `closedAt` (inclusive). */
21219
- since: number().optional(),
21220
- /** Window upper bound on `openedAt` (inclusive). */
21221
- until: number().optional(),
21222
- limit: number().int().min(1).max(LIST_GROUPS_MAX_LIMIT).default(LIST_GROUPS_DEFAULT_LIMIT),
21223
- /** Opaque continuation cursor from a previous page's `nextCursor`. */
21224
- cursor: string().optional()
21225
- });
21226
- var ListGroupsPageSchema = object({
21227
- groups: array(AnalyticsGroupRecordSchema).readonly(),
21228
- nextCursor: string().nullable()
21229
- });
21230
21268
  var KEY_EVENTS_DEFAULT_LIMIT = 50;
21231
21269
  var KEY_EVENTS_MAX_LIMIT = 200;
21232
21270
  var KeyEventQueryInput = object({
@@ -21330,9 +21368,7 @@ var TrackCascadeCountsSchema = object({
21330
21368
  /** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
21331
21369
  plates: number().int(),
21332
21370
  /** Per-track CLIP search vectors removed (best-effort). */
21333
- embeddings: number().int(),
21334
- /** Group membership + group rows removed with their last member (best-effort). */
21335
- groups: number().int()
21371
+ embeddings: number().int()
21336
21372
  });
21337
21373
  /** Disk-wins reconcile: media rows whose blobs are gone, then empty tracks. */
21338
21374
  var DiskReconcileCountsSchema = object({
@@ -21581,10 +21617,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
21581
21617
  * stationary registry). Default false: the timeline lists passages,
21582
21618
  * not parking records (operator decision, 2026-08-15). */
21583
21619
  includeStationary: boolean().optional()
21584
- }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(ListGroupsQueryInput, ListGroupsPageSchema), method(object({
21585
- deviceId: number(),
21586
- groupId: string().min(1)
21587
- }), AnalyticsGroupDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
21620
+ }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
21588
21621
  kind: "mutation",
21589
21622
  auth: "admin"
21590
21623
  }), 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({
@@ -23824,7 +23857,13 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
23824
23857
  }), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
23825
23858
  kind: "mutation",
23826
23859
  auth: "admin"
23827
- });
23860
+ }), method(StorageCleanupInputSchema, object({ jobId: string() }), {
23861
+ kind: "mutation",
23862
+ auth: "admin"
23863
+ }), method(StorageCleanupStatusInputSchema, StorageCleanupJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23864
+ kind: "mutation",
23865
+ auth: "admin"
23866
+ }), method(object({}), array(StorageMigrationJobSchema).readonly(), { auth: "admin" });
23828
23867
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
23829
23868
  providerId: string().min(1),
23830
23869
  displayName: string().min(1),
@@ -29349,6 +29388,33 @@ var RecordingRebalanceInputSchema = object({
29349
29388
  minMoveGb: number().min(0).optional()
29350
29389
  });
29351
29390
  /**
29391
+ * Operator-facing placement of one camera onto a recordings location.
29392
+ *
29393
+ * `pinLocationId` is the operator instruction: a location id, or `null` for
29394
+ * Auto (the planner may move this camera). `locationId` is where high/mid
29395
+ * currently write — the plan, which may disagree with the pin when Auto.
29396
+ */
29397
+ var RecordingDevicePlacementSchema = object({
29398
+ deviceId: number().int(),
29399
+ profile: string(),
29400
+ locationId: string()
29401
+ });
29402
+ var RecordingDevicePinSchema = object({
29403
+ deviceId: number().int(),
29404
+ /** Recordings-class location this camera is pinned to. */
29405
+ locationId: string()
29406
+ });
29407
+ var RecordingPlacementViewSchema = object({
29408
+ assignments: array(RecordingDevicePlacementSchema),
29409
+ pins: array(RecordingDevicePinSchema),
29410
+ defaultLocations: record(string(), string())
29411
+ });
29412
+ var RecordingSetDevicePlacementInputSchema = object({
29413
+ deviceId: number().int(),
29414
+ /** `null` = Auto. Otherwise a `recordings:*` location id. */
29415
+ locationId: string().nullable()
29416
+ });
29417
+ /**
29352
29418
  * Result of locating footage at a wall-clock instant for one device/profile.
29353
29419
  * `segment` carries the covering segment's window; `gap` reports the forward
29354
29420
  * nearest covered edge (`null` past the end of footage / when none exists)
@@ -29701,6 +29767,22 @@ var recordingCapability = {
29701
29767
  startStorageRebalance: method(RecordingRebalanceInputSchema, RecordingRebalancePlanSchema, {
29702
29768
  kind: "mutation",
29703
29769
  auth: "admin"
29770
+ }),
29771
+ /**
29772
+ * The placement plan in force plus operator pins. Drives the Locations
29773
+ * admin page: Auto vs a named recordings location, per camera.
29774
+ */
29775
+ getPlacement: method(object({}), RecordingPlacementViewSchema, {
29776
+ kind: "query",
29777
+ auth: "admin"
29778
+ }),
29779
+ /**
29780
+ * Pin a camera to a recordings location, or clear the pin (Auto). High and
29781
+ * mid follow the pin; low stays with the recordingsLow planner.
29782
+ */
29783
+ setDevicePlacement: method(RecordingSetDevicePlacementInputSchema, object({ ok: literal(true) }), {
29784
+ kind: "mutation",
29785
+ auth: "admin"
29704
29786
  })
29705
29787
  }
29706
29788
  };
@@ -33287,6 +33369,12 @@ Object.freeze({
33287
33369
  addonId: null,
33288
33370
  access: "delete"
33289
33371
  },
33372
+ "deviceManager.renameLocation": {
33373
+ capName: "device-manager",
33374
+ capScope: "system",
33375
+ addonId: null,
33376
+ access: "create"
33377
+ },
33290
33378
  "deviceManager.runDeviceAction": {
33291
33379
  capName: "device-manager",
33292
33380
  capScope: "system",
@@ -34979,12 +35067,6 @@ Object.freeze({
34979
35067
  addonId: null,
34980
35068
  access: "view"
34981
35069
  },
34982
- "pipelineAnalytics.getGroup": {
34983
- capName: "pipeline-analytics",
34984
- capScope: "device",
34985
- addonId: null,
34986
- access: "view"
34987
- },
34988
35070
  "pipelineAnalytics.getKeyEvents": {
34989
35071
  capName: "pipeline-analytics",
34990
35072
  capScope: "device",
@@ -35087,12 +35169,6 @@ Object.freeze({
35087
35169
  addonId: null,
35088
35170
  access: "view"
35089
35171
  },
35090
- "pipelineAnalytics.listGroups": {
35091
- capName: "pipeline-analytics",
35092
- capScope: "device",
35093
- addonId: null,
35094
- access: "view"
35095
- },
35096
35172
  "pipelineAnalytics.listOpsLog": {
35097
35173
  capName: "pipeline-analytics",
35098
35174
  capScope: "device",
@@ -36107,6 +36183,12 @@ Object.freeze({
36107
36183
  addonId: null,
36108
36184
  access: "view"
36109
36185
  },
36186
+ "recording.getPlacement": {
36187
+ capName: "recording",
36188
+ capScope: "system",
36189
+ addonId: null,
36190
+ access: "view"
36191
+ },
36110
36192
  "recording.getPlaybackManifest": {
36111
36193
  capName: "recording",
36112
36194
  capScope: "system",
@@ -36233,6 +36315,12 @@ Object.freeze({
36233
36315
  addonId: null,
36234
36316
  access: "create"
36235
36317
  },
36318
+ "recording.setDevicePlacement": {
36319
+ capName: "recording",
36320
+ capScope: "system",
36321
+ addonId: null,
36322
+ access: "create"
36323
+ },
36236
36324
  "recording.startStorageMigrationMove": {
36237
36325
  capName: "recording",
36238
36326
  capScope: "system",
@@ -36677,12 +36765,36 @@ Object.freeze({
36677
36765
  addonId: null,
36678
36766
  access: "create"
36679
36767
  },
36768
+ "storageMigration.cleanupCancel": {
36769
+ capName: "storage-migration",
36770
+ capScope: "system",
36771
+ addonId: null,
36772
+ access: "create"
36773
+ },
36774
+ "storageMigration.cleanupStart": {
36775
+ capName: "storage-migration",
36776
+ capScope: "system",
36777
+ addonId: null,
36778
+ access: "create"
36779
+ },
36780
+ "storageMigration.cleanupStatus": {
36781
+ capName: "storage-migration",
36782
+ capScope: "system",
36783
+ addonId: null,
36784
+ access: "view"
36785
+ },
36680
36786
  "storageMigration.drain": {
36681
36787
  capName: "storage-migration",
36682
36788
  capScope: "system",
36683
36789
  addonId: null,
36684
36790
  access: "create"
36685
36791
  },
36792
+ "storageMigration.history": {
36793
+ capName: "storage-migration",
36794
+ capScope: "system",
36795
+ addonId: null,
36796
+ access: "view"
36797
+ },
36686
36798
  "storageMigration.movers": {
36687
36799
  capName: "storage-migration",
36688
36800
  capScope: "system",
@@ -38679,11 +38791,6 @@ Object.freeze({
38679
38791
  form: "single",
38680
38792
  optional: true
38681
38793
  }],
38682
- "pipelineAnalytics.getGroup": [{
38683
- name: "deviceId",
38684
- form: "single",
38685
- optional: false
38686
- }],
38687
38794
  "pipelineAnalytics.getKeyEvents": [{
38688
38795
  name: "deviceId",
38689
38796
  form: "single",
@@ -38749,11 +38856,6 @@ Object.freeze({
38749
38856
  form: "single",
38750
38857
  optional: false
38751
38858
  }],
38752
- "pipelineAnalytics.listGroups": [{
38753
- name: "deviceIds",
38754
- form: "array",
38755
- optional: false
38756
- }],
38757
38859
  "pipelineAnalytics.listOpsLog": [{
38758
38860
  name: "deviceId",
38759
38861
  form: "single",
@@ -39169,6 +39271,11 @@ Object.freeze({
39169
39271
  form: "single",
39170
39272
  optional: false
39171
39273
  }],
39274
+ "recording.setDevicePlacement": [{
39275
+ name: "deviceId",
39276
+ form: "single",
39277
+ optional: false
39278
+ }],
39172
39279
  "recording.startStorageMigrationMove": [{
39173
39280
  name: "deviceId",
39174
39281
  form: "single",
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-C499qEUf.js");
1
+ const require_dist = require("./dist-5VmTxa8x.js");
2
2
  let node_path = require("node:path");
3
3
  node_path = require_dist.__toESM(node_path);
4
4
  let node_url = require("node:url");
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-C499qEUf.js");
1
+ const require_dist = require("./dist-5VmTxa8x.js");
2
2
  let node_crypto = require("node:crypto");
3
3
  //#region src/detection-pipeline/registry/model-catalogs.ts
4
4
  var HF_REPO = "camstack/camstack-models";
@@ -1,4 +1,4 @@
1
- import { M as audioKindId, Z as hfModelUrl, a as COCO_80_LABELS, o as COCO_TO_MACRO, r as AUDIO_MACRO_LABELS } from "./dist-C9ohtgTQ.mjs";
1
+ import { M as audioKindId, Z as hfModelUrl, a as COCO_80_LABELS, o as COCO_TO_MACRO, r as AUDIO_MACRO_LABELS } from "./dist-C8zVKhzA.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  //#region src/detection-pipeline/registry/model-catalogs.ts
4
4
  var HF_REPO = "camstack/camstack-models";
@@ -2,8 +2,8 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-C499qEUf.js");
6
- const require_lazy_sharp = require("../lazy-sharp-D5uApbbe.js");
5
+ const require_dist = require("../dist-5VmTxa8x.js");
6
+ const require_lazy_sharp = require("../lazy-sharp-C89jIlwj.js");
7
7
  let node_fs = require("node:fs");
8
8
  let node_path = require("node:path");
9
9
  //#region src/motion-wasm/wasm-motion-detector.ts
@@ -1,4 +1,4 @@
1
- import { It as hydrateSchema, Pt as DeviceType, Y as evaluateZoneRules, it as motionDetectionCapability, jt as BaseAddon } from "../dist-C9ohtgTQ.mjs";
1
+ import { It as hydrateSchema, Pt as DeviceType, Y as evaluateZoneRules, it as motionDetectionCapability, jt as BaseAddon } from "../dist-C8zVKhzA.mjs";
2
2
  import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
3
3
  import { readFileSync } from "node:fs";
4
4
  import { join } from "node:path";
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-C499qEUf.js");
1
+ const require_dist = require("./dist-5VmTxa8x.js");
2
2
  let node_crypto = require("node:crypto");
3
3
  let node_fs = require("node:fs");
4
4
  node_fs = require_dist.__toESM(node_fs, 1);
@@ -1,4 +1,4 @@
1
- import { Dt as buildFfmpegArgs, Et as Fmp4BoxSplitter, kt as isSoftwareDecode, wt as errMsg } from "./dist-C9ohtgTQ.mjs";
1
+ import { Dt as buildFfmpegArgs, Et as Fmp4BoxSplitter, kt as isSoftwareDecode, wt as errMsg } from "./dist-C8zVKhzA.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import "node:fs";
4
4
  import "node:path";
@@ -2,12 +2,12 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-C499qEUf.js");
6
- const require_node = require("../node-DEq8mutP.js");
7
- const require_local_frame_registry = require("../local-frame-registry-VkzIezFI.js");
8
- const require_worker_protocol = require("../worker-protocol-ge8Ce0Bo.js");
5
+ const require_dist = require("../dist-5VmTxa8x.js");
6
+ const require_node = require("../node-FsbZDqyh.js");
7
+ const require_local_frame_registry = require("../local-frame-registry-BNMgZ5uA.js");
8
+ const require_worker_protocol = require("../worker-protocol-CB8pNFkV.js");
9
9
  const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
10
- const require_lazy_sharp = require("../lazy-sharp-D5uApbbe.js");
10
+ const require_lazy_sharp = require("../lazy-sharp-C89jIlwj.js");
11
11
  const require_restream_intent = require("../restream-intent-Cv9x3jmu.js");
12
12
  const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-DaUBcb13.js");
13
13
  const require_remote_restream = require("../remote-restream-CO36Sr30.js");
@@ -1,7 +1,7 @@
1
- import { B as defineCustomActions, Bt as nodePin, Ft as createEvent, Gt as _enum, H as deriveDetailCropRect, Kt as array, L as customAction, Qt as object, X as failureContributionCapability, Xt as literal, Yt as lazy, Zt as number, _ as FailureCounters, en as string, et as loadContributionCapability, ft as pipelineRunnerCapability, jt as BaseAddon, lt as pickDetailCropConvention, m as DEVICE_BACKEND_TO_FORMAT, nn as EventCategory, p as DEFAULT_NATIVE_LEASE_SETTINGS, qt as boolean, u as DEFAULT_DETAIL_CROP_CONVENTION, ut as pickNativeLeaseOverride, wt as errMsg } from "../dist-C9ohtgTQ.mjs";
2
- import { i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-CwIlVFyz.mjs";
3
- import { c as getStepDefinition, n as resolveFrameViewGeometry, t as localFrameRegistry } from "../local-frame-registry-DAVug-jA.mjs";
4
- import { a as nativeLeaseSettingEnv, t as isWorkerReply } from "../worker-protocol-CFHcqXoS.mjs";
1
+ import { B as defineCustomActions, Bt as nodePin, Ft as createEvent, Gt as _enum, H as deriveDetailCropRect, Kt as array, L as customAction, Qt as object, X as failureContributionCapability, Xt as literal, Yt as lazy, Zt as number, _ as FailureCounters, en as string, et as loadContributionCapability, ft as pipelineRunnerCapability, jt as BaseAddon, lt as pickDetailCropConvention, m as DEVICE_BACKEND_TO_FORMAT, nn as EventCategory, p as DEFAULT_NATIVE_LEASE_SETTINGS, qt as boolean, u as DEFAULT_DETAIL_CROP_CONVENTION, ut as pickNativeLeaseOverride, wt as errMsg } from "../dist-C8zVKhzA.mjs";
2
+ import { i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-G9AiO_JJ.mjs";
3
+ import { c as getStepDefinition, n as resolveFrameViewGeometry, t as localFrameRegistry } from "../local-frame-registry-Bh-egEcl.mjs";
4
+ import { a as nativeLeaseSettingEnv, t as isWorkerReply } from "../worker-protocol-CA_SVsYj.mjs";
5
5
  import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
6
6
  import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
7
7
  import { n as withDetectionIntent } from "../restream-intent-B4BXZra7.mjs";
@@ -1,4 +1,4 @@
1
- import { ot as parseProcStatus } from "./dist-C9ohtgTQ.mjs";
1
+ import { ot as parseProcStatus } from "./dist-C8zVKhzA.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import { execFile } from "node:child_process";
4
4
  //#region src/shared/node-topology-platform.ts
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-C499qEUf.js");
1
+ const require_dist = require("./dist-5VmTxa8x.js");
2
2
  let node_fs = require("node:fs");
3
3
  node_fs = require_dist.__toESM(node_fs);
4
4
  let node_child_process = require("node:child_process");