@camstack/addon-pipeline 1.1.54 → 1.1.56
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/audio-analyzer/index.js +1 -1
- package/dist/audio-analyzer/index.mjs +1 -1
- package/dist/detection-pipeline/index.js +159 -1471
- package/dist/detection-pipeline/index.mjs +139 -1451
- package/dist/{dist-BbaoC680.js → dist-ClE6_i0p.js} +1000 -40
- package/dist/{dist-CEcTeu1h.mjs → dist-CrjLGrkj.mjs} +1000 -40
- package/dist/motion-wasm/index.js +1 -1
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/pipeline-runner/index.js +777 -27
- package/dist/pipeline-runner/index.mjs +777 -28
- package/dist/recorder/index.js +1 -1
- package/dist/recorder/index.mjs +1 -1
- package/dist/{remote-source-plane-CNCqC_XG.mjs → remote-source-plane-B28iGi7h.mjs} +1 -1
- package/dist/{remote-source-plane-vN45KFSm.js → remote-source-plane-BAqEHSgm.js} +1 -1
- package/dist/session-decode/decode-worker-child.js +227 -6
- package/dist/session-decode/decode-worker-child.mjs +227 -6
- package/dist/step-definitions-C9kUXgC7.js +1514 -0
- package/dist/step-definitions-dCghpdRo.mjs +1479 -0
- package/dist/stream-broker/_stub.js +79 -79
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-HS0tc6Sa.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-D4xH4Tm-.mjs} +3 -3
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D2z_vRMH.mjs +26 -0
- package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-B_v5r5ya.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-TWCUWhCm.mjs} +2 -2
- package/dist/stream-broker/{hostInit-DgohfEDA.mjs → hostInit-Di9WUNlQ.mjs} +3 -3
- package/dist/stream-broker/index.js +60 -3
- package/dist/stream-broker/index.mjs +60 -3
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/dist/{worker-protocol-DGIt_waM.mjs → worker-protocol-CyVJTZEO.mjs} +1 -0
- package/dist/{worker-protocol-DkL6GDxe.js → worker-protocol-PP4jKHHJ.js} +1 -0
- package/embed-dist/assets/{MaskShapeCanvas-DI4BY7W2-CA2Hd6xx.js → MaskShapeCanvas-DI4BY7W2-Ca93F1js.js} +1 -1
- package/embed-dist/assets/{MotionZonesSettings-NcxxQN8r-DUN1VeC7.js → MotionZonesSettings-NcxxQN8r-CDqgb-WA.js} +1 -1
- package/embed-dist/assets/{PrivacyMaskSettings-APgPLF7p-BqZIAU5s.js → PrivacyMaskSettings-APgPLF7p-BlxPhY_w.js} +1 -1
- package/embed-dist/assets/index-B23riUw8.js +81 -0
- package/embed-dist/assets/index-Bmpl9O1K.css +2 -0
- package/embed-dist/index.html +2 -2
- package/package.json +1 -1
- package/python/inference_pool.py +11 -1
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B3gTdHEh.mjs +0 -26
- package/embed-dist/assets/index-CC06JBcl.css +0 -2
- package/embed-dist/assets/index-CMkYypxB.js +0 -81
|
@@ -4286,6 +4286,14 @@ function object(shape, params) {
|
|
|
4286
4286
|
...normalizeParams(params)
|
|
4287
4287
|
});
|
|
4288
4288
|
}
|
|
4289
|
+
function looseObject(shape, params) {
|
|
4290
|
+
return new ZodObject({
|
|
4291
|
+
type: "object",
|
|
4292
|
+
shape,
|
|
4293
|
+
catchall: unknown(),
|
|
4294
|
+
...normalizeParams(params)
|
|
4295
|
+
});
|
|
4296
|
+
}
|
|
4289
4297
|
var ZodUnion = /*@__PURE__*/ $constructor("ZodUnion", (inst, def) => {
|
|
4290
4298
|
$ZodUnion.init(inst, def);
|
|
4291
4299
|
ZodType.init(inst, def);
|
|
@@ -4627,7 +4635,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4627
4635
|
return inst;
|
|
4628
4636
|
}
|
|
4629
4637
|
//#endregion
|
|
4630
|
-
//#region ../types/dist/sleep-
|
|
4638
|
+
//#region ../types/dist/sleep-DkhOVOjW.mjs
|
|
4631
4639
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4632
4640
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4633
4641
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -5037,10 +5045,43 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
5037
5045
|
EventCategory["EnrichmentEmbeddingStored"] = "enrichment.embedding.stored";
|
|
5038
5046
|
EventCategory["EnrichmentSceneStateChanged"] = "enrichment.scene.state-changed";
|
|
5039
5047
|
EventCategory["EnrichmentActivitySummary"] = "enrichment.activity.summary";
|
|
5048
|
+
/**
|
|
5049
|
+
* Unified track-lifecycle event: ONE category carrying `phase:
|
|
5050
|
+
* 'start' | 'update' | 'end'` with a rich, typed
|
|
5051
|
+
* `PipelineAnalyticsTrackLifecyclePayload`. Supersedes the thin
|
|
5052
|
+
* `PipelineAnalyticsTrackStarted` / `PipelineAnalyticsTrackEnded`
|
|
5053
|
+
* pair — a consumer subscribes once and branches on `phase`.
|
|
5054
|
+
*/
|
|
5055
|
+
EventCategory["PipelineAnalyticsTrackLifecycle"] = "pipeline-analytics.track-lifecycle";
|
|
5056
|
+
/**
|
|
5057
|
+
* @deprecated Superseded by {@link PipelineAnalyticsTrackLifecycle}
|
|
5058
|
+
* (`phase:'start'`). Kept as a soft alias — no known subscribers.
|
|
5059
|
+
*/
|
|
5040
5060
|
EventCategory["PipelineAnalyticsTrackStarted"] = "pipeline-analytics.track-started";
|
|
5061
|
+
/**
|
|
5062
|
+
* @deprecated Superseded by {@link PipelineAnalyticsTrackLifecycle}
|
|
5063
|
+
* (`phase:'end'`). Kept as a soft alias — no known subscribers.
|
|
5064
|
+
*/
|
|
5041
5065
|
EventCategory["PipelineAnalyticsTrackEnded"] = "pipeline-analytics.track-ended";
|
|
5042
5066
|
EventCategory["PipelineAnalyticsDetectionEvent"] = "pipeline-analytics.detection-event";
|
|
5043
5067
|
EventCategory["PipelineAnalyticsFrameTracked"] = "pipeline-analytics.frame-tracked";
|
|
5068
|
+
/**
|
|
5069
|
+
* Fired by `addon-post-analysis` whenever a gallery face row changes:
|
|
5070
|
+
* `kind:'buffered'` a new detected face was persisted, `'assigned'` /
|
|
5071
|
+
* `'unassigned'` its identity link changed, `'deleted'` the row was
|
|
5072
|
+
* removed. Telemetry semantics (D8): a lost event only delays a refresh,
|
|
5073
|
+
* never a correctness issue. Payload `PipelineAnalyticsFaceGalleryChangedPayload`.
|
|
5074
|
+
*/
|
|
5075
|
+
EventCategory["PipelineAnalyticsFaceGalleryChanged"] = "pipeline-analytics.face-gallery-changed";
|
|
5076
|
+
/**
|
|
5077
|
+
* Fired by `addon-post-analysis` whenever a gallery plate row changes:
|
|
5078
|
+
* `kind:'buffered'` a new read was persisted (`PlateRecognizer.onTrackEnd`),
|
|
5079
|
+
* `'assigned'` / `'unassigned'` its vehicle link changed
|
|
5080
|
+
* (`PlateGalleryProvider`), `'deleted'` the row was removed. Telemetry
|
|
5081
|
+
* semantics (D8): a lost event only delays a refresh, never a correctness
|
|
5082
|
+
* issue. Payload `PipelineAnalyticsPlateGalleryChangedPayload`.
|
|
5083
|
+
*/
|
|
5084
|
+
EventCategory["PipelineAnalyticsPlateGalleryChanged"] = "pipeline-analytics.plate-gallery-changed";
|
|
5044
5085
|
EventCategory["FrigateLiveEvent"] = "frigate.live-event";
|
|
5045
5086
|
EventCategory["CameraStreamsProfileSlotsChanged"] = "camera-streams.onProfileSlotsChanged";
|
|
5046
5087
|
/**
|
|
@@ -7009,7 +7050,8 @@ var MODEL_FORMATS = [
|
|
|
7009
7050
|
"coreml",
|
|
7010
7051
|
"openvino",
|
|
7011
7052
|
"tflite",
|
|
7012
|
-
"pt"
|
|
7053
|
+
"pt",
|
|
7054
|
+
"gguf"
|
|
7013
7055
|
];
|
|
7014
7056
|
/**
|
|
7015
7057
|
* Multi-file format payload.
|
|
@@ -7053,7 +7095,8 @@ var ModelFormatsSchema = object({
|
|
|
7053
7095
|
coreml: ModelFormatEntrySchema.optional(),
|
|
7054
7096
|
openvino: ModelFormatEntrySchema.optional(),
|
|
7055
7097
|
tflite: ModelFormatEntrySchema.optional(),
|
|
7056
|
-
pt: ModelFormatEntrySchema.optional()
|
|
7098
|
+
pt: ModelFormatEntrySchema.optional(),
|
|
7099
|
+
gguf: ModelFormatEntrySchema.optional()
|
|
7057
7100
|
});
|
|
7058
7101
|
/**
|
|
7059
7102
|
* Variant-selector grouping axes. Shared by the full `ModelCatalogEntry` and by
|
|
@@ -11347,7 +11390,8 @@ var ModelFormatSchema$1 = _enum([
|
|
|
11347
11390
|
"coreml",
|
|
11348
11391
|
"openvino",
|
|
11349
11392
|
"tflite",
|
|
11350
|
-
"pt"
|
|
11393
|
+
"pt",
|
|
11394
|
+
"gguf"
|
|
11351
11395
|
]);
|
|
11352
11396
|
var PipelineSlotSchema = _enum([
|
|
11353
11397
|
"detector",
|
|
@@ -11711,7 +11755,15 @@ var pipelineExecutorCapability = {
|
|
|
11711
11755
|
image: _instanceof(Uint8Array).optional(),
|
|
11712
11756
|
referenceImage: string().optional(),
|
|
11713
11757
|
deviceId: number().optional(),
|
|
11714
|
-
sessionId: string().optional()
|
|
11758
|
+
sessionId: string().optional(),
|
|
11759
|
+
/**
|
|
11760
|
+
* Execution plane. 'full' (default) runs the whole tree — benchmark,
|
|
11761
|
+
* reference-image, and detail-subtree calls. 'frame' is the live
|
|
11762
|
+
* per-frame dispatch: ONLY root-plane steps run; crop children
|
|
11763
|
+
* (inputClasses ≠ null) are skipped and served per-track via
|
|
11764
|
+
* pipelineRunner.runDetailSubtree (two-plane design).
|
|
11765
|
+
*/
|
|
11766
|
+
plane: _enum(["full", "frame"]).optional()
|
|
11715
11767
|
}), PipelineRunResultBridge, { kind: "mutation" }),
|
|
11716
11768
|
/**
|
|
11717
11769
|
* Batched run — N raw frames packed into one cap call. The provider
|
|
@@ -11908,6 +11960,28 @@ var NativeCropResultSchema = object({
|
|
|
11908
11960
|
width: number().int().positive(),
|
|
11909
11961
|
height: number().int().positive()
|
|
11910
11962
|
});
|
|
11963
|
+
/** Parent detection context passed to `runDetailSubtree` — the crop's
|
|
11964
|
+
* originating detection, in FRAME-space coordinates. Reuses
|
|
11965
|
+
* `NativeCropBboxSchema`'s `{x,y,w,h}` shape (same numeric fields; here
|
|
11966
|
+
* the coordinates are frame-space rather than getNativeCrop's
|
|
11967
|
+
* normalized [0,1] convention). */
|
|
11968
|
+
var DetailParentSchema = object({
|
|
11969
|
+
bbox: NativeCropBboxSchema,
|
|
11970
|
+
className: string()
|
|
11971
|
+
});
|
|
11972
|
+
/** One child-step result from `runDetailSubtree` — an embedding, label,
|
|
11973
|
+
* or refined detection produced by running the crop-subtree on a
|
|
11974
|
+
* single tracked detection. */
|
|
11975
|
+
var DetailResultSchema = object({
|
|
11976
|
+
stepId: string(),
|
|
11977
|
+
className: string(),
|
|
11978
|
+
score: number(),
|
|
11979
|
+
/** FRAME-space bbox (already mapped back from crop space). */
|
|
11980
|
+
bbox: NativeCropBboxSchema.optional(),
|
|
11981
|
+
embedding: string().optional(),
|
|
11982
|
+
label: string().optional(),
|
|
11983
|
+
alignedCropJpeg: string().optional()
|
|
11984
|
+
});
|
|
11911
11985
|
/**
|
|
11912
11986
|
* Per-camera tunable ranges + defaults. Single source of truth used
|
|
11913
11987
|
* by both the Zod data schema (validation + default fallback) and
|
|
@@ -12227,7 +12301,27 @@ var pipelineRunnerCapability = {
|
|
|
12227
12301
|
handle: FrameHandleSchema,
|
|
12228
12302
|
bbox: NativeCropBboxSchema,
|
|
12229
12303
|
maxWidth: number().int().positive().optional()
|
|
12230
|
-
}), NativeCropResultSchema.nullable())
|
|
12304
|
+
}), NativeCropResultSchema.nullable()),
|
|
12305
|
+
/**
|
|
12306
|
+
* Two-plane design: run the DETAIL subtree (crop children —
|
|
12307
|
+
* embedding, classifier, refiner steps whose `inputClasses ≠ null`)
|
|
12308
|
+
* for a single tracked detection. The per-frame plane (`runPipeline`
|
|
12309
|
+
* with `plane: 'frame'`) skips crop children entirely; a track-level
|
|
12310
|
+
* caller invokes this per-track, on its own cadence, instead of on
|
|
12311
|
+
* every frame. Takes either a `frameHandle` (shm lease/session —
|
|
12312
|
+
* preferred, zero-copy) or a `cropJpeg` fallback when the lease/
|
|
12313
|
+
* session backing the frame is already gone. `steps` narrows which
|
|
12314
|
+
* configured children to run (default: all configured children for
|
|
12315
|
+
* `parent.className`). Returns `null` when neither frame source is
|
|
12316
|
+
* resolvable (handle evicted and no cropJpeg fallback supplied).
|
|
12317
|
+
*/
|
|
12318
|
+
runDetailSubtree: method(object({
|
|
12319
|
+
deviceId: number(),
|
|
12320
|
+
frameHandle: FrameHandleSchema.optional(),
|
|
12321
|
+
cropJpeg: string().optional(),
|
|
12322
|
+
parent: DetailParentSchema,
|
|
12323
|
+
steps: array(string()).optional()
|
|
12324
|
+
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" })
|
|
12231
12325
|
}
|
|
12232
12326
|
};
|
|
12233
12327
|
object({
|
|
@@ -12841,6 +12935,140 @@ DeviceType.Camera, method(object({ deviceId: number() }), PtzAutotrackStatusSche
|
|
|
12841
12935
|
deviceId: number(),
|
|
12842
12936
|
status: PtzAutotrackStatusSchema
|
|
12843
12937
|
});
|
|
12938
|
+
/**
|
|
12939
|
+
* scene-monitor — device-scoped reference-region state cap. An operator marks
|
|
12940
|
+
* a rect ROI on a camera frame and names one or more states; the engine
|
|
12941
|
+
* (pipeline-analytics, designated post-processing node) reports which state is
|
|
12942
|
+
* active on an ongoing basis. Two operator-selectable check modes share every-
|
|
12943
|
+
* thing except the comparator: `similarity` (CLIP cosine at the same ROI coords
|
|
12944
|
+
* vs condition-tagged references) and `llm` (vision-LLM judgment over the crop).
|
|
12945
|
+
*
|
|
12946
|
+
* D14 device-config archetype (`deviceConfig.ui.kind:'widget'`) — the framework
|
|
12947
|
+
* derives the device-detail contribution; the provider carries NO hand-written
|
|
12948
|
+
* settings-contribution methods. `status.kind:'push'` — the engine pushes on
|
|
12949
|
+
* every hysteresis flip / availability change; consumers never poll.
|
|
12950
|
+
*/
|
|
12951
|
+
/** Extensible condition tag. Seeded 'day' | 'night'; open by design so more can
|
|
12952
|
+
* be added without a wire break (matching falls back to any-condition refs). */
|
|
12953
|
+
var SceneConditionSchema = string();
|
|
12954
|
+
/** One captured reference — condition-tagged, model-version-gated. `embedding`
|
|
12955
|
+
* is `number[]` (Float32Array does NOT survive MsgPack/UDS). */
|
|
12956
|
+
var SceneReferenceSchema = object({
|
|
12957
|
+
embedding: array(number()),
|
|
12958
|
+
modelId: string(),
|
|
12959
|
+
condition: SceneConditionSchema,
|
|
12960
|
+
capturedAt: number(),
|
|
12961
|
+
thumbnailMediaId: string().optional()
|
|
12962
|
+
});
|
|
12963
|
+
var SceneMonitorStateSchema = object({
|
|
12964
|
+
id: string(),
|
|
12965
|
+
label: string(),
|
|
12966
|
+
references: array(SceneReferenceSchema),
|
|
12967
|
+
textPrompts: array(string()).optional(),
|
|
12968
|
+
referenceCount: number(),
|
|
12969
|
+
currentlyMatched: boolean()
|
|
12970
|
+
});
|
|
12971
|
+
/** Per-mode comparator params in a discriminated union so an `llm` scene never
|
|
12972
|
+
* carries similarity knobs and vice-versa. */
|
|
12973
|
+
var SceneCheckSchema = discriminatedUnion("mode", [object({
|
|
12974
|
+
mode: literal("similarity"),
|
|
12975
|
+
threshold: number().min(0).max(1),
|
|
12976
|
+
hysteresisCount: number().int().positive()
|
|
12977
|
+
}), object({
|
|
12978
|
+
mode: literal("llm"),
|
|
12979
|
+
prompt: string(),
|
|
12980
|
+
profileId: string().optional(),
|
|
12981
|
+
hysteresisCount: number().int().positive()
|
|
12982
|
+
})]);
|
|
12983
|
+
var SceneMonitorSchema = object({
|
|
12984
|
+
id: string(),
|
|
12985
|
+
label: string(),
|
|
12986
|
+
roi: MaskRectShapeSchema,
|
|
12987
|
+
enabled: boolean(),
|
|
12988
|
+
triggerMode: _enum([
|
|
12989
|
+
"periodic",
|
|
12990
|
+
"on-motion",
|
|
12991
|
+
"both"
|
|
12992
|
+
]),
|
|
12993
|
+
checkIntervalSec: number().optional(),
|
|
12994
|
+
check: SceneCheckSchema,
|
|
12995
|
+
states: array(SceneMonitorStateSchema),
|
|
12996
|
+
currentStateId: string().nullable(),
|
|
12997
|
+
lastCheckedAt: number().nullable(),
|
|
12998
|
+
lastConfidence: number().nullable(),
|
|
12999
|
+
currentCondition: SceneConditionSchema.nullable(),
|
|
13000
|
+
availability: _enum(["ok", "unavailable"]),
|
|
13001
|
+
unavailableReason: string().nullable()
|
|
13002
|
+
});
|
|
13003
|
+
var SceneMonitorStatusSchema = object({
|
|
13004
|
+
monitors: array(SceneMonitorSchema),
|
|
13005
|
+
lastFetchedAt: number()
|
|
13006
|
+
});
|
|
13007
|
+
DeviceType.Camera, method(object({ deviceId: number() }), SceneMonitorStatusSchema), method(object({
|
|
13008
|
+
deviceId: number(),
|
|
13009
|
+
label: string(),
|
|
13010
|
+
roi: MaskRectShapeSchema,
|
|
13011
|
+
check: SceneCheckSchema,
|
|
13012
|
+
triggerMode: _enum([
|
|
13013
|
+
"periodic",
|
|
13014
|
+
"on-motion",
|
|
13015
|
+
"both"
|
|
13016
|
+
]).optional(),
|
|
13017
|
+
checkIntervalSec: number().optional()
|
|
13018
|
+
}), SceneMonitorSchema, {
|
|
13019
|
+
kind: "mutation",
|
|
13020
|
+
auth: "admin"
|
|
13021
|
+
}), method(object({
|
|
13022
|
+
deviceId: number(),
|
|
13023
|
+
monitorId: string(),
|
|
13024
|
+
patch: object({
|
|
13025
|
+
label: string().optional(),
|
|
13026
|
+
roi: MaskRectShapeSchema.optional(),
|
|
13027
|
+
enabled: boolean().optional(),
|
|
13028
|
+
triggerMode: _enum([
|
|
13029
|
+
"periodic",
|
|
13030
|
+
"on-motion",
|
|
13031
|
+
"both"
|
|
13032
|
+
]).optional(),
|
|
13033
|
+
checkIntervalSec: number().optional(),
|
|
13034
|
+
check: SceneCheckSchema.optional()
|
|
13035
|
+
})
|
|
13036
|
+
}), _void(), {
|
|
13037
|
+
kind: "mutation",
|
|
13038
|
+
auth: "admin"
|
|
13039
|
+
}), method(object({
|
|
13040
|
+
deviceId: number(),
|
|
13041
|
+
monitorId: string()
|
|
13042
|
+
}), _void(), {
|
|
13043
|
+
kind: "mutation",
|
|
13044
|
+
auth: "admin"
|
|
13045
|
+
}), method(object({
|
|
13046
|
+
deviceId: number(),
|
|
13047
|
+
monitorId: string(),
|
|
13048
|
+
stateId: string().optional(),
|
|
13049
|
+
label: string().optional(),
|
|
13050
|
+
condition: SceneConditionSchema.optional()
|
|
13051
|
+
}), object({
|
|
13052
|
+
stateId: string(),
|
|
13053
|
+
referenceCount: number()
|
|
13054
|
+
}), {
|
|
13055
|
+
kind: "mutation",
|
|
13056
|
+
auth: "admin"
|
|
13057
|
+
}), method(object({
|
|
13058
|
+
deviceId: number(),
|
|
13059
|
+
monitorId: string(),
|
|
13060
|
+
stateId: string(),
|
|
13061
|
+
index: number()
|
|
13062
|
+
}), _void(), {
|
|
13063
|
+
kind: "mutation",
|
|
13064
|
+
auth: "admin"
|
|
13065
|
+
}), method(object({
|
|
13066
|
+
deviceId: number(),
|
|
13067
|
+
monitorId: string()
|
|
13068
|
+
}), _void(), {
|
|
13069
|
+
kind: "mutation",
|
|
13070
|
+
auth: "admin"
|
|
13071
|
+
});
|
|
12844
13072
|
object({
|
|
12845
13073
|
/** Whether the script is currently executing. */
|
|
12846
13074
|
isRunning: boolean(),
|
|
@@ -13935,7 +14163,12 @@ var NotificationRuleConditionsSchema = object({
|
|
|
13935
14163
|
clipDescription: object({
|
|
13936
14164
|
text: string().min(1),
|
|
13937
14165
|
minSimilarity: number().min(0).max(1)
|
|
13938
|
-
}).optional()
|
|
14166
|
+
}).optional(),
|
|
14167
|
+
/** Match events whose recognized-entity label (face identity name or plate
|
|
14168
|
+
* vehicle name, propagated onto `event.data.label`) is one of these values.
|
|
14169
|
+
* Empty/absent → unaffected (back-compat). Enables "notify me when <named
|
|
14170
|
+
* vehicle/person> is seen". */
|
|
14171
|
+
labels: array(string()).readonly().optional()
|
|
13939
14172
|
});
|
|
13940
14173
|
var NotificationRuleTemplateSchema = object({
|
|
13941
14174
|
title: string(),
|
|
@@ -14278,11 +14511,19 @@ method(object({
|
|
|
14278
14511
|
* login page needs NO change.
|
|
14279
14512
|
*
|
|
14280
14513
|
* - `widget` — a Module-Federation widget the login page mounts (via
|
|
14281
|
-
* `loadRemoteBundle`) for an in-page ceremony.
|
|
14282
|
-
*
|
|
14283
|
-
*
|
|
14284
|
-
*
|
|
14285
|
-
*
|
|
14514
|
+
* `loadRemoteBundle`) for an in-page ceremony. `auth.listLoginMethods`
|
|
14515
|
+
* stamps a public `bundleUrl` from `addonId` + `bundle`. Generic
|
|
14516
|
+
* mechanism kept for future use; no shipped addon uses it on the login
|
|
14517
|
+
* page (the passkey ceremony below runs natively in the shell instead).
|
|
14518
|
+
*
|
|
14519
|
+
* - `passkey` — a declarative WebAuthn ceremony the shell renders
|
|
14520
|
+
* natively (`@simplewebauthn/browser` lives in `addon-admin-ui`, not in
|
|
14521
|
+
* a remotely-loaded bundle). Carries the addon's effective `rpId` /
|
|
14522
|
+
* `origin` (from its `resolveRpID()` / `resolveOrigin()`) so the shell
|
|
14523
|
+
* can gate visibility (IP-literal origin, hostname/rpId mismatch) WITHOUT
|
|
14524
|
+
* fetching any remote code pre-auth. Contribution stays unconditional —
|
|
14525
|
+
* enrollment state is never leaked pre-auth; visibility is a shell
|
|
14526
|
+
* decision.
|
|
14286
14527
|
*
|
|
14287
14528
|
* Every contribution carries a `stage`:
|
|
14288
14529
|
* - `primary` — shown on the first credentials screen (OIDC /
|
|
@@ -14296,30 +14537,45 @@ method(object({
|
|
|
14296
14537
|
*/
|
|
14297
14538
|
/** When a login method renders in the two-phase login flow. */
|
|
14298
14539
|
var LoginStageEnum = _enum(["primary", "second-factor"]);
|
|
14299
|
-
/** One login-method contribution — redirect button
|
|
14300
|
-
var LoginMethodContributionSchema = discriminatedUnion("kind", [
|
|
14301
|
-
|
|
14302
|
-
|
|
14303
|
-
|
|
14304
|
-
|
|
14305
|
-
|
|
14306
|
-
|
|
14307
|
-
|
|
14308
|
-
|
|
14309
|
-
|
|
14310
|
-
|
|
14311
|
-
|
|
14312
|
-
|
|
14313
|
-
|
|
14314
|
-
|
|
14315
|
-
|
|
14316
|
-
|
|
14317
|
-
|
|
14318
|
-
|
|
14319
|
-
|
|
14320
|
-
|
|
14321
|
-
|
|
14322
|
-
|
|
14540
|
+
/** One login-method contribution — redirect button, pre-auth widget, or native passkey ceremony. */
|
|
14541
|
+
var LoginMethodContributionSchema = discriminatedUnion("kind", [
|
|
14542
|
+
object({
|
|
14543
|
+
kind: literal("redirect"),
|
|
14544
|
+
/** Stable id within the login-method set (e.g. `auth-oidc/google`). */
|
|
14545
|
+
id: string(),
|
|
14546
|
+
/** Operator-facing button label. */
|
|
14547
|
+
label: string(),
|
|
14548
|
+
/** lucide-react icon name. */
|
|
14549
|
+
icon: string().optional(),
|
|
14550
|
+
/** Addon-owned HTTP route the button navigates to (GET). */
|
|
14551
|
+
startUrl: string(),
|
|
14552
|
+
stage: LoginStageEnum
|
|
14553
|
+
}),
|
|
14554
|
+
object({
|
|
14555
|
+
kind: literal("widget"),
|
|
14556
|
+
/** Stable id within the login-method set (e.g. `auth-webauthn/passkey-login`). */
|
|
14557
|
+
id: string(),
|
|
14558
|
+
/** Owning addon id — drives the public bundle URL + the MF namespace. */
|
|
14559
|
+
addonId: string(),
|
|
14560
|
+
/** Bundle filename inside the addon's dist dir (`remoteEntry.js`). */
|
|
14561
|
+
bundle: string(),
|
|
14562
|
+
/** MF remote descriptor — `{ remoteName, exposedModule, componentKey }`. */
|
|
14563
|
+
remote: WidgetRemoteSchema,
|
|
14564
|
+
stage: LoginStageEnum
|
|
14565
|
+
}),
|
|
14566
|
+
object({
|
|
14567
|
+
kind: literal("passkey"),
|
|
14568
|
+
/** Stable id within the login-method set (e.g. `auth-webauthn/passkey-direct-login`). */
|
|
14569
|
+
id: string(),
|
|
14570
|
+
/** Operator-facing button label. */
|
|
14571
|
+
label: string(),
|
|
14572
|
+
stage: LoginStageEnum,
|
|
14573
|
+
/** Effective WebAuthn RP ID (`resolveRpID()`) — the shell gates visibility on it. */
|
|
14574
|
+
rpId: string(),
|
|
14575
|
+
/** Effective expected origin (`resolveOrigin()`), null when unconfigured. */
|
|
14576
|
+
origin: string().nullable()
|
|
14577
|
+
})
|
|
14578
|
+
]);
|
|
14323
14579
|
method(_void(), array(LoginMethodContributionSchema).readonly());
|
|
14324
14580
|
/**
|
|
14325
14581
|
* Orchestrator-side destination metadata. The orchestrator computes
|
|
@@ -16199,14 +16455,14 @@ var TargetKindCapsSchema = object({
|
|
|
16199
16455
|
* the union is large and not meant for runtime validation here; the exported
|
|
16200
16456
|
* `TargetKind` type re-tightens `configSchema` to `ConfigUISchema`.
|
|
16201
16457
|
*/
|
|
16202
|
-
var ConfigSchemaPassthrough = unknown();
|
|
16458
|
+
var ConfigSchemaPassthrough$1 = unknown();
|
|
16203
16459
|
var TargetKindSchema = object({
|
|
16204
16460
|
kind: string(),
|
|
16205
16461
|
label: string(),
|
|
16206
16462
|
icon: string(),
|
|
16207
16463
|
/** Stamped by each provider so the concat-fanned catalog stays routable. */
|
|
16208
16464
|
addonId: string(),
|
|
16209
|
-
configSchema: ConfigSchemaPassthrough,
|
|
16465
|
+
configSchema: ConfigSchemaPassthrough$1,
|
|
16210
16466
|
supportsDiscovery: boolean(),
|
|
16211
16467
|
caps: TargetKindCapsSchema
|
|
16212
16468
|
});
|
|
@@ -16259,6 +16515,298 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
16259
16515
|
enabled: boolean()
|
|
16260
16516
|
}), _void(), { kind: "mutation" });
|
|
16261
16517
|
/**
|
|
16518
|
+
* Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
|
|
16519
|
+
* surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
|
|
16520
|
+
* caps stay wire-compatible without a circular cap→cap import.
|
|
16521
|
+
*
|
|
16522
|
+
* Errors are a discriminated-union RESULT, never thrown: the shape survives
|
|
16523
|
+
* every transport tier structurally, and failed calls still write usage rows.
|
|
16524
|
+
* Token counts only in v1 — no costUsd (operator decision, 2026-07-15).
|
|
16525
|
+
*/
|
|
16526
|
+
var LlmUsageSchema = object({
|
|
16527
|
+
inputTokens: number(),
|
|
16528
|
+
outputTokens: number()
|
|
16529
|
+
});
|
|
16530
|
+
var LlmErrorCodeSchema = _enum([
|
|
16531
|
+
"timeout",
|
|
16532
|
+
"rate-limited",
|
|
16533
|
+
"auth",
|
|
16534
|
+
"refusal",
|
|
16535
|
+
"bad-request",
|
|
16536
|
+
"unavailable",
|
|
16537
|
+
"no-profile",
|
|
16538
|
+
"budget-exceeded",
|
|
16539
|
+
"adapter-error"
|
|
16540
|
+
]);
|
|
16541
|
+
var LlmGenerateResultSchema = discriminatedUnion("ok", [object({
|
|
16542
|
+
ok: literal(true),
|
|
16543
|
+
text: string(),
|
|
16544
|
+
model: string(),
|
|
16545
|
+
usage: LlmUsageSchema,
|
|
16546
|
+
truncated: boolean(),
|
|
16547
|
+
latencyMs: number()
|
|
16548
|
+
}), object({
|
|
16549
|
+
ok: literal(false),
|
|
16550
|
+
code: LlmErrorCodeSchema,
|
|
16551
|
+
message: string(),
|
|
16552
|
+
retryAfterMs: number().optional()
|
|
16553
|
+
})]);
|
|
16554
|
+
/**
|
|
16555
|
+
* `Uint8Array` is the sanctioned binary convention — superjson + the UDS
|
|
16556
|
+
* MsgPack channel round-trip typed arrays (embedding-encoder.cap.ts:29,
|
|
16557
|
+
* notification-output.cap.ts:27-31 precedents).
|
|
16558
|
+
*/
|
|
16559
|
+
var LlmImageSchema = object({
|
|
16560
|
+
bytes: _instanceof(Uint8Array),
|
|
16561
|
+
mimeType: string()
|
|
16562
|
+
});
|
|
16563
|
+
var LlmGenerateBaseInputSchema = object({
|
|
16564
|
+
/** Collection routing (the notification-output posture). */
|
|
16565
|
+
addonId: string().optional(),
|
|
16566
|
+
/** Explicit profile; else the resolution chain (spec §3). */
|
|
16567
|
+
profileId: string().optional(),
|
|
16568
|
+
/** MANDATORY usage tag: 'ai-summary', 'notifier-rules', 'adhoc-ui', … */
|
|
16569
|
+
consumer: string(),
|
|
16570
|
+
system: string().optional(),
|
|
16571
|
+
/** v1: single-turn. `messages[]` is a v2 additive field. */
|
|
16572
|
+
prompt: string(),
|
|
16573
|
+
/** Structured output — adapter-mapped (response_format / forced tool / responseSchema). */
|
|
16574
|
+
jsonSchema: record(string(), unknown()).optional(),
|
|
16575
|
+
/** Per-call override of the profile default. */
|
|
16576
|
+
maxTokens: number().int().positive().optional(),
|
|
16577
|
+
temperature: number().optional()
|
|
16578
|
+
});
|
|
16579
|
+
/**
|
|
16580
|
+
* `llm-runtime` — node-side managed llama.cpp executor (spec §4). Registered
|
|
16581
|
+
* on EVERY node where `addon-ai` is installed; the hub `llm` provider reaches
|
|
16582
|
+
* a specific node's runtime with `nodePin(profile.runtime.nodeId)` — normal
|
|
16583
|
+
* cap routing, zero bespoke plumbing. `internal: true`: the operator reaches
|
|
16584
|
+
* this only through the `llm` cap's methods.
|
|
16585
|
+
*
|
|
16586
|
+
* One running llama-server child per node in v1 (models are RAM-heavy).
|
|
16587
|
+
* Resource ceiling = llama-server flags + idleStopMinutes ONLY (no RSS
|
|
16588
|
+
* watchdog — operator decision #3).
|
|
16589
|
+
*/
|
|
16590
|
+
var ManagedModelRefSchema = discriminatedUnion("kind", [
|
|
16591
|
+
object({
|
|
16592
|
+
kind: literal("catalog"),
|
|
16593
|
+
catalogId: string()
|
|
16594
|
+
}),
|
|
16595
|
+
object({
|
|
16596
|
+
kind: literal("url"),
|
|
16597
|
+
url: string(),
|
|
16598
|
+
sha256: string().optional()
|
|
16599
|
+
}),
|
|
16600
|
+
object({
|
|
16601
|
+
kind: literal("path"),
|
|
16602
|
+
path: string()
|
|
16603
|
+
})
|
|
16604
|
+
]);
|
|
16605
|
+
var ManagedRuntimeConfigSchema = object({
|
|
16606
|
+
/** WHERE the runtime lives — hub or any agent. */
|
|
16607
|
+
nodeId: string(),
|
|
16608
|
+
/** Closed for v1; 'ollama' is a v2 candidate. */
|
|
16609
|
+
engine: _enum(["llama-cpp"]),
|
|
16610
|
+
model: ManagedModelRefSchema,
|
|
16611
|
+
contextSize: number().int().default(4096),
|
|
16612
|
+
/** 0 = CPU-only. */
|
|
16613
|
+
gpuLayers: number().int().default(0),
|
|
16614
|
+
/** Default: cpus-2, clamped ≥1 (resolved node-side). */
|
|
16615
|
+
threads: number().int().optional(),
|
|
16616
|
+
/** Concurrent slots. */
|
|
16617
|
+
parallel: number().int().default(1),
|
|
16618
|
+
/** Else lazy: first generate boots it. */
|
|
16619
|
+
autoStart: boolean().default(false),
|
|
16620
|
+
/** 0 = never; frees RAM after quiet periods. */
|
|
16621
|
+
idleStopMinutes: number().int().default(30)
|
|
16622
|
+
});
|
|
16623
|
+
var LlmRuntimeStatusSchema = object({
|
|
16624
|
+
/** Status is ALWAYS node-qualified. */
|
|
16625
|
+
nodeId: string(),
|
|
16626
|
+
state: _enum([
|
|
16627
|
+
"stopped",
|
|
16628
|
+
"downloading",
|
|
16629
|
+
"starting",
|
|
16630
|
+
"ready",
|
|
16631
|
+
"crashed",
|
|
16632
|
+
"failed"
|
|
16633
|
+
]),
|
|
16634
|
+
pid: number().optional(),
|
|
16635
|
+
port: number().optional(),
|
|
16636
|
+
modelPath: string().optional(),
|
|
16637
|
+
modelId: string().optional(),
|
|
16638
|
+
downloadProgress: number().min(0).max(1).optional(),
|
|
16639
|
+
lastError: string().optional(),
|
|
16640
|
+
crashesInWindow: number(),
|
|
16641
|
+
/** Child RSS (sampled best-effort). */
|
|
16642
|
+
memoryBytes: number().optional(),
|
|
16643
|
+
vramBytes: number().optional()
|
|
16644
|
+
});
|
|
16645
|
+
var LlmNodeModelSchema = object({
|
|
16646
|
+
file: string(),
|
|
16647
|
+
sizeBytes: number(),
|
|
16648
|
+
catalogId: string().optional(),
|
|
16649
|
+
installedAt: number().optional()
|
|
16650
|
+
});
|
|
16651
|
+
var LlmRuntimeDiskUsageSchema = object({
|
|
16652
|
+
nodeId: string(),
|
|
16653
|
+
modelsBytes: number(),
|
|
16654
|
+
freeBytes: number().optional()
|
|
16655
|
+
});
|
|
16656
|
+
method(LlmGenerateBaseInputSchema.extend({
|
|
16657
|
+
images: array(LlmImageSchema).optional(),
|
|
16658
|
+
runtime: ManagedRuntimeConfigSchema,
|
|
16659
|
+
/** The managed profile's timeout, threaded by the hub provider. */
|
|
16660
|
+
timeoutMs: number().int().positive().optional()
|
|
16661
|
+
}), LlmGenerateResultSchema, { kind: "mutation" }), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
16662
|
+
kind: "mutation",
|
|
16663
|
+
auth: "admin"
|
|
16664
|
+
}), method(object({}), _void(), {
|
|
16665
|
+
kind: "mutation",
|
|
16666
|
+
auth: "admin"
|
|
16667
|
+
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
16668
|
+
kind: "mutation",
|
|
16669
|
+
auth: "admin"
|
|
16670
|
+
}), method(object({ file: string() }), _void(), {
|
|
16671
|
+
kind: "mutation",
|
|
16672
|
+
auth: "admin"
|
|
16673
|
+
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
16674
|
+
/**
|
|
16675
|
+
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
16676
|
+
* methods concat-fan across providers; single-row methods route to ONE
|
|
16677
|
+
* provider by the `addonId` in the call input (the notification-output
|
|
16678
|
+
* posture, notification-output.cap.ts:215-250). Provided by `addon-ai`
|
|
16679
|
+
* (hub-placed); the cap stays open for future providers.
|
|
16680
|
+
*
|
|
16681
|
+
* Profiles are ROWS (data), not addons: one row = one usable model endpoint.
|
|
16682
|
+
* `apiKey` is a password field — providers REDACT it on read and merge on
|
|
16683
|
+
* write; a stored key NEVER round-trips to a client.
|
|
16684
|
+
*/
|
|
16685
|
+
var LlmProfileKindSchema = _enum([
|
|
16686
|
+
"openai-compatible",
|
|
16687
|
+
"openai",
|
|
16688
|
+
"anthropic",
|
|
16689
|
+
"google",
|
|
16690
|
+
"managed-local"
|
|
16691
|
+
]);
|
|
16692
|
+
var LlmProfileSchema = object({
|
|
16693
|
+
id: string(),
|
|
16694
|
+
name: string(),
|
|
16695
|
+
kind: LlmProfileKindSchema,
|
|
16696
|
+
/** Stamped by the provider — keeps the fanned catalog routable. */
|
|
16697
|
+
addonId: string(),
|
|
16698
|
+
enabled: boolean(),
|
|
16699
|
+
/** Vendor model id, or the managed runtime's loaded model. */
|
|
16700
|
+
model: string(),
|
|
16701
|
+
/** Required for openai-compatible; override for cloud kinds. */
|
|
16702
|
+
baseUrl: string().optional(),
|
|
16703
|
+
/** ConfigUISchema type:'password' — never round-trips (spec §5). */
|
|
16704
|
+
apiKey: string().optional(),
|
|
16705
|
+
supportsVision: boolean(),
|
|
16706
|
+
temperature: number().min(0).max(2).optional(),
|
|
16707
|
+
maxTokens: number().int().positive().optional(),
|
|
16708
|
+
timeoutMs: number().int().positive().default(6e4),
|
|
16709
|
+
extraHeaders: record(string(), string()).optional(),
|
|
16710
|
+
/** kind === 'managed-local' only (spec §4). */
|
|
16711
|
+
runtime: ManagedRuntimeConfigSchema.optional()
|
|
16712
|
+
});
|
|
16713
|
+
/** ConfigUISchema tree passed through untyped on the wire (the
|
|
16714
|
+
* notification-output `ConfigSchemaPassthrough` precedent at
|
|
16715
|
+
* notification-output.cap.ts:151); the exported TS type re-tightens it. */
|
|
16716
|
+
var ConfigSchemaPassthrough = unknown();
|
|
16717
|
+
var LlmProfileKindDescriptorSchema = object({
|
|
16718
|
+
kind: LlmProfileKindSchema,
|
|
16719
|
+
label: string(),
|
|
16720
|
+
icon: string(),
|
|
16721
|
+
/** Stamped by each provider so the concat-fanned catalog stays routable. */
|
|
16722
|
+
addonId: string(),
|
|
16723
|
+
configSchema: ConfigSchemaPassthrough
|
|
16724
|
+
});
|
|
16725
|
+
var LlmDefaultSelectorSchema = union([object({ consumer: string() }), object({ purpose: _enum(["text", "vision"]) })]);
|
|
16726
|
+
var LlmDefaultSchema = object({
|
|
16727
|
+
selector: LlmDefaultSelectorSchema,
|
|
16728
|
+
profileId: string()
|
|
16729
|
+
});
|
|
16730
|
+
/** Server-side rollup row — getUsage never dumps raw call rows (spec §6). */
|
|
16731
|
+
var LlmUsageRollupSchema = object({
|
|
16732
|
+
day: string(),
|
|
16733
|
+
consumer: string(),
|
|
16734
|
+
profileId: string(),
|
|
16735
|
+
calls: number(),
|
|
16736
|
+
okCalls: number(),
|
|
16737
|
+
errorCalls: number(),
|
|
16738
|
+
inputTokens: number(),
|
|
16739
|
+
outputTokens: number(),
|
|
16740
|
+
avgLatencyMs: number()
|
|
16741
|
+
});
|
|
16742
|
+
/** LLM-facing view over the reused ModelCatalogEntry mechanism (spec §4.2). */
|
|
16743
|
+
var ManagedModelCatalogEntrySchema = object({
|
|
16744
|
+
id: string(),
|
|
16745
|
+
label: string(),
|
|
16746
|
+
family: string(),
|
|
16747
|
+
purpose: _enum(["text", "vision"]),
|
|
16748
|
+
url: string(),
|
|
16749
|
+
sha256: string(),
|
|
16750
|
+
sizeBytes: number(),
|
|
16751
|
+
quantization: string(),
|
|
16752
|
+
/** Load-time guidance shown in the picker. */
|
|
16753
|
+
minRamBytes: number(),
|
|
16754
|
+
contextSizeDefault: number().int(),
|
|
16755
|
+
/** Vision models: companion projector file. */
|
|
16756
|
+
mmprojUrl: string().optional()
|
|
16757
|
+
});
|
|
16758
|
+
var LlmRuntimeNodeSchema = object({
|
|
16759
|
+
nodeId: string(),
|
|
16760
|
+
reachable: boolean(),
|
|
16761
|
+
status: LlmRuntimeStatusSchema.optional(),
|
|
16762
|
+
disk: LlmRuntimeDiskUsageSchema.optional(),
|
|
16763
|
+
error: string().optional()
|
|
16764
|
+
});
|
|
16765
|
+
var GenerateVisionInputSchema = LlmGenerateBaseInputSchema.extend({ images: array(LlmImageSchema).min(1) });
|
|
16766
|
+
var ProfileRefInputSchema = object({
|
|
16767
|
+
addonId: string(),
|
|
16768
|
+
profileId: string()
|
|
16769
|
+
});
|
|
16770
|
+
method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
|
|
16771
|
+
kind: "mutation",
|
|
16772
|
+
auth: "admin"
|
|
16773
|
+
}), method(ProfileRefInputSchema, _void(), {
|
|
16774
|
+
kind: "mutation",
|
|
16775
|
+
auth: "admin"
|
|
16776
|
+
}), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
|
|
16777
|
+
kind: "mutation",
|
|
16778
|
+
auth: "admin"
|
|
16779
|
+
}), method(ProfileRefInputSchema, array(string())), method(object({}), array(LlmDefaultSchema)), method(object({
|
|
16780
|
+
selector: LlmDefaultSelectorSchema,
|
|
16781
|
+
profileId: string().nullable()
|
|
16782
|
+
}), _void(), {
|
|
16783
|
+
kind: "mutation",
|
|
16784
|
+
auth: "admin"
|
|
16785
|
+
}), method(object({
|
|
16786
|
+
since: number().optional(),
|
|
16787
|
+
until: number().optional(),
|
|
16788
|
+
consumer: string().optional(),
|
|
16789
|
+
profileId: string().optional()
|
|
16790
|
+
}), array(LlmUsageRollupSchema)), method(object({}), array(ManagedModelCatalogEntrySchema)), method(object({}), array(LlmRuntimeNodeSchema)), method(object({ nodeId: string() }), array(LlmNodeModelSchema)), method(object({
|
|
16791
|
+
nodeId: string(),
|
|
16792
|
+
model: ManagedModelRefSchema
|
|
16793
|
+
}), _void(), {
|
|
16794
|
+
kind: "mutation",
|
|
16795
|
+
auth: "admin"
|
|
16796
|
+
}), method(object({
|
|
16797
|
+
nodeId: string(),
|
|
16798
|
+
file: string()
|
|
16799
|
+
}), _void(), {
|
|
16800
|
+
kind: "mutation",
|
|
16801
|
+
auth: "admin"
|
|
16802
|
+
}), method(ProfileRefInputSchema, LlmRuntimeStatusSchema), method(ProfileRefInputSchema, LlmRuntimeStatusSchema, {
|
|
16803
|
+
kind: "mutation",
|
|
16804
|
+
auth: "admin"
|
|
16805
|
+
}), method(ProfileRefInputSchema, _void(), {
|
|
16806
|
+
kind: "mutation",
|
|
16807
|
+
auth: "admin"
|
|
16808
|
+
});
|
|
16809
|
+
/**
|
|
16262
16810
|
* Zod schemas for persisted record types.
|
|
16263
16811
|
*
|
|
16264
16812
|
* These schemas serve as the single source of truth for types that are
|
|
@@ -16474,6 +17022,10 @@ var TrackSchema = object({
|
|
|
16474
17022
|
snapshots: array(TrackSnapshotSchema).readonly(),
|
|
16475
17023
|
/** Deduplicated zones the track has entered at least once. */
|
|
16476
17024
|
zonesVisited: array(string()).readonly(),
|
|
17025
|
+
/** Deduplicated set of detector classes observed for this track over its
|
|
17026
|
+
* life (a track may be reclassified, e.g. person→vehicle). Absent on
|
|
17027
|
+
* legacy rows written before class accumulation shipped. */
|
|
17028
|
+
classes: array(string()).readonly().optional(),
|
|
16477
17029
|
/** Cumulative normalized distance travelled (0..1 units = full frame width). */
|
|
16478
17030
|
totalDistance: number(),
|
|
16479
17031
|
state: TrackStateSchema,
|
|
@@ -16635,7 +17187,7 @@ var KeyEventSchema = object({
|
|
|
16635
17187
|
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
16636
17188
|
windowMs: number().optional()
|
|
16637
17189
|
});
|
|
16638
|
-
|
|
17190
|
+
object({
|
|
16639
17191
|
trackId: string(),
|
|
16640
17192
|
className: string(),
|
|
16641
17193
|
confidence: number(),
|
|
@@ -16643,6 +17195,23 @@ var TrackedDetectionSchema = object({
|
|
|
16643
17195
|
zones: array(string()).readonly(),
|
|
16644
17196
|
state: TrackStateSchema
|
|
16645
17197
|
});
|
|
17198
|
+
var OverlayDetectionSchema = looseObject({
|
|
17199
|
+
id: string(),
|
|
17200
|
+
kind: _enum(["first-level", "detail"]),
|
|
17201
|
+
macroClass: string(),
|
|
17202
|
+
score: number(),
|
|
17203
|
+
bbox: object({
|
|
17204
|
+
x: number(),
|
|
17205
|
+
y: number(),
|
|
17206
|
+
width: number(),
|
|
17207
|
+
height: number()
|
|
17208
|
+
}),
|
|
17209
|
+
labels: array(looseObject({
|
|
17210
|
+
label: string(),
|
|
17211
|
+
score: number()
|
|
17212
|
+
})).readonly(),
|
|
17213
|
+
parentId: string().optional()
|
|
17214
|
+
});
|
|
16646
17215
|
var ScoredObjectEventSchema = ObjectEventSchema.extend({ score: number() });
|
|
16647
17216
|
var SearchObjectEventsInput = object({
|
|
16648
17217
|
text: string(),
|
|
@@ -16653,6 +17222,20 @@ var SearchObjectEventsInput = object({
|
|
|
16653
17222
|
limit: number().default(50),
|
|
16654
17223
|
minScore: number().min(0).max(1).default(.2)
|
|
16655
17224
|
});
|
|
17225
|
+
var TrackCascadeCountsSchema = object({
|
|
17226
|
+
/** Persisted track roots deleted (authoritative). */
|
|
17227
|
+
tracks: number().int(),
|
|
17228
|
+
/** Object events removed with their tracks (best-effort; see note above). */
|
|
17229
|
+
events: number().int(),
|
|
17230
|
+
/** Track/face/plate-owned media removed (best-effort). Never identity media. */
|
|
17231
|
+
media: number().int(),
|
|
17232
|
+
/** Unassigned (non-enrolled) face reads removed (best-effort). */
|
|
17233
|
+
faces: number().int(),
|
|
17234
|
+
/** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
|
|
17235
|
+
plates: number().int(),
|
|
17236
|
+
/** Per-track CLIP search vectors removed (best-effort). */
|
|
17237
|
+
embeddings: number().int()
|
|
17238
|
+
});
|
|
16656
17239
|
DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).readonly()), method(object({
|
|
16657
17240
|
deviceId: number(),
|
|
16658
17241
|
trackId: string()
|
|
@@ -16684,6 +17267,24 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
16684
17267
|
}), {
|
|
16685
17268
|
kind: "mutation",
|
|
16686
17269
|
auth: "admin"
|
|
17270
|
+
}), method(object({
|
|
17271
|
+
deviceId: number(),
|
|
17272
|
+
cutoffMs: number()
|
|
17273
|
+
}), TrackCascadeCountsSchema, {
|
|
17274
|
+
kind: "mutation",
|
|
17275
|
+
auth: "admin"
|
|
17276
|
+
}), method(object({ deviceId: number() }), TrackCascadeCountsSchema, {
|
|
17277
|
+
kind: "mutation",
|
|
17278
|
+
auth: "admin"
|
|
17279
|
+
}), method(object({
|
|
17280
|
+
deviceId: number(),
|
|
17281
|
+
trackIds: array(string()).min(1)
|
|
17282
|
+
}), object({
|
|
17283
|
+
deleted: number().int(),
|
|
17284
|
+
failed: array(string()).readonly()
|
|
17285
|
+
}), {
|
|
17286
|
+
kind: "mutation",
|
|
17287
|
+
auth: "admin"
|
|
16687
17288
|
}), method(object({
|
|
16688
17289
|
eventId: string(),
|
|
16689
17290
|
kind: MediaFileKindEnum.optional()
|
|
@@ -16692,7 +17293,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
16692
17293
|
timestamp: number(),
|
|
16693
17294
|
frameWidth: number(),
|
|
16694
17295
|
frameHeight: number(),
|
|
16695
|
-
detections: array(
|
|
17296
|
+
detections: array(OverlayDetectionSchema).readonly()
|
|
16696
17297
|
}), object({
|
|
16697
17298
|
deviceId: number(),
|
|
16698
17299
|
trackId: string(),
|
|
@@ -19556,6 +20157,24 @@ DeviceType.Camera, method(object({
|
|
|
19556
20157
|
deviceId: number(),
|
|
19557
20158
|
status: OsdStatusSchema
|
|
19558
20159
|
});
|
|
20160
|
+
var VehicleSchema = object({
|
|
20161
|
+
id: string(),
|
|
20162
|
+
name: string(),
|
|
20163
|
+
sampleCount: number().int().nonnegative(),
|
|
20164
|
+
coverMediaKey: string().optional(),
|
|
20165
|
+
/** Inline base64 of the cover sample's plate crop, resolved from `coverMediaKey`. */
|
|
20166
|
+
coverBase64: string().optional()
|
|
20167
|
+
});
|
|
20168
|
+
var VehicleSampleInfoSchema = object({
|
|
20169
|
+
id: string(),
|
|
20170
|
+
/** The plate text this sample enrolled (self-labeling — no embedding). */
|
|
20171
|
+
text: string(),
|
|
20172
|
+
/** OCR confidence of the enrolled read (0..1). */
|
|
20173
|
+
score: number(),
|
|
20174
|
+
addedAt: number().int(),
|
|
20175
|
+
deviceId: number().int().optional(),
|
|
20176
|
+
base64: string().optional()
|
|
20177
|
+
});
|
|
19559
20178
|
var PlateInfoSchema = object({
|
|
19560
20179
|
plateId: string(),
|
|
19561
20180
|
deviceId: number().int(),
|
|
@@ -19567,6 +20186,16 @@ var PlateInfoSchema = object({
|
|
|
19567
20186
|
score: number(),
|
|
19568
20187
|
/** True when the text was manually corrected (exempt from retention). */
|
|
19569
20188
|
corrected: boolean(),
|
|
20189
|
+
/** Recognized vehicle id when a matcher lookup named this read (SQL NULL → absent). */
|
|
20190
|
+
recognizedVehicleId: string().optional(),
|
|
20191
|
+
/** Resolved vehicle name for `recognizedVehicleId` (UI convenience). */
|
|
20192
|
+
vehicleName: string().optional(),
|
|
20193
|
+
/** True once the read was assigned to a vehicle (enrolled as a sample). */
|
|
20194
|
+
assigned: boolean(),
|
|
20195
|
+
/** keyFrame parity: the plate bbox (pixel space) on the native key frame. */
|
|
20196
|
+
plateBbox: BoundingBoxSchema.optional(),
|
|
20197
|
+
/** keyFrame parity: MediaStore key of the track's native-resolution key frame. */
|
|
20198
|
+
keyFrameMediaKey: string().optional(),
|
|
19570
20199
|
base64: string().optional()
|
|
19571
20200
|
});
|
|
19572
20201
|
var MediaFileLiteSchema = object({
|
|
@@ -19606,6 +20235,48 @@ method(object({
|
|
|
19606
20235
|
}), method(object({ plateId: string() }), _void(), {
|
|
19607
20236
|
kind: "mutation",
|
|
19608
20237
|
auth: "admin"
|
|
20238
|
+
}), method(_void(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
20239
|
+
kind: "mutation",
|
|
20240
|
+
auth: "admin"
|
|
20241
|
+
}), method(object({
|
|
20242
|
+
id: string(),
|
|
20243
|
+
name: string().min(1)
|
|
20244
|
+
}), _void(), {
|
|
20245
|
+
kind: "mutation",
|
|
20246
|
+
auth: "admin"
|
|
20247
|
+
}), method(object({ id: string() }), _void(), {
|
|
20248
|
+
kind: "mutation",
|
|
20249
|
+
auth: "admin"
|
|
20250
|
+
}), method(object({ vehicleId: string() }), array(VehicleSampleInfoSchema).readonly()), method(object({
|
|
20251
|
+
vehicleId: string(),
|
|
20252
|
+
sampleId: string()
|
|
20253
|
+
}), _void(), {
|
|
20254
|
+
kind: "mutation",
|
|
20255
|
+
auth: "admin"
|
|
20256
|
+
}), method(object({
|
|
20257
|
+
plateId: string(),
|
|
20258
|
+
vehicleId: string()
|
|
20259
|
+
}), _void(), {
|
|
20260
|
+
kind: "mutation",
|
|
20261
|
+
auth: "admin"
|
|
20262
|
+
}), method(object({ plateId: string() }), _void(), {
|
|
20263
|
+
kind: "mutation",
|
|
20264
|
+
auth: "admin"
|
|
20265
|
+
}), method(object({
|
|
20266
|
+
plateIds: array(string()).min(1),
|
|
20267
|
+
vehicleId: string()
|
|
20268
|
+
}), object({
|
|
20269
|
+
assigned: number().int(),
|
|
20270
|
+
failed: array(string()).readonly()
|
|
20271
|
+
}), {
|
|
20272
|
+
kind: "mutation",
|
|
20273
|
+
auth: "admin"
|
|
20274
|
+
}), method(object({ plateIds: array(string()).min(1) }), object({
|
|
20275
|
+
unassigned: number().int(),
|
|
20276
|
+
failed: array(string()).readonly()
|
|
20277
|
+
}), {
|
|
20278
|
+
kind: "mutation",
|
|
20279
|
+
auth: "admin"
|
|
19609
20280
|
});
|
|
19610
20281
|
var ModelFormatSchema = _enum(MODEL_FORMATS);
|
|
19611
20282
|
var HwAccelBackendInputSchema = _enum([
|
|
@@ -22184,6 +22855,168 @@ Object.freeze({
|
|
|
22184
22855
|
addonId: null,
|
|
22185
22856
|
access: "create"
|
|
22186
22857
|
},
|
|
22858
|
+
"llm.deleteModel": {
|
|
22859
|
+
capName: "llm",
|
|
22860
|
+
capScope: "system",
|
|
22861
|
+
addonId: null,
|
|
22862
|
+
access: "delete"
|
|
22863
|
+
},
|
|
22864
|
+
"llm.deleteProfile": {
|
|
22865
|
+
capName: "llm",
|
|
22866
|
+
capScope: "system",
|
|
22867
|
+
addonId: null,
|
|
22868
|
+
access: "delete"
|
|
22869
|
+
},
|
|
22870
|
+
"llm.generate": {
|
|
22871
|
+
capName: "llm",
|
|
22872
|
+
capScope: "system",
|
|
22873
|
+
addonId: null,
|
|
22874
|
+
access: "create"
|
|
22875
|
+
},
|
|
22876
|
+
"llm.generateVision": {
|
|
22877
|
+
capName: "llm",
|
|
22878
|
+
capScope: "system",
|
|
22879
|
+
addonId: null,
|
|
22880
|
+
access: "create"
|
|
22881
|
+
},
|
|
22882
|
+
"llm.getDefaults": {
|
|
22883
|
+
capName: "llm",
|
|
22884
|
+
capScope: "system",
|
|
22885
|
+
addonId: null,
|
|
22886
|
+
access: "view"
|
|
22887
|
+
},
|
|
22888
|
+
"llm.getRuntimeStatus": {
|
|
22889
|
+
capName: "llm",
|
|
22890
|
+
capScope: "system",
|
|
22891
|
+
addonId: null,
|
|
22892
|
+
access: "view"
|
|
22893
|
+
},
|
|
22894
|
+
"llm.getUsage": {
|
|
22895
|
+
capName: "llm",
|
|
22896
|
+
capScope: "system",
|
|
22897
|
+
addonId: null,
|
|
22898
|
+
access: "view"
|
|
22899
|
+
},
|
|
22900
|
+
"llm.installModel": {
|
|
22901
|
+
capName: "llm",
|
|
22902
|
+
capScope: "system",
|
|
22903
|
+
addonId: null,
|
|
22904
|
+
access: "create"
|
|
22905
|
+
},
|
|
22906
|
+
"llm.listModelCatalog": {
|
|
22907
|
+
capName: "llm",
|
|
22908
|
+
capScope: "system",
|
|
22909
|
+
addonId: null,
|
|
22910
|
+
access: "view"
|
|
22911
|
+
},
|
|
22912
|
+
"llm.listModels": {
|
|
22913
|
+
capName: "llm",
|
|
22914
|
+
capScope: "system",
|
|
22915
|
+
addonId: null,
|
|
22916
|
+
access: "view"
|
|
22917
|
+
},
|
|
22918
|
+
"llm.listNodeModels": {
|
|
22919
|
+
capName: "llm",
|
|
22920
|
+
capScope: "system",
|
|
22921
|
+
addonId: null,
|
|
22922
|
+
access: "view"
|
|
22923
|
+
},
|
|
22924
|
+
"llm.listProfileKinds": {
|
|
22925
|
+
capName: "llm",
|
|
22926
|
+
capScope: "system",
|
|
22927
|
+
addonId: null,
|
|
22928
|
+
access: "view"
|
|
22929
|
+
},
|
|
22930
|
+
"llm.listProfiles": {
|
|
22931
|
+
capName: "llm",
|
|
22932
|
+
capScope: "system",
|
|
22933
|
+
addonId: null,
|
|
22934
|
+
access: "view"
|
|
22935
|
+
},
|
|
22936
|
+
"llm.listRuntimeNodes": {
|
|
22937
|
+
capName: "llm",
|
|
22938
|
+
capScope: "system",
|
|
22939
|
+
addonId: null,
|
|
22940
|
+
access: "view"
|
|
22941
|
+
},
|
|
22942
|
+
"llm.setDefault": {
|
|
22943
|
+
capName: "llm",
|
|
22944
|
+
capScope: "system",
|
|
22945
|
+
addonId: null,
|
|
22946
|
+
access: "create"
|
|
22947
|
+
},
|
|
22948
|
+
"llm.startRuntime": {
|
|
22949
|
+
capName: "llm",
|
|
22950
|
+
capScope: "system",
|
|
22951
|
+
addonId: null,
|
|
22952
|
+
access: "create"
|
|
22953
|
+
},
|
|
22954
|
+
"llm.stopRuntime": {
|
|
22955
|
+
capName: "llm",
|
|
22956
|
+
capScope: "system",
|
|
22957
|
+
addonId: null,
|
|
22958
|
+
access: "create"
|
|
22959
|
+
},
|
|
22960
|
+
"llm.testProfile": {
|
|
22961
|
+
capName: "llm",
|
|
22962
|
+
capScope: "system",
|
|
22963
|
+
addonId: null,
|
|
22964
|
+
access: "create"
|
|
22965
|
+
},
|
|
22966
|
+
"llm.upsertProfile": {
|
|
22967
|
+
capName: "llm",
|
|
22968
|
+
capScope: "system",
|
|
22969
|
+
addonId: null,
|
|
22970
|
+
access: "create"
|
|
22971
|
+
},
|
|
22972
|
+
"llmRuntime.complete": {
|
|
22973
|
+
capName: "llm-runtime",
|
|
22974
|
+
capScope: "system",
|
|
22975
|
+
addonId: null,
|
|
22976
|
+
access: "create"
|
|
22977
|
+
},
|
|
22978
|
+
"llmRuntime.deleteModel": {
|
|
22979
|
+
capName: "llm-runtime",
|
|
22980
|
+
capScope: "system",
|
|
22981
|
+
addonId: null,
|
|
22982
|
+
access: "delete"
|
|
22983
|
+
},
|
|
22984
|
+
"llmRuntime.ensureStarted": {
|
|
22985
|
+
capName: "llm-runtime",
|
|
22986
|
+
capScope: "system",
|
|
22987
|
+
addonId: null,
|
|
22988
|
+
access: "create"
|
|
22989
|
+
},
|
|
22990
|
+
"llmRuntime.getDiskUsage": {
|
|
22991
|
+
capName: "llm-runtime",
|
|
22992
|
+
capScope: "system",
|
|
22993
|
+
addonId: null,
|
|
22994
|
+
access: "view"
|
|
22995
|
+
},
|
|
22996
|
+
"llmRuntime.installModel": {
|
|
22997
|
+
capName: "llm-runtime",
|
|
22998
|
+
capScope: "system",
|
|
22999
|
+
addonId: null,
|
|
23000
|
+
access: "create"
|
|
23001
|
+
},
|
|
23002
|
+
"llmRuntime.listLocalModels": {
|
|
23003
|
+
capName: "llm-runtime",
|
|
23004
|
+
capScope: "system",
|
|
23005
|
+
addonId: null,
|
|
23006
|
+
access: "view"
|
|
23007
|
+
},
|
|
23008
|
+
"llmRuntime.status": {
|
|
23009
|
+
capName: "llm-runtime",
|
|
23010
|
+
capScope: "system",
|
|
23011
|
+
addonId: null,
|
|
23012
|
+
access: "view"
|
|
23013
|
+
},
|
|
23014
|
+
"llmRuntime.stop": {
|
|
23015
|
+
capName: "llm-runtime",
|
|
23016
|
+
capScope: "system",
|
|
23017
|
+
addonId: null,
|
|
23018
|
+
access: "create"
|
|
23019
|
+
},
|
|
22187
23020
|
"localNetwork.getAllowedAddresses": {
|
|
22188
23021
|
capName: "local-network",
|
|
22189
23022
|
capScope: "system",
|
|
@@ -22814,6 +23647,12 @@ Object.freeze({
|
|
|
22814
23647
|
addonId: null,
|
|
22815
23648
|
access: "delete"
|
|
22816
23649
|
},
|
|
23650
|
+
"pipelineAnalytics.deleteTracks": {
|
|
23651
|
+
capName: "pipeline-analytics",
|
|
23652
|
+
capScope: "device",
|
|
23653
|
+
addonId: null,
|
|
23654
|
+
access: "delete"
|
|
23655
|
+
},
|
|
22817
23656
|
"pipelineAnalytics.getActiveTracks": {
|
|
22818
23657
|
capName: "pipeline-analytics",
|
|
22819
23658
|
capScope: "device",
|
|
@@ -22880,12 +23719,24 @@ Object.freeze({
|
|
|
22880
23719
|
addonId: null,
|
|
22881
23720
|
access: "create"
|
|
22882
23721
|
},
|
|
23722
|
+
"pipelineAnalytics.pruneTracksBefore": {
|
|
23723
|
+
capName: "pipeline-analytics",
|
|
23724
|
+
capScope: "device",
|
|
23725
|
+
addonId: null,
|
|
23726
|
+
access: "create"
|
|
23727
|
+
},
|
|
22883
23728
|
"pipelineAnalytics.searchObjectEvents": {
|
|
22884
23729
|
capName: "pipeline-analytics",
|
|
22885
23730
|
capScope: "device",
|
|
22886
23731
|
addonId: null,
|
|
22887
23732
|
access: "view"
|
|
22888
23733
|
},
|
|
23734
|
+
"pipelineAnalytics.wipeAllAnalytics": {
|
|
23735
|
+
capName: "pipeline-analytics",
|
|
23736
|
+
capScope: "device",
|
|
23737
|
+
addonId: null,
|
|
23738
|
+
access: "delete"
|
|
23739
|
+
},
|
|
22889
23740
|
"pipelineExecutor.cacheFrameInPool": {
|
|
22890
23741
|
capName: "pipeline-executor",
|
|
22891
23742
|
capScope: "system",
|
|
@@ -23384,18 +24235,48 @@ Object.freeze({
|
|
|
23384
24235
|
addonId: null,
|
|
23385
24236
|
access: "create"
|
|
23386
24237
|
},
|
|
24238
|
+
"pipelineRunner.runDetailSubtree": {
|
|
24239
|
+
capName: "pipeline-runner",
|
|
24240
|
+
capScope: "system",
|
|
24241
|
+
addonId: null,
|
|
24242
|
+
access: "create"
|
|
24243
|
+
},
|
|
24244
|
+
"plateGallery.assignPlate": {
|
|
24245
|
+
capName: "plate-gallery",
|
|
24246
|
+
capScope: "system",
|
|
24247
|
+
addonId: null,
|
|
24248
|
+
access: "create"
|
|
24249
|
+
},
|
|
24250
|
+
"plateGallery.assignPlates": {
|
|
24251
|
+
capName: "plate-gallery",
|
|
24252
|
+
capScope: "system",
|
|
24253
|
+
addonId: null,
|
|
24254
|
+
access: "create"
|
|
24255
|
+
},
|
|
23387
24256
|
"plateGallery.correctPlateText": {
|
|
23388
24257
|
capName: "plate-gallery",
|
|
23389
24258
|
capScope: "system",
|
|
23390
24259
|
addonId: null,
|
|
23391
24260
|
access: "create"
|
|
23392
24261
|
},
|
|
24262
|
+
"plateGallery.createVehicle": {
|
|
24263
|
+
capName: "plate-gallery",
|
|
24264
|
+
capScope: "system",
|
|
24265
|
+
addonId: null,
|
|
24266
|
+
access: "create"
|
|
24267
|
+
},
|
|
23393
24268
|
"plateGallery.deletePlate": {
|
|
23394
24269
|
capName: "plate-gallery",
|
|
23395
24270
|
capScope: "system",
|
|
23396
24271
|
addonId: null,
|
|
23397
24272
|
access: "delete"
|
|
23398
24273
|
},
|
|
24274
|
+
"plateGallery.deleteVehicle": {
|
|
24275
|
+
capName: "plate-gallery",
|
|
24276
|
+
capScope: "system",
|
|
24277
|
+
addonId: null,
|
|
24278
|
+
access: "delete"
|
|
24279
|
+
},
|
|
23399
24280
|
"plateGallery.getPlateByTrack": {
|
|
23400
24281
|
capName: "plate-gallery",
|
|
23401
24282
|
capScope: "system",
|
|
@@ -23414,6 +24295,30 @@ Object.freeze({
|
|
|
23414
24295
|
addonId: null,
|
|
23415
24296
|
access: "view"
|
|
23416
24297
|
},
|
|
24298
|
+
"plateGallery.listVehicles": {
|
|
24299
|
+
capName: "plate-gallery",
|
|
24300
|
+
capScope: "system",
|
|
24301
|
+
addonId: null,
|
|
24302
|
+
access: "view"
|
|
24303
|
+
},
|
|
24304
|
+
"plateGallery.listVehicleSamples": {
|
|
24305
|
+
capName: "plate-gallery",
|
|
24306
|
+
capScope: "system",
|
|
24307
|
+
addonId: null,
|
|
24308
|
+
access: "view"
|
|
24309
|
+
},
|
|
24310
|
+
"plateGallery.removeVehicleSample": {
|
|
24311
|
+
capName: "plate-gallery",
|
|
24312
|
+
capScope: "system",
|
|
24313
|
+
addonId: null,
|
|
24314
|
+
access: "delete"
|
|
24315
|
+
},
|
|
24316
|
+
"plateGallery.renameVehicle": {
|
|
24317
|
+
capName: "plate-gallery",
|
|
24318
|
+
capScope: "system",
|
|
24319
|
+
addonId: null,
|
|
24320
|
+
access: "create"
|
|
24321
|
+
},
|
|
23417
24322
|
"plateGallery.searchPlates": {
|
|
23418
24323
|
capName: "plate-gallery",
|
|
23419
24324
|
capScope: "system",
|
|
@@ -23426,6 +24331,18 @@ Object.freeze({
|
|
|
23426
24331
|
addonId: null,
|
|
23427
24332
|
access: "view"
|
|
23428
24333
|
},
|
|
24334
|
+
"plateGallery.unassignPlate": {
|
|
24335
|
+
capName: "plate-gallery",
|
|
24336
|
+
capScope: "system",
|
|
24337
|
+
addonId: null,
|
|
24338
|
+
access: "create"
|
|
24339
|
+
},
|
|
24340
|
+
"plateGallery.unassignPlates": {
|
|
24341
|
+
capName: "plate-gallery",
|
|
24342
|
+
capScope: "system",
|
|
24343
|
+
addonId: null,
|
|
24344
|
+
access: "create"
|
|
24345
|
+
},
|
|
23429
24346
|
"platformProbe.getCapabilities": {
|
|
23430
24347
|
capName: "platform-probe",
|
|
23431
24348
|
capScope: "system",
|
|
@@ -23618,6 +24535,48 @@ Object.freeze({
|
|
|
23618
24535
|
addonId: null,
|
|
23619
24536
|
access: "create"
|
|
23620
24537
|
},
|
|
24538
|
+
"sceneMonitor.captureReference": {
|
|
24539
|
+
capName: "scene-monitor",
|
|
24540
|
+
capScope: "device",
|
|
24541
|
+
addonId: null,
|
|
24542
|
+
access: "create"
|
|
24543
|
+
},
|
|
24544
|
+
"sceneMonitor.createScene": {
|
|
24545
|
+
capName: "scene-monitor",
|
|
24546
|
+
capScope: "device",
|
|
24547
|
+
addonId: null,
|
|
24548
|
+
access: "create"
|
|
24549
|
+
},
|
|
24550
|
+
"sceneMonitor.deleteReference": {
|
|
24551
|
+
capName: "scene-monitor",
|
|
24552
|
+
capScope: "device",
|
|
24553
|
+
addonId: null,
|
|
24554
|
+
access: "delete"
|
|
24555
|
+
},
|
|
24556
|
+
"sceneMonitor.deleteScene": {
|
|
24557
|
+
capName: "scene-monitor",
|
|
24558
|
+
capScope: "device",
|
|
24559
|
+
addonId: null,
|
|
24560
|
+
access: "delete"
|
|
24561
|
+
},
|
|
24562
|
+
"sceneMonitor.listScenes": {
|
|
24563
|
+
capName: "scene-monitor",
|
|
24564
|
+
capScope: "device",
|
|
24565
|
+
addonId: null,
|
|
24566
|
+
access: "view"
|
|
24567
|
+
},
|
|
24568
|
+
"sceneMonitor.recheckNow": {
|
|
24569
|
+
capName: "scene-monitor",
|
|
24570
|
+
capScope: "device",
|
|
24571
|
+
addonId: null,
|
|
24572
|
+
access: "create"
|
|
24573
|
+
},
|
|
24574
|
+
"sceneMonitor.updateScene": {
|
|
24575
|
+
capName: "scene-monitor",
|
|
24576
|
+
capScope: "device",
|
|
24577
|
+
addonId: null,
|
|
24578
|
+
access: "create"
|
|
24579
|
+
},
|
|
23621
24580
|
"scriptRunner.run": {
|
|
23622
24581
|
capName: "script-runner",
|
|
23623
24582
|
capScope: "device",
|
|
@@ -24702,6 +25661,7 @@ Object.freeze({
|
|
|
24702
25661
|
Object.freeze({
|
|
24703
25662
|
"broker": "broker",
|
|
24704
25663
|
"device-export": "device-export",
|
|
25664
|
+
"llm": "ai",
|
|
24705
25665
|
"mesh-network": "mesh",
|
|
24706
25666
|
"mqtt-broker": "broker",
|
|
24707
25667
|
"network-access": "ingress",
|