@camstack/addon-export-alexa 1.2.34 → 1.2.35
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/export-alexa.addon.js +259 -79
- package/dist/export-alexa.addon.mjs +259 -79
- package/package.json +1 -1
|
@@ -6657,7 +6657,7 @@ function method(input, output, options) {
|
|
|
6657
6657
|
input,
|
|
6658
6658
|
output,
|
|
6659
6659
|
kind: options?.kind ?? "query",
|
|
6660
|
-
auth: options
|
|
6660
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6661
6661
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6662
6662
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6663
6663
|
timeoutMs: options?.timeoutMs
|
|
@@ -6677,7 +6677,7 @@ function systemMethod(input, output, options) {
|
|
|
6677
6677
|
}
|
|
6678
6678
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6679
6679
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6680
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6680
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6681
6681
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6682
6682
|
DeviceType["Camera"] = "camera";
|
|
6683
6683
|
DeviceType["Hub"] = "hub";
|
|
@@ -6998,7 +6998,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
6998
6998
|
}({});
|
|
6999
6999
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
7000
7000
|
var VersionOutputSchema = object({ version: string() });
|
|
7001
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
7001
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
7002
7002
|
/**
|
|
7003
7003
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
7004
7004
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7769,24 +7769,6 @@ var RecordingRetentionSchema = object({
|
|
|
7769
7769
|
maxSizeGb: number().min(0).optional()
|
|
7770
7770
|
});
|
|
7771
7771
|
/**
|
|
7772
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7773
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7774
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7775
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7776
|
-
*
|
|
7777
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7778
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7779
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7780
|
-
* written with.
|
|
7781
|
-
*/
|
|
7782
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7783
|
-
"minimal",
|
|
7784
|
-
"low",
|
|
7785
|
-
"standard",
|
|
7786
|
-
"high",
|
|
7787
|
-
"max"
|
|
7788
|
-
]);
|
|
7789
|
-
/**
|
|
7790
7772
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7791
7773
|
*
|
|
7792
7774
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7794,7 +7776,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7794
7776
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7795
7777
|
*
|
|
7796
7778
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7797
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7779
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7780
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7781
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7782
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7783
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7798
7784
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7799
7785
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7800
7786
|
*/
|
|
@@ -7817,14 +7803,7 @@ var RecordingConfigSchema = object({
|
|
|
7817
7803
|
* "off" is the absence of a covering band, never a band value.
|
|
7818
7804
|
*/
|
|
7819
7805
|
bands: array(RecordingBandSchema).default([]),
|
|
7820
|
-
retention: RecordingRetentionSchema.optional()
|
|
7821
|
-
/**
|
|
7822
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7823
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7824
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7825
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7826
|
-
*/
|
|
7827
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7806
|
+
retention: RecordingRetentionSchema.optional()
|
|
7828
7807
|
}).strict();
|
|
7829
7808
|
/**
|
|
7830
7809
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7900,10 +7879,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7900
7879
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7901
7880
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7902
7881
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7903
|
-
var
|
|
7882
|
+
var RelocateMediaInputSchema = object({
|
|
7904
7883
|
toLocationId: string(),
|
|
7905
7884
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7906
|
-
})
|
|
7885
|
+
});
|
|
7886
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7907
7887
|
/** The independently selectable logical storage classes. `recordings`
|
|
7908
7888
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7909
7889
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8252,7 +8232,26 @@ var LabelDefinitionSchema = object({
|
|
|
8252
8232
|
description: string().optional(),
|
|
8253
8233
|
icon: string().optional()
|
|
8254
8234
|
});
|
|
8255
|
-
|
|
8235
|
+
/**
|
|
8236
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8237
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8238
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8239
|
+
* detection pipeline executor actually routes.
|
|
8240
|
+
*
|
|
8241
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8242
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8243
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8244
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8245
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8246
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8247
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8248
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8249
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8250
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8251
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8252
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8253
|
+
*/
|
|
8254
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8256
8255
|
mapping: record(string(), _enum([
|
|
8257
8256
|
"person",
|
|
8258
8257
|
"vehicle",
|
|
@@ -8457,7 +8456,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8457
8456
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8458
8457
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8459
8458
|
*/
|
|
8460
|
-
classMap:
|
|
8459
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8461
8460
|
});
|
|
8462
8461
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8463
8462
|
format: literal("openvino"),
|
|
@@ -8487,7 +8486,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8487
8486
|
"segmentation"
|
|
8488
8487
|
]),
|
|
8489
8488
|
faceAlignment: boolean().optional(),
|
|
8490
|
-
classMap:
|
|
8489
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8491
8490
|
});
|
|
8492
8491
|
var ConvertResultSchema = object({
|
|
8493
8492
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9357,7 +9356,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9357
9356
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9358
9357
|
sectionLabel: string().optional()
|
|
9359
9358
|
});
|
|
9360
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9359
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9361
9360
|
var AddonHttpRouteSchema = object({
|
|
9362
9361
|
method: _enum([
|
|
9363
9362
|
"GET",
|
|
@@ -9611,7 +9610,7 @@ var WidgetMetadataSchema = object({
|
|
|
9611
9610
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9612
9611
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9613
9612
|
});
|
|
9614
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9613
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9615
9614
|
/**
|
|
9616
9615
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9617
9616
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11155,7 +11154,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11155
11154
|
stepId: string(),
|
|
11156
11155
|
entry: ModelCatalogEntrySchema
|
|
11157
11156
|
});
|
|
11158
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11157
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11159
11158
|
/**
|
|
11160
11159
|
* Query filter for settings-store collections.
|
|
11161
11160
|
*/
|
|
@@ -11242,7 +11241,8 @@ method(object({
|
|
|
11242
11241
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11243
11242
|
namespace: string().optional(),
|
|
11244
11243
|
collection: string(),
|
|
11245
|
-
filter: QueryFilterSchema.optional()
|
|
11244
|
+
filter: QueryFilterSchema.optional(),
|
|
11245
|
+
columns: array(string()).readonly().optional()
|
|
11246
11246
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11247
11247
|
namespace: string().optional(),
|
|
11248
11248
|
collection: string(),
|
|
@@ -11305,46 +11305,87 @@ var EngineInfoSchema = object({
|
|
|
11305
11305
|
kind: _enum(["relational", "vector"]),
|
|
11306
11306
|
displayName: string()
|
|
11307
11307
|
});
|
|
11308
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11308
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11309
11309
|
namespace: string().optional(),
|
|
11310
11310
|
collection: string(),
|
|
11311
11311
|
key: string()
|
|
11312
|
-
}), unknown()), method(object({
|
|
11312
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11313
11313
|
namespace: string().optional(),
|
|
11314
11314
|
collection: string(),
|
|
11315
11315
|
key: string(),
|
|
11316
11316
|
value: unknown()
|
|
11317
|
-
}), _void(), {
|
|
11317
|
+
}), _void(), {
|
|
11318
|
+
kind: "mutation",
|
|
11319
|
+
auth: "admin"
|
|
11320
|
+
}), method(object({
|
|
11318
11321
|
namespace: string().optional(),
|
|
11319
11322
|
collection: string(),
|
|
11320
|
-
filter: QueryFilterSchema.optional()
|
|
11321
|
-
|
|
11323
|
+
filter: QueryFilterSchema.optional(),
|
|
11324
|
+
/**
|
|
11325
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11326
|
+
*
|
|
11327
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11328
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11329
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11330
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11331
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11332
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11333
|
+
*
|
|
11334
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11335
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11336
|
+
* interface the engine destructures from. The field existed on both
|
|
11337
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11338
|
+
* registered provider against `InferProvider<cap>` —
|
|
11339
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11340
|
+
*
|
|
11341
|
+
* It is declared here anyway, and must stay in step with
|
|
11342
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11343
|
+
* to be able to see that this call carries a projection.
|
|
11344
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11345
|
+
*/
|
|
11346
|
+
columns: array(string()).readonly().optional()
|
|
11347
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11322
11348
|
namespace: string().optional(),
|
|
11323
11349
|
collection: string(),
|
|
11324
11350
|
record: SettingsRecordSchema
|
|
11325
|
-
}), _void(), {
|
|
11351
|
+
}), _void(), {
|
|
11352
|
+
kind: "mutation",
|
|
11353
|
+
auth: "admin"
|
|
11354
|
+
}), method(object({
|
|
11326
11355
|
namespace: string().optional(),
|
|
11327
11356
|
collection: string(),
|
|
11328
11357
|
id: string(),
|
|
11329
11358
|
data: record(string(), unknown())
|
|
11330
|
-
}), _void(), {
|
|
11359
|
+
}), _void(), {
|
|
11360
|
+
kind: "mutation",
|
|
11361
|
+
auth: "admin"
|
|
11362
|
+
}), method(object({
|
|
11331
11363
|
namespace: string().optional(),
|
|
11332
11364
|
collection: string(),
|
|
11333
11365
|
key: string()
|
|
11334
|
-
}), _void(), {
|
|
11366
|
+
}), _void(), {
|
|
11367
|
+
kind: "mutation",
|
|
11368
|
+
auth: "admin"
|
|
11369
|
+
}), method(object({
|
|
11335
11370
|
namespace: string().optional(),
|
|
11336
11371
|
collection: string(),
|
|
11337
11372
|
filter: MutationFilterSchema
|
|
11338
|
-
}), object({ deleted: number().int() }), {
|
|
11373
|
+
}), object({ deleted: number().int() }), {
|
|
11374
|
+
kind: "mutation",
|
|
11375
|
+
auth: "admin"
|
|
11376
|
+
}), method(object({
|
|
11339
11377
|
namespace: string().optional(),
|
|
11340
11378
|
collection: string(),
|
|
11341
11379
|
filter: MutationFilterSchema,
|
|
11342
11380
|
data: record(string(), unknown())
|
|
11343
|
-
}), object({ updated: number().int() }), {
|
|
11381
|
+
}), object({ updated: number().int() }), {
|
|
11382
|
+
kind: "mutation",
|
|
11383
|
+
auth: "admin"
|
|
11384
|
+
}), method(object({
|
|
11344
11385
|
namespace: string().optional(),
|
|
11345
11386
|
collection: string(),
|
|
11346
11387
|
filter: QueryFilterSchema.optional()
|
|
11347
|
-
}), number()), method(object({
|
|
11388
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11348
11389
|
namespace: string().optional(),
|
|
11349
11390
|
collection: string(),
|
|
11350
11391
|
field: string(),
|
|
@@ -11354,15 +11395,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11354
11395
|
}), array(object({
|
|
11355
11396
|
bucket: number().int(),
|
|
11356
11397
|
count: number().int()
|
|
11357
|
-
})).readonly()), method(object({
|
|
11398
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11358
11399
|
namespace: string().optional(),
|
|
11359
11400
|
collection: string()
|
|
11360
|
-
}), boolean()), method(object({
|
|
11401
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11361
11402
|
namespace: string().optional(),
|
|
11362
11403
|
collection: string(),
|
|
11363
11404
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11364
11405
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11365
|
-
}), _void(), {
|
|
11406
|
+
}), _void(), {
|
|
11407
|
+
kind: "mutation",
|
|
11408
|
+
auth: "admin"
|
|
11409
|
+
});
|
|
11366
11410
|
/**
|
|
11367
11411
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11368
11412
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12515,7 +12559,7 @@ method(object({
|
|
|
12515
12559
|
crop: _instanceof(Uint8Array),
|
|
12516
12560
|
width: number(),
|
|
12517
12561
|
height: number()
|
|
12518
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12562
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12519
12563
|
/**
|
|
12520
12564
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12521
12565
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12808,19 +12852,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12808
12852
|
runtime: ManagedRuntimeConfigSchema,
|
|
12809
12853
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12810
12854
|
timeoutMs: number().int().positive().optional()
|
|
12811
|
-
}), LlmGenerateResultSchema, {
|
|
12855
|
+
}), LlmGenerateResultSchema, {
|
|
12856
|
+
kind: "mutation",
|
|
12857
|
+
auth: "admin"
|
|
12858
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12812
12859
|
kind: "mutation",
|
|
12813
12860
|
auth: "admin"
|
|
12814
12861
|
}), method(object({}), _void(), {
|
|
12815
12862
|
kind: "mutation",
|
|
12816
12863
|
auth: "admin"
|
|
12817
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12864
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12818
12865
|
kind: "mutation",
|
|
12819
12866
|
auth: "admin"
|
|
12820
12867
|
}), method(object({ file: string() }), _void(), {
|
|
12821
12868
|
kind: "mutation",
|
|
12822
12869
|
auth: "admin"
|
|
12823
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12870
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12824
12871
|
/**
|
|
12825
12872
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12826
12873
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16298,7 +16345,17 @@ var oauthIntegrationCapability = {
|
|
|
16298
16345
|
scope: "system",
|
|
16299
16346
|
mode: "collection",
|
|
16300
16347
|
internal: true,
|
|
16301
|
-
methods: {
|
|
16348
|
+
methods: {
|
|
16349
|
+
/**
|
|
16350
|
+
* `internal: true` did not gate the mount (see the 2026-08-26 note on
|
|
16351
|
+
* `data-store-provider`) — `getDescriptor` was reachable on the AppRouter
|
|
16352
|
+
* by ANY authenticated session at the default `auth: 'protected'`. The
|
|
16353
|
+
* real caller is `/api/oauth2/authorize` and `/api/oauth2/integrations`
|
|
16354
|
+
* (`oauth2-routes.ts`), which resolve the provider directly off the
|
|
16355
|
+
* capability registry — never through tRPC. `auth: 'admin'` closes the
|
|
16356
|
+
* tRPC surface without touching that path.
|
|
16357
|
+
*/
|
|
16358
|
+
getDescriptor: method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" }) }
|
|
16302
16359
|
};
|
|
16303
16360
|
/**
|
|
16304
16361
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
@@ -17494,6 +17551,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17494
17551
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17495
17552
|
kind: "mutation",
|
|
17496
17553
|
auth: "admin"
|
|
17554
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17555
|
+
kind: "mutation",
|
|
17556
|
+
auth: "admin"
|
|
17557
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17558
|
+
kind: "query",
|
|
17559
|
+
auth: "admin"
|
|
17560
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17561
|
+
kind: "mutation",
|
|
17562
|
+
auth: "admin"
|
|
17497
17563
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17498
17564
|
kind: "query",
|
|
17499
17565
|
auth: "admin"
|
|
@@ -17648,6 +17714,11 @@ object({
|
|
|
17648
17714
|
"jpeg"
|
|
17649
17715
|
])
|
|
17650
17716
|
});
|
|
17717
|
+
/**
|
|
17718
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17719
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17720
|
+
* other process or execution group.
|
|
17721
|
+
*/
|
|
17651
17722
|
var FrameRefSchema = object({
|
|
17652
17723
|
registryId: string().min(1),
|
|
17653
17724
|
id: string().min(1),
|
|
@@ -19813,7 +19884,7 @@ method(object({
|
|
|
19813
19884
|
* linking rather than produce an eternal token.
|
|
19814
19885
|
*/
|
|
19815
19886
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
19816
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
19887
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
19817
19888
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
19818
19889
|
providerId: string().min(1),
|
|
19819
19890
|
displayName: string().min(1),
|
|
@@ -19908,10 +19979,13 @@ var EvictResultSchema = object({
|
|
|
19908
19979
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
19909
19980
|
exhausted: boolean()
|
|
19910
19981
|
});
|
|
19911
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
19982
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
19912
19983
|
locationId: string(),
|
|
19913
19984
|
targetBytes: number().int().positive()
|
|
19914
|
-
}), EvictResultSchema, {
|
|
19985
|
+
}), EvictResultSchema, {
|
|
19986
|
+
kind: "mutation",
|
|
19987
|
+
auth: "admin"
|
|
19988
|
+
});
|
|
19915
19989
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
19916
19990
|
kind: "mutation",
|
|
19917
19991
|
auth: "admin"
|
|
@@ -19971,26 +20045,50 @@ var ReadChunkInputSchema = object({
|
|
|
19971
20045
|
length: number()
|
|
19972
20046
|
});
|
|
19973
20047
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
19974
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20048
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
19975
20049
|
location: StorageLocationSchema,
|
|
19976
20050
|
relativePath: string()
|
|
19977
|
-
}), string()), method(object({
|
|
20051
|
+
}), string(), { auth: "admin" }), method(object({
|
|
19978
20052
|
location: StorageLocationSchema,
|
|
19979
20053
|
relativePath: string(),
|
|
19980
20054
|
data: _instanceof(Uint8Array)
|
|
19981
|
-
}), _void(), {
|
|
20055
|
+
}), _void(), {
|
|
20056
|
+
kind: "mutation",
|
|
20057
|
+
auth: "admin"
|
|
20058
|
+
}), method(object({
|
|
19982
20059
|
location: StorageLocationSchema,
|
|
19983
20060
|
relativePath: string()
|
|
19984
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20061
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
19985
20062
|
location: StorageLocationSchema,
|
|
19986
20063
|
relativePath: string()
|
|
19987
|
-
}), boolean()), method(object({
|
|
20064
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
19988
20065
|
location: StorageLocationSchema,
|
|
19989
20066
|
prefix: string().optional()
|
|
19990
|
-
}), array(string()).readonly()), method(object({
|
|
20067
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
19991
20068
|
location: StorageLocationSchema,
|
|
19992
20069
|
relativePath: string()
|
|
19993
|
-
}), _void(), {
|
|
20070
|
+
}), _void(), {
|
|
20071
|
+
kind: "mutation",
|
|
20072
|
+
auth: "admin"
|
|
20073
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20074
|
+
kind: "mutation",
|
|
20075
|
+
auth: "admin"
|
|
20076
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20077
|
+
kind: "mutation",
|
|
20078
|
+
auth: "admin"
|
|
20079
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20080
|
+
kind: "mutation",
|
|
20081
|
+
auth: "admin"
|
|
20082
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20083
|
+
kind: "mutation",
|
|
20084
|
+
auth: "admin"
|
|
20085
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20086
|
+
kind: "mutation",
|
|
20087
|
+
auth: "admin"
|
|
20088
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20089
|
+
kind: "mutation",
|
|
20090
|
+
auth: "admin"
|
|
20091
|
+
});
|
|
19994
20092
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
19995
20093
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
19996
20094
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20248,7 +20346,8 @@ method(object({
|
|
|
20248
20346
|
access: "create"
|
|
20249
20347
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20250
20348
|
kind: "mutation",
|
|
20251
|
-
access: "view"
|
|
20349
|
+
access: "view",
|
|
20350
|
+
auth: "admin"
|
|
20252
20351
|
}), method(object({
|
|
20253
20352
|
/** Required — the user the assertion belongs to (verified). */
|
|
20254
20353
|
userId: string(),
|
|
@@ -20256,10 +20355,12 @@ method(object({
|
|
|
20256
20355
|
response: record(string(), unknown())
|
|
20257
20356
|
}), object({ verified: boolean() }), {
|
|
20258
20357
|
kind: "mutation",
|
|
20259
|
-
access: "view"
|
|
20358
|
+
access: "view",
|
|
20359
|
+
auth: "admin"
|
|
20260
20360
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20261
20361
|
kind: "mutation",
|
|
20262
|
-
access: "view"
|
|
20362
|
+
access: "view",
|
|
20363
|
+
auth: "admin"
|
|
20263
20364
|
}), method(object({
|
|
20264
20365
|
/** AuthenticationResponseJSON from the browser. */
|
|
20265
20366
|
response: record(string(), unknown()) }), object({
|
|
@@ -20267,7 +20368,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20267
20368
|
userId: string().nullable()
|
|
20268
20369
|
}), {
|
|
20269
20370
|
kind: "mutation",
|
|
20270
|
-
access: "view"
|
|
20371
|
+
access: "view",
|
|
20372
|
+
auth: "admin"
|
|
20271
20373
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20272
20374
|
userId: string(),
|
|
20273
20375
|
credentialId: string()
|
|
@@ -20439,7 +20541,19 @@ var VectorStatsResultSchema = object({
|
|
|
20439
20541
|
/** False when the backend ranks approximately. */
|
|
20440
20542
|
exact: boolean()
|
|
20441
20543
|
});
|
|
20442
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20544
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20545
|
+
kind: "mutation",
|
|
20546
|
+
auth: "admin"
|
|
20547
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20548
|
+
kind: "mutation",
|
|
20549
|
+
auth: "admin"
|
|
20550
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20551
|
+
kind: "mutation",
|
|
20552
|
+
auth: "admin"
|
|
20553
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20554
|
+
kind: "mutation",
|
|
20555
|
+
auth: "admin"
|
|
20556
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20443
20557
|
var ClipSchema = object({
|
|
20444
20558
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20445
20559
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -22162,7 +22276,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
22162
22276
|
sizeBytes: number(),
|
|
22163
22277
|
timestamp: number()
|
|
22164
22278
|
});
|
|
22165
|
-
method(
|
|
22279
|
+
method(object({
|
|
22280
|
+
/**
|
|
22281
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
22282
|
+
*
|
|
22283
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
22284
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
22285
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
22286
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
22287
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
22288
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
22289
|
+
*
|
|
22290
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
22291
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
22292
|
+
*
|
|
22293
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
22294
|
+
* next train** — the hub router validates cap inputs against its own
|
|
22295
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
22296
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
22297
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
22298
|
+
*/
|
|
22299
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
22166
22300
|
kind: "mutation",
|
|
22167
22301
|
auth: "admin"
|
|
22168
22302
|
}), method(object({
|
|
@@ -24309,8 +24443,10 @@ var PlateInfoSchema = object({
|
|
|
24309
24443
|
keyFrameMediaKey: string().optional(),
|
|
24310
24444
|
base64: string().optional(),
|
|
24311
24445
|
/**
|
|
24312
|
-
* Same crop as a data-plane URL
|
|
24313
|
-
* never inlines JPEG; `listPlates`
|
|
24446
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
24447
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
24448
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
24449
|
+
* left at its `true` default.
|
|
24314
24450
|
*/
|
|
24315
24451
|
cropUrl: string().optional()
|
|
24316
24452
|
});
|
|
@@ -24330,14 +24466,34 @@ var PlateClusterSchema = object({
|
|
|
24330
24466
|
});
|
|
24331
24467
|
method(object({
|
|
24332
24468
|
deviceId: number().int().optional(),
|
|
24333
|
-
limit: number().int().positive().optional()
|
|
24469
|
+
limit: number().int().positive().optional(),
|
|
24470
|
+
/**
|
|
24471
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
24472
|
+
* behaviour, kept so no caller breaks.
|
|
24473
|
+
*
|
|
24474
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
24475
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
24476
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
24477
|
+
* metadata without them — and the browser then caches the images.
|
|
24478
|
+
*
|
|
24479
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
24480
|
+
* plates were the one gallery list left without it.
|
|
24481
|
+
*
|
|
24482
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
24483
|
+
* next train.** The hub router validates cap inputs against its own
|
|
24484
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
24485
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
24486
|
+
*/
|
|
24487
|
+
includeCrops: boolean().optional()
|
|
24334
24488
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
24335
24489
|
deviceId: number().int(),
|
|
24336
24490
|
trackId: string()
|
|
24337
24491
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
24338
24492
|
text: string().min(1),
|
|
24339
24493
|
maxDistance: number().int().min(0).optional(),
|
|
24340
|
-
limit: number().int().positive().optional()
|
|
24494
|
+
limit: number().int().positive().optional(),
|
|
24495
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
24496
|
+
includeCrops: boolean().optional()
|
|
24341
24497
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
24342
24498
|
maxDistance: number().int().min(0).optional(),
|
|
24343
24499
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -24351,7 +24507,13 @@ method(object({
|
|
|
24351
24507
|
}), method(object({ plateId: string() }), _void(), {
|
|
24352
24508
|
kind: "mutation",
|
|
24353
24509
|
auth: "admin"
|
|
24354
|
-
}), method(
|
|
24510
|
+
}), method(object({
|
|
24511
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
24512
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
24513
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
24514
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
24515
|
+
* resolves to `false` and is exactly the intended default. */
|
|
24516
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
24355
24517
|
kind: "mutation",
|
|
24356
24518
|
auth: "admin"
|
|
24357
24519
|
}), method(object({
|
|
@@ -29728,6 +29890,12 @@ Object.freeze({
|
|
|
29728
29890
|
addonId: null,
|
|
29729
29891
|
access: "create"
|
|
29730
29892
|
},
|
|
29893
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
29894
|
+
capName: "pipeline-analytics",
|
|
29895
|
+
capScope: "device",
|
|
29896
|
+
addonId: null,
|
|
29897
|
+
access: "create"
|
|
29898
|
+
},
|
|
29731
29899
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
29732
29900
|
capName: "pipeline-analytics",
|
|
29733
29901
|
capScope: "device",
|
|
@@ -29902,6 +30070,12 @@ Object.freeze({
|
|
|
29902
30070
|
addonId: null,
|
|
29903
30071
|
access: "view"
|
|
29904
30072
|
},
|
|
30073
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
30074
|
+
capName: "pipeline-analytics",
|
|
30075
|
+
capScope: "device",
|
|
30076
|
+
addonId: null,
|
|
30077
|
+
access: "view"
|
|
30078
|
+
},
|
|
29905
30079
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
29906
30080
|
capName: "pipeline-analytics",
|
|
29907
30081
|
capScope: "device",
|
|
@@ -29980,6 +30154,12 @@ Object.freeze({
|
|
|
29980
30154
|
addonId: null,
|
|
29981
30155
|
access: "create"
|
|
29982
30156
|
},
|
|
30157
|
+
"pipelineAnalytics.relocateMedia": {
|
|
30158
|
+
capName: "pipeline-analytics",
|
|
30159
|
+
capScope: "device",
|
|
30160
|
+
addonId: null,
|
|
30161
|
+
access: "create"
|
|
30162
|
+
},
|
|
29983
30163
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
29984
30164
|
capName: "pipeline-analytics",
|
|
29985
30165
|
capScope: "device",
|
|
@@ -6630,7 +6630,7 @@ function method(input, output, options) {
|
|
|
6630
6630
|
input,
|
|
6631
6631
|
output,
|
|
6632
6632
|
kind: options?.kind ?? "query",
|
|
6633
|
-
auth: options
|
|
6633
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6634
6634
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6635
6635
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6636
6636
|
timeoutMs: options?.timeoutMs
|
|
@@ -6650,7 +6650,7 @@ function systemMethod(input, output, options) {
|
|
|
6650
6650
|
}
|
|
6651
6651
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6652
6652
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6653
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6653
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6654
6654
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6655
6655
|
DeviceType["Camera"] = "camera";
|
|
6656
6656
|
DeviceType["Hub"] = "hub";
|
|
@@ -6971,7 +6971,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
6971
6971
|
}({});
|
|
6972
6972
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
6973
6973
|
var VersionOutputSchema = object({ version: string() });
|
|
6974
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
6974
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
6975
6975
|
/**
|
|
6976
6976
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
6977
6977
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7742,24 +7742,6 @@ var RecordingRetentionSchema = object({
|
|
|
7742
7742
|
maxSizeGb: number().min(0).optional()
|
|
7743
7743
|
});
|
|
7744
7744
|
/**
|
|
7745
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7746
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7747
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7748
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7749
|
-
*
|
|
7750
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7751
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7752
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7753
|
-
* written with.
|
|
7754
|
-
*/
|
|
7755
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7756
|
-
"minimal",
|
|
7757
|
-
"low",
|
|
7758
|
-
"standard",
|
|
7759
|
-
"high",
|
|
7760
|
-
"max"
|
|
7761
|
-
]);
|
|
7762
|
-
/**
|
|
7763
7745
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7764
7746
|
*
|
|
7765
7747
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7767,7 +7749,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7767
7749
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7768
7750
|
*
|
|
7769
7751
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7770
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7752
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7753
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7754
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7755
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7756
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7771
7757
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7772
7758
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7773
7759
|
*/
|
|
@@ -7790,14 +7776,7 @@ var RecordingConfigSchema = object({
|
|
|
7790
7776
|
* "off" is the absence of a covering band, never a band value.
|
|
7791
7777
|
*/
|
|
7792
7778
|
bands: array(RecordingBandSchema).default([]),
|
|
7793
|
-
retention: RecordingRetentionSchema.optional()
|
|
7794
|
-
/**
|
|
7795
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7796
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7797
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7798
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7799
|
-
*/
|
|
7800
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7779
|
+
retention: RecordingRetentionSchema.optional()
|
|
7801
7780
|
}).strict();
|
|
7802
7781
|
/**
|
|
7803
7782
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7873,10 +7852,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7873
7852
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7874
7853
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7875
7854
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7876
|
-
var
|
|
7855
|
+
var RelocateMediaInputSchema = object({
|
|
7877
7856
|
toLocationId: string(),
|
|
7878
7857
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7879
|
-
})
|
|
7858
|
+
});
|
|
7859
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7880
7860
|
/** The independently selectable logical storage classes. `recordings`
|
|
7881
7861
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7882
7862
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8225,7 +8205,26 @@ var LabelDefinitionSchema = object({
|
|
|
8225
8205
|
description: string().optional(),
|
|
8226
8206
|
icon: string().optional()
|
|
8227
8207
|
});
|
|
8228
|
-
|
|
8208
|
+
/**
|
|
8209
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8210
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8211
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8212
|
+
* detection pipeline executor actually routes.
|
|
8213
|
+
*
|
|
8214
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8215
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8216
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8217
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8218
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8219
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8220
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8221
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8222
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8223
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8224
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8225
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8226
|
+
*/
|
|
8227
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8229
8228
|
mapping: record(string(), _enum([
|
|
8230
8229
|
"person",
|
|
8231
8230
|
"vehicle",
|
|
@@ -8430,7 +8429,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8430
8429
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8431
8430
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8432
8431
|
*/
|
|
8433
|
-
classMap:
|
|
8432
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8434
8433
|
});
|
|
8435
8434
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8436
8435
|
format: literal("openvino"),
|
|
@@ -8460,7 +8459,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8460
8459
|
"segmentation"
|
|
8461
8460
|
]),
|
|
8462
8461
|
faceAlignment: boolean().optional(),
|
|
8463
|
-
classMap:
|
|
8462
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8464
8463
|
});
|
|
8465
8464
|
var ConvertResultSchema = object({
|
|
8466
8465
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9330,7 +9329,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9330
9329
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9331
9330
|
sectionLabel: string().optional()
|
|
9332
9331
|
});
|
|
9333
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9332
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9334
9333
|
var AddonHttpRouteSchema = object({
|
|
9335
9334
|
method: _enum([
|
|
9336
9335
|
"GET",
|
|
@@ -9584,7 +9583,7 @@ var WidgetMetadataSchema = object({
|
|
|
9584
9583
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9585
9584
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9586
9585
|
});
|
|
9587
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9586
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9588
9587
|
/**
|
|
9589
9588
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9590
9589
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11128,7 +11127,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11128
11127
|
stepId: string(),
|
|
11129
11128
|
entry: ModelCatalogEntrySchema
|
|
11130
11129
|
});
|
|
11131
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11130
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11132
11131
|
/**
|
|
11133
11132
|
* Query filter for settings-store collections.
|
|
11134
11133
|
*/
|
|
@@ -11215,7 +11214,8 @@ method(object({
|
|
|
11215
11214
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11216
11215
|
namespace: string().optional(),
|
|
11217
11216
|
collection: string(),
|
|
11218
|
-
filter: QueryFilterSchema.optional()
|
|
11217
|
+
filter: QueryFilterSchema.optional(),
|
|
11218
|
+
columns: array(string()).readonly().optional()
|
|
11219
11219
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11220
11220
|
namespace: string().optional(),
|
|
11221
11221
|
collection: string(),
|
|
@@ -11278,46 +11278,87 @@ var EngineInfoSchema = object({
|
|
|
11278
11278
|
kind: _enum(["relational", "vector"]),
|
|
11279
11279
|
displayName: string()
|
|
11280
11280
|
});
|
|
11281
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11281
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11282
11282
|
namespace: string().optional(),
|
|
11283
11283
|
collection: string(),
|
|
11284
11284
|
key: string()
|
|
11285
|
-
}), unknown()), method(object({
|
|
11285
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11286
11286
|
namespace: string().optional(),
|
|
11287
11287
|
collection: string(),
|
|
11288
11288
|
key: string(),
|
|
11289
11289
|
value: unknown()
|
|
11290
|
-
}), _void(), {
|
|
11290
|
+
}), _void(), {
|
|
11291
|
+
kind: "mutation",
|
|
11292
|
+
auth: "admin"
|
|
11293
|
+
}), method(object({
|
|
11291
11294
|
namespace: string().optional(),
|
|
11292
11295
|
collection: string(),
|
|
11293
|
-
filter: QueryFilterSchema.optional()
|
|
11294
|
-
|
|
11296
|
+
filter: QueryFilterSchema.optional(),
|
|
11297
|
+
/**
|
|
11298
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11299
|
+
*
|
|
11300
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11301
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11302
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11303
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11304
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11305
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11306
|
+
*
|
|
11307
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11308
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11309
|
+
* interface the engine destructures from. The field existed on both
|
|
11310
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11311
|
+
* registered provider against `InferProvider<cap>` —
|
|
11312
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11313
|
+
*
|
|
11314
|
+
* It is declared here anyway, and must stay in step with
|
|
11315
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11316
|
+
* to be able to see that this call carries a projection.
|
|
11317
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11318
|
+
*/
|
|
11319
|
+
columns: array(string()).readonly().optional()
|
|
11320
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11295
11321
|
namespace: string().optional(),
|
|
11296
11322
|
collection: string(),
|
|
11297
11323
|
record: SettingsRecordSchema
|
|
11298
|
-
}), _void(), {
|
|
11324
|
+
}), _void(), {
|
|
11325
|
+
kind: "mutation",
|
|
11326
|
+
auth: "admin"
|
|
11327
|
+
}), method(object({
|
|
11299
11328
|
namespace: string().optional(),
|
|
11300
11329
|
collection: string(),
|
|
11301
11330
|
id: string(),
|
|
11302
11331
|
data: record(string(), unknown())
|
|
11303
|
-
}), _void(), {
|
|
11332
|
+
}), _void(), {
|
|
11333
|
+
kind: "mutation",
|
|
11334
|
+
auth: "admin"
|
|
11335
|
+
}), method(object({
|
|
11304
11336
|
namespace: string().optional(),
|
|
11305
11337
|
collection: string(),
|
|
11306
11338
|
key: string()
|
|
11307
|
-
}), _void(), {
|
|
11339
|
+
}), _void(), {
|
|
11340
|
+
kind: "mutation",
|
|
11341
|
+
auth: "admin"
|
|
11342
|
+
}), method(object({
|
|
11308
11343
|
namespace: string().optional(),
|
|
11309
11344
|
collection: string(),
|
|
11310
11345
|
filter: MutationFilterSchema
|
|
11311
|
-
}), object({ deleted: number().int() }), {
|
|
11346
|
+
}), object({ deleted: number().int() }), {
|
|
11347
|
+
kind: "mutation",
|
|
11348
|
+
auth: "admin"
|
|
11349
|
+
}), method(object({
|
|
11312
11350
|
namespace: string().optional(),
|
|
11313
11351
|
collection: string(),
|
|
11314
11352
|
filter: MutationFilterSchema,
|
|
11315
11353
|
data: record(string(), unknown())
|
|
11316
|
-
}), object({ updated: number().int() }), {
|
|
11354
|
+
}), object({ updated: number().int() }), {
|
|
11355
|
+
kind: "mutation",
|
|
11356
|
+
auth: "admin"
|
|
11357
|
+
}), method(object({
|
|
11317
11358
|
namespace: string().optional(),
|
|
11318
11359
|
collection: string(),
|
|
11319
11360
|
filter: QueryFilterSchema.optional()
|
|
11320
|
-
}), number()), method(object({
|
|
11361
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11321
11362
|
namespace: string().optional(),
|
|
11322
11363
|
collection: string(),
|
|
11323
11364
|
field: string(),
|
|
@@ -11327,15 +11368,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11327
11368
|
}), array(object({
|
|
11328
11369
|
bucket: number().int(),
|
|
11329
11370
|
count: number().int()
|
|
11330
|
-
})).readonly()), method(object({
|
|
11371
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11331
11372
|
namespace: string().optional(),
|
|
11332
11373
|
collection: string()
|
|
11333
|
-
}), boolean()), method(object({
|
|
11374
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11334
11375
|
namespace: string().optional(),
|
|
11335
11376
|
collection: string(),
|
|
11336
11377
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11337
11378
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11338
|
-
}), _void(), {
|
|
11379
|
+
}), _void(), {
|
|
11380
|
+
kind: "mutation",
|
|
11381
|
+
auth: "admin"
|
|
11382
|
+
});
|
|
11339
11383
|
/**
|
|
11340
11384
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11341
11385
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12488,7 +12532,7 @@ method(object({
|
|
|
12488
12532
|
crop: _instanceof(Uint8Array),
|
|
12489
12533
|
width: number(),
|
|
12490
12534
|
height: number()
|
|
12491
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12535
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12492
12536
|
/**
|
|
12493
12537
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12494
12538
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -12781,19 +12825,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
12781
12825
|
runtime: ManagedRuntimeConfigSchema,
|
|
12782
12826
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
12783
12827
|
timeoutMs: number().int().positive().optional()
|
|
12784
|
-
}), LlmGenerateResultSchema, {
|
|
12828
|
+
}), LlmGenerateResultSchema, {
|
|
12829
|
+
kind: "mutation",
|
|
12830
|
+
auth: "admin"
|
|
12831
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
12785
12832
|
kind: "mutation",
|
|
12786
12833
|
auth: "admin"
|
|
12787
12834
|
}), method(object({}), _void(), {
|
|
12788
12835
|
kind: "mutation",
|
|
12789
12836
|
auth: "admin"
|
|
12790
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12837
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
12791
12838
|
kind: "mutation",
|
|
12792
12839
|
auth: "admin"
|
|
12793
12840
|
}), method(object({ file: string() }), _void(), {
|
|
12794
12841
|
kind: "mutation",
|
|
12795
12842
|
auth: "admin"
|
|
12796
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
12843
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
12797
12844
|
/**
|
|
12798
12845
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
12799
12846
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16271,7 +16318,17 @@ var oauthIntegrationCapability = {
|
|
|
16271
16318
|
scope: "system",
|
|
16272
16319
|
mode: "collection",
|
|
16273
16320
|
internal: true,
|
|
16274
|
-
methods: {
|
|
16321
|
+
methods: {
|
|
16322
|
+
/**
|
|
16323
|
+
* `internal: true` did not gate the mount (see the 2026-08-26 note on
|
|
16324
|
+
* `data-store-provider`) — `getDescriptor` was reachable on the AppRouter
|
|
16325
|
+
* by ANY authenticated session at the default `auth: 'protected'`. The
|
|
16326
|
+
* real caller is `/api/oauth2/authorize` and `/api/oauth2/integrations`
|
|
16327
|
+
* (`oauth2-routes.ts`), which resolve the provider directly off the
|
|
16328
|
+
* capability registry — never through tRPC. `auth: 'admin'` closes the
|
|
16329
|
+
* tRPC surface without touching that path.
|
|
16330
|
+
*/
|
|
16331
|
+
getDescriptor: method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" }) }
|
|
16275
16332
|
};
|
|
16276
16333
|
/**
|
|
16277
16334
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
@@ -17467,6 +17524,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17467
17524
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17468
17525
|
kind: "mutation",
|
|
17469
17526
|
auth: "admin"
|
|
17527
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17528
|
+
kind: "mutation",
|
|
17529
|
+
auth: "admin"
|
|
17530
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17531
|
+
kind: "query",
|
|
17532
|
+
auth: "admin"
|
|
17533
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17534
|
+
kind: "mutation",
|
|
17535
|
+
auth: "admin"
|
|
17470
17536
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17471
17537
|
kind: "query",
|
|
17472
17538
|
auth: "admin"
|
|
@@ -17621,6 +17687,11 @@ object({
|
|
|
17621
17687
|
"jpeg"
|
|
17622
17688
|
])
|
|
17623
17689
|
});
|
|
17690
|
+
/**
|
|
17691
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
17692
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
17693
|
+
* other process or execution group.
|
|
17694
|
+
*/
|
|
17624
17695
|
var FrameRefSchema = object({
|
|
17625
17696
|
registryId: string().min(1),
|
|
17626
17697
|
id: string().min(1),
|
|
@@ -19786,7 +19857,7 @@ method(object({
|
|
|
19786
19857
|
* linking rather than produce an eternal token.
|
|
19787
19858
|
*/
|
|
19788
19859
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
19789
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
19860
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
19790
19861
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
19791
19862
|
providerId: string().min(1),
|
|
19792
19863
|
displayName: string().min(1),
|
|
@@ -19881,10 +19952,13 @@ var EvictResultSchema = object({
|
|
|
19881
19952
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
19882
19953
|
exhausted: boolean()
|
|
19883
19954
|
});
|
|
19884
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
19955
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
19885
19956
|
locationId: string(),
|
|
19886
19957
|
targetBytes: number().int().positive()
|
|
19887
|
-
}), EvictResultSchema, {
|
|
19958
|
+
}), EvictResultSchema, {
|
|
19959
|
+
kind: "mutation",
|
|
19960
|
+
auth: "admin"
|
|
19961
|
+
});
|
|
19888
19962
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
19889
19963
|
kind: "mutation",
|
|
19890
19964
|
auth: "admin"
|
|
@@ -19944,26 +20018,50 @@ var ReadChunkInputSchema = object({
|
|
|
19944
20018
|
length: number()
|
|
19945
20019
|
});
|
|
19946
20020
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
19947
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20021
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
19948
20022
|
location: StorageLocationSchema,
|
|
19949
20023
|
relativePath: string()
|
|
19950
|
-
}), string()), method(object({
|
|
20024
|
+
}), string(), { auth: "admin" }), method(object({
|
|
19951
20025
|
location: StorageLocationSchema,
|
|
19952
20026
|
relativePath: string(),
|
|
19953
20027
|
data: _instanceof(Uint8Array)
|
|
19954
|
-
}), _void(), {
|
|
20028
|
+
}), _void(), {
|
|
20029
|
+
kind: "mutation",
|
|
20030
|
+
auth: "admin"
|
|
20031
|
+
}), method(object({
|
|
19955
20032
|
location: StorageLocationSchema,
|
|
19956
20033
|
relativePath: string()
|
|
19957
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20034
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
19958
20035
|
location: StorageLocationSchema,
|
|
19959
20036
|
relativePath: string()
|
|
19960
|
-
}), boolean()), method(object({
|
|
20037
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
19961
20038
|
location: StorageLocationSchema,
|
|
19962
20039
|
prefix: string().optional()
|
|
19963
|
-
}), array(string()).readonly()), method(object({
|
|
20040
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
19964
20041
|
location: StorageLocationSchema,
|
|
19965
20042
|
relativePath: string()
|
|
19966
|
-
}), _void(), {
|
|
20043
|
+
}), _void(), {
|
|
20044
|
+
kind: "mutation",
|
|
20045
|
+
auth: "admin"
|
|
20046
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20047
|
+
kind: "mutation",
|
|
20048
|
+
auth: "admin"
|
|
20049
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20050
|
+
kind: "mutation",
|
|
20051
|
+
auth: "admin"
|
|
20052
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20053
|
+
kind: "mutation",
|
|
20054
|
+
auth: "admin"
|
|
20055
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20056
|
+
kind: "mutation",
|
|
20057
|
+
auth: "admin"
|
|
20058
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20059
|
+
kind: "mutation",
|
|
20060
|
+
auth: "admin"
|
|
20061
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20062
|
+
kind: "mutation",
|
|
20063
|
+
auth: "admin"
|
|
20064
|
+
});
|
|
19967
20065
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
19968
20066
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
19969
20067
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20221,7 +20319,8 @@ method(object({
|
|
|
20221
20319
|
access: "create"
|
|
20222
20320
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20223
20321
|
kind: "mutation",
|
|
20224
|
-
access: "view"
|
|
20322
|
+
access: "view",
|
|
20323
|
+
auth: "admin"
|
|
20225
20324
|
}), method(object({
|
|
20226
20325
|
/** Required — the user the assertion belongs to (verified). */
|
|
20227
20326
|
userId: string(),
|
|
@@ -20229,10 +20328,12 @@ method(object({
|
|
|
20229
20328
|
response: record(string(), unknown())
|
|
20230
20329
|
}), object({ verified: boolean() }), {
|
|
20231
20330
|
kind: "mutation",
|
|
20232
|
-
access: "view"
|
|
20331
|
+
access: "view",
|
|
20332
|
+
auth: "admin"
|
|
20233
20333
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20234
20334
|
kind: "mutation",
|
|
20235
|
-
access: "view"
|
|
20335
|
+
access: "view",
|
|
20336
|
+
auth: "admin"
|
|
20236
20337
|
}), method(object({
|
|
20237
20338
|
/** AuthenticationResponseJSON from the browser. */
|
|
20238
20339
|
response: record(string(), unknown()) }), object({
|
|
@@ -20240,7 +20341,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20240
20341
|
userId: string().nullable()
|
|
20241
20342
|
}), {
|
|
20242
20343
|
kind: "mutation",
|
|
20243
|
-
access: "view"
|
|
20344
|
+
access: "view",
|
|
20345
|
+
auth: "admin"
|
|
20244
20346
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20245
20347
|
userId: string(),
|
|
20246
20348
|
credentialId: string()
|
|
@@ -20412,7 +20514,19 @@ var VectorStatsResultSchema = object({
|
|
|
20412
20514
|
/** False when the backend ranks approximately. */
|
|
20413
20515
|
exact: boolean()
|
|
20414
20516
|
});
|
|
20415
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20517
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20518
|
+
kind: "mutation",
|
|
20519
|
+
auth: "admin"
|
|
20520
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20521
|
+
kind: "mutation",
|
|
20522
|
+
auth: "admin"
|
|
20523
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20524
|
+
kind: "mutation",
|
|
20525
|
+
auth: "admin"
|
|
20526
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20527
|
+
kind: "mutation",
|
|
20528
|
+
auth: "admin"
|
|
20529
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20416
20530
|
var ClipSchema = object({
|
|
20417
20531
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20418
20532
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -22135,7 +22249,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
22135
22249
|
sizeBytes: number(),
|
|
22136
22250
|
timestamp: number()
|
|
22137
22251
|
});
|
|
22138
|
-
method(
|
|
22252
|
+
method(object({
|
|
22253
|
+
/**
|
|
22254
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
22255
|
+
*
|
|
22256
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
22257
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
22258
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
22259
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
22260
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
22261
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
22262
|
+
*
|
|
22263
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
22264
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
22265
|
+
*
|
|
22266
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
22267
|
+
* next train** — the hub router validates cap inputs against its own
|
|
22268
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
22269
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
22270
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
22271
|
+
*/
|
|
22272
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
22139
22273
|
kind: "mutation",
|
|
22140
22274
|
auth: "admin"
|
|
22141
22275
|
}), method(object({
|
|
@@ -24282,8 +24416,10 @@ var PlateInfoSchema = object({
|
|
|
24282
24416
|
keyFrameMediaKey: string().optional(),
|
|
24283
24417
|
base64: string().optional(),
|
|
24284
24418
|
/**
|
|
24285
|
-
* Same crop as a data-plane URL
|
|
24286
|
-
* never inlines JPEG; `listPlates`
|
|
24419
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
24420
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
24421
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
24422
|
+
* left at its `true` default.
|
|
24287
24423
|
*/
|
|
24288
24424
|
cropUrl: string().optional()
|
|
24289
24425
|
});
|
|
@@ -24303,14 +24439,34 @@ var PlateClusterSchema = object({
|
|
|
24303
24439
|
});
|
|
24304
24440
|
method(object({
|
|
24305
24441
|
deviceId: number().int().optional(),
|
|
24306
|
-
limit: number().int().positive().optional()
|
|
24442
|
+
limit: number().int().positive().optional(),
|
|
24443
|
+
/**
|
|
24444
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
24445
|
+
* behaviour, kept so no caller breaks.
|
|
24446
|
+
*
|
|
24447
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
24448
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
24449
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
24450
|
+
* metadata without them — and the browser then caches the images.
|
|
24451
|
+
*
|
|
24452
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
24453
|
+
* plates were the one gallery list left without it.
|
|
24454
|
+
*
|
|
24455
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
24456
|
+
* next train.** The hub router validates cap inputs against its own
|
|
24457
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
24458
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
24459
|
+
*/
|
|
24460
|
+
includeCrops: boolean().optional()
|
|
24307
24461
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
24308
24462
|
deviceId: number().int(),
|
|
24309
24463
|
trackId: string()
|
|
24310
24464
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
24311
24465
|
text: string().min(1),
|
|
24312
24466
|
maxDistance: number().int().min(0).optional(),
|
|
24313
|
-
limit: number().int().positive().optional()
|
|
24467
|
+
limit: number().int().positive().optional(),
|
|
24468
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
24469
|
+
includeCrops: boolean().optional()
|
|
24314
24470
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
24315
24471
|
maxDistance: number().int().min(0).optional(),
|
|
24316
24472
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -24324,7 +24480,13 @@ method(object({
|
|
|
24324
24480
|
}), method(object({ plateId: string() }), _void(), {
|
|
24325
24481
|
kind: "mutation",
|
|
24326
24482
|
auth: "admin"
|
|
24327
|
-
}), method(
|
|
24483
|
+
}), method(object({
|
|
24484
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
24485
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
24486
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
24487
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
24488
|
+
* resolves to `false` and is exactly the intended default. */
|
|
24489
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
24328
24490
|
kind: "mutation",
|
|
24329
24491
|
auth: "admin"
|
|
24330
24492
|
}), method(object({
|
|
@@ -29701,6 +29863,12 @@ Object.freeze({
|
|
|
29701
29863
|
addonId: null,
|
|
29702
29864
|
access: "create"
|
|
29703
29865
|
},
|
|
29866
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
29867
|
+
capName: "pipeline-analytics",
|
|
29868
|
+
capScope: "device",
|
|
29869
|
+
addonId: null,
|
|
29870
|
+
access: "create"
|
|
29871
|
+
},
|
|
29704
29872
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
29705
29873
|
capName: "pipeline-analytics",
|
|
29706
29874
|
capScope: "device",
|
|
@@ -29875,6 +30043,12 @@ Object.freeze({
|
|
|
29875
30043
|
addonId: null,
|
|
29876
30044
|
access: "view"
|
|
29877
30045
|
},
|
|
30046
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
30047
|
+
capName: "pipeline-analytics",
|
|
30048
|
+
capScope: "device",
|
|
30049
|
+
addonId: null,
|
|
30050
|
+
access: "view"
|
|
30051
|
+
},
|
|
29878
30052
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
29879
30053
|
capName: "pipeline-analytics",
|
|
29880
30054
|
capScope: "device",
|
|
@@ -29953,6 +30127,12 @@ Object.freeze({
|
|
|
29953
30127
|
addonId: null,
|
|
29954
30128
|
access: "create"
|
|
29955
30129
|
},
|
|
30130
|
+
"pipelineAnalytics.relocateMedia": {
|
|
30131
|
+
capName: "pipeline-analytics",
|
|
30132
|
+
capScope: "device",
|
|
30133
|
+
addonId: null,
|
|
30134
|
+
access: "create"
|
|
30135
|
+
},
|
|
29956
30136
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
29957
30137
|
capName: "pipeline-analytics",
|
|
29958
30138
|
capScope: "device",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-export-alexa",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.35",
|
|
4
4
|
"description": "Alexa Smart Home Skill export — hub-side OAuth provider + directive handler. The companion AWS Lambda forwards Alexa directives to this addon's /addon/export-alexa/directive endpoint.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|