@camstack/addon-matter-broker 0.2.27 → 0.2.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +249 -79
- package/dist/addon.mjs +249 -79
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -6644,7 +6644,7 @@ function method(input, output, options) {
|
|
|
6644
6644
|
input,
|
|
6645
6645
|
output,
|
|
6646
6646
|
kind: options?.kind ?? "query",
|
|
6647
|
-
auth: options
|
|
6647
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6648
6648
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6649
6649
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6650
6650
|
timeoutMs: options?.timeoutMs
|
|
@@ -6668,7 +6668,7 @@ function event$1(data) {
|
|
|
6668
6668
|
}
|
|
6669
6669
|
var StaticDirOutputSchema$1 = object({ staticDir: string$2() });
|
|
6670
6670
|
var VersionOutputSchema$1 = object({ version: string$2() });
|
|
6671
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6671
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6672
6672
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6673
6673
|
DeviceType["Camera"] = "camera";
|
|
6674
6674
|
DeviceType["Hub"] = "hub";
|
|
@@ -6989,7 +6989,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
6989
6989
|
}({});
|
|
6990
6990
|
var StaticDirOutputSchema = object({ staticDir: string$2() });
|
|
6991
6991
|
var VersionOutputSchema = object({ version: string$2() });
|
|
6992
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
6992
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
6993
6993
|
/**
|
|
6994
6994
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
6995
6995
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7615,24 +7615,6 @@ var RecordingRetentionSchema = object({
|
|
|
7615
7615
|
maxSizeGb: number().min(0).optional()
|
|
7616
7616
|
});
|
|
7617
7617
|
/**
|
|
7618
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7619
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7620
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7621
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7622
|
-
*
|
|
7623
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7624
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7625
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7626
|
-
* written with.
|
|
7627
|
-
*/
|
|
7628
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7629
|
-
"minimal",
|
|
7630
|
-
"low",
|
|
7631
|
-
"standard",
|
|
7632
|
-
"high",
|
|
7633
|
-
"max"
|
|
7634
|
-
]);
|
|
7635
|
-
/**
|
|
7636
7618
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7637
7619
|
*
|
|
7638
7620
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7640,7 +7622,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7640
7622
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7641
7623
|
*
|
|
7642
7624
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7643
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7625
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7626
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7627
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7628
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7629
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7644
7630
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7645
7631
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7646
7632
|
*/
|
|
@@ -7663,14 +7649,7 @@ var RecordingConfigSchema = object({
|
|
|
7663
7649
|
* "off" is the absence of a covering band, never a band value.
|
|
7664
7650
|
*/
|
|
7665
7651
|
bands: array(RecordingBandSchema).default([]),
|
|
7666
|
-
retention: RecordingRetentionSchema.optional()
|
|
7667
|
-
/**
|
|
7668
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7669
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7670
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7671
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7672
|
-
*/
|
|
7673
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7652
|
+
retention: RecordingRetentionSchema.optional()
|
|
7674
7653
|
}).strict();
|
|
7675
7654
|
/**
|
|
7676
7655
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7746,10 +7725,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7746
7725
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7747
7726
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string$2().min(1) });
|
|
7748
7727
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string$2().min(1) });
|
|
7749
|
-
var
|
|
7728
|
+
var RelocateMediaInputSchema = object({
|
|
7750
7729
|
toLocationId: string$2(),
|
|
7751
7730
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7752
|
-
})
|
|
7731
|
+
});
|
|
7732
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string$2().min(1) });
|
|
7753
7733
|
/** The independently selectable logical storage classes. `recordings`
|
|
7754
7734
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7755
7735
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8044,7 +8024,26 @@ var LabelDefinitionSchema = object({
|
|
|
8044
8024
|
description: string$2().optional(),
|
|
8045
8025
|
icon: string$2().optional()
|
|
8046
8026
|
});
|
|
8047
|
-
|
|
8027
|
+
/**
|
|
8028
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8029
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8030
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8031
|
+
* detection pipeline executor actually routes.
|
|
8032
|
+
*
|
|
8033
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8034
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8035
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8036
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8037
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8038
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8039
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8040
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8041
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8042
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8043
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8044
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8045
|
+
*/
|
|
8046
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8048
8047
|
mapping: record(string$2(), _enum([
|
|
8049
8048
|
"person",
|
|
8050
8049
|
"vehicle",
|
|
@@ -8249,7 +8248,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8249
8248
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8250
8249
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8251
8250
|
*/
|
|
8252
|
-
classMap:
|
|
8251
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8253
8252
|
});
|
|
8254
8253
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8255
8254
|
format: literal("openvino"),
|
|
@@ -8279,7 +8278,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8279
8278
|
"segmentation"
|
|
8280
8279
|
]),
|
|
8281
8280
|
faceAlignment: boolean().optional(),
|
|
8282
|
-
classMap:
|
|
8281
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8283
8282
|
});
|
|
8284
8283
|
var ConvertResultSchema = object({
|
|
8285
8284
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9142,7 +9141,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9142
9141
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9143
9142
|
sectionLabel: string$2().optional()
|
|
9144
9143
|
});
|
|
9145
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9144
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9146
9145
|
var AddonHttpRouteSchema = object({
|
|
9147
9146
|
method: _enum([
|
|
9148
9147
|
"GET",
|
|
@@ -9377,7 +9376,7 @@ var WidgetMetadataSchema = object({
|
|
|
9377
9376
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9378
9377
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9379
9378
|
});
|
|
9380
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9379
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9381
9380
|
/**
|
|
9382
9381
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9383
9382
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11050,7 +11049,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11050
11049
|
stepId: string$2(),
|
|
11051
11050
|
entry: ModelCatalogEntrySchema
|
|
11052
11051
|
});
|
|
11053
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11052
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11054
11053
|
/**
|
|
11055
11054
|
* Query filter for settings-store collections.
|
|
11056
11055
|
*/
|
|
@@ -11137,7 +11136,8 @@ method(object({
|
|
|
11137
11136
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11138
11137
|
namespace: string$2().optional(),
|
|
11139
11138
|
collection: string$2(),
|
|
11140
|
-
filter: QueryFilterSchema.optional()
|
|
11139
|
+
filter: QueryFilterSchema.optional(),
|
|
11140
|
+
columns: array(string$2()).readonly().optional()
|
|
11141
11141
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11142
11142
|
namespace: string$2().optional(),
|
|
11143
11143
|
collection: string$2(),
|
|
@@ -11200,46 +11200,87 @@ var EngineInfoSchema = object({
|
|
|
11200
11200
|
kind: _enum(["relational", "vector"]),
|
|
11201
11201
|
displayName: string$2()
|
|
11202
11202
|
});
|
|
11203
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11203
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11204
11204
|
namespace: string$2().optional(),
|
|
11205
11205
|
collection: string$2(),
|
|
11206
11206
|
key: string$2()
|
|
11207
|
-
}), unknown()), method(object({
|
|
11207
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11208
11208
|
namespace: string$2().optional(),
|
|
11209
11209
|
collection: string$2(),
|
|
11210
11210
|
key: string$2(),
|
|
11211
11211
|
value: unknown()
|
|
11212
|
-
}), _void(), {
|
|
11212
|
+
}), _void(), {
|
|
11213
|
+
kind: "mutation",
|
|
11214
|
+
auth: "admin"
|
|
11215
|
+
}), method(object({
|
|
11213
11216
|
namespace: string$2().optional(),
|
|
11214
11217
|
collection: string$2(),
|
|
11215
|
-
filter: QueryFilterSchema.optional()
|
|
11216
|
-
|
|
11218
|
+
filter: QueryFilterSchema.optional(),
|
|
11219
|
+
/**
|
|
11220
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11221
|
+
*
|
|
11222
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11223
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11224
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11225
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11226
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11227
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11228
|
+
*
|
|
11229
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11230
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11231
|
+
* interface the engine destructures from. The field existed on both
|
|
11232
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11233
|
+
* registered provider against `InferProvider<cap>` —
|
|
11234
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11235
|
+
*
|
|
11236
|
+
* It is declared here anyway, and must stay in step with
|
|
11237
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11238
|
+
* to be able to see that this call carries a projection.
|
|
11239
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11240
|
+
*/
|
|
11241
|
+
columns: array(string$2()).readonly().optional()
|
|
11242
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11217
11243
|
namespace: string$2().optional(),
|
|
11218
11244
|
collection: string$2(),
|
|
11219
11245
|
record: SettingsRecordSchema
|
|
11220
|
-
}), _void(), {
|
|
11246
|
+
}), _void(), {
|
|
11247
|
+
kind: "mutation",
|
|
11248
|
+
auth: "admin"
|
|
11249
|
+
}), method(object({
|
|
11221
11250
|
namespace: string$2().optional(),
|
|
11222
11251
|
collection: string$2(),
|
|
11223
11252
|
id: string$2(),
|
|
11224
11253
|
data: record(string$2(), unknown())
|
|
11225
|
-
}), _void(), {
|
|
11254
|
+
}), _void(), {
|
|
11255
|
+
kind: "mutation",
|
|
11256
|
+
auth: "admin"
|
|
11257
|
+
}), method(object({
|
|
11226
11258
|
namespace: string$2().optional(),
|
|
11227
11259
|
collection: string$2(),
|
|
11228
11260
|
key: string$2()
|
|
11229
|
-
}), _void(), {
|
|
11261
|
+
}), _void(), {
|
|
11262
|
+
kind: "mutation",
|
|
11263
|
+
auth: "admin"
|
|
11264
|
+
}), method(object({
|
|
11230
11265
|
namespace: string$2().optional(),
|
|
11231
11266
|
collection: string$2(),
|
|
11232
11267
|
filter: MutationFilterSchema
|
|
11233
|
-
}), object({ deleted: number().int() }), {
|
|
11268
|
+
}), object({ deleted: number().int() }), {
|
|
11269
|
+
kind: "mutation",
|
|
11270
|
+
auth: "admin"
|
|
11271
|
+
}), method(object({
|
|
11234
11272
|
namespace: string$2().optional(),
|
|
11235
11273
|
collection: string$2(),
|
|
11236
11274
|
filter: MutationFilterSchema,
|
|
11237
11275
|
data: record(string$2(), unknown())
|
|
11238
|
-
}), object({ updated: number().int() }), {
|
|
11276
|
+
}), object({ updated: number().int() }), {
|
|
11277
|
+
kind: "mutation",
|
|
11278
|
+
auth: "admin"
|
|
11279
|
+
}), method(object({
|
|
11239
11280
|
namespace: string$2().optional(),
|
|
11240
11281
|
collection: string$2(),
|
|
11241
11282
|
filter: QueryFilterSchema.optional()
|
|
11242
|
-
}), number()), method(object({
|
|
11283
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11243
11284
|
namespace: string$2().optional(),
|
|
11244
11285
|
collection: string$2(),
|
|
11245
11286
|
field: string$2(),
|
|
@@ -11249,15 +11290,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11249
11290
|
}), array(object({
|
|
11250
11291
|
bucket: number().int(),
|
|
11251
11292
|
count: number().int()
|
|
11252
|
-
})).readonly()), method(object({
|
|
11293
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11253
11294
|
namespace: string$2().optional(),
|
|
11254
11295
|
collection: string$2()
|
|
11255
|
-
}), boolean()), method(object({
|
|
11296
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11256
11297
|
namespace: string$2().optional(),
|
|
11257
11298
|
collection: string$2(),
|
|
11258
11299
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11259
11300
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11260
|
-
}), _void(), {
|
|
11301
|
+
}), _void(), {
|
|
11302
|
+
kind: "mutation",
|
|
11303
|
+
auth: "admin"
|
|
11304
|
+
});
|
|
11261
11305
|
/**
|
|
11262
11306
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11263
11307
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12564,7 +12608,7 @@ method(object({
|
|
|
12564
12608
|
crop: _instanceof(Uint8Array),
|
|
12565
12609
|
width: number(),
|
|
12566
12610
|
height: number()
|
|
12567
|
-
}), EmbeddingResultSchema), method(object({ text: string$2() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12611
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string$2() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12568
12612
|
/**
|
|
12569
12613
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12570
12614
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12857,19 +12901,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12857
12901
|
runtime: ManagedRuntimeConfigSchema,
|
|
12858
12902
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12859
12903
|
timeoutMs: number().int().positive().optional()
|
|
12860
|
-
}), LlmGenerateResultSchema, {
|
|
12904
|
+
}), LlmGenerateResultSchema, {
|
|
12905
|
+
kind: "mutation",
|
|
12906
|
+
auth: "admin"
|
|
12907
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12861
12908
|
kind: "mutation",
|
|
12862
12909
|
auth: "admin"
|
|
12863
12910
|
}), method(object({}), _void(), {
|
|
12864
12911
|
kind: "mutation",
|
|
12865
12912
|
auth: "admin"
|
|
12866
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12913
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12867
12914
|
kind: "mutation",
|
|
12868
12915
|
auth: "admin"
|
|
12869
12916
|
}), method(object({ file: string$2() }), _void(), {
|
|
12870
12917
|
kind: "mutation",
|
|
12871
12918
|
auth: "admin"
|
|
12872
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12919
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12873
12920
|
/**
|
|
12874
12921
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12875
12922
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16380,7 +16427,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16380
16427
|
*/
|
|
16381
16428
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16382
16429
|
});
|
|
16383
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16430
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16384
16431
|
/**
|
|
16385
16432
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16386
16433
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17575,6 +17622,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17575
17622
|
}), method(object({ jobId: string$2() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string$2() }), object({ cancelled: boolean() }), {
|
|
17576
17623
|
kind: "mutation",
|
|
17577
17624
|
auth: "admin"
|
|
17625
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string$2() }), {
|
|
17626
|
+
kind: "mutation",
|
|
17627
|
+
auth: "admin"
|
|
17628
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17629
|
+
kind: "query",
|
|
17630
|
+
auth: "admin"
|
|
17631
|
+
}), method(object({ jobId: string$2() }), object({ cancelled: boolean() }), {
|
|
17632
|
+
kind: "mutation",
|
|
17633
|
+
auth: "admin"
|
|
17578
17634
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17579
17635
|
kind: "query",
|
|
17580
17636
|
auth: "admin"
|
|
@@ -17729,6 +17785,11 @@ object({
|
|
|
17729
17785
|
"jpeg"
|
|
17730
17786
|
])
|
|
17731
17787
|
});
|
|
17788
|
+
/**
|
|
17789
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17790
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17791
|
+
* other process or execution group.
|
|
17792
|
+
*/
|
|
17732
17793
|
var FrameRefSchema = object({
|
|
17733
17794
|
registryId: string$2().min(1),
|
|
17734
17795
|
id: string$2().min(1),
|
|
@@ -19934,7 +19995,7 @@ method(object({
|
|
|
19934
19995
|
* linking rather than produce an eternal token.
|
|
19935
19996
|
*/
|
|
19936
19997
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
19937
|
-
}), object({ token: string$2() })), method(object({ token: string$2() }), SsoBridgeClaimsSchema.nullable());
|
|
19998
|
+
}), object({ token: string$2() }), { auth: "admin" }), method(object({ token: string$2() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
19938
19999
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
19939
20000
|
providerId: string$2().min(1),
|
|
19940
20001
|
displayName: string$2().min(1),
|
|
@@ -20029,10 +20090,13 @@ var EvictResultSchema = object({
|
|
|
20029
20090
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20030
20091
|
exhausted: boolean()
|
|
20031
20092
|
});
|
|
20032
|
-
method(object({ locationId: string$2() }), EvictableUsageSchema), method(object({
|
|
20093
|
+
method(object({ locationId: string$2() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20033
20094
|
locationId: string$2(),
|
|
20034
20095
|
targetBytes: number().int().positive()
|
|
20035
|
-
}), EvictResultSchema, {
|
|
20096
|
+
}), EvictResultSchema, {
|
|
20097
|
+
kind: "mutation",
|
|
20098
|
+
auth: "admin"
|
|
20099
|
+
});
|
|
20036
20100
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string$2() }), {
|
|
20037
20101
|
kind: "mutation",
|
|
20038
20102
|
auth: "admin"
|
|
@@ -20092,26 +20156,50 @@ var ReadChunkInputSchema = object({
|
|
|
20092
20156
|
length: number()
|
|
20093
20157
|
});
|
|
20094
20158
|
var EndDownloadInputSchema = object({ downloadId: string$2() });
|
|
20095
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string$2(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20159
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string$2(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20096
20160
|
location: StorageLocationSchema,
|
|
20097
20161
|
relativePath: string$2()
|
|
20098
|
-
}), string$2()), method(object({
|
|
20162
|
+
}), string$2(), { auth: "admin" }), method(object({
|
|
20099
20163
|
location: StorageLocationSchema,
|
|
20100
20164
|
relativePath: string$2(),
|
|
20101
20165
|
data: _instanceof(Uint8Array)
|
|
20102
|
-
}), _void(), {
|
|
20166
|
+
}), _void(), {
|
|
20167
|
+
kind: "mutation",
|
|
20168
|
+
auth: "admin"
|
|
20169
|
+
}), method(object({
|
|
20103
20170
|
location: StorageLocationSchema,
|
|
20104
20171
|
relativePath: string$2()
|
|
20105
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20172
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20106
20173
|
location: StorageLocationSchema,
|
|
20107
20174
|
relativePath: string$2()
|
|
20108
|
-
}), boolean()), method(object({
|
|
20175
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20109
20176
|
location: StorageLocationSchema,
|
|
20110
20177
|
prefix: string$2().optional()
|
|
20111
|
-
}), array(string$2()).readonly()), method(object({
|
|
20178
|
+
}), array(string$2()).readonly(), { auth: "admin" }), method(object({
|
|
20112
20179
|
location: StorageLocationSchema,
|
|
20113
20180
|
relativePath: string$2()
|
|
20114
|
-
}), _void(), {
|
|
20181
|
+
}), _void(), {
|
|
20182
|
+
kind: "mutation",
|
|
20183
|
+
auth: "admin"
|
|
20184
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20185
|
+
kind: "mutation",
|
|
20186
|
+
auth: "admin"
|
|
20187
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20188
|
+
kind: "mutation",
|
|
20189
|
+
auth: "admin"
|
|
20190
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20191
|
+
kind: "mutation",
|
|
20192
|
+
auth: "admin"
|
|
20193
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20194
|
+
kind: "mutation",
|
|
20195
|
+
auth: "admin"
|
|
20196
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20197
|
+
kind: "mutation",
|
|
20198
|
+
auth: "admin"
|
|
20199
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20200
|
+
kind: "mutation",
|
|
20201
|
+
auth: "admin"
|
|
20202
|
+
});
|
|
20115
20203
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20116
20204
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20117
20205
|
var ProfileSettingsBagSchema = record(string$2(), unknown());
|
|
@@ -20369,7 +20457,8 @@ method(object({
|
|
|
20369
20457
|
access: "create"
|
|
20370
20458
|
}), method(object({ userId: string$2().optional() }), object({ optionsJSON: record(string$2(), unknown()) }), {
|
|
20371
20459
|
kind: "mutation",
|
|
20372
|
-
access: "view"
|
|
20460
|
+
access: "view",
|
|
20461
|
+
auth: "admin"
|
|
20373
20462
|
}), method(object({
|
|
20374
20463
|
/** Required — the user the assertion belongs to (verified). */
|
|
20375
20464
|
userId: string$2(),
|
|
@@ -20377,10 +20466,12 @@ method(object({
|
|
|
20377
20466
|
response: record(string$2(), unknown())
|
|
20378
20467
|
}), object({ verified: boolean() }), {
|
|
20379
20468
|
kind: "mutation",
|
|
20380
|
-
access: "view"
|
|
20469
|
+
access: "view",
|
|
20470
|
+
auth: "admin"
|
|
20381
20471
|
}), method(object({}), object({ optionsJSON: record(string$2(), unknown()) }), {
|
|
20382
20472
|
kind: "mutation",
|
|
20383
|
-
access: "view"
|
|
20473
|
+
access: "view",
|
|
20474
|
+
auth: "admin"
|
|
20384
20475
|
}), method(object({
|
|
20385
20476
|
/** AuthenticationResponseJSON from the browser. */
|
|
20386
20477
|
response: record(string$2(), unknown()) }), object({
|
|
@@ -20388,7 +20479,8 @@ response: record(string$2(), unknown()) }), object({
|
|
|
20388
20479
|
userId: string$2().nullable()
|
|
20389
20480
|
}), {
|
|
20390
20481
|
kind: "mutation",
|
|
20391
|
-
access: "view"
|
|
20482
|
+
access: "view",
|
|
20483
|
+
auth: "admin"
|
|
20392
20484
|
}), method(object({ userId: string$2() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20393
20485
|
userId: string$2(),
|
|
20394
20486
|
credentialId: string$2()
|
|
@@ -20560,7 +20652,19 @@ var VectorStatsResultSchema = object({
|
|
|
20560
20652
|
/** False when the backend ranks approximately. */
|
|
20561
20653
|
exact: boolean()
|
|
20562
20654
|
});
|
|
20563
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20655
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20656
|
+
kind: "mutation",
|
|
20657
|
+
auth: "admin"
|
|
20658
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20659
|
+
kind: "mutation",
|
|
20660
|
+
auth: "admin"
|
|
20661
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20662
|
+
kind: "mutation",
|
|
20663
|
+
auth: "admin"
|
|
20664
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20665
|
+
kind: "mutation",
|
|
20666
|
+
auth: "admin"
|
|
20667
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20564
20668
|
var ClipSchema = object({
|
|
20565
20669
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20566
20670
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23030,7 +23134,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23030
23134
|
sizeBytes: number(),
|
|
23031
23135
|
timestamp: number()
|
|
23032
23136
|
});
|
|
23033
|
-
method(
|
|
23137
|
+
method(object({
|
|
23138
|
+
/**
|
|
23139
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23140
|
+
*
|
|
23141
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23142
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23143
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23144
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23145
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23146
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23147
|
+
*
|
|
23148
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23149
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23150
|
+
*
|
|
23151
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23152
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23153
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23154
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23155
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23156
|
+
*/
|
|
23157
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string$2().min(1) }), IdentitySchema, {
|
|
23034
23158
|
kind: "mutation",
|
|
23035
23159
|
auth: "admin"
|
|
23036
23160
|
}), method(object({
|
|
@@ -25920,8 +26044,10 @@ var PlateInfoSchema = object({
|
|
|
25920
26044
|
keyFrameMediaKey: string$2().optional(),
|
|
25921
26045
|
base64: string$2().optional(),
|
|
25922
26046
|
/**
|
|
25923
|
-
* Same crop as a data-plane URL
|
|
25924
|
-
* never inlines JPEG; `listPlates`
|
|
26047
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26048
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26049
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26050
|
+
* left at its `true` default.
|
|
25925
26051
|
*/
|
|
25926
26052
|
cropUrl: string$2().optional()
|
|
25927
26053
|
});
|
|
@@ -25941,14 +26067,34 @@ var PlateClusterSchema = object({
|
|
|
25941
26067
|
});
|
|
25942
26068
|
method(object({
|
|
25943
26069
|
deviceId: number().int().optional(),
|
|
25944
|
-
limit: number().int().positive().optional()
|
|
26070
|
+
limit: number().int().positive().optional(),
|
|
26071
|
+
/**
|
|
26072
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26073
|
+
* behaviour, kept so no caller breaks.
|
|
26074
|
+
*
|
|
26075
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26076
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26077
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26078
|
+
* metadata without them — and the browser then caches the images.
|
|
26079
|
+
*
|
|
26080
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26081
|
+
* plates were the one gallery list left without it.
|
|
26082
|
+
*
|
|
26083
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26084
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26085
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26086
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26087
|
+
*/
|
|
26088
|
+
includeCrops: boolean().optional()
|
|
25945
26089
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
25946
26090
|
deviceId: number().int(),
|
|
25947
26091
|
trackId: string$2()
|
|
25948
26092
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string$2() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
25949
26093
|
text: string$2().min(1),
|
|
25950
26094
|
maxDistance: number().int().min(0).optional(),
|
|
25951
|
-
limit: number().int().positive().optional()
|
|
26095
|
+
limit: number().int().positive().optional(),
|
|
26096
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26097
|
+
includeCrops: boolean().optional()
|
|
25952
26098
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
25953
26099
|
maxDistance: number().int().min(0).optional(),
|
|
25954
26100
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -25962,7 +26108,13 @@ method(object({
|
|
|
25962
26108
|
}), method(object({ plateId: string$2() }), _void(), {
|
|
25963
26109
|
kind: "mutation",
|
|
25964
26110
|
auth: "admin"
|
|
25965
|
-
}), method(
|
|
26111
|
+
}), method(object({
|
|
26112
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26113
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26114
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26115
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26116
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26117
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string$2().min(1) }), VehicleSchema, {
|
|
25966
26118
|
kind: "mutation",
|
|
25967
26119
|
auth: "admin"
|
|
25968
26120
|
}), method(object({
|
|
@@ -33223,6 +33375,12 @@ Object.freeze({
|
|
|
33223
33375
|
addonId: null,
|
|
33224
33376
|
access: "create"
|
|
33225
33377
|
},
|
|
33378
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
33379
|
+
capName: "pipeline-analytics",
|
|
33380
|
+
capScope: "device",
|
|
33381
|
+
addonId: null,
|
|
33382
|
+
access: "create"
|
|
33383
|
+
},
|
|
33226
33384
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33227
33385
|
capName: "pipeline-analytics",
|
|
33228
33386
|
capScope: "device",
|
|
@@ -33397,6 +33555,12 @@ Object.freeze({
|
|
|
33397
33555
|
addonId: null,
|
|
33398
33556
|
access: "view"
|
|
33399
33557
|
},
|
|
33558
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
33559
|
+
capName: "pipeline-analytics",
|
|
33560
|
+
capScope: "device",
|
|
33561
|
+
addonId: null,
|
|
33562
|
+
access: "view"
|
|
33563
|
+
},
|
|
33400
33564
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
33401
33565
|
capName: "pipeline-analytics",
|
|
33402
33566
|
capScope: "device",
|
|
@@ -33475,6 +33639,12 @@ Object.freeze({
|
|
|
33475
33639
|
addonId: null,
|
|
33476
33640
|
access: "create"
|
|
33477
33641
|
},
|
|
33642
|
+
"pipelineAnalytics.relocateMedia": {
|
|
33643
|
+
capName: "pipeline-analytics",
|
|
33644
|
+
capScope: "device",
|
|
33645
|
+
addonId: null,
|
|
33646
|
+
access: "create"
|
|
33647
|
+
},
|
|
33478
33648
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
33479
33649
|
capName: "pipeline-analytics",
|
|
33480
33650
|
capScope: "device",
|
package/dist/addon.mjs
CHANGED
|
@@ -6642,7 +6642,7 @@ function method(input, output, options) {
|
|
|
6642
6642
|
input,
|
|
6643
6643
|
output,
|
|
6644
6644
|
kind: options?.kind ?? "query",
|
|
6645
|
-
auth: options
|
|
6645
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6646
6646
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6647
6647
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6648
6648
|
timeoutMs: options?.timeoutMs
|
|
@@ -6666,7 +6666,7 @@ function event$1(data) {
|
|
|
6666
6666
|
}
|
|
6667
6667
|
var StaticDirOutputSchema$1 = object({ staticDir: string$2() });
|
|
6668
6668
|
var VersionOutputSchema$1 = object({ version: string$2() });
|
|
6669
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6669
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6670
6670
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6671
6671
|
DeviceType["Camera"] = "camera";
|
|
6672
6672
|
DeviceType["Hub"] = "hub";
|
|
@@ -6987,7 +6987,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
6987
6987
|
}({});
|
|
6988
6988
|
var StaticDirOutputSchema = object({ staticDir: string$2() });
|
|
6989
6989
|
var VersionOutputSchema = object({ version: string$2() });
|
|
6990
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
6990
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
6991
6991
|
/**
|
|
6992
6992
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
6993
6993
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7613,24 +7613,6 @@ var RecordingRetentionSchema = object({
|
|
|
7613
7613
|
maxSizeGb: number().min(0).optional()
|
|
7614
7614
|
});
|
|
7615
7615
|
/**
|
|
7616
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7617
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7618
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7619
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7620
|
-
*
|
|
7621
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7622
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7623
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7624
|
-
* written with.
|
|
7625
|
-
*/
|
|
7626
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7627
|
-
"minimal",
|
|
7628
|
-
"low",
|
|
7629
|
-
"standard",
|
|
7630
|
-
"high",
|
|
7631
|
-
"max"
|
|
7632
|
-
]);
|
|
7633
|
-
/**
|
|
7634
7616
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7635
7617
|
*
|
|
7636
7618
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7638,7 +7620,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7638
7620
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7639
7621
|
*
|
|
7640
7622
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7641
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7623
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7624
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7625
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7626
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7627
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7642
7628
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7643
7629
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7644
7630
|
*/
|
|
@@ -7661,14 +7647,7 @@ var RecordingConfigSchema = object({
|
|
|
7661
7647
|
* "off" is the absence of a covering band, never a band value.
|
|
7662
7648
|
*/
|
|
7663
7649
|
bands: array(RecordingBandSchema).default([]),
|
|
7664
|
-
retention: RecordingRetentionSchema.optional()
|
|
7665
|
-
/**
|
|
7666
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7667
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7668
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7669
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7670
|
-
*/
|
|
7671
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7650
|
+
retention: RecordingRetentionSchema.optional()
|
|
7672
7651
|
}).strict();
|
|
7673
7652
|
/**
|
|
7674
7653
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7744,10 +7723,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7744
7723
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7745
7724
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string$2().min(1) });
|
|
7746
7725
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string$2().min(1) });
|
|
7747
|
-
var
|
|
7726
|
+
var RelocateMediaInputSchema = object({
|
|
7748
7727
|
toLocationId: string$2(),
|
|
7749
7728
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7750
|
-
})
|
|
7729
|
+
});
|
|
7730
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string$2().min(1) });
|
|
7751
7731
|
/** The independently selectable logical storage classes. `recordings`
|
|
7752
7732
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7753
7733
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8042,7 +8022,26 @@ var LabelDefinitionSchema = object({
|
|
|
8042
8022
|
description: string$2().optional(),
|
|
8043
8023
|
icon: string$2().optional()
|
|
8044
8024
|
});
|
|
8045
|
-
|
|
8025
|
+
/**
|
|
8026
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8027
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8028
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8029
|
+
* detection pipeline executor actually routes.
|
|
8030
|
+
*
|
|
8031
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8032
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8033
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8034
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8035
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8036
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8037
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8038
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8039
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8040
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8041
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8042
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8043
|
+
*/
|
|
8044
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8046
8045
|
mapping: record(string$2(), _enum([
|
|
8047
8046
|
"person",
|
|
8048
8047
|
"vehicle",
|
|
@@ -8247,7 +8246,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8247
8246
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8248
8247
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8249
8248
|
*/
|
|
8250
|
-
classMap:
|
|
8249
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8251
8250
|
});
|
|
8252
8251
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8253
8252
|
format: literal("openvino"),
|
|
@@ -8277,7 +8276,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8277
8276
|
"segmentation"
|
|
8278
8277
|
]),
|
|
8279
8278
|
faceAlignment: boolean().optional(),
|
|
8280
|
-
classMap:
|
|
8279
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8281
8280
|
});
|
|
8282
8281
|
var ConvertResultSchema = object({
|
|
8283
8282
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9140,7 +9139,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9140
9139
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9141
9140
|
sectionLabel: string$2().optional()
|
|
9142
9141
|
});
|
|
9143
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9142
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9144
9143
|
var AddonHttpRouteSchema = object({
|
|
9145
9144
|
method: _enum([
|
|
9146
9145
|
"GET",
|
|
@@ -9375,7 +9374,7 @@ var WidgetMetadataSchema = object({
|
|
|
9375
9374
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9376
9375
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9377
9376
|
});
|
|
9378
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9377
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9379
9378
|
/**
|
|
9380
9379
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9381
9380
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11048,7 +11047,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11048
11047
|
stepId: string$2(),
|
|
11049
11048
|
entry: ModelCatalogEntrySchema
|
|
11050
11049
|
});
|
|
11051
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11050
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11052
11051
|
/**
|
|
11053
11052
|
* Query filter for settings-store collections.
|
|
11054
11053
|
*/
|
|
@@ -11135,7 +11134,8 @@ method(object({
|
|
|
11135
11134
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11136
11135
|
namespace: string$2().optional(),
|
|
11137
11136
|
collection: string$2(),
|
|
11138
|
-
filter: QueryFilterSchema.optional()
|
|
11137
|
+
filter: QueryFilterSchema.optional(),
|
|
11138
|
+
columns: array(string$2()).readonly().optional()
|
|
11139
11139
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11140
11140
|
namespace: string$2().optional(),
|
|
11141
11141
|
collection: string$2(),
|
|
@@ -11198,46 +11198,87 @@ var EngineInfoSchema = object({
|
|
|
11198
11198
|
kind: _enum(["relational", "vector"]),
|
|
11199
11199
|
displayName: string$2()
|
|
11200
11200
|
});
|
|
11201
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11201
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11202
11202
|
namespace: string$2().optional(),
|
|
11203
11203
|
collection: string$2(),
|
|
11204
11204
|
key: string$2()
|
|
11205
|
-
}), unknown()), method(object({
|
|
11205
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11206
11206
|
namespace: string$2().optional(),
|
|
11207
11207
|
collection: string$2(),
|
|
11208
11208
|
key: string$2(),
|
|
11209
11209
|
value: unknown()
|
|
11210
|
-
}), _void(), {
|
|
11210
|
+
}), _void(), {
|
|
11211
|
+
kind: "mutation",
|
|
11212
|
+
auth: "admin"
|
|
11213
|
+
}), method(object({
|
|
11211
11214
|
namespace: string$2().optional(),
|
|
11212
11215
|
collection: string$2(),
|
|
11213
|
-
filter: QueryFilterSchema.optional()
|
|
11214
|
-
|
|
11216
|
+
filter: QueryFilterSchema.optional(),
|
|
11217
|
+
/**
|
|
11218
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11219
|
+
*
|
|
11220
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11221
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11222
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11223
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11224
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11225
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11226
|
+
*
|
|
11227
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11228
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11229
|
+
* interface the engine destructures from. The field existed on both
|
|
11230
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11231
|
+
* registered provider against `InferProvider<cap>` —
|
|
11232
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11233
|
+
*
|
|
11234
|
+
* It is declared here anyway, and must stay in step with
|
|
11235
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11236
|
+
* to be able to see that this call carries a projection.
|
|
11237
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11238
|
+
*/
|
|
11239
|
+
columns: array(string$2()).readonly().optional()
|
|
11240
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11215
11241
|
namespace: string$2().optional(),
|
|
11216
11242
|
collection: string$2(),
|
|
11217
11243
|
record: SettingsRecordSchema
|
|
11218
|
-
}), _void(), {
|
|
11244
|
+
}), _void(), {
|
|
11245
|
+
kind: "mutation",
|
|
11246
|
+
auth: "admin"
|
|
11247
|
+
}), method(object({
|
|
11219
11248
|
namespace: string$2().optional(),
|
|
11220
11249
|
collection: string$2(),
|
|
11221
11250
|
id: string$2(),
|
|
11222
11251
|
data: record(string$2(), unknown())
|
|
11223
|
-
}), _void(), {
|
|
11252
|
+
}), _void(), {
|
|
11253
|
+
kind: "mutation",
|
|
11254
|
+
auth: "admin"
|
|
11255
|
+
}), method(object({
|
|
11224
11256
|
namespace: string$2().optional(),
|
|
11225
11257
|
collection: string$2(),
|
|
11226
11258
|
key: string$2()
|
|
11227
|
-
}), _void(), {
|
|
11259
|
+
}), _void(), {
|
|
11260
|
+
kind: "mutation",
|
|
11261
|
+
auth: "admin"
|
|
11262
|
+
}), method(object({
|
|
11228
11263
|
namespace: string$2().optional(),
|
|
11229
11264
|
collection: string$2(),
|
|
11230
11265
|
filter: MutationFilterSchema
|
|
11231
|
-
}), object({ deleted: number().int() }), {
|
|
11266
|
+
}), object({ deleted: number().int() }), {
|
|
11267
|
+
kind: "mutation",
|
|
11268
|
+
auth: "admin"
|
|
11269
|
+
}), method(object({
|
|
11232
11270
|
namespace: string$2().optional(),
|
|
11233
11271
|
collection: string$2(),
|
|
11234
11272
|
filter: MutationFilterSchema,
|
|
11235
11273
|
data: record(string$2(), unknown())
|
|
11236
|
-
}), object({ updated: number().int() }), {
|
|
11274
|
+
}), object({ updated: number().int() }), {
|
|
11275
|
+
kind: "mutation",
|
|
11276
|
+
auth: "admin"
|
|
11277
|
+
}), method(object({
|
|
11237
11278
|
namespace: string$2().optional(),
|
|
11238
11279
|
collection: string$2(),
|
|
11239
11280
|
filter: QueryFilterSchema.optional()
|
|
11240
|
-
}), number()), method(object({
|
|
11281
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11241
11282
|
namespace: string$2().optional(),
|
|
11242
11283
|
collection: string$2(),
|
|
11243
11284
|
field: string$2(),
|
|
@@ -11247,15 +11288,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11247
11288
|
}), array(object({
|
|
11248
11289
|
bucket: number().int(),
|
|
11249
11290
|
count: number().int()
|
|
11250
|
-
})).readonly()), method(object({
|
|
11291
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11251
11292
|
namespace: string$2().optional(),
|
|
11252
11293
|
collection: string$2()
|
|
11253
|
-
}), boolean()), method(object({
|
|
11294
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11254
11295
|
namespace: string$2().optional(),
|
|
11255
11296
|
collection: string$2(),
|
|
11256
11297
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11257
11298
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11258
|
-
}), _void(), {
|
|
11299
|
+
}), _void(), {
|
|
11300
|
+
kind: "mutation",
|
|
11301
|
+
auth: "admin"
|
|
11302
|
+
});
|
|
11259
11303
|
/**
|
|
11260
11304
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11261
11305
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12562,7 +12606,7 @@ method(object({
|
|
|
12562
12606
|
crop: _instanceof(Uint8Array),
|
|
12563
12607
|
width: number(),
|
|
12564
12608
|
height: number()
|
|
12565
|
-
}), EmbeddingResultSchema), method(object({ text: string$2() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12609
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string$2() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12566
12610
|
/**
|
|
12567
12611
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12568
12612
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12855,19 +12899,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12855
12899
|
runtime: ManagedRuntimeConfigSchema,
|
|
12856
12900
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12857
12901
|
timeoutMs: number().int().positive().optional()
|
|
12858
|
-
}), LlmGenerateResultSchema, {
|
|
12902
|
+
}), LlmGenerateResultSchema, {
|
|
12903
|
+
kind: "mutation",
|
|
12904
|
+
auth: "admin"
|
|
12905
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12859
12906
|
kind: "mutation",
|
|
12860
12907
|
auth: "admin"
|
|
12861
12908
|
}), method(object({}), _void(), {
|
|
12862
12909
|
kind: "mutation",
|
|
12863
12910
|
auth: "admin"
|
|
12864
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12911
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12865
12912
|
kind: "mutation",
|
|
12866
12913
|
auth: "admin"
|
|
12867
12914
|
}), method(object({ file: string$2() }), _void(), {
|
|
12868
12915
|
kind: "mutation",
|
|
12869
12916
|
auth: "admin"
|
|
12870
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12917
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12871
12918
|
/**
|
|
12872
12919
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12873
12920
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16378,7 +16425,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16378
16425
|
*/
|
|
16379
16426
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16380
16427
|
});
|
|
16381
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16428
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16382
16429
|
/**
|
|
16383
16430
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16384
16431
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17573,6 +17620,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17573
17620
|
}), method(object({ jobId: string$2() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string$2() }), object({ cancelled: boolean() }), {
|
|
17574
17621
|
kind: "mutation",
|
|
17575
17622
|
auth: "admin"
|
|
17623
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string$2() }), {
|
|
17624
|
+
kind: "mutation",
|
|
17625
|
+
auth: "admin"
|
|
17626
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17627
|
+
kind: "query",
|
|
17628
|
+
auth: "admin"
|
|
17629
|
+
}), method(object({ jobId: string$2() }), object({ cancelled: boolean() }), {
|
|
17630
|
+
kind: "mutation",
|
|
17631
|
+
auth: "admin"
|
|
17576
17632
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17577
17633
|
kind: "query",
|
|
17578
17634
|
auth: "admin"
|
|
@@ -17727,6 +17783,11 @@ object({
|
|
|
17727
17783
|
"jpeg"
|
|
17728
17784
|
])
|
|
17729
17785
|
});
|
|
17786
|
+
/**
|
|
17787
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17788
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17789
|
+
* other process or execution group.
|
|
17790
|
+
*/
|
|
17730
17791
|
var FrameRefSchema = object({
|
|
17731
17792
|
registryId: string$2().min(1),
|
|
17732
17793
|
id: string$2().min(1),
|
|
@@ -19932,7 +19993,7 @@ method(object({
|
|
|
19932
19993
|
* linking rather than produce an eternal token.
|
|
19933
19994
|
*/
|
|
19934
19995
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
19935
|
-
}), object({ token: string$2() })), method(object({ token: string$2() }), SsoBridgeClaimsSchema.nullable());
|
|
19996
|
+
}), object({ token: string$2() }), { auth: "admin" }), method(object({ token: string$2() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
19936
19997
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
19937
19998
|
providerId: string$2().min(1),
|
|
19938
19999
|
displayName: string$2().min(1),
|
|
@@ -20027,10 +20088,13 @@ var EvictResultSchema = object({
|
|
|
20027
20088
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20028
20089
|
exhausted: boolean()
|
|
20029
20090
|
});
|
|
20030
|
-
method(object({ locationId: string$2() }), EvictableUsageSchema), method(object({
|
|
20091
|
+
method(object({ locationId: string$2() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20031
20092
|
locationId: string$2(),
|
|
20032
20093
|
targetBytes: number().int().positive()
|
|
20033
|
-
}), EvictResultSchema, {
|
|
20094
|
+
}), EvictResultSchema, {
|
|
20095
|
+
kind: "mutation",
|
|
20096
|
+
auth: "admin"
|
|
20097
|
+
});
|
|
20034
20098
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string$2() }), {
|
|
20035
20099
|
kind: "mutation",
|
|
20036
20100
|
auth: "admin"
|
|
@@ -20090,26 +20154,50 @@ var ReadChunkInputSchema = object({
|
|
|
20090
20154
|
length: number()
|
|
20091
20155
|
});
|
|
20092
20156
|
var EndDownloadInputSchema = object({ downloadId: string$2() });
|
|
20093
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string$2(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20157
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string$2(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20094
20158
|
location: StorageLocationSchema,
|
|
20095
20159
|
relativePath: string$2()
|
|
20096
|
-
}), string$2()), method(object({
|
|
20160
|
+
}), string$2(), { auth: "admin" }), method(object({
|
|
20097
20161
|
location: StorageLocationSchema,
|
|
20098
20162
|
relativePath: string$2(),
|
|
20099
20163
|
data: _instanceof(Uint8Array)
|
|
20100
|
-
}), _void(), {
|
|
20164
|
+
}), _void(), {
|
|
20165
|
+
kind: "mutation",
|
|
20166
|
+
auth: "admin"
|
|
20167
|
+
}), method(object({
|
|
20101
20168
|
location: StorageLocationSchema,
|
|
20102
20169
|
relativePath: string$2()
|
|
20103
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20170
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20104
20171
|
location: StorageLocationSchema,
|
|
20105
20172
|
relativePath: string$2()
|
|
20106
|
-
}), boolean()), method(object({
|
|
20173
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20107
20174
|
location: StorageLocationSchema,
|
|
20108
20175
|
prefix: string$2().optional()
|
|
20109
|
-
}), array(string$2()).readonly()), method(object({
|
|
20176
|
+
}), array(string$2()).readonly(), { auth: "admin" }), method(object({
|
|
20110
20177
|
location: StorageLocationSchema,
|
|
20111
20178
|
relativePath: string$2()
|
|
20112
|
-
}), _void(), {
|
|
20179
|
+
}), _void(), {
|
|
20180
|
+
kind: "mutation",
|
|
20181
|
+
auth: "admin"
|
|
20182
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20183
|
+
kind: "mutation",
|
|
20184
|
+
auth: "admin"
|
|
20185
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20186
|
+
kind: "mutation",
|
|
20187
|
+
auth: "admin"
|
|
20188
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20189
|
+
kind: "mutation",
|
|
20190
|
+
auth: "admin"
|
|
20191
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20192
|
+
kind: "mutation",
|
|
20193
|
+
auth: "admin"
|
|
20194
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20195
|
+
kind: "mutation",
|
|
20196
|
+
auth: "admin"
|
|
20197
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20198
|
+
kind: "mutation",
|
|
20199
|
+
auth: "admin"
|
|
20200
|
+
});
|
|
20113
20201
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20114
20202
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20115
20203
|
var ProfileSettingsBagSchema = record(string$2(), unknown());
|
|
@@ -20367,7 +20455,8 @@ method(object({
|
|
|
20367
20455
|
access: "create"
|
|
20368
20456
|
}), method(object({ userId: string$2().optional() }), object({ optionsJSON: record(string$2(), unknown()) }), {
|
|
20369
20457
|
kind: "mutation",
|
|
20370
|
-
access: "view"
|
|
20458
|
+
access: "view",
|
|
20459
|
+
auth: "admin"
|
|
20371
20460
|
}), method(object({
|
|
20372
20461
|
/** Required — the user the assertion belongs to (verified). */
|
|
20373
20462
|
userId: string$2(),
|
|
@@ -20375,10 +20464,12 @@ method(object({
|
|
|
20375
20464
|
response: record(string$2(), unknown())
|
|
20376
20465
|
}), object({ verified: boolean() }), {
|
|
20377
20466
|
kind: "mutation",
|
|
20378
|
-
access: "view"
|
|
20467
|
+
access: "view",
|
|
20468
|
+
auth: "admin"
|
|
20379
20469
|
}), method(object({}), object({ optionsJSON: record(string$2(), unknown()) }), {
|
|
20380
20470
|
kind: "mutation",
|
|
20381
|
-
access: "view"
|
|
20471
|
+
access: "view",
|
|
20472
|
+
auth: "admin"
|
|
20382
20473
|
}), method(object({
|
|
20383
20474
|
/** AuthenticationResponseJSON from the browser. */
|
|
20384
20475
|
response: record(string$2(), unknown()) }), object({
|
|
@@ -20386,7 +20477,8 @@ response: record(string$2(), unknown()) }), object({
|
|
|
20386
20477
|
userId: string$2().nullable()
|
|
20387
20478
|
}), {
|
|
20388
20479
|
kind: "mutation",
|
|
20389
|
-
access: "view"
|
|
20480
|
+
access: "view",
|
|
20481
|
+
auth: "admin"
|
|
20390
20482
|
}), method(object({ userId: string$2() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20391
20483
|
userId: string$2(),
|
|
20392
20484
|
credentialId: string$2()
|
|
@@ -20558,7 +20650,19 @@ var VectorStatsResultSchema = object({
|
|
|
20558
20650
|
/** False when the backend ranks approximately. */
|
|
20559
20651
|
exact: boolean()
|
|
20560
20652
|
});
|
|
20561
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20653
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20654
|
+
kind: "mutation",
|
|
20655
|
+
auth: "admin"
|
|
20656
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20657
|
+
kind: "mutation",
|
|
20658
|
+
auth: "admin"
|
|
20659
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20660
|
+
kind: "mutation",
|
|
20661
|
+
auth: "admin"
|
|
20662
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20663
|
+
kind: "mutation",
|
|
20664
|
+
auth: "admin"
|
|
20665
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20562
20666
|
var ClipSchema = object({
|
|
20563
20667
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20564
20668
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23028,7 +23132,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23028
23132
|
sizeBytes: number(),
|
|
23029
23133
|
timestamp: number()
|
|
23030
23134
|
});
|
|
23031
|
-
method(
|
|
23135
|
+
method(object({
|
|
23136
|
+
/**
|
|
23137
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23138
|
+
*
|
|
23139
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23140
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23141
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23142
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23143
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23144
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23145
|
+
*
|
|
23146
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23147
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23148
|
+
*
|
|
23149
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23150
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23151
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23152
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23153
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23154
|
+
*/
|
|
23155
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string$2().min(1) }), IdentitySchema, {
|
|
23032
23156
|
kind: "mutation",
|
|
23033
23157
|
auth: "admin"
|
|
23034
23158
|
}), method(object({
|
|
@@ -25918,8 +26042,10 @@ var PlateInfoSchema = object({
|
|
|
25918
26042
|
keyFrameMediaKey: string$2().optional(),
|
|
25919
26043
|
base64: string$2().optional(),
|
|
25920
26044
|
/**
|
|
25921
|
-
* Same crop as a data-plane URL
|
|
25922
|
-
* never inlines JPEG; `listPlates`
|
|
26045
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26046
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26047
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26048
|
+
* left at its `true` default.
|
|
25923
26049
|
*/
|
|
25924
26050
|
cropUrl: string$2().optional()
|
|
25925
26051
|
});
|
|
@@ -25939,14 +26065,34 @@ var PlateClusterSchema = object({
|
|
|
25939
26065
|
});
|
|
25940
26066
|
method(object({
|
|
25941
26067
|
deviceId: number().int().optional(),
|
|
25942
|
-
limit: number().int().positive().optional()
|
|
26068
|
+
limit: number().int().positive().optional(),
|
|
26069
|
+
/**
|
|
26070
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26071
|
+
* behaviour, kept so no caller breaks.
|
|
26072
|
+
*
|
|
26073
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26074
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26075
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26076
|
+
* metadata without them — and the browser then caches the images.
|
|
26077
|
+
*
|
|
26078
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26079
|
+
* plates were the one gallery list left without it.
|
|
26080
|
+
*
|
|
26081
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26082
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26083
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26084
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26085
|
+
*/
|
|
26086
|
+
includeCrops: boolean().optional()
|
|
25943
26087
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
25944
26088
|
deviceId: number().int(),
|
|
25945
26089
|
trackId: string$2()
|
|
25946
26090
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string$2() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
25947
26091
|
text: string$2().min(1),
|
|
25948
26092
|
maxDistance: number().int().min(0).optional(),
|
|
25949
|
-
limit: number().int().positive().optional()
|
|
26093
|
+
limit: number().int().positive().optional(),
|
|
26094
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26095
|
+
includeCrops: boolean().optional()
|
|
25950
26096
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
25951
26097
|
maxDistance: number().int().min(0).optional(),
|
|
25952
26098
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -25960,7 +26106,13 @@ method(object({
|
|
|
25960
26106
|
}), method(object({ plateId: string$2() }), _void(), {
|
|
25961
26107
|
kind: "mutation",
|
|
25962
26108
|
auth: "admin"
|
|
25963
|
-
}), method(
|
|
26109
|
+
}), method(object({
|
|
26110
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26111
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26112
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26113
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26114
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26115
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string$2().min(1) }), VehicleSchema, {
|
|
25964
26116
|
kind: "mutation",
|
|
25965
26117
|
auth: "admin"
|
|
25966
26118
|
}), method(object({
|
|
@@ -33221,6 +33373,12 @@ Object.freeze({
|
|
|
33221
33373
|
addonId: null,
|
|
33222
33374
|
access: "create"
|
|
33223
33375
|
},
|
|
33376
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
33377
|
+
capName: "pipeline-analytics",
|
|
33378
|
+
capScope: "device",
|
|
33379
|
+
addonId: null,
|
|
33380
|
+
access: "create"
|
|
33381
|
+
},
|
|
33224
33382
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33225
33383
|
capName: "pipeline-analytics",
|
|
33226
33384
|
capScope: "device",
|
|
@@ -33395,6 +33553,12 @@ Object.freeze({
|
|
|
33395
33553
|
addonId: null,
|
|
33396
33554
|
access: "view"
|
|
33397
33555
|
},
|
|
33556
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
33557
|
+
capName: "pipeline-analytics",
|
|
33558
|
+
capScope: "device",
|
|
33559
|
+
addonId: null,
|
|
33560
|
+
access: "view"
|
|
33561
|
+
},
|
|
33398
33562
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
33399
33563
|
capName: "pipeline-analytics",
|
|
33400
33564
|
capScope: "device",
|
|
@@ -33473,6 +33637,12 @@ Object.freeze({
|
|
|
33473
33637
|
addonId: null,
|
|
33474
33638
|
access: "create"
|
|
33475
33639
|
},
|
|
33640
|
+
"pipelineAnalytics.relocateMedia": {
|
|
33641
|
+
capName: "pipeline-analytics",
|
|
33642
|
+
capScope: "device",
|
|
33643
|
+
addonId: null,
|
|
33644
|
+
access: "create"
|
|
33645
|
+
},
|
|
33476
33646
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
33477
33647
|
capName: "pipeline-analytics",
|
|
33478
33648
|
capScope: "device",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-matter-broker",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.28",
|
|
4
4
|
"description": "Matter broker addon for CamStack — owns a Matter fabric (commissioning + the long-lived controller) via the matter.js controller and brokers commissioned Matter nodes into CamStack",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|