@camstack/addon-terminal 0.1.97 → 0.1.99

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
@@ -16488,6 +16488,7 @@ var NcSystemEventKindSchema = _enum([
16488
16488
  "addon-crash-loop",
16489
16489
  "addon-update-available",
16490
16490
  "server-update-available",
16491
+ "wrapper-update-available",
16491
16492
  "alarm-triggered",
16492
16493
  "alarm-armed",
16493
16494
  "alarm-disarmed",
@@ -19933,7 +19934,17 @@ var EventDensityBucketSchema = object({
19933
19934
  bucketStart: number(),
19934
19935
  motion: number().int(),
19935
19936
  object: number().int(),
19936
- audio: number().int()
19937
+ audio: number().int(),
19938
+ /**
19939
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
19940
+ * as opposed to `audio`, which is their COUNT (D431).
19941
+ *
19942
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
19943
+ * measured", which is not the same claim as silence, and a lane that cannot
19944
+ * tell them apart paints a quiet hour at full scale — which is exactly what
19945
+ * the count-on-a-level-meter did.
19946
+ */
19947
+ audioDbfs: number().optional()
19937
19948
  });
19938
19949
  /**
19939
19950
  * One camera's row in a `getEventDensityBatch` answer.
@@ -22034,6 +22045,53 @@ var ImageContractSchema = object({
22034
22045
  /** One operator-grade sentence: this node runs image X; the contract says Y. */
22035
22046
  message: string()
22036
22047
  });
22048
+ /**
22049
+ * The shell verdict (see {@link WrapperKindSchema}) with the proofs that
22050
+ * produced it.
22051
+ *
22052
+ * There is deliberately NO `canSelfUpdate` and no apply action: a wrapper
22053
+ * update is an ANNOUNCEMENT. The notification body carries the exact command
22054
+ * for a `docker` shell and says the app restarts into the new build for
22055
+ * `electron`, and that sentence is chosen from `kind` alone — a boolean
22056
+ * nothing reads is the defect this repo keeps paying for.
22057
+ */
22058
+ var WrapperIdentitySchema = object({
22059
+ kind: _enum([
22060
+ "docker",
22061
+ "electron",
22062
+ "native",
22063
+ "contradictory",
22064
+ "unknown"
22065
+ ]),
22066
+ /** Every probe that ran, in a stable order. Never empty. */
22067
+ evidence: array(object({
22068
+ /** Which probe this row reports. */
22069
+ fact: _enum([
22070
+ "dockerenv-file",
22071
+ "proc-1-cgroup",
22072
+ "platform",
22073
+ "electron-app-version-env"
22074
+ ]),
22075
+ /**
22076
+ * `observed` — this process read it itself. `declared` — the shell told the
22077
+ * process and nothing here can check it. Only the Electron app version is
22078
+ * ever `declared`, and only because a child cannot see its parent.
22079
+ */
22080
+ mode: _enum(["observed", "declared"]),
22081
+ /** Did the probe support the fact it names? A `false` row is still evidence. */
22082
+ holds: boolean(),
22083
+ /** What was actually read, verbatim enough for an operator to argue with. */
22084
+ detail: string()
22085
+ })),
22086
+ /**
22087
+ * The version of the SHELL, when the shell has one it can state: the
22088
+ * Electron app version it declared, or the baked seed closure that
22089
+ * fingerprints a container / app bundle. `null` for `contradictory` and
22090
+ * `unknown` — which version belongs to the shell is precisely what is not
22091
+ * known there.
22092
+ */
22093
+ currentVersion: string().nullable()
22094
+ });
22037
22095
  var ServerRollbackInfoSchema = object({
22038
22096
  /** The version that failed (or was manually rolled back). */
22039
22097
  fromVersion: string(),
@@ -22075,7 +22133,13 @@ var ServerPackageStatusSchema = object({
22075
22133
  * Seed-vs-contract verdict (see {@link ImageContractSchema}). Optional for
22076
22134
  * version skew: an older provider's payload simply omits it.
22077
22135
  */
22078
- imageContract: ImageContractSchema.optional()
22136
+ imageContract: ImageContractSchema.optional(),
22137
+ /**
22138
+ * What this node runs INSIDE (see {@link WrapperIdentitySchema}). Optional
22139
+ * for version skew: an older provider's payload simply omits it, and an
22140
+ * absent wrapper is unknown — never `native`.
22141
+ */
22142
+ wrapper: WrapperIdentitySchema.optional()
22079
22143
  });
22080
22144
  var ServerUpdateCheckResultSchema = object({
22081
22145
  packageName: string(),
@@ -30096,7 +30160,23 @@ var RecordingRangeSchema = object({
30096
30160
  });
30097
30161
  var RecordingAvailabilitySchema = object({
30098
30162
  deviceId: number(),
30099
- ranges: array(RecordingRangeSchema)
30163
+ ranges: array(RecordingRangeSchema),
30164
+ /**
30165
+ * Every profile this camera has footage in — not only the one `ranges`
30166
+ * describes (D433).
30167
+ *
30168
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
30169
+ * and enumerating all of them triples the directory reads for a bar that
30170
+ * would look identical. But the answer used to say nothing about that, so a
30171
+ * caller asking "what can I export?" read the single preferred profile as
30172
+ * the only one that exists — on this deployment every camera records `high`
30173
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
30174
+ * UI could not see it.
30175
+ *
30176
+ * Cheap: it is the same shallow directory read the profile CHOICE already
30177
+ * makes. Ask for a specific profile's ranges with the `profile` input.
30178
+ */
30179
+ profilesWithFootage: array(string())
30100
30180
  });
30101
30181
  var RecordingDaysSchema = object({
30102
30182
  deviceId: number(),
@@ -30122,7 +30202,11 @@ var RecordingDaysSchema = object({
30122
30202
  var RecordingAvailabilityForDeviceSchema = object({
30123
30203
  deviceId: number(),
30124
30204
  read: _enum(["read", "unreadable"]),
30125
- ranges: array(RecordingRangeSchema).readonly()
30205
+ ranges: array(RecordingRangeSchema).readonly(),
30206
+ /** Same field, same meaning, as the singular answer (D433). A row that
30207
+ * dropped it would tell a grid caller the archive holds one profile.
30208
+ * Empty on an `'unreadable'` row: nobody looked. */
30209
+ profilesWithFootage: array(string()).readonly()
30126
30210
  });
30127
30211
  /**
30128
30212
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -30412,7 +30496,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
30412
30496
  method(object({
30413
30497
  deviceId: number(),
30414
30498
  fromMs: number(),
30415
- toMs: number()
30499
+ toMs: number(),
30500
+ /**
30501
+ * Answer for THIS profile instead of the preferred one (D433). Absent
30502
+ * keeps the timeline's behaviour — one bar, one profile, one set of
30503
+ * reads. `profilesWithFootage` on the answer says what may be asked
30504
+ * for.
30505
+ */
30506
+ profile: string().optional()
30416
30507
  }), RecordingAvailabilitySchema, {
30417
30508
  kind: "query",
30418
30509
  auth: "protected"
package/dist/addon.mjs CHANGED
@@ -16465,6 +16465,7 @@ var NcSystemEventKindSchema = _enum([
16465
16465
  "addon-crash-loop",
16466
16466
  "addon-update-available",
16467
16467
  "server-update-available",
16468
+ "wrapper-update-available",
16468
16469
  "alarm-triggered",
16469
16470
  "alarm-armed",
16470
16471
  "alarm-disarmed",
@@ -19910,7 +19911,17 @@ var EventDensityBucketSchema = object({
19910
19911
  bucketStart: number(),
19911
19912
  motion: number().int(),
19912
19913
  object: number().int(),
19913
- audio: number().int()
19914
+ audio: number().int(),
19915
+ /**
19916
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
19917
+ * as opposed to `audio`, which is their COUNT (D431).
19918
+ *
19919
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
19920
+ * measured", which is not the same claim as silence, and a lane that cannot
19921
+ * tell them apart paints a quiet hour at full scale — which is exactly what
19922
+ * the count-on-a-level-meter did.
19923
+ */
19924
+ audioDbfs: number().optional()
19914
19925
  });
19915
19926
  /**
19916
19927
  * One camera's row in a `getEventDensityBatch` answer.
@@ -22011,6 +22022,53 @@ var ImageContractSchema = object({
22011
22022
  /** One operator-grade sentence: this node runs image X; the contract says Y. */
22012
22023
  message: string()
22013
22024
  });
22025
+ /**
22026
+ * The shell verdict (see {@link WrapperKindSchema}) with the proofs that
22027
+ * produced it.
22028
+ *
22029
+ * There is deliberately NO `canSelfUpdate` and no apply action: a wrapper
22030
+ * update is an ANNOUNCEMENT. The notification body carries the exact command
22031
+ * for a `docker` shell and says the app restarts into the new build for
22032
+ * `electron`, and that sentence is chosen from `kind` alone — a boolean
22033
+ * nothing reads is the defect this repo keeps paying for.
22034
+ */
22035
+ var WrapperIdentitySchema = object({
22036
+ kind: _enum([
22037
+ "docker",
22038
+ "electron",
22039
+ "native",
22040
+ "contradictory",
22041
+ "unknown"
22042
+ ]),
22043
+ /** Every probe that ran, in a stable order. Never empty. */
22044
+ evidence: array(object({
22045
+ /** Which probe this row reports. */
22046
+ fact: _enum([
22047
+ "dockerenv-file",
22048
+ "proc-1-cgroup",
22049
+ "platform",
22050
+ "electron-app-version-env"
22051
+ ]),
22052
+ /**
22053
+ * `observed` — this process read it itself. `declared` — the shell told the
22054
+ * process and nothing here can check it. Only the Electron app version is
22055
+ * ever `declared`, and only because a child cannot see its parent.
22056
+ */
22057
+ mode: _enum(["observed", "declared"]),
22058
+ /** Did the probe support the fact it names? A `false` row is still evidence. */
22059
+ holds: boolean(),
22060
+ /** What was actually read, verbatim enough for an operator to argue with. */
22061
+ detail: string()
22062
+ })),
22063
+ /**
22064
+ * The version of the SHELL, when the shell has one it can state: the
22065
+ * Electron app version it declared, or the baked seed closure that
22066
+ * fingerprints a container / app bundle. `null` for `contradictory` and
22067
+ * `unknown` — which version belongs to the shell is precisely what is not
22068
+ * known there.
22069
+ */
22070
+ currentVersion: string().nullable()
22071
+ });
22014
22072
  var ServerRollbackInfoSchema = object({
22015
22073
  /** The version that failed (or was manually rolled back). */
22016
22074
  fromVersion: string(),
@@ -22052,7 +22110,13 @@ var ServerPackageStatusSchema = object({
22052
22110
  * Seed-vs-contract verdict (see {@link ImageContractSchema}). Optional for
22053
22111
  * version skew: an older provider's payload simply omits it.
22054
22112
  */
22055
- imageContract: ImageContractSchema.optional()
22113
+ imageContract: ImageContractSchema.optional(),
22114
+ /**
22115
+ * What this node runs INSIDE (see {@link WrapperIdentitySchema}). Optional
22116
+ * for version skew: an older provider's payload simply omits it, and an
22117
+ * absent wrapper is unknown — never `native`.
22118
+ */
22119
+ wrapper: WrapperIdentitySchema.optional()
22056
22120
  });
22057
22121
  var ServerUpdateCheckResultSchema = object({
22058
22122
  packageName: string(),
@@ -30073,7 +30137,23 @@ var RecordingRangeSchema = object({
30073
30137
  });
30074
30138
  var RecordingAvailabilitySchema = object({
30075
30139
  deviceId: number(),
30076
- ranges: array(RecordingRangeSchema)
30140
+ ranges: array(RecordingRangeSchema),
30141
+ /**
30142
+ * Every profile this camera has footage in — not only the one `ranges`
30143
+ * describes (D433).
30144
+ *
30145
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
30146
+ * and enumerating all of them triples the directory reads for a bar that
30147
+ * would look identical. But the answer used to say nothing about that, so a
30148
+ * caller asking "what can I export?" read the single preferred profile as
30149
+ * the only one that exists — on this deployment every camera records `high`
30150
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
30151
+ * UI could not see it.
30152
+ *
30153
+ * Cheap: it is the same shallow directory read the profile CHOICE already
30154
+ * makes. Ask for a specific profile's ranges with the `profile` input.
30155
+ */
30156
+ profilesWithFootage: array(string())
30077
30157
  });
30078
30158
  var RecordingDaysSchema = object({
30079
30159
  deviceId: number(),
@@ -30099,7 +30179,11 @@ var RecordingDaysSchema = object({
30099
30179
  var RecordingAvailabilityForDeviceSchema = object({
30100
30180
  deviceId: number(),
30101
30181
  read: _enum(["read", "unreadable"]),
30102
- ranges: array(RecordingRangeSchema).readonly()
30182
+ ranges: array(RecordingRangeSchema).readonly(),
30183
+ /** Same field, same meaning, as the singular answer (D433). A row that
30184
+ * dropped it would tell a grid caller the archive holds one profile.
30185
+ * Empty on an `'unreadable'` row: nobody looked. */
30186
+ profilesWithFootage: array(string()).readonly()
30103
30187
  });
30104
30188
  /**
30105
30189
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -30389,7 +30473,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
30389
30473
  method(object({
30390
30474
  deviceId: number(),
30391
30475
  fromMs: number(),
30392
- toMs: number()
30476
+ toMs: number(),
30477
+ /**
30478
+ * Answer for THIS profile instead of the preferred one (D433). Absent
30479
+ * keeps the timeline's behaviour — one bar, one profile, one set of
30480
+ * reads. `profilesWithFootage` on the answer says what may be asked
30481
+ * for.
30482
+ */
30483
+ profile: string().optional()
30393
30484
  }), RecordingAvailabilitySchema, {
30394
30485
  kind: "query",
30395
30486
  auth: "protected"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-terminal",
3
- "version": "0.1.97",
3
+ "version": "0.1.99",
4
4
  "description": "Interactive terminal sessions (pty + xterm) as a CamStack addon",
5
5
  "keywords": [
6
6
  "camstack",