@camstack/addon-provider-reolink 1.2.179 → 1.2.180

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
@@ -5413,7 +5413,7 @@ var ZodIssueCode = {
5413
5413
  var ZodFirstPartyTypeKind;
5414
5414
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5415
5415
  //#endregion
5416
- //#region ../types/dist/sleep-Cr5YOk3m.mjs
5416
+ //#region ../types/dist/sleep-DujUvOcb.mjs
5417
5417
  /**
5418
5418
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5419
5419
  * window to float samples (D455).
@@ -24202,6 +24202,9 @@ var RetrainExportFilterSchema = object({
24202
24202
  frameIds: array(string()).max(2e4).optional(),
24203
24203
  /** Only frames in at least one of these named collections. */
24204
24204
  collectionIds: array(string()).max(200).optional(),
24205
+ /** Exactly the frames of this dataset version (and its completeOnly). An
24206
+ * unknown id selects nothing. */
24207
+ datasetVersionId: string().optional(),
24205
24208
  batchId: string().optional(),
24206
24209
  /** Only frames the operator marked complete (all subjects boxed). */
24207
24210
  completeOnly: boolean().optional()
@@ -24369,6 +24372,67 @@ var RetrainLlmAssistResultSchema = discriminatedUnion("kind", [object({
24369
24372
  ]),
24370
24373
  detail: string().optional()
24371
24374
  })]);
24375
+ /** What a dataset version is cut from. Every field narrows. */
24376
+ var RetrainDatasetSelectionSchema = object({
24377
+ deviceIds: array(number()).readonly().optional(),
24378
+ collectionIds: array(string()).max(200).readonly().optional(),
24379
+ frameIds: array(string()).max(2e4).readonly().optional()
24380
+ });
24381
+ /** The counts a dataset is judged by. */
24382
+ var RetrainDatasetStatsSchema = object({
24383
+ frames: number().int(),
24384
+ completeFrames: number().int(),
24385
+ /** `completeFrames / frames`, 0..1. */
24386
+ completeness: number(),
24387
+ /** Boxes to learn (model errors excluded). */
24388
+ subjects: number().int(),
24389
+ modelErrors: number().int(),
24390
+ /** Complete frames with no subject. */
24391
+ hardNegatives: number().int(),
24392
+ /** Subjects per class × camera × day/night. */
24393
+ cells: array(object({
24394
+ macroClass: string(),
24395
+ deviceId: number(),
24396
+ lighting: _enum([
24397
+ "day",
24398
+ "night",
24399
+ "unknown"
24400
+ ]),
24401
+ subjects: number().int(),
24402
+ frames: number().int()
24403
+ })).readonly(),
24404
+ cameras: array(object({
24405
+ deviceId: number(),
24406
+ frames: number().int(),
24407
+ completeFrames: number().int()
24408
+ })).readonly()
24409
+ });
24410
+ /** An immutable dataset version, without its frame list. */
24411
+ var RetrainDatasetVersionSchema = object({
24412
+ id: string(),
24413
+ name: string(),
24414
+ createdAt: number(),
24415
+ selection: RetrainDatasetSelectionSchema,
24416
+ layout: RetrainExportLayoutSchema,
24417
+ completeOnly: boolean(),
24418
+ frameCount: number().int(),
24419
+ /** sha256 of what the frames taught when the version was frozen. */
24420
+ annotationHash: string(),
24421
+ /** The export manifest schema the version was cut under. */
24422
+ manifestSchema: string(),
24423
+ stats: RetrainDatasetStatsSchema
24424
+ });
24425
+ var CreateRetrainDatasetVersionResultSchema = discriminatedUnion("kind", [object({
24426
+ kind: literal("created"),
24427
+ version: RetrainDatasetVersionSchema
24428
+ }), object({
24429
+ kind: literal("refused"),
24430
+ reason: _enum([
24431
+ "empty-name",
24432
+ "duplicate-name",
24433
+ "no-frames"
24434
+ ])
24435
+ })]);
24372
24436
  /** The outcome of a lifecycle move owned by the retrain page. */
24373
24437
  var RetrainTransitionResultSchema = object({
24374
24438
  trackId: string(),
@@ -25158,6 +25222,36 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
25158
25222
  kind: "mutation",
25159
25223
  auth: "admin",
25160
25224
  timeoutMs: 60 * 6e4
25225
+ }), method(object({
25226
+ selection: RetrainDatasetSelectionSchema,
25227
+ completeOnly: boolean().optional()
25228
+ }), RetrainDatasetStatsSchema, {
25229
+ kind: "query",
25230
+ auth: "admin"
25231
+ }), method(object({
25232
+ name: string().max(120),
25233
+ selection: RetrainDatasetSelectionSchema,
25234
+ layout: RetrainExportLayoutSchema,
25235
+ completeOnly: boolean()
25236
+ }), CreateRetrainDatasetVersionResultSchema, {
25237
+ kind: "mutation",
25238
+ auth: "admin",
25239
+ timeoutMs: 12e4
25240
+ }), method(object({}), array(RetrainDatasetVersionSchema).readonly(), {
25241
+ kind: "query",
25242
+ auth: "admin"
25243
+ }), method(object({ id: string() }), object({ deleted: boolean() }), {
25244
+ kind: "mutation",
25245
+ auth: "admin"
25246
+ }), method(object({ id: string() }), object({
25247
+ found: boolean(),
25248
+ annotationHash: string(),
25249
+ matches: boolean(),
25250
+ missingFrames: number().int()
25251
+ }), {
25252
+ kind: "query",
25253
+ auth: "admin",
25254
+ timeoutMs: 12e4
25161
25255
  }), method(object({}), array(RetrainAssistProfileSchema).readonly(), {
25162
25256
  kind: "query",
25163
25257
  auth: "admin"
@@ -48961,6 +49055,12 @@ Object.freeze({
48961
49055
  addonId: null,
48962
49056
  access: "create"
48963
49057
  },
49058
+ "pipelineAnalytics.createRetrainDatasetVersion": {
49059
+ capName: "pipeline-analytics",
49060
+ capScope: "device",
49061
+ addonId: null,
49062
+ access: "create"
49063
+ },
48964
49064
  "pipelineAnalytics.deleteDeviceEvents": {
48965
49065
  capName: "pipeline-analytics",
48966
49066
  capScope: "device",
@@ -48973,6 +49073,12 @@ Object.freeze({
48973
49073
  addonId: null,
48974
49074
  access: "delete"
48975
49075
  },
49076
+ "pipelineAnalytics.deleteRetrainDatasetVersion": {
49077
+ capName: "pipeline-analytics",
49078
+ capScope: "device",
49079
+ addonId: null,
49080
+ access: "delete"
49081
+ },
48976
49082
  "pipelineAnalytics.deleteTracks": {
48977
49083
  capName: "pipeline-analytics",
48978
49084
  capScope: "device",
@@ -49195,6 +49301,12 @@ Object.freeze({
49195
49301
  addonId: null,
49196
49302
  access: "view"
49197
49303
  },
49304
+ "pipelineAnalytics.listRetrainDatasetVersions": {
49305
+ capName: "pipeline-analytics",
49306
+ capScope: "device",
49307
+ addonId: null,
49308
+ access: "view"
49309
+ },
49198
49310
  "pipelineAnalytics.listRetrainFrames": {
49199
49311
  capName: "pipeline-analytics",
49200
49312
  capScope: "device",
@@ -49237,6 +49349,12 @@ Object.freeze({
49237
49349
  addonId: null,
49238
49350
  access: "create"
49239
49351
  },
49352
+ "pipelineAnalytics.previewRetrainDataset": {
49353
+ capName: "pipeline-analytics",
49354
+ capScope: "device",
49355
+ addonId: null,
49356
+ access: "view"
49357
+ },
49240
49358
  "pipelineAnalytics.proposeRetrainAnnotations": {
49241
49359
  capName: "pipeline-analytics",
49242
49360
  capScope: "device",
@@ -49375,6 +49493,12 @@ Object.freeze({
49375
49493
  addonId: null,
49376
49494
  access: "create"
49377
49495
  },
49496
+ "pipelineAnalytics.verifyRetrainDatasetVersion": {
49497
+ capName: "pipeline-analytics",
49498
+ capScope: "device",
49499
+ addonId: null,
49500
+ access: "view"
49501
+ },
49378
49502
  "pipelineAnalytics.wipeAllAnalytics": {
49379
49503
  capName: "pipeline-analytics",
49380
49504
  capScope: "device",
@@ -167229,6 +167353,22 @@ function accessoryKindsFor(sliceProbed, sliceFlags, deviceCache) {
167229
167353
  const flags = resolveAccessoryProbeFlags(sliceProbed, sliceFlags, deviceCache);
167230
167354
  return ACCESSORY_FLAGS.filter(([flag]) => flags[flag] === true).map(([, kind]) => kind);
167231
167355
  }
167356
+ /**
167357
+ * The probe flags every probe-gated decision should read (PTZ, intercom,
167358
+ * doorbell, autotrack caps, the device features, accessory children):
167359
+ * the live slice once this session has probed; otherwise the slice
167360
+ * overlaid with the flags persisted by the last successful probe. A
167361
+ * battery camera asleep at boot skips its probe, so without the overlay
167362
+ * its probe-gated caps vanish across every provider restart. With no
167363
+ * persisted probe stamp, the slice is returned unchanged.
167364
+ */
167365
+ function effectiveProbeFlags(sliceProbed, sliceFlags, deviceCache) {
167366
+ if (sliceProbed || deviceCache?.probedAt === void 0) return sliceFlags;
167367
+ return {
167368
+ ...sliceFlags,
167369
+ ...resolveAccessoryProbeFlags(false, {}, deviceCache)
167370
+ };
167371
+ }
167232
167372
  //#endregion
167233
167373
  //#region src/metadata-populator.ts
167234
167374
  var EXTENDED_INFO_TAGS = [
@@ -169180,6 +169320,19 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
169180
169320
  * underlying state. The set is small (≤6 entries) so allocation cost
169181
169321
  * is negligible vs the staleness of caching.
169182
169322
  */
169323
+ /**
169324
+ * Probe flags with the persisted fallback: until this session has probed
169325
+ * (a battery camera asleep at boot skips `onProbe`), the flags of the last
169326
+ * successful probe stored in `deviceCache` stand in for the empty
169327
+ * `feature-probe` slice. Every probe-gated read — PTZ / intercom /
169328
+ * doorbell / autotrack registration, `features`, accessory children —
169329
+ * goes through here, so a sleeping camera keeps those caps across a
169330
+ * provider restart. `config` is read defensively: the base constructor
169331
+ * may read flags before this class's fields exist.
169332
+ */
169333
+ getProbeFlags() {
169334
+ return effectiveProbeFlags(this.hasProbed(), super.getProbeFlags(), this.config?.get("deviceCache"));
169335
+ }
169183
169336
  get features() {
169184
169337
  return deriveReolinkCameraFeatures({
169185
169338
  probe: this.getProbeFlags(),
package/dist/addon.mjs CHANGED
@@ -5405,7 +5405,7 @@ var ZodIssueCode = {
5405
5405
  var ZodFirstPartyTypeKind;
5406
5406
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5407
5407
  //#endregion
5408
- //#region ../types/dist/sleep-Cr5YOk3m.mjs
5408
+ //#region ../types/dist/sleep-DujUvOcb.mjs
5409
5409
  /**
5410
5410
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5411
5411
  * window to float samples (D455).
@@ -24194,6 +24194,9 @@ var RetrainExportFilterSchema = object({
24194
24194
  frameIds: array(string()).max(2e4).optional(),
24195
24195
  /** Only frames in at least one of these named collections. */
24196
24196
  collectionIds: array(string()).max(200).optional(),
24197
+ /** Exactly the frames of this dataset version (and its completeOnly). An
24198
+ * unknown id selects nothing. */
24199
+ datasetVersionId: string().optional(),
24197
24200
  batchId: string().optional(),
24198
24201
  /** Only frames the operator marked complete (all subjects boxed). */
24199
24202
  completeOnly: boolean().optional()
@@ -24361,6 +24364,67 @@ var RetrainLlmAssistResultSchema = discriminatedUnion("kind", [object({
24361
24364
  ]),
24362
24365
  detail: string().optional()
24363
24366
  })]);
24367
+ /** What a dataset version is cut from. Every field narrows. */
24368
+ var RetrainDatasetSelectionSchema = object({
24369
+ deviceIds: array(number()).readonly().optional(),
24370
+ collectionIds: array(string()).max(200).readonly().optional(),
24371
+ frameIds: array(string()).max(2e4).readonly().optional()
24372
+ });
24373
+ /** The counts a dataset is judged by. */
24374
+ var RetrainDatasetStatsSchema = object({
24375
+ frames: number().int(),
24376
+ completeFrames: number().int(),
24377
+ /** `completeFrames / frames`, 0..1. */
24378
+ completeness: number(),
24379
+ /** Boxes to learn (model errors excluded). */
24380
+ subjects: number().int(),
24381
+ modelErrors: number().int(),
24382
+ /** Complete frames with no subject. */
24383
+ hardNegatives: number().int(),
24384
+ /** Subjects per class × camera × day/night. */
24385
+ cells: array(object({
24386
+ macroClass: string(),
24387
+ deviceId: number(),
24388
+ lighting: _enum([
24389
+ "day",
24390
+ "night",
24391
+ "unknown"
24392
+ ]),
24393
+ subjects: number().int(),
24394
+ frames: number().int()
24395
+ })).readonly(),
24396
+ cameras: array(object({
24397
+ deviceId: number(),
24398
+ frames: number().int(),
24399
+ completeFrames: number().int()
24400
+ })).readonly()
24401
+ });
24402
+ /** An immutable dataset version, without its frame list. */
24403
+ var RetrainDatasetVersionSchema = object({
24404
+ id: string(),
24405
+ name: string(),
24406
+ createdAt: number(),
24407
+ selection: RetrainDatasetSelectionSchema,
24408
+ layout: RetrainExportLayoutSchema,
24409
+ completeOnly: boolean(),
24410
+ frameCount: number().int(),
24411
+ /** sha256 of what the frames taught when the version was frozen. */
24412
+ annotationHash: string(),
24413
+ /** The export manifest schema the version was cut under. */
24414
+ manifestSchema: string(),
24415
+ stats: RetrainDatasetStatsSchema
24416
+ });
24417
+ var CreateRetrainDatasetVersionResultSchema = discriminatedUnion("kind", [object({
24418
+ kind: literal("created"),
24419
+ version: RetrainDatasetVersionSchema
24420
+ }), object({
24421
+ kind: literal("refused"),
24422
+ reason: _enum([
24423
+ "empty-name",
24424
+ "duplicate-name",
24425
+ "no-frames"
24426
+ ])
24427
+ })]);
24364
24428
  /** The outcome of a lifecycle move owned by the retrain page. */
24365
24429
  var RetrainTransitionResultSchema = object({
24366
24430
  trackId: string(),
@@ -25150,6 +25214,36 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
25150
25214
  kind: "mutation",
25151
25215
  auth: "admin",
25152
25216
  timeoutMs: 60 * 6e4
25217
+ }), method(object({
25218
+ selection: RetrainDatasetSelectionSchema,
25219
+ completeOnly: boolean().optional()
25220
+ }), RetrainDatasetStatsSchema, {
25221
+ kind: "query",
25222
+ auth: "admin"
25223
+ }), method(object({
25224
+ name: string().max(120),
25225
+ selection: RetrainDatasetSelectionSchema,
25226
+ layout: RetrainExportLayoutSchema,
25227
+ completeOnly: boolean()
25228
+ }), CreateRetrainDatasetVersionResultSchema, {
25229
+ kind: "mutation",
25230
+ auth: "admin",
25231
+ timeoutMs: 12e4
25232
+ }), method(object({}), array(RetrainDatasetVersionSchema).readonly(), {
25233
+ kind: "query",
25234
+ auth: "admin"
25235
+ }), method(object({ id: string() }), object({ deleted: boolean() }), {
25236
+ kind: "mutation",
25237
+ auth: "admin"
25238
+ }), method(object({ id: string() }), object({
25239
+ found: boolean(),
25240
+ annotationHash: string(),
25241
+ matches: boolean(),
25242
+ missingFrames: number().int()
25243
+ }), {
25244
+ kind: "query",
25245
+ auth: "admin",
25246
+ timeoutMs: 12e4
25153
25247
  }), method(object({}), array(RetrainAssistProfileSchema).readonly(), {
25154
25248
  kind: "query",
25155
25249
  auth: "admin"
@@ -48953,6 +49047,12 @@ Object.freeze({
48953
49047
  addonId: null,
48954
49048
  access: "create"
48955
49049
  },
49050
+ "pipelineAnalytics.createRetrainDatasetVersion": {
49051
+ capName: "pipeline-analytics",
49052
+ capScope: "device",
49053
+ addonId: null,
49054
+ access: "create"
49055
+ },
48956
49056
  "pipelineAnalytics.deleteDeviceEvents": {
48957
49057
  capName: "pipeline-analytics",
48958
49058
  capScope: "device",
@@ -48965,6 +49065,12 @@ Object.freeze({
48965
49065
  addonId: null,
48966
49066
  access: "delete"
48967
49067
  },
49068
+ "pipelineAnalytics.deleteRetrainDatasetVersion": {
49069
+ capName: "pipeline-analytics",
49070
+ capScope: "device",
49071
+ addonId: null,
49072
+ access: "delete"
49073
+ },
48968
49074
  "pipelineAnalytics.deleteTracks": {
48969
49075
  capName: "pipeline-analytics",
48970
49076
  capScope: "device",
@@ -49187,6 +49293,12 @@ Object.freeze({
49187
49293
  addonId: null,
49188
49294
  access: "view"
49189
49295
  },
49296
+ "pipelineAnalytics.listRetrainDatasetVersions": {
49297
+ capName: "pipeline-analytics",
49298
+ capScope: "device",
49299
+ addonId: null,
49300
+ access: "view"
49301
+ },
49190
49302
  "pipelineAnalytics.listRetrainFrames": {
49191
49303
  capName: "pipeline-analytics",
49192
49304
  capScope: "device",
@@ -49229,6 +49341,12 @@ Object.freeze({
49229
49341
  addonId: null,
49230
49342
  access: "create"
49231
49343
  },
49344
+ "pipelineAnalytics.previewRetrainDataset": {
49345
+ capName: "pipeline-analytics",
49346
+ capScope: "device",
49347
+ addonId: null,
49348
+ access: "view"
49349
+ },
49232
49350
  "pipelineAnalytics.proposeRetrainAnnotations": {
49233
49351
  capName: "pipeline-analytics",
49234
49352
  capScope: "device",
@@ -49367,6 +49485,12 @@ Object.freeze({
49367
49485
  addonId: null,
49368
49486
  access: "create"
49369
49487
  },
49488
+ "pipelineAnalytics.verifyRetrainDatasetVersion": {
49489
+ capName: "pipeline-analytics",
49490
+ capScope: "device",
49491
+ addonId: null,
49492
+ access: "view"
49493
+ },
49370
49494
  "pipelineAnalytics.wipeAllAnalytics": {
49371
49495
  capName: "pipeline-analytics",
49372
49496
  capScope: "device",
@@ -167221,6 +167345,22 @@ function accessoryKindsFor(sliceProbed, sliceFlags, deviceCache) {
167221
167345
  const flags = resolveAccessoryProbeFlags(sliceProbed, sliceFlags, deviceCache);
167222
167346
  return ACCESSORY_FLAGS.filter(([flag]) => flags[flag] === true).map(([, kind]) => kind);
167223
167347
  }
167348
+ /**
167349
+ * The probe flags every probe-gated decision should read (PTZ, intercom,
167350
+ * doorbell, autotrack caps, the device features, accessory children):
167351
+ * the live slice once this session has probed; otherwise the slice
167352
+ * overlaid with the flags persisted by the last successful probe. A
167353
+ * battery camera asleep at boot skips its probe, so without the overlay
167354
+ * its probe-gated caps vanish across every provider restart. With no
167355
+ * persisted probe stamp, the slice is returned unchanged.
167356
+ */
167357
+ function effectiveProbeFlags(sliceProbed, sliceFlags, deviceCache) {
167358
+ if (sliceProbed || deviceCache?.probedAt === void 0) return sliceFlags;
167359
+ return {
167360
+ ...sliceFlags,
167361
+ ...resolveAccessoryProbeFlags(false, {}, deviceCache)
167362
+ };
167363
+ }
167224
167364
  //#endregion
167225
167365
  //#region src/metadata-populator.ts
167226
167366
  var EXTENDED_INFO_TAGS = [
@@ -169172,6 +169312,19 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
169172
169312
  * underlying state. The set is small (≤6 entries) so allocation cost
169173
169313
  * is negligible vs the staleness of caching.
169174
169314
  */
169315
+ /**
169316
+ * Probe flags with the persisted fallback: until this session has probed
169317
+ * (a battery camera asleep at boot skips `onProbe`), the flags of the last
169318
+ * successful probe stored in `deviceCache` stand in for the empty
169319
+ * `feature-probe` slice. Every probe-gated read — PTZ / intercom /
169320
+ * doorbell / autotrack registration, `features`, accessory children —
169321
+ * goes through here, so a sleeping camera keeps those caps across a
169322
+ * provider restart. `config` is read defensively: the base constructor
169323
+ * may read flags before this class's fields exist.
169324
+ */
169325
+ getProbeFlags() {
169326
+ return effectiveProbeFlags(this.hasProbed(), super.getProbeFlags(), this.config?.get("deviceCache"));
169327
+ }
169175
169328
  get features() {
169176
169329
  return deriveReolinkCameraFeatures({
169177
169330
  probe: this.getProbeFlags(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-reolink",
3
- "version": "1.2.179",
3
+ "version": "1.2.180",
4
4
  "description": "Reolink camera device provider addon for CamStack — native Baichuan protocol",
5
5
  "keywords": [
6
6
  "camstack",