@camstack/addon-agent-ui 1.2.103 → 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 +132 -51
- package/dist/assets/index-ND0cPbe3.js +9 -0
- package/dist/index.html +1 -1
- package/package.json +6 -5
- package/dist/assets/index-DQbUCpm_.js +0 -9
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-
|
|
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,
|
|
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-
|
|
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
|
-
|
|
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
|
-
/**
|
|
18773
|
-
|
|
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
|
-
/**
|
|
19378
|
-
|
|
19379
|
-
/** Design B:
|
|
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/<
|
|
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 `
|
|
19384
|
-
|
|
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/<
|
|
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
|
|
19443
|
-
*
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
* `
|
|
19700
|
-
* served by the event-media plane
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
24807
|
-
/** Inline base64 of the cover sample's crop, resolved from `
|
|
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
|
|
24834
|
-
|
|
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 `
|
|
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/<
|
|
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
|
-
|
|
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/<
|
|
24981
|
-
* media
|
|
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
|
-
|
|
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: `
|
|
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
|
-
|
|
27470
|
-
/** Inline base64 of the cover sample's plate crop, resolved from `
|
|
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
|
-
|
|
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/<
|
|
27525
|
-
* media
|
|
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
|
-
|
|
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; `
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
39218
|
+
getVersion: async () => ({ version: "1.2.105" })
|
|
39138
39219
|
}
|
|
39139
39220
|
}];
|
|
39140
39221
|
}
|