@camstack/addon-provider-reolink 1.2.30 → 1.2.32

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 CHANGED
@@ -11143,6 +11143,8 @@ var QueryFilterSchema = object({
11143
11143
  where: record(string(), unknown()).optional(),
11144
11144
  whereIn: record(string(), array(unknown())).optional(),
11145
11145
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
11146
+ /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
11147
+ whereNot: record(string(), unknown()).optional(),
11146
11148
  orderBy: object({
11147
11149
  field: string(),
11148
11150
  direction: _enum(["asc", "desc"])
@@ -11162,7 +11164,8 @@ var QueryFilterSchema = object({
11162
11164
  var MutationFilterSchema = object({
11163
11165
  where: record(string(), unknown()).optional(),
11164
11166
  whereIn: record(string(), array(unknown())).optional(),
11165
- whereBetween: record(string(), tuple([unknown(), unknown()])).optional()
11167
+ whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
11168
+ whereNot: record(string(), unknown()).optional()
11166
11169
  });
11167
11170
  /** A single stored record: `{ id, data }`. */
11168
11171
  var SettingsRecordSchema = object({
@@ -17238,7 +17241,10 @@ var RecentTracksQueryInput = object({
17238
17241
  * Encodes the (lastSeen, trackId) sort position — treat as opaque. */
17239
17242
  cursor: string().optional(),
17240
17243
  /** See {@link TrackProjectionSchema}. Default `full`. */
17241
- projection: TrackProjectionSchema.optional()
17244
+ projection: TrackProjectionSchema.optional(),
17245
+ /** Include stationary-promoted rows (parked objects). Default false: the
17246
+ * feed lists passages; parking records live on the stationary registry. */
17247
+ includeStationary: boolean().optional()
17242
17248
  });
17243
17249
  var RecentTracksPageSchema = object({
17244
17250
  /** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
@@ -17456,7 +17462,11 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
17456
17462
  zone: TrackZoneFilterSchema.optional(),
17457
17463
  /** See {@link TrackProjectionSchema}. Default `full` (backward
17458
17464
  * compatible — omitting the field keeps today's exact behaviour). */
17459
- projection: TrackProjectionSchema.optional()
17465
+ projection: TrackProjectionSchema.optional(),
17466
+ /** Include stationary-promoted rows (parked objects handed to the
17467
+ * stationary registry). Default false: the timeline lists passages,
17468
+ * not parking records (operator decision, 2026-08-15). */
17469
+ includeStationary: boolean().optional()
17460
17470
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
17461
17471
  kind: "mutation",
17462
17472
  auth: "admin"
@@ -17620,11 +17630,16 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
17620
17630
  auth: "admin"
17621
17631
  }), method(object({
17622
17632
  eventId: string(),
17623
- kind: MediaFileKindEnum.optional()
17633
+ kind: MediaFileKindEnum.optional(),
17634
+ deviceId: number()
17635
+ }), array(MediaFileSchema).readonly()), method(object({
17636
+ trackId: string(),
17637
+ kinds: array(MediaFileKindEnum).optional(),
17638
+ deviceId: number()
17624
17639
  }), array(MediaFileSchema).readonly()), method(object({
17625
17640
  trackId: string(),
17626
- kinds: array(MediaFileKindEnum).optional()
17627
- }), array(MediaFileSchema).readonly()), method(object({ trackId: string() }), array(MediaFileInfoSchema).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), method(object({}), WipeObjectEmbeddingsResultSchema, {
17641
+ deviceId: number()
17642
+ }), array(MediaFileInfoSchema).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), method(object({}), WipeObjectEmbeddingsResultSchema, {
17628
17643
  kind: "mutation",
17629
17644
  auth: "admin"
17630
17645
  }), method(RebuildObjectEmbeddingsInput, RebuildObjectEmbeddingsResultSchema, {
@@ -36743,6 +36758,11 @@ Object.freeze({
36743
36758
  form: "single",
36744
36759
  optional: false
36745
36760
  }],
36761
+ "pipelineAnalytics.getEventMedia": [{
36762
+ name: "deviceId",
36763
+ form: "single",
36764
+ optional: false
36765
+ }],
36746
36766
  "pipelineAnalytics.getKeyEvents": [{
36747
36767
  name: "deviceId",
36748
36768
  form: "single",
@@ -36773,6 +36793,11 @@ Object.freeze({
36773
36793
  form: "single",
36774
36794
  optional: false
36775
36795
  }],
36796
+ "pipelineAnalytics.getTrackMedia": [{
36797
+ name: "deviceId",
36798
+ form: "single",
36799
+ optional: false
36800
+ }],
36776
36801
  "pipelineAnalytics.getTrainingExportSummary": [{
36777
36802
  name: "deviceIds",
36778
36803
  form: "array",
@@ -36808,6 +36833,11 @@ Object.freeze({
36808
36833
  form: "array",
36809
36834
  optional: true
36810
36835
  }],
36836
+ "pipelineAnalytics.listTrackMedia": [{
36837
+ name: "deviceId",
36838
+ form: "single",
36839
+ optional: false
36840
+ }],
36811
36841
  "pipelineAnalytics.listTracks": [{
36812
36842
  name: "deviceId",
36813
36843
  form: "single",
@@ -37248,6 +37278,12 @@ Object.freeze({
37248
37278
  form: "single",
37249
37279
  optional: false
37250
37280
  }],
37281
+ "snapshot.getSnapshotLinks": [{
37282
+ name: "targets",
37283
+ form: "object-array",
37284
+ optional: false,
37285
+ itemField: "deviceId"
37286
+ }],
37251
37287
  "snapshot.getSnapshotOverview": [{
37252
37288
  name: "deviceIds",
37253
37289
  form: "array",
@@ -230928,26 +230964,39 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
230928
230964
  const CONFIRM_TIMEOUT_MS = 1e4;
230929
230965
  const CONFIRM_POLL_MS = 1e3;
230930
230966
  const confirmDeadline = Date.now() + CONFIRM_TIMEOUT_MS;
230967
+ const parent = await this.getParentHub();
230931
230968
  let confirmed = false;
230932
230969
  while (Date.now() < confirmDeadline) {
230933
- let state = null;
230934
- try {
230935
- state = api.getSleepStatus({ channel: this.getChannel() }).state;
230936
- } catch {
230937
- state = null;
230938
- }
230939
- if (state === "awake") {
230940
- confirmed = true;
230941
- break;
230970
+ if (parent !== null) try {
230971
+ if ((await (await parent.getApi()).getNvrChannelsSummary({ channels: [this.getChannel()] })).devices.find((d) => d.channel === this.getChannel())?.sleeping === false) {
230972
+ confirmed = true;
230973
+ break;
230974
+ }
230975
+ } catch {}
230976
+ else {
230977
+ let state = null;
230978
+ try {
230979
+ state = api.getSleepStatus({ channel: this.getChannel() }).state;
230980
+ } catch {
230981
+ state = null;
230982
+ }
230983
+ if (state === "awake") {
230984
+ confirmed = true;
230985
+ break;
230986
+ }
230942
230987
  }
230943
230988
  await sleep$1(CONFIRM_POLL_MS);
230944
230989
  }
230945
- if (confirmed && this.commitSleepState(false, "sleep-poll")) {
230990
+ const confirmSource = parent !== null ? "hub-summary" : "sleep-poll";
230991
+ if (confirmed && this.commitSleepState(false, confirmSource)) {
230946
230992
  this.ctx.logger.info("battery wakeForStream: wake confirmed — driving wake transition", {
230947
230993
  tags: { deviceId: this.id },
230948
- meta: { confirmMs: Date.now() - startedAt }
230994
+ meta: {
230995
+ confirmMs: Date.now() - startedAt,
230996
+ source: confirmSource
230997
+ }
230949
230998
  });
230950
- this.onWakeTransition("sleep-poll").catch(() => {});
230999
+ this.onWakeTransition(confirmSource).catch(() => {});
230951
231000
  } else if (!confirmed) {
230952
231001
  this.ctx.logger.warn("battery wakeForStream: ACK received but no awake evidence inside the confirm window", {
230953
231002
  tags: { deviceId: this.id },
package/dist/addon.mjs CHANGED
@@ -11138,6 +11138,8 @@ var QueryFilterSchema = object({
11138
11138
  where: record(string(), unknown()).optional(),
11139
11139
  whereIn: record(string(), array(unknown())).optional(),
11140
11140
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
11141
+ /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
11142
+ whereNot: record(string(), unknown()).optional(),
11141
11143
  orderBy: object({
11142
11144
  field: string(),
11143
11145
  direction: _enum(["asc", "desc"])
@@ -11157,7 +11159,8 @@ var QueryFilterSchema = object({
11157
11159
  var MutationFilterSchema = object({
11158
11160
  where: record(string(), unknown()).optional(),
11159
11161
  whereIn: record(string(), array(unknown())).optional(),
11160
- whereBetween: record(string(), tuple([unknown(), unknown()])).optional()
11162
+ whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
11163
+ whereNot: record(string(), unknown()).optional()
11161
11164
  });
11162
11165
  /** A single stored record: `{ id, data }`. */
11163
11166
  var SettingsRecordSchema = object({
@@ -17233,7 +17236,10 @@ var RecentTracksQueryInput = object({
17233
17236
  * Encodes the (lastSeen, trackId) sort position — treat as opaque. */
17234
17237
  cursor: string().optional(),
17235
17238
  /** See {@link TrackProjectionSchema}. Default `full`. */
17236
- projection: TrackProjectionSchema.optional()
17239
+ projection: TrackProjectionSchema.optional(),
17240
+ /** Include stationary-promoted rows (parked objects). Default false: the
17241
+ * feed lists passages; parking records live on the stationary registry. */
17242
+ includeStationary: boolean().optional()
17237
17243
  });
17238
17244
  var RecentTracksPageSchema = object({
17239
17245
  /** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
@@ -17451,7 +17457,11 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
17451
17457
  zone: TrackZoneFilterSchema.optional(),
17452
17458
  /** See {@link TrackProjectionSchema}. Default `full` (backward
17453
17459
  * compatible — omitting the field keeps today's exact behaviour). */
17454
- projection: TrackProjectionSchema.optional()
17460
+ projection: TrackProjectionSchema.optional(),
17461
+ /** Include stationary-promoted rows (parked objects handed to the
17462
+ * stationary registry). Default false: the timeline lists passages,
17463
+ * not parking records (operator decision, 2026-08-15). */
17464
+ includeStationary: boolean().optional()
17455
17465
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
17456
17466
  kind: "mutation",
17457
17467
  auth: "admin"
@@ -17615,11 +17625,16 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
17615
17625
  auth: "admin"
17616
17626
  }), method(object({
17617
17627
  eventId: string(),
17618
- kind: MediaFileKindEnum.optional()
17628
+ kind: MediaFileKindEnum.optional(),
17629
+ deviceId: number()
17630
+ }), array(MediaFileSchema).readonly()), method(object({
17631
+ trackId: string(),
17632
+ kinds: array(MediaFileKindEnum).optional(),
17633
+ deviceId: number()
17619
17634
  }), array(MediaFileSchema).readonly()), method(object({
17620
17635
  trackId: string(),
17621
- kinds: array(MediaFileKindEnum).optional()
17622
- }), array(MediaFileSchema).readonly()), method(object({ trackId: string() }), array(MediaFileInfoSchema).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), method(object({}), WipeObjectEmbeddingsResultSchema, {
17636
+ deviceId: number()
17637
+ }), array(MediaFileInfoSchema).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), method(object({}), WipeObjectEmbeddingsResultSchema, {
17623
17638
  kind: "mutation",
17624
17639
  auth: "admin"
17625
17640
  }), method(RebuildObjectEmbeddingsInput, RebuildObjectEmbeddingsResultSchema, {
@@ -36738,6 +36753,11 @@ Object.freeze({
36738
36753
  form: "single",
36739
36754
  optional: false
36740
36755
  }],
36756
+ "pipelineAnalytics.getEventMedia": [{
36757
+ name: "deviceId",
36758
+ form: "single",
36759
+ optional: false
36760
+ }],
36741
36761
  "pipelineAnalytics.getKeyEvents": [{
36742
36762
  name: "deviceId",
36743
36763
  form: "single",
@@ -36768,6 +36788,11 @@ Object.freeze({
36768
36788
  form: "single",
36769
36789
  optional: false
36770
36790
  }],
36791
+ "pipelineAnalytics.getTrackMedia": [{
36792
+ name: "deviceId",
36793
+ form: "single",
36794
+ optional: false
36795
+ }],
36771
36796
  "pipelineAnalytics.getTrainingExportSummary": [{
36772
36797
  name: "deviceIds",
36773
36798
  form: "array",
@@ -36803,6 +36828,11 @@ Object.freeze({
36803
36828
  form: "array",
36804
36829
  optional: true
36805
36830
  }],
36831
+ "pipelineAnalytics.listTrackMedia": [{
36832
+ name: "deviceId",
36833
+ form: "single",
36834
+ optional: false
36835
+ }],
36806
36836
  "pipelineAnalytics.listTracks": [{
36807
36837
  name: "deviceId",
36808
36838
  form: "single",
@@ -37243,6 +37273,12 @@ Object.freeze({
37243
37273
  form: "single",
37244
37274
  optional: false
37245
37275
  }],
37276
+ "snapshot.getSnapshotLinks": [{
37277
+ name: "targets",
37278
+ form: "object-array",
37279
+ optional: false,
37280
+ itemField: "deviceId"
37281
+ }],
37246
37282
  "snapshot.getSnapshotOverview": [{
37247
37283
  name: "deviceIds",
37248
37284
  form: "array",
@@ -230908,26 +230944,39 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
230908
230944
  const CONFIRM_TIMEOUT_MS = 1e4;
230909
230945
  const CONFIRM_POLL_MS = 1e3;
230910
230946
  const confirmDeadline = Date.now() + CONFIRM_TIMEOUT_MS;
230947
+ const parent = await this.getParentHub();
230911
230948
  let confirmed = false;
230912
230949
  while (Date.now() < confirmDeadline) {
230913
- let state = null;
230914
- try {
230915
- state = api.getSleepStatus({ channel: this.getChannel() }).state;
230916
- } catch {
230917
- state = null;
230918
- }
230919
- if (state === "awake") {
230920
- confirmed = true;
230921
- break;
230950
+ if (parent !== null) try {
230951
+ if ((await (await parent.getApi()).getNvrChannelsSummary({ channels: [this.getChannel()] })).devices.find((d) => d.channel === this.getChannel())?.sleeping === false) {
230952
+ confirmed = true;
230953
+ break;
230954
+ }
230955
+ } catch {}
230956
+ else {
230957
+ let state = null;
230958
+ try {
230959
+ state = api.getSleepStatus({ channel: this.getChannel() }).state;
230960
+ } catch {
230961
+ state = null;
230962
+ }
230963
+ if (state === "awake") {
230964
+ confirmed = true;
230965
+ break;
230966
+ }
230922
230967
  }
230923
230968
  await sleep$1(CONFIRM_POLL_MS);
230924
230969
  }
230925
- if (confirmed && this.commitSleepState(false, "sleep-poll")) {
230970
+ const confirmSource = parent !== null ? "hub-summary" : "sleep-poll";
230971
+ if (confirmed && this.commitSleepState(false, confirmSource)) {
230926
230972
  this.ctx.logger.info("battery wakeForStream: wake confirmed — driving wake transition", {
230927
230973
  tags: { deviceId: this.id },
230928
- meta: { confirmMs: Date.now() - startedAt }
230974
+ meta: {
230975
+ confirmMs: Date.now() - startedAt,
230976
+ source: confirmSource
230977
+ }
230929
230978
  });
230930
- this.onWakeTransition("sleep-poll").catch(() => {});
230979
+ this.onWakeTransition(confirmSource).catch(() => {});
230931
230980
  } else if (!confirmed) {
230932
230981
  this.ctx.logger.warn("battery wakeForStream: ACK received but no awake evidence inside the confirm window", {
230933
230982
  tags: { deviceId: this.id },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-reolink",
3
- "version": "1.2.30",
3
+ "version": "1.2.32",
4
4
  "description": "Reolink camera device provider addon for CamStack — native Baichuan protocol",
5
5
  "keywords": [
6
6
  "camstack",