@camstack/addon-import-alexa 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
|
@@ -6669,7 +6669,7 @@ function method(input, output, options) {
|
|
|
6669
6669
|
input,
|
|
6670
6670
|
output,
|
|
6671
6671
|
kind: options?.kind ?? "query",
|
|
6672
|
-
auth: options
|
|
6672
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6673
6673
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6674
6674
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6675
6675
|
timeoutMs: options?.timeoutMs
|
|
@@ -6693,7 +6693,7 @@ function event(data) {
|
|
|
6693
6693
|
}
|
|
6694
6694
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6695
6695
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6696
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6696
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6697
6697
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6698
6698
|
DeviceType["Camera"] = "camera";
|
|
6699
6699
|
DeviceType["Hub"] = "hub";
|
|
@@ -7014,7 +7014,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
7014
7014
|
}({});
|
|
7015
7015
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
7016
7016
|
var VersionOutputSchema = object({ version: string() });
|
|
7017
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
7017
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
7018
7018
|
/**
|
|
7019
7019
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
7020
7020
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7759,24 +7759,6 @@ var RecordingRetentionSchema = object({
|
|
|
7759
7759
|
maxSizeGb: number().min(0).optional()
|
|
7760
7760
|
});
|
|
7761
7761
|
/**
|
|
7762
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7763
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7764
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7765
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7766
|
-
*
|
|
7767
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7768
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7769
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7770
|
-
* written with.
|
|
7771
|
-
*/
|
|
7772
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7773
|
-
"minimal",
|
|
7774
|
-
"low",
|
|
7775
|
-
"standard",
|
|
7776
|
-
"high",
|
|
7777
|
-
"max"
|
|
7778
|
-
]);
|
|
7779
|
-
/**
|
|
7780
7762
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7781
7763
|
*
|
|
7782
7764
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7784,7 +7766,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7784
7766
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7785
7767
|
*
|
|
7786
7768
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7787
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7769
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7770
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7771
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7772
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7773
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7788
7774
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7789
7775
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7790
7776
|
*/
|
|
@@ -7807,14 +7793,7 @@ var RecordingConfigSchema = object({
|
|
|
7807
7793
|
* "off" is the absence of a covering band, never a band value.
|
|
7808
7794
|
*/
|
|
7809
7795
|
bands: array(RecordingBandSchema).default([]),
|
|
7810
|
-
retention: RecordingRetentionSchema.optional()
|
|
7811
|
-
/**
|
|
7812
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7813
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7814
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7815
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7816
|
-
*/
|
|
7817
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7796
|
+
retention: RecordingRetentionSchema.optional()
|
|
7818
7797
|
}).strict();
|
|
7819
7798
|
/**
|
|
7820
7799
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7890,10 +7869,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7890
7869
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7891
7870
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7892
7871
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7893
|
-
var
|
|
7872
|
+
var RelocateMediaInputSchema = object({
|
|
7894
7873
|
toLocationId: string(),
|
|
7895
7874
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7896
|
-
})
|
|
7875
|
+
});
|
|
7876
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7897
7877
|
/** The independently selectable logical storage classes. `recordings`
|
|
7898
7878
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7899
7879
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8188,7 +8168,26 @@ var LabelDefinitionSchema = object({
|
|
|
8188
8168
|
description: string().optional(),
|
|
8189
8169
|
icon: string().optional()
|
|
8190
8170
|
});
|
|
8191
|
-
|
|
8171
|
+
/**
|
|
8172
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8173
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8174
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8175
|
+
* detection pipeline executor actually routes.
|
|
8176
|
+
*
|
|
8177
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8178
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8179
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8180
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8181
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8182
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8183
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8184
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8185
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8186
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8187
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8188
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8189
|
+
*/
|
|
8190
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8192
8191
|
mapping: record(string(), _enum([
|
|
8193
8192
|
"person",
|
|
8194
8193
|
"vehicle",
|
|
@@ -8393,7 +8392,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8393
8392
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8394
8393
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8395
8394
|
*/
|
|
8396
|
-
classMap:
|
|
8395
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8397
8396
|
});
|
|
8398
8397
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8399
8398
|
format: literal("openvino"),
|
|
@@ -8423,7 +8422,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8423
8422
|
"segmentation"
|
|
8424
8423
|
]),
|
|
8425
8424
|
faceAlignment: boolean().optional(),
|
|
8426
|
-
classMap:
|
|
8425
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8427
8426
|
});
|
|
8428
8427
|
var ConvertResultSchema = object({
|
|
8429
8428
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9286,7 +9285,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9286
9285
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9287
9286
|
sectionLabel: string().optional()
|
|
9288
9287
|
});
|
|
9289
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9288
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9290
9289
|
var AddonHttpRouteSchema = object({
|
|
9291
9290
|
method: _enum([
|
|
9292
9291
|
"GET",
|
|
@@ -9540,7 +9539,7 @@ var WidgetMetadataSchema = object({
|
|
|
9540
9539
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9541
9540
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9542
9541
|
});
|
|
9543
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9542
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9544
9543
|
/**
|
|
9545
9544
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9546
9545
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11213,7 +11212,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11213
11212
|
stepId: string(),
|
|
11214
11213
|
entry: ModelCatalogEntrySchema
|
|
11215
11214
|
});
|
|
11216
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11215
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11217
11216
|
/**
|
|
11218
11217
|
* Query filter for settings-store collections.
|
|
11219
11218
|
*/
|
|
@@ -11300,7 +11299,8 @@ method(object({
|
|
|
11300
11299
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11301
11300
|
namespace: string().optional(),
|
|
11302
11301
|
collection: string(),
|
|
11303
|
-
filter: QueryFilterSchema.optional()
|
|
11302
|
+
filter: QueryFilterSchema.optional(),
|
|
11303
|
+
columns: array(string()).readonly().optional()
|
|
11304
11304
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11305
11305
|
namespace: string().optional(),
|
|
11306
11306
|
collection: string(),
|
|
@@ -11363,46 +11363,87 @@ var EngineInfoSchema = object({
|
|
|
11363
11363
|
kind: _enum(["relational", "vector"]),
|
|
11364
11364
|
displayName: string()
|
|
11365
11365
|
});
|
|
11366
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11366
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11367
11367
|
namespace: string().optional(),
|
|
11368
11368
|
collection: string(),
|
|
11369
11369
|
key: string()
|
|
11370
|
-
}), unknown()), method(object({
|
|
11370
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11371
11371
|
namespace: string().optional(),
|
|
11372
11372
|
collection: string(),
|
|
11373
11373
|
key: string(),
|
|
11374
11374
|
value: unknown()
|
|
11375
|
-
}), _void(), {
|
|
11375
|
+
}), _void(), {
|
|
11376
|
+
kind: "mutation",
|
|
11377
|
+
auth: "admin"
|
|
11378
|
+
}), method(object({
|
|
11376
11379
|
namespace: string().optional(),
|
|
11377
11380
|
collection: string(),
|
|
11378
|
-
filter: QueryFilterSchema.optional()
|
|
11379
|
-
|
|
11381
|
+
filter: QueryFilterSchema.optional(),
|
|
11382
|
+
/**
|
|
11383
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11384
|
+
*
|
|
11385
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11386
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11387
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11388
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11389
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11390
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11391
|
+
*
|
|
11392
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11393
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11394
|
+
* interface the engine destructures from. The field existed on both
|
|
11395
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11396
|
+
* registered provider against `InferProvider<cap>` —
|
|
11397
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11398
|
+
*
|
|
11399
|
+
* It is declared here anyway, and must stay in step with
|
|
11400
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11401
|
+
* to be able to see that this call carries a projection.
|
|
11402
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11403
|
+
*/
|
|
11404
|
+
columns: array(string()).readonly().optional()
|
|
11405
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11380
11406
|
namespace: string().optional(),
|
|
11381
11407
|
collection: string(),
|
|
11382
11408
|
record: SettingsRecordSchema
|
|
11383
|
-
}), _void(), {
|
|
11409
|
+
}), _void(), {
|
|
11410
|
+
kind: "mutation",
|
|
11411
|
+
auth: "admin"
|
|
11412
|
+
}), method(object({
|
|
11384
11413
|
namespace: string().optional(),
|
|
11385
11414
|
collection: string(),
|
|
11386
11415
|
id: string(),
|
|
11387
11416
|
data: record(string(), unknown())
|
|
11388
|
-
}), _void(), {
|
|
11417
|
+
}), _void(), {
|
|
11418
|
+
kind: "mutation",
|
|
11419
|
+
auth: "admin"
|
|
11420
|
+
}), method(object({
|
|
11389
11421
|
namespace: string().optional(),
|
|
11390
11422
|
collection: string(),
|
|
11391
11423
|
key: string()
|
|
11392
|
-
}), _void(), {
|
|
11424
|
+
}), _void(), {
|
|
11425
|
+
kind: "mutation",
|
|
11426
|
+
auth: "admin"
|
|
11427
|
+
}), method(object({
|
|
11393
11428
|
namespace: string().optional(),
|
|
11394
11429
|
collection: string(),
|
|
11395
11430
|
filter: MutationFilterSchema
|
|
11396
|
-
}), object({ deleted: number().int() }), {
|
|
11431
|
+
}), object({ deleted: number().int() }), {
|
|
11432
|
+
kind: "mutation",
|
|
11433
|
+
auth: "admin"
|
|
11434
|
+
}), method(object({
|
|
11397
11435
|
namespace: string().optional(),
|
|
11398
11436
|
collection: string(),
|
|
11399
11437
|
filter: MutationFilterSchema,
|
|
11400
11438
|
data: record(string(), unknown())
|
|
11401
|
-
}), object({ updated: number().int() }), {
|
|
11439
|
+
}), object({ updated: number().int() }), {
|
|
11440
|
+
kind: "mutation",
|
|
11441
|
+
auth: "admin"
|
|
11442
|
+
}), method(object({
|
|
11402
11443
|
namespace: string().optional(),
|
|
11403
11444
|
collection: string(),
|
|
11404
11445
|
filter: QueryFilterSchema.optional()
|
|
11405
|
-
}), number()), method(object({
|
|
11446
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11406
11447
|
namespace: string().optional(),
|
|
11407
11448
|
collection: string(),
|
|
11408
11449
|
field: string(),
|
|
@@ -11412,15 +11453,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11412
11453
|
}), array(object({
|
|
11413
11454
|
bucket: number().int(),
|
|
11414
11455
|
count: number().int()
|
|
11415
|
-
})).readonly()), method(object({
|
|
11456
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11416
11457
|
namespace: string().optional(),
|
|
11417
11458
|
collection: string()
|
|
11418
|
-
}), boolean()), method(object({
|
|
11459
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11419
11460
|
namespace: string().optional(),
|
|
11420
11461
|
collection: string(),
|
|
11421
11462
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11422
11463
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11423
|
-
}), _void(), {
|
|
11464
|
+
}), _void(), {
|
|
11465
|
+
kind: "mutation",
|
|
11466
|
+
auth: "admin"
|
|
11467
|
+
});
|
|
11424
11468
|
/**
|
|
11425
11469
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11426
11470
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12727,7 +12771,7 @@ method(object({
|
|
|
12727
12771
|
crop: _instanceof(Uint8Array),
|
|
12728
12772
|
width: number(),
|
|
12729
12773
|
height: number()
|
|
12730
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12774
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12731
12775
|
/**
|
|
12732
12776
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12733
12777
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -13020,19 +13064,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
13020
13064
|
runtime: ManagedRuntimeConfigSchema,
|
|
13021
13065
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
13022
13066
|
timeoutMs: number().int().positive().optional()
|
|
13023
|
-
}), LlmGenerateResultSchema, {
|
|
13067
|
+
}), LlmGenerateResultSchema, {
|
|
13068
|
+
kind: "mutation",
|
|
13069
|
+
auth: "admin"
|
|
13070
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
13024
13071
|
kind: "mutation",
|
|
13025
13072
|
auth: "admin"
|
|
13026
13073
|
}), method(object({}), _void(), {
|
|
13027
13074
|
kind: "mutation",
|
|
13028
13075
|
auth: "admin"
|
|
13029
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13076
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13030
13077
|
kind: "mutation",
|
|
13031
13078
|
auth: "admin"
|
|
13032
13079
|
}), method(object({ file: string() }), _void(), {
|
|
13033
13080
|
kind: "mutation",
|
|
13034
13081
|
auth: "admin"
|
|
13035
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
13082
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
13036
13083
|
/**
|
|
13037
13084
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
13038
13085
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16543,7 +16590,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16543
16590
|
*/
|
|
16544
16591
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16545
16592
|
});
|
|
16546
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16593
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16547
16594
|
/**
|
|
16548
16595
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16549
16596
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17738,6 +17785,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17738
17785
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17739
17786
|
kind: "mutation",
|
|
17740
17787
|
auth: "admin"
|
|
17788
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17789
|
+
kind: "mutation",
|
|
17790
|
+
auth: "admin"
|
|
17791
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17792
|
+
kind: "query",
|
|
17793
|
+
auth: "admin"
|
|
17794
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17795
|
+
kind: "mutation",
|
|
17796
|
+
auth: "admin"
|
|
17741
17797
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17742
17798
|
kind: "query",
|
|
17743
17799
|
auth: "admin"
|
|
@@ -17892,6 +17948,11 @@ object({
|
|
|
17892
17948
|
"jpeg"
|
|
17893
17949
|
])
|
|
17894
17950
|
});
|
|
17951
|
+
/**
|
|
17952
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17953
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17954
|
+
* other process or execution group.
|
|
17955
|
+
*/
|
|
17895
17956
|
var FrameRefSchema = object({
|
|
17896
17957
|
registryId: string().min(1),
|
|
17897
17958
|
id: string().min(1),
|
|
@@ -20097,7 +20158,7 @@ method(object({
|
|
|
20097
20158
|
* linking rather than produce an eternal token.
|
|
20098
20159
|
*/
|
|
20099
20160
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
20100
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
20161
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
20101
20162
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
20102
20163
|
providerId: string().min(1),
|
|
20103
20164
|
displayName: string().min(1),
|
|
@@ -20192,10 +20253,13 @@ var EvictResultSchema = object({
|
|
|
20192
20253
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20193
20254
|
exhausted: boolean()
|
|
20194
20255
|
});
|
|
20195
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20256
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20196
20257
|
locationId: string(),
|
|
20197
20258
|
targetBytes: number().int().positive()
|
|
20198
|
-
}), EvictResultSchema, {
|
|
20259
|
+
}), EvictResultSchema, {
|
|
20260
|
+
kind: "mutation",
|
|
20261
|
+
auth: "admin"
|
|
20262
|
+
});
|
|
20199
20263
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20200
20264
|
kind: "mutation",
|
|
20201
20265
|
auth: "admin"
|
|
@@ -20255,26 +20319,50 @@ var ReadChunkInputSchema = object({
|
|
|
20255
20319
|
length: number()
|
|
20256
20320
|
});
|
|
20257
20321
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20258
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20322
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20259
20323
|
location: StorageLocationSchema,
|
|
20260
20324
|
relativePath: string()
|
|
20261
|
-
}), string()), method(object({
|
|
20325
|
+
}), string(), { auth: "admin" }), method(object({
|
|
20262
20326
|
location: StorageLocationSchema,
|
|
20263
20327
|
relativePath: string(),
|
|
20264
20328
|
data: _instanceof(Uint8Array)
|
|
20265
|
-
}), _void(), {
|
|
20329
|
+
}), _void(), {
|
|
20330
|
+
kind: "mutation",
|
|
20331
|
+
auth: "admin"
|
|
20332
|
+
}), method(object({
|
|
20266
20333
|
location: StorageLocationSchema,
|
|
20267
20334
|
relativePath: string()
|
|
20268
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20335
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20269
20336
|
location: StorageLocationSchema,
|
|
20270
20337
|
relativePath: string()
|
|
20271
|
-
}), boolean()), method(object({
|
|
20338
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20272
20339
|
location: StorageLocationSchema,
|
|
20273
20340
|
prefix: string().optional()
|
|
20274
|
-
}), array(string()).readonly()), method(object({
|
|
20341
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
20275
20342
|
location: StorageLocationSchema,
|
|
20276
20343
|
relativePath: string()
|
|
20277
|
-
}), _void(), {
|
|
20344
|
+
}), _void(), {
|
|
20345
|
+
kind: "mutation",
|
|
20346
|
+
auth: "admin"
|
|
20347
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20348
|
+
kind: "mutation",
|
|
20349
|
+
auth: "admin"
|
|
20350
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20351
|
+
kind: "mutation",
|
|
20352
|
+
auth: "admin"
|
|
20353
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20354
|
+
kind: "mutation",
|
|
20355
|
+
auth: "admin"
|
|
20356
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20357
|
+
kind: "mutation",
|
|
20358
|
+
auth: "admin"
|
|
20359
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20360
|
+
kind: "mutation",
|
|
20361
|
+
auth: "admin"
|
|
20362
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20363
|
+
kind: "mutation",
|
|
20364
|
+
auth: "admin"
|
|
20365
|
+
});
|
|
20278
20366
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20279
20367
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20280
20368
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20532,7 +20620,8 @@ method(object({
|
|
|
20532
20620
|
access: "create"
|
|
20533
20621
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20534
20622
|
kind: "mutation",
|
|
20535
|
-
access: "view"
|
|
20623
|
+
access: "view",
|
|
20624
|
+
auth: "admin"
|
|
20536
20625
|
}), method(object({
|
|
20537
20626
|
/** Required — the user the assertion belongs to (verified). */
|
|
20538
20627
|
userId: string(),
|
|
@@ -20540,10 +20629,12 @@ method(object({
|
|
|
20540
20629
|
response: record(string(), unknown())
|
|
20541
20630
|
}), object({ verified: boolean() }), {
|
|
20542
20631
|
kind: "mutation",
|
|
20543
|
-
access: "view"
|
|
20632
|
+
access: "view",
|
|
20633
|
+
auth: "admin"
|
|
20544
20634
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20545
20635
|
kind: "mutation",
|
|
20546
|
-
access: "view"
|
|
20636
|
+
access: "view",
|
|
20637
|
+
auth: "admin"
|
|
20547
20638
|
}), method(object({
|
|
20548
20639
|
/** AuthenticationResponseJSON from the browser. */
|
|
20549
20640
|
response: record(string(), unknown()) }), object({
|
|
@@ -20551,7 +20642,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20551
20642
|
userId: string().nullable()
|
|
20552
20643
|
}), {
|
|
20553
20644
|
kind: "mutation",
|
|
20554
|
-
access: "view"
|
|
20645
|
+
access: "view",
|
|
20646
|
+
auth: "admin"
|
|
20555
20647
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20556
20648
|
userId: string(),
|
|
20557
20649
|
credentialId: string()
|
|
@@ -20723,7 +20815,19 @@ var VectorStatsResultSchema = object({
|
|
|
20723
20815
|
/** False when the backend ranks approximately. */
|
|
20724
20816
|
exact: boolean()
|
|
20725
20817
|
});
|
|
20726
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20818
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20819
|
+
kind: "mutation",
|
|
20820
|
+
auth: "admin"
|
|
20821
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20822
|
+
kind: "mutation",
|
|
20823
|
+
auth: "admin"
|
|
20824
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20825
|
+
kind: "mutation",
|
|
20826
|
+
auth: "admin"
|
|
20827
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20828
|
+
kind: "mutation",
|
|
20829
|
+
auth: "admin"
|
|
20830
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20727
20831
|
var ClipSchema = object({
|
|
20728
20832
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20729
20833
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23193,7 +23297,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23193
23297
|
sizeBytes: number(),
|
|
23194
23298
|
timestamp: number()
|
|
23195
23299
|
});
|
|
23196
|
-
method(
|
|
23300
|
+
method(object({
|
|
23301
|
+
/**
|
|
23302
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23303
|
+
*
|
|
23304
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23305
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23306
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23307
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23308
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23309
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23310
|
+
*
|
|
23311
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23312
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23313
|
+
*
|
|
23314
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23315
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23316
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23317
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23318
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23319
|
+
*/
|
|
23320
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
23197
23321
|
kind: "mutation",
|
|
23198
23322
|
auth: "admin"
|
|
23199
23323
|
}), method(object({
|
|
@@ -26083,8 +26207,10 @@ var PlateInfoSchema = object({
|
|
|
26083
26207
|
keyFrameMediaKey: string().optional(),
|
|
26084
26208
|
base64: string().optional(),
|
|
26085
26209
|
/**
|
|
26086
|
-
* Same crop as a data-plane URL
|
|
26087
|
-
* never inlines JPEG; `listPlates`
|
|
26210
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26211
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26212
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26213
|
+
* left at its `true` default.
|
|
26088
26214
|
*/
|
|
26089
26215
|
cropUrl: string().optional()
|
|
26090
26216
|
});
|
|
@@ -26104,14 +26230,34 @@ var PlateClusterSchema = object({
|
|
|
26104
26230
|
});
|
|
26105
26231
|
method(object({
|
|
26106
26232
|
deviceId: number().int().optional(),
|
|
26107
|
-
limit: number().int().positive().optional()
|
|
26233
|
+
limit: number().int().positive().optional(),
|
|
26234
|
+
/**
|
|
26235
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26236
|
+
* behaviour, kept so no caller breaks.
|
|
26237
|
+
*
|
|
26238
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26239
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26240
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26241
|
+
* metadata without them — and the browser then caches the images.
|
|
26242
|
+
*
|
|
26243
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26244
|
+
* plates were the one gallery list left without it.
|
|
26245
|
+
*
|
|
26246
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26247
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26248
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26249
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26250
|
+
*/
|
|
26251
|
+
includeCrops: boolean().optional()
|
|
26108
26252
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
26109
26253
|
deviceId: number().int(),
|
|
26110
26254
|
trackId: string()
|
|
26111
26255
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
26112
26256
|
text: string().min(1),
|
|
26113
26257
|
maxDistance: number().int().min(0).optional(),
|
|
26114
|
-
limit: number().int().positive().optional()
|
|
26258
|
+
limit: number().int().positive().optional(),
|
|
26259
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26260
|
+
includeCrops: boolean().optional()
|
|
26115
26261
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
26116
26262
|
maxDistance: number().int().min(0).optional(),
|
|
26117
26263
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -26125,7 +26271,13 @@ method(object({
|
|
|
26125
26271
|
}), method(object({ plateId: string() }), _void(), {
|
|
26126
26272
|
kind: "mutation",
|
|
26127
26273
|
auth: "admin"
|
|
26128
|
-
}), method(
|
|
26274
|
+
}), method(object({
|
|
26275
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26276
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26277
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26278
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26279
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26280
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
26129
26281
|
kind: "mutation",
|
|
26130
26282
|
auth: "admin"
|
|
26131
26283
|
}), method(object({
|
|
@@ -33386,6 +33538,12 @@ Object.freeze({
|
|
|
33386
33538
|
addonId: null,
|
|
33387
33539
|
access: "create"
|
|
33388
33540
|
},
|
|
33541
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
33542
|
+
capName: "pipeline-analytics",
|
|
33543
|
+
capScope: "device",
|
|
33544
|
+
addonId: null,
|
|
33545
|
+
access: "create"
|
|
33546
|
+
},
|
|
33389
33547
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33390
33548
|
capName: "pipeline-analytics",
|
|
33391
33549
|
capScope: "device",
|
|
@@ -33560,6 +33718,12 @@ Object.freeze({
|
|
|
33560
33718
|
addonId: null,
|
|
33561
33719
|
access: "view"
|
|
33562
33720
|
},
|
|
33721
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
33722
|
+
capName: "pipeline-analytics",
|
|
33723
|
+
capScope: "device",
|
|
33724
|
+
addonId: null,
|
|
33725
|
+
access: "view"
|
|
33726
|
+
},
|
|
33563
33727
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
33564
33728
|
capName: "pipeline-analytics",
|
|
33565
33729
|
capScope: "device",
|
|
@@ -33638,6 +33802,12 @@ Object.freeze({
|
|
|
33638
33802
|
addonId: null,
|
|
33639
33803
|
access: "create"
|
|
33640
33804
|
},
|
|
33805
|
+
"pipelineAnalytics.relocateMedia": {
|
|
33806
|
+
capName: "pipeline-analytics",
|
|
33807
|
+
capScope: "device",
|
|
33808
|
+
addonId: null,
|
|
33809
|
+
access: "create"
|
|
33810
|
+
},
|
|
33641
33811
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
33642
33812
|
capName: "pipeline-analytics",
|
|
33643
33813
|
capScope: "device",
|
package/dist/addon.mjs
CHANGED
|
@@ -6669,7 +6669,7 @@ function method(input, output, options) {
|
|
|
6669
6669
|
input,
|
|
6670
6670
|
output,
|
|
6671
6671
|
kind: options?.kind ?? "query",
|
|
6672
|
-
auth: options
|
|
6672
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6673
6673
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6674
6674
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6675
6675
|
timeoutMs: options?.timeoutMs
|
|
@@ -6693,7 +6693,7 @@ function event(data) {
|
|
|
6693
6693
|
}
|
|
6694
6694
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6695
6695
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6696
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6696
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6697
6697
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6698
6698
|
DeviceType["Camera"] = "camera";
|
|
6699
6699
|
DeviceType["Hub"] = "hub";
|
|
@@ -7014,7 +7014,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
7014
7014
|
}({});
|
|
7015
7015
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
7016
7016
|
var VersionOutputSchema = object({ version: string() });
|
|
7017
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
7017
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
7018
7018
|
/**
|
|
7019
7019
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
7020
7020
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7759,24 +7759,6 @@ var RecordingRetentionSchema = object({
|
|
|
7759
7759
|
maxSizeGb: number().min(0).optional()
|
|
7760
7760
|
});
|
|
7761
7761
|
/**
|
|
7762
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7763
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7764
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7765
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7766
|
-
*
|
|
7767
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7768
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7769
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7770
|
-
* written with.
|
|
7771
|
-
*/
|
|
7772
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7773
|
-
"minimal",
|
|
7774
|
-
"low",
|
|
7775
|
-
"standard",
|
|
7776
|
-
"high",
|
|
7777
|
-
"max"
|
|
7778
|
-
]);
|
|
7779
|
-
/**
|
|
7780
7762
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7781
7763
|
*
|
|
7782
7764
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7784,7 +7766,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7784
7766
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7785
7767
|
*
|
|
7786
7768
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7787
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7769
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7770
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7771
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7772
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7773
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7788
7774
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7789
7775
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7790
7776
|
*/
|
|
@@ -7807,14 +7793,7 @@ var RecordingConfigSchema = object({
|
|
|
7807
7793
|
* "off" is the absence of a covering band, never a band value.
|
|
7808
7794
|
*/
|
|
7809
7795
|
bands: array(RecordingBandSchema).default([]),
|
|
7810
|
-
retention: RecordingRetentionSchema.optional()
|
|
7811
|
-
/**
|
|
7812
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7813
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7814
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7815
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7816
|
-
*/
|
|
7817
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7796
|
+
retention: RecordingRetentionSchema.optional()
|
|
7818
7797
|
}).strict();
|
|
7819
7798
|
/**
|
|
7820
7799
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7890,10 +7869,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7890
7869
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7891
7870
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7892
7871
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7893
|
-
var
|
|
7872
|
+
var RelocateMediaInputSchema = object({
|
|
7894
7873
|
toLocationId: string(),
|
|
7895
7874
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7896
|
-
})
|
|
7875
|
+
});
|
|
7876
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7897
7877
|
/** The independently selectable logical storage classes. `recordings`
|
|
7898
7878
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7899
7879
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8188,7 +8168,26 @@ var LabelDefinitionSchema = object({
|
|
|
8188
8168
|
description: string().optional(),
|
|
8189
8169
|
icon: string().optional()
|
|
8190
8170
|
});
|
|
8191
|
-
|
|
8171
|
+
/**
|
|
8172
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8173
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8174
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8175
|
+
* detection pipeline executor actually routes.
|
|
8176
|
+
*
|
|
8177
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8178
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8179
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8180
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8181
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8182
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8183
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8184
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8185
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8186
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8187
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8188
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8189
|
+
*/
|
|
8190
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8192
8191
|
mapping: record(string(), _enum([
|
|
8193
8192
|
"person",
|
|
8194
8193
|
"vehicle",
|
|
@@ -8393,7 +8392,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8393
8392
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8394
8393
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8395
8394
|
*/
|
|
8396
|
-
classMap:
|
|
8395
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8397
8396
|
});
|
|
8398
8397
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8399
8398
|
format: literal("openvino"),
|
|
@@ -8423,7 +8422,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8423
8422
|
"segmentation"
|
|
8424
8423
|
]),
|
|
8425
8424
|
faceAlignment: boolean().optional(),
|
|
8426
|
-
classMap:
|
|
8425
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8427
8426
|
});
|
|
8428
8427
|
var ConvertResultSchema = object({
|
|
8429
8428
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9286,7 +9285,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9286
9285
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9287
9286
|
sectionLabel: string().optional()
|
|
9288
9287
|
});
|
|
9289
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9288
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9290
9289
|
var AddonHttpRouteSchema = object({
|
|
9291
9290
|
method: _enum([
|
|
9292
9291
|
"GET",
|
|
@@ -9540,7 +9539,7 @@ var WidgetMetadataSchema = object({
|
|
|
9540
9539
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9541
9540
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9542
9541
|
});
|
|
9543
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9542
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9544
9543
|
/**
|
|
9545
9544
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9546
9545
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11213,7 +11212,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11213
11212
|
stepId: string(),
|
|
11214
11213
|
entry: ModelCatalogEntrySchema
|
|
11215
11214
|
});
|
|
11216
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11215
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11217
11216
|
/**
|
|
11218
11217
|
* Query filter for settings-store collections.
|
|
11219
11218
|
*/
|
|
@@ -11300,7 +11299,8 @@ method(object({
|
|
|
11300
11299
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11301
11300
|
namespace: string().optional(),
|
|
11302
11301
|
collection: string(),
|
|
11303
|
-
filter: QueryFilterSchema.optional()
|
|
11302
|
+
filter: QueryFilterSchema.optional(),
|
|
11303
|
+
columns: array(string()).readonly().optional()
|
|
11304
11304
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11305
11305
|
namespace: string().optional(),
|
|
11306
11306
|
collection: string(),
|
|
@@ -11363,46 +11363,87 @@ var EngineInfoSchema = object({
|
|
|
11363
11363
|
kind: _enum(["relational", "vector"]),
|
|
11364
11364
|
displayName: string()
|
|
11365
11365
|
});
|
|
11366
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11366
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11367
11367
|
namespace: string().optional(),
|
|
11368
11368
|
collection: string(),
|
|
11369
11369
|
key: string()
|
|
11370
|
-
}), unknown()), method(object({
|
|
11370
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11371
11371
|
namespace: string().optional(),
|
|
11372
11372
|
collection: string(),
|
|
11373
11373
|
key: string(),
|
|
11374
11374
|
value: unknown()
|
|
11375
|
-
}), _void(), {
|
|
11375
|
+
}), _void(), {
|
|
11376
|
+
kind: "mutation",
|
|
11377
|
+
auth: "admin"
|
|
11378
|
+
}), method(object({
|
|
11376
11379
|
namespace: string().optional(),
|
|
11377
11380
|
collection: string(),
|
|
11378
|
-
filter: QueryFilterSchema.optional()
|
|
11379
|
-
|
|
11381
|
+
filter: QueryFilterSchema.optional(),
|
|
11382
|
+
/**
|
|
11383
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11384
|
+
*
|
|
11385
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11386
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11387
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11388
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11389
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11390
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11391
|
+
*
|
|
11392
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11393
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11394
|
+
* interface the engine destructures from. The field existed on both
|
|
11395
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11396
|
+
* registered provider against `InferProvider<cap>` —
|
|
11397
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11398
|
+
*
|
|
11399
|
+
* It is declared here anyway, and must stay in step with
|
|
11400
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11401
|
+
* to be able to see that this call carries a projection.
|
|
11402
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11403
|
+
*/
|
|
11404
|
+
columns: array(string()).readonly().optional()
|
|
11405
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11380
11406
|
namespace: string().optional(),
|
|
11381
11407
|
collection: string(),
|
|
11382
11408
|
record: SettingsRecordSchema
|
|
11383
|
-
}), _void(), {
|
|
11409
|
+
}), _void(), {
|
|
11410
|
+
kind: "mutation",
|
|
11411
|
+
auth: "admin"
|
|
11412
|
+
}), method(object({
|
|
11384
11413
|
namespace: string().optional(),
|
|
11385
11414
|
collection: string(),
|
|
11386
11415
|
id: string(),
|
|
11387
11416
|
data: record(string(), unknown())
|
|
11388
|
-
}), _void(), {
|
|
11417
|
+
}), _void(), {
|
|
11418
|
+
kind: "mutation",
|
|
11419
|
+
auth: "admin"
|
|
11420
|
+
}), method(object({
|
|
11389
11421
|
namespace: string().optional(),
|
|
11390
11422
|
collection: string(),
|
|
11391
11423
|
key: string()
|
|
11392
|
-
}), _void(), {
|
|
11424
|
+
}), _void(), {
|
|
11425
|
+
kind: "mutation",
|
|
11426
|
+
auth: "admin"
|
|
11427
|
+
}), method(object({
|
|
11393
11428
|
namespace: string().optional(),
|
|
11394
11429
|
collection: string(),
|
|
11395
11430
|
filter: MutationFilterSchema
|
|
11396
|
-
}), object({ deleted: number().int() }), {
|
|
11431
|
+
}), object({ deleted: number().int() }), {
|
|
11432
|
+
kind: "mutation",
|
|
11433
|
+
auth: "admin"
|
|
11434
|
+
}), method(object({
|
|
11397
11435
|
namespace: string().optional(),
|
|
11398
11436
|
collection: string(),
|
|
11399
11437
|
filter: MutationFilterSchema,
|
|
11400
11438
|
data: record(string(), unknown())
|
|
11401
|
-
}), object({ updated: number().int() }), {
|
|
11439
|
+
}), object({ updated: number().int() }), {
|
|
11440
|
+
kind: "mutation",
|
|
11441
|
+
auth: "admin"
|
|
11442
|
+
}), method(object({
|
|
11402
11443
|
namespace: string().optional(),
|
|
11403
11444
|
collection: string(),
|
|
11404
11445
|
filter: QueryFilterSchema.optional()
|
|
11405
|
-
}), number()), method(object({
|
|
11446
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11406
11447
|
namespace: string().optional(),
|
|
11407
11448
|
collection: string(),
|
|
11408
11449
|
field: string(),
|
|
@@ -11412,15 +11453,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11412
11453
|
}), array(object({
|
|
11413
11454
|
bucket: number().int(),
|
|
11414
11455
|
count: number().int()
|
|
11415
|
-
})).readonly()), method(object({
|
|
11456
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11416
11457
|
namespace: string().optional(),
|
|
11417
11458
|
collection: string()
|
|
11418
|
-
}), boolean()), method(object({
|
|
11459
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11419
11460
|
namespace: string().optional(),
|
|
11420
11461
|
collection: string(),
|
|
11421
11462
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11422
11463
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11423
|
-
}), _void(), {
|
|
11464
|
+
}), _void(), {
|
|
11465
|
+
kind: "mutation",
|
|
11466
|
+
auth: "admin"
|
|
11467
|
+
});
|
|
11424
11468
|
/**
|
|
11425
11469
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11426
11470
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12727,7 +12771,7 @@ method(object({
|
|
|
12727
12771
|
crop: _instanceof(Uint8Array),
|
|
12728
12772
|
width: number(),
|
|
12729
12773
|
height: number()
|
|
12730
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12774
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12731
12775
|
/**
|
|
12732
12776
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12733
12777
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -13020,19 +13064,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
13020
13064
|
runtime: ManagedRuntimeConfigSchema,
|
|
13021
13065
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
13022
13066
|
timeoutMs: number().int().positive().optional()
|
|
13023
|
-
}), LlmGenerateResultSchema, {
|
|
13067
|
+
}), LlmGenerateResultSchema, {
|
|
13068
|
+
kind: "mutation",
|
|
13069
|
+
auth: "admin"
|
|
13070
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
13024
13071
|
kind: "mutation",
|
|
13025
13072
|
auth: "admin"
|
|
13026
13073
|
}), method(object({}), _void(), {
|
|
13027
13074
|
kind: "mutation",
|
|
13028
13075
|
auth: "admin"
|
|
13029
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13076
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13030
13077
|
kind: "mutation",
|
|
13031
13078
|
auth: "admin"
|
|
13032
13079
|
}), method(object({ file: string() }), _void(), {
|
|
13033
13080
|
kind: "mutation",
|
|
13034
13081
|
auth: "admin"
|
|
13035
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
13082
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
13036
13083
|
/**
|
|
13037
13084
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
13038
13085
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16543,7 +16590,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16543
16590
|
*/
|
|
16544
16591
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16545
16592
|
});
|
|
16546
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16593
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16547
16594
|
/**
|
|
16548
16595
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16549
16596
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17738,6 +17785,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17738
17785
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17739
17786
|
kind: "mutation",
|
|
17740
17787
|
auth: "admin"
|
|
17788
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17789
|
+
kind: "mutation",
|
|
17790
|
+
auth: "admin"
|
|
17791
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17792
|
+
kind: "query",
|
|
17793
|
+
auth: "admin"
|
|
17794
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17795
|
+
kind: "mutation",
|
|
17796
|
+
auth: "admin"
|
|
17741
17797
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17742
17798
|
kind: "query",
|
|
17743
17799
|
auth: "admin"
|
|
@@ -17892,6 +17948,11 @@ object({
|
|
|
17892
17948
|
"jpeg"
|
|
17893
17949
|
])
|
|
17894
17950
|
});
|
|
17951
|
+
/**
|
|
17952
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17953
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17954
|
+
* other process or execution group.
|
|
17955
|
+
*/
|
|
17895
17956
|
var FrameRefSchema = object({
|
|
17896
17957
|
registryId: string().min(1),
|
|
17897
17958
|
id: string().min(1),
|
|
@@ -20097,7 +20158,7 @@ method(object({
|
|
|
20097
20158
|
* linking rather than produce an eternal token.
|
|
20098
20159
|
*/
|
|
20099
20160
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
20100
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
20161
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
20101
20162
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
20102
20163
|
providerId: string().min(1),
|
|
20103
20164
|
displayName: string().min(1),
|
|
@@ -20192,10 +20253,13 @@ var EvictResultSchema = object({
|
|
|
20192
20253
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20193
20254
|
exhausted: boolean()
|
|
20194
20255
|
});
|
|
20195
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20256
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20196
20257
|
locationId: string(),
|
|
20197
20258
|
targetBytes: number().int().positive()
|
|
20198
|
-
}), EvictResultSchema, {
|
|
20259
|
+
}), EvictResultSchema, {
|
|
20260
|
+
kind: "mutation",
|
|
20261
|
+
auth: "admin"
|
|
20262
|
+
});
|
|
20199
20263
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20200
20264
|
kind: "mutation",
|
|
20201
20265
|
auth: "admin"
|
|
@@ -20255,26 +20319,50 @@ var ReadChunkInputSchema = object({
|
|
|
20255
20319
|
length: number()
|
|
20256
20320
|
});
|
|
20257
20321
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20258
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20322
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20259
20323
|
location: StorageLocationSchema,
|
|
20260
20324
|
relativePath: string()
|
|
20261
|
-
}), string()), method(object({
|
|
20325
|
+
}), string(), { auth: "admin" }), method(object({
|
|
20262
20326
|
location: StorageLocationSchema,
|
|
20263
20327
|
relativePath: string(),
|
|
20264
20328
|
data: _instanceof(Uint8Array)
|
|
20265
|
-
}), _void(), {
|
|
20329
|
+
}), _void(), {
|
|
20330
|
+
kind: "mutation",
|
|
20331
|
+
auth: "admin"
|
|
20332
|
+
}), method(object({
|
|
20266
20333
|
location: StorageLocationSchema,
|
|
20267
20334
|
relativePath: string()
|
|
20268
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20335
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20269
20336
|
location: StorageLocationSchema,
|
|
20270
20337
|
relativePath: string()
|
|
20271
|
-
}), boolean()), method(object({
|
|
20338
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20272
20339
|
location: StorageLocationSchema,
|
|
20273
20340
|
prefix: string().optional()
|
|
20274
|
-
}), array(string()).readonly()), method(object({
|
|
20341
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
20275
20342
|
location: StorageLocationSchema,
|
|
20276
20343
|
relativePath: string()
|
|
20277
|
-
}), _void(), {
|
|
20344
|
+
}), _void(), {
|
|
20345
|
+
kind: "mutation",
|
|
20346
|
+
auth: "admin"
|
|
20347
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20348
|
+
kind: "mutation",
|
|
20349
|
+
auth: "admin"
|
|
20350
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20351
|
+
kind: "mutation",
|
|
20352
|
+
auth: "admin"
|
|
20353
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20354
|
+
kind: "mutation",
|
|
20355
|
+
auth: "admin"
|
|
20356
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20357
|
+
kind: "mutation",
|
|
20358
|
+
auth: "admin"
|
|
20359
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20360
|
+
kind: "mutation",
|
|
20361
|
+
auth: "admin"
|
|
20362
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20363
|
+
kind: "mutation",
|
|
20364
|
+
auth: "admin"
|
|
20365
|
+
});
|
|
20278
20366
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20279
20367
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20280
20368
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20532,7 +20620,8 @@ method(object({
|
|
|
20532
20620
|
access: "create"
|
|
20533
20621
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20534
20622
|
kind: "mutation",
|
|
20535
|
-
access: "view"
|
|
20623
|
+
access: "view",
|
|
20624
|
+
auth: "admin"
|
|
20536
20625
|
}), method(object({
|
|
20537
20626
|
/** Required — the user the assertion belongs to (verified). */
|
|
20538
20627
|
userId: string(),
|
|
@@ -20540,10 +20629,12 @@ method(object({
|
|
|
20540
20629
|
response: record(string(), unknown())
|
|
20541
20630
|
}), object({ verified: boolean() }), {
|
|
20542
20631
|
kind: "mutation",
|
|
20543
|
-
access: "view"
|
|
20632
|
+
access: "view",
|
|
20633
|
+
auth: "admin"
|
|
20544
20634
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20545
20635
|
kind: "mutation",
|
|
20546
|
-
access: "view"
|
|
20636
|
+
access: "view",
|
|
20637
|
+
auth: "admin"
|
|
20547
20638
|
}), method(object({
|
|
20548
20639
|
/** AuthenticationResponseJSON from the browser. */
|
|
20549
20640
|
response: record(string(), unknown()) }), object({
|
|
@@ -20551,7 +20642,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20551
20642
|
userId: string().nullable()
|
|
20552
20643
|
}), {
|
|
20553
20644
|
kind: "mutation",
|
|
20554
|
-
access: "view"
|
|
20645
|
+
access: "view",
|
|
20646
|
+
auth: "admin"
|
|
20555
20647
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20556
20648
|
userId: string(),
|
|
20557
20649
|
credentialId: string()
|
|
@@ -20723,7 +20815,19 @@ var VectorStatsResultSchema = object({
|
|
|
20723
20815
|
/** False when the backend ranks approximately. */
|
|
20724
20816
|
exact: boolean()
|
|
20725
20817
|
});
|
|
20726
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20818
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20819
|
+
kind: "mutation",
|
|
20820
|
+
auth: "admin"
|
|
20821
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20822
|
+
kind: "mutation",
|
|
20823
|
+
auth: "admin"
|
|
20824
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20825
|
+
kind: "mutation",
|
|
20826
|
+
auth: "admin"
|
|
20827
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20828
|
+
kind: "mutation",
|
|
20829
|
+
auth: "admin"
|
|
20830
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20727
20831
|
var ClipSchema = object({
|
|
20728
20832
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20729
20833
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23193,7 +23297,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23193
23297
|
sizeBytes: number(),
|
|
23194
23298
|
timestamp: number()
|
|
23195
23299
|
});
|
|
23196
|
-
method(
|
|
23300
|
+
method(object({
|
|
23301
|
+
/**
|
|
23302
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23303
|
+
*
|
|
23304
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23305
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23306
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23307
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23308
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23309
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23310
|
+
*
|
|
23311
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23312
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23313
|
+
*
|
|
23314
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23315
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23316
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23317
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23318
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23319
|
+
*/
|
|
23320
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
23197
23321
|
kind: "mutation",
|
|
23198
23322
|
auth: "admin"
|
|
23199
23323
|
}), method(object({
|
|
@@ -26083,8 +26207,10 @@ var PlateInfoSchema = object({
|
|
|
26083
26207
|
keyFrameMediaKey: string().optional(),
|
|
26084
26208
|
base64: string().optional(),
|
|
26085
26209
|
/**
|
|
26086
|
-
* Same crop as a data-plane URL
|
|
26087
|
-
* never inlines JPEG; `listPlates`
|
|
26210
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26211
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26212
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26213
|
+
* left at its `true` default.
|
|
26088
26214
|
*/
|
|
26089
26215
|
cropUrl: string().optional()
|
|
26090
26216
|
});
|
|
@@ -26104,14 +26230,34 @@ var PlateClusterSchema = object({
|
|
|
26104
26230
|
});
|
|
26105
26231
|
method(object({
|
|
26106
26232
|
deviceId: number().int().optional(),
|
|
26107
|
-
limit: number().int().positive().optional()
|
|
26233
|
+
limit: number().int().positive().optional(),
|
|
26234
|
+
/**
|
|
26235
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26236
|
+
* behaviour, kept so no caller breaks.
|
|
26237
|
+
*
|
|
26238
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26239
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26240
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26241
|
+
* metadata without them — and the browser then caches the images.
|
|
26242
|
+
*
|
|
26243
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26244
|
+
* plates were the one gallery list left without it.
|
|
26245
|
+
*
|
|
26246
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26247
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26248
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26249
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26250
|
+
*/
|
|
26251
|
+
includeCrops: boolean().optional()
|
|
26108
26252
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
26109
26253
|
deviceId: number().int(),
|
|
26110
26254
|
trackId: string()
|
|
26111
26255
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
26112
26256
|
text: string().min(1),
|
|
26113
26257
|
maxDistance: number().int().min(0).optional(),
|
|
26114
|
-
limit: number().int().positive().optional()
|
|
26258
|
+
limit: number().int().positive().optional(),
|
|
26259
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26260
|
+
includeCrops: boolean().optional()
|
|
26115
26261
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
26116
26262
|
maxDistance: number().int().min(0).optional(),
|
|
26117
26263
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -26125,7 +26271,13 @@ method(object({
|
|
|
26125
26271
|
}), method(object({ plateId: string() }), _void(), {
|
|
26126
26272
|
kind: "mutation",
|
|
26127
26273
|
auth: "admin"
|
|
26128
|
-
}), method(
|
|
26274
|
+
}), method(object({
|
|
26275
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26276
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26277
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26278
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26279
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26280
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
26129
26281
|
kind: "mutation",
|
|
26130
26282
|
auth: "admin"
|
|
26131
26283
|
}), method(object({
|
|
@@ -33386,6 +33538,12 @@ Object.freeze({
|
|
|
33386
33538
|
addonId: null,
|
|
33387
33539
|
access: "create"
|
|
33388
33540
|
},
|
|
33541
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
33542
|
+
capName: "pipeline-analytics",
|
|
33543
|
+
capScope: "device",
|
|
33544
|
+
addonId: null,
|
|
33545
|
+
access: "create"
|
|
33546
|
+
},
|
|
33389
33547
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33390
33548
|
capName: "pipeline-analytics",
|
|
33391
33549
|
capScope: "device",
|
|
@@ -33560,6 +33718,12 @@ Object.freeze({
|
|
|
33560
33718
|
addonId: null,
|
|
33561
33719
|
access: "view"
|
|
33562
33720
|
},
|
|
33721
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
33722
|
+
capName: "pipeline-analytics",
|
|
33723
|
+
capScope: "device",
|
|
33724
|
+
addonId: null,
|
|
33725
|
+
access: "view"
|
|
33726
|
+
},
|
|
33563
33727
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
33564
33728
|
capName: "pipeline-analytics",
|
|
33565
33729
|
capScope: "device",
|
|
@@ -33638,6 +33802,12 @@ Object.freeze({
|
|
|
33638
33802
|
addonId: null,
|
|
33639
33803
|
access: "create"
|
|
33640
33804
|
},
|
|
33805
|
+
"pipelineAnalytics.relocateMedia": {
|
|
33806
|
+
capName: "pipeline-analytics",
|
|
33807
|
+
capScope: "device",
|
|
33808
|
+
addonId: null,
|
|
33809
|
+
access: "create"
|
|
33810
|
+
},
|
|
33641
33811
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
33642
33812
|
capName: "pipeline-analytics",
|
|
33643
33813
|
capScope: "device",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-import-alexa",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.28",
|
|
4
4
|
"description": "Alexa device-import provider for CamStack — imports the smart-home devices in a user's Alexa account via the unofficial alexa-remote2 cookie/token client (the inverse of the Alexa exporter)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|