@camstack/types 1.2.120 → 1.2.122
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/capabilities/metrics-provider.cap.d.ts +68 -1
- package/dist/capabilities/recording.cap.d.ts +4 -4
- package/dist/index.js +67 -9
- package/dist/index.mjs +67 -9
- package/dist/interfaces/event-bus.d.ts +11 -1
- package/dist/interfaces/metrics-provider.d.ts +3 -1
- package/dist/interfaces/recording-config.d.ts +4 -5
- package/package.json +1 -1
|
@@ -196,6 +196,45 @@ declare const NodeProcessSchema: z.ZodObject<{
|
|
|
196
196
|
threadCount: z.ZodNullable<z.ZodNumber>;
|
|
197
197
|
uptimeSec: z.ZodNumber;
|
|
198
198
|
}, z.core.$strip>;
|
|
199
|
+
declare const ContainerMemorySnapshotSchema: z.ZodObject<{
|
|
200
|
+
source: z.ZodEnum<{
|
|
201
|
+
"cgroup-v2": "cgroup-v2";
|
|
202
|
+
"cgroup-v1": "cgroup-v1";
|
|
203
|
+
}>;
|
|
204
|
+
currentBytes: z.ZodNumber;
|
|
205
|
+
limitBytes: z.ZodNullable<z.ZodNumber>;
|
|
206
|
+
anonBytes: z.ZodNullable<z.ZodNumber>;
|
|
207
|
+
fileBytes: z.ZodNullable<z.ZodNumber>;
|
|
208
|
+
shmemBytes: z.ZodNullable<z.ZodNumber>;
|
|
209
|
+
slabBytes: z.ZodNullable<z.ZodNumber>;
|
|
210
|
+
gpuShmemBytes: z.ZodNullable<z.ZodNumber>;
|
|
211
|
+
}, z.core.$strip>;
|
|
212
|
+
/**
|
|
213
|
+
* One retained container-memory reading.
|
|
214
|
+
*
|
|
215
|
+
* `atMs` is the timestamp of the PROCESS snapshot taken in the same tick, not
|
|
216
|
+
* a second clock: that is what makes "processes sum to X, container says Y"
|
|
217
|
+
* subtractable per point rather than an eyeballed comparison of two series
|
|
218
|
+
* sampled at different instants.
|
|
219
|
+
*
|
|
220
|
+
* A reduced window keeps the sample with the LARGEST `currentBytes` in each
|
|
221
|
+
* bucket, WHOLE. Taking a per-field maximum would synthesise a row whose parts
|
|
222
|
+
* never coexisted, and a mean would smear away the peak this exists to find.
|
|
223
|
+
*/
|
|
224
|
+
declare const ContainerMemoryPointSchema: z.ZodObject<{
|
|
225
|
+
source: z.ZodEnum<{
|
|
226
|
+
"cgroup-v2": "cgroup-v2";
|
|
227
|
+
"cgroup-v1": "cgroup-v1";
|
|
228
|
+
}>;
|
|
229
|
+
currentBytes: z.ZodNumber;
|
|
230
|
+
limitBytes: z.ZodNullable<z.ZodNumber>;
|
|
231
|
+
anonBytes: z.ZodNullable<z.ZodNumber>;
|
|
232
|
+
fileBytes: z.ZodNullable<z.ZodNumber>;
|
|
233
|
+
shmemBytes: z.ZodNullable<z.ZodNumber>;
|
|
234
|
+
slabBytes: z.ZodNullable<z.ZodNumber>;
|
|
235
|
+
gpuShmemBytes: z.ZodNullable<z.ZodNumber>;
|
|
236
|
+
atMs: z.ZodNumber;
|
|
237
|
+
}, z.core.$strip>;
|
|
199
238
|
declare const DumpHeapSnapshotInputSchema: z.ZodObject<{
|
|
200
239
|
addonId: z.ZodString;
|
|
201
240
|
}, z.core.$strip>;
|
|
@@ -280,6 +319,20 @@ declare const NodeLoadSeriesSchema: z.ZodObject<{
|
|
|
280
319
|
processCountMin: z.ZodNumber;
|
|
281
320
|
}, z.core.$strip>>>;
|
|
282
321
|
}, z.core.$strip>>>;
|
|
322
|
+
containerMemory: z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
323
|
+
source: z.ZodEnum<{
|
|
324
|
+
"cgroup-v2": "cgroup-v2";
|
|
325
|
+
"cgroup-v1": "cgroup-v1";
|
|
326
|
+
}>;
|
|
327
|
+
currentBytes: z.ZodNumber;
|
|
328
|
+
limitBytes: z.ZodNullable<z.ZodNumber>;
|
|
329
|
+
anonBytes: z.ZodNullable<z.ZodNumber>;
|
|
330
|
+
fileBytes: z.ZodNullable<z.ZodNumber>;
|
|
331
|
+
shmemBytes: z.ZodNullable<z.ZodNumber>;
|
|
332
|
+
slabBytes: z.ZodNullable<z.ZodNumber>;
|
|
333
|
+
gpuShmemBytes: z.ZodNullable<z.ZodNumber>;
|
|
334
|
+
atMs: z.ZodNumber;
|
|
335
|
+
}, z.core.$strip>>>;
|
|
283
336
|
bucketMs: z.ZodNumber;
|
|
284
337
|
retainedSamples: z.ZodNumber;
|
|
285
338
|
oldestAtMs: z.ZodNullable<z.ZodNumber>;
|
|
@@ -641,6 +694,20 @@ export declare const metricsProviderCapability: {
|
|
|
641
694
|
processCountMin: z.ZodNumber;
|
|
642
695
|
}, z.core.$strip>>>;
|
|
643
696
|
}, z.core.$strip>>>;
|
|
697
|
+
containerMemory: z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
698
|
+
source: z.ZodEnum<{
|
|
699
|
+
"cgroup-v2": "cgroup-v2";
|
|
700
|
+
"cgroup-v1": "cgroup-v1";
|
|
701
|
+
}>;
|
|
702
|
+
currentBytes: z.ZodNumber;
|
|
703
|
+
limitBytes: z.ZodNullable<z.ZodNumber>;
|
|
704
|
+
anonBytes: z.ZodNullable<z.ZodNumber>;
|
|
705
|
+
fileBytes: z.ZodNullable<z.ZodNumber>;
|
|
706
|
+
shmemBytes: z.ZodNullable<z.ZodNumber>;
|
|
707
|
+
slabBytes: z.ZodNullable<z.ZodNumber>;
|
|
708
|
+
gpuShmemBytes: z.ZodNullable<z.ZodNumber>;
|
|
709
|
+
atMs: z.ZodNumber;
|
|
710
|
+
}, z.core.$strip>>>;
|
|
644
711
|
bucketMs: z.ZodNumber;
|
|
645
712
|
retainedSamples: z.ZodNumber;
|
|
646
713
|
oldestAtMs: z.ZodNullable<z.ZodNumber>;
|
|
@@ -666,4 +733,4 @@ export declare const metricsProviderCapability: {
|
|
|
666
733
|
};
|
|
667
734
|
};
|
|
668
735
|
export type IMetricsProvider = InferProvider<typeof metricsProviderCapability>;
|
|
669
|
-
export { SystemMetricsSchema, SystemResourceSnapshotSchema, DiskSpaceInfoSchema, MetricsGpuInfoSchema, PidResourceStatsSchema, AddonInstanceSchema, NodeProcessSchema, DumpHeapSnapshotInputSchema, DumpHeapSnapshotResultSchema, LoadPointSchema, LoadFunctionSeriesSchema, NodeLoadSeriesSchema, GetLoadSeriesInputSchema, CpuBreakdownSchema, MemoryInfoSchema, DiskIoSnapshotSchema, NetworkIoSnapshotSchema, ProcessResourceInfoSchema, PressureInfoSchema, };
|
|
736
|
+
export { SystemMetricsSchema, SystemResourceSnapshotSchema, DiskSpaceInfoSchema, MetricsGpuInfoSchema, PidResourceStatsSchema, AddonInstanceSchema, NodeProcessSchema, DumpHeapSnapshotInputSchema, DumpHeapSnapshotResultSchema, LoadPointSchema, LoadFunctionSeriesSchema, ContainerMemorySnapshotSchema, ContainerMemoryPointSchema, NodeLoadSeriesSchema, GetLoadSeriesInputSchema, CpuBreakdownSchema, MemoryInfoSchema, DiskIoSnapshotSchema, NetworkIoSnapshotSchema, ProcessResourceInfoSchema, PressureInfoSchema, };
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* recording config. NOTE on events (source of truth, R5/C3): this cap carries
|
|
4
4
|
* NO event surface — `getPlaybackManifest` returns playlist URLs only. Timeline
|
|
5
5
|
* events (motion/object/audio) come from `pipelineAnalytics` (durable SQLite
|
|
6
|
-
* rows)
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* (`interfaces/recording-config.ts`).
|
|
6
|
+
* rows) and are the ONLY event surface — the recorder has none. The in-RAM
|
|
7
|
+
* playback markers it used to build were deleted on 2026-08-29 because nothing
|
|
8
|
+
* ever read them. Event<->footage joins are by time, padded with the shared
|
|
9
|
+
* `EVENT_PAD_MS` (`interfaces/recording-config.ts`).
|
|
10
10
|
*/
|
|
11
11
|
import { z } from 'zod';
|
|
12
12
|
import { type InferProvider } from './capability-definition.js';
|
package/dist/index.js
CHANGED
|
@@ -1885,11 +1885,10 @@ var DetectionCatalogClassMapSchema = zod.z.object({
|
|
|
1885
1885
|
* timestamp + postMs]`). Matches the admin-ui clip window (−5s/+10s).
|
|
1886
1886
|
*
|
|
1887
1887
|
* Every consumer derives from this ONE constant so event↔footage boundaries
|
|
1888
|
-
* agree everywhere (C1):
|
|
1889
|
-
*
|
|
1890
|
-
*
|
|
1891
|
-
*
|
|
1892
|
-
* their `startMs/endMs` with it.
|
|
1888
|
+
* agree everywhere (C1): today that is the `videoclips` default provider
|
|
1889
|
+
* (addon-post-analysis), which pads its clip windows with it. The recorder used
|
|
1890
|
+
* to pad in-RAM playback markers with it too; those markers had no reader
|
|
1891
|
+
* anywhere in the repo and were deleted on 2026-08-29.
|
|
1893
1892
|
*
|
|
1894
1893
|
* NOTE: this is a UI/JOIN convention, NOT the `events`-band keep/discard gate —
|
|
1895
1894
|
* that uses the per-device `preBufferSec`/`postBufferSec` config.
|
|
@@ -11898,6 +11897,50 @@ var NodeProcessSchema = zod.z.object({
|
|
|
11898
11897
|
/** Wall-clock uptime (seconds). Parsed from `ps etime`. */
|
|
11899
11898
|
uptimeSec: zod.z.number()
|
|
11900
11899
|
});
|
|
11900
|
+
/**
|
|
11901
|
+
* One retained container-memory reading.
|
|
11902
|
+
*
|
|
11903
|
+
* `atMs` is the timestamp of the PROCESS snapshot taken in the same tick, not
|
|
11904
|
+
* a second clock: that is what makes "processes sum to X, container says Y"
|
|
11905
|
+
* subtractable per point rather than an eyeballed comparison of two series
|
|
11906
|
+
* sampled at different instants.
|
|
11907
|
+
*
|
|
11908
|
+
* A reduced window keeps the sample with the LARGEST `currentBytes` in each
|
|
11909
|
+
* bucket, WHOLE. Taking a per-field maximum would synthesise a row whose parts
|
|
11910
|
+
* never coexisted, and a mean would smear away the peak this exists to find.
|
|
11911
|
+
*/
|
|
11912
|
+
var ContainerMemoryPointSchema = zod.z.object({
|
|
11913
|
+
/** Which hierarchy answered, so a reading is never ambiguous. */
|
|
11914
|
+
source: zod.z.enum(["cgroup-v2", "cgroup-v1"]),
|
|
11915
|
+
/** `memory.current` (v2) / `memory.usage_in_bytes` (v1). Always known. */
|
|
11916
|
+
currentBytes: zod.z.number(),
|
|
11917
|
+
/** The cgroup's ceiling. `null` = NO LIMIT — never a sentinel, never zero. */
|
|
11918
|
+
limitBytes: zod.z.number().nullable(),
|
|
11919
|
+
/** Anonymous pages: the closest thing to "what the processes allocated". */
|
|
11920
|
+
anonBytes: zod.z.number().nullable(),
|
|
11921
|
+
/** Page cache. Charged to the cgroup, owned by no process. */
|
|
11922
|
+
fileBytes: zod.z.number().nullable(),
|
|
11923
|
+
/**
|
|
11924
|
+
* Shared memory — and the field that explained the largest single surprise.
|
|
11925
|
+
* The i915 driver backs GPU buffers with shmem, so an inference pool or a
|
|
11926
|
+
* hardware-decode session holding DRM objects is charged HERE and appears
|
|
11927
|
+
* nowhere in a `ps` scan.
|
|
11928
|
+
*/
|
|
11929
|
+
shmemBytes: zod.z.number().nullable(),
|
|
11930
|
+
/** Kernel slab charged to this cgroup. `null` on v1, which never publishes it. */
|
|
11931
|
+
slabBytes: zod.z.number().nullable(),
|
|
11932
|
+
/**
|
|
11933
|
+
* Shrinkable i915 GEM object bytes, from debugfs.
|
|
11934
|
+
*
|
|
11935
|
+
* **Host-wide across every DRM client, NOT cgroup-scoped.** It is not a
|
|
11936
|
+
* component of `currentBytes` and must not be subtracted from it; it says
|
|
11937
|
+
* what put the shmem there, where `shmemBytes` only says how much.
|
|
11938
|
+
*
|
|
11939
|
+
* `null` wherever debugfs is not mounted — which is inside every camstack
|
|
11940
|
+
* container today — and on any node with no Intel GPU.
|
|
11941
|
+
*/
|
|
11942
|
+
gpuShmemBytes: zod.z.number().nullable()
|
|
11943
|
+
}).extend({ atMs: zod.z.number() });
|
|
11901
11944
|
var DumpHeapSnapshotInputSchema = zod.z.object({
|
|
11902
11945
|
/** The addon whose runner should dump a heap snapshot. */
|
|
11903
11946
|
addonId: zod.z.string() });
|
|
@@ -11961,6 +12004,21 @@ var NodeLoadSeriesSchema = zod.z.object({
|
|
|
11961
12004
|
/** One entry per function seen in the window, heaviest-first. */
|
|
11962
12005
|
series: zod.z.array(LoadFunctionSeriesSchema).readonly(),
|
|
11963
12006
|
/**
|
|
12007
|
+
* The CONTAINER's memory over the same window, oldest-first.
|
|
12008
|
+
*
|
|
12009
|
+
* Sits next to `series` rather than in a method of its own because the whole
|
|
12010
|
+
* question is a subtraction: the per-process rows in `series` sum to one
|
|
12011
|
+
* number and this one is another, and an operator who has to issue two calls
|
|
12012
|
+
* to compare them will compare two different instants. Same reader, same
|
|
12013
|
+
* `sinceMs`, same `bucketMs`, same timestamps.
|
|
12014
|
+
*
|
|
12015
|
+
* **EMPTY means ABSENT, never zero.** A node with no cgroup — a developer
|
|
12016
|
+
* Mac, a bare-metal host, a container with the hierarchy hidden — reports no
|
|
12017
|
+
* points at all. A zero here would be indistinguishable from a healthy
|
|
12018
|
+
* container and is precisely the lie this field exists to avoid.
|
|
12019
|
+
*/
|
|
12020
|
+
containerMemory: zod.z.array(ContainerMemoryPointSchema).readonly(),
|
|
12021
|
+
/**
|
|
11964
12022
|
* Width of one returned bucket, in ms. Equals the sampling cadence when no
|
|
11965
12023
|
* reduction was needed — so a caller can always say what one point covers
|
|
11966
12024
|
* without having to know whether it was reduced.
|
|
@@ -29953,10 +30011,10 @@ var rebootCapability = {
|
|
|
29953
30011
|
* recording config. NOTE on events (source of truth, R5/C3): this cap carries
|
|
29954
30012
|
* NO event surface — `getPlaybackManifest` returns playlist URLs only. Timeline
|
|
29955
30013
|
* events (motion/object/audio) come from `pipelineAnalytics` (durable SQLite
|
|
29956
|
-
* rows)
|
|
29957
|
-
*
|
|
29958
|
-
*
|
|
29959
|
-
* (`interfaces/recording-config.ts`).
|
|
30014
|
+
* rows) and are the ONLY event surface — the recorder has none. The in-RAM
|
|
30015
|
+
* playback markers it used to build were deleted on 2026-08-29 because nothing
|
|
30016
|
+
* ever read them. Event<->footage joins are by time, padded with the shared
|
|
30017
|
+
* `EVENT_PAD_MS` (`interfaces/recording-config.ts`).
|
|
29960
30018
|
*/
|
|
29961
30019
|
var RecordingStatusSchema = zod.z.object({
|
|
29962
30020
|
deviceId: zod.z.number(),
|
package/dist/index.mjs
CHANGED
|
@@ -1884,11 +1884,10 @@ var DetectionCatalogClassMapSchema = z.object({
|
|
|
1884
1884
|
* timestamp + postMs]`). Matches the admin-ui clip window (−5s/+10s).
|
|
1885
1885
|
*
|
|
1886
1886
|
* Every consumer derives from this ONE constant so event↔footage boundaries
|
|
1887
|
-
* agree everywhere (C1):
|
|
1888
|
-
*
|
|
1889
|
-
*
|
|
1890
|
-
*
|
|
1891
|
-
* their `startMs/endMs` with it.
|
|
1887
|
+
* agree everywhere (C1): today that is the `videoclips` default provider
|
|
1888
|
+
* (addon-post-analysis), which pads its clip windows with it. The recorder used
|
|
1889
|
+
* to pad in-RAM playback markers with it too; those markers had no reader
|
|
1890
|
+
* anywhere in the repo and were deleted on 2026-08-29.
|
|
1892
1891
|
*
|
|
1893
1892
|
* NOTE: this is a UI/JOIN convention, NOT the `events`-band keep/discard gate —
|
|
1894
1893
|
* that uses the per-device `preBufferSec`/`postBufferSec` config.
|
|
@@ -11897,6 +11896,50 @@ var NodeProcessSchema = z.object({
|
|
|
11897
11896
|
/** Wall-clock uptime (seconds). Parsed from `ps etime`. */
|
|
11898
11897
|
uptimeSec: z.number()
|
|
11899
11898
|
});
|
|
11899
|
+
/**
|
|
11900
|
+
* One retained container-memory reading.
|
|
11901
|
+
*
|
|
11902
|
+
* `atMs` is the timestamp of the PROCESS snapshot taken in the same tick, not
|
|
11903
|
+
* a second clock: that is what makes "processes sum to X, container says Y"
|
|
11904
|
+
* subtractable per point rather than an eyeballed comparison of two series
|
|
11905
|
+
* sampled at different instants.
|
|
11906
|
+
*
|
|
11907
|
+
* A reduced window keeps the sample with the LARGEST `currentBytes` in each
|
|
11908
|
+
* bucket, WHOLE. Taking a per-field maximum would synthesise a row whose parts
|
|
11909
|
+
* never coexisted, and a mean would smear away the peak this exists to find.
|
|
11910
|
+
*/
|
|
11911
|
+
var ContainerMemoryPointSchema = z.object({
|
|
11912
|
+
/** Which hierarchy answered, so a reading is never ambiguous. */
|
|
11913
|
+
source: z.enum(["cgroup-v2", "cgroup-v1"]),
|
|
11914
|
+
/** `memory.current` (v2) / `memory.usage_in_bytes` (v1). Always known. */
|
|
11915
|
+
currentBytes: z.number(),
|
|
11916
|
+
/** The cgroup's ceiling. `null` = NO LIMIT — never a sentinel, never zero. */
|
|
11917
|
+
limitBytes: z.number().nullable(),
|
|
11918
|
+
/** Anonymous pages: the closest thing to "what the processes allocated". */
|
|
11919
|
+
anonBytes: z.number().nullable(),
|
|
11920
|
+
/** Page cache. Charged to the cgroup, owned by no process. */
|
|
11921
|
+
fileBytes: z.number().nullable(),
|
|
11922
|
+
/**
|
|
11923
|
+
* Shared memory — and the field that explained the largest single surprise.
|
|
11924
|
+
* The i915 driver backs GPU buffers with shmem, so an inference pool or a
|
|
11925
|
+
* hardware-decode session holding DRM objects is charged HERE and appears
|
|
11926
|
+
* nowhere in a `ps` scan.
|
|
11927
|
+
*/
|
|
11928
|
+
shmemBytes: z.number().nullable(),
|
|
11929
|
+
/** Kernel slab charged to this cgroup. `null` on v1, which never publishes it. */
|
|
11930
|
+
slabBytes: z.number().nullable(),
|
|
11931
|
+
/**
|
|
11932
|
+
* Shrinkable i915 GEM object bytes, from debugfs.
|
|
11933
|
+
*
|
|
11934
|
+
* **Host-wide across every DRM client, NOT cgroup-scoped.** It is not a
|
|
11935
|
+
* component of `currentBytes` and must not be subtracted from it; it says
|
|
11936
|
+
* what put the shmem there, where `shmemBytes` only says how much.
|
|
11937
|
+
*
|
|
11938
|
+
* `null` wherever debugfs is not mounted — which is inside every camstack
|
|
11939
|
+
* container today — and on any node with no Intel GPU.
|
|
11940
|
+
*/
|
|
11941
|
+
gpuShmemBytes: z.number().nullable()
|
|
11942
|
+
}).extend({ atMs: z.number() });
|
|
11900
11943
|
var DumpHeapSnapshotInputSchema = z.object({
|
|
11901
11944
|
/** The addon whose runner should dump a heap snapshot. */
|
|
11902
11945
|
addonId: z.string() });
|
|
@@ -11960,6 +12003,21 @@ var NodeLoadSeriesSchema = z.object({
|
|
|
11960
12003
|
/** One entry per function seen in the window, heaviest-first. */
|
|
11961
12004
|
series: z.array(LoadFunctionSeriesSchema).readonly(),
|
|
11962
12005
|
/**
|
|
12006
|
+
* The CONTAINER's memory over the same window, oldest-first.
|
|
12007
|
+
*
|
|
12008
|
+
* Sits next to `series` rather than in a method of its own because the whole
|
|
12009
|
+
* question is a subtraction: the per-process rows in `series` sum to one
|
|
12010
|
+
* number and this one is another, and an operator who has to issue two calls
|
|
12011
|
+
* to compare them will compare two different instants. Same reader, same
|
|
12012
|
+
* `sinceMs`, same `bucketMs`, same timestamps.
|
|
12013
|
+
*
|
|
12014
|
+
* **EMPTY means ABSENT, never zero.** A node with no cgroup — a developer
|
|
12015
|
+
* Mac, a bare-metal host, a container with the hierarchy hidden — reports no
|
|
12016
|
+
* points at all. A zero here would be indistinguishable from a healthy
|
|
12017
|
+
* container and is precisely the lie this field exists to avoid.
|
|
12018
|
+
*/
|
|
12019
|
+
containerMemory: z.array(ContainerMemoryPointSchema).readonly(),
|
|
12020
|
+
/**
|
|
11963
12021
|
* Width of one returned bucket, in ms. Equals the sampling cadence when no
|
|
11964
12022
|
* reduction was needed — so a caller can always say what one point covers
|
|
11965
12023
|
* without having to know whether it was reduced.
|
|
@@ -29952,10 +30010,10 @@ var rebootCapability = {
|
|
|
29952
30010
|
* recording config. NOTE on events (source of truth, R5/C3): this cap carries
|
|
29953
30011
|
* NO event surface — `getPlaybackManifest` returns playlist URLs only. Timeline
|
|
29954
30012
|
* events (motion/object/audio) come from `pipelineAnalytics` (durable SQLite
|
|
29955
|
-
* rows)
|
|
29956
|
-
*
|
|
29957
|
-
*
|
|
29958
|
-
* (`interfaces/recording-config.ts`).
|
|
30013
|
+
* rows) and are the ONLY event surface — the recorder has none. The in-RAM
|
|
30014
|
+
* playback markers it used to build were deleted on 2026-08-29 because nothing
|
|
30015
|
+
* ever read them. Event<->footage joins are by time, padded with the shared
|
|
30016
|
+
* `EVENT_PAD_MS` (`interfaces/recording-config.ts`).
|
|
29959
30017
|
*/
|
|
29960
30018
|
var RecordingStatusSchema = z.object({
|
|
29961
30019
|
deviceId: z.number(),
|
|
@@ -7,7 +7,7 @@ import type { PipelineEngineChoice } from '../types/pipeline.js';
|
|
|
7
7
|
import type { PipelineExecutionTrace, StepCadence } from '../types/pipeline-step.js';
|
|
8
8
|
import type { CameraMetrics } from './api-shared.js';
|
|
9
9
|
import type { FrameHandle } from './frame-handle.js';
|
|
10
|
-
import type { NodeProcess, SystemResourceSnapshot } from './metrics-provider.js';
|
|
10
|
+
import type { ContainerMemorySnapshot, NodeProcess, SystemResourceSnapshot } from './metrics-provider.js';
|
|
11
11
|
import type { RunnerLocalLoad } from './pipeline-runner-capability.js';
|
|
12
12
|
import type { BrokerStats } from './stream-broker.js';
|
|
13
13
|
export interface EventSource {
|
|
@@ -1198,6 +1198,16 @@ export interface EventCatalog {
|
|
|
1198
1198
|
readonly nodeId: string;
|
|
1199
1199
|
readonly processes: ReadonlyArray<NodeProcess>;
|
|
1200
1200
|
readonly timestamp: number;
|
|
1201
|
+
/**
|
|
1202
|
+
* The CONTAINER's memory at the SAME instant as `processes`, or `null`
|
|
1203
|
+
* when this node has no cgroup.
|
|
1204
|
+
*
|
|
1205
|
+
* It rides this event rather than one of its own for a single reason: the
|
|
1206
|
+
* question is a subtraction. The processes above sum to one number and
|
|
1207
|
+
* this is another, and two events would carry two timestamps that never
|
|
1208
|
+
* quite line up. `null` is ABSENT — never a zeroed reading.
|
|
1209
|
+
*/
|
|
1210
|
+
readonly containerMemory: ContainerMemorySnapshot | null;
|
|
1201
1211
|
};
|
|
1202
1212
|
/**
|
|
1203
1213
|
* Per-agent hwaccel override changed (set / cleared / re-probed). Payload
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { z } from 'zod';
|
|
2
|
-
import type { CpuBreakdownSchema, MemoryInfoSchema, DiskIoSnapshotSchema, NetworkIoSnapshotSchema, MetricsGpuInfoSchema, ProcessResourceInfoSchema, PressureInfoSchema, SystemResourceSnapshotSchema, DiskSpaceInfoSchema, PidResourceStatsSchema, AddonInstanceSchema, NodeProcessSchema, DumpHeapSnapshotInputSchema, DumpHeapSnapshotResultSchema, LoadPointSchema, LoadFunctionSeriesSchema, NodeLoadSeriesSchema, GetLoadSeriesInputSchema } from '../capabilities/metrics-provider.cap.js';
|
|
2
|
+
import type { CpuBreakdownSchema, MemoryInfoSchema, DiskIoSnapshotSchema, NetworkIoSnapshotSchema, MetricsGpuInfoSchema, ProcessResourceInfoSchema, PressureInfoSchema, SystemResourceSnapshotSchema, DiskSpaceInfoSchema, PidResourceStatsSchema, AddonInstanceSchema, NodeProcessSchema, DumpHeapSnapshotInputSchema, DumpHeapSnapshotResultSchema, LoadPointSchema, LoadFunctionSeriesSchema, ContainerMemorySnapshotSchema, ContainerMemoryPointSchema, NodeLoadSeriesSchema, GetLoadSeriesInputSchema } from '../capabilities/metrics-provider.cap.js';
|
|
3
3
|
export type CpuBreakdown = z.infer<typeof CpuBreakdownSchema>;
|
|
4
4
|
export type MemoryInfo = z.infer<typeof MemoryInfoSchema>;
|
|
5
5
|
export type DiskIoSnapshot = z.infer<typeof DiskIoSnapshotSchema>;
|
|
@@ -16,5 +16,7 @@ export type DumpHeapSnapshotInput = z.infer<typeof DumpHeapSnapshotInputSchema>;
|
|
|
16
16
|
export type DumpHeapSnapshotResult = z.infer<typeof DumpHeapSnapshotResultSchema>;
|
|
17
17
|
export type LoadSeriesPoint = z.infer<typeof LoadPointSchema>;
|
|
18
18
|
export type LoadFunctionSeries = z.infer<typeof LoadFunctionSeriesSchema>;
|
|
19
|
+
export type ContainerMemorySnapshot = z.infer<typeof ContainerMemorySnapshotSchema>;
|
|
20
|
+
export type ContainerMemoryPoint = z.infer<typeof ContainerMemoryPointSchema>;
|
|
19
21
|
export type NodeLoadSeries = z.infer<typeof NodeLoadSeriesSchema>;
|
|
20
22
|
export type GetLoadSeriesInput = z.infer<typeof GetLoadSeriesInputSchema>;
|
|
@@ -6,11 +6,10 @@ import { type CamProfile } from '../capabilities/schemas/streaming-shared.js';
|
|
|
6
6
|
* timestamp + postMs]`). Matches the admin-ui clip window (−5s/+10s).
|
|
7
7
|
*
|
|
8
8
|
* Every consumer derives from this ONE constant so event↔footage boundaries
|
|
9
|
-
* agree everywhere (C1):
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* their `startMs/endMs` with it.
|
|
9
|
+
* agree everywhere (C1): today that is the `videoclips` default provider
|
|
10
|
+
* (addon-post-analysis), which pads its clip windows with it. The recorder used
|
|
11
|
+
* to pad in-RAM playback markers with it too; those markers had no reader
|
|
12
|
+
* anywhere in the repo and were deleted on 2026-08-29.
|
|
14
13
|
*
|
|
15
14
|
* NOTE: this is a UI/JOIN convention, NOT the `events`-band keep/discard gate —
|
|
16
15
|
* that uses the per-device `preBufferSec`/`postBufferSec` config.
|