@camstack/addon-provider-homeassistant 1.2.41 → 1.2.42
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 +1 -1
- package/dist/addon.mjs +1 -1
- package/dist/{dist-t-5RdKBJ.js → dist-Cef7D9kq.js} +259 -79
- package/dist/{dist-D1G6jUej.mjs → dist-DolpU5X1.mjs} +259 -79
- package/dist/ha-export/ha-export.addon.js +1 -1
- package/dist/ha-export/ha-export.addon.mjs +1 -1
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_dist = require("./dist-
|
|
2
|
+
const require_dist = require("./dist-Cef7D9kq.js");
|
|
3
3
|
let node_crypto = require("node:crypto");
|
|
4
4
|
let node_zlib = require("node:zlib");
|
|
5
5
|
//#region src/ha-device-source.ts
|
package/dist/addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as pressureSensorCapability, A as coverCapability, B as imageCapability, C as buttonCapability, Ct as record, D as connectivityCapability, Dt as url, E as colorCapability, Et as unknown, F as fanControlCapability, G as normalizeUnit, H as lockControlCapability, I as floodCapability, J as numericSensorCapability, K as notificationOutputCapability, L as gasCapability, N as enumSensorCapability, O as contactCapability, Ot as EventCategory, P as eventEmitterCapability, Q as presenceCapability, R as humidifierCapability, S as buildAddonRouteProvider, St as object, T as climateControlCapability, Tt as union, U as mediaPlayerCapability, V as lawnMowerControlCapability, W as motionCapability, X as powerMeterCapability, Z as prepareNotification, _ as batteryCapability, _t as _enum, at as updateCapability, b as brightnessCapability, bt as literal, ct as vibrationCapability, d as accessoriesCapability, dt as errMsg, et as scriptRunnerCapability, f as addonRoutesCapability, g as automationControlCapability, gt as createEvent, h as ambientLightSensorCapability, ht as DeviceType, it as temperatureSensorCapability, j as deviceAdoptionCapability, k as controlCapability, lt as waterHeaterCapability, m as alarmPanelCapability, mt as DeviceRole, n as BaseDevice, nt as switchCapability, o as EnumSensorDateTimeFormatSchema, ot as vacuumControlCapability, p as airQualitySensorCapability, pt as DeviceFeature, q as notifierCapability, r as BaseDeviceProvider, rt as tamperCapability, st as valveCapability, tt as smokeCapability, u as TargetSchema, ut as weatherCapability, v as bestLocationMatch, vt as array, w as carbonMonoxideCapability, wt as string, x as brokerCapability, xt as number, y as binaryCapability, yt as discriminatedUnion, z as humiditySensorCapability } from "./dist-
|
|
1
|
+
import { $ as pressureSensorCapability, A as coverCapability, B as imageCapability, C as buttonCapability, Ct as record, D as connectivityCapability, Dt as url, E as colorCapability, Et as unknown, F as fanControlCapability, G as normalizeUnit, H as lockControlCapability, I as floodCapability, J as numericSensorCapability, K as notificationOutputCapability, L as gasCapability, N as enumSensorCapability, O as contactCapability, Ot as EventCategory, P as eventEmitterCapability, Q as presenceCapability, R as humidifierCapability, S as buildAddonRouteProvider, St as object, T as climateControlCapability, Tt as union, U as mediaPlayerCapability, V as lawnMowerControlCapability, W as motionCapability, X as powerMeterCapability, Z as prepareNotification, _ as batteryCapability, _t as _enum, at as updateCapability, b as brightnessCapability, bt as literal, ct as vibrationCapability, d as accessoriesCapability, dt as errMsg, et as scriptRunnerCapability, f as addonRoutesCapability, g as automationControlCapability, gt as createEvent, h as ambientLightSensorCapability, ht as DeviceType, it as temperatureSensorCapability, j as deviceAdoptionCapability, k as controlCapability, lt as waterHeaterCapability, m as alarmPanelCapability, mt as DeviceRole, n as BaseDevice, nt as switchCapability, o as EnumSensorDateTimeFormatSchema, ot as vacuumControlCapability, p as airQualitySensorCapability, pt as DeviceFeature, q as notifierCapability, r as BaseDeviceProvider, rt as tamperCapability, st as valveCapability, tt as smokeCapability, u as TargetSchema, ut as weatherCapability, v as bestLocationMatch, vt as array, w as carbonMonoxideCapability, wt as string, x as brokerCapability, xt as number, y as binaryCapability, yt as discriminatedUnion, z as humiditySensorCapability } from "./dist-DolpU5X1.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import { brotliCompressSync, deflateSync, gzipSync } from "node:zlib";
|
|
4
4
|
//#region src/ha-device-source.ts
|
|
@@ -6629,7 +6629,7 @@ function method(input, output, options) {
|
|
|
6629
6629
|
input,
|
|
6630
6630
|
output,
|
|
6631
6631
|
kind: options?.kind ?? "query",
|
|
6632
|
-
auth: options
|
|
6632
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6633
6633
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6634
6634
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6635
6635
|
timeoutMs: options?.timeoutMs
|
|
@@ -6653,7 +6653,7 @@ function event(data) {
|
|
|
6653
6653
|
}
|
|
6654
6654
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6655
6655
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6656
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6656
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6657
6657
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6658
6658
|
DeviceType["Camera"] = "camera";
|
|
6659
6659
|
DeviceType["Hub"] = "hub";
|
|
@@ -6974,7 +6974,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
6974
6974
|
}({});
|
|
6975
6975
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
6976
6976
|
var VersionOutputSchema = object({ version: string() });
|
|
6977
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
6977
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
6978
6978
|
/**
|
|
6979
6979
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
6980
6980
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7719,24 +7719,6 @@ var RecordingRetentionSchema = object({
|
|
|
7719
7719
|
maxSizeGb: number().min(0).optional()
|
|
7720
7720
|
});
|
|
7721
7721
|
/**
|
|
7722
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7723
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7724
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7725
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7726
|
-
*
|
|
7727
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7728
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7729
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7730
|
-
* written with.
|
|
7731
|
-
*/
|
|
7732
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7733
|
-
"minimal",
|
|
7734
|
-
"low",
|
|
7735
|
-
"standard",
|
|
7736
|
-
"high",
|
|
7737
|
-
"max"
|
|
7738
|
-
]);
|
|
7739
|
-
/**
|
|
7740
7722
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7741
7723
|
*
|
|
7742
7724
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7744,7 +7726,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7744
7726
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7745
7727
|
*
|
|
7746
7728
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7747
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7729
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7730
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7731
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7732
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7733
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7748
7734
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7749
7735
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7750
7736
|
*/
|
|
@@ -7767,14 +7753,7 @@ var RecordingConfigSchema = object({
|
|
|
7767
7753
|
* "off" is the absence of a covering band, never a band value.
|
|
7768
7754
|
*/
|
|
7769
7755
|
bands: array(RecordingBandSchema).default([]),
|
|
7770
|
-
retention: RecordingRetentionSchema.optional()
|
|
7771
|
-
/**
|
|
7772
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7773
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7774
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7775
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7776
|
-
*/
|
|
7777
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7756
|
+
retention: RecordingRetentionSchema.optional()
|
|
7778
7757
|
}).strict();
|
|
7779
7758
|
/**
|
|
7780
7759
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7850,10 +7829,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7850
7829
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7851
7830
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7852
7831
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7853
|
-
var
|
|
7832
|
+
var RelocateMediaInputSchema = object({
|
|
7854
7833
|
toLocationId: string(),
|
|
7855
7834
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7856
|
-
})
|
|
7835
|
+
});
|
|
7836
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7857
7837
|
/** The independently selectable logical storage classes. `recordings`
|
|
7858
7838
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7859
7839
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8148,7 +8128,26 @@ var LabelDefinitionSchema = object({
|
|
|
8148
8128
|
description: string().optional(),
|
|
8149
8129
|
icon: string().optional()
|
|
8150
8130
|
});
|
|
8151
|
-
|
|
8131
|
+
/**
|
|
8132
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8133
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8134
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8135
|
+
* detection pipeline executor actually routes.
|
|
8136
|
+
*
|
|
8137
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8138
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8139
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8140
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8141
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8142
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8143
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8144
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8145
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8146
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8147
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8148
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8149
|
+
*/
|
|
8150
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8152
8151
|
mapping: record(string(), _enum([
|
|
8153
8152
|
"person",
|
|
8154
8153
|
"vehicle",
|
|
@@ -8353,7 +8352,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8353
8352
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8354
8353
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8355
8354
|
*/
|
|
8356
|
-
classMap:
|
|
8355
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8357
8356
|
});
|
|
8358
8357
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8359
8358
|
format: literal("openvino"),
|
|
@@ -8383,7 +8382,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8383
8382
|
"segmentation"
|
|
8384
8383
|
]),
|
|
8385
8384
|
faceAlignment: boolean().optional(),
|
|
8386
|
-
classMap:
|
|
8385
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8387
8386
|
});
|
|
8388
8387
|
var ConvertResultSchema = object({
|
|
8389
8388
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9246,7 +9245,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9246
9245
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9247
9246
|
sectionLabel: string().optional()
|
|
9248
9247
|
});
|
|
9249
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9248
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9250
9249
|
var AddonHttpRouteSchema = object({
|
|
9251
9250
|
method: _enum([
|
|
9252
9251
|
"GET",
|
|
@@ -9500,7 +9499,7 @@ var WidgetMetadataSchema = object({
|
|
|
9500
9499
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9501
9500
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9502
9501
|
});
|
|
9503
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9502
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9504
9503
|
/**
|
|
9505
9504
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9506
9505
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11173,7 +11172,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11173
11172
|
stepId: string(),
|
|
11174
11173
|
entry: ModelCatalogEntrySchema
|
|
11175
11174
|
});
|
|
11176
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11175
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11177
11176
|
/**
|
|
11178
11177
|
* Query filter for settings-store collections.
|
|
11179
11178
|
*/
|
|
@@ -11260,7 +11259,8 @@ method(object({
|
|
|
11260
11259
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11261
11260
|
namespace: string().optional(),
|
|
11262
11261
|
collection: string(),
|
|
11263
|
-
filter: QueryFilterSchema.optional()
|
|
11262
|
+
filter: QueryFilterSchema.optional(),
|
|
11263
|
+
columns: array(string()).readonly().optional()
|
|
11264
11264
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11265
11265
|
namespace: string().optional(),
|
|
11266
11266
|
collection: string(),
|
|
@@ -11323,46 +11323,87 @@ var EngineInfoSchema = object({
|
|
|
11323
11323
|
kind: _enum(["relational", "vector"]),
|
|
11324
11324
|
displayName: string()
|
|
11325
11325
|
});
|
|
11326
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11326
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11327
11327
|
namespace: string().optional(),
|
|
11328
11328
|
collection: string(),
|
|
11329
11329
|
key: string()
|
|
11330
|
-
}), unknown()), method(object({
|
|
11330
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11331
11331
|
namespace: string().optional(),
|
|
11332
11332
|
collection: string(),
|
|
11333
11333
|
key: string(),
|
|
11334
11334
|
value: unknown()
|
|
11335
|
-
}), _void(), {
|
|
11335
|
+
}), _void(), {
|
|
11336
|
+
kind: "mutation",
|
|
11337
|
+
auth: "admin"
|
|
11338
|
+
}), method(object({
|
|
11336
11339
|
namespace: string().optional(),
|
|
11337
11340
|
collection: string(),
|
|
11338
|
-
filter: QueryFilterSchema.optional()
|
|
11339
|
-
|
|
11341
|
+
filter: QueryFilterSchema.optional(),
|
|
11342
|
+
/**
|
|
11343
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11344
|
+
*
|
|
11345
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11346
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11347
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11348
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11349
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11350
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11351
|
+
*
|
|
11352
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11353
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11354
|
+
* interface the engine destructures from. The field existed on both
|
|
11355
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11356
|
+
* registered provider against `InferProvider<cap>` —
|
|
11357
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11358
|
+
*
|
|
11359
|
+
* It is declared here anyway, and must stay in step with
|
|
11360
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11361
|
+
* to be able to see that this call carries a projection.
|
|
11362
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11363
|
+
*/
|
|
11364
|
+
columns: array(string()).readonly().optional()
|
|
11365
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11340
11366
|
namespace: string().optional(),
|
|
11341
11367
|
collection: string(),
|
|
11342
11368
|
record: SettingsRecordSchema
|
|
11343
|
-
}), _void(), {
|
|
11369
|
+
}), _void(), {
|
|
11370
|
+
kind: "mutation",
|
|
11371
|
+
auth: "admin"
|
|
11372
|
+
}), method(object({
|
|
11344
11373
|
namespace: string().optional(),
|
|
11345
11374
|
collection: string(),
|
|
11346
11375
|
id: string(),
|
|
11347
11376
|
data: record(string(), unknown())
|
|
11348
|
-
}), _void(), {
|
|
11377
|
+
}), _void(), {
|
|
11378
|
+
kind: "mutation",
|
|
11379
|
+
auth: "admin"
|
|
11380
|
+
}), method(object({
|
|
11349
11381
|
namespace: string().optional(),
|
|
11350
11382
|
collection: string(),
|
|
11351
11383
|
key: string()
|
|
11352
|
-
}), _void(), {
|
|
11384
|
+
}), _void(), {
|
|
11385
|
+
kind: "mutation",
|
|
11386
|
+
auth: "admin"
|
|
11387
|
+
}), method(object({
|
|
11353
11388
|
namespace: string().optional(),
|
|
11354
11389
|
collection: string(),
|
|
11355
11390
|
filter: MutationFilterSchema
|
|
11356
|
-
}), object({ deleted: number().int() }), {
|
|
11391
|
+
}), object({ deleted: number().int() }), {
|
|
11392
|
+
kind: "mutation",
|
|
11393
|
+
auth: "admin"
|
|
11394
|
+
}), method(object({
|
|
11357
11395
|
namespace: string().optional(),
|
|
11358
11396
|
collection: string(),
|
|
11359
11397
|
filter: MutationFilterSchema,
|
|
11360
11398
|
data: record(string(), unknown())
|
|
11361
|
-
}), object({ updated: number().int() }), {
|
|
11399
|
+
}), object({ updated: number().int() }), {
|
|
11400
|
+
kind: "mutation",
|
|
11401
|
+
auth: "admin"
|
|
11402
|
+
}), method(object({
|
|
11362
11403
|
namespace: string().optional(),
|
|
11363
11404
|
collection: string(),
|
|
11364
11405
|
filter: QueryFilterSchema.optional()
|
|
11365
|
-
}), number()), method(object({
|
|
11406
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11366
11407
|
namespace: string().optional(),
|
|
11367
11408
|
collection: string(),
|
|
11368
11409
|
field: string(),
|
|
@@ -11372,15 +11413,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11372
11413
|
}), array(object({
|
|
11373
11414
|
bucket: number().int(),
|
|
11374
11415
|
count: number().int()
|
|
11375
|
-
})).readonly()), method(object({
|
|
11416
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11376
11417
|
namespace: string().optional(),
|
|
11377
11418
|
collection: string()
|
|
11378
|
-
}), boolean()), method(object({
|
|
11419
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11379
11420
|
namespace: string().optional(),
|
|
11380
11421
|
collection: string(),
|
|
11381
11422
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11382
11423
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11383
|
-
}), _void(), {
|
|
11424
|
+
}), _void(), {
|
|
11425
|
+
kind: "mutation",
|
|
11426
|
+
auth: "admin"
|
|
11427
|
+
});
|
|
11384
11428
|
/**
|
|
11385
11429
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11386
11430
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12757,7 +12801,7 @@ method(object({
|
|
|
12757
12801
|
crop: _instanceof(Uint8Array),
|
|
12758
12802
|
width: number(),
|
|
12759
12803
|
height: number()
|
|
12760
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12804
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12761
12805
|
/**
|
|
12762
12806
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12763
12807
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -13050,19 +13094,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
13050
13094
|
runtime: ManagedRuntimeConfigSchema,
|
|
13051
13095
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
13052
13096
|
timeoutMs: number().int().positive().optional()
|
|
13053
|
-
}), LlmGenerateResultSchema, {
|
|
13097
|
+
}), LlmGenerateResultSchema, {
|
|
13098
|
+
kind: "mutation",
|
|
13099
|
+
auth: "admin"
|
|
13100
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
13054
13101
|
kind: "mutation",
|
|
13055
13102
|
auth: "admin"
|
|
13056
13103
|
}), method(object({}), _void(), {
|
|
13057
13104
|
kind: "mutation",
|
|
13058
13105
|
auth: "admin"
|
|
13059
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13106
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13060
13107
|
kind: "mutation",
|
|
13061
13108
|
auth: "admin"
|
|
13062
13109
|
}), method(object({ file: string() }), _void(), {
|
|
13063
13110
|
kind: "mutation",
|
|
13064
13111
|
auth: "admin"
|
|
13065
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
13112
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
13066
13113
|
/**
|
|
13067
13114
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
13068
13115
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16592,7 +16639,17 @@ var oauthIntegrationCapability = {
|
|
|
16592
16639
|
scope: "system",
|
|
16593
16640
|
mode: "collection",
|
|
16594
16641
|
internal: true,
|
|
16595
|
-
methods: {
|
|
16642
|
+
methods: {
|
|
16643
|
+
/**
|
|
16644
|
+
* `internal: true` did not gate the mount (see the 2026-08-26 note on
|
|
16645
|
+
* `data-store-provider`) — `getDescriptor` was reachable on the AppRouter
|
|
16646
|
+
* by ANY authenticated session at the default `auth: 'protected'`. The
|
|
16647
|
+
* real caller is `/api/oauth2/authorize` and `/api/oauth2/integrations`
|
|
16648
|
+
* (`oauth2-routes.ts`), which resolve the provider directly off the
|
|
16649
|
+
* capability registry — never through tRPC. `auth: 'admin'` closes the
|
|
16650
|
+
* tRPC surface without touching that path.
|
|
16651
|
+
*/
|
|
16652
|
+
getDescriptor: method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" }) }
|
|
16596
16653
|
};
|
|
16597
16654
|
/**
|
|
16598
16655
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
@@ -17788,6 +17845,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17788
17845
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17789
17846
|
kind: "mutation",
|
|
17790
17847
|
auth: "admin"
|
|
17848
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17849
|
+
kind: "mutation",
|
|
17850
|
+
auth: "admin"
|
|
17851
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17852
|
+
kind: "query",
|
|
17853
|
+
auth: "admin"
|
|
17854
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17855
|
+
kind: "mutation",
|
|
17856
|
+
auth: "admin"
|
|
17791
17857
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17792
17858
|
kind: "query",
|
|
17793
17859
|
auth: "admin"
|
|
@@ -17942,6 +18008,11 @@ object({
|
|
|
17942
18008
|
"jpeg"
|
|
17943
18009
|
])
|
|
17944
18010
|
});
|
|
18011
|
+
/**
|
|
18012
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
18013
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
18014
|
+
* other process or execution group.
|
|
18015
|
+
*/
|
|
17945
18016
|
var FrameRefSchema = object({
|
|
17946
18017
|
registryId: string().min(1),
|
|
17947
18018
|
id: string().min(1),
|
|
@@ -20147,7 +20218,7 @@ method(object({
|
|
|
20147
20218
|
* linking rather than produce an eternal token.
|
|
20148
20219
|
*/
|
|
20149
20220
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
20150
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
20221
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
20151
20222
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
20152
20223
|
providerId: string().min(1),
|
|
20153
20224
|
displayName: string().min(1),
|
|
@@ -20242,10 +20313,13 @@ var EvictResultSchema = object({
|
|
|
20242
20313
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20243
20314
|
exhausted: boolean()
|
|
20244
20315
|
});
|
|
20245
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20316
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20246
20317
|
locationId: string(),
|
|
20247
20318
|
targetBytes: number().int().positive()
|
|
20248
|
-
}), EvictResultSchema, {
|
|
20319
|
+
}), EvictResultSchema, {
|
|
20320
|
+
kind: "mutation",
|
|
20321
|
+
auth: "admin"
|
|
20322
|
+
});
|
|
20249
20323
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20250
20324
|
kind: "mutation",
|
|
20251
20325
|
auth: "admin"
|
|
@@ -20305,26 +20379,50 @@ var ReadChunkInputSchema = object({
|
|
|
20305
20379
|
length: number()
|
|
20306
20380
|
});
|
|
20307
20381
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20308
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20382
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20309
20383
|
location: StorageLocationSchema,
|
|
20310
20384
|
relativePath: string()
|
|
20311
|
-
}), string()), method(object({
|
|
20385
|
+
}), string(), { auth: "admin" }), method(object({
|
|
20312
20386
|
location: StorageLocationSchema,
|
|
20313
20387
|
relativePath: string(),
|
|
20314
20388
|
data: _instanceof(Uint8Array)
|
|
20315
|
-
}), _void(), {
|
|
20389
|
+
}), _void(), {
|
|
20390
|
+
kind: "mutation",
|
|
20391
|
+
auth: "admin"
|
|
20392
|
+
}), method(object({
|
|
20316
20393
|
location: StorageLocationSchema,
|
|
20317
20394
|
relativePath: string()
|
|
20318
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20395
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20319
20396
|
location: StorageLocationSchema,
|
|
20320
20397
|
relativePath: string()
|
|
20321
|
-
}), boolean()), method(object({
|
|
20398
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20322
20399
|
location: StorageLocationSchema,
|
|
20323
20400
|
prefix: string().optional()
|
|
20324
|
-
}), array(string()).readonly()), method(object({
|
|
20401
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
20325
20402
|
location: StorageLocationSchema,
|
|
20326
20403
|
relativePath: string()
|
|
20327
|
-
}), _void(), {
|
|
20404
|
+
}), _void(), {
|
|
20405
|
+
kind: "mutation",
|
|
20406
|
+
auth: "admin"
|
|
20407
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20408
|
+
kind: "mutation",
|
|
20409
|
+
auth: "admin"
|
|
20410
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20411
|
+
kind: "mutation",
|
|
20412
|
+
auth: "admin"
|
|
20413
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20414
|
+
kind: "mutation",
|
|
20415
|
+
auth: "admin"
|
|
20416
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20417
|
+
kind: "mutation",
|
|
20418
|
+
auth: "admin"
|
|
20419
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20420
|
+
kind: "mutation",
|
|
20421
|
+
auth: "admin"
|
|
20422
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20423
|
+
kind: "mutation",
|
|
20424
|
+
auth: "admin"
|
|
20425
|
+
});
|
|
20328
20426
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20329
20427
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20330
20428
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20582,7 +20680,8 @@ method(object({
|
|
|
20582
20680
|
access: "create"
|
|
20583
20681
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20584
20682
|
kind: "mutation",
|
|
20585
|
-
access: "view"
|
|
20683
|
+
access: "view",
|
|
20684
|
+
auth: "admin"
|
|
20586
20685
|
}), method(object({
|
|
20587
20686
|
/** Required — the user the assertion belongs to (verified). */
|
|
20588
20687
|
userId: string(),
|
|
@@ -20590,10 +20689,12 @@ method(object({
|
|
|
20590
20689
|
response: record(string(), unknown())
|
|
20591
20690
|
}), object({ verified: boolean() }), {
|
|
20592
20691
|
kind: "mutation",
|
|
20593
|
-
access: "view"
|
|
20692
|
+
access: "view",
|
|
20693
|
+
auth: "admin"
|
|
20594
20694
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20595
20695
|
kind: "mutation",
|
|
20596
|
-
access: "view"
|
|
20696
|
+
access: "view",
|
|
20697
|
+
auth: "admin"
|
|
20597
20698
|
}), method(object({
|
|
20598
20699
|
/** AuthenticationResponseJSON from the browser. */
|
|
20599
20700
|
response: record(string(), unknown()) }), object({
|
|
@@ -20601,7 +20702,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20601
20702
|
userId: string().nullable()
|
|
20602
20703
|
}), {
|
|
20603
20704
|
kind: "mutation",
|
|
20604
|
-
access: "view"
|
|
20705
|
+
access: "view",
|
|
20706
|
+
auth: "admin"
|
|
20605
20707
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20606
20708
|
userId: string(),
|
|
20607
20709
|
credentialId: string()
|
|
@@ -20773,7 +20875,19 @@ var VectorStatsResultSchema = object({
|
|
|
20773
20875
|
/** False when the backend ranks approximately. */
|
|
20774
20876
|
exact: boolean()
|
|
20775
20877
|
});
|
|
20776
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20878
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20879
|
+
kind: "mutation",
|
|
20880
|
+
auth: "admin"
|
|
20881
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20882
|
+
kind: "mutation",
|
|
20883
|
+
auth: "admin"
|
|
20884
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20885
|
+
kind: "mutation",
|
|
20886
|
+
auth: "admin"
|
|
20887
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20888
|
+
kind: "mutation",
|
|
20889
|
+
auth: "admin"
|
|
20890
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20777
20891
|
var ClipSchema = object({
|
|
20778
20892
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20779
20893
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23315,7 +23429,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23315
23429
|
sizeBytes: number(),
|
|
23316
23430
|
timestamp: number()
|
|
23317
23431
|
});
|
|
23318
|
-
method(
|
|
23432
|
+
method(object({
|
|
23433
|
+
/**
|
|
23434
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23435
|
+
*
|
|
23436
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23437
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23438
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23439
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23440
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23441
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23442
|
+
*
|
|
23443
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23444
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23445
|
+
*
|
|
23446
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23447
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23448
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23449
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23450
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23451
|
+
*/
|
|
23452
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
23319
23453
|
kind: "mutation",
|
|
23320
23454
|
auth: "admin"
|
|
23321
23455
|
}), method(object({
|
|
@@ -26205,8 +26339,10 @@ var PlateInfoSchema = object({
|
|
|
26205
26339
|
keyFrameMediaKey: string().optional(),
|
|
26206
26340
|
base64: string().optional(),
|
|
26207
26341
|
/**
|
|
26208
|
-
* Same crop as a data-plane URL
|
|
26209
|
-
* never inlines JPEG; `listPlates`
|
|
26342
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26343
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26344
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26345
|
+
* left at its `true` default.
|
|
26210
26346
|
*/
|
|
26211
26347
|
cropUrl: string().optional()
|
|
26212
26348
|
});
|
|
@@ -26226,14 +26362,34 @@ var PlateClusterSchema = object({
|
|
|
26226
26362
|
});
|
|
26227
26363
|
method(object({
|
|
26228
26364
|
deviceId: number().int().optional(),
|
|
26229
|
-
limit: number().int().positive().optional()
|
|
26365
|
+
limit: number().int().positive().optional(),
|
|
26366
|
+
/**
|
|
26367
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26368
|
+
* behaviour, kept so no caller breaks.
|
|
26369
|
+
*
|
|
26370
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26371
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26372
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26373
|
+
* metadata without them — and the browser then caches the images.
|
|
26374
|
+
*
|
|
26375
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26376
|
+
* plates were the one gallery list left without it.
|
|
26377
|
+
*
|
|
26378
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26379
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26380
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26381
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26382
|
+
*/
|
|
26383
|
+
includeCrops: boolean().optional()
|
|
26230
26384
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
26231
26385
|
deviceId: number().int(),
|
|
26232
26386
|
trackId: string()
|
|
26233
26387
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
26234
26388
|
text: string().min(1),
|
|
26235
26389
|
maxDistance: number().int().min(0).optional(),
|
|
26236
|
-
limit: number().int().positive().optional()
|
|
26390
|
+
limit: number().int().positive().optional(),
|
|
26391
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26392
|
+
includeCrops: boolean().optional()
|
|
26237
26393
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
26238
26394
|
maxDistance: number().int().min(0).optional(),
|
|
26239
26395
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -26247,7 +26403,13 @@ method(object({
|
|
|
26247
26403
|
}), method(object({ plateId: string() }), _void(), {
|
|
26248
26404
|
kind: "mutation",
|
|
26249
26405
|
auth: "admin"
|
|
26250
|
-
}), method(
|
|
26406
|
+
}), method(object({
|
|
26407
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26408
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26409
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26410
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26411
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26412
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
26251
26413
|
kind: "mutation",
|
|
26252
26414
|
auth: "admin"
|
|
26253
26415
|
}), method(object({
|
|
@@ -33508,6 +33670,12 @@ Object.freeze({
|
|
|
33508
33670
|
addonId: null,
|
|
33509
33671
|
access: "create"
|
|
33510
33672
|
},
|
|
33673
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
33674
|
+
capName: "pipeline-analytics",
|
|
33675
|
+
capScope: "device",
|
|
33676
|
+
addonId: null,
|
|
33677
|
+
access: "create"
|
|
33678
|
+
},
|
|
33511
33679
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33512
33680
|
capName: "pipeline-analytics",
|
|
33513
33681
|
capScope: "device",
|
|
@@ -33682,6 +33850,12 @@ Object.freeze({
|
|
|
33682
33850
|
addonId: null,
|
|
33683
33851
|
access: "view"
|
|
33684
33852
|
},
|
|
33853
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
33854
|
+
capName: "pipeline-analytics",
|
|
33855
|
+
capScope: "device",
|
|
33856
|
+
addonId: null,
|
|
33857
|
+
access: "view"
|
|
33858
|
+
},
|
|
33685
33859
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
33686
33860
|
capName: "pipeline-analytics",
|
|
33687
33861
|
capScope: "device",
|
|
@@ -33760,6 +33934,12 @@ Object.freeze({
|
|
|
33760
33934
|
addonId: null,
|
|
33761
33935
|
access: "create"
|
|
33762
33936
|
},
|
|
33937
|
+
"pipelineAnalytics.relocateMedia": {
|
|
33938
|
+
capName: "pipeline-analytics",
|
|
33939
|
+
capScope: "device",
|
|
33940
|
+
addonId: null,
|
|
33941
|
+
access: "create"
|
|
33942
|
+
},
|
|
33763
33943
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
33764
33944
|
capName: "pipeline-analytics",
|
|
33765
33945
|
capScope: "device",
|
|
@@ -6629,7 +6629,7 @@ function method(input, output, options) {
|
|
|
6629
6629
|
input,
|
|
6630
6630
|
output,
|
|
6631
6631
|
kind: options?.kind ?? "query",
|
|
6632
|
-
auth: options
|
|
6632
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
6633
6633
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
6634
6634
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
6635
6635
|
timeoutMs: options?.timeoutMs
|
|
@@ -6653,7 +6653,7 @@ function event(data) {
|
|
|
6653
6653
|
}
|
|
6654
6654
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6655
6655
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6656
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
6656
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
6657
6657
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6658
6658
|
DeviceType["Camera"] = "camera";
|
|
6659
6659
|
DeviceType["Hub"] = "hub";
|
|
@@ -6974,7 +6974,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
6974
6974
|
}({});
|
|
6975
6975
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
6976
6976
|
var VersionOutputSchema = object({ version: string() });
|
|
6977
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
6977
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
6978
6978
|
/**
|
|
6979
6979
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
6980
6980
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -7719,24 +7719,6 @@ var RecordingRetentionSchema = object({
|
|
|
7719
7719
|
maxSizeGb: number().min(0).optional()
|
|
7720
7720
|
});
|
|
7721
7721
|
/**
|
|
7722
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
7723
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
7724
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
7725
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
7726
|
-
*
|
|
7727
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
7728
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
7729
|
-
* preset changed over time renders every historical window at the dims it was
|
|
7730
|
-
* written with.
|
|
7731
|
-
*/
|
|
7732
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
7733
|
-
"minimal",
|
|
7734
|
-
"low",
|
|
7735
|
-
"standard",
|
|
7736
|
-
"high",
|
|
7737
|
-
"max"
|
|
7738
|
-
]);
|
|
7739
|
-
/**
|
|
7740
7722
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
7741
7723
|
*
|
|
7742
7724
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -7744,7 +7726,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
7744
7726
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
7745
7727
|
*
|
|
7746
7728
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
7747
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
7729
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
7730
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
7731
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
7732
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
7733
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
7748
7734
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
7749
7735
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
7750
7736
|
*/
|
|
@@ -7767,14 +7753,7 @@ var RecordingConfigSchema = object({
|
|
|
7767
7753
|
* "off" is the absence of a covering band, never a band value.
|
|
7768
7754
|
*/
|
|
7769
7755
|
bands: array(RecordingBandSchema).default([]),
|
|
7770
|
-
retention: RecordingRetentionSchema.optional()
|
|
7771
|
-
/**
|
|
7772
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
7773
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
7774
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
7775
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7776
|
-
*/
|
|
7777
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7756
|
+
retention: RecordingRetentionSchema.optional()
|
|
7778
7757
|
}).strict();
|
|
7779
7758
|
/**
|
|
7780
7759
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -7850,10 +7829,11 @@ var RelocateFootageInputSchema = object({
|
|
|
7850
7829
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
7851
7830
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
7852
7831
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
7853
|
-
var
|
|
7832
|
+
var RelocateMediaInputSchema = object({
|
|
7854
7833
|
toLocationId: string(),
|
|
7855
7834
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
7856
|
-
})
|
|
7835
|
+
});
|
|
7836
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
7857
7837
|
/** The independently selectable logical storage classes. `recordings`
|
|
7858
7838
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
7859
7839
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8148,7 +8128,26 @@ var LabelDefinitionSchema = object({
|
|
|
8148
8128
|
description: string().optional(),
|
|
8149
8129
|
icon: string().optional()
|
|
8150
8130
|
});
|
|
8151
|
-
|
|
8131
|
+
/**
|
|
8132
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8133
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8134
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8135
|
+
* detection pipeline executor actually routes.
|
|
8136
|
+
*
|
|
8137
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8138
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8139
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8140
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8141
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8142
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8143
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8144
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8145
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8146
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8147
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8148
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8149
|
+
*/
|
|
8150
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8152
8151
|
mapping: record(string(), _enum([
|
|
8153
8152
|
"person",
|
|
8154
8153
|
"vehicle",
|
|
@@ -8353,7 +8352,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8353
8352
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8354
8353
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8355
8354
|
*/
|
|
8356
|
-
classMap:
|
|
8355
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8357
8356
|
});
|
|
8358
8357
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8359
8358
|
format: literal("openvino"),
|
|
@@ -8383,7 +8382,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8383
8382
|
"segmentation"
|
|
8384
8383
|
]),
|
|
8385
8384
|
faceAlignment: boolean().optional(),
|
|
8386
|
-
classMap:
|
|
8385
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8387
8386
|
});
|
|
8388
8387
|
var ConvertResultSchema = object({
|
|
8389
8388
|
entry: ModelCatalogEntrySchema,
|
|
@@ -9246,7 +9245,7 @@ var AddonPageDeclarationSchema = object({
|
|
|
9246
9245
|
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
9247
9246
|
sectionLabel: string().optional()
|
|
9248
9247
|
});
|
|
9249
|
-
method(_void(), array(AddonPageDeclarationSchema).readonly());
|
|
9248
|
+
method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" });
|
|
9250
9249
|
var AddonHttpRouteSchema = object({
|
|
9251
9250
|
method: _enum([
|
|
9252
9251
|
"GET",
|
|
@@ -9500,7 +9499,7 @@ var WidgetMetadataSchema = object({
|
|
|
9500
9499
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
9501
9500
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
9502
9501
|
});
|
|
9503
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
9502
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
9504
9503
|
/**
|
|
9505
9504
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
9506
9505
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11173,7 +11172,7 @@ var CustomModelDescriptorSchema = object({
|
|
|
11173
11172
|
stepId: string(),
|
|
11174
11173
|
entry: ModelCatalogEntrySchema
|
|
11175
11174
|
});
|
|
11176
|
-
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
11175
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" });
|
|
11177
11176
|
/**
|
|
11178
11177
|
* Query filter for settings-store collections.
|
|
11179
11178
|
*/
|
|
@@ -11260,7 +11259,8 @@ method(object({
|
|
|
11260
11259
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11261
11260
|
namespace: string().optional(),
|
|
11262
11261
|
collection: string(),
|
|
11263
|
-
filter: QueryFilterSchema.optional()
|
|
11262
|
+
filter: QueryFilterSchema.optional(),
|
|
11263
|
+
columns: array(string()).readonly().optional()
|
|
11264
11264
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11265
11265
|
namespace: string().optional(),
|
|
11266
11266
|
collection: string(),
|
|
@@ -11323,46 +11323,87 @@ var EngineInfoSchema = object({
|
|
|
11323
11323
|
kind: _enum(["relational", "vector"]),
|
|
11324
11324
|
displayName: string()
|
|
11325
11325
|
});
|
|
11326
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11326
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11327
11327
|
namespace: string().optional(),
|
|
11328
11328
|
collection: string(),
|
|
11329
11329
|
key: string()
|
|
11330
|
-
}), unknown()), method(object({
|
|
11330
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11331
11331
|
namespace: string().optional(),
|
|
11332
11332
|
collection: string(),
|
|
11333
11333
|
key: string(),
|
|
11334
11334
|
value: unknown()
|
|
11335
|
-
}), _void(), {
|
|
11335
|
+
}), _void(), {
|
|
11336
|
+
kind: "mutation",
|
|
11337
|
+
auth: "admin"
|
|
11338
|
+
}), method(object({
|
|
11336
11339
|
namespace: string().optional(),
|
|
11337
11340
|
collection: string(),
|
|
11338
|
-
filter: QueryFilterSchema.optional()
|
|
11339
|
-
|
|
11341
|
+
filter: QueryFilterSchema.optional(),
|
|
11342
|
+
/**
|
|
11343
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11344
|
+
*
|
|
11345
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11346
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11347
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11348
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11349
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11350
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11351
|
+
*
|
|
11352
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11353
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11354
|
+
* interface the engine destructures from. The field existed on both
|
|
11355
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11356
|
+
* registered provider against `InferProvider<cap>` —
|
|
11357
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11358
|
+
*
|
|
11359
|
+
* It is declared here anyway, and must stay in step with
|
|
11360
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11361
|
+
* to be able to see that this call carries a projection.
|
|
11362
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11363
|
+
*/
|
|
11364
|
+
columns: array(string()).readonly().optional()
|
|
11365
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11340
11366
|
namespace: string().optional(),
|
|
11341
11367
|
collection: string(),
|
|
11342
11368
|
record: SettingsRecordSchema
|
|
11343
|
-
}), _void(), {
|
|
11369
|
+
}), _void(), {
|
|
11370
|
+
kind: "mutation",
|
|
11371
|
+
auth: "admin"
|
|
11372
|
+
}), method(object({
|
|
11344
11373
|
namespace: string().optional(),
|
|
11345
11374
|
collection: string(),
|
|
11346
11375
|
id: string(),
|
|
11347
11376
|
data: record(string(), unknown())
|
|
11348
|
-
}), _void(), {
|
|
11377
|
+
}), _void(), {
|
|
11378
|
+
kind: "mutation",
|
|
11379
|
+
auth: "admin"
|
|
11380
|
+
}), method(object({
|
|
11349
11381
|
namespace: string().optional(),
|
|
11350
11382
|
collection: string(),
|
|
11351
11383
|
key: string()
|
|
11352
|
-
}), _void(), {
|
|
11384
|
+
}), _void(), {
|
|
11385
|
+
kind: "mutation",
|
|
11386
|
+
auth: "admin"
|
|
11387
|
+
}), method(object({
|
|
11353
11388
|
namespace: string().optional(),
|
|
11354
11389
|
collection: string(),
|
|
11355
11390
|
filter: MutationFilterSchema
|
|
11356
|
-
}), object({ deleted: number().int() }), {
|
|
11391
|
+
}), object({ deleted: number().int() }), {
|
|
11392
|
+
kind: "mutation",
|
|
11393
|
+
auth: "admin"
|
|
11394
|
+
}), method(object({
|
|
11357
11395
|
namespace: string().optional(),
|
|
11358
11396
|
collection: string(),
|
|
11359
11397
|
filter: MutationFilterSchema,
|
|
11360
11398
|
data: record(string(), unknown())
|
|
11361
|
-
}), object({ updated: number().int() }), {
|
|
11399
|
+
}), object({ updated: number().int() }), {
|
|
11400
|
+
kind: "mutation",
|
|
11401
|
+
auth: "admin"
|
|
11402
|
+
}), method(object({
|
|
11362
11403
|
namespace: string().optional(),
|
|
11363
11404
|
collection: string(),
|
|
11364
11405
|
filter: QueryFilterSchema.optional()
|
|
11365
|
-
}), number()), method(object({
|
|
11406
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11366
11407
|
namespace: string().optional(),
|
|
11367
11408
|
collection: string(),
|
|
11368
11409
|
field: string(),
|
|
@@ -11372,15 +11413,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11372
11413
|
}), array(object({
|
|
11373
11414
|
bucket: number().int(),
|
|
11374
11415
|
count: number().int()
|
|
11375
|
-
})).readonly()), method(object({
|
|
11416
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11376
11417
|
namespace: string().optional(),
|
|
11377
11418
|
collection: string()
|
|
11378
|
-
}), boolean()), method(object({
|
|
11419
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11379
11420
|
namespace: string().optional(),
|
|
11380
11421
|
collection: string(),
|
|
11381
11422
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11382
11423
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11383
|
-
}), _void(), {
|
|
11424
|
+
}), _void(), {
|
|
11425
|
+
kind: "mutation",
|
|
11426
|
+
auth: "admin"
|
|
11427
|
+
});
|
|
11384
11428
|
/**
|
|
11385
11429
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11386
11430
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12757,7 +12801,7 @@ method(object({
|
|
|
12757
12801
|
crop: _instanceof(Uint8Array),
|
|
12758
12802
|
width: number(),
|
|
12759
12803
|
height: number()
|
|
12760
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12804
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12761
12805
|
/**
|
|
12762
12806
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12763
12807
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -13050,19 +13094,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
13050
13094
|
runtime: ManagedRuntimeConfigSchema,
|
|
13051
13095
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
13052
13096
|
timeoutMs: number().int().positive().optional()
|
|
13053
|
-
}), LlmGenerateResultSchema, {
|
|
13097
|
+
}), LlmGenerateResultSchema, {
|
|
13098
|
+
kind: "mutation",
|
|
13099
|
+
auth: "admin"
|
|
13100
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
13054
13101
|
kind: "mutation",
|
|
13055
13102
|
auth: "admin"
|
|
13056
13103
|
}), method(object({}), _void(), {
|
|
13057
13104
|
kind: "mutation",
|
|
13058
13105
|
auth: "admin"
|
|
13059
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13106
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13060
13107
|
kind: "mutation",
|
|
13061
13108
|
auth: "admin"
|
|
13062
13109
|
}), method(object({ file: string() }), _void(), {
|
|
13063
13110
|
kind: "mutation",
|
|
13064
13111
|
auth: "admin"
|
|
13065
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
13112
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
13066
13113
|
/**
|
|
13067
13114
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
13068
13115
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16592,7 +16639,17 @@ var oauthIntegrationCapability = {
|
|
|
16592
16639
|
scope: "system",
|
|
16593
16640
|
mode: "collection",
|
|
16594
16641
|
internal: true,
|
|
16595
|
-
methods: {
|
|
16642
|
+
methods: {
|
|
16643
|
+
/**
|
|
16644
|
+
* `internal: true` did not gate the mount (see the 2026-08-26 note on
|
|
16645
|
+
* `data-store-provider`) — `getDescriptor` was reachable on the AppRouter
|
|
16646
|
+
* by ANY authenticated session at the default `auth: 'protected'`. The
|
|
16647
|
+
* real caller is `/api/oauth2/authorize` and `/api/oauth2/integrations`
|
|
16648
|
+
* (`oauth2-routes.ts`), which resolve the provider directly off the
|
|
16649
|
+
* capability registry — never through tRPC. `auth: 'admin'` closes the
|
|
16650
|
+
* tRPC surface without touching that path.
|
|
16651
|
+
*/
|
|
16652
|
+
getDescriptor: method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" }) }
|
|
16596
16653
|
};
|
|
16597
16654
|
/**
|
|
16598
16655
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
@@ -17788,6 +17845,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17788
17845
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17789
17846
|
kind: "mutation",
|
|
17790
17847
|
auth: "admin"
|
|
17848
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17849
|
+
kind: "mutation",
|
|
17850
|
+
auth: "admin"
|
|
17851
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17852
|
+
kind: "query",
|
|
17853
|
+
auth: "admin"
|
|
17854
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17855
|
+
kind: "mutation",
|
|
17856
|
+
auth: "admin"
|
|
17791
17857
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17792
17858
|
kind: "query",
|
|
17793
17859
|
auth: "admin"
|
|
@@ -17942,6 +18008,11 @@ object({
|
|
|
17942
18008
|
"jpeg"
|
|
17943
18009
|
])
|
|
17944
18010
|
});
|
|
18011
|
+
/**
|
|
18012
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
18013
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
18014
|
+
* other process or execution group.
|
|
18015
|
+
*/
|
|
17945
18016
|
var FrameRefSchema = object({
|
|
17946
18017
|
registryId: string().min(1),
|
|
17947
18018
|
id: string().min(1),
|
|
@@ -20147,7 +20218,7 @@ method(object({
|
|
|
20147
20218
|
* linking rather than produce an eternal token.
|
|
20148
20219
|
*/
|
|
20149
20220
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
20150
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
20221
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
20151
20222
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
20152
20223
|
providerId: string().min(1),
|
|
20153
20224
|
displayName: string().min(1),
|
|
@@ -20242,10 +20313,13 @@ var EvictResultSchema = object({
|
|
|
20242
20313
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20243
20314
|
exhausted: boolean()
|
|
20244
20315
|
});
|
|
20245
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20316
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20246
20317
|
locationId: string(),
|
|
20247
20318
|
targetBytes: number().int().positive()
|
|
20248
|
-
}), EvictResultSchema, {
|
|
20319
|
+
}), EvictResultSchema, {
|
|
20320
|
+
kind: "mutation",
|
|
20321
|
+
auth: "admin"
|
|
20322
|
+
});
|
|
20249
20323
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20250
20324
|
kind: "mutation",
|
|
20251
20325
|
auth: "admin"
|
|
@@ -20305,26 +20379,50 @@ var ReadChunkInputSchema = object({
|
|
|
20305
20379
|
length: number()
|
|
20306
20380
|
});
|
|
20307
20381
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20308
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20382
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20309
20383
|
location: StorageLocationSchema,
|
|
20310
20384
|
relativePath: string()
|
|
20311
|
-
}), string()), method(object({
|
|
20385
|
+
}), string(), { auth: "admin" }), method(object({
|
|
20312
20386
|
location: StorageLocationSchema,
|
|
20313
20387
|
relativePath: string(),
|
|
20314
20388
|
data: _instanceof(Uint8Array)
|
|
20315
|
-
}), _void(), {
|
|
20389
|
+
}), _void(), {
|
|
20390
|
+
kind: "mutation",
|
|
20391
|
+
auth: "admin"
|
|
20392
|
+
}), method(object({
|
|
20316
20393
|
location: StorageLocationSchema,
|
|
20317
20394
|
relativePath: string()
|
|
20318
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20395
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20319
20396
|
location: StorageLocationSchema,
|
|
20320
20397
|
relativePath: string()
|
|
20321
|
-
}), boolean()), method(object({
|
|
20398
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20322
20399
|
location: StorageLocationSchema,
|
|
20323
20400
|
prefix: string().optional()
|
|
20324
|
-
}), array(string()).readonly()), method(object({
|
|
20401
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
20325
20402
|
location: StorageLocationSchema,
|
|
20326
20403
|
relativePath: string()
|
|
20327
|
-
}), _void(), {
|
|
20404
|
+
}), _void(), {
|
|
20405
|
+
kind: "mutation",
|
|
20406
|
+
auth: "admin"
|
|
20407
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20408
|
+
kind: "mutation",
|
|
20409
|
+
auth: "admin"
|
|
20410
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20411
|
+
kind: "mutation",
|
|
20412
|
+
auth: "admin"
|
|
20413
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20414
|
+
kind: "mutation",
|
|
20415
|
+
auth: "admin"
|
|
20416
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20417
|
+
kind: "mutation",
|
|
20418
|
+
auth: "admin"
|
|
20419
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20420
|
+
kind: "mutation",
|
|
20421
|
+
auth: "admin"
|
|
20422
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20423
|
+
kind: "mutation",
|
|
20424
|
+
auth: "admin"
|
|
20425
|
+
});
|
|
20328
20426
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20329
20427
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20330
20428
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20582,7 +20680,8 @@ method(object({
|
|
|
20582
20680
|
access: "create"
|
|
20583
20681
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20584
20682
|
kind: "mutation",
|
|
20585
|
-
access: "view"
|
|
20683
|
+
access: "view",
|
|
20684
|
+
auth: "admin"
|
|
20586
20685
|
}), method(object({
|
|
20587
20686
|
/** Required — the user the assertion belongs to (verified). */
|
|
20588
20687
|
userId: string(),
|
|
@@ -20590,10 +20689,12 @@ method(object({
|
|
|
20590
20689
|
response: record(string(), unknown())
|
|
20591
20690
|
}), object({ verified: boolean() }), {
|
|
20592
20691
|
kind: "mutation",
|
|
20593
|
-
access: "view"
|
|
20692
|
+
access: "view",
|
|
20693
|
+
auth: "admin"
|
|
20594
20694
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20595
20695
|
kind: "mutation",
|
|
20596
|
-
access: "view"
|
|
20696
|
+
access: "view",
|
|
20697
|
+
auth: "admin"
|
|
20597
20698
|
}), method(object({
|
|
20598
20699
|
/** AuthenticationResponseJSON from the browser. */
|
|
20599
20700
|
response: record(string(), unknown()) }), object({
|
|
@@ -20601,7 +20702,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20601
20702
|
userId: string().nullable()
|
|
20602
20703
|
}), {
|
|
20603
20704
|
kind: "mutation",
|
|
20604
|
-
access: "view"
|
|
20705
|
+
access: "view",
|
|
20706
|
+
auth: "admin"
|
|
20605
20707
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20606
20708
|
userId: string(),
|
|
20607
20709
|
credentialId: string()
|
|
@@ -20773,7 +20875,19 @@ var VectorStatsResultSchema = object({
|
|
|
20773
20875
|
/** False when the backend ranks approximately. */
|
|
20774
20876
|
exact: boolean()
|
|
20775
20877
|
});
|
|
20776
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20878
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20879
|
+
kind: "mutation",
|
|
20880
|
+
auth: "admin"
|
|
20881
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20882
|
+
kind: "mutation",
|
|
20883
|
+
auth: "admin"
|
|
20884
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20885
|
+
kind: "mutation",
|
|
20886
|
+
auth: "admin"
|
|
20887
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20888
|
+
kind: "mutation",
|
|
20889
|
+
auth: "admin"
|
|
20890
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20777
20891
|
var ClipSchema = object({
|
|
20778
20892
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20779
20893
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -23315,7 +23429,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
23315
23429
|
sizeBytes: number(),
|
|
23316
23430
|
timestamp: number()
|
|
23317
23431
|
});
|
|
23318
|
-
method(
|
|
23432
|
+
method(object({
|
|
23433
|
+
/**
|
|
23434
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
23435
|
+
*
|
|
23436
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
23437
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
23438
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
23439
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
23440
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
23441
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
23442
|
+
*
|
|
23443
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
23444
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
23445
|
+
*
|
|
23446
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
23447
|
+
* next train** — the hub router validates cap inputs against its own
|
|
23448
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
23449
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
23450
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
23451
|
+
*/
|
|
23452
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
23319
23453
|
kind: "mutation",
|
|
23320
23454
|
auth: "admin"
|
|
23321
23455
|
}), method(object({
|
|
@@ -26205,8 +26339,10 @@ var PlateInfoSchema = object({
|
|
|
26205
26339
|
keyFrameMediaKey: string().optional(),
|
|
26206
26340
|
base64: string().optional(),
|
|
26207
26341
|
/**
|
|
26208
|
-
* Same crop as a data-plane URL
|
|
26209
|
-
* never inlines JPEG; `listPlates`
|
|
26342
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
26343
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
26344
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
26345
|
+
* left at its `true` default.
|
|
26210
26346
|
*/
|
|
26211
26347
|
cropUrl: string().optional()
|
|
26212
26348
|
});
|
|
@@ -26226,14 +26362,34 @@ var PlateClusterSchema = object({
|
|
|
26226
26362
|
});
|
|
26227
26363
|
method(object({
|
|
26228
26364
|
deviceId: number().int().optional(),
|
|
26229
|
-
limit: number().int().positive().optional()
|
|
26365
|
+
limit: number().int().positive().optional(),
|
|
26366
|
+
/**
|
|
26367
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
26368
|
+
* behaviour, kept so no caller breaks.
|
|
26369
|
+
*
|
|
26370
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
26371
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
26372
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
26373
|
+
* metadata without them — and the browser then caches the images.
|
|
26374
|
+
*
|
|
26375
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
26376
|
+
* plates were the one gallery list left without it.
|
|
26377
|
+
*
|
|
26378
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
26379
|
+
* next train.** The hub router validates cap inputs against its own
|
|
26380
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
26381
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
26382
|
+
*/
|
|
26383
|
+
includeCrops: boolean().optional()
|
|
26230
26384
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
26231
26385
|
deviceId: number().int(),
|
|
26232
26386
|
trackId: string()
|
|
26233
26387
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
26234
26388
|
text: string().min(1),
|
|
26235
26389
|
maxDistance: number().int().min(0).optional(),
|
|
26236
|
-
limit: number().int().positive().optional()
|
|
26390
|
+
limit: number().int().positive().optional(),
|
|
26391
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
26392
|
+
includeCrops: boolean().optional()
|
|
26237
26393
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
26238
26394
|
maxDistance: number().int().min(0).optional(),
|
|
26239
26395
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -26247,7 +26403,13 @@ method(object({
|
|
|
26247
26403
|
}), method(object({ plateId: string() }), _void(), {
|
|
26248
26404
|
kind: "mutation",
|
|
26249
26405
|
auth: "admin"
|
|
26250
|
-
}), method(
|
|
26406
|
+
}), method(object({
|
|
26407
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
26408
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
26409
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
26410
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
26411
|
+
* resolves to `false` and is exactly the intended default. */
|
|
26412
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
26251
26413
|
kind: "mutation",
|
|
26252
26414
|
auth: "admin"
|
|
26253
26415
|
}), method(object({
|
|
@@ -33508,6 +33670,12 @@ Object.freeze({
|
|
|
33508
33670
|
addonId: null,
|
|
33509
33671
|
access: "create"
|
|
33510
33672
|
},
|
|
33673
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
33674
|
+
capName: "pipeline-analytics",
|
|
33675
|
+
capScope: "device",
|
|
33676
|
+
addonId: null,
|
|
33677
|
+
access: "create"
|
|
33678
|
+
},
|
|
33511
33679
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
33512
33680
|
capName: "pipeline-analytics",
|
|
33513
33681
|
capScope: "device",
|
|
@@ -33682,6 +33850,12 @@ Object.freeze({
|
|
|
33682
33850
|
addonId: null,
|
|
33683
33851
|
access: "view"
|
|
33684
33852
|
},
|
|
33853
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
33854
|
+
capName: "pipeline-analytics",
|
|
33855
|
+
capScope: "device",
|
|
33856
|
+
addonId: null,
|
|
33857
|
+
access: "view"
|
|
33858
|
+
},
|
|
33685
33859
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
33686
33860
|
capName: "pipeline-analytics",
|
|
33687
33861
|
capScope: "device",
|
|
@@ -33760,6 +33934,12 @@ Object.freeze({
|
|
|
33760
33934
|
addonId: null,
|
|
33761
33935
|
access: "create"
|
|
33762
33936
|
},
|
|
33937
|
+
"pipelineAnalytics.relocateMedia": {
|
|
33938
|
+
capName: "pipeline-analytics",
|
|
33939
|
+
capScope: "device",
|
|
33940
|
+
addonId: null,
|
|
33941
|
+
access: "create"
|
|
33942
|
+
},
|
|
33763
33943
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
33764
33944
|
capName: "pipeline-analytics",
|
|
33765
33945
|
capScope: "device",
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
//#endregion
|
|
6
|
-
const require_dist = require("../dist-
|
|
6
|
+
const require_dist = require("../dist-Cef7D9kq.js");
|
|
7
7
|
let node_crypto = require("node:crypto");
|
|
8
8
|
//#region src/ha-export/topics.ts
|
|
9
9
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { M as deviceExportCapability, Ot as EventCategory, S as buildAddonRouteProvider, Y as oauthIntegrationCapability, a as CameraSwitchIdSchema, c as HvacModeSchema, f as addonRoutesCapability, ft as BaseAddon, i as COCO_TO_MACRO, l as MediaPlayerRepeatSchema, s as FanDirectionSchema, t as AlarmArmModeSchema, wt as string } from "../dist-
|
|
1
|
+
import { M as deviceExportCapability, Ot as EventCategory, S as buildAddonRouteProvider, Y as oauthIntegrationCapability, a as CameraSwitchIdSchema, c as HvacModeSchema, f as addonRoutesCapability, ft as BaseAddon, i as COCO_TO_MACRO, l as MediaPlayerRepeatSchema, s as FanDirectionSchema, t as AlarmArmModeSchema, wt as string } from "../dist-DolpU5X1.mjs";
|
|
2
2
|
import { createHmac, timingSafeEqual } from "node:crypto";
|
|
3
3
|
//#region src/ha-export/topics.ts
|
|
4
4
|
/**
|