@camstack/addon-provider-homematic 1.2.29 → 1.2.30
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
|
@@ -6639,7 +6639,7 @@ function method(input, output, options) {
|
|
|
6639
6639
|
input,
|
|
6640
6640
|
output,
|
|
6641
6641
|
kind: options?.kind ?? "query",
|
|
6642
|
-
auth: options
|
|
6642
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6643
6643
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6644
6644
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6645
6645
|
timeoutMs: options?.timeoutMs
|
|
@@ -6663,7 +6663,7 @@ function event(data) {
|
|
|
6663
6663
|
}
|
|
6664
6664
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6665
6665
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6666
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6666
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6667
6667
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6668
6668
|
DeviceType["Camera"] = "camera";
|
|
6669
6669
|
DeviceType["Hub"] = "hub";
|
|
@@ -6984,7 +6984,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
6984
6984
|
}({});
|
|
6985
6985
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
6986
6986
|
var VersionOutputSchema = object({ version: string() });
|
|
6987
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
6987
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
6988
6988
|
/**
|
|
6989
6989
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
6990
6990
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7610,24 +7610,6 @@ var RecordingRetentionSchema = object({
|
|
|
7610
7610
|
maxSizeGb: number().min(0).optional()
|
|
7611
7611
|
});
|
|
7612
7612
|
/**
|
|
7613
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7614
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7615
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7616
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7617
|
-
*
|
|
7618
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7619
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7620
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7621
|
-
* written with.
|
|
7622
|
-
*/
|
|
7623
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7624
|
-
"minimal",
|
|
7625
|
-
"low",
|
|
7626
|
-
"standard",
|
|
7627
|
-
"high",
|
|
7628
|
-
"max"
|
|
7629
|
-
]);
|
|
7630
|
-
/**
|
|
7631
7613
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7632
7614
|
*
|
|
7633
7615
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7635,7 +7617,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7635
7617
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7636
7618
|
*
|
|
7637
7619
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7638
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7620
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7621
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7622
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7623
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7624
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7639
7625
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7640
7626
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7641
7627
|
*/
|
|
@@ -7658,14 +7644,7 @@ var RecordingConfigSchema = object({
|
|
|
7658
7644
|
* "off" is the absence of a covering band, never a band value.
|
|
7659
7645
|
*/
|
|
7660
7646
|
bands: array(RecordingBandSchema).default([]),
|
|
7661
|
-
retention: RecordingRetentionSchema.optional()
|
|
7662
|
-
/**
|
|
7663
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7664
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7665
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7666
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7667
|
-
*/
|
|
7668
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7647
|
+
retention: RecordingRetentionSchema.optional()
|
|
7669
7648
|
}).strict();
|
|
7670
7649
|
/**
|
|
7671
7650
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7741,10 +7720,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7741
7720
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7742
7721
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7743
7722
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7744
|
-
var
|
|
7723
|
+
var RelocateMediaInputSchema = object({
|
|
7745
7724
|
toLocationId: string(),
|
|
7746
7725
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7747
|
-
})
|
|
7726
|
+
});
|
|
7727
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7748
7728
|
/** The independently selectable logical storage classes. `recordings`
|
|
7749
7729
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7750
7730
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8039,7 +8019,26 @@ var LabelDefinitionSchema = object({
|
|
|
8039
8019
|
description: string().optional(),
|
|
8040
8020
|
icon: string().optional()
|
|
8041
8021
|
});
|
|
8042
|
-
|
|
8022
|
+
/**
|
|
8023
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8024
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8025
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8026
|
+
* detection pipeline executor actually routes.
|
|
8027
|
+
*
|
|
8028
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8029
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8030
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8031
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8032
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8033
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8034
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8035
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8036
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8037
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8038
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8039
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8040
|
+
*/
|
|
8041
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8043
8042
|
mapping: record(string(), _enum([
|
|
8044
8043
|
"person",
|
|
8045
8044
|
"vehicle",
|
|
@@ -8244,7 +8243,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8244
8243
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8245
8244
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8246
8245
|
*/
|
|
8247
|
-
classMap:
|
|
8246
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8248
8247
|
});
|
|
8249
8248
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8250
8249
|
format: literal("openvino"),
|
|
@@ -8274,7 +8273,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8274
8273
|
"segmentation"
|
|
8275
8274
|
]),
|
|
8276
8275
|
faceAlignment: boolean().optional(),
|
|
8277
|
-
classMap:
|
|
8276
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8278
8277
|
});
|
|
8279
8278
|
var ConvertResultSchema = object({
|
|
8280
8279
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9137,7 +9136,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9137
9136
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9138
9137
|
sectionLabel: string().optional()
|
|
9139
9138
|
});
|
|
9140
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9139
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9141
9140
|
var AddonHttpRouteSchema = object({
|
|
9142
9141
|
method: _enum([
|
|
9143
9142
|
"GET",
|
|
@@ -9372,7 +9371,7 @@ var WidgetMetadataSchema = object({
|
|
|
9372
9371
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9373
9372
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9374
9373
|
});
|
|
9375
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9374
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9376
9375
|
/**
|
|
9377
9376
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9378
9377
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11045,7 +11044,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11045
11044
|
stepId: string(),
|
|
11046
11045
|
entry: ModelCatalogEntrySchema
|
|
11047
11046
|
});
|
|
11048
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11047
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11049
11048
|
/**
|
|
11050
11049
|
* Query filter for settings-store collections.
|
|
11051
11050
|
*/
|
|
@@ -11132,7 +11131,8 @@ method(object({
|
|
|
11132
11131
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11133
11132
|
namespace: string().optional(),
|
|
11134
11133
|
collection: string(),
|
|
11135
|
-
filter: QueryFilterSchema.optional()
|
|
11134
|
+
filter: QueryFilterSchema.optional(),
|
|
11135
|
+
columns: array(string()).readonly().optional()
|
|
11136
11136
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11137
11137
|
namespace: string().optional(),
|
|
11138
11138
|
collection: string(),
|
|
@@ -11195,46 +11195,87 @@ var EngineInfoSchema = object({
|
|
|
11195
11195
|
kind: _enum(["relational", "vector"]),
|
|
11196
11196
|
displayName: string()
|
|
11197
11197
|
});
|
|
11198
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11198
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11199
11199
|
namespace: string().optional(),
|
|
11200
11200
|
collection: string(),
|
|
11201
11201
|
key: string()
|
|
11202
|
-
}), unknown()), method(object({
|
|
11202
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11203
11203
|
namespace: string().optional(),
|
|
11204
11204
|
collection: string(),
|
|
11205
11205
|
key: string(),
|
|
11206
11206
|
value: unknown()
|
|
11207
|
-
}), _void(), {
|
|
11207
|
+
}), _void(), {
|
|
11208
|
+
kind: "mutation",
|
|
11209
|
+
auth: "admin"
|
|
11210
|
+
}), method(object({
|
|
11208
11211
|
namespace: string().optional(),
|
|
11209
11212
|
collection: string(),
|
|
11210
|
-
filter: QueryFilterSchema.optional()
|
|
11211
|
-
|
|
11213
|
+
filter: QueryFilterSchema.optional(),
|
|
11214
|
+
/**
|
|
11215
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11216
|
+
*
|
|
11217
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11218
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11219
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11220
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11221
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11222
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11223
|
+
*
|
|
11224
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11225
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11226
|
+
* interface the engine destructures from. The field existed on both
|
|
11227
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11228
|
+
* registered provider against `InferProvider<cap>` —
|
|
11229
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11230
|
+
*
|
|
11231
|
+
* It is declared here anyway, and must stay in step with
|
|
11232
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11233
|
+
* to be able to see that this call carries a projection.
|
|
11234
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11235
|
+
*/
|
|
11236
|
+
columns: array(string()).readonly().optional()
|
|
11237
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11212
11238
|
namespace: string().optional(),
|
|
11213
11239
|
collection: string(),
|
|
11214
11240
|
record: SettingsRecordSchema
|
|
11215
|
-
}), _void(), {
|
|
11241
|
+
}), _void(), {
|
|
11242
|
+
kind: "mutation",
|
|
11243
|
+
auth: "admin"
|
|
11244
|
+
}), method(object({
|
|
11216
11245
|
namespace: string().optional(),
|
|
11217
11246
|
collection: string(),
|
|
11218
11247
|
id: string(),
|
|
11219
11248
|
data: record(string(), unknown())
|
|
11220
|
-
}), _void(), {
|
|
11249
|
+
}), _void(), {
|
|
11250
|
+
kind: "mutation",
|
|
11251
|
+
auth: "admin"
|
|
11252
|
+
}), method(object({
|
|
11221
11253
|
namespace: string().optional(),
|
|
11222
11254
|
collection: string(),
|
|
11223
11255
|
key: string()
|
|
11224
|
-
}), _void(), {
|
|
11256
|
+
}), _void(), {
|
|
11257
|
+
kind: "mutation",
|
|
11258
|
+
auth: "admin"
|
|
11259
|
+
}), method(object({
|
|
11225
11260
|
namespace: string().optional(),
|
|
11226
11261
|
collection: string(),
|
|
11227
11262
|
filter: MutationFilterSchema
|
|
11228
|
-
}), object({ deleted: number().int() }), {
|
|
11263
|
+
}), object({ deleted: number().int() }), {
|
|
11264
|
+
kind: "mutation",
|
|
11265
|
+
auth: "admin"
|
|
11266
|
+
}), method(object({
|
|
11229
11267
|
namespace: string().optional(),
|
|
11230
11268
|
collection: string(),
|
|
11231
11269
|
filter: MutationFilterSchema,
|
|
11232
11270
|
data: record(string(), unknown())
|
|
11233
|
-
}), object({ updated: number().int() }), {
|
|
11271
|
+
}), object({ updated: number().int() }), {
|
|
11272
|
+
kind: "mutation",
|
|
11273
|
+
auth: "admin"
|
|
11274
|
+
}), method(object({
|
|
11234
11275
|
namespace: string().optional(),
|
|
11235
11276
|
collection: string(),
|
|
11236
11277
|
filter: QueryFilterSchema.optional()
|
|
11237
|
-
}), number()), method(object({
|
|
11278
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11238
11279
|
namespace: string().optional(),
|
|
11239
11280
|
collection: string(),
|
|
11240
11281
|
field: string(),
|
|
@@ -11244,15 +11285,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11244
11285
|
}), array(object({
|
|
11245
11286
|
bucket: number().int(),
|
|
11246
11287
|
count: number().int()
|
|
11247
|
-
})).readonly()), method(object({
|
|
11288
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11248
11289
|
namespace: string().optional(),
|
|
11249
11290
|
collection: string()
|
|
11250
|
-
}), boolean()), method(object({
|
|
11291
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11251
11292
|
namespace: string().optional(),
|
|
11252
11293
|
collection: string(),
|
|
11253
11294
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11254
11295
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11255
|
-
}), _void(), {
|
|
11296
|
+
}), _void(), {
|
|
11297
|
+
kind: "mutation",
|
|
11298
|
+
auth: "admin"
|
|
11299
|
+
});
|
|
11256
11300
|
/**
|
|
11257
11301
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11258
11302
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12559,7 +12603,7 @@ method(object({
|
|
|
12559
12603
|
crop: _instanceof(Uint8Array),
|
|
12560
12604
|
width: number(),
|
|
12561
12605
|
height: number()
|
|
12562
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12606
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12563
12607
|
/**
|
|
12564
12608
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12565
12609
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12852,19 +12896,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12852
12896
|
runtime: ManagedRuntimeConfigSchema,
|
|
12853
12897
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12854
12898
|
timeoutMs: number().int().positive().optional()
|
|
12855
|
-
}), LlmGenerateResultSchema, {
|
|
12899
|
+
}), LlmGenerateResultSchema, {
|
|
12900
|
+
kind: "mutation",
|
|
12901
|
+
auth: "admin"
|
|
12902
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12856
12903
|
kind: "mutation",
|
|
12857
12904
|
auth: "admin"
|
|
12858
12905
|
}), method(object({}), _void(), {
|
|
12859
12906
|
kind: "mutation",
|
|
12860
12907
|
auth: "admin"
|
|
12861
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12908
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12862
12909
|
kind: "mutation",
|
|
12863
12910
|
auth: "admin"
|
|
12864
12911
|
}), method(object({ file: string() }), _void(), {
|
|
12865
12912
|
kind: "mutation",
|
|
12866
12913
|
auth: "admin"
|
|
12867
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12914
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12868
12915
|
/**
|
|
12869
12916
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12870
12917
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16375,7 +16422,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16375
16422
|
*/
|
|
16376
16423
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16377
16424
|
});
|
|
16378
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16425
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16379
16426
|
/**
|
|
16380
16427
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16381
16428
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17570,6 +17617,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17570
17617
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17571
17618
|
kind: "mutation",
|
|
17572
17619
|
auth: "admin"
|
|
17620
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17621
|
+
kind: "mutation",
|
|
17622
|
+
auth: "admin"
|
|
17623
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17624
|
+
kind: "query",
|
|
17625
|
+
auth: "admin"
|
|
17626
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17627
|
+
kind: "mutation",
|
|
17628
|
+
auth: "admin"
|
|
17573
17629
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17574
17630
|
kind: "query",
|
|
17575
17631
|
auth: "admin"
|
|
@@ -17724,6 +17780,11 @@ object({
|
|
|
17724
17780
|
"jpeg"
|
|
17725
17781
|
])
|
|
17726
17782
|
});
|
|
17783
|
+
/**
|
|
17784
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17785
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17786
|
+
* other process or execution group.
|
|
17787
|
+
*/
|
|
17727
17788
|
var FrameRefSchema = object({
|
|
17728
17789
|
registryId: string().min(1),
|
|
17729
17790
|
id: string().min(1),
|
|
@@ -19929,7 +19990,7 @@ method(object({
|
|
|
19929
19990
|
* linking rather than produce an eternal token.
|
|
19930
19991
|
*/
|
|
19931
19992
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
19932
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
19993
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
19933
19994
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
19934
19995
|
providerId: string().min(1),
|
|
19935
19996
|
displayName: string().min(1),
|
|
@@ -20024,10 +20085,13 @@ var EvictResultSchema = object({
|
|
|
20024
20085
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20025
20086
|
exhausted: boolean()
|
|
20026
20087
|
});
|
|
20027
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20088
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20028
20089
|
locationId: string(),
|
|
20029
20090
|
targetBytes: number().int().positive()
|
|
20030
|
-
}), EvictResultSchema, {
|
|
20091
|
+
}), EvictResultSchema, {
|
|
20092
|
+
kind: "mutation",
|
|
20093
|
+
auth: "admin"
|
|
20094
|
+
});
|
|
20031
20095
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20032
20096
|
kind: "mutation",
|
|
20033
20097
|
auth: "admin"
|
|
@@ -20087,26 +20151,50 @@ var ReadChunkInputSchema = object({
|
|
|
20087
20151
|
length: number()
|
|
20088
20152
|
});
|
|
20089
20153
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20090
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20154
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20091
20155
|
location: StorageLocationSchema,
|
|
20092
20156
|
relativePath: string()
|
|
20093
|
-
}), string()), method(object({
|
|
20157
|
+
}), string(), { auth: "admin" }), method(object({
|
|
20094
20158
|
location: StorageLocationSchema,
|
|
20095
20159
|
relativePath: string(),
|
|
20096
20160
|
data: _instanceof(Uint8Array)
|
|
20097
|
-
}), _void(), {
|
|
20161
|
+
}), _void(), {
|
|
20162
|
+
kind: "mutation",
|
|
20163
|
+
auth: "admin"
|
|
20164
|
+
}), method(object({
|
|
20098
20165
|
location: StorageLocationSchema,
|
|
20099
20166
|
relativePath: string()
|
|
20100
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20167
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20101
20168
|
location: StorageLocationSchema,
|
|
20102
20169
|
relativePath: string()
|
|
20103
|
-
}), boolean()), method(object({
|
|
20170
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20104
20171
|
location: StorageLocationSchema,
|
|
20105
20172
|
prefix: string().optional()
|
|
20106
|
-
}), array(string()).readonly()), method(object({
|
|
20173
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
20107
20174
|
location: StorageLocationSchema,
|
|
20108
20175
|
relativePath: string()
|
|
20109
|
-
}), _void(), {
|
|
20176
|
+
}), _void(), {
|
|
20177
|
+
kind: "mutation",
|
|
20178
|
+
auth: "admin"
|
|
20179
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20180
|
+
kind: "mutation",
|
|
20181
|
+
auth: "admin"
|
|
20182
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20183
|
+
kind: "mutation",
|
|
20184
|
+
auth: "admin"
|
|
20185
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20186
|
+
kind: "mutation",
|
|
20187
|
+
auth: "admin"
|
|
20188
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20189
|
+
kind: "mutation",
|
|
20190
|
+
auth: "admin"
|
|
20191
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20192
|
+
kind: "mutation",
|
|
20193
|
+
auth: "admin"
|
|
20194
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20195
|
+
kind: "mutation",
|
|
20196
|
+
auth: "admin"
|
|
20197
|
+
});
|
|
20110
20198
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20111
20199
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20112
20200
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20364,7 +20452,8 @@ method(object({
|
|
|
20364
20452
|
access: "create"
|
|
20365
20453
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20366
20454
|
kind: "mutation",
|
|
20367
|
-
access: "view"
|
|
20455
|
+
access: "view",
|
|
20456
|
+
auth: "admin"
|
|
20368
20457
|
}), method(object({
|
|
20369
20458
|
/** Required — the user the assertion belongs to (verified). */
|
|
20370
20459
|
userId: string(),
|
|
@@ -20372,10 +20461,12 @@ method(object({
|
|
|
20372
20461
|
response: record(string(), unknown())
|
|
20373
20462
|
}), object({ verified: boolean() }), {
|
|
20374
20463
|
kind: "mutation",
|
|
20375
|
-
access: "view"
|
|
20464
|
+
access: "view",
|
|
20465
|
+
auth: "admin"
|
|
20376
20466
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20377
20467
|
kind: "mutation",
|
|
20378
|
-
access: "view"
|
|
20468
|
+
access: "view",
|
|
20469
|
+
auth: "admin"
|
|
20379
20470
|
}), method(object({
|
|
20380
20471
|
/** AuthenticationResponseJSON from the browser. */
|
|
20381
20472
|
response: record(string(), unknown()) }), object({
|
|
@@ -20383,7 +20474,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20383
20474
|
userId: string().nullable()
|
|
20384
20475
|
}), {
|
|
20385
20476
|
kind: "mutation",
|
|
20386
|
-
access: "view"
|
|
20477
|
+
access: "view",
|
|
20478
|
+
auth: "admin"
|
|
20387
20479
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20388
20480
|
userId: string(),
|
|
20389
20481
|
credentialId: string()
|
|
@@ -20555,7 +20647,19 @@ var VectorStatsResultSchema = object({
|
|
|
20555
20647
|
/** False when the backend ranks approximately. */
|
|
20556
20648
|
exact: boolean()
|
|
20557
20649
|
});
|
|
20558
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20650
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20651
|
+
kind: "mutation",
|
|
20652
|
+
auth: "admin"
|
|
20653
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20654
|
+
kind: "mutation",
|
|
20655
|
+
auth: "admin"
|
|
20656
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20657
|
+
kind: "mutation",
|
|
20658
|
+
auth: "admin"
|
|
20659
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20660
|
+
kind: "mutation",
|
|
20661
|
+
auth: "admin"
|
|
20662
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20559
20663
|
var ClipSchema = object({
|
|
20560
20664
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20561
20665
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23008,7 +23112,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23008
23112
|
sizeBytes: number(),
|
|
23009
23113
|
timestamp: number()
|
|
23010
23114
|
});
|
|
23011
|
-
method(
|
|
23115
|
+
method(object({
|
|
23116
|
+
/**
|
|
23117
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23118
|
+
*
|
|
23119
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23120
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23121
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23122
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23123
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23124
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23125
|
+
*
|
|
23126
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23127
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23128
|
+
*
|
|
23129
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23130
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23131
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23132
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23133
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23134
|
+
*/
|
|
23135
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
23012
23136
|
kind: "mutation",
|
|
23013
23137
|
auth: "admin"
|
|
23014
23138
|
}), method(object({
|
|
@@ -25898,8 +26022,10 @@ var PlateInfoSchema = object({
|
|
|
25898
26022
|
keyFrameMediaKey: string().optional(),
|
|
25899
26023
|
base64: string().optional(),
|
|
25900
26024
|
/**
|
|
25901
|
-
* Same crop as a data-plane URL
|
|
25902
|
-
* never inlines JPEG; `listPlates`
|
|
26025
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26026
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26027
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26028
|
+
* left at its `true` default.
|
|
25903
26029
|
*/
|
|
25904
26030
|
cropUrl: string().optional()
|
|
25905
26031
|
});
|
|
@@ -25919,14 +26045,34 @@ var PlateClusterSchema = object({
|
|
|
25919
26045
|
});
|
|
25920
26046
|
method(object({
|
|
25921
26047
|
deviceId: number().int().optional(),
|
|
25922
|
-
limit: number().int().positive().optional()
|
|
26048
|
+
limit: number().int().positive().optional(),
|
|
26049
|
+
/**
|
|
26050
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26051
|
+
* behaviour, kept so no caller breaks.
|
|
26052
|
+
*
|
|
26053
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26054
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26055
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26056
|
+
* metadata without them — and the browser then caches the images.
|
|
26057
|
+
*
|
|
26058
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26059
|
+
* plates were the one gallery list left without it.
|
|
26060
|
+
*
|
|
26061
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26062
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26063
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26064
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26065
|
+
*/
|
|
26066
|
+
includeCrops: boolean().optional()
|
|
25923
26067
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
25924
26068
|
deviceId: number().int(),
|
|
25925
26069
|
trackId: string()
|
|
25926
26070
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
25927
26071
|
text: string().min(1),
|
|
25928
26072
|
maxDistance: number().int().min(0).optional(),
|
|
25929
|
-
limit: number().int().positive().optional()
|
|
26073
|
+
limit: number().int().positive().optional(),
|
|
26074
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26075
|
+
includeCrops: boolean().optional()
|
|
25930
26076
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
25931
26077
|
maxDistance: number().int().min(0).optional(),
|
|
25932
26078
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -25940,7 +26086,13 @@ method(object({
|
|
|
25940
26086
|
}), method(object({ plateId: string() }), _void(), {
|
|
25941
26087
|
kind: "mutation",
|
|
25942
26088
|
auth: "admin"
|
|
25943
|
-
}), method(
|
|
26089
|
+
}), method(object({
|
|
26090
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26091
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26092
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26093
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26094
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26095
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
25944
26096
|
kind: "mutation",
|
|
25945
26097
|
auth: "admin"
|
|
25946
26098
|
}), method(object({
|
|
@@ -33201,6 +33353,12 @@ Object.freeze({
|
|
|
33201
33353
|
addonId: null,
|
|
33202
33354
|
access: "create"
|
|
33203
33355
|
},
|
|
33356
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
33357
|
+
capName: "pipeline-analytics",
|
|
33358
|
+
capScope: "device",
|
|
33359
|
+
addonId: null,
|
|
33360
|
+
access: "create"
|
|
33361
|
+
},
|
|
33204
33362
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33205
33363
|
capName: "pipeline-analytics",
|
|
33206
33364
|
capScope: "device",
|
|
@@ -33375,6 +33533,12 @@ Object.freeze({
|
|
|
33375
33533
|
addonId: null,
|
|
33376
33534
|
access: "view"
|
|
33377
33535
|
},
|
|
33536
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
33537
|
+
capName: "pipeline-analytics",
|
|
33538
|
+
capScope: "device",
|
|
33539
|
+
addonId: null,
|
|
33540
|
+
access: "view"
|
|
33541
|
+
},
|
|
33378
33542
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
33379
33543
|
capName: "pipeline-analytics",
|
|
33380
33544
|
capScope: "device",
|
|
@@ -33453,6 +33617,12 @@ Object.freeze({
|
|
|
33453
33617
|
addonId: null,
|
|
33454
33618
|
access: "create"
|
|
33455
33619
|
},
|
|
33620
|
+
"pipelineAnalytics.relocateMedia": {
|
|
33621
|
+
capName: "pipeline-analytics",
|
|
33622
|
+
capScope: "device",
|
|
33623
|
+
addonId: null,
|
|
33624
|
+
access: "create"
|
|
33625
|
+
},
|
|
33456
33626
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
33457
33627
|
capName: "pipeline-analytics",
|
|
33458
33628
|
capScope: "device",
|
package/dist/addon.mjs
CHANGED
|
@@ -6640,7 +6640,7 @@ function method(input, output, options) {
|
|
|
6640
6640
|
input,
|
|
6641
6641
|
output,
|
|
6642
6642
|
kind: options?.kind ?? "query",
|
|
6643
|
-
auth: options
|
|
6643
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6644
6644
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6645
6645
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6646
6646
|
timeoutMs: options?.timeoutMs
|
|
@@ -6664,7 +6664,7 @@ function event(data) {
|
|
|
6664
6664
|
}
|
|
6665
6665
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6666
6666
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6667
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6667
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6668
6668
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6669
6669
|
DeviceType["Camera"] = "camera";
|
|
6670
6670
|
DeviceType["Hub"] = "hub";
|
|
@@ -6985,7 +6985,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
6985
6985
|
}({});
|
|
6986
6986
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
6987
6987
|
var VersionOutputSchema = object({ version: string() });
|
|
6988
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
6988
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
6989
6989
|
/**
|
|
6990
6990
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
6991
6991
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7611,24 +7611,6 @@ var RecordingRetentionSchema = object({
|
|
|
7611
7611
|
maxSizeGb: number().min(0).optional()
|
|
7612
7612
|
});
|
|
7613
7613
|
/**
|
|
7614
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7615
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7616
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7617
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7618
|
-
*
|
|
7619
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7620
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7621
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7622
|
-
* written with.
|
|
7623
|
-
*/
|
|
7624
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7625
|
-
"minimal",
|
|
7626
|
-
"low",
|
|
7627
|
-
"standard",
|
|
7628
|
-
"high",
|
|
7629
|
-
"max"
|
|
7630
|
-
]);
|
|
7631
|
-
/**
|
|
7632
7614
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7633
7615
|
*
|
|
7634
7616
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7636,7 +7618,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7636
7618
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7637
7619
|
*
|
|
7638
7620
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7639
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7621
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7622
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7623
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7624
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7625
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7640
7626
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7641
7627
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7642
7628
|
*/
|
|
@@ -7659,14 +7645,7 @@ var RecordingConfigSchema = object({
|
|
|
7659
7645
|
* "off" is the absence of a covering band, never a band value.
|
|
7660
7646
|
*/
|
|
7661
7647
|
bands: array(RecordingBandSchema).default([]),
|
|
7662
|
-
retention: RecordingRetentionSchema.optional()
|
|
7663
|
-
/**
|
|
7664
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7665
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7666
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7667
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7668
|
-
*/
|
|
7669
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7648
|
+
retention: RecordingRetentionSchema.optional()
|
|
7670
7649
|
}).strict();
|
|
7671
7650
|
/**
|
|
7672
7651
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7742,10 +7721,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7742
7721
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7743
7722
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7744
7723
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7745
|
-
var
|
|
7724
|
+
var RelocateMediaInputSchema = object({
|
|
7746
7725
|
toLocationId: string(),
|
|
7747
7726
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7748
|
-
})
|
|
7727
|
+
});
|
|
7728
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7749
7729
|
/** The independently selectable logical storage classes. `recordings`
|
|
7750
7730
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7751
7731
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8040,7 +8020,26 @@ var LabelDefinitionSchema = object({
|
|
|
8040
8020
|
description: string().optional(),
|
|
8041
8021
|
icon: string().optional()
|
|
8042
8022
|
});
|
|
8043
|
-
|
|
8023
|
+
/**
|
|
8024
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8025
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8026
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8027
|
+
* detection pipeline executor actually routes.
|
|
8028
|
+
*
|
|
8029
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8030
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8031
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8032
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8033
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8034
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8035
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8036
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8037
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8038
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8039
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8040
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8041
|
+
*/
|
|
8042
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8044
8043
|
mapping: record(string(), _enum([
|
|
8045
8044
|
"person",
|
|
8046
8045
|
"vehicle",
|
|
@@ -8245,7 +8244,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8245
8244
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8246
8245
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8247
8246
|
*/
|
|
8248
|
-
classMap:
|
|
8247
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8249
8248
|
});
|
|
8250
8249
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8251
8250
|
format: literal("openvino"),
|
|
@@ -8275,7 +8274,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8275
8274
|
"segmentation"
|
|
8276
8275
|
]),
|
|
8277
8276
|
faceAlignment: boolean().optional(),
|
|
8278
|
-
classMap:
|
|
8277
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8279
8278
|
});
|
|
8280
8279
|
var ConvertResultSchema = object({
|
|
8281
8280
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9138,7 +9137,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9138
9137
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9139
9138
|
sectionLabel: string().optional()
|
|
9140
9139
|
});
|
|
9141
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9140
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9142
9141
|
var AddonHttpRouteSchema = object({
|
|
9143
9142
|
method: _enum([
|
|
9144
9143
|
"GET",
|
|
@@ -9373,7 +9372,7 @@ var WidgetMetadataSchema = object({
|
|
|
9373
9372
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9374
9373
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9375
9374
|
});
|
|
9376
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9375
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9377
9376
|
/**
|
|
9378
9377
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9379
9378
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11046,7 +11045,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11046
11045
|
stepId: string(),
|
|
11047
11046
|
entry: ModelCatalogEntrySchema
|
|
11048
11047
|
});
|
|
11049
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11048
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11050
11049
|
/**
|
|
11051
11050
|
* Query filter for settings-store collections.
|
|
11052
11051
|
*/
|
|
@@ -11133,7 +11132,8 @@ method(object({
|
|
|
11133
11132
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11134
11133
|
namespace: string().optional(),
|
|
11135
11134
|
collection: string(),
|
|
11136
|
-
filter: QueryFilterSchema.optional()
|
|
11135
|
+
filter: QueryFilterSchema.optional(),
|
|
11136
|
+
columns: array(string()).readonly().optional()
|
|
11137
11137
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11138
11138
|
namespace: string().optional(),
|
|
11139
11139
|
collection: string(),
|
|
@@ -11196,46 +11196,87 @@ var EngineInfoSchema = object({
|
|
|
11196
11196
|
kind: _enum(["relational", "vector"]),
|
|
11197
11197
|
displayName: string()
|
|
11198
11198
|
});
|
|
11199
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11199
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11200
11200
|
namespace: string().optional(),
|
|
11201
11201
|
collection: string(),
|
|
11202
11202
|
key: string()
|
|
11203
|
-
}), unknown()), method(object({
|
|
11203
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11204
11204
|
namespace: string().optional(),
|
|
11205
11205
|
collection: string(),
|
|
11206
11206
|
key: string(),
|
|
11207
11207
|
value: unknown()
|
|
11208
|
-
}), _void(), {
|
|
11208
|
+
}), _void(), {
|
|
11209
|
+
kind: "mutation",
|
|
11210
|
+
auth: "admin"
|
|
11211
|
+
}), method(object({
|
|
11209
11212
|
namespace: string().optional(),
|
|
11210
11213
|
collection: string(),
|
|
11211
|
-
filter: QueryFilterSchema.optional()
|
|
11212
|
-
|
|
11214
|
+
filter: QueryFilterSchema.optional(),
|
|
11215
|
+
/**
|
|
11216
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11217
|
+
*
|
|
11218
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11219
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11220
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11221
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11222
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11223
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11224
|
+
*
|
|
11225
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11226
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11227
|
+
* interface the engine destructures from. The field existed on both
|
|
11228
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11229
|
+
* registered provider against `InferProvider<cap>` —
|
|
11230
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11231
|
+
*
|
|
11232
|
+
* It is declared here anyway, and must stay in step with
|
|
11233
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11234
|
+
* to be able to see that this call carries a projection.
|
|
11235
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11236
|
+
*/
|
|
11237
|
+
columns: array(string()).readonly().optional()
|
|
11238
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11213
11239
|
namespace: string().optional(),
|
|
11214
11240
|
collection: string(),
|
|
11215
11241
|
record: SettingsRecordSchema
|
|
11216
|
-
}), _void(), {
|
|
11242
|
+
}), _void(), {
|
|
11243
|
+
kind: "mutation",
|
|
11244
|
+
auth: "admin"
|
|
11245
|
+
}), method(object({
|
|
11217
11246
|
namespace: string().optional(),
|
|
11218
11247
|
collection: string(),
|
|
11219
11248
|
id: string(),
|
|
11220
11249
|
data: record(string(), unknown())
|
|
11221
|
-
}), _void(), {
|
|
11250
|
+
}), _void(), {
|
|
11251
|
+
kind: "mutation",
|
|
11252
|
+
auth: "admin"
|
|
11253
|
+
}), method(object({
|
|
11222
11254
|
namespace: string().optional(),
|
|
11223
11255
|
collection: string(),
|
|
11224
11256
|
key: string()
|
|
11225
|
-
}), _void(), {
|
|
11257
|
+
}), _void(), {
|
|
11258
|
+
kind: "mutation",
|
|
11259
|
+
auth: "admin"
|
|
11260
|
+
}), method(object({
|
|
11226
11261
|
namespace: string().optional(),
|
|
11227
11262
|
collection: string(),
|
|
11228
11263
|
filter: MutationFilterSchema
|
|
11229
|
-
}), object({ deleted: number().int() }), {
|
|
11264
|
+
}), object({ deleted: number().int() }), {
|
|
11265
|
+
kind: "mutation",
|
|
11266
|
+
auth: "admin"
|
|
11267
|
+
}), method(object({
|
|
11230
11268
|
namespace: string().optional(),
|
|
11231
11269
|
collection: string(),
|
|
11232
11270
|
filter: MutationFilterSchema,
|
|
11233
11271
|
data: record(string(), unknown())
|
|
11234
|
-
}), object({ updated: number().int() }), {
|
|
11272
|
+
}), object({ updated: number().int() }), {
|
|
11273
|
+
kind: "mutation",
|
|
11274
|
+
auth: "admin"
|
|
11275
|
+
}), method(object({
|
|
11235
11276
|
namespace: string().optional(),
|
|
11236
11277
|
collection: string(),
|
|
11237
11278
|
filter: QueryFilterSchema.optional()
|
|
11238
|
-
}), number()), method(object({
|
|
11279
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11239
11280
|
namespace: string().optional(),
|
|
11240
11281
|
collection: string(),
|
|
11241
11282
|
field: string(),
|
|
@@ -11245,15 +11286,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11245
11286
|
}), array(object({
|
|
11246
11287
|
bucket: number().int(),
|
|
11247
11288
|
count: number().int()
|
|
11248
|
-
})).readonly()), method(object({
|
|
11289
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11249
11290
|
namespace: string().optional(),
|
|
11250
11291
|
collection: string()
|
|
11251
|
-
}), boolean()), method(object({
|
|
11292
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11252
11293
|
namespace: string().optional(),
|
|
11253
11294
|
collection: string(),
|
|
11254
11295
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11255
11296
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11256
|
-
}), _void(), {
|
|
11297
|
+
}), _void(), {
|
|
11298
|
+
kind: "mutation",
|
|
11299
|
+
auth: "admin"
|
|
11300
|
+
});
|
|
11257
11301
|
/**
|
|
11258
11302
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11259
11303
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12560,7 +12604,7 @@ method(object({
|
|
|
12560
12604
|
crop: _instanceof(Uint8Array),
|
|
12561
12605
|
width: number(),
|
|
12562
12606
|
height: number()
|
|
12563
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12607
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12564
12608
|
/**
|
|
12565
12609
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12566
12610
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12853,19 +12897,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12853
12897
|
runtime: ManagedRuntimeConfigSchema,
|
|
12854
12898
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12855
12899
|
timeoutMs: number().int().positive().optional()
|
|
12856
|
-
}), LlmGenerateResultSchema, {
|
|
12900
|
+
}), LlmGenerateResultSchema, {
|
|
12901
|
+
kind: "mutation",
|
|
12902
|
+
auth: "admin"
|
|
12903
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12857
12904
|
kind: "mutation",
|
|
12858
12905
|
auth: "admin"
|
|
12859
12906
|
}), method(object({}), _void(), {
|
|
12860
12907
|
kind: "mutation",
|
|
12861
12908
|
auth: "admin"
|
|
12862
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12909
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12863
12910
|
kind: "mutation",
|
|
12864
12911
|
auth: "admin"
|
|
12865
12912
|
}), method(object({ file: string() }), _void(), {
|
|
12866
12913
|
kind: "mutation",
|
|
12867
12914
|
auth: "admin"
|
|
12868
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12915
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12869
12916
|
/**
|
|
12870
12917
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12871
12918
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16376,7 +16423,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16376
16423
|
*/
|
|
16377
16424
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16378
16425
|
});
|
|
16379
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16426
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16380
16427
|
/**
|
|
16381
16428
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16382
16429
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17571,6 +17618,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17571
17618
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17572
17619
|
kind: "mutation",
|
|
17573
17620
|
auth: "admin"
|
|
17621
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17622
|
+
kind: "mutation",
|
|
17623
|
+
auth: "admin"
|
|
17624
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17625
|
+
kind: "query",
|
|
17626
|
+
auth: "admin"
|
|
17627
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17628
|
+
kind: "mutation",
|
|
17629
|
+
auth: "admin"
|
|
17574
17630
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17575
17631
|
kind: "query",
|
|
17576
17632
|
auth: "admin"
|
|
@@ -17725,6 +17781,11 @@ object({
|
|
|
17725
17781
|
"jpeg"
|
|
17726
17782
|
])
|
|
17727
17783
|
});
|
|
17784
|
+
/**
|
|
17785
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17786
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17787
|
+
* other process or execution group.
|
|
17788
|
+
*/
|
|
17728
17789
|
var FrameRefSchema = object({
|
|
17729
17790
|
registryId: string().min(1),
|
|
17730
17791
|
id: string().min(1),
|
|
@@ -19930,7 +19991,7 @@ method(object({
|
|
|
19930
19991
|
* linking rather than produce an eternal token.
|
|
19931
19992
|
*/
|
|
19932
19993
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
19933
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
19994
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
19934
19995
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
19935
19996
|
providerId: string().min(1),
|
|
19936
19997
|
displayName: string().min(1),
|
|
@@ -20025,10 +20086,13 @@ var EvictResultSchema = object({
|
|
|
20025
20086
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20026
20087
|
exhausted: boolean()
|
|
20027
20088
|
});
|
|
20028
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20089
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20029
20090
|
locationId: string(),
|
|
20030
20091
|
targetBytes: number().int().positive()
|
|
20031
|
-
}), EvictResultSchema, {
|
|
20092
|
+
}), EvictResultSchema, {
|
|
20093
|
+
kind: "mutation",
|
|
20094
|
+
auth: "admin"
|
|
20095
|
+
});
|
|
20032
20096
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20033
20097
|
kind: "mutation",
|
|
20034
20098
|
auth: "admin"
|
|
@@ -20088,26 +20152,50 @@ var ReadChunkInputSchema = object({
|
|
|
20088
20152
|
length: number()
|
|
20089
20153
|
});
|
|
20090
20154
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20091
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20155
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20092
20156
|
location: StorageLocationSchema,
|
|
20093
20157
|
relativePath: string()
|
|
20094
|
-
}), string()), method(object({
|
|
20158
|
+
}), string(), { auth: "admin" }), method(object({
|
|
20095
20159
|
location: StorageLocationSchema,
|
|
20096
20160
|
relativePath: string(),
|
|
20097
20161
|
data: _instanceof(Uint8Array)
|
|
20098
|
-
}), _void(), {
|
|
20162
|
+
}), _void(), {
|
|
20163
|
+
kind: "mutation",
|
|
20164
|
+
auth: "admin"
|
|
20165
|
+
}), method(object({
|
|
20099
20166
|
location: StorageLocationSchema,
|
|
20100
20167
|
relativePath: string()
|
|
20101
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20168
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20102
20169
|
location: StorageLocationSchema,
|
|
20103
20170
|
relativePath: string()
|
|
20104
|
-
}), boolean()), method(object({
|
|
20171
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20105
20172
|
location: StorageLocationSchema,
|
|
20106
20173
|
prefix: string().optional()
|
|
20107
|
-
}), array(string()).readonly()), method(object({
|
|
20174
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
20108
20175
|
location: StorageLocationSchema,
|
|
20109
20176
|
relativePath: string()
|
|
20110
|
-
}), _void(), {
|
|
20177
|
+
}), _void(), {
|
|
20178
|
+
kind: "mutation",
|
|
20179
|
+
auth: "admin"
|
|
20180
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20181
|
+
kind: "mutation",
|
|
20182
|
+
auth: "admin"
|
|
20183
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20184
|
+
kind: "mutation",
|
|
20185
|
+
auth: "admin"
|
|
20186
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20187
|
+
kind: "mutation",
|
|
20188
|
+
auth: "admin"
|
|
20189
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20190
|
+
kind: "mutation",
|
|
20191
|
+
auth: "admin"
|
|
20192
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20193
|
+
kind: "mutation",
|
|
20194
|
+
auth: "admin"
|
|
20195
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20196
|
+
kind: "mutation",
|
|
20197
|
+
auth: "admin"
|
|
20198
|
+
});
|
|
20111
20199
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20112
20200
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20113
20201
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20365,7 +20453,8 @@ method(object({
|
|
|
20365
20453
|
access: "create"
|
|
20366
20454
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20367
20455
|
kind: "mutation",
|
|
20368
|
-
access: "view"
|
|
20456
|
+
access: "view",
|
|
20457
|
+
auth: "admin"
|
|
20369
20458
|
}), method(object({
|
|
20370
20459
|
/** Required — the user the assertion belongs to (verified). */
|
|
20371
20460
|
userId: string(),
|
|
@@ -20373,10 +20462,12 @@ method(object({
|
|
|
20373
20462
|
response: record(string(), unknown())
|
|
20374
20463
|
}), object({ verified: boolean() }), {
|
|
20375
20464
|
kind: "mutation",
|
|
20376
|
-
access: "view"
|
|
20465
|
+
access: "view",
|
|
20466
|
+
auth: "admin"
|
|
20377
20467
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20378
20468
|
kind: "mutation",
|
|
20379
|
-
access: "view"
|
|
20469
|
+
access: "view",
|
|
20470
|
+
auth: "admin"
|
|
20380
20471
|
}), method(object({
|
|
20381
20472
|
/** AuthenticationResponseJSON from the browser. */
|
|
20382
20473
|
response: record(string(), unknown()) }), object({
|
|
@@ -20384,7 +20475,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20384
20475
|
userId: string().nullable()
|
|
20385
20476
|
}), {
|
|
20386
20477
|
kind: "mutation",
|
|
20387
|
-
access: "view"
|
|
20478
|
+
access: "view",
|
|
20479
|
+
auth: "admin"
|
|
20388
20480
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20389
20481
|
userId: string(),
|
|
20390
20482
|
credentialId: string()
|
|
@@ -20556,7 +20648,19 @@ var VectorStatsResultSchema = object({
|
|
|
20556
20648
|
/** False when the backend ranks approximately. */
|
|
20557
20649
|
exact: boolean()
|
|
20558
20650
|
});
|
|
20559
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20651
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20652
|
+
kind: "mutation",
|
|
20653
|
+
auth: "admin"
|
|
20654
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20655
|
+
kind: "mutation",
|
|
20656
|
+
auth: "admin"
|
|
20657
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20658
|
+
kind: "mutation",
|
|
20659
|
+
auth: "admin"
|
|
20660
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20661
|
+
kind: "mutation",
|
|
20662
|
+
auth: "admin"
|
|
20663
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20560
20664
|
var ClipSchema = object({
|
|
20561
20665
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20562
20666
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23009,7 +23113,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23009
23113
|
sizeBytes: number(),
|
|
23010
23114
|
timestamp: number()
|
|
23011
23115
|
});
|
|
23012
|
-
method(
|
|
23116
|
+
method(object({
|
|
23117
|
+
/**
|
|
23118
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23119
|
+
*
|
|
23120
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23121
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23122
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23123
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23124
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23125
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23126
|
+
*
|
|
23127
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23128
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23129
|
+
*
|
|
23130
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23131
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23132
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23133
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23134
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23135
|
+
*/
|
|
23136
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
23013
23137
|
kind: "mutation",
|
|
23014
23138
|
auth: "admin"
|
|
23015
23139
|
}), method(object({
|
|
@@ -25899,8 +26023,10 @@ var PlateInfoSchema = object({
|
|
|
25899
26023
|
keyFrameMediaKey: string().optional(),
|
|
25900
26024
|
base64: string().optional(),
|
|
25901
26025
|
/**
|
|
25902
|
-
* Same crop as a data-plane URL
|
|
25903
|
-
* never inlines JPEG; `listPlates`
|
|
26026
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26027
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26028
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26029
|
+
* left at its `true` default.
|
|
25904
26030
|
*/
|
|
25905
26031
|
cropUrl: string().optional()
|
|
25906
26032
|
});
|
|
@@ -25920,14 +26046,34 @@ var PlateClusterSchema = object({
|
|
|
25920
26046
|
});
|
|
25921
26047
|
method(object({
|
|
25922
26048
|
deviceId: number().int().optional(),
|
|
25923
|
-
limit: number().int().positive().optional()
|
|
26049
|
+
limit: number().int().positive().optional(),
|
|
26050
|
+
/**
|
|
26051
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26052
|
+
* behaviour, kept so no caller breaks.
|
|
26053
|
+
*
|
|
26054
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26055
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26056
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26057
|
+
* metadata without them — and the browser then caches the images.
|
|
26058
|
+
*
|
|
26059
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26060
|
+
* plates were the one gallery list left without it.
|
|
26061
|
+
*
|
|
26062
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26063
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26064
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26065
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26066
|
+
*/
|
|
26067
|
+
includeCrops: boolean().optional()
|
|
25924
26068
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
25925
26069
|
deviceId: number().int(),
|
|
25926
26070
|
trackId: string()
|
|
25927
26071
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
25928
26072
|
text: string().min(1),
|
|
25929
26073
|
maxDistance: number().int().min(0).optional(),
|
|
25930
|
-
limit: number().int().positive().optional()
|
|
26074
|
+
limit: number().int().positive().optional(),
|
|
26075
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26076
|
+
includeCrops: boolean().optional()
|
|
25931
26077
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
25932
26078
|
maxDistance: number().int().min(0).optional(),
|
|
25933
26079
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -25941,7 +26087,13 @@ method(object({
|
|
|
25941
26087
|
}), method(object({ plateId: string() }), _void(), {
|
|
25942
26088
|
kind: "mutation",
|
|
25943
26089
|
auth: "admin"
|
|
25944
|
-
}), method(
|
|
26090
|
+
}), method(object({
|
|
26091
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26092
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26093
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26094
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26095
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26096
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
25945
26097
|
kind: "mutation",
|
|
25946
26098
|
auth: "admin"
|
|
25947
26099
|
}), method(object({
|
|
@@ -33202,6 +33354,12 @@ Object.freeze({
|
|
|
33202
33354
|
addonId: null,
|
|
33203
33355
|
access: "create"
|
|
33204
33356
|
},
|
|
33357
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
33358
|
+
capName: "pipeline-analytics",
|
|
33359
|
+
capScope: "device",
|
|
33360
|
+
addonId: null,
|
|
33361
|
+
access: "create"
|
|
33362
|
+
},
|
|
33205
33363
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33206
33364
|
capName: "pipeline-analytics",
|
|
33207
33365
|
capScope: "device",
|
|
@@ -33376,6 +33534,12 @@ Object.freeze({
|
|
|
33376
33534
|
addonId: null,
|
|
33377
33535
|
access: "view"
|
|
33378
33536
|
},
|
|
33537
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
33538
|
+
capName: "pipeline-analytics",
|
|
33539
|
+
capScope: "device",
|
|
33540
|
+
addonId: null,
|
|
33541
|
+
access: "view"
|
|
33542
|
+
},
|
|
33379
33543
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
33380
33544
|
capName: "pipeline-analytics",
|
|
33381
33545
|
capScope: "device",
|
|
@@ -33454,6 +33618,12 @@ Object.freeze({
|
|
|
33454
33618
|
addonId: null,
|
|
33455
33619
|
access: "create"
|
|
33456
33620
|
},
|
|
33621
|
+
"pipelineAnalytics.relocateMedia": {
|
|
33622
|
+
capName: "pipeline-analytics",
|
|
33623
|
+
capScope: "device",
|
|
33624
|
+
addonId: null,
|
|
33625
|
+
access: "create"
|
|
33626
|
+
},
|
|
33457
33627
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
33458
33628
|
capName: "pipeline-analytics",
|
|
33459
33629
|
capScope: "device",
|
package/package.json
CHANGED