@camstack/addon-provider-hikvision 1.2.35 → 1.2.36
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
|
@@ -6637,7 +6637,7 @@ function method(input, output, options) {
|
|
|
6637
6637
|
input,
|
|
6638
6638
|
output,
|
|
6639
6639
|
kind: options?.kind ?? "query",
|
|
6640
|
-
auth: options
|
|
6640
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6641
6641
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6642
6642
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6643
6643
|
timeoutMs: options?.timeoutMs
|
|
@@ -6661,7 +6661,7 @@ function event(data) {
|
|
|
6661
6661
|
}
|
|
6662
6662
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6663
6663
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6664
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6664
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6665
6665
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6666
6666
|
DeviceType["Camera"] = "camera";
|
|
6667
6667
|
DeviceType["Hub"] = "hub";
|
|
@@ -6982,7 +6982,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
6982
6982
|
}({});
|
|
6983
6983
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
6984
6984
|
var VersionOutputSchema = object({ version: string() });
|
|
6985
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
6985
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
6986
6986
|
/**
|
|
6987
6987
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
6988
6988
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7596,24 +7596,6 @@ var RecordingRetentionSchema = object({
|
|
|
7596
7596
|
maxSizeGb: number().min(0).optional()
|
|
7597
7597
|
});
|
|
7598
7598
|
/**
|
|
7599
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7600
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7601
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7602
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7603
|
-
*
|
|
7604
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7605
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7606
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7607
|
-
* written with.
|
|
7608
|
-
*/
|
|
7609
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7610
|
-
"minimal",
|
|
7611
|
-
"low",
|
|
7612
|
-
"standard",
|
|
7613
|
-
"high",
|
|
7614
|
-
"max"
|
|
7615
|
-
]);
|
|
7616
|
-
/**
|
|
7617
7599
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7618
7600
|
*
|
|
7619
7601
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7621,7 +7603,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7621
7603
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7622
7604
|
*
|
|
7623
7605
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7624
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7606
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7607
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7608
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7609
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7610
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7625
7611
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7626
7612
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7627
7613
|
*/
|
|
@@ -7644,14 +7630,7 @@ var RecordingConfigSchema = object({
|
|
|
7644
7630
|
* "off" is the absence of a covering band, never a band value.
|
|
7645
7631
|
*/
|
|
7646
7632
|
bands: array(RecordingBandSchema).default([]),
|
|
7647
|
-
retention: RecordingRetentionSchema.optional()
|
|
7648
|
-
/**
|
|
7649
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7650
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7651
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7652
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7653
|
-
*/
|
|
7654
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7633
|
+
retention: RecordingRetentionSchema.optional()
|
|
7655
7634
|
}).strict();
|
|
7656
7635
|
/**
|
|
7657
7636
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7727,10 +7706,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7727
7706
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7728
7707
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7729
7708
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7730
|
-
var
|
|
7709
|
+
var RelocateMediaInputSchema = object({
|
|
7731
7710
|
toLocationId: string(),
|
|
7732
7711
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7733
|
-
})
|
|
7712
|
+
});
|
|
7713
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7734
7714
|
/** The independently selectable logical storage classes. `recordings`
|
|
7735
7715
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7736
7716
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8200,7 +8180,26 @@ var LabelDefinitionSchema = object({
|
|
|
8200
8180
|
description: string().optional(),
|
|
8201
8181
|
icon: string().optional()
|
|
8202
8182
|
});
|
|
8203
|
-
|
|
8183
|
+
/**
|
|
8184
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8185
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8186
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8187
|
+
* detection pipeline executor actually routes.
|
|
8188
|
+
*
|
|
8189
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8190
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8191
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8192
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8193
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8194
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8195
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8196
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8197
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8198
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8199
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8200
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8201
|
+
*/
|
|
8202
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8204
8203
|
mapping: record(string(), _enum([
|
|
8205
8204
|
"person",
|
|
8206
8205
|
"vehicle",
|
|
@@ -8405,7 +8404,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8405
8404
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8406
8405
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8407
8406
|
*/
|
|
8408
|
-
classMap:
|
|
8407
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8409
8408
|
});
|
|
8410
8409
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8411
8410
|
format: literal("openvino"),
|
|
@@ -8435,7 +8434,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8435
8434
|
"segmentation"
|
|
8436
8435
|
]),
|
|
8437
8436
|
faceAlignment: boolean().optional(),
|
|
8438
|
-
classMap:
|
|
8437
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8439
8438
|
});
|
|
8440
8439
|
var ConvertResultSchema = object({
|
|
8441
8440
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9298,7 +9297,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9298
9297
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9299
9298
|
sectionLabel: string().optional()
|
|
9300
9299
|
});
|
|
9301
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9300
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9302
9301
|
var AddonHttpRouteSchema = object({
|
|
9303
9302
|
method: _enum([
|
|
9304
9303
|
"GET",
|
|
@@ -9533,7 +9532,7 @@ var WidgetMetadataSchema = object({
|
|
|
9533
9532
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9534
9533
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9535
9534
|
});
|
|
9536
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9535
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9537
9536
|
/**
|
|
9538
9537
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9539
9538
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11169,7 +11168,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11169
11168
|
stepId: string(),
|
|
11170
11169
|
entry: ModelCatalogEntrySchema
|
|
11171
11170
|
});
|
|
11172
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11171
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11173
11172
|
/**
|
|
11174
11173
|
* Query filter for settings-store collections.
|
|
11175
11174
|
*/
|
|
@@ -11256,7 +11255,8 @@ method(object({
|
|
|
11256
11255
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11257
11256
|
namespace: string().optional(),
|
|
11258
11257
|
collection: string(),
|
|
11259
|
-
filter: QueryFilterSchema.optional()
|
|
11258
|
+
filter: QueryFilterSchema.optional(),
|
|
11259
|
+
columns: array(string()).readonly().optional()
|
|
11260
11260
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11261
11261
|
namespace: string().optional(),
|
|
11262
11262
|
collection: string(),
|
|
@@ -11319,46 +11319,87 @@ var EngineInfoSchema = object({
|
|
|
11319
11319
|
kind: _enum(["relational", "vector"]),
|
|
11320
11320
|
displayName: string()
|
|
11321
11321
|
});
|
|
11322
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11322
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11323
11323
|
namespace: string().optional(),
|
|
11324
11324
|
collection: string(),
|
|
11325
11325
|
key: string()
|
|
11326
|
-
}), unknown()), method(object({
|
|
11326
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11327
11327
|
namespace: string().optional(),
|
|
11328
11328
|
collection: string(),
|
|
11329
11329
|
key: string(),
|
|
11330
11330
|
value: unknown()
|
|
11331
|
-
}), _void(), {
|
|
11331
|
+
}), _void(), {
|
|
11332
|
+
kind: "mutation",
|
|
11333
|
+
auth: "admin"
|
|
11334
|
+
}), method(object({
|
|
11332
11335
|
namespace: string().optional(),
|
|
11333
11336
|
collection: string(),
|
|
11334
|
-
filter: QueryFilterSchema.optional()
|
|
11335
|
-
|
|
11337
|
+
filter: QueryFilterSchema.optional(),
|
|
11338
|
+
/**
|
|
11339
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11340
|
+
*
|
|
11341
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11342
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11343
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11344
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11345
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11346
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11347
|
+
*
|
|
11348
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11349
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11350
|
+
* interface the engine destructures from. The field existed on both
|
|
11351
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11352
|
+
* registered provider against `InferProvider<cap>` —
|
|
11353
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11354
|
+
*
|
|
11355
|
+
* It is declared here anyway, and must stay in step with
|
|
11356
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11357
|
+
* to be able to see that this call carries a projection.
|
|
11358
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11359
|
+
*/
|
|
11360
|
+
columns: array(string()).readonly().optional()
|
|
11361
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11336
11362
|
namespace: string().optional(),
|
|
11337
11363
|
collection: string(),
|
|
11338
11364
|
record: SettingsRecordSchema
|
|
11339
|
-
}), _void(), {
|
|
11365
|
+
}), _void(), {
|
|
11366
|
+
kind: "mutation",
|
|
11367
|
+
auth: "admin"
|
|
11368
|
+
}), method(object({
|
|
11340
11369
|
namespace: string().optional(),
|
|
11341
11370
|
collection: string(),
|
|
11342
11371
|
id: string(),
|
|
11343
11372
|
data: record(string(), unknown())
|
|
11344
|
-
}), _void(), {
|
|
11373
|
+
}), _void(), {
|
|
11374
|
+
kind: "mutation",
|
|
11375
|
+
auth: "admin"
|
|
11376
|
+
}), method(object({
|
|
11345
11377
|
namespace: string().optional(),
|
|
11346
11378
|
collection: string(),
|
|
11347
11379
|
key: string()
|
|
11348
|
-
}), _void(), {
|
|
11380
|
+
}), _void(), {
|
|
11381
|
+
kind: "mutation",
|
|
11382
|
+
auth: "admin"
|
|
11383
|
+
}), method(object({
|
|
11349
11384
|
namespace: string().optional(),
|
|
11350
11385
|
collection: string(),
|
|
11351
11386
|
filter: MutationFilterSchema
|
|
11352
|
-
}), object({ deleted: number().int() }), {
|
|
11387
|
+
}), object({ deleted: number().int() }), {
|
|
11388
|
+
kind: "mutation",
|
|
11389
|
+
auth: "admin"
|
|
11390
|
+
}), method(object({
|
|
11353
11391
|
namespace: string().optional(),
|
|
11354
11392
|
collection: string(),
|
|
11355
11393
|
filter: MutationFilterSchema,
|
|
11356
11394
|
data: record(string(), unknown())
|
|
11357
|
-
}), object({ updated: number().int() }), {
|
|
11395
|
+
}), object({ updated: number().int() }), {
|
|
11396
|
+
kind: "mutation",
|
|
11397
|
+
auth: "admin"
|
|
11398
|
+
}), method(object({
|
|
11358
11399
|
namespace: string().optional(),
|
|
11359
11400
|
collection: string(),
|
|
11360
11401
|
filter: QueryFilterSchema.optional()
|
|
11361
|
-
}), number()), method(object({
|
|
11402
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11362
11403
|
namespace: string().optional(),
|
|
11363
11404
|
collection: string(),
|
|
11364
11405
|
field: string(),
|
|
@@ -11368,15 +11409,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11368
11409
|
}), array(object({
|
|
11369
11410
|
bucket: number().int(),
|
|
11370
11411
|
count: number().int()
|
|
11371
|
-
})).readonly()), method(object({
|
|
11412
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11372
11413
|
namespace: string().optional(),
|
|
11373
11414
|
collection: string()
|
|
11374
|
-
}), boolean()), method(object({
|
|
11415
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11375
11416
|
namespace: string().optional(),
|
|
11376
11417
|
collection: string(),
|
|
11377
11418
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11378
11419
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11379
|
-
}), _void(), {
|
|
11420
|
+
}), _void(), {
|
|
11421
|
+
kind: "mutation",
|
|
11422
|
+
auth: "admin"
|
|
11423
|
+
});
|
|
11380
11424
|
/**
|
|
11381
11425
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11382
11426
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12666,7 +12710,7 @@ method(object({
|
|
|
12666
12710
|
crop: _instanceof(Uint8Array),
|
|
12667
12711
|
width: number(),
|
|
12668
12712
|
height: number()
|
|
12669
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12713
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12670
12714
|
/**
|
|
12671
12715
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12672
12716
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12959,19 +13003,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12959
13003
|
runtime: ManagedRuntimeConfigSchema,
|
|
12960
13004
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12961
13005
|
timeoutMs: number().int().positive().optional()
|
|
12962
|
-
}), LlmGenerateResultSchema, {
|
|
13006
|
+
}), LlmGenerateResultSchema, {
|
|
13007
|
+
kind: "mutation",
|
|
13008
|
+
auth: "admin"
|
|
13009
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12963
13010
|
kind: "mutation",
|
|
12964
13011
|
auth: "admin"
|
|
12965
13012
|
}), method(object({}), _void(), {
|
|
12966
13013
|
kind: "mutation",
|
|
12967
13014
|
auth: "admin"
|
|
12968
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13015
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12969
13016
|
kind: "mutation",
|
|
12970
13017
|
auth: "admin"
|
|
12971
13018
|
}), method(object({ file: string() }), _void(), {
|
|
12972
13019
|
kind: "mutation",
|
|
12973
13020
|
auth: "admin"
|
|
12974
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
13021
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12975
13022
|
/**
|
|
12976
13023
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12977
13024
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16482,7 +16529,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16482
16529
|
*/
|
|
16483
16530
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16484
16531
|
});
|
|
16485
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16532
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16486
16533
|
/**
|
|
16487
16534
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16488
16535
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17677,6 +17724,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17677
17724
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17678
17725
|
kind: "mutation",
|
|
17679
17726
|
auth: "admin"
|
|
17727
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17728
|
+
kind: "mutation",
|
|
17729
|
+
auth: "admin"
|
|
17730
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17731
|
+
kind: "query",
|
|
17732
|
+
auth: "admin"
|
|
17733
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17734
|
+
kind: "mutation",
|
|
17735
|
+
auth: "admin"
|
|
17680
17736
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17681
17737
|
kind: "query",
|
|
17682
17738
|
auth: "admin"
|
|
@@ -17831,6 +17887,11 @@ object({
|
|
|
17831
17887
|
"jpeg"
|
|
17832
17888
|
])
|
|
17833
17889
|
});
|
|
17890
|
+
/**
|
|
17891
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17892
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17893
|
+
* other process or execution group.
|
|
17894
|
+
*/
|
|
17834
17895
|
var FrameRefSchema = object({
|
|
17835
17896
|
registryId: string().min(1),
|
|
17836
17897
|
id: string().min(1),
|
|
@@ -20140,7 +20201,7 @@ method(object({
|
|
|
20140
20201
|
* linking rather than produce an eternal token.
|
|
20141
20202
|
*/
|
|
20142
20203
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
20143
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
20204
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
20144
20205
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
20145
20206
|
providerId: string().min(1),
|
|
20146
20207
|
displayName: string().min(1),
|
|
@@ -20235,10 +20296,13 @@ var EvictResultSchema = object({
|
|
|
20235
20296
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20236
20297
|
exhausted: boolean()
|
|
20237
20298
|
});
|
|
20238
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20299
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20239
20300
|
locationId: string(),
|
|
20240
20301
|
targetBytes: number().int().positive()
|
|
20241
|
-
}), EvictResultSchema, {
|
|
20302
|
+
}), EvictResultSchema, {
|
|
20303
|
+
kind: "mutation",
|
|
20304
|
+
auth: "admin"
|
|
20305
|
+
});
|
|
20242
20306
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20243
20307
|
kind: "mutation",
|
|
20244
20308
|
auth: "admin"
|
|
@@ -20298,26 +20362,50 @@ var ReadChunkInputSchema = object({
|
|
|
20298
20362
|
length: number()
|
|
20299
20363
|
});
|
|
20300
20364
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20301
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20365
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20302
20366
|
location: StorageLocationSchema,
|
|
20303
20367
|
relativePath: string()
|
|
20304
|
-
}), string()), method(object({
|
|
20368
|
+
}), string(), { auth: "admin" }), method(object({
|
|
20305
20369
|
location: StorageLocationSchema,
|
|
20306
20370
|
relativePath: string(),
|
|
20307
20371
|
data: _instanceof(Uint8Array)
|
|
20308
|
-
}), _void(), {
|
|
20372
|
+
}), _void(), {
|
|
20373
|
+
kind: "mutation",
|
|
20374
|
+
auth: "admin"
|
|
20375
|
+
}), method(object({
|
|
20309
20376
|
location: StorageLocationSchema,
|
|
20310
20377
|
relativePath: string()
|
|
20311
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20378
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20312
20379
|
location: StorageLocationSchema,
|
|
20313
20380
|
relativePath: string()
|
|
20314
|
-
}), boolean()), method(object({
|
|
20381
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20315
20382
|
location: StorageLocationSchema,
|
|
20316
20383
|
prefix: string().optional()
|
|
20317
|
-
}), array(string()).readonly()), method(object({
|
|
20384
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
20318
20385
|
location: StorageLocationSchema,
|
|
20319
20386
|
relativePath: string()
|
|
20320
|
-
}), _void(), {
|
|
20387
|
+
}), _void(), {
|
|
20388
|
+
kind: "mutation",
|
|
20389
|
+
auth: "admin"
|
|
20390
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20391
|
+
kind: "mutation",
|
|
20392
|
+
auth: "admin"
|
|
20393
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20394
|
+
kind: "mutation",
|
|
20395
|
+
auth: "admin"
|
|
20396
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20397
|
+
kind: "mutation",
|
|
20398
|
+
auth: "admin"
|
|
20399
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20400
|
+
kind: "mutation",
|
|
20401
|
+
auth: "admin"
|
|
20402
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20403
|
+
kind: "mutation",
|
|
20404
|
+
auth: "admin"
|
|
20405
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20406
|
+
kind: "mutation",
|
|
20407
|
+
auth: "admin"
|
|
20408
|
+
});
|
|
20321
20409
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20322
20410
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20323
20411
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20575,7 +20663,8 @@ method(object({
|
|
|
20575
20663
|
access: "create"
|
|
20576
20664
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20577
20665
|
kind: "mutation",
|
|
20578
|
-
access: "view"
|
|
20666
|
+
access: "view",
|
|
20667
|
+
auth: "admin"
|
|
20579
20668
|
}), method(object({
|
|
20580
20669
|
/** Required — the user the assertion belongs to (verified). */
|
|
20581
20670
|
userId: string(),
|
|
@@ -20583,10 +20672,12 @@ method(object({
|
|
|
20583
20672
|
response: record(string(), unknown())
|
|
20584
20673
|
}), object({ verified: boolean() }), {
|
|
20585
20674
|
kind: "mutation",
|
|
20586
|
-
access: "view"
|
|
20675
|
+
access: "view",
|
|
20676
|
+
auth: "admin"
|
|
20587
20677
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20588
20678
|
kind: "mutation",
|
|
20589
|
-
access: "view"
|
|
20679
|
+
access: "view",
|
|
20680
|
+
auth: "admin"
|
|
20590
20681
|
}), method(object({
|
|
20591
20682
|
/** AuthenticationResponseJSON from the browser. */
|
|
20592
20683
|
response: record(string(), unknown()) }), object({
|
|
@@ -20594,7 +20685,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20594
20685
|
userId: string().nullable()
|
|
20595
20686
|
}), {
|
|
20596
20687
|
kind: "mutation",
|
|
20597
|
-
access: "view"
|
|
20688
|
+
access: "view",
|
|
20689
|
+
auth: "admin"
|
|
20598
20690
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20599
20691
|
userId: string(),
|
|
20600
20692
|
credentialId: string()
|
|
@@ -20766,7 +20858,19 @@ var VectorStatsResultSchema = object({
|
|
|
20766
20858
|
/** False when the backend ranks approximately. */
|
|
20767
20859
|
exact: boolean()
|
|
20768
20860
|
});
|
|
20769
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20861
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20862
|
+
kind: "mutation",
|
|
20863
|
+
auth: "admin"
|
|
20864
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20865
|
+
kind: "mutation",
|
|
20866
|
+
auth: "admin"
|
|
20867
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20868
|
+
kind: "mutation",
|
|
20869
|
+
auth: "admin"
|
|
20870
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20871
|
+
kind: "mutation",
|
|
20872
|
+
auth: "admin"
|
|
20873
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20770
20874
|
var ClipSchema = object({
|
|
20771
20875
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20772
20876
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23219,7 +23323,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23219
23323
|
sizeBytes: number(),
|
|
23220
23324
|
timestamp: number()
|
|
23221
23325
|
});
|
|
23222
|
-
method(
|
|
23326
|
+
method(object({
|
|
23327
|
+
/**
|
|
23328
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23329
|
+
*
|
|
23330
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23331
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23332
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23333
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23334
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23335
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23336
|
+
*
|
|
23337
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23338
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23339
|
+
*
|
|
23340
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23341
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23342
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23343
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23344
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23345
|
+
*/
|
|
23346
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
23223
23347
|
kind: "mutation",
|
|
23224
23348
|
auth: "admin"
|
|
23225
23349
|
}), method(object({
|
|
@@ -26155,8 +26279,10 @@ var PlateInfoSchema = object({
|
|
|
26155
26279
|
keyFrameMediaKey: string().optional(),
|
|
26156
26280
|
base64: string().optional(),
|
|
26157
26281
|
/**
|
|
26158
|
-
* Same crop as a data-plane URL
|
|
26159
|
-
* never inlines JPEG; `listPlates`
|
|
26282
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26283
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26284
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26285
|
+
* left at its `true` default.
|
|
26160
26286
|
*/
|
|
26161
26287
|
cropUrl: string().optional()
|
|
26162
26288
|
});
|
|
@@ -26176,14 +26302,34 @@ var PlateClusterSchema = object({
|
|
|
26176
26302
|
});
|
|
26177
26303
|
method(object({
|
|
26178
26304
|
deviceId: number().int().optional(),
|
|
26179
|
-
limit: number().int().positive().optional()
|
|
26305
|
+
limit: number().int().positive().optional(),
|
|
26306
|
+
/**
|
|
26307
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26308
|
+
* behaviour, kept so no caller breaks.
|
|
26309
|
+
*
|
|
26310
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26311
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26312
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26313
|
+
* metadata without them — and the browser then caches the images.
|
|
26314
|
+
*
|
|
26315
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26316
|
+
* plates were the one gallery list left without it.
|
|
26317
|
+
*
|
|
26318
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26319
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26320
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26321
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26322
|
+
*/
|
|
26323
|
+
includeCrops: boolean().optional()
|
|
26180
26324
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
26181
26325
|
deviceId: number().int(),
|
|
26182
26326
|
trackId: string()
|
|
26183
26327
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
26184
26328
|
text: string().min(1),
|
|
26185
26329
|
maxDistance: number().int().min(0).optional(),
|
|
26186
|
-
limit: number().int().positive().optional()
|
|
26330
|
+
limit: number().int().positive().optional(),
|
|
26331
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26332
|
+
includeCrops: boolean().optional()
|
|
26187
26333
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
26188
26334
|
maxDistance: number().int().min(0).optional(),
|
|
26189
26335
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -26197,7 +26343,13 @@ method(object({
|
|
|
26197
26343
|
}), method(object({ plateId: string() }), _void(), {
|
|
26198
26344
|
kind: "mutation",
|
|
26199
26345
|
auth: "admin"
|
|
26200
|
-
}), method(
|
|
26346
|
+
}), method(object({
|
|
26347
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26348
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26349
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26350
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26351
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26352
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
26201
26353
|
kind: "mutation",
|
|
26202
26354
|
auth: "admin"
|
|
26203
26355
|
}), method(object({
|
|
@@ -33976,6 +34128,12 @@ Object.freeze({
|
|
|
33976
34128
|
addonId: null,
|
|
33977
34129
|
access: "create"
|
|
33978
34130
|
},
|
|
34131
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
34132
|
+
capName: "pipeline-analytics",
|
|
34133
|
+
capScope: "device",
|
|
34134
|
+
addonId: null,
|
|
34135
|
+
access: "create"
|
|
34136
|
+
},
|
|
33979
34137
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33980
34138
|
capName: "pipeline-analytics",
|
|
33981
34139
|
capScope: "device",
|
|
@@ -34150,6 +34308,12 @@ Object.freeze({
|
|
|
34150
34308
|
addonId: null,
|
|
34151
34309
|
access: "view"
|
|
34152
34310
|
},
|
|
34311
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
34312
|
+
capName: "pipeline-analytics",
|
|
34313
|
+
capScope: "device",
|
|
34314
|
+
addonId: null,
|
|
34315
|
+
access: "view"
|
|
34316
|
+
},
|
|
34153
34317
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
34154
34318
|
capName: "pipeline-analytics",
|
|
34155
34319
|
capScope: "device",
|
|
@@ -34228,6 +34392,12 @@ Object.freeze({
|
|
|
34228
34392
|
addonId: null,
|
|
34229
34393
|
access: "create"
|
|
34230
34394
|
},
|
|
34395
|
+
"pipelineAnalytics.relocateMedia": {
|
|
34396
|
+
capName: "pipeline-analytics",
|
|
34397
|
+
capScope: "device",
|
|
34398
|
+
addonId: null,
|
|
34399
|
+
access: "create"
|
|
34400
|
+
},
|
|
34231
34401
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
34232
34402
|
capName: "pipeline-analytics",
|
|
34233
34403
|
capScope: "device",
|
package/dist/addon.mjs
CHANGED
|
@@ -6638,7 +6638,7 @@ function method(input, output, options) {
|
|
|
6638
6638
|
input,
|
|
6639
6639
|
output,
|
|
6640
6640
|
kind: options?.kind ?? "query",
|
|
6641
|
-
auth: options
|
|
6641
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6642
6642
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6643
6643
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6644
6644
|
timeoutMs: options?.timeoutMs
|
|
@@ -6662,7 +6662,7 @@ function event(data) {
|
|
|
6662
6662
|
}
|
|
6663
6663
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6664
6664
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6665
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6665
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6666
6666
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6667
6667
|
DeviceType["Camera"] = "camera";
|
|
6668
6668
|
DeviceType["Hub"] = "hub";
|
|
@@ -6983,7 +6983,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
6983
6983
|
}({});
|
|
6984
6984
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
6985
6985
|
var VersionOutputSchema = object({ version: string() });
|
|
6986
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
6986
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
6987
6987
|
/**
|
|
6988
6988
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
6989
6989
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7597,24 +7597,6 @@ var RecordingRetentionSchema = object({
|
|
|
7597
7597
|
maxSizeGb: number().min(0).optional()
|
|
7598
7598
|
});
|
|
7599
7599
|
/**
|
|
7600
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7601
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7602
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7603
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7604
|
-
*
|
|
7605
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7606
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7607
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7608
|
-
* written with.
|
|
7609
|
-
*/
|
|
7610
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7611
|
-
"minimal",
|
|
7612
|
-
"low",
|
|
7613
|
-
"standard",
|
|
7614
|
-
"high",
|
|
7615
|
-
"max"
|
|
7616
|
-
]);
|
|
7617
|
-
/**
|
|
7618
7600
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7619
7601
|
*
|
|
7620
7602
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7622,7 +7604,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7622
7604
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7623
7605
|
*
|
|
7624
7606
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7625
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7607
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7608
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7609
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7610
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7611
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7626
7612
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7627
7613
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7628
7614
|
*/
|
|
@@ -7645,14 +7631,7 @@ var RecordingConfigSchema = object({
|
|
|
7645
7631
|
* "off" is the absence of a covering band, never a band value.
|
|
7646
7632
|
*/
|
|
7647
7633
|
bands: array(RecordingBandSchema).default([]),
|
|
7648
|
-
retention: RecordingRetentionSchema.optional()
|
|
7649
|
-
/**
|
|
7650
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7651
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7652
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7653
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7654
|
-
*/
|
|
7655
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7634
|
+
retention: RecordingRetentionSchema.optional()
|
|
7656
7635
|
}).strict();
|
|
7657
7636
|
/**
|
|
7658
7637
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7728,10 +7707,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7728
7707
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7729
7708
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7730
7709
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7731
|
-
var
|
|
7710
|
+
var RelocateMediaInputSchema = object({
|
|
7732
7711
|
toLocationId: string(),
|
|
7733
7712
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7734
|
-
})
|
|
7713
|
+
});
|
|
7714
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7735
7715
|
/** The independently selectable logical storage classes. `recordings`
|
|
7736
7716
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7737
7717
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8201,7 +8181,26 @@ var LabelDefinitionSchema = object({
|
|
|
8201
8181
|
description: string().optional(),
|
|
8202
8182
|
icon: string().optional()
|
|
8203
8183
|
});
|
|
8204
|
-
|
|
8184
|
+
/**
|
|
8185
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8186
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8187
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8188
|
+
* detection pipeline executor actually routes.
|
|
8189
|
+
*
|
|
8190
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8191
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8192
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8193
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8194
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8195
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8196
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8197
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8198
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8199
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8200
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8201
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8202
|
+
*/
|
|
8203
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8205
8204
|
mapping: record(string(), _enum([
|
|
8206
8205
|
"person",
|
|
8207
8206
|
"vehicle",
|
|
@@ -8406,7 +8405,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8406
8405
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8407
8406
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8408
8407
|
*/
|
|
8409
|
-
classMap:
|
|
8408
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8410
8409
|
});
|
|
8411
8410
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8412
8411
|
format: literal("openvino"),
|
|
@@ -8436,7 +8435,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8436
8435
|
"segmentation"
|
|
8437
8436
|
]),
|
|
8438
8437
|
faceAlignment: boolean().optional(),
|
|
8439
|
-
classMap:
|
|
8438
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8440
8439
|
});
|
|
8441
8440
|
var ConvertResultSchema = object({
|
|
8442
8441
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9299,7 +9298,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9299
9298
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9300
9299
|
sectionLabel: string().optional()
|
|
9301
9300
|
});
|
|
9302
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9301
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9303
9302
|
var AddonHttpRouteSchema = object({
|
|
9304
9303
|
method: _enum([
|
|
9305
9304
|
"GET",
|
|
@@ -9534,7 +9533,7 @@ var WidgetMetadataSchema = object({
|
|
|
9534
9533
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9535
9534
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9536
9535
|
});
|
|
9537
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9536
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9538
9537
|
/**
|
|
9539
9538
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9540
9539
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11170,7 +11169,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11170
11169
|
stepId: string(),
|
|
11171
11170
|
entry: ModelCatalogEntrySchema
|
|
11172
11171
|
});
|
|
11173
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11172
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11174
11173
|
/**
|
|
11175
11174
|
* Query filter for settings-store collections.
|
|
11176
11175
|
*/
|
|
@@ -11257,7 +11256,8 @@ method(object({
|
|
|
11257
11256
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11258
11257
|
namespace: string().optional(),
|
|
11259
11258
|
collection: string(),
|
|
11260
|
-
filter: QueryFilterSchema.optional()
|
|
11259
|
+
filter: QueryFilterSchema.optional(),
|
|
11260
|
+
columns: array(string()).readonly().optional()
|
|
11261
11261
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11262
11262
|
namespace: string().optional(),
|
|
11263
11263
|
collection: string(),
|
|
@@ -11320,46 +11320,87 @@ var EngineInfoSchema = object({
|
|
|
11320
11320
|
kind: _enum(["relational", "vector"]),
|
|
11321
11321
|
displayName: string()
|
|
11322
11322
|
});
|
|
11323
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11323
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11324
11324
|
namespace: string().optional(),
|
|
11325
11325
|
collection: string(),
|
|
11326
11326
|
key: string()
|
|
11327
|
-
}), unknown()), method(object({
|
|
11327
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11328
11328
|
namespace: string().optional(),
|
|
11329
11329
|
collection: string(),
|
|
11330
11330
|
key: string(),
|
|
11331
11331
|
value: unknown()
|
|
11332
|
-
}), _void(), {
|
|
11332
|
+
}), _void(), {
|
|
11333
|
+
kind: "mutation",
|
|
11334
|
+
auth: "admin"
|
|
11335
|
+
}), method(object({
|
|
11333
11336
|
namespace: string().optional(),
|
|
11334
11337
|
collection: string(),
|
|
11335
|
-
filter: QueryFilterSchema.optional()
|
|
11336
|
-
|
|
11338
|
+
filter: QueryFilterSchema.optional(),
|
|
11339
|
+
/**
|
|
11340
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11341
|
+
*
|
|
11342
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11343
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11344
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11345
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11346
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11347
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11348
|
+
*
|
|
11349
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11350
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11351
|
+
* interface the engine destructures from. The field existed on both
|
|
11352
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11353
|
+
* registered provider against `InferProvider<cap>` —
|
|
11354
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11355
|
+
*
|
|
11356
|
+
* It is declared here anyway, and must stay in step with
|
|
11357
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11358
|
+
* to be able to see that this call carries a projection.
|
|
11359
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11360
|
+
*/
|
|
11361
|
+
columns: array(string()).readonly().optional()
|
|
11362
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11337
11363
|
namespace: string().optional(),
|
|
11338
11364
|
collection: string(),
|
|
11339
11365
|
record: SettingsRecordSchema
|
|
11340
|
-
}), _void(), {
|
|
11366
|
+
}), _void(), {
|
|
11367
|
+
kind: "mutation",
|
|
11368
|
+
auth: "admin"
|
|
11369
|
+
}), method(object({
|
|
11341
11370
|
namespace: string().optional(),
|
|
11342
11371
|
collection: string(),
|
|
11343
11372
|
id: string(),
|
|
11344
11373
|
data: record(string(), unknown())
|
|
11345
|
-
}), _void(), {
|
|
11374
|
+
}), _void(), {
|
|
11375
|
+
kind: "mutation",
|
|
11376
|
+
auth: "admin"
|
|
11377
|
+
}), method(object({
|
|
11346
11378
|
namespace: string().optional(),
|
|
11347
11379
|
collection: string(),
|
|
11348
11380
|
key: string()
|
|
11349
|
-
}), _void(), {
|
|
11381
|
+
}), _void(), {
|
|
11382
|
+
kind: "mutation",
|
|
11383
|
+
auth: "admin"
|
|
11384
|
+
}), method(object({
|
|
11350
11385
|
namespace: string().optional(),
|
|
11351
11386
|
collection: string(),
|
|
11352
11387
|
filter: MutationFilterSchema
|
|
11353
|
-
}), object({ deleted: number().int() }), {
|
|
11388
|
+
}), object({ deleted: number().int() }), {
|
|
11389
|
+
kind: "mutation",
|
|
11390
|
+
auth: "admin"
|
|
11391
|
+
}), method(object({
|
|
11354
11392
|
namespace: string().optional(),
|
|
11355
11393
|
collection: string(),
|
|
11356
11394
|
filter: MutationFilterSchema,
|
|
11357
11395
|
data: record(string(), unknown())
|
|
11358
|
-
}), object({ updated: number().int() }), {
|
|
11396
|
+
}), object({ updated: number().int() }), {
|
|
11397
|
+
kind: "mutation",
|
|
11398
|
+
auth: "admin"
|
|
11399
|
+
}), method(object({
|
|
11359
11400
|
namespace: string().optional(),
|
|
11360
11401
|
collection: string(),
|
|
11361
11402
|
filter: QueryFilterSchema.optional()
|
|
11362
|
-
}), number()), method(object({
|
|
11403
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11363
11404
|
namespace: string().optional(),
|
|
11364
11405
|
collection: string(),
|
|
11365
11406
|
field: string(),
|
|
@@ -11369,15 +11410,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11369
11410
|
}), array(object({
|
|
11370
11411
|
bucket: number().int(),
|
|
11371
11412
|
count: number().int()
|
|
11372
|
-
})).readonly()), method(object({
|
|
11413
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11373
11414
|
namespace: string().optional(),
|
|
11374
11415
|
collection: string()
|
|
11375
|
-
}), boolean()), method(object({
|
|
11416
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11376
11417
|
namespace: string().optional(),
|
|
11377
11418
|
collection: string(),
|
|
11378
11419
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11379
11420
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11380
|
-
}), _void(), {
|
|
11421
|
+
}), _void(), {
|
|
11422
|
+
kind: "mutation",
|
|
11423
|
+
auth: "admin"
|
|
11424
|
+
});
|
|
11381
11425
|
/**
|
|
11382
11426
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11383
11427
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12667,7 +12711,7 @@ method(object({
|
|
|
12667
12711
|
crop: _instanceof(Uint8Array),
|
|
12668
12712
|
width: number(),
|
|
12669
12713
|
height: number()
|
|
12670
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12714
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12671
12715
|
/**
|
|
12672
12716
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12673
12717
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12960,19 +13004,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12960
13004
|
runtime: ManagedRuntimeConfigSchema,
|
|
12961
13005
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12962
13006
|
timeoutMs: number().int().positive().optional()
|
|
12963
|
-
}), LlmGenerateResultSchema, {
|
|
13007
|
+
}), LlmGenerateResultSchema, {
|
|
13008
|
+
kind: "mutation",
|
|
13009
|
+
auth: "admin"
|
|
13010
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12964
13011
|
kind: "mutation",
|
|
12965
13012
|
auth: "admin"
|
|
12966
13013
|
}), method(object({}), _void(), {
|
|
12967
13014
|
kind: "mutation",
|
|
12968
13015
|
auth: "admin"
|
|
12969
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13016
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12970
13017
|
kind: "mutation",
|
|
12971
13018
|
auth: "admin"
|
|
12972
13019
|
}), method(object({ file: string() }), _void(), {
|
|
12973
13020
|
kind: "mutation",
|
|
12974
13021
|
auth: "admin"
|
|
12975
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
13022
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12976
13023
|
/**
|
|
12977
13024
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12978
13025
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16483,7 +16530,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16483
16530
|
*/
|
|
16484
16531
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16485
16532
|
});
|
|
16486
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16533
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16487
16534
|
/**
|
|
16488
16535
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16489
16536
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17678,6 +17725,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17678
17725
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17679
17726
|
kind: "mutation",
|
|
17680
17727
|
auth: "admin"
|
|
17728
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17729
|
+
kind: "mutation",
|
|
17730
|
+
auth: "admin"
|
|
17731
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17732
|
+
kind: "query",
|
|
17733
|
+
auth: "admin"
|
|
17734
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17735
|
+
kind: "mutation",
|
|
17736
|
+
auth: "admin"
|
|
17681
17737
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17682
17738
|
kind: "query",
|
|
17683
17739
|
auth: "admin"
|
|
@@ -17832,6 +17888,11 @@ object({
|
|
|
17832
17888
|
"jpeg"
|
|
17833
17889
|
])
|
|
17834
17890
|
});
|
|
17891
|
+
/**
|
|
17892
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17893
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17894
|
+
* other process or execution group.
|
|
17895
|
+
*/
|
|
17835
17896
|
var FrameRefSchema = object({
|
|
17836
17897
|
registryId: string().min(1),
|
|
17837
17898
|
id: string().min(1),
|
|
@@ -20141,7 +20202,7 @@ method(object({
|
|
|
20141
20202
|
* linking rather than produce an eternal token.
|
|
20142
20203
|
*/
|
|
20143
20204
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
20144
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
20205
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
20145
20206
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
20146
20207
|
providerId: string().min(1),
|
|
20147
20208
|
displayName: string().min(1),
|
|
@@ -20236,10 +20297,13 @@ var EvictResultSchema = object({
|
|
|
20236
20297
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20237
20298
|
exhausted: boolean()
|
|
20238
20299
|
});
|
|
20239
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20300
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20240
20301
|
locationId: string(),
|
|
20241
20302
|
targetBytes: number().int().positive()
|
|
20242
|
-
}), EvictResultSchema, {
|
|
20303
|
+
}), EvictResultSchema, {
|
|
20304
|
+
kind: "mutation",
|
|
20305
|
+
auth: "admin"
|
|
20306
|
+
});
|
|
20243
20307
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20244
20308
|
kind: "mutation",
|
|
20245
20309
|
auth: "admin"
|
|
@@ -20299,26 +20363,50 @@ var ReadChunkInputSchema = object({
|
|
|
20299
20363
|
length: number()
|
|
20300
20364
|
});
|
|
20301
20365
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20302
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20366
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20303
20367
|
location: StorageLocationSchema,
|
|
20304
20368
|
relativePath: string()
|
|
20305
|
-
}), string()), method(object({
|
|
20369
|
+
}), string(), { auth: "admin" }), method(object({
|
|
20306
20370
|
location: StorageLocationSchema,
|
|
20307
20371
|
relativePath: string(),
|
|
20308
20372
|
data: _instanceof(Uint8Array)
|
|
20309
|
-
}), _void(), {
|
|
20373
|
+
}), _void(), {
|
|
20374
|
+
kind: "mutation",
|
|
20375
|
+
auth: "admin"
|
|
20376
|
+
}), method(object({
|
|
20310
20377
|
location: StorageLocationSchema,
|
|
20311
20378
|
relativePath: string()
|
|
20312
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20379
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20313
20380
|
location: StorageLocationSchema,
|
|
20314
20381
|
relativePath: string()
|
|
20315
|
-
}), boolean()), method(object({
|
|
20382
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20316
20383
|
location: StorageLocationSchema,
|
|
20317
20384
|
prefix: string().optional()
|
|
20318
|
-
}), array(string()).readonly()), method(object({
|
|
20385
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
20319
20386
|
location: StorageLocationSchema,
|
|
20320
20387
|
relativePath: string()
|
|
20321
|
-
}), _void(), {
|
|
20388
|
+
}), _void(), {
|
|
20389
|
+
kind: "mutation",
|
|
20390
|
+
auth: "admin"
|
|
20391
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20392
|
+
kind: "mutation",
|
|
20393
|
+
auth: "admin"
|
|
20394
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20395
|
+
kind: "mutation",
|
|
20396
|
+
auth: "admin"
|
|
20397
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20398
|
+
kind: "mutation",
|
|
20399
|
+
auth: "admin"
|
|
20400
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20401
|
+
kind: "mutation",
|
|
20402
|
+
auth: "admin"
|
|
20403
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20404
|
+
kind: "mutation",
|
|
20405
|
+
auth: "admin"
|
|
20406
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20407
|
+
kind: "mutation",
|
|
20408
|
+
auth: "admin"
|
|
20409
|
+
});
|
|
20322
20410
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20323
20411
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20324
20412
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20576,7 +20664,8 @@ method(object({
|
|
|
20576
20664
|
access: "create"
|
|
20577
20665
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20578
20666
|
kind: "mutation",
|
|
20579
|
-
access: "view"
|
|
20667
|
+
access: "view",
|
|
20668
|
+
auth: "admin"
|
|
20580
20669
|
}), method(object({
|
|
20581
20670
|
/** Required — the user the assertion belongs to (verified). */
|
|
20582
20671
|
userId: string(),
|
|
@@ -20584,10 +20673,12 @@ method(object({
|
|
|
20584
20673
|
response: record(string(), unknown())
|
|
20585
20674
|
}), object({ verified: boolean() }), {
|
|
20586
20675
|
kind: "mutation",
|
|
20587
|
-
access: "view"
|
|
20676
|
+
access: "view",
|
|
20677
|
+
auth: "admin"
|
|
20588
20678
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20589
20679
|
kind: "mutation",
|
|
20590
|
-
access: "view"
|
|
20680
|
+
access: "view",
|
|
20681
|
+
auth: "admin"
|
|
20591
20682
|
}), method(object({
|
|
20592
20683
|
/** AuthenticationResponseJSON from the browser. */
|
|
20593
20684
|
response: record(string(), unknown()) }), object({
|
|
@@ -20595,7 +20686,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20595
20686
|
userId: string().nullable()
|
|
20596
20687
|
}), {
|
|
20597
20688
|
kind: "mutation",
|
|
20598
|
-
access: "view"
|
|
20689
|
+
access: "view",
|
|
20690
|
+
auth: "admin"
|
|
20599
20691
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20600
20692
|
userId: string(),
|
|
20601
20693
|
credentialId: string()
|
|
@@ -20767,7 +20859,19 @@ var VectorStatsResultSchema = object({
|
|
|
20767
20859
|
/** False when the backend ranks approximately. */
|
|
20768
20860
|
exact: boolean()
|
|
20769
20861
|
});
|
|
20770
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20862
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20863
|
+
kind: "mutation",
|
|
20864
|
+
auth: "admin"
|
|
20865
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20866
|
+
kind: "mutation",
|
|
20867
|
+
auth: "admin"
|
|
20868
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20869
|
+
kind: "mutation",
|
|
20870
|
+
auth: "admin"
|
|
20871
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20872
|
+
kind: "mutation",
|
|
20873
|
+
auth: "admin"
|
|
20874
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20771
20875
|
var ClipSchema = object({
|
|
20772
20876
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20773
20877
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23220,7 +23324,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23220
23324
|
sizeBytes: number(),
|
|
23221
23325
|
timestamp: number()
|
|
23222
23326
|
});
|
|
23223
|
-
method(
|
|
23327
|
+
method(object({
|
|
23328
|
+
/**
|
|
23329
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23330
|
+
*
|
|
23331
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23332
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23333
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23334
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23335
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23336
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23337
|
+
*
|
|
23338
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23339
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23340
|
+
*
|
|
23341
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23342
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23343
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23344
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23345
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23346
|
+
*/
|
|
23347
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
23224
23348
|
kind: "mutation",
|
|
23225
23349
|
auth: "admin"
|
|
23226
23350
|
}), method(object({
|
|
@@ -26156,8 +26280,10 @@ var PlateInfoSchema = object({
|
|
|
26156
26280
|
keyFrameMediaKey: string().optional(),
|
|
26157
26281
|
base64: string().optional(),
|
|
26158
26282
|
/**
|
|
26159
|
-
* Same crop as a data-plane URL
|
|
26160
|
-
* never inlines JPEG; `listPlates`
|
|
26283
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26284
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26285
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26286
|
+
* left at its `true` default.
|
|
26161
26287
|
*/
|
|
26162
26288
|
cropUrl: string().optional()
|
|
26163
26289
|
});
|
|
@@ -26177,14 +26303,34 @@ var PlateClusterSchema = object({
|
|
|
26177
26303
|
});
|
|
26178
26304
|
method(object({
|
|
26179
26305
|
deviceId: number().int().optional(),
|
|
26180
|
-
limit: number().int().positive().optional()
|
|
26306
|
+
limit: number().int().positive().optional(),
|
|
26307
|
+
/**
|
|
26308
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26309
|
+
* behaviour, kept so no caller breaks.
|
|
26310
|
+
*
|
|
26311
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26312
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26313
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26314
|
+
* metadata without them — and the browser then caches the images.
|
|
26315
|
+
*
|
|
26316
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26317
|
+
* plates were the one gallery list left without it.
|
|
26318
|
+
*
|
|
26319
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26320
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26321
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26322
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26323
|
+
*/
|
|
26324
|
+
includeCrops: boolean().optional()
|
|
26181
26325
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
26182
26326
|
deviceId: number().int(),
|
|
26183
26327
|
trackId: string()
|
|
26184
26328
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
26185
26329
|
text: string().min(1),
|
|
26186
26330
|
maxDistance: number().int().min(0).optional(),
|
|
26187
|
-
limit: number().int().positive().optional()
|
|
26331
|
+
limit: number().int().positive().optional(),
|
|
26332
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26333
|
+
includeCrops: boolean().optional()
|
|
26188
26334
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
26189
26335
|
maxDistance: number().int().min(0).optional(),
|
|
26190
26336
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -26198,7 +26344,13 @@ method(object({
|
|
|
26198
26344
|
}), method(object({ plateId: string() }), _void(), {
|
|
26199
26345
|
kind: "mutation",
|
|
26200
26346
|
auth: "admin"
|
|
26201
|
-
}), method(
|
|
26347
|
+
}), method(object({
|
|
26348
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26349
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26350
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26351
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26352
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26353
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
26202
26354
|
kind: "mutation",
|
|
26203
26355
|
auth: "admin"
|
|
26204
26356
|
}), method(object({
|
|
@@ -33977,6 +34129,12 @@ Object.freeze({
|
|
|
33977
34129
|
addonId: null,
|
|
33978
34130
|
access: "create"
|
|
33979
34131
|
},
|
|
34132
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
34133
|
+
capName: "pipeline-analytics",
|
|
34134
|
+
capScope: "device",
|
|
34135
|
+
addonId: null,
|
|
34136
|
+
access: "create"
|
|
34137
|
+
},
|
|
33980
34138
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33981
34139
|
capName: "pipeline-analytics",
|
|
33982
34140
|
capScope: "device",
|
|
@@ -34151,6 +34309,12 @@ Object.freeze({
|
|
|
34151
34309
|
addonId: null,
|
|
34152
34310
|
access: "view"
|
|
34153
34311
|
},
|
|
34312
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
34313
|
+
capName: "pipeline-analytics",
|
|
34314
|
+
capScope: "device",
|
|
34315
|
+
addonId: null,
|
|
34316
|
+
access: "view"
|
|
34317
|
+
},
|
|
34154
34318
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
34155
34319
|
capName: "pipeline-analytics",
|
|
34156
34320
|
capScope: "device",
|
|
@@ -34229,6 +34393,12 @@ Object.freeze({
|
|
|
34229
34393
|
addonId: null,
|
|
34230
34394
|
access: "create"
|
|
34231
34395
|
},
|
|
34396
|
+
"pipelineAnalytics.relocateMedia": {
|
|
34397
|
+
capName: "pipeline-analytics",
|
|
34398
|
+
capScope: "device",
|
|
34399
|
+
addonId: null,
|
|
34400
|
+
access: "create"
|
|
34401
|
+
},
|
|
34232
34402
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
34233
34403
|
capName: "pipeline-analytics",
|
|
34234
34404
|
capScope: "device",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-hikvision",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.36",
|
|
4
4
|
"description": "Hikvision camera device provider addon for CamStack — ISAPI over HTTP(S) with digest auth (snapshot, alarm stream, RTSP discovery)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|