@camstack/addon-agent-ui 1.2.104 → 1.2.105

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/addon.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { fileURLToPath } from "node:url";
3
- //#region ../types/dist/event-category-DAXzJeTX.mjs
3
+ //#region ../types/dist/event-category-ZyX6jcse.mjs
4
4
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
5
5
  EventCategory["SystemBoot"] = "system.boot";
6
6
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -561,7 +561,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
561
561
  * a package zone — a newly-appeared stationary object of a package class
562
562
  * that cleared the class / zone / dwell / size gates. Payload:
563
563
  * `PipelineAnalyticsPackageDeliveredPayload` carrying `{ deviceId,
564
- * entryId, className, zoneIds, keyFrameMediaKey?, bbox, timestamp }`.
564
+ * entryId, className, zoneIds, keyFrameMediaId?, bbox, timestamp }`.
565
565
  * Telemetry (D8): the durable record is the `package-events` store row;
566
566
  * this bus topic drives notifier rules + live UI. See
567
567
  * docs/superpowers/specs/2026-07-17-package-zones-design.md §5.1.
@@ -5347,7 +5347,7 @@ var ZodIssueCode = {
5347
5347
  var ZodFirstPartyTypeKind;
5348
5348
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5349
5349
  //#endregion
5350
- //#region ../types/dist/sleep-BnujYGPe.mjs
5350
+ //#region ../types/dist/sleep-CnLyvg3w.mjs
5351
5351
  /**
5352
5352
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5353
5353
  * window to float samples (D455).
@@ -7316,13 +7316,30 @@ new Set([
7316
7316
  "scene",
7317
7317
  "motion",
7318
7318
  "object",
7319
- "audio"
7319
+ "audio",
7320
+ "mosaic"
7320
7321
  ]);
7321
- new Set([
7322
+ /**
7323
+ * The owner types that are event tables, in the order the event-media resolver
7324
+ * should consider them. Exported so a consumer asking "is this key an event?"
7325
+ * does not re-spell the list and drift from it.
7326
+ */
7327
+ var EVENT_OWNER_TYPES = [
7322
7328
  "motion",
7323
7329
  "object",
7324
7330
  "audio"
7325
- ]);
7331
+ ];
7332
+ /**
7333
+ * The same list as a Zod enum, for the cap inputs that must NAME the table
7334
+ * (D482: `getEventMedia` / `listEventMedia` take an owner, and an owner is
7335
+ * `(table, id)`).
7336
+ *
7337
+ * Built FROM {@link EVENT_OWNER_TYPES} rather than re-spelled: a fourth event
7338
+ * table would otherwise be accepted by the codec and refused at the door, with
7339
+ * nothing failing until a caller asked.
7340
+ */
7341
+ var EventOwnerTypeSchema = _enum(EVENT_OWNER_TYPES);
7342
+ new Set(EVENT_OWNER_TYPES);
7326
7343
  var EncodeProfileSchema = object({
7327
7344
  video: object({
7328
7345
  codec: _enum([
@@ -12419,6 +12436,16 @@ method(object({
12419
12436
  filter: QueryFilterSchema.optional(),
12420
12437
  columns: array(string()).readonly().optional()
12421
12438
  }), array(SettingsRecordSchema).readonly()), method(object({
12439
+ namespace: string().optional(),
12440
+ collection: string(),
12441
+ /** Declared columns identifying the slot; must be covered by a UNIQUE
12442
+ * index on the collection. Never empty. */
12443
+ conflict: array(string()).readonly(),
12444
+ record: BulkRecordSchema
12445
+ }), object({
12446
+ /** The id the row HAS: assigned by SQLite on an insert, or the existing
12447
+ * row's own id on an update. */
12448
+ id: union([string(), number()]) }), { kind: "mutation" }), method(object({
12422
12449
  namespace: string().optional(),
12423
12450
  collection: string(),
12424
12451
  record: object({
@@ -12553,6 +12580,14 @@ method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
12553
12580
  id: union([string(), number()]) }), {
12554
12581
  kind: "mutation",
12555
12582
  auth: "admin"
12583
+ }), method(object({
12584
+ namespace: string().optional(),
12585
+ collection: string(),
12586
+ conflict: array(string()).readonly(),
12587
+ record: BulkRecordSchema
12588
+ }), object({ id: union([string(), number()]) }), {
12589
+ kind: "mutation",
12590
+ auth: "admin"
12556
12591
  }), method(object({
12557
12592
  namespace: string().optional(),
12558
12593
  collection: string(),
@@ -18769,8 +18804,8 @@ var TrackPositionSchema = object({
18769
18804
  var TrackSnapshotSchema = object({
18770
18805
  timestamp: number(),
18771
18806
  position: TrackPositionSchema,
18772
- /** MediaStore key; resolve via `getTrackMedia({ trackId })`. */
18773
- mediaKey: string()
18807
+ /** The snapshot's media row id (D482); resolve via `listTrackMedia({ trackId })`. */
18808
+ mediaId: number().int()
18774
18809
  });
18775
18810
  /**
18776
18811
  * Normalized 0..1 trajectory envelope (min/max over every position bbox,
@@ -19374,14 +19409,14 @@ var ObjectEventSchema = object({
19374
19409
  * pixel-space `bbox` onto a displayed image. Omitted in slim projection. */
19375
19410
  frameWidth: number().optional(),
19376
19411
  frameHeight: number().optional(),
19377
- /** MediaStore key for the crop attached to this event (if any). */
19378
- mediaKey: string().optional(),
19379
- /** Design B: MediaStore key of the track's native-resolution key frame (the
19412
+ /** Media row id of the crop attached to this event (if any) — D482. */
19413
+ mediaId: number().int().optional(),
19414
+ /** Design B: media row id of the track's native-resolution key frame (the
19380
19415
  * best-detection full frame). Resolve via the event-media data-plane
19381
- * (`/addon/<addonId>/event-media/<keyFrameMediaKey>`) for a detail view that
19416
+ * (`/addon/<addonId>/event-media/m/<keyFrameMediaId>`) for a detail view that
19382
19417
  * draws `bbox` over the native frame. Absent on legacy rows / non-decoded
19383
- * sources — consumers fall back to `mediaKey` (the tight crop). */
19384
- keyFrameMediaKey: string().optional(),
19418
+ * sources — consumers fall back to `mediaId` (the tight crop). */
19419
+ keyFrameMediaId: number().int().optional(),
19385
19420
  /** Populated by B5 (recording playback URL for this event). */
19386
19421
  mediaUrl: string().optional(),
19387
19422
  /** The parent track's key-event importance [0,1], propagated to every object
@@ -19431,7 +19466,7 @@ var MediaFileKindEnum = _enum([
19431
19466
  * hub-main's heap on the way past — for an `<img>` that would have cached it.
19432
19467
  *
19433
19468
  * `url` points at the `event-media` data plane
19434
- * (`/addon/<addonId>/event-media/<storedKey>`), which serves the same blob
19469
+ * (`/addon/<addonId>/event-media/m/<mediaId>` — D482), which serves the same blob
19435
19470
  * with an ETag and `Cache-Control: immutable`, honours conditional GETs, can
19436
19471
  * render a `?variant=thumb`, and streams. The hub gate in front of it requires
19437
19472
  * a bearer or the session cookie (`access: 'authenticated'`), so the bytes are
@@ -19439,10 +19474,13 @@ var MediaFileKindEnum = _enum([
19439
19474
  * `data-plane-access.ts` for the rule and the one gap it does not close
19440
19475
  * (per-device scoping).
19441
19476
  *
19442
- * The URL is built from the row's **stored** key, which is not always its
19443
- * published `kind`: a track's face/plate crop is stored as `crop` under
19477
+ * The URL is built from the row's own id, which since D482 says nothing about
19478
+ * the row's owner or kind and that is the point. The published `kind` is not
19479
+ * the stored one (a track's face/plate crop is stored as `crop` under
19444
19480
  * `('face'|'plate', '<prefix>-<trackId>')` and published as
19445
- * `faceCrop`/`plateCrop`. `MediaStore.getByKey` knows only the stored key.
19481
+ * `faceCrop`/`plateCrop`), and under the old composite key the URL had to be
19482
+ * taken from `row.key` verbatim or it 404'd exactly those two rows. An id
19483
+ * cannot be mis-reconstructed, because there is nothing in it to reconstruct.
19446
19484
  *
19447
19485
  * ## `base64` is TRANSITIONAL and is going away
19448
19486
  *
@@ -19455,7 +19493,19 @@ var MediaFileKindEnum = _enum([
19455
19493
  * `analytics-query-facade.ts`; nothing else reads it.
19456
19494
  */
19457
19495
  var MediaFileSchema = object({
19458
- key: string(),
19496
+ /**
19497
+ * The media row's OWN id — the rowid SQLite assigned it (D482).
19498
+ *
19499
+ * It used to be the row's composite key, `<ownerType>:<ownerId>:<fileKind>
19500
+ * [:<timestampMs>]`, which embedded a FOREIGN id. D474 made event ids
19501
+ * per-table rowid aliases, so `object:101314` and `motion:101314` are two
19502
+ * different rows that spell the same number, and a track whose
19503
+ * `bestEventId` was an object event was served a motion event's snapshot —
19504
+ * a night-time thumbnail on an afternoon track, with no error anywhere. A
19505
+ * surrogate id cannot name the wrong row's owner, because it names no owner
19506
+ * at all.
19507
+ */
19508
+ mediaId: number().int(),
19459
19509
  kind: MediaFileKindEnum,
19460
19510
  sizeBytes: number(),
19461
19511
  timestamp: number()
@@ -19563,7 +19613,7 @@ var RetrainTrackSchema = object({
19563
19613
  });
19564
19614
  /** A frame the picker may offer — an index row, no blob was read to produce it. */
19565
19615
  var RetrainFrameCandidateSchema = object({
19566
- mediaKey: string(),
19616
+ mediaId: number().int(),
19567
19617
  kind: MediaFileKindEnum,
19568
19618
  timestamp: number(),
19569
19619
  sizeBytes: number().int(),
@@ -19577,7 +19627,7 @@ var RetrainFrameSchema = object({
19577
19627
  deviceId: number(),
19578
19628
  trackId: string(),
19579
19629
  /** Provenance only. It may already point at nothing — that is expected. */
19580
- sourceMediaKey: string(),
19630
+ sourceMediaId: number().int(),
19581
19631
  sourceKind: MediaFileKindEnum,
19582
19632
  sizeBytes: number().int(),
19583
19633
  width: number().int(),
@@ -19593,7 +19643,7 @@ var RetrainCopyRefusalSchema = _enum([
19593
19643
  var RetrainFrameSelectionSchema = object({
19594
19644
  copied: array(RetrainFrameSchema).readonly(),
19595
19645
  refused: array(object({
19596
- sourceMediaKey: string(),
19646
+ sourceMediaId: number().int(),
19597
19647
  reason: RetrainCopyRefusalSchema
19598
19648
  })).readonly()
19599
19649
  });
@@ -19601,7 +19651,7 @@ var RetrainFrameListSchema = object({
19601
19651
  candidates: array(RetrainFrameCandidateSchema).readonly(),
19602
19652
  copies: array(RetrainFrameSchema).readonly(),
19603
19653
  /** What the page pre-selects — the native key frame when one survives. */
19604
- autoPickMediaKey: string().optional()
19654
+ autoPickMediaId: number().int().optional()
19605
19655
  });
19606
19656
  /** What the operator asked the assist to look for. */
19607
19657
  var RetrainAssistSubjectSchema = discriminatedUnion("kind", [object({
@@ -19696,9 +19746,11 @@ var RecentTracksQueryInput = object({
19696
19746
  });
19697
19747
  /**
19698
19748
  * A Summary (D359): the per-camera session envelope that references tracks.
19699
- * `groupShotKey` is the media key of its group shot (`ownerKind: 'summary'`,
19700
- * served by the event-media plane by key), null until the first frame with a
19701
- * member visible has been materialised.
19749
+ * `groupShotMediaId` is the media ROW id of its group shot (`ownerKind:
19750
+ * 'summary'`, served by the event-media plane at `/m/<id>`), null until the
19751
+ * first frame with a member visible has been materialised (D482 — it was the
19752
+ * row's composite key, which embedded the owner and could name another table's
19753
+ * row once event ids became per-table rowids).
19702
19754
  */
19703
19755
  var SummarySchema = object({
19704
19756
  id: string(),
@@ -19707,7 +19759,7 @@ var SummarySchema = object({
19707
19759
  lastActiveAt: number(),
19708
19760
  sealedAt: number().nullable(),
19709
19761
  memberCount: number().int().nonnegative(),
19710
- groupShotKey: string().nullable()
19762
+ groupShotMediaId: number().int().nullable()
19711
19763
  });
19712
19764
  var SummariesQueryInput = object({
19713
19765
  deviceIds: array(number()).min(1),
@@ -20261,7 +20313,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20261
20313
  }), method(object({
20262
20314
  deviceId: number(),
20263
20315
  trackId: string(),
20264
- mediaKeys: array(string()).min(1)
20316
+ mediaIds: array(number().int()).min(1)
20265
20317
  }), RetrainFrameSelectionSchema, {
20266
20318
  kind: "mutation",
20267
20319
  auth: "admin"
@@ -20329,7 +20381,10 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20329
20381
  kind: "query",
20330
20382
  auth: "admin"
20331
20383
  }), method(object({
20332
- eventId: string(),
20384
+ /** Which of the three event tables owns the row. */
20385
+ ownerType: EventOwnerTypeSchema,
20386
+ /** The event's rowid in that table (D474: an event id is a number). */
20387
+ eventId: number().int(),
20333
20388
  kind: MediaFileKindEnum.optional(),
20334
20389
  deviceId: number()
20335
20390
  }), array(MediaFileSchema).readonly()), method(object({
@@ -20340,7 +20395,8 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20340
20395
  trackId: string(),
20341
20396
  deviceId: number()
20342
20397
  }), array(MediaFileInfoSchema).readonly()), method(object({
20343
- eventId: string(),
20398
+ ownerType: EventOwnerTypeSchema,
20399
+ eventId: number().int(),
20344
20400
  deviceId: number()
20345
20401
  }), array(MediaFileInfoSchema).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), method(object({}), WipeObjectEmbeddingsResultSchema, {
20346
20402
  kind: "mutation",
@@ -24803,8 +24859,8 @@ var IdentitySchema = object({
24803
24859
  id: string(),
24804
24860
  name: string(),
24805
24861
  sampleCount: number().int().nonnegative(),
24806
- coverMediaKey: string().optional(),
24807
- /** Inline base64 of the cover sample's crop, resolved from `coverMediaKey`.
24862
+ coverMediaId: number().int().optional(),
24863
+ /** Inline base64 of the cover sample's crop, resolved from `coverMediaId`.
24808
24864
  * Lets the UI render the person's face avatar instead of a placeholder icon. */
24809
24865
  coverBase64: string().optional()
24810
24866
  });
@@ -24830,8 +24886,8 @@ var IdentitySampleAuditRowSchema = object({
24830
24886
  enrolledAt: number().int(),
24831
24887
  deviceId: number().int().optional(),
24832
24888
  source: _enum(["detected", "photo"]),
24833
- /** The enrolled crop's media key, so the panel can show the evidence. */
24834
- mediaKey: string().optional(),
24889
+ /** The enrolled crop's media row id, so the panel can show the evidence. */
24890
+ mediaId: number().int().optional(),
24835
24891
  /**
24836
24892
  * False = the sample is stamped with a DIFFERENT face model, and a cosine
24837
24893
  * across feature spaces is a well-formed float with no meaning. Every number
@@ -24900,15 +24956,15 @@ var FaceInfoSchema = object({
24900
24956
  */
24901
24957
  cropUrl: string().optional(),
24902
24958
  /** Design B: the face bbox (pixel space) on the key frame — lets a detail
24903
- * view draw the box over the native `keyFrameMediaKey` frame. Absent on
24959
+ * view draw the box over the native `keyFrameMediaId` frame. Absent on
24904
24960
  * legacy rows written before design B. */
24905
24961
  faceBbox: BoundingBoxSchema.optional(),
24906
24962
  /** Design B: MediaStore key of the track's native-resolution key frame.
24907
24963
  * Fetch the native JPEG via the event-media data-plane
24908
- * (`/addon/<addonId>/event-media/<keyFrameMediaKey>`). Absent when the
24964
+ * (`/addon/<addonId>/event-media/m/<keyFrameMediaId>`). Absent when the
24909
24965
  * track produced no key frame (e.g. native/onboard source) — the UI falls
24910
24966
  * back to the inline `base64` face crop. */
24911
- keyFrameMediaKey: string().optional(),
24967
+ keyFrameMediaId: number().int().optional(),
24912
24968
  /** Winning identity-match cosine (0..1) for this face's track, when an
24913
24969
  * identity was auto-confirmed. Lets the UI surface WHY a face was assigned
24914
24970
  * (confidence badge / low-confidence audit). Absent on legacy rows and on
@@ -24977,11 +25033,14 @@ var FaceClusterSchema = object({
24977
25033
  * `data:image/jpeg;base64,…` from a row whose `key` sat right beside it, in a
24978
25034
  * dialog already rendering its key FRAME from the `event-media` plane.
24979
25035
  *
24980
- * `url` is `/addon/<addonId>/event-media/<encoded key>`. The plane resolves a
24981
- * media key directly, so this needed no new plane and no new access decision.
25036
+ * `url` is `/addon/<addonId>/event-media/m/<mediaId>` (D482). The plane
25037
+ * resolves a media row by its own id, so this needed no new plane and no new
25038
+ * access decision.
24982
25039
  */
24983
25040
  var MediaFileLiteSchema$1 = object({
24984
- key: string(),
25041
+ /** The media row's own id — the same address `MediaFileRef.mediaId` carries
25042
+ * (D482). It was the row's composite key, which embedded the owner. */
25043
+ mediaId: number().int(),
24985
25044
  kind: string(),
24986
25045
  url: string(),
24987
25046
  sizeBytes: number(),
@@ -24998,7 +25057,7 @@ method(object({
24998
25057
  * covers inline, ~10 KB of base64 per row, on a query this UI mounts
24999
25058
  * four times and the viewer holds at `staleTime: 30_000`.
25000
25059
  *
25001
- * Nothing loses its avatar: `coverMediaKey` is already on every row and
25060
+ * Nothing loses its avatar: `coverMediaId` is already on every row and
25002
25061
  * the `event-media` plane serves that key `immutable` with an ETag.
25003
25062
  *
25004
25063
  * **This is an INPUT field, so it does not reach the addon until the
@@ -27466,8 +27525,8 @@ var VehicleSchema = object({
27466
27525
  id: string(),
27467
27526
  name: string(),
27468
27527
  sampleCount: number().int().nonnegative(),
27469
- coverMediaKey: string().optional(),
27470
- /** Inline base64 of the cover sample's plate crop, resolved from `coverMediaKey`. */
27528
+ coverMediaId: number().int().optional(),
27529
+ /** Inline base64 of the cover sample's plate crop, resolved from `coverMediaId`. */
27471
27530
  coverBase64: string().optional()
27472
27531
  });
27473
27532
  var VehicleSampleInfoSchema = object({
@@ -27500,7 +27559,7 @@ var PlateInfoSchema = object({
27500
27559
  /** keyFrame parity: the plate bbox (pixel space) on the native key frame. */
27501
27560
  plateBbox: BoundingBoxSchema.optional(),
27502
27561
  /** keyFrame parity: MediaStore key of the track's native-resolution key frame. */
27503
- keyFrameMediaKey: string().optional(),
27562
+ keyFrameMediaId: number().int().optional(),
27504
27563
  base64: string().optional(),
27505
27564
  /**
27506
27565
  * Same crop as a data-plane URL, always present when the plate has a stored
@@ -27521,11 +27580,14 @@ var PlateInfoSchema = object({
27521
27580
  * `data:image/jpeg;base64,…` from a row whose `key` sat right beside it, in a
27522
27581
  * dialog already rendering its key FRAME from the `event-media` plane.
27523
27582
  *
27524
- * `url` is `/addon/<addonId>/event-media/<encoded key>`. The plane resolves a
27525
- * media key directly, so this needed no new plane and no new access decision.
27583
+ * `url` is `/addon/<addonId>/event-media/m/<mediaId>` (D482). The plane
27584
+ * resolves a media row by its own id, so this needed no new plane and no new
27585
+ * access decision.
27526
27586
  */
27527
27587
  var MediaFileLiteSchema = object({
27528
- key: string(),
27588
+ /** The media row's own id — the same address `MediaFileRef.mediaId` carries
27589
+ * (D482). It was the row's composite key, which embedded the owner. */
27590
+ mediaId: number().int(),
27529
27591
  kind: string(),
27530
27592
  url: string(),
27531
27593
  sizeBytes: number(),
@@ -27584,7 +27646,7 @@ method(object({
27584
27646
  }), method(object({
27585
27647
  /** Inline {@link VehicleSchema.coverBase64} on every row. Default
27586
27648
  * `false` — the vehicle twin of `faceGallery.listIdentities`'s
27587
- * option; `coverMediaKey` + the `event-media` plane carry the picture.
27649
+ * option; `coverMediaId` + the `event-media` plane carry the picture.
27588
27650
  * INPUT field: stripped by the hub router until the train ships, which
27589
27651
  * resolves to `false` and is exactly the intended default. */
27590
27652
  includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
@@ -28908,7 +28970,14 @@ var SceneReferenceSchema = object({
28908
28970
  modelId: string(),
28909
28971
  condition: SceneConditionSchema,
28910
28972
  capturedAt: number(),
28911
- thumbnailMediaId: string().optional(),
28973
+ /**
28974
+ * The reference thumbnail's media ROW id (D482).
28975
+ *
28976
+ * The name already said `mediaId` while the value was the row's composite
28977
+ * key — a leftover that read as done and was not. It is the row's own id
28978
+ * now, addressed at `/addon/<addonId>/event-media/m/<id>`.
28979
+ */
28980
+ thumbnailMediaId: number().int().optional(),
28912
28981
  /** Whole-frame (downscaled) embedding captured alongside the ROI crop. The
28913
28982
  * anti-view-shift anchor: a bumped camera, a PTZ preset or a re-aim makes the
28914
28983
  * normalized rect frame a different piece of world, and the scene would
@@ -30356,7 +30425,7 @@ var StationaryObjectSchema = object({
30356
30425
  /** Enrichment label carried from the source track (identity / plate). */
30357
30426
  label: string().optional(),
30358
30427
  /** Native-resolution key-frame media key for the parked object's best image. */
30359
- keyFrameMediaKey: string().optional()
30428
+ keyFrameMediaId: number().int().optional()
30360
30429
  });
30361
30430
  var CameraOccupancySnapshotSchema = object({
30362
30431
  /** Frame timestamp of the inference result that produced this snapshot. */
@@ -31512,6 +31581,12 @@ Object.freeze({
31512
31581
  addonId: null,
31513
31582
  access: "create"
31514
31583
  },
31584
+ "dataStoreProvider.upsert": {
31585
+ capName: "data-store-provider",
31586
+ capScope: "system",
31587
+ addonId: null,
31588
+ access: "create"
31589
+ },
31515
31590
  "dayNight.getOptions": {
31516
31591
  capName: "day-night",
31517
31592
  capScope: "device",
@@ -35376,6 +35451,12 @@ Object.freeze({
35376
35451
  addonId: null,
35377
35452
  access: "create"
35378
35453
  },
35454
+ "settingsStore.upsert": {
35455
+ capName: "settings-store",
35456
+ capScope: "system",
35457
+ addonId: null,
35458
+ access: "create"
35459
+ },
35379
35460
  "smtpProvider.getStatus": {
35380
35461
  capName: "smtp-provider",
35381
35462
  capScope: "system",
@@ -39134,7 +39215,7 @@ var AgentUIAddon = class extends BaseAddon {
39134
39215
  capability: adminUiCapability,
39135
39216
  provider: {
39136
39217
  getStaticDir: async () => ({ staticDir: path.resolve(__dirname) }),
39137
- getVersion: async () => ({ version: "1.2.104" })
39218
+ getVersion: async () => ({ version: "1.2.105" })
39138
39219
  }
39139
39220
  }];
39140
39221
  }