@camstack/addon-provider-reolink 1.2.29 → 1.2.31

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, {
@@ -19732,7 +19747,16 @@ targets: array(object({
19732
19747
  /** A sleeping battery camera: the frame is deliberately stale and will
19733
19748
  * NOT refresh in the background. A surface should say so rather than
19734
19749
  * present it as current. */
19735
- sleeping: boolean()
19750
+ sleeping: boolean(),
19751
+ /** Current device state rendered over the cached frame. State images
19752
+ * remain authoritative even when their photographic background is
19753
+ * old; null means the link must carry a current camera frame. */
19754
+ stateReason: _enum([
19755
+ "disabled",
19756
+ "sleeping",
19757
+ "unreachable",
19758
+ "waking"
19759
+ ]).nullable()
19736
19760
  })))
19737
19761
  },
19738
19762
  status: {
@@ -36734,6 +36758,11 @@ Object.freeze({
36734
36758
  form: "single",
36735
36759
  optional: false
36736
36760
  }],
36761
+ "pipelineAnalytics.getEventMedia": [{
36762
+ name: "deviceId",
36763
+ form: "single",
36764
+ optional: false
36765
+ }],
36737
36766
  "pipelineAnalytics.getKeyEvents": [{
36738
36767
  name: "deviceId",
36739
36768
  form: "single",
@@ -36764,6 +36793,11 @@ Object.freeze({
36764
36793
  form: "single",
36765
36794
  optional: false
36766
36795
  }],
36796
+ "pipelineAnalytics.getTrackMedia": [{
36797
+ name: "deviceId",
36798
+ form: "single",
36799
+ optional: false
36800
+ }],
36767
36801
  "pipelineAnalytics.getTrainingExportSummary": [{
36768
36802
  name: "deviceIds",
36769
36803
  form: "array",
@@ -36799,6 +36833,11 @@ Object.freeze({
36799
36833
  form: "array",
36800
36834
  optional: true
36801
36835
  }],
36836
+ "pipelineAnalytics.listTrackMedia": [{
36837
+ name: "deviceId",
36838
+ form: "single",
36839
+ optional: false
36840
+ }],
36802
36841
  "pipelineAnalytics.listTracks": [{
36803
36842
  name: "deviceId",
36804
36843
  form: "single",
@@ -37239,6 +37278,12 @@ Object.freeze({
37239
37278
  form: "single",
37240
37279
  optional: false
37241
37280
  }],
37281
+ "snapshot.getSnapshotLinks": [{
37282
+ name: "targets",
37283
+ form: "object-array",
37284
+ optional: false,
37285
+ itemField: "deviceId"
37286
+ }],
37242
37287
  "snapshot.getSnapshotOverview": [{
37243
37288
  name: "deviceIds",
37244
37289
  form: "array",
@@ -230916,6 +230961,39 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
230916
230961
  });
230917
230962
  await sleep$1(1500);
230918
230963
  })(), new Promise((_, rej) => setTimeout(() => rej(/* @__PURE__ */ new Error("wakeForStream timeout")), timeoutMs))]);
230964
+ const CONFIRM_TIMEOUT_MS = 1e4;
230965
+ const CONFIRM_POLL_MS = 1e3;
230966
+ const confirmDeadline = Date.now() + CONFIRM_TIMEOUT_MS;
230967
+ let confirmed = false;
230968
+ while (Date.now() < confirmDeadline) {
230969
+ let state = null;
230970
+ try {
230971
+ state = api.getSleepStatus({ channel: this.getChannel() }).state;
230972
+ } catch {
230973
+ state = null;
230974
+ }
230975
+ if (state === "awake") {
230976
+ confirmed = true;
230977
+ break;
230978
+ }
230979
+ await sleep$1(CONFIRM_POLL_MS);
230980
+ }
230981
+ if (confirmed && this.commitSleepState(false, "sleep-poll")) {
230982
+ this.ctx.logger.info("battery wakeForStream: wake confirmed — driving wake transition", {
230983
+ tags: { deviceId: this.id },
230984
+ meta: { confirmMs: Date.now() - startedAt }
230985
+ });
230986
+ this.onWakeTransition("sleep-poll").catch(() => {});
230987
+ } else if (!confirmed) {
230988
+ this.ctx.logger.warn("battery wakeForStream: ACK received but no awake evidence inside the confirm window", {
230989
+ tags: { deviceId: this.id },
230990
+ meta: { confirmTimeoutMs: CONFIRM_TIMEOUT_MS }
230991
+ });
230992
+ return {
230993
+ awoke: false,
230994
+ durationMs: Date.now() - startedAt
230995
+ };
230996
+ }
230919
230997
  return {
230920
230998
  awoke: true,
230921
230999
  durationMs: Date.now() - startedAt
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, {
@@ -19727,7 +19742,16 @@ targets: array(object({
19727
19742
  /** A sleeping battery camera: the frame is deliberately stale and will
19728
19743
  * NOT refresh in the background. A surface should say so rather than
19729
19744
  * present it as current. */
19730
- sleeping: boolean()
19745
+ sleeping: boolean(),
19746
+ /** Current device state rendered over the cached frame. State images
19747
+ * remain authoritative even when their photographic background is
19748
+ * old; null means the link must carry a current camera frame. */
19749
+ stateReason: _enum([
19750
+ "disabled",
19751
+ "sleeping",
19752
+ "unreachable",
19753
+ "waking"
19754
+ ]).nullable()
19731
19755
  })))
19732
19756
  },
19733
19757
  status: {
@@ -36729,6 +36753,11 @@ Object.freeze({
36729
36753
  form: "single",
36730
36754
  optional: false
36731
36755
  }],
36756
+ "pipelineAnalytics.getEventMedia": [{
36757
+ name: "deviceId",
36758
+ form: "single",
36759
+ optional: false
36760
+ }],
36732
36761
  "pipelineAnalytics.getKeyEvents": [{
36733
36762
  name: "deviceId",
36734
36763
  form: "single",
@@ -36759,6 +36788,11 @@ Object.freeze({
36759
36788
  form: "single",
36760
36789
  optional: false
36761
36790
  }],
36791
+ "pipelineAnalytics.getTrackMedia": [{
36792
+ name: "deviceId",
36793
+ form: "single",
36794
+ optional: false
36795
+ }],
36762
36796
  "pipelineAnalytics.getTrainingExportSummary": [{
36763
36797
  name: "deviceIds",
36764
36798
  form: "array",
@@ -36794,6 +36828,11 @@ Object.freeze({
36794
36828
  form: "array",
36795
36829
  optional: true
36796
36830
  }],
36831
+ "pipelineAnalytics.listTrackMedia": [{
36832
+ name: "deviceId",
36833
+ form: "single",
36834
+ optional: false
36835
+ }],
36797
36836
  "pipelineAnalytics.listTracks": [{
36798
36837
  name: "deviceId",
36799
36838
  form: "single",
@@ -37234,6 +37273,12 @@ Object.freeze({
37234
37273
  form: "single",
37235
37274
  optional: false
37236
37275
  }],
37276
+ "snapshot.getSnapshotLinks": [{
37277
+ name: "targets",
37278
+ form: "object-array",
37279
+ optional: false,
37280
+ itemField: "deviceId"
37281
+ }],
37237
37282
  "snapshot.getSnapshotOverview": [{
37238
37283
  name: "deviceIds",
37239
37284
  form: "array",
@@ -230896,6 +230941,39 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
230896
230941
  });
230897
230942
  await sleep$1(1500);
230898
230943
  })(), new Promise((_, rej) => setTimeout(() => rej(/* @__PURE__ */ new Error("wakeForStream timeout")), timeoutMs))]);
230944
+ const CONFIRM_TIMEOUT_MS = 1e4;
230945
+ const CONFIRM_POLL_MS = 1e3;
230946
+ const confirmDeadline = Date.now() + CONFIRM_TIMEOUT_MS;
230947
+ let confirmed = false;
230948
+ while (Date.now() < confirmDeadline) {
230949
+ let state = null;
230950
+ try {
230951
+ state = api.getSleepStatus({ channel: this.getChannel() }).state;
230952
+ } catch {
230953
+ state = null;
230954
+ }
230955
+ if (state === "awake") {
230956
+ confirmed = true;
230957
+ break;
230958
+ }
230959
+ await sleep$1(CONFIRM_POLL_MS);
230960
+ }
230961
+ if (confirmed && this.commitSleepState(false, "sleep-poll")) {
230962
+ this.ctx.logger.info("battery wakeForStream: wake confirmed — driving wake transition", {
230963
+ tags: { deviceId: this.id },
230964
+ meta: { confirmMs: Date.now() - startedAt }
230965
+ });
230966
+ this.onWakeTransition("sleep-poll").catch(() => {});
230967
+ } else if (!confirmed) {
230968
+ this.ctx.logger.warn("battery wakeForStream: ACK received but no awake evidence inside the confirm window", {
230969
+ tags: { deviceId: this.id },
230970
+ meta: { confirmTimeoutMs: CONFIRM_TIMEOUT_MS }
230971
+ });
230972
+ return {
230973
+ awoke: false,
230974
+ durationMs: Date.now() - startedAt
230975
+ };
230976
+ }
230899
230977
  return {
230900
230978
  awoke: true,
230901
230979
  durationMs: Date.now() - startedAt
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-reolink",
3
- "version": "1.2.29",
3
+ "version": "1.2.31",
4
4
  "description": "Reolink camera device provider addon for CamStack — native Baichuan protocol",
5
5
  "keywords": [
6
6
  "camstack",