@camstack/addon-provider-rademacher 0.2.27 → 0.2.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +249 -79
- package/dist/addon.mjs +249 -79
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -7615,7 +7615,7 @@ function method(input, output, options) {
|
|
|
7615
7615
|
input,
|
|
7616
7616
|
output,
|
|
7617
7617
|
kind: options?.kind ?? "query",
|
|
7618
|
-
auth: options
|
|
7618
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
7619
7619
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
7620
7620
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
7621
7621
|
timeoutMs: options?.timeoutMs
|
|
@@ -7639,7 +7639,7 @@ function event(data) {
|
|
|
7639
7639
|
}
|
|
7640
7640
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
7641
7641
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
7642
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
7642
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
7643
7643
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
7644
7644
|
DeviceType["Camera"] = "camera";
|
|
7645
7645
|
DeviceType["Hub"] = "hub";
|
|
@@ -7960,7 +7960,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
7960
7960
|
}({});
|
|
7961
7961
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
7962
7962
|
var VersionOutputSchema = object({ version: string() });
|
|
7963
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
7963
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
7964
7964
|
/**
|
|
7965
7965
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
7966
7966
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -8586,24 +8586,6 @@ var RecordingRetentionSchema = object({
|
|
|
8586
8586
|
maxSizeGb: number().min(0).optional()
|
|
8587
8587
|
});
|
|
8588
8588
|
/**
|
|
8589
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
8590
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
8591
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
8592
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
8593
|
-
*
|
|
8594
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
8595
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
8596
|
-
* preset changed over time renders every historical window at the dims it was
|
|
8597
|
-
* written with.
|
|
8598
|
-
*/
|
|
8599
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
8600
|
-
"minimal",
|
|
8601
|
-
"low",
|
|
8602
|
-
"standard",
|
|
8603
|
-
"high",
|
|
8604
|
-
"max"
|
|
8605
|
-
]);
|
|
8606
|
-
/**
|
|
8607
8589
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
8608
8590
|
*
|
|
8609
8591
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -8611,7 +8593,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
8611
8593
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
8612
8594
|
*
|
|
8613
8595
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
8614
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
8596
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
8597
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
8598
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
8599
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
8600
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
8615
8601
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
8616
8602
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
8617
8603
|
*/
|
|
@@ -8634,14 +8620,7 @@ var RecordingConfigSchema = object({
|
|
|
8634
8620
|
* "off" is the absence of a covering band, never a band value.
|
|
8635
8621
|
*/
|
|
8636
8622
|
bands: array(RecordingBandSchema).default([]),
|
|
8637
|
-
retention: RecordingRetentionSchema.optional()
|
|
8638
|
-
/**
|
|
8639
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
8640
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
8641
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
8642
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
8643
|
-
*/
|
|
8644
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
8623
|
+
retention: RecordingRetentionSchema.optional()
|
|
8645
8624
|
}).strict();
|
|
8646
8625
|
/**
|
|
8647
8626
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -8717,10 +8696,11 @@ var RelocateFootageInputSchema = object({
|
|
|
8717
8696
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
8718
8697
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
8719
8698
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
8720
|
-
var
|
|
8699
|
+
var RelocateMediaInputSchema = object({
|
|
8721
8700
|
toLocationId: string(),
|
|
8722
8701
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
8723
|
-
})
|
|
8702
|
+
});
|
|
8703
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
8724
8704
|
/** The independently selectable logical storage classes. `recordings`
|
|
8725
8705
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
8726
8706
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -9015,7 +8995,26 @@ var LabelDefinitionSchema = object({
|
|
|
9015
8995
|
description: string().optional(),
|
|
9016
8996
|
icon: string().optional()
|
|
9017
8997
|
});
|
|
9018
|
-
|
|
8998
|
+
/**
|
|
8999
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
9000
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
9001
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
9002
|
+
* detection pipeline executor actually routes.
|
|
9003
|
+
*
|
|
9004
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
9005
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
9006
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
9007
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
9008
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
9009
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
9010
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
9011
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
9012
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
9013
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
9014
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
9015
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
9016
|
+
*/
|
|
9017
|
+
var DetectionCatalogClassMapSchema = object({
|
|
9019
9018
|
mapping: record(string(), _enum([
|
|
9020
9019
|
"person",
|
|
9021
9020
|
"vehicle",
|
|
@@ -9220,7 +9219,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
9220
9219
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
9221
9220
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
9222
9221
|
*/
|
|
9223
|
-
classMap:
|
|
9222
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
9224
9223
|
});
|
|
9225
9224
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
9226
9225
|
format: literal("openvino"),
|
|
@@ -9250,7 +9249,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
9250
9249
|
"segmentation"
|
|
9251
9250
|
]),
|
|
9252
9251
|
faceAlignment: boolean().optional(),
|
|
9253
|
-
classMap:
|
|
9252
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
9254
9253
|
});
|
|
9255
9254
|
var ConvertResultSchema = object({
|
|
9256
9255
|
entry: ModelCatalogEntrySchema,
|
|
@@ -10113,7 +10112,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
10113
10112
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
10114
10113
|
sectionLabel: string().optional()
|
|
10115
10114
|
});
|
|
10116
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
10115
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
10117
10116
|
var AddonHttpRouteSchema = object({
|
|
10118
10117
|
method: _enum([
|
|
10119
10118
|
"GET",
|
|
@@ -10348,7 +10347,7 @@ var WidgetMetadataSchema = object({
|
|
|
10348
10347
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
10349
10348
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
10350
10349
|
});
|
|
10351
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
10350
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
10352
10351
|
/**
|
|
10353
10352
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
10354
10353
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11972,7 +11971,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11972
11971
|
stepId: string(),
|
|
11973
11972
|
entry: ModelCatalogEntrySchema
|
|
11974
11973
|
});
|
|
11975
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11974
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11976
11975
|
/**
|
|
11977
11976
|
* Query filter for settings-store collections.
|
|
11978
11977
|
*/
|
|
@@ -12059,7 +12058,8 @@ method(object({
|
|
|
12059
12058
|
}), _void(), { kind: "mutation" }), method(object({
|
|
12060
12059
|
namespace: string().optional(),
|
|
12061
12060
|
collection: string(),
|
|
12062
|
-
filter: QueryFilterSchema.optional()
|
|
12061
|
+
filter: QueryFilterSchema.optional(),
|
|
12062
|
+
columns: array(string()).readonly().optional()
|
|
12063
12063
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
12064
12064
|
namespace: string().optional(),
|
|
12065
12065
|
collection: string(),
|
|
@@ -12122,46 +12122,87 @@ var EngineInfoSchema = object({
|
|
|
12122
12122
|
kind: _enum(["relational", "vector"]),
|
|
12123
12123
|
displayName: string()
|
|
12124
12124
|
});
|
|
12125
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
12125
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
12126
12126
|
namespace: string().optional(),
|
|
12127
12127
|
collection: string(),
|
|
12128
12128
|
key: string()
|
|
12129
|
-
}), unknown()), method(object({
|
|
12129
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
12130
12130
|
namespace: string().optional(),
|
|
12131
12131
|
collection: string(),
|
|
12132
12132
|
key: string(),
|
|
12133
12133
|
value: unknown()
|
|
12134
|
-
}), _void(), {
|
|
12134
|
+
}), _void(), {
|
|
12135
|
+
kind: "mutation",
|
|
12136
|
+
auth: "admin"
|
|
12137
|
+
}), method(object({
|
|
12135
12138
|
namespace: string().optional(),
|
|
12136
12139
|
collection: string(),
|
|
12137
|
-
filter: QueryFilterSchema.optional()
|
|
12138
|
-
|
|
12140
|
+
filter: QueryFilterSchema.optional(),
|
|
12141
|
+
/**
|
|
12142
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
12143
|
+
*
|
|
12144
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
12145
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
12146
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
12147
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
12148
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
12149
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
12150
|
+
*
|
|
12151
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
12152
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
12153
|
+
* interface the engine destructures from. The field existed on both
|
|
12154
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
12155
|
+
* registered provider against `InferProvider<cap>` —
|
|
12156
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
12157
|
+
*
|
|
12158
|
+
* It is declared here anyway, and must stay in step with
|
|
12159
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
12160
|
+
* to be able to see that this call carries a projection.
|
|
12161
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
12162
|
+
*/
|
|
12163
|
+
columns: array(string()).readonly().optional()
|
|
12164
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
12139
12165
|
namespace: string().optional(),
|
|
12140
12166
|
collection: string(),
|
|
12141
12167
|
record: SettingsRecordSchema
|
|
12142
|
-
}), _void(), {
|
|
12168
|
+
}), _void(), {
|
|
12169
|
+
kind: "mutation",
|
|
12170
|
+
auth: "admin"
|
|
12171
|
+
}), method(object({
|
|
12143
12172
|
namespace: string().optional(),
|
|
12144
12173
|
collection: string(),
|
|
12145
12174
|
id: string(),
|
|
12146
12175
|
data: record(string(), unknown())
|
|
12147
|
-
}), _void(), {
|
|
12176
|
+
}), _void(), {
|
|
12177
|
+
kind: "mutation",
|
|
12178
|
+
auth: "admin"
|
|
12179
|
+
}), method(object({
|
|
12148
12180
|
namespace: string().optional(),
|
|
12149
12181
|
collection: string(),
|
|
12150
12182
|
key: string()
|
|
12151
|
-
}), _void(), {
|
|
12183
|
+
}), _void(), {
|
|
12184
|
+
kind: "mutation",
|
|
12185
|
+
auth: "admin"
|
|
12186
|
+
}), method(object({
|
|
12152
12187
|
namespace: string().optional(),
|
|
12153
12188
|
collection: string(),
|
|
12154
12189
|
filter: MutationFilterSchema
|
|
12155
|
-
}), object({ deleted: number().int() }), {
|
|
12190
|
+
}), object({ deleted: number().int() }), {
|
|
12191
|
+
kind: "mutation",
|
|
12192
|
+
auth: "admin"
|
|
12193
|
+
}), method(object({
|
|
12156
12194
|
namespace: string().optional(),
|
|
12157
12195
|
collection: string(),
|
|
12158
12196
|
filter: MutationFilterSchema,
|
|
12159
12197
|
data: record(string(), unknown())
|
|
12160
|
-
}), object({ updated: number().int() }), {
|
|
12198
|
+
}), object({ updated: number().int() }), {
|
|
12199
|
+
kind: "mutation",
|
|
12200
|
+
auth: "admin"
|
|
12201
|
+
}), method(object({
|
|
12161
12202
|
namespace: string().optional(),
|
|
12162
12203
|
collection: string(),
|
|
12163
12204
|
filter: QueryFilterSchema.optional()
|
|
12164
|
-
}), number()), method(object({
|
|
12205
|
+
}), number(), { auth: "admin" }), method(object({
|
|
12165
12206
|
namespace: string().optional(),
|
|
12166
12207
|
collection: string(),
|
|
12167
12208
|
field: string(),
|
|
@@ -12171,15 +12212,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
12171
12212
|
}), array(object({
|
|
12172
12213
|
bucket: number().int(),
|
|
12173
12214
|
count: number().int()
|
|
12174
|
-
})).readonly()), method(object({
|
|
12215
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
12175
12216
|
namespace: string().optional(),
|
|
12176
12217
|
collection: string()
|
|
12177
|
-
}), boolean()), method(object({
|
|
12218
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
12178
12219
|
namespace: string().optional(),
|
|
12179
12220
|
collection: string(),
|
|
12180
12221
|
columns: array(CollectionColumnSchema).readonly(),
|
|
12181
12222
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
12182
|
-
}), _void(), {
|
|
12223
|
+
}), _void(), {
|
|
12224
|
+
kind: "mutation",
|
|
12225
|
+
auth: "admin"
|
|
12226
|
+
});
|
|
12183
12227
|
/**
|
|
12184
12228
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
12185
12229
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -13469,7 +13513,7 @@ method(object({
|
|
|
13469
13513
|
crop: _instanceof(Uint8Array),
|
|
13470
13514
|
width: number(),
|
|
13471
13515
|
height: number()
|
|
13472
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
13516
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
13473
13517
|
/**
|
|
13474
13518
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
13475
13519
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -13762,19 +13806,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
13762
13806
|
runtime: ManagedRuntimeConfigSchema,
|
|
13763
13807
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
13764
13808
|
timeoutMs: number().int().positive().optional()
|
|
13765
|
-
}), LlmGenerateResultSchema, {
|
|
13809
|
+
}), LlmGenerateResultSchema, {
|
|
13810
|
+
kind: "mutation",
|
|
13811
|
+
auth: "admin"
|
|
13812
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
13766
13813
|
kind: "mutation",
|
|
13767
13814
|
auth: "admin"
|
|
13768
13815
|
}), method(object({}), _void(), {
|
|
13769
13816
|
kind: "mutation",
|
|
13770
13817
|
auth: "admin"
|
|
13771
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13818
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13772
13819
|
kind: "mutation",
|
|
13773
13820
|
auth: "admin"
|
|
13774
13821
|
}), method(object({ file: string() }), _void(), {
|
|
13775
13822
|
kind: "mutation",
|
|
13776
13823
|
auth: "admin"
|
|
13777
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
13824
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
13778
13825
|
/**
|
|
13779
13826
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
13780
13827
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -17285,7 +17332,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
17285
17332
|
*/
|
|
17286
17333
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
17287
17334
|
});
|
|
17288
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
17335
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
17289
17336
|
/**
|
|
17290
17337
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
17291
17338
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -18480,6 +18527,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
18480
18527
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
18481
18528
|
kind: "mutation",
|
|
18482
18529
|
auth: "admin"
|
|
18530
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
18531
|
+
kind: "mutation",
|
|
18532
|
+
auth: "admin"
|
|
18533
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
18534
|
+
kind: "query",
|
|
18535
|
+
auth: "admin"
|
|
18536
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
18537
|
+
kind: "mutation",
|
|
18538
|
+
auth: "admin"
|
|
18483
18539
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
18484
18540
|
kind: "query",
|
|
18485
18541
|
auth: "admin"
|
|
@@ -18634,6 +18690,11 @@ object({
|
|
|
18634
18690
|
"jpeg"
|
|
18635
18691
|
])
|
|
18636
18692
|
});
|
|
18693
|
+
/**
|
|
18694
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
18695
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
18696
|
+
* other process or execution group.
|
|
18697
|
+
*/
|
|
18637
18698
|
var FrameRefSchema = object({
|
|
18638
18699
|
registryId: string().min(1),
|
|
18639
18700
|
id: string().min(1),
|
|
@@ -20839,7 +20900,7 @@ method(object({
|
|
|
20839
20900
|
* linking rather than produce an eternal token.
|
|
20840
20901
|
*/
|
|
20841
20902
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
20842
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
20903
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
20843
20904
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
20844
20905
|
providerId: string().min(1),
|
|
20845
20906
|
displayName: string().min(1),
|
|
@@ -20934,10 +20995,13 @@ var EvictResultSchema = object({
|
|
|
20934
20995
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20935
20996
|
exhausted: boolean()
|
|
20936
20997
|
});
|
|
20937
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20998
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20938
20999
|
locationId: string(),
|
|
20939
21000
|
targetBytes: number().int().positive()
|
|
20940
|
-
}), EvictResultSchema, {
|
|
21001
|
+
}), EvictResultSchema, {
|
|
21002
|
+
kind: "mutation",
|
|
21003
|
+
auth: "admin"
|
|
21004
|
+
});
|
|
20941
21005
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20942
21006
|
kind: "mutation",
|
|
20943
21007
|
auth: "admin"
|
|
@@ -20997,26 +21061,50 @@ var ReadChunkInputSchema = object({
|
|
|
20997
21061
|
length: number()
|
|
20998
21062
|
});
|
|
20999
21063
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
21000
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
21064
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
21001
21065
|
location: StorageLocationSchema,
|
|
21002
21066
|
relativePath: string()
|
|
21003
|
-
}), string()), method(object({
|
|
21067
|
+
}), string(), { auth: "admin" }), method(object({
|
|
21004
21068
|
location: StorageLocationSchema,
|
|
21005
21069
|
relativePath: string(),
|
|
21006
21070
|
data: _instanceof(Uint8Array)
|
|
21007
|
-
}), _void(), {
|
|
21071
|
+
}), _void(), {
|
|
21072
|
+
kind: "mutation",
|
|
21073
|
+
auth: "admin"
|
|
21074
|
+
}), method(object({
|
|
21008
21075
|
location: StorageLocationSchema,
|
|
21009
21076
|
relativePath: string()
|
|
21010
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
21077
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
21011
21078
|
location: StorageLocationSchema,
|
|
21012
21079
|
relativePath: string()
|
|
21013
|
-
}), boolean()), method(object({
|
|
21080
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
21014
21081
|
location: StorageLocationSchema,
|
|
21015
21082
|
prefix: string().optional()
|
|
21016
|
-
}), array(string()).readonly()), method(object({
|
|
21083
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
21017
21084
|
location: StorageLocationSchema,
|
|
21018
21085
|
relativePath: string()
|
|
21019
|
-
}), _void(), {
|
|
21086
|
+
}), _void(), {
|
|
21087
|
+
kind: "mutation",
|
|
21088
|
+
auth: "admin"
|
|
21089
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
21090
|
+
kind: "mutation",
|
|
21091
|
+
auth: "admin"
|
|
21092
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
21093
|
+
kind: "mutation",
|
|
21094
|
+
auth: "admin"
|
|
21095
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
21096
|
+
kind: "mutation",
|
|
21097
|
+
auth: "admin"
|
|
21098
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
21099
|
+
kind: "mutation",
|
|
21100
|
+
auth: "admin"
|
|
21101
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
21102
|
+
kind: "mutation",
|
|
21103
|
+
auth: "admin"
|
|
21104
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
21105
|
+
kind: "mutation",
|
|
21106
|
+
auth: "admin"
|
|
21107
|
+
});
|
|
21020
21108
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
21021
21109
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
21022
21110
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -21274,7 +21362,8 @@ method(object({
|
|
|
21274
21362
|
access: "create"
|
|
21275
21363
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
21276
21364
|
kind: "mutation",
|
|
21277
|
-
access: "view"
|
|
21365
|
+
access: "view",
|
|
21366
|
+
auth: "admin"
|
|
21278
21367
|
}), method(object({
|
|
21279
21368
|
/** Required — the user the assertion belongs to (verified). */
|
|
21280
21369
|
userId: string(),
|
|
@@ -21282,10 +21371,12 @@ method(object({
|
|
|
21282
21371
|
response: record(string(), unknown())
|
|
21283
21372
|
}), object({ verified: boolean() }), {
|
|
21284
21373
|
kind: "mutation",
|
|
21285
|
-
access: "view"
|
|
21374
|
+
access: "view",
|
|
21375
|
+
auth: "admin"
|
|
21286
21376
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
21287
21377
|
kind: "mutation",
|
|
21288
|
-
access: "view"
|
|
21378
|
+
access: "view",
|
|
21379
|
+
auth: "admin"
|
|
21289
21380
|
}), method(object({
|
|
21290
21381
|
/** AuthenticationResponseJSON from the browser. */
|
|
21291
21382
|
response: record(string(), unknown()) }), object({
|
|
@@ -21293,7 +21384,8 @@ response: record(string(), unknown()) }), object({
|
|
|
21293
21384
|
userId: string().nullable()
|
|
21294
21385
|
}), {
|
|
21295
21386
|
kind: "mutation",
|
|
21296
|
-
access: "view"
|
|
21387
|
+
access: "view",
|
|
21388
|
+
auth: "admin"
|
|
21297
21389
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
21298
21390
|
userId: string(),
|
|
21299
21391
|
credentialId: string()
|
|
@@ -21465,7 +21557,19 @@ var VectorStatsResultSchema = object({
|
|
|
21465
21557
|
/** False when the backend ranks approximately. */
|
|
21466
21558
|
exact: boolean()
|
|
21467
21559
|
});
|
|
21468
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
21560
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
21561
|
+
kind: "mutation",
|
|
21562
|
+
auth: "admin"
|
|
21563
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
21564
|
+
kind: "mutation",
|
|
21565
|
+
auth: "admin"
|
|
21566
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
21567
|
+
kind: "mutation",
|
|
21568
|
+
auth: "admin"
|
|
21569
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
21570
|
+
kind: "mutation",
|
|
21571
|
+
auth: "admin"
|
|
21572
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
21469
21573
|
var ClipSchema = object({
|
|
21470
21574
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
21471
21575
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23918,7 +24022,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23918
24022
|
sizeBytes: number(),
|
|
23919
24023
|
timestamp: number()
|
|
23920
24024
|
});
|
|
23921
|
-
method(
|
|
24025
|
+
method(object({
|
|
24026
|
+
/**
|
|
24027
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
24028
|
+
*
|
|
24029
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
24030
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
24031
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
24032
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
24033
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
24034
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
24035
|
+
*
|
|
24036
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
24037
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
24038
|
+
*
|
|
24039
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
24040
|
+
* next train** — the hub router validates cap inputs against its own
|
|
24041
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
24042
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
24043
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
24044
|
+
*/
|
|
24045
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
23922
24046
|
kind: "mutation",
|
|
23923
24047
|
auth: "admin"
|
|
23924
24048
|
}), method(object({
|
|
@@ -26808,8 +26932,10 @@ var PlateInfoSchema = object({
|
|
|
26808
26932
|
keyFrameMediaKey: string().optional(),
|
|
26809
26933
|
base64: string().optional(),
|
|
26810
26934
|
/**
|
|
26811
|
-
* Same crop as a data-plane URL
|
|
26812
|
-
* never inlines JPEG; `listPlates`
|
|
26935
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26936
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26937
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26938
|
+
* left at its `true` default.
|
|
26813
26939
|
*/
|
|
26814
26940
|
cropUrl: string().optional()
|
|
26815
26941
|
});
|
|
@@ -26829,14 +26955,34 @@ var PlateClusterSchema = object({
|
|
|
26829
26955
|
});
|
|
26830
26956
|
method(object({
|
|
26831
26957
|
deviceId: number().int().optional(),
|
|
26832
|
-
limit: number().int().positive().optional()
|
|
26958
|
+
limit: number().int().positive().optional(),
|
|
26959
|
+
/**
|
|
26960
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26961
|
+
* behaviour, kept so no caller breaks.
|
|
26962
|
+
*
|
|
26963
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26964
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26965
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26966
|
+
* metadata without them — and the browser then caches the images.
|
|
26967
|
+
*
|
|
26968
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26969
|
+
* plates were the one gallery list left without it.
|
|
26970
|
+
*
|
|
26971
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26972
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26973
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26974
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26975
|
+
*/
|
|
26976
|
+
includeCrops: boolean().optional()
|
|
26833
26977
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
26834
26978
|
deviceId: number().int(),
|
|
26835
26979
|
trackId: string()
|
|
26836
26980
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
26837
26981
|
text: string().min(1),
|
|
26838
26982
|
maxDistance: number().int().min(0).optional(),
|
|
26839
|
-
limit: number().int().positive().optional()
|
|
26983
|
+
limit: number().int().positive().optional(),
|
|
26984
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26985
|
+
includeCrops: boolean().optional()
|
|
26840
26986
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
26841
26987
|
maxDistance: number().int().min(0).optional(),
|
|
26842
26988
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -26850,7 +26996,13 @@ method(object({
|
|
|
26850
26996
|
}), method(object({ plateId: string() }), _void(), {
|
|
26851
26997
|
kind: "mutation",
|
|
26852
26998
|
auth: "admin"
|
|
26853
|
-
}), method(
|
|
26999
|
+
}), method(object({
|
|
27000
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
27001
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
27002
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
27003
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
27004
|
+
* resolves to `false` and is exactly the intended default. */
|
|
27005
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
26854
27006
|
kind: "mutation",
|
|
26855
27007
|
auth: "admin"
|
|
26856
27008
|
}), method(object({
|
|
@@ -34111,6 +34263,12 @@ Object.freeze({
|
|
|
34111
34263
|
addonId: null,
|
|
34112
34264
|
access: "create"
|
|
34113
34265
|
},
|
|
34266
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
34267
|
+
capName: "pipeline-analytics",
|
|
34268
|
+
capScope: "device",
|
|
34269
|
+
addonId: null,
|
|
34270
|
+
access: "create"
|
|
34271
|
+
},
|
|
34114
34272
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
34115
34273
|
capName: "pipeline-analytics",
|
|
34116
34274
|
capScope: "device",
|
|
@@ -34285,6 +34443,12 @@ Object.freeze({
|
|
|
34285
34443
|
addonId: null,
|
|
34286
34444
|
access: "view"
|
|
34287
34445
|
},
|
|
34446
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
34447
|
+
capName: "pipeline-analytics",
|
|
34448
|
+
capScope: "device",
|
|
34449
|
+
addonId: null,
|
|
34450
|
+
access: "view"
|
|
34451
|
+
},
|
|
34288
34452
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
34289
34453
|
capName: "pipeline-analytics",
|
|
34290
34454
|
capScope: "device",
|
|
@@ -34363,6 +34527,12 @@ Object.freeze({
|
|
|
34363
34527
|
addonId: null,
|
|
34364
34528
|
access: "create"
|
|
34365
34529
|
},
|
|
34530
|
+
"pipelineAnalytics.relocateMedia": {
|
|
34531
|
+
capName: "pipeline-analytics",
|
|
34532
|
+
capScope: "device",
|
|
34533
|
+
addonId: null,
|
|
34534
|
+
access: "create"
|
|
34535
|
+
},
|
|
34366
34536
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
34367
34537
|
capName: "pipeline-analytics",
|
|
34368
34538
|
capScope: "device",
|
package/dist/addon.mjs
CHANGED
|
@@ -7614,7 +7614,7 @@ function method(input, output, options) {
|
|
|
7614
7614
|
input,
|
|
7615
7615
|
output,
|
|
7616
7616
|
kind: options?.kind ?? "query",
|
|
7617
|
-
auth: options
|
|
7617
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
7618
7618
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
7619
7619
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
7620
7620
|
timeoutMs: options?.timeoutMs
|
|
@@ -7638,7 +7638,7 @@ function event(data) {
|
|
|
7638
7638
|
}
|
|
7639
7639
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
7640
7640
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
7641
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
7641
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
7642
7642
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
7643
7643
|
DeviceType["Camera"] = "camera";
|
|
7644
7644
|
DeviceType["Hub"] = "hub";
|
|
@@ -7959,7 +7959,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
7959
7959
|
}({});
|
|
7960
7960
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
7961
7961
|
var VersionOutputSchema = object({ version: string() });
|
|
7962
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
7962
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
7963
7963
|
/**
|
|
7964
7964
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
7965
7965
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -8585,24 +8585,6 @@ var RecordingRetentionSchema = object({
|
|
|
8585
8585
|
maxSizeGb: number().min(0).optional()
|
|
8586
8586
|
});
|
|
8587
8587
|
/**
|
|
8588
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
8589
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
8590
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
8591
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
8592
|
-
*
|
|
8593
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
8594
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
8595
|
-
* preset changed over time renders every historical window at the dims it was
|
|
8596
|
-
* written with.
|
|
8597
|
-
*/
|
|
8598
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
8599
|
-
"minimal",
|
|
8600
|
-
"low",
|
|
8601
|
-
"standard",
|
|
8602
|
-
"high",
|
|
8603
|
-
"max"
|
|
8604
|
-
]);
|
|
8605
|
-
/**
|
|
8606
8588
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
8607
8589
|
*
|
|
8608
8590
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -8610,7 +8592,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
8610
8592
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
8611
8593
|
*
|
|
8612
8594
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
8613
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
8595
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
8596
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
8597
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
8598
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
8599
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
8614
8600
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
8615
8601
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
8616
8602
|
*/
|
|
@@ -8633,14 +8619,7 @@ var RecordingConfigSchema = object({
|
|
|
8633
8619
|
* "off" is the absence of a covering band, never a band value.
|
|
8634
8620
|
*/
|
|
8635
8621
|
bands: array(RecordingBandSchema).default([]),
|
|
8636
|
-
retention: RecordingRetentionSchema.optional()
|
|
8637
|
-
/**
|
|
8638
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
8639
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
8640
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
8641
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
8642
|
-
*/
|
|
8643
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
8622
|
+
retention: RecordingRetentionSchema.optional()
|
|
8644
8623
|
}).strict();
|
|
8645
8624
|
/**
|
|
8646
8625
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -8716,10 +8695,11 @@ var RelocateFootageInputSchema = object({
|
|
|
8716
8695
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
8717
8696
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
8718
8697
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
8719
|
-
var
|
|
8698
|
+
var RelocateMediaInputSchema = object({
|
|
8720
8699
|
toLocationId: string(),
|
|
8721
8700
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
8722
|
-
})
|
|
8701
|
+
});
|
|
8702
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
8723
8703
|
/** The independently selectable logical storage classes. `recordings`
|
|
8724
8704
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
8725
8705
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -9014,7 +8994,26 @@ var LabelDefinitionSchema = object({
|
|
|
9014
8994
|
description: string().optional(),
|
|
9015
8995
|
icon: string().optional()
|
|
9016
8996
|
});
|
|
9017
|
-
|
|
8997
|
+
/**
|
|
8998
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8999
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
9000
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
9001
|
+
* detection pipeline executor actually routes.
|
|
9002
|
+
*
|
|
9003
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
9004
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
9005
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
9006
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
9007
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
9008
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
9009
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
9010
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
9011
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
9012
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
9013
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
9014
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
9015
|
+
*/
|
|
9016
|
+
var DetectionCatalogClassMapSchema = object({
|
|
9018
9017
|
mapping: record(string(), _enum([
|
|
9019
9018
|
"person",
|
|
9020
9019
|
"vehicle",
|
|
@@ -9219,7 +9218,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
9219
9218
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
9220
9219
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
9221
9220
|
*/
|
|
9222
|
-
classMap:
|
|
9221
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
9223
9222
|
});
|
|
9224
9223
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
9225
9224
|
format: literal("openvino"),
|
|
@@ -9249,7 +9248,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
9249
9248
|
"segmentation"
|
|
9250
9249
|
]),
|
|
9251
9250
|
faceAlignment: boolean().optional(),
|
|
9252
|
-
classMap:
|
|
9251
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
9253
9252
|
});
|
|
9254
9253
|
var ConvertResultSchema = object({
|
|
9255
9254
|
entry: ModelCatalogEntrySchema,
|
|
@@ -10112,7 +10111,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
10112
10111
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
10113
10112
|
sectionLabel: string().optional()
|
|
10114
10113
|
});
|
|
10115
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
10114
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
10116
10115
|
var AddonHttpRouteSchema = object({
|
|
10117
10116
|
method: _enum([
|
|
10118
10117
|
"GET",
|
|
@@ -10347,7 +10346,7 @@ var WidgetMetadataSchema = object({
|
|
|
10347
10346
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
10348
10347
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
10349
10348
|
});
|
|
10350
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
10349
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
10351
10350
|
/**
|
|
10352
10351
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
10353
10352
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11971,7 +11970,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11971
11970
|
stepId: string(),
|
|
11972
11971
|
entry: ModelCatalogEntrySchema
|
|
11973
11972
|
});
|
|
11974
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11973
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11975
11974
|
/**
|
|
11976
11975
|
* Query filter for settings-store collections.
|
|
11977
11976
|
*/
|
|
@@ -12058,7 +12057,8 @@ method(object({
|
|
|
12058
12057
|
}), _void(), { kind: "mutation" }), method(object({
|
|
12059
12058
|
namespace: string().optional(),
|
|
12060
12059
|
collection: string(),
|
|
12061
|
-
filter: QueryFilterSchema.optional()
|
|
12060
|
+
filter: QueryFilterSchema.optional(),
|
|
12061
|
+
columns: array(string()).readonly().optional()
|
|
12062
12062
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
12063
12063
|
namespace: string().optional(),
|
|
12064
12064
|
collection: string(),
|
|
@@ -12121,46 +12121,87 @@ var EngineInfoSchema = object({
|
|
|
12121
12121
|
kind: _enum(["relational", "vector"]),
|
|
12122
12122
|
displayName: string()
|
|
12123
12123
|
});
|
|
12124
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
12124
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
12125
12125
|
namespace: string().optional(),
|
|
12126
12126
|
collection: string(),
|
|
12127
12127
|
key: string()
|
|
12128
|
-
}), unknown()), method(object({
|
|
12128
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
12129
12129
|
namespace: string().optional(),
|
|
12130
12130
|
collection: string(),
|
|
12131
12131
|
key: string(),
|
|
12132
12132
|
value: unknown()
|
|
12133
|
-
}), _void(), {
|
|
12133
|
+
}), _void(), {
|
|
12134
|
+
kind: "mutation",
|
|
12135
|
+
auth: "admin"
|
|
12136
|
+
}), method(object({
|
|
12134
12137
|
namespace: string().optional(),
|
|
12135
12138
|
collection: string(),
|
|
12136
|
-
filter: QueryFilterSchema.optional()
|
|
12137
|
-
|
|
12139
|
+
filter: QueryFilterSchema.optional(),
|
|
12140
|
+
/**
|
|
12141
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
12142
|
+
*
|
|
12143
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
12144
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
12145
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
12146
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
12147
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
12148
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
12149
|
+
*
|
|
12150
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
12151
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
12152
|
+
* interface the engine destructures from. The field existed on both
|
|
12153
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
12154
|
+
* registered provider against `InferProvider<cap>` —
|
|
12155
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
12156
|
+
*
|
|
12157
|
+
* It is declared here anyway, and must stay in step with
|
|
12158
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
12159
|
+
* to be able to see that this call carries a projection.
|
|
12160
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
12161
|
+
*/
|
|
12162
|
+
columns: array(string()).readonly().optional()
|
|
12163
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
12138
12164
|
namespace: string().optional(),
|
|
12139
12165
|
collection: string(),
|
|
12140
12166
|
record: SettingsRecordSchema
|
|
12141
|
-
}), _void(), {
|
|
12167
|
+
}), _void(), {
|
|
12168
|
+
kind: "mutation",
|
|
12169
|
+
auth: "admin"
|
|
12170
|
+
}), method(object({
|
|
12142
12171
|
namespace: string().optional(),
|
|
12143
12172
|
collection: string(),
|
|
12144
12173
|
id: string(),
|
|
12145
12174
|
data: record(string(), unknown())
|
|
12146
|
-
}), _void(), {
|
|
12175
|
+
}), _void(), {
|
|
12176
|
+
kind: "mutation",
|
|
12177
|
+
auth: "admin"
|
|
12178
|
+
}), method(object({
|
|
12147
12179
|
namespace: string().optional(),
|
|
12148
12180
|
collection: string(),
|
|
12149
12181
|
key: string()
|
|
12150
|
-
}), _void(), {
|
|
12182
|
+
}), _void(), {
|
|
12183
|
+
kind: "mutation",
|
|
12184
|
+
auth: "admin"
|
|
12185
|
+
}), method(object({
|
|
12151
12186
|
namespace: string().optional(),
|
|
12152
12187
|
collection: string(),
|
|
12153
12188
|
filter: MutationFilterSchema
|
|
12154
|
-
}), object({ deleted: number().int() }), {
|
|
12189
|
+
}), object({ deleted: number().int() }), {
|
|
12190
|
+
kind: "mutation",
|
|
12191
|
+
auth: "admin"
|
|
12192
|
+
}), method(object({
|
|
12155
12193
|
namespace: string().optional(),
|
|
12156
12194
|
collection: string(),
|
|
12157
12195
|
filter: MutationFilterSchema,
|
|
12158
12196
|
data: record(string(), unknown())
|
|
12159
|
-
}), object({ updated: number().int() }), {
|
|
12197
|
+
}), object({ updated: number().int() }), {
|
|
12198
|
+
kind: "mutation",
|
|
12199
|
+
auth: "admin"
|
|
12200
|
+
}), method(object({
|
|
12160
12201
|
namespace: string().optional(),
|
|
12161
12202
|
collection: string(),
|
|
12162
12203
|
filter: QueryFilterSchema.optional()
|
|
12163
|
-
}), number()), method(object({
|
|
12204
|
+
}), number(), { auth: "admin" }), method(object({
|
|
12164
12205
|
namespace: string().optional(),
|
|
12165
12206
|
collection: string(),
|
|
12166
12207
|
field: string(),
|
|
@@ -12170,15 +12211,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
12170
12211
|
}), array(object({
|
|
12171
12212
|
bucket: number().int(),
|
|
12172
12213
|
count: number().int()
|
|
12173
|
-
})).readonly()), method(object({
|
|
12214
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
12174
12215
|
namespace: string().optional(),
|
|
12175
12216
|
collection: string()
|
|
12176
|
-
}), boolean()), method(object({
|
|
12217
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
12177
12218
|
namespace: string().optional(),
|
|
12178
12219
|
collection: string(),
|
|
12179
12220
|
columns: array(CollectionColumnSchema).readonly(),
|
|
12180
12221
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
12181
|
-
}), _void(), {
|
|
12222
|
+
}), _void(), {
|
|
12223
|
+
kind: "mutation",
|
|
12224
|
+
auth: "admin"
|
|
12225
|
+
});
|
|
12182
12226
|
/**
|
|
12183
12227
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
12184
12228
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -13468,7 +13512,7 @@ method(object({
|
|
|
13468
13512
|
crop: _instanceof(Uint8Array),
|
|
13469
13513
|
width: number(),
|
|
13470
13514
|
height: number()
|
|
13471
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
13515
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
13472
13516
|
/**
|
|
13473
13517
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
13474
13518
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -13761,19 +13805,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
13761
13805
|
runtime: ManagedRuntimeConfigSchema,
|
|
13762
13806
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
13763
13807
|
timeoutMs: number().int().positive().optional()
|
|
13764
|
-
}), LlmGenerateResultSchema, {
|
|
13808
|
+
}), LlmGenerateResultSchema, {
|
|
13809
|
+
kind: "mutation",
|
|
13810
|
+
auth: "admin"
|
|
13811
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
13765
13812
|
kind: "mutation",
|
|
13766
13813
|
auth: "admin"
|
|
13767
13814
|
}), method(object({}), _void(), {
|
|
13768
13815
|
kind: "mutation",
|
|
13769
13816
|
auth: "admin"
|
|
13770
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13817
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13771
13818
|
kind: "mutation",
|
|
13772
13819
|
auth: "admin"
|
|
13773
13820
|
}), method(object({ file: string() }), _void(), {
|
|
13774
13821
|
kind: "mutation",
|
|
13775
13822
|
auth: "admin"
|
|
13776
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
13823
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
13777
13824
|
/**
|
|
13778
13825
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
13779
13826
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -17284,7 +17331,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
17284
17331
|
*/
|
|
17285
17332
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
17286
17333
|
});
|
|
17287
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
17334
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
17288
17335
|
/**
|
|
17289
17336
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
17290
17337
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -18479,6 +18526,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
18479
18526
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
18480
18527
|
kind: "mutation",
|
|
18481
18528
|
auth: "admin"
|
|
18529
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
18530
|
+
kind: "mutation",
|
|
18531
|
+
auth: "admin"
|
|
18532
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
18533
|
+
kind: "query",
|
|
18534
|
+
auth: "admin"
|
|
18535
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
18536
|
+
kind: "mutation",
|
|
18537
|
+
auth: "admin"
|
|
18482
18538
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
18483
18539
|
kind: "query",
|
|
18484
18540
|
auth: "admin"
|
|
@@ -18633,6 +18689,11 @@ object({
|
|
|
18633
18689
|
"jpeg"
|
|
18634
18690
|
])
|
|
18635
18691
|
});
|
|
18692
|
+
/**
|
|
18693
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
18694
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
18695
|
+
* other process or execution group.
|
|
18696
|
+
*/
|
|
18636
18697
|
var FrameRefSchema = object({
|
|
18637
18698
|
registryId: string().min(1),
|
|
18638
18699
|
id: string().min(1),
|
|
@@ -20838,7 +20899,7 @@ method(object({
|
|
|
20838
20899
|
* linking rather than produce an eternal token.
|
|
20839
20900
|
*/
|
|
20840
20901
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
20841
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
20902
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
20842
20903
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
20843
20904
|
providerId: string().min(1),
|
|
20844
20905
|
displayName: string().min(1),
|
|
@@ -20933,10 +20994,13 @@ var EvictResultSchema = object({
|
|
|
20933
20994
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20934
20995
|
exhausted: boolean()
|
|
20935
20996
|
});
|
|
20936
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20997
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20937
20998
|
locationId: string(),
|
|
20938
20999
|
targetBytes: number().int().positive()
|
|
20939
|
-
}), EvictResultSchema, {
|
|
21000
|
+
}), EvictResultSchema, {
|
|
21001
|
+
kind: "mutation",
|
|
21002
|
+
auth: "admin"
|
|
21003
|
+
});
|
|
20940
21004
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20941
21005
|
kind: "mutation",
|
|
20942
21006
|
auth: "admin"
|
|
@@ -20996,26 +21060,50 @@ var ReadChunkInputSchema = object({
|
|
|
20996
21060
|
length: number()
|
|
20997
21061
|
});
|
|
20998
21062
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20999
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
21063
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
21000
21064
|
location: StorageLocationSchema,
|
|
21001
21065
|
relativePath: string()
|
|
21002
|
-
}), string()), method(object({
|
|
21066
|
+
}), string(), { auth: "admin" }), method(object({
|
|
21003
21067
|
location: StorageLocationSchema,
|
|
21004
21068
|
relativePath: string(),
|
|
21005
21069
|
data: _instanceof(Uint8Array)
|
|
21006
|
-
}), _void(), {
|
|
21070
|
+
}), _void(), {
|
|
21071
|
+
kind: "mutation",
|
|
21072
|
+
auth: "admin"
|
|
21073
|
+
}), method(object({
|
|
21007
21074
|
location: StorageLocationSchema,
|
|
21008
21075
|
relativePath: string()
|
|
21009
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
21076
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
21010
21077
|
location: StorageLocationSchema,
|
|
21011
21078
|
relativePath: string()
|
|
21012
|
-
}), boolean()), method(object({
|
|
21079
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
21013
21080
|
location: StorageLocationSchema,
|
|
21014
21081
|
prefix: string().optional()
|
|
21015
|
-
}), array(string()).readonly()), method(object({
|
|
21082
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
21016
21083
|
location: StorageLocationSchema,
|
|
21017
21084
|
relativePath: string()
|
|
21018
|
-
}), _void(), {
|
|
21085
|
+
}), _void(), {
|
|
21086
|
+
kind: "mutation",
|
|
21087
|
+
auth: "admin"
|
|
21088
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
21089
|
+
kind: "mutation",
|
|
21090
|
+
auth: "admin"
|
|
21091
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
21092
|
+
kind: "mutation",
|
|
21093
|
+
auth: "admin"
|
|
21094
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
21095
|
+
kind: "mutation",
|
|
21096
|
+
auth: "admin"
|
|
21097
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
21098
|
+
kind: "mutation",
|
|
21099
|
+
auth: "admin"
|
|
21100
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
21101
|
+
kind: "mutation",
|
|
21102
|
+
auth: "admin"
|
|
21103
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
21104
|
+
kind: "mutation",
|
|
21105
|
+
auth: "admin"
|
|
21106
|
+
});
|
|
21019
21107
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
21020
21108
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
21021
21109
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -21273,7 +21361,8 @@ method(object({
|
|
|
21273
21361
|
access: "create"
|
|
21274
21362
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
21275
21363
|
kind: "mutation",
|
|
21276
|
-
access: "view"
|
|
21364
|
+
access: "view",
|
|
21365
|
+
auth: "admin"
|
|
21277
21366
|
}), method(object({
|
|
21278
21367
|
/** Required — the user the assertion belongs to (verified). */
|
|
21279
21368
|
userId: string(),
|
|
@@ -21281,10 +21370,12 @@ method(object({
|
|
|
21281
21370
|
response: record(string(), unknown())
|
|
21282
21371
|
}), object({ verified: boolean() }), {
|
|
21283
21372
|
kind: "mutation",
|
|
21284
|
-
access: "view"
|
|
21373
|
+
access: "view",
|
|
21374
|
+
auth: "admin"
|
|
21285
21375
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
21286
21376
|
kind: "mutation",
|
|
21287
|
-
access: "view"
|
|
21377
|
+
access: "view",
|
|
21378
|
+
auth: "admin"
|
|
21288
21379
|
}), method(object({
|
|
21289
21380
|
/** AuthenticationResponseJSON from the browser. */
|
|
21290
21381
|
response: record(string(), unknown()) }), object({
|
|
@@ -21292,7 +21383,8 @@ response: record(string(), unknown()) }), object({
|
|
|
21292
21383
|
userId: string().nullable()
|
|
21293
21384
|
}), {
|
|
21294
21385
|
kind: "mutation",
|
|
21295
|
-
access: "view"
|
|
21386
|
+
access: "view",
|
|
21387
|
+
auth: "admin"
|
|
21296
21388
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
21297
21389
|
userId: string(),
|
|
21298
21390
|
credentialId: string()
|
|
@@ -21464,7 +21556,19 @@ var VectorStatsResultSchema = object({
|
|
|
21464
21556
|
/** False when the backend ranks approximately. */
|
|
21465
21557
|
exact: boolean()
|
|
21466
21558
|
});
|
|
21467
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
21559
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
21560
|
+
kind: "mutation",
|
|
21561
|
+
auth: "admin"
|
|
21562
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
21563
|
+
kind: "mutation",
|
|
21564
|
+
auth: "admin"
|
|
21565
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
21566
|
+
kind: "mutation",
|
|
21567
|
+
auth: "admin"
|
|
21568
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
21569
|
+
kind: "mutation",
|
|
21570
|
+
auth: "admin"
|
|
21571
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
21468
21572
|
var ClipSchema = object({
|
|
21469
21573
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
21470
21574
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23917,7 +24021,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23917
24021
|
sizeBytes: number(),
|
|
23918
24022
|
timestamp: number()
|
|
23919
24023
|
});
|
|
23920
|
-
method(
|
|
24024
|
+
method(object({
|
|
24025
|
+
/**
|
|
24026
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
24027
|
+
*
|
|
24028
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
24029
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
24030
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
24031
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
24032
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
24033
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
24034
|
+
*
|
|
24035
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
24036
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
24037
|
+
*
|
|
24038
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
24039
|
+
* next train** — the hub router validates cap inputs against its own
|
|
24040
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
24041
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
24042
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
24043
|
+
*/
|
|
24044
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
23921
24045
|
kind: "mutation",
|
|
23922
24046
|
auth: "admin"
|
|
23923
24047
|
}), method(object({
|
|
@@ -26807,8 +26931,10 @@ var PlateInfoSchema = object({
|
|
|
26807
26931
|
keyFrameMediaKey: string().optional(),
|
|
26808
26932
|
base64: string().optional(),
|
|
26809
26933
|
/**
|
|
26810
|
-
* Same crop as a data-plane URL
|
|
26811
|
-
* never inlines JPEG; `listPlates`
|
|
26934
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26935
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26936
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26937
|
+
* left at its `true` default.
|
|
26812
26938
|
*/
|
|
26813
26939
|
cropUrl: string().optional()
|
|
26814
26940
|
});
|
|
@@ -26828,14 +26954,34 @@ var PlateClusterSchema = object({
|
|
|
26828
26954
|
});
|
|
26829
26955
|
method(object({
|
|
26830
26956
|
deviceId: number().int().optional(),
|
|
26831
|
-
limit: number().int().positive().optional()
|
|
26957
|
+
limit: number().int().positive().optional(),
|
|
26958
|
+
/**
|
|
26959
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26960
|
+
* behaviour, kept so no caller breaks.
|
|
26961
|
+
*
|
|
26962
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26963
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26964
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26965
|
+
* metadata without them — and the browser then caches the images.
|
|
26966
|
+
*
|
|
26967
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26968
|
+
* plates were the one gallery list left without it.
|
|
26969
|
+
*
|
|
26970
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26971
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26972
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26973
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26974
|
+
*/
|
|
26975
|
+
includeCrops: boolean().optional()
|
|
26832
26976
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
26833
26977
|
deviceId: number().int(),
|
|
26834
26978
|
trackId: string()
|
|
26835
26979
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
26836
26980
|
text: string().min(1),
|
|
26837
26981
|
maxDistance: number().int().min(0).optional(),
|
|
26838
|
-
limit: number().int().positive().optional()
|
|
26982
|
+
limit: number().int().positive().optional(),
|
|
26983
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26984
|
+
includeCrops: boolean().optional()
|
|
26839
26985
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
26840
26986
|
maxDistance: number().int().min(0).optional(),
|
|
26841
26987
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -26849,7 +26995,13 @@ method(object({
|
|
|
26849
26995
|
}), method(object({ plateId: string() }), _void(), {
|
|
26850
26996
|
kind: "mutation",
|
|
26851
26997
|
auth: "admin"
|
|
26852
|
-
}), method(
|
|
26998
|
+
}), method(object({
|
|
26999
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
27000
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
27001
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
27002
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
27003
|
+
* resolves to `false` and is exactly the intended default. */
|
|
27004
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
26853
27005
|
kind: "mutation",
|
|
26854
27006
|
auth: "admin"
|
|
26855
27007
|
}), method(object({
|
|
@@ -34110,6 +34262,12 @@ Object.freeze({
|
|
|
34110
34262
|
addonId: null,
|
|
34111
34263
|
access: "create"
|
|
34112
34264
|
},
|
|
34265
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
34266
|
+
capName: "pipeline-analytics",
|
|
34267
|
+
capScope: "device",
|
|
34268
|
+
addonId: null,
|
|
34269
|
+
access: "create"
|
|
34270
|
+
},
|
|
34113
34271
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
34114
34272
|
capName: "pipeline-analytics",
|
|
34115
34273
|
capScope: "device",
|
|
@@ -34284,6 +34442,12 @@ Object.freeze({
|
|
|
34284
34442
|
addonId: null,
|
|
34285
34443
|
access: "view"
|
|
34286
34444
|
},
|
|
34445
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
34446
|
+
capName: "pipeline-analytics",
|
|
34447
|
+
capScope: "device",
|
|
34448
|
+
addonId: null,
|
|
34449
|
+
access: "view"
|
|
34450
|
+
},
|
|
34287
34451
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
34288
34452
|
capName: "pipeline-analytics",
|
|
34289
34453
|
capScope: "device",
|
|
@@ -34362,6 +34526,12 @@ Object.freeze({
|
|
|
34362
34526
|
addonId: null,
|
|
34363
34527
|
access: "create"
|
|
34364
34528
|
},
|
|
34529
|
+
"pipelineAnalytics.relocateMedia": {
|
|
34530
|
+
capName: "pipeline-analytics",
|
|
34531
|
+
capScope: "device",
|
|
34532
|
+
addonId: null,
|
|
34533
|
+
access: "create"
|
|
34534
|
+
},
|
|
34365
34535
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
34366
34536
|
capName: "pipeline-analytics",
|
|
34367
34537
|
capScope: "device",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-rademacher",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.28",
|
|
4
4
|
"description": "Rademacher HomePilot device-provider addon for CamStack — wraps the @apocaliss92/noderademacher local-hub client (roller shutters over the cover cap)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|