@camstack/addon-ai 0.4.18 → 0.4.19
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 +65 -21
- package/dist/addon.mjs +65 -21
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -11964,6 +11964,27 @@ var LinkedDeviceSchema = object({
|
|
|
11964
11964
|
features: array(string()),
|
|
11965
11965
|
producesTrackedEvents: boolean().optional()
|
|
11966
11966
|
});
|
|
11967
|
+
/** One camera's resolved linked set, tagged with the camera it belongs to.
|
|
11968
|
+
* The batch answer needs the tag; the single-device answer already has it
|
|
11969
|
+
* from the input, which is why `getLinkedDevices` keeps the untagged shape. */
|
|
11970
|
+
var LinkedDevicesForDeviceSchema = object({
|
|
11971
|
+
deviceId: number$1(),
|
|
11972
|
+
mode: LinkedDevicesModeSchema,
|
|
11973
|
+
devices: array(LinkedDeviceSchema)
|
|
11974
|
+
});
|
|
11975
|
+
/** One device's binding map — the shape `getBindings`, `getBindingsBatch` and
|
|
11976
|
+
* `getAllBindings` all answer in. Declared once: three copies of the same
|
|
11977
|
+
* object literal is exactly how the three drift apart. */
|
|
11978
|
+
var DeviceBindingsForDeviceSchema = object({
|
|
11979
|
+
deviceId: number$1(),
|
|
11980
|
+
entries: array(object({
|
|
11981
|
+
capName: string(),
|
|
11982
|
+
kind: _enum(["native", "wrapped"]),
|
|
11983
|
+
providerAddonId: string(),
|
|
11984
|
+
providerNodeId: string(),
|
|
11985
|
+
nativeAddonId: string()
|
|
11986
|
+
}))
|
|
11987
|
+
});
|
|
11967
11988
|
var SavedDeviceRowSchema = object({
|
|
11968
11989
|
/** Numeric id reserved at allocateDeviceId time. */
|
|
11969
11990
|
id: number$1(),
|
|
@@ -12189,11 +12210,25 @@ method(object({
|
|
|
12189
12210
|
projection: _enum(["full", "slim"]).optional(),
|
|
12190
12211
|
/** Return only camera devices. Filtering server-side instead of
|
|
12191
12212
|
* shipping 293 rows to find 12. */
|
|
12192
|
-
isCamera: boolean().optional()
|
|
12213
|
+
isCamera: boolean().optional(),
|
|
12214
|
+
/**
|
|
12215
|
+
* Return only these device ids. For the caller that already KNOWS the
|
|
12216
|
+
* handful it wants and needs a field the id-bearing answer does not
|
|
12217
|
+
* carry — the viewer's linked-devices panel joins `type` and `online`
|
|
12218
|
+
* onto ~8 linked ids and, unfiltered, dragged the fleet across to do
|
|
12219
|
+
* it: 433 KB slim / 958 KB full for 967 devices, on a query that
|
|
12220
|
+
* refetches on the reconcile interval, on a phone.
|
|
12221
|
+
*
|
|
12222
|
+
* Safe to send at a hub that predates it: Zod STRIPS unknown input
|
|
12223
|
+
* keys rather than rejecting them (verified against the live hub
|
|
12224
|
+
* 2026-08-25 — 967 rows came back), so an old hub answers exactly what
|
|
12225
|
+
* it answers today and the caller filters as it already does.
|
|
12226
|
+
*/
|
|
12227
|
+
deviceIds: array(number$1()).optional()
|
|
12193
12228
|
}), array(DeviceInfoSchema)), method(object({ deviceId: number$1() }), DeviceInfoSchema.nullable()), method(object({ parentDeviceId: number$1() }), array(DeviceInfoSchema)), method(object({ deviceId: number$1() }), object({
|
|
12194
12229
|
mode: LinkedDevicesModeSchema,
|
|
12195
12230
|
devices: array(LinkedDeviceSchema)
|
|
12196
|
-
})), method(object({ deviceId: number$1() }), array(StreamSourceEntrySchema$1)), method(object({ deviceId: number$1() }), array(ConfigEntrySchema)), method(object({ deviceId: number$1() }), ConfigUISchemaOutput), method(object({
|
|
12231
|
+
})), method(object({ deviceIds: array(number$1()) }), array(LinkedDevicesForDeviceSchema)), method(object({ deviceId: number$1() }), array(StreamSourceEntrySchema$1)), method(object({ deviceId: number$1() }), array(ConfigEntrySchema)), method(object({ deviceId: number$1() }), ConfigUISchemaOutput), method(object({
|
|
12197
12232
|
deviceId: number$1(),
|
|
12198
12233
|
values: record(string(), unknown())
|
|
12199
12234
|
}), object({ success: literal(true) }), {
|
|
@@ -12220,25 +12255,7 @@ method(object({
|
|
|
12220
12255
|
}), method(object({ deviceId: number$1() }), array(StreamProbeResultSchema), {
|
|
12221
12256
|
kind: "mutation",
|
|
12222
12257
|
auth: "admin"
|
|
12223
|
-
}), method(object({ deviceId: number$1() }), object({
|
|
12224
|
-
deviceId: number$1(),
|
|
12225
|
-
entries: array(object({
|
|
12226
|
-
capName: string(),
|
|
12227
|
-
kind: _enum(["native", "wrapped"]),
|
|
12228
|
-
providerAddonId: string(),
|
|
12229
|
-
providerNodeId: string(),
|
|
12230
|
-
nativeAddonId: string()
|
|
12231
|
-
}))
|
|
12232
|
-
})), method(object({}), array(object({
|
|
12233
|
-
deviceId: number$1(),
|
|
12234
|
-
entries: array(object({
|
|
12235
|
-
capName: string(),
|
|
12236
|
-
kind: _enum(["native", "wrapped"]),
|
|
12237
|
-
providerAddonId: string(),
|
|
12238
|
-
providerNodeId: string(),
|
|
12239
|
-
nativeAddonId: string()
|
|
12240
|
-
}))
|
|
12241
|
-
}))), method(object({
|
|
12258
|
+
}), method(object({ deviceId: number$1() }), DeviceBindingsForDeviceSchema), method(object({ deviceIds: array(number$1()) }), array(DeviceBindingsForDeviceSchema)), method(object({}), array(DeviceBindingsForDeviceSchema)), method(object({
|
|
12242
12259
|
deviceId: number$1(),
|
|
12243
12260
|
capName: string(),
|
|
12244
12261
|
wrapperAddonId: string(),
|
|
@@ -27921,6 +27938,12 @@ Object.freeze({
|
|
|
27921
27938
|
addonId: null,
|
|
27922
27939
|
access: "view"
|
|
27923
27940
|
},
|
|
27941
|
+
"deviceManager.getBindingsBatch": {
|
|
27942
|
+
capName: "device-manager",
|
|
27943
|
+
capScope: "system",
|
|
27944
|
+
addonId: null,
|
|
27945
|
+
access: "view"
|
|
27946
|
+
},
|
|
27924
27947
|
"deviceManager.getChildren": {
|
|
27925
27948
|
capName: "device-manager",
|
|
27926
27949
|
capScope: "system",
|
|
@@ -27981,6 +28004,12 @@ Object.freeze({
|
|
|
27981
28004
|
addonId: null,
|
|
27982
28005
|
access: "view"
|
|
27983
28006
|
},
|
|
28007
|
+
"deviceManager.getLinkedDevicesBatch": {
|
|
28008
|
+
capName: "device-manager",
|
|
28009
|
+
capScope: "system",
|
|
28010
|
+
addonId: null,
|
|
28011
|
+
access: "view"
|
|
28012
|
+
},
|
|
27984
28013
|
"deviceManager.getRoleDisplayDefaults": {
|
|
27985
28014
|
capName: "device-manager",
|
|
27986
28015
|
capScope: "system",
|
|
@@ -32628,6 +32657,11 @@ Object.freeze({
|
|
|
32628
32657
|
form: "single",
|
|
32629
32658
|
optional: false
|
|
32630
32659
|
}],
|
|
32660
|
+
"deviceManager.getBindingsBatch": [{
|
|
32661
|
+
name: "deviceIds",
|
|
32662
|
+
form: "array",
|
|
32663
|
+
optional: false
|
|
32664
|
+
}],
|
|
32631
32665
|
"deviceManager.getChildren": [{
|
|
32632
32666
|
name: "parentDeviceId",
|
|
32633
32667
|
form: "single",
|
|
@@ -32673,6 +32707,11 @@ Object.freeze({
|
|
|
32673
32707
|
form: "single",
|
|
32674
32708
|
optional: false
|
|
32675
32709
|
}],
|
|
32710
|
+
"deviceManager.getLinkedDevicesBatch": [{
|
|
32711
|
+
name: "deviceIds",
|
|
32712
|
+
form: "array",
|
|
32713
|
+
optional: false
|
|
32714
|
+
}],
|
|
32676
32715
|
"deviceManager.getSettingsSchema": [{
|
|
32677
32716
|
name: "deviceId",
|
|
32678
32717
|
form: "single",
|
|
@@ -32693,6 +32732,11 @@ Object.freeze({
|
|
|
32693
32732
|
form: "single",
|
|
32694
32733
|
optional: false
|
|
32695
32734
|
}],
|
|
32735
|
+
"deviceManager.listAll": [{
|
|
32736
|
+
name: "deviceIds",
|
|
32737
|
+
form: "array",
|
|
32738
|
+
optional: true
|
|
32739
|
+
}],
|
|
32696
32740
|
"deviceManager.loadConfig": [{
|
|
32697
32741
|
name: "deviceId",
|
|
32698
32742
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -11990,6 +11990,27 @@ var LinkedDeviceSchema = object({
|
|
|
11990
11990
|
features: array(string()),
|
|
11991
11991
|
producesTrackedEvents: boolean().optional()
|
|
11992
11992
|
});
|
|
11993
|
+
/** One camera's resolved linked set, tagged with the camera it belongs to.
|
|
11994
|
+
* The batch answer needs the tag; the single-device answer already has it
|
|
11995
|
+
* from the input, which is why `getLinkedDevices` keeps the untagged shape. */
|
|
11996
|
+
var LinkedDevicesForDeviceSchema = object({
|
|
11997
|
+
deviceId: number$1(),
|
|
11998
|
+
mode: LinkedDevicesModeSchema,
|
|
11999
|
+
devices: array(LinkedDeviceSchema)
|
|
12000
|
+
});
|
|
12001
|
+
/** One device's binding map — the shape `getBindings`, `getBindingsBatch` and
|
|
12002
|
+
* `getAllBindings` all answer in. Declared once: three copies of the same
|
|
12003
|
+
* object literal is exactly how the three drift apart. */
|
|
12004
|
+
var DeviceBindingsForDeviceSchema = object({
|
|
12005
|
+
deviceId: number$1(),
|
|
12006
|
+
entries: array(object({
|
|
12007
|
+
capName: string(),
|
|
12008
|
+
kind: _enum(["native", "wrapped"]),
|
|
12009
|
+
providerAddonId: string(),
|
|
12010
|
+
providerNodeId: string(),
|
|
12011
|
+
nativeAddonId: string()
|
|
12012
|
+
}))
|
|
12013
|
+
});
|
|
11993
12014
|
var SavedDeviceRowSchema = object({
|
|
11994
12015
|
/** Numeric id reserved at allocateDeviceId time. */
|
|
11995
12016
|
id: number$1(),
|
|
@@ -12215,11 +12236,25 @@ method(object({
|
|
|
12215
12236
|
projection: _enum(["full", "slim"]).optional(),
|
|
12216
12237
|
/** Return only camera devices. Filtering server-side instead of
|
|
12217
12238
|
* shipping 293 rows to find 12. */
|
|
12218
|
-
isCamera: boolean().optional()
|
|
12239
|
+
isCamera: boolean().optional(),
|
|
12240
|
+
/**
|
|
12241
|
+
* Return only these device ids. For the caller that already KNOWS the
|
|
12242
|
+
* handful it wants and needs a field the id-bearing answer does not
|
|
12243
|
+
* carry — the viewer's linked-devices panel joins `type` and `online`
|
|
12244
|
+
* onto ~8 linked ids and, unfiltered, dragged the fleet across to do
|
|
12245
|
+
* it: 433 KB slim / 958 KB full for 967 devices, on a query that
|
|
12246
|
+
* refetches on the reconcile interval, on a phone.
|
|
12247
|
+
*
|
|
12248
|
+
* Safe to send at a hub that predates it: Zod STRIPS unknown input
|
|
12249
|
+
* keys rather than rejecting them (verified against the live hub
|
|
12250
|
+
* 2026-08-25 — 967 rows came back), so an old hub answers exactly what
|
|
12251
|
+
* it answers today and the caller filters as it already does.
|
|
12252
|
+
*/
|
|
12253
|
+
deviceIds: array(number$1()).optional()
|
|
12219
12254
|
}), array(DeviceInfoSchema)), method(object({ deviceId: number$1() }), DeviceInfoSchema.nullable()), method(object({ parentDeviceId: number$1() }), array(DeviceInfoSchema)), method(object({ deviceId: number$1() }), object({
|
|
12220
12255
|
mode: LinkedDevicesModeSchema,
|
|
12221
12256
|
devices: array(LinkedDeviceSchema)
|
|
12222
|
-
})), method(object({ deviceId: number$1() }), array(StreamSourceEntrySchema$1)), method(object({ deviceId: number$1() }), array(ConfigEntrySchema)), method(object({ deviceId: number$1() }), ConfigUISchemaOutput), method(object({
|
|
12257
|
+
})), method(object({ deviceIds: array(number$1()) }), array(LinkedDevicesForDeviceSchema)), method(object({ deviceId: number$1() }), array(StreamSourceEntrySchema$1)), method(object({ deviceId: number$1() }), array(ConfigEntrySchema)), method(object({ deviceId: number$1() }), ConfigUISchemaOutput), method(object({
|
|
12223
12258
|
deviceId: number$1(),
|
|
12224
12259
|
values: record(string(), unknown())
|
|
12225
12260
|
}), object({ success: literal(true) }), {
|
|
@@ -12246,25 +12281,7 @@ method(object({
|
|
|
12246
12281
|
}), method(object({ deviceId: number$1() }), array(StreamProbeResultSchema), {
|
|
12247
12282
|
kind: "mutation",
|
|
12248
12283
|
auth: "admin"
|
|
12249
|
-
}), method(object({ deviceId: number$1() }), object({
|
|
12250
|
-
deviceId: number$1(),
|
|
12251
|
-
entries: array(object({
|
|
12252
|
-
capName: string(),
|
|
12253
|
-
kind: _enum(["native", "wrapped"]),
|
|
12254
|
-
providerAddonId: string(),
|
|
12255
|
-
providerNodeId: string(),
|
|
12256
|
-
nativeAddonId: string()
|
|
12257
|
-
}))
|
|
12258
|
-
})), method(object({}), array(object({
|
|
12259
|
-
deviceId: number$1(),
|
|
12260
|
-
entries: array(object({
|
|
12261
|
-
capName: string(),
|
|
12262
|
-
kind: _enum(["native", "wrapped"]),
|
|
12263
|
-
providerAddonId: string(),
|
|
12264
|
-
providerNodeId: string(),
|
|
12265
|
-
nativeAddonId: string()
|
|
12266
|
-
}))
|
|
12267
|
-
}))), method(object({
|
|
12284
|
+
}), method(object({ deviceId: number$1() }), DeviceBindingsForDeviceSchema), method(object({ deviceIds: array(number$1()) }), array(DeviceBindingsForDeviceSchema)), method(object({}), array(DeviceBindingsForDeviceSchema)), method(object({
|
|
12268
12285
|
deviceId: number$1(),
|
|
12269
12286
|
capName: string(),
|
|
12270
12287
|
wrapperAddonId: string(),
|
|
@@ -27947,6 +27964,12 @@ Object.freeze({
|
|
|
27947
27964
|
addonId: null,
|
|
27948
27965
|
access: "view"
|
|
27949
27966
|
},
|
|
27967
|
+
"deviceManager.getBindingsBatch": {
|
|
27968
|
+
capName: "device-manager",
|
|
27969
|
+
capScope: "system",
|
|
27970
|
+
addonId: null,
|
|
27971
|
+
access: "view"
|
|
27972
|
+
},
|
|
27950
27973
|
"deviceManager.getChildren": {
|
|
27951
27974
|
capName: "device-manager",
|
|
27952
27975
|
capScope: "system",
|
|
@@ -28007,6 +28030,12 @@ Object.freeze({
|
|
|
28007
28030
|
addonId: null,
|
|
28008
28031
|
access: "view"
|
|
28009
28032
|
},
|
|
28033
|
+
"deviceManager.getLinkedDevicesBatch": {
|
|
28034
|
+
capName: "device-manager",
|
|
28035
|
+
capScope: "system",
|
|
28036
|
+
addonId: null,
|
|
28037
|
+
access: "view"
|
|
28038
|
+
},
|
|
28010
28039
|
"deviceManager.getRoleDisplayDefaults": {
|
|
28011
28040
|
capName: "device-manager",
|
|
28012
28041
|
capScope: "system",
|
|
@@ -32654,6 +32683,11 @@ Object.freeze({
|
|
|
32654
32683
|
form: "single",
|
|
32655
32684
|
optional: false
|
|
32656
32685
|
}],
|
|
32686
|
+
"deviceManager.getBindingsBatch": [{
|
|
32687
|
+
name: "deviceIds",
|
|
32688
|
+
form: "array",
|
|
32689
|
+
optional: false
|
|
32690
|
+
}],
|
|
32657
32691
|
"deviceManager.getChildren": [{
|
|
32658
32692
|
name: "parentDeviceId",
|
|
32659
32693
|
form: "single",
|
|
@@ -32699,6 +32733,11 @@ Object.freeze({
|
|
|
32699
32733
|
form: "single",
|
|
32700
32734
|
optional: false
|
|
32701
32735
|
}],
|
|
32736
|
+
"deviceManager.getLinkedDevicesBatch": [{
|
|
32737
|
+
name: "deviceIds",
|
|
32738
|
+
form: "array",
|
|
32739
|
+
optional: false
|
|
32740
|
+
}],
|
|
32702
32741
|
"deviceManager.getSettingsSchema": [{
|
|
32703
32742
|
name: "deviceId",
|
|
32704
32743
|
form: "single",
|
|
@@ -32719,6 +32758,11 @@ Object.freeze({
|
|
|
32719
32758
|
form: "single",
|
|
32720
32759
|
optional: false
|
|
32721
32760
|
}],
|
|
32761
|
+
"deviceManager.listAll": [{
|
|
32762
|
+
name: "deviceIds",
|
|
32763
|
+
form: "array",
|
|
32764
|
+
optional: true
|
|
32765
|
+
}],
|
|
32722
32766
|
"deviceManager.loadConfig": [{
|
|
32723
32767
|
name: "deviceId",
|
|
32724
32768
|
form: "single",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-ai",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.19",
|
|
4
4
|
"description": "AI addon for CamStack — the `llm` collection provider (cloud, LAN, and camstack-managed local llama.cpp profiles) plus the per-node `llm-runtime` managed executor.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|