@camstack/addon-mqtt-broker 1.2.28 → 1.2.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mqtt-broker.addon.js +249 -79
- package/dist/mqtt-broker.addon.mjs +249 -79
- package/package.json +1 -1
|
@@ -6675,7 +6675,7 @@ function method(input, output, options) {
|
|
|
6675
6675
|
input,
|
|
6676
6676
|
output,
|
|
6677
6677
|
kind: options?.kind ?? "query",
|
|
6678
|
-
auth: options
|
|
6678
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6679
6679
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6680
6680
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6681
6681
|
timeoutMs: options?.timeoutMs
|
|
@@ -6695,7 +6695,7 @@ function systemMethod(input, output, options) {
|
|
|
6695
6695
|
}
|
|
6696
6696
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6697
6697
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6698
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6698
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6699
6699
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6700
6700
|
DeviceType["Camera"] = "camera";
|
|
6701
6701
|
DeviceType["Hub"] = "hub";
|
|
@@ -7016,7 +7016,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
7016
7016
|
}({});
|
|
7017
7017
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
7018
7018
|
var VersionOutputSchema = object({ version: string() });
|
|
7019
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
7019
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
7020
7020
|
/**
|
|
7021
7021
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
7022
7022
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7630,24 +7630,6 @@ var RecordingRetentionSchema = object({
|
|
|
7630
7630
|
maxSizeGb: number().min(0).optional()
|
|
7631
7631
|
});
|
|
7632
7632
|
/**
|
|
7633
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7634
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7635
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7636
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7637
|
-
*
|
|
7638
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7639
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7640
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7641
|
-
* written with.
|
|
7642
|
-
*/
|
|
7643
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7644
|
-
"minimal",
|
|
7645
|
-
"low",
|
|
7646
|
-
"standard",
|
|
7647
|
-
"high",
|
|
7648
|
-
"max"
|
|
7649
|
-
]);
|
|
7650
|
-
/**
|
|
7651
7633
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7652
7634
|
*
|
|
7653
7635
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7655,7 +7637,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7655
7637
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7656
7638
|
*
|
|
7657
7639
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7658
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7640
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7641
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7642
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7643
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7644
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7659
7645
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7660
7646
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7661
7647
|
*/
|
|
@@ -7678,14 +7664,7 @@ var RecordingConfigSchema = object({
|
|
|
7678
7664
|
* "off" is the absence of a covering band, never a band value.
|
|
7679
7665
|
*/
|
|
7680
7666
|
bands: array(RecordingBandSchema).default([]),
|
|
7681
|
-
retention: RecordingRetentionSchema.optional()
|
|
7682
|
-
/**
|
|
7683
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7684
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7685
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7686
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7687
|
-
*/
|
|
7688
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7667
|
+
retention: RecordingRetentionSchema.optional()
|
|
7689
7668
|
}).strict();
|
|
7690
7669
|
/**
|
|
7691
7670
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7761,10 +7740,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7761
7740
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7762
7741
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7763
7742
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7764
|
-
var
|
|
7743
|
+
var RelocateMediaInputSchema = object({
|
|
7765
7744
|
toLocationId: string(),
|
|
7766
7745
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7767
|
-
})
|
|
7746
|
+
});
|
|
7747
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7768
7748
|
/** The independently selectable logical storage classes. `recordings`
|
|
7769
7749
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7770
7750
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8059,7 +8039,26 @@ var LabelDefinitionSchema = object({
|
|
|
8059
8039
|
description: string().optional(),
|
|
8060
8040
|
icon: string().optional()
|
|
8061
8041
|
});
|
|
8062
|
-
|
|
8042
|
+
/**
|
|
8043
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8044
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8045
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8046
|
+
* detection pipeline executor actually routes.
|
|
8047
|
+
*
|
|
8048
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8049
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8050
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8051
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8052
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8053
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8054
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8055
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8056
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8057
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8058
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8059
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8060
|
+
*/
|
|
8061
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8063
8062
|
mapping: record(string(), _enum([
|
|
8064
8063
|
"person",
|
|
8065
8064
|
"vehicle",
|
|
@@ -8264,7 +8263,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8264
8263
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8265
8264
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8266
8265
|
*/
|
|
8267
|
-
classMap:
|
|
8266
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8268
8267
|
});
|
|
8269
8268
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8270
8269
|
format: literal("openvino"),
|
|
@@ -8294,7 +8293,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8294
8293
|
"segmentation"
|
|
8295
8294
|
]),
|
|
8296
8295
|
faceAlignment: boolean().optional(),
|
|
8297
|
-
classMap:
|
|
8296
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8298
8297
|
});
|
|
8299
8298
|
var ConvertResultSchema = object({
|
|
8300
8299
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9157,7 +9156,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9157
9156
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9158
9157
|
sectionLabel: string().optional()
|
|
9159
9158
|
});
|
|
9160
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9159
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9161
9160
|
var AddonHttpRouteSchema = object({
|
|
9162
9161
|
method: _enum([
|
|
9163
9162
|
"GET",
|
|
@@ -9392,7 +9391,7 @@ var WidgetMetadataSchema = object({
|
|
|
9392
9391
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9393
9392
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9394
9393
|
});
|
|
9395
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9394
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9396
9395
|
/**
|
|
9397
9396
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9398
9397
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -10963,7 +10962,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
10963
10962
|
stepId: string(),
|
|
10964
10963
|
entry: ModelCatalogEntrySchema
|
|
10965
10964
|
});
|
|
10966
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
10965
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
10967
10966
|
/**
|
|
10968
10967
|
* Query filter for settings-store collections.
|
|
10969
10968
|
*/
|
|
@@ -11050,7 +11049,8 @@ method(object({
|
|
|
11050
11049
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11051
11050
|
namespace: string().optional(),
|
|
11052
11051
|
collection: string(),
|
|
11053
|
-
filter: QueryFilterSchema.optional()
|
|
11052
|
+
filter: QueryFilterSchema.optional(),
|
|
11053
|
+
columns: array(string()).readonly().optional()
|
|
11054
11054
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11055
11055
|
namespace: string().optional(),
|
|
11056
11056
|
collection: string(),
|
|
@@ -11113,46 +11113,87 @@ var EngineInfoSchema = object({
|
|
|
11113
11113
|
kind: _enum(["relational", "vector"]),
|
|
11114
11114
|
displayName: string()
|
|
11115
11115
|
});
|
|
11116
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11116
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11117
11117
|
namespace: string().optional(),
|
|
11118
11118
|
collection: string(),
|
|
11119
11119
|
key: string()
|
|
11120
|
-
}), unknown()), method(object({
|
|
11120
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11121
11121
|
namespace: string().optional(),
|
|
11122
11122
|
collection: string(),
|
|
11123
11123
|
key: string(),
|
|
11124
11124
|
value: unknown()
|
|
11125
|
-
}), _void(), {
|
|
11125
|
+
}), _void(), {
|
|
11126
|
+
kind: "mutation",
|
|
11127
|
+
auth: "admin"
|
|
11128
|
+
}), method(object({
|
|
11126
11129
|
namespace: string().optional(),
|
|
11127
11130
|
collection: string(),
|
|
11128
|
-
filter: QueryFilterSchema.optional()
|
|
11129
|
-
|
|
11131
|
+
filter: QueryFilterSchema.optional(),
|
|
11132
|
+
/**
|
|
11133
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11134
|
+
*
|
|
11135
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11136
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11137
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11138
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11139
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11140
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11141
|
+
*
|
|
11142
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11143
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11144
|
+
* interface the engine destructures from. The field existed on both
|
|
11145
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11146
|
+
* registered provider against `InferProvider<cap>` —
|
|
11147
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11148
|
+
*
|
|
11149
|
+
* It is declared here anyway, and must stay in step with
|
|
11150
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11151
|
+
* to be able to see that this call carries a projection.
|
|
11152
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11153
|
+
*/
|
|
11154
|
+
columns: array(string()).readonly().optional()
|
|
11155
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11130
11156
|
namespace: string().optional(),
|
|
11131
11157
|
collection: string(),
|
|
11132
11158
|
record: SettingsRecordSchema
|
|
11133
|
-
}), _void(), {
|
|
11159
|
+
}), _void(), {
|
|
11160
|
+
kind: "mutation",
|
|
11161
|
+
auth: "admin"
|
|
11162
|
+
}), method(object({
|
|
11134
11163
|
namespace: string().optional(),
|
|
11135
11164
|
collection: string(),
|
|
11136
11165
|
id: string(),
|
|
11137
11166
|
data: record(string(), unknown())
|
|
11138
|
-
}), _void(), {
|
|
11167
|
+
}), _void(), {
|
|
11168
|
+
kind: "mutation",
|
|
11169
|
+
auth: "admin"
|
|
11170
|
+
}), method(object({
|
|
11139
11171
|
namespace: string().optional(),
|
|
11140
11172
|
collection: string(),
|
|
11141
11173
|
key: string()
|
|
11142
|
-
}), _void(), {
|
|
11174
|
+
}), _void(), {
|
|
11175
|
+
kind: "mutation",
|
|
11176
|
+
auth: "admin"
|
|
11177
|
+
}), method(object({
|
|
11143
11178
|
namespace: string().optional(),
|
|
11144
11179
|
collection: string(),
|
|
11145
11180
|
filter: MutationFilterSchema
|
|
11146
|
-
}), object({ deleted: number().int() }), {
|
|
11181
|
+
}), object({ deleted: number().int() }), {
|
|
11182
|
+
kind: "mutation",
|
|
11183
|
+
auth: "admin"
|
|
11184
|
+
}), method(object({
|
|
11147
11185
|
namespace: string().optional(),
|
|
11148
11186
|
collection: string(),
|
|
11149
11187
|
filter: MutationFilterSchema,
|
|
11150
11188
|
data: record(string(), unknown())
|
|
11151
|
-
}), object({ updated: number().int() }), {
|
|
11189
|
+
}), object({ updated: number().int() }), {
|
|
11190
|
+
kind: "mutation",
|
|
11191
|
+
auth: "admin"
|
|
11192
|
+
}), method(object({
|
|
11152
11193
|
namespace: string().optional(),
|
|
11153
11194
|
collection: string(),
|
|
11154
11195
|
filter: QueryFilterSchema.optional()
|
|
11155
|
-
}), number()), method(object({
|
|
11196
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11156
11197
|
namespace: string().optional(),
|
|
11157
11198
|
collection: string(),
|
|
11158
11199
|
field: string(),
|
|
@@ -11162,15 +11203,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11162
11203
|
}), array(object({
|
|
11163
11204
|
bucket: number().int(),
|
|
11164
11205
|
count: number().int()
|
|
11165
|
-
})).readonly()), method(object({
|
|
11206
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11166
11207
|
namespace: string().optional(),
|
|
11167
11208
|
collection: string()
|
|
11168
|
-
}), boolean()), method(object({
|
|
11209
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11169
11210
|
namespace: string().optional(),
|
|
11170
11211
|
collection: string(),
|
|
11171
11212
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11172
11213
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11173
|
-
}), _void(), {
|
|
11214
|
+
}), _void(), {
|
|
11215
|
+
kind: "mutation",
|
|
11216
|
+
auth: "admin"
|
|
11217
|
+
});
|
|
11174
11218
|
/**
|
|
11175
11219
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11176
11220
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12298,7 +12342,7 @@ method(object({
|
|
|
12298
12342
|
crop: _instanceof(Uint8Array),
|
|
12299
12343
|
width: number(),
|
|
12300
12344
|
height: number()
|
|
12301
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12345
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12302
12346
|
/**
|
|
12303
12347
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12304
12348
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12591,19 +12635,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12591
12635
|
runtime: ManagedRuntimeConfigSchema,
|
|
12592
12636
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12593
12637
|
timeoutMs: number().int().positive().optional()
|
|
12594
|
-
}), LlmGenerateResultSchema, {
|
|
12638
|
+
}), LlmGenerateResultSchema, {
|
|
12639
|
+
kind: "mutation",
|
|
12640
|
+
auth: "admin"
|
|
12641
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12595
12642
|
kind: "mutation",
|
|
12596
12643
|
auth: "admin"
|
|
12597
12644
|
}), method(object({}), _void(), {
|
|
12598
12645
|
kind: "mutation",
|
|
12599
12646
|
auth: "admin"
|
|
12600
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12647
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12601
12648
|
kind: "mutation",
|
|
12602
12649
|
auth: "admin"
|
|
12603
12650
|
}), method(object({ file: string() }), _void(), {
|
|
12604
12651
|
kind: "mutation",
|
|
12605
12652
|
auth: "admin"
|
|
12606
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12653
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12607
12654
|
/**
|
|
12608
12655
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12609
12656
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16095,7 +16142,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16095
16142
|
*/
|
|
16096
16143
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16097
16144
|
});
|
|
16098
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16145
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16099
16146
|
/**
|
|
16100
16147
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16101
16148
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17290,6 +17337,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17290
17337
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17291
17338
|
kind: "mutation",
|
|
17292
17339
|
auth: "admin"
|
|
17340
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17341
|
+
kind: "mutation",
|
|
17342
|
+
auth: "admin"
|
|
17343
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17344
|
+
kind: "query",
|
|
17345
|
+
auth: "admin"
|
|
17346
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17347
|
+
kind: "mutation",
|
|
17348
|
+
auth: "admin"
|
|
17293
17349
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17294
17350
|
kind: "query",
|
|
17295
17351
|
auth: "admin"
|
|
@@ -17444,6 +17500,11 @@ object({
|
|
|
17444
17500
|
"jpeg"
|
|
17445
17501
|
])
|
|
17446
17502
|
});
|
|
17503
|
+
/**
|
|
17504
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17505
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17506
|
+
* other process or execution group.
|
|
17507
|
+
*/
|
|
17447
17508
|
var FrameRefSchema = object({
|
|
17448
17509
|
registryId: string().min(1),
|
|
17449
17510
|
id: string().min(1),
|
|
@@ -19609,7 +19670,7 @@ method(object({
|
|
|
19609
19670
|
* linking rather than produce an eternal token.
|
|
19610
19671
|
*/
|
|
19611
19672
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
19612
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
19673
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
19613
19674
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
19614
19675
|
providerId: string().min(1),
|
|
19615
19676
|
displayName: string().min(1),
|
|
@@ -19704,10 +19765,13 @@ var EvictResultSchema = object({
|
|
|
19704
19765
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
19705
19766
|
exhausted: boolean()
|
|
19706
19767
|
});
|
|
19707
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
19768
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
19708
19769
|
locationId: string(),
|
|
19709
19770
|
targetBytes: number().int().positive()
|
|
19710
|
-
}), EvictResultSchema, {
|
|
19771
|
+
}), EvictResultSchema, {
|
|
19772
|
+
kind: "mutation",
|
|
19773
|
+
auth: "admin"
|
|
19774
|
+
});
|
|
19711
19775
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
19712
19776
|
kind: "mutation",
|
|
19713
19777
|
auth: "admin"
|
|
@@ -19767,26 +19831,50 @@ var ReadChunkInputSchema = object({
|
|
|
19767
19831
|
length: number()
|
|
19768
19832
|
});
|
|
19769
19833
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
19770
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
19834
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
19771
19835
|
location: StorageLocationSchema,
|
|
19772
19836
|
relativePath: string()
|
|
19773
|
-
}), string()), method(object({
|
|
19837
|
+
}), string(), { auth: "admin" }), method(object({
|
|
19774
19838
|
location: StorageLocationSchema,
|
|
19775
19839
|
relativePath: string(),
|
|
19776
19840
|
data: _instanceof(Uint8Array)
|
|
19777
|
-
}), _void(), {
|
|
19841
|
+
}), _void(), {
|
|
19842
|
+
kind: "mutation",
|
|
19843
|
+
auth: "admin"
|
|
19844
|
+
}), method(object({
|
|
19778
19845
|
location: StorageLocationSchema,
|
|
19779
19846
|
relativePath: string()
|
|
19780
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
19847
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
19781
19848
|
location: StorageLocationSchema,
|
|
19782
19849
|
relativePath: string()
|
|
19783
|
-
}), boolean()), method(object({
|
|
19850
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
19784
19851
|
location: StorageLocationSchema,
|
|
19785
19852
|
prefix: string().optional()
|
|
19786
|
-
}), array(string()).readonly()), method(object({
|
|
19853
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
19787
19854
|
location: StorageLocationSchema,
|
|
19788
19855
|
relativePath: string()
|
|
19789
|
-
}), _void(), {
|
|
19856
|
+
}), _void(), {
|
|
19857
|
+
kind: "mutation",
|
|
19858
|
+
auth: "admin"
|
|
19859
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
19860
|
+
kind: "mutation",
|
|
19861
|
+
auth: "admin"
|
|
19862
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
19863
|
+
kind: "mutation",
|
|
19864
|
+
auth: "admin"
|
|
19865
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
19866
|
+
kind: "mutation",
|
|
19867
|
+
auth: "admin"
|
|
19868
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
19869
|
+
kind: "mutation",
|
|
19870
|
+
auth: "admin"
|
|
19871
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
19872
|
+
kind: "mutation",
|
|
19873
|
+
auth: "admin"
|
|
19874
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
19875
|
+
kind: "mutation",
|
|
19876
|
+
auth: "admin"
|
|
19877
|
+
});
|
|
19790
19878
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
19791
19879
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
19792
19880
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20044,7 +20132,8 @@ method(object({
|
|
|
20044
20132
|
access: "create"
|
|
20045
20133
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20046
20134
|
kind: "mutation",
|
|
20047
|
-
access: "view"
|
|
20135
|
+
access: "view",
|
|
20136
|
+
auth: "admin"
|
|
20048
20137
|
}), method(object({
|
|
20049
20138
|
/** Required — the user the assertion belongs to (verified). */
|
|
20050
20139
|
userId: string(),
|
|
@@ -20052,10 +20141,12 @@ method(object({
|
|
|
20052
20141
|
response: record(string(), unknown())
|
|
20053
20142
|
}), object({ verified: boolean() }), {
|
|
20054
20143
|
kind: "mutation",
|
|
20055
|
-
access: "view"
|
|
20144
|
+
access: "view",
|
|
20145
|
+
auth: "admin"
|
|
20056
20146
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20057
20147
|
kind: "mutation",
|
|
20058
|
-
access: "view"
|
|
20148
|
+
access: "view",
|
|
20149
|
+
auth: "admin"
|
|
20059
20150
|
}), method(object({
|
|
20060
20151
|
/** AuthenticationResponseJSON from the browser. */
|
|
20061
20152
|
response: record(string(), unknown()) }), object({
|
|
@@ -20063,7 +20154,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20063
20154
|
userId: string().nullable()
|
|
20064
20155
|
}), {
|
|
20065
20156
|
kind: "mutation",
|
|
20066
|
-
access: "view"
|
|
20157
|
+
access: "view",
|
|
20158
|
+
auth: "admin"
|
|
20067
20159
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20068
20160
|
userId: string(),
|
|
20069
20161
|
credentialId: string()
|
|
@@ -20235,7 +20327,19 @@ var VectorStatsResultSchema = object({
|
|
|
20235
20327
|
/** False when the backend ranks approximately. */
|
|
20236
20328
|
exact: boolean()
|
|
20237
20329
|
});
|
|
20238
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20330
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20331
|
+
kind: "mutation",
|
|
20332
|
+
auth: "admin"
|
|
20333
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20334
|
+
kind: "mutation",
|
|
20335
|
+
auth: "admin"
|
|
20336
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20337
|
+
kind: "mutation",
|
|
20338
|
+
auth: "admin"
|
|
20339
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20340
|
+
kind: "mutation",
|
|
20341
|
+
auth: "admin"
|
|
20342
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20239
20343
|
var ClipSchema = object({
|
|
20240
20344
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20241
20345
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -21958,7 +22062,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
21958
22062
|
sizeBytes: number(),
|
|
21959
22063
|
timestamp: number()
|
|
21960
22064
|
});
|
|
21961
|
-
method(
|
|
22065
|
+
method(object({
|
|
22066
|
+
/**
|
|
22067
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
22068
|
+
*
|
|
22069
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
22070
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
22071
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
22072
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
22073
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
22074
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
22075
|
+
*
|
|
22076
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
22077
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
22078
|
+
*
|
|
22079
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
22080
|
+
* next train** — the hub router validates cap inputs against its own
|
|
22081
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
22082
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
22083
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
22084
|
+
*/
|
|
22085
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
21962
22086
|
kind: "mutation",
|
|
21963
22087
|
auth: "admin"
|
|
21964
22088
|
}), method(object({
|
|
@@ -24105,8 +24229,10 @@ var PlateInfoSchema = object({
|
|
|
24105
24229
|
keyFrameMediaKey: string().optional(),
|
|
24106
24230
|
base64: string().optional(),
|
|
24107
24231
|
/**
|
|
24108
|
-
* Same crop as a data-plane URL
|
|
24109
|
-
* never inlines JPEG; `listPlates`
|
|
24232
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
24233
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
24234
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
24235
|
+
* left at its `true` default.
|
|
24110
24236
|
*/
|
|
24111
24237
|
cropUrl: string().optional()
|
|
24112
24238
|
});
|
|
@@ -24126,14 +24252,34 @@ var PlateClusterSchema = object({
|
|
|
24126
24252
|
});
|
|
24127
24253
|
method(object({
|
|
24128
24254
|
deviceId: number().int().optional(),
|
|
24129
|
-
limit: number().int().positive().optional()
|
|
24255
|
+
limit: number().int().positive().optional(),
|
|
24256
|
+
/**
|
|
24257
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
24258
|
+
* behaviour, kept so no caller breaks.
|
|
24259
|
+
*
|
|
24260
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
24261
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
24262
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
24263
|
+
* metadata without them — and the browser then caches the images.
|
|
24264
|
+
*
|
|
24265
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
24266
|
+
* plates were the one gallery list left without it.
|
|
24267
|
+
*
|
|
24268
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
24269
|
+
* next train.** The hub router validates cap inputs against its own
|
|
24270
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
24271
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
24272
|
+
*/
|
|
24273
|
+
includeCrops: boolean().optional()
|
|
24130
24274
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
24131
24275
|
deviceId: number().int(),
|
|
24132
24276
|
trackId: string()
|
|
24133
24277
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
24134
24278
|
text: string().min(1),
|
|
24135
24279
|
maxDistance: number().int().min(0).optional(),
|
|
24136
|
-
limit: number().int().positive().optional()
|
|
24280
|
+
limit: number().int().positive().optional(),
|
|
24281
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
24282
|
+
includeCrops: boolean().optional()
|
|
24137
24283
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
24138
24284
|
maxDistance: number().int().min(0).optional(),
|
|
24139
24285
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -24147,7 +24293,13 @@ method(object({
|
|
|
24147
24293
|
}), method(object({ plateId: string() }), _void(), {
|
|
24148
24294
|
kind: "mutation",
|
|
24149
24295
|
auth: "admin"
|
|
24150
|
-
}), method(
|
|
24296
|
+
}), method(object({
|
|
24297
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
24298
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
24299
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
24300
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
24301
|
+
* resolves to `false` and is exactly the intended default. */
|
|
24302
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
24151
24303
|
kind: "mutation",
|
|
24152
24304
|
auth: "admin"
|
|
24153
24305
|
}), method(object({
|
|
@@ -29524,6 +29676,12 @@ Object.freeze({
|
|
|
29524
29676
|
addonId: null,
|
|
29525
29677
|
access: "create"
|
|
29526
29678
|
},
|
|
29679
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
29680
|
+
capName: "pipeline-analytics",
|
|
29681
|
+
capScope: "device",
|
|
29682
|
+
addonId: null,
|
|
29683
|
+
access: "create"
|
|
29684
|
+
},
|
|
29527
29685
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
29528
29686
|
capName: "pipeline-analytics",
|
|
29529
29687
|
capScope: "device",
|
|
@@ -29698,6 +29856,12 @@ Object.freeze({
|
|
|
29698
29856
|
addonId: null,
|
|
29699
29857
|
access: "view"
|
|
29700
29858
|
},
|
|
29859
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
29860
|
+
capName: "pipeline-analytics",
|
|
29861
|
+
capScope: "device",
|
|
29862
|
+
addonId: null,
|
|
29863
|
+
access: "view"
|
|
29864
|
+
},
|
|
29701
29865
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
29702
29866
|
capName: "pipeline-analytics",
|
|
29703
29867
|
capScope: "device",
|
|
@@ -29776,6 +29940,12 @@ Object.freeze({
|
|
|
29776
29940
|
addonId: null,
|
|
29777
29941
|
access: "create"
|
|
29778
29942
|
},
|
|
29943
|
+
"pipelineAnalytics.relocateMedia": {
|
|
29944
|
+
capName: "pipeline-analytics",
|
|
29945
|
+
capScope: "device",
|
|
29946
|
+
addonId: null,
|
|
29947
|
+
access: "create"
|
|
29948
|
+
},
|
|
29779
29949
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
29780
29950
|
capName: "pipeline-analytics",
|
|
29781
29951
|
capScope: "device",
|
|
@@ -6670,7 +6670,7 @@ function method(input, output, options) {
|
|
|
6670
6670
|
input,
|
|
6671
6671
|
output,
|
|
6672
6672
|
kind: options?.kind ?? "query",
|
|
6673
|
-
auth: options
|
|
6673
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6674
6674
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6675
6675
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6676
6676
|
timeoutMs: options?.timeoutMs
|
|
@@ -6690,7 +6690,7 @@ function systemMethod(input, output, options) {
|
|
|
6690
6690
|
}
|
|
6691
6691
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6692
6692
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6693
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6693
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6694
6694
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6695
6695
|
DeviceType["Camera"] = "camera";
|
|
6696
6696
|
DeviceType["Hub"] = "hub";
|
|
@@ -7011,7 +7011,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
7011
7011
|
}({});
|
|
7012
7012
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
7013
7013
|
var VersionOutputSchema = object({ version: string() });
|
|
7014
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
7014
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
7015
7015
|
/**
|
|
7016
7016
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
7017
7017
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7625,24 +7625,6 @@ var RecordingRetentionSchema = object({
|
|
|
7625
7625
|
maxSizeGb: number().min(0).optional()
|
|
7626
7626
|
});
|
|
7627
7627
|
/**
|
|
7628
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7629
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7630
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7631
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7632
|
-
*
|
|
7633
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7634
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7635
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7636
|
-
* written with.
|
|
7637
|
-
*/
|
|
7638
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7639
|
-
"minimal",
|
|
7640
|
-
"low",
|
|
7641
|
-
"standard",
|
|
7642
|
-
"high",
|
|
7643
|
-
"max"
|
|
7644
|
-
]);
|
|
7645
|
-
/**
|
|
7646
7628
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7647
7629
|
*
|
|
7648
7630
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7650,7 +7632,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7650
7632
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7651
7633
|
*
|
|
7652
7634
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7653
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7635
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7636
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7637
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7638
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7639
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7654
7640
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7655
7641
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7656
7642
|
*/
|
|
@@ -7673,14 +7659,7 @@ var RecordingConfigSchema = object({
|
|
|
7673
7659
|
* "off" is the absence of a covering band, never a band value.
|
|
7674
7660
|
*/
|
|
7675
7661
|
bands: array(RecordingBandSchema).default([]),
|
|
7676
|
-
retention: RecordingRetentionSchema.optional()
|
|
7677
|
-
/**
|
|
7678
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7679
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7680
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7681
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7682
|
-
*/
|
|
7683
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7662
|
+
retention: RecordingRetentionSchema.optional()
|
|
7684
7663
|
}).strict();
|
|
7685
7664
|
/**
|
|
7686
7665
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7756,10 +7735,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7756
7735
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7757
7736
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7758
7737
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7759
|
-
var
|
|
7738
|
+
var RelocateMediaInputSchema = object({
|
|
7760
7739
|
toLocationId: string(),
|
|
7761
7740
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7762
|
-
})
|
|
7741
|
+
});
|
|
7742
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7763
7743
|
/** The independently selectable logical storage classes. `recordings`
|
|
7764
7744
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7765
7745
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8054,7 +8034,26 @@ var LabelDefinitionSchema = object({
|
|
|
8054
8034
|
description: string().optional(),
|
|
8055
8035
|
icon: string().optional()
|
|
8056
8036
|
});
|
|
8057
|
-
|
|
8037
|
+
/**
|
|
8038
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8039
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8040
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8041
|
+
* detection pipeline executor actually routes.
|
|
8042
|
+
*
|
|
8043
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8044
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8045
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8046
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8047
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8048
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8049
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8050
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8051
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8052
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8053
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8054
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8055
|
+
*/
|
|
8056
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8058
8057
|
mapping: record(string(), _enum([
|
|
8059
8058
|
"person",
|
|
8060
8059
|
"vehicle",
|
|
@@ -8259,7 +8258,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8259
8258
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8260
8259
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8261
8260
|
*/
|
|
8262
|
-
classMap:
|
|
8261
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8263
8262
|
});
|
|
8264
8263
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8265
8264
|
format: literal("openvino"),
|
|
@@ -8289,7 +8288,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8289
8288
|
"segmentation"
|
|
8290
8289
|
]),
|
|
8291
8290
|
faceAlignment: boolean().optional(),
|
|
8292
|
-
classMap:
|
|
8291
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8293
8292
|
});
|
|
8294
8293
|
var ConvertResultSchema = object({
|
|
8295
8294
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9152,7 +9151,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9152
9151
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9153
9152
|
sectionLabel: string().optional()
|
|
9154
9153
|
});
|
|
9155
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9154
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9156
9155
|
var AddonHttpRouteSchema = object({
|
|
9157
9156
|
method: _enum([
|
|
9158
9157
|
"GET",
|
|
@@ -9387,7 +9386,7 @@ var WidgetMetadataSchema = object({
|
|
|
9387
9386
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9388
9387
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9389
9388
|
});
|
|
9390
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9389
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9391
9390
|
/**
|
|
9392
9391
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9393
9392
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -10958,7 +10957,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
10958
10957
|
stepId: string(),
|
|
10959
10958
|
entry: ModelCatalogEntrySchema
|
|
10960
10959
|
});
|
|
10961
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
10960
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
10962
10961
|
/**
|
|
10963
10962
|
* Query filter for settings-store collections.
|
|
10964
10963
|
*/
|
|
@@ -11045,7 +11044,8 @@ method(object({
|
|
|
11045
11044
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11046
11045
|
namespace: string().optional(),
|
|
11047
11046
|
collection: string(),
|
|
11048
|
-
filter: QueryFilterSchema.optional()
|
|
11047
|
+
filter: QueryFilterSchema.optional(),
|
|
11048
|
+
columns: array(string()).readonly().optional()
|
|
11049
11049
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11050
11050
|
namespace: string().optional(),
|
|
11051
11051
|
collection: string(),
|
|
@@ -11108,46 +11108,87 @@ var EngineInfoSchema = object({
|
|
|
11108
11108
|
kind: _enum(["relational", "vector"]),
|
|
11109
11109
|
displayName: string()
|
|
11110
11110
|
});
|
|
11111
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11111
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11112
11112
|
namespace: string().optional(),
|
|
11113
11113
|
collection: string(),
|
|
11114
11114
|
key: string()
|
|
11115
|
-
}), unknown()), method(object({
|
|
11115
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11116
11116
|
namespace: string().optional(),
|
|
11117
11117
|
collection: string(),
|
|
11118
11118
|
key: string(),
|
|
11119
11119
|
value: unknown()
|
|
11120
|
-
}), _void(), {
|
|
11120
|
+
}), _void(), {
|
|
11121
|
+
kind: "mutation",
|
|
11122
|
+
auth: "admin"
|
|
11123
|
+
}), method(object({
|
|
11121
11124
|
namespace: string().optional(),
|
|
11122
11125
|
collection: string(),
|
|
11123
|
-
filter: QueryFilterSchema.optional()
|
|
11124
|
-
|
|
11126
|
+
filter: QueryFilterSchema.optional(),
|
|
11127
|
+
/**
|
|
11128
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11129
|
+
*
|
|
11130
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11131
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11132
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11133
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11134
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11135
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11136
|
+
*
|
|
11137
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11138
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11139
|
+
* interface the engine destructures from. The field existed on both
|
|
11140
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11141
|
+
* registered provider against `InferProvider<cap>` —
|
|
11142
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11143
|
+
*
|
|
11144
|
+
* It is declared here anyway, and must stay in step with
|
|
11145
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11146
|
+
* to be able to see that this call carries a projection.
|
|
11147
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11148
|
+
*/
|
|
11149
|
+
columns: array(string()).readonly().optional()
|
|
11150
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11125
11151
|
namespace: string().optional(),
|
|
11126
11152
|
collection: string(),
|
|
11127
11153
|
record: SettingsRecordSchema
|
|
11128
|
-
}), _void(), {
|
|
11154
|
+
}), _void(), {
|
|
11155
|
+
kind: "mutation",
|
|
11156
|
+
auth: "admin"
|
|
11157
|
+
}), method(object({
|
|
11129
11158
|
namespace: string().optional(),
|
|
11130
11159
|
collection: string(),
|
|
11131
11160
|
id: string(),
|
|
11132
11161
|
data: record(string(), unknown())
|
|
11133
|
-
}), _void(), {
|
|
11162
|
+
}), _void(), {
|
|
11163
|
+
kind: "mutation",
|
|
11164
|
+
auth: "admin"
|
|
11165
|
+
}), method(object({
|
|
11134
11166
|
namespace: string().optional(),
|
|
11135
11167
|
collection: string(),
|
|
11136
11168
|
key: string()
|
|
11137
|
-
}), _void(), {
|
|
11169
|
+
}), _void(), {
|
|
11170
|
+
kind: "mutation",
|
|
11171
|
+
auth: "admin"
|
|
11172
|
+
}), method(object({
|
|
11138
11173
|
namespace: string().optional(),
|
|
11139
11174
|
collection: string(),
|
|
11140
11175
|
filter: MutationFilterSchema
|
|
11141
|
-
}), object({ deleted: number().int() }), {
|
|
11176
|
+
}), object({ deleted: number().int() }), {
|
|
11177
|
+
kind: "mutation",
|
|
11178
|
+
auth: "admin"
|
|
11179
|
+
}), method(object({
|
|
11142
11180
|
namespace: string().optional(),
|
|
11143
11181
|
collection: string(),
|
|
11144
11182
|
filter: MutationFilterSchema,
|
|
11145
11183
|
data: record(string(), unknown())
|
|
11146
|
-
}), object({ updated: number().int() }), {
|
|
11184
|
+
}), object({ updated: number().int() }), {
|
|
11185
|
+
kind: "mutation",
|
|
11186
|
+
auth: "admin"
|
|
11187
|
+
}), method(object({
|
|
11147
11188
|
namespace: string().optional(),
|
|
11148
11189
|
collection: string(),
|
|
11149
11190
|
filter: QueryFilterSchema.optional()
|
|
11150
|
-
}), number()), method(object({
|
|
11191
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11151
11192
|
namespace: string().optional(),
|
|
11152
11193
|
collection: string(),
|
|
11153
11194
|
field: string(),
|
|
@@ -11157,15 +11198,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11157
11198
|
}), array(object({
|
|
11158
11199
|
bucket: number().int(),
|
|
11159
11200
|
count: number().int()
|
|
11160
|
-
})).readonly()), method(object({
|
|
11201
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11161
11202
|
namespace: string().optional(),
|
|
11162
11203
|
collection: string()
|
|
11163
|
-
}), boolean()), method(object({
|
|
11204
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11164
11205
|
namespace: string().optional(),
|
|
11165
11206
|
collection: string(),
|
|
11166
11207
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11167
11208
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11168
|
-
}), _void(), {
|
|
11209
|
+
}), _void(), {
|
|
11210
|
+
kind: "mutation",
|
|
11211
|
+
auth: "admin"
|
|
11212
|
+
});
|
|
11169
11213
|
/**
|
|
11170
11214
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11171
11215
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12293,7 +12337,7 @@ method(object({
|
|
|
12293
12337
|
crop: _instanceof(Uint8Array),
|
|
12294
12338
|
width: number(),
|
|
12295
12339
|
height: number()
|
|
12296
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12340
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12297
12341
|
/**
|
|
12298
12342
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12299
12343
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12586,19 +12630,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12586
12630
|
runtime: ManagedRuntimeConfigSchema,
|
|
12587
12631
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12588
12632
|
timeoutMs: number().int().positive().optional()
|
|
12589
|
-
}), LlmGenerateResultSchema, {
|
|
12633
|
+
}), LlmGenerateResultSchema, {
|
|
12634
|
+
kind: "mutation",
|
|
12635
|
+
auth: "admin"
|
|
12636
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12590
12637
|
kind: "mutation",
|
|
12591
12638
|
auth: "admin"
|
|
12592
12639
|
}), method(object({}), _void(), {
|
|
12593
12640
|
kind: "mutation",
|
|
12594
12641
|
auth: "admin"
|
|
12595
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12642
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12596
12643
|
kind: "mutation",
|
|
12597
12644
|
auth: "admin"
|
|
12598
12645
|
}), method(object({ file: string() }), _void(), {
|
|
12599
12646
|
kind: "mutation",
|
|
12600
12647
|
auth: "admin"
|
|
12601
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12648
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12602
12649
|
/**
|
|
12603
12650
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12604
12651
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16090,7 +16137,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16090
16137
|
*/
|
|
16091
16138
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16092
16139
|
});
|
|
16093
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16140
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16094
16141
|
/**
|
|
16095
16142
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16096
16143
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17285,6 +17332,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17285
17332
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17286
17333
|
kind: "mutation",
|
|
17287
17334
|
auth: "admin"
|
|
17335
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17336
|
+
kind: "mutation",
|
|
17337
|
+
auth: "admin"
|
|
17338
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17339
|
+
kind: "query",
|
|
17340
|
+
auth: "admin"
|
|
17341
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17342
|
+
kind: "mutation",
|
|
17343
|
+
auth: "admin"
|
|
17288
17344
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17289
17345
|
kind: "query",
|
|
17290
17346
|
auth: "admin"
|
|
@@ -17439,6 +17495,11 @@ object({
|
|
|
17439
17495
|
"jpeg"
|
|
17440
17496
|
])
|
|
17441
17497
|
});
|
|
17498
|
+
/**
|
|
17499
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17500
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17501
|
+
* other process or execution group.
|
|
17502
|
+
*/
|
|
17442
17503
|
var FrameRefSchema = object({
|
|
17443
17504
|
registryId: string().min(1),
|
|
17444
17505
|
id: string().min(1),
|
|
@@ -19604,7 +19665,7 @@ method(object({
|
|
|
19604
19665
|
* linking rather than produce an eternal token.
|
|
19605
19666
|
*/
|
|
19606
19667
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
19607
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
19668
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
19608
19669
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
19609
19670
|
providerId: string().min(1),
|
|
19610
19671
|
displayName: string().min(1),
|
|
@@ -19699,10 +19760,13 @@ var EvictResultSchema = object({
|
|
|
19699
19760
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
19700
19761
|
exhausted: boolean()
|
|
19701
19762
|
});
|
|
19702
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
19763
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
19703
19764
|
locationId: string(),
|
|
19704
19765
|
targetBytes: number().int().positive()
|
|
19705
|
-
}), EvictResultSchema, {
|
|
19766
|
+
}), EvictResultSchema, {
|
|
19767
|
+
kind: "mutation",
|
|
19768
|
+
auth: "admin"
|
|
19769
|
+
});
|
|
19706
19770
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
19707
19771
|
kind: "mutation",
|
|
19708
19772
|
auth: "admin"
|
|
@@ -19762,26 +19826,50 @@ var ReadChunkInputSchema = object({
|
|
|
19762
19826
|
length: number()
|
|
19763
19827
|
});
|
|
19764
19828
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
19765
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
19829
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
19766
19830
|
location: StorageLocationSchema,
|
|
19767
19831
|
relativePath: string()
|
|
19768
|
-
}), string()), method(object({
|
|
19832
|
+
}), string(), { auth: "admin" }), method(object({
|
|
19769
19833
|
location: StorageLocationSchema,
|
|
19770
19834
|
relativePath: string(),
|
|
19771
19835
|
data: _instanceof(Uint8Array)
|
|
19772
|
-
}), _void(), {
|
|
19836
|
+
}), _void(), {
|
|
19837
|
+
kind: "mutation",
|
|
19838
|
+
auth: "admin"
|
|
19839
|
+
}), method(object({
|
|
19773
19840
|
location: StorageLocationSchema,
|
|
19774
19841
|
relativePath: string()
|
|
19775
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
19842
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
19776
19843
|
location: StorageLocationSchema,
|
|
19777
19844
|
relativePath: string()
|
|
19778
|
-
}), boolean()), method(object({
|
|
19845
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
19779
19846
|
location: StorageLocationSchema,
|
|
19780
19847
|
prefix: string().optional()
|
|
19781
|
-
}), array(string()).readonly()), method(object({
|
|
19848
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
19782
19849
|
location: StorageLocationSchema,
|
|
19783
19850
|
relativePath: string()
|
|
19784
|
-
}), _void(), {
|
|
19851
|
+
}), _void(), {
|
|
19852
|
+
kind: "mutation",
|
|
19853
|
+
auth: "admin"
|
|
19854
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
19855
|
+
kind: "mutation",
|
|
19856
|
+
auth: "admin"
|
|
19857
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
19858
|
+
kind: "mutation",
|
|
19859
|
+
auth: "admin"
|
|
19860
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
19861
|
+
kind: "mutation",
|
|
19862
|
+
auth: "admin"
|
|
19863
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
19864
|
+
kind: "mutation",
|
|
19865
|
+
auth: "admin"
|
|
19866
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
19867
|
+
kind: "mutation",
|
|
19868
|
+
auth: "admin"
|
|
19869
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
19870
|
+
kind: "mutation",
|
|
19871
|
+
auth: "admin"
|
|
19872
|
+
});
|
|
19785
19873
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
19786
19874
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
19787
19875
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20039,7 +20127,8 @@ method(object({
|
|
|
20039
20127
|
access: "create"
|
|
20040
20128
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20041
20129
|
kind: "mutation",
|
|
20042
|
-
access: "view"
|
|
20130
|
+
access: "view",
|
|
20131
|
+
auth: "admin"
|
|
20043
20132
|
}), method(object({
|
|
20044
20133
|
/** Required — the user the assertion belongs to (verified). */
|
|
20045
20134
|
userId: string(),
|
|
@@ -20047,10 +20136,12 @@ method(object({
|
|
|
20047
20136
|
response: record(string(), unknown())
|
|
20048
20137
|
}), object({ verified: boolean() }), {
|
|
20049
20138
|
kind: "mutation",
|
|
20050
|
-
access: "view"
|
|
20139
|
+
access: "view",
|
|
20140
|
+
auth: "admin"
|
|
20051
20141
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20052
20142
|
kind: "mutation",
|
|
20053
|
-
access: "view"
|
|
20143
|
+
access: "view",
|
|
20144
|
+
auth: "admin"
|
|
20054
20145
|
}), method(object({
|
|
20055
20146
|
/** AuthenticationResponseJSON from the browser. */
|
|
20056
20147
|
response: record(string(), unknown()) }), object({
|
|
@@ -20058,7 +20149,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20058
20149
|
userId: string().nullable()
|
|
20059
20150
|
}), {
|
|
20060
20151
|
kind: "mutation",
|
|
20061
|
-
access: "view"
|
|
20152
|
+
access: "view",
|
|
20153
|
+
auth: "admin"
|
|
20062
20154
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20063
20155
|
userId: string(),
|
|
20064
20156
|
credentialId: string()
|
|
@@ -20230,7 +20322,19 @@ var VectorStatsResultSchema = object({
|
|
|
20230
20322
|
/** False when the backend ranks approximately. */
|
|
20231
20323
|
exact: boolean()
|
|
20232
20324
|
});
|
|
20233
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20325
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20326
|
+
kind: "mutation",
|
|
20327
|
+
auth: "admin"
|
|
20328
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20329
|
+
kind: "mutation",
|
|
20330
|
+
auth: "admin"
|
|
20331
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20332
|
+
kind: "mutation",
|
|
20333
|
+
auth: "admin"
|
|
20334
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20335
|
+
kind: "mutation",
|
|
20336
|
+
auth: "admin"
|
|
20337
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20234
20338
|
var ClipSchema = object({
|
|
20235
20339
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20236
20340
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -21953,7 +22057,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
21953
22057
|
sizeBytes: number(),
|
|
21954
22058
|
timestamp: number()
|
|
21955
22059
|
});
|
|
21956
|
-
method(
|
|
22060
|
+
method(object({
|
|
22061
|
+
/**
|
|
22062
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
22063
|
+
*
|
|
22064
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
22065
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
22066
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
22067
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
22068
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
22069
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
22070
|
+
*
|
|
22071
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
22072
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
22073
|
+
*
|
|
22074
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
22075
|
+
* next train** — the hub router validates cap inputs against its own
|
|
22076
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
22077
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
22078
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
22079
|
+
*/
|
|
22080
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
21957
22081
|
kind: "mutation",
|
|
21958
22082
|
auth: "admin"
|
|
21959
22083
|
}), method(object({
|
|
@@ -24100,8 +24224,10 @@ var PlateInfoSchema = object({
|
|
|
24100
24224
|
keyFrameMediaKey: string().optional(),
|
|
24101
24225
|
base64: string().optional(),
|
|
24102
24226
|
/**
|
|
24103
|
-
* Same crop as a data-plane URL
|
|
24104
|
-
* never inlines JPEG; `listPlates`
|
|
24227
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
24228
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
24229
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
24230
|
+
* left at its `true` default.
|
|
24105
24231
|
*/
|
|
24106
24232
|
cropUrl: string().optional()
|
|
24107
24233
|
});
|
|
@@ -24121,14 +24247,34 @@ var PlateClusterSchema = object({
|
|
|
24121
24247
|
});
|
|
24122
24248
|
method(object({
|
|
24123
24249
|
deviceId: number().int().optional(),
|
|
24124
|
-
limit: number().int().positive().optional()
|
|
24250
|
+
limit: number().int().positive().optional(),
|
|
24251
|
+
/**
|
|
24252
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
24253
|
+
* behaviour, kept so no caller breaks.
|
|
24254
|
+
*
|
|
24255
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
24256
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
24257
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
24258
|
+
* metadata without them — and the browser then caches the images.
|
|
24259
|
+
*
|
|
24260
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
24261
|
+
* plates were the one gallery list left without it.
|
|
24262
|
+
*
|
|
24263
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
24264
|
+
* next train.** The hub router validates cap inputs against its own
|
|
24265
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
24266
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
24267
|
+
*/
|
|
24268
|
+
includeCrops: boolean().optional()
|
|
24125
24269
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
24126
24270
|
deviceId: number().int(),
|
|
24127
24271
|
trackId: string()
|
|
24128
24272
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
24129
24273
|
text: string().min(1),
|
|
24130
24274
|
maxDistance: number().int().min(0).optional(),
|
|
24131
|
-
limit: number().int().positive().optional()
|
|
24275
|
+
limit: number().int().positive().optional(),
|
|
24276
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
24277
|
+
includeCrops: boolean().optional()
|
|
24132
24278
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
24133
24279
|
maxDistance: number().int().min(0).optional(),
|
|
24134
24280
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -24142,7 +24288,13 @@ method(object({
|
|
|
24142
24288
|
}), method(object({ plateId: string() }), _void(), {
|
|
24143
24289
|
kind: "mutation",
|
|
24144
24290
|
auth: "admin"
|
|
24145
|
-
}), method(
|
|
24291
|
+
}), method(object({
|
|
24292
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
24293
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
24294
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
24295
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
24296
|
+
* resolves to `false` and is exactly the intended default. */
|
|
24297
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
24146
24298
|
kind: "mutation",
|
|
24147
24299
|
auth: "admin"
|
|
24148
24300
|
}), method(object({
|
|
@@ -29519,6 +29671,12 @@ Object.freeze({
|
|
|
29519
29671
|
addonId: null,
|
|
29520
29672
|
access: "create"
|
|
29521
29673
|
},
|
|
29674
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
29675
|
+
capName: "pipeline-analytics",
|
|
29676
|
+
capScope: "device",
|
|
29677
|
+
addonId: null,
|
|
29678
|
+
access: "create"
|
|
29679
|
+
},
|
|
29522
29680
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
29523
29681
|
capName: "pipeline-analytics",
|
|
29524
29682
|
capScope: "device",
|
|
@@ -29693,6 +29851,12 @@ Object.freeze({
|
|
|
29693
29851
|
addonId: null,
|
|
29694
29852
|
access: "view"
|
|
29695
29853
|
},
|
|
29854
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
29855
|
+
capName: "pipeline-analytics",
|
|
29856
|
+
capScope: "device",
|
|
29857
|
+
addonId: null,
|
|
29858
|
+
access: "view"
|
|
29859
|
+
},
|
|
29696
29860
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
29697
29861
|
capName: "pipeline-analytics",
|
|
29698
29862
|
capScope: "device",
|
|
@@ -29771,6 +29935,12 @@ Object.freeze({
|
|
|
29771
29935
|
addonId: null,
|
|
29772
29936
|
access: "create"
|
|
29773
29937
|
},
|
|
29938
|
+
"pipelineAnalytics.relocateMedia": {
|
|
29939
|
+
capName: "pipeline-analytics",
|
|
29940
|
+
capScope: "device",
|
|
29941
|
+
addonId: null,
|
|
29942
|
+
access: "create"
|
|
29943
|
+
},
|
|
29774
29944
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
29775
29945
|
capName: "pipeline-analytics",
|
|
29776
29946
|
capScope: "device",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-mqtt-broker",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.29",
|
|
4
4
|
"description": "MQTT broker registry addon for CamStack — manages external broker entries + an optional embedded aedes broker. Consumers spin up their own `mqtt.js` clients via the `mqtt-broker` cap.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|