@camstack/addon-remote-storage 1.2.98 → 1.2.99
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/s3.addon.js +1 -1
- package/dist/s3.addon.mjs +1 -1
- package/dist/sftp.addon.js +1 -1
- package/dist/sftp.addon.mjs +1 -1
- package/dist/{shared-DOPOfpNg.js → shared-C99NWjGN.js} +131 -50
- package/dist/{shared-DW9PrJ9O.mjs → shared-wpNbUebc.mjs} +131 -50
- package/dist/smb.addon.js +1 -1
- package/dist/smb.addon.mjs +1 -1
- package/dist/webdav.addon.js +1 -1
- package/dist/webdav.addon.mjs +1 -1
- package/package.json +1 -1
package/dist/s3.addon.js
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_shared = require("./shared-
|
|
5
|
+
const require_shared = require("./shared-C99NWjGN.js");
|
|
6
6
|
let node_stream = require("node:stream");
|
|
7
7
|
let _aws_sdk_client_s3 = require("@aws-sdk/client-s3");
|
|
8
8
|
let _aws_sdk_lib_storage = require("@aws-sdk/lib-storage");
|
package/dist/s3.addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as BaseAddon, i as rearmIdleAbort, n as getOptionalBasePath, o as scheduleIdleAbort, s as storageProviderCapability, t as createSessionId } from "./shared-
|
|
1
|
+
import { c as BaseAddon, i as rearmIdleAbort, n as getOptionalBasePath, o as scheduleIdleAbort, s as storageProviderCapability, t as createSessionId } from "./shared-wpNbUebc.mjs";
|
|
2
2
|
import { PassThrough } from "node:stream";
|
|
3
3
|
import { DeleteObjectCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectsV2Command, PutObjectCommand, S3Client } from "@aws-sdk/client-s3";
|
|
4
4
|
import { Upload } from "@aws-sdk/lib-storage";
|
package/dist/sftp.addon.js
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_shared = require("./shared-
|
|
5
|
+
const require_shared = require("./shared-C99NWjGN.js");
|
|
6
6
|
let ssh2 = require("ssh2");
|
|
7
7
|
let node_path = require("node:path");
|
|
8
8
|
node_path = require_shared.__toESM(node_path);
|
package/dist/sftp.addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-
|
|
1
|
+
import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-wpNbUebc.mjs";
|
|
2
2
|
import { Client } from "ssh2";
|
|
3
3
|
import * as path from "node:path";
|
|
4
4
|
//#region src/providers/sftp/sftp-config-schema.ts
|
|
@@ -23,7 +23,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
23
23
|
let node_crypto = require("node:crypto");
|
|
24
24
|
let node_path = require("node:path");
|
|
25
25
|
node_path = __toESM(node_path);
|
|
26
|
-
//#region ../types/dist/event-category-
|
|
26
|
+
//#region ../types/dist/event-category-ZyX6jcse.mjs
|
|
27
27
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
28
28
|
EventCategory["SystemBoot"] = "system.boot";
|
|
29
29
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -584,7 +584,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
584
584
|
* a package zone — a newly-appeared stationary object of a package class
|
|
585
585
|
* that cleared the class / zone / dwell / size gates. Payload:
|
|
586
586
|
* `PipelineAnalyticsPackageDeliveredPayload` carrying `{ deviceId,
|
|
587
|
-
* entryId, className, zoneIds,
|
|
587
|
+
* entryId, className, zoneIds, keyFrameMediaId?, bbox, timestamp }`.
|
|
588
588
|
* Telemetry (D8): the durable record is the `package-events` store row;
|
|
589
589
|
* this bus topic drives notifier rules + live UI. See
|
|
590
590
|
* docs/superpowers/specs/2026-07-17-package-zones-design.md §5.1.
|
|
@@ -5370,7 +5370,7 @@ var ZodIssueCode = {
|
|
|
5370
5370
|
var ZodFirstPartyTypeKind;
|
|
5371
5371
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5372
5372
|
//#endregion
|
|
5373
|
-
//#region ../types/dist/sleep-
|
|
5373
|
+
//#region ../types/dist/sleep-CnLyvg3w.mjs
|
|
5374
5374
|
/**
|
|
5375
5375
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5376
5376
|
* window to float samples (D455).
|
|
@@ -7321,13 +7321,30 @@ new Set([
|
|
|
7321
7321
|
"scene",
|
|
7322
7322
|
"motion",
|
|
7323
7323
|
"object",
|
|
7324
|
-
"audio"
|
|
7324
|
+
"audio",
|
|
7325
|
+
"mosaic"
|
|
7325
7326
|
]);
|
|
7326
|
-
|
|
7327
|
+
/**
|
|
7328
|
+
* The owner types that are event tables, in the order the event-media resolver
|
|
7329
|
+
* should consider them. Exported so a consumer asking "is this key an event?"
|
|
7330
|
+
* does not re-spell the list and drift from it.
|
|
7331
|
+
*/
|
|
7332
|
+
var EVENT_OWNER_TYPES = [
|
|
7327
7333
|
"motion",
|
|
7328
7334
|
"object",
|
|
7329
7335
|
"audio"
|
|
7330
|
-
]
|
|
7336
|
+
];
|
|
7337
|
+
/**
|
|
7338
|
+
* The same list as a Zod enum, for the cap inputs that must NAME the table
|
|
7339
|
+
* (D482: `getEventMedia` / `listEventMedia` take an owner, and an owner is
|
|
7340
|
+
* `(table, id)`).
|
|
7341
|
+
*
|
|
7342
|
+
* Built FROM {@link EVENT_OWNER_TYPES} rather than re-spelled: a fourth event
|
|
7343
|
+
* table would otherwise be accepted by the codec and refused at the door, with
|
|
7344
|
+
* nothing failing until a caller asked.
|
|
7345
|
+
*/
|
|
7346
|
+
var EventOwnerTypeSchema = _enum(EVENT_OWNER_TYPES);
|
|
7347
|
+
new Set(EVENT_OWNER_TYPES);
|
|
7331
7348
|
var EncodeProfileSchema = object({
|
|
7332
7349
|
video: object({
|
|
7333
7350
|
codec: _enum([
|
|
@@ -12424,6 +12441,16 @@ method(object({
|
|
|
12424
12441
|
filter: QueryFilterSchema.optional(),
|
|
12425
12442
|
columns: array(string()).readonly().optional()
|
|
12426
12443
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
12444
|
+
namespace: string().optional(),
|
|
12445
|
+
collection: string(),
|
|
12446
|
+
/** Declared columns identifying the slot; must be covered by a UNIQUE
|
|
12447
|
+
* index on the collection. Never empty. */
|
|
12448
|
+
conflict: array(string()).readonly(),
|
|
12449
|
+
record: BulkRecordSchema
|
|
12450
|
+
}), object({
|
|
12451
|
+
/** The id the row HAS: assigned by SQLite on an insert, or the existing
|
|
12452
|
+
* row's own id on an update. */
|
|
12453
|
+
id: union([string(), number()]) }), { kind: "mutation" }), method(object({
|
|
12427
12454
|
namespace: string().optional(),
|
|
12428
12455
|
collection: string(),
|
|
12429
12456
|
record: object({
|
|
@@ -12558,6 +12585,14 @@ method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
|
12558
12585
|
id: union([string(), number()]) }), {
|
|
12559
12586
|
kind: "mutation",
|
|
12560
12587
|
auth: "admin"
|
|
12588
|
+
}), method(object({
|
|
12589
|
+
namespace: string().optional(),
|
|
12590
|
+
collection: string(),
|
|
12591
|
+
conflict: array(string()).readonly(),
|
|
12592
|
+
record: BulkRecordSchema
|
|
12593
|
+
}), object({ id: union([string(), number()]) }), {
|
|
12594
|
+
kind: "mutation",
|
|
12595
|
+
auth: "admin"
|
|
12561
12596
|
}), method(object({
|
|
12562
12597
|
namespace: string().optional(),
|
|
12563
12598
|
collection: string(),
|
|
@@ -18774,8 +18809,8 @@ var TrackPositionSchema = object({
|
|
|
18774
18809
|
var TrackSnapshotSchema = object({
|
|
18775
18810
|
timestamp: number(),
|
|
18776
18811
|
position: TrackPositionSchema,
|
|
18777
|
-
/**
|
|
18778
|
-
|
|
18812
|
+
/** The snapshot's media row id (D482); resolve via `listTrackMedia({ trackId })`. */
|
|
18813
|
+
mediaId: number().int()
|
|
18779
18814
|
});
|
|
18780
18815
|
/**
|
|
18781
18816
|
* Normalized 0..1 trajectory envelope (min/max over every position bbox,
|
|
@@ -19379,14 +19414,14 @@ var ObjectEventSchema = object({
|
|
|
19379
19414
|
* pixel-space `bbox` onto a displayed image. Omitted in slim projection. */
|
|
19380
19415
|
frameWidth: number().optional(),
|
|
19381
19416
|
frameHeight: number().optional(),
|
|
19382
|
-
/**
|
|
19383
|
-
|
|
19384
|
-
/** Design B:
|
|
19417
|
+
/** Media row id of the crop attached to this event (if any) — D482. */
|
|
19418
|
+
mediaId: number().int().optional(),
|
|
19419
|
+
/** Design B: media row id of the track's native-resolution key frame (the
|
|
19385
19420
|
* best-detection full frame). Resolve via the event-media data-plane
|
|
19386
|
-
* (`/addon/<addonId>/event-media/<
|
|
19421
|
+
* (`/addon/<addonId>/event-media/m/<keyFrameMediaId>`) for a detail view that
|
|
19387
19422
|
* draws `bbox` over the native frame. Absent on legacy rows / non-decoded
|
|
19388
|
-
* sources — consumers fall back to `
|
|
19389
|
-
|
|
19423
|
+
* sources — consumers fall back to `mediaId` (the tight crop). */
|
|
19424
|
+
keyFrameMediaId: number().int().optional(),
|
|
19390
19425
|
/** Populated by B5 (recording playback URL for this event). */
|
|
19391
19426
|
mediaUrl: string().optional(),
|
|
19392
19427
|
/** The parent track's key-event importance [0,1], propagated to every object
|
|
@@ -19436,7 +19471,7 @@ var MediaFileKindEnum = _enum([
|
|
|
19436
19471
|
* hub-main's heap on the way past — for an `<img>` that would have cached it.
|
|
19437
19472
|
*
|
|
19438
19473
|
* `url` points at the `event-media` data plane
|
|
19439
|
-
* (`/addon/<addonId>/event-media/<
|
|
19474
|
+
* (`/addon/<addonId>/event-media/m/<mediaId>` — D482), which serves the same blob
|
|
19440
19475
|
* with an ETag and `Cache-Control: immutable`, honours conditional GETs, can
|
|
19441
19476
|
* render a `?variant=thumb`, and streams. The hub gate in front of it requires
|
|
19442
19477
|
* a bearer or the session cookie (`access: 'authenticated'`), so the bytes are
|
|
@@ -19444,10 +19479,13 @@ var MediaFileKindEnum = _enum([
|
|
|
19444
19479
|
* `data-plane-access.ts` for the rule and the one gap it does not close
|
|
19445
19480
|
* (per-device scoping).
|
|
19446
19481
|
*
|
|
19447
|
-
* The URL is built from the row's
|
|
19448
|
-
*
|
|
19482
|
+
* The URL is built from the row's own id, which since D482 says nothing about
|
|
19483
|
+
* the row's owner or kind — and that is the point. The published `kind` is not
|
|
19484
|
+
* the stored one (a track's face/plate crop is stored as `crop` under
|
|
19449
19485
|
* `('face'|'plate', '<prefix>-<trackId>')` and published as
|
|
19450
|
-
* `faceCrop`/`plateCrop
|
|
19486
|
+
* `faceCrop`/`plateCrop`), and under the old composite key the URL had to be
|
|
19487
|
+
* taken from `row.key` verbatim or it 404'd exactly those two rows. An id
|
|
19488
|
+
* cannot be mis-reconstructed, because there is nothing in it to reconstruct.
|
|
19451
19489
|
*
|
|
19452
19490
|
* ## `base64` is TRANSITIONAL and is going away
|
|
19453
19491
|
*
|
|
@@ -19460,7 +19498,19 @@ var MediaFileKindEnum = _enum([
|
|
|
19460
19498
|
* `analytics-query-facade.ts`; nothing else reads it.
|
|
19461
19499
|
*/
|
|
19462
19500
|
var MediaFileSchema = object({
|
|
19463
|
-
|
|
19501
|
+
/**
|
|
19502
|
+
* The media row's OWN id — the rowid SQLite assigned it (D482).
|
|
19503
|
+
*
|
|
19504
|
+
* It used to be the row's composite key, `<ownerType>:<ownerId>:<fileKind>
|
|
19505
|
+
* [:<timestampMs>]`, which embedded a FOREIGN id. D474 made event ids
|
|
19506
|
+
* per-table rowid aliases, so `object:101314` and `motion:101314` are two
|
|
19507
|
+
* different rows that spell the same number, and a track whose
|
|
19508
|
+
* `bestEventId` was an object event was served a motion event's snapshot —
|
|
19509
|
+
* a night-time thumbnail on an afternoon track, with no error anywhere. A
|
|
19510
|
+
* surrogate id cannot name the wrong row's owner, because it names no owner
|
|
19511
|
+
* at all.
|
|
19512
|
+
*/
|
|
19513
|
+
mediaId: number().int(),
|
|
19464
19514
|
kind: MediaFileKindEnum,
|
|
19465
19515
|
sizeBytes: number(),
|
|
19466
19516
|
timestamp: number()
|
|
@@ -19568,7 +19618,7 @@ var RetrainTrackSchema = object({
|
|
|
19568
19618
|
});
|
|
19569
19619
|
/** A frame the picker may offer — an index row, no blob was read to produce it. */
|
|
19570
19620
|
var RetrainFrameCandidateSchema = object({
|
|
19571
|
-
|
|
19621
|
+
mediaId: number().int(),
|
|
19572
19622
|
kind: MediaFileKindEnum,
|
|
19573
19623
|
timestamp: number(),
|
|
19574
19624
|
sizeBytes: number().int(),
|
|
@@ -19582,7 +19632,7 @@ var RetrainFrameSchema = object({
|
|
|
19582
19632
|
deviceId: number(),
|
|
19583
19633
|
trackId: string(),
|
|
19584
19634
|
/** Provenance only. It may already point at nothing — that is expected. */
|
|
19585
|
-
|
|
19635
|
+
sourceMediaId: number().int(),
|
|
19586
19636
|
sourceKind: MediaFileKindEnum,
|
|
19587
19637
|
sizeBytes: number().int(),
|
|
19588
19638
|
width: number().int(),
|
|
@@ -19598,7 +19648,7 @@ var RetrainCopyRefusalSchema = _enum([
|
|
|
19598
19648
|
var RetrainFrameSelectionSchema = object({
|
|
19599
19649
|
copied: array(RetrainFrameSchema).readonly(),
|
|
19600
19650
|
refused: array(object({
|
|
19601
|
-
|
|
19651
|
+
sourceMediaId: number().int(),
|
|
19602
19652
|
reason: RetrainCopyRefusalSchema
|
|
19603
19653
|
})).readonly()
|
|
19604
19654
|
});
|
|
@@ -19606,7 +19656,7 @@ var RetrainFrameListSchema = object({
|
|
|
19606
19656
|
candidates: array(RetrainFrameCandidateSchema).readonly(),
|
|
19607
19657
|
copies: array(RetrainFrameSchema).readonly(),
|
|
19608
19658
|
/** What the page pre-selects — the native key frame when one survives. */
|
|
19609
|
-
|
|
19659
|
+
autoPickMediaId: number().int().optional()
|
|
19610
19660
|
});
|
|
19611
19661
|
/** What the operator asked the assist to look for. */
|
|
19612
19662
|
var RetrainAssistSubjectSchema = discriminatedUnion("kind", [object({
|
|
@@ -19701,9 +19751,11 @@ var RecentTracksQueryInput = object({
|
|
|
19701
19751
|
});
|
|
19702
19752
|
/**
|
|
19703
19753
|
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
19704
|
-
* `
|
|
19705
|
-
* served by the event-media plane
|
|
19706
|
-
* member visible has been materialised
|
|
19754
|
+
* `groupShotMediaId` is the media ROW id of its group shot (`ownerKind:
|
|
19755
|
+
* 'summary'`, served by the event-media plane at `/m/<id>`), null until the
|
|
19756
|
+
* first frame with a member visible has been materialised (D482 — it was the
|
|
19757
|
+
* row's composite key, which embedded the owner and could name another table's
|
|
19758
|
+
* row once event ids became per-table rowids).
|
|
19707
19759
|
*/
|
|
19708
19760
|
var SummarySchema = object({
|
|
19709
19761
|
id: string(),
|
|
@@ -19712,7 +19764,7 @@ var SummarySchema = object({
|
|
|
19712
19764
|
lastActiveAt: number(),
|
|
19713
19765
|
sealedAt: number().nullable(),
|
|
19714
19766
|
memberCount: number().int().nonnegative(),
|
|
19715
|
-
|
|
19767
|
+
groupShotMediaId: number().int().nullable()
|
|
19716
19768
|
});
|
|
19717
19769
|
var SummariesQueryInput = object({
|
|
19718
19770
|
deviceIds: array(number()).min(1),
|
|
@@ -20266,7 +20318,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
20266
20318
|
}), method(object({
|
|
20267
20319
|
deviceId: number(),
|
|
20268
20320
|
trackId: string(),
|
|
20269
|
-
|
|
20321
|
+
mediaIds: array(number().int()).min(1)
|
|
20270
20322
|
}), RetrainFrameSelectionSchema, {
|
|
20271
20323
|
kind: "mutation",
|
|
20272
20324
|
auth: "admin"
|
|
@@ -20334,7 +20386,10 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
20334
20386
|
kind: "query",
|
|
20335
20387
|
auth: "admin"
|
|
20336
20388
|
}), method(object({
|
|
20337
|
-
|
|
20389
|
+
/** Which of the three event tables owns the row. */
|
|
20390
|
+
ownerType: EventOwnerTypeSchema,
|
|
20391
|
+
/** The event's rowid in that table (D474: an event id is a number). */
|
|
20392
|
+
eventId: number().int(),
|
|
20338
20393
|
kind: MediaFileKindEnum.optional(),
|
|
20339
20394
|
deviceId: number()
|
|
20340
20395
|
}), array(MediaFileSchema).readonly()), method(object({
|
|
@@ -20345,7 +20400,8 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
20345
20400
|
trackId: string(),
|
|
20346
20401
|
deviceId: number()
|
|
20347
20402
|
}), array(MediaFileInfoSchema).readonly()), method(object({
|
|
20348
|
-
|
|
20403
|
+
ownerType: EventOwnerTypeSchema,
|
|
20404
|
+
eventId: number().int(),
|
|
20349
20405
|
deviceId: number()
|
|
20350
20406
|
}), array(MediaFileInfoSchema).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), method(object({}), WipeObjectEmbeddingsResultSchema, {
|
|
20351
20407
|
kind: "mutation",
|
|
@@ -24868,8 +24924,8 @@ var IdentitySchema = object({
|
|
|
24868
24924
|
id: string(),
|
|
24869
24925
|
name: string(),
|
|
24870
24926
|
sampleCount: number().int().nonnegative(),
|
|
24871
|
-
|
|
24872
|
-
/** Inline base64 of the cover sample's crop, resolved from `
|
|
24927
|
+
coverMediaId: number().int().optional(),
|
|
24928
|
+
/** Inline base64 of the cover sample's crop, resolved from `coverMediaId`.
|
|
24873
24929
|
* Lets the UI render the person's face avatar instead of a placeholder icon. */
|
|
24874
24930
|
coverBase64: string().optional()
|
|
24875
24931
|
});
|
|
@@ -24895,8 +24951,8 @@ var IdentitySampleAuditRowSchema = object({
|
|
|
24895
24951
|
enrolledAt: number().int(),
|
|
24896
24952
|
deviceId: number().int().optional(),
|
|
24897
24953
|
source: _enum(["detected", "photo"]),
|
|
24898
|
-
/** The enrolled crop's media
|
|
24899
|
-
|
|
24954
|
+
/** The enrolled crop's media row id, so the panel can show the evidence. */
|
|
24955
|
+
mediaId: number().int().optional(),
|
|
24900
24956
|
/**
|
|
24901
24957
|
* False = the sample is stamped with a DIFFERENT face model, and a cosine
|
|
24902
24958
|
* across feature spaces is a well-formed float with no meaning. Every number
|
|
@@ -24965,15 +25021,15 @@ var FaceInfoSchema = object({
|
|
|
24965
25021
|
*/
|
|
24966
25022
|
cropUrl: string().optional(),
|
|
24967
25023
|
/** Design B: the face bbox (pixel space) on the key frame — lets a detail
|
|
24968
|
-
* view draw the box over the native `
|
|
25024
|
+
* view draw the box over the native `keyFrameMediaId` frame. Absent on
|
|
24969
25025
|
* legacy rows written before design B. */
|
|
24970
25026
|
faceBbox: BoundingBoxSchema.optional(),
|
|
24971
25027
|
/** Design B: MediaStore key of the track's native-resolution key frame.
|
|
24972
25028
|
* Fetch the native JPEG via the event-media data-plane
|
|
24973
|
-
* (`/addon/<addonId>/event-media/<
|
|
25029
|
+
* (`/addon/<addonId>/event-media/m/<keyFrameMediaId>`). Absent when the
|
|
24974
25030
|
* track produced no key frame (e.g. native/onboard source) — the UI falls
|
|
24975
25031
|
* back to the inline `base64` face crop. */
|
|
24976
|
-
|
|
25032
|
+
keyFrameMediaId: number().int().optional(),
|
|
24977
25033
|
/** Winning identity-match cosine (0..1) for this face's track, when an
|
|
24978
25034
|
* identity was auto-confirmed. Lets the UI surface WHY a face was assigned
|
|
24979
25035
|
* (confidence badge / low-confidence audit). Absent on legacy rows and on
|
|
@@ -25042,11 +25098,14 @@ var FaceClusterSchema = object({
|
|
|
25042
25098
|
* `data:image/jpeg;base64,…` from a row whose `key` sat right beside it, in a
|
|
25043
25099
|
* dialog already rendering its key FRAME from the `event-media` plane.
|
|
25044
25100
|
*
|
|
25045
|
-
* `url` is `/addon/<addonId>/event-media/<
|
|
25046
|
-
* media
|
|
25101
|
+
* `url` is `/addon/<addonId>/event-media/m/<mediaId>` (D482). The plane
|
|
25102
|
+
* resolves a media row by its own id, so this needed no new plane and no new
|
|
25103
|
+
* access decision.
|
|
25047
25104
|
*/
|
|
25048
25105
|
var MediaFileLiteSchema$1 = object({
|
|
25049
|
-
|
|
25106
|
+
/** The media row's own id — the same address `MediaFileRef.mediaId` carries
|
|
25107
|
+
* (D482). It was the row's composite key, which embedded the owner. */
|
|
25108
|
+
mediaId: number().int(),
|
|
25050
25109
|
kind: string(),
|
|
25051
25110
|
url: string(),
|
|
25052
25111
|
sizeBytes: number(),
|
|
@@ -25063,7 +25122,7 @@ method(object({
|
|
|
25063
25122
|
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
25064
25123
|
* four times and the viewer holds at `staleTime: 30_000`.
|
|
25065
25124
|
*
|
|
25066
|
-
* Nothing loses its avatar: `
|
|
25125
|
+
* Nothing loses its avatar: `coverMediaId` is already on every row and
|
|
25067
25126
|
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
25068
25127
|
*
|
|
25069
25128
|
* **This is an INPUT field, so it does not reach the addon until the
|
|
@@ -27531,8 +27590,8 @@ var VehicleSchema = object({
|
|
|
27531
27590
|
id: string(),
|
|
27532
27591
|
name: string(),
|
|
27533
27592
|
sampleCount: number().int().nonnegative(),
|
|
27534
|
-
|
|
27535
|
-
/** Inline base64 of the cover sample's plate crop, resolved from `
|
|
27593
|
+
coverMediaId: number().int().optional(),
|
|
27594
|
+
/** Inline base64 of the cover sample's plate crop, resolved from `coverMediaId`. */
|
|
27536
27595
|
coverBase64: string().optional()
|
|
27537
27596
|
});
|
|
27538
27597
|
var VehicleSampleInfoSchema = object({
|
|
@@ -27565,7 +27624,7 @@ var PlateInfoSchema = object({
|
|
|
27565
27624
|
/** keyFrame parity: the plate bbox (pixel space) on the native key frame. */
|
|
27566
27625
|
plateBbox: BoundingBoxSchema.optional(),
|
|
27567
27626
|
/** keyFrame parity: MediaStore key of the track's native-resolution key frame. */
|
|
27568
|
-
|
|
27627
|
+
keyFrameMediaId: number().int().optional(),
|
|
27569
27628
|
base64: string().optional(),
|
|
27570
27629
|
/**
|
|
27571
27630
|
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
@@ -27586,11 +27645,14 @@ var PlateInfoSchema = object({
|
|
|
27586
27645
|
* `data:image/jpeg;base64,…` from a row whose `key` sat right beside it, in a
|
|
27587
27646
|
* dialog already rendering its key FRAME from the `event-media` plane.
|
|
27588
27647
|
*
|
|
27589
|
-
* `url` is `/addon/<addonId>/event-media/<
|
|
27590
|
-
* media
|
|
27648
|
+
* `url` is `/addon/<addonId>/event-media/m/<mediaId>` (D482). The plane
|
|
27649
|
+
* resolves a media row by its own id, so this needed no new plane and no new
|
|
27650
|
+
* access decision.
|
|
27591
27651
|
*/
|
|
27592
27652
|
var MediaFileLiteSchema = object({
|
|
27593
|
-
|
|
27653
|
+
/** The media row's own id — the same address `MediaFileRef.mediaId` carries
|
|
27654
|
+
* (D482). It was the row's composite key, which embedded the owner. */
|
|
27655
|
+
mediaId: number().int(),
|
|
27594
27656
|
kind: string(),
|
|
27595
27657
|
url: string(),
|
|
27596
27658
|
sizeBytes: number(),
|
|
@@ -27649,7 +27711,7 @@ method(object({
|
|
|
27649
27711
|
}), method(object({
|
|
27650
27712
|
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
27651
27713
|
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
27652
|
-
* option; `
|
|
27714
|
+
* option; `coverMediaId` + the `event-media` plane carry the picture.
|
|
27653
27715
|
* INPUT field: stripped by the hub router until the train ships, which
|
|
27654
27716
|
* resolves to `false` and is exactly the intended default. */
|
|
27655
27717
|
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
@@ -28973,7 +29035,14 @@ var SceneReferenceSchema = object({
|
|
|
28973
29035
|
modelId: string(),
|
|
28974
29036
|
condition: SceneConditionSchema,
|
|
28975
29037
|
capturedAt: number(),
|
|
28976
|
-
|
|
29038
|
+
/**
|
|
29039
|
+
* The reference thumbnail's media ROW id (D482).
|
|
29040
|
+
*
|
|
29041
|
+
* The name already said `mediaId` while the value was the row's composite
|
|
29042
|
+
* key — a leftover that read as done and was not. It is the row's own id
|
|
29043
|
+
* now, addressed at `/addon/<addonId>/event-media/m/<id>`.
|
|
29044
|
+
*/
|
|
29045
|
+
thumbnailMediaId: number().int().optional(),
|
|
28977
29046
|
/** Whole-frame (downscaled) embedding captured alongside the ROI crop. The
|
|
28978
29047
|
* anti-view-shift anchor: a bumped camera, a PTZ preset or a re-aim makes the
|
|
28979
29048
|
* normalized rect frame a different piece of world, and the scene would
|
|
@@ -30421,7 +30490,7 @@ var StationaryObjectSchema = object({
|
|
|
30421
30490
|
/** Enrichment label carried from the source track (identity / plate). */
|
|
30422
30491
|
label: string().optional(),
|
|
30423
30492
|
/** Native-resolution key-frame media key for the parked object's best image. */
|
|
30424
|
-
|
|
30493
|
+
keyFrameMediaId: number().int().optional()
|
|
30425
30494
|
});
|
|
30426
30495
|
var CameraOccupancySnapshotSchema = object({
|
|
30427
30496
|
/** Frame timestamp of the inference result that produced this snapshot. */
|
|
@@ -31577,6 +31646,12 @@ Object.freeze({
|
|
|
31577
31646
|
addonId: null,
|
|
31578
31647
|
access: "create"
|
|
31579
31648
|
},
|
|
31649
|
+
"dataStoreProvider.upsert": {
|
|
31650
|
+
capName: "data-store-provider",
|
|
31651
|
+
capScope: "system",
|
|
31652
|
+
addonId: null,
|
|
31653
|
+
access: "create"
|
|
31654
|
+
},
|
|
31580
31655
|
"dayNight.getOptions": {
|
|
31581
31656
|
capName: "day-night",
|
|
31582
31657
|
capScope: "device",
|
|
@@ -35441,6 +35516,12 @@ Object.freeze({
|
|
|
35441
35516
|
addonId: null,
|
|
35442
35517
|
access: "create"
|
|
35443
35518
|
},
|
|
35519
|
+
"settingsStore.upsert": {
|
|
35520
|
+
capName: "settings-store",
|
|
35521
|
+
capScope: "system",
|
|
35522
|
+
addonId: null,
|
|
35523
|
+
access: "create"
|
|
35524
|
+
},
|
|
35444
35525
|
"smtpProvider.getStatus": {
|
|
35445
35526
|
capName: "smtp-provider",
|
|
35446
35527
|
capScope: "system",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import * as path from "node:path";
|
|
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).
|
|
@@ -7298,13 +7298,30 @@ new Set([
|
|
|
7298
7298
|
"scene",
|
|
7299
7299
|
"motion",
|
|
7300
7300
|
"object",
|
|
7301
|
-
"audio"
|
|
7301
|
+
"audio",
|
|
7302
|
+
"mosaic"
|
|
7302
7303
|
]);
|
|
7303
|
-
|
|
7304
|
+
/**
|
|
7305
|
+
* The owner types that are event tables, in the order the event-media resolver
|
|
7306
|
+
* should consider them. Exported so a consumer asking "is this key an event?"
|
|
7307
|
+
* does not re-spell the list and drift from it.
|
|
7308
|
+
*/
|
|
7309
|
+
var EVENT_OWNER_TYPES = [
|
|
7304
7310
|
"motion",
|
|
7305
7311
|
"object",
|
|
7306
7312
|
"audio"
|
|
7307
|
-
]
|
|
7313
|
+
];
|
|
7314
|
+
/**
|
|
7315
|
+
* The same list as a Zod enum, for the cap inputs that must NAME the table
|
|
7316
|
+
* (D482: `getEventMedia` / `listEventMedia` take an owner, and an owner is
|
|
7317
|
+
* `(table, id)`).
|
|
7318
|
+
*
|
|
7319
|
+
* Built FROM {@link EVENT_OWNER_TYPES} rather than re-spelled: a fourth event
|
|
7320
|
+
* table would otherwise be accepted by the codec and refused at the door, with
|
|
7321
|
+
* nothing failing until a caller asked.
|
|
7322
|
+
*/
|
|
7323
|
+
var EventOwnerTypeSchema = _enum(EVENT_OWNER_TYPES);
|
|
7324
|
+
new Set(EVENT_OWNER_TYPES);
|
|
7308
7325
|
var EncodeProfileSchema = object({
|
|
7309
7326
|
video: object({
|
|
7310
7327
|
codec: _enum([
|
|
@@ -12401,6 +12418,16 @@ method(object({
|
|
|
12401
12418
|
filter: QueryFilterSchema.optional(),
|
|
12402
12419
|
columns: array(string()).readonly().optional()
|
|
12403
12420
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
12421
|
+
namespace: string().optional(),
|
|
12422
|
+
collection: string(),
|
|
12423
|
+
/** Declared columns identifying the slot; must be covered by a UNIQUE
|
|
12424
|
+
* index on the collection. Never empty. */
|
|
12425
|
+
conflict: array(string()).readonly(),
|
|
12426
|
+
record: BulkRecordSchema
|
|
12427
|
+
}), object({
|
|
12428
|
+
/** The id the row HAS: assigned by SQLite on an insert, or the existing
|
|
12429
|
+
* row's own id on an update. */
|
|
12430
|
+
id: union([string(), number()]) }), { kind: "mutation" }), method(object({
|
|
12404
12431
|
namespace: string().optional(),
|
|
12405
12432
|
collection: string(),
|
|
12406
12433
|
record: object({
|
|
@@ -12535,6 +12562,14 @@ method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
|
12535
12562
|
id: union([string(), number()]) }), {
|
|
12536
12563
|
kind: "mutation",
|
|
12537
12564
|
auth: "admin"
|
|
12565
|
+
}), method(object({
|
|
12566
|
+
namespace: string().optional(),
|
|
12567
|
+
collection: string(),
|
|
12568
|
+
conflict: array(string()).readonly(),
|
|
12569
|
+
record: BulkRecordSchema
|
|
12570
|
+
}), object({ id: union([string(), number()]) }), {
|
|
12571
|
+
kind: "mutation",
|
|
12572
|
+
auth: "admin"
|
|
12538
12573
|
}), method(object({
|
|
12539
12574
|
namespace: string().optional(),
|
|
12540
12575
|
collection: string(),
|
|
@@ -18751,8 +18786,8 @@ var TrackPositionSchema = object({
|
|
|
18751
18786
|
var TrackSnapshotSchema = object({
|
|
18752
18787
|
timestamp: number(),
|
|
18753
18788
|
position: TrackPositionSchema,
|
|
18754
|
-
/**
|
|
18755
|
-
|
|
18789
|
+
/** The snapshot's media row id (D482); resolve via `listTrackMedia({ trackId })`. */
|
|
18790
|
+
mediaId: number().int()
|
|
18756
18791
|
});
|
|
18757
18792
|
/**
|
|
18758
18793
|
* Normalized 0..1 trajectory envelope (min/max over every position bbox,
|
|
@@ -19356,14 +19391,14 @@ var ObjectEventSchema = object({
|
|
|
19356
19391
|
* pixel-space `bbox` onto a displayed image. Omitted in slim projection. */
|
|
19357
19392
|
frameWidth: number().optional(),
|
|
19358
19393
|
frameHeight: number().optional(),
|
|
19359
|
-
/**
|
|
19360
|
-
|
|
19361
|
-
/** Design B:
|
|
19394
|
+
/** Media row id of the crop attached to this event (if any) — D482. */
|
|
19395
|
+
mediaId: number().int().optional(),
|
|
19396
|
+
/** Design B: media row id of the track's native-resolution key frame (the
|
|
19362
19397
|
* best-detection full frame). Resolve via the event-media data-plane
|
|
19363
|
-
* (`/addon/<addonId>/event-media/<
|
|
19398
|
+
* (`/addon/<addonId>/event-media/m/<keyFrameMediaId>`) for a detail view that
|
|
19364
19399
|
* draws `bbox` over the native frame. Absent on legacy rows / non-decoded
|
|
19365
|
-
* sources — consumers fall back to `
|
|
19366
|
-
|
|
19400
|
+
* sources — consumers fall back to `mediaId` (the tight crop). */
|
|
19401
|
+
keyFrameMediaId: number().int().optional(),
|
|
19367
19402
|
/** Populated by B5 (recording playback URL for this event). */
|
|
19368
19403
|
mediaUrl: string().optional(),
|
|
19369
19404
|
/** The parent track's key-event importance [0,1], propagated to every object
|
|
@@ -19413,7 +19448,7 @@ var MediaFileKindEnum = _enum([
|
|
|
19413
19448
|
* hub-main's heap on the way past — for an `<img>` that would have cached it.
|
|
19414
19449
|
*
|
|
19415
19450
|
* `url` points at the `event-media` data plane
|
|
19416
|
-
* (`/addon/<addonId>/event-media/<
|
|
19451
|
+
* (`/addon/<addonId>/event-media/m/<mediaId>` — D482), which serves the same blob
|
|
19417
19452
|
* with an ETag and `Cache-Control: immutable`, honours conditional GETs, can
|
|
19418
19453
|
* render a `?variant=thumb`, and streams. The hub gate in front of it requires
|
|
19419
19454
|
* a bearer or the session cookie (`access: 'authenticated'`), so the bytes are
|
|
@@ -19421,10 +19456,13 @@ var MediaFileKindEnum = _enum([
|
|
|
19421
19456
|
* `data-plane-access.ts` for the rule and the one gap it does not close
|
|
19422
19457
|
* (per-device scoping).
|
|
19423
19458
|
*
|
|
19424
|
-
* The URL is built from the row's
|
|
19425
|
-
*
|
|
19459
|
+
* The URL is built from the row's own id, which since D482 says nothing about
|
|
19460
|
+
* the row's owner or kind — and that is the point. The published `kind` is not
|
|
19461
|
+
* the stored one (a track's face/plate crop is stored as `crop` under
|
|
19426
19462
|
* `('face'|'plate', '<prefix>-<trackId>')` and published as
|
|
19427
|
-
* `faceCrop`/`plateCrop
|
|
19463
|
+
* `faceCrop`/`plateCrop`), and under the old composite key the URL had to be
|
|
19464
|
+
* taken from `row.key` verbatim or it 404'd exactly those two rows. An id
|
|
19465
|
+
* cannot be mis-reconstructed, because there is nothing in it to reconstruct.
|
|
19428
19466
|
*
|
|
19429
19467
|
* ## `base64` is TRANSITIONAL and is going away
|
|
19430
19468
|
*
|
|
@@ -19437,7 +19475,19 @@ var MediaFileKindEnum = _enum([
|
|
|
19437
19475
|
* `analytics-query-facade.ts`; nothing else reads it.
|
|
19438
19476
|
*/
|
|
19439
19477
|
var MediaFileSchema = object({
|
|
19440
|
-
|
|
19478
|
+
/**
|
|
19479
|
+
* The media row's OWN id — the rowid SQLite assigned it (D482).
|
|
19480
|
+
*
|
|
19481
|
+
* It used to be the row's composite key, `<ownerType>:<ownerId>:<fileKind>
|
|
19482
|
+
* [:<timestampMs>]`, which embedded a FOREIGN id. D474 made event ids
|
|
19483
|
+
* per-table rowid aliases, so `object:101314` and `motion:101314` are two
|
|
19484
|
+
* different rows that spell the same number, and a track whose
|
|
19485
|
+
* `bestEventId` was an object event was served a motion event's snapshot —
|
|
19486
|
+
* a night-time thumbnail on an afternoon track, with no error anywhere. A
|
|
19487
|
+
* surrogate id cannot name the wrong row's owner, because it names no owner
|
|
19488
|
+
* at all.
|
|
19489
|
+
*/
|
|
19490
|
+
mediaId: number().int(),
|
|
19441
19491
|
kind: MediaFileKindEnum,
|
|
19442
19492
|
sizeBytes: number(),
|
|
19443
19493
|
timestamp: number()
|
|
@@ -19545,7 +19595,7 @@ var RetrainTrackSchema = object({
|
|
|
19545
19595
|
});
|
|
19546
19596
|
/** A frame the picker may offer — an index row, no blob was read to produce it. */
|
|
19547
19597
|
var RetrainFrameCandidateSchema = object({
|
|
19548
|
-
|
|
19598
|
+
mediaId: number().int(),
|
|
19549
19599
|
kind: MediaFileKindEnum,
|
|
19550
19600
|
timestamp: number(),
|
|
19551
19601
|
sizeBytes: number().int(),
|
|
@@ -19559,7 +19609,7 @@ var RetrainFrameSchema = object({
|
|
|
19559
19609
|
deviceId: number(),
|
|
19560
19610
|
trackId: string(),
|
|
19561
19611
|
/** Provenance only. It may already point at nothing — that is expected. */
|
|
19562
|
-
|
|
19612
|
+
sourceMediaId: number().int(),
|
|
19563
19613
|
sourceKind: MediaFileKindEnum,
|
|
19564
19614
|
sizeBytes: number().int(),
|
|
19565
19615
|
width: number().int(),
|
|
@@ -19575,7 +19625,7 @@ var RetrainCopyRefusalSchema = _enum([
|
|
|
19575
19625
|
var RetrainFrameSelectionSchema = object({
|
|
19576
19626
|
copied: array(RetrainFrameSchema).readonly(),
|
|
19577
19627
|
refused: array(object({
|
|
19578
|
-
|
|
19628
|
+
sourceMediaId: number().int(),
|
|
19579
19629
|
reason: RetrainCopyRefusalSchema
|
|
19580
19630
|
})).readonly()
|
|
19581
19631
|
});
|
|
@@ -19583,7 +19633,7 @@ var RetrainFrameListSchema = object({
|
|
|
19583
19633
|
candidates: array(RetrainFrameCandidateSchema).readonly(),
|
|
19584
19634
|
copies: array(RetrainFrameSchema).readonly(),
|
|
19585
19635
|
/** What the page pre-selects — the native key frame when one survives. */
|
|
19586
|
-
|
|
19636
|
+
autoPickMediaId: number().int().optional()
|
|
19587
19637
|
});
|
|
19588
19638
|
/** What the operator asked the assist to look for. */
|
|
19589
19639
|
var RetrainAssistSubjectSchema = discriminatedUnion("kind", [object({
|
|
@@ -19678,9 +19728,11 @@ var RecentTracksQueryInput = object({
|
|
|
19678
19728
|
});
|
|
19679
19729
|
/**
|
|
19680
19730
|
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
19681
|
-
* `
|
|
19682
|
-
* served by the event-media plane
|
|
19683
|
-
* member visible has been materialised
|
|
19731
|
+
* `groupShotMediaId` is the media ROW id of its group shot (`ownerKind:
|
|
19732
|
+
* 'summary'`, served by the event-media plane at `/m/<id>`), null until the
|
|
19733
|
+
* first frame with a member visible has been materialised (D482 — it was the
|
|
19734
|
+
* row's composite key, which embedded the owner and could name another table's
|
|
19735
|
+
* row once event ids became per-table rowids).
|
|
19684
19736
|
*/
|
|
19685
19737
|
var SummarySchema = object({
|
|
19686
19738
|
id: string(),
|
|
@@ -19689,7 +19741,7 @@ var SummarySchema = object({
|
|
|
19689
19741
|
lastActiveAt: number(),
|
|
19690
19742
|
sealedAt: number().nullable(),
|
|
19691
19743
|
memberCount: number().int().nonnegative(),
|
|
19692
|
-
|
|
19744
|
+
groupShotMediaId: number().int().nullable()
|
|
19693
19745
|
});
|
|
19694
19746
|
var SummariesQueryInput = object({
|
|
19695
19747
|
deviceIds: array(number()).min(1),
|
|
@@ -20243,7 +20295,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
20243
20295
|
}), method(object({
|
|
20244
20296
|
deviceId: number(),
|
|
20245
20297
|
trackId: string(),
|
|
20246
|
-
|
|
20298
|
+
mediaIds: array(number().int()).min(1)
|
|
20247
20299
|
}), RetrainFrameSelectionSchema, {
|
|
20248
20300
|
kind: "mutation",
|
|
20249
20301
|
auth: "admin"
|
|
@@ -20311,7 +20363,10 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
20311
20363
|
kind: "query",
|
|
20312
20364
|
auth: "admin"
|
|
20313
20365
|
}), method(object({
|
|
20314
|
-
|
|
20366
|
+
/** Which of the three event tables owns the row. */
|
|
20367
|
+
ownerType: EventOwnerTypeSchema,
|
|
20368
|
+
/** The event's rowid in that table (D474: an event id is a number). */
|
|
20369
|
+
eventId: number().int(),
|
|
20315
20370
|
kind: MediaFileKindEnum.optional(),
|
|
20316
20371
|
deviceId: number()
|
|
20317
20372
|
}), array(MediaFileSchema).readonly()), method(object({
|
|
@@ -20322,7 +20377,8 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
20322
20377
|
trackId: string(),
|
|
20323
20378
|
deviceId: number()
|
|
20324
20379
|
}), array(MediaFileInfoSchema).readonly()), method(object({
|
|
20325
|
-
|
|
20380
|
+
ownerType: EventOwnerTypeSchema,
|
|
20381
|
+
eventId: number().int(),
|
|
20326
20382
|
deviceId: number()
|
|
20327
20383
|
}), array(MediaFileInfoSchema).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), method(object({}), WipeObjectEmbeddingsResultSchema, {
|
|
20328
20384
|
kind: "mutation",
|
|
@@ -24845,8 +24901,8 @@ var IdentitySchema = object({
|
|
|
24845
24901
|
id: string(),
|
|
24846
24902
|
name: string(),
|
|
24847
24903
|
sampleCount: number().int().nonnegative(),
|
|
24848
|
-
|
|
24849
|
-
/** Inline base64 of the cover sample's crop, resolved from `
|
|
24904
|
+
coverMediaId: number().int().optional(),
|
|
24905
|
+
/** Inline base64 of the cover sample's crop, resolved from `coverMediaId`.
|
|
24850
24906
|
* Lets the UI render the person's face avatar instead of a placeholder icon. */
|
|
24851
24907
|
coverBase64: string().optional()
|
|
24852
24908
|
});
|
|
@@ -24872,8 +24928,8 @@ var IdentitySampleAuditRowSchema = object({
|
|
|
24872
24928
|
enrolledAt: number().int(),
|
|
24873
24929
|
deviceId: number().int().optional(),
|
|
24874
24930
|
source: _enum(["detected", "photo"]),
|
|
24875
|
-
/** The enrolled crop's media
|
|
24876
|
-
|
|
24931
|
+
/** The enrolled crop's media row id, so the panel can show the evidence. */
|
|
24932
|
+
mediaId: number().int().optional(),
|
|
24877
24933
|
/**
|
|
24878
24934
|
* False = the sample is stamped with a DIFFERENT face model, and a cosine
|
|
24879
24935
|
* across feature spaces is a well-formed float with no meaning. Every number
|
|
@@ -24942,15 +24998,15 @@ var FaceInfoSchema = object({
|
|
|
24942
24998
|
*/
|
|
24943
24999
|
cropUrl: string().optional(),
|
|
24944
25000
|
/** Design B: the face bbox (pixel space) on the key frame — lets a detail
|
|
24945
|
-
* view draw the box over the native `
|
|
25001
|
+
* view draw the box over the native `keyFrameMediaId` frame. Absent on
|
|
24946
25002
|
* legacy rows written before design B. */
|
|
24947
25003
|
faceBbox: BoundingBoxSchema.optional(),
|
|
24948
25004
|
/** Design B: MediaStore key of the track's native-resolution key frame.
|
|
24949
25005
|
* Fetch the native JPEG via the event-media data-plane
|
|
24950
|
-
* (`/addon/<addonId>/event-media/<
|
|
25006
|
+
* (`/addon/<addonId>/event-media/m/<keyFrameMediaId>`). Absent when the
|
|
24951
25007
|
* track produced no key frame (e.g. native/onboard source) — the UI falls
|
|
24952
25008
|
* back to the inline `base64` face crop. */
|
|
24953
|
-
|
|
25009
|
+
keyFrameMediaId: number().int().optional(),
|
|
24954
25010
|
/** Winning identity-match cosine (0..1) for this face's track, when an
|
|
24955
25011
|
* identity was auto-confirmed. Lets the UI surface WHY a face was assigned
|
|
24956
25012
|
* (confidence badge / low-confidence audit). Absent on legacy rows and on
|
|
@@ -25019,11 +25075,14 @@ var FaceClusterSchema = object({
|
|
|
25019
25075
|
* `data:image/jpeg;base64,…` from a row whose `key` sat right beside it, in a
|
|
25020
25076
|
* dialog already rendering its key FRAME from the `event-media` plane.
|
|
25021
25077
|
*
|
|
25022
|
-
* `url` is `/addon/<addonId>/event-media/<
|
|
25023
|
-
* media
|
|
25078
|
+
* `url` is `/addon/<addonId>/event-media/m/<mediaId>` (D482). The plane
|
|
25079
|
+
* resolves a media row by its own id, so this needed no new plane and no new
|
|
25080
|
+
* access decision.
|
|
25024
25081
|
*/
|
|
25025
25082
|
var MediaFileLiteSchema$1 = object({
|
|
25026
|
-
|
|
25083
|
+
/** The media row's own id — the same address `MediaFileRef.mediaId` carries
|
|
25084
|
+
* (D482). It was the row's composite key, which embedded the owner. */
|
|
25085
|
+
mediaId: number().int(),
|
|
25027
25086
|
kind: string(),
|
|
25028
25087
|
url: string(),
|
|
25029
25088
|
sizeBytes: number(),
|
|
@@ -25040,7 +25099,7 @@ method(object({
|
|
|
25040
25099
|
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
25041
25100
|
* four times and the viewer holds at `staleTime: 30_000`.
|
|
25042
25101
|
*
|
|
25043
|
-
* Nothing loses its avatar: `
|
|
25102
|
+
* Nothing loses its avatar: `coverMediaId` is already on every row and
|
|
25044
25103
|
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
25045
25104
|
*
|
|
25046
25105
|
* **This is an INPUT field, so it does not reach the addon until the
|
|
@@ -27508,8 +27567,8 @@ var VehicleSchema = object({
|
|
|
27508
27567
|
id: string(),
|
|
27509
27568
|
name: string(),
|
|
27510
27569
|
sampleCount: number().int().nonnegative(),
|
|
27511
|
-
|
|
27512
|
-
/** Inline base64 of the cover sample's plate crop, resolved from `
|
|
27570
|
+
coverMediaId: number().int().optional(),
|
|
27571
|
+
/** Inline base64 of the cover sample's plate crop, resolved from `coverMediaId`. */
|
|
27513
27572
|
coverBase64: string().optional()
|
|
27514
27573
|
});
|
|
27515
27574
|
var VehicleSampleInfoSchema = object({
|
|
@@ -27542,7 +27601,7 @@ var PlateInfoSchema = object({
|
|
|
27542
27601
|
/** keyFrame parity: the plate bbox (pixel space) on the native key frame. */
|
|
27543
27602
|
plateBbox: BoundingBoxSchema.optional(),
|
|
27544
27603
|
/** keyFrame parity: MediaStore key of the track's native-resolution key frame. */
|
|
27545
|
-
|
|
27604
|
+
keyFrameMediaId: number().int().optional(),
|
|
27546
27605
|
base64: string().optional(),
|
|
27547
27606
|
/**
|
|
27548
27607
|
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
@@ -27563,11 +27622,14 @@ var PlateInfoSchema = object({
|
|
|
27563
27622
|
* `data:image/jpeg;base64,…` from a row whose `key` sat right beside it, in a
|
|
27564
27623
|
* dialog already rendering its key FRAME from the `event-media` plane.
|
|
27565
27624
|
*
|
|
27566
|
-
* `url` is `/addon/<addonId>/event-media/<
|
|
27567
|
-
* media
|
|
27625
|
+
* `url` is `/addon/<addonId>/event-media/m/<mediaId>` (D482). The plane
|
|
27626
|
+
* resolves a media row by its own id, so this needed no new plane and no new
|
|
27627
|
+
* access decision.
|
|
27568
27628
|
*/
|
|
27569
27629
|
var MediaFileLiteSchema = object({
|
|
27570
|
-
|
|
27630
|
+
/** The media row's own id — the same address `MediaFileRef.mediaId` carries
|
|
27631
|
+
* (D482). It was the row's composite key, which embedded the owner. */
|
|
27632
|
+
mediaId: number().int(),
|
|
27571
27633
|
kind: string(),
|
|
27572
27634
|
url: string(),
|
|
27573
27635
|
sizeBytes: number(),
|
|
@@ -27626,7 +27688,7 @@ method(object({
|
|
|
27626
27688
|
}), method(object({
|
|
27627
27689
|
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
27628
27690
|
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
27629
|
-
* option; `
|
|
27691
|
+
* option; `coverMediaId` + the `event-media` plane carry the picture.
|
|
27630
27692
|
* INPUT field: stripped by the hub router until the train ships, which
|
|
27631
27693
|
* resolves to `false` and is exactly the intended default. */
|
|
27632
27694
|
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
@@ -28950,7 +29012,14 @@ var SceneReferenceSchema = object({
|
|
|
28950
29012
|
modelId: string(),
|
|
28951
29013
|
condition: SceneConditionSchema,
|
|
28952
29014
|
capturedAt: number(),
|
|
28953
|
-
|
|
29015
|
+
/**
|
|
29016
|
+
* The reference thumbnail's media ROW id (D482).
|
|
29017
|
+
*
|
|
29018
|
+
* The name already said `mediaId` while the value was the row's composite
|
|
29019
|
+
* key — a leftover that read as done and was not. It is the row's own id
|
|
29020
|
+
* now, addressed at `/addon/<addonId>/event-media/m/<id>`.
|
|
29021
|
+
*/
|
|
29022
|
+
thumbnailMediaId: number().int().optional(),
|
|
28954
29023
|
/** Whole-frame (downscaled) embedding captured alongside the ROI crop. The
|
|
28955
29024
|
* anti-view-shift anchor: a bumped camera, a PTZ preset or a re-aim makes the
|
|
28956
29025
|
* normalized rect frame a different piece of world, and the scene would
|
|
@@ -30398,7 +30467,7 @@ var StationaryObjectSchema = object({
|
|
|
30398
30467
|
/** Enrichment label carried from the source track (identity / plate). */
|
|
30399
30468
|
label: string().optional(),
|
|
30400
30469
|
/** Native-resolution key-frame media key for the parked object's best image. */
|
|
30401
|
-
|
|
30470
|
+
keyFrameMediaId: number().int().optional()
|
|
30402
30471
|
});
|
|
30403
30472
|
var CameraOccupancySnapshotSchema = object({
|
|
30404
30473
|
/** Frame timestamp of the inference result that produced this snapshot. */
|
|
@@ -31554,6 +31623,12 @@ Object.freeze({
|
|
|
31554
31623
|
addonId: null,
|
|
31555
31624
|
access: "create"
|
|
31556
31625
|
},
|
|
31626
|
+
"dataStoreProvider.upsert": {
|
|
31627
|
+
capName: "data-store-provider",
|
|
31628
|
+
capScope: "system",
|
|
31629
|
+
addonId: null,
|
|
31630
|
+
access: "create"
|
|
31631
|
+
},
|
|
31557
31632
|
"dayNight.getOptions": {
|
|
31558
31633
|
capName: "day-night",
|
|
31559
31634
|
capScope: "device",
|
|
@@ -35418,6 +35493,12 @@ Object.freeze({
|
|
|
35418
35493
|
addonId: null,
|
|
35419
35494
|
access: "create"
|
|
35420
35495
|
},
|
|
35496
|
+
"settingsStore.upsert": {
|
|
35497
|
+
capName: "settings-store",
|
|
35498
|
+
capScope: "system",
|
|
35499
|
+
addonId: null,
|
|
35500
|
+
access: "create"
|
|
35501
|
+
},
|
|
35421
35502
|
"smtpProvider.getStatus": {
|
|
35422
35503
|
capName: "smtp-provider",
|
|
35423
35504
|
capScope: "system",
|
package/dist/smb.addon.js
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_shared = require("./shared-
|
|
5
|
+
const require_shared = require("./shared-C99NWjGN.js");
|
|
6
6
|
let node_crypto = require("node:crypto");
|
|
7
7
|
let node_path = require("node:path");
|
|
8
8
|
node_path = require_shared.__toESM(node_path);
|
package/dist/smb.addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, s as storageProviderCapability } from "./shared-
|
|
1
|
+
import { c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, s as storageProviderCapability } from "./shared-wpNbUebc.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import * as path from "node:path";
|
|
4
4
|
import * as fsp from "node:fs/promises";
|
package/dist/webdav.addon.js
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_shared = require("./shared-
|
|
5
|
+
const require_shared = require("./shared-C99NWjGN.js");
|
|
6
6
|
let node_stream = require("node:stream");
|
|
7
7
|
let webdav = require("webdav");
|
|
8
8
|
//#region src/providers/webdav/webdav-config-schema.ts
|
package/dist/webdav.addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-
|
|
1
|
+
import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-wpNbUebc.mjs";
|
|
2
2
|
import { PassThrough } from "node:stream";
|
|
3
3
|
import { AuthType, createClient } from "webdav";
|
|
4
4
|
//#region src/providers/webdav/webdav-config-schema.ts
|
package/package.json
CHANGED