@camstack/addon-decoder-ffmpeg 1.2.27 → 1.2.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +249 -79
- package/dist/index.mjs +249 -79
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -6635,7 +6635,7 @@ function method(input, output, options) {
|
|
|
6635
6635
|
input,
|
|
6636
6636
|
output,
|
|
6637
6637
|
kind: options?.kind ?? "query",
|
|
6638
|
-
auth: options
|
|
6638
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6639
6639
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6640
6640
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6641
6641
|
timeoutMs: options?.timeoutMs
|
|
@@ -6655,7 +6655,7 @@ function systemMethod(input, output, options) {
|
|
|
6655
6655
|
}
|
|
6656
6656
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6657
6657
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6658
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6658
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6659
6659
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6660
6660
|
DeviceType["Camera"] = "camera";
|
|
6661
6661
|
DeviceType["Hub"] = "hub";
|
|
@@ -6976,7 +6976,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
6976
6976
|
}({});
|
|
6977
6977
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
6978
6978
|
var VersionOutputSchema = object({ version: string() });
|
|
6979
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
6979
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
6980
6980
|
/**
|
|
6981
6981
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
6982
6982
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7602,24 +7602,6 @@ var RecordingRetentionSchema = object({
|
|
|
7602
7602
|
maxSizeGb: number().min(0).optional()
|
|
7603
7603
|
});
|
|
7604
7604
|
/**
|
|
7605
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7606
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7607
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7608
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7609
|
-
*
|
|
7610
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7611
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7612
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7613
|
-
* written with.
|
|
7614
|
-
*/
|
|
7615
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7616
|
-
"minimal",
|
|
7617
|
-
"low",
|
|
7618
|
-
"standard",
|
|
7619
|
-
"high",
|
|
7620
|
-
"max"
|
|
7621
|
-
]);
|
|
7622
|
-
/**
|
|
7623
7605
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7624
7606
|
*
|
|
7625
7607
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7627,7 +7609,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7627
7609
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7628
7610
|
*
|
|
7629
7611
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7630
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7612
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7613
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7614
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7615
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7616
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7631
7617
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7632
7618
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7633
7619
|
*/
|
|
@@ -7650,14 +7636,7 @@ var RecordingConfigSchema = object({
|
|
|
7650
7636
|
* "off" is the absence of a covering band, never a band value.
|
|
7651
7637
|
*/
|
|
7652
7638
|
bands: array(RecordingBandSchema).default([]),
|
|
7653
|
-
retention: RecordingRetentionSchema.optional()
|
|
7654
|
-
/**
|
|
7655
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7656
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7657
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7658
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7659
|
-
*/
|
|
7660
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7639
|
+
retention: RecordingRetentionSchema.optional()
|
|
7661
7640
|
}).strict();
|
|
7662
7641
|
/**
|
|
7663
7642
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7733,10 +7712,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7733
7712
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7734
7713
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7735
7714
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7736
|
-
var
|
|
7715
|
+
var RelocateMediaInputSchema = object({
|
|
7737
7716
|
toLocationId: string(),
|
|
7738
7717
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7739
|
-
})
|
|
7718
|
+
});
|
|
7719
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7740
7720
|
/** The independently selectable logical storage classes. `recordings`
|
|
7741
7721
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7742
7722
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8031,7 +8011,26 @@ var LabelDefinitionSchema = object({
|
|
|
8031
8011
|
description: string().optional(),
|
|
8032
8012
|
icon: string().optional()
|
|
8033
8013
|
});
|
|
8034
|
-
|
|
8014
|
+
/**
|
|
8015
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8016
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8017
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8018
|
+
* detection pipeline executor actually routes.
|
|
8019
|
+
*
|
|
8020
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8021
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8022
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8023
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8024
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8025
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8026
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8027
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8028
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8029
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8030
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8031
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8032
|
+
*/
|
|
8033
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8035
8034
|
mapping: record(string(), _enum([
|
|
8036
8035
|
"person",
|
|
8037
8036
|
"vehicle",
|
|
@@ -8236,7 +8235,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8236
8235
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8237
8236
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8238
8237
|
*/
|
|
8239
|
-
classMap:
|
|
8238
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8240
8239
|
});
|
|
8241
8240
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8242
8241
|
format: literal("openvino"),
|
|
@@ -8266,7 +8265,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8266
8265
|
"segmentation"
|
|
8267
8266
|
]),
|
|
8268
8267
|
faceAlignment: boolean().optional(),
|
|
8269
|
-
classMap:
|
|
8268
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8270
8269
|
});
|
|
8271
8270
|
var ConvertResultSchema = object({
|
|
8272
8271
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9129,7 +9128,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9129
9128
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9130
9129
|
sectionLabel: string().optional()
|
|
9131
9130
|
});
|
|
9132
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9131
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9133
9132
|
var AddonHttpRouteSchema = object({
|
|
9134
9133
|
method: _enum([
|
|
9135
9134
|
"GET",
|
|
@@ -9364,7 +9363,7 @@ var WidgetMetadataSchema = object({
|
|
|
9364
9363
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9365
9364
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9366
9365
|
});
|
|
9367
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9366
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9368
9367
|
/**
|
|
9369
9368
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9370
9369
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -10923,7 +10922,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
10923
10922
|
stepId: string(),
|
|
10924
10923
|
entry: ModelCatalogEntrySchema
|
|
10925
10924
|
});
|
|
10926
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
10925
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
10927
10926
|
/**
|
|
10928
10927
|
* Query filter for settings-store collections.
|
|
10929
10928
|
*/
|
|
@@ -11010,7 +11009,8 @@ method(object({
|
|
|
11010
11009
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11011
11010
|
namespace: string().optional(),
|
|
11012
11011
|
collection: string(),
|
|
11013
|
-
filter: QueryFilterSchema.optional()
|
|
11012
|
+
filter: QueryFilterSchema.optional(),
|
|
11013
|
+
columns: array(string()).readonly().optional()
|
|
11014
11014
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11015
11015
|
namespace: string().optional(),
|
|
11016
11016
|
collection: string(),
|
|
@@ -11073,46 +11073,87 @@ var EngineInfoSchema = object({
|
|
|
11073
11073
|
kind: _enum(["relational", "vector"]),
|
|
11074
11074
|
displayName: string()
|
|
11075
11075
|
});
|
|
11076
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11076
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11077
11077
|
namespace: string().optional(),
|
|
11078
11078
|
collection: string(),
|
|
11079
11079
|
key: string()
|
|
11080
|
-
}), unknown()), method(object({
|
|
11080
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11081
11081
|
namespace: string().optional(),
|
|
11082
11082
|
collection: string(),
|
|
11083
11083
|
key: string(),
|
|
11084
11084
|
value: unknown()
|
|
11085
|
-
}), _void(), {
|
|
11085
|
+
}), _void(), {
|
|
11086
|
+
kind: "mutation",
|
|
11087
|
+
auth: "admin"
|
|
11088
|
+
}), method(object({
|
|
11086
11089
|
namespace: string().optional(),
|
|
11087
11090
|
collection: string(),
|
|
11088
|
-
filter: QueryFilterSchema.optional()
|
|
11089
|
-
|
|
11091
|
+
filter: QueryFilterSchema.optional(),
|
|
11092
|
+
/**
|
|
11093
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11094
|
+
*
|
|
11095
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11096
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11097
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11098
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11099
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11100
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11101
|
+
*
|
|
11102
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11103
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11104
|
+
* interface the engine destructures from. The field existed on both
|
|
11105
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11106
|
+
* registered provider against `InferProvider<cap>` —
|
|
11107
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11108
|
+
*
|
|
11109
|
+
* It is declared here anyway, and must stay in step with
|
|
11110
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11111
|
+
* to be able to see that this call carries a projection.
|
|
11112
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11113
|
+
*/
|
|
11114
|
+
columns: array(string()).readonly().optional()
|
|
11115
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11090
11116
|
namespace: string().optional(),
|
|
11091
11117
|
collection: string(),
|
|
11092
11118
|
record: SettingsRecordSchema
|
|
11093
|
-
}), _void(), {
|
|
11119
|
+
}), _void(), {
|
|
11120
|
+
kind: "mutation",
|
|
11121
|
+
auth: "admin"
|
|
11122
|
+
}), method(object({
|
|
11094
11123
|
namespace: string().optional(),
|
|
11095
11124
|
collection: string(),
|
|
11096
11125
|
id: string(),
|
|
11097
11126
|
data: record(string(), unknown())
|
|
11098
|
-
}), _void(), {
|
|
11127
|
+
}), _void(), {
|
|
11128
|
+
kind: "mutation",
|
|
11129
|
+
auth: "admin"
|
|
11130
|
+
}), method(object({
|
|
11099
11131
|
namespace: string().optional(),
|
|
11100
11132
|
collection: string(),
|
|
11101
11133
|
key: string()
|
|
11102
|
-
}), _void(), {
|
|
11134
|
+
}), _void(), {
|
|
11135
|
+
kind: "mutation",
|
|
11136
|
+
auth: "admin"
|
|
11137
|
+
}), method(object({
|
|
11103
11138
|
namespace: string().optional(),
|
|
11104
11139
|
collection: string(),
|
|
11105
11140
|
filter: MutationFilterSchema
|
|
11106
|
-
}), object({ deleted: number().int() }), {
|
|
11141
|
+
}), object({ deleted: number().int() }), {
|
|
11142
|
+
kind: "mutation",
|
|
11143
|
+
auth: "admin"
|
|
11144
|
+
}), method(object({
|
|
11107
11145
|
namespace: string().optional(),
|
|
11108
11146
|
collection: string(),
|
|
11109
11147
|
filter: MutationFilterSchema,
|
|
11110
11148
|
data: record(string(), unknown())
|
|
11111
|
-
}), object({ updated: number().int() }), {
|
|
11149
|
+
}), object({ updated: number().int() }), {
|
|
11150
|
+
kind: "mutation",
|
|
11151
|
+
auth: "admin"
|
|
11152
|
+
}), method(object({
|
|
11112
11153
|
namespace: string().optional(),
|
|
11113
11154
|
collection: string(),
|
|
11114
11155
|
filter: QueryFilterSchema.optional()
|
|
11115
|
-
}), number()), method(object({
|
|
11156
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11116
11157
|
namespace: string().optional(),
|
|
11117
11158
|
collection: string(),
|
|
11118
11159
|
field: string(),
|
|
@@ -11122,15 +11163,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11122
11163
|
}), array(object({
|
|
11123
11164
|
bucket: number().int(),
|
|
11124
11165
|
count: number().int()
|
|
11125
|
-
})).readonly()), method(object({
|
|
11166
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11126
11167
|
namespace: string().optional(),
|
|
11127
11168
|
collection: string()
|
|
11128
|
-
}), boolean()), method(object({
|
|
11169
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11129
11170
|
namespace: string().optional(),
|
|
11130
11171
|
collection: string(),
|
|
11131
11172
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11132
11173
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11133
|
-
}), _void(), {
|
|
11174
|
+
}), _void(), {
|
|
11175
|
+
kind: "mutation",
|
|
11176
|
+
auth: "admin"
|
|
11177
|
+
});
|
|
11134
11178
|
/**
|
|
11135
11179
|
* Stable UI option list for the `hwaccel` setting. Decoder addons
|
|
11136
11180
|
* reuse this for `globalSettingsSchema()` so the dropdown is
|
|
@@ -12351,7 +12395,7 @@ method(object({
|
|
|
12351
12395
|
crop: _instanceof(Uint8Array),
|
|
12352
12396
|
width: number(),
|
|
12353
12397
|
height: number()
|
|
12354
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12398
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12355
12399
|
/**
|
|
12356
12400
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12357
12401
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12644,19 +12688,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12644
12688
|
runtime: ManagedRuntimeConfigSchema,
|
|
12645
12689
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12646
12690
|
timeoutMs: number().int().positive().optional()
|
|
12647
|
-
}), LlmGenerateResultSchema, {
|
|
12691
|
+
}), LlmGenerateResultSchema, {
|
|
12692
|
+
kind: "mutation",
|
|
12693
|
+
auth: "admin"
|
|
12694
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12648
12695
|
kind: "mutation",
|
|
12649
12696
|
auth: "admin"
|
|
12650
12697
|
}), method(object({}), _void(), {
|
|
12651
12698
|
kind: "mutation",
|
|
12652
12699
|
auth: "admin"
|
|
12653
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12700
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12654
12701
|
kind: "mutation",
|
|
12655
12702
|
auth: "admin"
|
|
12656
12703
|
}), method(object({ file: string() }), _void(), {
|
|
12657
12704
|
kind: "mutation",
|
|
12658
12705
|
auth: "admin"
|
|
12659
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12706
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12660
12707
|
/**
|
|
12661
12708
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12662
12709
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16129,7 +16176,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16129
16176
|
*/
|
|
16130
16177
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16131
16178
|
});
|
|
16132
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16179
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16133
16180
|
/**
|
|
16134
16181
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16135
16182
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17324,6 +17371,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17324
17371
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17325
17372
|
kind: "mutation",
|
|
17326
17373
|
auth: "admin"
|
|
17374
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17375
|
+
kind: "mutation",
|
|
17376
|
+
auth: "admin"
|
|
17377
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17378
|
+
kind: "query",
|
|
17379
|
+
auth: "admin"
|
|
17380
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17381
|
+
kind: "mutation",
|
|
17382
|
+
auth: "admin"
|
|
17327
17383
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17328
17384
|
kind: "query",
|
|
17329
17385
|
auth: "admin"
|
|
@@ -17478,6 +17534,11 @@ object({
|
|
|
17478
17534
|
"jpeg"
|
|
17479
17535
|
])
|
|
17480
17536
|
});
|
|
17537
|
+
/**
|
|
17538
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17539
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17540
|
+
* other process or execution group.
|
|
17541
|
+
*/
|
|
17481
17542
|
var FrameRefSchema = object({
|
|
17482
17543
|
registryId: string().min(1),
|
|
17483
17544
|
id: string().min(1),
|
|
@@ -19643,7 +19704,7 @@ method(object({
|
|
|
19643
19704
|
* linking rather than produce an eternal token.
|
|
19644
19705
|
*/
|
|
19645
19706
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
19646
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
19707
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
19647
19708
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
19648
19709
|
providerId: string().min(1),
|
|
19649
19710
|
displayName: string().min(1),
|
|
@@ -19738,10 +19799,13 @@ var EvictResultSchema = object({
|
|
|
19738
19799
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
19739
19800
|
exhausted: boolean()
|
|
19740
19801
|
});
|
|
19741
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
19802
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
19742
19803
|
locationId: string(),
|
|
19743
19804
|
targetBytes: number().int().positive()
|
|
19744
|
-
}), EvictResultSchema, {
|
|
19805
|
+
}), EvictResultSchema, {
|
|
19806
|
+
kind: "mutation",
|
|
19807
|
+
auth: "admin"
|
|
19808
|
+
});
|
|
19745
19809
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
19746
19810
|
kind: "mutation",
|
|
19747
19811
|
auth: "admin"
|
|
@@ -19801,26 +19865,50 @@ var ReadChunkInputSchema = object({
|
|
|
19801
19865
|
length: number()
|
|
19802
19866
|
});
|
|
19803
19867
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
19804
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
19868
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
19805
19869
|
location: StorageLocationSchema,
|
|
19806
19870
|
relativePath: string()
|
|
19807
|
-
}), string()), method(object({
|
|
19871
|
+
}), string(), { auth: "admin" }), method(object({
|
|
19808
19872
|
location: StorageLocationSchema,
|
|
19809
19873
|
relativePath: string(),
|
|
19810
19874
|
data: _instanceof(Uint8Array)
|
|
19811
|
-
}), _void(), {
|
|
19875
|
+
}), _void(), {
|
|
19876
|
+
kind: "mutation",
|
|
19877
|
+
auth: "admin"
|
|
19878
|
+
}), method(object({
|
|
19812
19879
|
location: StorageLocationSchema,
|
|
19813
19880
|
relativePath: string()
|
|
19814
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
19881
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
19815
19882
|
location: StorageLocationSchema,
|
|
19816
19883
|
relativePath: string()
|
|
19817
|
-
}), boolean()), method(object({
|
|
19884
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
19818
19885
|
location: StorageLocationSchema,
|
|
19819
19886
|
prefix: string().optional()
|
|
19820
|
-
}), array(string()).readonly()), method(object({
|
|
19887
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
19821
19888
|
location: StorageLocationSchema,
|
|
19822
19889
|
relativePath: string()
|
|
19823
|
-
}), _void(), {
|
|
19890
|
+
}), _void(), {
|
|
19891
|
+
kind: "mutation",
|
|
19892
|
+
auth: "admin"
|
|
19893
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
19894
|
+
kind: "mutation",
|
|
19895
|
+
auth: "admin"
|
|
19896
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
19897
|
+
kind: "mutation",
|
|
19898
|
+
auth: "admin"
|
|
19899
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
19900
|
+
kind: "mutation",
|
|
19901
|
+
auth: "admin"
|
|
19902
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
19903
|
+
kind: "mutation",
|
|
19904
|
+
auth: "admin"
|
|
19905
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
19906
|
+
kind: "mutation",
|
|
19907
|
+
auth: "admin"
|
|
19908
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
19909
|
+
kind: "mutation",
|
|
19910
|
+
auth: "admin"
|
|
19911
|
+
});
|
|
19824
19912
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
19825
19913
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
19826
19914
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20078,7 +20166,8 @@ method(object({
|
|
|
20078
20166
|
access: "create"
|
|
20079
20167
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20080
20168
|
kind: "mutation",
|
|
20081
|
-
access: "view"
|
|
20169
|
+
access: "view",
|
|
20170
|
+
auth: "admin"
|
|
20082
20171
|
}), method(object({
|
|
20083
20172
|
/** Required — the user the assertion belongs to (verified). */
|
|
20084
20173
|
userId: string(),
|
|
@@ -20086,10 +20175,12 @@ method(object({
|
|
|
20086
20175
|
response: record(string(), unknown())
|
|
20087
20176
|
}), object({ verified: boolean() }), {
|
|
20088
20177
|
kind: "mutation",
|
|
20089
|
-
access: "view"
|
|
20178
|
+
access: "view",
|
|
20179
|
+
auth: "admin"
|
|
20090
20180
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20091
20181
|
kind: "mutation",
|
|
20092
|
-
access: "view"
|
|
20182
|
+
access: "view",
|
|
20183
|
+
auth: "admin"
|
|
20093
20184
|
}), method(object({
|
|
20094
20185
|
/** AuthenticationResponseJSON from the browser. */
|
|
20095
20186
|
response: record(string(), unknown()) }), object({
|
|
@@ -20097,7 +20188,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20097
20188
|
userId: string().nullable()
|
|
20098
20189
|
}), {
|
|
20099
20190
|
kind: "mutation",
|
|
20100
|
-
access: "view"
|
|
20191
|
+
access: "view",
|
|
20192
|
+
auth: "admin"
|
|
20101
20193
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20102
20194
|
userId: string(),
|
|
20103
20195
|
credentialId: string()
|
|
@@ -20269,7 +20361,19 @@ var VectorStatsResultSchema = object({
|
|
|
20269
20361
|
/** False when the backend ranks approximately. */
|
|
20270
20362
|
exact: boolean()
|
|
20271
20363
|
});
|
|
20272
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20364
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20365
|
+
kind: "mutation",
|
|
20366
|
+
auth: "admin"
|
|
20367
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20368
|
+
kind: "mutation",
|
|
20369
|
+
auth: "admin"
|
|
20370
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20371
|
+
kind: "mutation",
|
|
20372
|
+
auth: "admin"
|
|
20373
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20374
|
+
kind: "mutation",
|
|
20375
|
+
auth: "admin"
|
|
20376
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20273
20377
|
var ClipSchema = object({
|
|
20274
20378
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20275
20379
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -21992,7 +22096,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
21992
22096
|
sizeBytes: number(),
|
|
21993
22097
|
timestamp: number()
|
|
21994
22098
|
});
|
|
21995
|
-
method(
|
|
22099
|
+
method(object({
|
|
22100
|
+
/**
|
|
22101
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
22102
|
+
*
|
|
22103
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
22104
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
22105
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
22106
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
22107
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
22108
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
22109
|
+
*
|
|
22110
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
22111
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
22112
|
+
*
|
|
22113
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
22114
|
+
* next train** — the hub router validates cap inputs against its own
|
|
22115
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
22116
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
22117
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
22118
|
+
*/
|
|
22119
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
21996
22120
|
kind: "mutation",
|
|
21997
22121
|
auth: "admin"
|
|
21998
22122
|
}), method(object({
|
|
@@ -24139,8 +24263,10 @@ var PlateInfoSchema = object({
|
|
|
24139
24263
|
keyFrameMediaKey: string().optional(),
|
|
24140
24264
|
base64: string().optional(),
|
|
24141
24265
|
/**
|
|
24142
|
-
* Same crop as a data-plane URL
|
|
24143
|
-
* never inlines JPEG; `listPlates`
|
|
24266
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
24267
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
24268
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
24269
|
+
* left at its `true` default.
|
|
24144
24270
|
*/
|
|
24145
24271
|
cropUrl: string().optional()
|
|
24146
24272
|
});
|
|
@@ -24160,14 +24286,34 @@ var PlateClusterSchema = object({
|
|
|
24160
24286
|
});
|
|
24161
24287
|
method(object({
|
|
24162
24288
|
deviceId: number().int().optional(),
|
|
24163
|
-
limit: number().int().positive().optional()
|
|
24289
|
+
limit: number().int().positive().optional(),
|
|
24290
|
+
/**
|
|
24291
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
24292
|
+
* behaviour, kept so no caller breaks.
|
|
24293
|
+
*
|
|
24294
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
24295
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
24296
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
24297
|
+
* metadata without them — and the browser then caches the images.
|
|
24298
|
+
*
|
|
24299
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
24300
|
+
* plates were the one gallery list left without it.
|
|
24301
|
+
*
|
|
24302
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
24303
|
+
* next train.** The hub router validates cap inputs against its own
|
|
24304
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
24305
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
24306
|
+
*/
|
|
24307
|
+
includeCrops: boolean().optional()
|
|
24164
24308
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
24165
24309
|
deviceId: number().int(),
|
|
24166
24310
|
trackId: string()
|
|
24167
24311
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
24168
24312
|
text: string().min(1),
|
|
24169
24313
|
maxDistance: number().int().min(0).optional(),
|
|
24170
|
-
limit: number().int().positive().optional()
|
|
24314
|
+
limit: number().int().positive().optional(),
|
|
24315
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
24316
|
+
includeCrops: boolean().optional()
|
|
24171
24317
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
24172
24318
|
maxDistance: number().int().min(0).optional(),
|
|
24173
24319
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -24181,7 +24327,13 @@ method(object({
|
|
|
24181
24327
|
}), method(object({ plateId: string() }), _void(), {
|
|
24182
24328
|
kind: "mutation",
|
|
24183
24329
|
auth: "admin"
|
|
24184
|
-
}), method(
|
|
24330
|
+
}), method(object({
|
|
24331
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
24332
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
24333
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
24334
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
24335
|
+
* resolves to `false` and is exactly the intended default. */
|
|
24336
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
24185
24337
|
kind: "mutation",
|
|
24186
24338
|
auth: "admin"
|
|
24187
24339
|
}), method(object({
|
|
@@ -29558,6 +29710,12 @@ Object.freeze({
|
|
|
29558
29710
|
addonId: null,
|
|
29559
29711
|
access: "create"
|
|
29560
29712
|
},
|
|
29713
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
29714
|
+
capName: "pipeline-analytics",
|
|
29715
|
+
capScope: "device",
|
|
29716
|
+
addonId: null,
|
|
29717
|
+
access: "create"
|
|
29718
|
+
},
|
|
29561
29719
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
29562
29720
|
capName: "pipeline-analytics",
|
|
29563
29721
|
capScope: "device",
|
|
@@ -29732,6 +29890,12 @@ Object.freeze({
|
|
|
29732
29890
|
addonId: null,
|
|
29733
29891
|
access: "view"
|
|
29734
29892
|
},
|
|
29893
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
29894
|
+
capName: "pipeline-analytics",
|
|
29895
|
+
capScope: "device",
|
|
29896
|
+
addonId: null,
|
|
29897
|
+
access: "view"
|
|
29898
|
+
},
|
|
29735
29899
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
29736
29900
|
capName: "pipeline-analytics",
|
|
29737
29901
|
capScope: "device",
|
|
@@ -29810,6 +29974,12 @@ Object.freeze({
|
|
|
29810
29974
|
addonId: null,
|
|
29811
29975
|
access: "create"
|
|
29812
29976
|
},
|
|
29977
|
+
"pipelineAnalytics.relocateMedia": {
|
|
29978
|
+
capName: "pipeline-analytics",
|
|
29979
|
+
capScope: "device",
|
|
29980
|
+
addonId: null,
|
|
29981
|
+
access: "create"
|
|
29982
|
+
},
|
|
29813
29983
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
29814
29984
|
capName: "pipeline-analytics",
|
|
29815
29985
|
capScope: "device",
|
package/dist/index.mjs
CHANGED
|
@@ -6631,7 +6631,7 @@ function method(input, output, options) {
|
|
|
6631
6631
|
input,
|
|
6632
6632
|
output,
|
|
6633
6633
|
kind: options?.kind ?? "query",
|
|
6634
|
-
auth: options
|
|
6634
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6635
6635
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6636
6636
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6637
6637
|
timeoutMs: options?.timeoutMs
|
|
@@ -6651,7 +6651,7 @@ function systemMethod(input, output, options) {
|
|
|
6651
6651
|
}
|
|
6652
6652
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6653
6653
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6654
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6654
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6655
6655
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6656
6656
|
DeviceType["Camera"] = "camera";
|
|
6657
6657
|
DeviceType["Hub"] = "hub";
|
|
@@ -6972,7 +6972,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
6972
6972
|
}({});
|
|
6973
6973
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
6974
6974
|
var VersionOutputSchema = object({ version: string() });
|
|
6975
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
6975
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
6976
6976
|
/**
|
|
6977
6977
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
6978
6978
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7598,24 +7598,6 @@ var RecordingRetentionSchema = object({
|
|
|
7598
7598
|
maxSizeGb: number().min(0).optional()
|
|
7599
7599
|
});
|
|
7600
7600
|
/**
|
|
7601
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7602
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7603
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7604
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7605
|
-
*
|
|
7606
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7607
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7608
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7609
|
-
* written with.
|
|
7610
|
-
*/
|
|
7611
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7612
|
-
"minimal",
|
|
7613
|
-
"low",
|
|
7614
|
-
"standard",
|
|
7615
|
-
"high",
|
|
7616
|
-
"max"
|
|
7617
|
-
]);
|
|
7618
|
-
/**
|
|
7619
7601
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7620
7602
|
*
|
|
7621
7603
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7623,7 +7605,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7623
7605
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7624
7606
|
*
|
|
7625
7607
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7626
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7608
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7609
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7610
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7611
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7612
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7627
7613
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7628
7614
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7629
7615
|
*/
|
|
@@ -7646,14 +7632,7 @@ var RecordingConfigSchema = object({
|
|
|
7646
7632
|
* "off" is the absence of a covering band, never a band value.
|
|
7647
7633
|
*/
|
|
7648
7634
|
bands: array(RecordingBandSchema).default([]),
|
|
7649
|
-
retention: RecordingRetentionSchema.optional()
|
|
7650
|
-
/**
|
|
7651
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7652
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7653
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7654
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7655
|
-
*/
|
|
7656
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7635
|
+
retention: RecordingRetentionSchema.optional()
|
|
7657
7636
|
}).strict();
|
|
7658
7637
|
/**
|
|
7659
7638
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7729,10 +7708,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7729
7708
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7730
7709
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7731
7710
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7732
|
-
var
|
|
7711
|
+
var RelocateMediaInputSchema = object({
|
|
7733
7712
|
toLocationId: string(),
|
|
7734
7713
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7735
|
-
})
|
|
7714
|
+
});
|
|
7715
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7736
7716
|
/** The independently selectable logical storage classes. `recordings`
|
|
7737
7717
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7738
7718
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8027,7 +8007,26 @@ var LabelDefinitionSchema = object({
|
|
|
8027
8007
|
description: string().optional(),
|
|
8028
8008
|
icon: string().optional()
|
|
8029
8009
|
});
|
|
8030
|
-
|
|
8010
|
+
/**
|
|
8011
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8012
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8013
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8014
|
+
* detection pipeline executor actually routes.
|
|
8015
|
+
*
|
|
8016
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8017
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8018
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8019
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8020
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8021
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8022
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8023
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8024
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8025
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8026
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8027
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8028
|
+
*/
|
|
8029
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8031
8030
|
mapping: record(string(), _enum([
|
|
8032
8031
|
"person",
|
|
8033
8032
|
"vehicle",
|
|
@@ -8232,7 +8231,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8232
8231
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8233
8232
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8234
8233
|
*/
|
|
8235
|
-
classMap:
|
|
8234
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8236
8235
|
});
|
|
8237
8236
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8238
8237
|
format: literal("openvino"),
|
|
@@ -8262,7 +8261,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8262
8261
|
"segmentation"
|
|
8263
8262
|
]),
|
|
8264
8263
|
faceAlignment: boolean().optional(),
|
|
8265
|
-
classMap:
|
|
8264
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8266
8265
|
});
|
|
8267
8266
|
var ConvertResultSchema = object({
|
|
8268
8267
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9125,7 +9124,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9125
9124
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9126
9125
|
sectionLabel: string().optional()
|
|
9127
9126
|
});
|
|
9128
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9127
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9129
9128
|
var AddonHttpRouteSchema = object({
|
|
9130
9129
|
method: _enum([
|
|
9131
9130
|
"GET",
|
|
@@ -9360,7 +9359,7 @@ var WidgetMetadataSchema = object({
|
|
|
9360
9359
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9361
9360
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9362
9361
|
});
|
|
9363
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9362
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9364
9363
|
/**
|
|
9365
9364
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9366
9365
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -10919,7 +10918,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
10919
10918
|
stepId: string(),
|
|
10920
10919
|
entry: ModelCatalogEntrySchema
|
|
10921
10920
|
});
|
|
10922
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
10921
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
10923
10922
|
/**
|
|
10924
10923
|
* Query filter for settings-store collections.
|
|
10925
10924
|
*/
|
|
@@ -11006,7 +11005,8 @@ method(object({
|
|
|
11006
11005
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11007
11006
|
namespace: string().optional(),
|
|
11008
11007
|
collection: string(),
|
|
11009
|
-
filter: QueryFilterSchema.optional()
|
|
11008
|
+
filter: QueryFilterSchema.optional(),
|
|
11009
|
+
columns: array(string()).readonly().optional()
|
|
11010
11010
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11011
11011
|
namespace: string().optional(),
|
|
11012
11012
|
collection: string(),
|
|
@@ -11069,46 +11069,87 @@ var EngineInfoSchema = object({
|
|
|
11069
11069
|
kind: _enum(["relational", "vector"]),
|
|
11070
11070
|
displayName: string()
|
|
11071
11071
|
});
|
|
11072
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11072
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11073
11073
|
namespace: string().optional(),
|
|
11074
11074
|
collection: string(),
|
|
11075
11075
|
key: string()
|
|
11076
|
-
}), unknown()), method(object({
|
|
11076
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11077
11077
|
namespace: string().optional(),
|
|
11078
11078
|
collection: string(),
|
|
11079
11079
|
key: string(),
|
|
11080
11080
|
value: unknown()
|
|
11081
|
-
}), _void(), {
|
|
11081
|
+
}), _void(), {
|
|
11082
|
+
kind: "mutation",
|
|
11083
|
+
auth: "admin"
|
|
11084
|
+
}), method(object({
|
|
11082
11085
|
namespace: string().optional(),
|
|
11083
11086
|
collection: string(),
|
|
11084
|
-
filter: QueryFilterSchema.optional()
|
|
11085
|
-
|
|
11087
|
+
filter: QueryFilterSchema.optional(),
|
|
11088
|
+
/**
|
|
11089
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11090
|
+
*
|
|
11091
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11092
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11093
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11094
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11095
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11096
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11097
|
+
*
|
|
11098
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11099
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11100
|
+
* interface the engine destructures from. The field existed on both
|
|
11101
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11102
|
+
* registered provider against `InferProvider<cap>` —
|
|
11103
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11104
|
+
*
|
|
11105
|
+
* It is declared here anyway, and must stay in step with
|
|
11106
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11107
|
+
* to be able to see that this call carries a projection.
|
|
11108
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11109
|
+
*/
|
|
11110
|
+
columns: array(string()).readonly().optional()
|
|
11111
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11086
11112
|
namespace: string().optional(),
|
|
11087
11113
|
collection: string(),
|
|
11088
11114
|
record: SettingsRecordSchema
|
|
11089
|
-
}), _void(), {
|
|
11115
|
+
}), _void(), {
|
|
11116
|
+
kind: "mutation",
|
|
11117
|
+
auth: "admin"
|
|
11118
|
+
}), method(object({
|
|
11090
11119
|
namespace: string().optional(),
|
|
11091
11120
|
collection: string(),
|
|
11092
11121
|
id: string(),
|
|
11093
11122
|
data: record(string(), unknown())
|
|
11094
|
-
}), _void(), {
|
|
11123
|
+
}), _void(), {
|
|
11124
|
+
kind: "mutation",
|
|
11125
|
+
auth: "admin"
|
|
11126
|
+
}), method(object({
|
|
11095
11127
|
namespace: string().optional(),
|
|
11096
11128
|
collection: string(),
|
|
11097
11129
|
key: string()
|
|
11098
|
-
}), _void(), {
|
|
11130
|
+
}), _void(), {
|
|
11131
|
+
kind: "mutation",
|
|
11132
|
+
auth: "admin"
|
|
11133
|
+
}), method(object({
|
|
11099
11134
|
namespace: string().optional(),
|
|
11100
11135
|
collection: string(),
|
|
11101
11136
|
filter: MutationFilterSchema
|
|
11102
|
-
}), object({ deleted: number().int() }), {
|
|
11137
|
+
}), object({ deleted: number().int() }), {
|
|
11138
|
+
kind: "mutation",
|
|
11139
|
+
auth: "admin"
|
|
11140
|
+
}), method(object({
|
|
11103
11141
|
namespace: string().optional(),
|
|
11104
11142
|
collection: string(),
|
|
11105
11143
|
filter: MutationFilterSchema,
|
|
11106
11144
|
data: record(string(), unknown())
|
|
11107
|
-
}), object({ updated: number().int() }), {
|
|
11145
|
+
}), object({ updated: number().int() }), {
|
|
11146
|
+
kind: "mutation",
|
|
11147
|
+
auth: "admin"
|
|
11148
|
+
}), method(object({
|
|
11108
11149
|
namespace: string().optional(),
|
|
11109
11150
|
collection: string(),
|
|
11110
11151
|
filter: QueryFilterSchema.optional()
|
|
11111
|
-
}), number()), method(object({
|
|
11152
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11112
11153
|
namespace: string().optional(),
|
|
11113
11154
|
collection: string(),
|
|
11114
11155
|
field: string(),
|
|
@@ -11118,15 +11159,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11118
11159
|
}), array(object({
|
|
11119
11160
|
bucket: number().int(),
|
|
11120
11161
|
count: number().int()
|
|
11121
|
-
})).readonly()), method(object({
|
|
11162
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11122
11163
|
namespace: string().optional(),
|
|
11123
11164
|
collection: string()
|
|
11124
|
-
}), boolean()), method(object({
|
|
11165
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11125
11166
|
namespace: string().optional(),
|
|
11126
11167
|
collection: string(),
|
|
11127
11168
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11128
11169
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11129
|
-
}), _void(), {
|
|
11170
|
+
}), _void(), {
|
|
11171
|
+
kind: "mutation",
|
|
11172
|
+
auth: "admin"
|
|
11173
|
+
});
|
|
11130
11174
|
/**
|
|
11131
11175
|
* Stable UI option list for the `hwaccel` setting. Decoder addons
|
|
11132
11176
|
* reuse this for `globalSettingsSchema()` so the dropdown is
|
|
@@ -12347,7 +12391,7 @@ method(object({
|
|
|
12347
12391
|
crop: _instanceof(Uint8Array),
|
|
12348
12392
|
width: number(),
|
|
12349
12393
|
height: number()
|
|
12350
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12394
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12351
12395
|
/**
|
|
12352
12396
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12353
12397
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12640,19 +12684,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12640
12684
|
runtime: ManagedRuntimeConfigSchema,
|
|
12641
12685
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12642
12686
|
timeoutMs: number().int().positive().optional()
|
|
12643
|
-
}), LlmGenerateResultSchema, {
|
|
12687
|
+
}), LlmGenerateResultSchema, {
|
|
12688
|
+
kind: "mutation",
|
|
12689
|
+
auth: "admin"
|
|
12690
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12644
12691
|
kind: "mutation",
|
|
12645
12692
|
auth: "admin"
|
|
12646
12693
|
}), method(object({}), _void(), {
|
|
12647
12694
|
kind: "mutation",
|
|
12648
12695
|
auth: "admin"
|
|
12649
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12696
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12650
12697
|
kind: "mutation",
|
|
12651
12698
|
auth: "admin"
|
|
12652
12699
|
}), method(object({ file: string() }), _void(), {
|
|
12653
12700
|
kind: "mutation",
|
|
12654
12701
|
auth: "admin"
|
|
12655
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12702
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12656
12703
|
/**
|
|
12657
12704
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12658
12705
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16125,7 +16172,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16125
16172
|
*/
|
|
16126
16173
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16127
16174
|
});
|
|
16128
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16175
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16129
16176
|
/**
|
|
16130
16177
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16131
16178
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17320,6 +17367,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17320
17367
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17321
17368
|
kind: "mutation",
|
|
17322
17369
|
auth: "admin"
|
|
17370
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17371
|
+
kind: "mutation",
|
|
17372
|
+
auth: "admin"
|
|
17373
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17374
|
+
kind: "query",
|
|
17375
|
+
auth: "admin"
|
|
17376
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17377
|
+
kind: "mutation",
|
|
17378
|
+
auth: "admin"
|
|
17323
17379
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17324
17380
|
kind: "query",
|
|
17325
17381
|
auth: "admin"
|
|
@@ -17474,6 +17530,11 @@ object({
|
|
|
17474
17530
|
"jpeg"
|
|
17475
17531
|
])
|
|
17476
17532
|
});
|
|
17533
|
+
/**
|
|
17534
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17535
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17536
|
+
* other process or execution group.
|
|
17537
|
+
*/
|
|
17477
17538
|
var FrameRefSchema = object({
|
|
17478
17539
|
registryId: string().min(1),
|
|
17479
17540
|
id: string().min(1),
|
|
@@ -19639,7 +19700,7 @@ method(object({
|
|
|
19639
19700
|
* linking rather than produce an eternal token.
|
|
19640
19701
|
*/
|
|
19641
19702
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
19642
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
19703
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
19643
19704
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
19644
19705
|
providerId: string().min(1),
|
|
19645
19706
|
displayName: string().min(1),
|
|
@@ -19734,10 +19795,13 @@ var EvictResultSchema = object({
|
|
|
19734
19795
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
19735
19796
|
exhausted: boolean()
|
|
19736
19797
|
});
|
|
19737
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
19798
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
19738
19799
|
locationId: string(),
|
|
19739
19800
|
targetBytes: number().int().positive()
|
|
19740
|
-
}), EvictResultSchema, {
|
|
19801
|
+
}), EvictResultSchema, {
|
|
19802
|
+
kind: "mutation",
|
|
19803
|
+
auth: "admin"
|
|
19804
|
+
});
|
|
19741
19805
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
19742
19806
|
kind: "mutation",
|
|
19743
19807
|
auth: "admin"
|
|
@@ -19797,26 +19861,50 @@ var ReadChunkInputSchema = object({
|
|
|
19797
19861
|
length: number()
|
|
19798
19862
|
});
|
|
19799
19863
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
19800
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
19864
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
19801
19865
|
location: StorageLocationSchema,
|
|
19802
19866
|
relativePath: string()
|
|
19803
|
-
}), string()), method(object({
|
|
19867
|
+
}), string(), { auth: "admin" }), method(object({
|
|
19804
19868
|
location: StorageLocationSchema,
|
|
19805
19869
|
relativePath: string(),
|
|
19806
19870
|
data: _instanceof(Uint8Array)
|
|
19807
|
-
}), _void(), {
|
|
19871
|
+
}), _void(), {
|
|
19872
|
+
kind: "mutation",
|
|
19873
|
+
auth: "admin"
|
|
19874
|
+
}), method(object({
|
|
19808
19875
|
location: StorageLocationSchema,
|
|
19809
19876
|
relativePath: string()
|
|
19810
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
19877
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
19811
19878
|
location: StorageLocationSchema,
|
|
19812
19879
|
relativePath: string()
|
|
19813
|
-
}), boolean()), method(object({
|
|
19880
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
19814
19881
|
location: StorageLocationSchema,
|
|
19815
19882
|
prefix: string().optional()
|
|
19816
|
-
}), array(string()).readonly()), method(object({
|
|
19883
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
19817
19884
|
location: StorageLocationSchema,
|
|
19818
19885
|
relativePath: string()
|
|
19819
|
-
}), _void(), {
|
|
19886
|
+
}), _void(), {
|
|
19887
|
+
kind: "mutation",
|
|
19888
|
+
auth: "admin"
|
|
19889
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
19890
|
+
kind: "mutation",
|
|
19891
|
+
auth: "admin"
|
|
19892
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
19893
|
+
kind: "mutation",
|
|
19894
|
+
auth: "admin"
|
|
19895
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
19896
|
+
kind: "mutation",
|
|
19897
|
+
auth: "admin"
|
|
19898
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
19899
|
+
kind: "mutation",
|
|
19900
|
+
auth: "admin"
|
|
19901
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
19902
|
+
kind: "mutation",
|
|
19903
|
+
auth: "admin"
|
|
19904
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
19905
|
+
kind: "mutation",
|
|
19906
|
+
auth: "admin"
|
|
19907
|
+
});
|
|
19820
19908
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
19821
19909
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
19822
19910
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20074,7 +20162,8 @@ method(object({
|
|
|
20074
20162
|
access: "create"
|
|
20075
20163
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20076
20164
|
kind: "mutation",
|
|
20077
|
-
access: "view"
|
|
20165
|
+
access: "view",
|
|
20166
|
+
auth: "admin"
|
|
20078
20167
|
}), method(object({
|
|
20079
20168
|
/** Required — the user the assertion belongs to (verified). */
|
|
20080
20169
|
userId: string(),
|
|
@@ -20082,10 +20171,12 @@ method(object({
|
|
|
20082
20171
|
response: record(string(), unknown())
|
|
20083
20172
|
}), object({ verified: boolean() }), {
|
|
20084
20173
|
kind: "mutation",
|
|
20085
|
-
access: "view"
|
|
20174
|
+
access: "view",
|
|
20175
|
+
auth: "admin"
|
|
20086
20176
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20087
20177
|
kind: "mutation",
|
|
20088
|
-
access: "view"
|
|
20178
|
+
access: "view",
|
|
20179
|
+
auth: "admin"
|
|
20089
20180
|
}), method(object({
|
|
20090
20181
|
/** AuthenticationResponseJSON from the browser. */
|
|
20091
20182
|
response: record(string(), unknown()) }), object({
|
|
@@ -20093,7 +20184,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20093
20184
|
userId: string().nullable()
|
|
20094
20185
|
}), {
|
|
20095
20186
|
kind: "mutation",
|
|
20096
|
-
access: "view"
|
|
20187
|
+
access: "view",
|
|
20188
|
+
auth: "admin"
|
|
20097
20189
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20098
20190
|
userId: string(),
|
|
20099
20191
|
credentialId: string()
|
|
@@ -20265,7 +20357,19 @@ var VectorStatsResultSchema = object({
|
|
|
20265
20357
|
/** False when the backend ranks approximately. */
|
|
20266
20358
|
exact: boolean()
|
|
20267
20359
|
});
|
|
20268
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20360
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20361
|
+
kind: "mutation",
|
|
20362
|
+
auth: "admin"
|
|
20363
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20364
|
+
kind: "mutation",
|
|
20365
|
+
auth: "admin"
|
|
20366
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20367
|
+
kind: "mutation",
|
|
20368
|
+
auth: "admin"
|
|
20369
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20370
|
+
kind: "mutation",
|
|
20371
|
+
auth: "admin"
|
|
20372
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20269
20373
|
var ClipSchema = object({
|
|
20270
20374
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20271
20375
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -21988,7 +22092,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
21988
22092
|
sizeBytes: number(),
|
|
21989
22093
|
timestamp: number()
|
|
21990
22094
|
});
|
|
21991
|
-
method(
|
|
22095
|
+
method(object({
|
|
22096
|
+
/**
|
|
22097
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
22098
|
+
*
|
|
22099
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
22100
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
22101
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
22102
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
22103
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
22104
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
22105
|
+
*
|
|
22106
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
22107
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
22108
|
+
*
|
|
22109
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
22110
|
+
* next train** — the hub router validates cap inputs against its own
|
|
22111
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
22112
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
22113
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
22114
|
+
*/
|
|
22115
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
21992
22116
|
kind: "mutation",
|
|
21993
22117
|
auth: "admin"
|
|
21994
22118
|
}), method(object({
|
|
@@ -24135,8 +24259,10 @@ var PlateInfoSchema = object({
|
|
|
24135
24259
|
keyFrameMediaKey: string().optional(),
|
|
24136
24260
|
base64: string().optional(),
|
|
24137
24261
|
/**
|
|
24138
|
-
* Same crop as a data-plane URL
|
|
24139
|
-
* never inlines JPEG; `listPlates`
|
|
24262
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
24263
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
24264
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
24265
|
+
* left at its `true` default.
|
|
24140
24266
|
*/
|
|
24141
24267
|
cropUrl: string().optional()
|
|
24142
24268
|
});
|
|
@@ -24156,14 +24282,34 @@ var PlateClusterSchema = object({
|
|
|
24156
24282
|
});
|
|
24157
24283
|
method(object({
|
|
24158
24284
|
deviceId: number().int().optional(),
|
|
24159
|
-
limit: number().int().positive().optional()
|
|
24285
|
+
limit: number().int().positive().optional(),
|
|
24286
|
+
/**
|
|
24287
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
24288
|
+
* behaviour, kept so no caller breaks.
|
|
24289
|
+
*
|
|
24290
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
24291
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
24292
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
24293
|
+
* metadata without them — and the browser then caches the images.
|
|
24294
|
+
*
|
|
24295
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
24296
|
+
* plates were the one gallery list left without it.
|
|
24297
|
+
*
|
|
24298
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
24299
|
+
* next train.** The hub router validates cap inputs against its own
|
|
24300
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
24301
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
24302
|
+
*/
|
|
24303
|
+
includeCrops: boolean().optional()
|
|
24160
24304
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
24161
24305
|
deviceId: number().int(),
|
|
24162
24306
|
trackId: string()
|
|
24163
24307
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
24164
24308
|
text: string().min(1),
|
|
24165
24309
|
maxDistance: number().int().min(0).optional(),
|
|
24166
|
-
limit: number().int().positive().optional()
|
|
24310
|
+
limit: number().int().positive().optional(),
|
|
24311
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
24312
|
+
includeCrops: boolean().optional()
|
|
24167
24313
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
24168
24314
|
maxDistance: number().int().min(0).optional(),
|
|
24169
24315
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -24177,7 +24323,13 @@ method(object({
|
|
|
24177
24323
|
}), method(object({ plateId: string() }), _void(), {
|
|
24178
24324
|
kind: "mutation",
|
|
24179
24325
|
auth: "admin"
|
|
24180
|
-
}), method(
|
|
24326
|
+
}), method(object({
|
|
24327
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
24328
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
24329
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
24330
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
24331
|
+
* resolves to `false` and is exactly the intended default. */
|
|
24332
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
24181
24333
|
kind: "mutation",
|
|
24182
24334
|
auth: "admin"
|
|
24183
24335
|
}), method(object({
|
|
@@ -29554,6 +29706,12 @@ Object.freeze({
|
|
|
29554
29706
|
addonId: null,
|
|
29555
29707
|
access: "create"
|
|
29556
29708
|
},
|
|
29709
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
29710
|
+
capName: "pipeline-analytics",
|
|
29711
|
+
capScope: "device",
|
|
29712
|
+
addonId: null,
|
|
29713
|
+
access: "create"
|
|
29714
|
+
},
|
|
29557
29715
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
29558
29716
|
capName: "pipeline-analytics",
|
|
29559
29717
|
capScope: "device",
|
|
@@ -29728,6 +29886,12 @@ Object.freeze({
|
|
|
29728
29886
|
addonId: null,
|
|
29729
29887
|
access: "view"
|
|
29730
29888
|
},
|
|
29889
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
29890
|
+
capName: "pipeline-analytics",
|
|
29891
|
+
capScope: "device",
|
|
29892
|
+
addonId: null,
|
|
29893
|
+
access: "view"
|
|
29894
|
+
},
|
|
29731
29895
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
29732
29896
|
capName: "pipeline-analytics",
|
|
29733
29897
|
capScope: "device",
|
|
@@ -29806,6 +29970,12 @@ Object.freeze({
|
|
|
29806
29970
|
addonId: null,
|
|
29807
29971
|
access: "create"
|
|
29808
29972
|
},
|
|
29973
|
+
"pipelineAnalytics.relocateMedia": {
|
|
29974
|
+
capName: "pipeline-analytics",
|
|
29975
|
+
capScope: "device",
|
|
29976
|
+
addonId: null,
|
|
29977
|
+
access: "create"
|
|
29978
|
+
},
|
|
29809
29979
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
29810
29980
|
capName: "pipeline-analytics",
|
|
29811
29981
|
capScope: "device",
|