@camstack/addon-provider-rtsp 1.2.28 → 1.2.29
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
|
@@ -6654,7 +6654,7 @@ function method(input, output, options) {
|
|
|
6654
6654
|
input,
|
|
6655
6655
|
output,
|
|
6656
6656
|
kind: options?.kind ?? "query",
|
|
6657
|
-
auth: options
|
|
6657
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6658
6658
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6659
6659
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6660
6660
|
timeoutMs: options?.timeoutMs
|
|
@@ -6678,7 +6678,7 @@ function event(data) {
|
|
|
6678
6678
|
}
|
|
6679
6679
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6680
6680
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6681
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6681
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6682
6682
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6683
6683
|
DeviceType["Camera"] = "camera";
|
|
6684
6684
|
DeviceType["Hub"] = "hub";
|
|
@@ -6999,7 +6999,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
6999
6999
|
}({});
|
|
7000
7000
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
7001
7001
|
var VersionOutputSchema = object({ version: string() });
|
|
7002
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
7002
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
7003
7003
|
/**
|
|
7004
7004
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
7005
7005
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7657,24 +7657,6 @@ var RecordingRetentionSchema = object({
|
|
|
7657
7657
|
maxSizeGb: number().min(0).optional()
|
|
7658
7658
|
});
|
|
7659
7659
|
/**
|
|
7660
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7661
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7662
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7663
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7664
|
-
*
|
|
7665
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7666
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7667
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7668
|
-
* written with.
|
|
7669
|
-
*/
|
|
7670
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7671
|
-
"minimal",
|
|
7672
|
-
"low",
|
|
7673
|
-
"standard",
|
|
7674
|
-
"high",
|
|
7675
|
-
"max"
|
|
7676
|
-
]);
|
|
7677
|
-
/**
|
|
7678
7660
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7679
7661
|
*
|
|
7680
7662
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7682,7 +7664,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7682
7664
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7683
7665
|
*
|
|
7684
7666
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7685
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7667
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7668
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7669
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7670
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7671
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7686
7672
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7687
7673
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7688
7674
|
*/
|
|
@@ -7705,14 +7691,7 @@ var RecordingConfigSchema = object({
|
|
|
7705
7691
|
* "off" is the absence of a covering band, never a band value.
|
|
7706
7692
|
*/
|
|
7707
7693
|
bands: array(RecordingBandSchema).default([]),
|
|
7708
|
-
retention: RecordingRetentionSchema.optional()
|
|
7709
|
-
/**
|
|
7710
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7711
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7712
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7713
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7714
|
-
*/
|
|
7715
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7694
|
+
retention: RecordingRetentionSchema.optional()
|
|
7716
7695
|
}).strict();
|
|
7717
7696
|
/**
|
|
7718
7697
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7788,10 +7767,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7788
7767
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7789
7768
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7790
7769
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7791
|
-
var
|
|
7770
|
+
var RelocateMediaInputSchema = object({
|
|
7792
7771
|
toLocationId: string(),
|
|
7793
7772
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7794
|
-
})
|
|
7773
|
+
});
|
|
7774
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7795
7775
|
/** The independently selectable logical storage classes. `recordings`
|
|
7796
7776
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7797
7777
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8086,7 +8066,26 @@ var LabelDefinitionSchema = object({
|
|
|
8086
8066
|
description: string().optional(),
|
|
8087
8067
|
icon: string().optional()
|
|
8088
8068
|
});
|
|
8089
|
-
|
|
8069
|
+
/**
|
|
8070
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8071
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8072
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8073
|
+
* detection pipeline executor actually routes.
|
|
8074
|
+
*
|
|
8075
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8076
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8077
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8078
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8079
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8080
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8081
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8082
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8083
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8084
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8085
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8086
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8087
|
+
*/
|
|
8088
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8090
8089
|
mapping: record(string(), _enum([
|
|
8091
8090
|
"person",
|
|
8092
8091
|
"vehicle",
|
|
@@ -8291,7 +8290,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8291
8290
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8292
8291
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8293
8292
|
*/
|
|
8294
|
-
classMap:
|
|
8293
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8295
8294
|
});
|
|
8296
8295
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8297
8296
|
format: literal("openvino"),
|
|
@@ -8321,7 +8320,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8321
8320
|
"segmentation"
|
|
8322
8321
|
]),
|
|
8323
8322
|
faceAlignment: boolean().optional(),
|
|
8324
|
-
classMap:
|
|
8323
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8325
8324
|
});
|
|
8326
8325
|
var ConvertResultSchema = object({
|
|
8327
8326
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9184,7 +9183,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9184
9183
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9185
9184
|
sectionLabel: string().optional()
|
|
9186
9185
|
});
|
|
9187
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9186
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9188
9187
|
var AddonHttpRouteSchema = object({
|
|
9189
9188
|
method: _enum([
|
|
9190
9189
|
"GET",
|
|
@@ -9419,7 +9418,7 @@ var WidgetMetadataSchema = object({
|
|
|
9419
9418
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9420
9419
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9421
9420
|
});
|
|
9422
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9421
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9423
9422
|
/**
|
|
9424
9423
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9425
9424
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11043,7 +11042,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11043
11042
|
stepId: string(),
|
|
11044
11043
|
entry: ModelCatalogEntrySchema
|
|
11045
11044
|
});
|
|
11046
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11045
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11047
11046
|
/**
|
|
11048
11047
|
* Query filter for settings-store collections.
|
|
11049
11048
|
*/
|
|
@@ -11130,7 +11129,8 @@ method(object({
|
|
|
11130
11129
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11131
11130
|
namespace: string().optional(),
|
|
11132
11131
|
collection: string(),
|
|
11133
|
-
filter: QueryFilterSchema.optional()
|
|
11132
|
+
filter: QueryFilterSchema.optional(),
|
|
11133
|
+
columns: array(string()).readonly().optional()
|
|
11134
11134
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11135
11135
|
namespace: string().optional(),
|
|
11136
11136
|
collection: string(),
|
|
@@ -11193,46 +11193,87 @@ var EngineInfoSchema = object({
|
|
|
11193
11193
|
kind: _enum(["relational", "vector"]),
|
|
11194
11194
|
displayName: string()
|
|
11195
11195
|
});
|
|
11196
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11196
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11197
11197
|
namespace: string().optional(),
|
|
11198
11198
|
collection: string(),
|
|
11199
11199
|
key: string()
|
|
11200
|
-
}), unknown()), method(object({
|
|
11200
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11201
11201
|
namespace: string().optional(),
|
|
11202
11202
|
collection: string(),
|
|
11203
11203
|
key: string(),
|
|
11204
11204
|
value: unknown()
|
|
11205
|
-
}), _void(), {
|
|
11205
|
+
}), _void(), {
|
|
11206
|
+
kind: "mutation",
|
|
11207
|
+
auth: "admin"
|
|
11208
|
+
}), method(object({
|
|
11206
11209
|
namespace: string().optional(),
|
|
11207
11210
|
collection: string(),
|
|
11208
|
-
filter: QueryFilterSchema.optional()
|
|
11209
|
-
|
|
11211
|
+
filter: QueryFilterSchema.optional(),
|
|
11212
|
+
/**
|
|
11213
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11214
|
+
*
|
|
11215
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11216
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11217
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11218
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11219
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11220
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11221
|
+
*
|
|
11222
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11223
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11224
|
+
* interface the engine destructures from. The field existed on both
|
|
11225
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11226
|
+
* registered provider against `InferProvider<cap>` —
|
|
11227
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11228
|
+
*
|
|
11229
|
+
* It is declared here anyway, and must stay in step with
|
|
11230
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11231
|
+
* to be able to see that this call carries a projection.
|
|
11232
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11233
|
+
*/
|
|
11234
|
+
columns: array(string()).readonly().optional()
|
|
11235
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11210
11236
|
namespace: string().optional(),
|
|
11211
11237
|
collection: string(),
|
|
11212
11238
|
record: SettingsRecordSchema
|
|
11213
|
-
}), _void(), {
|
|
11239
|
+
}), _void(), {
|
|
11240
|
+
kind: "mutation",
|
|
11241
|
+
auth: "admin"
|
|
11242
|
+
}), method(object({
|
|
11214
11243
|
namespace: string().optional(),
|
|
11215
11244
|
collection: string(),
|
|
11216
11245
|
id: string(),
|
|
11217
11246
|
data: record(string(), unknown())
|
|
11218
|
-
}), _void(), {
|
|
11247
|
+
}), _void(), {
|
|
11248
|
+
kind: "mutation",
|
|
11249
|
+
auth: "admin"
|
|
11250
|
+
}), method(object({
|
|
11219
11251
|
namespace: string().optional(),
|
|
11220
11252
|
collection: string(),
|
|
11221
11253
|
key: string()
|
|
11222
|
-
}), _void(), {
|
|
11254
|
+
}), _void(), {
|
|
11255
|
+
kind: "mutation",
|
|
11256
|
+
auth: "admin"
|
|
11257
|
+
}), method(object({
|
|
11223
11258
|
namespace: string().optional(),
|
|
11224
11259
|
collection: string(),
|
|
11225
11260
|
filter: MutationFilterSchema
|
|
11226
|
-
}), object({ deleted: number().int() }), {
|
|
11261
|
+
}), object({ deleted: number().int() }), {
|
|
11262
|
+
kind: "mutation",
|
|
11263
|
+
auth: "admin"
|
|
11264
|
+
}), method(object({
|
|
11227
11265
|
namespace: string().optional(),
|
|
11228
11266
|
collection: string(),
|
|
11229
11267
|
filter: MutationFilterSchema,
|
|
11230
11268
|
data: record(string(), unknown())
|
|
11231
|
-
}), object({ updated: number().int() }), {
|
|
11269
|
+
}), object({ updated: number().int() }), {
|
|
11270
|
+
kind: "mutation",
|
|
11271
|
+
auth: "admin"
|
|
11272
|
+
}), method(object({
|
|
11232
11273
|
namespace: string().optional(),
|
|
11233
11274
|
collection: string(),
|
|
11234
11275
|
filter: QueryFilterSchema.optional()
|
|
11235
|
-
}), number()), method(object({
|
|
11276
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11236
11277
|
namespace: string().optional(),
|
|
11237
11278
|
collection: string(),
|
|
11238
11279
|
field: string(),
|
|
@@ -11242,15 +11283,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11242
11283
|
}), array(object({
|
|
11243
11284
|
bucket: number().int(),
|
|
11244
11285
|
count: number().int()
|
|
11245
|
-
})).readonly()), method(object({
|
|
11286
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11246
11287
|
namespace: string().optional(),
|
|
11247
11288
|
collection: string()
|
|
11248
|
-
}), boolean()), method(object({
|
|
11289
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11249
11290
|
namespace: string().optional(),
|
|
11250
11291
|
collection: string(),
|
|
11251
11292
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11252
11293
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11253
|
-
}), _void(), {
|
|
11294
|
+
}), _void(), {
|
|
11295
|
+
kind: "mutation",
|
|
11296
|
+
auth: "admin"
|
|
11297
|
+
});
|
|
11254
11298
|
/**
|
|
11255
11299
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11256
11300
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12540,7 +12584,7 @@ method(object({
|
|
|
12540
12584
|
crop: _instanceof(Uint8Array),
|
|
12541
12585
|
width: number(),
|
|
12542
12586
|
height: number()
|
|
12543
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12587
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12544
12588
|
/**
|
|
12545
12589
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12546
12590
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12833,19 +12877,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12833
12877
|
runtime: ManagedRuntimeConfigSchema,
|
|
12834
12878
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12835
12879
|
timeoutMs: number().int().positive().optional()
|
|
12836
|
-
}), LlmGenerateResultSchema, {
|
|
12880
|
+
}), LlmGenerateResultSchema, {
|
|
12881
|
+
kind: "mutation",
|
|
12882
|
+
auth: "admin"
|
|
12883
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12837
12884
|
kind: "mutation",
|
|
12838
12885
|
auth: "admin"
|
|
12839
12886
|
}), method(object({}), _void(), {
|
|
12840
12887
|
kind: "mutation",
|
|
12841
12888
|
auth: "admin"
|
|
12842
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12889
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12843
12890
|
kind: "mutation",
|
|
12844
12891
|
auth: "admin"
|
|
12845
12892
|
}), method(object({ file: string() }), _void(), {
|
|
12846
12893
|
kind: "mutation",
|
|
12847
12894
|
auth: "admin"
|
|
12848
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12895
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12849
12896
|
/**
|
|
12850
12897
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12851
12898
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16356,7 +16403,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16356
16403
|
*/
|
|
16357
16404
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16358
16405
|
});
|
|
16359
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16406
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16360
16407
|
/**
|
|
16361
16408
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16362
16409
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17551,6 +17598,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17551
17598
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17552
17599
|
kind: "mutation",
|
|
17553
17600
|
auth: "admin"
|
|
17601
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17602
|
+
kind: "mutation",
|
|
17603
|
+
auth: "admin"
|
|
17604
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17605
|
+
kind: "query",
|
|
17606
|
+
auth: "admin"
|
|
17607
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17608
|
+
kind: "mutation",
|
|
17609
|
+
auth: "admin"
|
|
17554
17610
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17555
17611
|
kind: "query",
|
|
17556
17612
|
auth: "admin"
|
|
@@ -17705,6 +17761,11 @@ object({
|
|
|
17705
17761
|
"jpeg"
|
|
17706
17762
|
])
|
|
17707
17763
|
});
|
|
17764
|
+
/**
|
|
17765
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17766
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17767
|
+
* other process or execution group.
|
|
17768
|
+
*/
|
|
17708
17769
|
var FrameRefSchema = object({
|
|
17709
17770
|
registryId: string().min(1),
|
|
17710
17771
|
id: string().min(1),
|
|
@@ -20014,7 +20075,7 @@ method(object({
|
|
|
20014
20075
|
* linking rather than produce an eternal token.
|
|
20015
20076
|
*/
|
|
20016
20077
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
20017
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
20078
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
20018
20079
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
20019
20080
|
providerId: string().min(1),
|
|
20020
20081
|
displayName: string().min(1),
|
|
@@ -20109,10 +20170,13 @@ var EvictResultSchema = object({
|
|
|
20109
20170
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20110
20171
|
exhausted: boolean()
|
|
20111
20172
|
});
|
|
20112
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20173
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20113
20174
|
locationId: string(),
|
|
20114
20175
|
targetBytes: number().int().positive()
|
|
20115
|
-
}), EvictResultSchema, {
|
|
20176
|
+
}), EvictResultSchema, {
|
|
20177
|
+
kind: "mutation",
|
|
20178
|
+
auth: "admin"
|
|
20179
|
+
});
|
|
20116
20180
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20117
20181
|
kind: "mutation",
|
|
20118
20182
|
auth: "admin"
|
|
@@ -20172,26 +20236,50 @@ var ReadChunkInputSchema = object({
|
|
|
20172
20236
|
length: number()
|
|
20173
20237
|
});
|
|
20174
20238
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20175
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20239
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20176
20240
|
location: StorageLocationSchema,
|
|
20177
20241
|
relativePath: string()
|
|
20178
|
-
}), string()), method(object({
|
|
20242
|
+
}), string(), { auth: "admin" }), method(object({
|
|
20179
20243
|
location: StorageLocationSchema,
|
|
20180
20244
|
relativePath: string(),
|
|
20181
20245
|
data: _instanceof(Uint8Array)
|
|
20182
|
-
}), _void(), {
|
|
20246
|
+
}), _void(), {
|
|
20247
|
+
kind: "mutation",
|
|
20248
|
+
auth: "admin"
|
|
20249
|
+
}), method(object({
|
|
20183
20250
|
location: StorageLocationSchema,
|
|
20184
20251
|
relativePath: string()
|
|
20185
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20252
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20186
20253
|
location: StorageLocationSchema,
|
|
20187
20254
|
relativePath: string()
|
|
20188
|
-
}), boolean()), method(object({
|
|
20255
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20189
20256
|
location: StorageLocationSchema,
|
|
20190
20257
|
prefix: string().optional()
|
|
20191
|
-
}), array(string()).readonly()), method(object({
|
|
20258
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
20192
20259
|
location: StorageLocationSchema,
|
|
20193
20260
|
relativePath: string()
|
|
20194
|
-
}), _void(), {
|
|
20261
|
+
}), _void(), {
|
|
20262
|
+
kind: "mutation",
|
|
20263
|
+
auth: "admin"
|
|
20264
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20265
|
+
kind: "mutation",
|
|
20266
|
+
auth: "admin"
|
|
20267
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20268
|
+
kind: "mutation",
|
|
20269
|
+
auth: "admin"
|
|
20270
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20271
|
+
kind: "mutation",
|
|
20272
|
+
auth: "admin"
|
|
20273
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20274
|
+
kind: "mutation",
|
|
20275
|
+
auth: "admin"
|
|
20276
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20277
|
+
kind: "mutation",
|
|
20278
|
+
auth: "admin"
|
|
20279
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20280
|
+
kind: "mutation",
|
|
20281
|
+
auth: "admin"
|
|
20282
|
+
});
|
|
20195
20283
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20196
20284
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20197
20285
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20449,7 +20537,8 @@ method(object({
|
|
|
20449
20537
|
access: "create"
|
|
20450
20538
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20451
20539
|
kind: "mutation",
|
|
20452
|
-
access: "view"
|
|
20540
|
+
access: "view",
|
|
20541
|
+
auth: "admin"
|
|
20453
20542
|
}), method(object({
|
|
20454
20543
|
/** Required — the user the assertion belongs to (verified). */
|
|
20455
20544
|
userId: string(),
|
|
@@ -20457,10 +20546,12 @@ method(object({
|
|
|
20457
20546
|
response: record(string(), unknown())
|
|
20458
20547
|
}), object({ verified: boolean() }), {
|
|
20459
20548
|
kind: "mutation",
|
|
20460
|
-
access: "view"
|
|
20549
|
+
access: "view",
|
|
20550
|
+
auth: "admin"
|
|
20461
20551
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20462
20552
|
kind: "mutation",
|
|
20463
|
-
access: "view"
|
|
20553
|
+
access: "view",
|
|
20554
|
+
auth: "admin"
|
|
20464
20555
|
}), method(object({
|
|
20465
20556
|
/** AuthenticationResponseJSON from the browser. */
|
|
20466
20557
|
response: record(string(), unknown()) }), object({
|
|
@@ -20468,7 +20559,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20468
20559
|
userId: string().nullable()
|
|
20469
20560
|
}), {
|
|
20470
20561
|
kind: "mutation",
|
|
20471
|
-
access: "view"
|
|
20562
|
+
access: "view",
|
|
20563
|
+
auth: "admin"
|
|
20472
20564
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20473
20565
|
userId: string(),
|
|
20474
20566
|
credentialId: string()
|
|
@@ -20640,7 +20732,19 @@ var VectorStatsResultSchema = object({
|
|
|
20640
20732
|
/** False when the backend ranks approximately. */
|
|
20641
20733
|
exact: boolean()
|
|
20642
20734
|
});
|
|
20643
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20735
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20736
|
+
kind: "mutation",
|
|
20737
|
+
auth: "admin"
|
|
20738
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20739
|
+
kind: "mutation",
|
|
20740
|
+
auth: "admin"
|
|
20741
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20742
|
+
kind: "mutation",
|
|
20743
|
+
auth: "admin"
|
|
20744
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20745
|
+
kind: "mutation",
|
|
20746
|
+
auth: "admin"
|
|
20747
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20644
20748
|
var ClipSchema = object({
|
|
20645
20749
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20646
20750
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23101,7 +23205,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23101
23205
|
sizeBytes: number(),
|
|
23102
23206
|
timestamp: number()
|
|
23103
23207
|
});
|
|
23104
|
-
method(
|
|
23208
|
+
method(object({
|
|
23209
|
+
/**
|
|
23210
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23211
|
+
*
|
|
23212
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23213
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23214
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23215
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23216
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23217
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23218
|
+
*
|
|
23219
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23220
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23221
|
+
*
|
|
23222
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23223
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23224
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23225
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23226
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23227
|
+
*/
|
|
23228
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
23105
23229
|
kind: "mutation",
|
|
23106
23230
|
auth: "admin"
|
|
23107
23231
|
}), method(object({
|
|
@@ -25991,8 +26115,10 @@ var PlateInfoSchema = object({
|
|
|
25991
26115
|
keyFrameMediaKey: string().optional(),
|
|
25992
26116
|
base64: string().optional(),
|
|
25993
26117
|
/**
|
|
25994
|
-
* Same crop as a data-plane URL
|
|
25995
|
-
* never inlines JPEG; `listPlates`
|
|
26118
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26119
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26120
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26121
|
+
* left at its `true` default.
|
|
25996
26122
|
*/
|
|
25997
26123
|
cropUrl: string().optional()
|
|
25998
26124
|
});
|
|
@@ -26012,14 +26138,34 @@ var PlateClusterSchema = object({
|
|
|
26012
26138
|
});
|
|
26013
26139
|
method(object({
|
|
26014
26140
|
deviceId: number().int().optional(),
|
|
26015
|
-
limit: number().int().positive().optional()
|
|
26141
|
+
limit: number().int().positive().optional(),
|
|
26142
|
+
/**
|
|
26143
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26144
|
+
* behaviour, kept so no caller breaks.
|
|
26145
|
+
*
|
|
26146
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26147
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26148
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26149
|
+
* metadata without them — and the browser then caches the images.
|
|
26150
|
+
*
|
|
26151
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26152
|
+
* plates were the one gallery list left without it.
|
|
26153
|
+
*
|
|
26154
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26155
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26156
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26157
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26158
|
+
*/
|
|
26159
|
+
includeCrops: boolean().optional()
|
|
26016
26160
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
26017
26161
|
deviceId: number().int(),
|
|
26018
26162
|
trackId: string()
|
|
26019
26163
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
26020
26164
|
text: string().min(1),
|
|
26021
26165
|
maxDistance: number().int().min(0).optional(),
|
|
26022
|
-
limit: number().int().positive().optional()
|
|
26166
|
+
limit: number().int().positive().optional(),
|
|
26167
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26168
|
+
includeCrops: boolean().optional()
|
|
26023
26169
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
26024
26170
|
maxDistance: number().int().min(0).optional(),
|
|
26025
26171
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -26033,7 +26179,13 @@ method(object({
|
|
|
26033
26179
|
}), method(object({ plateId: string() }), _void(), {
|
|
26034
26180
|
kind: "mutation",
|
|
26035
26181
|
auth: "admin"
|
|
26036
|
-
}), method(
|
|
26182
|
+
}), method(object({
|
|
26183
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26184
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26185
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26186
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26187
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26188
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
26037
26189
|
kind: "mutation",
|
|
26038
26190
|
auth: "admin"
|
|
26039
26191
|
}), method(object({
|
|
@@ -33360,6 +33512,12 @@ Object.freeze({
|
|
|
33360
33512
|
addonId: null,
|
|
33361
33513
|
access: "create"
|
|
33362
33514
|
},
|
|
33515
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
33516
|
+
capName: "pipeline-analytics",
|
|
33517
|
+
capScope: "device",
|
|
33518
|
+
addonId: null,
|
|
33519
|
+
access: "create"
|
|
33520
|
+
},
|
|
33363
33521
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33364
33522
|
capName: "pipeline-analytics",
|
|
33365
33523
|
capScope: "device",
|
|
@@ -33534,6 +33692,12 @@ Object.freeze({
|
|
|
33534
33692
|
addonId: null,
|
|
33535
33693
|
access: "view"
|
|
33536
33694
|
},
|
|
33695
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
33696
|
+
capName: "pipeline-analytics",
|
|
33697
|
+
capScope: "device",
|
|
33698
|
+
addonId: null,
|
|
33699
|
+
access: "view"
|
|
33700
|
+
},
|
|
33537
33701
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
33538
33702
|
capName: "pipeline-analytics",
|
|
33539
33703
|
capScope: "device",
|
|
@@ -33612,6 +33776,12 @@ Object.freeze({
|
|
|
33612
33776
|
addonId: null,
|
|
33613
33777
|
access: "create"
|
|
33614
33778
|
},
|
|
33779
|
+
"pipelineAnalytics.relocateMedia": {
|
|
33780
|
+
capName: "pipeline-analytics",
|
|
33781
|
+
capScope: "device",
|
|
33782
|
+
addonId: null,
|
|
33783
|
+
access: "create"
|
|
33784
|
+
},
|
|
33615
33785
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
33616
33786
|
capName: "pipeline-analytics",
|
|
33617
33787
|
capScope: "device",
|
package/dist/addon.mjs
CHANGED
|
@@ -6630,7 +6630,7 @@ function method(input, output, options) {
|
|
|
6630
6630
|
input,
|
|
6631
6631
|
output,
|
|
6632
6632
|
kind: options?.kind ?? "query",
|
|
6633
|
-
auth: options
|
|
6633
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6634
6634
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6635
6635
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6636
6636
|
timeoutMs: options?.timeoutMs
|
|
@@ -6654,7 +6654,7 @@ function event(data) {
|
|
|
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.
|
|
@@ -7633,24 +7633,6 @@ var RecordingRetentionSchema = object({
|
|
|
7633
7633
|
maxSizeGb: number().min(0).optional()
|
|
7634
7634
|
});
|
|
7635
7635
|
/**
|
|
7636
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7637
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7638
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7639
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7640
|
-
*
|
|
7641
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7642
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7643
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7644
|
-
* written with.
|
|
7645
|
-
*/
|
|
7646
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7647
|
-
"minimal",
|
|
7648
|
-
"low",
|
|
7649
|
-
"standard",
|
|
7650
|
-
"high",
|
|
7651
|
-
"max"
|
|
7652
|
-
]);
|
|
7653
|
-
/**
|
|
7654
7636
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7655
7637
|
*
|
|
7656
7638
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7658,7 +7640,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7658
7640
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7659
7641
|
*
|
|
7660
7642
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7661
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7643
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7644
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7645
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7646
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7647
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7662
7648
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7663
7649
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7664
7650
|
*/
|
|
@@ -7681,14 +7667,7 @@ var RecordingConfigSchema = object({
|
|
|
7681
7667
|
* "off" is the absence of a covering band, never a band value.
|
|
7682
7668
|
*/
|
|
7683
7669
|
bands: array(RecordingBandSchema).default([]),
|
|
7684
|
-
retention: RecordingRetentionSchema.optional()
|
|
7685
|
-
/**
|
|
7686
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7687
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7688
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7689
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7690
|
-
*/
|
|
7691
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7670
|
+
retention: RecordingRetentionSchema.optional()
|
|
7692
7671
|
}).strict();
|
|
7693
7672
|
/**
|
|
7694
7673
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7764,10 +7743,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7764
7743
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7765
7744
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7766
7745
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7767
|
-
var
|
|
7746
|
+
var RelocateMediaInputSchema = object({
|
|
7768
7747
|
toLocationId: string(),
|
|
7769
7748
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7770
|
-
})
|
|
7749
|
+
});
|
|
7750
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7771
7751
|
/** The independently selectable logical storage classes. `recordings`
|
|
7772
7752
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7773
7753
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8062,7 +8042,26 @@ var LabelDefinitionSchema = object({
|
|
|
8062
8042
|
description: string().optional(),
|
|
8063
8043
|
icon: string().optional()
|
|
8064
8044
|
});
|
|
8065
|
-
|
|
8045
|
+
/**
|
|
8046
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8047
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8048
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8049
|
+
* detection pipeline executor actually routes.
|
|
8050
|
+
*
|
|
8051
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8052
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8053
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8054
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8055
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8056
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8057
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8058
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8059
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8060
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8061
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8062
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8063
|
+
*/
|
|
8064
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8066
8065
|
mapping: record(string(), _enum([
|
|
8067
8066
|
"person",
|
|
8068
8067
|
"vehicle",
|
|
@@ -8267,7 +8266,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8267
8266
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8268
8267
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8269
8268
|
*/
|
|
8270
|
-
classMap:
|
|
8269
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8271
8270
|
});
|
|
8272
8271
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8273
8272
|
format: literal("openvino"),
|
|
@@ -8297,7 +8296,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8297
8296
|
"segmentation"
|
|
8298
8297
|
]),
|
|
8299
8298
|
faceAlignment: boolean().optional(),
|
|
8300
|
-
classMap:
|
|
8299
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8301
8300
|
});
|
|
8302
8301
|
var ConvertResultSchema = object({
|
|
8303
8302
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9160,7 +9159,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9160
9159
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9161
9160
|
sectionLabel: string().optional()
|
|
9162
9161
|
});
|
|
9163
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9162
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9164
9163
|
var AddonHttpRouteSchema = object({
|
|
9165
9164
|
method: _enum([
|
|
9166
9165
|
"GET",
|
|
@@ -9395,7 +9394,7 @@ var WidgetMetadataSchema = object({
|
|
|
9395
9394
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9396
9395
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9397
9396
|
});
|
|
9398
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9397
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9399
9398
|
/**
|
|
9400
9399
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9401
9400
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11019,7 +11018,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11019
11018
|
stepId: string(),
|
|
11020
11019
|
entry: ModelCatalogEntrySchema
|
|
11021
11020
|
});
|
|
11022
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11021
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11023
11022
|
/**
|
|
11024
11023
|
* Query filter for settings-store collections.
|
|
11025
11024
|
*/
|
|
@@ -11106,7 +11105,8 @@ method(object({
|
|
|
11106
11105
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11107
11106
|
namespace: string().optional(),
|
|
11108
11107
|
collection: string(),
|
|
11109
|
-
filter: QueryFilterSchema.optional()
|
|
11108
|
+
filter: QueryFilterSchema.optional(),
|
|
11109
|
+
columns: array(string()).readonly().optional()
|
|
11110
11110
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11111
11111
|
namespace: string().optional(),
|
|
11112
11112
|
collection: string(),
|
|
@@ -11169,46 +11169,87 @@ var EngineInfoSchema = object({
|
|
|
11169
11169
|
kind: _enum(["relational", "vector"]),
|
|
11170
11170
|
displayName: string()
|
|
11171
11171
|
});
|
|
11172
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11172
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11173
11173
|
namespace: string().optional(),
|
|
11174
11174
|
collection: string(),
|
|
11175
11175
|
key: string()
|
|
11176
|
-
}), unknown()), method(object({
|
|
11176
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11177
11177
|
namespace: string().optional(),
|
|
11178
11178
|
collection: string(),
|
|
11179
11179
|
key: string(),
|
|
11180
11180
|
value: unknown()
|
|
11181
|
-
}), _void(), {
|
|
11181
|
+
}), _void(), {
|
|
11182
|
+
kind: "mutation",
|
|
11183
|
+
auth: "admin"
|
|
11184
|
+
}), method(object({
|
|
11182
11185
|
namespace: string().optional(),
|
|
11183
11186
|
collection: string(),
|
|
11184
|
-
filter: QueryFilterSchema.optional()
|
|
11185
|
-
|
|
11187
|
+
filter: QueryFilterSchema.optional(),
|
|
11188
|
+
/**
|
|
11189
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11190
|
+
*
|
|
11191
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11192
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11193
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11194
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11195
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11196
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11197
|
+
*
|
|
11198
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11199
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11200
|
+
* interface the engine destructures from. The field existed on both
|
|
11201
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11202
|
+
* registered provider against `InferProvider<cap>` —
|
|
11203
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11204
|
+
*
|
|
11205
|
+
* It is declared here anyway, and must stay in step with
|
|
11206
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11207
|
+
* to be able to see that this call carries a projection.
|
|
11208
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11209
|
+
*/
|
|
11210
|
+
columns: array(string()).readonly().optional()
|
|
11211
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11186
11212
|
namespace: string().optional(),
|
|
11187
11213
|
collection: string(),
|
|
11188
11214
|
record: SettingsRecordSchema
|
|
11189
|
-
}), _void(), {
|
|
11215
|
+
}), _void(), {
|
|
11216
|
+
kind: "mutation",
|
|
11217
|
+
auth: "admin"
|
|
11218
|
+
}), method(object({
|
|
11190
11219
|
namespace: string().optional(),
|
|
11191
11220
|
collection: string(),
|
|
11192
11221
|
id: string(),
|
|
11193
11222
|
data: record(string(), unknown())
|
|
11194
|
-
}), _void(), {
|
|
11223
|
+
}), _void(), {
|
|
11224
|
+
kind: "mutation",
|
|
11225
|
+
auth: "admin"
|
|
11226
|
+
}), method(object({
|
|
11195
11227
|
namespace: string().optional(),
|
|
11196
11228
|
collection: string(),
|
|
11197
11229
|
key: string()
|
|
11198
|
-
}), _void(), {
|
|
11230
|
+
}), _void(), {
|
|
11231
|
+
kind: "mutation",
|
|
11232
|
+
auth: "admin"
|
|
11233
|
+
}), method(object({
|
|
11199
11234
|
namespace: string().optional(),
|
|
11200
11235
|
collection: string(),
|
|
11201
11236
|
filter: MutationFilterSchema
|
|
11202
|
-
}), object({ deleted: number().int() }), {
|
|
11237
|
+
}), object({ deleted: number().int() }), {
|
|
11238
|
+
kind: "mutation",
|
|
11239
|
+
auth: "admin"
|
|
11240
|
+
}), method(object({
|
|
11203
11241
|
namespace: string().optional(),
|
|
11204
11242
|
collection: string(),
|
|
11205
11243
|
filter: MutationFilterSchema,
|
|
11206
11244
|
data: record(string(), unknown())
|
|
11207
|
-
}), object({ updated: number().int() }), {
|
|
11245
|
+
}), object({ updated: number().int() }), {
|
|
11246
|
+
kind: "mutation",
|
|
11247
|
+
auth: "admin"
|
|
11248
|
+
}), method(object({
|
|
11208
11249
|
namespace: string().optional(),
|
|
11209
11250
|
collection: string(),
|
|
11210
11251
|
filter: QueryFilterSchema.optional()
|
|
11211
|
-
}), number()), method(object({
|
|
11252
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11212
11253
|
namespace: string().optional(),
|
|
11213
11254
|
collection: string(),
|
|
11214
11255
|
field: string(),
|
|
@@ -11218,15 +11259,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11218
11259
|
}), array(object({
|
|
11219
11260
|
bucket: number().int(),
|
|
11220
11261
|
count: number().int()
|
|
11221
|
-
})).readonly()), method(object({
|
|
11262
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11222
11263
|
namespace: string().optional(),
|
|
11223
11264
|
collection: string()
|
|
11224
|
-
}), boolean()), method(object({
|
|
11265
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11225
11266
|
namespace: string().optional(),
|
|
11226
11267
|
collection: string(),
|
|
11227
11268
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11228
11269
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11229
|
-
}), _void(), {
|
|
11270
|
+
}), _void(), {
|
|
11271
|
+
kind: "mutation",
|
|
11272
|
+
auth: "admin"
|
|
11273
|
+
});
|
|
11230
11274
|
/**
|
|
11231
11275
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11232
11276
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12516,7 +12560,7 @@ method(object({
|
|
|
12516
12560
|
crop: _instanceof(Uint8Array),
|
|
12517
12561
|
width: number(),
|
|
12518
12562
|
height: number()
|
|
12519
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12563
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12520
12564
|
/**
|
|
12521
12565
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12522
12566
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12809,19 +12853,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12809
12853
|
runtime: ManagedRuntimeConfigSchema,
|
|
12810
12854
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12811
12855
|
timeoutMs: number().int().positive().optional()
|
|
12812
|
-
}), LlmGenerateResultSchema, {
|
|
12856
|
+
}), LlmGenerateResultSchema, {
|
|
12857
|
+
kind: "mutation",
|
|
12858
|
+
auth: "admin"
|
|
12859
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12813
12860
|
kind: "mutation",
|
|
12814
12861
|
auth: "admin"
|
|
12815
12862
|
}), method(object({}), _void(), {
|
|
12816
12863
|
kind: "mutation",
|
|
12817
12864
|
auth: "admin"
|
|
12818
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12865
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12819
12866
|
kind: "mutation",
|
|
12820
12867
|
auth: "admin"
|
|
12821
12868
|
}), method(object({ file: string() }), _void(), {
|
|
12822
12869
|
kind: "mutation",
|
|
12823
12870
|
auth: "admin"
|
|
12824
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12871
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12825
12872
|
/**
|
|
12826
12873
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12827
12874
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16332,7 +16379,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16332
16379
|
*/
|
|
16333
16380
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16334
16381
|
});
|
|
16335
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16382
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16336
16383
|
/**
|
|
16337
16384
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16338
16385
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17527,6 +17574,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17527
17574
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17528
17575
|
kind: "mutation",
|
|
17529
17576
|
auth: "admin"
|
|
17577
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17578
|
+
kind: "mutation",
|
|
17579
|
+
auth: "admin"
|
|
17580
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17581
|
+
kind: "query",
|
|
17582
|
+
auth: "admin"
|
|
17583
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17584
|
+
kind: "mutation",
|
|
17585
|
+
auth: "admin"
|
|
17530
17586
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17531
17587
|
kind: "query",
|
|
17532
17588
|
auth: "admin"
|
|
@@ -17681,6 +17737,11 @@ object({
|
|
|
17681
17737
|
"jpeg"
|
|
17682
17738
|
])
|
|
17683
17739
|
});
|
|
17740
|
+
/**
|
|
17741
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17742
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17743
|
+
* other process or execution group.
|
|
17744
|
+
*/
|
|
17684
17745
|
var FrameRefSchema = object({
|
|
17685
17746
|
registryId: string().min(1),
|
|
17686
17747
|
id: string().min(1),
|
|
@@ -19990,7 +20051,7 @@ method(object({
|
|
|
19990
20051
|
* linking rather than produce an eternal token.
|
|
19991
20052
|
*/
|
|
19992
20053
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
19993
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
20054
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
19994
20055
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
19995
20056
|
providerId: string().min(1),
|
|
19996
20057
|
displayName: string().min(1),
|
|
@@ -20085,10 +20146,13 @@ var EvictResultSchema = object({
|
|
|
20085
20146
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20086
20147
|
exhausted: boolean()
|
|
20087
20148
|
});
|
|
20088
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20149
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20089
20150
|
locationId: string(),
|
|
20090
20151
|
targetBytes: number().int().positive()
|
|
20091
|
-
}), EvictResultSchema, {
|
|
20152
|
+
}), EvictResultSchema, {
|
|
20153
|
+
kind: "mutation",
|
|
20154
|
+
auth: "admin"
|
|
20155
|
+
});
|
|
20092
20156
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20093
20157
|
kind: "mutation",
|
|
20094
20158
|
auth: "admin"
|
|
@@ -20148,26 +20212,50 @@ var ReadChunkInputSchema = object({
|
|
|
20148
20212
|
length: number()
|
|
20149
20213
|
});
|
|
20150
20214
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20151
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20215
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20152
20216
|
location: StorageLocationSchema,
|
|
20153
20217
|
relativePath: string()
|
|
20154
|
-
}), string()), method(object({
|
|
20218
|
+
}), string(), { auth: "admin" }), method(object({
|
|
20155
20219
|
location: StorageLocationSchema,
|
|
20156
20220
|
relativePath: string(),
|
|
20157
20221
|
data: _instanceof(Uint8Array)
|
|
20158
|
-
}), _void(), {
|
|
20222
|
+
}), _void(), {
|
|
20223
|
+
kind: "mutation",
|
|
20224
|
+
auth: "admin"
|
|
20225
|
+
}), method(object({
|
|
20159
20226
|
location: StorageLocationSchema,
|
|
20160
20227
|
relativePath: string()
|
|
20161
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20228
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20162
20229
|
location: StorageLocationSchema,
|
|
20163
20230
|
relativePath: string()
|
|
20164
|
-
}), boolean()), method(object({
|
|
20231
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20165
20232
|
location: StorageLocationSchema,
|
|
20166
20233
|
prefix: string().optional()
|
|
20167
|
-
}), array(string()).readonly()), method(object({
|
|
20234
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
20168
20235
|
location: StorageLocationSchema,
|
|
20169
20236
|
relativePath: string()
|
|
20170
|
-
}), _void(), {
|
|
20237
|
+
}), _void(), {
|
|
20238
|
+
kind: "mutation",
|
|
20239
|
+
auth: "admin"
|
|
20240
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20241
|
+
kind: "mutation",
|
|
20242
|
+
auth: "admin"
|
|
20243
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20244
|
+
kind: "mutation",
|
|
20245
|
+
auth: "admin"
|
|
20246
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20247
|
+
kind: "mutation",
|
|
20248
|
+
auth: "admin"
|
|
20249
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20250
|
+
kind: "mutation",
|
|
20251
|
+
auth: "admin"
|
|
20252
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20253
|
+
kind: "mutation",
|
|
20254
|
+
auth: "admin"
|
|
20255
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20256
|
+
kind: "mutation",
|
|
20257
|
+
auth: "admin"
|
|
20258
|
+
});
|
|
20171
20259
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20172
20260
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20173
20261
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20425,7 +20513,8 @@ method(object({
|
|
|
20425
20513
|
access: "create"
|
|
20426
20514
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20427
20515
|
kind: "mutation",
|
|
20428
|
-
access: "view"
|
|
20516
|
+
access: "view",
|
|
20517
|
+
auth: "admin"
|
|
20429
20518
|
}), method(object({
|
|
20430
20519
|
/** Required — the user the assertion belongs to (verified). */
|
|
20431
20520
|
userId: string(),
|
|
@@ -20433,10 +20522,12 @@ method(object({
|
|
|
20433
20522
|
response: record(string(), unknown())
|
|
20434
20523
|
}), object({ verified: boolean() }), {
|
|
20435
20524
|
kind: "mutation",
|
|
20436
|
-
access: "view"
|
|
20525
|
+
access: "view",
|
|
20526
|
+
auth: "admin"
|
|
20437
20527
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20438
20528
|
kind: "mutation",
|
|
20439
|
-
access: "view"
|
|
20529
|
+
access: "view",
|
|
20530
|
+
auth: "admin"
|
|
20440
20531
|
}), method(object({
|
|
20441
20532
|
/** AuthenticationResponseJSON from the browser. */
|
|
20442
20533
|
response: record(string(), unknown()) }), object({
|
|
@@ -20444,7 +20535,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20444
20535
|
userId: string().nullable()
|
|
20445
20536
|
}), {
|
|
20446
20537
|
kind: "mutation",
|
|
20447
|
-
access: "view"
|
|
20538
|
+
access: "view",
|
|
20539
|
+
auth: "admin"
|
|
20448
20540
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20449
20541
|
userId: string(),
|
|
20450
20542
|
credentialId: string()
|
|
@@ -20616,7 +20708,19 @@ var VectorStatsResultSchema = object({
|
|
|
20616
20708
|
/** False when the backend ranks approximately. */
|
|
20617
20709
|
exact: boolean()
|
|
20618
20710
|
});
|
|
20619
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20711
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20712
|
+
kind: "mutation",
|
|
20713
|
+
auth: "admin"
|
|
20714
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20715
|
+
kind: "mutation",
|
|
20716
|
+
auth: "admin"
|
|
20717
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20718
|
+
kind: "mutation",
|
|
20719
|
+
auth: "admin"
|
|
20720
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20721
|
+
kind: "mutation",
|
|
20722
|
+
auth: "admin"
|
|
20723
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20620
20724
|
var ClipSchema = object({
|
|
20621
20725
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20622
20726
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23077,7 +23181,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23077
23181
|
sizeBytes: number(),
|
|
23078
23182
|
timestamp: number()
|
|
23079
23183
|
});
|
|
23080
|
-
method(
|
|
23184
|
+
method(object({
|
|
23185
|
+
/**
|
|
23186
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23187
|
+
*
|
|
23188
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23189
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23190
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23191
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23192
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23193
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23194
|
+
*
|
|
23195
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23196
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23197
|
+
*
|
|
23198
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23199
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23200
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23201
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23202
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23203
|
+
*/
|
|
23204
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
23081
23205
|
kind: "mutation",
|
|
23082
23206
|
auth: "admin"
|
|
23083
23207
|
}), method(object({
|
|
@@ -25967,8 +26091,10 @@ var PlateInfoSchema = object({
|
|
|
25967
26091
|
keyFrameMediaKey: string().optional(),
|
|
25968
26092
|
base64: string().optional(),
|
|
25969
26093
|
/**
|
|
25970
|
-
* Same crop as a data-plane URL
|
|
25971
|
-
* never inlines JPEG; `listPlates`
|
|
26094
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26095
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26096
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26097
|
+
* left at its `true` default.
|
|
25972
26098
|
*/
|
|
25973
26099
|
cropUrl: string().optional()
|
|
25974
26100
|
});
|
|
@@ -25988,14 +26114,34 @@ var PlateClusterSchema = object({
|
|
|
25988
26114
|
});
|
|
25989
26115
|
method(object({
|
|
25990
26116
|
deviceId: number().int().optional(),
|
|
25991
|
-
limit: number().int().positive().optional()
|
|
26117
|
+
limit: number().int().positive().optional(),
|
|
26118
|
+
/**
|
|
26119
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26120
|
+
* behaviour, kept so no caller breaks.
|
|
26121
|
+
*
|
|
26122
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26123
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26124
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26125
|
+
* metadata without them — and the browser then caches the images.
|
|
26126
|
+
*
|
|
26127
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26128
|
+
* plates were the one gallery list left without it.
|
|
26129
|
+
*
|
|
26130
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26131
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26132
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26133
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26134
|
+
*/
|
|
26135
|
+
includeCrops: boolean().optional()
|
|
25992
26136
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
25993
26137
|
deviceId: number().int(),
|
|
25994
26138
|
trackId: string()
|
|
25995
26139
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
25996
26140
|
text: string().min(1),
|
|
25997
26141
|
maxDistance: number().int().min(0).optional(),
|
|
25998
|
-
limit: number().int().positive().optional()
|
|
26142
|
+
limit: number().int().positive().optional(),
|
|
26143
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26144
|
+
includeCrops: boolean().optional()
|
|
25999
26145
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
26000
26146
|
maxDistance: number().int().min(0).optional(),
|
|
26001
26147
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -26009,7 +26155,13 @@ method(object({
|
|
|
26009
26155
|
}), method(object({ plateId: string() }), _void(), {
|
|
26010
26156
|
kind: "mutation",
|
|
26011
26157
|
auth: "admin"
|
|
26012
|
-
}), method(
|
|
26158
|
+
}), method(object({
|
|
26159
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26160
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26161
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26162
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26163
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26164
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
26013
26165
|
kind: "mutation",
|
|
26014
26166
|
auth: "admin"
|
|
26015
26167
|
}), method(object({
|
|
@@ -33336,6 +33488,12 @@ Object.freeze({
|
|
|
33336
33488
|
addonId: null,
|
|
33337
33489
|
access: "create"
|
|
33338
33490
|
},
|
|
33491
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
33492
|
+
capName: "pipeline-analytics",
|
|
33493
|
+
capScope: "device",
|
|
33494
|
+
addonId: null,
|
|
33495
|
+
access: "create"
|
|
33496
|
+
},
|
|
33339
33497
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33340
33498
|
capName: "pipeline-analytics",
|
|
33341
33499
|
capScope: "device",
|
|
@@ -33510,6 +33668,12 @@ Object.freeze({
|
|
|
33510
33668
|
addonId: null,
|
|
33511
33669
|
access: "view"
|
|
33512
33670
|
},
|
|
33671
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
33672
|
+
capName: "pipeline-analytics",
|
|
33673
|
+
capScope: "device",
|
|
33674
|
+
addonId: null,
|
|
33675
|
+
access: "view"
|
|
33676
|
+
},
|
|
33513
33677
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
33514
33678
|
capName: "pipeline-analytics",
|
|
33515
33679
|
capScope: "device",
|
|
@@ -33588,6 +33752,12 @@ Object.freeze({
|
|
|
33588
33752
|
addonId: null,
|
|
33589
33753
|
access: "create"
|
|
33590
33754
|
},
|
|
33755
|
+
"pipelineAnalytics.relocateMedia": {
|
|
33756
|
+
capName: "pipeline-analytics",
|
|
33757
|
+
capScope: "device",
|
|
33758
|
+
addonId: null,
|
|
33759
|
+
access: "create"
|
|
33760
|
+
},
|
|
33591
33761
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
33592
33762
|
capName: "pipeline-analytics",
|
|
33593
33763
|
capScope: "device",
|