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