@camstack/addon-provider-petkit 0.2.28 → 0.2.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +249 -79
- package/dist/addon.mjs +249 -79
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -7732,7 +7732,7 @@ function method(input, output, options) {
|
|
|
7732
7732
|
input,
|
|
7733
7733
|
output,
|
|
7734
7734
|
kind: options?.kind ?? "query",
|
|
7735
|
-
auth: options
|
|
7735
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
7736
7736
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
7737
7737
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
7738
7738
|
timeoutMs: options?.timeoutMs
|
|
@@ -7756,7 +7756,7 @@ function event(data) {
|
|
|
7756
7756
|
}
|
|
7757
7757
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
7758
7758
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
7759
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
7759
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
7760
7760
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
7761
7761
|
DeviceType["Camera"] = "camera";
|
|
7762
7762
|
DeviceType["Hub"] = "hub";
|
|
@@ -8077,7 +8077,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
8077
8077
|
}({});
|
|
8078
8078
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
8079
8079
|
var VersionOutputSchema = object({ version: string() });
|
|
8080
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
8080
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
8081
8081
|
/**
|
|
8082
8082
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
8083
8083
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -8703,24 +8703,6 @@ var RecordingRetentionSchema = object({
|
|
|
8703
8703
|
maxSizeGb: number().min(0).optional()
|
|
8704
8704
|
});
|
|
8705
8705
|
/**
|
|
8706
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
8707
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
8708
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
8709
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
8710
|
-
*
|
|
8711
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
8712
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
8713
|
-
* preset changed over time renders every historical window at the dims it was
|
|
8714
|
-
* written with.
|
|
8715
|
-
*/
|
|
8716
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
8717
|
-
"minimal",
|
|
8718
|
-
"low",
|
|
8719
|
-
"standard",
|
|
8720
|
-
"high",
|
|
8721
|
-
"max"
|
|
8722
|
-
]);
|
|
8723
|
-
/**
|
|
8724
8706
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
8725
8707
|
*
|
|
8726
8708
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -8728,7 +8710,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
8728
8710
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
8729
8711
|
*
|
|
8730
8712
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
8731
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
8713
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
8714
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
8715
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
8716
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
8717
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
8732
8718
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
8733
8719
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
8734
8720
|
*/
|
|
@@ -8751,14 +8737,7 @@ var RecordingConfigSchema = object({
|
|
|
8751
8737
|
* "off" is the absence of a covering band, never a band value.
|
|
8752
8738
|
*/
|
|
8753
8739
|
bands: array(RecordingBandSchema).default([]),
|
|
8754
|
-
retention: RecordingRetentionSchema.optional()
|
|
8755
|
-
/**
|
|
8756
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
8757
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
8758
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
8759
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
8760
|
-
*/
|
|
8761
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
8740
|
+
retention: RecordingRetentionSchema.optional()
|
|
8762
8741
|
}).strict();
|
|
8763
8742
|
/**
|
|
8764
8743
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -8834,10 +8813,11 @@ var RelocateFootageInputSchema = object({
|
|
|
8834
8813
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
8835
8814
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
8836
8815
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
8837
|
-
var
|
|
8816
|
+
var RelocateMediaInputSchema = object({
|
|
8838
8817
|
toLocationId: string(),
|
|
8839
8818
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
8840
|
-
})
|
|
8819
|
+
});
|
|
8820
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
8841
8821
|
/** The independently selectable logical storage classes. `recordings`
|
|
8842
8822
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
8843
8823
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -9132,7 +9112,26 @@ var LabelDefinitionSchema = object({
|
|
|
9132
9112
|
description: string().optional(),
|
|
9133
9113
|
icon: string().optional()
|
|
9134
9114
|
});
|
|
9135
|
-
|
|
9115
|
+
/**
|
|
9116
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
9117
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
9118
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
9119
|
+
* detection pipeline executor actually routes.
|
|
9120
|
+
*
|
|
9121
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
9122
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
9123
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
9124
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
9125
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
9126
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
9127
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
9128
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
9129
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
9130
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
9131
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
9132
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
9133
|
+
*/
|
|
9134
|
+
var DetectionCatalogClassMapSchema = object({
|
|
9136
9135
|
mapping: record(string(), _enum([
|
|
9137
9136
|
"person",
|
|
9138
9137
|
"vehicle",
|
|
@@ -9337,7 +9336,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
9337
9336
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
9338
9337
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
9339
9338
|
*/
|
|
9340
|
-
classMap:
|
|
9339
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
9341
9340
|
});
|
|
9342
9341
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
9343
9342
|
format: literal("openvino"),
|
|
@@ -9367,7 +9366,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
9367
9366
|
"segmentation"
|
|
9368
9367
|
]),
|
|
9369
9368
|
faceAlignment: boolean().optional(),
|
|
9370
|
-
classMap:
|
|
9369
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
9371
9370
|
});
|
|
9372
9371
|
var ConvertResultSchema = object({
|
|
9373
9372
|
entry: ModelCatalogEntrySchema,
|
|
@@ -10230,7 +10229,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
10230
10229
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
10231
10230
|
sectionLabel: string().optional()
|
|
10232
10231
|
});
|
|
10233
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
10232
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
10234
10233
|
var AddonHttpRouteSchema = object({
|
|
10235
10234
|
method: _enum([
|
|
10236
10235
|
"GET",
|
|
@@ -10465,7 +10464,7 @@ var WidgetMetadataSchema = object({
|
|
|
10465
10464
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
10466
10465
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
10467
10466
|
});
|
|
10468
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
10467
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
10469
10468
|
/**
|
|
10470
10469
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
10471
10470
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -12089,7 +12088,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
12089
12088
|
stepId: string(),
|
|
12090
12089
|
entry: ModelCatalogEntrySchema
|
|
12091
12090
|
});
|
|
12092
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
12091
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
12093
12092
|
/**
|
|
12094
12093
|
* Query filter for settings-store collections.
|
|
12095
12094
|
*/
|
|
@@ -12176,7 +12175,8 @@ method(object({
|
|
|
12176
12175
|
}), _void(), { kind: "mutation" }), method(object({
|
|
12177
12176
|
namespace: string().optional(),
|
|
12178
12177
|
collection: string(),
|
|
12179
|
-
filter: QueryFilterSchema.optional()
|
|
12178
|
+
filter: QueryFilterSchema.optional(),
|
|
12179
|
+
columns: array(string()).readonly().optional()
|
|
12180
12180
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
12181
12181
|
namespace: string().optional(),
|
|
12182
12182
|
collection: string(),
|
|
@@ -12239,46 +12239,87 @@ var EngineInfoSchema = object({
|
|
|
12239
12239
|
kind: _enum(["relational", "vector"]),
|
|
12240
12240
|
displayName: string()
|
|
12241
12241
|
});
|
|
12242
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
12242
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
12243
12243
|
namespace: string().optional(),
|
|
12244
12244
|
collection: string(),
|
|
12245
12245
|
key: string()
|
|
12246
|
-
}), unknown()), method(object({
|
|
12246
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
12247
12247
|
namespace: string().optional(),
|
|
12248
12248
|
collection: string(),
|
|
12249
12249
|
key: string(),
|
|
12250
12250
|
value: unknown()
|
|
12251
|
-
}), _void(), {
|
|
12251
|
+
}), _void(), {
|
|
12252
|
+
kind: "mutation",
|
|
12253
|
+
auth: "admin"
|
|
12254
|
+
}), method(object({
|
|
12252
12255
|
namespace: string().optional(),
|
|
12253
12256
|
collection: string(),
|
|
12254
|
-
filter: QueryFilterSchema.optional()
|
|
12255
|
-
|
|
12257
|
+
filter: QueryFilterSchema.optional(),
|
|
12258
|
+
/**
|
|
12259
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
12260
|
+
*
|
|
12261
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
12262
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
12263
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
12264
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
12265
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
12266
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
12267
|
+
*
|
|
12268
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
12269
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
12270
|
+
* interface the engine destructures from. The field existed on both
|
|
12271
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
12272
|
+
* registered provider against `InferProvider<cap>` —
|
|
12273
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
12274
|
+
*
|
|
12275
|
+
* It is declared here anyway, and must stay in step with
|
|
12276
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
12277
|
+
* to be able to see that this call carries a projection.
|
|
12278
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
12279
|
+
*/
|
|
12280
|
+
columns: array(string()).readonly().optional()
|
|
12281
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
12256
12282
|
namespace: string().optional(),
|
|
12257
12283
|
collection: string(),
|
|
12258
12284
|
record: SettingsRecordSchema
|
|
12259
|
-
}), _void(), {
|
|
12285
|
+
}), _void(), {
|
|
12286
|
+
kind: "mutation",
|
|
12287
|
+
auth: "admin"
|
|
12288
|
+
}), method(object({
|
|
12260
12289
|
namespace: string().optional(),
|
|
12261
12290
|
collection: string(),
|
|
12262
12291
|
id: string(),
|
|
12263
12292
|
data: record(string(), unknown())
|
|
12264
|
-
}), _void(), {
|
|
12293
|
+
}), _void(), {
|
|
12294
|
+
kind: "mutation",
|
|
12295
|
+
auth: "admin"
|
|
12296
|
+
}), method(object({
|
|
12265
12297
|
namespace: string().optional(),
|
|
12266
12298
|
collection: string(),
|
|
12267
12299
|
key: string()
|
|
12268
|
-
}), _void(), {
|
|
12300
|
+
}), _void(), {
|
|
12301
|
+
kind: "mutation",
|
|
12302
|
+
auth: "admin"
|
|
12303
|
+
}), method(object({
|
|
12269
12304
|
namespace: string().optional(),
|
|
12270
12305
|
collection: string(),
|
|
12271
12306
|
filter: MutationFilterSchema
|
|
12272
|
-
}), object({ deleted: number().int() }), {
|
|
12307
|
+
}), object({ deleted: number().int() }), {
|
|
12308
|
+
kind: "mutation",
|
|
12309
|
+
auth: "admin"
|
|
12310
|
+
}), method(object({
|
|
12273
12311
|
namespace: string().optional(),
|
|
12274
12312
|
collection: string(),
|
|
12275
12313
|
filter: MutationFilterSchema,
|
|
12276
12314
|
data: record(string(), unknown())
|
|
12277
|
-
}), object({ updated: number().int() }), {
|
|
12315
|
+
}), object({ updated: number().int() }), {
|
|
12316
|
+
kind: "mutation",
|
|
12317
|
+
auth: "admin"
|
|
12318
|
+
}), method(object({
|
|
12278
12319
|
namespace: string().optional(),
|
|
12279
12320
|
collection: string(),
|
|
12280
12321
|
filter: QueryFilterSchema.optional()
|
|
12281
|
-
}), number()), method(object({
|
|
12322
|
+
}), number(), { auth: "admin" }), method(object({
|
|
12282
12323
|
namespace: string().optional(),
|
|
12283
12324
|
collection: string(),
|
|
12284
12325
|
field: string(),
|
|
@@ -12288,15 +12329,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
12288
12329
|
}), array(object({
|
|
12289
12330
|
bucket: number().int(),
|
|
12290
12331
|
count: number().int()
|
|
12291
|
-
})).readonly()), method(object({
|
|
12332
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
12292
12333
|
namespace: string().optional(),
|
|
12293
12334
|
collection: string()
|
|
12294
|
-
}), boolean()), method(object({
|
|
12335
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
12295
12336
|
namespace: string().optional(),
|
|
12296
12337
|
collection: string(),
|
|
12297
12338
|
columns: array(CollectionColumnSchema).readonly(),
|
|
12298
12339
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
12299
|
-
}), _void(), {
|
|
12340
|
+
}), _void(), {
|
|
12341
|
+
kind: "mutation",
|
|
12342
|
+
auth: "admin"
|
|
12343
|
+
});
|
|
12300
12344
|
/**
|
|
12301
12345
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
12302
12346
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -13603,7 +13647,7 @@ method(object({
|
|
|
13603
13647
|
crop: _instanceof(Uint8Array),
|
|
13604
13648
|
width: number(),
|
|
13605
13649
|
height: number()
|
|
13606
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
13650
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
13607
13651
|
/**
|
|
13608
13652
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
13609
13653
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -13896,19 +13940,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
13896
13940
|
runtime: ManagedRuntimeConfigSchema,
|
|
13897
13941
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
13898
13942
|
timeoutMs: number().int().positive().optional()
|
|
13899
|
-
}), LlmGenerateResultSchema, {
|
|
13943
|
+
}), LlmGenerateResultSchema, {
|
|
13944
|
+
kind: "mutation",
|
|
13945
|
+
auth: "admin"
|
|
13946
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
13900
13947
|
kind: "mutation",
|
|
13901
13948
|
auth: "admin"
|
|
13902
13949
|
}), method(object({}), _void(), {
|
|
13903
13950
|
kind: "mutation",
|
|
13904
13951
|
auth: "admin"
|
|
13905
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13952
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13906
13953
|
kind: "mutation",
|
|
13907
13954
|
auth: "admin"
|
|
13908
13955
|
}), method(object({ file: string() }), _void(), {
|
|
13909
13956
|
kind: "mutation",
|
|
13910
13957
|
auth: "admin"
|
|
13911
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
13958
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
13912
13959
|
/**
|
|
13913
13960
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
13914
13961
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -17419,7 +17466,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
17419
17466
|
*/
|
|
17420
17467
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
17421
17468
|
});
|
|
17422
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
17469
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
17423
17470
|
/**
|
|
17424
17471
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
17425
17472
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -18614,6 +18661,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
18614
18661
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
18615
18662
|
kind: "mutation",
|
|
18616
18663
|
auth: "admin"
|
|
18664
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
18665
|
+
kind: "mutation",
|
|
18666
|
+
auth: "admin"
|
|
18667
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
18668
|
+
kind: "query",
|
|
18669
|
+
auth: "admin"
|
|
18670
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
18671
|
+
kind: "mutation",
|
|
18672
|
+
auth: "admin"
|
|
18617
18673
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
18618
18674
|
kind: "query",
|
|
18619
18675
|
auth: "admin"
|
|
@@ -18768,6 +18824,11 @@ object({
|
|
|
18768
18824
|
"jpeg"
|
|
18769
18825
|
])
|
|
18770
18826
|
});
|
|
18827
|
+
/**
|
|
18828
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
18829
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
18830
|
+
* other process or execution group.
|
|
18831
|
+
*/
|
|
18771
18832
|
var FrameRefSchema = object({
|
|
18772
18833
|
registryId: string().min(1),
|
|
18773
18834
|
id: string().min(1),
|
|
@@ -20973,7 +21034,7 @@ method(object({
|
|
|
20973
21034
|
* linking rather than produce an eternal token.
|
|
20974
21035
|
*/
|
|
20975
21036
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
20976
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
21037
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
20977
21038
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
20978
21039
|
providerId: string().min(1),
|
|
20979
21040
|
displayName: string().min(1),
|
|
@@ -21068,10 +21129,13 @@ var EvictResultSchema = object({
|
|
|
21068
21129
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
21069
21130
|
exhausted: boolean()
|
|
21070
21131
|
});
|
|
21071
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
21132
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
21072
21133
|
locationId: string(),
|
|
21073
21134
|
targetBytes: number().int().positive()
|
|
21074
|
-
}), EvictResultSchema, {
|
|
21135
|
+
}), EvictResultSchema, {
|
|
21136
|
+
kind: "mutation",
|
|
21137
|
+
auth: "admin"
|
|
21138
|
+
});
|
|
21075
21139
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
21076
21140
|
kind: "mutation",
|
|
21077
21141
|
auth: "admin"
|
|
@@ -21131,26 +21195,50 @@ var ReadChunkInputSchema = object({
|
|
|
21131
21195
|
length: number()
|
|
21132
21196
|
});
|
|
21133
21197
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
21134
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
21198
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
21135
21199
|
location: StorageLocationSchema,
|
|
21136
21200
|
relativePath: string()
|
|
21137
|
-
}), string()), method(object({
|
|
21201
|
+
}), string(), { auth: "admin" }), method(object({
|
|
21138
21202
|
location: StorageLocationSchema,
|
|
21139
21203
|
relativePath: string(),
|
|
21140
21204
|
data: _instanceof(Uint8Array)
|
|
21141
|
-
}), _void(), {
|
|
21205
|
+
}), _void(), {
|
|
21206
|
+
kind: "mutation",
|
|
21207
|
+
auth: "admin"
|
|
21208
|
+
}), method(object({
|
|
21142
21209
|
location: StorageLocationSchema,
|
|
21143
21210
|
relativePath: string()
|
|
21144
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
21211
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
21145
21212
|
location: StorageLocationSchema,
|
|
21146
21213
|
relativePath: string()
|
|
21147
|
-
}), boolean()), method(object({
|
|
21214
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
21148
21215
|
location: StorageLocationSchema,
|
|
21149
21216
|
prefix: string().optional()
|
|
21150
|
-
}), array(string()).readonly()), method(object({
|
|
21217
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
21151
21218
|
location: StorageLocationSchema,
|
|
21152
21219
|
relativePath: string()
|
|
21153
|
-
}), _void(), {
|
|
21220
|
+
}), _void(), {
|
|
21221
|
+
kind: "mutation",
|
|
21222
|
+
auth: "admin"
|
|
21223
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
21224
|
+
kind: "mutation",
|
|
21225
|
+
auth: "admin"
|
|
21226
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
21227
|
+
kind: "mutation",
|
|
21228
|
+
auth: "admin"
|
|
21229
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
21230
|
+
kind: "mutation",
|
|
21231
|
+
auth: "admin"
|
|
21232
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
21233
|
+
kind: "mutation",
|
|
21234
|
+
auth: "admin"
|
|
21235
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
21236
|
+
kind: "mutation",
|
|
21237
|
+
auth: "admin"
|
|
21238
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
21239
|
+
kind: "mutation",
|
|
21240
|
+
auth: "admin"
|
|
21241
|
+
});
|
|
21154
21242
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
21155
21243
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
21156
21244
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -21408,7 +21496,8 @@ method(object({
|
|
|
21408
21496
|
access: "create"
|
|
21409
21497
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
21410
21498
|
kind: "mutation",
|
|
21411
|
-
access: "view"
|
|
21499
|
+
access: "view",
|
|
21500
|
+
auth: "admin"
|
|
21412
21501
|
}), method(object({
|
|
21413
21502
|
/** Required — the user the assertion belongs to (verified). */
|
|
21414
21503
|
userId: string(),
|
|
@@ -21416,10 +21505,12 @@ method(object({
|
|
|
21416
21505
|
response: record(string(), unknown())
|
|
21417
21506
|
}), object({ verified: boolean() }), {
|
|
21418
21507
|
kind: "mutation",
|
|
21419
|
-
access: "view"
|
|
21508
|
+
access: "view",
|
|
21509
|
+
auth: "admin"
|
|
21420
21510
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
21421
21511
|
kind: "mutation",
|
|
21422
|
-
access: "view"
|
|
21512
|
+
access: "view",
|
|
21513
|
+
auth: "admin"
|
|
21423
21514
|
}), method(object({
|
|
21424
21515
|
/** AuthenticationResponseJSON from the browser. */
|
|
21425
21516
|
response: record(string(), unknown()) }), object({
|
|
@@ -21427,7 +21518,8 @@ response: record(string(), unknown()) }), object({
|
|
|
21427
21518
|
userId: string().nullable()
|
|
21428
21519
|
}), {
|
|
21429
21520
|
kind: "mutation",
|
|
21430
|
-
access: "view"
|
|
21521
|
+
access: "view",
|
|
21522
|
+
auth: "admin"
|
|
21431
21523
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
21432
21524
|
userId: string(),
|
|
21433
21525
|
credentialId: string()
|
|
@@ -21599,7 +21691,19 @@ var VectorStatsResultSchema = object({
|
|
|
21599
21691
|
/** False when the backend ranks approximately. */
|
|
21600
21692
|
exact: boolean()
|
|
21601
21693
|
});
|
|
21602
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
21694
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
21695
|
+
kind: "mutation",
|
|
21696
|
+
auth: "admin"
|
|
21697
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
21698
|
+
kind: "mutation",
|
|
21699
|
+
auth: "admin"
|
|
21700
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
21701
|
+
kind: "mutation",
|
|
21702
|
+
auth: "admin"
|
|
21703
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
21704
|
+
kind: "mutation",
|
|
21705
|
+
auth: "admin"
|
|
21706
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
21603
21707
|
var ClipSchema = object({
|
|
21604
21708
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
21605
21709
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -24060,7 +24164,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
24060
24164
|
sizeBytes: number(),
|
|
24061
24165
|
timestamp: number()
|
|
24062
24166
|
});
|
|
24063
|
-
method(
|
|
24167
|
+
method(object({
|
|
24168
|
+
/**
|
|
24169
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
24170
|
+
*
|
|
24171
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
24172
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
24173
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
24174
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
24175
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
24176
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
24177
|
+
*
|
|
24178
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
24179
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
24180
|
+
*
|
|
24181
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
24182
|
+
* next train** — the hub router validates cap inputs against its own
|
|
24183
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
24184
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
24185
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
24186
|
+
*/
|
|
24187
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
24064
24188
|
kind: "mutation",
|
|
24065
24189
|
auth: "admin"
|
|
24066
24190
|
}), method(object({
|
|
@@ -26950,8 +27074,10 @@ var PlateInfoSchema = object({
|
|
|
26950
27074
|
keyFrameMediaKey: string().optional(),
|
|
26951
27075
|
base64: string().optional(),
|
|
26952
27076
|
/**
|
|
26953
|
-
* Same crop as a data-plane URL
|
|
26954
|
-
* never inlines JPEG; `listPlates`
|
|
27077
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
27078
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
27079
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
27080
|
+
* left at its `true` default.
|
|
26955
27081
|
*/
|
|
26956
27082
|
cropUrl: string().optional()
|
|
26957
27083
|
});
|
|
@@ -26971,14 +27097,34 @@ var PlateClusterSchema = object({
|
|
|
26971
27097
|
});
|
|
26972
27098
|
method(object({
|
|
26973
27099
|
deviceId: number().int().optional(),
|
|
26974
|
-
limit: number().int().positive().optional()
|
|
27100
|
+
limit: number().int().positive().optional(),
|
|
27101
|
+
/**
|
|
27102
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
27103
|
+
* behaviour, kept so no caller breaks.
|
|
27104
|
+
*
|
|
27105
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
27106
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
27107
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
27108
|
+
* metadata without them — and the browser then caches the images.
|
|
27109
|
+
*
|
|
27110
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
27111
|
+
* plates were the one gallery list left without it.
|
|
27112
|
+
*
|
|
27113
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
27114
|
+
* next train.** The hub router validates cap inputs against its own
|
|
27115
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
27116
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
27117
|
+
*/
|
|
27118
|
+
includeCrops: boolean().optional()
|
|
26975
27119
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
26976
27120
|
deviceId: number().int(),
|
|
26977
27121
|
trackId: string()
|
|
26978
27122
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
26979
27123
|
text: string().min(1),
|
|
26980
27124
|
maxDistance: number().int().min(0).optional(),
|
|
26981
|
-
limit: number().int().positive().optional()
|
|
27125
|
+
limit: number().int().positive().optional(),
|
|
27126
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
27127
|
+
includeCrops: boolean().optional()
|
|
26982
27128
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
26983
27129
|
maxDistance: number().int().min(0).optional(),
|
|
26984
27130
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -26992,7 +27138,13 @@ method(object({
|
|
|
26992
27138
|
}), method(object({ plateId: string() }), _void(), {
|
|
26993
27139
|
kind: "mutation",
|
|
26994
27140
|
auth: "admin"
|
|
26995
|
-
}), method(
|
|
27141
|
+
}), method(object({
|
|
27142
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
27143
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
27144
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
27145
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
27146
|
+
* resolves to `false` and is exactly the intended default. */
|
|
27147
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
26996
27148
|
kind: "mutation",
|
|
26997
27149
|
auth: "admin"
|
|
26998
27150
|
}), method(object({
|
|
@@ -34253,6 +34405,12 @@ Object.freeze({
|
|
|
34253
34405
|
addonId: null,
|
|
34254
34406
|
access: "create"
|
|
34255
34407
|
},
|
|
34408
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
34409
|
+
capName: "pipeline-analytics",
|
|
34410
|
+
capScope: "device",
|
|
34411
|
+
addonId: null,
|
|
34412
|
+
access: "create"
|
|
34413
|
+
},
|
|
34256
34414
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
34257
34415
|
capName: "pipeline-analytics",
|
|
34258
34416
|
capScope: "device",
|
|
@@ -34427,6 +34585,12 @@ Object.freeze({
|
|
|
34427
34585
|
addonId: null,
|
|
34428
34586
|
access: "view"
|
|
34429
34587
|
},
|
|
34588
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
34589
|
+
capName: "pipeline-analytics",
|
|
34590
|
+
capScope: "device",
|
|
34591
|
+
addonId: null,
|
|
34592
|
+
access: "view"
|
|
34593
|
+
},
|
|
34430
34594
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
34431
34595
|
capName: "pipeline-analytics",
|
|
34432
34596
|
capScope: "device",
|
|
@@ -34505,6 +34669,12 @@ Object.freeze({
|
|
|
34505
34669
|
addonId: null,
|
|
34506
34670
|
access: "create"
|
|
34507
34671
|
},
|
|
34672
|
+
"pipelineAnalytics.relocateMedia": {
|
|
34673
|
+
capName: "pipeline-analytics",
|
|
34674
|
+
capScope: "device",
|
|
34675
|
+
addonId: null,
|
|
34676
|
+
access: "create"
|
|
34677
|
+
},
|
|
34508
34678
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
34509
34679
|
capName: "pipeline-analytics",
|
|
34510
34680
|
capScope: "device",
|
package/dist/addon.mjs
CHANGED
|
@@ -7731,7 +7731,7 @@ function method(input, output, options) {
|
|
|
7731
7731
|
input,
|
|
7732
7732
|
output,
|
|
7733
7733
|
kind: options?.kind ?? "query",
|
|
7734
|
-
auth: options
|
|
7734
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
7735
7735
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
7736
7736
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
7737
7737
|
timeoutMs: options?.timeoutMs
|
|
@@ -7755,7 +7755,7 @@ function event(data) {
|
|
|
7755
7755
|
}
|
|
7756
7756
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
7757
7757
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
7758
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
7758
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
7759
7759
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
7760
7760
|
DeviceType["Camera"] = "camera";
|
|
7761
7761
|
DeviceType["Hub"] = "hub";
|
|
@@ -8076,7 +8076,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
8076
8076
|
}({});
|
|
8077
8077
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
8078
8078
|
var VersionOutputSchema = object({ version: string() });
|
|
8079
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
8079
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
8080
8080
|
/**
|
|
8081
8081
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
8082
8082
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -8702,24 +8702,6 @@ var RecordingRetentionSchema = object({
|
|
|
8702
8702
|
maxSizeGb: number().min(0).optional()
|
|
8703
8703
|
});
|
|
8704
8704
|
/**
|
|
8705
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
8706
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
8707
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
8708
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
8709
|
-
*
|
|
8710
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
8711
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
8712
|
-
* preset changed over time renders every historical window at the dims it was
|
|
8713
|
-
* written with.
|
|
8714
|
-
*/
|
|
8715
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
8716
|
-
"minimal",
|
|
8717
|
-
"low",
|
|
8718
|
-
"standard",
|
|
8719
|
-
"high",
|
|
8720
|
-
"max"
|
|
8721
|
-
]);
|
|
8722
|
-
/**
|
|
8723
8705
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
8724
8706
|
*
|
|
8725
8707
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -8727,7 +8709,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
8727
8709
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
8728
8710
|
*
|
|
8729
8711
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
8730
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
8712
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
8713
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
8714
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
8715
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
8716
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
8731
8717
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
8732
8718
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
8733
8719
|
*/
|
|
@@ -8750,14 +8736,7 @@ var RecordingConfigSchema = object({
|
|
|
8750
8736
|
* "off" is the absence of a covering band, never a band value.
|
|
8751
8737
|
*/
|
|
8752
8738
|
bands: array(RecordingBandSchema).default([]),
|
|
8753
|
-
retention: RecordingRetentionSchema.optional()
|
|
8754
|
-
/**
|
|
8755
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
8756
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
8757
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
8758
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
8759
|
-
*/
|
|
8760
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
8739
|
+
retention: RecordingRetentionSchema.optional()
|
|
8761
8740
|
}).strict();
|
|
8762
8741
|
/**
|
|
8763
8742
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -8833,10 +8812,11 @@ var RelocateFootageInputSchema = object({
|
|
|
8833
8812
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
8834
8813
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
8835
8814
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
8836
|
-
var
|
|
8815
|
+
var RelocateMediaInputSchema = object({
|
|
8837
8816
|
toLocationId: string(),
|
|
8838
8817
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
8839
|
-
})
|
|
8818
|
+
});
|
|
8819
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
8840
8820
|
/** The independently selectable logical storage classes. `recordings`
|
|
8841
8821
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
8842
8822
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -9131,7 +9111,26 @@ var LabelDefinitionSchema = object({
|
|
|
9131
9111
|
description: string().optional(),
|
|
9132
9112
|
icon: string().optional()
|
|
9133
9113
|
});
|
|
9134
|
-
|
|
9114
|
+
/**
|
|
9115
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
9116
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
9117
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
9118
|
+
* detection pipeline executor actually routes.
|
|
9119
|
+
*
|
|
9120
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
9121
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
9122
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
9123
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
9124
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
9125
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
9126
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
9127
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
9128
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
9129
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
9130
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
9131
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
9132
|
+
*/
|
|
9133
|
+
var DetectionCatalogClassMapSchema = object({
|
|
9135
9134
|
mapping: record(string(), _enum([
|
|
9136
9135
|
"person",
|
|
9137
9136
|
"vehicle",
|
|
@@ -9336,7 +9335,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
9336
9335
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
9337
9336
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
9338
9337
|
*/
|
|
9339
|
-
classMap:
|
|
9338
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
9340
9339
|
});
|
|
9341
9340
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
9342
9341
|
format: literal("openvino"),
|
|
@@ -9366,7 +9365,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
9366
9365
|
"segmentation"
|
|
9367
9366
|
]),
|
|
9368
9367
|
faceAlignment: boolean().optional(),
|
|
9369
|
-
classMap:
|
|
9368
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
9370
9369
|
});
|
|
9371
9370
|
var ConvertResultSchema = object({
|
|
9372
9371
|
entry: ModelCatalogEntrySchema,
|
|
@@ -10229,7 +10228,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
10229
10228
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
10230
10229
|
sectionLabel: string().optional()
|
|
10231
10230
|
});
|
|
10232
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
10231
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
10233
10232
|
var AddonHttpRouteSchema = object({
|
|
10234
10233
|
method: _enum([
|
|
10235
10234
|
"GET",
|
|
@@ -10464,7 +10463,7 @@ var WidgetMetadataSchema = object({
|
|
|
10464
10463
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
10465
10464
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
10466
10465
|
});
|
|
10467
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
10466
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
10468
10467
|
/**
|
|
10469
10468
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
10470
10469
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -12088,7 +12087,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
12088
12087
|
stepId: string(),
|
|
12089
12088
|
entry: ModelCatalogEntrySchema
|
|
12090
12089
|
});
|
|
12091
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
12090
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
12092
12091
|
/**
|
|
12093
12092
|
* Query filter for settings-store collections.
|
|
12094
12093
|
*/
|
|
@@ -12175,7 +12174,8 @@ method(object({
|
|
|
12175
12174
|
}), _void(), { kind: "mutation" }), method(object({
|
|
12176
12175
|
namespace: string().optional(),
|
|
12177
12176
|
collection: string(),
|
|
12178
|
-
filter: QueryFilterSchema.optional()
|
|
12177
|
+
filter: QueryFilterSchema.optional(),
|
|
12178
|
+
columns: array(string()).readonly().optional()
|
|
12179
12179
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
12180
12180
|
namespace: string().optional(),
|
|
12181
12181
|
collection: string(),
|
|
@@ -12238,46 +12238,87 @@ var EngineInfoSchema = object({
|
|
|
12238
12238
|
kind: _enum(["relational", "vector"]),
|
|
12239
12239
|
displayName: string()
|
|
12240
12240
|
});
|
|
12241
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
12241
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
12242
12242
|
namespace: string().optional(),
|
|
12243
12243
|
collection: string(),
|
|
12244
12244
|
key: string()
|
|
12245
|
-
}), unknown()), method(object({
|
|
12245
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
12246
12246
|
namespace: string().optional(),
|
|
12247
12247
|
collection: string(),
|
|
12248
12248
|
key: string(),
|
|
12249
12249
|
value: unknown()
|
|
12250
|
-
}), _void(), {
|
|
12250
|
+
}), _void(), {
|
|
12251
|
+
kind: "mutation",
|
|
12252
|
+
auth: "admin"
|
|
12253
|
+
}), method(object({
|
|
12251
12254
|
namespace: string().optional(),
|
|
12252
12255
|
collection: string(),
|
|
12253
|
-
filter: QueryFilterSchema.optional()
|
|
12254
|
-
|
|
12256
|
+
filter: QueryFilterSchema.optional(),
|
|
12257
|
+
/**
|
|
12258
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
12259
|
+
*
|
|
12260
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
12261
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
12262
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
12263
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
12264
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
12265
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
12266
|
+
*
|
|
12267
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
12268
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
12269
|
+
* interface the engine destructures from. The field existed on both
|
|
12270
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
12271
|
+
* registered provider against `InferProvider<cap>` —
|
|
12272
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
12273
|
+
*
|
|
12274
|
+
* It is declared here anyway, and must stay in step with
|
|
12275
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
12276
|
+
* to be able to see that this call carries a projection.
|
|
12277
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
12278
|
+
*/
|
|
12279
|
+
columns: array(string()).readonly().optional()
|
|
12280
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
12255
12281
|
namespace: string().optional(),
|
|
12256
12282
|
collection: string(),
|
|
12257
12283
|
record: SettingsRecordSchema
|
|
12258
|
-
}), _void(), {
|
|
12284
|
+
}), _void(), {
|
|
12285
|
+
kind: "mutation",
|
|
12286
|
+
auth: "admin"
|
|
12287
|
+
}), method(object({
|
|
12259
12288
|
namespace: string().optional(),
|
|
12260
12289
|
collection: string(),
|
|
12261
12290
|
id: string(),
|
|
12262
12291
|
data: record(string(), unknown())
|
|
12263
|
-
}), _void(), {
|
|
12292
|
+
}), _void(), {
|
|
12293
|
+
kind: "mutation",
|
|
12294
|
+
auth: "admin"
|
|
12295
|
+
}), method(object({
|
|
12264
12296
|
namespace: string().optional(),
|
|
12265
12297
|
collection: string(),
|
|
12266
12298
|
key: string()
|
|
12267
|
-
}), _void(), {
|
|
12299
|
+
}), _void(), {
|
|
12300
|
+
kind: "mutation",
|
|
12301
|
+
auth: "admin"
|
|
12302
|
+
}), method(object({
|
|
12268
12303
|
namespace: string().optional(),
|
|
12269
12304
|
collection: string(),
|
|
12270
12305
|
filter: MutationFilterSchema
|
|
12271
|
-
}), object({ deleted: number().int() }), {
|
|
12306
|
+
}), object({ deleted: number().int() }), {
|
|
12307
|
+
kind: "mutation",
|
|
12308
|
+
auth: "admin"
|
|
12309
|
+
}), method(object({
|
|
12272
12310
|
namespace: string().optional(),
|
|
12273
12311
|
collection: string(),
|
|
12274
12312
|
filter: MutationFilterSchema,
|
|
12275
12313
|
data: record(string(), unknown())
|
|
12276
|
-
}), object({ updated: number().int() }), {
|
|
12314
|
+
}), object({ updated: number().int() }), {
|
|
12315
|
+
kind: "mutation",
|
|
12316
|
+
auth: "admin"
|
|
12317
|
+
}), method(object({
|
|
12277
12318
|
namespace: string().optional(),
|
|
12278
12319
|
collection: string(),
|
|
12279
12320
|
filter: QueryFilterSchema.optional()
|
|
12280
|
-
}), number()), method(object({
|
|
12321
|
+
}), number(), { auth: "admin" }), method(object({
|
|
12281
12322
|
namespace: string().optional(),
|
|
12282
12323
|
collection: string(),
|
|
12283
12324
|
field: string(),
|
|
@@ -12287,15 +12328,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
12287
12328
|
}), array(object({
|
|
12288
12329
|
bucket: number().int(),
|
|
12289
12330
|
count: number().int()
|
|
12290
|
-
})).readonly()), method(object({
|
|
12331
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
12291
12332
|
namespace: string().optional(),
|
|
12292
12333
|
collection: string()
|
|
12293
|
-
}), boolean()), method(object({
|
|
12334
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
12294
12335
|
namespace: string().optional(),
|
|
12295
12336
|
collection: string(),
|
|
12296
12337
|
columns: array(CollectionColumnSchema).readonly(),
|
|
12297
12338
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
12298
|
-
}), _void(), {
|
|
12339
|
+
}), _void(), {
|
|
12340
|
+
kind: "mutation",
|
|
12341
|
+
auth: "admin"
|
|
12342
|
+
});
|
|
12299
12343
|
/**
|
|
12300
12344
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
12301
12345
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -13602,7 +13646,7 @@ method(object({
|
|
|
13602
13646
|
crop: _instanceof(Uint8Array),
|
|
13603
13647
|
width: number(),
|
|
13604
13648
|
height: number()
|
|
13605
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
13649
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
13606
13650
|
/**
|
|
13607
13651
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
13608
13652
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -13895,19 +13939,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
13895
13939
|
runtime: ManagedRuntimeConfigSchema,
|
|
13896
13940
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
13897
13941
|
timeoutMs: number().int().positive().optional()
|
|
13898
|
-
}), LlmGenerateResultSchema, {
|
|
13942
|
+
}), LlmGenerateResultSchema, {
|
|
13943
|
+
kind: "mutation",
|
|
13944
|
+
auth: "admin"
|
|
13945
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
13899
13946
|
kind: "mutation",
|
|
13900
13947
|
auth: "admin"
|
|
13901
13948
|
}), method(object({}), _void(), {
|
|
13902
13949
|
kind: "mutation",
|
|
13903
13950
|
auth: "admin"
|
|
13904
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13951
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13905
13952
|
kind: "mutation",
|
|
13906
13953
|
auth: "admin"
|
|
13907
13954
|
}), method(object({ file: string() }), _void(), {
|
|
13908
13955
|
kind: "mutation",
|
|
13909
13956
|
auth: "admin"
|
|
13910
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
13957
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
13911
13958
|
/**
|
|
13912
13959
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
13913
13960
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -17418,7 +17465,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
17418
17465
|
*/
|
|
17419
17466
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
17420
17467
|
});
|
|
17421
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
17468
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
17422
17469
|
/**
|
|
17423
17470
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
17424
17471
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -18613,6 +18660,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
18613
18660
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
18614
18661
|
kind: "mutation",
|
|
18615
18662
|
auth: "admin"
|
|
18663
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
18664
|
+
kind: "mutation",
|
|
18665
|
+
auth: "admin"
|
|
18666
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
18667
|
+
kind: "query",
|
|
18668
|
+
auth: "admin"
|
|
18669
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
18670
|
+
kind: "mutation",
|
|
18671
|
+
auth: "admin"
|
|
18616
18672
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
18617
18673
|
kind: "query",
|
|
18618
18674
|
auth: "admin"
|
|
@@ -18767,6 +18823,11 @@ object({
|
|
|
18767
18823
|
"jpeg"
|
|
18768
18824
|
])
|
|
18769
18825
|
});
|
|
18826
|
+
/**
|
|
18827
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
18828
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
18829
|
+
* other process or execution group.
|
|
18830
|
+
*/
|
|
18770
18831
|
var FrameRefSchema = object({
|
|
18771
18832
|
registryId: string().min(1),
|
|
18772
18833
|
id: string().min(1),
|
|
@@ -20972,7 +21033,7 @@ method(object({
|
|
|
20972
21033
|
* linking rather than produce an eternal token.
|
|
20973
21034
|
*/
|
|
20974
21035
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
20975
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
21036
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
20976
21037
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
20977
21038
|
providerId: string().min(1),
|
|
20978
21039
|
displayName: string().min(1),
|
|
@@ -21067,10 +21128,13 @@ var EvictResultSchema = object({
|
|
|
21067
21128
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
21068
21129
|
exhausted: boolean()
|
|
21069
21130
|
});
|
|
21070
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
21131
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
21071
21132
|
locationId: string(),
|
|
21072
21133
|
targetBytes: number().int().positive()
|
|
21073
|
-
}), EvictResultSchema, {
|
|
21134
|
+
}), EvictResultSchema, {
|
|
21135
|
+
kind: "mutation",
|
|
21136
|
+
auth: "admin"
|
|
21137
|
+
});
|
|
21074
21138
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
21075
21139
|
kind: "mutation",
|
|
21076
21140
|
auth: "admin"
|
|
@@ -21130,26 +21194,50 @@ var ReadChunkInputSchema = object({
|
|
|
21130
21194
|
length: number()
|
|
21131
21195
|
});
|
|
21132
21196
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
21133
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
21197
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
21134
21198
|
location: StorageLocationSchema,
|
|
21135
21199
|
relativePath: string()
|
|
21136
|
-
}), string()), method(object({
|
|
21200
|
+
}), string(), { auth: "admin" }), method(object({
|
|
21137
21201
|
location: StorageLocationSchema,
|
|
21138
21202
|
relativePath: string(),
|
|
21139
21203
|
data: _instanceof(Uint8Array)
|
|
21140
|
-
}), _void(), {
|
|
21204
|
+
}), _void(), {
|
|
21205
|
+
kind: "mutation",
|
|
21206
|
+
auth: "admin"
|
|
21207
|
+
}), method(object({
|
|
21141
21208
|
location: StorageLocationSchema,
|
|
21142
21209
|
relativePath: string()
|
|
21143
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
21210
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
21144
21211
|
location: StorageLocationSchema,
|
|
21145
21212
|
relativePath: string()
|
|
21146
|
-
}), boolean()), method(object({
|
|
21213
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
21147
21214
|
location: StorageLocationSchema,
|
|
21148
21215
|
prefix: string().optional()
|
|
21149
|
-
}), array(string()).readonly()), method(object({
|
|
21216
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
21150
21217
|
location: StorageLocationSchema,
|
|
21151
21218
|
relativePath: string()
|
|
21152
|
-
}), _void(), {
|
|
21219
|
+
}), _void(), {
|
|
21220
|
+
kind: "mutation",
|
|
21221
|
+
auth: "admin"
|
|
21222
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
21223
|
+
kind: "mutation",
|
|
21224
|
+
auth: "admin"
|
|
21225
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
21226
|
+
kind: "mutation",
|
|
21227
|
+
auth: "admin"
|
|
21228
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
21229
|
+
kind: "mutation",
|
|
21230
|
+
auth: "admin"
|
|
21231
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
21232
|
+
kind: "mutation",
|
|
21233
|
+
auth: "admin"
|
|
21234
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
21235
|
+
kind: "mutation",
|
|
21236
|
+
auth: "admin"
|
|
21237
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
21238
|
+
kind: "mutation",
|
|
21239
|
+
auth: "admin"
|
|
21240
|
+
});
|
|
21153
21241
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
21154
21242
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
21155
21243
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -21407,7 +21495,8 @@ method(object({
|
|
|
21407
21495
|
access: "create"
|
|
21408
21496
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
21409
21497
|
kind: "mutation",
|
|
21410
|
-
access: "view"
|
|
21498
|
+
access: "view",
|
|
21499
|
+
auth: "admin"
|
|
21411
21500
|
}), method(object({
|
|
21412
21501
|
/** Required — the user the assertion belongs to (verified). */
|
|
21413
21502
|
userId: string(),
|
|
@@ -21415,10 +21504,12 @@ method(object({
|
|
|
21415
21504
|
response: record(string(), unknown())
|
|
21416
21505
|
}), object({ verified: boolean() }), {
|
|
21417
21506
|
kind: "mutation",
|
|
21418
|
-
access: "view"
|
|
21507
|
+
access: "view",
|
|
21508
|
+
auth: "admin"
|
|
21419
21509
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
21420
21510
|
kind: "mutation",
|
|
21421
|
-
access: "view"
|
|
21511
|
+
access: "view",
|
|
21512
|
+
auth: "admin"
|
|
21422
21513
|
}), method(object({
|
|
21423
21514
|
/** AuthenticationResponseJSON from the browser. */
|
|
21424
21515
|
response: record(string(), unknown()) }), object({
|
|
@@ -21426,7 +21517,8 @@ response: record(string(), unknown()) }), object({
|
|
|
21426
21517
|
userId: string().nullable()
|
|
21427
21518
|
}), {
|
|
21428
21519
|
kind: "mutation",
|
|
21429
|
-
access: "view"
|
|
21520
|
+
access: "view",
|
|
21521
|
+
auth: "admin"
|
|
21430
21522
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
21431
21523
|
userId: string(),
|
|
21432
21524
|
credentialId: string()
|
|
@@ -21598,7 +21690,19 @@ var VectorStatsResultSchema = object({
|
|
|
21598
21690
|
/** False when the backend ranks approximately. */
|
|
21599
21691
|
exact: boolean()
|
|
21600
21692
|
});
|
|
21601
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
21693
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
21694
|
+
kind: "mutation",
|
|
21695
|
+
auth: "admin"
|
|
21696
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
21697
|
+
kind: "mutation",
|
|
21698
|
+
auth: "admin"
|
|
21699
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
21700
|
+
kind: "mutation",
|
|
21701
|
+
auth: "admin"
|
|
21702
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
21703
|
+
kind: "mutation",
|
|
21704
|
+
auth: "admin"
|
|
21705
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
21602
21706
|
var ClipSchema = object({
|
|
21603
21707
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
21604
21708
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -24059,7 +24163,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
24059
24163
|
sizeBytes: number(),
|
|
24060
24164
|
timestamp: number()
|
|
24061
24165
|
});
|
|
24062
|
-
method(
|
|
24166
|
+
method(object({
|
|
24167
|
+
/**
|
|
24168
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
24169
|
+
*
|
|
24170
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
24171
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
24172
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
24173
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
24174
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
24175
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
24176
|
+
*
|
|
24177
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
24178
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
24179
|
+
*
|
|
24180
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
24181
|
+
* next train** — the hub router validates cap inputs against its own
|
|
24182
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
24183
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
24184
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
24185
|
+
*/
|
|
24186
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
24063
24187
|
kind: "mutation",
|
|
24064
24188
|
auth: "admin"
|
|
24065
24189
|
}), method(object({
|
|
@@ -26949,8 +27073,10 @@ var PlateInfoSchema = object({
|
|
|
26949
27073
|
keyFrameMediaKey: string().optional(),
|
|
26950
27074
|
base64: string().optional(),
|
|
26951
27075
|
/**
|
|
26952
|
-
* Same crop as a data-plane URL
|
|
26953
|
-
* never inlines JPEG; `listPlates`
|
|
27076
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
27077
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
27078
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
27079
|
+
* left at its `true` default.
|
|
26954
27080
|
*/
|
|
26955
27081
|
cropUrl: string().optional()
|
|
26956
27082
|
});
|
|
@@ -26970,14 +27096,34 @@ var PlateClusterSchema = object({
|
|
|
26970
27096
|
});
|
|
26971
27097
|
method(object({
|
|
26972
27098
|
deviceId: number().int().optional(),
|
|
26973
|
-
limit: number().int().positive().optional()
|
|
27099
|
+
limit: number().int().positive().optional(),
|
|
27100
|
+
/**
|
|
27101
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
27102
|
+
* behaviour, kept so no caller breaks.
|
|
27103
|
+
*
|
|
27104
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
27105
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
27106
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
27107
|
+
* metadata without them — and the browser then caches the images.
|
|
27108
|
+
*
|
|
27109
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
27110
|
+
* plates were the one gallery list left without it.
|
|
27111
|
+
*
|
|
27112
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
27113
|
+
* next train.** The hub router validates cap inputs against its own
|
|
27114
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
27115
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
27116
|
+
*/
|
|
27117
|
+
includeCrops: boolean().optional()
|
|
26974
27118
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
26975
27119
|
deviceId: number().int(),
|
|
26976
27120
|
trackId: string()
|
|
26977
27121
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
26978
27122
|
text: string().min(1),
|
|
26979
27123
|
maxDistance: number().int().min(0).optional(),
|
|
26980
|
-
limit: number().int().positive().optional()
|
|
27124
|
+
limit: number().int().positive().optional(),
|
|
27125
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
27126
|
+
includeCrops: boolean().optional()
|
|
26981
27127
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
26982
27128
|
maxDistance: number().int().min(0).optional(),
|
|
26983
27129
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -26991,7 +27137,13 @@ method(object({
|
|
|
26991
27137
|
}), method(object({ plateId: string() }), _void(), {
|
|
26992
27138
|
kind: "mutation",
|
|
26993
27139
|
auth: "admin"
|
|
26994
|
-
}), method(
|
|
27140
|
+
}), method(object({
|
|
27141
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
27142
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
27143
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
27144
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
27145
|
+
* resolves to `false` and is exactly the intended default. */
|
|
27146
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
26995
27147
|
kind: "mutation",
|
|
26996
27148
|
auth: "admin"
|
|
26997
27149
|
}), method(object({
|
|
@@ -34252,6 +34404,12 @@ Object.freeze({
|
|
|
34252
34404
|
addonId: null,
|
|
34253
34405
|
access: "create"
|
|
34254
34406
|
},
|
|
34407
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
34408
|
+
capName: "pipeline-analytics",
|
|
34409
|
+
capScope: "device",
|
|
34410
|
+
addonId: null,
|
|
34411
|
+
access: "create"
|
|
34412
|
+
},
|
|
34255
34413
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
34256
34414
|
capName: "pipeline-analytics",
|
|
34257
34415
|
capScope: "device",
|
|
@@ -34426,6 +34584,12 @@ Object.freeze({
|
|
|
34426
34584
|
addonId: null,
|
|
34427
34585
|
access: "view"
|
|
34428
34586
|
},
|
|
34587
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
34588
|
+
capName: "pipeline-analytics",
|
|
34589
|
+
capScope: "device",
|
|
34590
|
+
addonId: null,
|
|
34591
|
+
access: "view"
|
|
34592
|
+
},
|
|
34429
34593
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
34430
34594
|
capName: "pipeline-analytics",
|
|
34431
34595
|
capScope: "device",
|
|
@@ -34504,6 +34668,12 @@ Object.freeze({
|
|
|
34504
34668
|
addonId: null,
|
|
34505
34669
|
access: "create"
|
|
34506
34670
|
},
|
|
34671
|
+
"pipelineAnalytics.relocateMedia": {
|
|
34672
|
+
capName: "pipeline-analytics",
|
|
34673
|
+
capScope: "device",
|
|
34674
|
+
addonId: null,
|
|
34675
|
+
access: "create"
|
|
34676
|
+
},
|
|
34507
34677
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
34508
34678
|
capName: "pipeline-analytics",
|
|
34509
34679
|
capScope: "device",
|
package/package.json
CHANGED