@camstack/addon-ai 0.4.82 → 0.4.84
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 +35 -8
- package/dist/addon.mjs +35 -8
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -12152,6 +12152,9 @@ var QueryFilterSchema = object({
|
|
|
12152
12152
|
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
12153
12153
|
/** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
|
|
12154
12154
|
whereNot: record(string(), unknown()).optional(),
|
|
12155
|
+
/** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
|
|
12156
|
+
* empty list excludes nothing. See `QueryFilter.whereNotIn`. */
|
|
12157
|
+
whereNotIn: record(string(), array(unknown())).optional(),
|
|
12155
12158
|
orderBy: object({
|
|
12156
12159
|
field: string(),
|
|
12157
12160
|
direction: _enum(["asc", "desc"])
|
|
@@ -12172,7 +12175,8 @@ var MutationFilterSchema = object({
|
|
|
12172
12175
|
where: record(string(), unknown()).optional(),
|
|
12173
12176
|
whereIn: record(string(), array(unknown())).optional(),
|
|
12174
12177
|
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
12175
|
-
whereNot: record(string(), unknown()).optional()
|
|
12178
|
+
whereNot: record(string(), unknown()).optional(),
|
|
12179
|
+
whereNotIn: record(string(), array(unknown())).optional()
|
|
12176
12180
|
});
|
|
12177
12181
|
/**
|
|
12178
12182
|
* One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
|
|
@@ -18756,10 +18760,12 @@ var TrackSourceSchema = _enum([
|
|
|
18756
18760
|
* Terminal for the plain `markForTrain` toggle: returning it to `staging` is
|
|
18757
18761
|
* a deliberate action of the retrain page, not a side effect of a checkbox.
|
|
18758
18762
|
*
|
|
18759
|
-
* There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'`
|
|
18760
|
-
*
|
|
18761
|
-
*
|
|
18762
|
-
*
|
|
18763
|
+
* There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
|
|
18764
|
+
* every row is selectable by a positive predicate. (The filter language has
|
|
18765
|
+
* since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
|
|
18766
|
+
* of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
|
|
18767
|
+
* filtered on a NULLABLE column — see `excludeSources`. It did not when this
|
|
18768
|
+
* column was designed, and a NOT NULL column is still the better shape.)
|
|
18763
18769
|
*/
|
|
18764
18770
|
var RetrainStatusSchema = _enum([
|
|
18765
18771
|
"none",
|
|
@@ -19495,7 +19501,9 @@ var RecentTracksQueryInput = object({
|
|
|
19495
19501
|
* whose class list is unreadable are kept, and the client's rule stays the
|
|
19496
19502
|
* exact one.
|
|
19497
19503
|
*/
|
|
19498
|
-
classes: array(string()).optional()
|
|
19504
|
+
classes: array(string()).optional(),
|
|
19505
|
+
/** See {@link ExcludeSourcesDoc}. */
|
|
19506
|
+
excludeSources: array(TrackSourceSchema).optional()
|
|
19499
19507
|
});
|
|
19500
19508
|
/**
|
|
19501
19509
|
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
@@ -19923,7 +19931,9 @@ DeviceType.Camera, method(object({ deviceId: number$1() }), array(TrackSchema).r
|
|
|
19923
19931
|
* selected is an operator who has not narrowed anything, and an empty
|
|
19924
19932
|
* timeline would read as a camera that saw nothing.
|
|
19925
19933
|
*/
|
|
19926
|
-
classes: array(string()).optional()
|
|
19934
|
+
classes: array(string()).optional(),
|
|
19935
|
+
/** See {@link ExcludeSourcesDoc}. */
|
|
19936
|
+
excludeSources: array(TrackSourceSchema).optional()
|
|
19927
19937
|
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number$1() }), _void(), {
|
|
19928
19938
|
kind: "mutation",
|
|
19929
19939
|
auth: "admin"
|
|
@@ -20428,8 +20438,25 @@ var occupancyRecheckFramesField = {
|
|
|
20428
20438
|
* (analyzer attaches detected `regions[]`; onboard does not — the
|
|
20429
20439
|
* camera typically only reports a binary signal plus an optional
|
|
20430
20440
|
* channel/AI class which lives in dedicated event channels).
|
|
20441
|
+
*
|
|
20442
|
+
* - `onboard` — the camera's firmware said something moved.
|
|
20443
|
+
* - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
|
|
20444
|
+
* - `device-activity` — the DEVICE said it is doing its job: the
|
|
20445
|
+
* `recording-signal` LEVEL the same device raises for the recorder
|
|
20446
|
+
* ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
|
|
20447
|
+
* republished as a motion source. It attaches **nothing** — no regions, no
|
|
20448
|
+
* class: the only fact it carries is that the device is active, and a robot
|
|
20449
|
+
* vacuum that is itself the moving object has no region worth sending. It is
|
|
20450
|
+
* a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
|
|
20451
|
+
* `analyzer` it must not open the frame-diff side-channel — the runner's
|
|
20452
|
+
* `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
|
|
20453
|
+
* way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
|
|
20431
20454
|
*/
|
|
20432
|
-
var MotionSourceEnum = _enum([
|
|
20455
|
+
var MotionSourceEnum = _enum([
|
|
20456
|
+
"onboard",
|
|
20457
|
+
"analyzer",
|
|
20458
|
+
"device-activity"
|
|
20459
|
+
]);
|
|
20433
20460
|
/**
|
|
20434
20461
|
* List of motion sources active on a camera. Empty array is valid:
|
|
20435
20462
|
* "no source" — happens for battery cams without firmware motion when
|
package/dist/addon.mjs
CHANGED
|
@@ -12179,6 +12179,9 @@ var QueryFilterSchema = object({
|
|
|
12179
12179
|
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
12180
12180
|
/** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
|
|
12181
12181
|
whereNot: record(string(), unknown()).optional(),
|
|
12182
|
+
/** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
|
|
12183
|
+
* empty list excludes nothing. See `QueryFilter.whereNotIn`. */
|
|
12184
|
+
whereNotIn: record(string(), array(unknown())).optional(),
|
|
12182
12185
|
orderBy: object({
|
|
12183
12186
|
field: string(),
|
|
12184
12187
|
direction: _enum(["asc", "desc"])
|
|
@@ -12199,7 +12202,8 @@ var MutationFilterSchema = object({
|
|
|
12199
12202
|
where: record(string(), unknown()).optional(),
|
|
12200
12203
|
whereIn: record(string(), array(unknown())).optional(),
|
|
12201
12204
|
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
12202
|
-
whereNot: record(string(), unknown()).optional()
|
|
12205
|
+
whereNot: record(string(), unknown()).optional(),
|
|
12206
|
+
whereNotIn: record(string(), array(unknown())).optional()
|
|
12203
12207
|
});
|
|
12204
12208
|
/**
|
|
12205
12209
|
* One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
|
|
@@ -18783,10 +18787,12 @@ var TrackSourceSchema = _enum([
|
|
|
18783
18787
|
* Terminal for the plain `markForTrain` toggle: returning it to `staging` is
|
|
18784
18788
|
* a deliberate action of the retrain page, not a side effect of a checkbox.
|
|
18785
18789
|
*
|
|
18786
|
-
* There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'`
|
|
18787
|
-
*
|
|
18788
|
-
*
|
|
18789
|
-
*
|
|
18790
|
+
* There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
|
|
18791
|
+
* every row is selectable by a positive predicate. (The filter language has
|
|
18792
|
+
* since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
|
|
18793
|
+
* of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
|
|
18794
|
+
* filtered on a NULLABLE column — see `excludeSources`. It did not when this
|
|
18795
|
+
* column was designed, and a NOT NULL column is still the better shape.)
|
|
18790
18796
|
*/
|
|
18791
18797
|
var RetrainStatusSchema = _enum([
|
|
18792
18798
|
"none",
|
|
@@ -19522,7 +19528,9 @@ var RecentTracksQueryInput = object({
|
|
|
19522
19528
|
* whose class list is unreadable are kept, and the client's rule stays the
|
|
19523
19529
|
* exact one.
|
|
19524
19530
|
*/
|
|
19525
|
-
classes: array(string()).optional()
|
|
19531
|
+
classes: array(string()).optional(),
|
|
19532
|
+
/** See {@link ExcludeSourcesDoc}. */
|
|
19533
|
+
excludeSources: array(TrackSourceSchema).optional()
|
|
19526
19534
|
});
|
|
19527
19535
|
/**
|
|
19528
19536
|
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
@@ -19950,7 +19958,9 @@ DeviceType.Camera, method(object({ deviceId: number$1() }), array(TrackSchema).r
|
|
|
19950
19958
|
* selected is an operator who has not narrowed anything, and an empty
|
|
19951
19959
|
* timeline would read as a camera that saw nothing.
|
|
19952
19960
|
*/
|
|
19953
|
-
classes: array(string()).optional()
|
|
19961
|
+
classes: array(string()).optional(),
|
|
19962
|
+
/** See {@link ExcludeSourcesDoc}. */
|
|
19963
|
+
excludeSources: array(TrackSourceSchema).optional()
|
|
19954
19964
|
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number$1() }), _void(), {
|
|
19955
19965
|
kind: "mutation",
|
|
19956
19966
|
auth: "admin"
|
|
@@ -20455,8 +20465,25 @@ var occupancyRecheckFramesField = {
|
|
|
20455
20465
|
* (analyzer attaches detected `regions[]`; onboard does not — the
|
|
20456
20466
|
* camera typically only reports a binary signal plus an optional
|
|
20457
20467
|
* channel/AI class which lives in dedicated event channels).
|
|
20468
|
+
*
|
|
20469
|
+
* - `onboard` — the camera's firmware said something moved.
|
|
20470
|
+
* - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
|
|
20471
|
+
* - `device-activity` — the DEVICE said it is doing its job: the
|
|
20472
|
+
* `recording-signal` LEVEL the same device raises for the recorder
|
|
20473
|
+
* ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
|
|
20474
|
+
* republished as a motion source. It attaches **nothing** — no regions, no
|
|
20475
|
+
* class: the only fact it carries is that the device is active, and a robot
|
|
20476
|
+
* vacuum that is itself the moving object has no region worth sending. It is
|
|
20477
|
+
* a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
|
|
20478
|
+
* `analyzer` it must not open the frame-diff side-channel — the runner's
|
|
20479
|
+
* `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
|
|
20480
|
+
* way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
|
|
20458
20481
|
*/
|
|
20459
|
-
var MotionSourceEnum = _enum([
|
|
20482
|
+
var MotionSourceEnum = _enum([
|
|
20483
|
+
"onboard",
|
|
20484
|
+
"analyzer",
|
|
20485
|
+
"device-activity"
|
|
20486
|
+
]);
|
|
20460
20487
|
/**
|
|
20461
20488
|
* List of motion sources active on a camera. Empty array is valid:
|
|
20462
20489
|
* "no source" — happens for battery cams without firmware motion when
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-ai",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.84",
|
|
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",
|