@camstack/addon-notifiers 1.2.43 → 1.2.46
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 +69 -10
- package/dist/addon.mjs +69 -10
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -13792,6 +13792,50 @@ var NodeProcessSchema = object({
|
|
|
13792
13792
|
/** Wall-clock uptime (seconds). Parsed from `ps etime`. */
|
|
13793
13793
|
uptimeSec: number()
|
|
13794
13794
|
});
|
|
13795
|
+
/**
|
|
13796
|
+
* One retained container-memory reading.
|
|
13797
|
+
*
|
|
13798
|
+
* `atMs` is the timestamp of the PROCESS snapshot taken in the same tick, not
|
|
13799
|
+
* a second clock: that is what makes "processes sum to X, container says Y"
|
|
13800
|
+
* subtractable per point rather than an eyeballed comparison of two series
|
|
13801
|
+
* sampled at different instants.
|
|
13802
|
+
*
|
|
13803
|
+
* A reduced window keeps the sample with the LARGEST `currentBytes` in each
|
|
13804
|
+
* bucket, WHOLE. Taking a per-field maximum would synthesise a row whose parts
|
|
13805
|
+
* never coexisted, and a mean would smear away the peak this exists to find.
|
|
13806
|
+
*/
|
|
13807
|
+
var ContainerMemoryPointSchema = object({
|
|
13808
|
+
/** Which hierarchy answered, so a reading is never ambiguous. */
|
|
13809
|
+
source: _enum(["cgroup-v2", "cgroup-v1"]),
|
|
13810
|
+
/** `memory.current` (v2) / `memory.usage_in_bytes` (v1). Always known. */
|
|
13811
|
+
currentBytes: number(),
|
|
13812
|
+
/** The cgroup's ceiling. `null` = NO LIMIT — never a sentinel, never zero. */
|
|
13813
|
+
limitBytes: number().nullable(),
|
|
13814
|
+
/** Anonymous pages: the closest thing to "what the processes allocated". */
|
|
13815
|
+
anonBytes: number().nullable(),
|
|
13816
|
+
/** Page cache. Charged to the cgroup, owned by no process. */
|
|
13817
|
+
fileBytes: number().nullable(),
|
|
13818
|
+
/**
|
|
13819
|
+
* Shared memory — and the field that explained the largest single surprise.
|
|
13820
|
+
* The i915 driver backs GPU buffers with shmem, so an inference pool or a
|
|
13821
|
+
* hardware-decode session holding DRM objects is charged HERE and appears
|
|
13822
|
+
* nowhere in a `ps` scan.
|
|
13823
|
+
*/
|
|
13824
|
+
shmemBytes: number().nullable(),
|
|
13825
|
+
/** Kernel slab charged to this cgroup. `null` on v1, which never publishes it. */
|
|
13826
|
+
slabBytes: number().nullable(),
|
|
13827
|
+
/**
|
|
13828
|
+
* Shrinkable i915 GEM object bytes, from debugfs.
|
|
13829
|
+
*
|
|
13830
|
+
* **Host-wide across every DRM client, NOT cgroup-scoped.** It is not a
|
|
13831
|
+
* component of `currentBytes` and must not be subtracted from it; it says
|
|
13832
|
+
* what put the shmem there, where `shmemBytes` only says how much.
|
|
13833
|
+
*
|
|
13834
|
+
* `null` wherever debugfs is not mounted — which is inside every camstack
|
|
13835
|
+
* container today — and on any node with no Intel GPU.
|
|
13836
|
+
*/
|
|
13837
|
+
gpuShmemBytes: number().nullable()
|
|
13838
|
+
}).extend({ atMs: number() });
|
|
13795
13839
|
var DumpHeapSnapshotInputSchema = object({
|
|
13796
13840
|
/** The addon whose runner should dump a heap snapshot. */
|
|
13797
13841
|
addonId: string() });
|
|
@@ -13855,6 +13899,21 @@ var NodeLoadSeriesSchema = object({
|
|
|
13855
13899
|
/** One entry per function seen in the window, heaviest-first. */
|
|
13856
13900
|
series: array(LoadFunctionSeriesSchema).readonly(),
|
|
13857
13901
|
/**
|
|
13902
|
+
* The CONTAINER's memory over the same window, oldest-first.
|
|
13903
|
+
*
|
|
13904
|
+
* Sits next to `series` rather than in a method of its own because the whole
|
|
13905
|
+
* question is a subtraction: the per-process rows in `series` sum to one
|
|
13906
|
+
* number and this one is another, and an operator who has to issue two calls
|
|
13907
|
+
* to compare them will compare two different instants. Same reader, same
|
|
13908
|
+
* `sinceMs`, same `bucketMs`, same timestamps.
|
|
13909
|
+
*
|
|
13910
|
+
* **EMPTY means ABSENT, never zero.** A node with no cgroup — a developer
|
|
13911
|
+
* Mac, a bare-metal host, a container with the hierarchy hidden — reports no
|
|
13912
|
+
* points at all. A zero here would be indistinguishable from a healthy
|
|
13913
|
+
* container and is precisely the lie this field exists to avoid.
|
|
13914
|
+
*/
|
|
13915
|
+
containerMemory: array(ContainerMemoryPointSchema).readonly(),
|
|
13916
|
+
/**
|
|
13858
13917
|
* Width of one returned bucket, in ms. Equals the sampling cadence when no
|
|
13859
13918
|
* reduction was needed — so a caller can always say what one point covers
|
|
13860
13919
|
* without having to know whether it was reduced.
|
|
@@ -23747,23 +23806,23 @@ DeviceType.Camera, method(object({ deviceId: number() }), object({
|
|
|
23747
23806
|
sdpOffer: string()
|
|
23748
23807
|
}), {
|
|
23749
23808
|
kind: "mutation",
|
|
23750
|
-
auth: "
|
|
23809
|
+
auth: "protected"
|
|
23751
23810
|
}), method(object({
|
|
23752
23811
|
deviceId: number(),
|
|
23753
23812
|
sessionId: string(),
|
|
23754
23813
|
sdpAnswer: string()
|
|
23755
23814
|
}), _void(), {
|
|
23756
23815
|
kind: "mutation",
|
|
23757
|
-
auth: "
|
|
23816
|
+
auth: "protected"
|
|
23758
23817
|
}), method(object({
|
|
23759
23818
|
deviceId: number(),
|
|
23760
23819
|
sessionId: string()
|
|
23761
23820
|
}), _void(), {
|
|
23762
23821
|
kind: "mutation",
|
|
23763
|
-
auth: "
|
|
23822
|
+
auth: "protected"
|
|
23764
23823
|
}), method(object({ deviceId: number() }), object({ sessionId: string() }), {
|
|
23765
23824
|
kind: "mutation",
|
|
23766
|
-
auth: "
|
|
23825
|
+
auth: "protected"
|
|
23767
23826
|
}), method(object({
|
|
23768
23827
|
deviceId: number(),
|
|
23769
23828
|
/** Audio bytes for ONE frame, base64-encoded so the payload
|
|
@@ -23782,10 +23841,10 @@ DeviceType.Camera, method(object({ deviceId: number() }), object({
|
|
|
23782
23841
|
sequenceNumber: number().int()
|
|
23783
23842
|
}), object({ accepted: boolean() }), {
|
|
23784
23843
|
kind: "mutation",
|
|
23785
|
-
auth: "
|
|
23844
|
+
auth: "protected"
|
|
23786
23845
|
}), method(object({ deviceId: number() }), _void(), {
|
|
23787
23846
|
kind: "mutation",
|
|
23788
|
-
auth: "
|
|
23847
|
+
auth: "protected"
|
|
23789
23848
|
}), object({
|
|
23790
23849
|
deviceId: number(),
|
|
23791
23850
|
status: IntercomStatusSchema
|
|
@@ -25798,10 +25857,10 @@ DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, method(object({ deviceI
|
|
|
25798
25857
|
* recording config. NOTE on events (source of truth, R5/C3): this cap carries
|
|
25799
25858
|
* NO event surface — `getPlaybackManifest` returns playlist URLs only. Timeline
|
|
25800
25859
|
* events (motion/object/audio) come from `pipelineAnalytics` (durable SQLite
|
|
25801
|
-
* rows)
|
|
25802
|
-
*
|
|
25803
|
-
*
|
|
25804
|
-
* (`interfaces/recording-config.ts`).
|
|
25860
|
+
* rows) and are the ONLY event surface — the recorder has none. The in-RAM
|
|
25861
|
+
* playback markers it used to build were deleted on 2026-08-29 because nothing
|
|
25862
|
+
* ever read them. Event<->footage joins are by time, padded with the shared
|
|
25863
|
+
* `EVENT_PAD_MS` (`interfaces/recording-config.ts`).
|
|
25805
25864
|
*/
|
|
25806
25865
|
var RecordingStatusSchema = object({
|
|
25807
25866
|
deviceId: number(),
|
package/dist/addon.mjs
CHANGED
|
@@ -13765,6 +13765,50 @@ var NodeProcessSchema = object({
|
|
|
13765
13765
|
/** Wall-clock uptime (seconds). Parsed from `ps etime`. */
|
|
13766
13766
|
uptimeSec: number()
|
|
13767
13767
|
});
|
|
13768
|
+
/**
|
|
13769
|
+
* One retained container-memory reading.
|
|
13770
|
+
*
|
|
13771
|
+
* `atMs` is the timestamp of the PROCESS snapshot taken in the same tick, not
|
|
13772
|
+
* a second clock: that is what makes "processes sum to X, container says Y"
|
|
13773
|
+
* subtractable per point rather than an eyeballed comparison of two series
|
|
13774
|
+
* sampled at different instants.
|
|
13775
|
+
*
|
|
13776
|
+
* A reduced window keeps the sample with the LARGEST `currentBytes` in each
|
|
13777
|
+
* bucket, WHOLE. Taking a per-field maximum would synthesise a row whose parts
|
|
13778
|
+
* never coexisted, and a mean would smear away the peak this exists to find.
|
|
13779
|
+
*/
|
|
13780
|
+
var ContainerMemoryPointSchema = object({
|
|
13781
|
+
/** Which hierarchy answered, so a reading is never ambiguous. */
|
|
13782
|
+
source: _enum(["cgroup-v2", "cgroup-v1"]),
|
|
13783
|
+
/** `memory.current` (v2) / `memory.usage_in_bytes` (v1). Always known. */
|
|
13784
|
+
currentBytes: number(),
|
|
13785
|
+
/** The cgroup's ceiling. `null` = NO LIMIT — never a sentinel, never zero. */
|
|
13786
|
+
limitBytes: number().nullable(),
|
|
13787
|
+
/** Anonymous pages: the closest thing to "what the processes allocated". */
|
|
13788
|
+
anonBytes: number().nullable(),
|
|
13789
|
+
/** Page cache. Charged to the cgroup, owned by no process. */
|
|
13790
|
+
fileBytes: number().nullable(),
|
|
13791
|
+
/**
|
|
13792
|
+
* Shared memory — and the field that explained the largest single surprise.
|
|
13793
|
+
* The i915 driver backs GPU buffers with shmem, so an inference pool or a
|
|
13794
|
+
* hardware-decode session holding DRM objects is charged HERE and appears
|
|
13795
|
+
* nowhere in a `ps` scan.
|
|
13796
|
+
*/
|
|
13797
|
+
shmemBytes: number().nullable(),
|
|
13798
|
+
/** Kernel slab charged to this cgroup. `null` on v1, which never publishes it. */
|
|
13799
|
+
slabBytes: number().nullable(),
|
|
13800
|
+
/**
|
|
13801
|
+
* Shrinkable i915 GEM object bytes, from debugfs.
|
|
13802
|
+
*
|
|
13803
|
+
* **Host-wide across every DRM client, NOT cgroup-scoped.** It is not a
|
|
13804
|
+
* component of `currentBytes` and must not be subtracted from it; it says
|
|
13805
|
+
* what put the shmem there, where `shmemBytes` only says how much.
|
|
13806
|
+
*
|
|
13807
|
+
* `null` wherever debugfs is not mounted — which is inside every camstack
|
|
13808
|
+
* container today — and on any node with no Intel GPU.
|
|
13809
|
+
*/
|
|
13810
|
+
gpuShmemBytes: number().nullable()
|
|
13811
|
+
}).extend({ atMs: number() });
|
|
13768
13812
|
var DumpHeapSnapshotInputSchema = object({
|
|
13769
13813
|
/** The addon whose runner should dump a heap snapshot. */
|
|
13770
13814
|
addonId: string() });
|
|
@@ -13828,6 +13872,21 @@ var NodeLoadSeriesSchema = object({
|
|
|
13828
13872
|
/** One entry per function seen in the window, heaviest-first. */
|
|
13829
13873
|
series: array(LoadFunctionSeriesSchema).readonly(),
|
|
13830
13874
|
/**
|
|
13875
|
+
* The CONTAINER's memory over the same window, oldest-first.
|
|
13876
|
+
*
|
|
13877
|
+
* Sits next to `series` rather than in a method of its own because the whole
|
|
13878
|
+
* question is a subtraction: the per-process rows in `series` sum to one
|
|
13879
|
+
* number and this one is another, and an operator who has to issue two calls
|
|
13880
|
+
* to compare them will compare two different instants. Same reader, same
|
|
13881
|
+
* `sinceMs`, same `bucketMs`, same timestamps.
|
|
13882
|
+
*
|
|
13883
|
+
* **EMPTY means ABSENT, never zero.** A node with no cgroup — a developer
|
|
13884
|
+
* Mac, a bare-metal host, a container with the hierarchy hidden — reports no
|
|
13885
|
+
* points at all. A zero here would be indistinguishable from a healthy
|
|
13886
|
+
* container and is precisely the lie this field exists to avoid.
|
|
13887
|
+
*/
|
|
13888
|
+
containerMemory: array(ContainerMemoryPointSchema).readonly(),
|
|
13889
|
+
/**
|
|
13831
13890
|
* Width of one returned bucket, in ms. Equals the sampling cadence when no
|
|
13832
13891
|
* reduction was needed — so a caller can always say what one point covers
|
|
13833
13892
|
* without having to know whether it was reduced.
|
|
@@ -23720,23 +23779,23 @@ DeviceType.Camera, method(object({ deviceId: number() }), object({
|
|
|
23720
23779
|
sdpOffer: string()
|
|
23721
23780
|
}), {
|
|
23722
23781
|
kind: "mutation",
|
|
23723
|
-
auth: "
|
|
23782
|
+
auth: "protected"
|
|
23724
23783
|
}), method(object({
|
|
23725
23784
|
deviceId: number(),
|
|
23726
23785
|
sessionId: string(),
|
|
23727
23786
|
sdpAnswer: string()
|
|
23728
23787
|
}), _void(), {
|
|
23729
23788
|
kind: "mutation",
|
|
23730
|
-
auth: "
|
|
23789
|
+
auth: "protected"
|
|
23731
23790
|
}), method(object({
|
|
23732
23791
|
deviceId: number(),
|
|
23733
23792
|
sessionId: string()
|
|
23734
23793
|
}), _void(), {
|
|
23735
23794
|
kind: "mutation",
|
|
23736
|
-
auth: "
|
|
23795
|
+
auth: "protected"
|
|
23737
23796
|
}), method(object({ deviceId: number() }), object({ sessionId: string() }), {
|
|
23738
23797
|
kind: "mutation",
|
|
23739
|
-
auth: "
|
|
23798
|
+
auth: "protected"
|
|
23740
23799
|
}), method(object({
|
|
23741
23800
|
deviceId: number(),
|
|
23742
23801
|
/** Audio bytes for ONE frame, base64-encoded so the payload
|
|
@@ -23755,10 +23814,10 @@ DeviceType.Camera, method(object({ deviceId: number() }), object({
|
|
|
23755
23814
|
sequenceNumber: number().int()
|
|
23756
23815
|
}), object({ accepted: boolean() }), {
|
|
23757
23816
|
kind: "mutation",
|
|
23758
|
-
auth: "
|
|
23817
|
+
auth: "protected"
|
|
23759
23818
|
}), method(object({ deviceId: number() }), _void(), {
|
|
23760
23819
|
kind: "mutation",
|
|
23761
|
-
auth: "
|
|
23820
|
+
auth: "protected"
|
|
23762
23821
|
}), object({
|
|
23763
23822
|
deviceId: number(),
|
|
23764
23823
|
status: IntercomStatusSchema
|
|
@@ -25771,10 +25830,10 @@ DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, method(object({ deviceI
|
|
|
25771
25830
|
* recording config. NOTE on events (source of truth, R5/C3): this cap carries
|
|
25772
25831
|
* NO event surface — `getPlaybackManifest` returns playlist URLs only. Timeline
|
|
25773
25832
|
* events (motion/object/audio) come from `pipelineAnalytics` (durable SQLite
|
|
25774
|
-
* rows)
|
|
25775
|
-
*
|
|
25776
|
-
*
|
|
25777
|
-
* (`interfaces/recording-config.ts`).
|
|
25833
|
+
* rows) and are the ONLY event surface — the recorder has none. The in-RAM
|
|
25834
|
+
* playback markers it used to build were deleted on 2026-08-29 because nothing
|
|
25835
|
+
* ever read them. Event<->footage joins are by time, padded with the shared
|
|
25836
|
+
* `EVENT_PAD_MS` (`interfaces/recording-config.ts`).
|
|
25778
25837
|
*/
|
|
25779
25838
|
var RecordingStatusSchema = object({
|
|
25780
25839
|
deviceId: number(),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-notifiers",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.46",
|
|
4
4
|
"description": "System notifiers addon for CamStack — a `notification-output` collection provider hosting per-kind notifier adapters (ntfy, pushover, gotify, telegram, discord, webhook, zentik).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|