@camstack/addon-provider-wyze 0.2.32 → 0.2.33
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
|
@@ -6662,7 +6662,7 @@ function method(input, output, options) {
|
|
|
6662
6662
|
input,
|
|
6663
6663
|
output,
|
|
6664
6664
|
kind: options?.kind ?? "query",
|
|
6665
|
-
auth: options
|
|
6665
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6666
6666
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6667
6667
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6668
6668
|
timeoutMs: options?.timeoutMs
|
|
@@ -6686,7 +6686,7 @@ function event(data) {
|
|
|
6686
6686
|
}
|
|
6687
6687
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6688
6688
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6689
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6689
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6690
6690
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6691
6691
|
DeviceType["Camera"] = "camera";
|
|
6692
6692
|
DeviceType["Hub"] = "hub";
|
|
@@ -7007,7 +7007,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
7007
7007
|
}({});
|
|
7008
7008
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
7009
7009
|
var VersionOutputSchema = object({ version: string() });
|
|
7010
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
7010
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
7011
7011
|
/**
|
|
7012
7012
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
7013
7013
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7633,24 +7633,6 @@ var RecordingRetentionSchema = object({
|
|
|
7633
7633
|
maxSizeGb: number().min(0).optional()
|
|
7634
7634
|
});
|
|
7635
7635
|
/**
|
|
7636
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7637
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7638
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7639
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7640
|
-
*
|
|
7641
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7642
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7643
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7644
|
-
* written with.
|
|
7645
|
-
*/
|
|
7646
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7647
|
-
"minimal",
|
|
7648
|
-
"low",
|
|
7649
|
-
"standard",
|
|
7650
|
-
"high",
|
|
7651
|
-
"max"
|
|
7652
|
-
]);
|
|
7653
|
-
/**
|
|
7654
7636
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7655
7637
|
*
|
|
7656
7638
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7658,7 +7640,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7658
7640
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7659
7641
|
*
|
|
7660
7642
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7661
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7643
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7644
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7645
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7646
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7647
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7662
7648
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7663
7649
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7664
7650
|
*/
|
|
@@ -7681,14 +7667,7 @@ var RecordingConfigSchema = object({
|
|
|
7681
7667
|
* "off" is the absence of a covering band, never a band value.
|
|
7682
7668
|
*/
|
|
7683
7669
|
bands: array(RecordingBandSchema).default([]),
|
|
7684
|
-
retention: RecordingRetentionSchema.optional()
|
|
7685
|
-
/**
|
|
7686
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7687
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7688
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7689
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7690
|
-
*/
|
|
7691
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7670
|
+
retention: RecordingRetentionSchema.optional()
|
|
7692
7671
|
}).strict();
|
|
7693
7672
|
/**
|
|
7694
7673
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7764,10 +7743,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7764
7743
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7765
7744
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7766
7745
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7767
|
-
var
|
|
7746
|
+
var RelocateMediaInputSchema = object({
|
|
7768
7747
|
toLocationId: string(),
|
|
7769
7748
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7770
|
-
})
|
|
7749
|
+
});
|
|
7750
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7771
7751
|
/** The independently selectable logical storage classes. `recordings`
|
|
7772
7752
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7773
7753
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8062,7 +8042,26 @@ var LabelDefinitionSchema = object({
|
|
|
8062
8042
|
description: string().optional(),
|
|
8063
8043
|
icon: string().optional()
|
|
8064
8044
|
});
|
|
8065
|
-
|
|
8045
|
+
/**
|
|
8046
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8047
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8048
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8049
|
+
* detection pipeline executor actually routes.
|
|
8050
|
+
*
|
|
8051
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8052
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8053
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8054
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8055
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8056
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8057
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8058
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8059
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8060
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8061
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8062
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8063
|
+
*/
|
|
8064
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8066
8065
|
mapping: record(string(), _enum([
|
|
8067
8066
|
"person",
|
|
8068
8067
|
"vehicle",
|
|
@@ -8267,7 +8266,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8267
8266
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8268
8267
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8269
8268
|
*/
|
|
8270
|
-
classMap:
|
|
8269
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8271
8270
|
});
|
|
8272
8271
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8273
8272
|
format: literal("openvino"),
|
|
@@ -8297,7 +8296,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8297
8296
|
"segmentation"
|
|
8298
8297
|
]),
|
|
8299
8298
|
faceAlignment: boolean().optional(),
|
|
8300
|
-
classMap:
|
|
8299
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8301
8300
|
});
|
|
8302
8301
|
var ConvertResultSchema = object({
|
|
8303
8302
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9160,7 +9159,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9160
9159
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9161
9160
|
sectionLabel: string().optional()
|
|
9162
9161
|
});
|
|
9163
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9162
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9164
9163
|
var AddonHttpRouteSchema = object({
|
|
9165
9164
|
method: _enum([
|
|
9166
9165
|
"GET",
|
|
@@ -9395,7 +9394,7 @@ var WidgetMetadataSchema = object({
|
|
|
9395
9394
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9396
9395
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9397
9396
|
});
|
|
9398
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9397
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9399
9398
|
/**
|
|
9400
9399
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9401
9400
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11019,7 +11018,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11019
11018
|
stepId: string(),
|
|
11020
11019
|
entry: ModelCatalogEntrySchema
|
|
11021
11020
|
});
|
|
11022
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11021
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11023
11022
|
/**
|
|
11024
11023
|
* Query filter for settings-store collections.
|
|
11025
11024
|
*/
|
|
@@ -11106,7 +11105,8 @@ method(object({
|
|
|
11106
11105
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11107
11106
|
namespace: string().optional(),
|
|
11108
11107
|
collection: string(),
|
|
11109
|
-
filter: QueryFilterSchema.optional()
|
|
11108
|
+
filter: QueryFilterSchema.optional(),
|
|
11109
|
+
columns: array(string()).readonly().optional()
|
|
11110
11110
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11111
11111
|
namespace: string().optional(),
|
|
11112
11112
|
collection: string(),
|
|
@@ -11169,46 +11169,87 @@ var EngineInfoSchema = object({
|
|
|
11169
11169
|
kind: _enum(["relational", "vector"]),
|
|
11170
11170
|
displayName: string()
|
|
11171
11171
|
});
|
|
11172
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11172
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11173
11173
|
namespace: string().optional(),
|
|
11174
11174
|
collection: string(),
|
|
11175
11175
|
key: string()
|
|
11176
|
-
}), unknown()), method(object({
|
|
11176
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11177
11177
|
namespace: string().optional(),
|
|
11178
11178
|
collection: string(),
|
|
11179
11179
|
key: string(),
|
|
11180
11180
|
value: unknown()
|
|
11181
|
-
}), _void(), {
|
|
11181
|
+
}), _void(), {
|
|
11182
|
+
kind: "mutation",
|
|
11183
|
+
auth: "admin"
|
|
11184
|
+
}), method(object({
|
|
11182
11185
|
namespace: string().optional(),
|
|
11183
11186
|
collection: string(),
|
|
11184
|
-
filter: QueryFilterSchema.optional()
|
|
11185
|
-
|
|
11187
|
+
filter: QueryFilterSchema.optional(),
|
|
11188
|
+
/**
|
|
11189
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11190
|
+
*
|
|
11191
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11192
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11193
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11194
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11195
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11196
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11197
|
+
*
|
|
11198
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11199
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11200
|
+
* interface the engine destructures from. The field existed on both
|
|
11201
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11202
|
+
* registered provider against `InferProvider<cap>` —
|
|
11203
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11204
|
+
*
|
|
11205
|
+
* It is declared here anyway, and must stay in step with
|
|
11206
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11207
|
+
* to be able to see that this call carries a projection.
|
|
11208
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11209
|
+
*/
|
|
11210
|
+
columns: array(string()).readonly().optional()
|
|
11211
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11186
11212
|
namespace: string().optional(),
|
|
11187
11213
|
collection: string(),
|
|
11188
11214
|
record: SettingsRecordSchema
|
|
11189
|
-
}), _void(), {
|
|
11215
|
+
}), _void(), {
|
|
11216
|
+
kind: "mutation",
|
|
11217
|
+
auth: "admin"
|
|
11218
|
+
}), method(object({
|
|
11190
11219
|
namespace: string().optional(),
|
|
11191
11220
|
collection: string(),
|
|
11192
11221
|
id: string(),
|
|
11193
11222
|
data: record(string(), unknown())
|
|
11194
|
-
}), _void(), {
|
|
11223
|
+
}), _void(), {
|
|
11224
|
+
kind: "mutation",
|
|
11225
|
+
auth: "admin"
|
|
11226
|
+
}), method(object({
|
|
11195
11227
|
namespace: string().optional(),
|
|
11196
11228
|
collection: string(),
|
|
11197
11229
|
key: string()
|
|
11198
|
-
}), _void(), {
|
|
11230
|
+
}), _void(), {
|
|
11231
|
+
kind: "mutation",
|
|
11232
|
+
auth: "admin"
|
|
11233
|
+
}), method(object({
|
|
11199
11234
|
namespace: string().optional(),
|
|
11200
11235
|
collection: string(),
|
|
11201
11236
|
filter: MutationFilterSchema
|
|
11202
|
-
}), object({ deleted: number().int() }), {
|
|
11237
|
+
}), object({ deleted: number().int() }), {
|
|
11238
|
+
kind: "mutation",
|
|
11239
|
+
auth: "admin"
|
|
11240
|
+
}), method(object({
|
|
11203
11241
|
namespace: string().optional(),
|
|
11204
11242
|
collection: string(),
|
|
11205
11243
|
filter: MutationFilterSchema,
|
|
11206
11244
|
data: record(string(), unknown())
|
|
11207
|
-
}), object({ updated: number().int() }), {
|
|
11245
|
+
}), object({ updated: number().int() }), {
|
|
11246
|
+
kind: "mutation",
|
|
11247
|
+
auth: "admin"
|
|
11248
|
+
}), method(object({
|
|
11208
11249
|
namespace: string().optional(),
|
|
11209
11250
|
collection: string(),
|
|
11210
11251
|
filter: QueryFilterSchema.optional()
|
|
11211
|
-
}), number()), method(object({
|
|
11252
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11212
11253
|
namespace: string().optional(),
|
|
11213
11254
|
collection: string(),
|
|
11214
11255
|
field: string(),
|
|
@@ -11218,15 +11259,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11218
11259
|
}), array(object({
|
|
11219
11260
|
bucket: number().int(),
|
|
11220
11261
|
count: number().int()
|
|
11221
|
-
})).readonly()), method(object({
|
|
11262
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11222
11263
|
namespace: string().optional(),
|
|
11223
11264
|
collection: string()
|
|
11224
|
-
}), boolean()), method(object({
|
|
11265
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11225
11266
|
namespace: string().optional(),
|
|
11226
11267
|
collection: string(),
|
|
11227
11268
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11228
11269
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11229
|
-
}), _void(), {
|
|
11270
|
+
}), _void(), {
|
|
11271
|
+
kind: "mutation",
|
|
11272
|
+
auth: "admin"
|
|
11273
|
+
});
|
|
11230
11274
|
/**
|
|
11231
11275
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11232
11276
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12533,7 +12577,7 @@ method(object({
|
|
|
12533
12577
|
crop: _instanceof(Uint8Array),
|
|
12534
12578
|
width: number(),
|
|
12535
12579
|
height: number()
|
|
12536
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12580
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12537
12581
|
/**
|
|
12538
12582
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12539
12583
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12826,19 +12870,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12826
12870
|
runtime: ManagedRuntimeConfigSchema,
|
|
12827
12871
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12828
12872
|
timeoutMs: number().int().positive().optional()
|
|
12829
|
-
}), LlmGenerateResultSchema, {
|
|
12873
|
+
}), LlmGenerateResultSchema, {
|
|
12874
|
+
kind: "mutation",
|
|
12875
|
+
auth: "admin"
|
|
12876
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12830
12877
|
kind: "mutation",
|
|
12831
12878
|
auth: "admin"
|
|
12832
12879
|
}), method(object({}), _void(), {
|
|
12833
12880
|
kind: "mutation",
|
|
12834
12881
|
auth: "admin"
|
|
12835
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12882
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12836
12883
|
kind: "mutation",
|
|
12837
12884
|
auth: "admin"
|
|
12838
12885
|
}), method(object({ file: string() }), _void(), {
|
|
12839
12886
|
kind: "mutation",
|
|
12840
12887
|
auth: "admin"
|
|
12841
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12888
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12842
12889
|
/**
|
|
12843
12890
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12844
12891
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16349,7 +16396,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16349
16396
|
*/
|
|
16350
16397
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16351
16398
|
});
|
|
16352
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16399
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16353
16400
|
/**
|
|
16354
16401
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16355
16402
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17544,6 +17591,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17544
17591
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17545
17592
|
kind: "mutation",
|
|
17546
17593
|
auth: "admin"
|
|
17594
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17595
|
+
kind: "mutation",
|
|
17596
|
+
auth: "admin"
|
|
17597
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17598
|
+
kind: "query",
|
|
17599
|
+
auth: "admin"
|
|
17600
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17601
|
+
kind: "mutation",
|
|
17602
|
+
auth: "admin"
|
|
17547
17603
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17548
17604
|
kind: "query",
|
|
17549
17605
|
auth: "admin"
|
|
@@ -17698,6 +17754,11 @@ object({
|
|
|
17698
17754
|
"jpeg"
|
|
17699
17755
|
])
|
|
17700
17756
|
});
|
|
17757
|
+
/**
|
|
17758
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17759
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17760
|
+
* other process or execution group.
|
|
17761
|
+
*/
|
|
17701
17762
|
var FrameRefSchema = object({
|
|
17702
17763
|
registryId: string().min(1),
|
|
17703
17764
|
id: string().min(1),
|
|
@@ -20007,7 +20068,7 @@ method(object({
|
|
|
20007
20068
|
* linking rather than produce an eternal token.
|
|
20008
20069
|
*/
|
|
20009
20070
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
20010
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
20071
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
20011
20072
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
20012
20073
|
providerId: string().min(1),
|
|
20013
20074
|
displayName: string().min(1),
|
|
@@ -20102,10 +20163,13 @@ var EvictResultSchema = object({
|
|
|
20102
20163
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20103
20164
|
exhausted: boolean()
|
|
20104
20165
|
});
|
|
20105
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20166
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20106
20167
|
locationId: string(),
|
|
20107
20168
|
targetBytes: number().int().positive()
|
|
20108
|
-
}), EvictResultSchema, {
|
|
20169
|
+
}), EvictResultSchema, {
|
|
20170
|
+
kind: "mutation",
|
|
20171
|
+
auth: "admin"
|
|
20172
|
+
});
|
|
20109
20173
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20110
20174
|
kind: "mutation",
|
|
20111
20175
|
auth: "admin"
|
|
@@ -20165,26 +20229,50 @@ var ReadChunkInputSchema = object({
|
|
|
20165
20229
|
length: number()
|
|
20166
20230
|
});
|
|
20167
20231
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20168
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20232
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20169
20233
|
location: StorageLocationSchema,
|
|
20170
20234
|
relativePath: string()
|
|
20171
|
-
}), string()), method(object({
|
|
20235
|
+
}), string(), { auth: "admin" }), method(object({
|
|
20172
20236
|
location: StorageLocationSchema,
|
|
20173
20237
|
relativePath: string(),
|
|
20174
20238
|
data: _instanceof(Uint8Array)
|
|
20175
|
-
}), _void(), {
|
|
20239
|
+
}), _void(), {
|
|
20240
|
+
kind: "mutation",
|
|
20241
|
+
auth: "admin"
|
|
20242
|
+
}), method(object({
|
|
20176
20243
|
location: StorageLocationSchema,
|
|
20177
20244
|
relativePath: string()
|
|
20178
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20245
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20179
20246
|
location: StorageLocationSchema,
|
|
20180
20247
|
relativePath: string()
|
|
20181
|
-
}), boolean()), method(object({
|
|
20248
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20182
20249
|
location: StorageLocationSchema,
|
|
20183
20250
|
prefix: string().optional()
|
|
20184
|
-
}), array(string()).readonly()), method(object({
|
|
20251
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
20185
20252
|
location: StorageLocationSchema,
|
|
20186
20253
|
relativePath: string()
|
|
20187
|
-
}), _void(), {
|
|
20254
|
+
}), _void(), {
|
|
20255
|
+
kind: "mutation",
|
|
20256
|
+
auth: "admin"
|
|
20257
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20258
|
+
kind: "mutation",
|
|
20259
|
+
auth: "admin"
|
|
20260
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20261
|
+
kind: "mutation",
|
|
20262
|
+
auth: "admin"
|
|
20263
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20264
|
+
kind: "mutation",
|
|
20265
|
+
auth: "admin"
|
|
20266
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20267
|
+
kind: "mutation",
|
|
20268
|
+
auth: "admin"
|
|
20269
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20270
|
+
kind: "mutation",
|
|
20271
|
+
auth: "admin"
|
|
20272
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20273
|
+
kind: "mutation",
|
|
20274
|
+
auth: "admin"
|
|
20275
|
+
});
|
|
20188
20276
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20189
20277
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20190
20278
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20442,7 +20530,8 @@ method(object({
|
|
|
20442
20530
|
access: "create"
|
|
20443
20531
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20444
20532
|
kind: "mutation",
|
|
20445
|
-
access: "view"
|
|
20533
|
+
access: "view",
|
|
20534
|
+
auth: "admin"
|
|
20446
20535
|
}), method(object({
|
|
20447
20536
|
/** Required — the user the assertion belongs to (verified). */
|
|
20448
20537
|
userId: string(),
|
|
@@ -20450,10 +20539,12 @@ method(object({
|
|
|
20450
20539
|
response: record(string(), unknown())
|
|
20451
20540
|
}), object({ verified: boolean() }), {
|
|
20452
20541
|
kind: "mutation",
|
|
20453
|
-
access: "view"
|
|
20542
|
+
access: "view",
|
|
20543
|
+
auth: "admin"
|
|
20454
20544
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20455
20545
|
kind: "mutation",
|
|
20456
|
-
access: "view"
|
|
20546
|
+
access: "view",
|
|
20547
|
+
auth: "admin"
|
|
20457
20548
|
}), method(object({
|
|
20458
20549
|
/** AuthenticationResponseJSON from the browser. */
|
|
20459
20550
|
response: record(string(), unknown()) }), object({
|
|
@@ -20461,7 +20552,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20461
20552
|
userId: string().nullable()
|
|
20462
20553
|
}), {
|
|
20463
20554
|
kind: "mutation",
|
|
20464
|
-
access: "view"
|
|
20555
|
+
access: "view",
|
|
20556
|
+
auth: "admin"
|
|
20465
20557
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20466
20558
|
userId: string(),
|
|
20467
20559
|
credentialId: string()
|
|
@@ -20633,7 +20725,19 @@ var VectorStatsResultSchema = object({
|
|
|
20633
20725
|
/** False when the backend ranks approximately. */
|
|
20634
20726
|
exact: boolean()
|
|
20635
20727
|
});
|
|
20636
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20728
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20729
|
+
kind: "mutation",
|
|
20730
|
+
auth: "admin"
|
|
20731
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20732
|
+
kind: "mutation",
|
|
20733
|
+
auth: "admin"
|
|
20734
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20735
|
+
kind: "mutation",
|
|
20736
|
+
auth: "admin"
|
|
20737
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20738
|
+
kind: "mutation",
|
|
20739
|
+
auth: "admin"
|
|
20740
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20637
20741
|
var ClipSchema = object({
|
|
20638
20742
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20639
20743
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23094,7 +23198,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23094
23198
|
sizeBytes: number(),
|
|
23095
23199
|
timestamp: number()
|
|
23096
23200
|
});
|
|
23097
|
-
method(
|
|
23201
|
+
method(object({
|
|
23202
|
+
/**
|
|
23203
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23204
|
+
*
|
|
23205
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23206
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23207
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23208
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23209
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23210
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23211
|
+
*
|
|
23212
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23213
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23214
|
+
*
|
|
23215
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23216
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23217
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23218
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23219
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23220
|
+
*/
|
|
23221
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
23098
23222
|
kind: "mutation",
|
|
23099
23223
|
auth: "admin"
|
|
23100
23224
|
}), method(object({
|
|
@@ -25984,8 +26108,10 @@ var PlateInfoSchema = object({
|
|
|
25984
26108
|
keyFrameMediaKey: string().optional(),
|
|
25985
26109
|
base64: string().optional(),
|
|
25986
26110
|
/**
|
|
25987
|
-
* Same crop as a data-plane URL
|
|
25988
|
-
* never inlines JPEG; `listPlates`
|
|
26111
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26112
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26113
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26114
|
+
* left at its `true` default.
|
|
25989
26115
|
*/
|
|
25990
26116
|
cropUrl: string().optional()
|
|
25991
26117
|
});
|
|
@@ -26005,14 +26131,34 @@ var PlateClusterSchema = object({
|
|
|
26005
26131
|
});
|
|
26006
26132
|
method(object({
|
|
26007
26133
|
deviceId: number().int().optional(),
|
|
26008
|
-
limit: number().int().positive().optional()
|
|
26134
|
+
limit: number().int().positive().optional(),
|
|
26135
|
+
/**
|
|
26136
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26137
|
+
* behaviour, kept so no caller breaks.
|
|
26138
|
+
*
|
|
26139
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26140
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26141
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26142
|
+
* metadata without them — and the browser then caches the images.
|
|
26143
|
+
*
|
|
26144
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26145
|
+
* plates were the one gallery list left without it.
|
|
26146
|
+
*
|
|
26147
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26148
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26149
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26150
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26151
|
+
*/
|
|
26152
|
+
includeCrops: boolean().optional()
|
|
26009
26153
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
26010
26154
|
deviceId: number().int(),
|
|
26011
26155
|
trackId: string()
|
|
26012
26156
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
26013
26157
|
text: string().min(1),
|
|
26014
26158
|
maxDistance: number().int().min(0).optional(),
|
|
26015
|
-
limit: number().int().positive().optional()
|
|
26159
|
+
limit: number().int().positive().optional(),
|
|
26160
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26161
|
+
includeCrops: boolean().optional()
|
|
26016
26162
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
26017
26163
|
maxDistance: number().int().min(0).optional(),
|
|
26018
26164
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -26026,7 +26172,13 @@ method(object({
|
|
|
26026
26172
|
}), method(object({ plateId: string() }), _void(), {
|
|
26027
26173
|
kind: "mutation",
|
|
26028
26174
|
auth: "admin"
|
|
26029
|
-
}), method(
|
|
26175
|
+
}), method(object({
|
|
26176
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26177
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26178
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26179
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26180
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26181
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
26030
26182
|
kind: "mutation",
|
|
26031
26183
|
auth: "admin"
|
|
26032
26184
|
}), method(object({
|
|
@@ -33287,6 +33439,12 @@ Object.freeze({
|
|
|
33287
33439
|
addonId: null,
|
|
33288
33440
|
access: "create"
|
|
33289
33441
|
},
|
|
33442
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
33443
|
+
capName: "pipeline-analytics",
|
|
33444
|
+
capScope: "device",
|
|
33445
|
+
addonId: null,
|
|
33446
|
+
access: "create"
|
|
33447
|
+
},
|
|
33290
33448
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33291
33449
|
capName: "pipeline-analytics",
|
|
33292
33450
|
capScope: "device",
|
|
@@ -33461,6 +33619,12 @@ Object.freeze({
|
|
|
33461
33619
|
addonId: null,
|
|
33462
33620
|
access: "view"
|
|
33463
33621
|
},
|
|
33622
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
33623
|
+
capName: "pipeline-analytics",
|
|
33624
|
+
capScope: "device",
|
|
33625
|
+
addonId: null,
|
|
33626
|
+
access: "view"
|
|
33627
|
+
},
|
|
33464
33628
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
33465
33629
|
capName: "pipeline-analytics",
|
|
33466
33630
|
capScope: "device",
|
|
@@ -33539,6 +33703,12 @@ Object.freeze({
|
|
|
33539
33703
|
addonId: null,
|
|
33540
33704
|
access: "create"
|
|
33541
33705
|
},
|
|
33706
|
+
"pipelineAnalytics.relocateMedia": {
|
|
33707
|
+
capName: "pipeline-analytics",
|
|
33708
|
+
capScope: "device",
|
|
33709
|
+
addonId: null,
|
|
33710
|
+
access: "create"
|
|
33711
|
+
},
|
|
33542
33712
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
33543
33713
|
capName: "pipeline-analytics",
|
|
33544
33714
|
capScope: "device",
|
package/dist/addon.mjs
CHANGED
|
@@ -6641,7 +6641,7 @@ function method(input, output, options) {
|
|
|
6641
6641
|
input,
|
|
6642
6642
|
output,
|
|
6643
6643
|
kind: options?.kind ?? "query",
|
|
6644
|
-
auth: options
|
|
6644
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6645
6645
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6646
6646
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6647
6647
|
timeoutMs: options?.timeoutMs
|
|
@@ -6665,7 +6665,7 @@ function event(data) {
|
|
|
6665
6665
|
}
|
|
6666
6666
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6667
6667
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6668
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6668
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6669
6669
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6670
6670
|
DeviceType["Camera"] = "camera";
|
|
6671
6671
|
DeviceType["Hub"] = "hub";
|
|
@@ -6986,7 +6986,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
6986
6986
|
}({});
|
|
6987
6987
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
6988
6988
|
var VersionOutputSchema = object({ version: string() });
|
|
6989
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
6989
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
6990
6990
|
/**
|
|
6991
6991
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
6992
6992
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7612,24 +7612,6 @@ var RecordingRetentionSchema = object({
|
|
|
7612
7612
|
maxSizeGb: number().min(0).optional()
|
|
7613
7613
|
});
|
|
7614
7614
|
/**
|
|
7615
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7616
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7617
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7618
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7619
|
-
*
|
|
7620
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7621
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7622
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7623
|
-
* written with.
|
|
7624
|
-
*/
|
|
7625
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7626
|
-
"minimal",
|
|
7627
|
-
"low",
|
|
7628
|
-
"standard",
|
|
7629
|
-
"high",
|
|
7630
|
-
"max"
|
|
7631
|
-
]);
|
|
7632
|
-
/**
|
|
7633
7615
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7634
7616
|
*
|
|
7635
7617
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7637,7 +7619,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7637
7619
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7638
7620
|
*
|
|
7639
7621
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7640
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7622
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7623
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7624
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7625
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7626
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7641
7627
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7642
7628
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7643
7629
|
*/
|
|
@@ -7660,14 +7646,7 @@ var RecordingConfigSchema = object({
|
|
|
7660
7646
|
* "off" is the absence of a covering band, never a band value.
|
|
7661
7647
|
*/
|
|
7662
7648
|
bands: array(RecordingBandSchema).default([]),
|
|
7663
|
-
retention: RecordingRetentionSchema.optional()
|
|
7664
|
-
/**
|
|
7665
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7666
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7667
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7668
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7669
|
-
*/
|
|
7670
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7649
|
+
retention: RecordingRetentionSchema.optional()
|
|
7671
7650
|
}).strict();
|
|
7672
7651
|
/**
|
|
7673
7652
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7743,10 +7722,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7743
7722
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7744
7723
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7745
7724
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7746
|
-
var
|
|
7725
|
+
var RelocateMediaInputSchema = object({
|
|
7747
7726
|
toLocationId: string(),
|
|
7748
7727
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7749
|
-
})
|
|
7728
|
+
});
|
|
7729
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7750
7730
|
/** The independently selectable logical storage classes. `recordings`
|
|
7751
7731
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7752
7732
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8041,7 +8021,26 @@ var LabelDefinitionSchema = object({
|
|
|
8041
8021
|
description: string().optional(),
|
|
8042
8022
|
icon: string().optional()
|
|
8043
8023
|
});
|
|
8044
|
-
|
|
8024
|
+
/**
|
|
8025
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8026
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8027
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8028
|
+
* detection pipeline executor actually routes.
|
|
8029
|
+
*
|
|
8030
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8031
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8032
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8033
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8034
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8035
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8036
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8037
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8038
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8039
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8040
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8041
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8042
|
+
*/
|
|
8043
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8045
8044
|
mapping: record(string(), _enum([
|
|
8046
8045
|
"person",
|
|
8047
8046
|
"vehicle",
|
|
@@ -8246,7 +8245,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8246
8245
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8247
8246
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8248
8247
|
*/
|
|
8249
|
-
classMap:
|
|
8248
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8250
8249
|
});
|
|
8251
8250
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8252
8251
|
format: literal("openvino"),
|
|
@@ -8276,7 +8275,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8276
8275
|
"segmentation"
|
|
8277
8276
|
]),
|
|
8278
8277
|
faceAlignment: boolean().optional(),
|
|
8279
|
-
classMap:
|
|
8278
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8280
8279
|
});
|
|
8281
8280
|
var ConvertResultSchema = object({
|
|
8282
8281
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9139,7 +9138,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9139
9138
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9140
9139
|
sectionLabel: string().optional()
|
|
9141
9140
|
});
|
|
9142
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9141
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9143
9142
|
var AddonHttpRouteSchema = object({
|
|
9144
9143
|
method: _enum([
|
|
9145
9144
|
"GET",
|
|
@@ -9374,7 +9373,7 @@ var WidgetMetadataSchema = object({
|
|
|
9374
9373
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9375
9374
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9376
9375
|
});
|
|
9377
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9376
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9378
9377
|
/**
|
|
9379
9378
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9380
9379
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -10998,7 +10997,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
10998
10997
|
stepId: string(),
|
|
10999
10998
|
entry: ModelCatalogEntrySchema
|
|
11000
10999
|
});
|
|
11001
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11000
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11002
11001
|
/**
|
|
11003
11002
|
* Query filter for settings-store collections.
|
|
11004
11003
|
*/
|
|
@@ -11085,7 +11084,8 @@ method(object({
|
|
|
11085
11084
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11086
11085
|
namespace: string().optional(),
|
|
11087
11086
|
collection: string(),
|
|
11088
|
-
filter: QueryFilterSchema.optional()
|
|
11087
|
+
filter: QueryFilterSchema.optional(),
|
|
11088
|
+
columns: array(string()).readonly().optional()
|
|
11089
11089
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11090
11090
|
namespace: string().optional(),
|
|
11091
11091
|
collection: string(),
|
|
@@ -11148,46 +11148,87 @@ var EngineInfoSchema = object({
|
|
|
11148
11148
|
kind: _enum(["relational", "vector"]),
|
|
11149
11149
|
displayName: string()
|
|
11150
11150
|
});
|
|
11151
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11151
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11152
11152
|
namespace: string().optional(),
|
|
11153
11153
|
collection: string(),
|
|
11154
11154
|
key: string()
|
|
11155
|
-
}), unknown()), method(object({
|
|
11155
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11156
11156
|
namespace: string().optional(),
|
|
11157
11157
|
collection: string(),
|
|
11158
11158
|
key: string(),
|
|
11159
11159
|
value: unknown()
|
|
11160
|
-
}), _void(), {
|
|
11160
|
+
}), _void(), {
|
|
11161
|
+
kind: "mutation",
|
|
11162
|
+
auth: "admin"
|
|
11163
|
+
}), method(object({
|
|
11161
11164
|
namespace: string().optional(),
|
|
11162
11165
|
collection: string(),
|
|
11163
|
-
filter: QueryFilterSchema.optional()
|
|
11164
|
-
|
|
11166
|
+
filter: QueryFilterSchema.optional(),
|
|
11167
|
+
/**
|
|
11168
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11169
|
+
*
|
|
11170
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11171
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11172
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11173
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11174
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11175
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11176
|
+
*
|
|
11177
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11178
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11179
|
+
* interface the engine destructures from. The field existed on both
|
|
11180
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11181
|
+
* registered provider against `InferProvider<cap>` —
|
|
11182
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11183
|
+
*
|
|
11184
|
+
* It is declared here anyway, and must stay in step with
|
|
11185
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11186
|
+
* to be able to see that this call carries a projection.
|
|
11187
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11188
|
+
*/
|
|
11189
|
+
columns: array(string()).readonly().optional()
|
|
11190
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11165
11191
|
namespace: string().optional(),
|
|
11166
11192
|
collection: string(),
|
|
11167
11193
|
record: SettingsRecordSchema
|
|
11168
|
-
}), _void(), {
|
|
11194
|
+
}), _void(), {
|
|
11195
|
+
kind: "mutation",
|
|
11196
|
+
auth: "admin"
|
|
11197
|
+
}), method(object({
|
|
11169
11198
|
namespace: string().optional(),
|
|
11170
11199
|
collection: string(),
|
|
11171
11200
|
id: string(),
|
|
11172
11201
|
data: record(string(), unknown())
|
|
11173
|
-
}), _void(), {
|
|
11202
|
+
}), _void(), {
|
|
11203
|
+
kind: "mutation",
|
|
11204
|
+
auth: "admin"
|
|
11205
|
+
}), method(object({
|
|
11174
11206
|
namespace: string().optional(),
|
|
11175
11207
|
collection: string(),
|
|
11176
11208
|
key: string()
|
|
11177
|
-
}), _void(), {
|
|
11209
|
+
}), _void(), {
|
|
11210
|
+
kind: "mutation",
|
|
11211
|
+
auth: "admin"
|
|
11212
|
+
}), method(object({
|
|
11178
11213
|
namespace: string().optional(),
|
|
11179
11214
|
collection: string(),
|
|
11180
11215
|
filter: MutationFilterSchema
|
|
11181
|
-
}), object({ deleted: number().int() }), {
|
|
11216
|
+
}), object({ deleted: number().int() }), {
|
|
11217
|
+
kind: "mutation",
|
|
11218
|
+
auth: "admin"
|
|
11219
|
+
}), method(object({
|
|
11182
11220
|
namespace: string().optional(),
|
|
11183
11221
|
collection: string(),
|
|
11184
11222
|
filter: MutationFilterSchema,
|
|
11185
11223
|
data: record(string(), unknown())
|
|
11186
|
-
}), object({ updated: number().int() }), {
|
|
11224
|
+
}), object({ updated: number().int() }), {
|
|
11225
|
+
kind: "mutation",
|
|
11226
|
+
auth: "admin"
|
|
11227
|
+
}), method(object({
|
|
11187
11228
|
namespace: string().optional(),
|
|
11188
11229
|
collection: string(),
|
|
11189
11230
|
filter: QueryFilterSchema.optional()
|
|
11190
|
-
}), number()), method(object({
|
|
11231
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11191
11232
|
namespace: string().optional(),
|
|
11192
11233
|
collection: string(),
|
|
11193
11234
|
field: string(),
|
|
@@ -11197,15 +11238,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11197
11238
|
}), array(object({
|
|
11198
11239
|
bucket: number().int(),
|
|
11199
11240
|
count: number().int()
|
|
11200
|
-
})).readonly()), method(object({
|
|
11241
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11201
11242
|
namespace: string().optional(),
|
|
11202
11243
|
collection: string()
|
|
11203
|
-
}), boolean()), method(object({
|
|
11244
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11204
11245
|
namespace: string().optional(),
|
|
11205
11246
|
collection: string(),
|
|
11206
11247
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11207
11248
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11208
|
-
}), _void(), {
|
|
11249
|
+
}), _void(), {
|
|
11250
|
+
kind: "mutation",
|
|
11251
|
+
auth: "admin"
|
|
11252
|
+
});
|
|
11209
11253
|
/**
|
|
11210
11254
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11211
11255
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12512,7 +12556,7 @@ method(object({
|
|
|
12512
12556
|
crop: _instanceof(Uint8Array),
|
|
12513
12557
|
width: number(),
|
|
12514
12558
|
height: number()
|
|
12515
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12559
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12516
12560
|
/**
|
|
12517
12561
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12518
12562
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12805,19 +12849,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12805
12849
|
runtime: ManagedRuntimeConfigSchema,
|
|
12806
12850
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12807
12851
|
timeoutMs: number().int().positive().optional()
|
|
12808
|
-
}), LlmGenerateResultSchema, {
|
|
12852
|
+
}), LlmGenerateResultSchema, {
|
|
12853
|
+
kind: "mutation",
|
|
12854
|
+
auth: "admin"
|
|
12855
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12809
12856
|
kind: "mutation",
|
|
12810
12857
|
auth: "admin"
|
|
12811
12858
|
}), method(object({}), _void(), {
|
|
12812
12859
|
kind: "mutation",
|
|
12813
12860
|
auth: "admin"
|
|
12814
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12861
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12815
12862
|
kind: "mutation",
|
|
12816
12863
|
auth: "admin"
|
|
12817
12864
|
}), method(object({ file: string() }), _void(), {
|
|
12818
12865
|
kind: "mutation",
|
|
12819
12866
|
auth: "admin"
|
|
12820
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12867
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12821
12868
|
/**
|
|
12822
12869
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12823
12870
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16328,7 +16375,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16328
16375
|
*/
|
|
16329
16376
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16330
16377
|
});
|
|
16331
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16378
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16332
16379
|
/**
|
|
16333
16380
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16334
16381
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17523,6 +17570,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17523
17570
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17524
17571
|
kind: "mutation",
|
|
17525
17572
|
auth: "admin"
|
|
17573
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17574
|
+
kind: "mutation",
|
|
17575
|
+
auth: "admin"
|
|
17576
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17577
|
+
kind: "query",
|
|
17578
|
+
auth: "admin"
|
|
17579
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17580
|
+
kind: "mutation",
|
|
17581
|
+
auth: "admin"
|
|
17526
17582
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17527
17583
|
kind: "query",
|
|
17528
17584
|
auth: "admin"
|
|
@@ -17677,6 +17733,11 @@ object({
|
|
|
17677
17733
|
"jpeg"
|
|
17678
17734
|
])
|
|
17679
17735
|
});
|
|
17736
|
+
/**
|
|
17737
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17738
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17739
|
+
* other process or execution group.
|
|
17740
|
+
*/
|
|
17680
17741
|
var FrameRefSchema = object({
|
|
17681
17742
|
registryId: string().min(1),
|
|
17682
17743
|
id: string().min(1),
|
|
@@ -19986,7 +20047,7 @@ method(object({
|
|
|
19986
20047
|
* linking rather than produce an eternal token.
|
|
19987
20048
|
*/
|
|
19988
20049
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
19989
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
20050
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
19990
20051
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
19991
20052
|
providerId: string().min(1),
|
|
19992
20053
|
displayName: string().min(1),
|
|
@@ -20081,10 +20142,13 @@ var EvictResultSchema = object({
|
|
|
20081
20142
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20082
20143
|
exhausted: boolean()
|
|
20083
20144
|
});
|
|
20084
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20145
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20085
20146
|
locationId: string(),
|
|
20086
20147
|
targetBytes: number().int().positive()
|
|
20087
|
-
}), EvictResultSchema, {
|
|
20148
|
+
}), EvictResultSchema, {
|
|
20149
|
+
kind: "mutation",
|
|
20150
|
+
auth: "admin"
|
|
20151
|
+
});
|
|
20088
20152
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20089
20153
|
kind: "mutation",
|
|
20090
20154
|
auth: "admin"
|
|
@@ -20144,26 +20208,50 @@ var ReadChunkInputSchema = object({
|
|
|
20144
20208
|
length: number()
|
|
20145
20209
|
});
|
|
20146
20210
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20147
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20211
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20148
20212
|
location: StorageLocationSchema,
|
|
20149
20213
|
relativePath: string()
|
|
20150
|
-
}), string()), method(object({
|
|
20214
|
+
}), string(), { auth: "admin" }), method(object({
|
|
20151
20215
|
location: StorageLocationSchema,
|
|
20152
20216
|
relativePath: string(),
|
|
20153
20217
|
data: _instanceof(Uint8Array)
|
|
20154
|
-
}), _void(), {
|
|
20218
|
+
}), _void(), {
|
|
20219
|
+
kind: "mutation",
|
|
20220
|
+
auth: "admin"
|
|
20221
|
+
}), method(object({
|
|
20155
20222
|
location: StorageLocationSchema,
|
|
20156
20223
|
relativePath: string()
|
|
20157
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20224
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20158
20225
|
location: StorageLocationSchema,
|
|
20159
20226
|
relativePath: string()
|
|
20160
|
-
}), boolean()), method(object({
|
|
20227
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20161
20228
|
location: StorageLocationSchema,
|
|
20162
20229
|
prefix: string().optional()
|
|
20163
|
-
}), array(string()).readonly()), method(object({
|
|
20230
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
20164
20231
|
location: StorageLocationSchema,
|
|
20165
20232
|
relativePath: string()
|
|
20166
|
-
}), _void(), {
|
|
20233
|
+
}), _void(), {
|
|
20234
|
+
kind: "mutation",
|
|
20235
|
+
auth: "admin"
|
|
20236
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20237
|
+
kind: "mutation",
|
|
20238
|
+
auth: "admin"
|
|
20239
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20240
|
+
kind: "mutation",
|
|
20241
|
+
auth: "admin"
|
|
20242
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20243
|
+
kind: "mutation",
|
|
20244
|
+
auth: "admin"
|
|
20245
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20246
|
+
kind: "mutation",
|
|
20247
|
+
auth: "admin"
|
|
20248
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20249
|
+
kind: "mutation",
|
|
20250
|
+
auth: "admin"
|
|
20251
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20252
|
+
kind: "mutation",
|
|
20253
|
+
auth: "admin"
|
|
20254
|
+
});
|
|
20167
20255
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20168
20256
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20169
20257
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20421,7 +20509,8 @@ method(object({
|
|
|
20421
20509
|
access: "create"
|
|
20422
20510
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20423
20511
|
kind: "mutation",
|
|
20424
|
-
access: "view"
|
|
20512
|
+
access: "view",
|
|
20513
|
+
auth: "admin"
|
|
20425
20514
|
}), method(object({
|
|
20426
20515
|
/** Required — the user the assertion belongs to (verified). */
|
|
20427
20516
|
userId: string(),
|
|
@@ -20429,10 +20518,12 @@ method(object({
|
|
|
20429
20518
|
response: record(string(), unknown())
|
|
20430
20519
|
}), object({ verified: boolean() }), {
|
|
20431
20520
|
kind: "mutation",
|
|
20432
|
-
access: "view"
|
|
20521
|
+
access: "view",
|
|
20522
|
+
auth: "admin"
|
|
20433
20523
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20434
20524
|
kind: "mutation",
|
|
20435
|
-
access: "view"
|
|
20525
|
+
access: "view",
|
|
20526
|
+
auth: "admin"
|
|
20436
20527
|
}), method(object({
|
|
20437
20528
|
/** AuthenticationResponseJSON from the browser. */
|
|
20438
20529
|
response: record(string(), unknown()) }), object({
|
|
@@ -20440,7 +20531,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20440
20531
|
userId: string().nullable()
|
|
20441
20532
|
}), {
|
|
20442
20533
|
kind: "mutation",
|
|
20443
|
-
access: "view"
|
|
20534
|
+
access: "view",
|
|
20535
|
+
auth: "admin"
|
|
20444
20536
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20445
20537
|
userId: string(),
|
|
20446
20538
|
credentialId: string()
|
|
@@ -20612,7 +20704,19 @@ var VectorStatsResultSchema = object({
|
|
|
20612
20704
|
/** False when the backend ranks approximately. */
|
|
20613
20705
|
exact: boolean()
|
|
20614
20706
|
});
|
|
20615
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20707
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20708
|
+
kind: "mutation",
|
|
20709
|
+
auth: "admin"
|
|
20710
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20711
|
+
kind: "mutation",
|
|
20712
|
+
auth: "admin"
|
|
20713
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20714
|
+
kind: "mutation",
|
|
20715
|
+
auth: "admin"
|
|
20716
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20717
|
+
kind: "mutation",
|
|
20718
|
+
auth: "admin"
|
|
20719
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20616
20720
|
var ClipSchema = object({
|
|
20617
20721
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20618
20722
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23073,7 +23177,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23073
23177
|
sizeBytes: number(),
|
|
23074
23178
|
timestamp: number()
|
|
23075
23179
|
});
|
|
23076
|
-
method(
|
|
23180
|
+
method(object({
|
|
23181
|
+
/**
|
|
23182
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23183
|
+
*
|
|
23184
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23185
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23186
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23187
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23188
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23189
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23190
|
+
*
|
|
23191
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23192
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23193
|
+
*
|
|
23194
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23195
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23196
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23197
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23198
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23199
|
+
*/
|
|
23200
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
23077
23201
|
kind: "mutation",
|
|
23078
23202
|
auth: "admin"
|
|
23079
23203
|
}), method(object({
|
|
@@ -25963,8 +26087,10 @@ var PlateInfoSchema = object({
|
|
|
25963
26087
|
keyFrameMediaKey: string().optional(),
|
|
25964
26088
|
base64: string().optional(),
|
|
25965
26089
|
/**
|
|
25966
|
-
* Same crop as a data-plane URL
|
|
25967
|
-
* never inlines JPEG; `listPlates`
|
|
26090
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26091
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26092
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26093
|
+
* left at its `true` default.
|
|
25968
26094
|
*/
|
|
25969
26095
|
cropUrl: string().optional()
|
|
25970
26096
|
});
|
|
@@ -25984,14 +26110,34 @@ var PlateClusterSchema = object({
|
|
|
25984
26110
|
});
|
|
25985
26111
|
method(object({
|
|
25986
26112
|
deviceId: number().int().optional(),
|
|
25987
|
-
limit: number().int().positive().optional()
|
|
26113
|
+
limit: number().int().positive().optional(),
|
|
26114
|
+
/**
|
|
26115
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26116
|
+
* behaviour, kept so no caller breaks.
|
|
26117
|
+
*
|
|
26118
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26119
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26120
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26121
|
+
* metadata without them — and the browser then caches the images.
|
|
26122
|
+
*
|
|
26123
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26124
|
+
* plates were the one gallery list left without it.
|
|
26125
|
+
*
|
|
26126
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26127
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26128
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26129
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26130
|
+
*/
|
|
26131
|
+
includeCrops: boolean().optional()
|
|
25988
26132
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
25989
26133
|
deviceId: number().int(),
|
|
25990
26134
|
trackId: string()
|
|
25991
26135
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
25992
26136
|
text: string().min(1),
|
|
25993
26137
|
maxDistance: number().int().min(0).optional(),
|
|
25994
|
-
limit: number().int().positive().optional()
|
|
26138
|
+
limit: number().int().positive().optional(),
|
|
26139
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26140
|
+
includeCrops: boolean().optional()
|
|
25995
26141
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
25996
26142
|
maxDistance: number().int().min(0).optional(),
|
|
25997
26143
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -26005,7 +26151,13 @@ method(object({
|
|
|
26005
26151
|
}), method(object({ plateId: string() }), _void(), {
|
|
26006
26152
|
kind: "mutation",
|
|
26007
26153
|
auth: "admin"
|
|
26008
|
-
}), method(
|
|
26154
|
+
}), method(object({
|
|
26155
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26156
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26157
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26158
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26159
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26160
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
26009
26161
|
kind: "mutation",
|
|
26010
26162
|
auth: "admin"
|
|
26011
26163
|
}), method(object({
|
|
@@ -33266,6 +33418,12 @@ Object.freeze({
|
|
|
33266
33418
|
addonId: null,
|
|
33267
33419
|
access: "create"
|
|
33268
33420
|
},
|
|
33421
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
33422
|
+
capName: "pipeline-analytics",
|
|
33423
|
+
capScope: "device",
|
|
33424
|
+
addonId: null,
|
|
33425
|
+
access: "create"
|
|
33426
|
+
},
|
|
33269
33427
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33270
33428
|
capName: "pipeline-analytics",
|
|
33271
33429
|
capScope: "device",
|
|
@@ -33440,6 +33598,12 @@ Object.freeze({
|
|
|
33440
33598
|
addonId: null,
|
|
33441
33599
|
access: "view"
|
|
33442
33600
|
},
|
|
33601
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
33602
|
+
capName: "pipeline-analytics",
|
|
33603
|
+
capScope: "device",
|
|
33604
|
+
addonId: null,
|
|
33605
|
+
access: "view"
|
|
33606
|
+
},
|
|
33443
33607
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
33444
33608
|
capName: "pipeline-analytics",
|
|
33445
33609
|
capScope: "device",
|
|
@@ -33518,6 +33682,12 @@ Object.freeze({
|
|
|
33518
33682
|
addonId: null,
|
|
33519
33683
|
access: "create"
|
|
33520
33684
|
},
|
|
33685
|
+
"pipelineAnalytics.relocateMedia": {
|
|
33686
|
+
capName: "pipeline-analytics",
|
|
33687
|
+
capScope: "device",
|
|
33688
|
+
addonId: null,
|
|
33689
|
+
access: "create"
|
|
33690
|
+
},
|
|
33521
33691
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
33522
33692
|
capName: "pipeline-analytics",
|
|
33523
33693
|
capScope: "device",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-wyze",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.33",
|
|
4
4
|
"description": "Wyze camera device-provider addon for CamStack — wraps the @apocaliss92/wyze-bridge-js P2P/DTLS client, feeding the stream-broker via the pull-rfc4571 lazy-publish path (a structural twin of addon-provider-reolink)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|