@camstack/addon-provider-onvif 1.2.27 → 1.2.28
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
|
@@ -6633,7 +6633,7 @@ function method(input, output, options) {
|
|
|
6633
6633
|
input,
|
|
6634
6634
|
output,
|
|
6635
6635
|
kind: options?.kind ?? "query",
|
|
6636
|
-
auth: options
|
|
6636
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6637
6637
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6638
6638
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6639
6639
|
timeoutMs: options?.timeoutMs
|
|
@@ -6653,7 +6653,7 @@ function systemMethod(input, output, options) {
|
|
|
6653
6653
|
}
|
|
6654
6654
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6655
6655
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6656
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6656
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6657
6657
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6658
6658
|
DeviceType["Camera"] = "camera";
|
|
6659
6659
|
DeviceType["Hub"] = "hub";
|
|
@@ -6974,7 +6974,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
6974
6974
|
}({});
|
|
6975
6975
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
6976
6976
|
var VersionOutputSchema = object({ version: string() });
|
|
6977
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
6977
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
6978
6978
|
/**
|
|
6979
6979
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
6980
6980
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7600,24 +7600,6 @@ var RecordingRetentionSchema = object({
|
|
|
7600
7600
|
maxSizeGb: number().min(0).optional()
|
|
7601
7601
|
});
|
|
7602
7602
|
/**
|
|
7603
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7604
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7605
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7606
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7607
|
-
*
|
|
7608
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7609
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7610
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7611
|
-
* written with.
|
|
7612
|
-
*/
|
|
7613
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7614
|
-
"minimal",
|
|
7615
|
-
"low",
|
|
7616
|
-
"standard",
|
|
7617
|
-
"high",
|
|
7618
|
-
"max"
|
|
7619
|
-
]);
|
|
7620
|
-
/**
|
|
7621
7603
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7622
7604
|
*
|
|
7623
7605
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7625,7 +7607,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7625
7607
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7626
7608
|
*
|
|
7627
7609
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7628
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7610
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7611
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7612
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7613
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7614
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7629
7615
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7630
7616
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7631
7617
|
*/
|
|
@@ -7648,14 +7634,7 @@ var RecordingConfigSchema = object({
|
|
|
7648
7634
|
* "off" is the absence of a covering band, never a band value.
|
|
7649
7635
|
*/
|
|
7650
7636
|
bands: array(RecordingBandSchema).default([]),
|
|
7651
|
-
retention: RecordingRetentionSchema.optional()
|
|
7652
|
-
/**
|
|
7653
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7654
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7655
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7656
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7657
|
-
*/
|
|
7658
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7637
|
+
retention: RecordingRetentionSchema.optional()
|
|
7659
7638
|
}).strict();
|
|
7660
7639
|
/**
|
|
7661
7640
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7731,10 +7710,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7731
7710
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7732
7711
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7733
7712
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7734
|
-
var
|
|
7713
|
+
var RelocateMediaInputSchema = object({
|
|
7735
7714
|
toLocationId: string(),
|
|
7736
7715
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7737
|
-
})
|
|
7716
|
+
});
|
|
7717
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7738
7718
|
/** The independently selectable logical storage classes. `recordings`
|
|
7739
7719
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7740
7720
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8029,7 +8009,26 @@ var LabelDefinitionSchema = object({
|
|
|
8029
8009
|
description: string().optional(),
|
|
8030
8010
|
icon: string().optional()
|
|
8031
8011
|
});
|
|
8032
|
-
|
|
8012
|
+
/**
|
|
8013
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8014
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8015
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8016
|
+
* detection pipeline executor actually routes.
|
|
8017
|
+
*
|
|
8018
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8019
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8020
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8021
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8022
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8023
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8024
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8025
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8026
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8027
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8028
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8029
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8030
|
+
*/
|
|
8031
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8033
8032
|
mapping: record(string(), _enum([
|
|
8034
8033
|
"person",
|
|
8035
8034
|
"vehicle",
|
|
@@ -8234,7 +8233,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8234
8233
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8235
8234
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8236
8235
|
*/
|
|
8237
|
-
classMap:
|
|
8236
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8238
8237
|
});
|
|
8239
8238
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8240
8239
|
format: literal("openvino"),
|
|
@@ -8264,7 +8263,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8264
8263
|
"segmentation"
|
|
8265
8264
|
]),
|
|
8266
8265
|
faceAlignment: boolean().optional(),
|
|
8267
|
-
classMap:
|
|
8266
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8268
8267
|
});
|
|
8269
8268
|
var ConvertResultSchema = object({
|
|
8270
8269
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9127,7 +9126,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9127
9126
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9128
9127
|
sectionLabel: string().optional()
|
|
9129
9128
|
});
|
|
9130
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9129
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9131
9130
|
var AddonHttpRouteSchema = object({
|
|
9132
9131
|
method: _enum([
|
|
9133
9132
|
"GET",
|
|
@@ -9362,7 +9361,7 @@ var WidgetMetadataSchema = object({
|
|
|
9362
9361
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9363
9362
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9364
9363
|
});
|
|
9365
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9364
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9366
9365
|
/**
|
|
9367
9366
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9368
9367
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -10884,7 +10883,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
10884
10883
|
stepId: string(),
|
|
10885
10884
|
entry: ModelCatalogEntrySchema
|
|
10886
10885
|
});
|
|
10887
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
10886
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
10888
10887
|
/**
|
|
10889
10888
|
* Query filter for settings-store collections.
|
|
10890
10889
|
*/
|
|
@@ -10971,7 +10970,8 @@ method(object({
|
|
|
10971
10970
|
}), _void(), { kind: "mutation" }), method(object({
|
|
10972
10971
|
namespace: string().optional(),
|
|
10973
10972
|
collection: string(),
|
|
10974
|
-
filter: QueryFilterSchema.optional()
|
|
10973
|
+
filter: QueryFilterSchema.optional(),
|
|
10974
|
+
columns: array(string()).readonly().optional()
|
|
10975
10975
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
10976
10976
|
namespace: string().optional(),
|
|
10977
10977
|
collection: string(),
|
|
@@ -11034,46 +11034,87 @@ var EngineInfoSchema = object({
|
|
|
11034
11034
|
kind: _enum(["relational", "vector"]),
|
|
11035
11035
|
displayName: string()
|
|
11036
11036
|
});
|
|
11037
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11037
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11038
11038
|
namespace: string().optional(),
|
|
11039
11039
|
collection: string(),
|
|
11040
11040
|
key: string()
|
|
11041
|
-
}), unknown()), method(object({
|
|
11041
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11042
11042
|
namespace: string().optional(),
|
|
11043
11043
|
collection: string(),
|
|
11044
11044
|
key: string(),
|
|
11045
11045
|
value: unknown()
|
|
11046
|
-
}), _void(), {
|
|
11046
|
+
}), _void(), {
|
|
11047
|
+
kind: "mutation",
|
|
11048
|
+
auth: "admin"
|
|
11049
|
+
}), method(object({
|
|
11047
11050
|
namespace: string().optional(),
|
|
11048
11051
|
collection: string(),
|
|
11049
|
-
filter: QueryFilterSchema.optional()
|
|
11050
|
-
|
|
11052
|
+
filter: QueryFilterSchema.optional(),
|
|
11053
|
+
/**
|
|
11054
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11055
|
+
*
|
|
11056
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11057
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11058
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11059
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11060
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11061
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11062
|
+
*
|
|
11063
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11064
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11065
|
+
* interface the engine destructures from. The field existed on both
|
|
11066
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11067
|
+
* registered provider against `InferProvider<cap>` —
|
|
11068
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11069
|
+
*
|
|
11070
|
+
* It is declared here anyway, and must stay in step with
|
|
11071
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11072
|
+
* to be able to see that this call carries a projection.
|
|
11073
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11074
|
+
*/
|
|
11075
|
+
columns: array(string()).readonly().optional()
|
|
11076
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11051
11077
|
namespace: string().optional(),
|
|
11052
11078
|
collection: string(),
|
|
11053
11079
|
record: SettingsRecordSchema
|
|
11054
|
-
}), _void(), {
|
|
11080
|
+
}), _void(), {
|
|
11081
|
+
kind: "mutation",
|
|
11082
|
+
auth: "admin"
|
|
11083
|
+
}), method(object({
|
|
11055
11084
|
namespace: string().optional(),
|
|
11056
11085
|
collection: string(),
|
|
11057
11086
|
id: string(),
|
|
11058
11087
|
data: record(string(), unknown())
|
|
11059
|
-
}), _void(), {
|
|
11088
|
+
}), _void(), {
|
|
11089
|
+
kind: "mutation",
|
|
11090
|
+
auth: "admin"
|
|
11091
|
+
}), method(object({
|
|
11060
11092
|
namespace: string().optional(),
|
|
11061
11093
|
collection: string(),
|
|
11062
11094
|
key: string()
|
|
11063
|
-
}), _void(), {
|
|
11095
|
+
}), _void(), {
|
|
11096
|
+
kind: "mutation",
|
|
11097
|
+
auth: "admin"
|
|
11098
|
+
}), method(object({
|
|
11064
11099
|
namespace: string().optional(),
|
|
11065
11100
|
collection: string(),
|
|
11066
11101
|
filter: MutationFilterSchema
|
|
11067
|
-
}), object({ deleted: number().int() }), {
|
|
11102
|
+
}), object({ deleted: number().int() }), {
|
|
11103
|
+
kind: "mutation",
|
|
11104
|
+
auth: "admin"
|
|
11105
|
+
}), method(object({
|
|
11068
11106
|
namespace: string().optional(),
|
|
11069
11107
|
collection: string(),
|
|
11070
11108
|
filter: MutationFilterSchema,
|
|
11071
11109
|
data: record(string(), unknown())
|
|
11072
|
-
}), object({ updated: number().int() }), {
|
|
11110
|
+
}), object({ updated: number().int() }), {
|
|
11111
|
+
kind: "mutation",
|
|
11112
|
+
auth: "admin"
|
|
11113
|
+
}), method(object({
|
|
11073
11114
|
namespace: string().optional(),
|
|
11074
11115
|
collection: string(),
|
|
11075
11116
|
filter: QueryFilterSchema.optional()
|
|
11076
|
-
}), number()), method(object({
|
|
11117
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11077
11118
|
namespace: string().optional(),
|
|
11078
11119
|
collection: string(),
|
|
11079
11120
|
field: string(),
|
|
@@ -11083,15 +11124,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11083
11124
|
}), array(object({
|
|
11084
11125
|
bucket: number().int(),
|
|
11085
11126
|
count: number().int()
|
|
11086
|
-
})).readonly()), method(object({
|
|
11127
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11087
11128
|
namespace: string().optional(),
|
|
11088
11129
|
collection: string()
|
|
11089
|
-
}), boolean()), method(object({
|
|
11130
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11090
11131
|
namespace: string().optional(),
|
|
11091
11132
|
collection: string(),
|
|
11092
11133
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11093
11134
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11094
|
-
}), _void(), {
|
|
11135
|
+
}), _void(), {
|
|
11136
|
+
kind: "mutation",
|
|
11137
|
+
auth: "admin"
|
|
11138
|
+
});
|
|
11095
11139
|
/**
|
|
11096
11140
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11097
11141
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12274,7 +12318,7 @@ method(object({
|
|
|
12274
12318
|
crop: _instanceof(Uint8Array),
|
|
12275
12319
|
width: number(),
|
|
12276
12320
|
height: number()
|
|
12277
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12321
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12278
12322
|
/**
|
|
12279
12323
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12280
12324
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12567,19 +12611,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12567
12611
|
runtime: ManagedRuntimeConfigSchema,
|
|
12568
12612
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12569
12613
|
timeoutMs: number().int().positive().optional()
|
|
12570
|
-
}), LlmGenerateResultSchema, {
|
|
12614
|
+
}), LlmGenerateResultSchema, {
|
|
12615
|
+
kind: "mutation",
|
|
12616
|
+
auth: "admin"
|
|
12617
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12571
12618
|
kind: "mutation",
|
|
12572
12619
|
auth: "admin"
|
|
12573
12620
|
}), method(object({}), _void(), {
|
|
12574
12621
|
kind: "mutation",
|
|
12575
12622
|
auth: "admin"
|
|
12576
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12623
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12577
12624
|
kind: "mutation",
|
|
12578
12625
|
auth: "admin"
|
|
12579
12626
|
}), method(object({ file: string() }), _void(), {
|
|
12580
12627
|
kind: "mutation",
|
|
12581
12628
|
auth: "admin"
|
|
12582
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12629
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12583
12630
|
/**
|
|
12584
12631
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12585
12632
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16052,7 +16099,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16052
16099
|
*/
|
|
16053
16100
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16054
16101
|
});
|
|
16055
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16102
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16056
16103
|
/**
|
|
16057
16104
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16058
16105
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17247,6 +17294,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17247
17294
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17248
17295
|
kind: "mutation",
|
|
17249
17296
|
auth: "admin"
|
|
17297
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17298
|
+
kind: "mutation",
|
|
17299
|
+
auth: "admin"
|
|
17300
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17301
|
+
kind: "query",
|
|
17302
|
+
auth: "admin"
|
|
17303
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17304
|
+
kind: "mutation",
|
|
17305
|
+
auth: "admin"
|
|
17250
17306
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17251
17307
|
kind: "query",
|
|
17252
17308
|
auth: "admin"
|
|
@@ -17401,6 +17457,11 @@ object({
|
|
|
17401
17457
|
"jpeg"
|
|
17402
17458
|
])
|
|
17403
17459
|
});
|
|
17460
|
+
/**
|
|
17461
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17462
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17463
|
+
* other process or execution group.
|
|
17464
|
+
*/
|
|
17404
17465
|
var FrameRefSchema = object({
|
|
17405
17466
|
registryId: string().min(1),
|
|
17406
17467
|
id: string().min(1),
|
|
@@ -19670,7 +19731,7 @@ method(object({
|
|
|
19670
19731
|
* linking rather than produce an eternal token.
|
|
19671
19732
|
*/
|
|
19672
19733
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
19673
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
19734
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
19674
19735
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
19675
19736
|
providerId: string().min(1),
|
|
19676
19737
|
displayName: string().min(1),
|
|
@@ -19765,10 +19826,13 @@ var EvictResultSchema = object({
|
|
|
19765
19826
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
19766
19827
|
exhausted: boolean()
|
|
19767
19828
|
});
|
|
19768
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
19829
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
19769
19830
|
locationId: string(),
|
|
19770
19831
|
targetBytes: number().int().positive()
|
|
19771
|
-
}), EvictResultSchema, {
|
|
19832
|
+
}), EvictResultSchema, {
|
|
19833
|
+
kind: "mutation",
|
|
19834
|
+
auth: "admin"
|
|
19835
|
+
});
|
|
19772
19836
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
19773
19837
|
kind: "mutation",
|
|
19774
19838
|
auth: "admin"
|
|
@@ -19828,26 +19892,50 @@ var ReadChunkInputSchema = object({
|
|
|
19828
19892
|
length: number()
|
|
19829
19893
|
});
|
|
19830
19894
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
19831
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
19895
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
19832
19896
|
location: StorageLocationSchema,
|
|
19833
19897
|
relativePath: string()
|
|
19834
|
-
}), string()), method(object({
|
|
19898
|
+
}), string(), { auth: "admin" }), method(object({
|
|
19835
19899
|
location: StorageLocationSchema,
|
|
19836
19900
|
relativePath: string(),
|
|
19837
19901
|
data: _instanceof(Uint8Array)
|
|
19838
|
-
}), _void(), {
|
|
19902
|
+
}), _void(), {
|
|
19903
|
+
kind: "mutation",
|
|
19904
|
+
auth: "admin"
|
|
19905
|
+
}), method(object({
|
|
19839
19906
|
location: StorageLocationSchema,
|
|
19840
19907
|
relativePath: string()
|
|
19841
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
19908
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
19842
19909
|
location: StorageLocationSchema,
|
|
19843
19910
|
relativePath: string()
|
|
19844
|
-
}), boolean()), method(object({
|
|
19911
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
19845
19912
|
location: StorageLocationSchema,
|
|
19846
19913
|
prefix: string().optional()
|
|
19847
|
-
}), array(string()).readonly()), method(object({
|
|
19914
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
19848
19915
|
location: StorageLocationSchema,
|
|
19849
19916
|
relativePath: string()
|
|
19850
|
-
}), _void(), {
|
|
19917
|
+
}), _void(), {
|
|
19918
|
+
kind: "mutation",
|
|
19919
|
+
auth: "admin"
|
|
19920
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
19921
|
+
kind: "mutation",
|
|
19922
|
+
auth: "admin"
|
|
19923
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
19924
|
+
kind: "mutation",
|
|
19925
|
+
auth: "admin"
|
|
19926
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
19927
|
+
kind: "mutation",
|
|
19928
|
+
auth: "admin"
|
|
19929
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
19930
|
+
kind: "mutation",
|
|
19931
|
+
auth: "admin"
|
|
19932
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
19933
|
+
kind: "mutation",
|
|
19934
|
+
auth: "admin"
|
|
19935
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
19936
|
+
kind: "mutation",
|
|
19937
|
+
auth: "admin"
|
|
19938
|
+
});
|
|
19851
19939
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
19852
19940
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
19853
19941
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20105,7 +20193,8 @@ method(object({
|
|
|
20105
20193
|
access: "create"
|
|
20106
20194
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20107
20195
|
kind: "mutation",
|
|
20108
|
-
access: "view"
|
|
20196
|
+
access: "view",
|
|
20197
|
+
auth: "admin"
|
|
20109
20198
|
}), method(object({
|
|
20110
20199
|
/** Required — the user the assertion belongs to (verified). */
|
|
20111
20200
|
userId: string(),
|
|
@@ -20113,10 +20202,12 @@ method(object({
|
|
|
20113
20202
|
response: record(string(), unknown())
|
|
20114
20203
|
}), object({ verified: boolean() }), {
|
|
20115
20204
|
kind: "mutation",
|
|
20116
|
-
access: "view"
|
|
20205
|
+
access: "view",
|
|
20206
|
+
auth: "admin"
|
|
20117
20207
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20118
20208
|
kind: "mutation",
|
|
20119
|
-
access: "view"
|
|
20209
|
+
access: "view",
|
|
20210
|
+
auth: "admin"
|
|
20120
20211
|
}), method(object({
|
|
20121
20212
|
/** AuthenticationResponseJSON from the browser. */
|
|
20122
20213
|
response: record(string(), unknown()) }), object({
|
|
@@ -20124,7 +20215,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20124
20215
|
userId: string().nullable()
|
|
20125
20216
|
}), {
|
|
20126
20217
|
kind: "mutation",
|
|
20127
|
-
access: "view"
|
|
20218
|
+
access: "view",
|
|
20219
|
+
auth: "admin"
|
|
20128
20220
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20129
20221
|
userId: string(),
|
|
20130
20222
|
credentialId: string()
|
|
@@ -20296,7 +20388,19 @@ var VectorStatsResultSchema = object({
|
|
|
20296
20388
|
/** False when the backend ranks approximately. */
|
|
20297
20389
|
exact: boolean()
|
|
20298
20390
|
});
|
|
20299
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20391
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20392
|
+
kind: "mutation",
|
|
20393
|
+
auth: "admin"
|
|
20394
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20395
|
+
kind: "mutation",
|
|
20396
|
+
auth: "admin"
|
|
20397
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20398
|
+
kind: "mutation",
|
|
20399
|
+
auth: "admin"
|
|
20400
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20401
|
+
kind: "mutation",
|
|
20402
|
+
auth: "admin"
|
|
20403
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20300
20404
|
var ClipSchema = object({
|
|
20301
20405
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20302
20406
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -22019,7 +22123,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
22019
22123
|
sizeBytes: number(),
|
|
22020
22124
|
timestamp: number()
|
|
22021
22125
|
});
|
|
22022
|
-
method(
|
|
22126
|
+
method(object({
|
|
22127
|
+
/**
|
|
22128
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
22129
|
+
*
|
|
22130
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
22131
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
22132
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
22133
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
22134
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
22135
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
22136
|
+
*
|
|
22137
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
22138
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
22139
|
+
*
|
|
22140
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
22141
|
+
* next train** — the hub router validates cap inputs against its own
|
|
22142
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
22143
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
22144
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
22145
|
+
*/
|
|
22146
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
22023
22147
|
kind: "mutation",
|
|
22024
22148
|
auth: "admin"
|
|
22025
22149
|
}), method(object({
|
|
@@ -24166,8 +24290,10 @@ var PlateInfoSchema = object({
|
|
|
24166
24290
|
keyFrameMediaKey: string().optional(),
|
|
24167
24291
|
base64: string().optional(),
|
|
24168
24292
|
/**
|
|
24169
|
-
* Same crop as a data-plane URL
|
|
24170
|
-
* never inlines JPEG; `listPlates`
|
|
24293
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
24294
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
24295
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
24296
|
+
* left at its `true` default.
|
|
24171
24297
|
*/
|
|
24172
24298
|
cropUrl: string().optional()
|
|
24173
24299
|
});
|
|
@@ -24187,14 +24313,34 @@ var PlateClusterSchema = object({
|
|
|
24187
24313
|
});
|
|
24188
24314
|
method(object({
|
|
24189
24315
|
deviceId: number().int().optional(),
|
|
24190
|
-
limit: number().int().positive().optional()
|
|
24316
|
+
limit: number().int().positive().optional(),
|
|
24317
|
+
/**
|
|
24318
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
24319
|
+
* behaviour, kept so no caller breaks.
|
|
24320
|
+
*
|
|
24321
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
24322
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
24323
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
24324
|
+
* metadata without them — and the browser then caches the images.
|
|
24325
|
+
*
|
|
24326
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
24327
|
+
* plates were the one gallery list left without it.
|
|
24328
|
+
*
|
|
24329
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
24330
|
+
* next train.** The hub router validates cap inputs against its own
|
|
24331
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
24332
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
24333
|
+
*/
|
|
24334
|
+
includeCrops: boolean().optional()
|
|
24191
24335
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
24192
24336
|
deviceId: number().int(),
|
|
24193
24337
|
trackId: string()
|
|
24194
24338
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
24195
24339
|
text: string().min(1),
|
|
24196
24340
|
maxDistance: number().int().min(0).optional(),
|
|
24197
|
-
limit: number().int().positive().optional()
|
|
24341
|
+
limit: number().int().positive().optional(),
|
|
24342
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
24343
|
+
includeCrops: boolean().optional()
|
|
24198
24344
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
24199
24345
|
maxDistance: number().int().min(0).optional(),
|
|
24200
24346
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -24208,7 +24354,13 @@ method(object({
|
|
|
24208
24354
|
}), method(object({ plateId: string() }), _void(), {
|
|
24209
24355
|
kind: "mutation",
|
|
24210
24356
|
auth: "admin"
|
|
24211
|
-
}), method(
|
|
24357
|
+
}), method(object({
|
|
24358
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
24359
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
24360
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
24361
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
24362
|
+
* resolves to `false` and is exactly the intended default. */
|
|
24363
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
24212
24364
|
kind: "mutation",
|
|
24213
24365
|
auth: "admin"
|
|
24214
24366
|
}), method(object({
|
|
@@ -30037,6 +30189,12 @@ Object.freeze({
|
|
|
30037
30189
|
addonId: null,
|
|
30038
30190
|
access: "create"
|
|
30039
30191
|
},
|
|
30192
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
30193
|
+
capName: "pipeline-analytics",
|
|
30194
|
+
capScope: "device",
|
|
30195
|
+
addonId: null,
|
|
30196
|
+
access: "create"
|
|
30197
|
+
},
|
|
30040
30198
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
30041
30199
|
capName: "pipeline-analytics",
|
|
30042
30200
|
capScope: "device",
|
|
@@ -30211,6 +30369,12 @@ Object.freeze({
|
|
|
30211
30369
|
addonId: null,
|
|
30212
30370
|
access: "view"
|
|
30213
30371
|
},
|
|
30372
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
30373
|
+
capName: "pipeline-analytics",
|
|
30374
|
+
capScope: "device",
|
|
30375
|
+
addonId: null,
|
|
30376
|
+
access: "view"
|
|
30377
|
+
},
|
|
30214
30378
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
30215
30379
|
capName: "pipeline-analytics",
|
|
30216
30380
|
capScope: "device",
|
|
@@ -30289,6 +30453,12 @@ Object.freeze({
|
|
|
30289
30453
|
addonId: null,
|
|
30290
30454
|
access: "create"
|
|
30291
30455
|
},
|
|
30456
|
+
"pipelineAnalytics.relocateMedia": {
|
|
30457
|
+
capName: "pipeline-analytics",
|
|
30458
|
+
capScope: "device",
|
|
30459
|
+
addonId: null,
|
|
30460
|
+
access: "create"
|
|
30461
|
+
},
|
|
30292
30462
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
30293
30463
|
capName: "pipeline-analytics",
|
|
30294
30464
|
capScope: "device",
|
package/dist/addon.mjs
CHANGED
|
@@ -6634,7 +6634,7 @@ function method(input, output, options) {
|
|
|
6634
6634
|
input,
|
|
6635
6635
|
output,
|
|
6636
6636
|
kind: options?.kind ?? "query",
|
|
6637
|
-
auth: options
|
|
6637
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6638
6638
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6639
6639
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6640
6640
|
timeoutMs: options?.timeoutMs
|
|
@@ -6654,7 +6654,7 @@ function systemMethod(input, output, options) {
|
|
|
6654
6654
|
}
|
|
6655
6655
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6656
6656
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6657
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6657
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6658
6658
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6659
6659
|
DeviceType["Camera"] = "camera";
|
|
6660
6660
|
DeviceType["Hub"] = "hub";
|
|
@@ -6975,7 +6975,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
6975
6975
|
}({});
|
|
6976
6976
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
6977
6977
|
var VersionOutputSchema = object({ version: string() });
|
|
6978
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
6978
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
6979
6979
|
/**
|
|
6980
6980
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
6981
6981
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7601,24 +7601,6 @@ var RecordingRetentionSchema = object({
|
|
|
7601
7601
|
maxSizeGb: number().min(0).optional()
|
|
7602
7602
|
});
|
|
7603
7603
|
/**
|
|
7604
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7605
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7606
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7607
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7608
|
-
*
|
|
7609
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7610
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7611
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7612
|
-
* written with.
|
|
7613
|
-
*/
|
|
7614
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7615
|
-
"minimal",
|
|
7616
|
-
"low",
|
|
7617
|
-
"standard",
|
|
7618
|
-
"high",
|
|
7619
|
-
"max"
|
|
7620
|
-
]);
|
|
7621
|
-
/**
|
|
7622
7604
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7623
7605
|
*
|
|
7624
7606
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7626,7 +7608,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7626
7608
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7627
7609
|
*
|
|
7628
7610
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7629
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7611
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7612
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7613
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7614
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7615
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7630
7616
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7631
7617
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7632
7618
|
*/
|
|
@@ -7649,14 +7635,7 @@ var RecordingConfigSchema = object({
|
|
|
7649
7635
|
* "off" is the absence of a covering band, never a band value.
|
|
7650
7636
|
*/
|
|
7651
7637
|
bands: array(RecordingBandSchema).default([]),
|
|
7652
|
-
retention: RecordingRetentionSchema.optional()
|
|
7653
|
-
/**
|
|
7654
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7655
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7656
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7657
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7658
|
-
*/
|
|
7659
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7638
|
+
retention: RecordingRetentionSchema.optional()
|
|
7660
7639
|
}).strict();
|
|
7661
7640
|
/**
|
|
7662
7641
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7732,10 +7711,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7732
7711
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7733
7712
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7734
7713
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7735
|
-
var
|
|
7714
|
+
var RelocateMediaInputSchema = object({
|
|
7736
7715
|
toLocationId: string(),
|
|
7737
7716
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7738
|
-
})
|
|
7717
|
+
});
|
|
7718
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7739
7719
|
/** The independently selectable logical storage classes. `recordings`
|
|
7740
7720
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7741
7721
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8030,7 +8010,26 @@ var LabelDefinitionSchema = object({
|
|
|
8030
8010
|
description: string().optional(),
|
|
8031
8011
|
icon: string().optional()
|
|
8032
8012
|
});
|
|
8033
|
-
|
|
8013
|
+
/**
|
|
8014
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8015
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8016
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8017
|
+
* detection pipeline executor actually routes.
|
|
8018
|
+
*
|
|
8019
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8020
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8021
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8022
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8023
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8024
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8025
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8026
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8027
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8028
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8029
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8030
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8031
|
+
*/
|
|
8032
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8034
8033
|
mapping: record(string(), _enum([
|
|
8035
8034
|
"person",
|
|
8036
8035
|
"vehicle",
|
|
@@ -8235,7 +8234,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8235
8234
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8236
8235
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8237
8236
|
*/
|
|
8238
|
-
classMap:
|
|
8237
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8239
8238
|
});
|
|
8240
8239
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8241
8240
|
format: literal("openvino"),
|
|
@@ -8265,7 +8264,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8265
8264
|
"segmentation"
|
|
8266
8265
|
]),
|
|
8267
8266
|
faceAlignment: boolean().optional(),
|
|
8268
|
-
classMap:
|
|
8267
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8269
8268
|
});
|
|
8270
8269
|
var ConvertResultSchema = object({
|
|
8271
8270
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9128,7 +9127,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9128
9127
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9129
9128
|
sectionLabel: string().optional()
|
|
9130
9129
|
});
|
|
9131
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9130
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9132
9131
|
var AddonHttpRouteSchema = object({
|
|
9133
9132
|
method: _enum([
|
|
9134
9133
|
"GET",
|
|
@@ -9363,7 +9362,7 @@ var WidgetMetadataSchema = object({
|
|
|
9363
9362
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9364
9363
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9365
9364
|
});
|
|
9366
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9365
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9367
9366
|
/**
|
|
9368
9367
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9369
9368
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -10885,7 +10884,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
10885
10884
|
stepId: string(),
|
|
10886
10885
|
entry: ModelCatalogEntrySchema
|
|
10887
10886
|
});
|
|
10888
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
10887
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
10889
10888
|
/**
|
|
10890
10889
|
* Query filter for settings-store collections.
|
|
10891
10890
|
*/
|
|
@@ -10972,7 +10971,8 @@ method(object({
|
|
|
10972
10971
|
}), _void(), { kind: "mutation" }), method(object({
|
|
10973
10972
|
namespace: string().optional(),
|
|
10974
10973
|
collection: string(),
|
|
10975
|
-
filter: QueryFilterSchema.optional()
|
|
10974
|
+
filter: QueryFilterSchema.optional(),
|
|
10975
|
+
columns: array(string()).readonly().optional()
|
|
10976
10976
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
10977
10977
|
namespace: string().optional(),
|
|
10978
10978
|
collection: string(),
|
|
@@ -11035,46 +11035,87 @@ var EngineInfoSchema = object({
|
|
|
11035
11035
|
kind: _enum(["relational", "vector"]),
|
|
11036
11036
|
displayName: string()
|
|
11037
11037
|
});
|
|
11038
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11038
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11039
11039
|
namespace: string().optional(),
|
|
11040
11040
|
collection: string(),
|
|
11041
11041
|
key: string()
|
|
11042
|
-
}), unknown()), method(object({
|
|
11042
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11043
11043
|
namespace: string().optional(),
|
|
11044
11044
|
collection: string(),
|
|
11045
11045
|
key: string(),
|
|
11046
11046
|
value: unknown()
|
|
11047
|
-
}), _void(), {
|
|
11047
|
+
}), _void(), {
|
|
11048
|
+
kind: "mutation",
|
|
11049
|
+
auth: "admin"
|
|
11050
|
+
}), method(object({
|
|
11048
11051
|
namespace: string().optional(),
|
|
11049
11052
|
collection: string(),
|
|
11050
|
-
filter: QueryFilterSchema.optional()
|
|
11051
|
-
|
|
11053
|
+
filter: QueryFilterSchema.optional(),
|
|
11054
|
+
/**
|
|
11055
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11056
|
+
*
|
|
11057
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11058
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11059
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11060
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11061
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11062
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11063
|
+
*
|
|
11064
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11065
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11066
|
+
* interface the engine destructures from. The field existed on both
|
|
11067
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11068
|
+
* registered provider against `InferProvider<cap>` —
|
|
11069
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11070
|
+
*
|
|
11071
|
+
* It is declared here anyway, and must stay in step with
|
|
11072
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11073
|
+
* to be able to see that this call carries a projection.
|
|
11074
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11075
|
+
*/
|
|
11076
|
+
columns: array(string()).readonly().optional()
|
|
11077
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11052
11078
|
namespace: string().optional(),
|
|
11053
11079
|
collection: string(),
|
|
11054
11080
|
record: SettingsRecordSchema
|
|
11055
|
-
}), _void(), {
|
|
11081
|
+
}), _void(), {
|
|
11082
|
+
kind: "mutation",
|
|
11083
|
+
auth: "admin"
|
|
11084
|
+
}), method(object({
|
|
11056
11085
|
namespace: string().optional(),
|
|
11057
11086
|
collection: string(),
|
|
11058
11087
|
id: string(),
|
|
11059
11088
|
data: record(string(), unknown())
|
|
11060
|
-
}), _void(), {
|
|
11089
|
+
}), _void(), {
|
|
11090
|
+
kind: "mutation",
|
|
11091
|
+
auth: "admin"
|
|
11092
|
+
}), method(object({
|
|
11061
11093
|
namespace: string().optional(),
|
|
11062
11094
|
collection: string(),
|
|
11063
11095
|
key: string()
|
|
11064
|
-
}), _void(), {
|
|
11096
|
+
}), _void(), {
|
|
11097
|
+
kind: "mutation",
|
|
11098
|
+
auth: "admin"
|
|
11099
|
+
}), method(object({
|
|
11065
11100
|
namespace: string().optional(),
|
|
11066
11101
|
collection: string(),
|
|
11067
11102
|
filter: MutationFilterSchema
|
|
11068
|
-
}), object({ deleted: number().int() }), {
|
|
11103
|
+
}), object({ deleted: number().int() }), {
|
|
11104
|
+
kind: "mutation",
|
|
11105
|
+
auth: "admin"
|
|
11106
|
+
}), method(object({
|
|
11069
11107
|
namespace: string().optional(),
|
|
11070
11108
|
collection: string(),
|
|
11071
11109
|
filter: MutationFilterSchema,
|
|
11072
11110
|
data: record(string(), unknown())
|
|
11073
|
-
}), object({ updated: number().int() }), {
|
|
11111
|
+
}), object({ updated: number().int() }), {
|
|
11112
|
+
kind: "mutation",
|
|
11113
|
+
auth: "admin"
|
|
11114
|
+
}), method(object({
|
|
11074
11115
|
namespace: string().optional(),
|
|
11075
11116
|
collection: string(),
|
|
11076
11117
|
filter: QueryFilterSchema.optional()
|
|
11077
|
-
}), number()), method(object({
|
|
11118
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11078
11119
|
namespace: string().optional(),
|
|
11079
11120
|
collection: string(),
|
|
11080
11121
|
field: string(),
|
|
@@ -11084,15 +11125,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11084
11125
|
}), array(object({
|
|
11085
11126
|
bucket: number().int(),
|
|
11086
11127
|
count: number().int()
|
|
11087
|
-
})).readonly()), method(object({
|
|
11128
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11088
11129
|
namespace: string().optional(),
|
|
11089
11130
|
collection: string()
|
|
11090
|
-
}), boolean()), method(object({
|
|
11131
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11091
11132
|
namespace: string().optional(),
|
|
11092
11133
|
collection: string(),
|
|
11093
11134
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11094
11135
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11095
|
-
}), _void(), {
|
|
11136
|
+
}), _void(), {
|
|
11137
|
+
kind: "mutation",
|
|
11138
|
+
auth: "admin"
|
|
11139
|
+
});
|
|
11096
11140
|
/**
|
|
11097
11141
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11098
11142
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12275,7 +12319,7 @@ method(object({
|
|
|
12275
12319
|
crop: _instanceof(Uint8Array),
|
|
12276
12320
|
width: number(),
|
|
12277
12321
|
height: number()
|
|
12278
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12322
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12279
12323
|
/**
|
|
12280
12324
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12281
12325
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12568,19 +12612,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12568
12612
|
runtime: ManagedRuntimeConfigSchema,
|
|
12569
12613
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12570
12614
|
timeoutMs: number().int().positive().optional()
|
|
12571
|
-
}), LlmGenerateResultSchema, {
|
|
12615
|
+
}), LlmGenerateResultSchema, {
|
|
12616
|
+
kind: "mutation",
|
|
12617
|
+
auth: "admin"
|
|
12618
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12572
12619
|
kind: "mutation",
|
|
12573
12620
|
auth: "admin"
|
|
12574
12621
|
}), method(object({}), _void(), {
|
|
12575
12622
|
kind: "mutation",
|
|
12576
12623
|
auth: "admin"
|
|
12577
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12624
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12578
12625
|
kind: "mutation",
|
|
12579
12626
|
auth: "admin"
|
|
12580
12627
|
}), method(object({ file: string() }), _void(), {
|
|
12581
12628
|
kind: "mutation",
|
|
12582
12629
|
auth: "admin"
|
|
12583
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12630
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12584
12631
|
/**
|
|
12585
12632
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12586
12633
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16053,7 +16100,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16053
16100
|
*/
|
|
16054
16101
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16055
16102
|
});
|
|
16056
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16103
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16057
16104
|
/**
|
|
16058
16105
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16059
16106
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17248,6 +17295,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17248
17295
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17249
17296
|
kind: "mutation",
|
|
17250
17297
|
auth: "admin"
|
|
17298
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17299
|
+
kind: "mutation",
|
|
17300
|
+
auth: "admin"
|
|
17301
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17302
|
+
kind: "query",
|
|
17303
|
+
auth: "admin"
|
|
17304
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17305
|
+
kind: "mutation",
|
|
17306
|
+
auth: "admin"
|
|
17251
17307
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17252
17308
|
kind: "query",
|
|
17253
17309
|
auth: "admin"
|
|
@@ -17402,6 +17458,11 @@ object({
|
|
|
17402
17458
|
"jpeg"
|
|
17403
17459
|
])
|
|
17404
17460
|
});
|
|
17461
|
+
/**
|
|
17462
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17463
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17464
|
+
* other process or execution group.
|
|
17465
|
+
*/
|
|
17405
17466
|
var FrameRefSchema = object({
|
|
17406
17467
|
registryId: string().min(1),
|
|
17407
17468
|
id: string().min(1),
|
|
@@ -19671,7 +19732,7 @@ method(object({
|
|
|
19671
19732
|
* linking rather than produce an eternal token.
|
|
19672
19733
|
*/
|
|
19673
19734
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
19674
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
19735
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
19675
19736
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
19676
19737
|
providerId: string().min(1),
|
|
19677
19738
|
displayName: string().min(1),
|
|
@@ -19766,10 +19827,13 @@ var EvictResultSchema = object({
|
|
|
19766
19827
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
19767
19828
|
exhausted: boolean()
|
|
19768
19829
|
});
|
|
19769
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
19830
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
19770
19831
|
locationId: string(),
|
|
19771
19832
|
targetBytes: number().int().positive()
|
|
19772
|
-
}), EvictResultSchema, {
|
|
19833
|
+
}), EvictResultSchema, {
|
|
19834
|
+
kind: "mutation",
|
|
19835
|
+
auth: "admin"
|
|
19836
|
+
});
|
|
19773
19837
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
19774
19838
|
kind: "mutation",
|
|
19775
19839
|
auth: "admin"
|
|
@@ -19829,26 +19893,50 @@ var ReadChunkInputSchema = object({
|
|
|
19829
19893
|
length: number()
|
|
19830
19894
|
});
|
|
19831
19895
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
19832
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
19896
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
19833
19897
|
location: StorageLocationSchema,
|
|
19834
19898
|
relativePath: string()
|
|
19835
|
-
}), string()), method(object({
|
|
19899
|
+
}), string(), { auth: "admin" }), method(object({
|
|
19836
19900
|
location: StorageLocationSchema,
|
|
19837
19901
|
relativePath: string(),
|
|
19838
19902
|
data: _instanceof(Uint8Array)
|
|
19839
|
-
}), _void(), {
|
|
19903
|
+
}), _void(), {
|
|
19904
|
+
kind: "mutation",
|
|
19905
|
+
auth: "admin"
|
|
19906
|
+
}), method(object({
|
|
19840
19907
|
location: StorageLocationSchema,
|
|
19841
19908
|
relativePath: string()
|
|
19842
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
19909
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
19843
19910
|
location: StorageLocationSchema,
|
|
19844
19911
|
relativePath: string()
|
|
19845
|
-
}), boolean()), method(object({
|
|
19912
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
19846
19913
|
location: StorageLocationSchema,
|
|
19847
19914
|
prefix: string().optional()
|
|
19848
|
-
}), array(string()).readonly()), method(object({
|
|
19915
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
19849
19916
|
location: StorageLocationSchema,
|
|
19850
19917
|
relativePath: string()
|
|
19851
|
-
}), _void(), {
|
|
19918
|
+
}), _void(), {
|
|
19919
|
+
kind: "mutation",
|
|
19920
|
+
auth: "admin"
|
|
19921
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
19922
|
+
kind: "mutation",
|
|
19923
|
+
auth: "admin"
|
|
19924
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
19925
|
+
kind: "mutation",
|
|
19926
|
+
auth: "admin"
|
|
19927
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
19928
|
+
kind: "mutation",
|
|
19929
|
+
auth: "admin"
|
|
19930
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
19931
|
+
kind: "mutation",
|
|
19932
|
+
auth: "admin"
|
|
19933
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
19934
|
+
kind: "mutation",
|
|
19935
|
+
auth: "admin"
|
|
19936
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
19937
|
+
kind: "mutation",
|
|
19938
|
+
auth: "admin"
|
|
19939
|
+
});
|
|
19852
19940
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
19853
19941
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
19854
19942
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20106,7 +20194,8 @@ method(object({
|
|
|
20106
20194
|
access: "create"
|
|
20107
20195
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20108
20196
|
kind: "mutation",
|
|
20109
|
-
access: "view"
|
|
20197
|
+
access: "view",
|
|
20198
|
+
auth: "admin"
|
|
20110
20199
|
}), method(object({
|
|
20111
20200
|
/** Required — the user the assertion belongs to (verified). */
|
|
20112
20201
|
userId: string(),
|
|
@@ -20114,10 +20203,12 @@ method(object({
|
|
|
20114
20203
|
response: record(string(), unknown())
|
|
20115
20204
|
}), object({ verified: boolean() }), {
|
|
20116
20205
|
kind: "mutation",
|
|
20117
|
-
access: "view"
|
|
20206
|
+
access: "view",
|
|
20207
|
+
auth: "admin"
|
|
20118
20208
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20119
20209
|
kind: "mutation",
|
|
20120
|
-
access: "view"
|
|
20210
|
+
access: "view",
|
|
20211
|
+
auth: "admin"
|
|
20121
20212
|
}), method(object({
|
|
20122
20213
|
/** AuthenticationResponseJSON from the browser. */
|
|
20123
20214
|
response: record(string(), unknown()) }), object({
|
|
@@ -20125,7 +20216,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20125
20216
|
userId: string().nullable()
|
|
20126
20217
|
}), {
|
|
20127
20218
|
kind: "mutation",
|
|
20128
|
-
access: "view"
|
|
20219
|
+
access: "view",
|
|
20220
|
+
auth: "admin"
|
|
20129
20221
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20130
20222
|
userId: string(),
|
|
20131
20223
|
credentialId: string()
|
|
@@ -20297,7 +20389,19 @@ var VectorStatsResultSchema = object({
|
|
|
20297
20389
|
/** False when the backend ranks approximately. */
|
|
20298
20390
|
exact: boolean()
|
|
20299
20391
|
});
|
|
20300
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20392
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20393
|
+
kind: "mutation",
|
|
20394
|
+
auth: "admin"
|
|
20395
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20396
|
+
kind: "mutation",
|
|
20397
|
+
auth: "admin"
|
|
20398
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20399
|
+
kind: "mutation",
|
|
20400
|
+
auth: "admin"
|
|
20401
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20402
|
+
kind: "mutation",
|
|
20403
|
+
auth: "admin"
|
|
20404
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20301
20405
|
var ClipSchema = object({
|
|
20302
20406
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20303
20407
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -22020,7 +22124,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
22020
22124
|
sizeBytes: number(),
|
|
22021
22125
|
timestamp: number()
|
|
22022
22126
|
});
|
|
22023
|
-
method(
|
|
22127
|
+
method(object({
|
|
22128
|
+
/**
|
|
22129
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
22130
|
+
*
|
|
22131
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
22132
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
22133
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
22134
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
22135
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
22136
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
22137
|
+
*
|
|
22138
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
22139
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
22140
|
+
*
|
|
22141
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
22142
|
+
* next train** — the hub router validates cap inputs against its own
|
|
22143
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
22144
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
22145
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
22146
|
+
*/
|
|
22147
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
22024
22148
|
kind: "mutation",
|
|
22025
22149
|
auth: "admin"
|
|
22026
22150
|
}), method(object({
|
|
@@ -24167,8 +24291,10 @@ var PlateInfoSchema = object({
|
|
|
24167
24291
|
keyFrameMediaKey: string().optional(),
|
|
24168
24292
|
base64: string().optional(),
|
|
24169
24293
|
/**
|
|
24170
|
-
* Same crop as a data-plane URL
|
|
24171
|
-
* never inlines JPEG; `listPlates`
|
|
24294
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
24295
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
24296
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
24297
|
+
* left at its `true` default.
|
|
24172
24298
|
*/
|
|
24173
24299
|
cropUrl: string().optional()
|
|
24174
24300
|
});
|
|
@@ -24188,14 +24314,34 @@ var PlateClusterSchema = object({
|
|
|
24188
24314
|
});
|
|
24189
24315
|
method(object({
|
|
24190
24316
|
deviceId: number().int().optional(),
|
|
24191
|
-
limit: number().int().positive().optional()
|
|
24317
|
+
limit: number().int().positive().optional(),
|
|
24318
|
+
/**
|
|
24319
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
24320
|
+
* behaviour, kept so no caller breaks.
|
|
24321
|
+
*
|
|
24322
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
24323
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
24324
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
24325
|
+
* metadata without them — and the browser then caches the images.
|
|
24326
|
+
*
|
|
24327
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
24328
|
+
* plates were the one gallery list left without it.
|
|
24329
|
+
*
|
|
24330
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
24331
|
+
* next train.** The hub router validates cap inputs against its own
|
|
24332
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
24333
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
24334
|
+
*/
|
|
24335
|
+
includeCrops: boolean().optional()
|
|
24192
24336
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
24193
24337
|
deviceId: number().int(),
|
|
24194
24338
|
trackId: string()
|
|
24195
24339
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
24196
24340
|
text: string().min(1),
|
|
24197
24341
|
maxDistance: number().int().min(0).optional(),
|
|
24198
|
-
limit: number().int().positive().optional()
|
|
24342
|
+
limit: number().int().positive().optional(),
|
|
24343
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
24344
|
+
includeCrops: boolean().optional()
|
|
24199
24345
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
24200
24346
|
maxDistance: number().int().min(0).optional(),
|
|
24201
24347
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -24209,7 +24355,13 @@ method(object({
|
|
|
24209
24355
|
}), method(object({ plateId: string() }), _void(), {
|
|
24210
24356
|
kind: "mutation",
|
|
24211
24357
|
auth: "admin"
|
|
24212
|
-
}), method(
|
|
24358
|
+
}), method(object({
|
|
24359
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
24360
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
24361
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
24362
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
24363
|
+
* resolves to `false` and is exactly the intended default. */
|
|
24364
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
24213
24365
|
kind: "mutation",
|
|
24214
24366
|
auth: "admin"
|
|
24215
24367
|
}), method(object({
|
|
@@ -30038,6 +30190,12 @@ Object.freeze({
|
|
|
30038
30190
|
addonId: null,
|
|
30039
30191
|
access: "create"
|
|
30040
30192
|
},
|
|
30193
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
30194
|
+
capName: "pipeline-analytics",
|
|
30195
|
+
capScope: "device",
|
|
30196
|
+
addonId: null,
|
|
30197
|
+
access: "create"
|
|
30198
|
+
},
|
|
30041
30199
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
30042
30200
|
capName: "pipeline-analytics",
|
|
30043
30201
|
capScope: "device",
|
|
@@ -30212,6 +30370,12 @@ Object.freeze({
|
|
|
30212
30370
|
addonId: null,
|
|
30213
30371
|
access: "view"
|
|
30214
30372
|
},
|
|
30373
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
30374
|
+
capName: "pipeline-analytics",
|
|
30375
|
+
capScope: "device",
|
|
30376
|
+
addonId: null,
|
|
30377
|
+
access: "view"
|
|
30378
|
+
},
|
|
30215
30379
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
30216
30380
|
capName: "pipeline-analytics",
|
|
30217
30381
|
capScope: "device",
|
|
@@ -30290,6 +30454,12 @@ Object.freeze({
|
|
|
30290
30454
|
addonId: null,
|
|
30291
30455
|
access: "create"
|
|
30292
30456
|
},
|
|
30457
|
+
"pipelineAnalytics.relocateMedia": {
|
|
30458
|
+
capName: "pipeline-analytics",
|
|
30459
|
+
capScope: "device",
|
|
30460
|
+
addonId: null,
|
|
30461
|
+
access: "create"
|
|
30462
|
+
},
|
|
30293
30463
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
30294
30464
|
capName: "pipeline-analytics",
|
|
30295
30465
|
capScope: "device",
|