@camstack/addon-model-studio 1.1.42 → 1.1.43
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/{MotionZonesSettings-CjuAU9G1.mjs → MotionZonesSettings-BQmeOC6s.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-DGgoakvb.mjs → PrivacyMaskSettings-MznS24IR.mjs} +4 -4
- package/dist/{SceneMonitorEditor-BbhGQMS0.mjs → SceneMonitorEditor-slpx5RVW.mjs} +3 -3
- package/dist/_stub.js +3721 -3354
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-C6iWEfrD.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-Dvg3AwY0.mjs} +4 -4
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Dz7eB41h.mjs +26 -0
- package/dist/{hostInit-DiT_J3FN.mjs → hostInit-9uaH_tWZ.mjs} +3 -3
- package/dist/model-studio.addon.js +304 -100
- package/dist/model-studio.addon.mjs +304 -100
- package/dist/{player-overlays-DxUZLAfW.mjs → player-overlays-ZV106hch.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-CTOSHDQc.mjs → responsive-BWcJ76VI.mjs} +1 -1
- package/dist/{square-xdu1CBwb.mjs → square-DK5dno3H.mjs} +1 -1
- package/dist/{trash-2-Dhb8HSyo.mjs → trash-2-B9ZCrm5O.mjs} +1 -1
- package/dist/{use-device-snapshot-B5bRXvO7.mjs → use-device-snapshot-_PNv-X_c.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CJdZ-nWm.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-DQmO25Hm.mjs} +1 -1
- package/package.json +1 -1
- package/python/__pycache__/convert.cpython-314.pyc +0 -0
- package/python/__pycache__/convert_lib.cpython-312.pyc +0 -0
- package/python/__pycache__/convert_lib.cpython-314.pyc +0 -0
- package/python/__tests__/__pycache__/test_convert_lib.cpython-314.pyc +0 -0
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-4Obpn8FN.mjs +0 -26
|
@@ -7285,7 +7285,7 @@ function method(input, output, options) {
|
|
|
7285
7285
|
input,
|
|
7286
7286
|
output,
|
|
7287
7287
|
kind: options?.kind ?? "query",
|
|
7288
|
-
auth: options
|
|
7288
|
+
...options?.auth !== void 0 ? { auth: options.auth } : {},
|
|
7289
7289
|
...options?.access !== void 0 ? { access: options.access } : {},
|
|
7290
7290
|
...options?.caller !== void 0 ? { caller: options.caller } : {},
|
|
7291
7291
|
timeoutMs: options?.timeoutMs
|
|
@@ -7305,7 +7305,7 @@ function systemMethod(input, output, options) {
|
|
|
7305
7305
|
}
|
|
7306
7306
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
7307
7307
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
7308
|
-
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
7308
|
+
method(_void(), StaticDirOutputSchema$1, { auth: "admin" }), method(_void(), VersionOutputSchema$1, { auth: "admin" });
|
|
7309
7309
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
7310
7310
|
DeviceType["Camera"] = "camera";
|
|
7311
7311
|
DeviceType["Hub"] = "hub";
|
|
@@ -7626,7 +7626,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
7626
7626
|
}({});
|
|
7627
7627
|
var StaticDirOutputSchema = object({ staticDir: string() });
|
|
7628
7628
|
var VersionOutputSchema = object({ version: string() });
|
|
7629
|
-
method(_void(), StaticDirOutputSchema), method(_void(), VersionOutputSchema);
|
|
7629
|
+
method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
|
|
7630
7630
|
/**
|
|
7631
7631
|
* device-ops — device-scoped cap that unifies the per-IDevice operations
|
|
7632
7632
|
* previously routed through the `.device-ops` Moleculer bridge service.
|
|
@@ -8240,24 +8240,6 @@ var RecordingRetentionSchema = object({
|
|
|
8240
8240
|
maxSizeGb: number().min(0).optional()
|
|
8241
8241
|
});
|
|
8242
8242
|
/**
|
|
8243
|
-
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
8244
|
-
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
8245
|
-
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
8246
|
-
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
8247
|
-
*
|
|
8248
|
-
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
8249
|
-
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
8250
|
-
* preset changed over time renders every historical window at the dims it was
|
|
8251
|
-
* written with.
|
|
8252
|
-
*/
|
|
8253
|
-
var ScrubThumbnailPresetSchema = _enum([
|
|
8254
|
-
"minimal",
|
|
8255
|
-
"low",
|
|
8256
|
-
"standard",
|
|
8257
|
-
"high",
|
|
8258
|
-
"max"
|
|
8259
|
-
]);
|
|
8260
|
-
/**
|
|
8261
8243
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
8262
8244
|
*
|
|
8263
8245
|
* `bands` is the ONLY authored recording intent: what to record, when, and on
|
|
@@ -8265,7 +8247,11 @@ var ScrubThumbnailPresetSchema = _enum([
|
|
|
8265
8247
|
* other field is a storage knob (profiles, segment length, retention, scrub).
|
|
8266
8248
|
*
|
|
8267
8249
|
* STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
|
|
8268
|
-
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30
|
|
8250
|
+
* `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30,
|
|
8251
|
+
* and `scrubThumbnails` — a five-step fidelity knob for a sprite tier that was
|
|
8252
|
+
* deleted on 2026-07-24 and had ZERO consumers in the recorder — on 2026-08-25
|
|
8253
|
+
* (D62: a switch that writes a store nobody reads is worse than no switch).
|
|
8254
|
+
* Stored rows keep loading: the READ schema is `.strip()` (config-store.ts).
|
|
8269
8255
|
* A stale caller must fail loudly — silently stripping its legacy intent would
|
|
8270
8256
|
* persist a band-less config, i.e. silently stop recording the camera.
|
|
8271
8257
|
*/
|
|
@@ -8288,14 +8274,7 @@ var RecordingConfigSchema = object({
|
|
|
8288
8274
|
* "off" is the absence of a covering band, never a band value.
|
|
8289
8275
|
*/
|
|
8290
8276
|
bands: array(RecordingBandSchema).default([]),
|
|
8291
|
-
retention: RecordingRetentionSchema.optional()
|
|
8292
|
-
/**
|
|
8293
|
-
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
8294
|
-
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
8295
|
-
* windows only — existing sheets are immutable, and each window's index
|
|
8296
|
-
* carries its own tile dims so mixed-preset history renders correctly.
|
|
8297
|
-
*/
|
|
8298
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
8277
|
+
retention: RecordingRetentionSchema.optional()
|
|
8299
8278
|
}).strict();
|
|
8300
8279
|
/**
|
|
8301
8280
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
@@ -8371,10 +8350,11 @@ var RelocateFootageInputSchema = object({
|
|
|
8371
8350
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
8372
8351
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
8373
8352
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
8374
|
-
var
|
|
8353
|
+
var RelocateMediaInputSchema = object({
|
|
8375
8354
|
toLocationId: string(),
|
|
8376
8355
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
8377
|
-
})
|
|
8356
|
+
});
|
|
8357
|
+
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
8378
8358
|
/** The independently selectable logical storage classes. `recordings`
|
|
8379
8359
|
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
8380
8360
|
* segments; `eventMedia` is post-analysis blobs. */
|
|
@@ -8669,7 +8649,26 @@ var LabelDefinitionSchema = object({
|
|
|
8669
8649
|
description: string().optional(),
|
|
8670
8650
|
icon: string().optional()
|
|
8671
8651
|
});
|
|
8672
|
-
|
|
8652
|
+
/**
|
|
8653
|
+
* Wire schema for a per-model CATALOG classMap override
|
|
8654
|
+
* (`ModelCatalogEntry.classMap` / `ModelConvertMetadata.classMap`) —
|
|
8655
|
+
* restricted to {@link CLASS_MAP_MACRO_TARGETS}, the only macros the
|
|
8656
|
+
* detection pipeline executor actually routes.
|
|
8657
|
+
*
|
|
8658
|
+
* This is deliberately a DIFFERENT, narrower shape than the general-purpose
|
|
8659
|
+
* `ClassMapDefinition` interface above (e.g. `IDetectionAddon.getClassMap()`
|
|
8660
|
+
* and the audio `YAMNET_TO_MACRO` catalog both use macro targets outside this
|
|
8661
|
+
* enum) — the two used to share the name `ClassMapDefinition`/
|
|
8662
|
+
* `ClassMapDefinitionSchema`, which made the schema-type-twin guard
|
|
8663
|
+
* (`scripts/check-schema-type-twins.ts`) flag them as a duplicated shape. They
|
|
8664
|
+
* are not: it is two different concepts colliding on a name. Keep this type
|
|
8665
|
+
* under its own name rather than reusing `ClassMapDefinition` — reusing it
|
|
8666
|
+
* would either narrow every `ClassMapDefinition` consumer to the four
|
|
8667
|
+
* detection macros (breaking `YAMNET_TO_MACRO`) or drop the validation this
|
|
8668
|
+
* schema exists for (see the "rejects a classMap whose target is not a
|
|
8669
|
+
* detection macro" test in `model-catalog-schema.test.ts`).
|
|
8670
|
+
*/
|
|
8671
|
+
var DetectionCatalogClassMapSchema = object({
|
|
8673
8672
|
mapping: record(string(), _enum([
|
|
8674
8673
|
"person",
|
|
8675
8674
|
"vehicle",
|
|
@@ -8874,7 +8873,7 @@ var ModelCatalogEntrySchema = object({
|
|
|
8874
8873
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8875
8874
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8876
8875
|
*/
|
|
8877
|
-
classMap:
|
|
8876
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8878
8877
|
});
|
|
8879
8878
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8880
8879
|
format: literal("openvino"),
|
|
@@ -8904,7 +8903,7 @@ var ModelConvertMetadataSchema = object({
|
|
|
8904
8903
|
"segmentation"
|
|
8905
8904
|
]),
|
|
8906
8905
|
faceAlignment: boolean().optional(),
|
|
8907
|
-
classMap:
|
|
8906
|
+
classMap: DetectionCatalogClassMapSchema.optional()
|
|
8908
8907
|
});
|
|
8909
8908
|
var ConvertArtifactSchema = object({
|
|
8910
8909
|
format: _enum(MODEL_FORMATS),
|
|
@@ -9773,7 +9772,18 @@ var addonPagesSourceCapability = {
|
|
|
9773
9772
|
scope: "system",
|
|
9774
9773
|
mode: "collection",
|
|
9775
9774
|
internal: true,
|
|
9776
|
-
methods: {
|
|
9775
|
+
methods: {
|
|
9776
|
+
/**
|
|
9777
|
+
* `internal: true` did not gate the mount (see the 2026-08-26 note on
|
|
9778
|
+
* `data-store-provider`) — this was reachable on the AppRouter by ANY
|
|
9779
|
+
* authenticated session at the default `auth: 'protected'`. The only
|
|
9780
|
+
* consumer, the `addon-pages-aggregator` builtin, reads it via
|
|
9781
|
+
* `ctx.capabilities.getCollection('addon-pages-source')` — LOCAL-PROCESS
|
|
9782
|
+
* only, never tRPC (per `ctx.capabilities` seeing only the local
|
|
9783
|
+
* process). The public, enriched listing admin-ui actually consumes is
|
|
9784
|
+
* the separate `addon-pages` cap, unaffected by this change.
|
|
9785
|
+
*/
|
|
9786
|
+
listPages: method(_void(), array(AddonPageDeclarationSchema).readonly(), { auth: "admin" }) }
|
|
9777
9787
|
};
|
|
9778
9788
|
var AddonHttpRouteSchema = object({
|
|
9779
9789
|
method: _enum([
|
|
@@ -10009,7 +10019,7 @@ var WidgetMetadataSchema = object({
|
|
|
10009
10019
|
defaultColumns: number().int().min(1).max(12).default(6),
|
|
10010
10020
|
defaultRows: number().int().min(1).max(12).default(1)
|
|
10011
10021
|
});
|
|
10012
|
-
method(_void(), array(WidgetMetadataSchema).readonly());
|
|
10022
|
+
method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
10013
10023
|
/**
|
|
10014
10024
|
* `addon-widgets` — system-scoped singleton aggregator cap. Public-facing
|
|
10015
10025
|
* surface that admin-ui consumes through `useAddonWidgetsListWidgets()`.
|
|
@@ -11558,7 +11568,17 @@ var customModelRegistryCapability = {
|
|
|
11558
11568
|
scope: "system",
|
|
11559
11569
|
mode: "collection",
|
|
11560
11570
|
internal: true,
|
|
11561
|
-
methods: {
|
|
11571
|
+
methods: {
|
|
11572
|
+
/**
|
|
11573
|
+
* `internal: true` did not gate the mount (see the 2026-08-26 note on
|
|
11574
|
+
* `data-store-provider`) — this was reachable on the AppRouter by ANY
|
|
11575
|
+
* authenticated session at the default `auth: 'protected'`. The only
|
|
11576
|
+
* consumer, the detection-pipeline's model resolution
|
|
11577
|
+
* (`addon-pipeline/src/detection-pipeline/provider.ts`), calls
|
|
11578
|
+
* `ctx.api.customModelRegistry.listModels.query()` — UDS/Moleculer,
|
|
11579
|
+
* never tRPC — so `auth: 'admin'` costs it nothing.
|
|
11580
|
+
*/
|
|
11581
|
+
listModels: method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" }) }
|
|
11562
11582
|
};
|
|
11563
11583
|
/**
|
|
11564
11584
|
* Query filter for settings-store collections.
|
|
@@ -11646,7 +11666,8 @@ method(object({
|
|
|
11646
11666
|
}), _void(), { kind: "mutation" }), method(object({
|
|
11647
11667
|
namespace: string().optional(),
|
|
11648
11668
|
collection: string(),
|
|
11649
|
-
filter: QueryFilterSchema.optional()
|
|
11669
|
+
filter: QueryFilterSchema.optional(),
|
|
11670
|
+
columns: array(string()).readonly().optional()
|
|
11650
11671
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
11651
11672
|
namespace: string().optional(),
|
|
11652
11673
|
collection: string(),
|
|
@@ -11709,46 +11730,87 @@ var EngineInfoSchema = object({
|
|
|
11709
11730
|
kind: _enum(["relational", "vector"]),
|
|
11710
11731
|
displayName: string()
|
|
11711
11732
|
});
|
|
11712
|
-
method(_void(), EngineInfoSchema), method(object({
|
|
11733
|
+
method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
11713
11734
|
namespace: string().optional(),
|
|
11714
11735
|
collection: string(),
|
|
11715
11736
|
key: string()
|
|
11716
|
-
}), unknown()), method(object({
|
|
11737
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
11717
11738
|
namespace: string().optional(),
|
|
11718
11739
|
collection: string(),
|
|
11719
11740
|
key: string(),
|
|
11720
11741
|
value: unknown()
|
|
11721
|
-
}), _void(), {
|
|
11742
|
+
}), _void(), {
|
|
11743
|
+
kind: "mutation",
|
|
11744
|
+
auth: "admin"
|
|
11745
|
+
}), method(object({
|
|
11722
11746
|
namespace: string().optional(),
|
|
11723
11747
|
collection: string(),
|
|
11724
|
-
filter: QueryFilterSchema.optional()
|
|
11725
|
-
|
|
11748
|
+
filter: QueryFilterSchema.optional(),
|
|
11749
|
+
/**
|
|
11750
|
+
* SQL-level column projection — MUST mirror `settings-store.query`.
|
|
11751
|
+
*
|
|
11752
|
+
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
11753
|
+
* was wrong — corrected 2026-08-26 after the hop map
|
|
11754
|
+
* (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
|
|
11755
|
+
* There is **no Zod parse at all** between the door and the engine: the
|
|
11756
|
+
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
11757
|
+
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
11758
|
+
*
|
|
11759
|
+
* What actually lost `columns` was the THIRD declaration of this shape:
|
|
11760
|
+
* `SettingsQueryInput` in `interfaces/storage.ts`, a hand-written TS
|
|
11761
|
+
* interface the engine destructures from. The field existed on both
|
|
11762
|
+
* schemas and the engine still never read it, because nothing checks a
|
|
11763
|
+
* registered provider against `InferProvider<cap>` —
|
|
11764
|
+
* `ProviderRegistration.provider` is typed `object`.
|
|
11765
|
+
*
|
|
11766
|
+
* It is declared here anyway, and must stay in step with
|
|
11767
|
+
* `settings-store.query`: a caller reading only the cap definitions has
|
|
11768
|
+
* to be able to see that this call carries a projection.
|
|
11769
|
+
* `data-door-schema-parity.spec.ts` keeps the two aligned.
|
|
11770
|
+
*/
|
|
11771
|
+
columns: array(string()).readonly().optional()
|
|
11772
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
11726
11773
|
namespace: string().optional(),
|
|
11727
11774
|
collection: string(),
|
|
11728
11775
|
record: SettingsRecordSchema
|
|
11729
|
-
}), _void(), {
|
|
11776
|
+
}), _void(), {
|
|
11777
|
+
kind: "mutation",
|
|
11778
|
+
auth: "admin"
|
|
11779
|
+
}), method(object({
|
|
11730
11780
|
namespace: string().optional(),
|
|
11731
11781
|
collection: string(),
|
|
11732
11782
|
id: string(),
|
|
11733
11783
|
data: record(string(), unknown())
|
|
11734
|
-
}), _void(), {
|
|
11784
|
+
}), _void(), {
|
|
11785
|
+
kind: "mutation",
|
|
11786
|
+
auth: "admin"
|
|
11787
|
+
}), method(object({
|
|
11735
11788
|
namespace: string().optional(),
|
|
11736
11789
|
collection: string(),
|
|
11737
11790
|
key: string()
|
|
11738
|
-
}), _void(), {
|
|
11791
|
+
}), _void(), {
|
|
11792
|
+
kind: "mutation",
|
|
11793
|
+
auth: "admin"
|
|
11794
|
+
}), method(object({
|
|
11739
11795
|
namespace: string().optional(),
|
|
11740
11796
|
collection: string(),
|
|
11741
11797
|
filter: MutationFilterSchema
|
|
11742
|
-
}), object({ deleted: number().int() }), {
|
|
11798
|
+
}), object({ deleted: number().int() }), {
|
|
11799
|
+
kind: "mutation",
|
|
11800
|
+
auth: "admin"
|
|
11801
|
+
}), method(object({
|
|
11743
11802
|
namespace: string().optional(),
|
|
11744
11803
|
collection: string(),
|
|
11745
11804
|
filter: MutationFilterSchema,
|
|
11746
11805
|
data: record(string(), unknown())
|
|
11747
|
-
}), object({ updated: number().int() }), {
|
|
11806
|
+
}), object({ updated: number().int() }), {
|
|
11807
|
+
kind: "mutation",
|
|
11808
|
+
auth: "admin"
|
|
11809
|
+
}), method(object({
|
|
11748
11810
|
namespace: string().optional(),
|
|
11749
11811
|
collection: string(),
|
|
11750
11812
|
filter: QueryFilterSchema.optional()
|
|
11751
|
-
}), number()), method(object({
|
|
11813
|
+
}), number(), { auth: "admin" }), method(object({
|
|
11752
11814
|
namespace: string().optional(),
|
|
11753
11815
|
collection: string(),
|
|
11754
11816
|
field: string(),
|
|
@@ -11758,15 +11820,18 @@ method(_void(), EngineInfoSchema), method(object({
|
|
|
11758
11820
|
}), array(object({
|
|
11759
11821
|
bucket: number().int(),
|
|
11760
11822
|
count: number().int()
|
|
11761
|
-
})).readonly()), method(object({
|
|
11823
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
11762
11824
|
namespace: string().optional(),
|
|
11763
11825
|
collection: string()
|
|
11764
|
-
}), boolean()), method(object({
|
|
11826
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
11765
11827
|
namespace: string().optional(),
|
|
11766
11828
|
collection: string(),
|
|
11767
11829
|
columns: array(CollectionColumnSchema).readonly(),
|
|
11768
11830
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
11769
|
-
}), _void(), {
|
|
11831
|
+
}), _void(), {
|
|
11832
|
+
kind: "mutation",
|
|
11833
|
+
auth: "admin"
|
|
11834
|
+
});
|
|
11770
11835
|
/**
|
|
11771
11836
|
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
11772
11837
|
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
@@ -12894,7 +12959,7 @@ method(object({
|
|
|
12894
12959
|
crop: _instanceof(Uint8Array),
|
|
12895
12960
|
width: number(),
|
|
12896
12961
|
height: number()
|
|
12897
|
-
}), EmbeddingResultSchema), method(object({ text: string() }), EmbeddingResultSchema), method(_void(), EmbeddingInfoSchema);
|
|
12962
|
+
}), EmbeddingResultSchema, { auth: "admin" }), method(object({ text: string() }), EmbeddingResultSchema, { auth: "admin" }), method(_void(), EmbeddingInfoSchema, { auth: "admin" });
|
|
12898
12963
|
/**
|
|
12899
12964
|
* filesystem-browse — per-node capability for browsing the node's local
|
|
12900
12965
|
* filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
|
|
@@ -13187,19 +13252,22 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
13187
13252
|
runtime: ManagedRuntimeConfigSchema,
|
|
13188
13253
|
/** The managed profile's timeout, threaded by the hub provider. */
|
|
13189
13254
|
timeoutMs: number().int().positive().optional()
|
|
13190
|
-
}), LlmGenerateResultSchema, {
|
|
13255
|
+
}), LlmGenerateResultSchema, {
|
|
13256
|
+
kind: "mutation",
|
|
13257
|
+
auth: "admin"
|
|
13258
|
+
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
13191
13259
|
kind: "mutation",
|
|
13192
13260
|
auth: "admin"
|
|
13193
13261
|
}), method(object({}), _void(), {
|
|
13194
13262
|
kind: "mutation",
|
|
13195
13263
|
auth: "admin"
|
|
13196
|
-
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13264
|
+
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13197
13265
|
kind: "mutation",
|
|
13198
13266
|
auth: "admin"
|
|
13199
13267
|
}), method(object({ file: string() }), _void(), {
|
|
13200
13268
|
kind: "mutation",
|
|
13201
13269
|
auth: "admin"
|
|
13202
|
-
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
13270
|
+
}), method(object({}), array(LlmNodeModelSchema), { auth: "admin" }), method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" });
|
|
13203
13271
|
/**
|
|
13204
13272
|
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
13205
13273
|
* methods concat-fan across providers; single-row methods route to ONE
|
|
@@ -16678,7 +16746,7 @@ var OauthIntegrationDescriptorSchema = object({
|
|
|
16678
16746
|
*/
|
|
16679
16747
|
refreshTokenTtlSec: union([number().int().positive(), literal("never")]).optional()
|
|
16680
16748
|
});
|
|
16681
|
-
method(_void(), OauthIntegrationDescriptorSchema);
|
|
16749
|
+
method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
|
|
16682
16750
|
/**
|
|
16683
16751
|
* pipeline-analytics — device-scoped wrapper cap. Refines raw
|
|
16684
16752
|
* per-frame detections emitted by the pipeline runner into tracked
|
|
@@ -17873,6 +17941,15 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17873
17941
|
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17874
17942
|
kind: "mutation",
|
|
17875
17943
|
auth: "admin"
|
|
17944
|
+
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
17945
|
+
kind: "mutation",
|
|
17946
|
+
auth: "admin"
|
|
17947
|
+
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
17948
|
+
kind: "query",
|
|
17949
|
+
auth: "admin"
|
|
17950
|
+
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
17951
|
+
kind: "mutation",
|
|
17952
|
+
auth: "admin"
|
|
17876
17953
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17877
17954
|
kind: "query",
|
|
17878
17955
|
auth: "admin"
|
|
@@ -18027,6 +18104,11 @@ object({
|
|
|
18027
18104
|
"jpeg"
|
|
18028
18105
|
])
|
|
18029
18106
|
});
|
|
18107
|
+
/**
|
|
18108
|
+
* Process-local frame identity. It is serializable so it can ride an in-process
|
|
18109
|
+
* capability call, but `registryId` deliberately prevents resolution in any
|
|
18110
|
+
* other process or execution group.
|
|
18111
|
+
*/
|
|
18030
18112
|
var FrameRefSchema = object({
|
|
18031
18113
|
registryId: string().min(1),
|
|
18032
18114
|
id: string().min(1),
|
|
@@ -20192,7 +20274,7 @@ method(object({
|
|
|
20192
20274
|
* linking rather than produce an eternal token.
|
|
20193
20275
|
*/
|
|
20194
20276
|
ttlSec: union([number().int().positive(), literal("never")]).optional()
|
|
20195
|
-
}), object({ token: string() })), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable());
|
|
20277
|
+
}), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
|
|
20196
20278
|
var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
20197
20279
|
providerId: string().min(1),
|
|
20198
20280
|
displayName: string().min(1),
|
|
@@ -20287,10 +20369,13 @@ var EvictResultSchema = object({
|
|
|
20287
20369
|
/** True when the provider has nothing left it is willing to drop on this location. */
|
|
20288
20370
|
exhausted: boolean()
|
|
20289
20371
|
});
|
|
20290
|
-
method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
20372
|
+
method(object({ locationId: string() }), EvictableUsageSchema, { auth: "admin" }), method(object({
|
|
20291
20373
|
locationId: string(),
|
|
20292
20374
|
targetBytes: number().int().positive()
|
|
20293
|
-
}), EvictResultSchema, {
|
|
20375
|
+
}), EvictResultSchema, {
|
|
20376
|
+
kind: "mutation",
|
|
20377
|
+
auth: "admin"
|
|
20378
|
+
});
|
|
20294
20379
|
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
20295
20380
|
kind: "mutation",
|
|
20296
20381
|
auth: "admin"
|
|
@@ -20350,26 +20435,50 @@ var ReadChunkInputSchema = object({
|
|
|
20350
20435
|
length: number()
|
|
20351
20436
|
});
|
|
20352
20437
|
var EndDownloadInputSchema = object({ downloadId: string() });
|
|
20353
|
-
method(_void(), ProviderInfoSchema), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20438
|
+
method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config: record(string(), unknown()) }), TestLocationResultSchema, { auth: "admin" }), method(object({
|
|
20354
20439
|
location: StorageLocationSchema,
|
|
20355
20440
|
relativePath: string()
|
|
20356
|
-
}), string()), method(object({
|
|
20441
|
+
}), string(), { auth: "admin" }), method(object({
|
|
20357
20442
|
location: StorageLocationSchema,
|
|
20358
20443
|
relativePath: string(),
|
|
20359
20444
|
data: _instanceof(Uint8Array)
|
|
20360
|
-
}), _void(), {
|
|
20445
|
+
}), _void(), {
|
|
20446
|
+
kind: "mutation",
|
|
20447
|
+
auth: "admin"
|
|
20448
|
+
}), method(object({
|
|
20361
20449
|
location: StorageLocationSchema,
|
|
20362
20450
|
relativePath: string()
|
|
20363
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
20451
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
20364
20452
|
location: StorageLocationSchema,
|
|
20365
20453
|
relativePath: string()
|
|
20366
|
-
}), boolean()), method(object({
|
|
20454
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
20367
20455
|
location: StorageLocationSchema,
|
|
20368
20456
|
prefix: string().optional()
|
|
20369
|
-
}), array(string()).readonly()), method(object({
|
|
20457
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
20370
20458
|
location: StorageLocationSchema,
|
|
20371
20459
|
relativePath: string()
|
|
20372
|
-
}), _void(), {
|
|
20460
|
+
}), _void(), {
|
|
20461
|
+
kind: "mutation",
|
|
20462
|
+
auth: "admin"
|
|
20463
|
+
}), method(object({ location: StorageLocationSchema }), number().nullable(), { auth: "admin" }), method(BeginUploadInputSchema, BeginUploadResultSchema, {
|
|
20464
|
+
kind: "mutation",
|
|
20465
|
+
auth: "admin"
|
|
20466
|
+
}), method(WriteChunkInputSchema, _void(), {
|
|
20467
|
+
kind: "mutation",
|
|
20468
|
+
auth: "admin"
|
|
20469
|
+
}), method(FinalizeUploadInputSchema, _void(), {
|
|
20470
|
+
kind: "mutation",
|
|
20471
|
+
auth: "admin"
|
|
20472
|
+
}), method(AbortUploadInputSchema, _void(), {
|
|
20473
|
+
kind: "mutation",
|
|
20474
|
+
auth: "admin"
|
|
20475
|
+
}), method(BeginDownloadInputSchema, BeginDownloadResultSchema, {
|
|
20476
|
+
kind: "mutation",
|
|
20477
|
+
auth: "admin"
|
|
20478
|
+
}), method(ReadChunkInputSchema, _instanceof(Uint8Array), { auth: "admin" }), method(EndDownloadInputSchema, _void(), {
|
|
20479
|
+
kind: "mutation",
|
|
20480
|
+
auth: "admin"
|
|
20481
|
+
});
|
|
20373
20482
|
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20374
20483
|
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20375
20484
|
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
@@ -20627,7 +20736,8 @@ method(object({
|
|
|
20627
20736
|
access: "create"
|
|
20628
20737
|
}), method(object({ userId: string().optional() }), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20629
20738
|
kind: "mutation",
|
|
20630
|
-
access: "view"
|
|
20739
|
+
access: "view",
|
|
20740
|
+
auth: "admin"
|
|
20631
20741
|
}), method(object({
|
|
20632
20742
|
/** Required — the user the assertion belongs to (verified). */
|
|
20633
20743
|
userId: string(),
|
|
@@ -20635,10 +20745,12 @@ method(object({
|
|
|
20635
20745
|
response: record(string(), unknown())
|
|
20636
20746
|
}), object({ verified: boolean() }), {
|
|
20637
20747
|
kind: "mutation",
|
|
20638
|
-
access: "view"
|
|
20748
|
+
access: "view",
|
|
20749
|
+
auth: "admin"
|
|
20639
20750
|
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
20640
20751
|
kind: "mutation",
|
|
20641
|
-
access: "view"
|
|
20752
|
+
access: "view",
|
|
20753
|
+
auth: "admin"
|
|
20642
20754
|
}), method(object({
|
|
20643
20755
|
/** AuthenticationResponseJSON from the browser. */
|
|
20644
20756
|
response: record(string(), unknown()) }), object({
|
|
@@ -20646,7 +20758,8 @@ response: record(string(), unknown()) }), object({
|
|
|
20646
20758
|
userId: string().nullable()
|
|
20647
20759
|
}), {
|
|
20648
20760
|
kind: "mutation",
|
|
20649
|
-
access: "view"
|
|
20761
|
+
access: "view",
|
|
20762
|
+
auth: "admin"
|
|
20650
20763
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
20651
20764
|
userId: string(),
|
|
20652
20765
|
credentialId: string()
|
|
@@ -20818,7 +20931,19 @@ var VectorStatsResultSchema = object({
|
|
|
20818
20931
|
/** False when the backend ranks approximately. */
|
|
20819
20932
|
exact: boolean()
|
|
20820
20933
|
});
|
|
20821
|
-
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20934
|
+
method(VectorDeclareIndexInputSchema, _void(), {
|
|
20935
|
+
kind: "mutation",
|
|
20936
|
+
auth: "admin"
|
|
20937
|
+
}), method(VectorUpsertInputSchema, VectorUpsertResultSchema, {
|
|
20938
|
+
kind: "mutation",
|
|
20939
|
+
auth: "admin"
|
|
20940
|
+
}), method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }), method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }), method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
20941
|
+
kind: "mutation",
|
|
20942
|
+
auth: "admin"
|
|
20943
|
+
}), method(VectorDeleteByFilterInputSchema, VectorDeleteResultSchema, {
|
|
20944
|
+
kind: "mutation",
|
|
20945
|
+
auth: "admin"
|
|
20946
|
+
}), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
|
|
20822
20947
|
var ClipSchema = object({
|
|
20823
20948
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
20824
20949
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -22541,7 +22666,27 @@ var MediaFileLiteSchema$1 = object({
|
|
|
22541
22666
|
sizeBytes: number(),
|
|
22542
22667
|
timestamp: number()
|
|
22543
22668
|
});
|
|
22544
|
-
method(
|
|
22669
|
+
method(object({
|
|
22670
|
+
/**
|
|
22671
|
+
* Inline {@link IdentitySchema.coverBase64} on every row.
|
|
22672
|
+
*
|
|
22673
|
+
* Default `false`, the same inversion `listRecentFaces` and
|
|
22674
|
+
* `listPlates` took on 2026-08-25 (see `include-crops-default.ts` for
|
|
22675
|
+
* why the burden belongs on the caller that WANTS the bytes). Measured
|
|
22676
|
+
* on the live hub the same day: four identities cost 40,979 B with the
|
|
22677
|
+
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
22678
|
+
* four times and the viewer holds at `staleTime: 30_000`.
|
|
22679
|
+
*
|
|
22680
|
+
* Nothing loses its avatar: `coverMediaKey` is already on every row and
|
|
22681
|
+
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
22682
|
+
*
|
|
22683
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
22684
|
+
* next train** — the hub router validates cap inputs against its own
|
|
22685
|
+
* compiled Zod and strips a key it does not know. Until then the
|
|
22686
|
+
* provider sees `undefined`, which resolves to `false`: the cheap shape
|
|
22687
|
+
* is what ships, and the opt-in becomes reachable when the train lands.
|
|
22688
|
+
*/
|
|
22689
|
+
includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly()), method(object({ name: string().min(1) }), IdentitySchema, {
|
|
22545
22690
|
kind: "mutation",
|
|
22546
22691
|
auth: "admin"
|
|
22547
22692
|
}), method(object({
|
|
@@ -24688,8 +24833,10 @@ var PlateInfoSchema = object({
|
|
|
24688
24833
|
keyFrameMediaKey: string().optional(),
|
|
24689
24834
|
base64: string().optional(),
|
|
24690
24835
|
/**
|
|
24691
|
-
* Same crop as a data-plane URL
|
|
24692
|
-
* never inlines JPEG; `listPlates`
|
|
24836
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
24837
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
24838
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
24839
|
+
* left at its `true` default.
|
|
24693
24840
|
*/
|
|
24694
24841
|
cropUrl: string().optional()
|
|
24695
24842
|
});
|
|
@@ -24709,14 +24856,34 @@ var PlateClusterSchema = object({
|
|
|
24709
24856
|
});
|
|
24710
24857
|
method(object({
|
|
24711
24858
|
deviceId: number().int().optional(),
|
|
24712
|
-
limit: number().int().positive().optional()
|
|
24859
|
+
limit: number().int().positive().optional(),
|
|
24860
|
+
/**
|
|
24861
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
24862
|
+
* behaviour, kept so no caller breaks.
|
|
24863
|
+
*
|
|
24864
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
24865
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
24866
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
24867
|
+
* metadata without them — and the browser then caches the images.
|
|
24868
|
+
*
|
|
24869
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
24870
|
+
* plates were the one gallery list left without it.
|
|
24871
|
+
*
|
|
24872
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
24873
|
+
* next train.** The hub router validates cap inputs against its own
|
|
24874
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
24875
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
24876
|
+
*/
|
|
24877
|
+
includeCrops: boolean().optional()
|
|
24713
24878
|
}).optional(), array(PlateInfoSchema).readonly()), method(object({
|
|
24714
24879
|
deviceId: number().int(),
|
|
24715
24880
|
trackId: string()
|
|
24716
24881
|
}), PlateInfoSchema.nullable()), method(object({ plateId: string() }), array(MediaFileLiteSchema).readonly()), method(object({
|
|
24717
24882
|
text: string().min(1),
|
|
24718
24883
|
maxDistance: number().int().min(0).optional(),
|
|
24719
|
-
limit: number().int().positive().optional()
|
|
24884
|
+
limit: number().int().positive().optional(),
|
|
24885
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
24886
|
+
includeCrops: boolean().optional()
|
|
24720
24887
|
}), array(PlateInfoSchema).readonly()), method(object({
|
|
24721
24888
|
maxDistance: number().int().min(0).optional(),
|
|
24722
24889
|
minClusterSize: number().int().min(2).optional(),
|
|
@@ -24730,7 +24897,13 @@ method(object({
|
|
|
24730
24897
|
}), method(object({ plateId: string() }), _void(), {
|
|
24731
24898
|
kind: "mutation",
|
|
24732
24899
|
auth: "admin"
|
|
24733
|
-
}), method(
|
|
24900
|
+
}), method(object({
|
|
24901
|
+
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
24902
|
+
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
24903
|
+
* option; `coverMediaKey` + the `event-media` plane carry the picture.
|
|
24904
|
+
* INPUT field: stripped by the hub router until the train ships, which
|
|
24905
|
+
* resolves to `false` and is exactly the intended default. */
|
|
24906
|
+
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
24734
24907
|
kind: "mutation",
|
|
24735
24908
|
auth: "admin"
|
|
24736
24909
|
}), method(object({
|
|
@@ -30107,6 +30280,12 @@ Object.freeze({
|
|
|
30107
30280
|
addonId: null,
|
|
30108
30281
|
access: "create"
|
|
30109
30282
|
},
|
|
30283
|
+
"pipelineAnalytics.cancelRelocateMedia": {
|
|
30284
|
+
capName: "pipeline-analytics",
|
|
30285
|
+
capScope: "device",
|
|
30286
|
+
addonId: null,
|
|
30287
|
+
access: "create"
|
|
30288
|
+
},
|
|
30110
30289
|
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
30111
30290
|
capName: "pipeline-analytics",
|
|
30112
30291
|
capScope: "device",
|
|
@@ -30281,6 +30460,12 @@ Object.freeze({
|
|
|
30281
30460
|
addonId: null,
|
|
30282
30461
|
access: "view"
|
|
30283
30462
|
},
|
|
30463
|
+
"pipelineAnalytics.listRelocateMediaJobs": {
|
|
30464
|
+
capName: "pipeline-analytics",
|
|
30465
|
+
capScope: "device",
|
|
30466
|
+
addonId: null,
|
|
30467
|
+
access: "view"
|
|
30468
|
+
},
|
|
30284
30469
|
"pipelineAnalytics.listRetrainAnnotations": {
|
|
30285
30470
|
capName: "pipeline-analytics",
|
|
30286
30471
|
capScope: "device",
|
|
@@ -30359,6 +30544,12 @@ Object.freeze({
|
|
|
30359
30544
|
addonId: null,
|
|
30360
30545
|
access: "create"
|
|
30361
30546
|
},
|
|
30547
|
+
"pipelineAnalytics.relocateMedia": {
|
|
30548
|
+
capName: "pipeline-analytics",
|
|
30549
|
+
capScope: "device",
|
|
30550
|
+
addonId: null,
|
|
30551
|
+
access: "create"
|
|
30552
|
+
},
|
|
30362
30553
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
30363
30554
|
capName: "pipeline-analytics",
|
|
30364
30555
|
capScope: "device",
|
|
@@ -35659,6 +35850,38 @@ var ScryptedCatalogDriftSchema = object({
|
|
|
35659
35850
|
]),
|
|
35660
35851
|
details: string().optional()
|
|
35661
35852
|
});
|
|
35853
|
+
/**
|
|
35854
|
+
* Curated PUBLIC Frigate catalog entry (D214 addendum). Named + exported so
|
|
35855
|
+
* the UI's `listFrigateCatalog` result parses against the SAME schema this
|
|
35856
|
+
* action's output is declared with (see `modelStudioActions.listFrigateCatalog`
|
|
35857
|
+
* below) — one shape, not a hand-duplicated interface on the UI side.
|
|
35858
|
+
*/
|
|
35859
|
+
var FrigateCatalogEntrySchema = object({
|
|
35860
|
+
id: string(),
|
|
35861
|
+
label: string(),
|
|
35862
|
+
format: _enum(MODEL_FORMATS),
|
|
35863
|
+
sizeMB: number(),
|
|
35864
|
+
inputSize: number(),
|
|
35865
|
+
notes: string()
|
|
35866
|
+
});
|
|
35867
|
+
/**
|
|
35868
|
+
* Frigate+ `/v1/model/list` entry (see `frigate-plus.ts`). `isBaseModel` is
|
|
35869
|
+
* the Base/Custom discriminator Frigate's own UI groups on. Named + exported
|
|
35870
|
+
* for the same reason as {@link FrigateCatalogEntrySchema}.
|
|
35871
|
+
*/
|
|
35872
|
+
var FrigatePlusModelSchema = object({
|
|
35873
|
+
id: string(),
|
|
35874
|
+
name: string(),
|
|
35875
|
+
type: string(),
|
|
35876
|
+
isBaseModel: boolean(),
|
|
35877
|
+
baseModel: string(),
|
|
35878
|
+
supportedDetectors: array(string()).readonly(),
|
|
35879
|
+
trainDate: string(),
|
|
35880
|
+
hailoDevice: string().optional(),
|
|
35881
|
+
verifiedImages: number(),
|
|
35882
|
+
width: number().optional(),
|
|
35883
|
+
height: number().optional()
|
|
35884
|
+
});
|
|
35662
35885
|
var modelStudioActions = defineCustomActions({
|
|
35663
35886
|
registerCustomModel: customAction(CustomModelDescriptorSchema, object({ ok: literal(true) }), { kind: "mutation" }),
|
|
35664
35887
|
removeCustomModel: customAction(object({ modelId: string() }), object({ removed: boolean() }), { kind: "mutation" }),
|
|
@@ -35707,14 +35930,7 @@ var modelStudioActions = defineCustomActions({
|
|
|
35707
35930
|
* the hub's modelsDir and registers the descriptor with the public URL
|
|
35708
35931
|
* (other nodes download on demand — no Distribute needed).
|
|
35709
35932
|
*/
|
|
35710
|
-
listFrigateCatalog: customAction(_void(), array(
|
|
35711
|
-
id: string(),
|
|
35712
|
-
label: string(),
|
|
35713
|
-
format: _enum(MODEL_FORMATS),
|
|
35714
|
-
sizeMB: number(),
|
|
35715
|
-
inputSize: number(),
|
|
35716
|
-
notes: string()
|
|
35717
|
-
})).readonly()),
|
|
35933
|
+
listFrigateCatalog: customAction(_void(), array(FrigateCatalogEntrySchema).readonly()),
|
|
35718
35934
|
importFrigateCatalogModel: customAction(object({
|
|
35719
35935
|
catalogId: string(),
|
|
35720
35936
|
modelId: string().optional(),
|
|
@@ -35754,19 +35970,7 @@ var modelStudioActions = defineCustomActions({
|
|
|
35754
35970
|
ok: boolean(),
|
|
35755
35971
|
error: string().optional()
|
|
35756
35972
|
}), { kind: "mutation" }),
|
|
35757
|
-
frigatePlusListModels: customAction(_void(), array(
|
|
35758
|
-
id: string(),
|
|
35759
|
-
name: string(),
|
|
35760
|
-
type: string(),
|
|
35761
|
-
isBaseModel: boolean(),
|
|
35762
|
-
baseModel: string(),
|
|
35763
|
-
supportedDetectors: array(string()).readonly(),
|
|
35764
|
-
trainDate: string(),
|
|
35765
|
-
hailoDevice: string().optional(),
|
|
35766
|
-
verifiedImages: number(),
|
|
35767
|
-
width: number().optional(),
|
|
35768
|
-
height: number().optional()
|
|
35769
|
-
})).readonly()),
|
|
35973
|
+
frigatePlusListModels: customAction(_void(), array(FrigatePlusModelSchema).readonly()),
|
|
35770
35974
|
importFrigatePlusModel: customAction(object({
|
|
35771
35975
|
plusModelId: string(),
|
|
35772
35976
|
modelId: string(),
|