@camstack/addon-provider-petkit 0.2.92 → 0.2.94

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
@@ -17589,6 +17589,7 @@ var NcSystemEventKindSchema = _enum([
17589
17589
  "addon-crash-loop",
17590
17590
  "addon-update-available",
17591
17591
  "server-update-available",
17592
+ "wrapper-update-available",
17592
17593
  "alarm-triggered",
17593
17594
  "alarm-armed",
17594
17595
  "alarm-disarmed",
@@ -21034,7 +21035,17 @@ var EventDensityBucketSchema = object({
21034
21035
  bucketStart: number(),
21035
21036
  motion: number().int(),
21036
21037
  object: number().int(),
21037
- audio: number().int()
21038
+ audio: number().int(),
21039
+ /**
21040
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
21041
+ * as opposed to `audio`, which is their COUNT (D431).
21042
+ *
21043
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
21044
+ * measured", which is not the same claim as silence, and a lane that cannot
21045
+ * tell them apart paints a quiet hour at full scale — which is exactly what
21046
+ * the count-on-a-level-meter did.
21047
+ */
21048
+ audioDbfs: number().optional()
21038
21049
  });
21039
21050
  /**
21040
21051
  * One camera's row in a `getEventDensityBatch` answer.
@@ -23135,6 +23146,53 @@ var ImageContractSchema = object({
23135
23146
  /** One operator-grade sentence: this node runs image X; the contract says Y. */
23136
23147
  message: string()
23137
23148
  });
23149
+ /**
23150
+ * The shell verdict (see {@link WrapperKindSchema}) with the proofs that
23151
+ * produced it.
23152
+ *
23153
+ * There is deliberately NO `canSelfUpdate` and no apply action: a wrapper
23154
+ * update is an ANNOUNCEMENT. The notification body carries the exact command
23155
+ * for a `docker` shell and says the app restarts into the new build for
23156
+ * `electron`, and that sentence is chosen from `kind` alone — a boolean
23157
+ * nothing reads is the defect this repo keeps paying for.
23158
+ */
23159
+ var WrapperIdentitySchema = object({
23160
+ kind: _enum([
23161
+ "docker",
23162
+ "electron",
23163
+ "native",
23164
+ "contradictory",
23165
+ "unknown"
23166
+ ]),
23167
+ /** Every probe that ran, in a stable order. Never empty. */
23168
+ evidence: array(object({
23169
+ /** Which probe this row reports. */
23170
+ fact: _enum([
23171
+ "dockerenv-file",
23172
+ "proc-1-cgroup",
23173
+ "platform",
23174
+ "electron-app-version-env"
23175
+ ]),
23176
+ /**
23177
+ * `observed` — this process read it itself. `declared` — the shell told the
23178
+ * process and nothing here can check it. Only the Electron app version is
23179
+ * ever `declared`, and only because a child cannot see its parent.
23180
+ */
23181
+ mode: _enum(["observed", "declared"]),
23182
+ /** Did the probe support the fact it names? A `false` row is still evidence. */
23183
+ holds: boolean(),
23184
+ /** What was actually read, verbatim enough for an operator to argue with. */
23185
+ detail: string()
23186
+ })),
23187
+ /**
23188
+ * The version of the SHELL, when the shell has one it can state: the
23189
+ * Electron app version it declared, or the baked seed closure that
23190
+ * fingerprints a container / app bundle. `null` for `contradictory` and
23191
+ * `unknown` — which version belongs to the shell is precisely what is not
23192
+ * known there.
23193
+ */
23194
+ currentVersion: string().nullable()
23195
+ });
23138
23196
  var ServerRollbackInfoSchema = object({
23139
23197
  /** The version that failed (or was manually rolled back). */
23140
23198
  fromVersion: string(),
@@ -23176,7 +23234,13 @@ var ServerPackageStatusSchema = object({
23176
23234
  * Seed-vs-contract verdict (see {@link ImageContractSchema}). Optional for
23177
23235
  * version skew: an older provider's payload simply omits it.
23178
23236
  */
23179
- imageContract: ImageContractSchema.optional()
23237
+ imageContract: ImageContractSchema.optional(),
23238
+ /**
23239
+ * What this node runs INSIDE (see {@link WrapperIdentitySchema}). Optional
23240
+ * for version skew: an older provider's payload simply omits it, and an
23241
+ * absent wrapper is unknown — never `native`.
23242
+ */
23243
+ wrapper: WrapperIdentitySchema.optional()
23180
23244
  });
23181
23245
  var ServerUpdateCheckResultSchema = object({
23182
23246
  packageName: string(),
@@ -31057,7 +31121,23 @@ var RecordingRangeSchema = object({
31057
31121
  });
31058
31122
  var RecordingAvailabilitySchema = object({
31059
31123
  deviceId: number(),
31060
- ranges: array(RecordingRangeSchema)
31124
+ ranges: array(RecordingRangeSchema),
31125
+ /**
31126
+ * Every profile this camera has footage in — not only the one `ranges`
31127
+ * describes (D433).
31128
+ *
31129
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
31130
+ * and enumerating all of them triples the directory reads for a bar that
31131
+ * would look identical. But the answer used to say nothing about that, so a
31132
+ * caller asking "what can I export?" read the single preferred profile as
31133
+ * the only one that exists — on this deployment every camera records `high`
31134
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
31135
+ * UI could not see it.
31136
+ *
31137
+ * Cheap: it is the same shallow directory read the profile CHOICE already
31138
+ * makes. Ask for a specific profile's ranges with the `profile` input.
31139
+ */
31140
+ profilesWithFootage: array(string())
31061
31141
  });
31062
31142
  var RecordingDaysSchema = object({
31063
31143
  deviceId: number(),
@@ -31083,7 +31163,11 @@ var RecordingDaysSchema = object({
31083
31163
  var RecordingAvailabilityForDeviceSchema = object({
31084
31164
  deviceId: number(),
31085
31165
  read: _enum(["read", "unreadable"]),
31086
- ranges: array(RecordingRangeSchema).readonly()
31166
+ ranges: array(RecordingRangeSchema).readonly(),
31167
+ /** Same field, same meaning, as the singular answer (D433). A row that
31168
+ * dropped it would tell a grid caller the archive holds one profile.
31169
+ * Empty on an `'unreadable'` row: nobody looked. */
31170
+ profilesWithFootage: array(string()).readonly()
31087
31171
  });
31088
31172
  /**
31089
31173
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -31373,7 +31457,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
31373
31457
  method(object({
31374
31458
  deviceId: number(),
31375
31459
  fromMs: number(),
31376
- toMs: number()
31460
+ toMs: number(),
31461
+ /**
31462
+ * Answer for THIS profile instead of the preferred one (D433). Absent
31463
+ * keeps the timeline's behaviour — one bar, one profile, one set of
31464
+ * reads. `profilesWithFootage` on the answer says what may be asked
31465
+ * for.
31466
+ */
31467
+ profile: string().optional()
31377
31468
  }), RecordingAvailabilitySchema, {
31378
31469
  kind: "query",
31379
31470
  auth: "protected"
package/dist/addon.mjs CHANGED
@@ -17588,6 +17588,7 @@ var NcSystemEventKindSchema = _enum([
17588
17588
  "addon-crash-loop",
17589
17589
  "addon-update-available",
17590
17590
  "server-update-available",
17591
+ "wrapper-update-available",
17591
17592
  "alarm-triggered",
17592
17593
  "alarm-armed",
17593
17594
  "alarm-disarmed",
@@ -21033,7 +21034,17 @@ var EventDensityBucketSchema = object({
21033
21034
  bucketStart: number(),
21034
21035
  motion: number().int(),
21035
21036
  object: number().int(),
21036
- audio: number().int()
21037
+ audio: number().int(),
21038
+ /**
21039
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
21040
+ * as opposed to `audio`, which is their COUNT (D431).
21041
+ *
21042
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
21043
+ * measured", which is not the same claim as silence, and a lane that cannot
21044
+ * tell them apart paints a quiet hour at full scale — which is exactly what
21045
+ * the count-on-a-level-meter did.
21046
+ */
21047
+ audioDbfs: number().optional()
21037
21048
  });
21038
21049
  /**
21039
21050
  * One camera's row in a `getEventDensityBatch` answer.
@@ -23134,6 +23145,53 @@ var ImageContractSchema = object({
23134
23145
  /** One operator-grade sentence: this node runs image X; the contract says Y. */
23135
23146
  message: string()
23136
23147
  });
23148
+ /**
23149
+ * The shell verdict (see {@link WrapperKindSchema}) with the proofs that
23150
+ * produced it.
23151
+ *
23152
+ * There is deliberately NO `canSelfUpdate` and no apply action: a wrapper
23153
+ * update is an ANNOUNCEMENT. The notification body carries the exact command
23154
+ * for a `docker` shell and says the app restarts into the new build for
23155
+ * `electron`, and that sentence is chosen from `kind` alone — a boolean
23156
+ * nothing reads is the defect this repo keeps paying for.
23157
+ */
23158
+ var WrapperIdentitySchema = object({
23159
+ kind: _enum([
23160
+ "docker",
23161
+ "electron",
23162
+ "native",
23163
+ "contradictory",
23164
+ "unknown"
23165
+ ]),
23166
+ /** Every probe that ran, in a stable order. Never empty. */
23167
+ evidence: array(object({
23168
+ /** Which probe this row reports. */
23169
+ fact: _enum([
23170
+ "dockerenv-file",
23171
+ "proc-1-cgroup",
23172
+ "platform",
23173
+ "electron-app-version-env"
23174
+ ]),
23175
+ /**
23176
+ * `observed` — this process read it itself. `declared` — the shell told the
23177
+ * process and nothing here can check it. Only the Electron app version is
23178
+ * ever `declared`, and only because a child cannot see its parent.
23179
+ */
23180
+ mode: _enum(["observed", "declared"]),
23181
+ /** Did the probe support the fact it names? A `false` row is still evidence. */
23182
+ holds: boolean(),
23183
+ /** What was actually read, verbatim enough for an operator to argue with. */
23184
+ detail: string()
23185
+ })),
23186
+ /**
23187
+ * The version of the SHELL, when the shell has one it can state: the
23188
+ * Electron app version it declared, or the baked seed closure that
23189
+ * fingerprints a container / app bundle. `null` for `contradictory` and
23190
+ * `unknown` — which version belongs to the shell is precisely what is not
23191
+ * known there.
23192
+ */
23193
+ currentVersion: string().nullable()
23194
+ });
23137
23195
  var ServerRollbackInfoSchema = object({
23138
23196
  /** The version that failed (or was manually rolled back). */
23139
23197
  fromVersion: string(),
@@ -23175,7 +23233,13 @@ var ServerPackageStatusSchema = object({
23175
23233
  * Seed-vs-contract verdict (see {@link ImageContractSchema}). Optional for
23176
23234
  * version skew: an older provider's payload simply omits it.
23177
23235
  */
23178
- imageContract: ImageContractSchema.optional()
23236
+ imageContract: ImageContractSchema.optional(),
23237
+ /**
23238
+ * What this node runs INSIDE (see {@link WrapperIdentitySchema}). Optional
23239
+ * for version skew: an older provider's payload simply omits it, and an
23240
+ * absent wrapper is unknown — never `native`.
23241
+ */
23242
+ wrapper: WrapperIdentitySchema.optional()
23179
23243
  });
23180
23244
  var ServerUpdateCheckResultSchema = object({
23181
23245
  packageName: string(),
@@ -31056,7 +31120,23 @@ var RecordingRangeSchema = object({
31056
31120
  });
31057
31121
  var RecordingAvailabilitySchema = object({
31058
31122
  deviceId: number(),
31059
- ranges: array(RecordingRangeSchema)
31123
+ ranges: array(RecordingRangeSchema),
31124
+ /**
31125
+ * Every profile this camera has footage in — not only the one `ranges`
31126
+ * describes (D433).
31127
+ *
31128
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
31129
+ * and enumerating all of them triples the directory reads for a bar that
31130
+ * would look identical. But the answer used to say nothing about that, so a
31131
+ * caller asking "what can I export?" read the single preferred profile as
31132
+ * the only one that exists — on this deployment every camera records `high`
31133
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
31134
+ * UI could not see it.
31135
+ *
31136
+ * Cheap: it is the same shallow directory read the profile CHOICE already
31137
+ * makes. Ask for a specific profile's ranges with the `profile` input.
31138
+ */
31139
+ profilesWithFootage: array(string())
31060
31140
  });
31061
31141
  var RecordingDaysSchema = object({
31062
31142
  deviceId: number(),
@@ -31082,7 +31162,11 @@ var RecordingDaysSchema = object({
31082
31162
  var RecordingAvailabilityForDeviceSchema = object({
31083
31163
  deviceId: number(),
31084
31164
  read: _enum(["read", "unreadable"]),
31085
- ranges: array(RecordingRangeSchema).readonly()
31165
+ ranges: array(RecordingRangeSchema).readonly(),
31166
+ /** Same field, same meaning, as the singular answer (D433). A row that
31167
+ * dropped it would tell a grid caller the archive holds one profile.
31168
+ * Empty on an `'unreadable'` row: nobody looked. */
31169
+ profilesWithFootage: array(string()).readonly()
31086
31170
  });
31087
31171
  /**
31088
31172
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -31372,7 +31456,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
31372
31456
  method(object({
31373
31457
  deviceId: number(),
31374
31458
  fromMs: number(),
31375
- toMs: number()
31459
+ toMs: number(),
31460
+ /**
31461
+ * Answer for THIS profile instead of the preferred one (D433). Absent
31462
+ * keeps the timeline's behaviour — one bar, one profile, one set of
31463
+ * reads. `profilesWithFootage` on the answer says what may be asked
31464
+ * for.
31465
+ */
31466
+ profile: string().optional()
31376
31467
  }), RecordingAvailabilitySchema, {
31377
31468
  kind: "query",
31378
31469
  auth: "protected"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-petkit",
3
- "version": "0.2.92",
3
+ "version": "0.2.94",
4
4
  "description": "PetKit smart-feeder device-provider addon for CamStack — wraps the @apocaliss92/nodepetkit PetKit cloud client",
5
5
  "keywords": [
6
6
  "camstack",