@camstack/addon-provider-homeassistant 1.1.23 → 1.1.25
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.js +1014 -40
- package/dist/addon.mjs +1014 -40
- package/package.json +5 -1
package/dist/addon.js
CHANGED
|
@@ -4288,6 +4288,14 @@ function object(shape, params) {
|
|
|
4288
4288
|
...normalizeParams(params)
|
|
4289
4289
|
});
|
|
4290
4290
|
}
|
|
4291
|
+
function looseObject(shape, params) {
|
|
4292
|
+
return new ZodObject({
|
|
4293
|
+
type: "object",
|
|
4294
|
+
shape,
|
|
4295
|
+
catchall: unknown(),
|
|
4296
|
+
...normalizeParams(params)
|
|
4297
|
+
});
|
|
4298
|
+
}
|
|
4291
4299
|
var ZodUnion = /*@__PURE__*/ $constructor("ZodUnion", (inst, def) => {
|
|
4292
4300
|
$ZodUnion.init(inst, def);
|
|
4293
4301
|
ZodType.init(inst, def);
|
|
@@ -4629,7 +4637,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4629
4637
|
return inst;
|
|
4630
4638
|
}
|
|
4631
4639
|
//#endregion
|
|
4632
|
-
//#region ../types/dist/sleep-
|
|
4640
|
+
//#region ../types/dist/sleep-DkhOVOjW.mjs
|
|
4633
4641
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4634
4642
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4635
4643
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -5039,10 +5047,43 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
5039
5047
|
EventCategory["EnrichmentEmbeddingStored"] = "enrichment.embedding.stored";
|
|
5040
5048
|
EventCategory["EnrichmentSceneStateChanged"] = "enrichment.scene.state-changed";
|
|
5041
5049
|
EventCategory["EnrichmentActivitySummary"] = "enrichment.activity.summary";
|
|
5050
|
+
/**
|
|
5051
|
+
* Unified track-lifecycle event: ONE category carrying `phase:
|
|
5052
|
+
* 'start' | 'update' | 'end'` with a rich, typed
|
|
5053
|
+
* `PipelineAnalyticsTrackLifecyclePayload`. Supersedes the thin
|
|
5054
|
+
* `PipelineAnalyticsTrackStarted` / `PipelineAnalyticsTrackEnded`
|
|
5055
|
+
* pair — a consumer subscribes once and branches on `phase`.
|
|
5056
|
+
*/
|
|
5057
|
+
EventCategory["PipelineAnalyticsTrackLifecycle"] = "pipeline-analytics.track-lifecycle";
|
|
5058
|
+
/**
|
|
5059
|
+
* @deprecated Superseded by {@link PipelineAnalyticsTrackLifecycle}
|
|
5060
|
+
* (`phase:'start'`). Kept as a soft alias — no known subscribers.
|
|
5061
|
+
*/
|
|
5042
5062
|
EventCategory["PipelineAnalyticsTrackStarted"] = "pipeline-analytics.track-started";
|
|
5063
|
+
/**
|
|
5064
|
+
* @deprecated Superseded by {@link PipelineAnalyticsTrackLifecycle}
|
|
5065
|
+
* (`phase:'end'`). Kept as a soft alias — no known subscribers.
|
|
5066
|
+
*/
|
|
5043
5067
|
EventCategory["PipelineAnalyticsTrackEnded"] = "pipeline-analytics.track-ended";
|
|
5044
5068
|
EventCategory["PipelineAnalyticsDetectionEvent"] = "pipeline-analytics.detection-event";
|
|
5045
5069
|
EventCategory["PipelineAnalyticsFrameTracked"] = "pipeline-analytics.frame-tracked";
|
|
5070
|
+
/**
|
|
5071
|
+
* Fired by `addon-post-analysis` whenever a gallery face row changes:
|
|
5072
|
+
* `kind:'buffered'` a new detected face was persisted, `'assigned'` /
|
|
5073
|
+
* `'unassigned'` its identity link changed, `'deleted'` the row was
|
|
5074
|
+
* removed. Telemetry semantics (D8): a lost event only delays a refresh,
|
|
5075
|
+
* never a correctness issue. Payload `PipelineAnalyticsFaceGalleryChangedPayload`.
|
|
5076
|
+
*/
|
|
5077
|
+
EventCategory["PipelineAnalyticsFaceGalleryChanged"] = "pipeline-analytics.face-gallery-changed";
|
|
5078
|
+
/**
|
|
5079
|
+
* Fired by `addon-post-analysis` whenever a gallery plate row changes:
|
|
5080
|
+
* `kind:'buffered'` a new read was persisted (`PlateRecognizer.onTrackEnd`),
|
|
5081
|
+
* `'assigned'` / `'unassigned'` its vehicle link changed
|
|
5082
|
+
* (`PlateGalleryProvider`), `'deleted'` the row was removed. Telemetry
|
|
5083
|
+
* semantics (D8): a lost event only delays a refresh, never a correctness
|
|
5084
|
+
* issue. Payload `PipelineAnalyticsPlateGalleryChangedPayload`.
|
|
5085
|
+
*/
|
|
5086
|
+
EventCategory["PipelineAnalyticsPlateGalleryChanged"] = "pipeline-analytics.plate-gallery-changed";
|
|
5046
5087
|
EventCategory["FrigateLiveEvent"] = "frigate.live-event";
|
|
5047
5088
|
EventCategory["CameraStreamsProfileSlotsChanged"] = "camera-streams.onProfileSlotsChanged";
|
|
5048
5089
|
/**
|
|
@@ -6887,7 +6928,8 @@ var MODEL_FORMATS = [
|
|
|
6887
6928
|
"coreml",
|
|
6888
6929
|
"openvino",
|
|
6889
6930
|
"tflite",
|
|
6890
|
-
"pt"
|
|
6931
|
+
"pt",
|
|
6932
|
+
"gguf"
|
|
6891
6933
|
];
|
|
6892
6934
|
/**
|
|
6893
6935
|
* Multi-file format payload.
|
|
@@ -6931,7 +6973,8 @@ var ModelFormatsSchema = object({
|
|
|
6931
6973
|
coreml: ModelFormatEntrySchema.optional(),
|
|
6932
6974
|
openvino: ModelFormatEntrySchema.optional(),
|
|
6933
6975
|
tflite: ModelFormatEntrySchema.optional(),
|
|
6934
|
-
pt: ModelFormatEntrySchema.optional()
|
|
6976
|
+
pt: ModelFormatEntrySchema.optional(),
|
|
6977
|
+
gguf: ModelFormatEntrySchema.optional()
|
|
6935
6978
|
});
|
|
6936
6979
|
/**
|
|
6937
6980
|
* Variant-selector grouping axes. Shared by the full `ModelCatalogEntry` and by
|
|
@@ -11925,7 +11968,8 @@ var ModelFormatSchema$1 = _enum([
|
|
|
11925
11968
|
"coreml",
|
|
11926
11969
|
"openvino",
|
|
11927
11970
|
"tflite",
|
|
11928
|
-
"pt"
|
|
11971
|
+
"pt",
|
|
11972
|
+
"gguf"
|
|
11929
11973
|
]);
|
|
11930
11974
|
var PipelineSlotSchema = _enum([
|
|
11931
11975
|
"detector",
|
|
@@ -12180,7 +12224,15 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
12180
12224
|
image: _instanceof(Uint8Array).optional(),
|
|
12181
12225
|
referenceImage: string().optional(),
|
|
12182
12226
|
deviceId: number().optional(),
|
|
12183
|
-
sessionId: string().optional()
|
|
12227
|
+
sessionId: string().optional(),
|
|
12228
|
+
/**
|
|
12229
|
+
* Execution plane. 'full' (default) runs the whole tree — benchmark,
|
|
12230
|
+
* reference-image, and detail-subtree calls. 'frame' is the live
|
|
12231
|
+
* per-frame dispatch: ONLY root-plane steps run; crop children
|
|
12232
|
+
* (inputClasses ≠ null) are skipped and served per-track via
|
|
12233
|
+
* pipelineRunner.runDetailSubtree (two-plane design).
|
|
12234
|
+
*/
|
|
12235
|
+
plane: _enum(["full", "frame"]).optional()
|
|
12184
12236
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
12185
12237
|
engine: PipelineEngineChoiceSchema.optional(),
|
|
12186
12238
|
steps: array(PipelineStepInputSchema).min(1),
|
|
@@ -12356,6 +12408,28 @@ var NativeCropResultSchema = object({
|
|
|
12356
12408
|
width: number().int().positive(),
|
|
12357
12409
|
height: number().int().positive()
|
|
12358
12410
|
});
|
|
12411
|
+
/** Parent detection context passed to `runDetailSubtree` — the crop's
|
|
12412
|
+
* originating detection, in FRAME-space coordinates. Reuses
|
|
12413
|
+
* `NativeCropBboxSchema`'s `{x,y,w,h}` shape (same numeric fields; here
|
|
12414
|
+
* the coordinates are frame-space rather than getNativeCrop's
|
|
12415
|
+
* normalized [0,1] convention). */
|
|
12416
|
+
var DetailParentSchema = object({
|
|
12417
|
+
bbox: NativeCropBboxSchema,
|
|
12418
|
+
className: string()
|
|
12419
|
+
});
|
|
12420
|
+
/** One child-step result from `runDetailSubtree` — an embedding, label,
|
|
12421
|
+
* or refined detection produced by running the crop-subtree on a
|
|
12422
|
+
* single tracked detection. */
|
|
12423
|
+
var DetailResultSchema = object({
|
|
12424
|
+
stepId: string(),
|
|
12425
|
+
className: string(),
|
|
12426
|
+
score: number(),
|
|
12427
|
+
/** FRAME-space bbox (already mapped back from crop space). */
|
|
12428
|
+
bbox: NativeCropBboxSchema.optional(),
|
|
12429
|
+
embedding: string().optional(),
|
|
12430
|
+
label: string().optional(),
|
|
12431
|
+
alignedCropJpeg: string().optional()
|
|
12432
|
+
});
|
|
12359
12433
|
/**
|
|
12360
12434
|
* Per-camera tunable ranges + defaults. Single source of truth used
|
|
12361
12435
|
* by both the Zod data schema (validation + default fallback) and
|
|
@@ -12616,7 +12690,13 @@ method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mu
|
|
|
12616
12690
|
handle: FrameHandleSchema,
|
|
12617
12691
|
bbox: NativeCropBboxSchema,
|
|
12618
12692
|
maxWidth: number().int().positive().optional()
|
|
12619
|
-
}), NativeCropResultSchema.nullable())
|
|
12693
|
+
}), NativeCropResultSchema.nullable()), method(object({
|
|
12694
|
+
deviceId: number(),
|
|
12695
|
+
frameHandle: FrameHandleSchema.optional(),
|
|
12696
|
+
cropJpeg: string().optional(),
|
|
12697
|
+
parent: DetailParentSchema,
|
|
12698
|
+
steps: array(string()).optional()
|
|
12699
|
+
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" });
|
|
12620
12700
|
/**
|
|
12621
12701
|
* Hardware / firmware motion sensor cap — binary detected state plus
|
|
12622
12702
|
* a timestamp of the last observation. Distinct from
|
|
@@ -13624,6 +13704,167 @@ var ptzAutotrackCapability = {
|
|
|
13624
13704
|
runtimeState: PtzAutotrackRuntimeStateSchema
|
|
13625
13705
|
};
|
|
13626
13706
|
/**
|
|
13707
|
+
* scene-monitor — device-scoped reference-region state cap. An operator marks
|
|
13708
|
+
* a rect ROI on a camera frame and names one or more states; the engine
|
|
13709
|
+
* (pipeline-analytics, designated post-processing node) reports which state is
|
|
13710
|
+
* active on an ongoing basis. Two operator-selectable check modes share every-
|
|
13711
|
+
* thing except the comparator: `similarity` (CLIP cosine at the same ROI coords
|
|
13712
|
+
* vs condition-tagged references) and `llm` (vision-LLM judgment over the crop).
|
|
13713
|
+
*
|
|
13714
|
+
* D14 device-config archetype (`deviceConfig.ui.kind:'widget'`) — the framework
|
|
13715
|
+
* derives the device-detail contribution; the provider carries NO hand-written
|
|
13716
|
+
* settings-contribution methods. `status.kind:'push'` — the engine pushes on
|
|
13717
|
+
* every hysteresis flip / availability change; consumers never poll.
|
|
13718
|
+
*/
|
|
13719
|
+
/** Extensible condition tag. Seeded 'day' | 'night'; open by design so more can
|
|
13720
|
+
* be added without a wire break (matching falls back to any-condition refs). */
|
|
13721
|
+
var SceneConditionSchema = string();
|
|
13722
|
+
/** One captured reference — condition-tagged, model-version-gated. `embedding`
|
|
13723
|
+
* is `number[]` (Float32Array does NOT survive MsgPack/UDS). */
|
|
13724
|
+
var SceneReferenceSchema = object({
|
|
13725
|
+
embedding: array(number()),
|
|
13726
|
+
modelId: string(),
|
|
13727
|
+
condition: SceneConditionSchema,
|
|
13728
|
+
capturedAt: number(),
|
|
13729
|
+
thumbnailMediaId: string().optional()
|
|
13730
|
+
});
|
|
13731
|
+
var SceneMonitorStateSchema = object({
|
|
13732
|
+
id: string(),
|
|
13733
|
+
label: string(),
|
|
13734
|
+
references: array(SceneReferenceSchema),
|
|
13735
|
+
textPrompts: array(string()).optional(),
|
|
13736
|
+
referenceCount: number(),
|
|
13737
|
+
currentlyMatched: boolean()
|
|
13738
|
+
});
|
|
13739
|
+
/** Per-mode comparator params in a discriminated union so an `llm` scene never
|
|
13740
|
+
* carries similarity knobs and vice-versa. */
|
|
13741
|
+
var SceneCheckSchema = discriminatedUnion("mode", [object({
|
|
13742
|
+
mode: literal("similarity"),
|
|
13743
|
+
threshold: number().min(0).max(1),
|
|
13744
|
+
hysteresisCount: number().int().positive()
|
|
13745
|
+
}), object({
|
|
13746
|
+
mode: literal("llm"),
|
|
13747
|
+
prompt: string(),
|
|
13748
|
+
profileId: string().optional(),
|
|
13749
|
+
hysteresisCount: number().int().positive()
|
|
13750
|
+
})]);
|
|
13751
|
+
var SceneMonitorSchema = object({
|
|
13752
|
+
id: string(),
|
|
13753
|
+
label: string(),
|
|
13754
|
+
roi: MaskRectShapeSchema,
|
|
13755
|
+
enabled: boolean(),
|
|
13756
|
+
triggerMode: _enum([
|
|
13757
|
+
"periodic",
|
|
13758
|
+
"on-motion",
|
|
13759
|
+
"both"
|
|
13760
|
+
]),
|
|
13761
|
+
checkIntervalSec: number().optional(),
|
|
13762
|
+
check: SceneCheckSchema,
|
|
13763
|
+
states: array(SceneMonitorStateSchema),
|
|
13764
|
+
currentStateId: string().nullable(),
|
|
13765
|
+
lastCheckedAt: number().nullable(),
|
|
13766
|
+
lastConfidence: number().nullable(),
|
|
13767
|
+
currentCondition: SceneConditionSchema.nullable(),
|
|
13768
|
+
availability: _enum(["ok", "unavailable"]),
|
|
13769
|
+
unavailableReason: string().nullable()
|
|
13770
|
+
});
|
|
13771
|
+
var SceneMonitorStatusSchema = object({
|
|
13772
|
+
monitors: array(SceneMonitorSchema),
|
|
13773
|
+
lastFetchedAt: number()
|
|
13774
|
+
});
|
|
13775
|
+
var sceneMonitorCapability = {
|
|
13776
|
+
name: "scene-monitor",
|
|
13777
|
+
scope: "device",
|
|
13778
|
+
mode: "singleton",
|
|
13779
|
+
kind: "wrapper",
|
|
13780
|
+
defaultActive: true,
|
|
13781
|
+
deviceTypes: [DeviceType.Camera],
|
|
13782
|
+
deviceConfig: { ui: {
|
|
13783
|
+
kind: "widget",
|
|
13784
|
+
widgetId: "host/scene-monitor-editor",
|
|
13785
|
+
tab: "scenes",
|
|
13786
|
+
label: "Scenes"
|
|
13787
|
+
} },
|
|
13788
|
+
methods: {
|
|
13789
|
+
listScenes: method(object({ deviceId: number() }), SceneMonitorStatusSchema),
|
|
13790
|
+
createScene: method(object({
|
|
13791
|
+
deviceId: number(),
|
|
13792
|
+
label: string(),
|
|
13793
|
+
roi: MaskRectShapeSchema,
|
|
13794
|
+
check: SceneCheckSchema,
|
|
13795
|
+
triggerMode: _enum([
|
|
13796
|
+
"periodic",
|
|
13797
|
+
"on-motion",
|
|
13798
|
+
"both"
|
|
13799
|
+
]).optional(),
|
|
13800
|
+
checkIntervalSec: number().optional()
|
|
13801
|
+
}), SceneMonitorSchema, {
|
|
13802
|
+
kind: "mutation",
|
|
13803
|
+
auth: "admin"
|
|
13804
|
+
}),
|
|
13805
|
+
updateScene: method(object({
|
|
13806
|
+
deviceId: number(),
|
|
13807
|
+
monitorId: string(),
|
|
13808
|
+
patch: object({
|
|
13809
|
+
label: string().optional(),
|
|
13810
|
+
roi: MaskRectShapeSchema.optional(),
|
|
13811
|
+
enabled: boolean().optional(),
|
|
13812
|
+
triggerMode: _enum([
|
|
13813
|
+
"periodic",
|
|
13814
|
+
"on-motion",
|
|
13815
|
+
"both"
|
|
13816
|
+
]).optional(),
|
|
13817
|
+
checkIntervalSec: number().optional(),
|
|
13818
|
+
check: SceneCheckSchema.optional()
|
|
13819
|
+
})
|
|
13820
|
+
}), _void(), {
|
|
13821
|
+
kind: "mutation",
|
|
13822
|
+
auth: "admin"
|
|
13823
|
+
}),
|
|
13824
|
+
deleteScene: method(object({
|
|
13825
|
+
deviceId: number(),
|
|
13826
|
+
monitorId: string()
|
|
13827
|
+
}), _void(), {
|
|
13828
|
+
kind: "mutation",
|
|
13829
|
+
auth: "admin"
|
|
13830
|
+
}),
|
|
13831
|
+
captureReference: method(object({
|
|
13832
|
+
deviceId: number(),
|
|
13833
|
+
monitorId: string(),
|
|
13834
|
+
stateId: string().optional(),
|
|
13835
|
+
label: string().optional(),
|
|
13836
|
+
condition: SceneConditionSchema.optional()
|
|
13837
|
+
}), object({
|
|
13838
|
+
stateId: string(),
|
|
13839
|
+
referenceCount: number()
|
|
13840
|
+
}), {
|
|
13841
|
+
kind: "mutation",
|
|
13842
|
+
auth: "admin"
|
|
13843
|
+
}),
|
|
13844
|
+
deleteReference: method(object({
|
|
13845
|
+
deviceId: number(),
|
|
13846
|
+
monitorId: string(),
|
|
13847
|
+
stateId: string(),
|
|
13848
|
+
index: number()
|
|
13849
|
+
}), _void(), {
|
|
13850
|
+
kind: "mutation",
|
|
13851
|
+
auth: "admin"
|
|
13852
|
+
}),
|
|
13853
|
+
recheckNow: method(object({
|
|
13854
|
+
deviceId: number(),
|
|
13855
|
+
monitorId: string()
|
|
13856
|
+
}), _void(), {
|
|
13857
|
+
kind: "mutation",
|
|
13858
|
+
auth: "admin"
|
|
13859
|
+
})
|
|
13860
|
+
},
|
|
13861
|
+
status: {
|
|
13862
|
+
schema: SceneMonitorStatusSchema,
|
|
13863
|
+
kind: "push"
|
|
13864
|
+
},
|
|
13865
|
+
runtimeState: SceneMonitorStatusSchema
|
|
13866
|
+
};
|
|
13867
|
+
/**
|
|
13627
13868
|
* Script-runner cap. Models HA `script.*` entities on
|
|
13628
13869
|
* `DeviceType.Script`. A Script is a pre-recorded action sequence
|
|
13629
13870
|
* that can be invoked imperatively — optionally with a variables
|
|
@@ -14601,6 +14842,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
14601
14842
|
pressureSensor: pressureSensorCapability,
|
|
14602
14843
|
privacyMask: privacyMaskCapability,
|
|
14603
14844
|
ptzAutotrack: ptzAutotrackCapability,
|
|
14845
|
+
sceneMonitor: sceneMonitorCapability,
|
|
14604
14846
|
scriptRunner: scriptRunnerCapability,
|
|
14605
14847
|
smoke: smokeCapability,
|
|
14606
14848
|
streamParams: streamParamsCapability,
|
|
@@ -15886,7 +16128,12 @@ var NotificationRuleConditionsSchema = object({
|
|
|
15886
16128
|
clipDescription: object({
|
|
15887
16129
|
text: string().min(1),
|
|
15888
16130
|
minSimilarity: number().min(0).max(1)
|
|
15889
|
-
}).optional()
|
|
16131
|
+
}).optional(),
|
|
16132
|
+
/** Match events whose recognized-entity label (face identity name or plate
|
|
16133
|
+
* vehicle name, propagated onto `event.data.label`) is one of these values.
|
|
16134
|
+
* Empty/absent → unaffected (back-compat). Enables "notify me when <named
|
|
16135
|
+
* vehicle/person> is seen". */
|
|
16136
|
+
labels: array(string()).readonly().optional()
|
|
15890
16137
|
});
|
|
15891
16138
|
var NotificationRuleTemplateSchema = object({
|
|
15892
16139
|
title: string(),
|
|
@@ -16144,11 +16391,19 @@ method(object({
|
|
|
16144
16391
|
* login page needs NO change.
|
|
16145
16392
|
*
|
|
16146
16393
|
* - `widget` — a Module-Federation widget the login page mounts (via
|
|
16147
|
-
* `loadRemoteBundle`) for an in-page ceremony.
|
|
16148
|
-
*
|
|
16149
|
-
*
|
|
16150
|
-
*
|
|
16151
|
-
*
|
|
16394
|
+
* `loadRemoteBundle`) for an in-page ceremony. `auth.listLoginMethods`
|
|
16395
|
+
* stamps a public `bundleUrl` from `addonId` + `bundle`. Generic
|
|
16396
|
+
* mechanism kept for future use; no shipped addon uses it on the login
|
|
16397
|
+
* page (the passkey ceremony below runs natively in the shell instead).
|
|
16398
|
+
*
|
|
16399
|
+
* - `passkey` — a declarative WebAuthn ceremony the shell renders
|
|
16400
|
+
* natively (`@simplewebauthn/browser` lives in `addon-admin-ui`, not in
|
|
16401
|
+
* a remotely-loaded bundle). Carries the addon's effective `rpId` /
|
|
16402
|
+
* `origin` (from its `resolveRpID()` / `resolveOrigin()`) so the shell
|
|
16403
|
+
* can gate visibility (IP-literal origin, hostname/rpId mismatch) WITHOUT
|
|
16404
|
+
* fetching any remote code pre-auth. Contribution stays unconditional —
|
|
16405
|
+
* enrollment state is never leaked pre-auth; visibility is a shell
|
|
16406
|
+
* decision.
|
|
16152
16407
|
*
|
|
16153
16408
|
* Every contribution carries a `stage`:
|
|
16154
16409
|
* - `primary` — shown on the first credentials screen (OIDC /
|
|
@@ -16162,30 +16417,45 @@ method(object({
|
|
|
16162
16417
|
*/
|
|
16163
16418
|
/** When a login method renders in the two-phase login flow. */
|
|
16164
16419
|
var LoginStageEnum = _enum(["primary", "second-factor"]);
|
|
16165
|
-
/** One login-method contribution — redirect button
|
|
16166
|
-
var LoginMethodContributionSchema = discriminatedUnion("kind", [
|
|
16167
|
-
|
|
16168
|
-
|
|
16169
|
-
|
|
16170
|
-
|
|
16171
|
-
|
|
16172
|
-
|
|
16173
|
-
|
|
16174
|
-
|
|
16175
|
-
|
|
16176
|
-
|
|
16177
|
-
|
|
16178
|
-
|
|
16179
|
-
|
|
16180
|
-
|
|
16181
|
-
|
|
16182
|
-
|
|
16183
|
-
|
|
16184
|
-
|
|
16185
|
-
|
|
16186
|
-
|
|
16187
|
-
|
|
16188
|
-
|
|
16420
|
+
/** One login-method contribution — redirect button, pre-auth widget, or native passkey ceremony. */
|
|
16421
|
+
var LoginMethodContributionSchema = discriminatedUnion("kind", [
|
|
16422
|
+
object({
|
|
16423
|
+
kind: literal("redirect"),
|
|
16424
|
+
/** Stable id within the login-method set (e.g. `auth-oidc/google`). */
|
|
16425
|
+
id: string(),
|
|
16426
|
+
/** Operator-facing button label. */
|
|
16427
|
+
label: string(),
|
|
16428
|
+
/** lucide-react icon name. */
|
|
16429
|
+
icon: string().optional(),
|
|
16430
|
+
/** Addon-owned HTTP route the button navigates to (GET). */
|
|
16431
|
+
startUrl: string(),
|
|
16432
|
+
stage: LoginStageEnum
|
|
16433
|
+
}),
|
|
16434
|
+
object({
|
|
16435
|
+
kind: literal("widget"),
|
|
16436
|
+
/** Stable id within the login-method set (e.g. `auth-webauthn/passkey-login`). */
|
|
16437
|
+
id: string(),
|
|
16438
|
+
/** Owning addon id — drives the public bundle URL + the MF namespace. */
|
|
16439
|
+
addonId: string(),
|
|
16440
|
+
/** Bundle filename inside the addon's dist dir (`remoteEntry.js`). */
|
|
16441
|
+
bundle: string(),
|
|
16442
|
+
/** MF remote descriptor — `{ remoteName, exposedModule, componentKey }`. */
|
|
16443
|
+
remote: WidgetRemoteSchema,
|
|
16444
|
+
stage: LoginStageEnum
|
|
16445
|
+
}),
|
|
16446
|
+
object({
|
|
16447
|
+
kind: literal("passkey"),
|
|
16448
|
+
/** Stable id within the login-method set (e.g. `auth-webauthn/passkey-direct-login`). */
|
|
16449
|
+
id: string(),
|
|
16450
|
+
/** Operator-facing button label. */
|
|
16451
|
+
label: string(),
|
|
16452
|
+
stage: LoginStageEnum,
|
|
16453
|
+
/** Effective WebAuthn RP ID (`resolveRpID()`) — the shell gates visibility on it. */
|
|
16454
|
+
rpId: string(),
|
|
16455
|
+
/** Effective expected origin (`resolveOrigin()`), null when unconfigured. */
|
|
16456
|
+
origin: string().nullable()
|
|
16457
|
+
})
|
|
16458
|
+
]);
|
|
16189
16459
|
method(_void(), array(LoginMethodContributionSchema).readonly());
|
|
16190
16460
|
/**
|
|
16191
16461
|
* Orchestrator-side destination metadata. The orchestrator computes
|
|
@@ -18079,14 +18349,14 @@ var TargetKindCapsSchema = object({
|
|
|
18079
18349
|
* the union is large and not meant for runtime validation here; the exported
|
|
18080
18350
|
* `TargetKind` type re-tightens `configSchema` to `ConfigUISchema`.
|
|
18081
18351
|
*/
|
|
18082
|
-
var ConfigSchemaPassthrough = unknown();
|
|
18352
|
+
var ConfigSchemaPassthrough$1 = unknown();
|
|
18083
18353
|
var TargetKindSchema = object({
|
|
18084
18354
|
kind: string(),
|
|
18085
18355
|
label: string(),
|
|
18086
18356
|
icon: string(),
|
|
18087
18357
|
/** Stamped by each provider so the concat-fanned catalog stays routable. */
|
|
18088
18358
|
addonId: string(),
|
|
18089
|
-
configSchema: ConfigSchemaPassthrough,
|
|
18359
|
+
configSchema: ConfigSchemaPassthrough$1,
|
|
18090
18360
|
supportsDiscovery: boolean(),
|
|
18091
18361
|
caps: TargetKindCapsSchema
|
|
18092
18362
|
});
|
|
@@ -18153,6 +18423,298 @@ var notificationOutputCapability = {
|
|
|
18153
18423
|
}
|
|
18154
18424
|
};
|
|
18155
18425
|
/**
|
|
18426
|
+
* Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
|
|
18427
|
+
* surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
|
|
18428
|
+
* caps stay wire-compatible without a circular cap→cap import.
|
|
18429
|
+
*
|
|
18430
|
+
* Errors are a discriminated-union RESULT, never thrown: the shape survives
|
|
18431
|
+
* every transport tier structurally, and failed calls still write usage rows.
|
|
18432
|
+
* Token counts only in v1 — no costUsd (operator decision, 2026-07-15).
|
|
18433
|
+
*/
|
|
18434
|
+
var LlmUsageSchema = object({
|
|
18435
|
+
inputTokens: number(),
|
|
18436
|
+
outputTokens: number()
|
|
18437
|
+
});
|
|
18438
|
+
var LlmErrorCodeSchema = _enum([
|
|
18439
|
+
"timeout",
|
|
18440
|
+
"rate-limited",
|
|
18441
|
+
"auth",
|
|
18442
|
+
"refusal",
|
|
18443
|
+
"bad-request",
|
|
18444
|
+
"unavailable",
|
|
18445
|
+
"no-profile",
|
|
18446
|
+
"budget-exceeded",
|
|
18447
|
+
"adapter-error"
|
|
18448
|
+
]);
|
|
18449
|
+
var LlmGenerateResultSchema = discriminatedUnion("ok", [object({
|
|
18450
|
+
ok: literal(true),
|
|
18451
|
+
text: string(),
|
|
18452
|
+
model: string(),
|
|
18453
|
+
usage: LlmUsageSchema,
|
|
18454
|
+
truncated: boolean(),
|
|
18455
|
+
latencyMs: number()
|
|
18456
|
+
}), object({
|
|
18457
|
+
ok: literal(false),
|
|
18458
|
+
code: LlmErrorCodeSchema,
|
|
18459
|
+
message: string(),
|
|
18460
|
+
retryAfterMs: number().optional()
|
|
18461
|
+
})]);
|
|
18462
|
+
/**
|
|
18463
|
+
* `Uint8Array` is the sanctioned binary convention — superjson + the UDS
|
|
18464
|
+
* MsgPack channel round-trip typed arrays (embedding-encoder.cap.ts:29,
|
|
18465
|
+
* notification-output.cap.ts:27-31 precedents).
|
|
18466
|
+
*/
|
|
18467
|
+
var LlmImageSchema = object({
|
|
18468
|
+
bytes: _instanceof(Uint8Array),
|
|
18469
|
+
mimeType: string()
|
|
18470
|
+
});
|
|
18471
|
+
var LlmGenerateBaseInputSchema = object({
|
|
18472
|
+
/** Collection routing (the notification-output posture). */
|
|
18473
|
+
addonId: string().optional(),
|
|
18474
|
+
/** Explicit profile; else the resolution chain (spec §3). */
|
|
18475
|
+
profileId: string().optional(),
|
|
18476
|
+
/** MANDATORY usage tag: 'ai-summary', 'notifier-rules', 'adhoc-ui', … */
|
|
18477
|
+
consumer: string(),
|
|
18478
|
+
system: string().optional(),
|
|
18479
|
+
/** v1: single-turn. `messages[]` is a v2 additive field. */
|
|
18480
|
+
prompt: string(),
|
|
18481
|
+
/** Structured output — adapter-mapped (response_format / forced tool / responseSchema). */
|
|
18482
|
+
jsonSchema: record(string(), unknown()).optional(),
|
|
18483
|
+
/** Per-call override of the profile default. */
|
|
18484
|
+
maxTokens: number().int().positive().optional(),
|
|
18485
|
+
temperature: number().optional()
|
|
18486
|
+
});
|
|
18487
|
+
/**
|
|
18488
|
+
* `llm-runtime` — node-side managed llama.cpp executor (spec §4). Registered
|
|
18489
|
+
* on EVERY node where `addon-ai` is installed; the hub `llm` provider reaches
|
|
18490
|
+
* a specific node's runtime with `nodePin(profile.runtime.nodeId)` — normal
|
|
18491
|
+
* cap routing, zero bespoke plumbing. `internal: true`: the operator reaches
|
|
18492
|
+
* this only through the `llm` cap's methods.
|
|
18493
|
+
*
|
|
18494
|
+
* One running llama-server child per node in v1 (models are RAM-heavy).
|
|
18495
|
+
* Resource ceiling = llama-server flags + idleStopMinutes ONLY (no RSS
|
|
18496
|
+
* watchdog — operator decision #3).
|
|
18497
|
+
*/
|
|
18498
|
+
var ManagedModelRefSchema = discriminatedUnion("kind", [
|
|
18499
|
+
object({
|
|
18500
|
+
kind: literal("catalog"),
|
|
18501
|
+
catalogId: string()
|
|
18502
|
+
}),
|
|
18503
|
+
object({
|
|
18504
|
+
kind: literal("url"),
|
|
18505
|
+
url: string(),
|
|
18506
|
+
sha256: string().optional()
|
|
18507
|
+
}),
|
|
18508
|
+
object({
|
|
18509
|
+
kind: literal("path"),
|
|
18510
|
+
path: string()
|
|
18511
|
+
})
|
|
18512
|
+
]);
|
|
18513
|
+
var ManagedRuntimeConfigSchema = object({
|
|
18514
|
+
/** WHERE the runtime lives — hub or any agent. */
|
|
18515
|
+
nodeId: string(),
|
|
18516
|
+
/** Closed for v1; 'ollama' is a v2 candidate. */
|
|
18517
|
+
engine: _enum(["llama-cpp"]),
|
|
18518
|
+
model: ManagedModelRefSchema,
|
|
18519
|
+
contextSize: number().int().default(4096),
|
|
18520
|
+
/** 0 = CPU-only. */
|
|
18521
|
+
gpuLayers: number().int().default(0),
|
|
18522
|
+
/** Default: cpus-2, clamped ≥1 (resolved node-side). */
|
|
18523
|
+
threads: number().int().optional(),
|
|
18524
|
+
/** Concurrent slots. */
|
|
18525
|
+
parallel: number().int().default(1),
|
|
18526
|
+
/** Else lazy: first generate boots it. */
|
|
18527
|
+
autoStart: boolean().default(false),
|
|
18528
|
+
/** 0 = never; frees RAM after quiet periods. */
|
|
18529
|
+
idleStopMinutes: number().int().default(30)
|
|
18530
|
+
});
|
|
18531
|
+
var LlmRuntimeStatusSchema = object({
|
|
18532
|
+
/** Status is ALWAYS node-qualified. */
|
|
18533
|
+
nodeId: string(),
|
|
18534
|
+
state: _enum([
|
|
18535
|
+
"stopped",
|
|
18536
|
+
"downloading",
|
|
18537
|
+
"starting",
|
|
18538
|
+
"ready",
|
|
18539
|
+
"crashed",
|
|
18540
|
+
"failed"
|
|
18541
|
+
]),
|
|
18542
|
+
pid: number().optional(),
|
|
18543
|
+
port: number().optional(),
|
|
18544
|
+
modelPath: string().optional(),
|
|
18545
|
+
modelId: string().optional(),
|
|
18546
|
+
downloadProgress: number().min(0).max(1).optional(),
|
|
18547
|
+
lastError: string().optional(),
|
|
18548
|
+
crashesInWindow: number(),
|
|
18549
|
+
/** Child RSS (sampled best-effort). */
|
|
18550
|
+
memoryBytes: number().optional(),
|
|
18551
|
+
vramBytes: number().optional()
|
|
18552
|
+
});
|
|
18553
|
+
var LlmNodeModelSchema = object({
|
|
18554
|
+
file: string(),
|
|
18555
|
+
sizeBytes: number(),
|
|
18556
|
+
catalogId: string().optional(),
|
|
18557
|
+
installedAt: number().optional()
|
|
18558
|
+
});
|
|
18559
|
+
var LlmRuntimeDiskUsageSchema = object({
|
|
18560
|
+
nodeId: string(),
|
|
18561
|
+
modelsBytes: number(),
|
|
18562
|
+
freeBytes: number().optional()
|
|
18563
|
+
});
|
|
18564
|
+
method(LlmGenerateBaseInputSchema.extend({
|
|
18565
|
+
images: array(LlmImageSchema).optional(),
|
|
18566
|
+
runtime: ManagedRuntimeConfigSchema,
|
|
18567
|
+
/** The managed profile's timeout, threaded by the hub provider. */
|
|
18568
|
+
timeoutMs: number().int().positive().optional()
|
|
18569
|
+
}), LlmGenerateResultSchema, { kind: "mutation" }), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
18570
|
+
kind: "mutation",
|
|
18571
|
+
auth: "admin"
|
|
18572
|
+
}), method(object({}), _void(), {
|
|
18573
|
+
kind: "mutation",
|
|
18574
|
+
auth: "admin"
|
|
18575
|
+
}), method(object({}), LlmRuntimeStatusSchema), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
18576
|
+
kind: "mutation",
|
|
18577
|
+
auth: "admin"
|
|
18578
|
+
}), method(object({ file: string() }), _void(), {
|
|
18579
|
+
kind: "mutation",
|
|
18580
|
+
auth: "admin"
|
|
18581
|
+
}), method(object({}), array(LlmNodeModelSchema)), method(object({}), LlmRuntimeDiskUsageSchema);
|
|
18582
|
+
/**
|
|
18583
|
+
* `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
|
|
18584
|
+
* methods concat-fan across providers; single-row methods route to ONE
|
|
18585
|
+
* provider by the `addonId` in the call input (the notification-output
|
|
18586
|
+
* posture, notification-output.cap.ts:215-250). Provided by `addon-ai`
|
|
18587
|
+
* (hub-placed); the cap stays open for future providers.
|
|
18588
|
+
*
|
|
18589
|
+
* Profiles are ROWS (data), not addons: one row = one usable model endpoint.
|
|
18590
|
+
* `apiKey` is a password field — providers REDACT it on read and merge on
|
|
18591
|
+
* write; a stored key NEVER round-trips to a client.
|
|
18592
|
+
*/
|
|
18593
|
+
var LlmProfileKindSchema = _enum([
|
|
18594
|
+
"openai-compatible",
|
|
18595
|
+
"openai",
|
|
18596
|
+
"anthropic",
|
|
18597
|
+
"google",
|
|
18598
|
+
"managed-local"
|
|
18599
|
+
]);
|
|
18600
|
+
var LlmProfileSchema = object({
|
|
18601
|
+
id: string(),
|
|
18602
|
+
name: string(),
|
|
18603
|
+
kind: LlmProfileKindSchema,
|
|
18604
|
+
/** Stamped by the provider — keeps the fanned catalog routable. */
|
|
18605
|
+
addonId: string(),
|
|
18606
|
+
enabled: boolean(),
|
|
18607
|
+
/** Vendor model id, or the managed runtime's loaded model. */
|
|
18608
|
+
model: string(),
|
|
18609
|
+
/** Required for openai-compatible; override for cloud kinds. */
|
|
18610
|
+
baseUrl: string().optional(),
|
|
18611
|
+
/** ConfigUISchema type:'password' — never round-trips (spec §5). */
|
|
18612
|
+
apiKey: string().optional(),
|
|
18613
|
+
supportsVision: boolean(),
|
|
18614
|
+
temperature: number().min(0).max(2).optional(),
|
|
18615
|
+
maxTokens: number().int().positive().optional(),
|
|
18616
|
+
timeoutMs: number().int().positive().default(6e4),
|
|
18617
|
+
extraHeaders: record(string(), string()).optional(),
|
|
18618
|
+
/** kind === 'managed-local' only (spec §4). */
|
|
18619
|
+
runtime: ManagedRuntimeConfigSchema.optional()
|
|
18620
|
+
});
|
|
18621
|
+
/** ConfigUISchema tree passed through untyped on the wire (the
|
|
18622
|
+
* notification-output `ConfigSchemaPassthrough` precedent at
|
|
18623
|
+
* notification-output.cap.ts:151); the exported TS type re-tightens it. */
|
|
18624
|
+
var ConfigSchemaPassthrough = unknown();
|
|
18625
|
+
var LlmProfileKindDescriptorSchema = object({
|
|
18626
|
+
kind: LlmProfileKindSchema,
|
|
18627
|
+
label: string(),
|
|
18628
|
+
icon: string(),
|
|
18629
|
+
/** Stamped by each provider so the concat-fanned catalog stays routable. */
|
|
18630
|
+
addonId: string(),
|
|
18631
|
+
configSchema: ConfigSchemaPassthrough
|
|
18632
|
+
});
|
|
18633
|
+
var LlmDefaultSelectorSchema = union([object({ consumer: string() }), object({ purpose: _enum(["text", "vision"]) })]);
|
|
18634
|
+
var LlmDefaultSchema = object({
|
|
18635
|
+
selector: LlmDefaultSelectorSchema,
|
|
18636
|
+
profileId: string()
|
|
18637
|
+
});
|
|
18638
|
+
/** Server-side rollup row — getUsage never dumps raw call rows (spec §6). */
|
|
18639
|
+
var LlmUsageRollupSchema = object({
|
|
18640
|
+
day: string(),
|
|
18641
|
+
consumer: string(),
|
|
18642
|
+
profileId: string(),
|
|
18643
|
+
calls: number(),
|
|
18644
|
+
okCalls: number(),
|
|
18645
|
+
errorCalls: number(),
|
|
18646
|
+
inputTokens: number(),
|
|
18647
|
+
outputTokens: number(),
|
|
18648
|
+
avgLatencyMs: number()
|
|
18649
|
+
});
|
|
18650
|
+
/** LLM-facing view over the reused ModelCatalogEntry mechanism (spec §4.2). */
|
|
18651
|
+
var ManagedModelCatalogEntrySchema = object({
|
|
18652
|
+
id: string(),
|
|
18653
|
+
label: string(),
|
|
18654
|
+
family: string(),
|
|
18655
|
+
purpose: _enum(["text", "vision"]),
|
|
18656
|
+
url: string(),
|
|
18657
|
+
sha256: string(),
|
|
18658
|
+
sizeBytes: number(),
|
|
18659
|
+
quantization: string(),
|
|
18660
|
+
/** Load-time guidance shown in the picker. */
|
|
18661
|
+
minRamBytes: number(),
|
|
18662
|
+
contextSizeDefault: number().int(),
|
|
18663
|
+
/** Vision models: companion projector file. */
|
|
18664
|
+
mmprojUrl: string().optional()
|
|
18665
|
+
});
|
|
18666
|
+
var LlmRuntimeNodeSchema = object({
|
|
18667
|
+
nodeId: string(),
|
|
18668
|
+
reachable: boolean(),
|
|
18669
|
+
status: LlmRuntimeStatusSchema.optional(),
|
|
18670
|
+
disk: LlmRuntimeDiskUsageSchema.optional(),
|
|
18671
|
+
error: string().optional()
|
|
18672
|
+
});
|
|
18673
|
+
var GenerateVisionInputSchema = LlmGenerateBaseInputSchema.extend({ images: array(LlmImageSchema).min(1) });
|
|
18674
|
+
var ProfileRefInputSchema = object({
|
|
18675
|
+
addonId: string(),
|
|
18676
|
+
profileId: string()
|
|
18677
|
+
});
|
|
18678
|
+
method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
|
|
18679
|
+
kind: "mutation",
|
|
18680
|
+
auth: "admin"
|
|
18681
|
+
}), method(ProfileRefInputSchema, _void(), {
|
|
18682
|
+
kind: "mutation",
|
|
18683
|
+
auth: "admin"
|
|
18684
|
+
}), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
|
|
18685
|
+
kind: "mutation",
|
|
18686
|
+
auth: "admin"
|
|
18687
|
+
}), method(ProfileRefInputSchema, array(string())), method(object({}), array(LlmDefaultSchema)), method(object({
|
|
18688
|
+
selector: LlmDefaultSelectorSchema,
|
|
18689
|
+
profileId: string().nullable()
|
|
18690
|
+
}), _void(), {
|
|
18691
|
+
kind: "mutation",
|
|
18692
|
+
auth: "admin"
|
|
18693
|
+
}), method(object({
|
|
18694
|
+
since: number().optional(),
|
|
18695
|
+
until: number().optional(),
|
|
18696
|
+
consumer: string().optional(),
|
|
18697
|
+
profileId: string().optional()
|
|
18698
|
+
}), array(LlmUsageRollupSchema)), method(object({}), array(ManagedModelCatalogEntrySchema)), method(object({}), array(LlmRuntimeNodeSchema)), method(object({ nodeId: string() }), array(LlmNodeModelSchema)), method(object({
|
|
18699
|
+
nodeId: string(),
|
|
18700
|
+
model: ManagedModelRefSchema
|
|
18701
|
+
}), _void(), {
|
|
18702
|
+
kind: "mutation",
|
|
18703
|
+
auth: "admin"
|
|
18704
|
+
}), method(object({
|
|
18705
|
+
nodeId: string(),
|
|
18706
|
+
file: string()
|
|
18707
|
+
}), _void(), {
|
|
18708
|
+
kind: "mutation",
|
|
18709
|
+
auth: "admin"
|
|
18710
|
+
}), method(ProfileRefInputSchema, LlmRuntimeStatusSchema), method(ProfileRefInputSchema, LlmRuntimeStatusSchema, {
|
|
18711
|
+
kind: "mutation",
|
|
18712
|
+
auth: "admin"
|
|
18713
|
+
}), method(ProfileRefInputSchema, _void(), {
|
|
18714
|
+
kind: "mutation",
|
|
18715
|
+
auth: "admin"
|
|
18716
|
+
});
|
|
18717
|
+
/**
|
|
18156
18718
|
* Zod schemas for persisted record types.
|
|
18157
18719
|
*
|
|
18158
18720
|
* These schemas serve as the single source of truth for types that are
|
|
@@ -18368,6 +18930,10 @@ var TrackSchema = object({
|
|
|
18368
18930
|
snapshots: array(TrackSnapshotSchema).readonly(),
|
|
18369
18931
|
/** Deduplicated zones the track has entered at least once. */
|
|
18370
18932
|
zonesVisited: array(string()).readonly(),
|
|
18933
|
+
/** Deduplicated set of detector classes observed for this track over its
|
|
18934
|
+
* life (a track may be reclassified, e.g. person→vehicle). Absent on
|
|
18935
|
+
* legacy rows written before class accumulation shipped. */
|
|
18936
|
+
classes: array(string()).readonly().optional(),
|
|
18371
18937
|
/** Cumulative normalized distance travelled (0..1 units = full frame width). */
|
|
18372
18938
|
totalDistance: number(),
|
|
18373
18939
|
state: TrackStateSchema,
|
|
@@ -18529,7 +19095,7 @@ var KeyEventSchema = object({
|
|
|
18529
19095
|
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
18530
19096
|
windowMs: number().optional()
|
|
18531
19097
|
});
|
|
18532
|
-
|
|
19098
|
+
object({
|
|
18533
19099
|
trackId: string(),
|
|
18534
19100
|
className: string(),
|
|
18535
19101
|
confidence: number(),
|
|
@@ -18537,6 +19103,23 @@ var TrackedDetectionSchema = object({
|
|
|
18537
19103
|
zones: array(string()).readonly(),
|
|
18538
19104
|
state: TrackStateSchema
|
|
18539
19105
|
});
|
|
19106
|
+
var OverlayDetectionSchema = looseObject({
|
|
19107
|
+
id: string(),
|
|
19108
|
+
kind: _enum(["first-level", "detail"]),
|
|
19109
|
+
macroClass: string(),
|
|
19110
|
+
score: number(),
|
|
19111
|
+
bbox: object({
|
|
19112
|
+
x: number(),
|
|
19113
|
+
y: number(),
|
|
19114
|
+
width: number(),
|
|
19115
|
+
height: number()
|
|
19116
|
+
}),
|
|
19117
|
+
labels: array(looseObject({
|
|
19118
|
+
label: string(),
|
|
19119
|
+
score: number()
|
|
19120
|
+
})).readonly(),
|
|
19121
|
+
parentId: string().optional()
|
|
19122
|
+
});
|
|
18540
19123
|
var ScoredObjectEventSchema = ObjectEventSchema.extend({ score: number() });
|
|
18541
19124
|
var SearchObjectEventsInput = object({
|
|
18542
19125
|
text: string(),
|
|
@@ -18547,6 +19130,20 @@ var SearchObjectEventsInput = object({
|
|
|
18547
19130
|
limit: number().default(50),
|
|
18548
19131
|
minScore: number().min(0).max(1).default(.2)
|
|
18549
19132
|
});
|
|
19133
|
+
var TrackCascadeCountsSchema = object({
|
|
19134
|
+
/** Persisted track roots deleted (authoritative). */
|
|
19135
|
+
tracks: number().int(),
|
|
19136
|
+
/** Object events removed with their tracks (best-effort; see note above). */
|
|
19137
|
+
events: number().int(),
|
|
19138
|
+
/** Track/face/plate-owned media removed (best-effort). Never identity media. */
|
|
19139
|
+
media: number().int(),
|
|
19140
|
+
/** Unassigned (non-enrolled) face reads removed (best-effort). */
|
|
19141
|
+
faces: number().int(),
|
|
19142
|
+
/** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
|
|
19143
|
+
plates: number().int(),
|
|
19144
|
+
/** Per-track CLIP search vectors removed (best-effort). */
|
|
19145
|
+
embeddings: number().int()
|
|
19146
|
+
});
|
|
18550
19147
|
DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).readonly()), method(object({
|
|
18551
19148
|
deviceId: number(),
|
|
18552
19149
|
trackId: string()
|
|
@@ -18578,6 +19175,24 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
18578
19175
|
}), {
|
|
18579
19176
|
kind: "mutation",
|
|
18580
19177
|
auth: "admin"
|
|
19178
|
+
}), method(object({
|
|
19179
|
+
deviceId: number(),
|
|
19180
|
+
cutoffMs: number()
|
|
19181
|
+
}), TrackCascadeCountsSchema, {
|
|
19182
|
+
kind: "mutation",
|
|
19183
|
+
auth: "admin"
|
|
19184
|
+
}), method(object({ deviceId: number() }), TrackCascadeCountsSchema, {
|
|
19185
|
+
kind: "mutation",
|
|
19186
|
+
auth: "admin"
|
|
19187
|
+
}), method(object({
|
|
19188
|
+
deviceId: number(),
|
|
19189
|
+
trackIds: array(string()).min(1)
|
|
19190
|
+
}), object({
|
|
19191
|
+
deleted: number().int(),
|
|
19192
|
+
failed: array(string()).readonly()
|
|
19193
|
+
}), {
|
|
19194
|
+
kind: "mutation",
|
|
19195
|
+
auth: "admin"
|
|
18581
19196
|
}), method(object({
|
|
18582
19197
|
eventId: string(),
|
|
18583
19198
|
kind: MediaFileKindEnum.optional()
|
|
@@ -18586,7 +19201,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
18586
19201
|
timestamp: number(),
|
|
18587
19202
|
frameWidth: number(),
|
|
18588
19203
|
frameHeight: number(),
|
|
18589
|
-
detections: array(
|
|
19204
|
+
detections: array(OverlayDetectionSchema).readonly()
|
|
18590
19205
|
}), object({
|
|
18591
19206
|
deviceId: number(),
|
|
18592
19207
|
trackId: string(),
|
|
@@ -21444,6 +22059,24 @@ DeviceType.Camera, method(object({
|
|
|
21444
22059
|
deviceId: number(),
|
|
21445
22060
|
status: OsdStatusSchema
|
|
21446
22061
|
});
|
|
22062
|
+
var VehicleSchema = object({
|
|
22063
|
+
id: string(),
|
|
22064
|
+
name: string(),
|
|
22065
|
+
sampleCount: number().int().nonnegative(),
|
|
22066
|
+
coverMediaKey: string().optional(),
|
|
22067
|
+
/** Inline base64 of the cover sample's plate crop, resolved from `coverMediaKey`. */
|
|
22068
|
+
coverBase64: string().optional()
|
|
22069
|
+
});
|
|
22070
|
+
var VehicleSampleInfoSchema = object({
|
|
22071
|
+
id: string(),
|
|
22072
|
+
/** The plate text this sample enrolled (self-labeling — no embedding). */
|
|
22073
|
+
text: string(),
|
|
22074
|
+
/** OCR confidence of the enrolled read (0..1). */
|
|
22075
|
+
score: number(),
|
|
22076
|
+
addedAt: number().int(),
|
|
22077
|
+
deviceId: number().int().optional(),
|
|
22078
|
+
base64: string().optional()
|
|
22079
|
+
});
|
|
21447
22080
|
var PlateInfoSchema = object({
|
|
21448
22081
|
plateId: string(),
|
|
21449
22082
|
deviceId: number().int(),
|
|
@@ -21455,6 +22088,16 @@ var PlateInfoSchema = object({
|
|
|
21455
22088
|
score: number(),
|
|
21456
22089
|
/** True when the text was manually corrected (exempt from retention). */
|
|
21457
22090
|
corrected: boolean(),
|
|
22091
|
+
/** Recognized vehicle id when a matcher lookup named this read (SQL NULL → absent). */
|
|
22092
|
+
recognizedVehicleId: string().optional(),
|
|
22093
|
+
/** Resolved vehicle name for `recognizedVehicleId` (UI convenience). */
|
|
22094
|
+
vehicleName: string().optional(),
|
|
22095
|
+
/** True once the read was assigned to a vehicle (enrolled as a sample). */
|
|
22096
|
+
assigned: boolean(),
|
|
22097
|
+
/** keyFrame parity: the plate bbox (pixel space) on the native key frame. */
|
|
22098
|
+
plateBbox: BoundingBoxSchema.optional(),
|
|
22099
|
+
/** keyFrame parity: MediaStore key of the track's native-resolution key frame. */
|
|
22100
|
+
keyFrameMediaKey: string().optional(),
|
|
21458
22101
|
base64: string().optional()
|
|
21459
22102
|
});
|
|
21460
22103
|
var MediaFileLiteSchema = object({
|
|
@@ -21494,6 +22137,48 @@ method(object({
|
|
|
21494
22137
|
}), method(object({ plateId: string() }), _void(), {
|
|
21495
22138
|
kind: "mutation",
|
|
21496
22139
|
auth: "admin"
|
|
22140
|
+
}), method(_void(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
22141
|
+
kind: "mutation",
|
|
22142
|
+
auth: "admin"
|
|
22143
|
+
}), method(object({
|
|
22144
|
+
id: string(),
|
|
22145
|
+
name: string().min(1)
|
|
22146
|
+
}), _void(), {
|
|
22147
|
+
kind: "mutation",
|
|
22148
|
+
auth: "admin"
|
|
22149
|
+
}), method(object({ id: string() }), _void(), {
|
|
22150
|
+
kind: "mutation",
|
|
22151
|
+
auth: "admin"
|
|
22152
|
+
}), method(object({ vehicleId: string() }), array(VehicleSampleInfoSchema).readonly()), method(object({
|
|
22153
|
+
vehicleId: string(),
|
|
22154
|
+
sampleId: string()
|
|
22155
|
+
}), _void(), {
|
|
22156
|
+
kind: "mutation",
|
|
22157
|
+
auth: "admin"
|
|
22158
|
+
}), method(object({
|
|
22159
|
+
plateId: string(),
|
|
22160
|
+
vehicleId: string()
|
|
22161
|
+
}), _void(), {
|
|
22162
|
+
kind: "mutation",
|
|
22163
|
+
auth: "admin"
|
|
22164
|
+
}), method(object({ plateId: string() }), _void(), {
|
|
22165
|
+
kind: "mutation",
|
|
22166
|
+
auth: "admin"
|
|
22167
|
+
}), method(object({
|
|
22168
|
+
plateIds: array(string()).min(1),
|
|
22169
|
+
vehicleId: string()
|
|
22170
|
+
}), object({
|
|
22171
|
+
assigned: number().int(),
|
|
22172
|
+
failed: array(string()).readonly()
|
|
22173
|
+
}), {
|
|
22174
|
+
kind: "mutation",
|
|
22175
|
+
auth: "admin"
|
|
22176
|
+
}), method(object({ plateIds: array(string()).min(1) }), object({
|
|
22177
|
+
unassigned: number().int(),
|
|
22178
|
+
failed: array(string()).readonly()
|
|
22179
|
+
}), {
|
|
22180
|
+
kind: "mutation",
|
|
22181
|
+
auth: "admin"
|
|
21497
22182
|
});
|
|
21498
22183
|
var ModelFormatSchema = _enum(MODEL_FORMATS);
|
|
21499
22184
|
var HwAccelBackendInputSchema = _enum([
|
|
@@ -24039,6 +24724,168 @@ Object.freeze({
|
|
|
24039
24724
|
addonId: null,
|
|
24040
24725
|
access: "create"
|
|
24041
24726
|
},
|
|
24727
|
+
"llm.deleteModel": {
|
|
24728
|
+
capName: "llm",
|
|
24729
|
+
capScope: "system",
|
|
24730
|
+
addonId: null,
|
|
24731
|
+
access: "delete"
|
|
24732
|
+
},
|
|
24733
|
+
"llm.deleteProfile": {
|
|
24734
|
+
capName: "llm",
|
|
24735
|
+
capScope: "system",
|
|
24736
|
+
addonId: null,
|
|
24737
|
+
access: "delete"
|
|
24738
|
+
},
|
|
24739
|
+
"llm.generate": {
|
|
24740
|
+
capName: "llm",
|
|
24741
|
+
capScope: "system",
|
|
24742
|
+
addonId: null,
|
|
24743
|
+
access: "create"
|
|
24744
|
+
},
|
|
24745
|
+
"llm.generateVision": {
|
|
24746
|
+
capName: "llm",
|
|
24747
|
+
capScope: "system",
|
|
24748
|
+
addonId: null,
|
|
24749
|
+
access: "create"
|
|
24750
|
+
},
|
|
24751
|
+
"llm.getDefaults": {
|
|
24752
|
+
capName: "llm",
|
|
24753
|
+
capScope: "system",
|
|
24754
|
+
addonId: null,
|
|
24755
|
+
access: "view"
|
|
24756
|
+
},
|
|
24757
|
+
"llm.getRuntimeStatus": {
|
|
24758
|
+
capName: "llm",
|
|
24759
|
+
capScope: "system",
|
|
24760
|
+
addonId: null,
|
|
24761
|
+
access: "view"
|
|
24762
|
+
},
|
|
24763
|
+
"llm.getUsage": {
|
|
24764
|
+
capName: "llm",
|
|
24765
|
+
capScope: "system",
|
|
24766
|
+
addonId: null,
|
|
24767
|
+
access: "view"
|
|
24768
|
+
},
|
|
24769
|
+
"llm.installModel": {
|
|
24770
|
+
capName: "llm",
|
|
24771
|
+
capScope: "system",
|
|
24772
|
+
addonId: null,
|
|
24773
|
+
access: "create"
|
|
24774
|
+
},
|
|
24775
|
+
"llm.listModelCatalog": {
|
|
24776
|
+
capName: "llm",
|
|
24777
|
+
capScope: "system",
|
|
24778
|
+
addonId: null,
|
|
24779
|
+
access: "view"
|
|
24780
|
+
},
|
|
24781
|
+
"llm.listModels": {
|
|
24782
|
+
capName: "llm",
|
|
24783
|
+
capScope: "system",
|
|
24784
|
+
addonId: null,
|
|
24785
|
+
access: "view"
|
|
24786
|
+
},
|
|
24787
|
+
"llm.listNodeModels": {
|
|
24788
|
+
capName: "llm",
|
|
24789
|
+
capScope: "system",
|
|
24790
|
+
addonId: null,
|
|
24791
|
+
access: "view"
|
|
24792
|
+
},
|
|
24793
|
+
"llm.listProfileKinds": {
|
|
24794
|
+
capName: "llm",
|
|
24795
|
+
capScope: "system",
|
|
24796
|
+
addonId: null,
|
|
24797
|
+
access: "view"
|
|
24798
|
+
},
|
|
24799
|
+
"llm.listProfiles": {
|
|
24800
|
+
capName: "llm",
|
|
24801
|
+
capScope: "system",
|
|
24802
|
+
addonId: null,
|
|
24803
|
+
access: "view"
|
|
24804
|
+
},
|
|
24805
|
+
"llm.listRuntimeNodes": {
|
|
24806
|
+
capName: "llm",
|
|
24807
|
+
capScope: "system",
|
|
24808
|
+
addonId: null,
|
|
24809
|
+
access: "view"
|
|
24810
|
+
},
|
|
24811
|
+
"llm.setDefault": {
|
|
24812
|
+
capName: "llm",
|
|
24813
|
+
capScope: "system",
|
|
24814
|
+
addonId: null,
|
|
24815
|
+
access: "create"
|
|
24816
|
+
},
|
|
24817
|
+
"llm.startRuntime": {
|
|
24818
|
+
capName: "llm",
|
|
24819
|
+
capScope: "system",
|
|
24820
|
+
addonId: null,
|
|
24821
|
+
access: "create"
|
|
24822
|
+
},
|
|
24823
|
+
"llm.stopRuntime": {
|
|
24824
|
+
capName: "llm",
|
|
24825
|
+
capScope: "system",
|
|
24826
|
+
addonId: null,
|
|
24827
|
+
access: "create"
|
|
24828
|
+
},
|
|
24829
|
+
"llm.testProfile": {
|
|
24830
|
+
capName: "llm",
|
|
24831
|
+
capScope: "system",
|
|
24832
|
+
addonId: null,
|
|
24833
|
+
access: "create"
|
|
24834
|
+
},
|
|
24835
|
+
"llm.upsertProfile": {
|
|
24836
|
+
capName: "llm",
|
|
24837
|
+
capScope: "system",
|
|
24838
|
+
addonId: null,
|
|
24839
|
+
access: "create"
|
|
24840
|
+
},
|
|
24841
|
+
"llmRuntime.complete": {
|
|
24842
|
+
capName: "llm-runtime",
|
|
24843
|
+
capScope: "system",
|
|
24844
|
+
addonId: null,
|
|
24845
|
+
access: "create"
|
|
24846
|
+
},
|
|
24847
|
+
"llmRuntime.deleteModel": {
|
|
24848
|
+
capName: "llm-runtime",
|
|
24849
|
+
capScope: "system",
|
|
24850
|
+
addonId: null,
|
|
24851
|
+
access: "delete"
|
|
24852
|
+
},
|
|
24853
|
+
"llmRuntime.ensureStarted": {
|
|
24854
|
+
capName: "llm-runtime",
|
|
24855
|
+
capScope: "system",
|
|
24856
|
+
addonId: null,
|
|
24857
|
+
access: "create"
|
|
24858
|
+
},
|
|
24859
|
+
"llmRuntime.getDiskUsage": {
|
|
24860
|
+
capName: "llm-runtime",
|
|
24861
|
+
capScope: "system",
|
|
24862
|
+
addonId: null,
|
|
24863
|
+
access: "view"
|
|
24864
|
+
},
|
|
24865
|
+
"llmRuntime.installModel": {
|
|
24866
|
+
capName: "llm-runtime",
|
|
24867
|
+
capScope: "system",
|
|
24868
|
+
addonId: null,
|
|
24869
|
+
access: "create"
|
|
24870
|
+
},
|
|
24871
|
+
"llmRuntime.listLocalModels": {
|
|
24872
|
+
capName: "llm-runtime",
|
|
24873
|
+
capScope: "system",
|
|
24874
|
+
addonId: null,
|
|
24875
|
+
access: "view"
|
|
24876
|
+
},
|
|
24877
|
+
"llmRuntime.status": {
|
|
24878
|
+
capName: "llm-runtime",
|
|
24879
|
+
capScope: "system",
|
|
24880
|
+
addonId: null,
|
|
24881
|
+
access: "view"
|
|
24882
|
+
},
|
|
24883
|
+
"llmRuntime.stop": {
|
|
24884
|
+
capName: "llm-runtime",
|
|
24885
|
+
capScope: "system",
|
|
24886
|
+
addonId: null,
|
|
24887
|
+
access: "create"
|
|
24888
|
+
},
|
|
24042
24889
|
"localNetwork.getAllowedAddresses": {
|
|
24043
24890
|
capName: "local-network",
|
|
24044
24891
|
capScope: "system",
|
|
@@ -24669,6 +25516,12 @@ Object.freeze({
|
|
|
24669
25516
|
addonId: null,
|
|
24670
25517
|
access: "delete"
|
|
24671
25518
|
},
|
|
25519
|
+
"pipelineAnalytics.deleteTracks": {
|
|
25520
|
+
capName: "pipeline-analytics",
|
|
25521
|
+
capScope: "device",
|
|
25522
|
+
addonId: null,
|
|
25523
|
+
access: "delete"
|
|
25524
|
+
},
|
|
24672
25525
|
"pipelineAnalytics.getActiveTracks": {
|
|
24673
25526
|
capName: "pipeline-analytics",
|
|
24674
25527
|
capScope: "device",
|
|
@@ -24735,12 +25588,24 @@ Object.freeze({
|
|
|
24735
25588
|
addonId: null,
|
|
24736
25589
|
access: "create"
|
|
24737
25590
|
},
|
|
25591
|
+
"pipelineAnalytics.pruneTracksBefore": {
|
|
25592
|
+
capName: "pipeline-analytics",
|
|
25593
|
+
capScope: "device",
|
|
25594
|
+
addonId: null,
|
|
25595
|
+
access: "create"
|
|
25596
|
+
},
|
|
24738
25597
|
"pipelineAnalytics.searchObjectEvents": {
|
|
24739
25598
|
capName: "pipeline-analytics",
|
|
24740
25599
|
capScope: "device",
|
|
24741
25600
|
addonId: null,
|
|
24742
25601
|
access: "view"
|
|
24743
25602
|
},
|
|
25603
|
+
"pipelineAnalytics.wipeAllAnalytics": {
|
|
25604
|
+
capName: "pipeline-analytics",
|
|
25605
|
+
capScope: "device",
|
|
25606
|
+
addonId: null,
|
|
25607
|
+
access: "delete"
|
|
25608
|
+
},
|
|
24744
25609
|
"pipelineExecutor.cacheFrameInPool": {
|
|
24745
25610
|
capName: "pipeline-executor",
|
|
24746
25611
|
capScope: "system",
|
|
@@ -25239,18 +26104,48 @@ Object.freeze({
|
|
|
25239
26104
|
addonId: null,
|
|
25240
26105
|
access: "create"
|
|
25241
26106
|
},
|
|
26107
|
+
"pipelineRunner.runDetailSubtree": {
|
|
26108
|
+
capName: "pipeline-runner",
|
|
26109
|
+
capScope: "system",
|
|
26110
|
+
addonId: null,
|
|
26111
|
+
access: "create"
|
|
26112
|
+
},
|
|
26113
|
+
"plateGallery.assignPlate": {
|
|
26114
|
+
capName: "plate-gallery",
|
|
26115
|
+
capScope: "system",
|
|
26116
|
+
addonId: null,
|
|
26117
|
+
access: "create"
|
|
26118
|
+
},
|
|
26119
|
+
"plateGallery.assignPlates": {
|
|
26120
|
+
capName: "plate-gallery",
|
|
26121
|
+
capScope: "system",
|
|
26122
|
+
addonId: null,
|
|
26123
|
+
access: "create"
|
|
26124
|
+
},
|
|
25242
26125
|
"plateGallery.correctPlateText": {
|
|
25243
26126
|
capName: "plate-gallery",
|
|
25244
26127
|
capScope: "system",
|
|
25245
26128
|
addonId: null,
|
|
25246
26129
|
access: "create"
|
|
25247
26130
|
},
|
|
26131
|
+
"plateGallery.createVehicle": {
|
|
26132
|
+
capName: "plate-gallery",
|
|
26133
|
+
capScope: "system",
|
|
26134
|
+
addonId: null,
|
|
26135
|
+
access: "create"
|
|
26136
|
+
},
|
|
25248
26137
|
"plateGallery.deletePlate": {
|
|
25249
26138
|
capName: "plate-gallery",
|
|
25250
26139
|
capScope: "system",
|
|
25251
26140
|
addonId: null,
|
|
25252
26141
|
access: "delete"
|
|
25253
26142
|
},
|
|
26143
|
+
"plateGallery.deleteVehicle": {
|
|
26144
|
+
capName: "plate-gallery",
|
|
26145
|
+
capScope: "system",
|
|
26146
|
+
addonId: null,
|
|
26147
|
+
access: "delete"
|
|
26148
|
+
},
|
|
25254
26149
|
"plateGallery.getPlateByTrack": {
|
|
25255
26150
|
capName: "plate-gallery",
|
|
25256
26151
|
capScope: "system",
|
|
@@ -25269,6 +26164,30 @@ Object.freeze({
|
|
|
25269
26164
|
addonId: null,
|
|
25270
26165
|
access: "view"
|
|
25271
26166
|
},
|
|
26167
|
+
"plateGallery.listVehicles": {
|
|
26168
|
+
capName: "plate-gallery",
|
|
26169
|
+
capScope: "system",
|
|
26170
|
+
addonId: null,
|
|
26171
|
+
access: "view"
|
|
26172
|
+
},
|
|
26173
|
+
"plateGallery.listVehicleSamples": {
|
|
26174
|
+
capName: "plate-gallery",
|
|
26175
|
+
capScope: "system",
|
|
26176
|
+
addonId: null,
|
|
26177
|
+
access: "view"
|
|
26178
|
+
},
|
|
26179
|
+
"plateGallery.removeVehicleSample": {
|
|
26180
|
+
capName: "plate-gallery",
|
|
26181
|
+
capScope: "system",
|
|
26182
|
+
addonId: null,
|
|
26183
|
+
access: "delete"
|
|
26184
|
+
},
|
|
26185
|
+
"plateGallery.renameVehicle": {
|
|
26186
|
+
capName: "plate-gallery",
|
|
26187
|
+
capScope: "system",
|
|
26188
|
+
addonId: null,
|
|
26189
|
+
access: "create"
|
|
26190
|
+
},
|
|
25272
26191
|
"plateGallery.searchPlates": {
|
|
25273
26192
|
capName: "plate-gallery",
|
|
25274
26193
|
capScope: "system",
|
|
@@ -25281,6 +26200,18 @@ Object.freeze({
|
|
|
25281
26200
|
addonId: null,
|
|
25282
26201
|
access: "view"
|
|
25283
26202
|
},
|
|
26203
|
+
"plateGallery.unassignPlate": {
|
|
26204
|
+
capName: "plate-gallery",
|
|
26205
|
+
capScope: "system",
|
|
26206
|
+
addonId: null,
|
|
26207
|
+
access: "create"
|
|
26208
|
+
},
|
|
26209
|
+
"plateGallery.unassignPlates": {
|
|
26210
|
+
capName: "plate-gallery",
|
|
26211
|
+
capScope: "system",
|
|
26212
|
+
addonId: null,
|
|
26213
|
+
access: "create"
|
|
26214
|
+
},
|
|
25284
26215
|
"platformProbe.getCapabilities": {
|
|
25285
26216
|
capName: "platform-probe",
|
|
25286
26217
|
capScope: "system",
|
|
@@ -25473,6 +26404,48 @@ Object.freeze({
|
|
|
25473
26404
|
addonId: null,
|
|
25474
26405
|
access: "create"
|
|
25475
26406
|
},
|
|
26407
|
+
"sceneMonitor.captureReference": {
|
|
26408
|
+
capName: "scene-monitor",
|
|
26409
|
+
capScope: "device",
|
|
26410
|
+
addonId: null,
|
|
26411
|
+
access: "create"
|
|
26412
|
+
},
|
|
26413
|
+
"sceneMonitor.createScene": {
|
|
26414
|
+
capName: "scene-monitor",
|
|
26415
|
+
capScope: "device",
|
|
26416
|
+
addonId: null,
|
|
26417
|
+
access: "create"
|
|
26418
|
+
},
|
|
26419
|
+
"sceneMonitor.deleteReference": {
|
|
26420
|
+
capName: "scene-monitor",
|
|
26421
|
+
capScope: "device",
|
|
26422
|
+
addonId: null,
|
|
26423
|
+
access: "delete"
|
|
26424
|
+
},
|
|
26425
|
+
"sceneMonitor.deleteScene": {
|
|
26426
|
+
capName: "scene-monitor",
|
|
26427
|
+
capScope: "device",
|
|
26428
|
+
addonId: null,
|
|
26429
|
+
access: "delete"
|
|
26430
|
+
},
|
|
26431
|
+
"sceneMonitor.listScenes": {
|
|
26432
|
+
capName: "scene-monitor",
|
|
26433
|
+
capScope: "device",
|
|
26434
|
+
addonId: null,
|
|
26435
|
+
access: "view"
|
|
26436
|
+
},
|
|
26437
|
+
"sceneMonitor.recheckNow": {
|
|
26438
|
+
capName: "scene-monitor",
|
|
26439
|
+
capScope: "device",
|
|
26440
|
+
addonId: null,
|
|
26441
|
+
access: "create"
|
|
26442
|
+
},
|
|
26443
|
+
"sceneMonitor.updateScene": {
|
|
26444
|
+
capName: "scene-monitor",
|
|
26445
|
+
capScope: "device",
|
|
26446
|
+
addonId: null,
|
|
26447
|
+
access: "create"
|
|
26448
|
+
},
|
|
25476
26449
|
"scriptRunner.run": {
|
|
25477
26450
|
capName: "script-runner",
|
|
25478
26451
|
capScope: "device",
|
|
@@ -26557,6 +27530,7 @@ Object.freeze({
|
|
|
26557
27530
|
Object.freeze({
|
|
26558
27531
|
"broker": "broker",
|
|
26559
27532
|
"device-export": "device-export",
|
|
27533
|
+
"llm": "ai",
|
|
26560
27534
|
"mesh-network": "mesh",
|
|
26561
27535
|
"mqtt-broker": "broker",
|
|
26562
27536
|
"network-access": "ingress",
|