@camstack/system 1.1.47 → 1.1.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon-runner.js +15 -3
- package/dist/addon-runner.mjs +15 -3
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
- package/dist/builtins/alerts/alerts.addon.js +1 -1
- package/dist/builtins/alerts/alerts.addon.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/device-manager/device-manager.addon.js +1 -1
- package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/local-auth/local-auth.addon.js +1 -1
- package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
- package/dist/builtins/local-network/local-network.addon.js +1 -1
- package/dist/builtins/local-network/local-network.addon.mjs +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
- package/dist/builtins/platform-probe/index.js +1 -1
- package/dist/builtins/platform-probe/index.mjs +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
- package/dist/builtins/snapshot/index.js +1 -1
- package/dist/builtins/snapshot/index.mjs +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +1 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
- package/dist/builtins/system-config/system-config.addon.js +1 -1
- package/dist/builtins/system-config/system-config.addon.mjs +1 -1
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{dist-BD7BE4o6.mjs → dist-8phgmJ6b.mjs} +1131 -41
- package/dist/{dist-fw1in_1Q.js → dist-BDV1WKRg.js} +1142 -46
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -2
- package/dist/index.mjs +3 -3
- package/dist/kernel/moleculer/child-cap-dispatch.d.ts +12 -0
- package/dist/{manifest-python-deps-Rj3f1zyf.mjs → manifest-python-deps-B09I9ems.mjs} +1 -1
- package/dist/{manifest-python-deps-Ciq2HL8D.js → manifest-python-deps-DAA0ULwT.js} +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
let zod = require("zod");
|
|
2
|
-
//#region ../types/dist/sleep-
|
|
2
|
+
//#region ../types/dist/sleep-DkhOVOjW.mjs
|
|
3
3
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4
4
|
EventCategory["SystemBoot"] = "system.boot";
|
|
5
5
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -409,10 +409,43 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
409
409
|
EventCategory["EnrichmentEmbeddingStored"] = "enrichment.embedding.stored";
|
|
410
410
|
EventCategory["EnrichmentSceneStateChanged"] = "enrichment.scene.state-changed";
|
|
411
411
|
EventCategory["EnrichmentActivitySummary"] = "enrichment.activity.summary";
|
|
412
|
+
/**
|
|
413
|
+
* Unified track-lifecycle event: ONE category carrying `phase:
|
|
414
|
+
* 'start' | 'update' | 'end'` with a rich, typed
|
|
415
|
+
* `PipelineAnalyticsTrackLifecyclePayload`. Supersedes the thin
|
|
416
|
+
* `PipelineAnalyticsTrackStarted` / `PipelineAnalyticsTrackEnded`
|
|
417
|
+
* pair — a consumer subscribes once and branches on `phase`.
|
|
418
|
+
*/
|
|
419
|
+
EventCategory["PipelineAnalyticsTrackLifecycle"] = "pipeline-analytics.track-lifecycle";
|
|
420
|
+
/**
|
|
421
|
+
* @deprecated Superseded by {@link PipelineAnalyticsTrackLifecycle}
|
|
422
|
+
* (`phase:'start'`). Kept as a soft alias — no known subscribers.
|
|
423
|
+
*/
|
|
412
424
|
EventCategory["PipelineAnalyticsTrackStarted"] = "pipeline-analytics.track-started";
|
|
425
|
+
/**
|
|
426
|
+
* @deprecated Superseded by {@link PipelineAnalyticsTrackLifecycle}
|
|
427
|
+
* (`phase:'end'`). Kept as a soft alias — no known subscribers.
|
|
428
|
+
*/
|
|
413
429
|
EventCategory["PipelineAnalyticsTrackEnded"] = "pipeline-analytics.track-ended";
|
|
414
430
|
EventCategory["PipelineAnalyticsDetectionEvent"] = "pipeline-analytics.detection-event";
|
|
415
431
|
EventCategory["PipelineAnalyticsFrameTracked"] = "pipeline-analytics.frame-tracked";
|
|
432
|
+
/**
|
|
433
|
+
* Fired by `addon-post-analysis` whenever a gallery face row changes:
|
|
434
|
+
* `kind:'buffered'` a new detected face was persisted, `'assigned'` /
|
|
435
|
+
* `'unassigned'` its identity link changed, `'deleted'` the row was
|
|
436
|
+
* removed. Telemetry semantics (D8): a lost event only delays a refresh,
|
|
437
|
+
* never a correctness issue. Payload `PipelineAnalyticsFaceGalleryChangedPayload`.
|
|
438
|
+
*/
|
|
439
|
+
EventCategory["PipelineAnalyticsFaceGalleryChanged"] = "pipeline-analytics.face-gallery-changed";
|
|
440
|
+
/**
|
|
441
|
+
* Fired by `addon-post-analysis` whenever a gallery plate row changes:
|
|
442
|
+
* `kind:'buffered'` a new read was persisted (`PlateRecognizer.onTrackEnd`),
|
|
443
|
+
* `'assigned'` / `'unassigned'` its vehicle link changed
|
|
444
|
+
* (`PlateGalleryProvider`), `'deleted'` the row was removed. Telemetry
|
|
445
|
+
* semantics (D8): a lost event only delays a refresh, never a correctness
|
|
446
|
+
* issue. Payload `PipelineAnalyticsPlateGalleryChangedPayload`.
|
|
447
|
+
*/
|
|
448
|
+
EventCategory["PipelineAnalyticsPlateGalleryChanged"] = "pipeline-analytics.plate-gallery-changed";
|
|
416
449
|
EventCategory["FrigateLiveEvent"] = "frigate.live-event";
|
|
417
450
|
EventCategory["CameraStreamsProfileSlotsChanged"] = "camera-streams.onProfileSlotsChanged";
|
|
418
451
|
/**
|
|
@@ -2860,7 +2893,8 @@ var MODEL_FORMATS = [
|
|
|
2860
2893
|
"coreml",
|
|
2861
2894
|
"openvino",
|
|
2862
2895
|
"tflite",
|
|
2863
|
-
"pt"
|
|
2896
|
+
"pt",
|
|
2897
|
+
"gguf"
|
|
2864
2898
|
];
|
|
2865
2899
|
/**
|
|
2866
2900
|
* Multi-file format payload.
|
|
@@ -2904,7 +2938,8 @@ var ModelFormatsSchema = zod.z.object({
|
|
|
2904
2938
|
coreml: ModelFormatEntrySchema.optional(),
|
|
2905
2939
|
openvino: ModelFormatEntrySchema.optional(),
|
|
2906
2940
|
tflite: ModelFormatEntrySchema.optional(),
|
|
2907
|
-
pt: ModelFormatEntrySchema.optional()
|
|
2941
|
+
pt: ModelFormatEntrySchema.optional(),
|
|
2942
|
+
gguf: ModelFormatEntrySchema.optional()
|
|
2908
2943
|
});
|
|
2909
2944
|
/**
|
|
2910
2945
|
* Variant-selector grouping axes. Shared by the full `ModelCatalogEntry` and by
|
|
@@ -7849,7 +7884,8 @@ var ModelFormatSchema$1 = zod.z.enum([
|
|
|
7849
7884
|
"coreml",
|
|
7850
7885
|
"openvino",
|
|
7851
7886
|
"tflite",
|
|
7852
|
-
"pt"
|
|
7887
|
+
"pt",
|
|
7888
|
+
"gguf"
|
|
7853
7889
|
]);
|
|
7854
7890
|
var PipelineSlotSchema = zod.z.enum([
|
|
7855
7891
|
"detector",
|
|
@@ -8214,7 +8250,15 @@ var pipelineExecutorCapability = {
|
|
|
8214
8250
|
image: zod.z.instanceof(Uint8Array).optional(),
|
|
8215
8251
|
referenceImage: zod.z.string().optional(),
|
|
8216
8252
|
deviceId: zod.z.number().optional(),
|
|
8217
|
-
sessionId: zod.z.string().optional()
|
|
8253
|
+
sessionId: zod.z.string().optional(),
|
|
8254
|
+
/**
|
|
8255
|
+
* Execution plane. 'full' (default) runs the whole tree — benchmark,
|
|
8256
|
+
* reference-image, and detail-subtree calls. 'frame' is the live
|
|
8257
|
+
* per-frame dispatch: ONLY root-plane steps run; crop children
|
|
8258
|
+
* (inputClasses ≠ null) are skipped and served per-track via
|
|
8259
|
+
* pipelineRunner.runDetailSubtree (two-plane design).
|
|
8260
|
+
*/
|
|
8261
|
+
plane: zod.z.enum(["full", "frame"]).optional()
|
|
8218
8262
|
}), PipelineRunResultBridge, { kind: "mutation" }),
|
|
8219
8263
|
/**
|
|
8220
8264
|
* Batched run — N raw frames packed into one cap call. The provider
|
|
@@ -8444,6 +8488,28 @@ var NativeCropResultSchema = zod.z.object({
|
|
|
8444
8488
|
width: zod.z.number().int().positive(),
|
|
8445
8489
|
height: zod.z.number().int().positive()
|
|
8446
8490
|
});
|
|
8491
|
+
/** Parent detection context passed to `runDetailSubtree` — the crop's
|
|
8492
|
+
* originating detection, in FRAME-space coordinates. Reuses
|
|
8493
|
+
* `NativeCropBboxSchema`'s `{x,y,w,h}` shape (same numeric fields; here
|
|
8494
|
+
* the coordinates are frame-space rather than getNativeCrop's
|
|
8495
|
+
* normalized [0,1] convention). */
|
|
8496
|
+
var DetailParentSchema = zod.z.object({
|
|
8497
|
+
bbox: NativeCropBboxSchema,
|
|
8498
|
+
className: zod.z.string()
|
|
8499
|
+
});
|
|
8500
|
+
/** One child-step result from `runDetailSubtree` — an embedding, label,
|
|
8501
|
+
* or refined detection produced by running the crop-subtree on a
|
|
8502
|
+
* single tracked detection. */
|
|
8503
|
+
var DetailResultSchema = zod.z.object({
|
|
8504
|
+
stepId: zod.z.string(),
|
|
8505
|
+
className: zod.z.string(),
|
|
8506
|
+
score: zod.z.number(),
|
|
8507
|
+
/** FRAME-space bbox (already mapped back from crop space). */
|
|
8508
|
+
bbox: NativeCropBboxSchema.optional(),
|
|
8509
|
+
embedding: zod.z.string().optional(),
|
|
8510
|
+
label: zod.z.string().optional(),
|
|
8511
|
+
alignedCropJpeg: zod.z.string().optional()
|
|
8512
|
+
});
|
|
8447
8513
|
/**
|
|
8448
8514
|
* Per-camera tunable ranges + defaults. Single source of truth used
|
|
8449
8515
|
* by both the Zod data schema (validation + default fallback) and
|
|
@@ -8763,7 +8829,27 @@ var pipelineRunnerCapability = {
|
|
|
8763
8829
|
handle: FrameHandleSchema,
|
|
8764
8830
|
bbox: NativeCropBboxSchema,
|
|
8765
8831
|
maxWidth: zod.z.number().int().positive().optional()
|
|
8766
|
-
}), NativeCropResultSchema.nullable())
|
|
8832
|
+
}), NativeCropResultSchema.nullable()),
|
|
8833
|
+
/**
|
|
8834
|
+
* Two-plane design: run the DETAIL subtree (crop children —
|
|
8835
|
+
* embedding, classifier, refiner steps whose `inputClasses ≠ null`)
|
|
8836
|
+
* for a single tracked detection. The per-frame plane (`runPipeline`
|
|
8837
|
+
* with `plane: 'frame'`) skips crop children entirely; a track-level
|
|
8838
|
+
* caller invokes this per-track, on its own cadence, instead of on
|
|
8839
|
+
* every frame. Takes either a `frameHandle` (shm lease/session —
|
|
8840
|
+
* preferred, zero-copy) or a `cropJpeg` fallback when the lease/
|
|
8841
|
+
* session backing the frame is already gone. `steps` narrows which
|
|
8842
|
+
* configured children to run (default: all configured children for
|
|
8843
|
+
* `parent.className`). Returns `null` when neither frame source is
|
|
8844
|
+
* resolvable (handle evicted and no cropJpeg fallback supplied).
|
|
8845
|
+
*/
|
|
8846
|
+
runDetailSubtree: method(zod.z.object({
|
|
8847
|
+
deviceId: zod.z.number(),
|
|
8848
|
+
frameHandle: FrameHandleSchema.optional(),
|
|
8849
|
+
cropJpeg: zod.z.string().optional(),
|
|
8850
|
+
parent: DetailParentSchema,
|
|
8851
|
+
steps: zod.z.array(zod.z.string()).optional()
|
|
8852
|
+
}), zod.z.object({ details: zod.z.array(DetailResultSchema) }).nullable(), { kind: "mutation" })
|
|
8767
8853
|
}
|
|
8768
8854
|
};
|
|
8769
8855
|
/**
|
|
@@ -9810,6 +9896,167 @@ var ptzAutotrackCapability = {
|
|
|
9810
9896
|
runtimeState: PtzAutotrackRuntimeStateSchema
|
|
9811
9897
|
};
|
|
9812
9898
|
/**
|
|
9899
|
+
* scene-monitor — device-scoped reference-region state cap. An operator marks
|
|
9900
|
+
* a rect ROI on a camera frame and names one or more states; the engine
|
|
9901
|
+
* (pipeline-analytics, designated post-processing node) reports which state is
|
|
9902
|
+
* active on an ongoing basis. Two operator-selectable check modes share every-
|
|
9903
|
+
* thing except the comparator: `similarity` (CLIP cosine at the same ROI coords
|
|
9904
|
+
* vs condition-tagged references) and `llm` (vision-LLM judgment over the crop).
|
|
9905
|
+
*
|
|
9906
|
+
* D14 device-config archetype (`deviceConfig.ui.kind:'widget'`) — the framework
|
|
9907
|
+
* derives the device-detail contribution; the provider carries NO hand-written
|
|
9908
|
+
* settings-contribution methods. `status.kind:'push'` — the engine pushes on
|
|
9909
|
+
* every hysteresis flip / availability change; consumers never poll.
|
|
9910
|
+
*/
|
|
9911
|
+
/** Extensible condition tag. Seeded 'day' | 'night'; open by design so more can
|
|
9912
|
+
* be added without a wire break (matching falls back to any-condition refs). */
|
|
9913
|
+
var SceneConditionSchema = zod.z.string();
|
|
9914
|
+
/** One captured reference — condition-tagged, model-version-gated. `embedding`
|
|
9915
|
+
* is `number[]` (Float32Array does NOT survive MsgPack/UDS). */
|
|
9916
|
+
var SceneReferenceSchema = zod.z.object({
|
|
9917
|
+
embedding: zod.z.array(zod.z.number()),
|
|
9918
|
+
modelId: zod.z.string(),
|
|
9919
|
+
condition: SceneConditionSchema,
|
|
9920
|
+
capturedAt: zod.z.number(),
|
|
9921
|
+
thumbnailMediaId: zod.z.string().optional()
|
|
9922
|
+
});
|
|
9923
|
+
var SceneMonitorStateSchema = zod.z.object({
|
|
9924
|
+
id: zod.z.string(),
|
|
9925
|
+
label: zod.z.string(),
|
|
9926
|
+
references: zod.z.array(SceneReferenceSchema),
|
|
9927
|
+
textPrompts: zod.z.array(zod.z.string()).optional(),
|
|
9928
|
+
referenceCount: zod.z.number(),
|
|
9929
|
+
currentlyMatched: zod.z.boolean()
|
|
9930
|
+
});
|
|
9931
|
+
/** Per-mode comparator params in a discriminated union so an `llm` scene never
|
|
9932
|
+
* carries similarity knobs and vice-versa. */
|
|
9933
|
+
var SceneCheckSchema = zod.z.discriminatedUnion("mode", [zod.z.object({
|
|
9934
|
+
mode: zod.z.literal("similarity"),
|
|
9935
|
+
threshold: zod.z.number().min(0).max(1),
|
|
9936
|
+
hysteresisCount: zod.z.number().int().positive()
|
|
9937
|
+
}), zod.z.object({
|
|
9938
|
+
mode: zod.z.literal("llm"),
|
|
9939
|
+
prompt: zod.z.string(),
|
|
9940
|
+
profileId: zod.z.string().optional(),
|
|
9941
|
+
hysteresisCount: zod.z.number().int().positive()
|
|
9942
|
+
})]);
|
|
9943
|
+
var SceneMonitorSchema = zod.z.object({
|
|
9944
|
+
id: zod.z.string(),
|
|
9945
|
+
label: zod.z.string(),
|
|
9946
|
+
roi: MaskRectShapeSchema,
|
|
9947
|
+
enabled: zod.z.boolean(),
|
|
9948
|
+
triggerMode: zod.z.enum([
|
|
9949
|
+
"periodic",
|
|
9950
|
+
"on-motion",
|
|
9951
|
+
"both"
|
|
9952
|
+
]),
|
|
9953
|
+
checkIntervalSec: zod.z.number().optional(),
|
|
9954
|
+
check: SceneCheckSchema,
|
|
9955
|
+
states: zod.z.array(SceneMonitorStateSchema),
|
|
9956
|
+
currentStateId: zod.z.string().nullable(),
|
|
9957
|
+
lastCheckedAt: zod.z.number().nullable(),
|
|
9958
|
+
lastConfidence: zod.z.number().nullable(),
|
|
9959
|
+
currentCondition: SceneConditionSchema.nullable(),
|
|
9960
|
+
availability: zod.z.enum(["ok", "unavailable"]),
|
|
9961
|
+
unavailableReason: zod.z.string().nullable()
|
|
9962
|
+
});
|
|
9963
|
+
var SceneMonitorStatusSchema = zod.z.object({
|
|
9964
|
+
monitors: zod.z.array(SceneMonitorSchema),
|
|
9965
|
+
lastFetchedAt: zod.z.number()
|
|
9966
|
+
});
|
|
9967
|
+
var sceneMonitorCapability = {
|
|
9968
|
+
name: "scene-monitor",
|
|
9969
|
+
scope: "device",
|
|
9970
|
+
mode: "singleton",
|
|
9971
|
+
kind: "wrapper",
|
|
9972
|
+
defaultActive: true,
|
|
9973
|
+
deviceTypes: [DeviceType.Camera],
|
|
9974
|
+
deviceConfig: { ui: {
|
|
9975
|
+
kind: "widget",
|
|
9976
|
+
widgetId: "host/scene-monitor-editor",
|
|
9977
|
+
tab: "scenes",
|
|
9978
|
+
label: "Scenes"
|
|
9979
|
+
} },
|
|
9980
|
+
methods: {
|
|
9981
|
+
listScenes: method(zod.z.object({ deviceId: zod.z.number() }), SceneMonitorStatusSchema),
|
|
9982
|
+
createScene: method(zod.z.object({
|
|
9983
|
+
deviceId: zod.z.number(),
|
|
9984
|
+
label: zod.z.string(),
|
|
9985
|
+
roi: MaskRectShapeSchema,
|
|
9986
|
+
check: SceneCheckSchema,
|
|
9987
|
+
triggerMode: zod.z.enum([
|
|
9988
|
+
"periodic",
|
|
9989
|
+
"on-motion",
|
|
9990
|
+
"both"
|
|
9991
|
+
]).optional(),
|
|
9992
|
+
checkIntervalSec: zod.z.number().optional()
|
|
9993
|
+
}), SceneMonitorSchema, {
|
|
9994
|
+
kind: "mutation",
|
|
9995
|
+
auth: "admin"
|
|
9996
|
+
}),
|
|
9997
|
+
updateScene: method(zod.z.object({
|
|
9998
|
+
deviceId: zod.z.number(),
|
|
9999
|
+
monitorId: zod.z.string(),
|
|
10000
|
+
patch: zod.z.object({
|
|
10001
|
+
label: zod.z.string().optional(),
|
|
10002
|
+
roi: MaskRectShapeSchema.optional(),
|
|
10003
|
+
enabled: zod.z.boolean().optional(),
|
|
10004
|
+
triggerMode: zod.z.enum([
|
|
10005
|
+
"periodic",
|
|
10006
|
+
"on-motion",
|
|
10007
|
+
"both"
|
|
10008
|
+
]).optional(),
|
|
10009
|
+
checkIntervalSec: zod.z.number().optional(),
|
|
10010
|
+
check: SceneCheckSchema.optional()
|
|
10011
|
+
})
|
|
10012
|
+
}), zod.z.void(), {
|
|
10013
|
+
kind: "mutation",
|
|
10014
|
+
auth: "admin"
|
|
10015
|
+
}),
|
|
10016
|
+
deleteScene: method(zod.z.object({
|
|
10017
|
+
deviceId: zod.z.number(),
|
|
10018
|
+
monitorId: zod.z.string()
|
|
10019
|
+
}), zod.z.void(), {
|
|
10020
|
+
kind: "mutation",
|
|
10021
|
+
auth: "admin"
|
|
10022
|
+
}),
|
|
10023
|
+
captureReference: method(zod.z.object({
|
|
10024
|
+
deviceId: zod.z.number(),
|
|
10025
|
+
monitorId: zod.z.string(),
|
|
10026
|
+
stateId: zod.z.string().optional(),
|
|
10027
|
+
label: zod.z.string().optional(),
|
|
10028
|
+
condition: SceneConditionSchema.optional()
|
|
10029
|
+
}), zod.z.object({
|
|
10030
|
+
stateId: zod.z.string(),
|
|
10031
|
+
referenceCount: zod.z.number()
|
|
10032
|
+
}), {
|
|
10033
|
+
kind: "mutation",
|
|
10034
|
+
auth: "admin"
|
|
10035
|
+
}),
|
|
10036
|
+
deleteReference: method(zod.z.object({
|
|
10037
|
+
deviceId: zod.z.number(),
|
|
10038
|
+
monitorId: zod.z.string(),
|
|
10039
|
+
stateId: zod.z.string(),
|
|
10040
|
+
index: zod.z.number()
|
|
10041
|
+
}), zod.z.void(), {
|
|
10042
|
+
kind: "mutation",
|
|
10043
|
+
auth: "admin"
|
|
10044
|
+
}),
|
|
10045
|
+
recheckNow: method(zod.z.object({
|
|
10046
|
+
deviceId: zod.z.number(),
|
|
10047
|
+
monitorId: zod.z.string()
|
|
10048
|
+
}), zod.z.void(), {
|
|
10049
|
+
kind: "mutation",
|
|
10050
|
+
auth: "admin"
|
|
10051
|
+
})
|
|
10052
|
+
},
|
|
10053
|
+
status: {
|
|
10054
|
+
schema: SceneMonitorStatusSchema,
|
|
10055
|
+
kind: "push"
|
|
10056
|
+
},
|
|
10057
|
+
runtimeState: SceneMonitorStatusSchema
|
|
10058
|
+
};
|
|
10059
|
+
/**
|
|
9813
10060
|
* Script-runner cap. Models HA `script.*` entities on
|
|
9814
10061
|
* `DeviceType.Script`. A Script is a pre-recorded action sequence
|
|
9815
10062
|
* that can be invoked imperatively — optionally with a variables
|
|
@@ -11510,7 +11757,12 @@ var NotificationRuleConditionsSchema = zod.z.object({
|
|
|
11510
11757
|
clipDescription: zod.z.object({
|
|
11511
11758
|
text: zod.z.string().min(1),
|
|
11512
11759
|
minSimilarity: zod.z.number().min(0).max(1)
|
|
11513
|
-
}).optional()
|
|
11760
|
+
}).optional(),
|
|
11761
|
+
/** Match events whose recognized-entity label (face identity name or plate
|
|
11762
|
+
* vehicle name, propagated onto `event.data.label`) is one of these values.
|
|
11763
|
+
* Empty/absent → unaffected (back-compat). Enables "notify me when <named
|
|
11764
|
+
* vehicle/person> is seen". */
|
|
11765
|
+
labels: zod.z.array(zod.z.string()).readonly().optional()
|
|
11514
11766
|
});
|
|
11515
11767
|
var NotificationRuleTemplateSchema = zod.z.object({
|
|
11516
11768
|
title: zod.z.string(),
|
|
@@ -11894,11 +12146,19 @@ var authProviderCapability = {
|
|
|
11894
12146
|
* login page needs NO change.
|
|
11895
12147
|
*
|
|
11896
12148
|
* - `widget` — a Module-Federation widget the login page mounts (via
|
|
11897
|
-
* `loadRemoteBundle`) for an in-page ceremony.
|
|
11898
|
-
*
|
|
11899
|
-
*
|
|
11900
|
-
*
|
|
11901
|
-
*
|
|
12149
|
+
* `loadRemoteBundle`) for an in-page ceremony. `auth.listLoginMethods`
|
|
12150
|
+
* stamps a public `bundleUrl` from `addonId` + `bundle`. Generic
|
|
12151
|
+
* mechanism kept for future use; no shipped addon uses it on the login
|
|
12152
|
+
* page (the passkey ceremony below runs natively in the shell instead).
|
|
12153
|
+
*
|
|
12154
|
+
* - `passkey` — a declarative WebAuthn ceremony the shell renders
|
|
12155
|
+
* natively (`@simplewebauthn/browser` lives in `addon-admin-ui`, not in
|
|
12156
|
+
* a remotely-loaded bundle). Carries the addon's effective `rpId` /
|
|
12157
|
+
* `origin` (from its `resolveRpID()` / `resolveOrigin()`) so the shell
|
|
12158
|
+
* can gate visibility (IP-literal origin, hostname/rpId mismatch) WITHOUT
|
|
12159
|
+
* fetching any remote code pre-auth. Contribution stays unconditional —
|
|
12160
|
+
* enrollment state is never leaked pre-auth; visibility is a shell
|
|
12161
|
+
* decision.
|
|
11902
12162
|
*
|
|
11903
12163
|
* Every contribution carries a `stage`:
|
|
11904
12164
|
* - `primary` — shown on the first credentials screen (OIDC /
|
|
@@ -11947,8 +12207,30 @@ var WidgetLoginMethodSchema = zod.z.object({
|
|
|
11947
12207
|
remote: WidgetRemoteSchema,
|
|
11948
12208
|
stage: LoginStageEnum
|
|
11949
12209
|
});
|
|
11950
|
-
/**
|
|
11951
|
-
|
|
12210
|
+
/**
|
|
12211
|
+
* A declarative WebAuthn ceremony the shell renders natively (no remote
|
|
12212
|
+
* code). Carries the addon's EFFECTIVE `rpId`/`origin` so the shell can
|
|
12213
|
+
* gate visibility (IP-literal origin, hostname/rpId mismatch) before ever
|
|
12214
|
+
* showing the button — the contribution itself stays unconditional.
|
|
12215
|
+
*/
|
|
12216
|
+
var PasskeyLoginMethodSchema = zod.z.object({
|
|
12217
|
+
kind: zod.z.literal("passkey"),
|
|
12218
|
+
/** Stable id within the login-method set (e.g. `auth-webauthn/passkey-direct-login`). */
|
|
12219
|
+
id: zod.z.string(),
|
|
12220
|
+
/** Operator-facing button label. */
|
|
12221
|
+
label: zod.z.string(),
|
|
12222
|
+
stage: LoginStageEnum,
|
|
12223
|
+
/** Effective WebAuthn RP ID (`resolveRpID()`) — the shell gates visibility on it. */
|
|
12224
|
+
rpId: zod.z.string(),
|
|
12225
|
+
/** Effective expected origin (`resolveOrigin()`), null when unconfigured. */
|
|
12226
|
+
origin: zod.z.string().nullable()
|
|
12227
|
+
});
|
|
12228
|
+
/** One login-method contribution — redirect button, pre-auth widget, or native passkey ceremony. */
|
|
12229
|
+
var LoginMethodContributionSchema = zod.z.discriminatedUnion("kind", [
|
|
12230
|
+
RedirectLoginMethodSchema,
|
|
12231
|
+
WidgetLoginMethodSchema,
|
|
12232
|
+
PasskeyLoginMethodSchema
|
|
12233
|
+
]);
|
|
11952
12234
|
var loginMethodCapability = {
|
|
11953
12235
|
name: "login-method",
|
|
11954
12236
|
scope: "system",
|
|
@@ -12464,18 +12746,6 @@ var cameraPipelineConfigCapability = {
|
|
|
12464
12746
|
exposesDeviceSettings: true,
|
|
12465
12747
|
methods: {}
|
|
12466
12748
|
};
|
|
12467
|
-
/**
|
|
12468
|
-
* Shared cap-router predicates — the SINGLE source for the structural Zod-shape
|
|
12469
|
-
* checks + naming used by BOTH the runtime cap-router builder
|
|
12470
|
-
* (`@camstack/system` `cap-router-builder.ts` + the server's
|
|
12471
|
-
* `cap-router-runtime.ts`) AND the codegen scripts (`scripts/generate-cap-*.ts`).
|
|
12472
|
-
*
|
|
12473
|
-
* These used to be independently reimplemented on each side, held in sync only
|
|
12474
|
-
* by "must stay byte-identical" comments — a live drift risk. Consolidating them
|
|
12475
|
-
* here (next to `resolveCapMount` / `expandCapMethods`, the other shared model)
|
|
12476
|
-
* makes the two paths provably agree. Each predicate accepts both Zod 4
|
|
12477
|
-
* (`_def.type`) and legacy Zod 3 (`_def.typeName` / `constructor.name`) shapes.
|
|
12478
|
-
*/
|
|
12479
12749
|
/** `z.void()` — input carries no data. */
|
|
12480
12750
|
function isVoidInput(schema) {
|
|
12481
12751
|
const def = schema._def;
|
|
@@ -12503,6 +12773,26 @@ function isArrayOutputSchema(schema) {
|
|
|
12503
12773
|
return false;
|
|
12504
12774
|
}
|
|
12505
12775
|
/**
|
|
12776
|
+
* True when `method` on cap `def` is a COLLECTION cap's array-returning
|
|
12777
|
+
* (non-subscription) method — the methods whose contract is "union the result
|
|
12778
|
+
* across every registered provider" (`listTargets`, `listTargetKinds`,
|
|
12779
|
+
* `discoverTargets`, `listEndpoints`, …).
|
|
12780
|
+
*
|
|
12781
|
+
* Such a method is aggregated at the hub via `concatCollection` / the runtime
|
|
12782
|
+
* `concatArrayMethod`, both of which SKIP a provider that doesn't implement it
|
|
12783
|
+
* (contributes `[]`). That local skip is invisible across the UDS boundary — a
|
|
12784
|
+
* hub-side per-provider proxy fabricates a callable for every property, so the
|
|
12785
|
+
* call reaches the child's real (possibly partial) provider. This predicate lets
|
|
12786
|
+
* the child-side dispatcher reproduce the same graceful skip: a missing method
|
|
12787
|
+
* here yields `[]`, not a "method not found" error. Singleton caps and non-array
|
|
12788
|
+
* methods return `false` so a genuinely missing method still surfaces as a bug.
|
|
12789
|
+
*/
|
|
12790
|
+
function isCollectionArrayMethod(def, method) {
|
|
12791
|
+
if (def === void 0 || def.mode !== "collection") return false;
|
|
12792
|
+
const m = expandCapMethods(def)[method];
|
|
12793
|
+
return m !== void 0 && m.kind !== "subscription" && isArrayOutputSchema(m.output);
|
|
12794
|
+
}
|
|
12795
|
+
/**
|
|
12506
12796
|
* Apply `.loose()` to an object input schema when available (Zod 4) so the
|
|
12507
12797
|
* router accepts the out-of-band `nodeId`/`addonId` selector keys without
|
|
12508
12798
|
* stripping them. Falls back to the schema unchanged when `.loose()` is absent.
|
|
@@ -14621,14 +14911,14 @@ var TargetKindCapsSchema = zod.z.object({
|
|
|
14621
14911
|
* the union is large and not meant for runtime validation here; the exported
|
|
14622
14912
|
* `TargetKind` type re-tightens `configSchema` to `ConfigUISchema`.
|
|
14623
14913
|
*/
|
|
14624
|
-
var ConfigSchemaPassthrough = zod.z.unknown();
|
|
14914
|
+
var ConfigSchemaPassthrough$1 = zod.z.unknown();
|
|
14625
14915
|
var TargetKindSchema = zod.z.object({
|
|
14626
14916
|
kind: zod.z.string(),
|
|
14627
14917
|
label: zod.z.string(),
|
|
14628
14918
|
icon: zod.z.string(),
|
|
14629
14919
|
/** Stamped by each provider so the concat-fanned catalog stays routable. */
|
|
14630
14920
|
addonId: zod.z.string(),
|
|
14631
|
-
configSchema: ConfigSchemaPassthrough,
|
|
14921
|
+
configSchema: ConfigSchemaPassthrough$1,
|
|
14632
14922
|
supportsDiscovery: zod.z.boolean(),
|
|
14633
14923
|
caps: TargetKindCapsSchema
|
|
14634
14924
|
});
|
|
@@ -14695,6 +14985,345 @@ var notificationOutputCapability = {
|
|
|
14695
14985
|
}
|
|
14696
14986
|
};
|
|
14697
14987
|
/**
|
|
14988
|
+
* Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
|
|
14989
|
+
* surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
|
|
14990
|
+
* caps stay wire-compatible without a circular cap→cap import.
|
|
14991
|
+
*
|
|
14992
|
+
* Errors are a discriminated-union RESULT, never thrown: the shape survives
|
|
14993
|
+
* every transport tier structurally, and failed calls still write usage rows.
|
|
14994
|
+
* Token counts only in v1 — no costUsd (operator decision, 2026-07-15).
|
|
14995
|
+
*/
|
|
14996
|
+
var LlmUsageSchema = zod.z.object({
|
|
14997
|
+
inputTokens: zod.z.number(),
|
|
14998
|
+
outputTokens: zod.z.number()
|
|
14999
|
+
});
|
|
15000
|
+
var LlmErrorCodeSchema = zod.z.enum([
|
|
15001
|
+
"timeout",
|
|
15002
|
+
"rate-limited",
|
|
15003
|
+
"auth",
|
|
15004
|
+
"refusal",
|
|
15005
|
+
"bad-request",
|
|
15006
|
+
"unavailable",
|
|
15007
|
+
"no-profile",
|
|
15008
|
+
"budget-exceeded",
|
|
15009
|
+
"adapter-error"
|
|
15010
|
+
]);
|
|
15011
|
+
var LlmGenerateOkSchema = zod.z.object({
|
|
15012
|
+
ok: zod.z.literal(true),
|
|
15013
|
+
text: zod.z.string(),
|
|
15014
|
+
model: zod.z.string(),
|
|
15015
|
+
usage: LlmUsageSchema,
|
|
15016
|
+
truncated: zod.z.boolean(),
|
|
15017
|
+
latencyMs: zod.z.number()
|
|
15018
|
+
});
|
|
15019
|
+
var LlmGenerateErrSchema = zod.z.object({
|
|
15020
|
+
ok: zod.z.literal(false),
|
|
15021
|
+
code: LlmErrorCodeSchema,
|
|
15022
|
+
message: zod.z.string(),
|
|
15023
|
+
retryAfterMs: zod.z.number().optional()
|
|
15024
|
+
});
|
|
15025
|
+
var LlmGenerateResultSchema = zod.z.discriminatedUnion("ok", [LlmGenerateOkSchema, LlmGenerateErrSchema]);
|
|
15026
|
+
/**
|
|
15027
|
+
* `Uint8Array` is the sanctioned binary convention — superjson + the UDS
|
|
15028
|
+
* MsgPack channel round-trip typed arrays (embedding-encoder.cap.ts:29,
|
|
15029
|
+
* notification-output.cap.ts:27-31 precedents).
|
|
15030
|
+
*/
|
|
15031
|
+
var LlmImageSchema = zod.z.object({
|
|
15032
|
+
bytes: zod.z.instanceof(Uint8Array),
|
|
15033
|
+
mimeType: zod.z.string()
|
|
15034
|
+
});
|
|
15035
|
+
var LlmGenerateBaseInputSchema = zod.z.object({
|
|
15036
|
+
/** Collection routing (the notification-output posture). */
|
|
15037
|
+
addonId: zod.z.string().optional(),
|
|
15038
|
+
/** Explicit profile; else the resolution chain (spec §3). */
|
|
15039
|
+
profileId: zod.z.string().optional(),
|
|
15040
|
+
/** MANDATORY usage tag: 'ai-summary', 'notifier-rules', 'adhoc-ui', … */
|
|
15041
|
+
consumer: zod.z.string(),
|
|
15042
|
+
system: zod.z.string().optional(),
|
|
15043
|
+
/** v1: single-turn. `messages[]` is a v2 additive field. */
|
|
15044
|
+
prompt: zod.z.string(),
|
|
15045
|
+
/** Structured output — adapter-mapped (response_format / forced tool / responseSchema). */
|
|
15046
|
+
jsonSchema: zod.z.record(zod.z.string(), zod.z.unknown()).optional(),
|
|
15047
|
+
/** Per-call override of the profile default. */
|
|
15048
|
+
maxTokens: zod.z.number().int().positive().optional(),
|
|
15049
|
+
temperature: zod.z.number().optional()
|
|
15050
|
+
});
|
|
15051
|
+
/**
|
|
15052
|
+
* `llm-runtime` — node-side managed llama.cpp executor (spec §4). Registered
|
|
15053
|
+
* on EVERY node where `addon-ai` is installed; the hub `llm` provider reaches
|
|
15054
|
+
* a specific node's runtime with `nodePin(profile.runtime.nodeId)` — normal
|
|
15055
|
+
* cap routing, zero bespoke plumbing. `internal: true`: the operator reaches
|
|
15056
|
+
* this only through the `llm` cap's methods.
|
|
15057
|
+
*
|
|
15058
|
+
* One running llama-server child per node in v1 (models are RAM-heavy).
|
|
15059
|
+
* Resource ceiling = llama-server flags + idleStopMinutes ONLY (no RSS
|
|
15060
|
+
* watchdog — operator decision #3).
|
|
15061
|
+
*/
|
|
15062
|
+
var ManagedModelRefSchema = zod.z.discriminatedUnion("kind", [
|
|
15063
|
+
zod.z.object({
|
|
15064
|
+
kind: zod.z.literal("catalog"),
|
|
15065
|
+
catalogId: zod.z.string()
|
|
15066
|
+
}),
|
|
15067
|
+
zod.z.object({
|
|
15068
|
+
kind: zod.z.literal("url"),
|
|
15069
|
+
url: zod.z.string(),
|
|
15070
|
+
sha256: zod.z.string().optional()
|
|
15071
|
+
}),
|
|
15072
|
+
zod.z.object({
|
|
15073
|
+
kind: zod.z.literal("path"),
|
|
15074
|
+
path: zod.z.string()
|
|
15075
|
+
})
|
|
15076
|
+
]);
|
|
15077
|
+
var ManagedRuntimeConfigSchema = zod.z.object({
|
|
15078
|
+
/** WHERE the runtime lives — hub or any agent. */
|
|
15079
|
+
nodeId: zod.z.string(),
|
|
15080
|
+
/** Closed for v1; 'ollama' is a v2 candidate. */
|
|
15081
|
+
engine: zod.z.enum(["llama-cpp"]),
|
|
15082
|
+
model: ManagedModelRefSchema,
|
|
15083
|
+
contextSize: zod.z.number().int().default(4096),
|
|
15084
|
+
/** 0 = CPU-only. */
|
|
15085
|
+
gpuLayers: zod.z.number().int().default(0),
|
|
15086
|
+
/** Default: cpus-2, clamped ≥1 (resolved node-side). */
|
|
15087
|
+
threads: zod.z.number().int().optional(),
|
|
15088
|
+
/** Concurrent slots. */
|
|
15089
|
+
parallel: zod.z.number().int().default(1),
|
|
15090
|
+
/** Else lazy: first generate boots it. */
|
|
15091
|
+
autoStart: zod.z.boolean().default(false),
|
|
15092
|
+
/** 0 = never; frees RAM after quiet periods. */
|
|
15093
|
+
idleStopMinutes: zod.z.number().int().default(30)
|
|
15094
|
+
});
|
|
15095
|
+
var LlmRuntimeStatusSchema = zod.z.object({
|
|
15096
|
+
/** Status is ALWAYS node-qualified. */
|
|
15097
|
+
nodeId: zod.z.string(),
|
|
15098
|
+
state: zod.z.enum([
|
|
15099
|
+
"stopped",
|
|
15100
|
+
"downloading",
|
|
15101
|
+
"starting",
|
|
15102
|
+
"ready",
|
|
15103
|
+
"crashed",
|
|
15104
|
+
"failed"
|
|
15105
|
+
]),
|
|
15106
|
+
pid: zod.z.number().optional(),
|
|
15107
|
+
port: zod.z.number().optional(),
|
|
15108
|
+
modelPath: zod.z.string().optional(),
|
|
15109
|
+
modelId: zod.z.string().optional(),
|
|
15110
|
+
downloadProgress: zod.z.number().min(0).max(1).optional(),
|
|
15111
|
+
lastError: zod.z.string().optional(),
|
|
15112
|
+
crashesInWindow: zod.z.number(),
|
|
15113
|
+
/** Child RSS (sampled best-effort). */
|
|
15114
|
+
memoryBytes: zod.z.number().optional(),
|
|
15115
|
+
vramBytes: zod.z.number().optional()
|
|
15116
|
+
});
|
|
15117
|
+
var LlmNodeModelSchema = zod.z.object({
|
|
15118
|
+
file: zod.z.string(),
|
|
15119
|
+
sizeBytes: zod.z.number(),
|
|
15120
|
+
catalogId: zod.z.string().optional(),
|
|
15121
|
+
installedAt: zod.z.number().optional()
|
|
15122
|
+
});
|
|
15123
|
+
var LlmRuntimeDiskUsageSchema = zod.z.object({
|
|
15124
|
+
nodeId: zod.z.string(),
|
|
15125
|
+
modelsBytes: zod.z.number(),
|
|
15126
|
+
freeBytes: zod.z.number().optional()
|
|
15127
|
+
});
|
|
15128
|
+
var llmRuntimeCapability = {
|
|
15129
|
+
name: "llm-runtime",
|
|
15130
|
+
scope: "system",
|
|
15131
|
+
mode: "singleton",
|
|
15132
|
+
internal: true,
|
|
15133
|
+
methods: {
|
|
15134
|
+
complete: method(LlmGenerateBaseInputSchema.extend({
|
|
15135
|
+
images: zod.z.array(LlmImageSchema).optional(),
|
|
15136
|
+
runtime: ManagedRuntimeConfigSchema,
|
|
15137
|
+
/** The managed profile's timeout, threaded by the hub provider. */
|
|
15138
|
+
timeoutMs: zod.z.number().int().positive().optional()
|
|
15139
|
+
}), LlmGenerateResultSchema, { kind: "mutation" }),
|
|
15140
|
+
ensureStarted: method(zod.z.object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
15141
|
+
kind: "mutation",
|
|
15142
|
+
auth: "admin"
|
|
15143
|
+
}),
|
|
15144
|
+
stop: method(zod.z.object({}), zod.z.void(), {
|
|
15145
|
+
kind: "mutation",
|
|
15146
|
+
auth: "admin"
|
|
15147
|
+
}),
|
|
15148
|
+
status: method(zod.z.object({}), LlmRuntimeStatusSchema),
|
|
15149
|
+
installModel: method(zod.z.object({ model: ManagedModelRefSchema }), zod.z.void(), {
|
|
15150
|
+
kind: "mutation",
|
|
15151
|
+
auth: "admin"
|
|
15152
|
+
}),
|
|
15153
|
+
deleteModel: method(zod.z.object({ file: zod.z.string() }), zod.z.void(), {
|
|
15154
|
+
kind: "mutation",
|
|
15155
|
+
auth: "admin"
|
|
15156
|
+
}),
|
|
15157
|
+
listLocalModels: method(zod.z.object({}), zod.z.array(LlmNodeModelSchema)),
|
|
15158
|
+
getDiskUsage: method(zod.z.object({}), LlmRuntimeDiskUsageSchema)
|
|
15159
|
+
}
|
|
15160
|
+
};
|
|
15161
|
+
/**
|
|
15162
|
+
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
15163
|
+
* methods concat-fan across providers; single-row methods route to ONE
|
|
15164
|
+
* provider by the `addonId` in the call input (the notification-output
|
|
15165
|
+
* posture, notification-output.cap.ts:215-250). Provided by `addon-ai`
|
|
15166
|
+
* (hub-placed); the cap stays open for future providers.
|
|
15167
|
+
*
|
|
15168
|
+
* Profiles are ROWS (data), not addons: one row = one usable model endpoint.
|
|
15169
|
+
* `apiKey` is a password field — providers REDACT it on read and merge on
|
|
15170
|
+
* write; a stored key NEVER round-trips to a client.
|
|
15171
|
+
*/
|
|
15172
|
+
var LlmProfileKindSchema = zod.z.enum([
|
|
15173
|
+
"openai-compatible",
|
|
15174
|
+
"openai",
|
|
15175
|
+
"anthropic",
|
|
15176
|
+
"google",
|
|
15177
|
+
"managed-local"
|
|
15178
|
+
]);
|
|
15179
|
+
var LlmProfileSchema = zod.z.object({
|
|
15180
|
+
id: zod.z.string(),
|
|
15181
|
+
name: zod.z.string(),
|
|
15182
|
+
kind: LlmProfileKindSchema,
|
|
15183
|
+
/** Stamped by the provider — keeps the fanned catalog routable. */
|
|
15184
|
+
addonId: zod.z.string(),
|
|
15185
|
+
enabled: zod.z.boolean(),
|
|
15186
|
+
/** Vendor model id, or the managed runtime's loaded model. */
|
|
15187
|
+
model: zod.z.string(),
|
|
15188
|
+
/** Required for openai-compatible; override for cloud kinds. */
|
|
15189
|
+
baseUrl: zod.z.string().optional(),
|
|
15190
|
+
/** ConfigUISchema type:'password' — never round-trips (spec §5). */
|
|
15191
|
+
apiKey: zod.z.string().optional(),
|
|
15192
|
+
supportsVision: zod.z.boolean(),
|
|
15193
|
+
temperature: zod.z.number().min(0).max(2).optional(),
|
|
15194
|
+
maxTokens: zod.z.number().int().positive().optional(),
|
|
15195
|
+
timeoutMs: zod.z.number().int().positive().default(6e4),
|
|
15196
|
+
extraHeaders: zod.z.record(zod.z.string(), zod.z.string()).optional(),
|
|
15197
|
+
/** kind === 'managed-local' only (spec §4). */
|
|
15198
|
+
runtime: ManagedRuntimeConfigSchema.optional()
|
|
15199
|
+
});
|
|
15200
|
+
/** ConfigUISchema tree passed through untyped on the wire (the
|
|
15201
|
+
* notification-output `ConfigSchemaPassthrough` precedent at
|
|
15202
|
+
* notification-output.cap.ts:151); the exported TS type re-tightens it. */
|
|
15203
|
+
var ConfigSchemaPassthrough = zod.z.unknown();
|
|
15204
|
+
var LlmProfileKindDescriptorSchema = zod.z.object({
|
|
15205
|
+
kind: LlmProfileKindSchema,
|
|
15206
|
+
label: zod.z.string(),
|
|
15207
|
+
icon: zod.z.string(),
|
|
15208
|
+
/** Stamped by each provider so the concat-fanned catalog stays routable. */
|
|
15209
|
+
addonId: zod.z.string(),
|
|
15210
|
+
configSchema: ConfigSchemaPassthrough
|
|
15211
|
+
});
|
|
15212
|
+
var LlmDefaultSelectorSchema = zod.z.union([zod.z.object({ consumer: zod.z.string() }), zod.z.object({ purpose: zod.z.enum(["text", "vision"]) })]);
|
|
15213
|
+
var LlmDefaultSchema = zod.z.object({
|
|
15214
|
+
selector: LlmDefaultSelectorSchema,
|
|
15215
|
+
profileId: zod.z.string()
|
|
15216
|
+
});
|
|
15217
|
+
/** Server-side rollup row — getUsage never dumps raw call rows (spec §6). */
|
|
15218
|
+
var LlmUsageRollupSchema = zod.z.object({
|
|
15219
|
+
day: zod.z.string(),
|
|
15220
|
+
consumer: zod.z.string(),
|
|
15221
|
+
profileId: zod.z.string(),
|
|
15222
|
+
calls: zod.z.number(),
|
|
15223
|
+
okCalls: zod.z.number(),
|
|
15224
|
+
errorCalls: zod.z.number(),
|
|
15225
|
+
inputTokens: zod.z.number(),
|
|
15226
|
+
outputTokens: zod.z.number(),
|
|
15227
|
+
avgLatencyMs: zod.z.number()
|
|
15228
|
+
});
|
|
15229
|
+
/** LLM-facing view over the reused ModelCatalogEntry mechanism (spec §4.2). */
|
|
15230
|
+
var ManagedModelCatalogEntrySchema = zod.z.object({
|
|
15231
|
+
id: zod.z.string(),
|
|
15232
|
+
label: zod.z.string(),
|
|
15233
|
+
family: zod.z.string(),
|
|
15234
|
+
purpose: zod.z.enum(["text", "vision"]),
|
|
15235
|
+
url: zod.z.string(),
|
|
15236
|
+
sha256: zod.z.string(),
|
|
15237
|
+
sizeBytes: zod.z.number(),
|
|
15238
|
+
quantization: zod.z.string(),
|
|
15239
|
+
/** Load-time guidance shown in the picker. */
|
|
15240
|
+
minRamBytes: zod.z.number(),
|
|
15241
|
+
contextSizeDefault: zod.z.number().int(),
|
|
15242
|
+
/** Vision models: companion projector file. */
|
|
15243
|
+
mmprojUrl: zod.z.string().optional()
|
|
15244
|
+
});
|
|
15245
|
+
var LlmRuntimeNodeSchema = zod.z.object({
|
|
15246
|
+
nodeId: zod.z.string(),
|
|
15247
|
+
reachable: zod.z.boolean(),
|
|
15248
|
+
status: LlmRuntimeStatusSchema.optional(),
|
|
15249
|
+
disk: LlmRuntimeDiskUsageSchema.optional(),
|
|
15250
|
+
error: zod.z.string().optional()
|
|
15251
|
+
});
|
|
15252
|
+
var GenerateVisionInputSchema = LlmGenerateBaseInputSchema.extend({ images: zod.z.array(LlmImageSchema).min(1) });
|
|
15253
|
+
var ProfileRefInputSchema = zod.z.object({
|
|
15254
|
+
addonId: zod.z.string(),
|
|
15255
|
+
profileId: zod.z.string()
|
|
15256
|
+
});
|
|
15257
|
+
var llmCapability = {
|
|
15258
|
+
name: "llm",
|
|
15259
|
+
scope: "system",
|
|
15260
|
+
mode: "collection",
|
|
15261
|
+
internal: false,
|
|
15262
|
+
providerKind: "ai",
|
|
15263
|
+
/** `nodeId` inputs below are DATA (the hub provider pins itself), never routing. */
|
|
15264
|
+
nodeIdMode: "data",
|
|
15265
|
+
methods: {
|
|
15266
|
+
generate: method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }),
|
|
15267
|
+
generateVision: method(GenerateVisionInputSchema, LlmGenerateResultSchema, { kind: "mutation" }),
|
|
15268
|
+
listProfileKinds: method(zod.z.object({}), zod.z.array(LlmProfileKindDescriptorSchema)),
|
|
15269
|
+
listProfiles: method(zod.z.object({}), zod.z.array(LlmProfileSchema)),
|
|
15270
|
+
upsertProfile: method(zod.z.object({ profile: LlmProfileSchema }), LlmProfileSchema, {
|
|
15271
|
+
kind: "mutation",
|
|
15272
|
+
auth: "admin"
|
|
15273
|
+
}),
|
|
15274
|
+
deleteProfile: method(ProfileRefInputSchema, zod.z.void(), {
|
|
15275
|
+
kind: "mutation",
|
|
15276
|
+
auth: "admin"
|
|
15277
|
+
}),
|
|
15278
|
+
testProfile: method(ProfileRefInputSchema, LlmGenerateResultSchema, {
|
|
15279
|
+
kind: "mutation",
|
|
15280
|
+
auth: "admin"
|
|
15281
|
+
}),
|
|
15282
|
+
/** Live vendor enumeration (GET /models etc.). */
|
|
15283
|
+
listModels: method(ProfileRefInputSchema, zod.z.array(zod.z.string())),
|
|
15284
|
+
getDefaults: method(zod.z.object({}), zod.z.array(LlmDefaultSchema)),
|
|
15285
|
+
setDefault: method(zod.z.object({
|
|
15286
|
+
selector: LlmDefaultSelectorSchema,
|
|
15287
|
+
profileId: zod.z.string().nullable()
|
|
15288
|
+
}), zod.z.void(), {
|
|
15289
|
+
kind: "mutation",
|
|
15290
|
+
auth: "admin"
|
|
15291
|
+
}),
|
|
15292
|
+
getUsage: method(zod.z.object({
|
|
15293
|
+
since: zod.z.number().optional(),
|
|
15294
|
+
until: zod.z.number().optional(),
|
|
15295
|
+
consumer: zod.z.string().optional(),
|
|
15296
|
+
profileId: zod.z.string().optional()
|
|
15297
|
+
}), zod.z.array(LlmUsageRollupSchema)),
|
|
15298
|
+
listModelCatalog: method(zod.z.object({}), zod.z.array(ManagedModelCatalogEntrySchema)),
|
|
15299
|
+
listRuntimeNodes: method(zod.z.object({}), zod.z.array(LlmRuntimeNodeSchema)),
|
|
15300
|
+
listNodeModels: method(zod.z.object({ nodeId: zod.z.string() }), zod.z.array(LlmNodeModelSchema)),
|
|
15301
|
+
installModel: method(zod.z.object({
|
|
15302
|
+
nodeId: zod.z.string(),
|
|
15303
|
+
model: ManagedModelRefSchema
|
|
15304
|
+
}), zod.z.void(), {
|
|
15305
|
+
kind: "mutation",
|
|
15306
|
+
auth: "admin"
|
|
15307
|
+
}),
|
|
15308
|
+
deleteModel: method(zod.z.object({
|
|
15309
|
+
nodeId: zod.z.string(),
|
|
15310
|
+
file: zod.z.string()
|
|
15311
|
+
}), zod.z.void(), {
|
|
15312
|
+
kind: "mutation",
|
|
15313
|
+
auth: "admin"
|
|
15314
|
+
}),
|
|
15315
|
+
getRuntimeStatus: method(ProfileRefInputSchema, LlmRuntimeStatusSchema),
|
|
15316
|
+
startRuntime: method(ProfileRefInputSchema, LlmRuntimeStatusSchema, {
|
|
15317
|
+
kind: "mutation",
|
|
15318
|
+
auth: "admin"
|
|
15319
|
+
}),
|
|
15320
|
+
stopRuntime: method(ProfileRefInputSchema, zod.z.void(), {
|
|
15321
|
+
kind: "mutation",
|
|
15322
|
+
auth: "admin"
|
|
15323
|
+
})
|
|
15324
|
+
}
|
|
15325
|
+
};
|
|
15326
|
+
/**
|
|
14698
15327
|
* Zod schemas for persisted record types.
|
|
14699
15328
|
*
|
|
14700
15329
|
* These schemas serve as the single source of truth for types that are
|
|
@@ -14916,6 +15545,10 @@ var TrackSchema = zod.z.object({
|
|
|
14916
15545
|
snapshots: zod.z.array(TrackSnapshotSchema).readonly(),
|
|
14917
15546
|
/** Deduplicated zones the track has entered at least once. */
|
|
14918
15547
|
zonesVisited: zod.z.array(zod.z.string()).readonly(),
|
|
15548
|
+
/** Deduplicated set of detector classes observed for this track over its
|
|
15549
|
+
* life (a track may be reclassified, e.g. person→vehicle). Absent on
|
|
15550
|
+
* legacy rows written before class accumulation shipped. */
|
|
15551
|
+
classes: zod.z.array(zod.z.string()).readonly().optional(),
|
|
14919
15552
|
/** Cumulative normalized distance travelled (0..1 units = full frame width). */
|
|
14920
15553
|
totalDistance: zod.z.number(),
|
|
14921
15554
|
state: TrackStateSchema,
|
|
@@ -15077,7 +15710,7 @@ var KeyEventSchema = zod.z.object({
|
|
|
15077
15710
|
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
15078
15711
|
windowMs: zod.z.number().optional()
|
|
15079
15712
|
});
|
|
15080
|
-
|
|
15713
|
+
zod.z.object({
|
|
15081
15714
|
trackId: zod.z.string(),
|
|
15082
15715
|
className: zod.z.string(),
|
|
15083
15716
|
confidence: zod.z.number(),
|
|
@@ -15085,6 +15718,23 @@ var TrackedDetectionSchema = zod.z.object({
|
|
|
15085
15718
|
zones: zod.z.array(zod.z.string()).readonly(),
|
|
15086
15719
|
state: TrackStateSchema
|
|
15087
15720
|
});
|
|
15721
|
+
var OverlayDetectionSchema = zod.z.looseObject({
|
|
15722
|
+
id: zod.z.string(),
|
|
15723
|
+
kind: zod.z.enum(["first-level", "detail"]),
|
|
15724
|
+
macroClass: zod.z.string(),
|
|
15725
|
+
score: zod.z.number(),
|
|
15726
|
+
bbox: zod.z.object({
|
|
15727
|
+
x: zod.z.number(),
|
|
15728
|
+
y: zod.z.number(),
|
|
15729
|
+
width: zod.z.number(),
|
|
15730
|
+
height: zod.z.number()
|
|
15731
|
+
}),
|
|
15732
|
+
labels: zod.z.array(zod.z.looseObject({
|
|
15733
|
+
label: zod.z.string(),
|
|
15734
|
+
score: zod.z.number()
|
|
15735
|
+
})).readonly(),
|
|
15736
|
+
parentId: zod.z.string().optional()
|
|
15737
|
+
});
|
|
15088
15738
|
var ScoredObjectEventSchema = ObjectEventSchema.extend({ score: zod.z.number() });
|
|
15089
15739
|
var SearchObjectEventsInput = zod.z.object({
|
|
15090
15740
|
text: zod.z.string(),
|
|
@@ -15095,6 +15745,20 @@ var SearchObjectEventsInput = zod.z.object({
|
|
|
15095
15745
|
limit: zod.z.number().default(50),
|
|
15096
15746
|
minScore: zod.z.number().min(0).max(1).default(.2)
|
|
15097
15747
|
});
|
|
15748
|
+
var TrackCascadeCountsSchema = zod.z.object({
|
|
15749
|
+
/** Persisted track roots deleted (authoritative). */
|
|
15750
|
+
tracks: zod.z.number().int(),
|
|
15751
|
+
/** Object events removed with their tracks (best-effort; see note above). */
|
|
15752
|
+
events: zod.z.number().int(),
|
|
15753
|
+
/** Track/face/plate-owned media removed (best-effort). Never identity media. */
|
|
15754
|
+
media: zod.z.number().int(),
|
|
15755
|
+
/** Unassigned (non-enrolled) face reads removed (best-effort). */
|
|
15756
|
+
faces: zod.z.number().int(),
|
|
15757
|
+
/** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
|
|
15758
|
+
plates: zod.z.number().int(),
|
|
15759
|
+
/** Per-track CLIP search vectors removed (best-effort). */
|
|
15760
|
+
embeddings: zod.z.number().int()
|
|
15761
|
+
});
|
|
15098
15762
|
var pipelineAnalyticsCapability = {
|
|
15099
15763
|
name: "pipeline-analytics",
|
|
15100
15764
|
scope: "device",
|
|
@@ -15148,12 +15812,14 @@ var pipelineAnalyticsCapability = {
|
|
|
15148
15812
|
audio: zod.z.number().int()
|
|
15149
15813
|
})).readonly()),
|
|
15150
15814
|
/**
|
|
15151
|
-
*
|
|
15152
|
-
*
|
|
15153
|
-
*
|
|
15154
|
-
*
|
|
15155
|
-
*
|
|
15156
|
-
*
|
|
15815
|
+
* @deprecated Prefer `pruneTracksBefore` — the track is the ROOT of the
|
|
15816
|
+
* analytics model and retention must cascade from it (design §5.1). This
|
|
15817
|
+
* event-only prune leaves orphaned tracks/faces/plates/embeddings behind.
|
|
15818
|
+
* Retained as a compat shim for the Phase-B3 recorder orchestration caller,
|
|
15819
|
+
* which prunes events to keep history aligned with available footage and
|
|
15820
|
+
* reads the per-kind counts. Delete all events (motion + object + audio)
|
|
15821
|
+
* for the given device older than `cutoffMs` (exclusive) + their thumbnails
|
|
15822
|
+
* in lockstep; returns per-kind deleted counts.
|
|
15157
15823
|
*/
|
|
15158
15824
|
pruneEventsBefore: method(zod.z.object({
|
|
15159
15825
|
deviceId: zod.z.number(),
|
|
@@ -15166,6 +15832,55 @@ var pipelineAnalyticsCapability = {
|
|
|
15166
15832
|
kind: "mutation",
|
|
15167
15833
|
auth: "admin"
|
|
15168
15834
|
}),
|
|
15835
|
+
/**
|
|
15836
|
+
* Track-centric retention entry point (design §5.1). Selects every
|
|
15837
|
+
* persisted track for the device whose `lastSeen < cutoffMs` (paged) and
|
|
15838
|
+
* runs the extensible whole-track deletion cascade (design §3): object
|
|
15839
|
+
* events + their media, track/face/plate-owned media, unassigned face
|
|
15840
|
+
* reads, per-track CLIP embeddings, then the track root LAST. ENROLLED
|
|
15841
|
+
* (assigned) faces/plates and `ownerKind:'identity'` media are exempt —
|
|
15842
|
+
* the durable matching gallery always persists. Fires the per-track
|
|
15843
|
+
* live-state cleanup so a pruned track can't linger in dispatch/overlay
|
|
15844
|
+
* state. Returns per-family deleted counts (`tracks` authoritative).
|
|
15845
|
+
*
|
|
15846
|
+
* Replaces `pruneEventsBefore` as the correct time-based retention prune.
|
|
15847
|
+
*/
|
|
15848
|
+
pruneTracksBefore: method(zod.z.object({
|
|
15849
|
+
deviceId: zod.z.number(),
|
|
15850
|
+
cutoffMs: zod.z.number()
|
|
15851
|
+
}), TrackCascadeCountsSchema, {
|
|
15852
|
+
kind: "mutation",
|
|
15853
|
+
auth: "admin"
|
|
15854
|
+
}),
|
|
15855
|
+
/**
|
|
15856
|
+
* Operator "clean slate" for a device (design §5.3): prune EVERY track for
|
|
15857
|
+
* the device via the same cascade as `pruneTracksBefore` with `cutoffMs =
|
|
15858
|
+
* now`. One call per device — no client-side track enumeration. Enrolled
|
|
15859
|
+
* gallery + identity media are exempt (design §4). Returns per-family
|
|
15860
|
+
* deleted counts.
|
|
15861
|
+
*/
|
|
15862
|
+
wipeAllAnalytics: method(zod.z.object({ deviceId: zod.z.number() }), TrackCascadeCountsSchema, {
|
|
15863
|
+
kind: "mutation",
|
|
15864
|
+
auth: "admin"
|
|
15865
|
+
}),
|
|
15866
|
+
/**
|
|
15867
|
+
* Delete whole tracks (object events) by id for the given device,
|
|
15868
|
+
* cascading their media in lockstep. Returns the number of tracks
|
|
15869
|
+
* actually deleted plus the ids that could not be removed.
|
|
15870
|
+
*
|
|
15871
|
+
* Operator-driven from the DI Events page (batch delete). Routes through
|
|
15872
|
+
* the same widened track-deletion cascade (design §5.2).
|
|
15873
|
+
*/
|
|
15874
|
+
deleteTracks: method(zod.z.object({
|
|
15875
|
+
deviceId: zod.z.number(),
|
|
15876
|
+
trackIds: zod.z.array(zod.z.string()).min(1)
|
|
15877
|
+
}), zod.z.object({
|
|
15878
|
+
deleted: zod.z.number().int(),
|
|
15879
|
+
failed: zod.z.array(zod.z.string()).readonly()
|
|
15880
|
+
}), {
|
|
15881
|
+
kind: "mutation",
|
|
15882
|
+
auth: "admin"
|
|
15883
|
+
}),
|
|
15169
15884
|
getEventMedia: method(zod.z.object({
|
|
15170
15885
|
eventId: zod.z.string(),
|
|
15171
15886
|
kind: MediaFileKindEnum.optional()
|
|
@@ -15183,17 +15898,19 @@ var pipelineAnalyticsCapability = {
|
|
|
15183
15898
|
},
|
|
15184
15899
|
events: {
|
|
15185
15900
|
/**
|
|
15186
|
-
* Enriched frame emitted after refinement
|
|
15187
|
-
*
|
|
15188
|
-
*
|
|
15189
|
-
*
|
|
15901
|
+
* Enriched frame emitted after refinement — the live-overlay source of
|
|
15902
|
+
* truth (two-plane re-injection). Carries the frame's detections in the
|
|
15903
|
+
* `ObjectDetection` wire shape: first-level roots (with track info +
|
|
15904
|
+
* enrichment labels) plus synthesized `kind:'detail'` face/plate entries
|
|
15905
|
+
* re-projected from per-track detail state, so stream overlays render
|
|
15906
|
+
* boxes + recognized names without querying full Track state.
|
|
15190
15907
|
*/
|
|
15191
15908
|
onFrameTracked: { data: zod.z.object({
|
|
15192
15909
|
deviceId: zod.z.number(),
|
|
15193
15910
|
timestamp: zod.z.number(),
|
|
15194
15911
|
frameWidth: zod.z.number(),
|
|
15195
15912
|
frameHeight: zod.z.number(),
|
|
15196
|
-
detections: zod.z.array(
|
|
15913
|
+
detections: zod.z.array(OverlayDetectionSchema).readonly()
|
|
15197
15914
|
}) },
|
|
15198
15915
|
/** Track entered active state (first-seen). */
|
|
15199
15916
|
onTrackStarted: { data: zod.z.object({
|
|
@@ -19189,17 +19906,45 @@ setOverlay: method(zod.z.object({
|
|
|
19189
19906
|
}
|
|
19190
19907
|
}] }
|
|
19191
19908
|
};
|
|
19192
|
-
var
|
|
19193
|
-
|
|
19194
|
-
|
|
19195
|
-
|
|
19196
|
-
|
|
19197
|
-
/**
|
|
19909
|
+
var VehicleSchema = zod.z.object({
|
|
19910
|
+
id: zod.z.string(),
|
|
19911
|
+
name: zod.z.string(),
|
|
19912
|
+
sampleCount: zod.z.number().int().nonnegative(),
|
|
19913
|
+
coverMediaKey: zod.z.string().optional(),
|
|
19914
|
+
/** Inline base64 of the cover sample's plate crop, resolved from `coverMediaKey`. */
|
|
19915
|
+
coverBase64: zod.z.string().optional()
|
|
19916
|
+
});
|
|
19917
|
+
var VehicleSampleInfoSchema = zod.z.object({
|
|
19918
|
+
id: zod.z.string(),
|
|
19919
|
+
/** The plate text this sample enrolled (self-labeling — no embedding). */
|
|
19920
|
+
text: zod.z.string(),
|
|
19921
|
+
/** OCR confidence of the enrolled read (0..1). */
|
|
19922
|
+
score: zod.z.number(),
|
|
19923
|
+
addedAt: zod.z.number().int(),
|
|
19924
|
+
deviceId: zod.z.number().int().optional(),
|
|
19925
|
+
base64: zod.z.string().optional()
|
|
19926
|
+
});
|
|
19927
|
+
var PlateInfoSchema = zod.z.object({
|
|
19928
|
+
plateId: zod.z.string(),
|
|
19929
|
+
deviceId: zod.z.number().int(),
|
|
19930
|
+
trackId: zod.z.string(),
|
|
19931
|
+
timestamp: zod.z.number().int(),
|
|
19932
|
+
/** Normalized OCR text (upper, no separators), or the human-corrected value. */
|
|
19198
19933
|
text: zod.z.string(),
|
|
19199
19934
|
/** OCR confidence of the stored read (0..1); 1 when manually corrected. */
|
|
19200
19935
|
score: zod.z.number(),
|
|
19201
19936
|
/** True when the text was manually corrected (exempt from retention). */
|
|
19202
19937
|
corrected: zod.z.boolean(),
|
|
19938
|
+
/** Recognized vehicle id when a matcher lookup named this read (SQL NULL → absent). */
|
|
19939
|
+
recognizedVehicleId: zod.z.string().optional(),
|
|
19940
|
+
/** Resolved vehicle name for `recognizedVehicleId` (UI convenience). */
|
|
19941
|
+
vehicleName: zod.z.string().optional(),
|
|
19942
|
+
/** True once the read was assigned to a vehicle (enrolled as a sample). */
|
|
19943
|
+
assigned: zod.z.boolean(),
|
|
19944
|
+
/** keyFrame parity: the plate bbox (pixel space) on the native key frame. */
|
|
19945
|
+
plateBbox: BoundingBoxSchema.optional(),
|
|
19946
|
+
/** keyFrame parity: MediaStore key of the track's native-resolution key frame. */
|
|
19947
|
+
keyFrameMediaKey: zod.z.string().optional(),
|
|
19203
19948
|
base64: zod.z.string().optional()
|
|
19204
19949
|
});
|
|
19205
19950
|
var MediaFileLiteSchema = zod.z.object({
|
|
@@ -19261,6 +20006,58 @@ var plateGalleryCapability = {
|
|
|
19261
20006
|
deletePlate: method(zod.z.object({ plateId: zod.z.string() }), zod.z.void(), {
|
|
19262
20007
|
kind: "mutation",
|
|
19263
20008
|
auth: "admin"
|
|
20009
|
+
}),
|
|
20010
|
+
listVehicles: method(zod.z.void(), zod.z.array(VehicleSchema).readonly()),
|
|
20011
|
+
createVehicle: method(zod.z.object({ name: zod.z.string().min(1) }), VehicleSchema, {
|
|
20012
|
+
kind: "mutation",
|
|
20013
|
+
auth: "admin"
|
|
20014
|
+
}),
|
|
20015
|
+
renameVehicle: method(zod.z.object({
|
|
20016
|
+
id: zod.z.string(),
|
|
20017
|
+
name: zod.z.string().min(1)
|
|
20018
|
+
}), zod.z.void(), {
|
|
20019
|
+
kind: "mutation",
|
|
20020
|
+
auth: "admin"
|
|
20021
|
+
}),
|
|
20022
|
+
deleteVehicle: method(zod.z.object({ id: zod.z.string() }), zod.z.void(), {
|
|
20023
|
+
kind: "mutation",
|
|
20024
|
+
auth: "admin"
|
|
20025
|
+
}),
|
|
20026
|
+
listVehicleSamples: method(zod.z.object({ vehicleId: zod.z.string() }), zod.z.array(VehicleSampleInfoSchema).readonly()),
|
|
20027
|
+
removeVehicleSample: method(zod.z.object({
|
|
20028
|
+
vehicleId: zod.z.string(),
|
|
20029
|
+
sampleId: zod.z.string()
|
|
20030
|
+
}), zod.z.void(), {
|
|
20031
|
+
kind: "mutation",
|
|
20032
|
+
auth: "admin"
|
|
20033
|
+
}),
|
|
20034
|
+
assignPlate: method(zod.z.object({
|
|
20035
|
+
plateId: zod.z.string(),
|
|
20036
|
+
vehicleId: zod.z.string()
|
|
20037
|
+
}), zod.z.void(), {
|
|
20038
|
+
kind: "mutation",
|
|
20039
|
+
auth: "admin"
|
|
20040
|
+
}),
|
|
20041
|
+
unassignPlate: method(zod.z.object({ plateId: zod.z.string() }), zod.z.void(), {
|
|
20042
|
+
kind: "mutation",
|
|
20043
|
+
auth: "admin"
|
|
20044
|
+
}),
|
|
20045
|
+
assignPlates: method(zod.z.object({
|
|
20046
|
+
plateIds: zod.z.array(zod.z.string()).min(1),
|
|
20047
|
+
vehicleId: zod.z.string()
|
|
20048
|
+
}), zod.z.object({
|
|
20049
|
+
assigned: zod.z.number().int(),
|
|
20050
|
+
failed: zod.z.array(zod.z.string()).readonly()
|
|
20051
|
+
}), {
|
|
20052
|
+
kind: "mutation",
|
|
20053
|
+
auth: "admin"
|
|
20054
|
+
}),
|
|
20055
|
+
unassignPlates: method(zod.z.object({ plateIds: zod.z.array(zod.z.string()).min(1) }), zod.z.object({
|
|
20056
|
+
unassigned: zod.z.number().int(),
|
|
20057
|
+
failed: zod.z.array(zod.z.string()).readonly()
|
|
20058
|
+
}), {
|
|
20059
|
+
kind: "mutation",
|
|
20060
|
+
auth: "admin"
|
|
19264
20061
|
})
|
|
19265
20062
|
}
|
|
19266
20063
|
};
|
|
@@ -20421,6 +21218,8 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
20421
21218
|
integrationsCapability,
|
|
20422
21219
|
intercomCapability,
|
|
20423
21220
|
lawnMowerControlCapability,
|
|
21221
|
+
llmCapability,
|
|
21222
|
+
llmRuntimeCapability,
|
|
20424
21223
|
localNetworkCapability,
|
|
20425
21224
|
lockControlCapability,
|
|
20426
21225
|
logDestinationCapability,
|
|
@@ -20459,6 +21258,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
20459
21258
|
ptzAutotrackCapability,
|
|
20460
21259
|
rebootCapability,
|
|
20461
21260
|
recordingCapability,
|
|
21261
|
+
sceneMonitorCapability,
|
|
20462
21262
|
scriptRunnerCapability,
|
|
20463
21263
|
serverManagementCapability,
|
|
20464
21264
|
settingsStoreCapability,
|
|
@@ -20553,6 +21353,7 @@ var CAP_NAMES_WITH_STATUS = [
|
|
|
20553
21353
|
"ptz",
|
|
20554
21354
|
"ptz-autotrack",
|
|
20555
21355
|
"recording",
|
|
21356
|
+
"scene-monitor",
|
|
20556
21357
|
"script-runner",
|
|
20557
21358
|
"smoke",
|
|
20558
21359
|
"snapshot",
|
|
@@ -22476,6 +23277,168 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
22476
23277
|
addonId: null,
|
|
22477
23278
|
access: "create"
|
|
22478
23279
|
},
|
|
23280
|
+
"llm.deleteModel": {
|
|
23281
|
+
capName: "llm",
|
|
23282
|
+
capScope: "system",
|
|
23283
|
+
addonId: null,
|
|
23284
|
+
access: "delete"
|
|
23285
|
+
},
|
|
23286
|
+
"llm.deleteProfile": {
|
|
23287
|
+
capName: "llm",
|
|
23288
|
+
capScope: "system",
|
|
23289
|
+
addonId: null,
|
|
23290
|
+
access: "delete"
|
|
23291
|
+
},
|
|
23292
|
+
"llm.generate": {
|
|
23293
|
+
capName: "llm",
|
|
23294
|
+
capScope: "system",
|
|
23295
|
+
addonId: null,
|
|
23296
|
+
access: "create"
|
|
23297
|
+
},
|
|
23298
|
+
"llm.generateVision": {
|
|
23299
|
+
capName: "llm",
|
|
23300
|
+
capScope: "system",
|
|
23301
|
+
addonId: null,
|
|
23302
|
+
access: "create"
|
|
23303
|
+
},
|
|
23304
|
+
"llm.getDefaults": {
|
|
23305
|
+
capName: "llm",
|
|
23306
|
+
capScope: "system",
|
|
23307
|
+
addonId: null,
|
|
23308
|
+
access: "view"
|
|
23309
|
+
},
|
|
23310
|
+
"llm.getRuntimeStatus": {
|
|
23311
|
+
capName: "llm",
|
|
23312
|
+
capScope: "system",
|
|
23313
|
+
addonId: null,
|
|
23314
|
+
access: "view"
|
|
23315
|
+
},
|
|
23316
|
+
"llm.getUsage": {
|
|
23317
|
+
capName: "llm",
|
|
23318
|
+
capScope: "system",
|
|
23319
|
+
addonId: null,
|
|
23320
|
+
access: "view"
|
|
23321
|
+
},
|
|
23322
|
+
"llm.installModel": {
|
|
23323
|
+
capName: "llm",
|
|
23324
|
+
capScope: "system",
|
|
23325
|
+
addonId: null,
|
|
23326
|
+
access: "create"
|
|
23327
|
+
},
|
|
23328
|
+
"llm.listModelCatalog": {
|
|
23329
|
+
capName: "llm",
|
|
23330
|
+
capScope: "system",
|
|
23331
|
+
addonId: null,
|
|
23332
|
+
access: "view"
|
|
23333
|
+
},
|
|
23334
|
+
"llm.listModels": {
|
|
23335
|
+
capName: "llm",
|
|
23336
|
+
capScope: "system",
|
|
23337
|
+
addonId: null,
|
|
23338
|
+
access: "view"
|
|
23339
|
+
},
|
|
23340
|
+
"llm.listNodeModels": {
|
|
23341
|
+
capName: "llm",
|
|
23342
|
+
capScope: "system",
|
|
23343
|
+
addonId: null,
|
|
23344
|
+
access: "view"
|
|
23345
|
+
},
|
|
23346
|
+
"llm.listProfileKinds": {
|
|
23347
|
+
capName: "llm",
|
|
23348
|
+
capScope: "system",
|
|
23349
|
+
addonId: null,
|
|
23350
|
+
access: "view"
|
|
23351
|
+
},
|
|
23352
|
+
"llm.listProfiles": {
|
|
23353
|
+
capName: "llm",
|
|
23354
|
+
capScope: "system",
|
|
23355
|
+
addonId: null,
|
|
23356
|
+
access: "view"
|
|
23357
|
+
},
|
|
23358
|
+
"llm.listRuntimeNodes": {
|
|
23359
|
+
capName: "llm",
|
|
23360
|
+
capScope: "system",
|
|
23361
|
+
addonId: null,
|
|
23362
|
+
access: "view"
|
|
23363
|
+
},
|
|
23364
|
+
"llm.setDefault": {
|
|
23365
|
+
capName: "llm",
|
|
23366
|
+
capScope: "system",
|
|
23367
|
+
addonId: null,
|
|
23368
|
+
access: "create"
|
|
23369
|
+
},
|
|
23370
|
+
"llm.startRuntime": {
|
|
23371
|
+
capName: "llm",
|
|
23372
|
+
capScope: "system",
|
|
23373
|
+
addonId: null,
|
|
23374
|
+
access: "create"
|
|
23375
|
+
},
|
|
23376
|
+
"llm.stopRuntime": {
|
|
23377
|
+
capName: "llm",
|
|
23378
|
+
capScope: "system",
|
|
23379
|
+
addonId: null,
|
|
23380
|
+
access: "create"
|
|
23381
|
+
},
|
|
23382
|
+
"llm.testProfile": {
|
|
23383
|
+
capName: "llm",
|
|
23384
|
+
capScope: "system",
|
|
23385
|
+
addonId: null,
|
|
23386
|
+
access: "create"
|
|
23387
|
+
},
|
|
23388
|
+
"llm.upsertProfile": {
|
|
23389
|
+
capName: "llm",
|
|
23390
|
+
capScope: "system",
|
|
23391
|
+
addonId: null,
|
|
23392
|
+
access: "create"
|
|
23393
|
+
},
|
|
23394
|
+
"llmRuntime.complete": {
|
|
23395
|
+
capName: "llm-runtime",
|
|
23396
|
+
capScope: "system",
|
|
23397
|
+
addonId: null,
|
|
23398
|
+
access: "create"
|
|
23399
|
+
},
|
|
23400
|
+
"llmRuntime.deleteModel": {
|
|
23401
|
+
capName: "llm-runtime",
|
|
23402
|
+
capScope: "system",
|
|
23403
|
+
addonId: null,
|
|
23404
|
+
access: "delete"
|
|
23405
|
+
},
|
|
23406
|
+
"llmRuntime.ensureStarted": {
|
|
23407
|
+
capName: "llm-runtime",
|
|
23408
|
+
capScope: "system",
|
|
23409
|
+
addonId: null,
|
|
23410
|
+
access: "create"
|
|
23411
|
+
},
|
|
23412
|
+
"llmRuntime.getDiskUsage": {
|
|
23413
|
+
capName: "llm-runtime",
|
|
23414
|
+
capScope: "system",
|
|
23415
|
+
addonId: null,
|
|
23416
|
+
access: "view"
|
|
23417
|
+
},
|
|
23418
|
+
"llmRuntime.installModel": {
|
|
23419
|
+
capName: "llm-runtime",
|
|
23420
|
+
capScope: "system",
|
|
23421
|
+
addonId: null,
|
|
23422
|
+
access: "create"
|
|
23423
|
+
},
|
|
23424
|
+
"llmRuntime.listLocalModels": {
|
|
23425
|
+
capName: "llm-runtime",
|
|
23426
|
+
capScope: "system",
|
|
23427
|
+
addonId: null,
|
|
23428
|
+
access: "view"
|
|
23429
|
+
},
|
|
23430
|
+
"llmRuntime.status": {
|
|
23431
|
+
capName: "llm-runtime",
|
|
23432
|
+
capScope: "system",
|
|
23433
|
+
addonId: null,
|
|
23434
|
+
access: "view"
|
|
23435
|
+
},
|
|
23436
|
+
"llmRuntime.stop": {
|
|
23437
|
+
capName: "llm-runtime",
|
|
23438
|
+
capScope: "system",
|
|
23439
|
+
addonId: null,
|
|
23440
|
+
access: "create"
|
|
23441
|
+
},
|
|
22479
23442
|
"localNetwork.getAllowedAddresses": {
|
|
22480
23443
|
capName: "local-network",
|
|
22481
23444
|
capScope: "system",
|
|
@@ -23106,6 +24069,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
23106
24069
|
addonId: null,
|
|
23107
24070
|
access: "delete"
|
|
23108
24071
|
},
|
|
24072
|
+
"pipelineAnalytics.deleteTracks": {
|
|
24073
|
+
capName: "pipeline-analytics",
|
|
24074
|
+
capScope: "device",
|
|
24075
|
+
addonId: null,
|
|
24076
|
+
access: "delete"
|
|
24077
|
+
},
|
|
23109
24078
|
"pipelineAnalytics.getActiveTracks": {
|
|
23110
24079
|
capName: "pipeline-analytics",
|
|
23111
24080
|
capScope: "device",
|
|
@@ -23172,12 +24141,24 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
23172
24141
|
addonId: null,
|
|
23173
24142
|
access: "create"
|
|
23174
24143
|
},
|
|
24144
|
+
"pipelineAnalytics.pruneTracksBefore": {
|
|
24145
|
+
capName: "pipeline-analytics",
|
|
24146
|
+
capScope: "device",
|
|
24147
|
+
addonId: null,
|
|
24148
|
+
access: "create"
|
|
24149
|
+
},
|
|
23175
24150
|
"pipelineAnalytics.searchObjectEvents": {
|
|
23176
24151
|
capName: "pipeline-analytics",
|
|
23177
24152
|
capScope: "device",
|
|
23178
24153
|
addonId: null,
|
|
23179
24154
|
access: "view"
|
|
23180
24155
|
},
|
|
24156
|
+
"pipelineAnalytics.wipeAllAnalytics": {
|
|
24157
|
+
capName: "pipeline-analytics",
|
|
24158
|
+
capScope: "device",
|
|
24159
|
+
addonId: null,
|
|
24160
|
+
access: "delete"
|
|
24161
|
+
},
|
|
23181
24162
|
"pipelineExecutor.cacheFrameInPool": {
|
|
23182
24163
|
capName: "pipeline-executor",
|
|
23183
24164
|
capScope: "system",
|
|
@@ -23676,18 +24657,48 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
23676
24657
|
addonId: null,
|
|
23677
24658
|
access: "create"
|
|
23678
24659
|
},
|
|
24660
|
+
"pipelineRunner.runDetailSubtree": {
|
|
24661
|
+
capName: "pipeline-runner",
|
|
24662
|
+
capScope: "system",
|
|
24663
|
+
addonId: null,
|
|
24664
|
+
access: "create"
|
|
24665
|
+
},
|
|
24666
|
+
"plateGallery.assignPlate": {
|
|
24667
|
+
capName: "plate-gallery",
|
|
24668
|
+
capScope: "system",
|
|
24669
|
+
addonId: null,
|
|
24670
|
+
access: "create"
|
|
24671
|
+
},
|
|
24672
|
+
"plateGallery.assignPlates": {
|
|
24673
|
+
capName: "plate-gallery",
|
|
24674
|
+
capScope: "system",
|
|
24675
|
+
addonId: null,
|
|
24676
|
+
access: "create"
|
|
24677
|
+
},
|
|
23679
24678
|
"plateGallery.correctPlateText": {
|
|
23680
24679
|
capName: "plate-gallery",
|
|
23681
24680
|
capScope: "system",
|
|
23682
24681
|
addonId: null,
|
|
23683
24682
|
access: "create"
|
|
23684
24683
|
},
|
|
24684
|
+
"plateGallery.createVehicle": {
|
|
24685
|
+
capName: "plate-gallery",
|
|
24686
|
+
capScope: "system",
|
|
24687
|
+
addonId: null,
|
|
24688
|
+
access: "create"
|
|
24689
|
+
},
|
|
23685
24690
|
"plateGallery.deletePlate": {
|
|
23686
24691
|
capName: "plate-gallery",
|
|
23687
24692
|
capScope: "system",
|
|
23688
24693
|
addonId: null,
|
|
23689
24694
|
access: "delete"
|
|
23690
24695
|
},
|
|
24696
|
+
"plateGallery.deleteVehicle": {
|
|
24697
|
+
capName: "plate-gallery",
|
|
24698
|
+
capScope: "system",
|
|
24699
|
+
addonId: null,
|
|
24700
|
+
access: "delete"
|
|
24701
|
+
},
|
|
23691
24702
|
"plateGallery.getPlateByTrack": {
|
|
23692
24703
|
capName: "plate-gallery",
|
|
23693
24704
|
capScope: "system",
|
|
@@ -23706,6 +24717,30 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
23706
24717
|
addonId: null,
|
|
23707
24718
|
access: "view"
|
|
23708
24719
|
},
|
|
24720
|
+
"plateGallery.listVehicles": {
|
|
24721
|
+
capName: "plate-gallery",
|
|
24722
|
+
capScope: "system",
|
|
24723
|
+
addonId: null,
|
|
24724
|
+
access: "view"
|
|
24725
|
+
},
|
|
24726
|
+
"plateGallery.listVehicleSamples": {
|
|
24727
|
+
capName: "plate-gallery",
|
|
24728
|
+
capScope: "system",
|
|
24729
|
+
addonId: null,
|
|
24730
|
+
access: "view"
|
|
24731
|
+
},
|
|
24732
|
+
"plateGallery.removeVehicleSample": {
|
|
24733
|
+
capName: "plate-gallery",
|
|
24734
|
+
capScope: "system",
|
|
24735
|
+
addonId: null,
|
|
24736
|
+
access: "delete"
|
|
24737
|
+
},
|
|
24738
|
+
"plateGallery.renameVehicle": {
|
|
24739
|
+
capName: "plate-gallery",
|
|
24740
|
+
capScope: "system",
|
|
24741
|
+
addonId: null,
|
|
24742
|
+
access: "create"
|
|
24743
|
+
},
|
|
23709
24744
|
"plateGallery.searchPlates": {
|
|
23710
24745
|
capName: "plate-gallery",
|
|
23711
24746
|
capScope: "system",
|
|
@@ -23718,6 +24753,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
23718
24753
|
addonId: null,
|
|
23719
24754
|
access: "view"
|
|
23720
24755
|
},
|
|
24756
|
+
"plateGallery.unassignPlate": {
|
|
24757
|
+
capName: "plate-gallery",
|
|
24758
|
+
capScope: "system",
|
|
24759
|
+
addonId: null,
|
|
24760
|
+
access: "create"
|
|
24761
|
+
},
|
|
24762
|
+
"plateGallery.unassignPlates": {
|
|
24763
|
+
capName: "plate-gallery",
|
|
24764
|
+
capScope: "system",
|
|
24765
|
+
addonId: null,
|
|
24766
|
+
access: "create"
|
|
24767
|
+
},
|
|
23721
24768
|
"platformProbe.getCapabilities": {
|
|
23722
24769
|
capName: "platform-probe",
|
|
23723
24770
|
capScope: "system",
|
|
@@ -23910,6 +24957,48 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
23910
24957
|
addonId: null,
|
|
23911
24958
|
access: "create"
|
|
23912
24959
|
},
|
|
24960
|
+
"sceneMonitor.captureReference": {
|
|
24961
|
+
capName: "scene-monitor",
|
|
24962
|
+
capScope: "device",
|
|
24963
|
+
addonId: null,
|
|
24964
|
+
access: "create"
|
|
24965
|
+
},
|
|
24966
|
+
"sceneMonitor.createScene": {
|
|
24967
|
+
capName: "scene-monitor",
|
|
24968
|
+
capScope: "device",
|
|
24969
|
+
addonId: null,
|
|
24970
|
+
access: "create"
|
|
24971
|
+
},
|
|
24972
|
+
"sceneMonitor.deleteReference": {
|
|
24973
|
+
capName: "scene-monitor",
|
|
24974
|
+
capScope: "device",
|
|
24975
|
+
addonId: null,
|
|
24976
|
+
access: "delete"
|
|
24977
|
+
},
|
|
24978
|
+
"sceneMonitor.deleteScene": {
|
|
24979
|
+
capName: "scene-monitor",
|
|
24980
|
+
capScope: "device",
|
|
24981
|
+
addonId: null,
|
|
24982
|
+
access: "delete"
|
|
24983
|
+
},
|
|
24984
|
+
"sceneMonitor.listScenes": {
|
|
24985
|
+
capName: "scene-monitor",
|
|
24986
|
+
capScope: "device",
|
|
24987
|
+
addonId: null,
|
|
24988
|
+
access: "view"
|
|
24989
|
+
},
|
|
24990
|
+
"sceneMonitor.recheckNow": {
|
|
24991
|
+
capName: "scene-monitor",
|
|
24992
|
+
capScope: "device",
|
|
24993
|
+
addonId: null,
|
|
24994
|
+
access: "create"
|
|
24995
|
+
},
|
|
24996
|
+
"sceneMonitor.updateScene": {
|
|
24997
|
+
capName: "scene-monitor",
|
|
24998
|
+
capScope: "device",
|
|
24999
|
+
addonId: null,
|
|
25000
|
+
access: "create"
|
|
25001
|
+
},
|
|
23913
25002
|
"scriptRunner.run": {
|
|
23914
25003
|
capName: "script-runner",
|
|
23915
25004
|
capScope: "device",
|
|
@@ -24994,6 +26083,7 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
24994
26083
|
Object.freeze({
|
|
24995
26084
|
"broker": "broker",
|
|
24996
26085
|
"device-export": "device-export",
|
|
26086
|
+
"llm": "ai",
|
|
24997
26087
|
"mesh-network": "mesh",
|
|
24998
26088
|
"mqtt-broker": "broker",
|
|
24999
26089
|
"network-access": "ingress",
|
|
@@ -25370,6 +26460,12 @@ Object.defineProperty(exports, "isArrayOutputSchema", {
|
|
|
25370
26460
|
return isArrayOutputSchema;
|
|
25371
26461
|
}
|
|
25372
26462
|
});
|
|
26463
|
+
Object.defineProperty(exports, "isCollectionArrayMethod", {
|
|
26464
|
+
enumerable: true,
|
|
26465
|
+
get: function() {
|
|
26466
|
+
return isCollectionArrayMethod;
|
|
26467
|
+
}
|
|
26468
|
+
});
|
|
25373
26469
|
Object.defineProperty(exports, "isDeviceConfigCap", {
|
|
25374
26470
|
enumerable: true,
|
|
25375
26471
|
get: function() {
|