@camstack/addon-decoder-nodeav 1.2.41 → 1.2.43

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.
Files changed (3) hide show
  1. package/dist/index.js +127 -19
  2. package/dist/index.mjs +127 -19
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -8039,18 +8039,61 @@ var RelocateFootageInputSchema = object({
8039
8039
  * `RecordingConfig.enabled` or camera wrapper bindings. */
8040
8040
  var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
8041
8041
  var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
8042
+ /**
8043
+ * What a `relocateMedia` pass DOES. One engine, three passes — never a second
8044
+ * mover (the engine already walks both collections with a timestamp cursor and
8045
+ * already has a stamp-without-copy path).
8046
+ *
8047
+ * - `move` — the default and the historical behaviour: event-media and
8048
+ * retrain blobs move to `toLocationId` and their rows are
8049
+ * stamped. The enrolled gallery is skipped (D197).
8050
+ * - `seal` — ROWS ONLY, no bytes. Every row whose `locationId` is NULL is
8051
+ * stamped with `toLocationId`. `toLocationId` here is the id the
8052
+ * bytes ALREADY sit on — today's `eventMedia` default — because
8053
+ * a NULL row means "wherever `eventMedia` points *now*", and the
8054
+ * instant a repoint moves that pointer the row reads from the
8055
+ * new disk while its bytes are on the old one.
8056
+ * - `gallery` — the inverse selection of `move`: ONLY the retention-exempt
8057
+ * (enrolled-gallery) rows, which `move` deliberately skips.
8058
+ * `galleryMedia` is `cardinality: 'single'`, so this pass can
8059
+ * never run beside a live second location: it is stop-the-world
8060
+ * by construction, which is acceptable only because the gallery
8061
+ * is a few KB per enrolled sample.
8062
+ */
8063
+ var MediaRelocateModeSchema = _enum([
8064
+ "move",
8065
+ "seal",
8066
+ "gallery"
8067
+ ]);
8042
8068
  var RelocateMediaInputSchema = object({
8043
8069
  toLocationId: string(),
8044
- throttleMbps: number().min(1).max(1e3).optional()
8070
+ throttleMbps: number().min(1).max(1e3).optional(),
8071
+ /** Omitted = `move`, the pre-existing behaviour. */
8072
+ mode: MediaRelocateModeSchema.optional()
8073
+ });
8074
+ /** How many rows still carry NO `locationId` — the population a repoint would
8075
+ * silently re-aim at a disk that does not hold their bytes. Zero is the only
8076
+ * value that permits a non-blocking `eventMedia` cutover. */
8077
+ var UnstampedEventMediaCountSchema = object({
8078
+ media: number().int().nonnegative(),
8079
+ retrainFrames: number().int().nonnegative(),
8080
+ total: number().int().nonnegative()
8045
8081
  });
8046
8082
  var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
8047
- /** The independently selectable logical storage classes. `recordings`
8048
- * encompasses the high and mid segment profiles; `recordingsLow` is low
8049
- * segments; `eventMedia` is post-analysis blobs. */
8083
+ /** The independently selectable logical storage classes — every class
8084
+ * `storage.listLocationDeclarations` reports, so an operator never meets a
8085
+ * Zod enum error where they should meet an explanation.
8086
+ *
8087
+ * `recordings` encompasses the high and mid segment profiles; `recordingsLow`
8088
+ * is low segments; `eventMedia` is post-analysis blobs; `galleryMedia` is the
8089
+ * enrolled gallery; `backups` is the system backup archive. The last two have
8090
+ * their own rules — see {@link StorageMigrationFindingCodeSchema}. */
8050
8091
  var StorageMigrationClassSchema = _enum([
8051
8092
  "recordings",
8052
8093
  "recordingsLow",
8053
- "eventMedia"
8094
+ "eventMedia",
8095
+ "backups",
8096
+ "galleryMedia"
8054
8097
  ]);
8055
8098
  /** A destination is always an existing, fully-qualified location id. The
8056
8099
  * migration API intentionally never changes a source location's `basePath`:
@@ -8058,20 +8101,56 @@ var StorageMigrationClassSchema = _enum([
8058
8101
  var StorageMigrationDestinationsSchema = object({
8059
8102
  recordings: string().min(1).optional(),
8060
8103
  recordingsLow: string().min(1).optional(),
8061
- eventMedia: string().min(1).optional()
8104
+ eventMedia: string().min(1).optional(),
8105
+ backups: string().min(1).optional(),
8106
+ galleryMedia: string().min(1).optional()
8062
8107
  }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
8108
+ /**
8109
+ * How a migration sequences the cutover against the byte move.
8110
+ *
8111
+ * - `blocking` — the historical order: pause, move every byte, repoint,
8112
+ * resume. Recording is stopped for the whole move. Right
8113
+ * for a small or a cold class, and the only legal mode for
8114
+ * a `cardinality: 'single'` class.
8115
+ * - `nonBlocking` — repoint FIRST, drain behind: seal, pause, repoint,
8116
+ * refresh, resume, then move the past with everything
8117
+ * running. The pause is three bounded instants (a detach +
8118
+ * attach round, a write-gate drain, a lease) instead of one
8119
+ * bounded by bytes. 1.09 TB at 7–14 MB/s is thirty hours of
8120
+ * stopped recording under `blocking`; the same move is
8121
+ * seconds of stopped recording under `nonBlocking`.
8122
+ *
8123
+ * The mode is on the JOB, not only on the input, because `status` is where an
8124
+ * operator finds out which one is running.
8125
+ */
8126
+ var StorageMigrationModeSchema = _enum(["blocking", "nonBlocking"]);
8063
8127
  /** Shared input for planning and starting an orchestrated storage migration. */
8064
8128
  var StorageMigrationInputSchema = object({
8065
8129
  destinations: StorageMigrationDestinationsSchema,
8066
- throttleMbps: number().min(1).max(1e3).optional()
8130
+ throttleMbps: number().min(1).max(1e3).optional(),
8131
+ /** Omitted = `blocking`, which stays the default. */
8132
+ mode: StorageMigrationModeSchema.optional()
8067
8133
  });
8068
- /** The durable coordinator state machine. The only phase that changes default
8069
- * locations is `repointing`, after every selected mover has completed and been
8070
- * verified. */
8134
+ /**
8135
+ * The durable coordinator state machine.
8136
+ *
8137
+ * `blocking`:
8138
+ * planning → pausing → moving → verifying → repointing → refreshing → resuming → done
8139
+ *
8140
+ * `nonBlocking`:
8141
+ * planning → sealing → pausing → repointing → refreshing → resuming → draining → verifying → done
8142
+ *
8143
+ * Same phases, different order plus two new ones — not a second mover.
8144
+ * `sealing` closes the `eventMedia` NULL-row hole BEFORE anything is paused;
8145
+ * `draining` runs the same movers UNLEASED, after every writer is back up.
8146
+ * `repointing` is still the only phase that changes a default location.
8147
+ */
8071
8148
  var StorageMigrationPhaseSchema = _enum([
8072
8149
  "planning",
8150
+ "sealing",
8073
8151
  "pausing",
8074
8152
  "moving",
8153
+ "draining",
8075
8154
  "verifying",
8076
8155
  "repointing",
8077
8156
  "refreshing",
@@ -8096,6 +8175,9 @@ var StorageMigrationMoveSchema = object({
8096
8175
  var StorageMigrationJobSchema = object({
8097
8176
  jobId: string(),
8098
8177
  phase: StorageMigrationPhaseSchema,
8178
+ /** Which order this job is running. `status` is the only place an operator
8179
+ * can tell a seconds-long cutover from a thirty-hour one. */
8180
+ mode: StorageMigrationModeSchema,
8099
8181
  destinations: StorageMigrationDestinationsSchema,
8100
8182
  throttleMbps: number(),
8101
8183
  moves: array(StorageMigrationMoveSchema),
@@ -8108,13 +8190,30 @@ var StorageMigrationJobSchema = object({
8108
8190
  finishedAt: number().nullable(),
8109
8191
  error: string().nullable()
8110
8192
  });
8193
+ var StorageMigrationFindingSchema = object({
8194
+ code: _enum([
8195
+ "sharesDeviceWithSource",
8196
+ "deviceIdentityUnknown",
8197
+ "unstampedEventMediaRows",
8198
+ "blockingOnly",
8199
+ "noMover"
8200
+ ]),
8201
+ storageClass: StorageMigrationClassSchema,
8202
+ /** Human-readable, already carrying the ids and counts. */
8203
+ message: string()
8204
+ });
8111
8205
  var StorageMigrationPlanSchema = object({
8112
8206
  destinations: StorageMigrationDestinationsSchema,
8207
+ /** The mode this plan was built for. A plan is only valid for its mode: the
8208
+ * `eventMedia` seal gate and the single-cardinality refusal both depend on
8209
+ * it. */
8210
+ mode: StorageMigrationModeSchema,
8113
8211
  moves: array(object({
8114
8212
  storageClass: StorageMigrationClassSchema,
8115
8213
  fromLocationId: string(),
8116
8214
  toLocationId: string()
8117
- }))
8215
+ })),
8216
+ findings: array(StorageMigrationFindingSchema)
8118
8217
  });
8119
8218
  /**
8120
8219
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -18755,7 +18854,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
18755
18854
  }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
18756
18855
  kind: "mutation",
18757
18856
  auth: "admin"
18758
- }), method(object({}), array(RelocateJobSchema).readonly(), {
18857
+ }), method(object({}), UnstampedEventMediaCountSchema, { auth: "admin" }), method(object({}), array(RelocateJobSchema).readonly(), {
18759
18858
  kind: "query",
18760
18859
  auth: "admin"
18761
18860
  }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
@@ -20662,7 +20761,10 @@ method(object({
20662
20761
  }), StorageLocationSchema, {
20663
20762
  kind: "mutation",
20664
20763
  auth: "admin"
20665
- }), method(object({ id: string() }), _void(), {
20764
+ }), method(object({
20765
+ id: string(),
20766
+ force: boolean().optional()
20767
+ }), _void(), {
20666
20768
  kind: "mutation",
20667
20769
  auth: "admin"
20668
20770
  }), method(object({ id: string() }), object({
@@ -23748,23 +23850,23 @@ DeviceType.Camera, method(object({ deviceId: number() }), object({
23748
23850
  sdpOffer: string()
23749
23851
  }), {
23750
23852
  kind: "mutation",
23751
- auth: "admin"
23853
+ auth: "protected"
23752
23854
  }), method(object({
23753
23855
  deviceId: number(),
23754
23856
  sessionId: string(),
23755
23857
  sdpAnswer: string()
23756
23858
  }), _void(), {
23757
23859
  kind: "mutation",
23758
- auth: "admin"
23860
+ auth: "protected"
23759
23861
  }), method(object({
23760
23862
  deviceId: number(),
23761
23863
  sessionId: string()
23762
23864
  }), _void(), {
23763
23865
  kind: "mutation",
23764
- auth: "admin"
23866
+ auth: "protected"
23765
23867
  }), method(object({ deviceId: number() }), object({ sessionId: string() }), {
23766
23868
  kind: "mutation",
23767
- auth: "admin"
23869
+ auth: "protected"
23768
23870
  }), method(object({
23769
23871
  deviceId: number(),
23770
23872
  /** Audio bytes for ONE frame, base64-encoded so the payload
@@ -23783,10 +23885,10 @@ DeviceType.Camera, method(object({ deviceId: number() }), object({
23783
23885
  sequenceNumber: number().int()
23784
23886
  }), object({ accepted: boolean() }), {
23785
23887
  kind: "mutation",
23786
- auth: "admin"
23888
+ auth: "protected"
23787
23889
  }), method(object({ deviceId: number() }), _void(), {
23788
23890
  kind: "mutation",
23789
- auth: "admin"
23891
+ auth: "protected"
23790
23892
  }), object({
23791
23893
  deviceId: number(),
23792
23894
  status: IntercomStatusSchema
@@ -31135,6 +31237,12 @@ Object.freeze({
31135
31237
  addonId: null,
31136
31238
  access: "create"
31137
31239
  },
31240
+ "pipelineAnalytics.countUnstampedEventMedia": {
31241
+ capName: "pipeline-analytics",
31242
+ capScope: "device",
31243
+ addonId: null,
31244
+ access: "view"
31245
+ },
31138
31246
  "pipelineAnalytics.deleteDeviceEvents": {
31139
31247
  capName: "pipeline-analytics",
31140
31248
  capScope: "device",
package/dist/index.mjs CHANGED
@@ -8035,18 +8035,61 @@ var RelocateFootageInputSchema = object({
8035
8035
  * `RecordingConfig.enabled` or camera wrapper bindings. */
8036
8036
  var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
8037
8037
  var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
8038
+ /**
8039
+ * What a `relocateMedia` pass DOES. One engine, three passes — never a second
8040
+ * mover (the engine already walks both collections with a timestamp cursor and
8041
+ * already has a stamp-without-copy path).
8042
+ *
8043
+ * - `move` — the default and the historical behaviour: event-media and
8044
+ * retrain blobs move to `toLocationId` and their rows are
8045
+ * stamped. The enrolled gallery is skipped (D197).
8046
+ * - `seal` — ROWS ONLY, no bytes. Every row whose `locationId` is NULL is
8047
+ * stamped with `toLocationId`. `toLocationId` here is the id the
8048
+ * bytes ALREADY sit on — today's `eventMedia` default — because
8049
+ * a NULL row means "wherever `eventMedia` points *now*", and the
8050
+ * instant a repoint moves that pointer the row reads from the
8051
+ * new disk while its bytes are on the old one.
8052
+ * - `gallery` — the inverse selection of `move`: ONLY the retention-exempt
8053
+ * (enrolled-gallery) rows, which `move` deliberately skips.
8054
+ * `galleryMedia` is `cardinality: 'single'`, so this pass can
8055
+ * never run beside a live second location: it is stop-the-world
8056
+ * by construction, which is acceptable only because the gallery
8057
+ * is a few KB per enrolled sample.
8058
+ */
8059
+ var MediaRelocateModeSchema = _enum([
8060
+ "move",
8061
+ "seal",
8062
+ "gallery"
8063
+ ]);
8038
8064
  var RelocateMediaInputSchema = object({
8039
8065
  toLocationId: string(),
8040
- throttleMbps: number().min(1).max(1e3).optional()
8066
+ throttleMbps: number().min(1).max(1e3).optional(),
8067
+ /** Omitted = `move`, the pre-existing behaviour. */
8068
+ mode: MediaRelocateModeSchema.optional()
8069
+ });
8070
+ /** How many rows still carry NO `locationId` — the population a repoint would
8071
+ * silently re-aim at a disk that does not hold their bytes. Zero is the only
8072
+ * value that permits a non-blocking `eventMedia` cutover. */
8073
+ var UnstampedEventMediaCountSchema = object({
8074
+ media: number().int().nonnegative(),
8075
+ retrainFrames: number().int().nonnegative(),
8076
+ total: number().int().nonnegative()
8041
8077
  });
8042
8078
  var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
8043
- /** The independently selectable logical storage classes. `recordings`
8044
- * encompasses the high and mid segment profiles; `recordingsLow` is low
8045
- * segments; `eventMedia` is post-analysis blobs. */
8079
+ /** The independently selectable logical storage classes — every class
8080
+ * `storage.listLocationDeclarations` reports, so an operator never meets a
8081
+ * Zod enum error where they should meet an explanation.
8082
+ *
8083
+ * `recordings` encompasses the high and mid segment profiles; `recordingsLow`
8084
+ * is low segments; `eventMedia` is post-analysis blobs; `galleryMedia` is the
8085
+ * enrolled gallery; `backups` is the system backup archive. The last two have
8086
+ * their own rules — see {@link StorageMigrationFindingCodeSchema}. */
8046
8087
  var StorageMigrationClassSchema = _enum([
8047
8088
  "recordings",
8048
8089
  "recordingsLow",
8049
- "eventMedia"
8090
+ "eventMedia",
8091
+ "backups",
8092
+ "galleryMedia"
8050
8093
  ]);
8051
8094
  /** A destination is always an existing, fully-qualified location id. The
8052
8095
  * migration API intentionally never changes a source location's `basePath`:
@@ -8054,20 +8097,56 @@ var StorageMigrationClassSchema = _enum([
8054
8097
  var StorageMigrationDestinationsSchema = object({
8055
8098
  recordings: string().min(1).optional(),
8056
8099
  recordingsLow: string().min(1).optional(),
8057
- eventMedia: string().min(1).optional()
8100
+ eventMedia: string().min(1).optional(),
8101
+ backups: string().min(1).optional(),
8102
+ galleryMedia: string().min(1).optional()
8058
8103
  }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
8104
+ /**
8105
+ * How a migration sequences the cutover against the byte move.
8106
+ *
8107
+ * - `blocking` — the historical order: pause, move every byte, repoint,
8108
+ * resume. Recording is stopped for the whole move. Right
8109
+ * for a small or a cold class, and the only legal mode for
8110
+ * a `cardinality: 'single'` class.
8111
+ * - `nonBlocking` — repoint FIRST, drain behind: seal, pause, repoint,
8112
+ * refresh, resume, then move the past with everything
8113
+ * running. The pause is three bounded instants (a detach +
8114
+ * attach round, a write-gate drain, a lease) instead of one
8115
+ * bounded by bytes. 1.09 TB at 7–14 MB/s is thirty hours of
8116
+ * stopped recording under `blocking`; the same move is
8117
+ * seconds of stopped recording under `nonBlocking`.
8118
+ *
8119
+ * The mode is on the JOB, not only on the input, because `status` is where an
8120
+ * operator finds out which one is running.
8121
+ */
8122
+ var StorageMigrationModeSchema = _enum(["blocking", "nonBlocking"]);
8059
8123
  /** Shared input for planning and starting an orchestrated storage migration. */
8060
8124
  var StorageMigrationInputSchema = object({
8061
8125
  destinations: StorageMigrationDestinationsSchema,
8062
- throttleMbps: number().min(1).max(1e3).optional()
8126
+ throttleMbps: number().min(1).max(1e3).optional(),
8127
+ /** Omitted = `blocking`, which stays the default. */
8128
+ mode: StorageMigrationModeSchema.optional()
8063
8129
  });
8064
- /** The durable coordinator state machine. The only phase that changes default
8065
- * locations is `repointing`, after every selected mover has completed and been
8066
- * verified. */
8130
+ /**
8131
+ * The durable coordinator state machine.
8132
+ *
8133
+ * `blocking`:
8134
+ * planning → pausing → moving → verifying → repointing → refreshing → resuming → done
8135
+ *
8136
+ * `nonBlocking`:
8137
+ * planning → sealing → pausing → repointing → refreshing → resuming → draining → verifying → done
8138
+ *
8139
+ * Same phases, different order plus two new ones — not a second mover.
8140
+ * `sealing` closes the `eventMedia` NULL-row hole BEFORE anything is paused;
8141
+ * `draining` runs the same movers UNLEASED, after every writer is back up.
8142
+ * `repointing` is still the only phase that changes a default location.
8143
+ */
8067
8144
  var StorageMigrationPhaseSchema = _enum([
8068
8145
  "planning",
8146
+ "sealing",
8069
8147
  "pausing",
8070
8148
  "moving",
8149
+ "draining",
8071
8150
  "verifying",
8072
8151
  "repointing",
8073
8152
  "refreshing",
@@ -8092,6 +8171,9 @@ var StorageMigrationMoveSchema = object({
8092
8171
  var StorageMigrationJobSchema = object({
8093
8172
  jobId: string(),
8094
8173
  phase: StorageMigrationPhaseSchema,
8174
+ /** Which order this job is running. `status` is the only place an operator
8175
+ * can tell a seconds-long cutover from a thirty-hour one. */
8176
+ mode: StorageMigrationModeSchema,
8095
8177
  destinations: StorageMigrationDestinationsSchema,
8096
8178
  throttleMbps: number(),
8097
8179
  moves: array(StorageMigrationMoveSchema),
@@ -8104,13 +8186,30 @@ var StorageMigrationJobSchema = object({
8104
8186
  finishedAt: number().nullable(),
8105
8187
  error: string().nullable()
8106
8188
  });
8189
+ var StorageMigrationFindingSchema = object({
8190
+ code: _enum([
8191
+ "sharesDeviceWithSource",
8192
+ "deviceIdentityUnknown",
8193
+ "unstampedEventMediaRows",
8194
+ "blockingOnly",
8195
+ "noMover"
8196
+ ]),
8197
+ storageClass: StorageMigrationClassSchema,
8198
+ /** Human-readable, already carrying the ids and counts. */
8199
+ message: string()
8200
+ });
8107
8201
  var StorageMigrationPlanSchema = object({
8108
8202
  destinations: StorageMigrationDestinationsSchema,
8203
+ /** The mode this plan was built for. A plan is only valid for its mode: the
8204
+ * `eventMedia` seal gate and the single-cardinality refusal both depend on
8205
+ * it. */
8206
+ mode: StorageMigrationModeSchema,
8109
8207
  moves: array(object({
8110
8208
  storageClass: StorageMigrationClassSchema,
8111
8209
  fromLocationId: string(),
8112
8210
  toLocationId: string()
8113
- }))
8211
+ })),
8212
+ findings: array(StorageMigrationFindingSchema)
8114
8213
  });
8115
8214
  /**
8116
8215
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -18751,7 +18850,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
18751
18850
  }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
18752
18851
  kind: "mutation",
18753
18852
  auth: "admin"
18754
- }), method(object({}), array(RelocateJobSchema).readonly(), {
18853
+ }), method(object({}), UnstampedEventMediaCountSchema, { auth: "admin" }), method(object({}), array(RelocateJobSchema).readonly(), {
18755
18854
  kind: "query",
18756
18855
  auth: "admin"
18757
18856
  }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
@@ -20658,7 +20757,10 @@ method(object({
20658
20757
  }), StorageLocationSchema, {
20659
20758
  kind: "mutation",
20660
20759
  auth: "admin"
20661
- }), method(object({ id: string() }), _void(), {
20760
+ }), method(object({
20761
+ id: string(),
20762
+ force: boolean().optional()
20763
+ }), _void(), {
20662
20764
  kind: "mutation",
20663
20765
  auth: "admin"
20664
20766
  }), method(object({ id: string() }), object({
@@ -23744,23 +23846,23 @@ DeviceType.Camera, method(object({ deviceId: number() }), object({
23744
23846
  sdpOffer: string()
23745
23847
  }), {
23746
23848
  kind: "mutation",
23747
- auth: "admin"
23849
+ auth: "protected"
23748
23850
  }), method(object({
23749
23851
  deviceId: number(),
23750
23852
  sessionId: string(),
23751
23853
  sdpAnswer: string()
23752
23854
  }), _void(), {
23753
23855
  kind: "mutation",
23754
- auth: "admin"
23856
+ auth: "protected"
23755
23857
  }), method(object({
23756
23858
  deviceId: number(),
23757
23859
  sessionId: string()
23758
23860
  }), _void(), {
23759
23861
  kind: "mutation",
23760
- auth: "admin"
23862
+ auth: "protected"
23761
23863
  }), method(object({ deviceId: number() }), object({ sessionId: string() }), {
23762
23864
  kind: "mutation",
23763
- auth: "admin"
23865
+ auth: "protected"
23764
23866
  }), method(object({
23765
23867
  deviceId: number(),
23766
23868
  /** Audio bytes for ONE frame, base64-encoded so the payload
@@ -23779,10 +23881,10 @@ DeviceType.Camera, method(object({ deviceId: number() }), object({
23779
23881
  sequenceNumber: number().int()
23780
23882
  }), object({ accepted: boolean() }), {
23781
23883
  kind: "mutation",
23782
- auth: "admin"
23884
+ auth: "protected"
23783
23885
  }), method(object({ deviceId: number() }), _void(), {
23784
23886
  kind: "mutation",
23785
- auth: "admin"
23887
+ auth: "protected"
23786
23888
  }), object({
23787
23889
  deviceId: number(),
23788
23890
  status: IntercomStatusSchema
@@ -31131,6 +31233,12 @@ Object.freeze({
31131
31233
  addonId: null,
31132
31234
  access: "create"
31133
31235
  },
31236
+ "pipelineAnalytics.countUnstampedEventMedia": {
31237
+ capName: "pipeline-analytics",
31238
+ capScope: "device",
31239
+ addonId: null,
31240
+ access: "view"
31241
+ },
31134
31242
  "pipelineAnalytics.deleteDeviceEvents": {
31135
31243
  capName: "pipeline-analytics",
31136
31244
  capScope: "device",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-decoder-nodeav",
3
- "version": "1.2.41",
3
+ "version": "1.2.43",
4
4
  "description": "Standalone in-process node-av decoder addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",