@camstack/addon-post-analysis 1.1.27 → 1.1.28
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/{dist-BqOBYSWs.mjs → dist-Blpsv-M0.mjs} +998 -54
- package/dist/{dist-CtnFKuWh.js → dist-Bnb58pyL.js} +997 -77
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/{node-BN31iDiA.js → node-Cvhwrf43.js} +1 -1
- package/dist/pipeline-analytics/_stub.js +107 -107
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-Dvz_QBOD.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-CZZpqsjV.mjs} +2 -2
- package/dist/pipeline-analytics/{_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BXQHc7Tq.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DBgBsiUM.mjs} +2 -2
- package/dist/pipeline-analytics/{hostInit-C7nUOwbi.mjs → hostInit-D-KSUwyU.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +2218 -84
- package/dist/pipeline-analytics/index.mjs +2214 -80
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -19
- package/dist/enrichment-engine/index.js +0 -857
- package/dist/enrichment-engine/index.mjs +0 -852
- package/dist/resolve-frame-BAdpVnlx.js +0 -57
- package/dist/resolve-frame-CT1T1tWy.mjs +0 -44
|
@@ -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
|
/**
|
|
@@ -6358,11 +6399,6 @@ var ProfileRtspEntrySchema = object({
|
|
|
6358
6399
|
codec: string().optional(),
|
|
6359
6400
|
resolution: CamStreamResolutionSchema.optional()
|
|
6360
6401
|
});
|
|
6361
|
-
/** Narrow an unknown value to a plain `Record<string, unknown>` or return null. */
|
|
6362
|
-
function asJsonObject(value) {
|
|
6363
|
-
if (value === null || typeof value !== "object" || Array.isArray(value)) return null;
|
|
6364
|
-
return { ...value };
|
|
6365
|
-
}
|
|
6366
6402
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
6367
6403
|
DeviceType["Camera"] = "camera";
|
|
6368
6404
|
DeviceType["Hub"] = "hub";
|
|
@@ -6886,7 +6922,8 @@ var MODEL_FORMATS = [
|
|
|
6886
6922
|
"coreml",
|
|
6887
6923
|
"openvino",
|
|
6888
6924
|
"tflite",
|
|
6889
|
-
"pt"
|
|
6925
|
+
"pt",
|
|
6926
|
+
"gguf"
|
|
6890
6927
|
];
|
|
6891
6928
|
/**
|
|
6892
6929
|
* Multi-file format payload.
|
|
@@ -6930,7 +6967,8 @@ var ModelFormatsSchema = object({
|
|
|
6930
6967
|
coreml: ModelFormatEntrySchema.optional(),
|
|
6931
6968
|
openvino: ModelFormatEntrySchema.optional(),
|
|
6932
6969
|
tflite: ModelFormatEntrySchema.optional(),
|
|
6933
|
-
pt: ModelFormatEntrySchema.optional()
|
|
6970
|
+
pt: ModelFormatEntrySchema.optional(),
|
|
6971
|
+
gguf: ModelFormatEntrySchema.optional()
|
|
6934
6972
|
});
|
|
6935
6973
|
/**
|
|
6936
6974
|
* Variant-selector grouping axes. Shared by the full `ModelCatalogEntry` and by
|
|
@@ -10520,7 +10558,8 @@ var ModelFormatSchema$1 = _enum([
|
|
|
10520
10558
|
"coreml",
|
|
10521
10559
|
"openvino",
|
|
10522
10560
|
"tflite",
|
|
10523
|
-
"pt"
|
|
10561
|
+
"pt",
|
|
10562
|
+
"gguf"
|
|
10524
10563
|
]);
|
|
10525
10564
|
var PipelineSlotSchema = _enum([
|
|
10526
10565
|
"detector",
|
|
@@ -11826,6 +11865,140 @@ DeviceType.Camera, method(object({ deviceId: number() }), PtzAutotrackStatusSche
|
|
|
11826
11865
|
deviceId: number(),
|
|
11827
11866
|
status: PtzAutotrackStatusSchema
|
|
11828
11867
|
});
|
|
11868
|
+
/**
|
|
11869
|
+
* scene-monitor — device-scoped reference-region state cap. An operator marks
|
|
11870
|
+
* a rect ROI on a camera frame and names one or more states; the engine
|
|
11871
|
+
* (pipeline-analytics, designated post-processing node) reports which state is
|
|
11872
|
+
* active on an ongoing basis. Two operator-selectable check modes share every-
|
|
11873
|
+
* thing except the comparator: `similarity` (CLIP cosine at the same ROI coords
|
|
11874
|
+
* vs condition-tagged references) and `llm` (vision-LLM judgment over the crop).
|
|
11875
|
+
*
|
|
11876
|
+
* D14 device-config archetype (`deviceConfig.ui.kind:'widget'`) — the framework
|
|
11877
|
+
* derives the device-detail contribution; the provider carries NO hand-written
|
|
11878
|
+
* settings-contribution methods. `status.kind:'push'` — the engine pushes on
|
|
11879
|
+
* every hysteresis flip / availability change; consumers never poll.
|
|
11880
|
+
*/
|
|
11881
|
+
/** Extensible condition tag. Seeded 'day' | 'night'; open by design so more can
|
|
11882
|
+
* be added without a wire break (matching falls back to any-condition refs). */
|
|
11883
|
+
var SceneConditionSchema = string();
|
|
11884
|
+
/** One captured reference — condition-tagged, model-version-gated. `embedding`
|
|
11885
|
+
* is `number[]` (Float32Array does NOT survive MsgPack/UDS). */
|
|
11886
|
+
var SceneReferenceSchema = object({
|
|
11887
|
+
embedding: array(number()),
|
|
11888
|
+
modelId: string(),
|
|
11889
|
+
condition: SceneConditionSchema,
|
|
11890
|
+
capturedAt: number(),
|
|
11891
|
+
thumbnailMediaId: string().optional()
|
|
11892
|
+
});
|
|
11893
|
+
var SceneMonitorStateSchema = object({
|
|
11894
|
+
id: string(),
|
|
11895
|
+
label: string(),
|
|
11896
|
+
references: array(SceneReferenceSchema),
|
|
11897
|
+
textPrompts: array(string()).optional(),
|
|
11898
|
+
referenceCount: number(),
|
|
11899
|
+
currentlyMatched: boolean()
|
|
11900
|
+
});
|
|
11901
|
+
/** Per-mode comparator params in a discriminated union so an `llm` scene never
|
|
11902
|
+
* carries similarity knobs and vice-versa. */
|
|
11903
|
+
var SceneCheckSchema = discriminatedUnion("mode", [object({
|
|
11904
|
+
mode: literal("similarity"),
|
|
11905
|
+
threshold: number().min(0).max(1),
|
|
11906
|
+
hysteresisCount: number().int().positive()
|
|
11907
|
+
}), object({
|
|
11908
|
+
mode: literal("llm"),
|
|
11909
|
+
prompt: string(),
|
|
11910
|
+
profileId: string().optional(),
|
|
11911
|
+
hysteresisCount: number().int().positive()
|
|
11912
|
+
})]);
|
|
11913
|
+
var SceneMonitorSchema = object({
|
|
11914
|
+
id: string(),
|
|
11915
|
+
label: string(),
|
|
11916
|
+
roi: MaskRectShapeSchema,
|
|
11917
|
+
enabled: boolean(),
|
|
11918
|
+
triggerMode: _enum([
|
|
11919
|
+
"periodic",
|
|
11920
|
+
"on-motion",
|
|
11921
|
+
"both"
|
|
11922
|
+
]),
|
|
11923
|
+
checkIntervalSec: number().optional(),
|
|
11924
|
+
check: SceneCheckSchema,
|
|
11925
|
+
states: array(SceneMonitorStateSchema),
|
|
11926
|
+
currentStateId: string().nullable(),
|
|
11927
|
+
lastCheckedAt: number().nullable(),
|
|
11928
|
+
lastConfidence: number().nullable(),
|
|
11929
|
+
currentCondition: SceneConditionSchema.nullable(),
|
|
11930
|
+
availability: _enum(["ok", "unavailable"]),
|
|
11931
|
+
unavailableReason: string().nullable()
|
|
11932
|
+
});
|
|
11933
|
+
var SceneMonitorStatusSchema = object({
|
|
11934
|
+
monitors: array(SceneMonitorSchema),
|
|
11935
|
+
lastFetchedAt: number()
|
|
11936
|
+
});
|
|
11937
|
+
DeviceType.Camera, method(object({ deviceId: number() }), SceneMonitorStatusSchema), method(object({
|
|
11938
|
+
deviceId: number(),
|
|
11939
|
+
label: string(),
|
|
11940
|
+
roi: MaskRectShapeSchema,
|
|
11941
|
+
check: SceneCheckSchema,
|
|
11942
|
+
triggerMode: _enum([
|
|
11943
|
+
"periodic",
|
|
11944
|
+
"on-motion",
|
|
11945
|
+
"both"
|
|
11946
|
+
]).optional(),
|
|
11947
|
+
checkIntervalSec: number().optional()
|
|
11948
|
+
}), SceneMonitorSchema, {
|
|
11949
|
+
kind: "mutation",
|
|
11950
|
+
auth: "admin"
|
|
11951
|
+
}), method(object({
|
|
11952
|
+
deviceId: number(),
|
|
11953
|
+
monitorId: string(),
|
|
11954
|
+
patch: object({
|
|
11955
|
+
label: string().optional(),
|
|
11956
|
+
roi: MaskRectShapeSchema.optional(),
|
|
11957
|
+
enabled: boolean().optional(),
|
|
11958
|
+
triggerMode: _enum([
|
|
11959
|
+
"periodic",
|
|
11960
|
+
"on-motion",
|
|
11961
|
+
"both"
|
|
11962
|
+
]).optional(),
|
|
11963
|
+
checkIntervalSec: number().optional(),
|
|
11964
|
+
check: SceneCheckSchema.optional()
|
|
11965
|
+
})
|
|
11966
|
+
}), _void(), {
|
|
11967
|
+
kind: "mutation",
|
|
11968
|
+
auth: "admin"
|
|
11969
|
+
}), method(object({
|
|
11970
|
+
deviceId: number(),
|
|
11971
|
+
monitorId: string()
|
|
11972
|
+
}), _void(), {
|
|
11973
|
+
kind: "mutation",
|
|
11974
|
+
auth: "admin"
|
|
11975
|
+
}), method(object({
|
|
11976
|
+
deviceId: number(),
|
|
11977
|
+
monitorId: string(),
|
|
11978
|
+
stateId: string().optional(),
|
|
11979
|
+
label: string().optional(),
|
|
11980
|
+
condition: SceneConditionSchema.optional()
|
|
11981
|
+
}), object({
|
|
11982
|
+
stateId: string(),
|
|
11983
|
+
referenceCount: number()
|
|
11984
|
+
}), {
|
|
11985
|
+
kind: "mutation",
|
|
11986
|
+
auth: "admin"
|
|
11987
|
+
}), method(object({
|
|
11988
|
+
deviceId: number(),
|
|
11989
|
+
monitorId: string(),
|
|
11990
|
+
stateId: string(),
|
|
11991
|
+
index: number()
|
|
11992
|
+
}), _void(), {
|
|
11993
|
+
kind: "mutation",
|
|
11994
|
+
auth: "admin"
|
|
11995
|
+
}), method(object({
|
|
11996
|
+
deviceId: number(),
|
|
11997
|
+
monitorId: string()
|
|
11998
|
+
}), _void(), {
|
|
11999
|
+
kind: "mutation",
|
|
12000
|
+
auth: "admin"
|
|
12001
|
+
});
|
|
11829
12002
|
object({
|
|
11830
12003
|
/** Whether the script is currently executing. */
|
|
11831
12004
|
isRunning: boolean(),
|
|
@@ -12902,7 +13075,12 @@ var NotificationRuleConditionsSchema = object({
|
|
|
12902
13075
|
clipDescription: object({
|
|
12903
13076
|
text: string().min(1),
|
|
12904
13077
|
minSimilarity: number().min(0).max(1)
|
|
12905
|
-
}).optional()
|
|
13078
|
+
}).optional(),
|
|
13079
|
+
/** Match events whose recognized-entity label (face identity name or plate
|
|
13080
|
+
* vehicle name, propagated onto `event.data.label`) is one of these values.
|
|
13081
|
+
* Empty/absent → unaffected (back-compat). Enables "notify me when <named
|
|
13082
|
+
* vehicle/person> is seen". */
|
|
13083
|
+
labels: array(string()).readonly().optional()
|
|
12906
13084
|
});
|
|
12907
13085
|
var NotificationRuleTemplateSchema = object({
|
|
12908
13086
|
title: string(),
|
|
@@ -13160,11 +13338,19 @@ method(object({
|
|
|
13160
13338
|
* login page needs NO change.
|
|
13161
13339
|
*
|
|
13162
13340
|
* - `widget` — a Module-Federation widget the login page mounts (via
|
|
13163
|
-
* `loadRemoteBundle`) for an in-page ceremony.
|
|
13164
|
-
*
|
|
13165
|
-
*
|
|
13166
|
-
*
|
|
13167
|
-
*
|
|
13341
|
+
* `loadRemoteBundle`) for an in-page ceremony. `auth.listLoginMethods`
|
|
13342
|
+
* stamps a public `bundleUrl` from `addonId` + `bundle`. Generic
|
|
13343
|
+
* mechanism kept for future use; no shipped addon uses it on the login
|
|
13344
|
+
* page (the passkey ceremony below runs natively in the shell instead).
|
|
13345
|
+
*
|
|
13346
|
+
* - `passkey` — a declarative WebAuthn ceremony the shell renders
|
|
13347
|
+
* natively (`@simplewebauthn/browser` lives in `addon-admin-ui`, not in
|
|
13348
|
+
* a remotely-loaded bundle). Carries the addon's effective `rpId` /
|
|
13349
|
+
* `origin` (from its `resolveRpID()` / `resolveOrigin()`) so the shell
|
|
13350
|
+
* can gate visibility (IP-literal origin, hostname/rpId mismatch) WITHOUT
|
|
13351
|
+
* fetching any remote code pre-auth. Contribution stays unconditional —
|
|
13352
|
+
* enrollment state is never leaked pre-auth; visibility is a shell
|
|
13353
|
+
* decision.
|
|
13168
13354
|
*
|
|
13169
13355
|
* Every contribution carries a `stage`:
|
|
13170
13356
|
* - `primary` — shown on the first credentials screen (OIDC /
|
|
@@ -13178,30 +13364,45 @@ method(object({
|
|
|
13178
13364
|
*/
|
|
13179
13365
|
/** When a login method renders in the two-phase login flow. */
|
|
13180
13366
|
var LoginStageEnum = _enum(["primary", "second-factor"]);
|
|
13181
|
-
/** One login-method contribution — redirect button
|
|
13182
|
-
var LoginMethodContributionSchema = discriminatedUnion("kind", [
|
|
13183
|
-
|
|
13184
|
-
|
|
13185
|
-
|
|
13186
|
-
|
|
13187
|
-
|
|
13188
|
-
|
|
13189
|
-
|
|
13190
|
-
|
|
13191
|
-
|
|
13192
|
-
|
|
13193
|
-
|
|
13194
|
-
|
|
13195
|
-
|
|
13196
|
-
|
|
13197
|
-
|
|
13198
|
-
|
|
13199
|
-
|
|
13200
|
-
|
|
13201
|
-
|
|
13202
|
-
|
|
13203
|
-
|
|
13204
|
-
|
|
13367
|
+
/** One login-method contribution — redirect button, pre-auth widget, or native passkey ceremony. */
|
|
13368
|
+
var LoginMethodContributionSchema = discriminatedUnion("kind", [
|
|
13369
|
+
object({
|
|
13370
|
+
kind: literal("redirect"),
|
|
13371
|
+
/** Stable id within the login-method set (e.g. `auth-oidc/google`). */
|
|
13372
|
+
id: string(),
|
|
13373
|
+
/** Operator-facing button label. */
|
|
13374
|
+
label: string(),
|
|
13375
|
+
/** lucide-react icon name. */
|
|
13376
|
+
icon: string().optional(),
|
|
13377
|
+
/** Addon-owned HTTP route the button navigates to (GET). */
|
|
13378
|
+
startUrl: string(),
|
|
13379
|
+
stage: LoginStageEnum
|
|
13380
|
+
}),
|
|
13381
|
+
object({
|
|
13382
|
+
kind: literal("widget"),
|
|
13383
|
+
/** Stable id within the login-method set (e.g. `auth-webauthn/passkey-login`). */
|
|
13384
|
+
id: string(),
|
|
13385
|
+
/** Owning addon id — drives the public bundle URL + the MF namespace. */
|
|
13386
|
+
addonId: string(),
|
|
13387
|
+
/** Bundle filename inside the addon's dist dir (`remoteEntry.js`). */
|
|
13388
|
+
bundle: string(),
|
|
13389
|
+
/** MF remote descriptor — `{ remoteName, exposedModule, componentKey }`. */
|
|
13390
|
+
remote: WidgetRemoteSchema,
|
|
13391
|
+
stage: LoginStageEnum
|
|
13392
|
+
}),
|
|
13393
|
+
object({
|
|
13394
|
+
kind: literal("passkey"),
|
|
13395
|
+
/** Stable id within the login-method set (e.g. `auth-webauthn/passkey-direct-login`). */
|
|
13396
|
+
id: string(),
|
|
13397
|
+
/** Operator-facing button label. */
|
|
13398
|
+
label: string(),
|
|
13399
|
+
stage: LoginStageEnum,
|
|
13400
|
+
/** Effective WebAuthn RP ID (`resolveRpID()`) — the shell gates visibility on it. */
|
|
13401
|
+
rpId: string(),
|
|
13402
|
+
/** Effective expected origin (`resolveOrigin()`), null when unconfigured. */
|
|
13403
|
+
origin: string().nullable()
|
|
13404
|
+
})
|
|
13405
|
+
]);
|
|
13205
13406
|
method(_void(), array(LoginMethodContributionSchema).readonly());
|
|
13206
13407
|
/**
|
|
13207
13408
|
* Orchestrator-side destination metadata. The orchestrator computes
|
|
@@ -15039,14 +15240,14 @@ var TargetKindCapsSchema = object({
|
|
|
15039
15240
|
* the union is large and not meant for runtime validation here; the exported
|
|
15040
15241
|
* `TargetKind` type re-tightens `configSchema` to `ConfigUISchema`.
|
|
15041
15242
|
*/
|
|
15042
|
-
var ConfigSchemaPassthrough = unknown();
|
|
15243
|
+
var ConfigSchemaPassthrough$1 = unknown();
|
|
15043
15244
|
var TargetKindSchema = object({
|
|
15044
15245
|
kind: string(),
|
|
15045
15246
|
label: string(),
|
|
15046
15247
|
icon: string(),
|
|
15047
15248
|
/** Stamped by each provider so the concat-fanned catalog stays routable. */
|
|
15048
15249
|
addonId: string(),
|
|
15049
|
-
configSchema: ConfigSchemaPassthrough,
|
|
15250
|
+
configSchema: ConfigSchemaPassthrough$1,
|
|
15050
15251
|
supportsDiscovery: boolean(),
|
|
15051
15252
|
caps: TargetKindCapsSchema
|
|
15052
15253
|
});
|
|
@@ -15099,6 +15300,298 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
15099
15300
|
enabled: boolean()
|
|
15100
15301
|
}), _void(), { kind: "mutation" });
|
|
15101
15302
|
/**
|
|
15303
|
+
* Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
|
|
15304
|
+
* surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
|
|
15305
|
+
* caps stay wire-compatible without a circular cap→cap import.
|
|
15306
|
+
*
|
|
15307
|
+
* Errors are a discriminated-union RESULT, never thrown: the shape survives
|
|
15308
|
+
* every transport tier structurally, and failed calls still write usage rows.
|
|
15309
|
+
* Token counts only in v1 — no costUsd (operator decision, 2026-07-15).
|
|
15310
|
+
*/
|
|
15311
|
+
var LlmUsageSchema = object({
|
|
15312
|
+
inputTokens: number(),
|
|
15313
|
+
outputTokens: number()
|
|
15314
|
+
});
|
|
15315
|
+
var LlmErrorCodeSchema = _enum([
|
|
15316
|
+
"timeout",
|
|
15317
|
+
"rate-limited",
|
|
15318
|
+
"auth",
|
|
15319
|
+
"refusal",
|
|
15320
|
+
"bad-request",
|
|
15321
|
+
"unavailable",
|
|
15322
|
+
"no-profile",
|
|
15323
|
+
"budget-exceeded",
|
|
15324
|
+
"adapter-error"
|
|
15325
|
+
]);
|
|
15326
|
+
var LlmGenerateResultSchema = discriminatedUnion("ok", [object({
|
|
15327
|
+
ok: literal(true),
|
|
15328
|
+
text: string(),
|
|
15329
|
+
model: string(),
|
|
15330
|
+
usage: LlmUsageSchema,
|
|
15331
|
+
truncated: boolean(),
|
|
15332
|
+
latencyMs: number()
|
|
15333
|
+
}), object({
|
|
15334
|
+
ok: literal(false),
|
|
15335
|
+
code: LlmErrorCodeSchema,
|
|
15336
|
+
message: string(),
|
|
15337
|
+
retryAfterMs: number().optional()
|
|
15338
|
+
})]);
|
|
15339
|
+
/**
|
|
15340
|
+
* `Uint8Array` is the sanctioned binary convention — superjson + the UDS
|
|
15341
|
+
* MsgPack channel round-trip typed arrays (embedding-encoder.cap.ts:29,
|
|
15342
|
+
* notification-output.cap.ts:27-31 precedents).
|
|
15343
|
+
*/
|
|
15344
|
+
var LlmImageSchema = object({
|
|
15345
|
+
bytes: _instanceof(Uint8Array),
|
|
15346
|
+
mimeType: string()
|
|
15347
|
+
});
|
|
15348
|
+
var LlmGenerateBaseInputSchema = object({
|
|
15349
|
+
/** Collection routing (the notification-output posture). */
|
|
15350
|
+
addonId: string().optional(),
|
|
15351
|
+
/** Explicit profile; else the resolution chain (spec §3). */
|
|
15352
|
+
profileId: string().optional(),
|
|
15353
|
+
/** MANDATORY usage tag: 'ai-summary', 'notifier-rules', 'adhoc-ui', … */
|
|
15354
|
+
consumer: string(),
|
|
15355
|
+
system: string().optional(),
|
|
15356
|
+
/** v1: single-turn. `messages[]` is a v2 additive field. */
|
|
15357
|
+
prompt: string(),
|
|
15358
|
+
/** Structured output — adapter-mapped (response_format / forced tool / responseSchema). */
|
|
15359
|
+
jsonSchema: record(string(), unknown()).optional(),
|
|
15360
|
+
/** Per-call override of the profile default. */
|
|
15361
|
+
maxTokens: number().int().positive().optional(),
|
|
15362
|
+
temperature: number().optional()
|
|
15363
|
+
});
|
|
15364
|
+
/**
|
|
15365
|
+
* `llm-runtime` — node-side managed llama.cpp executor (spec §4). Registered
|
|
15366
|
+
* on EVERY node where `addon-ai` is installed; the hub `llm` provider reaches
|
|
15367
|
+
* a specific node's runtime with `nodePin(profile.runtime.nodeId)` — normal
|
|
15368
|
+
* cap routing, zero bespoke plumbing. `internal: true`: the operator reaches
|
|
15369
|
+
* this only through the `llm` cap's methods.
|
|
15370
|
+
*
|
|
15371
|
+
* One running llama-server child per node in v1 (models are RAM-heavy).
|
|
15372
|
+
* Resource ceiling = llama-server flags + idleStopMinutes ONLY (no RSS
|
|
15373
|
+
* watchdog — operator decision #3).
|
|
15374
|
+
*/
|
|
15375
|
+
var ManagedModelRefSchema = discriminatedUnion("kind", [
|
|
15376
|
+
object({
|
|
15377
|
+
kind: literal("catalog"),
|
|
15378
|
+
catalogId: string()
|
|
15379
|
+
}),
|
|
15380
|
+
object({
|
|
15381
|
+
kind: literal("url"),
|
|
15382
|
+
url: string(),
|
|
15383
|
+
sha256: string().optional()
|
|
15384
|
+
}),
|
|
15385
|
+
object({
|
|
15386
|
+
kind: literal("path"),
|
|
15387
|
+
path: string()
|
|
15388
|
+
})
|
|
15389
|
+
]);
|
|
15390
|
+
var ManagedRuntimeConfigSchema = object({
|
|
15391
|
+
/** WHERE the runtime lives — hub or any agent. */
|
|
15392
|
+
nodeId: string(),
|
|
15393
|
+
/** Closed for v1; 'ollama' is a v2 candidate. */
|
|
15394
|
+
engine: _enum(["llama-cpp"]),
|
|
15395
|
+
model: ManagedModelRefSchema,
|
|
15396
|
+
contextSize: number().int().default(4096),
|
|
15397
|
+
/** 0 = CPU-only. */
|
|
15398
|
+
gpuLayers: number().int().default(0),
|
|
15399
|
+
/** Default: cpus-2, clamped ≥1 (resolved node-side). */
|
|
15400
|
+
threads: number().int().optional(),
|
|
15401
|
+
/** Concurrent slots. */
|
|
15402
|
+
parallel: number().int().default(1),
|
|
15403
|
+
/** Else lazy: first generate boots it. */
|
|
15404
|
+
autoStart: boolean().default(false),
|
|
15405
|
+
/** 0 = never; frees RAM after quiet periods. */
|
|
15406
|
+
idleStopMinutes: number().int().default(30)
|
|
15407
|
+
});
|
|
15408
|
+
var LlmRuntimeStatusSchema = object({
|
|
15409
|
+
/** Status is ALWAYS node-qualified. */
|
|
15410
|
+
nodeId: string(),
|
|
15411
|
+
state: _enum([
|
|
15412
|
+
"stopped",
|
|
15413
|
+
"downloading",
|
|
15414
|
+
"starting",
|
|
15415
|
+
"ready",
|
|
15416
|
+
"crashed",
|
|
15417
|
+
"failed"
|
|
15418
|
+
]),
|
|
15419
|
+
pid: number().optional(),
|
|
15420
|
+
port: number().optional(),
|
|
15421
|
+
modelPath: string().optional(),
|
|
15422
|
+
modelId: string().optional(),
|
|
15423
|
+
downloadProgress: number().min(0).max(1).optional(),
|
|
15424
|
+
lastError: string().optional(),
|
|
15425
|
+
crashesInWindow: number(),
|
|
15426
|
+
/** Child RSS (sampled best-effort). */
|
|
15427
|
+
memoryBytes: number().optional(),
|
|
15428
|
+
vramBytes: number().optional()
|
|
15429
|
+
});
|
|
15430
|
+
var LlmNodeModelSchema = object({
|
|
15431
|
+
file: string(),
|
|
15432
|
+
sizeBytes: number(),
|
|
15433
|
+
catalogId: string().optional(),
|
|
15434
|
+
installedAt: number().optional()
|
|
15435
|
+
});
|
|
15436
|
+
var LlmRuntimeDiskUsageSchema = object({
|
|
15437
|
+
nodeId: string(),
|
|
15438
|
+
modelsBytes: number(),
|
|
15439
|
+
freeBytes: number().optional()
|
|
15440
|
+
});
|
|
15441
|
+
method(LlmGenerateBaseInputSchema.extend({
|
|
15442
|
+
images: array(LlmImageSchema).optional(),
|
|
15443
|
+
runtime: ManagedRuntimeConfigSchema,
|
|
15444
|
+
/** The managed profile's timeout, threaded by the hub provider. */
|
|
15445
|
+
timeoutMs: number().int().positive().optional()
|
|
15446
|
+
}), LlmGenerateResultSchema, { kind: "mutation" }), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
15447
|
+
kind: "mutation",
|
|
15448
|
+
auth: "admin"
|
|
15449
|
+
}), method(object({}), _void(), {
|
|
15450
|
+
kind: "mutation",
|
|
15451
|
+
auth: "admin"
|
|
15452
|
+
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
15453
|
+
kind: "mutation",
|
|
15454
|
+
auth: "admin"
|
|
15455
|
+
}), method(object({ file: string() }), _void(), {
|
|
15456
|
+
kind: "mutation",
|
|
15457
|
+
auth: "admin"
|
|
15458
|
+
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
15459
|
+
/**
|
|
15460
|
+
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
15461
|
+
* methods concat-fan across providers; single-row methods route to ONE
|
|
15462
|
+
* provider by the `addonId` in the call input (the notification-output
|
|
15463
|
+
* posture, notification-output.cap.ts:215-250). Provided by `addon-ai`
|
|
15464
|
+
* (hub-placed); the cap stays open for future providers.
|
|
15465
|
+
*
|
|
15466
|
+
* Profiles are ROWS (data), not addons: one row = one usable model endpoint.
|
|
15467
|
+
* `apiKey` is a password field — providers REDACT it on read and merge on
|
|
15468
|
+
* write; a stored key NEVER round-trips to a client.
|
|
15469
|
+
*/
|
|
15470
|
+
var LlmProfileKindSchema = _enum([
|
|
15471
|
+
"openai-compatible",
|
|
15472
|
+
"openai",
|
|
15473
|
+
"anthropic",
|
|
15474
|
+
"google",
|
|
15475
|
+
"managed-local"
|
|
15476
|
+
]);
|
|
15477
|
+
var LlmProfileSchema = object({
|
|
15478
|
+
id: string(),
|
|
15479
|
+
name: string(),
|
|
15480
|
+
kind: LlmProfileKindSchema,
|
|
15481
|
+
/** Stamped by the provider — keeps the fanned catalog routable. */
|
|
15482
|
+
addonId: string(),
|
|
15483
|
+
enabled: boolean(),
|
|
15484
|
+
/** Vendor model id, or the managed runtime's loaded model. */
|
|
15485
|
+
model: string(),
|
|
15486
|
+
/** Required for openai-compatible; override for cloud kinds. */
|
|
15487
|
+
baseUrl: string().optional(),
|
|
15488
|
+
/** ConfigUISchema type:'password' — never round-trips (spec §5). */
|
|
15489
|
+
apiKey: string().optional(),
|
|
15490
|
+
supportsVision: boolean(),
|
|
15491
|
+
temperature: number().min(0).max(2).optional(),
|
|
15492
|
+
maxTokens: number().int().positive().optional(),
|
|
15493
|
+
timeoutMs: number().int().positive().default(6e4),
|
|
15494
|
+
extraHeaders: record(string(), string()).optional(),
|
|
15495
|
+
/** kind === 'managed-local' only (spec §4). */
|
|
15496
|
+
runtime: ManagedRuntimeConfigSchema.optional()
|
|
15497
|
+
});
|
|
15498
|
+
/** ConfigUISchema tree passed through untyped on the wire (the
|
|
15499
|
+
* notification-output `ConfigSchemaPassthrough` precedent at
|
|
15500
|
+
* notification-output.cap.ts:151); the exported TS type re-tightens it. */
|
|
15501
|
+
var ConfigSchemaPassthrough = unknown();
|
|
15502
|
+
var LlmProfileKindDescriptorSchema = object({
|
|
15503
|
+
kind: LlmProfileKindSchema,
|
|
15504
|
+
label: string(),
|
|
15505
|
+
icon: string(),
|
|
15506
|
+
/** Stamped by each provider so the concat-fanned catalog stays routable. */
|
|
15507
|
+
addonId: string(),
|
|
15508
|
+
configSchema: ConfigSchemaPassthrough
|
|
15509
|
+
});
|
|
15510
|
+
var LlmDefaultSelectorSchema = union([object({ consumer: string() }), object({ purpose: _enum(["text", "vision"]) })]);
|
|
15511
|
+
var LlmDefaultSchema = object({
|
|
15512
|
+
selector: LlmDefaultSelectorSchema,
|
|
15513
|
+
profileId: string()
|
|
15514
|
+
});
|
|
15515
|
+
/** Server-side rollup row — getUsage never dumps raw call rows (spec §6). */
|
|
15516
|
+
var LlmUsageRollupSchema = object({
|
|
15517
|
+
day: string(),
|
|
15518
|
+
consumer: string(),
|
|
15519
|
+
profileId: string(),
|
|
15520
|
+
calls: number(),
|
|
15521
|
+
okCalls: number(),
|
|
15522
|
+
errorCalls: number(),
|
|
15523
|
+
inputTokens: number(),
|
|
15524
|
+
outputTokens: number(),
|
|
15525
|
+
avgLatencyMs: number()
|
|
15526
|
+
});
|
|
15527
|
+
/** LLM-facing view over the reused ModelCatalogEntry mechanism (spec §4.2). */
|
|
15528
|
+
var ManagedModelCatalogEntrySchema = object({
|
|
15529
|
+
id: string(),
|
|
15530
|
+
label: string(),
|
|
15531
|
+
family: string(),
|
|
15532
|
+
purpose: _enum(["text", "vision"]),
|
|
15533
|
+
url: string(),
|
|
15534
|
+
sha256: string(),
|
|
15535
|
+
sizeBytes: number(),
|
|
15536
|
+
quantization: string(),
|
|
15537
|
+
/** Load-time guidance shown in the picker. */
|
|
15538
|
+
minRamBytes: number(),
|
|
15539
|
+
contextSizeDefault: number().int(),
|
|
15540
|
+
/** Vision models: companion projector file. */
|
|
15541
|
+
mmprojUrl: string().optional()
|
|
15542
|
+
});
|
|
15543
|
+
var LlmRuntimeNodeSchema = object({
|
|
15544
|
+
nodeId: string(),
|
|
15545
|
+
reachable: boolean(),
|
|
15546
|
+
status: LlmRuntimeStatusSchema.optional(),
|
|
15547
|
+
disk: LlmRuntimeDiskUsageSchema.optional(),
|
|
15548
|
+
error: string().optional()
|
|
15549
|
+
});
|
|
15550
|
+
var GenerateVisionInputSchema = LlmGenerateBaseInputSchema.extend({ images: array(LlmImageSchema).min(1) });
|
|
15551
|
+
var ProfileRefInputSchema = object({
|
|
15552
|
+
addonId: string(),
|
|
15553
|
+
profileId: string()
|
|
15554
|
+
});
|
|
15555
|
+
method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
|
|
15556
|
+
kind: "mutation",
|
|
15557
|
+
auth: "admin"
|
|
15558
|
+
}), method(ProfileRefInputSchema, _void(), {
|
|
15559
|
+
kind: "mutation",
|
|
15560
|
+
auth: "admin"
|
|
15561
|
+
}), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
|
|
15562
|
+
kind: "mutation",
|
|
15563
|
+
auth: "admin"
|
|
15564
|
+
}), method(ProfileRefInputSchema, array(string())), method(object({}), array(LlmDefaultSchema)), method(object({
|
|
15565
|
+
selector: LlmDefaultSelectorSchema,
|
|
15566
|
+
profileId: string().nullable()
|
|
15567
|
+
}), _void(), {
|
|
15568
|
+
kind: "mutation",
|
|
15569
|
+
auth: "admin"
|
|
15570
|
+
}), method(object({
|
|
15571
|
+
since: number().optional(),
|
|
15572
|
+
until: number().optional(),
|
|
15573
|
+
consumer: string().optional(),
|
|
15574
|
+
profileId: string().optional()
|
|
15575
|
+
}), array(LlmUsageRollupSchema)), method(object({}), array(ManagedModelCatalogEntrySchema)), method(object({}), array(LlmRuntimeNodeSchema)), method(object({ nodeId: string() }), array(LlmNodeModelSchema)), method(object({
|
|
15576
|
+
nodeId: string(),
|
|
15577
|
+
model: ManagedModelRefSchema
|
|
15578
|
+
}), _void(), {
|
|
15579
|
+
kind: "mutation",
|
|
15580
|
+
auth: "admin"
|
|
15581
|
+
}), method(object({
|
|
15582
|
+
nodeId: string(),
|
|
15583
|
+
file: string()
|
|
15584
|
+
}), _void(), {
|
|
15585
|
+
kind: "mutation",
|
|
15586
|
+
auth: "admin"
|
|
15587
|
+
}), method(ProfileRefInputSchema, LlmRuntimeStatusSchema), method(ProfileRefInputSchema, LlmRuntimeStatusSchema, {
|
|
15588
|
+
kind: "mutation",
|
|
15589
|
+
auth: "admin"
|
|
15590
|
+
}), method(ProfileRefInputSchema, _void(), {
|
|
15591
|
+
kind: "mutation",
|
|
15592
|
+
auth: "admin"
|
|
15593
|
+
});
|
|
15594
|
+
/**
|
|
15102
15595
|
* Zod schemas for persisted record types.
|
|
15103
15596
|
*
|
|
15104
15597
|
* These schemas serve as the single source of truth for types that are
|
|
@@ -15314,6 +15807,10 @@ var TrackSchema = object({
|
|
|
15314
15807
|
snapshots: array(TrackSnapshotSchema).readonly(),
|
|
15315
15808
|
/** Deduplicated zones the track has entered at least once. */
|
|
15316
15809
|
zonesVisited: array(string()).readonly(),
|
|
15810
|
+
/** Deduplicated set of detector classes observed for this track over its
|
|
15811
|
+
* life (a track may be reclassified, e.g. person→vehicle). Absent on
|
|
15812
|
+
* legacy rows written before class accumulation shipped. */
|
|
15813
|
+
classes: array(string()).readonly().optional(),
|
|
15317
15814
|
/** Cumulative normalized distance travelled (0..1 units = full frame width). */
|
|
15318
15815
|
totalDistance: number(),
|
|
15319
15816
|
state: TrackStateSchema,
|
|
@@ -15475,7 +15972,7 @@ var KeyEventSchema = object({
|
|
|
15475
15972
|
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
15476
15973
|
windowMs: number().optional()
|
|
15477
15974
|
});
|
|
15478
|
-
|
|
15975
|
+
object({
|
|
15479
15976
|
trackId: string(),
|
|
15480
15977
|
className: string(),
|
|
15481
15978
|
confidence: number(),
|
|
@@ -15483,6 +15980,23 @@ var TrackedDetectionSchema = object({
|
|
|
15483
15980
|
zones: array(string()).readonly(),
|
|
15484
15981
|
state: TrackStateSchema
|
|
15485
15982
|
});
|
|
15983
|
+
var OverlayDetectionSchema = looseObject({
|
|
15984
|
+
id: string(),
|
|
15985
|
+
kind: _enum(["first-level", "detail"]),
|
|
15986
|
+
macroClass: string(),
|
|
15987
|
+
score: number(),
|
|
15988
|
+
bbox: object({
|
|
15989
|
+
x: number(),
|
|
15990
|
+
y: number(),
|
|
15991
|
+
width: number(),
|
|
15992
|
+
height: number()
|
|
15993
|
+
}),
|
|
15994
|
+
labels: array(looseObject({
|
|
15995
|
+
label: string(),
|
|
15996
|
+
score: number()
|
|
15997
|
+
})).readonly(),
|
|
15998
|
+
parentId: string().optional()
|
|
15999
|
+
});
|
|
15486
16000
|
var ScoredObjectEventSchema = ObjectEventSchema.extend({ score: number() });
|
|
15487
16001
|
var SearchObjectEventsInput = object({
|
|
15488
16002
|
text: string(),
|
|
@@ -15493,6 +16007,20 @@ var SearchObjectEventsInput = object({
|
|
|
15493
16007
|
limit: number().default(50),
|
|
15494
16008
|
minScore: number().min(0).max(1).default(.2)
|
|
15495
16009
|
});
|
|
16010
|
+
var TrackCascadeCountsSchema = object({
|
|
16011
|
+
/** Persisted track roots deleted (authoritative). */
|
|
16012
|
+
tracks: number().int(),
|
|
16013
|
+
/** Object events removed with their tracks (best-effort; see note above). */
|
|
16014
|
+
events: number().int(),
|
|
16015
|
+
/** Track/face/plate-owned media removed (best-effort). Never identity media. */
|
|
16016
|
+
media: number().int(),
|
|
16017
|
+
/** Unassigned (non-enrolled) face reads removed (best-effort). */
|
|
16018
|
+
faces: number().int(),
|
|
16019
|
+
/** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
|
|
16020
|
+
plates: number().int(),
|
|
16021
|
+
/** Per-track CLIP search vectors removed (best-effort). */
|
|
16022
|
+
embeddings: number().int()
|
|
16023
|
+
});
|
|
15496
16024
|
var pipelineAnalyticsCapability = {
|
|
15497
16025
|
name: "pipeline-analytics",
|
|
15498
16026
|
scope: "device",
|
|
@@ -15546,12 +16074,14 @@ var pipelineAnalyticsCapability = {
|
|
|
15546
16074
|
audio: number().int()
|
|
15547
16075
|
})).readonly()),
|
|
15548
16076
|
/**
|
|
15549
|
-
*
|
|
15550
|
-
*
|
|
15551
|
-
*
|
|
15552
|
-
*
|
|
15553
|
-
*
|
|
15554
|
-
*
|
|
16077
|
+
* @deprecated Prefer `pruneTracksBefore` — the track is the ROOT of the
|
|
16078
|
+
* analytics model and retention must cascade from it (design §5.1). This
|
|
16079
|
+
* event-only prune leaves orphaned tracks/faces/plates/embeddings behind.
|
|
16080
|
+
* Retained as a compat shim for the Phase-B3 recorder orchestration caller,
|
|
16081
|
+
* which prunes events to keep history aligned with available footage and
|
|
16082
|
+
* reads the per-kind counts. Delete all events (motion + object + audio)
|
|
16083
|
+
* for the given device older than `cutoffMs` (exclusive) + their thumbnails
|
|
16084
|
+
* in lockstep; returns per-kind deleted counts.
|
|
15555
16085
|
*/
|
|
15556
16086
|
pruneEventsBefore: method(object({
|
|
15557
16087
|
deviceId: number(),
|
|
@@ -15564,6 +16094,55 @@ var pipelineAnalyticsCapability = {
|
|
|
15564
16094
|
kind: "mutation",
|
|
15565
16095
|
auth: "admin"
|
|
15566
16096
|
}),
|
|
16097
|
+
/**
|
|
16098
|
+
* Track-centric retention entry point (design §5.1). Selects every
|
|
16099
|
+
* persisted track for the device whose `lastSeen < cutoffMs` (paged) and
|
|
16100
|
+
* runs the extensible whole-track deletion cascade (design §3): object
|
|
16101
|
+
* events + their media, track/face/plate-owned media, unassigned face
|
|
16102
|
+
* reads, per-track CLIP embeddings, then the track root LAST. ENROLLED
|
|
16103
|
+
* (assigned) faces/plates and `ownerKind:'identity'` media are exempt —
|
|
16104
|
+
* the durable matching gallery always persists. Fires the per-track
|
|
16105
|
+
* live-state cleanup so a pruned track can't linger in dispatch/overlay
|
|
16106
|
+
* state. Returns per-family deleted counts (`tracks` authoritative).
|
|
16107
|
+
*
|
|
16108
|
+
* Replaces `pruneEventsBefore` as the correct time-based retention prune.
|
|
16109
|
+
*/
|
|
16110
|
+
pruneTracksBefore: method(object({
|
|
16111
|
+
deviceId: number(),
|
|
16112
|
+
cutoffMs: number()
|
|
16113
|
+
}), TrackCascadeCountsSchema, {
|
|
16114
|
+
kind: "mutation",
|
|
16115
|
+
auth: "admin"
|
|
16116
|
+
}),
|
|
16117
|
+
/**
|
|
16118
|
+
* Operator "clean slate" for a device (design §5.3): prune EVERY track for
|
|
16119
|
+
* the device via the same cascade as `pruneTracksBefore` with `cutoffMs =
|
|
16120
|
+
* now`. One call per device — no client-side track enumeration. Enrolled
|
|
16121
|
+
* gallery + identity media are exempt (design §4). Returns per-family
|
|
16122
|
+
* deleted counts.
|
|
16123
|
+
*/
|
|
16124
|
+
wipeAllAnalytics: method(object({ deviceId: number() }), TrackCascadeCountsSchema, {
|
|
16125
|
+
kind: "mutation",
|
|
16126
|
+
auth: "admin"
|
|
16127
|
+
}),
|
|
16128
|
+
/**
|
|
16129
|
+
* Delete whole tracks (object events) by id for the given device,
|
|
16130
|
+
* cascading their media in lockstep. Returns the number of tracks
|
|
16131
|
+
* actually deleted plus the ids that could not be removed.
|
|
16132
|
+
*
|
|
16133
|
+
* Operator-driven from the DI Events page (batch delete). Routes through
|
|
16134
|
+
* the same widened track-deletion cascade (design §5.2).
|
|
16135
|
+
*/
|
|
16136
|
+
deleteTracks: method(object({
|
|
16137
|
+
deviceId: number(),
|
|
16138
|
+
trackIds: array(string()).min(1)
|
|
16139
|
+
}), object({
|
|
16140
|
+
deleted: number().int(),
|
|
16141
|
+
failed: array(string()).readonly()
|
|
16142
|
+
}), {
|
|
16143
|
+
kind: "mutation",
|
|
16144
|
+
auth: "admin"
|
|
16145
|
+
}),
|
|
15567
16146
|
getEventMedia: method(object({
|
|
15568
16147
|
eventId: string(),
|
|
15569
16148
|
kind: MediaFileKindEnum.optional()
|
|
@@ -15581,17 +16160,19 @@ var pipelineAnalyticsCapability = {
|
|
|
15581
16160
|
},
|
|
15582
16161
|
events: {
|
|
15583
16162
|
/**
|
|
15584
|
-
* Enriched frame emitted after refinement
|
|
15585
|
-
*
|
|
15586
|
-
*
|
|
15587
|
-
*
|
|
16163
|
+
* Enriched frame emitted after refinement — the live-overlay source of
|
|
16164
|
+
* truth (two-plane re-injection). Carries the frame's detections in the
|
|
16165
|
+
* `ObjectDetection` wire shape: first-level roots (with track info +
|
|
16166
|
+
* enrichment labels) plus synthesized `kind:'detail'` face/plate entries
|
|
16167
|
+
* re-projected from per-track detail state, so stream overlays render
|
|
16168
|
+
* boxes + recognized names without querying full Track state.
|
|
15588
16169
|
*/
|
|
15589
16170
|
onFrameTracked: { data: object({
|
|
15590
16171
|
deviceId: number(),
|
|
15591
16172
|
timestamp: number(),
|
|
15592
16173
|
frameWidth: number(),
|
|
15593
16174
|
frameHeight: number(),
|
|
15594
|
-
detections: array(
|
|
16175
|
+
detections: array(OverlayDetectionSchema).readonly()
|
|
15595
16176
|
}) },
|
|
15596
16177
|
/** Track entered active state (first-seen). */
|
|
15597
16178
|
onTrackStarted: { data: object({
|
|
@@ -18404,6 +18985,24 @@ DeviceType.Camera, method(object({
|
|
|
18404
18985
|
deviceId: number(),
|
|
18405
18986
|
status: OsdStatusSchema
|
|
18406
18987
|
});
|
|
18988
|
+
var VehicleSchema = object({
|
|
18989
|
+
id: string(),
|
|
18990
|
+
name: string(),
|
|
18991
|
+
sampleCount: number().int().nonnegative(),
|
|
18992
|
+
coverMediaKey: string().optional(),
|
|
18993
|
+
/** Inline base64 of the cover sample's plate crop, resolved from `coverMediaKey`. */
|
|
18994
|
+
coverBase64: string().optional()
|
|
18995
|
+
});
|
|
18996
|
+
var VehicleSampleInfoSchema = object({
|
|
18997
|
+
id: string(),
|
|
18998
|
+
/** The plate text this sample enrolled (self-labeling — no embedding). */
|
|
18999
|
+
text: string(),
|
|
19000
|
+
/** OCR confidence of the enrolled read (0..1). */
|
|
19001
|
+
score: number(),
|
|
19002
|
+
addedAt: number().int(),
|
|
19003
|
+
deviceId: number().int().optional(),
|
|
19004
|
+
base64: string().optional()
|
|
19005
|
+
});
|
|
18407
19006
|
var PlateInfoSchema = object({
|
|
18408
19007
|
plateId: string(),
|
|
18409
19008
|
deviceId: number().int(),
|
|
@@ -18415,6 +19014,16 @@ var PlateInfoSchema = object({
|
|
|
18415
19014
|
score: number(),
|
|
18416
19015
|
/** True when the text was manually corrected (exempt from retention). */
|
|
18417
19016
|
corrected: boolean(),
|
|
19017
|
+
/** Recognized vehicle id when a matcher lookup named this read (SQL NULL → absent). */
|
|
19018
|
+
recognizedVehicleId: string().optional(),
|
|
19019
|
+
/** Resolved vehicle name for `recognizedVehicleId` (UI convenience). */
|
|
19020
|
+
vehicleName: string().optional(),
|
|
19021
|
+
/** True once the read was assigned to a vehicle (enrolled as a sample). */
|
|
19022
|
+
assigned: boolean(),
|
|
19023
|
+
/** keyFrame parity: the plate bbox (pixel space) on the native key frame. */
|
|
19024
|
+
plateBbox: BoundingBoxSchema.optional(),
|
|
19025
|
+
/** keyFrame parity: MediaStore key of the track's native-resolution key frame. */
|
|
19026
|
+
keyFrameMediaKey: string().optional(),
|
|
18418
19027
|
base64: string().optional()
|
|
18419
19028
|
});
|
|
18420
19029
|
var MediaFileLiteSchema = object({
|
|
@@ -18476,6 +19085,58 @@ var plateGalleryCapability = {
|
|
|
18476
19085
|
deletePlate: method(object({ plateId: string() }), _void(), {
|
|
18477
19086
|
kind: "mutation",
|
|
18478
19087
|
auth: "admin"
|
|
19088
|
+
}),
|
|
19089
|
+
listVehicles: method(_void(), array(VehicleSchema).readonly()),
|
|
19090
|
+
createVehicle: method(object({ name: string().min(1) }), VehicleSchema, {
|
|
19091
|
+
kind: "mutation",
|
|
19092
|
+
auth: "admin"
|
|
19093
|
+
}),
|
|
19094
|
+
renameVehicle: method(object({
|
|
19095
|
+
id: string(),
|
|
19096
|
+
name: string().min(1)
|
|
19097
|
+
}), _void(), {
|
|
19098
|
+
kind: "mutation",
|
|
19099
|
+
auth: "admin"
|
|
19100
|
+
}),
|
|
19101
|
+
deleteVehicle: method(object({ id: string() }), _void(), {
|
|
19102
|
+
kind: "mutation",
|
|
19103
|
+
auth: "admin"
|
|
19104
|
+
}),
|
|
19105
|
+
listVehicleSamples: method(object({ vehicleId: string() }), array(VehicleSampleInfoSchema).readonly()),
|
|
19106
|
+
removeVehicleSample: method(object({
|
|
19107
|
+
vehicleId: string(),
|
|
19108
|
+
sampleId: string()
|
|
19109
|
+
}), _void(), {
|
|
19110
|
+
kind: "mutation",
|
|
19111
|
+
auth: "admin"
|
|
19112
|
+
}),
|
|
19113
|
+
assignPlate: method(object({
|
|
19114
|
+
plateId: string(),
|
|
19115
|
+
vehicleId: string()
|
|
19116
|
+
}), _void(), {
|
|
19117
|
+
kind: "mutation",
|
|
19118
|
+
auth: "admin"
|
|
19119
|
+
}),
|
|
19120
|
+
unassignPlate: method(object({ plateId: string() }), _void(), {
|
|
19121
|
+
kind: "mutation",
|
|
19122
|
+
auth: "admin"
|
|
19123
|
+
}),
|
|
19124
|
+
assignPlates: method(object({
|
|
19125
|
+
plateIds: array(string()).min(1),
|
|
19126
|
+
vehicleId: string()
|
|
19127
|
+
}), object({
|
|
19128
|
+
assigned: number().int(),
|
|
19129
|
+
failed: array(string()).readonly()
|
|
19130
|
+
}), {
|
|
19131
|
+
kind: "mutation",
|
|
19132
|
+
auth: "admin"
|
|
19133
|
+
}),
|
|
19134
|
+
unassignPlates: method(object({ plateIds: array(string()).min(1) }), object({
|
|
19135
|
+
unassigned: number().int(),
|
|
19136
|
+
failed: array(string()).readonly()
|
|
19137
|
+
}), {
|
|
19138
|
+
kind: "mutation",
|
|
19139
|
+
auth: "admin"
|
|
18479
19140
|
})
|
|
18480
19141
|
}
|
|
18481
19142
|
};
|
|
@@ -21023,6 +21684,168 @@ Object.freeze({
|
|
|
21023
21684
|
addonId: null,
|
|
21024
21685
|
access: "create"
|
|
21025
21686
|
},
|
|
21687
|
+
"llm.deleteModel": {
|
|
21688
|
+
capName: "llm",
|
|
21689
|
+
capScope: "system",
|
|
21690
|
+
addonId: null,
|
|
21691
|
+
access: "delete"
|
|
21692
|
+
},
|
|
21693
|
+
"llm.deleteProfile": {
|
|
21694
|
+
capName: "llm",
|
|
21695
|
+
capScope: "system",
|
|
21696
|
+
addonId: null,
|
|
21697
|
+
access: "delete"
|
|
21698
|
+
},
|
|
21699
|
+
"llm.generate": {
|
|
21700
|
+
capName: "llm",
|
|
21701
|
+
capScope: "system",
|
|
21702
|
+
addonId: null,
|
|
21703
|
+
access: "create"
|
|
21704
|
+
},
|
|
21705
|
+
"llm.generateVision": {
|
|
21706
|
+
capName: "llm",
|
|
21707
|
+
capScope: "system",
|
|
21708
|
+
addonId: null,
|
|
21709
|
+
access: "create"
|
|
21710
|
+
},
|
|
21711
|
+
"llm.getDefaults": {
|
|
21712
|
+
capName: "llm",
|
|
21713
|
+
capScope: "system",
|
|
21714
|
+
addonId: null,
|
|
21715
|
+
access: "view"
|
|
21716
|
+
},
|
|
21717
|
+
"llm.getRuntimeStatus": {
|
|
21718
|
+
capName: "llm",
|
|
21719
|
+
capScope: "system",
|
|
21720
|
+
addonId: null,
|
|
21721
|
+
access: "view"
|
|
21722
|
+
},
|
|
21723
|
+
"llm.getUsage": {
|
|
21724
|
+
capName: "llm",
|
|
21725
|
+
capScope: "system",
|
|
21726
|
+
addonId: null,
|
|
21727
|
+
access: "view"
|
|
21728
|
+
},
|
|
21729
|
+
"llm.installModel": {
|
|
21730
|
+
capName: "llm",
|
|
21731
|
+
capScope: "system",
|
|
21732
|
+
addonId: null,
|
|
21733
|
+
access: "create"
|
|
21734
|
+
},
|
|
21735
|
+
"llm.listModelCatalog": {
|
|
21736
|
+
capName: "llm",
|
|
21737
|
+
capScope: "system",
|
|
21738
|
+
addonId: null,
|
|
21739
|
+
access: "view"
|
|
21740
|
+
},
|
|
21741
|
+
"llm.listModels": {
|
|
21742
|
+
capName: "llm",
|
|
21743
|
+
capScope: "system",
|
|
21744
|
+
addonId: null,
|
|
21745
|
+
access: "view"
|
|
21746
|
+
},
|
|
21747
|
+
"llm.listNodeModels": {
|
|
21748
|
+
capName: "llm",
|
|
21749
|
+
capScope: "system",
|
|
21750
|
+
addonId: null,
|
|
21751
|
+
access: "view"
|
|
21752
|
+
},
|
|
21753
|
+
"llm.listProfileKinds": {
|
|
21754
|
+
capName: "llm",
|
|
21755
|
+
capScope: "system",
|
|
21756
|
+
addonId: null,
|
|
21757
|
+
access: "view"
|
|
21758
|
+
},
|
|
21759
|
+
"llm.listProfiles": {
|
|
21760
|
+
capName: "llm",
|
|
21761
|
+
capScope: "system",
|
|
21762
|
+
addonId: null,
|
|
21763
|
+
access: "view"
|
|
21764
|
+
},
|
|
21765
|
+
"llm.listRuntimeNodes": {
|
|
21766
|
+
capName: "llm",
|
|
21767
|
+
capScope: "system",
|
|
21768
|
+
addonId: null,
|
|
21769
|
+
access: "view"
|
|
21770
|
+
},
|
|
21771
|
+
"llm.setDefault": {
|
|
21772
|
+
capName: "llm",
|
|
21773
|
+
capScope: "system",
|
|
21774
|
+
addonId: null,
|
|
21775
|
+
access: "create"
|
|
21776
|
+
},
|
|
21777
|
+
"llm.startRuntime": {
|
|
21778
|
+
capName: "llm",
|
|
21779
|
+
capScope: "system",
|
|
21780
|
+
addonId: null,
|
|
21781
|
+
access: "create"
|
|
21782
|
+
},
|
|
21783
|
+
"llm.stopRuntime": {
|
|
21784
|
+
capName: "llm",
|
|
21785
|
+
capScope: "system",
|
|
21786
|
+
addonId: null,
|
|
21787
|
+
access: "create"
|
|
21788
|
+
},
|
|
21789
|
+
"llm.testProfile": {
|
|
21790
|
+
capName: "llm",
|
|
21791
|
+
capScope: "system",
|
|
21792
|
+
addonId: null,
|
|
21793
|
+
access: "create"
|
|
21794
|
+
},
|
|
21795
|
+
"llm.upsertProfile": {
|
|
21796
|
+
capName: "llm",
|
|
21797
|
+
capScope: "system",
|
|
21798
|
+
addonId: null,
|
|
21799
|
+
access: "create"
|
|
21800
|
+
},
|
|
21801
|
+
"llmRuntime.complete": {
|
|
21802
|
+
capName: "llm-runtime",
|
|
21803
|
+
capScope: "system",
|
|
21804
|
+
addonId: null,
|
|
21805
|
+
access: "create"
|
|
21806
|
+
},
|
|
21807
|
+
"llmRuntime.deleteModel": {
|
|
21808
|
+
capName: "llm-runtime",
|
|
21809
|
+
capScope: "system",
|
|
21810
|
+
addonId: null,
|
|
21811
|
+
access: "delete"
|
|
21812
|
+
},
|
|
21813
|
+
"llmRuntime.ensureStarted": {
|
|
21814
|
+
capName: "llm-runtime",
|
|
21815
|
+
capScope: "system",
|
|
21816
|
+
addonId: null,
|
|
21817
|
+
access: "create"
|
|
21818
|
+
},
|
|
21819
|
+
"llmRuntime.getDiskUsage": {
|
|
21820
|
+
capName: "llm-runtime",
|
|
21821
|
+
capScope: "system",
|
|
21822
|
+
addonId: null,
|
|
21823
|
+
access: "view"
|
|
21824
|
+
},
|
|
21825
|
+
"llmRuntime.installModel": {
|
|
21826
|
+
capName: "llm-runtime",
|
|
21827
|
+
capScope: "system",
|
|
21828
|
+
addonId: null,
|
|
21829
|
+
access: "create"
|
|
21830
|
+
},
|
|
21831
|
+
"llmRuntime.listLocalModels": {
|
|
21832
|
+
capName: "llm-runtime",
|
|
21833
|
+
capScope: "system",
|
|
21834
|
+
addonId: null,
|
|
21835
|
+
access: "view"
|
|
21836
|
+
},
|
|
21837
|
+
"llmRuntime.status": {
|
|
21838
|
+
capName: "llm-runtime",
|
|
21839
|
+
capScope: "system",
|
|
21840
|
+
addonId: null,
|
|
21841
|
+
access: "view"
|
|
21842
|
+
},
|
|
21843
|
+
"llmRuntime.stop": {
|
|
21844
|
+
capName: "llm-runtime",
|
|
21845
|
+
capScope: "system",
|
|
21846
|
+
addonId: null,
|
|
21847
|
+
access: "create"
|
|
21848
|
+
},
|
|
21026
21849
|
"localNetwork.getAllowedAddresses": {
|
|
21027
21850
|
capName: "local-network",
|
|
21028
21851
|
capScope: "system",
|
|
@@ -21653,6 +22476,12 @@ Object.freeze({
|
|
|
21653
22476
|
addonId: null,
|
|
21654
22477
|
access: "delete"
|
|
21655
22478
|
},
|
|
22479
|
+
"pipelineAnalytics.deleteTracks": {
|
|
22480
|
+
capName: "pipeline-analytics",
|
|
22481
|
+
capScope: "device",
|
|
22482
|
+
addonId: null,
|
|
22483
|
+
access: "delete"
|
|
22484
|
+
},
|
|
21656
22485
|
"pipelineAnalytics.getActiveTracks": {
|
|
21657
22486
|
capName: "pipeline-analytics",
|
|
21658
22487
|
capScope: "device",
|
|
@@ -21719,12 +22548,24 @@ Object.freeze({
|
|
|
21719
22548
|
addonId: null,
|
|
21720
22549
|
access: "create"
|
|
21721
22550
|
},
|
|
22551
|
+
"pipelineAnalytics.pruneTracksBefore": {
|
|
22552
|
+
capName: "pipeline-analytics",
|
|
22553
|
+
capScope: "device",
|
|
22554
|
+
addonId: null,
|
|
22555
|
+
access: "create"
|
|
22556
|
+
},
|
|
21722
22557
|
"pipelineAnalytics.searchObjectEvents": {
|
|
21723
22558
|
capName: "pipeline-analytics",
|
|
21724
22559
|
capScope: "device",
|
|
21725
22560
|
addonId: null,
|
|
21726
22561
|
access: "view"
|
|
21727
22562
|
},
|
|
22563
|
+
"pipelineAnalytics.wipeAllAnalytics": {
|
|
22564
|
+
capName: "pipeline-analytics",
|
|
22565
|
+
capScope: "device",
|
|
22566
|
+
addonId: null,
|
|
22567
|
+
access: "delete"
|
|
22568
|
+
},
|
|
21728
22569
|
"pipelineExecutor.cacheFrameInPool": {
|
|
21729
22570
|
capName: "pipeline-executor",
|
|
21730
22571
|
capScope: "system",
|
|
@@ -22229,18 +23070,42 @@ Object.freeze({
|
|
|
22229
23070
|
addonId: null,
|
|
22230
23071
|
access: "create"
|
|
22231
23072
|
},
|
|
23073
|
+
"plateGallery.assignPlate": {
|
|
23074
|
+
capName: "plate-gallery",
|
|
23075
|
+
capScope: "system",
|
|
23076
|
+
addonId: null,
|
|
23077
|
+
access: "create"
|
|
23078
|
+
},
|
|
23079
|
+
"plateGallery.assignPlates": {
|
|
23080
|
+
capName: "plate-gallery",
|
|
23081
|
+
capScope: "system",
|
|
23082
|
+
addonId: null,
|
|
23083
|
+
access: "create"
|
|
23084
|
+
},
|
|
22232
23085
|
"plateGallery.correctPlateText": {
|
|
22233
23086
|
capName: "plate-gallery",
|
|
22234
23087
|
capScope: "system",
|
|
22235
23088
|
addonId: null,
|
|
22236
23089
|
access: "create"
|
|
22237
23090
|
},
|
|
23091
|
+
"plateGallery.createVehicle": {
|
|
23092
|
+
capName: "plate-gallery",
|
|
23093
|
+
capScope: "system",
|
|
23094
|
+
addonId: null,
|
|
23095
|
+
access: "create"
|
|
23096
|
+
},
|
|
22238
23097
|
"plateGallery.deletePlate": {
|
|
22239
23098
|
capName: "plate-gallery",
|
|
22240
23099
|
capScope: "system",
|
|
22241
23100
|
addonId: null,
|
|
22242
23101
|
access: "delete"
|
|
22243
23102
|
},
|
|
23103
|
+
"plateGallery.deleteVehicle": {
|
|
23104
|
+
capName: "plate-gallery",
|
|
23105
|
+
capScope: "system",
|
|
23106
|
+
addonId: null,
|
|
23107
|
+
access: "delete"
|
|
23108
|
+
},
|
|
22244
23109
|
"plateGallery.getPlateByTrack": {
|
|
22245
23110
|
capName: "plate-gallery",
|
|
22246
23111
|
capScope: "system",
|
|
@@ -22259,6 +23124,30 @@ Object.freeze({
|
|
|
22259
23124
|
addonId: null,
|
|
22260
23125
|
access: "view"
|
|
22261
23126
|
},
|
|
23127
|
+
"plateGallery.listVehicles": {
|
|
23128
|
+
capName: "plate-gallery",
|
|
23129
|
+
capScope: "system",
|
|
23130
|
+
addonId: null,
|
|
23131
|
+
access: "view"
|
|
23132
|
+
},
|
|
23133
|
+
"plateGallery.listVehicleSamples": {
|
|
23134
|
+
capName: "plate-gallery",
|
|
23135
|
+
capScope: "system",
|
|
23136
|
+
addonId: null,
|
|
23137
|
+
access: "view"
|
|
23138
|
+
},
|
|
23139
|
+
"plateGallery.removeVehicleSample": {
|
|
23140
|
+
capName: "plate-gallery",
|
|
23141
|
+
capScope: "system",
|
|
23142
|
+
addonId: null,
|
|
23143
|
+
access: "delete"
|
|
23144
|
+
},
|
|
23145
|
+
"plateGallery.renameVehicle": {
|
|
23146
|
+
capName: "plate-gallery",
|
|
23147
|
+
capScope: "system",
|
|
23148
|
+
addonId: null,
|
|
23149
|
+
access: "create"
|
|
23150
|
+
},
|
|
22262
23151
|
"plateGallery.searchPlates": {
|
|
22263
23152
|
capName: "plate-gallery",
|
|
22264
23153
|
capScope: "system",
|
|
@@ -22271,6 +23160,18 @@ Object.freeze({
|
|
|
22271
23160
|
addonId: null,
|
|
22272
23161
|
access: "view"
|
|
22273
23162
|
},
|
|
23163
|
+
"plateGallery.unassignPlate": {
|
|
23164
|
+
capName: "plate-gallery",
|
|
23165
|
+
capScope: "system",
|
|
23166
|
+
addonId: null,
|
|
23167
|
+
access: "create"
|
|
23168
|
+
},
|
|
23169
|
+
"plateGallery.unassignPlates": {
|
|
23170
|
+
capName: "plate-gallery",
|
|
23171
|
+
capScope: "system",
|
|
23172
|
+
addonId: null,
|
|
23173
|
+
access: "create"
|
|
23174
|
+
},
|
|
22274
23175
|
"platformProbe.getCapabilities": {
|
|
22275
23176
|
capName: "platform-probe",
|
|
22276
23177
|
capScope: "system",
|
|
@@ -22463,6 +23364,48 @@ Object.freeze({
|
|
|
22463
23364
|
addonId: null,
|
|
22464
23365
|
access: "create"
|
|
22465
23366
|
},
|
|
23367
|
+
"sceneMonitor.captureReference": {
|
|
23368
|
+
capName: "scene-monitor",
|
|
23369
|
+
capScope: "device",
|
|
23370
|
+
addonId: null,
|
|
23371
|
+
access: "create"
|
|
23372
|
+
},
|
|
23373
|
+
"sceneMonitor.createScene": {
|
|
23374
|
+
capName: "scene-monitor",
|
|
23375
|
+
capScope: "device",
|
|
23376
|
+
addonId: null,
|
|
23377
|
+
access: "create"
|
|
23378
|
+
},
|
|
23379
|
+
"sceneMonitor.deleteReference": {
|
|
23380
|
+
capName: "scene-monitor",
|
|
23381
|
+
capScope: "device",
|
|
23382
|
+
addonId: null,
|
|
23383
|
+
access: "delete"
|
|
23384
|
+
},
|
|
23385
|
+
"sceneMonitor.deleteScene": {
|
|
23386
|
+
capName: "scene-monitor",
|
|
23387
|
+
capScope: "device",
|
|
23388
|
+
addonId: null,
|
|
23389
|
+
access: "delete"
|
|
23390
|
+
},
|
|
23391
|
+
"sceneMonitor.listScenes": {
|
|
23392
|
+
capName: "scene-monitor",
|
|
23393
|
+
capScope: "device",
|
|
23394
|
+
addonId: null,
|
|
23395
|
+
access: "view"
|
|
23396
|
+
},
|
|
23397
|
+
"sceneMonitor.recheckNow": {
|
|
23398
|
+
capName: "scene-monitor",
|
|
23399
|
+
capScope: "device",
|
|
23400
|
+
addonId: null,
|
|
23401
|
+
access: "create"
|
|
23402
|
+
},
|
|
23403
|
+
"sceneMonitor.updateScene": {
|
|
23404
|
+
capName: "scene-monitor",
|
|
23405
|
+
capScope: "device",
|
|
23406
|
+
addonId: null,
|
|
23407
|
+
access: "create"
|
|
23408
|
+
},
|
|
22466
23409
|
"scriptRunner.run": {
|
|
22467
23410
|
capName: "script-runner",
|
|
22468
23411
|
capScope: "device",
|
|
@@ -23547,6 +24490,7 @@ Object.freeze({
|
|
|
23547
24490
|
Object.freeze({
|
|
23548
24491
|
"broker": "broker",
|
|
23549
24492
|
"device-export": "device-export",
|
|
24493
|
+
"llm": "ai",
|
|
23550
24494
|
"mesh-network": "mesh",
|
|
23551
24495
|
"mqtt-broker": "broker",
|
|
23552
24496
|
"network-access": "ingress",
|
|
@@ -23579,4 +24523,4 @@ object({
|
|
|
23579
24523
|
schemaVersion: literal(1)
|
|
23580
24524
|
});
|
|
23581
24525
|
//#endregion
|
|
23582
|
-
export {
|
|
24526
|
+
export { string as S, createEvent as _, embeddingEncoderCapability as a, number as b, nodePin as c, videoclipsCapability as d, zoneAnalyticsCapability as f, EventCategory as g, DeviceType as h, cosineSimilarity as i, pipelineAnalyticsCapability as l, BaseAddon as m, addonWidgetsSourceCapability as n, faceGalleryCapability as o, errMsg as p, audioMetricsCapability as r, hfModelUrl as s, EVENT_PAD_MS as t, plateGalleryCapability as u, hydrateSchema as v, object as x, boolean as y };
|