@camstack/addon-admin-ui 1.1.50 → 1.1.52
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/assets/{AddLocationWizard-CIqEDdCn.js → AddLocationWizard-Uf0yJnjR.js} +1 -1
- package/dist/assets/{AddonCollectionPage-oYV5gLkL.js → AddonCollectionPage-DqaY4er4.js} +1 -1
- package/dist/assets/Addons-an5qhtPG.js +1 -0
- package/dist/assets/{AdminTabs-BeF-jlOp.js → AdminTabs-BbJVdoRX.js} +1 -1
- package/dist/assets/AiProfiles-DdWPLcwR.js +1 -0
- package/dist/assets/{BrokerForm-CKF91l2P.js → BrokerForm-u3y0YqZe.js} +1 -1
- package/dist/assets/{Capabilities-DjYa3mVl.js → Capabilities-CMfsYieK.js} +1 -1
- package/dist/assets/CapabilityBadges-Ribk0vnA.js +1 -0
- package/dist/assets/Cluster-CYnROh4T.js +1 -0
- package/dist/assets/{Dashboard-B7W-1CPO.js → Dashboard-qRfzfjPv.js} +1 -1
- package/dist/assets/Data-DHhlstKQ.js +1 -0
- package/dist/assets/DetectionIntelligence-DV-yQXDw.js +1 -0
- package/dist/assets/DeviceDetail-DHrSmXXI.js +2 -0
- package/dist/assets/{Devices-DY58j8Im.js → Devices-SsSi-4nJ.js} +1 -1
- package/dist/assets/EmbedPlayerPage-CzcNBQ3L.js +1 -0
- package/dist/assets/Events-C0-Ts8gr.js +1 -0
- package/dist/assets/{FormBuilder-DF9HdVVE.js → FormBuilder-BsMr0Lyl.js} +1 -1
- package/dist/assets/Identity-eIowJSpV.js +1 -0
- package/dist/assets/IntegrationDetail-B8wj47uz.js +1 -0
- package/dist/assets/{Integrations-Cwy28tRf.js → Integrations-Cab4Dh8j.js} +1 -1
- package/dist/assets/Integrations-DZAnOMWG.js +1 -0
- package/dist/assets/{Logs-CH6InwRa.js → Logs-DxdTei3J.js} +1 -1
- package/dist/assets/{MotionZonesSettings-wgT8qNCk.js → MotionZonesSettings-Dk5S6Yey.js} +1 -1
- package/dist/assets/{MyAccess-pia6abG8.js → MyAccess-DnZwl6il.js} +1 -1
- package/dist/assets/Network-dhnXr-jY.js +1 -0
- package/dist/assets/{NodeAddonsSettingsPanel-21ajRiKU.js → NodeAddonsSettingsPanel-CJbUr7pj.js} +1 -1
- package/dist/assets/NotificationTargets-ZY0oUqQy.js +1 -0
- package/dist/assets/Pipeline-DaPp8qeN.js +1 -0
- package/dist/assets/Plates-CpuUTsMF.js +1 -0
- package/dist/assets/{PrivacyMaskSettings-aoGQ9CVn.js → PrivacyMaskSettings-CsjSf0ui.js} +1 -1
- package/dist/assets/{ProviderIcon-B00C6yVI.js → ProviderIcon-BSvVPouG.js} +1 -1
- package/dist/assets/{ScanNetworkModal-DTAMAK8z.js → ScanNetworkModal-ByX1qWEM.js} +1 -1
- package/dist/assets/{ServerManagement-B0UENejd.js → ServerManagement-BtFGaYJa.js} +1 -1
- package/dist/assets/{Settings-CyUdtPyP.js → Settings-Cg40p72B.js} +1 -1
- package/dist/assets/{Showroom-DqNnYNbB.js → Showroom-WqyHrFZ8.js} +1 -1
- package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-DcgCF70N.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-mb1uqJnX.js} +1 -1
- package/dist/assets/authed-media-XfBD4Ma-.js +1 -0
- package/dist/assets/{build-cluster-graph-DLb-k44M.js → build-cluster-graph-CWEgvPHm.js} +2 -2
- package/dist/assets/circle-check-big-DVa9F7JF.js +1 -0
- package/dist/assets/clock-CuFB6vbo.js +1 -0
- package/dist/assets/{copy-PDaNKoDE.js → copy-uF3P0mCb.js} +1 -1
- package/dist/assets/debounced-invalidate-CmrI3MX6.js +1 -0
- package/dist/assets/dist-B39mAyWB.js +7 -0
- package/dist/assets/{dist-D248MGg1.js → dist-BIF_0i8X.js} +1 -1
- package/dist/assets/{download-iZu8ddva.js → download-C6gtaH_N.js} +1 -1
- package/dist/assets/face-bbox-C6BZci_u.js +1 -0
- package/dist/assets/film-Ce3Puhhw.js +1 -0
- package/dist/assets/{hostInit-DT-Sx4uZ.js → hostInit-fNwBYqHp.js} +1 -1
- package/dist/assets/index-BXAOUGFx.js +4 -0
- package/dist/assets/index-CQGeAf4R.css +2 -0
- package/dist/assets/{key-round-xzAl99gK.js → key-round-CTt4GMO-.js} +1 -1
- package/dist/assets/{mf-entry-bootstrap-0-c91235d9.js → mf-entry-bootstrap-0-13957685.js} +2 -2
- package/dist/assets/{pencil-DL1TJsTc.js → pencil-B2rRCbs4.js} +1 -1
- package/dist/assets/{player-overlays-D3fMTMSy.js → player-overlays-G3UGtBzC.js} +1 -1
- package/dist/assets/plus-DIHRelRK.js +1 -0
- package/dist/assets/{radio-Cidrh6lI.js → radio-D3U_70dZ.js} +1 -1
- package/dist/assets/{refresh-cw-CQ8ZPCKP.js → refresh-cw-NUBl_9F6.js} +1 -1
- package/dist/assets/remoteEntry-tIxTqhi3.js +1 -0
- package/dist/assets/{rotate-ccw-CdNSKqrT.js → rotate-ccw-C9aSKyTE.js} +1 -1
- package/dist/assets/rotate-cw-CWQEKQOp.js +1 -0
- package/dist/assets/{schemas-CuE8EXQ7.js → schemas-DSTjX9zr.js} +4 -4
- package/dist/assets/search-CNcDC4RH.js +1 -0
- package/dist/assets/send-Cjr4zHvT.js +1 -0
- package/dist/assets/square-DCFTa1lw.js +1 -0
- package/dist/assets/{square-check-big-DHo5VpxB.js → square-check-big-CSjE0FM_.js} +1 -1
- package/dist/assets/src-C9tUE6VN.js +67 -0
- package/dist/assets/src-DJCxIXmd.js +7 -0
- package/dist/assets/{upload-CbQEsRc1.js → upload-DY7S1CIX.js} +1 -1
- package/dist/assets/useDevice-Ch_9qauD.js +1 -0
- package/dist/assets/{useEventInvalidation-dY_jfjb6.js → useEventInvalidation-h9LIsvjv.js} +1 -1
- package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-B65PZoVz.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-CPN4r1AG.js} +2 -2
- package/dist/assets/{wifi-CXcT5hFl.js → wifi-0f3nqfEf.js} +1 -1
- package/dist/assets/{zap-IxXrBEjL.js → zap-BZHvm4pV.js} +1 -1
- package/dist/index.html +7 -7
- package/dist/server/addon.js +1036 -44
- package/package.json +2 -1
- package/dist/assets/Addons-DXHAaRyv.js +0 -1
- package/dist/assets/CapabilityBadges-Ch3OxAx_.js +0 -1
- package/dist/assets/Cluster-B0VcGezF.js +0 -1
- package/dist/assets/Data-DTdFNsIK.js +0 -1
- package/dist/assets/DetectionIntelligence-Dlqt7Nfw.js +0 -1
- package/dist/assets/DeviceDetail-BoyqcoSb.js +0 -2
- package/dist/assets/EmbedPlayerPage-7fAe8VOM.js +0 -1
- package/dist/assets/Identity-CcxXGRs-.js +0 -1
- package/dist/assets/IntegrationDetail-3unRfrYT.js +0 -1
- package/dist/assets/Integrations-VffZ4PwO.js +0 -1
- package/dist/assets/Network-Cs7w2ldQ.js +0 -1
- package/dist/assets/NotificationTargets-BPToXpbO.js +0 -1
- package/dist/assets/Pipeline-D9UHFkhz.js +0 -1
- package/dist/assets/circle-check-big-B3D63yK2.js +0 -1
- package/dist/assets/dist-DK5byzu0.js +0 -7
- package/dist/assets/index-BFJ6KO0x.css +0 -2
- package/dist/assets/index-pSZYK5ny.js +0 -4
- package/dist/assets/plus-CRDyDYzj.js +0 -1
- package/dist/assets/remoteEntry-CMix6vvq.js +0 -1
- package/dist/assets/rotate-cw-DR-mTm0L.js +0 -1
- package/dist/assets/search-M9sg9sgJ.js +0 -1
- package/dist/assets/sparkles-Uqh90jkF.js +0 -1
- package/dist/assets/square-DeI3vDTo.js +0 -1
- package/dist/assets/src-B45-uhaF.js +0 -7
- package/dist/assets/src-DUz15ij3.js +0 -67
- package/dist/assets/useDevice-BIRPCUj3.js +0 -1
package/dist/server/addon.js
CHANGED
|
@@ -4288,6 +4288,14 @@ function object(shape, params) {
|
|
|
4288
4288
|
...normalizeParams(params)
|
|
4289
4289
|
});
|
|
4290
4290
|
}
|
|
4291
|
+
function looseObject(shape, params) {
|
|
4292
|
+
return new ZodObject({
|
|
4293
|
+
type: "object",
|
|
4294
|
+
shape,
|
|
4295
|
+
catchall: unknown(),
|
|
4296
|
+
...normalizeParams(params)
|
|
4297
|
+
});
|
|
4298
|
+
}
|
|
4291
4299
|
var ZodUnion = /*@__PURE__*/ $constructor("ZodUnion", (inst, def) => {
|
|
4292
4300
|
$ZodUnion.init(inst, def);
|
|
4293
4301
|
ZodType.init(inst, def);
|
|
@@ -4629,7 +4637,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4629
4637
|
return inst;
|
|
4630
4638
|
}
|
|
4631
4639
|
//#endregion
|
|
4632
|
-
//#region ../types/dist/sleep-
|
|
4640
|
+
//#region ../types/dist/sleep-_sv7WKkq.mjs
|
|
4633
4641
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4634
4642
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4635
4643
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -5039,10 +5047,51 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
5039
5047
|
EventCategory["EnrichmentEmbeddingStored"] = "enrichment.embedding.stored";
|
|
5040
5048
|
EventCategory["EnrichmentSceneStateChanged"] = "enrichment.scene.state-changed";
|
|
5041
5049
|
EventCategory["EnrichmentActivitySummary"] = "enrichment.activity.summary";
|
|
5050
|
+
/**
|
|
5051
|
+
* Unified track-lifecycle event: ONE category carrying `phase:
|
|
5052
|
+
* 'start' | 'update' | 'end'` with a rich, typed
|
|
5053
|
+
* `PipelineAnalyticsTrackLifecyclePayload`. Supersedes the thin
|
|
5054
|
+
* `PipelineAnalyticsTrackStarted` / `PipelineAnalyticsTrackEnded`
|
|
5055
|
+
* pair — a consumer subscribes once and branches on `phase`.
|
|
5056
|
+
*/
|
|
5057
|
+
EventCategory["PipelineAnalyticsTrackLifecycle"] = "pipeline-analytics.track-lifecycle";
|
|
5058
|
+
/**
|
|
5059
|
+
* @deprecated Superseded by {@link PipelineAnalyticsTrackLifecycle}
|
|
5060
|
+
* (`phase:'start'`). Kept as a soft alias — no known subscribers.
|
|
5061
|
+
*/
|
|
5042
5062
|
EventCategory["PipelineAnalyticsTrackStarted"] = "pipeline-analytics.track-started";
|
|
5063
|
+
/**
|
|
5064
|
+
* @deprecated Superseded by {@link PipelineAnalyticsTrackLifecycle}
|
|
5065
|
+
* (`phase:'end'`). Kept as a soft alias — no known subscribers.
|
|
5066
|
+
*/
|
|
5043
5067
|
EventCategory["PipelineAnalyticsTrackEnded"] = "pipeline-analytics.track-ended";
|
|
5044
5068
|
EventCategory["PipelineAnalyticsDetectionEvent"] = "pipeline-analytics.detection-event";
|
|
5045
5069
|
EventCategory["PipelineAnalyticsFrameTracked"] = "pipeline-analytics.frame-tracked";
|
|
5070
|
+
/**
|
|
5071
|
+
* Fired by `addon-post-analysis` when a parked (stationary) object appears
|
|
5072
|
+
* (a track was promoted to a stationary-registry entry) or departs (the
|
|
5073
|
+
* object moved / was removed). Telemetry (D8): lossy, drives a UI refresh of
|
|
5074
|
+
* the dedicated "Stationary" section — never the live event feed. Payload:
|
|
5075
|
+
* `{ deviceId, entryId, className, phase:'appeared'|'departed', timestamp }`.
|
|
5076
|
+
*/
|
|
5077
|
+
EventCategory["PipelineAnalyticsStationaryChanged"] = "pipeline-analytics.stationary-changed";
|
|
5078
|
+
/**
|
|
5079
|
+
* Fired by `addon-post-analysis` whenever a gallery face row changes:
|
|
5080
|
+
* `kind:'buffered'` a new detected face was persisted, `'assigned'` /
|
|
5081
|
+
* `'unassigned'` its identity link changed, `'deleted'` the row was
|
|
5082
|
+
* removed. Telemetry semantics (D8): a lost event only delays a refresh,
|
|
5083
|
+
* never a correctness issue. Payload `PipelineAnalyticsFaceGalleryChangedPayload`.
|
|
5084
|
+
*/
|
|
5085
|
+
EventCategory["PipelineAnalyticsFaceGalleryChanged"] = "pipeline-analytics.face-gallery-changed";
|
|
5086
|
+
/**
|
|
5087
|
+
* Fired by `addon-post-analysis` whenever a gallery plate row changes:
|
|
5088
|
+
* `kind:'buffered'` a new read was persisted (`PlateRecognizer.onTrackEnd`),
|
|
5089
|
+
* `'assigned'` / `'unassigned'` its vehicle link changed
|
|
5090
|
+
* (`PlateGalleryProvider`), `'deleted'` the row was removed. Telemetry
|
|
5091
|
+
* semantics (D8): a lost event only delays a refresh, never a correctness
|
|
5092
|
+
* issue. Payload `PipelineAnalyticsPlateGalleryChangedPayload`.
|
|
5093
|
+
*/
|
|
5094
|
+
EventCategory["PipelineAnalyticsPlateGalleryChanged"] = "pipeline-analytics.plate-gallery-changed";
|
|
5046
5095
|
EventCategory["FrigateLiveEvent"] = "frigate.live-event";
|
|
5047
5096
|
EventCategory["CameraStreamsProfileSlotsChanged"] = "camera-streams.onProfileSlotsChanged";
|
|
5048
5097
|
/**
|
|
@@ -6880,7 +6929,8 @@ var MODEL_FORMATS = [
|
|
|
6880
6929
|
"coreml",
|
|
6881
6930
|
"openvino",
|
|
6882
6931
|
"tflite",
|
|
6883
|
-
"pt"
|
|
6932
|
+
"pt",
|
|
6933
|
+
"gguf"
|
|
6884
6934
|
];
|
|
6885
6935
|
/**
|
|
6886
6936
|
* Multi-file format payload.
|
|
@@ -6924,7 +6974,8 @@ var ModelFormatsSchema = object({
|
|
|
6924
6974
|
coreml: ModelFormatEntrySchema.optional(),
|
|
6925
6975
|
openvino: ModelFormatEntrySchema.optional(),
|
|
6926
6976
|
tflite: ModelFormatEntrySchema.optional(),
|
|
6927
|
-
pt: ModelFormatEntrySchema.optional()
|
|
6977
|
+
pt: ModelFormatEntrySchema.optional(),
|
|
6978
|
+
gguf: ModelFormatEntrySchema.optional()
|
|
6928
6979
|
});
|
|
6929
6980
|
/**
|
|
6930
6981
|
* Variant-selector grouping axes. Shared by the full `ModelCatalogEntry` and by
|
|
@@ -6965,6 +7016,15 @@ var ModelCatalogEntrySchema = object({
|
|
|
6965
7016
|
width: number(),
|
|
6966
7017
|
height: number()
|
|
6967
7018
|
}),
|
|
7019
|
+
/**
|
|
7020
|
+
* Channel count of the model input tensor. Omit ⇒ 3 (RGB), the default for
|
|
7021
|
+
* every detector / classifier / embedder. Set to 1 for a grayscale CTC text
|
|
7022
|
+
* recognizer (EasyOCR VGG plate-OCR: input `[N,1,H,W]`) so the preprocess
|
|
7023
|
+
* feeds a single-channel, EasyOCR-normalized tensor instead of the default
|
|
7024
|
+
* 3-channel RGB one. Threaded through `PoolModelConfig.inputChannels` to the
|
|
7025
|
+
* Python inference pool.
|
|
7026
|
+
*/
|
|
7027
|
+
inputChannels: number().int().positive().optional(),
|
|
6968
7028
|
labels: array(LabelDefinitionSchema).readonly(),
|
|
6969
7029
|
inputLayout: _enum(["nchw", "nhwc"]).optional(),
|
|
6970
7030
|
inputNormalization: _enum([
|
|
@@ -6974,6 +7034,16 @@ var ModelCatalogEntrySchema = object({
|
|
|
6974
7034
|
]).optional(),
|
|
6975
7035
|
preprocessMode: _enum(["letterbox", "resize"]).optional(),
|
|
6976
7036
|
/**
|
|
7037
|
+
* Per-MODEL postprocessor override. Absent ⇒ the step's own
|
|
7038
|
+
* `StepDefinition.postprocessor` applies (the normal case — every model in a
|
|
7039
|
+
* step shares its decode). Set it when a step hosts models with DIFFERENT raw
|
|
7040
|
+
* output layouts under one slot: e.g. object-detection is `'yolo'` by default,
|
|
7041
|
+
* but a Coral SSD MobileNet build emits the `TFLite_Detection_PostProcess`
|
|
7042
|
+
* 4-tensor layout and needs `'ssd'`. Threaded into `PoolModelConfig.postprocessor`
|
|
7043
|
+
* by the engine factory (`modelEntry.postprocessor ?? def.postprocessor`).
|
|
7044
|
+
*/
|
|
7045
|
+
postprocessor: custom().optional(),
|
|
7046
|
+
/**
|
|
6977
7047
|
* When true, the executor produces a landmark-aligned crop (similarity warp
|
|
6978
7048
|
* onto the canonical template) before this step runs, instead of a plain
|
|
6979
7049
|
* axis-aligned bbox crop. Required for face-recognition embedders (ArcFace):
|
|
@@ -10419,7 +10489,8 @@ var ModelFormatSchema$1 = _enum([
|
|
|
10419
10489
|
"coreml",
|
|
10420
10490
|
"openvino",
|
|
10421
10491
|
"tflite",
|
|
10422
|
-
"pt"
|
|
10492
|
+
"pt",
|
|
10493
|
+
"gguf"
|
|
10423
10494
|
]);
|
|
10424
10495
|
var PipelineSlotSchema = _enum([
|
|
10425
10496
|
"detector",
|
|
@@ -10513,7 +10584,8 @@ var EngineProvisioningSchema = object({
|
|
|
10513
10584
|
runtimeId: _enum([
|
|
10514
10585
|
"onnx",
|
|
10515
10586
|
"openvino",
|
|
10516
|
-
"coreml"
|
|
10587
|
+
"coreml",
|
|
10588
|
+
"edgetpu"
|
|
10517
10589
|
]).nullable(),
|
|
10518
10590
|
device: string().nullable(),
|
|
10519
10591
|
state: _enum([
|
|
@@ -11725,6 +11797,140 @@ DeviceType.Camera, method(object({ deviceId: number() }), PtzAutotrackStatusSche
|
|
|
11725
11797
|
deviceId: number(),
|
|
11726
11798
|
status: PtzAutotrackStatusSchema
|
|
11727
11799
|
});
|
|
11800
|
+
/**
|
|
11801
|
+
* scene-monitor — device-scoped reference-region state cap. An operator marks
|
|
11802
|
+
* a rect ROI on a camera frame and names one or more states; the engine
|
|
11803
|
+
* (pipeline-analytics, designated post-processing node) reports which state is
|
|
11804
|
+
* active on an ongoing basis. Two operator-selectable check modes share every-
|
|
11805
|
+
* thing except the comparator: `similarity` (CLIP cosine at the same ROI coords
|
|
11806
|
+
* vs condition-tagged references) and `llm` (vision-LLM judgment over the crop).
|
|
11807
|
+
*
|
|
11808
|
+
* D14 device-config archetype (`deviceConfig.ui.kind:'widget'`) — the framework
|
|
11809
|
+
* derives the device-detail contribution; the provider carries NO hand-written
|
|
11810
|
+
* settings-contribution methods. `status.kind:'push'` — the engine pushes on
|
|
11811
|
+
* every hysteresis flip / availability change; consumers never poll.
|
|
11812
|
+
*/
|
|
11813
|
+
/** Extensible condition tag. Seeded 'day' | 'night'; open by design so more can
|
|
11814
|
+
* be added without a wire break (matching falls back to any-condition refs). */
|
|
11815
|
+
var SceneConditionSchema = string();
|
|
11816
|
+
/** One captured reference — condition-tagged, model-version-gated. `embedding`
|
|
11817
|
+
* is `number[]` (Float32Array does NOT survive MsgPack/UDS). */
|
|
11818
|
+
var SceneReferenceSchema = object({
|
|
11819
|
+
embedding: array(number()),
|
|
11820
|
+
modelId: string(),
|
|
11821
|
+
condition: SceneConditionSchema,
|
|
11822
|
+
capturedAt: number(),
|
|
11823
|
+
thumbnailMediaId: string().optional()
|
|
11824
|
+
});
|
|
11825
|
+
var SceneMonitorStateSchema = object({
|
|
11826
|
+
id: string(),
|
|
11827
|
+
label: string(),
|
|
11828
|
+
references: array(SceneReferenceSchema),
|
|
11829
|
+
textPrompts: array(string()).optional(),
|
|
11830
|
+
referenceCount: number(),
|
|
11831
|
+
currentlyMatched: boolean()
|
|
11832
|
+
});
|
|
11833
|
+
/** Per-mode comparator params in a discriminated union so an `llm` scene never
|
|
11834
|
+
* carries similarity knobs and vice-versa. */
|
|
11835
|
+
var SceneCheckSchema = discriminatedUnion("mode", [object({
|
|
11836
|
+
mode: literal("similarity"),
|
|
11837
|
+
threshold: number().min(0).max(1),
|
|
11838
|
+
hysteresisCount: number().int().positive()
|
|
11839
|
+
}), object({
|
|
11840
|
+
mode: literal("llm"),
|
|
11841
|
+
prompt: string(),
|
|
11842
|
+
profileId: string().optional(),
|
|
11843
|
+
hysteresisCount: number().int().positive()
|
|
11844
|
+
})]);
|
|
11845
|
+
var SceneMonitorSchema = object({
|
|
11846
|
+
id: string(),
|
|
11847
|
+
label: string(),
|
|
11848
|
+
roi: MaskRectShapeSchema,
|
|
11849
|
+
enabled: boolean(),
|
|
11850
|
+
triggerMode: _enum([
|
|
11851
|
+
"periodic",
|
|
11852
|
+
"on-motion",
|
|
11853
|
+
"both"
|
|
11854
|
+
]),
|
|
11855
|
+
checkIntervalSec: number().optional(),
|
|
11856
|
+
check: SceneCheckSchema,
|
|
11857
|
+
states: array(SceneMonitorStateSchema),
|
|
11858
|
+
currentStateId: string().nullable(),
|
|
11859
|
+
lastCheckedAt: number().nullable(),
|
|
11860
|
+
lastConfidence: number().nullable(),
|
|
11861
|
+
currentCondition: SceneConditionSchema.nullable(),
|
|
11862
|
+
availability: _enum(["ok", "unavailable"]),
|
|
11863
|
+
unavailableReason: string().nullable()
|
|
11864
|
+
});
|
|
11865
|
+
var SceneMonitorStatusSchema = object({
|
|
11866
|
+
monitors: array(SceneMonitorSchema),
|
|
11867
|
+
lastFetchedAt: number()
|
|
11868
|
+
});
|
|
11869
|
+
DeviceType.Camera, method(object({ deviceId: number() }), SceneMonitorStatusSchema), method(object({
|
|
11870
|
+
deviceId: number(),
|
|
11871
|
+
label: string(),
|
|
11872
|
+
roi: MaskRectShapeSchema,
|
|
11873
|
+
check: SceneCheckSchema,
|
|
11874
|
+
triggerMode: _enum([
|
|
11875
|
+
"periodic",
|
|
11876
|
+
"on-motion",
|
|
11877
|
+
"both"
|
|
11878
|
+
]).optional(),
|
|
11879
|
+
checkIntervalSec: number().optional()
|
|
11880
|
+
}), SceneMonitorSchema, {
|
|
11881
|
+
kind: "mutation",
|
|
11882
|
+
auth: "admin"
|
|
11883
|
+
}), method(object({
|
|
11884
|
+
deviceId: number(),
|
|
11885
|
+
monitorId: string(),
|
|
11886
|
+
patch: object({
|
|
11887
|
+
label: string().optional(),
|
|
11888
|
+
roi: MaskRectShapeSchema.optional(),
|
|
11889
|
+
enabled: boolean().optional(),
|
|
11890
|
+
triggerMode: _enum([
|
|
11891
|
+
"periodic",
|
|
11892
|
+
"on-motion",
|
|
11893
|
+
"both"
|
|
11894
|
+
]).optional(),
|
|
11895
|
+
checkIntervalSec: number().optional(),
|
|
11896
|
+
check: SceneCheckSchema.optional()
|
|
11897
|
+
})
|
|
11898
|
+
}), _void(), {
|
|
11899
|
+
kind: "mutation",
|
|
11900
|
+
auth: "admin"
|
|
11901
|
+
}), method(object({
|
|
11902
|
+
deviceId: number(),
|
|
11903
|
+
monitorId: string()
|
|
11904
|
+
}), _void(), {
|
|
11905
|
+
kind: "mutation",
|
|
11906
|
+
auth: "admin"
|
|
11907
|
+
}), method(object({
|
|
11908
|
+
deviceId: number(),
|
|
11909
|
+
monitorId: string(),
|
|
11910
|
+
stateId: string().optional(),
|
|
11911
|
+
label: string().optional(),
|
|
11912
|
+
condition: SceneConditionSchema.optional()
|
|
11913
|
+
}), object({
|
|
11914
|
+
stateId: string(),
|
|
11915
|
+
referenceCount: number()
|
|
11916
|
+
}), {
|
|
11917
|
+
kind: "mutation",
|
|
11918
|
+
auth: "admin"
|
|
11919
|
+
}), method(object({
|
|
11920
|
+
deviceId: number(),
|
|
11921
|
+
monitorId: string(),
|
|
11922
|
+
stateId: string(),
|
|
11923
|
+
index: number()
|
|
11924
|
+
}), _void(), {
|
|
11925
|
+
kind: "mutation",
|
|
11926
|
+
auth: "admin"
|
|
11927
|
+
}), method(object({
|
|
11928
|
+
deviceId: number(),
|
|
11929
|
+
monitorId: string()
|
|
11930
|
+
}), _void(), {
|
|
11931
|
+
kind: "mutation",
|
|
11932
|
+
auth: "admin"
|
|
11933
|
+
});
|
|
11728
11934
|
object({
|
|
11729
11935
|
/** Whether the script is currently executing. */
|
|
11730
11936
|
isRunning: boolean(),
|
|
@@ -12132,6 +12338,36 @@ var ZoneScopeBreakdownSchema = PerScopeBreakdownSchema.extend({
|
|
|
12132
12338
|
* with the per-track detail panel and live overlay. */
|
|
12133
12339
|
trackIds: array(string()).readonly()
|
|
12134
12340
|
});
|
|
12341
|
+
/**
|
|
12342
|
+
* A parked ("stationary") object surfaced alongside occupancy — an object that
|
|
12343
|
+
* settled and stopped moving. It is NO LONGER a tracked object (the tracker was
|
|
12344
|
+
* told to forget it so it stops re-spawning tracks/events), but it IS still
|
|
12345
|
+
* physically present, so it keeps counting toward `frame` occupancy and is
|
|
12346
|
+
* listed here so the UI can show it in a dedicated "Stationary" section instead
|
|
12347
|
+
* of flooding the live event feed.
|
|
12348
|
+
*/
|
|
12349
|
+
var StationaryObjectSchema = object({
|
|
12350
|
+
id: string(),
|
|
12351
|
+
className: string(),
|
|
12352
|
+
bbox: object({
|
|
12353
|
+
x: number(),
|
|
12354
|
+
y: number(),
|
|
12355
|
+
w: number(),
|
|
12356
|
+
h: number()
|
|
12357
|
+
}),
|
|
12358
|
+
frameWidth: number().int().nonnegative(),
|
|
12359
|
+
frameHeight: number().int().nonnegative(),
|
|
12360
|
+
/** When the source track was first seen. */
|
|
12361
|
+
firstSeenAt: number().int(),
|
|
12362
|
+
/** When the object was recognised as parked (promotion time). */
|
|
12363
|
+
becameStationaryAt: number().int(),
|
|
12364
|
+
/** Last frame a detection confirmed the object is still there. */
|
|
12365
|
+
lastConfirmedAt: number().int(),
|
|
12366
|
+
/** Enrichment label carried from the source track (identity / plate). */
|
|
12367
|
+
label: string().optional(),
|
|
12368
|
+
/** Native-resolution key-frame media key for the parked object's best image. */
|
|
12369
|
+
keyFrameMediaKey: string().optional()
|
|
12370
|
+
});
|
|
12135
12371
|
var CameraOccupancySnapshotSchema = object({
|
|
12136
12372
|
/** Frame timestamp of the inference result that produced this snapshot. */
|
|
12137
12373
|
ts: number().int(),
|
|
@@ -12140,10 +12376,15 @@ var CameraOccupancySnapshotSchema = object({
|
|
|
12140
12376
|
frameHeight: number().int().nonnegative(),
|
|
12141
12377
|
/** Per-zone breakdown — one entry per defined zone (user + onboard). */
|
|
12142
12378
|
zones: array(ZoneScopeBreakdownSchema).readonly(),
|
|
12143
|
-
/** Frame-wide aggregate (everywhere, regardless of zone membership).
|
|
12379
|
+
/** Frame-wide aggregate (everywhere, regardless of zone membership).
|
|
12380
|
+
* INCLUDES currently-confirmed stationary objects (they are still present). */
|
|
12144
12381
|
frame: PerScopeBreakdownSchema,
|
|
12145
12382
|
/** Detections that landed outside every zone. Empty when no zones defined. */
|
|
12146
|
-
unzoned: PerScopeBreakdownSchema
|
|
12383
|
+
unzoned: PerScopeBreakdownSchema,
|
|
12384
|
+
/** Parked objects on this camera (additive — absent on legacy snapshots).
|
|
12385
|
+
* Surfaced separately so the UI shows them in a dedicated section rather
|
|
12386
|
+
* than as repeated tracks/events. */
|
|
12387
|
+
stationaryObjects: array(StationaryObjectSchema).readonly().optional()
|
|
12147
12388
|
});
|
|
12148
12389
|
/**
|
|
12149
12390
|
* Time-series resolution. The history methods return one bucket per
|
|
@@ -12746,7 +12987,12 @@ var NotificationRuleConditionsSchema = object({
|
|
|
12746
12987
|
clipDescription: object({
|
|
12747
12988
|
text: string().min(1),
|
|
12748
12989
|
minSimilarity: number().min(0).max(1)
|
|
12749
|
-
}).optional()
|
|
12990
|
+
}).optional(),
|
|
12991
|
+
/** Match events whose recognized-entity label (face identity name or plate
|
|
12992
|
+
* vehicle name, propagated onto `event.data.label`) is one of these values.
|
|
12993
|
+
* Empty/absent → unaffected (back-compat). Enables "notify me when <named
|
|
12994
|
+
* vehicle/person> is seen". */
|
|
12995
|
+
labels: array(string()).readonly().optional()
|
|
12750
12996
|
});
|
|
12751
12997
|
var NotificationRuleTemplateSchema = object({
|
|
12752
12998
|
title: string(),
|
|
@@ -13004,11 +13250,19 @@ method(object({
|
|
|
13004
13250
|
* login page needs NO change.
|
|
13005
13251
|
*
|
|
13006
13252
|
* - `widget` — a Module-Federation widget the login page mounts (via
|
|
13007
|
-
* `loadRemoteBundle`) for an in-page ceremony.
|
|
13008
|
-
*
|
|
13009
|
-
*
|
|
13010
|
-
*
|
|
13011
|
-
*
|
|
13253
|
+
* `loadRemoteBundle`) for an in-page ceremony. `auth.listLoginMethods`
|
|
13254
|
+
* stamps a public `bundleUrl` from `addonId` + `bundle`. Generic
|
|
13255
|
+
* mechanism kept for future use; no shipped addon uses it on the login
|
|
13256
|
+
* page (the passkey ceremony below runs natively in the shell instead).
|
|
13257
|
+
*
|
|
13258
|
+
* - `passkey` — a declarative WebAuthn ceremony the shell renders
|
|
13259
|
+
* natively (`@simplewebauthn/browser` lives in `addon-admin-ui`, not in
|
|
13260
|
+
* a remotely-loaded bundle). Carries the addon's effective `rpId` /
|
|
13261
|
+
* `origin` (from its `resolveRpID()` / `resolveOrigin()`) so the shell
|
|
13262
|
+
* can gate visibility (IP-literal origin, hostname/rpId mismatch) WITHOUT
|
|
13263
|
+
* fetching any remote code pre-auth. Contribution stays unconditional —
|
|
13264
|
+
* enrollment state is never leaked pre-auth; visibility is a shell
|
|
13265
|
+
* decision.
|
|
13012
13266
|
*
|
|
13013
13267
|
* Every contribution carries a `stage`:
|
|
13014
13268
|
* - `primary` — shown on the first credentials screen (OIDC /
|
|
@@ -13022,30 +13276,45 @@ method(object({
|
|
|
13022
13276
|
*/
|
|
13023
13277
|
/** When a login method renders in the two-phase login flow. */
|
|
13024
13278
|
var LoginStageEnum = _enum(["primary", "second-factor"]);
|
|
13025
|
-
/** One login-method contribution — redirect button
|
|
13026
|
-
var LoginMethodContributionSchema = discriminatedUnion("kind", [
|
|
13027
|
-
|
|
13028
|
-
|
|
13029
|
-
|
|
13030
|
-
|
|
13031
|
-
|
|
13032
|
-
|
|
13033
|
-
|
|
13034
|
-
|
|
13035
|
-
|
|
13036
|
-
|
|
13037
|
-
|
|
13038
|
-
|
|
13039
|
-
|
|
13040
|
-
|
|
13041
|
-
|
|
13042
|
-
|
|
13043
|
-
|
|
13044
|
-
|
|
13045
|
-
|
|
13046
|
-
|
|
13047
|
-
|
|
13048
|
-
|
|
13279
|
+
/** One login-method contribution — redirect button, pre-auth widget, or native passkey ceremony. */
|
|
13280
|
+
var LoginMethodContributionSchema = discriminatedUnion("kind", [
|
|
13281
|
+
object({
|
|
13282
|
+
kind: literal("redirect"),
|
|
13283
|
+
/** Stable id within the login-method set (e.g. `auth-oidc/google`). */
|
|
13284
|
+
id: string(),
|
|
13285
|
+
/** Operator-facing button label. */
|
|
13286
|
+
label: string(),
|
|
13287
|
+
/** lucide-react icon name. */
|
|
13288
|
+
icon: string().optional(),
|
|
13289
|
+
/** Addon-owned HTTP route the button navigates to (GET). */
|
|
13290
|
+
startUrl: string(),
|
|
13291
|
+
stage: LoginStageEnum
|
|
13292
|
+
}),
|
|
13293
|
+
object({
|
|
13294
|
+
kind: literal("widget"),
|
|
13295
|
+
/** Stable id within the login-method set (e.g. `auth-webauthn/passkey-login`). */
|
|
13296
|
+
id: string(),
|
|
13297
|
+
/** Owning addon id — drives the public bundle URL + the MF namespace. */
|
|
13298
|
+
addonId: string(),
|
|
13299
|
+
/** Bundle filename inside the addon's dist dir (`remoteEntry.js`). */
|
|
13300
|
+
bundle: string(),
|
|
13301
|
+
/** MF remote descriptor — `{ remoteName, exposedModule, componentKey }`. */
|
|
13302
|
+
remote: WidgetRemoteSchema,
|
|
13303
|
+
stage: LoginStageEnum
|
|
13304
|
+
}),
|
|
13305
|
+
object({
|
|
13306
|
+
kind: literal("passkey"),
|
|
13307
|
+
/** Stable id within the login-method set (e.g. `auth-webauthn/passkey-direct-login`). */
|
|
13308
|
+
id: string(),
|
|
13309
|
+
/** Operator-facing button label. */
|
|
13310
|
+
label: string(),
|
|
13311
|
+
stage: LoginStageEnum,
|
|
13312
|
+
/** Effective WebAuthn RP ID (`resolveRpID()`) — the shell gates visibility on it. */
|
|
13313
|
+
rpId: string(),
|
|
13314
|
+
/** Effective expected origin (`resolveOrigin()`), null when unconfigured. */
|
|
13315
|
+
origin: string().nullable()
|
|
13316
|
+
})
|
|
13317
|
+
]);
|
|
13049
13318
|
method(_void(), array(LoginMethodContributionSchema).readonly());
|
|
13050
13319
|
/**
|
|
13051
13320
|
* Orchestrator-side destination metadata. The orchestrator computes
|
|
@@ -14873,14 +15142,14 @@ var TargetKindCapsSchema = object({
|
|
|
14873
15142
|
* the union is large and not meant for runtime validation here; the exported
|
|
14874
15143
|
* `TargetKind` type re-tightens `configSchema` to `ConfigUISchema`.
|
|
14875
15144
|
*/
|
|
14876
|
-
var ConfigSchemaPassthrough = unknown();
|
|
15145
|
+
var ConfigSchemaPassthrough$1 = unknown();
|
|
14877
15146
|
var TargetKindSchema = object({
|
|
14878
15147
|
kind: string(),
|
|
14879
15148
|
label: string(),
|
|
14880
15149
|
icon: string(),
|
|
14881
15150
|
/** Stamped by each provider so the concat-fanned catalog stays routable. */
|
|
14882
15151
|
addonId: string(),
|
|
14883
|
-
configSchema: ConfigSchemaPassthrough,
|
|
15152
|
+
configSchema: ConfigSchemaPassthrough$1,
|
|
14884
15153
|
supportsDiscovery: boolean(),
|
|
14885
15154
|
caps: TargetKindCapsSchema
|
|
14886
15155
|
});
|
|
@@ -14933,6 +15202,298 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
14933
15202
|
enabled: boolean()
|
|
14934
15203
|
}), _void(), { kind: "mutation" });
|
|
14935
15204
|
/**
|
|
15205
|
+
* Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
|
|
15206
|
+
* surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
|
|
15207
|
+
* caps stay wire-compatible without a circular cap→cap import.
|
|
15208
|
+
*
|
|
15209
|
+
* Errors are a discriminated-union RESULT, never thrown: the shape survives
|
|
15210
|
+
* every transport tier structurally, and failed calls still write usage rows.
|
|
15211
|
+
* Token counts only in v1 — no costUsd (operator decision, 2026-07-15).
|
|
15212
|
+
*/
|
|
15213
|
+
var LlmUsageSchema = object({
|
|
15214
|
+
inputTokens: number(),
|
|
15215
|
+
outputTokens: number()
|
|
15216
|
+
});
|
|
15217
|
+
var LlmErrorCodeSchema = _enum([
|
|
15218
|
+
"timeout",
|
|
15219
|
+
"rate-limited",
|
|
15220
|
+
"auth",
|
|
15221
|
+
"refusal",
|
|
15222
|
+
"bad-request",
|
|
15223
|
+
"unavailable",
|
|
15224
|
+
"no-profile",
|
|
15225
|
+
"budget-exceeded",
|
|
15226
|
+
"adapter-error"
|
|
15227
|
+
]);
|
|
15228
|
+
var LlmGenerateResultSchema = discriminatedUnion("ok", [object({
|
|
15229
|
+
ok: literal(true),
|
|
15230
|
+
text: string(),
|
|
15231
|
+
model: string(),
|
|
15232
|
+
usage: LlmUsageSchema,
|
|
15233
|
+
truncated: boolean(),
|
|
15234
|
+
latencyMs: number()
|
|
15235
|
+
}), object({
|
|
15236
|
+
ok: literal(false),
|
|
15237
|
+
code: LlmErrorCodeSchema,
|
|
15238
|
+
message: string(),
|
|
15239
|
+
retryAfterMs: number().optional()
|
|
15240
|
+
})]);
|
|
15241
|
+
/**
|
|
15242
|
+
* `Uint8Array` is the sanctioned binary convention — superjson + the UDS
|
|
15243
|
+
* MsgPack channel round-trip typed arrays (embedding-encoder.cap.ts:29,
|
|
15244
|
+
* notification-output.cap.ts:27-31 precedents).
|
|
15245
|
+
*/
|
|
15246
|
+
var LlmImageSchema = object({
|
|
15247
|
+
bytes: _instanceof(Uint8Array),
|
|
15248
|
+
mimeType: string()
|
|
15249
|
+
});
|
|
15250
|
+
var LlmGenerateBaseInputSchema = object({
|
|
15251
|
+
/** Collection routing (the notification-output posture). */
|
|
15252
|
+
addonId: string().optional(),
|
|
15253
|
+
/** Explicit profile; else the resolution chain (spec §3). */
|
|
15254
|
+
profileId: string().optional(),
|
|
15255
|
+
/** MANDATORY usage tag: 'ai-summary', 'notifier-rules', 'adhoc-ui', … */
|
|
15256
|
+
consumer: string(),
|
|
15257
|
+
system: string().optional(),
|
|
15258
|
+
/** v1: single-turn. `messages[]` is a v2 additive field. */
|
|
15259
|
+
prompt: string(),
|
|
15260
|
+
/** Structured output — adapter-mapped (response_format / forced tool / responseSchema). */
|
|
15261
|
+
jsonSchema: record(string(), unknown()).optional(),
|
|
15262
|
+
/** Per-call override of the profile default. */
|
|
15263
|
+
maxTokens: number().int().positive().optional(),
|
|
15264
|
+
temperature: number().optional()
|
|
15265
|
+
});
|
|
15266
|
+
/**
|
|
15267
|
+
* `llm-runtime` — node-side managed llama.cpp executor (spec §4). Registered
|
|
15268
|
+
* on EVERY node where `addon-ai` is installed; the hub `llm` provider reaches
|
|
15269
|
+
* a specific node's runtime with `nodePin(profile.runtime.nodeId)` — normal
|
|
15270
|
+
* cap routing, zero bespoke plumbing. `internal: true`: the operator reaches
|
|
15271
|
+
* this only through the `llm` cap's methods.
|
|
15272
|
+
*
|
|
15273
|
+
* One running llama-server child per node in v1 (models are RAM-heavy).
|
|
15274
|
+
* Resource ceiling = llama-server flags + idleStopMinutes ONLY (no RSS
|
|
15275
|
+
* watchdog — operator decision #3).
|
|
15276
|
+
*/
|
|
15277
|
+
var ManagedModelRefSchema = discriminatedUnion("kind", [
|
|
15278
|
+
object({
|
|
15279
|
+
kind: literal("catalog"),
|
|
15280
|
+
catalogId: string()
|
|
15281
|
+
}),
|
|
15282
|
+
object({
|
|
15283
|
+
kind: literal("url"),
|
|
15284
|
+
url: string(),
|
|
15285
|
+
sha256: string().optional()
|
|
15286
|
+
}),
|
|
15287
|
+
object({
|
|
15288
|
+
kind: literal("path"),
|
|
15289
|
+
path: string()
|
|
15290
|
+
})
|
|
15291
|
+
]);
|
|
15292
|
+
var ManagedRuntimeConfigSchema = object({
|
|
15293
|
+
/** WHERE the runtime lives — hub or any agent. */
|
|
15294
|
+
nodeId: string(),
|
|
15295
|
+
/** Closed for v1; 'ollama' is a v2 candidate. */
|
|
15296
|
+
engine: _enum(["llama-cpp"]),
|
|
15297
|
+
model: ManagedModelRefSchema,
|
|
15298
|
+
contextSize: number().int().default(4096),
|
|
15299
|
+
/** 0 = CPU-only. */
|
|
15300
|
+
gpuLayers: number().int().default(0),
|
|
15301
|
+
/** Default: cpus-2, clamped ≥1 (resolved node-side). */
|
|
15302
|
+
threads: number().int().optional(),
|
|
15303
|
+
/** Concurrent slots. */
|
|
15304
|
+
parallel: number().int().default(1),
|
|
15305
|
+
/** Else lazy: first generate boots it. */
|
|
15306
|
+
autoStart: boolean().default(false),
|
|
15307
|
+
/** 0 = never; frees RAM after quiet periods. */
|
|
15308
|
+
idleStopMinutes: number().int().default(30)
|
|
15309
|
+
});
|
|
15310
|
+
var LlmRuntimeStatusSchema = object({
|
|
15311
|
+
/** Status is ALWAYS node-qualified. */
|
|
15312
|
+
nodeId: string(),
|
|
15313
|
+
state: _enum([
|
|
15314
|
+
"stopped",
|
|
15315
|
+
"downloading",
|
|
15316
|
+
"starting",
|
|
15317
|
+
"ready",
|
|
15318
|
+
"crashed",
|
|
15319
|
+
"failed"
|
|
15320
|
+
]),
|
|
15321
|
+
pid: number().optional(),
|
|
15322
|
+
port: number().optional(),
|
|
15323
|
+
modelPath: string().optional(),
|
|
15324
|
+
modelId: string().optional(),
|
|
15325
|
+
downloadProgress: number().min(0).max(1).optional(),
|
|
15326
|
+
lastError: string().optional(),
|
|
15327
|
+
crashesInWindow: number(),
|
|
15328
|
+
/** Child RSS (sampled best-effort). */
|
|
15329
|
+
memoryBytes: number().optional(),
|
|
15330
|
+
vramBytes: number().optional()
|
|
15331
|
+
});
|
|
15332
|
+
var LlmNodeModelSchema = object({
|
|
15333
|
+
file: string(),
|
|
15334
|
+
sizeBytes: number(),
|
|
15335
|
+
catalogId: string().optional(),
|
|
15336
|
+
installedAt: number().optional()
|
|
15337
|
+
});
|
|
15338
|
+
var LlmRuntimeDiskUsageSchema = object({
|
|
15339
|
+
nodeId: string(),
|
|
15340
|
+
modelsBytes: number(),
|
|
15341
|
+
freeBytes: number().optional()
|
|
15342
|
+
});
|
|
15343
|
+
method(LlmGenerateBaseInputSchema.extend({
|
|
15344
|
+
images: array(LlmImageSchema).optional(),
|
|
15345
|
+
runtime: ManagedRuntimeConfigSchema,
|
|
15346
|
+
/** The managed profile's timeout, threaded by the hub provider. */
|
|
15347
|
+
timeoutMs: number().int().positive().optional()
|
|
15348
|
+
}), LlmGenerateResultSchema, { kind: "mutation" }), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
15349
|
+
kind: "mutation",
|
|
15350
|
+
auth: "admin"
|
|
15351
|
+
}), method(object({}), _void(), {
|
|
15352
|
+
kind: "mutation",
|
|
15353
|
+
auth: "admin"
|
|
15354
|
+
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
15355
|
+
kind: "mutation",
|
|
15356
|
+
auth: "admin"
|
|
15357
|
+
}), method(object({ file: string() }), _void(), {
|
|
15358
|
+
kind: "mutation",
|
|
15359
|
+
auth: "admin"
|
|
15360
|
+
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
15361
|
+
/**
|
|
15362
|
+
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
15363
|
+
* methods concat-fan across providers; single-row methods route to ONE
|
|
15364
|
+
* provider by the `addonId` in the call input (the notification-output
|
|
15365
|
+
* posture, notification-output.cap.ts:215-250). Provided by `addon-ai`
|
|
15366
|
+
* (hub-placed); the cap stays open for future providers.
|
|
15367
|
+
*
|
|
15368
|
+
* Profiles are ROWS (data), not addons: one row = one usable model endpoint.
|
|
15369
|
+
* `apiKey` is a password field — providers REDACT it on read and merge on
|
|
15370
|
+
* write; a stored key NEVER round-trips to a client.
|
|
15371
|
+
*/
|
|
15372
|
+
var LlmProfileKindSchema = _enum([
|
|
15373
|
+
"openai-compatible",
|
|
15374
|
+
"openai",
|
|
15375
|
+
"anthropic",
|
|
15376
|
+
"google",
|
|
15377
|
+
"managed-local"
|
|
15378
|
+
]);
|
|
15379
|
+
var LlmProfileSchema = object({
|
|
15380
|
+
id: string(),
|
|
15381
|
+
name: string(),
|
|
15382
|
+
kind: LlmProfileKindSchema,
|
|
15383
|
+
/** Stamped by the provider — keeps the fanned catalog routable. */
|
|
15384
|
+
addonId: string(),
|
|
15385
|
+
enabled: boolean(),
|
|
15386
|
+
/** Vendor model id, or the managed runtime's loaded model. */
|
|
15387
|
+
model: string(),
|
|
15388
|
+
/** Required for openai-compatible; override for cloud kinds. */
|
|
15389
|
+
baseUrl: string().optional(),
|
|
15390
|
+
/** ConfigUISchema type:'password' — never round-trips (spec §5). */
|
|
15391
|
+
apiKey: string().optional(),
|
|
15392
|
+
supportsVision: boolean(),
|
|
15393
|
+
temperature: number().min(0).max(2).optional(),
|
|
15394
|
+
maxTokens: number().int().positive().optional(),
|
|
15395
|
+
timeoutMs: number().int().positive().default(6e4),
|
|
15396
|
+
extraHeaders: record(string(), string()).optional(),
|
|
15397
|
+
/** kind === 'managed-local' only (spec §4). */
|
|
15398
|
+
runtime: ManagedRuntimeConfigSchema.optional()
|
|
15399
|
+
});
|
|
15400
|
+
/** ConfigUISchema tree passed through untyped on the wire (the
|
|
15401
|
+
* notification-output `ConfigSchemaPassthrough` precedent at
|
|
15402
|
+
* notification-output.cap.ts:151); the exported TS type re-tightens it. */
|
|
15403
|
+
var ConfigSchemaPassthrough = unknown();
|
|
15404
|
+
var LlmProfileKindDescriptorSchema = object({
|
|
15405
|
+
kind: LlmProfileKindSchema,
|
|
15406
|
+
label: string(),
|
|
15407
|
+
icon: string(),
|
|
15408
|
+
/** Stamped by each provider so the concat-fanned catalog stays routable. */
|
|
15409
|
+
addonId: string(),
|
|
15410
|
+
configSchema: ConfigSchemaPassthrough
|
|
15411
|
+
});
|
|
15412
|
+
var LlmDefaultSelectorSchema = union([object({ consumer: string() }), object({ purpose: _enum(["text", "vision"]) })]);
|
|
15413
|
+
var LlmDefaultSchema = object({
|
|
15414
|
+
selector: LlmDefaultSelectorSchema,
|
|
15415
|
+
profileId: string()
|
|
15416
|
+
});
|
|
15417
|
+
/** Server-side rollup row — getUsage never dumps raw call rows (spec §6). */
|
|
15418
|
+
var LlmUsageRollupSchema = object({
|
|
15419
|
+
day: string(),
|
|
15420
|
+
consumer: string(),
|
|
15421
|
+
profileId: string(),
|
|
15422
|
+
calls: number(),
|
|
15423
|
+
okCalls: number(),
|
|
15424
|
+
errorCalls: number(),
|
|
15425
|
+
inputTokens: number(),
|
|
15426
|
+
outputTokens: number(),
|
|
15427
|
+
avgLatencyMs: number()
|
|
15428
|
+
});
|
|
15429
|
+
/** LLM-facing view over the reused ModelCatalogEntry mechanism (spec §4.2). */
|
|
15430
|
+
var ManagedModelCatalogEntrySchema = object({
|
|
15431
|
+
id: string(),
|
|
15432
|
+
label: string(),
|
|
15433
|
+
family: string(),
|
|
15434
|
+
purpose: _enum(["text", "vision"]),
|
|
15435
|
+
url: string(),
|
|
15436
|
+
sha256: string(),
|
|
15437
|
+
sizeBytes: number(),
|
|
15438
|
+
quantization: string(),
|
|
15439
|
+
/** Load-time guidance shown in the picker. */
|
|
15440
|
+
minRamBytes: number(),
|
|
15441
|
+
contextSizeDefault: number().int(),
|
|
15442
|
+
/** Vision models: companion projector file. */
|
|
15443
|
+
mmprojUrl: string().optional()
|
|
15444
|
+
});
|
|
15445
|
+
var LlmRuntimeNodeSchema = object({
|
|
15446
|
+
nodeId: string(),
|
|
15447
|
+
reachable: boolean(),
|
|
15448
|
+
status: LlmRuntimeStatusSchema.optional(),
|
|
15449
|
+
disk: LlmRuntimeDiskUsageSchema.optional(),
|
|
15450
|
+
error: string().optional()
|
|
15451
|
+
});
|
|
15452
|
+
var GenerateVisionInputSchema = LlmGenerateBaseInputSchema.extend({ images: array(LlmImageSchema).min(1) });
|
|
15453
|
+
var ProfileRefInputSchema = object({
|
|
15454
|
+
addonId: string(),
|
|
15455
|
+
profileId: string()
|
|
15456
|
+
});
|
|
15457
|
+
method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
|
|
15458
|
+
kind: "mutation",
|
|
15459
|
+
auth: "admin"
|
|
15460
|
+
}), method(ProfileRefInputSchema, _void(), {
|
|
15461
|
+
kind: "mutation",
|
|
15462
|
+
auth: "admin"
|
|
15463
|
+
}), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
|
|
15464
|
+
kind: "mutation",
|
|
15465
|
+
auth: "admin"
|
|
15466
|
+
}), method(ProfileRefInputSchema, array(string())), method(object({}), array(LlmDefaultSchema)), method(object({
|
|
15467
|
+
selector: LlmDefaultSelectorSchema,
|
|
15468
|
+
profileId: string().nullable()
|
|
15469
|
+
}), _void(), {
|
|
15470
|
+
kind: "mutation",
|
|
15471
|
+
auth: "admin"
|
|
15472
|
+
}), method(object({
|
|
15473
|
+
since: number().optional(),
|
|
15474
|
+
until: number().optional(),
|
|
15475
|
+
consumer: string().optional(),
|
|
15476
|
+
profileId: string().optional()
|
|
15477
|
+
}), array(LlmUsageRollupSchema)), method(object({}), array(ManagedModelCatalogEntrySchema)), method(object({}), array(LlmRuntimeNodeSchema)), method(object({ nodeId: string() }), array(LlmNodeModelSchema)), method(object({
|
|
15478
|
+
nodeId: string(),
|
|
15479
|
+
model: ManagedModelRefSchema
|
|
15480
|
+
}), _void(), {
|
|
15481
|
+
kind: "mutation",
|
|
15482
|
+
auth: "admin"
|
|
15483
|
+
}), method(object({
|
|
15484
|
+
nodeId: string(),
|
|
15485
|
+
file: string()
|
|
15486
|
+
}), _void(), {
|
|
15487
|
+
kind: "mutation",
|
|
15488
|
+
auth: "admin"
|
|
15489
|
+
}), method(ProfileRefInputSchema, LlmRuntimeStatusSchema), method(ProfileRefInputSchema, LlmRuntimeStatusSchema, {
|
|
15490
|
+
kind: "mutation",
|
|
15491
|
+
auth: "admin"
|
|
15492
|
+
}), method(ProfileRefInputSchema, _void(), {
|
|
15493
|
+
kind: "mutation",
|
|
15494
|
+
auth: "admin"
|
|
15495
|
+
});
|
|
15496
|
+
/**
|
|
14936
15497
|
* Zod schemas for persisted record types.
|
|
14937
15498
|
*
|
|
14938
15499
|
* These schemas serve as the single source of truth for types that are
|
|
@@ -15134,6 +15695,22 @@ var TrackSnapshotSchema = object({
|
|
|
15134
15695
|
/** MediaStore key; resolve via `getTrackMedia({ trackId })`. */
|
|
15135
15696
|
mediaKey: string()
|
|
15136
15697
|
});
|
|
15698
|
+
/**
|
|
15699
|
+
* One audio-classification label heard on the track's camera while the
|
|
15700
|
+
* track was alive, aggregated per label. An "episode" is one persisted
|
|
15701
|
+
* audio event (the confident-classification path: score ≥ the device's
|
|
15702
|
+
* `classificationMinScore`, class-change-or-heartbeat coalesced) — NOT
|
|
15703
|
+
* one 32 ms inference chunk, so counts stay human-scaled.
|
|
15704
|
+
*/
|
|
15705
|
+
var TrackAudioLabelSchema = object({
|
|
15706
|
+
label: string(),
|
|
15707
|
+
/** Highest classification score observed across the label's episodes. */
|
|
15708
|
+
peakScore: number(),
|
|
15709
|
+
/** Number of coalesced audio-event episodes carrying this label. */
|
|
15710
|
+
count: number(),
|
|
15711
|
+
firstAt: number(),
|
|
15712
|
+
lastAt: number()
|
|
15713
|
+
});
|
|
15137
15714
|
var TrackSchema = object({
|
|
15138
15715
|
trackId: string(),
|
|
15139
15716
|
deviceId: number(),
|
|
@@ -15148,6 +15725,10 @@ var TrackSchema = object({
|
|
|
15148
15725
|
snapshots: array(TrackSnapshotSchema).readonly(),
|
|
15149
15726
|
/** Deduplicated zones the track has entered at least once. */
|
|
15150
15727
|
zonesVisited: array(string()).readonly(),
|
|
15728
|
+
/** Deduplicated set of detector classes observed for this track over its
|
|
15729
|
+
* life (a track may be reclassified, e.g. person→vehicle). Absent on
|
|
15730
|
+
* legacy rows written before class accumulation shipped. */
|
|
15731
|
+
classes: array(string()).readonly().optional(),
|
|
15151
15732
|
/** Cumulative normalized distance travelled (0..1 units = full frame width). */
|
|
15152
15733
|
totalDistance: number(),
|
|
15153
15734
|
state: TrackStateSchema,
|
|
@@ -15161,7 +15742,11 @@ var TrackSchema = object({
|
|
|
15161
15742
|
bestEventId: string().optional(),
|
|
15162
15743
|
/** Tag of the importance sub-signal that dominated the score
|
|
15163
15744
|
* (identity|dwell|proximity|class|confidence|travel|zone). */
|
|
15164
|
-
importanceReason: string().optional()
|
|
15745
|
+
importanceReason: string().optional(),
|
|
15746
|
+
/** Audio-classification labels heard on the camera during the track's
|
|
15747
|
+
* life (score ≥ device `classificationMinScore`), aggregated per label.
|
|
15748
|
+
* Absent on legacy rows / tracks with no confident audio. */
|
|
15749
|
+
audioLabels: array(TrackAudioLabelSchema).readonly().optional()
|
|
15165
15750
|
});
|
|
15166
15751
|
var BaseEventFields = {
|
|
15167
15752
|
id: string(),
|
|
@@ -15309,7 +15894,7 @@ var KeyEventSchema = object({
|
|
|
15309
15894
|
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
15310
15895
|
windowMs: number().optional()
|
|
15311
15896
|
});
|
|
15312
|
-
|
|
15897
|
+
object({
|
|
15313
15898
|
trackId: string(),
|
|
15314
15899
|
className: string(),
|
|
15315
15900
|
confidence: number(),
|
|
@@ -15317,6 +15902,23 @@ var TrackedDetectionSchema = object({
|
|
|
15317
15902
|
zones: array(string()).readonly(),
|
|
15318
15903
|
state: TrackStateSchema
|
|
15319
15904
|
});
|
|
15905
|
+
var OverlayDetectionSchema = looseObject({
|
|
15906
|
+
id: string(),
|
|
15907
|
+
kind: _enum(["first-level", "detail"]),
|
|
15908
|
+
macroClass: string(),
|
|
15909
|
+
score: number(),
|
|
15910
|
+
bbox: object({
|
|
15911
|
+
x: number(),
|
|
15912
|
+
y: number(),
|
|
15913
|
+
width: number(),
|
|
15914
|
+
height: number()
|
|
15915
|
+
}),
|
|
15916
|
+
labels: array(looseObject({
|
|
15917
|
+
label: string(),
|
|
15918
|
+
score: number()
|
|
15919
|
+
})).readonly(),
|
|
15920
|
+
parentId: string().optional()
|
|
15921
|
+
});
|
|
15320
15922
|
var ScoredObjectEventSchema = ObjectEventSchema.extend({ score: number() });
|
|
15321
15923
|
var SearchObjectEventsInput = object({
|
|
15322
15924
|
text: string(),
|
|
@@ -15327,6 +15929,20 @@ var SearchObjectEventsInput = object({
|
|
|
15327
15929
|
limit: number().default(50),
|
|
15328
15930
|
minScore: number().min(0).max(1).default(.2)
|
|
15329
15931
|
});
|
|
15932
|
+
var TrackCascadeCountsSchema = object({
|
|
15933
|
+
/** Persisted track roots deleted (authoritative). */
|
|
15934
|
+
tracks: number().int(),
|
|
15935
|
+
/** Object events removed with their tracks (best-effort; see note above). */
|
|
15936
|
+
events: number().int(),
|
|
15937
|
+
/** Track/face/plate-owned media removed (best-effort). Never identity media. */
|
|
15938
|
+
media: number().int(),
|
|
15939
|
+
/** Unassigned (non-enrolled) face reads removed (best-effort). */
|
|
15940
|
+
faces: number().int(),
|
|
15941
|
+
/** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
|
|
15942
|
+
plates: number().int(),
|
|
15943
|
+
/** Per-track CLIP search vectors removed (best-effort). */
|
|
15944
|
+
embeddings: number().int()
|
|
15945
|
+
});
|
|
15330
15946
|
DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).readonly()), method(object({
|
|
15331
15947
|
deviceId: number(),
|
|
15332
15948
|
trackId: string()
|
|
@@ -15358,6 +15974,24 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
15358
15974
|
}), {
|
|
15359
15975
|
kind: "mutation",
|
|
15360
15976
|
auth: "admin"
|
|
15977
|
+
}), method(object({
|
|
15978
|
+
deviceId: number(),
|
|
15979
|
+
cutoffMs: number()
|
|
15980
|
+
}), TrackCascadeCountsSchema, {
|
|
15981
|
+
kind: "mutation",
|
|
15982
|
+
auth: "admin"
|
|
15983
|
+
}), method(object({ deviceId: number() }), TrackCascadeCountsSchema, {
|
|
15984
|
+
kind: "mutation",
|
|
15985
|
+
auth: "admin"
|
|
15986
|
+
}), method(object({
|
|
15987
|
+
deviceId: number(),
|
|
15988
|
+
trackIds: array(string()).min(1)
|
|
15989
|
+
}), object({
|
|
15990
|
+
deleted: number().int(),
|
|
15991
|
+
failed: array(string()).readonly()
|
|
15992
|
+
}), {
|
|
15993
|
+
kind: "mutation",
|
|
15994
|
+
auth: "admin"
|
|
15361
15995
|
}), method(object({
|
|
15362
15996
|
eventId: string(),
|
|
15363
15997
|
kind: MediaFileKindEnum.optional()
|
|
@@ -15366,7 +16000,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
15366
16000
|
timestamp: number(),
|
|
15367
16001
|
frameWidth: number(),
|
|
15368
16002
|
frameHeight: number(),
|
|
15369
|
-
detections: array(
|
|
16003
|
+
detections: array(OverlayDetectionSchema).readonly()
|
|
15370
16004
|
}), object({
|
|
15371
16005
|
deviceId: number(),
|
|
15372
16006
|
trackId: string(),
|
|
@@ -18135,6 +18769,24 @@ DeviceType.Camera, method(object({
|
|
|
18135
18769
|
deviceId: number(),
|
|
18136
18770
|
status: OsdStatusSchema
|
|
18137
18771
|
});
|
|
18772
|
+
var VehicleSchema = object({
|
|
18773
|
+
id: string(),
|
|
18774
|
+
name: string(),
|
|
18775
|
+
sampleCount: number().int().nonnegative(),
|
|
18776
|
+
coverMediaKey: string().optional(),
|
|
18777
|
+
/** Inline base64 of the cover sample's plate crop, resolved from `coverMediaKey`. */
|
|
18778
|
+
coverBase64: string().optional()
|
|
18779
|
+
});
|
|
18780
|
+
var VehicleSampleInfoSchema = object({
|
|
18781
|
+
id: string(),
|
|
18782
|
+
/** The plate text this sample enrolled (self-labeling — no embedding). */
|
|
18783
|
+
text: string(),
|
|
18784
|
+
/** OCR confidence of the enrolled read (0..1). */
|
|
18785
|
+
score: number(),
|
|
18786
|
+
addedAt: number().int(),
|
|
18787
|
+
deviceId: number().int().optional(),
|
|
18788
|
+
base64: string().optional()
|
|
18789
|
+
});
|
|
18138
18790
|
var PlateInfoSchema = object({
|
|
18139
18791
|
plateId: string(),
|
|
18140
18792
|
deviceId: number().int(),
|
|
@@ -18146,6 +18798,16 @@ var PlateInfoSchema = object({
|
|
|
18146
18798
|
score: number(),
|
|
18147
18799
|
/** True when the text was manually corrected (exempt from retention). */
|
|
18148
18800
|
corrected: boolean(),
|
|
18801
|
+
/** Recognized vehicle id when a matcher lookup named this read (SQL NULL → absent). */
|
|
18802
|
+
recognizedVehicleId: string().optional(),
|
|
18803
|
+
/** Resolved vehicle name for `recognizedVehicleId` (UI convenience). */
|
|
18804
|
+
vehicleName: string().optional(),
|
|
18805
|
+
/** True once the read was assigned to a vehicle (enrolled as a sample). */
|
|
18806
|
+
assigned: boolean(),
|
|
18807
|
+
/** keyFrame parity: the plate bbox (pixel space) on the native key frame. */
|
|
18808
|
+
plateBbox: BoundingBoxSchema.optional(),
|
|
18809
|
+
/** keyFrame parity: MediaStore key of the track's native-resolution key frame. */
|
|
18810
|
+
keyFrameMediaKey: string().optional(),
|
|
18149
18811
|
base64: string().optional()
|
|
18150
18812
|
});
|
|
18151
18813
|
var MediaFileLiteSchema = object({
|
|
@@ -18185,6 +18847,48 @@ method(object({
|
|
|
18185
18847
|
}), method(object({ plateId: string() }), _void(), {
|
|
18186
18848
|
kind: "mutation",
|
|
18187
18849
|
auth: "admin"
|
|
18850
|
+
}), method(_void(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
18851
|
+
kind: "mutation",
|
|
18852
|
+
auth: "admin"
|
|
18853
|
+
}), method(object({
|
|
18854
|
+
id: string(),
|
|
18855
|
+
name: string().min(1)
|
|
18856
|
+
}), _void(), {
|
|
18857
|
+
kind: "mutation",
|
|
18858
|
+
auth: "admin"
|
|
18859
|
+
}), method(object({ id: string() }), _void(), {
|
|
18860
|
+
kind: "mutation",
|
|
18861
|
+
auth: "admin"
|
|
18862
|
+
}), method(object({ vehicleId: string() }), array(VehicleSampleInfoSchema).readonly()), method(object({
|
|
18863
|
+
vehicleId: string(),
|
|
18864
|
+
sampleId: string()
|
|
18865
|
+
}), _void(), {
|
|
18866
|
+
kind: "mutation",
|
|
18867
|
+
auth: "admin"
|
|
18868
|
+
}), method(object({
|
|
18869
|
+
plateId: string(),
|
|
18870
|
+
vehicleId: string()
|
|
18871
|
+
}), _void(), {
|
|
18872
|
+
kind: "mutation",
|
|
18873
|
+
auth: "admin"
|
|
18874
|
+
}), method(object({ plateId: string() }), _void(), {
|
|
18875
|
+
kind: "mutation",
|
|
18876
|
+
auth: "admin"
|
|
18877
|
+
}), method(object({
|
|
18878
|
+
plateIds: array(string()).min(1),
|
|
18879
|
+
vehicleId: string()
|
|
18880
|
+
}), object({
|
|
18881
|
+
assigned: number().int(),
|
|
18882
|
+
failed: array(string()).readonly()
|
|
18883
|
+
}), {
|
|
18884
|
+
kind: "mutation",
|
|
18885
|
+
auth: "admin"
|
|
18886
|
+
}), method(object({ plateIds: array(string()).min(1) }), object({
|
|
18887
|
+
unassigned: number().int(),
|
|
18888
|
+
failed: array(string()).readonly()
|
|
18889
|
+
}), {
|
|
18890
|
+
kind: "mutation",
|
|
18891
|
+
auth: "admin"
|
|
18188
18892
|
});
|
|
18189
18893
|
var ModelFormatSchema = _enum(MODEL_FORMATS);
|
|
18190
18894
|
var HwAccelBackendInputSchema = _enum([
|
|
@@ -18263,6 +18967,10 @@ var GpuInfoSchema = object({
|
|
|
18263
18967
|
memoryMB: number().optional()
|
|
18264
18968
|
});
|
|
18265
18969
|
var NpuInfoSchema = object({ type: _enum(["apple-ane", "intel-npu"]) });
|
|
18970
|
+
var CoralInfoSchema = object({
|
|
18971
|
+
type: literal("coral-edgetpu"),
|
|
18972
|
+
bus: string().optional()
|
|
18973
|
+
});
|
|
18266
18974
|
var HardwareInfoSchema = object({
|
|
18267
18975
|
platform: HardwarePlatformSchema,
|
|
18268
18976
|
arch: HardwareArchSchema,
|
|
@@ -18271,7 +18979,8 @@ var HardwareInfoSchema = object({
|
|
|
18271
18979
|
totalRAM_MB: number(),
|
|
18272
18980
|
availableRAM_MB: number(),
|
|
18273
18981
|
gpu: GpuInfoSchema.nullable(),
|
|
18274
|
-
npu: NpuInfoSchema.nullable()
|
|
18982
|
+
npu: NpuInfoSchema.nullable(),
|
|
18983
|
+
coral: CoralInfoSchema.nullable().optional()
|
|
18275
18984
|
});
|
|
18276
18985
|
var PlatformScoreSchema = object({
|
|
18277
18986
|
runtime: _enum(["node", "python"]),
|
|
@@ -20730,6 +21439,168 @@ Object.freeze({
|
|
|
20730
21439
|
addonId: null,
|
|
20731
21440
|
access: "create"
|
|
20732
21441
|
},
|
|
21442
|
+
"llm.deleteModel": {
|
|
21443
|
+
capName: "llm",
|
|
21444
|
+
capScope: "system",
|
|
21445
|
+
addonId: null,
|
|
21446
|
+
access: "delete"
|
|
21447
|
+
},
|
|
21448
|
+
"llm.deleteProfile": {
|
|
21449
|
+
capName: "llm",
|
|
21450
|
+
capScope: "system",
|
|
21451
|
+
addonId: null,
|
|
21452
|
+
access: "delete"
|
|
21453
|
+
},
|
|
21454
|
+
"llm.generate": {
|
|
21455
|
+
capName: "llm",
|
|
21456
|
+
capScope: "system",
|
|
21457
|
+
addonId: null,
|
|
21458
|
+
access: "create"
|
|
21459
|
+
},
|
|
21460
|
+
"llm.generateVision": {
|
|
21461
|
+
capName: "llm",
|
|
21462
|
+
capScope: "system",
|
|
21463
|
+
addonId: null,
|
|
21464
|
+
access: "create"
|
|
21465
|
+
},
|
|
21466
|
+
"llm.getDefaults": {
|
|
21467
|
+
capName: "llm",
|
|
21468
|
+
capScope: "system",
|
|
21469
|
+
addonId: null,
|
|
21470
|
+
access: "view"
|
|
21471
|
+
},
|
|
21472
|
+
"llm.getRuntimeStatus": {
|
|
21473
|
+
capName: "llm",
|
|
21474
|
+
capScope: "system",
|
|
21475
|
+
addonId: null,
|
|
21476
|
+
access: "view"
|
|
21477
|
+
},
|
|
21478
|
+
"llm.getUsage": {
|
|
21479
|
+
capName: "llm",
|
|
21480
|
+
capScope: "system",
|
|
21481
|
+
addonId: null,
|
|
21482
|
+
access: "view"
|
|
21483
|
+
},
|
|
21484
|
+
"llm.installModel": {
|
|
21485
|
+
capName: "llm",
|
|
21486
|
+
capScope: "system",
|
|
21487
|
+
addonId: null,
|
|
21488
|
+
access: "create"
|
|
21489
|
+
},
|
|
21490
|
+
"llm.listModelCatalog": {
|
|
21491
|
+
capName: "llm",
|
|
21492
|
+
capScope: "system",
|
|
21493
|
+
addonId: null,
|
|
21494
|
+
access: "view"
|
|
21495
|
+
},
|
|
21496
|
+
"llm.listModels": {
|
|
21497
|
+
capName: "llm",
|
|
21498
|
+
capScope: "system",
|
|
21499
|
+
addonId: null,
|
|
21500
|
+
access: "view"
|
|
21501
|
+
},
|
|
21502
|
+
"llm.listNodeModels": {
|
|
21503
|
+
capName: "llm",
|
|
21504
|
+
capScope: "system",
|
|
21505
|
+
addonId: null,
|
|
21506
|
+
access: "view"
|
|
21507
|
+
},
|
|
21508
|
+
"llm.listProfileKinds": {
|
|
21509
|
+
capName: "llm",
|
|
21510
|
+
capScope: "system",
|
|
21511
|
+
addonId: null,
|
|
21512
|
+
access: "view"
|
|
21513
|
+
},
|
|
21514
|
+
"llm.listProfiles": {
|
|
21515
|
+
capName: "llm",
|
|
21516
|
+
capScope: "system",
|
|
21517
|
+
addonId: null,
|
|
21518
|
+
access: "view"
|
|
21519
|
+
},
|
|
21520
|
+
"llm.listRuntimeNodes": {
|
|
21521
|
+
capName: "llm",
|
|
21522
|
+
capScope: "system",
|
|
21523
|
+
addonId: null,
|
|
21524
|
+
access: "view"
|
|
21525
|
+
},
|
|
21526
|
+
"llm.setDefault": {
|
|
21527
|
+
capName: "llm",
|
|
21528
|
+
capScope: "system",
|
|
21529
|
+
addonId: null,
|
|
21530
|
+
access: "create"
|
|
21531
|
+
},
|
|
21532
|
+
"llm.startRuntime": {
|
|
21533
|
+
capName: "llm",
|
|
21534
|
+
capScope: "system",
|
|
21535
|
+
addonId: null,
|
|
21536
|
+
access: "create"
|
|
21537
|
+
},
|
|
21538
|
+
"llm.stopRuntime": {
|
|
21539
|
+
capName: "llm",
|
|
21540
|
+
capScope: "system",
|
|
21541
|
+
addonId: null,
|
|
21542
|
+
access: "create"
|
|
21543
|
+
},
|
|
21544
|
+
"llm.testProfile": {
|
|
21545
|
+
capName: "llm",
|
|
21546
|
+
capScope: "system",
|
|
21547
|
+
addonId: null,
|
|
21548
|
+
access: "create"
|
|
21549
|
+
},
|
|
21550
|
+
"llm.upsertProfile": {
|
|
21551
|
+
capName: "llm",
|
|
21552
|
+
capScope: "system",
|
|
21553
|
+
addonId: null,
|
|
21554
|
+
access: "create"
|
|
21555
|
+
},
|
|
21556
|
+
"llmRuntime.complete": {
|
|
21557
|
+
capName: "llm-runtime",
|
|
21558
|
+
capScope: "system",
|
|
21559
|
+
addonId: null,
|
|
21560
|
+
access: "create"
|
|
21561
|
+
},
|
|
21562
|
+
"llmRuntime.deleteModel": {
|
|
21563
|
+
capName: "llm-runtime",
|
|
21564
|
+
capScope: "system",
|
|
21565
|
+
addonId: null,
|
|
21566
|
+
access: "delete"
|
|
21567
|
+
},
|
|
21568
|
+
"llmRuntime.ensureStarted": {
|
|
21569
|
+
capName: "llm-runtime",
|
|
21570
|
+
capScope: "system",
|
|
21571
|
+
addonId: null,
|
|
21572
|
+
access: "create"
|
|
21573
|
+
},
|
|
21574
|
+
"llmRuntime.getDiskUsage": {
|
|
21575
|
+
capName: "llm-runtime",
|
|
21576
|
+
capScope: "system",
|
|
21577
|
+
addonId: null,
|
|
21578
|
+
access: "view"
|
|
21579
|
+
},
|
|
21580
|
+
"llmRuntime.installModel": {
|
|
21581
|
+
capName: "llm-runtime",
|
|
21582
|
+
capScope: "system",
|
|
21583
|
+
addonId: null,
|
|
21584
|
+
access: "create"
|
|
21585
|
+
},
|
|
21586
|
+
"llmRuntime.listLocalModels": {
|
|
21587
|
+
capName: "llm-runtime",
|
|
21588
|
+
capScope: "system",
|
|
21589
|
+
addonId: null,
|
|
21590
|
+
access: "view"
|
|
21591
|
+
},
|
|
21592
|
+
"llmRuntime.status": {
|
|
21593
|
+
capName: "llm-runtime",
|
|
21594
|
+
capScope: "system",
|
|
21595
|
+
addonId: null,
|
|
21596
|
+
access: "view"
|
|
21597
|
+
},
|
|
21598
|
+
"llmRuntime.stop": {
|
|
21599
|
+
capName: "llm-runtime",
|
|
21600
|
+
capScope: "system",
|
|
21601
|
+
addonId: null,
|
|
21602
|
+
access: "create"
|
|
21603
|
+
},
|
|
20733
21604
|
"localNetwork.getAllowedAddresses": {
|
|
20734
21605
|
capName: "local-network",
|
|
20735
21606
|
capScope: "system",
|
|
@@ -21360,6 +22231,12 @@ Object.freeze({
|
|
|
21360
22231
|
addonId: null,
|
|
21361
22232
|
access: "delete"
|
|
21362
22233
|
},
|
|
22234
|
+
"pipelineAnalytics.deleteTracks": {
|
|
22235
|
+
capName: "pipeline-analytics",
|
|
22236
|
+
capScope: "device",
|
|
22237
|
+
addonId: null,
|
|
22238
|
+
access: "delete"
|
|
22239
|
+
},
|
|
21363
22240
|
"pipelineAnalytics.getActiveTracks": {
|
|
21364
22241
|
capName: "pipeline-analytics",
|
|
21365
22242
|
capScope: "device",
|
|
@@ -21426,12 +22303,24 @@ Object.freeze({
|
|
|
21426
22303
|
addonId: null,
|
|
21427
22304
|
access: "create"
|
|
21428
22305
|
},
|
|
22306
|
+
"pipelineAnalytics.pruneTracksBefore": {
|
|
22307
|
+
capName: "pipeline-analytics",
|
|
22308
|
+
capScope: "device",
|
|
22309
|
+
addonId: null,
|
|
22310
|
+
access: "create"
|
|
22311
|
+
},
|
|
21429
22312
|
"pipelineAnalytics.searchObjectEvents": {
|
|
21430
22313
|
capName: "pipeline-analytics",
|
|
21431
22314
|
capScope: "device",
|
|
21432
22315
|
addonId: null,
|
|
21433
22316
|
access: "view"
|
|
21434
22317
|
},
|
|
22318
|
+
"pipelineAnalytics.wipeAllAnalytics": {
|
|
22319
|
+
capName: "pipeline-analytics",
|
|
22320
|
+
capScope: "device",
|
|
22321
|
+
addonId: null,
|
|
22322
|
+
access: "delete"
|
|
22323
|
+
},
|
|
21435
22324
|
"pipelineExecutor.cacheFrameInPool": {
|
|
21436
22325
|
capName: "pipeline-executor",
|
|
21437
22326
|
capScope: "system",
|
|
@@ -21936,18 +22825,42 @@ Object.freeze({
|
|
|
21936
22825
|
addonId: null,
|
|
21937
22826
|
access: "create"
|
|
21938
22827
|
},
|
|
22828
|
+
"plateGallery.assignPlate": {
|
|
22829
|
+
capName: "plate-gallery",
|
|
22830
|
+
capScope: "system",
|
|
22831
|
+
addonId: null,
|
|
22832
|
+
access: "create"
|
|
22833
|
+
},
|
|
22834
|
+
"plateGallery.assignPlates": {
|
|
22835
|
+
capName: "plate-gallery",
|
|
22836
|
+
capScope: "system",
|
|
22837
|
+
addonId: null,
|
|
22838
|
+
access: "create"
|
|
22839
|
+
},
|
|
21939
22840
|
"plateGallery.correctPlateText": {
|
|
21940
22841
|
capName: "plate-gallery",
|
|
21941
22842
|
capScope: "system",
|
|
21942
22843
|
addonId: null,
|
|
21943
22844
|
access: "create"
|
|
21944
22845
|
},
|
|
22846
|
+
"plateGallery.createVehicle": {
|
|
22847
|
+
capName: "plate-gallery",
|
|
22848
|
+
capScope: "system",
|
|
22849
|
+
addonId: null,
|
|
22850
|
+
access: "create"
|
|
22851
|
+
},
|
|
21945
22852
|
"plateGallery.deletePlate": {
|
|
21946
22853
|
capName: "plate-gallery",
|
|
21947
22854
|
capScope: "system",
|
|
21948
22855
|
addonId: null,
|
|
21949
22856
|
access: "delete"
|
|
21950
22857
|
},
|
|
22858
|
+
"plateGallery.deleteVehicle": {
|
|
22859
|
+
capName: "plate-gallery",
|
|
22860
|
+
capScope: "system",
|
|
22861
|
+
addonId: null,
|
|
22862
|
+
access: "delete"
|
|
22863
|
+
},
|
|
21951
22864
|
"plateGallery.getPlateByTrack": {
|
|
21952
22865
|
capName: "plate-gallery",
|
|
21953
22866
|
capScope: "system",
|
|
@@ -21966,6 +22879,30 @@ Object.freeze({
|
|
|
21966
22879
|
addonId: null,
|
|
21967
22880
|
access: "view"
|
|
21968
22881
|
},
|
|
22882
|
+
"plateGallery.listVehicles": {
|
|
22883
|
+
capName: "plate-gallery",
|
|
22884
|
+
capScope: "system",
|
|
22885
|
+
addonId: null,
|
|
22886
|
+
access: "view"
|
|
22887
|
+
},
|
|
22888
|
+
"plateGallery.listVehicleSamples": {
|
|
22889
|
+
capName: "plate-gallery",
|
|
22890
|
+
capScope: "system",
|
|
22891
|
+
addonId: null,
|
|
22892
|
+
access: "view"
|
|
22893
|
+
},
|
|
22894
|
+
"plateGallery.removeVehicleSample": {
|
|
22895
|
+
capName: "plate-gallery",
|
|
22896
|
+
capScope: "system",
|
|
22897
|
+
addonId: null,
|
|
22898
|
+
access: "delete"
|
|
22899
|
+
},
|
|
22900
|
+
"plateGallery.renameVehicle": {
|
|
22901
|
+
capName: "plate-gallery",
|
|
22902
|
+
capScope: "system",
|
|
22903
|
+
addonId: null,
|
|
22904
|
+
access: "create"
|
|
22905
|
+
},
|
|
21969
22906
|
"plateGallery.searchPlates": {
|
|
21970
22907
|
capName: "plate-gallery",
|
|
21971
22908
|
capScope: "system",
|
|
@@ -21978,6 +22915,18 @@ Object.freeze({
|
|
|
21978
22915
|
addonId: null,
|
|
21979
22916
|
access: "view"
|
|
21980
22917
|
},
|
|
22918
|
+
"plateGallery.unassignPlate": {
|
|
22919
|
+
capName: "plate-gallery",
|
|
22920
|
+
capScope: "system",
|
|
22921
|
+
addonId: null,
|
|
22922
|
+
access: "create"
|
|
22923
|
+
},
|
|
22924
|
+
"plateGallery.unassignPlates": {
|
|
22925
|
+
capName: "plate-gallery",
|
|
22926
|
+
capScope: "system",
|
|
22927
|
+
addonId: null,
|
|
22928
|
+
access: "create"
|
|
22929
|
+
},
|
|
21981
22930
|
"platformProbe.getCapabilities": {
|
|
21982
22931
|
capName: "platform-probe",
|
|
21983
22932
|
capScope: "system",
|
|
@@ -22170,6 +23119,48 @@ Object.freeze({
|
|
|
22170
23119
|
addonId: null,
|
|
22171
23120
|
access: "create"
|
|
22172
23121
|
},
|
|
23122
|
+
"sceneMonitor.captureReference": {
|
|
23123
|
+
capName: "scene-monitor",
|
|
23124
|
+
capScope: "device",
|
|
23125
|
+
addonId: null,
|
|
23126
|
+
access: "create"
|
|
23127
|
+
},
|
|
23128
|
+
"sceneMonitor.createScene": {
|
|
23129
|
+
capName: "scene-monitor",
|
|
23130
|
+
capScope: "device",
|
|
23131
|
+
addonId: null,
|
|
23132
|
+
access: "create"
|
|
23133
|
+
},
|
|
23134
|
+
"sceneMonitor.deleteReference": {
|
|
23135
|
+
capName: "scene-monitor",
|
|
23136
|
+
capScope: "device",
|
|
23137
|
+
addonId: null,
|
|
23138
|
+
access: "delete"
|
|
23139
|
+
},
|
|
23140
|
+
"sceneMonitor.deleteScene": {
|
|
23141
|
+
capName: "scene-monitor",
|
|
23142
|
+
capScope: "device",
|
|
23143
|
+
addonId: null,
|
|
23144
|
+
access: "delete"
|
|
23145
|
+
},
|
|
23146
|
+
"sceneMonitor.listScenes": {
|
|
23147
|
+
capName: "scene-monitor",
|
|
23148
|
+
capScope: "device",
|
|
23149
|
+
addonId: null,
|
|
23150
|
+
access: "view"
|
|
23151
|
+
},
|
|
23152
|
+
"sceneMonitor.recheckNow": {
|
|
23153
|
+
capName: "scene-monitor",
|
|
23154
|
+
capScope: "device",
|
|
23155
|
+
addonId: null,
|
|
23156
|
+
access: "create"
|
|
23157
|
+
},
|
|
23158
|
+
"sceneMonitor.updateScene": {
|
|
23159
|
+
capName: "scene-monitor",
|
|
23160
|
+
capScope: "device",
|
|
23161
|
+
addonId: null,
|
|
23162
|
+
access: "create"
|
|
23163
|
+
},
|
|
22173
23164
|
"scriptRunner.run": {
|
|
22174
23165
|
capName: "script-runner",
|
|
22175
23166
|
capScope: "device",
|
|
@@ -23254,6 +24245,7 @@ Object.freeze({
|
|
|
23254
24245
|
Object.freeze({
|
|
23255
24246
|
"broker": "broker",
|
|
23256
24247
|
"device-export": "device-export",
|
|
24248
|
+
"llm": "ai",
|
|
23257
24249
|
"mesh-network": "mesh",
|
|
23258
24250
|
"mqtt-broker": "broker",
|
|
23259
24251
|
"network-access": "ingress",
|
|
@@ -23304,7 +24296,7 @@ var AdminUIAddon = class extends BaseAddon {
|
|
|
23304
24296
|
capability: adminUiCapability,
|
|
23305
24297
|
provider: {
|
|
23306
24298
|
getStaticDir: async () => ({ staticDir: resolveAdminUiDistDir() }),
|
|
23307
|
-
getVersion: async () => ({ version: "1.1.
|
|
24299
|
+
getVersion: async () => ({ version: "1.1.52" })
|
|
23308
24300
|
}
|
|
23309
24301
|
}];
|
|
23310
24302
|
}
|