@camstack/addon-provider-reolink 1.2.50 → 1.2.51
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 +249 -79
- package/dist/addon.mjs +249 -79
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -6657,7 +6657,7 @@ function method(input, output, options) {
|
|
|
6657
6657
|
input,
|
|
6658
6658
|
output,
|
|
6659
6659
|
kind: options?.kind ?? "query",
|
|
6660
|
-
auth: options
|
|
6660
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6661
6661
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6662
6662
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6663
6663
|
timeoutMs: options?.timeoutMs
|
|
@@ -6681,7 +6681,7 @@ function event(data) {
|
|
|
6681
6681
|
}
|
|
6682
6682
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6683
6683
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6684
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6684
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6685
6685
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6686
6686
|
DeviceType["Camera"] = "camera";
|
|
6687
6687
|
DeviceType["Hub"] = "hub";
|
|
@@ -7002,7 +7002,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
7002
7002
|
}({});
|
|
7003
7003
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
7004
7004
|
var VersionOutputSchema = object({ version: string() });
|
|
7005
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
7005
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
7006
7006
|
/**
|
|
7007
7007
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
7008
7008
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7640,24 +7640,6 @@ var RecordingRetentionSchema = object({
|
|
|
7640
7640
|
maxSizeGb: number().min(0).optional()
|
|
7641
7641
|
});
|
|
7642
7642
|
/**
|
|
7643
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7644
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7645
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7646
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7647
|
-
*
|
|
7648
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7649
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7650
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7651
|
-
* written with.
|
|
7652
|
-
*/
|
|
7653
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7654
|
-
"minimal",
|
|
7655
|
-
"low",
|
|
7656
|
-
"standard",
|
|
7657
|
-
"high",
|
|
7658
|
-
"max"
|
|
7659
|
-
]);
|
|
7660
|
-
/**
|
|
7661
7643
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7662
7644
|
*
|
|
7663
7645
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7665,7 +7647,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7665
7647
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7666
7648
|
*
|
|
7667
7649
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7668
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7650
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7651
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7652
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7653
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7654
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7669
7655
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7670
7656
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7671
7657
|
*/
|
|
@@ -7688,14 +7674,7 @@ var RecordingConfigSchema = object({
|
|
|
7688
7674
|
* "off" is the absence of a covering band, never a band value.
|
|
7689
7675
|
*/
|
|
7690
7676
|
bands: array(RecordingBandSchema).default([]),
|
|
7691
|
-
retention: RecordingRetentionSchema.optional()
|
|
7692
|
-
/**
|
|
7693
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7694
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7695
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7696
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7697
|
-
*/
|
|
7698
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7677
|
+
retention: RecordingRetentionSchema.optional()
|
|
7699
7678
|
}).strict();
|
|
7700
7679
|
/**
|
|
7701
7680
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7771,10 +7750,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7771
7750
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7772
7751
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7773
7752
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7774
|
-
var
|
|
7753
|
+
var RelocateMediaInputSchema = object({
|
|
7775
7754
|
toLocationId: string(),
|
|
7776
7755
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7777
|
-
})
|
|
7756
|
+
});
|
|
7757
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7778
7758
|
/** The independently selectable logical storage classes. `recordings`
|
|
7779
7759
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7780
7760
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8244,7 +8224,26 @@ var LabelDefinitionSchema = object({
|
|
|
8244
8224
|
description: string().optional(),
|
|
8245
8225
|
icon: string().optional()
|
|
8246
8226
|
});
|
|
8247
|
-
|
|
8227
|
+
/**
|
|
8228
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8229
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8230
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8231
|
+
* detection pipeline executor actually routes.
|
|
8232
|
+
*
|
|
8233
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8234
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8235
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8236
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8237
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8238
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8239
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8240
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8241
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8242
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8243
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8244
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8245
|
+
*/
|
|
8246
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8248
8247
|
mapping: record(string(), _enum([
|
|
8249
8248
|
"person",
|
|
8250
8249
|
"vehicle",
|
|
@@ -8449,7 +8448,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8449
8448
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8450
8449
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8451
8450
|
*/
|
|
8452
|
-
classMap:
|
|
8451
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8453
8452
|
});
|
|
8454
8453
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8455
8454
|
format: literal("openvino"),
|
|
@@ -8479,7 +8478,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8479
8478
|
"segmentation"
|
|
8480
8479
|
]),
|
|
8481
8480
|
faceAlignment: boolean().optional(),
|
|
8482
|
-
classMap:
|
|
8481
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8483
8482
|
});
|
|
8484
8483
|
var ConvertResultSchema = object({
|
|
8485
8484
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9342,7 +9341,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9342
9341
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9343
9342
|
sectionLabel: string().optional()
|
|
9344
9343
|
});
|
|
9345
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9344
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9346
9345
|
var AddonHttpRouteSchema = object({
|
|
9347
9346
|
method: _enum([
|
|
9348
9347
|
"GET",
|
|
@@ -9577,7 +9576,7 @@ var WidgetMetadataSchema = object({
|
|
|
9577
9576
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9578
9577
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9579
9578
|
});
|
|
9580
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9579
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9581
9580
|
/**
|
|
9582
9581
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9583
9582
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11213,7 +11212,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11213
11212
|
stepId: string(),
|
|
11214
11213
|
entry: ModelCatalogEntrySchema
|
|
11215
11214
|
});
|
|
11216
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11215
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11217
11216
|
/**
|
|
11218
11217
|
* Query filter for settings-store collections.
|
|
11219
11218
|
*/
|
|
@@ -11300,7 +11299,8 @@ method(object({
|
|
|
11300
11299
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11301
11300
|
namespace: string().optional(),
|
|
11302
11301
|
collection: string(),
|
|
11303
|
-
filter: QueryFilterSchema.optional()
|
|
11302
|
+
filter: QueryFilterSchema.optional(),
|
|
11303
|
+
columns: array(string()).readonly().optional()
|
|
11304
11304
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11305
11305
|
namespace: string().optional(),
|
|
11306
11306
|
collection: string(),
|
|
@@ -11363,46 +11363,87 @@ var EngineInfoSchema = object({
|
|
|
11363
11363
|
kind: _enum(["relational", "vector"]),
|
|
11364
11364
|
displayName: string()
|
|
11365
11365
|
});
|
|
11366
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11366
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11367
11367
|
namespace: string().optional(),
|
|
11368
11368
|
collection: string(),
|
|
11369
11369
|
key: string()
|
|
11370
|
-
}), unknown()), method(object({
|
|
11370
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11371
11371
|
namespace: string().optional(),
|
|
11372
11372
|
collection: string(),
|
|
11373
11373
|
key: string(),
|
|
11374
11374
|
value: unknown()
|
|
11375
|
-
}), _void(), {
|
|
11375
|
+
}), _void(), {
|
|
11376
|
+
kind: "mutation",
|
|
11377
|
+
auth: "admin"
|
|
11378
|
+
}), method(object({
|
|
11376
11379
|
namespace: string().optional(),
|
|
11377
11380
|
collection: string(),
|
|
11378
|
-
filter: QueryFilterSchema.optional()
|
|
11379
|
-
|
|
11381
|
+
filter: QueryFilterSchema.optional(),
|
|
11382
|
+
/**
|
|
11383
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11384
|
+
*
|
|
11385
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11386
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11387
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11388
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11389
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11390
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11391
|
+
*
|
|
11392
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11393
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11394
|
+
* interface the engine destructures from. The field existed on both
|
|
11395
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11396
|
+
* registered provider against `InferProvider<cap>` —
|
|
11397
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11398
|
+
*
|
|
11399
|
+
* It is declared here anyway, and must stay in step with
|
|
11400
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11401
|
+
* to be able to see that this call carries a projection.
|
|
11402
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11403
|
+
*/
|
|
11404
|
+
columns: array(string()).readonly().optional()
|
|
11405
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11380
11406
|
namespace: string().optional(),
|
|
11381
11407
|
collection: string(),
|
|
11382
11408
|
record: SettingsRecordSchema
|
|
11383
|
-
}), _void(), {
|
|
11409
|
+
}), _void(), {
|
|
11410
|
+
kind: "mutation",
|
|
11411
|
+
auth: "admin"
|
|
11412
|
+
}), method(object({
|
|
11384
11413
|
namespace: string().optional(),
|
|
11385
11414
|
collection: string(),
|
|
11386
11415
|
id: string(),
|
|
11387
11416
|
data: record(string(), unknown())
|
|
11388
|
-
}), _void(), {
|
|
11417
|
+
}), _void(), {
|
|
11418
|
+
kind: "mutation",
|
|
11419
|
+
auth: "admin"
|
|
11420
|
+
}), method(object({
|
|
11389
11421
|
namespace: string().optional(),
|
|
11390
11422
|
collection: string(),
|
|
11391
11423
|
key: string()
|
|
11392
|
-
}), _void(), {
|
|
11424
|
+
}), _void(), {
|
|
11425
|
+
kind: "mutation",
|
|
11426
|
+
auth: "admin"
|
|
11427
|
+
}), method(object({
|
|
11393
11428
|
namespace: string().optional(),
|
|
11394
11429
|
collection: string(),
|
|
11395
11430
|
filter: MutationFilterSchema
|
|
11396
|
-
}), object({ deleted: number().int() }), {
|
|
11431
|
+
}), object({ deleted: number().int() }), {
|
|
11432
|
+
kind: "mutation",
|
|
11433
|
+
auth: "admin"
|
|
11434
|
+
}), method(object({
|
|
11397
11435
|
namespace: string().optional(),
|
|
11398
11436
|
collection: string(),
|
|
11399
11437
|
filter: MutationFilterSchema,
|
|
11400
11438
|
data: record(string(), unknown())
|
|
11401
|
-
}), object({ updated: number().int() }), {
|
|
11439
|
+
}), object({ updated: number().int() }), {
|
|
11440
|
+
kind: "mutation",
|
|
11441
|
+
auth: "admin"
|
|
11442
|
+
}), method(object({
|
|
11402
11443
|
namespace: string().optional(),
|
|
11403
11444
|
collection: string(),
|
|
11404
11445
|
filter: QueryFilterSchema.optional()
|
|
11405
|
-
}), number()), method(object({
|
|
11446
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11406
11447
|
namespace: string().optional(),
|
|
11407
11448
|
collection: string(),
|
|
11408
11449
|
field: string(),
|
|
@@ -11412,15 +11453,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11412
11453
|
}), array(object({
|
|
11413
11454
|
bucket: number().int(),
|
|
11414
11455
|
count: number().int()
|
|
11415
|
-
})).readonly()), method(object({
|
|
11456
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11416
11457
|
namespace: string().optional(),
|
|
11417
11458
|
collection: string()
|
|
11418
|
-
}), boolean()), method(object({
|
|
11459
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11419
11460
|
namespace: string().optional(),
|
|
11420
11461
|
collection: string(),
|
|
11421
11462
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11422
11463
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11423
|
-
}), _void(), {
|
|
11464
|
+
}), _void(), {
|
|
11465
|
+
kind: "mutation",
|
|
11466
|
+
auth: "admin"
|
|
11467
|
+
});
|
|
11424
11468
|
/**
|
|
11425
11469
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11426
11470
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12710,7 +12754,7 @@ method(object({
|
|
|
12710
12754
|
crop: _instanceof(Uint8Array),
|
|
12711
12755
|
width: number(),
|
|
12712
12756
|
height: number()
|
|
12713
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12757
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12714
12758
|
/**
|
|
12715
12759
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12716
12760
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -13003,19 +13047,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
13003
13047
|
runtime: ManagedRuntimeConfigSchema,
|
|
13004
13048
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
13005
13049
|
timeoutMs: number().int().positive().optional()
|
|
13006
|
-
}), LlmGenerateResultSchema, {
|
|
13050
|
+
}), LlmGenerateResultSchema, {
|
|
13051
|
+
kind: "mutation",
|
|
13052
|
+
auth: "admin"
|
|
13053
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
13007
13054
|
kind: "mutation",
|
|
13008
13055
|
auth: "admin"
|
|
13009
13056
|
}), method(object({}), _void(), {
|
|
13010
13057
|
kind: "mutation",
|
|
13011
13058
|
auth: "admin"
|
|
13012
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13059
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13013
13060
|
kind: "mutation",
|
|
13014
13061
|
auth: "admin"
|
|
13015
13062
|
}), method(object({ file: string() }), _void(), {
|
|
13016
13063
|
kind: "mutation",
|
|
13017
13064
|
auth: "admin"
|
|
13018
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
13065
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
13019
13066
|
/**
|
|
13020
13067
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
13021
13068
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16526,7 +16573,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16526
16573
|
*/
|
|
16527
16574
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16528
16575
|
});
|
|
16529
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16576
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16530
16577
|
/**
|
|
16531
16578
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16532
16579
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17721,6 +17768,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17721
17768
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17722
17769
|
kind: "mutation",
|
|
17723
17770
|
auth: "admin"
|
|
17771
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17772
|
+
kind: "mutation",
|
|
17773
|
+
auth: "admin"
|
|
17774
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17775
|
+
kind: "query",
|
|
17776
|
+
auth: "admin"
|
|
17777
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17778
|
+
kind: "mutation",
|
|
17779
|
+
auth: "admin"
|
|
17724
17780
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17725
17781
|
kind: "query",
|
|
17726
17782
|
auth: "admin"
|
|
@@ -17875,6 +17931,11 @@ object({
|
|
|
17875
17931
|
"jpeg"
|
|
17876
17932
|
])
|
|
17877
17933
|
});
|
|
17934
|
+
/**
|
|
17935
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17936
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17937
|
+
* other process or execution group.
|
|
17938
|
+
*/
|
|
17878
17939
|
var FrameRefSchema = object({
|
|
17879
17940
|
registryId: string().min(1),
|
|
17880
17941
|
id: string().min(1),
|
|
@@ -20184,7 +20245,7 @@ method(object({
|
|
|
20184
20245
|
* linking rather than produce an eternal token.
|
|
20185
20246
|
*/
|
|
20186
20247
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
20187
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
20248
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
20188
20249
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
20189
20250
|
providerId: string().min(1),
|
|
20190
20251
|
displayName: string().min(1),
|
|
@@ -20279,10 +20340,13 @@ var EvictResultSchema = object({
|
|
|
20279
20340
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20280
20341
|
exhausted: boolean()
|
|
20281
20342
|
});
|
|
20282
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20343
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20283
20344
|
locationId: string(),
|
|
20284
20345
|
targetBytes: number().int().positive()
|
|
20285
|
-
}), EvictResultSchema, {
|
|
20346
|
+
}), EvictResultSchema, {
|
|
20347
|
+
kind: "mutation",
|
|
20348
|
+
auth: "admin"
|
|
20349
|
+
});
|
|
20286
20350
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20287
20351
|
kind: "mutation",
|
|
20288
20352
|
auth: "admin"
|
|
@@ -20342,26 +20406,50 @@ var ReadChunkInputSchema = object({
|
|
|
20342
20406
|
length: number()
|
|
20343
20407
|
});
|
|
20344
20408
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20345
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20409
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20346
20410
|
location: StorageLocationSchema,
|
|
20347
20411
|
relativePath: string()
|
|
20348
|
-
}), string()), method(object({
|
|
20412
|
+
}), string(), { auth: "admin" }), method(object({
|
|
20349
20413
|
location: StorageLocationSchema,
|
|
20350
20414
|
relativePath: string(),
|
|
20351
20415
|
data: _instanceof(Uint8Array)
|
|
20352
|
-
}), _void(), {
|
|
20416
|
+
}), _void(), {
|
|
20417
|
+
kind: "mutation",
|
|
20418
|
+
auth: "admin"
|
|
20419
|
+
}), method(object({
|
|
20353
20420
|
location: StorageLocationSchema,
|
|
20354
20421
|
relativePath: string()
|
|
20355
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20422
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20356
20423
|
location: StorageLocationSchema,
|
|
20357
20424
|
relativePath: string()
|
|
20358
|
-
}), boolean()), method(object({
|
|
20425
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20359
20426
|
location: StorageLocationSchema,
|
|
20360
20427
|
prefix: string().optional()
|
|
20361
|
-
}), array(string()).readonly()), method(object({
|
|
20428
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
20362
20429
|
location: StorageLocationSchema,
|
|
20363
20430
|
relativePath: string()
|
|
20364
|
-
}), _void(), {
|
|
20431
|
+
}), _void(), {
|
|
20432
|
+
kind: "mutation",
|
|
20433
|
+
auth: "admin"
|
|
20434
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20435
|
+
kind: "mutation",
|
|
20436
|
+
auth: "admin"
|
|
20437
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20438
|
+
kind: "mutation",
|
|
20439
|
+
auth: "admin"
|
|
20440
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20441
|
+
kind: "mutation",
|
|
20442
|
+
auth: "admin"
|
|
20443
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20444
|
+
kind: "mutation",
|
|
20445
|
+
auth: "admin"
|
|
20446
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20447
|
+
kind: "mutation",
|
|
20448
|
+
auth: "admin"
|
|
20449
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20450
|
+
kind: "mutation",
|
|
20451
|
+
auth: "admin"
|
|
20452
|
+
});
|
|
20365
20453
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20366
20454
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20367
20455
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20619,7 +20707,8 @@ method(object({
|
|
|
20619
20707
|
access: "create"
|
|
20620
20708
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20621
20709
|
kind: "mutation",
|
|
20622
|
-
access: "view"
|
|
20710
|
+
access: "view",
|
|
20711
|
+
auth: "admin"
|
|
20623
20712
|
}), method(object({
|
|
20624
20713
|
/** Required — the user the assertion belongs to (verified). */
|
|
20625
20714
|
userId: string(),
|
|
@@ -20627,10 +20716,12 @@ method(object({
|
|
|
20627
20716
|
response: record(string(), unknown())
|
|
20628
20717
|
}), object({ verified: boolean() }), {
|
|
20629
20718
|
kind: "mutation",
|
|
20630
|
-
access: "view"
|
|
20719
|
+
access: "view",
|
|
20720
|
+
auth: "admin"
|
|
20631
20721
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20632
20722
|
kind: "mutation",
|
|
20633
|
-
access: "view"
|
|
20723
|
+
access: "view",
|
|
20724
|
+
auth: "admin"
|
|
20634
20725
|
}), method(object({
|
|
20635
20726
|
/** AuthenticationResponseJSON from the browser. */
|
|
20636
20727
|
response: record(string(), unknown()) }), object({
|
|
@@ -20638,7 +20729,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20638
20729
|
userId: string().nullable()
|
|
20639
20730
|
}), {
|
|
20640
20731
|
kind: "mutation",
|
|
20641
|
-
access: "view"
|
|
20732
|
+
access: "view",
|
|
20733
|
+
auth: "admin"
|
|
20642
20734
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20643
20735
|
userId: string(),
|
|
20644
20736
|
credentialId: string()
|
|
@@ -20810,7 +20902,19 @@ var VectorStatsResultSchema = object({
|
|
|
20810
20902
|
/** False when the backend ranks approximately. */
|
|
20811
20903
|
exact: boolean()
|
|
20812
20904
|
});
|
|
20813
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20905
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20906
|
+
kind: "mutation",
|
|
20907
|
+
auth: "admin"
|
|
20908
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20909
|
+
kind: "mutation",
|
|
20910
|
+
auth: "admin"
|
|
20911
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20912
|
+
kind: "mutation",
|
|
20913
|
+
auth: "admin"
|
|
20914
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20915
|
+
kind: "mutation",
|
|
20916
|
+
auth: "admin"
|
|
20917
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20814
20918
|
var ClipSchema = object({
|
|
20815
20919
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20816
20920
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23263,7 +23367,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23263
23367
|
sizeBytes: number(),
|
|
23264
23368
|
timestamp: number()
|
|
23265
23369
|
});
|
|
23266
|
-
method(
|
|
23370
|
+
method(object({
|
|
23371
|
+
/**
|
|
23372
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23373
|
+
*
|
|
23374
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23375
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23376
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23377
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23378
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23379
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23380
|
+
*
|
|
23381
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23382
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23383
|
+
*
|
|
23384
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23385
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23386
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23387
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23388
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23389
|
+
*/
|
|
23390
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
23267
23391
|
kind: "mutation",
|
|
23268
23392
|
auth: "admin"
|
|
23269
23393
|
}), method(object({
|
|
@@ -26153,8 +26277,10 @@ var PlateInfoSchema = object({
|
|
|
26153
26277
|
keyFrameMediaKey: string().optional(),
|
|
26154
26278
|
base64: string().optional(),
|
|
26155
26279
|
/**
|
|
26156
|
-
* Same crop as a data-plane URL
|
|
26157
|
-
* never inlines JPEG; `listPlates`
|
|
26280
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26281
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26282
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26283
|
+
* left at its `true` default.
|
|
26158
26284
|
*/
|
|
26159
26285
|
cropUrl: string().optional()
|
|
26160
26286
|
});
|
|
@@ -26174,14 +26300,34 @@ var PlateClusterSchema = object({
|
|
|
26174
26300
|
});
|
|
26175
26301
|
method(object({
|
|
26176
26302
|
deviceId: number().int().optional(),
|
|
26177
|
-
limit: number().int().positive().optional()
|
|
26303
|
+
limit: number().int().positive().optional(),
|
|
26304
|
+
/**
|
|
26305
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26306
|
+
* behaviour, kept so no caller breaks.
|
|
26307
|
+
*
|
|
26308
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26309
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26310
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26311
|
+
* metadata without them — and the browser then caches the images.
|
|
26312
|
+
*
|
|
26313
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26314
|
+
* plates were the one gallery list left without it.
|
|
26315
|
+
*
|
|
26316
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26317
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26318
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26319
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26320
|
+
*/
|
|
26321
|
+
includeCrops: boolean().optional()
|
|
26178
26322
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
26179
26323
|
deviceId: number().int(),
|
|
26180
26324
|
trackId: string()
|
|
26181
26325
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
26182
26326
|
text: string().min(1),
|
|
26183
26327
|
maxDistance: number().int().min(0).optional(),
|
|
26184
|
-
limit: number().int().positive().optional()
|
|
26328
|
+
limit: number().int().positive().optional(),
|
|
26329
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26330
|
+
includeCrops: boolean().optional()
|
|
26185
26331
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
26186
26332
|
maxDistance: number().int().min(0).optional(),
|
|
26187
26333
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -26195,7 +26341,13 @@ method(object({
|
|
|
26195
26341
|
}), method(object({ plateId: string() }), _void(), {
|
|
26196
26342
|
kind: "mutation",
|
|
26197
26343
|
auth: "admin"
|
|
26198
|
-
}), method(
|
|
26344
|
+
}), method(object({
|
|
26345
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26346
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26347
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26348
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26349
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26350
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
26199
26351
|
kind: "mutation",
|
|
26200
26352
|
auth: "admin"
|
|
26201
26353
|
}), method(object({
|
|
@@ -33908,6 +34060,12 @@ Object.freeze({
|
|
|
33908
34060
|
addonId: null,
|
|
33909
34061
|
access: "create"
|
|
33910
34062
|
},
|
|
34063
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
34064
|
+
capName: "pipeline-analytics",
|
|
34065
|
+
capScope: "device",
|
|
34066
|
+
addonId: null,
|
|
34067
|
+
access: "create"
|
|
34068
|
+
},
|
|
33911
34069
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33912
34070
|
capName: "pipeline-analytics",
|
|
33913
34071
|
capScope: "device",
|
|
@@ -34082,6 +34240,12 @@ Object.freeze({
|
|
|
34082
34240
|
addonId: null,
|
|
34083
34241
|
access: "view"
|
|
34084
34242
|
},
|
|
34243
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
34244
|
+
capName: "pipeline-analytics",
|
|
34245
|
+
capScope: "device",
|
|
34246
|
+
addonId: null,
|
|
34247
|
+
access: "view"
|
|
34248
|
+
},
|
|
34085
34249
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
34086
34250
|
capName: "pipeline-analytics",
|
|
34087
34251
|
capScope: "device",
|
|
@@ -34160,6 +34324,12 @@ Object.freeze({
|
|
|
34160
34324
|
addonId: null,
|
|
34161
34325
|
access: "create"
|
|
34162
34326
|
},
|
|
34327
|
+
"pipelineAnalytics.relocateMedia": {
|
|
34328
|
+
capName: "pipeline-analytics",
|
|
34329
|
+
capScope: "device",
|
|
34330
|
+
addonId: null,
|
|
34331
|
+
access: "create"
|
|
34332
|
+
},
|
|
34163
34333
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
34164
34334
|
capName: "pipeline-analytics",
|
|
34165
34335
|
capScope: "device",
|
package/dist/addon.mjs
CHANGED
|
@@ -6652,7 +6652,7 @@ function method(input, output, options) {
|
|
|
6652
6652
|
input,
|
|
6653
6653
|
output,
|
|
6654
6654
|
kind: options?.kind ?? "query",
|
|
6655
|
-
auth: options
|
|
6655
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6656
6656
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6657
6657
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6658
6658
|
timeoutMs: options?.timeoutMs
|
|
@@ -6676,7 +6676,7 @@ function event(data) {
|
|
|
6676
6676
|
}
|
|
6677
6677
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6678
6678
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6679
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6679
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6680
6680
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6681
6681
|
DeviceType["Camera"] = "camera";
|
|
6682
6682
|
DeviceType["Hub"] = "hub";
|
|
@@ -6997,7 +6997,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
6997
6997
|
}({});
|
|
6998
6998
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
6999
6999
|
var VersionOutputSchema = object({ version: string() });
|
|
7000
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
7000
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
7001
7001
|
/**
|
|
7002
7002
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
7003
7003
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7635,24 +7635,6 @@ var RecordingRetentionSchema = object({
|
|
|
7635
7635
|
maxSizeGb: number().min(0).optional()
|
|
7636
7636
|
});
|
|
7637
7637
|
/**
|
|
7638
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7639
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7640
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7641
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7642
|
-
*
|
|
7643
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7644
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7645
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7646
|
-
* written with.
|
|
7647
|
-
*/
|
|
7648
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7649
|
-
"minimal",
|
|
7650
|
-
"low",
|
|
7651
|
-
"standard",
|
|
7652
|
-
"high",
|
|
7653
|
-
"max"
|
|
7654
|
-
]);
|
|
7655
|
-
/**
|
|
7656
7638
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7657
7639
|
*
|
|
7658
7640
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7660,7 +7642,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7660
7642
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7661
7643
|
*
|
|
7662
7644
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7663
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7645
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7646
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7647
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7648
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7649
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7664
7650
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7665
7651
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7666
7652
|
*/
|
|
@@ -7683,14 +7669,7 @@ var RecordingConfigSchema = object({
|
|
|
7683
7669
|
* "off" is the absence of a covering band, never a band value.
|
|
7684
7670
|
*/
|
|
7685
7671
|
bands: array(RecordingBandSchema).default([]),
|
|
7686
|
-
retention: RecordingRetentionSchema.optional()
|
|
7687
|
-
/**
|
|
7688
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7689
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7690
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7691
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7692
|
-
*/
|
|
7693
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7672
|
+
retention: RecordingRetentionSchema.optional()
|
|
7694
7673
|
}).strict();
|
|
7695
7674
|
/**
|
|
7696
7675
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7766,10 +7745,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7766
7745
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7767
7746
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7768
7747
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7769
|
-
var
|
|
7748
|
+
var RelocateMediaInputSchema = object({
|
|
7770
7749
|
toLocationId: string(),
|
|
7771
7750
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7772
|
-
})
|
|
7751
|
+
});
|
|
7752
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7773
7753
|
/** The independently selectable logical storage classes. `recordings`
|
|
7774
7754
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7775
7755
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8239,7 +8219,26 @@ var LabelDefinitionSchema = object({
|
|
|
8239
8219
|
description: string().optional(),
|
|
8240
8220
|
icon: string().optional()
|
|
8241
8221
|
});
|
|
8242
|
-
|
|
8222
|
+
/**
|
|
8223
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8224
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8225
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8226
|
+
* detection pipeline executor actually routes.
|
|
8227
|
+
*
|
|
8228
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8229
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8230
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8231
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8232
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8233
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8234
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8235
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8236
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8237
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8238
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8239
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8240
|
+
*/
|
|
8241
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8243
8242
|
mapping: record(string(), _enum([
|
|
8244
8243
|
"person",
|
|
8245
8244
|
"vehicle",
|
|
@@ -8444,7 +8443,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8444
8443
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8445
8444
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8446
8445
|
*/
|
|
8447
|
-
classMap:
|
|
8446
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8448
8447
|
});
|
|
8449
8448
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8450
8449
|
format: literal("openvino"),
|
|
@@ -8474,7 +8473,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8474
8473
|
"segmentation"
|
|
8475
8474
|
]),
|
|
8476
8475
|
faceAlignment: boolean().optional(),
|
|
8477
|
-
classMap:
|
|
8476
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8478
8477
|
});
|
|
8479
8478
|
var ConvertResultSchema = object({
|
|
8480
8479
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9337,7 +9336,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9337
9336
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9338
9337
|
sectionLabel: string().optional()
|
|
9339
9338
|
});
|
|
9340
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9339
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9341
9340
|
var AddonHttpRouteSchema = object({
|
|
9342
9341
|
method: _enum([
|
|
9343
9342
|
"GET",
|
|
@@ -9572,7 +9571,7 @@ var WidgetMetadataSchema = object({
|
|
|
9572
9571
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9573
9572
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9574
9573
|
});
|
|
9575
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9574
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9576
9575
|
/**
|
|
9577
9576
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9578
9577
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11208,7 +11207,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11208
11207
|
stepId: string(),
|
|
11209
11208
|
entry: ModelCatalogEntrySchema
|
|
11210
11209
|
});
|
|
11211
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11210
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11212
11211
|
/**
|
|
11213
11212
|
* Query filter for settings-store collections.
|
|
11214
11213
|
*/
|
|
@@ -11295,7 +11294,8 @@ method(object({
|
|
|
11295
11294
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11296
11295
|
namespace: string().optional(),
|
|
11297
11296
|
collection: string(),
|
|
11298
|
-
filter: QueryFilterSchema.optional()
|
|
11297
|
+
filter: QueryFilterSchema.optional(),
|
|
11298
|
+
columns: array(string()).readonly().optional()
|
|
11299
11299
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11300
11300
|
namespace: string().optional(),
|
|
11301
11301
|
collection: string(),
|
|
@@ -11358,46 +11358,87 @@ var EngineInfoSchema = object({
|
|
|
11358
11358
|
kind: _enum(["relational", "vector"]),
|
|
11359
11359
|
displayName: string()
|
|
11360
11360
|
});
|
|
11361
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11361
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11362
11362
|
namespace: string().optional(),
|
|
11363
11363
|
collection: string(),
|
|
11364
11364
|
key: string()
|
|
11365
|
-
}), unknown()), method(object({
|
|
11365
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11366
11366
|
namespace: string().optional(),
|
|
11367
11367
|
collection: string(),
|
|
11368
11368
|
key: string(),
|
|
11369
11369
|
value: unknown()
|
|
11370
|
-
}), _void(), {
|
|
11370
|
+
}), _void(), {
|
|
11371
|
+
kind: "mutation",
|
|
11372
|
+
auth: "admin"
|
|
11373
|
+
}), method(object({
|
|
11371
11374
|
namespace: string().optional(),
|
|
11372
11375
|
collection: string(),
|
|
11373
|
-
filter: QueryFilterSchema.optional()
|
|
11374
|
-
|
|
11376
|
+
filter: QueryFilterSchema.optional(),
|
|
11377
|
+
/**
|
|
11378
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11379
|
+
*
|
|
11380
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11381
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11382
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11383
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11384
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11385
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11386
|
+
*
|
|
11387
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11388
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11389
|
+
* interface the engine destructures from. The field existed on both
|
|
11390
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11391
|
+
* registered provider against `InferProvider<cap>` —
|
|
11392
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11393
|
+
*
|
|
11394
|
+
* It is declared here anyway, and must stay in step with
|
|
11395
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11396
|
+
* to be able to see that this call carries a projection.
|
|
11397
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11398
|
+
*/
|
|
11399
|
+
columns: array(string()).readonly().optional()
|
|
11400
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11375
11401
|
namespace: string().optional(),
|
|
11376
11402
|
collection: string(),
|
|
11377
11403
|
record: SettingsRecordSchema
|
|
11378
|
-
}), _void(), {
|
|
11404
|
+
}), _void(), {
|
|
11405
|
+
kind: "mutation",
|
|
11406
|
+
auth: "admin"
|
|
11407
|
+
}), method(object({
|
|
11379
11408
|
namespace: string().optional(),
|
|
11380
11409
|
collection: string(),
|
|
11381
11410
|
id: string(),
|
|
11382
11411
|
data: record(string(), unknown())
|
|
11383
|
-
}), _void(), {
|
|
11412
|
+
}), _void(), {
|
|
11413
|
+
kind: "mutation",
|
|
11414
|
+
auth: "admin"
|
|
11415
|
+
}), method(object({
|
|
11384
11416
|
namespace: string().optional(),
|
|
11385
11417
|
collection: string(),
|
|
11386
11418
|
key: string()
|
|
11387
|
-
}), _void(), {
|
|
11419
|
+
}), _void(), {
|
|
11420
|
+
kind: "mutation",
|
|
11421
|
+
auth: "admin"
|
|
11422
|
+
}), method(object({
|
|
11388
11423
|
namespace: string().optional(),
|
|
11389
11424
|
collection: string(),
|
|
11390
11425
|
filter: MutationFilterSchema
|
|
11391
|
-
}), object({ deleted: number().int() }), {
|
|
11426
|
+
}), object({ deleted: number().int() }), {
|
|
11427
|
+
kind: "mutation",
|
|
11428
|
+
auth: "admin"
|
|
11429
|
+
}), method(object({
|
|
11392
11430
|
namespace: string().optional(),
|
|
11393
11431
|
collection: string(),
|
|
11394
11432
|
filter: MutationFilterSchema,
|
|
11395
11433
|
data: record(string(), unknown())
|
|
11396
|
-
}), object({ updated: number().int() }), {
|
|
11434
|
+
}), object({ updated: number().int() }), {
|
|
11435
|
+
kind: "mutation",
|
|
11436
|
+
auth: "admin"
|
|
11437
|
+
}), method(object({
|
|
11397
11438
|
namespace: string().optional(),
|
|
11398
11439
|
collection: string(),
|
|
11399
11440
|
filter: QueryFilterSchema.optional()
|
|
11400
|
-
}), number()), method(object({
|
|
11441
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11401
11442
|
namespace: string().optional(),
|
|
11402
11443
|
collection: string(),
|
|
11403
11444
|
field: string(),
|
|
@@ -11407,15 +11448,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11407
11448
|
}), array(object({
|
|
11408
11449
|
bucket: number().int(),
|
|
11409
11450
|
count: number().int()
|
|
11410
|
-
})).readonly()), method(object({
|
|
11451
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11411
11452
|
namespace: string().optional(),
|
|
11412
11453
|
collection: string()
|
|
11413
|
-
}), boolean()), method(object({
|
|
11454
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11414
11455
|
namespace: string().optional(),
|
|
11415
11456
|
collection: string(),
|
|
11416
11457
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11417
11458
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11418
|
-
}), _void(), {
|
|
11459
|
+
}), _void(), {
|
|
11460
|
+
kind: "mutation",
|
|
11461
|
+
auth: "admin"
|
|
11462
|
+
});
|
|
11419
11463
|
/**
|
|
11420
11464
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11421
11465
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12705,7 +12749,7 @@ method(object({
|
|
|
12705
12749
|
crop: _instanceof(Uint8Array),
|
|
12706
12750
|
width: number(),
|
|
12707
12751
|
height: number()
|
|
12708
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12752
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12709
12753
|
/**
|
|
12710
12754
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12711
12755
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12998,19 +13042,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12998
13042
|
runtime: ManagedRuntimeConfigSchema,
|
|
12999
13043
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
13000
13044
|
timeoutMs: number().int().positive().optional()
|
|
13001
|
-
}), LlmGenerateResultSchema, {
|
|
13045
|
+
}), LlmGenerateResultSchema, {
|
|
13046
|
+
kind: "mutation",
|
|
13047
|
+
auth: "admin"
|
|
13048
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
13002
13049
|
kind: "mutation",
|
|
13003
13050
|
auth: "admin"
|
|
13004
13051
|
}), method(object({}), _void(), {
|
|
13005
13052
|
kind: "mutation",
|
|
13006
13053
|
auth: "admin"
|
|
13007
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13054
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13008
13055
|
kind: "mutation",
|
|
13009
13056
|
auth: "admin"
|
|
13010
13057
|
}), method(object({ file: string() }), _void(), {
|
|
13011
13058
|
kind: "mutation",
|
|
13012
13059
|
auth: "admin"
|
|
13013
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
13060
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
13014
13061
|
/**
|
|
13015
13062
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
13016
13063
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16521,7 +16568,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16521
16568
|
*/
|
|
16522
16569
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16523
16570
|
});
|
|
16524
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16571
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16525
16572
|
/**
|
|
16526
16573
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16527
16574
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17716,6 +17763,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17716
17763
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17717
17764
|
kind: "mutation",
|
|
17718
17765
|
auth: "admin"
|
|
17766
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17767
|
+
kind: "mutation",
|
|
17768
|
+
auth: "admin"
|
|
17769
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17770
|
+
kind: "query",
|
|
17771
|
+
auth: "admin"
|
|
17772
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17773
|
+
kind: "mutation",
|
|
17774
|
+
auth: "admin"
|
|
17719
17775
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17720
17776
|
kind: "query",
|
|
17721
17777
|
auth: "admin"
|
|
@@ -17870,6 +17926,11 @@ object({
|
|
|
17870
17926
|
"jpeg"
|
|
17871
17927
|
])
|
|
17872
17928
|
});
|
|
17929
|
+
/**
|
|
17930
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17931
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17932
|
+
* other process or execution group.
|
|
17933
|
+
*/
|
|
17873
17934
|
var FrameRefSchema = object({
|
|
17874
17935
|
registryId: string().min(1),
|
|
17875
17936
|
id: string().min(1),
|
|
@@ -20179,7 +20240,7 @@ method(object({
|
|
|
20179
20240
|
* linking rather than produce an eternal token.
|
|
20180
20241
|
*/
|
|
20181
20242
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
20182
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
20243
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
20183
20244
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
20184
20245
|
providerId: string().min(1),
|
|
20185
20246
|
displayName: string().min(1),
|
|
@@ -20274,10 +20335,13 @@ var EvictResultSchema = object({
|
|
|
20274
20335
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20275
20336
|
exhausted: boolean()
|
|
20276
20337
|
});
|
|
20277
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20338
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20278
20339
|
locationId: string(),
|
|
20279
20340
|
targetBytes: number().int().positive()
|
|
20280
|
-
}), EvictResultSchema, {
|
|
20341
|
+
}), EvictResultSchema, {
|
|
20342
|
+
kind: "mutation",
|
|
20343
|
+
auth: "admin"
|
|
20344
|
+
});
|
|
20281
20345
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20282
20346
|
kind: "mutation",
|
|
20283
20347
|
auth: "admin"
|
|
@@ -20337,26 +20401,50 @@ var ReadChunkInputSchema = object({
|
|
|
20337
20401
|
length: number()
|
|
20338
20402
|
});
|
|
20339
20403
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20340
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20404
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20341
20405
|
location: StorageLocationSchema,
|
|
20342
20406
|
relativePath: string()
|
|
20343
|
-
}), string()), method(object({
|
|
20407
|
+
}), string(), { auth: "admin" }), method(object({
|
|
20344
20408
|
location: StorageLocationSchema,
|
|
20345
20409
|
relativePath: string(),
|
|
20346
20410
|
data: _instanceof(Uint8Array)
|
|
20347
|
-
}), _void(), {
|
|
20411
|
+
}), _void(), {
|
|
20412
|
+
kind: "mutation",
|
|
20413
|
+
auth: "admin"
|
|
20414
|
+
}), method(object({
|
|
20348
20415
|
location: StorageLocationSchema,
|
|
20349
20416
|
relativePath: string()
|
|
20350
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20417
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20351
20418
|
location: StorageLocationSchema,
|
|
20352
20419
|
relativePath: string()
|
|
20353
|
-
}), boolean()), method(object({
|
|
20420
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20354
20421
|
location: StorageLocationSchema,
|
|
20355
20422
|
prefix: string().optional()
|
|
20356
|
-
}), array(string()).readonly()), method(object({
|
|
20423
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
20357
20424
|
location: StorageLocationSchema,
|
|
20358
20425
|
relativePath: string()
|
|
20359
|
-
}), _void(), {
|
|
20426
|
+
}), _void(), {
|
|
20427
|
+
kind: "mutation",
|
|
20428
|
+
auth: "admin"
|
|
20429
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20430
|
+
kind: "mutation",
|
|
20431
|
+
auth: "admin"
|
|
20432
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20433
|
+
kind: "mutation",
|
|
20434
|
+
auth: "admin"
|
|
20435
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20436
|
+
kind: "mutation",
|
|
20437
|
+
auth: "admin"
|
|
20438
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20439
|
+
kind: "mutation",
|
|
20440
|
+
auth: "admin"
|
|
20441
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20442
|
+
kind: "mutation",
|
|
20443
|
+
auth: "admin"
|
|
20444
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20445
|
+
kind: "mutation",
|
|
20446
|
+
auth: "admin"
|
|
20447
|
+
});
|
|
20360
20448
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20361
20449
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20362
20450
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20614,7 +20702,8 @@ method(object({
|
|
|
20614
20702
|
access: "create"
|
|
20615
20703
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20616
20704
|
kind: "mutation",
|
|
20617
|
-
access: "view"
|
|
20705
|
+
access: "view",
|
|
20706
|
+
auth: "admin"
|
|
20618
20707
|
}), method(object({
|
|
20619
20708
|
/** Required — the user the assertion belongs to (verified). */
|
|
20620
20709
|
userId: string(),
|
|
@@ -20622,10 +20711,12 @@ method(object({
|
|
|
20622
20711
|
response: record(string(), unknown())
|
|
20623
20712
|
}), object({ verified: boolean() }), {
|
|
20624
20713
|
kind: "mutation",
|
|
20625
|
-
access: "view"
|
|
20714
|
+
access: "view",
|
|
20715
|
+
auth: "admin"
|
|
20626
20716
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20627
20717
|
kind: "mutation",
|
|
20628
|
-
access: "view"
|
|
20718
|
+
access: "view",
|
|
20719
|
+
auth: "admin"
|
|
20629
20720
|
}), method(object({
|
|
20630
20721
|
/** AuthenticationResponseJSON from the browser. */
|
|
20631
20722
|
response: record(string(), unknown()) }), object({
|
|
@@ -20633,7 +20724,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20633
20724
|
userId: string().nullable()
|
|
20634
20725
|
}), {
|
|
20635
20726
|
kind: "mutation",
|
|
20636
|
-
access: "view"
|
|
20727
|
+
access: "view",
|
|
20728
|
+
auth: "admin"
|
|
20637
20729
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20638
20730
|
userId: string(),
|
|
20639
20731
|
credentialId: string()
|
|
@@ -20805,7 +20897,19 @@ var VectorStatsResultSchema = object({
|
|
|
20805
20897
|
/** False when the backend ranks approximately. */
|
|
20806
20898
|
exact: boolean()
|
|
20807
20899
|
});
|
|
20808
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20900
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20901
|
+
kind: "mutation",
|
|
20902
|
+
auth: "admin"
|
|
20903
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20904
|
+
kind: "mutation",
|
|
20905
|
+
auth: "admin"
|
|
20906
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20907
|
+
kind: "mutation",
|
|
20908
|
+
auth: "admin"
|
|
20909
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20910
|
+
kind: "mutation",
|
|
20911
|
+
auth: "admin"
|
|
20912
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20809
20913
|
var ClipSchema = object({
|
|
20810
20914
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20811
20915
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23258,7 +23362,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23258
23362
|
sizeBytes: number(),
|
|
23259
23363
|
timestamp: number()
|
|
23260
23364
|
});
|
|
23261
|
-
method(
|
|
23365
|
+
method(object({
|
|
23366
|
+
/**
|
|
23367
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23368
|
+
*
|
|
23369
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23370
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23371
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23372
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23373
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23374
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23375
|
+
*
|
|
23376
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23377
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23378
|
+
*
|
|
23379
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23380
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23381
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23382
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23383
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23384
|
+
*/
|
|
23385
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
23262
23386
|
kind: "mutation",
|
|
23263
23387
|
auth: "admin"
|
|
23264
23388
|
}), method(object({
|
|
@@ -26148,8 +26272,10 @@ var PlateInfoSchema = object({
|
|
|
26148
26272
|
keyFrameMediaKey: string().optional(),
|
|
26149
26273
|
base64: string().optional(),
|
|
26150
26274
|
/**
|
|
26151
|
-
* Same crop as a data-plane URL
|
|
26152
|
-
* never inlines JPEG; `listPlates`
|
|
26275
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26276
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26277
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26278
|
+
* left at its `true` default.
|
|
26153
26279
|
*/
|
|
26154
26280
|
cropUrl: string().optional()
|
|
26155
26281
|
});
|
|
@@ -26169,14 +26295,34 @@ var PlateClusterSchema = object({
|
|
|
26169
26295
|
});
|
|
26170
26296
|
method(object({
|
|
26171
26297
|
deviceId: number().int().optional(),
|
|
26172
|
-
limit: number().int().positive().optional()
|
|
26298
|
+
limit: number().int().positive().optional(),
|
|
26299
|
+
/**
|
|
26300
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26301
|
+
* behaviour, kept so no caller breaks.
|
|
26302
|
+
*
|
|
26303
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26304
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26305
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26306
|
+
* metadata without them — and the browser then caches the images.
|
|
26307
|
+
*
|
|
26308
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26309
|
+
* plates were the one gallery list left without it.
|
|
26310
|
+
*
|
|
26311
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26312
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26313
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26314
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26315
|
+
*/
|
|
26316
|
+
includeCrops: boolean().optional()
|
|
26173
26317
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
26174
26318
|
deviceId: number().int(),
|
|
26175
26319
|
trackId: string()
|
|
26176
26320
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
26177
26321
|
text: string().min(1),
|
|
26178
26322
|
maxDistance: number().int().min(0).optional(),
|
|
26179
|
-
limit: number().int().positive().optional()
|
|
26323
|
+
limit: number().int().positive().optional(),
|
|
26324
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26325
|
+
includeCrops: boolean().optional()
|
|
26180
26326
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
26181
26327
|
maxDistance: number().int().min(0).optional(),
|
|
26182
26328
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -26190,7 +26336,13 @@ method(object({
|
|
|
26190
26336
|
}), method(object({ plateId: string() }), _void(), {
|
|
26191
26337
|
kind: "mutation",
|
|
26192
26338
|
auth: "admin"
|
|
26193
|
-
}), method(
|
|
26339
|
+
}), method(object({
|
|
26340
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26341
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26342
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26343
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26344
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26345
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
26194
26346
|
kind: "mutation",
|
|
26195
26347
|
auth: "admin"
|
|
26196
26348
|
}), method(object({
|
|
@@ -33903,6 +34055,12 @@ Object.freeze({
|
|
|
33903
34055
|
addonId: null,
|
|
33904
34056
|
access: "create"
|
|
33905
34057
|
},
|
|
34058
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
34059
|
+
capName: "pipeline-analytics",
|
|
34060
|
+
capScope: "device",
|
|
34061
|
+
addonId: null,
|
|
34062
|
+
access: "create"
|
|
34063
|
+
},
|
|
33906
34064
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33907
34065
|
capName: "pipeline-analytics",
|
|
33908
34066
|
capScope: "device",
|
|
@@ -34077,6 +34235,12 @@ Object.freeze({
|
|
|
34077
34235
|
addonId: null,
|
|
34078
34236
|
access: "view"
|
|
34079
34237
|
},
|
|
34238
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
34239
|
+
capName: "pipeline-analytics",
|
|
34240
|
+
capScope: "device",
|
|
34241
|
+
addonId: null,
|
|
34242
|
+
access: "view"
|
|
34243
|
+
},
|
|
34080
34244
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
34081
34245
|
capName: "pipeline-analytics",
|
|
34082
34246
|
capScope: "device",
|
|
@@ -34155,6 +34319,12 @@ Object.freeze({
|
|
|
34155
34319
|
addonId: null,
|
|
34156
34320
|
access: "create"
|
|
34157
34321
|
},
|
|
34322
|
+
"pipelineAnalytics.relocateMedia": {
|
|
34323
|
+
capName: "pipeline-analytics",
|
|
34324
|
+
capScope: "device",
|
|
34325
|
+
addonId: null,
|
|
34326
|
+
access: "create"
|
|
34327
|
+
},
|
|
34158
34328
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
34159
34329
|
capName: "pipeline-analytics",
|
|
34160
34330
|
capScope: "device",
|