@camstack/addon-provider-dreo 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
|
@@ -6666,7 +6666,7 @@ function method(input, output, options) {
|
|
|
6666
6666
|
input,
|
|
6667
6667
|
output,
|
|
6668
6668
|
kind: options?.kind ?? "query",
|
|
6669
|
-
auth: options
|
|
6669
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6670
6670
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6671
6671
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6672
6672
|
timeoutMs: options?.timeoutMs
|
|
@@ -6690,7 +6690,7 @@ function event(data) {
|
|
|
6690
6690
|
}
|
|
6691
6691
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6692
6692
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6693
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6693
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6694
6694
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6695
6695
|
DeviceType["Camera"] = "camera";
|
|
6696
6696
|
DeviceType["Hub"] = "hub";
|
|
@@ -7011,7 +7011,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
7011
7011
|
}({});
|
|
7012
7012
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
7013
7013
|
var VersionOutputSchema = object({ version: string() });
|
|
7014
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
7014
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
7015
7015
|
/**
|
|
7016
7016
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
7017
7017
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7637,24 +7637,6 @@ var RecordingRetentionSchema = object({
|
|
|
7637
7637
|
maxSizeGb: number().min(0).optional()
|
|
7638
7638
|
});
|
|
7639
7639
|
/**
|
|
7640
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7641
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7642
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7643
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7644
|
-
*
|
|
7645
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7646
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7647
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7648
|
-
* written with.
|
|
7649
|
-
*/
|
|
7650
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7651
|
-
"minimal",
|
|
7652
|
-
"low",
|
|
7653
|
-
"standard",
|
|
7654
|
-
"high",
|
|
7655
|
-
"max"
|
|
7656
|
-
]);
|
|
7657
|
-
/**
|
|
7658
7640
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7659
7641
|
*
|
|
7660
7642
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7662,7 +7644,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7662
7644
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7663
7645
|
*
|
|
7664
7646
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7665
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7647
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7648
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7649
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7650
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7651
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7666
7652
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7667
7653
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7668
7654
|
*/
|
|
@@ -7685,14 +7671,7 @@ var RecordingConfigSchema = object({
|
|
|
7685
7671
|
* "off" is the absence of a covering band, never a band value.
|
|
7686
7672
|
*/
|
|
7687
7673
|
bands: array(RecordingBandSchema).default([]),
|
|
7688
|
-
retention: RecordingRetentionSchema.optional()
|
|
7689
|
-
/**
|
|
7690
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7691
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7692
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7693
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7694
|
-
*/
|
|
7695
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7674
|
+
retention: RecordingRetentionSchema.optional()
|
|
7696
7675
|
}).strict();
|
|
7697
7676
|
/**
|
|
7698
7677
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7768,10 +7747,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7768
7747
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7769
7748
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7770
7749
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7771
|
-
var
|
|
7750
|
+
var RelocateMediaInputSchema = object({
|
|
7772
7751
|
toLocationId: string(),
|
|
7773
7752
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7774
|
-
})
|
|
7753
|
+
});
|
|
7754
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7775
7755
|
/** The independently selectable logical storage classes. `recordings`
|
|
7776
7756
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7777
7757
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8066,7 +8046,26 @@ var LabelDefinitionSchema = object({
|
|
|
8066
8046
|
description: string().optional(),
|
|
8067
8047
|
icon: string().optional()
|
|
8068
8048
|
});
|
|
8069
|
-
|
|
8049
|
+
/**
|
|
8050
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8051
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8052
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8053
|
+
* detection pipeline executor actually routes.
|
|
8054
|
+
*
|
|
8055
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8056
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8057
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8058
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8059
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8060
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8061
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8062
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8063
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8064
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8065
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8066
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8067
|
+
*/
|
|
8068
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8070
8069
|
mapping: record(string(), _enum([
|
|
8071
8070
|
"person",
|
|
8072
8071
|
"vehicle",
|
|
@@ -8271,7 +8270,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8271
8270
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8272
8271
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8273
8272
|
*/
|
|
8274
|
-
classMap:
|
|
8273
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8275
8274
|
});
|
|
8276
8275
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8277
8276
|
format: literal("openvino"),
|
|
@@ -8301,7 +8300,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8301
8300
|
"segmentation"
|
|
8302
8301
|
]),
|
|
8303
8302
|
faceAlignment: boolean().optional(),
|
|
8304
|
-
classMap:
|
|
8303
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8305
8304
|
});
|
|
8306
8305
|
var ConvertResultSchema = object({
|
|
8307
8306
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9164,7 +9163,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9164
9163
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9165
9164
|
sectionLabel: string().optional()
|
|
9166
9165
|
});
|
|
9167
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9166
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9168
9167
|
var AddonHttpRouteSchema = object({
|
|
9169
9168
|
method: _enum([
|
|
9170
9169
|
"GET",
|
|
@@ -9399,7 +9398,7 @@ var WidgetMetadataSchema = object({
|
|
|
9399
9398
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9400
9399
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9401
9400
|
});
|
|
9402
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9401
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9403
9402
|
/**
|
|
9404
9403
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9405
9404
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11023,7 +11022,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11023
11022
|
stepId: string(),
|
|
11024
11023
|
entry: ModelCatalogEntrySchema
|
|
11025
11024
|
});
|
|
11026
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11025
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11027
11026
|
/**
|
|
11028
11027
|
* Query filter for settings-store collections.
|
|
11029
11028
|
*/
|
|
@@ -11110,7 +11109,8 @@ method(object({
|
|
|
11110
11109
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11111
11110
|
namespace: string().optional(),
|
|
11112
11111
|
collection: string(),
|
|
11113
|
-
filter: QueryFilterSchema.optional()
|
|
11112
|
+
filter: QueryFilterSchema.optional(),
|
|
11113
|
+
columns: array(string()).readonly().optional()
|
|
11114
11114
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11115
11115
|
namespace: string().optional(),
|
|
11116
11116
|
collection: string(),
|
|
@@ -11173,46 +11173,87 @@ var EngineInfoSchema = object({
|
|
|
11173
11173
|
kind: _enum(["relational", "vector"]),
|
|
11174
11174
|
displayName: string()
|
|
11175
11175
|
});
|
|
11176
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11176
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11177
11177
|
namespace: string().optional(),
|
|
11178
11178
|
collection: string(),
|
|
11179
11179
|
key: string()
|
|
11180
|
-
}), unknown()), method(object({
|
|
11180
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11181
11181
|
namespace: string().optional(),
|
|
11182
11182
|
collection: string(),
|
|
11183
11183
|
key: string(),
|
|
11184
11184
|
value: unknown()
|
|
11185
|
-
}), _void(), {
|
|
11185
|
+
}), _void(), {
|
|
11186
|
+
kind: "mutation",
|
|
11187
|
+
auth: "admin"
|
|
11188
|
+
}), method(object({
|
|
11186
11189
|
namespace: string().optional(),
|
|
11187
11190
|
collection: string(),
|
|
11188
|
-
filter: QueryFilterSchema.optional()
|
|
11189
|
-
|
|
11191
|
+
filter: QueryFilterSchema.optional(),
|
|
11192
|
+
/**
|
|
11193
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11194
|
+
*
|
|
11195
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11196
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11197
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11198
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11199
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11200
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11201
|
+
*
|
|
11202
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11203
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11204
|
+
* interface the engine destructures from. The field existed on both
|
|
11205
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11206
|
+
* registered provider against `InferProvider<cap>` —
|
|
11207
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11208
|
+
*
|
|
11209
|
+
* It is declared here anyway, and must stay in step with
|
|
11210
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11211
|
+
* to be able to see that this call carries a projection.
|
|
11212
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11213
|
+
*/
|
|
11214
|
+
columns: array(string()).readonly().optional()
|
|
11215
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11190
11216
|
namespace: string().optional(),
|
|
11191
11217
|
collection: string(),
|
|
11192
11218
|
record: SettingsRecordSchema
|
|
11193
|
-
}), _void(), {
|
|
11219
|
+
}), _void(), {
|
|
11220
|
+
kind: "mutation",
|
|
11221
|
+
auth: "admin"
|
|
11222
|
+
}), method(object({
|
|
11194
11223
|
namespace: string().optional(),
|
|
11195
11224
|
collection: string(),
|
|
11196
11225
|
id: string(),
|
|
11197
11226
|
data: record(string(), unknown())
|
|
11198
|
-
}), _void(), {
|
|
11227
|
+
}), _void(), {
|
|
11228
|
+
kind: "mutation",
|
|
11229
|
+
auth: "admin"
|
|
11230
|
+
}), method(object({
|
|
11199
11231
|
namespace: string().optional(),
|
|
11200
11232
|
collection: string(),
|
|
11201
11233
|
key: string()
|
|
11202
|
-
}), _void(), {
|
|
11234
|
+
}), _void(), {
|
|
11235
|
+
kind: "mutation",
|
|
11236
|
+
auth: "admin"
|
|
11237
|
+
}), method(object({
|
|
11203
11238
|
namespace: string().optional(),
|
|
11204
11239
|
collection: string(),
|
|
11205
11240
|
filter: MutationFilterSchema
|
|
11206
|
-
}), object({ deleted: number().int() }), {
|
|
11241
|
+
}), object({ deleted: number().int() }), {
|
|
11242
|
+
kind: "mutation",
|
|
11243
|
+
auth: "admin"
|
|
11244
|
+
}), method(object({
|
|
11207
11245
|
namespace: string().optional(),
|
|
11208
11246
|
collection: string(),
|
|
11209
11247
|
filter: MutationFilterSchema,
|
|
11210
11248
|
data: record(string(), unknown())
|
|
11211
|
-
}), object({ updated: number().int() }), {
|
|
11249
|
+
}), object({ updated: number().int() }), {
|
|
11250
|
+
kind: "mutation",
|
|
11251
|
+
auth: "admin"
|
|
11252
|
+
}), method(object({
|
|
11212
11253
|
namespace: string().optional(),
|
|
11213
11254
|
collection: string(),
|
|
11214
11255
|
filter: QueryFilterSchema.optional()
|
|
11215
|
-
}), number()), method(object({
|
|
11256
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11216
11257
|
namespace: string().optional(),
|
|
11217
11258
|
collection: string(),
|
|
11218
11259
|
field: string(),
|
|
@@ -11222,15 +11263,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11222
11263
|
}), array(object({
|
|
11223
11264
|
bucket: number().int(),
|
|
11224
11265
|
count: number().int()
|
|
11225
|
-
})).readonly()), method(object({
|
|
11266
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11226
11267
|
namespace: string().optional(),
|
|
11227
11268
|
collection: string()
|
|
11228
|
-
}), boolean()), method(object({
|
|
11269
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11229
11270
|
namespace: string().optional(),
|
|
11230
11271
|
collection: string(),
|
|
11231
11272
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11232
11273
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11233
|
-
}), _void(), {
|
|
11274
|
+
}), _void(), {
|
|
11275
|
+
kind: "mutation",
|
|
11276
|
+
auth: "admin"
|
|
11277
|
+
});
|
|
11234
11278
|
/**
|
|
11235
11279
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11236
11280
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12537,7 +12581,7 @@ method(object({
|
|
|
12537
12581
|
crop: _instanceof(Uint8Array),
|
|
12538
12582
|
width: number(),
|
|
12539
12583
|
height: number()
|
|
12540
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12584
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12541
12585
|
/**
|
|
12542
12586
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12543
12587
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12830,19 +12874,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12830
12874
|
runtime: ManagedRuntimeConfigSchema,
|
|
12831
12875
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12832
12876
|
timeoutMs: number().int().positive().optional()
|
|
12833
|
-
}), LlmGenerateResultSchema, {
|
|
12877
|
+
}), LlmGenerateResultSchema, {
|
|
12878
|
+
kind: "mutation",
|
|
12879
|
+
auth: "admin"
|
|
12880
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12834
12881
|
kind: "mutation",
|
|
12835
12882
|
auth: "admin"
|
|
12836
12883
|
}), method(object({}), _void(), {
|
|
12837
12884
|
kind: "mutation",
|
|
12838
12885
|
auth: "admin"
|
|
12839
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12886
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12840
12887
|
kind: "mutation",
|
|
12841
12888
|
auth: "admin"
|
|
12842
12889
|
}), method(object({ file: string() }), _void(), {
|
|
12843
12890
|
kind: "mutation",
|
|
12844
12891
|
auth: "admin"
|
|
12845
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12892
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12846
12893
|
/**
|
|
12847
12894
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12848
12895
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16353,7 +16400,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16353
16400
|
*/
|
|
16354
16401
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16355
16402
|
});
|
|
16356
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16403
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16357
16404
|
/**
|
|
16358
16405
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16359
16406
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17548,6 +17595,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17548
17595
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17549
17596
|
kind: "mutation",
|
|
17550
17597
|
auth: "admin"
|
|
17598
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17599
|
+
kind: "mutation",
|
|
17600
|
+
auth: "admin"
|
|
17601
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17602
|
+
kind: "query",
|
|
17603
|
+
auth: "admin"
|
|
17604
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17605
|
+
kind: "mutation",
|
|
17606
|
+
auth: "admin"
|
|
17551
17607
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17552
17608
|
kind: "query",
|
|
17553
17609
|
auth: "admin"
|
|
@@ -17702,6 +17758,11 @@ object({
|
|
|
17702
17758
|
"jpeg"
|
|
17703
17759
|
])
|
|
17704
17760
|
});
|
|
17761
|
+
/**
|
|
17762
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17763
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17764
|
+
* other process or execution group.
|
|
17765
|
+
*/
|
|
17705
17766
|
var FrameRefSchema = object({
|
|
17706
17767
|
registryId: string().min(1),
|
|
17707
17768
|
id: string().min(1),
|
|
@@ -19907,7 +19968,7 @@ method(object({
|
|
|
19907
19968
|
* linking rather than produce an eternal token.
|
|
19908
19969
|
*/
|
|
19909
19970
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
19910
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
19971
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
19911
19972
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
19912
19973
|
providerId: string().min(1),
|
|
19913
19974
|
displayName: string().min(1),
|
|
@@ -20002,10 +20063,13 @@ var EvictResultSchema = object({
|
|
|
20002
20063
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20003
20064
|
exhausted: boolean()
|
|
20004
20065
|
});
|
|
20005
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20066
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20006
20067
|
locationId: string(),
|
|
20007
20068
|
targetBytes: number().int().positive()
|
|
20008
|
-
}), EvictResultSchema, {
|
|
20069
|
+
}), EvictResultSchema, {
|
|
20070
|
+
kind: "mutation",
|
|
20071
|
+
auth: "admin"
|
|
20072
|
+
});
|
|
20009
20073
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20010
20074
|
kind: "mutation",
|
|
20011
20075
|
auth: "admin"
|
|
@@ -20065,26 +20129,50 @@ var ReadChunkInputSchema = object({
|
|
|
20065
20129
|
length: number()
|
|
20066
20130
|
});
|
|
20067
20131
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20068
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20132
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20069
20133
|
location: StorageLocationSchema,
|
|
20070
20134
|
relativePath: string()
|
|
20071
|
-
}), string()), method(object({
|
|
20135
|
+
}), string(), { auth: "admin" }), method(object({
|
|
20072
20136
|
location: StorageLocationSchema,
|
|
20073
20137
|
relativePath: string(),
|
|
20074
20138
|
data: _instanceof(Uint8Array)
|
|
20075
|
-
}), _void(), {
|
|
20139
|
+
}), _void(), {
|
|
20140
|
+
kind: "mutation",
|
|
20141
|
+
auth: "admin"
|
|
20142
|
+
}), method(object({
|
|
20076
20143
|
location: StorageLocationSchema,
|
|
20077
20144
|
relativePath: string()
|
|
20078
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20145
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20079
20146
|
location: StorageLocationSchema,
|
|
20080
20147
|
relativePath: string()
|
|
20081
|
-
}), boolean()), method(object({
|
|
20148
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20082
20149
|
location: StorageLocationSchema,
|
|
20083
20150
|
prefix: string().optional()
|
|
20084
|
-
}), array(string()).readonly()), method(object({
|
|
20151
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
20085
20152
|
location: StorageLocationSchema,
|
|
20086
20153
|
relativePath: string()
|
|
20087
|
-
}), _void(), {
|
|
20154
|
+
}), _void(), {
|
|
20155
|
+
kind: "mutation",
|
|
20156
|
+
auth: "admin"
|
|
20157
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20158
|
+
kind: "mutation",
|
|
20159
|
+
auth: "admin"
|
|
20160
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20161
|
+
kind: "mutation",
|
|
20162
|
+
auth: "admin"
|
|
20163
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20164
|
+
kind: "mutation",
|
|
20165
|
+
auth: "admin"
|
|
20166
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20167
|
+
kind: "mutation",
|
|
20168
|
+
auth: "admin"
|
|
20169
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20170
|
+
kind: "mutation",
|
|
20171
|
+
auth: "admin"
|
|
20172
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20173
|
+
kind: "mutation",
|
|
20174
|
+
auth: "admin"
|
|
20175
|
+
});
|
|
20088
20176
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20089
20177
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20090
20178
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20342,7 +20430,8 @@ method(object({
|
|
|
20342
20430
|
access: "create"
|
|
20343
20431
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20344
20432
|
kind: "mutation",
|
|
20345
|
-
access: "view"
|
|
20433
|
+
access: "view",
|
|
20434
|
+
auth: "admin"
|
|
20346
20435
|
}), method(object({
|
|
20347
20436
|
/** Required — the user the assertion belongs to (verified). */
|
|
20348
20437
|
userId: string(),
|
|
@@ -20350,10 +20439,12 @@ method(object({
|
|
|
20350
20439
|
response: record(string(), unknown())
|
|
20351
20440
|
}), object({ verified: boolean() }), {
|
|
20352
20441
|
kind: "mutation",
|
|
20353
|
-
access: "view"
|
|
20442
|
+
access: "view",
|
|
20443
|
+
auth: "admin"
|
|
20354
20444
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20355
20445
|
kind: "mutation",
|
|
20356
|
-
access: "view"
|
|
20446
|
+
access: "view",
|
|
20447
|
+
auth: "admin"
|
|
20357
20448
|
}), method(object({
|
|
20358
20449
|
/** AuthenticationResponseJSON from the browser. */
|
|
20359
20450
|
response: record(string(), unknown()) }), object({
|
|
@@ -20361,7 +20452,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20361
20452
|
userId: string().nullable()
|
|
20362
20453
|
}), {
|
|
20363
20454
|
kind: "mutation",
|
|
20364
|
-
access: "view"
|
|
20455
|
+
access: "view",
|
|
20456
|
+
auth: "admin"
|
|
20365
20457
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20366
20458
|
userId: string(),
|
|
20367
20459
|
credentialId: string()
|
|
@@ -20533,7 +20625,19 @@ var VectorStatsResultSchema = object({
|
|
|
20533
20625
|
/** False when the backend ranks approximately. */
|
|
20534
20626
|
exact: boolean()
|
|
20535
20627
|
});
|
|
20536
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20628
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20629
|
+
kind: "mutation",
|
|
20630
|
+
auth: "admin"
|
|
20631
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20632
|
+
kind: "mutation",
|
|
20633
|
+
auth: "admin"
|
|
20634
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20635
|
+
kind: "mutation",
|
|
20636
|
+
auth: "admin"
|
|
20637
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20638
|
+
kind: "mutation",
|
|
20639
|
+
auth: "admin"
|
|
20640
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20537
20641
|
var ClipSchema = object({
|
|
20538
20642
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20539
20643
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -22994,7 +23098,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
22994
23098
|
sizeBytes: number(),
|
|
22995
23099
|
timestamp: number()
|
|
22996
23100
|
});
|
|
22997
|
-
method(
|
|
23101
|
+
method(object({
|
|
23102
|
+
/**
|
|
23103
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23104
|
+
*
|
|
23105
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23106
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23107
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23108
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23109
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23110
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23111
|
+
*
|
|
23112
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23113
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23114
|
+
*
|
|
23115
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23116
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23117
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23118
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23119
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23120
|
+
*/
|
|
23121
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
22998
23122
|
kind: "mutation",
|
|
22999
23123
|
auth: "admin"
|
|
23000
23124
|
}), method(object({
|
|
@@ -25884,8 +26008,10 @@ var PlateInfoSchema = object({
|
|
|
25884
26008
|
keyFrameMediaKey: string().optional(),
|
|
25885
26009
|
base64: string().optional(),
|
|
25886
26010
|
/**
|
|
25887
|
-
* Same crop as a data-plane URL
|
|
25888
|
-
* never inlines JPEG; `listPlates`
|
|
26011
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26012
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26013
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26014
|
+
* left at its `true` default.
|
|
25889
26015
|
*/
|
|
25890
26016
|
cropUrl: string().optional()
|
|
25891
26017
|
});
|
|
@@ -25905,14 +26031,34 @@ var PlateClusterSchema = object({
|
|
|
25905
26031
|
});
|
|
25906
26032
|
method(object({
|
|
25907
26033
|
deviceId: number().int().optional(),
|
|
25908
|
-
limit: number().int().positive().optional()
|
|
26034
|
+
limit: number().int().positive().optional(),
|
|
26035
|
+
/**
|
|
26036
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26037
|
+
* behaviour, kept so no caller breaks.
|
|
26038
|
+
*
|
|
26039
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26040
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26041
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26042
|
+
* metadata without them — and the browser then caches the images.
|
|
26043
|
+
*
|
|
26044
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26045
|
+
* plates were the one gallery list left without it.
|
|
26046
|
+
*
|
|
26047
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26048
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26049
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26050
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26051
|
+
*/
|
|
26052
|
+
includeCrops: boolean().optional()
|
|
25909
26053
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
25910
26054
|
deviceId: number().int(),
|
|
25911
26055
|
trackId: string()
|
|
25912
26056
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
25913
26057
|
text: string().min(1),
|
|
25914
26058
|
maxDistance: number().int().min(0).optional(),
|
|
25915
|
-
limit: number().int().positive().optional()
|
|
26059
|
+
limit: number().int().positive().optional(),
|
|
26060
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26061
|
+
includeCrops: boolean().optional()
|
|
25916
26062
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
25917
26063
|
maxDistance: number().int().min(0).optional(),
|
|
25918
26064
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -25926,7 +26072,13 @@ method(object({
|
|
|
25926
26072
|
}), method(object({ plateId: string() }), _void(), {
|
|
25927
26073
|
kind: "mutation",
|
|
25928
26074
|
auth: "admin"
|
|
25929
|
-
}), method(
|
|
26075
|
+
}), method(object({
|
|
26076
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26077
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26078
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26079
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26080
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26081
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
25930
26082
|
kind: "mutation",
|
|
25931
26083
|
auth: "admin"
|
|
25932
26084
|
}), method(object({
|
|
@@ -33187,6 +33339,12 @@ Object.freeze({
|
|
|
33187
33339
|
addonId: null,
|
|
33188
33340
|
access: "create"
|
|
33189
33341
|
},
|
|
33342
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
33343
|
+
capName: "pipeline-analytics",
|
|
33344
|
+
capScope: "device",
|
|
33345
|
+
addonId: null,
|
|
33346
|
+
access: "create"
|
|
33347
|
+
},
|
|
33190
33348
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33191
33349
|
capName: "pipeline-analytics",
|
|
33192
33350
|
capScope: "device",
|
|
@@ -33361,6 +33519,12 @@ Object.freeze({
|
|
|
33361
33519
|
addonId: null,
|
|
33362
33520
|
access: "view"
|
|
33363
33521
|
},
|
|
33522
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
33523
|
+
capName: "pipeline-analytics",
|
|
33524
|
+
capScope: "device",
|
|
33525
|
+
addonId: null,
|
|
33526
|
+
access: "view"
|
|
33527
|
+
},
|
|
33364
33528
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
33365
33529
|
capName: "pipeline-analytics",
|
|
33366
33530
|
capScope: "device",
|
|
@@ -33439,6 +33603,12 @@ Object.freeze({
|
|
|
33439
33603
|
addonId: null,
|
|
33440
33604
|
access: "create"
|
|
33441
33605
|
},
|
|
33606
|
+
"pipelineAnalytics.relocateMedia": {
|
|
33607
|
+
capName: "pipeline-analytics",
|
|
33608
|
+
capScope: "device",
|
|
33609
|
+
addonId: null,
|
|
33610
|
+
access: "create"
|
|
33611
|
+
},
|
|
33442
33612
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
33443
33613
|
capName: "pipeline-analytics",
|
|
33444
33614
|
capScope: "device",
|
package/dist/addon.mjs
CHANGED
|
@@ -6667,7 +6667,7 @@ function method(input, output, options) {
|
|
|
6667
6667
|
input,
|
|
6668
6668
|
output,
|
|
6669
6669
|
kind: options?.kind ?? "query",
|
|
6670
|
-
auth: options
|
|
6670
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6671
6671
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6672
6672
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6673
6673
|
timeoutMs: options?.timeoutMs
|
|
@@ -6691,7 +6691,7 @@ function event(data) {
|
|
|
6691
6691
|
}
|
|
6692
6692
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6693
6693
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6694
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6694
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6695
6695
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6696
6696
|
DeviceType["Camera"] = "camera";
|
|
6697
6697
|
DeviceType["Hub"] = "hub";
|
|
@@ -7012,7 +7012,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
7012
7012
|
}({});
|
|
7013
7013
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
7014
7014
|
var VersionOutputSchema = object({ version: string() });
|
|
7015
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
7015
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
7016
7016
|
/**
|
|
7017
7017
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
7018
7018
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7638,24 +7638,6 @@ var RecordingRetentionSchema = object({
|
|
|
7638
7638
|
maxSizeGb: number().min(0).optional()
|
|
7639
7639
|
});
|
|
7640
7640
|
/**
|
|
7641
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7642
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7643
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7644
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7645
|
-
*
|
|
7646
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7647
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7648
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7649
|
-
* written with.
|
|
7650
|
-
*/
|
|
7651
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7652
|
-
"minimal",
|
|
7653
|
-
"low",
|
|
7654
|
-
"standard",
|
|
7655
|
-
"high",
|
|
7656
|
-
"max"
|
|
7657
|
-
]);
|
|
7658
|
-
/**
|
|
7659
7641
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7660
7642
|
*
|
|
7661
7643
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7663,7 +7645,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7663
7645
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7664
7646
|
*
|
|
7665
7647
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7666
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7648
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7649
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7650
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7651
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7652
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7667
7653
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7668
7654
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7669
7655
|
*/
|
|
@@ -7686,14 +7672,7 @@ var RecordingConfigSchema = object({
|
|
|
7686
7672
|
* "off" is the absence of a covering band, never a band value.
|
|
7687
7673
|
*/
|
|
7688
7674
|
bands: array(RecordingBandSchema).default([]),
|
|
7689
|
-
retention: RecordingRetentionSchema.optional()
|
|
7690
|
-
/**
|
|
7691
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7692
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7693
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7694
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7695
|
-
*/
|
|
7696
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7675
|
+
retention: RecordingRetentionSchema.optional()
|
|
7697
7676
|
}).strict();
|
|
7698
7677
|
/**
|
|
7699
7678
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7769,10 +7748,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7769
7748
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7770
7749
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7771
7750
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7772
|
-
var
|
|
7751
|
+
var RelocateMediaInputSchema = object({
|
|
7773
7752
|
toLocationId: string(),
|
|
7774
7753
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7775
|
-
})
|
|
7754
|
+
});
|
|
7755
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7776
7756
|
/** The independently selectable logical storage classes. `recordings`
|
|
7777
7757
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7778
7758
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8067,7 +8047,26 @@ var LabelDefinitionSchema = object({
|
|
|
8067
8047
|
description: string().optional(),
|
|
8068
8048
|
icon: string().optional()
|
|
8069
8049
|
});
|
|
8070
|
-
|
|
8050
|
+
/**
|
|
8051
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8052
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8053
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8054
|
+
* detection pipeline executor actually routes.
|
|
8055
|
+
*
|
|
8056
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8057
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8058
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8059
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8060
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8061
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8062
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8063
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8064
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8065
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8066
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8067
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8068
|
+
*/
|
|
8069
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8071
8070
|
mapping: record(string(), _enum([
|
|
8072
8071
|
"person",
|
|
8073
8072
|
"vehicle",
|
|
@@ -8272,7 +8271,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8272
8271
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8273
8272
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8274
8273
|
*/
|
|
8275
|
-
classMap:
|
|
8274
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8276
8275
|
});
|
|
8277
8276
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8278
8277
|
format: literal("openvino"),
|
|
@@ -8302,7 +8301,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8302
8301
|
"segmentation"
|
|
8303
8302
|
]),
|
|
8304
8303
|
faceAlignment: boolean().optional(),
|
|
8305
|
-
classMap:
|
|
8304
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8306
8305
|
});
|
|
8307
8306
|
var ConvertResultSchema = object({
|
|
8308
8307
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9165,7 +9164,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9165
9164
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9166
9165
|
sectionLabel: string().optional()
|
|
9167
9166
|
});
|
|
9168
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9167
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9169
9168
|
var AddonHttpRouteSchema = object({
|
|
9170
9169
|
method: _enum([
|
|
9171
9170
|
"GET",
|
|
@@ -9400,7 +9399,7 @@ var WidgetMetadataSchema = object({
|
|
|
9400
9399
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9401
9400
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9402
9401
|
});
|
|
9403
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9402
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9404
9403
|
/**
|
|
9405
9404
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9406
9405
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11024,7 +11023,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11024
11023
|
stepId: string(),
|
|
11025
11024
|
entry: ModelCatalogEntrySchema
|
|
11026
11025
|
});
|
|
11027
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11026
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11028
11027
|
/**
|
|
11029
11028
|
* Query filter for settings-store collections.
|
|
11030
11029
|
*/
|
|
@@ -11111,7 +11110,8 @@ method(object({
|
|
|
11111
11110
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11112
11111
|
namespace: string().optional(),
|
|
11113
11112
|
collection: string(),
|
|
11114
|
-
filter: QueryFilterSchema.optional()
|
|
11113
|
+
filter: QueryFilterSchema.optional(),
|
|
11114
|
+
columns: array(string()).readonly().optional()
|
|
11115
11115
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11116
11116
|
namespace: string().optional(),
|
|
11117
11117
|
collection: string(),
|
|
@@ -11174,46 +11174,87 @@ var EngineInfoSchema = object({
|
|
|
11174
11174
|
kind: _enum(["relational", "vector"]),
|
|
11175
11175
|
displayName: string()
|
|
11176
11176
|
});
|
|
11177
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11177
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11178
11178
|
namespace: string().optional(),
|
|
11179
11179
|
collection: string(),
|
|
11180
11180
|
key: string()
|
|
11181
|
-
}), unknown()), method(object({
|
|
11181
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11182
11182
|
namespace: string().optional(),
|
|
11183
11183
|
collection: string(),
|
|
11184
11184
|
key: string(),
|
|
11185
11185
|
value: unknown()
|
|
11186
|
-
}), _void(), {
|
|
11186
|
+
}), _void(), {
|
|
11187
|
+
kind: "mutation",
|
|
11188
|
+
auth: "admin"
|
|
11189
|
+
}), method(object({
|
|
11187
11190
|
namespace: string().optional(),
|
|
11188
11191
|
collection: string(),
|
|
11189
|
-
filter: QueryFilterSchema.optional()
|
|
11190
|
-
|
|
11192
|
+
filter: QueryFilterSchema.optional(),
|
|
11193
|
+
/**
|
|
11194
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11195
|
+
*
|
|
11196
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11197
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11198
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11199
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11200
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11201
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11202
|
+
*
|
|
11203
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11204
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11205
|
+
* interface the engine destructures from. The field existed on both
|
|
11206
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11207
|
+
* registered provider against `InferProvider<cap>` —
|
|
11208
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11209
|
+
*
|
|
11210
|
+
* It is declared here anyway, and must stay in step with
|
|
11211
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11212
|
+
* to be able to see that this call carries a projection.
|
|
11213
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11214
|
+
*/
|
|
11215
|
+
columns: array(string()).readonly().optional()
|
|
11216
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11191
11217
|
namespace: string().optional(),
|
|
11192
11218
|
collection: string(),
|
|
11193
11219
|
record: SettingsRecordSchema
|
|
11194
|
-
}), _void(), {
|
|
11220
|
+
}), _void(), {
|
|
11221
|
+
kind: "mutation",
|
|
11222
|
+
auth: "admin"
|
|
11223
|
+
}), method(object({
|
|
11195
11224
|
namespace: string().optional(),
|
|
11196
11225
|
collection: string(),
|
|
11197
11226
|
id: string(),
|
|
11198
11227
|
data: record(string(), unknown())
|
|
11199
|
-
}), _void(), {
|
|
11228
|
+
}), _void(), {
|
|
11229
|
+
kind: "mutation",
|
|
11230
|
+
auth: "admin"
|
|
11231
|
+
}), method(object({
|
|
11200
11232
|
namespace: string().optional(),
|
|
11201
11233
|
collection: string(),
|
|
11202
11234
|
key: string()
|
|
11203
|
-
}), _void(), {
|
|
11235
|
+
}), _void(), {
|
|
11236
|
+
kind: "mutation",
|
|
11237
|
+
auth: "admin"
|
|
11238
|
+
}), method(object({
|
|
11204
11239
|
namespace: string().optional(),
|
|
11205
11240
|
collection: string(),
|
|
11206
11241
|
filter: MutationFilterSchema
|
|
11207
|
-
}), object({ deleted: number().int() }), {
|
|
11242
|
+
}), object({ deleted: number().int() }), {
|
|
11243
|
+
kind: "mutation",
|
|
11244
|
+
auth: "admin"
|
|
11245
|
+
}), method(object({
|
|
11208
11246
|
namespace: string().optional(),
|
|
11209
11247
|
collection: string(),
|
|
11210
11248
|
filter: MutationFilterSchema,
|
|
11211
11249
|
data: record(string(), unknown())
|
|
11212
|
-
}), object({ updated: number().int() }), {
|
|
11250
|
+
}), object({ updated: number().int() }), {
|
|
11251
|
+
kind: "mutation",
|
|
11252
|
+
auth: "admin"
|
|
11253
|
+
}), method(object({
|
|
11213
11254
|
namespace: string().optional(),
|
|
11214
11255
|
collection: string(),
|
|
11215
11256
|
filter: QueryFilterSchema.optional()
|
|
11216
|
-
}), number()), method(object({
|
|
11257
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11217
11258
|
namespace: string().optional(),
|
|
11218
11259
|
collection: string(),
|
|
11219
11260
|
field: string(),
|
|
@@ -11223,15 +11264,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11223
11264
|
}), array(object({
|
|
11224
11265
|
bucket: number().int(),
|
|
11225
11266
|
count: number().int()
|
|
11226
|
-
})).readonly()), method(object({
|
|
11267
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11227
11268
|
namespace: string().optional(),
|
|
11228
11269
|
collection: string()
|
|
11229
|
-
}), boolean()), method(object({
|
|
11270
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11230
11271
|
namespace: string().optional(),
|
|
11231
11272
|
collection: string(),
|
|
11232
11273
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11233
11274
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11234
|
-
}), _void(), {
|
|
11275
|
+
}), _void(), {
|
|
11276
|
+
kind: "mutation",
|
|
11277
|
+
auth: "admin"
|
|
11278
|
+
});
|
|
11235
11279
|
/**
|
|
11236
11280
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11237
11281
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12538,7 +12582,7 @@ method(object({
|
|
|
12538
12582
|
crop: _instanceof(Uint8Array),
|
|
12539
12583
|
width: number(),
|
|
12540
12584
|
height: number()
|
|
12541
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12585
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12542
12586
|
/**
|
|
12543
12587
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12544
12588
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12831,19 +12875,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12831
12875
|
runtime: ManagedRuntimeConfigSchema,
|
|
12832
12876
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12833
12877
|
timeoutMs: number().int().positive().optional()
|
|
12834
|
-
}), LlmGenerateResultSchema, {
|
|
12878
|
+
}), LlmGenerateResultSchema, {
|
|
12879
|
+
kind: "mutation",
|
|
12880
|
+
auth: "admin"
|
|
12881
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12835
12882
|
kind: "mutation",
|
|
12836
12883
|
auth: "admin"
|
|
12837
12884
|
}), method(object({}), _void(), {
|
|
12838
12885
|
kind: "mutation",
|
|
12839
12886
|
auth: "admin"
|
|
12840
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12887
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12841
12888
|
kind: "mutation",
|
|
12842
12889
|
auth: "admin"
|
|
12843
12890
|
}), method(object({ file: string() }), _void(), {
|
|
12844
12891
|
kind: "mutation",
|
|
12845
12892
|
auth: "admin"
|
|
12846
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12893
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12847
12894
|
/**
|
|
12848
12895
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12849
12896
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16354,7 +16401,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16354
16401
|
*/
|
|
16355
16402
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16356
16403
|
});
|
|
16357
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16404
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16358
16405
|
/**
|
|
16359
16406
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16360
16407
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17549,6 +17596,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17549
17596
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17550
17597
|
kind: "mutation",
|
|
17551
17598
|
auth: "admin"
|
|
17599
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17600
|
+
kind: "mutation",
|
|
17601
|
+
auth: "admin"
|
|
17602
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17603
|
+
kind: "query",
|
|
17604
|
+
auth: "admin"
|
|
17605
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17606
|
+
kind: "mutation",
|
|
17607
|
+
auth: "admin"
|
|
17552
17608
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17553
17609
|
kind: "query",
|
|
17554
17610
|
auth: "admin"
|
|
@@ -17703,6 +17759,11 @@ object({
|
|
|
17703
17759
|
"jpeg"
|
|
17704
17760
|
])
|
|
17705
17761
|
});
|
|
17762
|
+
/**
|
|
17763
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17764
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17765
|
+
* other process or execution group.
|
|
17766
|
+
*/
|
|
17706
17767
|
var FrameRefSchema = object({
|
|
17707
17768
|
registryId: string().min(1),
|
|
17708
17769
|
id: string().min(1),
|
|
@@ -19908,7 +19969,7 @@ method(object({
|
|
|
19908
19969
|
* linking rather than produce an eternal token.
|
|
19909
19970
|
*/
|
|
19910
19971
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
19911
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
19972
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
19912
19973
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
19913
19974
|
providerId: string().min(1),
|
|
19914
19975
|
displayName: string().min(1),
|
|
@@ -20003,10 +20064,13 @@ var EvictResultSchema = object({
|
|
|
20003
20064
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20004
20065
|
exhausted: boolean()
|
|
20005
20066
|
});
|
|
20006
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20067
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20007
20068
|
locationId: string(),
|
|
20008
20069
|
targetBytes: number().int().positive()
|
|
20009
|
-
}), EvictResultSchema, {
|
|
20070
|
+
}), EvictResultSchema, {
|
|
20071
|
+
kind: "mutation",
|
|
20072
|
+
auth: "admin"
|
|
20073
|
+
});
|
|
20010
20074
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20011
20075
|
kind: "mutation",
|
|
20012
20076
|
auth: "admin"
|
|
@@ -20066,26 +20130,50 @@ var ReadChunkInputSchema = object({
|
|
|
20066
20130
|
length: number()
|
|
20067
20131
|
});
|
|
20068
20132
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20069
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20133
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20070
20134
|
location: StorageLocationSchema,
|
|
20071
20135
|
relativePath: string()
|
|
20072
|
-
}), string()), method(object({
|
|
20136
|
+
}), string(), { auth: "admin" }), method(object({
|
|
20073
20137
|
location: StorageLocationSchema,
|
|
20074
20138
|
relativePath: string(),
|
|
20075
20139
|
data: _instanceof(Uint8Array)
|
|
20076
|
-
}), _void(), {
|
|
20140
|
+
}), _void(), {
|
|
20141
|
+
kind: "mutation",
|
|
20142
|
+
auth: "admin"
|
|
20143
|
+
}), method(object({
|
|
20077
20144
|
location: StorageLocationSchema,
|
|
20078
20145
|
relativePath: string()
|
|
20079
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20146
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20080
20147
|
location: StorageLocationSchema,
|
|
20081
20148
|
relativePath: string()
|
|
20082
|
-
}), boolean()), method(object({
|
|
20149
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20083
20150
|
location: StorageLocationSchema,
|
|
20084
20151
|
prefix: string().optional()
|
|
20085
|
-
}), array(string()).readonly()), method(object({
|
|
20152
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
20086
20153
|
location: StorageLocationSchema,
|
|
20087
20154
|
relativePath: string()
|
|
20088
|
-
}), _void(), {
|
|
20155
|
+
}), _void(), {
|
|
20156
|
+
kind: "mutation",
|
|
20157
|
+
auth: "admin"
|
|
20158
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20159
|
+
kind: "mutation",
|
|
20160
|
+
auth: "admin"
|
|
20161
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20162
|
+
kind: "mutation",
|
|
20163
|
+
auth: "admin"
|
|
20164
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20165
|
+
kind: "mutation",
|
|
20166
|
+
auth: "admin"
|
|
20167
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20168
|
+
kind: "mutation",
|
|
20169
|
+
auth: "admin"
|
|
20170
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20171
|
+
kind: "mutation",
|
|
20172
|
+
auth: "admin"
|
|
20173
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20174
|
+
kind: "mutation",
|
|
20175
|
+
auth: "admin"
|
|
20176
|
+
});
|
|
20089
20177
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20090
20178
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20091
20179
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20343,7 +20431,8 @@ method(object({
|
|
|
20343
20431
|
access: "create"
|
|
20344
20432
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20345
20433
|
kind: "mutation",
|
|
20346
|
-
access: "view"
|
|
20434
|
+
access: "view",
|
|
20435
|
+
auth: "admin"
|
|
20347
20436
|
}), method(object({
|
|
20348
20437
|
/** Required — the user the assertion belongs to (verified). */
|
|
20349
20438
|
userId: string(),
|
|
@@ -20351,10 +20440,12 @@ method(object({
|
|
|
20351
20440
|
response: record(string(), unknown())
|
|
20352
20441
|
}), object({ verified: boolean() }), {
|
|
20353
20442
|
kind: "mutation",
|
|
20354
|
-
access: "view"
|
|
20443
|
+
access: "view",
|
|
20444
|
+
auth: "admin"
|
|
20355
20445
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20356
20446
|
kind: "mutation",
|
|
20357
|
-
access: "view"
|
|
20447
|
+
access: "view",
|
|
20448
|
+
auth: "admin"
|
|
20358
20449
|
}), method(object({
|
|
20359
20450
|
/** AuthenticationResponseJSON from the browser. */
|
|
20360
20451
|
response: record(string(), unknown()) }), object({
|
|
@@ -20362,7 +20453,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20362
20453
|
userId: string().nullable()
|
|
20363
20454
|
}), {
|
|
20364
20455
|
kind: "mutation",
|
|
20365
|
-
access: "view"
|
|
20456
|
+
access: "view",
|
|
20457
|
+
auth: "admin"
|
|
20366
20458
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20367
20459
|
userId: string(),
|
|
20368
20460
|
credentialId: string()
|
|
@@ -20534,7 +20626,19 @@ var VectorStatsResultSchema = object({
|
|
|
20534
20626
|
/** False when the backend ranks approximately. */
|
|
20535
20627
|
exact: boolean()
|
|
20536
20628
|
});
|
|
20537
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20629
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20630
|
+
kind: "mutation",
|
|
20631
|
+
auth: "admin"
|
|
20632
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20633
|
+
kind: "mutation",
|
|
20634
|
+
auth: "admin"
|
|
20635
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20636
|
+
kind: "mutation",
|
|
20637
|
+
auth: "admin"
|
|
20638
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20639
|
+
kind: "mutation",
|
|
20640
|
+
auth: "admin"
|
|
20641
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20538
20642
|
var ClipSchema = object({
|
|
20539
20643
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20540
20644
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -22995,7 +23099,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
22995
23099
|
sizeBytes: number(),
|
|
22996
23100
|
timestamp: number()
|
|
22997
23101
|
});
|
|
22998
|
-
method(
|
|
23102
|
+
method(object({
|
|
23103
|
+
/**
|
|
23104
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23105
|
+
*
|
|
23106
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23107
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23108
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23109
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23110
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23111
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23112
|
+
*
|
|
23113
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23114
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23115
|
+
*
|
|
23116
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23117
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23118
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23119
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23120
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23121
|
+
*/
|
|
23122
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
22999
23123
|
kind: "mutation",
|
|
23000
23124
|
auth: "admin"
|
|
23001
23125
|
}), method(object({
|
|
@@ -25885,8 +26009,10 @@ var PlateInfoSchema = object({
|
|
|
25885
26009
|
keyFrameMediaKey: string().optional(),
|
|
25886
26010
|
base64: string().optional(),
|
|
25887
26011
|
/**
|
|
25888
|
-
* Same crop as a data-plane URL
|
|
25889
|
-
* never inlines JPEG; `listPlates`
|
|
26012
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26013
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26014
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26015
|
+
* left at its `true` default.
|
|
25890
26016
|
*/
|
|
25891
26017
|
cropUrl: string().optional()
|
|
25892
26018
|
});
|
|
@@ -25906,14 +26032,34 @@ var PlateClusterSchema = object({
|
|
|
25906
26032
|
});
|
|
25907
26033
|
method(object({
|
|
25908
26034
|
deviceId: number().int().optional(),
|
|
25909
|
-
limit: number().int().positive().optional()
|
|
26035
|
+
limit: number().int().positive().optional(),
|
|
26036
|
+
/**
|
|
26037
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26038
|
+
* behaviour, kept so no caller breaks.
|
|
26039
|
+
*
|
|
26040
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26041
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26042
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26043
|
+
* metadata without them — and the browser then caches the images.
|
|
26044
|
+
*
|
|
26045
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26046
|
+
* plates were the one gallery list left without it.
|
|
26047
|
+
*
|
|
26048
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26049
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26050
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26051
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26052
|
+
*/
|
|
26053
|
+
includeCrops: boolean().optional()
|
|
25910
26054
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
25911
26055
|
deviceId: number().int(),
|
|
25912
26056
|
trackId: string()
|
|
25913
26057
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
25914
26058
|
text: string().min(1),
|
|
25915
26059
|
maxDistance: number().int().min(0).optional(),
|
|
25916
|
-
limit: number().int().positive().optional()
|
|
26060
|
+
limit: number().int().positive().optional(),
|
|
26061
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26062
|
+
includeCrops: boolean().optional()
|
|
25917
26063
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
25918
26064
|
maxDistance: number().int().min(0).optional(),
|
|
25919
26065
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -25927,7 +26073,13 @@ method(object({
|
|
|
25927
26073
|
}), method(object({ plateId: string() }), _void(), {
|
|
25928
26074
|
kind: "mutation",
|
|
25929
26075
|
auth: "admin"
|
|
25930
|
-
}), method(
|
|
26076
|
+
}), method(object({
|
|
26077
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26078
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26079
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26080
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26081
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26082
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
25931
26083
|
kind: "mutation",
|
|
25932
26084
|
auth: "admin"
|
|
25933
26085
|
}), method(object({
|
|
@@ -33188,6 +33340,12 @@ Object.freeze({
|
|
|
33188
33340
|
addonId: null,
|
|
33189
33341
|
access: "create"
|
|
33190
33342
|
},
|
|
33343
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
33344
|
+
capName: "pipeline-analytics",
|
|
33345
|
+
capScope: "device",
|
|
33346
|
+
addonId: null,
|
|
33347
|
+
access: "create"
|
|
33348
|
+
},
|
|
33191
33349
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33192
33350
|
capName: "pipeline-analytics",
|
|
33193
33351
|
capScope: "device",
|
|
@@ -33362,6 +33520,12 @@ Object.freeze({
|
|
|
33362
33520
|
addonId: null,
|
|
33363
33521
|
access: "view"
|
|
33364
33522
|
},
|
|
33523
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
33524
|
+
capName: "pipeline-analytics",
|
|
33525
|
+
capScope: "device",
|
|
33526
|
+
addonId: null,
|
|
33527
|
+
access: "view"
|
|
33528
|
+
},
|
|
33365
33529
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
33366
33530
|
capName: "pipeline-analytics",
|
|
33367
33531
|
capScope: "device",
|
|
@@ -33440,6 +33604,12 @@ Object.freeze({
|
|
|
33440
33604
|
addonId: null,
|
|
33441
33605
|
access: "create"
|
|
33442
33606
|
},
|
|
33607
|
+
"pipelineAnalytics.relocateMedia": {
|
|
33608
|
+
capName: "pipeline-analytics",
|
|
33609
|
+
capScope: "device",
|
|
33610
|
+
addonId: null,
|
|
33611
|
+
access: "create"
|
|
33612
|
+
},
|
|
33443
33613
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
33444
33614
|
capName: "pipeline-analytics",
|
|
33445
33615
|
capScope: "device",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-dreo",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.29",
|
|
4
4
|
"description": "Dreo smart-device (fan / air-circulator / purifier / heater / humidifier) device-provider addon for CamStack — wraps the @apocaliss92/nodedreo Dreo cloud client (REST + WebSocket)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|