@3leaps/sysprims 0.1.13 → 0.1.14
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/README.md +1 -0
- package/dist/ffi.d.ts +4 -2
- package/dist/ffi.d.ts.map +1 -1
- package/dist/ffi.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +55 -11
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +20 -0
- package/dist/types.d.ts.map +1 -1
- package/native/src/lib.rs +136 -42
- package/package.json +8 -8
package/README.md
CHANGED
package/dist/ffi.d.ts
CHANGED
|
@@ -16,12 +16,14 @@ export type SysprimsCallVoidResult = {
|
|
|
16
16
|
export type SysprimsLib = {
|
|
17
17
|
sysprimsAbiVersion: () => number;
|
|
18
18
|
sysprimsProcGet: (pid: number) => SysprimsCallJsonResult;
|
|
19
|
+
sysprimsProcGetEx: (pid: number, optionsJson: string) => SysprimsCallJsonResult;
|
|
19
20
|
sysprimsProcList: (filterJson: string) => SysprimsCallJsonResult;
|
|
21
|
+
sysprimsProcListEx: (filterJson: string, optionsJson: string) => SysprimsCallJsonResult;
|
|
20
22
|
sysprimsProcListeningPorts: (filterJson: string) => SysprimsCallJsonResult;
|
|
21
23
|
sysprimsProcWaitPid: (pid: number, timeoutMs: number) => SysprimsCallJsonResult;
|
|
22
24
|
sysprimsProcListFds: (pid: number, filterJson: string) => SysprimsCallJsonResult;
|
|
23
|
-
sysprimsProcDescendants: (rootPid: number, maxLevels: number,
|
|
24
|
-
sysprimsProcKillDescendants: (rootPid: number, maxLevels: number, signal: number,
|
|
25
|
+
sysprimsProcDescendants: (rootPid: number, maxLevels: number, configJson: string) => SysprimsCallJsonResult;
|
|
26
|
+
sysprimsProcKillDescendants: (rootPid: number, maxLevels: number, signal: number, configJson: string) => SysprimsCallJsonResult;
|
|
25
27
|
sysprimsSelfGetpgid: () => SysprimsCallU32Result;
|
|
26
28
|
sysprimsSelfGetsid: () => SysprimsCallU32Result;
|
|
27
29
|
sysprimsSignalSend: (pid: number, signal: number) => SysprimsCallVoidResult;
|
package/dist/ffi.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ffi.d.ts","sourceRoot":"","sources":["../src/ffi.ts"],"names":[],"mappings":"AAQA,wBAAgB,YAAY,IAAI,WAAW,CAQ1C;AAcD,MAAM,MAAM,sBAAsB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACvF,MAAM,MAAM,qBAAqB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACvF,MAAM,MAAM,sBAAsB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,MAAM,MAAM,WAAW,GAAG;IACxB,kBAAkB,EAAE,MAAM,MAAM,CAAC;IAGjC,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB,CAAC;IACzD,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,sBAAsB,CAAC;IACjE,0BAA0B,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAC3E,mBAAmB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAChF,mBAAmB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAGjF,uBAAuB,EAAE,CACvB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,KACf,sBAAsB,CAAC;IAC5B,2BAA2B,EAAE,CAC3B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,KACf,sBAAsB,CAAC;IAG5B,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;IACjD,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;IAGhD,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAC5E,uBAAuB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAClF,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAC3D,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAG3D,qBAAqB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAGnF,oBAAoB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,sBAAsB,CAAC;CACtE,CAAC;AAUF,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,sBAAsB,GAAG,OAAO,CAMxE;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,qBAAqB,GAAG,MAAM,CAMlE;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,sBAAsB,GAAG,IAAI,CAK/D"}
|
|
1
|
+
{"version":3,"file":"ffi.d.ts","sourceRoot":"","sources":["../src/ffi.ts"],"names":[],"mappings":"AAQA,wBAAgB,YAAY,IAAI,WAAW,CAQ1C;AAcD,MAAM,MAAM,sBAAsB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACvF,MAAM,MAAM,qBAAqB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACvF,MAAM,MAAM,sBAAsB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,MAAM,MAAM,WAAW,GAAG;IACxB,kBAAkB,EAAE,MAAM,MAAM,CAAC;IAGjC,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB,CAAC;IACzD,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAChF,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,sBAAsB,CAAC;IACjE,kBAAkB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,sBAAsB,CAAC;IACxF,0BAA0B,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAC3E,mBAAmB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAChF,mBAAmB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAGjF,uBAAuB,EAAE,CACvB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,KACf,sBAAsB,CAAC;IAC5B,2BAA2B,EAAE,CAC3B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,KACf,sBAAsB,CAAC;IAG5B,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;IACjD,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;IAGhD,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAC5E,uBAAuB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAClF,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAC3D,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAG3D,qBAAqB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAGnF,oBAAoB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,sBAAsB,CAAC;CACtE,CAAC;AAUF,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,sBAAsB,GAAG,OAAO,CAMxE;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,qBAAqB,GAAG,MAAM,CAMlE;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,sBAAsB,GAAG,IAAI,CAK/D"}
|
package/dist/ffi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ffi.js","sourceRoot":"","sources":["../src/ffi.ts"],"names":[],"mappings":";;;;;AAQA,oCAQC;
|
|
1
|
+
{"version":3,"file":"ffi.js","sourceRoot":"","sources":["../src/ffi.ts"],"names":[],"mappings":";;;;;AAQA,oCAQC;AAoED,wCAMC;AAED,gCAMC;AAED,4BAKC;AAzGD,sDAAyB;AACzB,0DAA6B;AAC7B,qCAA4D;AAE5D,qCAA6C;AAE7C,IAAI,MAAM,GAAuB,IAAI,CAAC;AAEtC,SAAgB,YAAY;IAC1B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,WAAW,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAE/C,MAAM,GAAG,GAAgB,IAAA,0BAAiB,EAAC,WAAW,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,CAAC;IACb,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,IAAI,OAAO,GAAG,QAAQ,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACrD,IAAI,iBAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,OAAO,CAAC;QAC7C,MAAM,MAAM,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,OAAO;YAAE,MAAM;QAC9B,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;AAC5E,CAAC;AAgDD,SAAS,kBAAkB,CAAC,IAAY,EAAE,OAAgB;IACxD,MAAM,cAAc,GAAG,UAAU,IAAI,GAAG,CAAC;IACzC,MAAM,IAAI,sBAAa,CACrB,IAAyB,EACzB,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,cAAc,EAAE,CAC5E,CAAC;AACJ,CAAC;AAED,SAAgB,cAAc,CAAC,EAAgC;IAC7D,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;IACf,IAAI,CAAC,CAAC,IAAI,KAAK,0BAAiB,CAAC,EAAE,EAAE,CAAC;QACpC,kBAAkB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAc,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,UAAU,CAAC,EAA+B;IACxD,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;IACf,IAAI,CAAC,CAAC,IAAI,KAAK,0BAAiB,CAAC,EAAE,EAAE,CAAC;QACpC,kBAAkB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,OAAQ,CAAC,CAAC,KAAgB,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,SAAgB,QAAQ,CAAC,EAAgC;IACvD,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;IACf,IAAI,CAAC,CAAC,IAAI,KAAK,0BAAiB,CAAC,EAAE,EAAE,CAAC;QACpC,kBAAkB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SysprimsError, SysprimsErrorCode } from "./errors";
|
|
2
|
-
import type { BatchKillResult, DescendantsOptions, DescendantsResult, FdFilter, FdSnapshot, KillDescendantsOptions, KillDescendantsResult, PortBindingsSnapshot, PortFilter, ProcessFilter, ProcessInfo, ProcessSnapshot, SpawnInGroupConfig, SpawnInGroupResult, TerminateTreeConfig, TerminateTreeResult, WaitPidResult } from "./types";
|
|
2
|
+
import type { BatchKillResult, DescendantsOptions, DescendantsResult, FdFilter, FdSnapshot, KillDescendantsOptions, KillDescendantsResult, PortBindingsSnapshot, PortFilter, ProcessFilter, ProcessInfo, ProcessOptions, ProcessSnapshot, SpawnInGroupConfig, SpawnInGroupResult, TerminateTreeConfig, TerminateTreeResult, WaitPidResult } from "./types";
|
|
3
3
|
export { SysprimsError, SysprimsErrorCode };
|
|
4
|
-
export type { BatchKillFailure, BatchKillResult, DescendantsLevel, DescendantsOptions, DescendantsResult, FdFilter, FdSnapshot, KillDescendantsFailure, KillDescendantsOptions, KillDescendantsResult, PortBinding, PortBindingsSnapshot, PortFilter, ProcessFilter, ProcessInfo, ProcessSnapshot, ProcessState, Protocol, SpawnInGroupConfig, SpawnInGroupResult, TerminateTreeConfig, TerminateTreeResult, WaitPidResult, } from "./types";
|
|
4
|
+
export type { BatchKillFailure, BatchKillResult, CpuMode, DescendantsLevel, DescendantsOptions, DescendantsResult, FdFilter, FdSnapshot, KillDescendantsFailure, KillDescendantsOptions, KillDescendantsResult, PortBinding, PortBindingsSnapshot, PortFilter, ProcessFilter, ProcessInfo, ProcessOptions, ProcessSnapshot, ProcessState, Protocol, SpawnInGroupConfig, SpawnInGroupResult, TerminateTreeConfig, TerminateTreeResult, WaitPidResult, } from "./types";
|
|
5
5
|
/**
|
|
6
6
|
* Get information about a specific process by PID.
|
|
7
7
|
*
|
|
@@ -10,7 +10,7 @@ export type { BatchKillFailure, BatchKillResult, DescendantsLevel, DescendantsOp
|
|
|
10
10
|
* @throws {SysprimsError} NotFound if process does not exist
|
|
11
11
|
* @throws {SysprimsError} PermissionDenied if access is denied
|
|
12
12
|
*/
|
|
13
|
-
export declare function procGet(pid: number): ProcessInfo;
|
|
13
|
+
export declare function procGet(pid: number, options?: ProcessOptions): ProcessInfo;
|
|
14
14
|
/**
|
|
15
15
|
* List running processes with optional filtering.
|
|
16
16
|
*
|
|
@@ -38,7 +38,7 @@ export declare function procGet(pid: number): ProcessInfo;
|
|
|
38
38
|
* // Filter by multiple criteria
|
|
39
39
|
* const heavy = processList({ cpu_above: 50, memory_above_kb: 100000 });
|
|
40
40
|
*/
|
|
41
|
-
export declare function processList(filter?: ProcessFilter): ProcessSnapshot;
|
|
41
|
+
export declare function processList(filter?: ProcessFilter, options?: ProcessOptions): ProcessSnapshot;
|
|
42
42
|
/**
|
|
43
43
|
* List listening network ports with optional filtering.
|
|
44
44
|
*
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE5D,OAAO,KAAK,EAEV,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -26,6 +26,48 @@ const ffi_1 = require("./ffi");
|
|
|
26
26
|
// -----------------------------------------------------------------------------
|
|
27
27
|
// Process Inspection
|
|
28
28
|
// -----------------------------------------------------------------------------
|
|
29
|
+
function serializeProcessOptions(options) {
|
|
30
|
+
if (!options) {
|
|
31
|
+
return "";
|
|
32
|
+
}
|
|
33
|
+
const wire = {};
|
|
34
|
+
if (options.includeEnv === true) {
|
|
35
|
+
wire.include_env = true;
|
|
36
|
+
}
|
|
37
|
+
if (options.includeThreads === true) {
|
|
38
|
+
wire.include_threads = true;
|
|
39
|
+
}
|
|
40
|
+
if (!wire.include_env && !wire.include_threads) {
|
|
41
|
+
return "";
|
|
42
|
+
}
|
|
43
|
+
return JSON.stringify(wire);
|
|
44
|
+
}
|
|
45
|
+
function serializeDescendantsConfig(options) {
|
|
46
|
+
if (!options) {
|
|
47
|
+
return "";
|
|
48
|
+
}
|
|
49
|
+
const wire = {};
|
|
50
|
+
if (options.filter) {
|
|
51
|
+
Object.assign(wire, options.filter);
|
|
52
|
+
}
|
|
53
|
+
if (options.cpuMode !== undefined) {
|
|
54
|
+
if (options.cpuMode !== "lifetime" && options.cpuMode !== "monitor") {
|
|
55
|
+
throw new errors_1.SysprimsError(errors_1.SysprimsErrorCode.InvalidArgument, `invalid cpuMode: ${String(options.cpuMode)}`);
|
|
56
|
+
}
|
|
57
|
+
wire.cpu_mode = options.cpuMode;
|
|
58
|
+
}
|
|
59
|
+
if (options.sampleDurationMs !== undefined) {
|
|
60
|
+
const sample = options.sampleDurationMs;
|
|
61
|
+
if (!Number.isFinite(sample) || sample < 0) {
|
|
62
|
+
throw new errors_1.SysprimsError(errors_1.SysprimsErrorCode.InvalidArgument, "sampleDurationMs must be a finite number >= 0");
|
|
63
|
+
}
|
|
64
|
+
wire.sample_duration_ms = Math.trunc(sample);
|
|
65
|
+
}
|
|
66
|
+
if (Object.keys(wire).length === 0) {
|
|
67
|
+
return "";
|
|
68
|
+
}
|
|
69
|
+
return JSON.stringify(wire);
|
|
70
|
+
}
|
|
29
71
|
/**
|
|
30
72
|
* Get information about a specific process by PID.
|
|
31
73
|
*
|
|
@@ -34,9 +76,10 @@ const ffi_1 = require("./ffi");
|
|
|
34
76
|
* @throws {SysprimsError} NotFound if process does not exist
|
|
35
77
|
* @throws {SysprimsError} PermissionDenied if access is denied
|
|
36
78
|
*/
|
|
37
|
-
function procGet(pid) {
|
|
79
|
+
function procGet(pid, options) {
|
|
38
80
|
const lib = (0, ffi_1.loadSysprims)();
|
|
39
|
-
const
|
|
81
|
+
const optionsJson = serializeProcessOptions(options);
|
|
82
|
+
const result = (0, ffi_1.callJsonReturn)(() => lib.sysprimsProcGetEx(pid >>> 0, optionsJson));
|
|
40
83
|
return result;
|
|
41
84
|
}
|
|
42
85
|
/**
|
|
@@ -66,10 +109,11 @@ function procGet(pid) {
|
|
|
66
109
|
* // Filter by multiple criteria
|
|
67
110
|
* const heavy = processList({ cpu_above: 50, memory_above_kb: 100000 });
|
|
68
111
|
*/
|
|
69
|
-
function processList(filter) {
|
|
112
|
+
function processList(filter, options) {
|
|
70
113
|
const lib = (0, ffi_1.loadSysprims)();
|
|
71
114
|
const filterJson = filter ? JSON.stringify(filter) : "";
|
|
72
|
-
const
|
|
115
|
+
const optionsJson = serializeProcessOptions(options);
|
|
116
|
+
const result = (0, ffi_1.callJsonReturn)(() => lib.sysprimsProcListEx(filterJson, optionsJson));
|
|
73
117
|
return result;
|
|
74
118
|
}
|
|
75
119
|
/**
|
|
@@ -107,7 +151,7 @@ function listeningPorts(filter) {
|
|
|
107
151
|
// -----------------------------------------------------------------------------
|
|
108
152
|
// Descendants
|
|
109
153
|
// -----------------------------------------------------------------------------
|
|
110
|
-
const MAX_LEVELS_ALL =
|
|
154
|
+
const MAX_LEVELS_ALL = 0xffffffff; // u32::MAX
|
|
111
155
|
/**
|
|
112
156
|
* Get descendants of a process.
|
|
113
157
|
*
|
|
@@ -134,11 +178,11 @@ const MAX_LEVELS_ALL = 0xFFFFFFFF; // u32::MAX
|
|
|
134
178
|
*/
|
|
135
179
|
function descendants(pid, options) {
|
|
136
180
|
const lib = (0, ffi_1.loadSysprims)();
|
|
137
|
-
const maxLevels = options?.maxLevels != null && isFinite(options.maxLevels)
|
|
181
|
+
const maxLevels = options?.maxLevels != null && Number.isFinite(options.maxLevels)
|
|
138
182
|
? options.maxLevels >>> 0
|
|
139
183
|
: MAX_LEVELS_ALL;
|
|
140
|
-
const
|
|
141
|
-
return (0, ffi_1.callJsonReturn)(() => lib.sysprimsProcDescendants(pid >>> 0, maxLevels,
|
|
184
|
+
const configJson = serializeDescendantsConfig(options);
|
|
185
|
+
return (0, ffi_1.callJsonReturn)(() => lib.sysprimsProcDescendants(pid >>> 0, maxLevels, configJson));
|
|
142
186
|
}
|
|
143
187
|
/**
|
|
144
188
|
* Kill descendants of a process.
|
|
@@ -166,11 +210,11 @@ function descendants(pid, options) {
|
|
|
166
210
|
*/
|
|
167
211
|
function killDescendants(pid, signal = 15, options) {
|
|
168
212
|
const lib = (0, ffi_1.loadSysprims)();
|
|
169
|
-
const maxLevels = options?.maxLevels != null && isFinite(options.maxLevels)
|
|
213
|
+
const maxLevels = options?.maxLevels != null && Number.isFinite(options.maxLevels)
|
|
170
214
|
? options.maxLevels >>> 0
|
|
171
215
|
: MAX_LEVELS_ALL;
|
|
172
|
-
const
|
|
173
|
-
return (0, ffi_1.callJsonReturn)(() => lib.sysprimsProcKillDescendants(pid >>> 0, maxLevels, signal | 0,
|
|
216
|
+
const configJson = serializeDescendantsConfig(options);
|
|
217
|
+
return (0, ffi_1.callJsonReturn)(() => lib.sysprimsProcKillDescendants(pid >>> 0, maxLevels, signal | 0, configJson));
|
|
174
218
|
}
|
|
175
219
|
// -----------------------------------------------------------------------------
|
|
176
220
|
// Wait
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export type JsonObject = Record<string, unknown>;
|
|
2
2
|
export type ProcessState = "running" | "sleeping" | "stopped" | "zombie" | "unknown";
|
|
3
|
+
export type CpuMode = "lifetime" | "monitor";
|
|
3
4
|
/**
|
|
4
5
|
* Information about a single process.
|
|
5
6
|
* Matches schema: process-info.schema.json#/definitions/process_info
|
|
@@ -16,6 +17,8 @@ export interface ProcessInfo {
|
|
|
16
17
|
exe_path?: string | null;
|
|
17
18
|
state: ProcessState;
|
|
18
19
|
cmdline: string[];
|
|
20
|
+
env?: Record<string, string> | null;
|
|
21
|
+
thread_count?: number | null;
|
|
19
22
|
}
|
|
20
23
|
/**
|
|
21
24
|
* Filter criteria for process listing.
|
|
@@ -32,6 +35,15 @@ export interface ProcessFilter {
|
|
|
32
35
|
memory_above_kb?: number;
|
|
33
36
|
running_for_at_least_secs?: number;
|
|
34
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Optional process detail collection controls.
|
|
40
|
+
*
|
|
41
|
+
* Uses camelCase at the TypeScript API boundary; converted to snake_case for FFI.
|
|
42
|
+
*/
|
|
43
|
+
export interface ProcessOptions {
|
|
44
|
+
includeEnv?: boolean;
|
|
45
|
+
includeThreads?: boolean;
|
|
46
|
+
}
|
|
35
47
|
/**
|
|
36
48
|
* Snapshot of running processes.
|
|
37
49
|
* Matches schema: process-info.schema.json
|
|
@@ -177,6 +189,10 @@ export interface DescendantsOptions {
|
|
|
177
189
|
maxLevels?: number;
|
|
178
190
|
/** Optional filter applied to descendant processes. */
|
|
179
191
|
filter?: ProcessFilter;
|
|
192
|
+
/** CPU measurement mode used for cpu_above evaluation. */
|
|
193
|
+
cpuMode?: CpuMode;
|
|
194
|
+
/** Sampling interval in milliseconds (used with monitor mode). */
|
|
195
|
+
sampleDurationMs?: number;
|
|
180
196
|
}
|
|
181
197
|
/**
|
|
182
198
|
* Options for kill-descendants operation.
|
|
@@ -186,6 +202,10 @@ export interface KillDescendantsOptions {
|
|
|
186
202
|
maxLevels?: number;
|
|
187
203
|
/** Optional filter applied to descendant processes. */
|
|
188
204
|
filter?: ProcessFilter;
|
|
205
|
+
/** CPU measurement mode used for cpu_above evaluation. */
|
|
206
|
+
cpuMode?: CpuMode;
|
|
207
|
+
/** Sampling interval in milliseconds (used with monitor mode). */
|
|
208
|
+
sampleDurationMs?: number;
|
|
189
209
|
}
|
|
190
210
|
/**
|
|
191
211
|
* A single failure in a kill-descendants operation.
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAIjD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/native/src/lib.rs
CHANGED
|
@@ -3,7 +3,10 @@ use std::time::Duration;
|
|
|
3
3
|
use napi_derive::napi;
|
|
4
4
|
use sysprims_core::schema::{SPAWN_IN_GROUP_CONFIG_V1, TERMINATE_TREE_CONFIG_V1};
|
|
5
5
|
use sysprims_core::SysprimsError;
|
|
6
|
-
use sysprims_proc::{
|
|
6
|
+
use sysprims_proc::{
|
|
7
|
+
descendants_with_config_and_options, CpuMode, DescendantsConfig, FdFilter, PortFilter,
|
|
8
|
+
ProcessFilter, ProcessOptions,
|
|
9
|
+
};
|
|
7
10
|
use sysprims_timeout::{spawn_in_group, terminate_tree, SpawnInGroupConfig, TerminateTreeConfig};
|
|
8
11
|
|
|
9
12
|
#[repr(i32)]
|
|
@@ -113,9 +116,104 @@ pub fn sysprims_abi_version() -> u32 {
|
|
|
113
116
|
// Process Inspection
|
|
114
117
|
// -----------------------------------------------------------------------------
|
|
115
118
|
|
|
119
|
+
#[derive(Debug, Default, serde::Deserialize)]
|
|
120
|
+
#[serde(default, deny_unknown_fields)]
|
|
121
|
+
struct ProcessOptionsWire {
|
|
122
|
+
include_env: bool,
|
|
123
|
+
include_threads: bool,
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
fn parse_process_options(options_json: &str) -> Result<ProcessOptions, SysprimsError> {
|
|
127
|
+
if options_json.is_empty() || options_json == "{}" {
|
|
128
|
+
return Ok(ProcessOptions::default());
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
let wire: ProcessOptionsWire = serde_json::from_str(options_json)
|
|
132
|
+
.map_err(|e| SysprimsError::invalid_argument(format!("invalid options JSON: {}", e)))?;
|
|
133
|
+
|
|
134
|
+
Ok(ProcessOptions {
|
|
135
|
+
include_env: wire.include_env,
|
|
136
|
+
include_threads: wire.include_threads,
|
|
137
|
+
})
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
#[derive(Debug, Clone, Copy, Default, serde::Deserialize)]
|
|
141
|
+
#[serde(rename_all = "lowercase")]
|
|
142
|
+
enum CpuModeWire {
|
|
143
|
+
#[default]
|
|
144
|
+
Lifetime,
|
|
145
|
+
Monitor,
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
#[derive(Debug, Default, serde::Deserialize)]
|
|
149
|
+
#[serde(default, deny_unknown_fields)]
|
|
150
|
+
struct DescendantsConfigWire {
|
|
151
|
+
#[serde(flatten)]
|
|
152
|
+
filter: ProcessFilter,
|
|
153
|
+
cpu_mode: CpuModeWire,
|
|
154
|
+
sample_duration_ms: Option<u64>,
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
#[derive(Debug, Default)]
|
|
158
|
+
struct ParsedDescendantsConfig {
|
|
159
|
+
filter: Option<ProcessFilter>,
|
|
160
|
+
cpu_mode: CpuMode,
|
|
161
|
+
sample_duration: Option<Duration>,
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
fn process_filter_has_criteria(filter: &ProcessFilter) -> bool {
|
|
165
|
+
filter.name_contains.is_some()
|
|
166
|
+
|| filter.name_equals.is_some()
|
|
167
|
+
|| filter.user_equals.is_some()
|
|
168
|
+
|| filter.pid_in.is_some()
|
|
169
|
+
|| filter.ppid.is_some()
|
|
170
|
+
|| filter.state_in.is_some()
|
|
171
|
+
|| filter.cpu_above.is_some()
|
|
172
|
+
|| filter.memory_above_kb.is_some()
|
|
173
|
+
|| filter.running_for_at_least_secs.is_some()
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
fn wire_cpu_mode_to_proc(mode: CpuModeWire) -> CpuMode {
|
|
177
|
+
match mode {
|
|
178
|
+
CpuModeWire::Lifetime => CpuMode::Lifetime,
|
|
179
|
+
CpuModeWire::Monitor => CpuMode::Monitor,
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
fn parse_descendants_config(config_json: &str) -> Result<ParsedDescendantsConfig, SysprimsError> {
|
|
184
|
+
if config_json.is_empty() || config_json == "{}" {
|
|
185
|
+
return Ok(ParsedDescendantsConfig::default());
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
let wire: DescendantsConfigWire = serde_json::from_str(config_json)
|
|
189
|
+
.map_err(|e| SysprimsError::invalid_argument(format!("invalid config JSON: {}", e)))?;
|
|
190
|
+
|
|
191
|
+
let filter = if process_filter_has_criteria(&wire.filter) {
|
|
192
|
+
Some(wire.filter)
|
|
193
|
+
} else {
|
|
194
|
+
None
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
Ok(ParsedDescendantsConfig {
|
|
198
|
+
filter,
|
|
199
|
+
cpu_mode: wire_cpu_mode_to_proc(wire.cpu_mode),
|
|
200
|
+
sample_duration: wire.sample_duration_ms.map(Duration::from_millis),
|
|
201
|
+
})
|
|
202
|
+
}
|
|
203
|
+
|
|
116
204
|
#[napi]
|
|
117
205
|
pub fn sysprims_proc_get(pid: u32) -> SysprimsCallJsonResult {
|
|
118
|
-
|
|
206
|
+
sysprims_proc_get_ex(pid, String::new())
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
#[napi]
|
|
210
|
+
pub fn sysprims_proc_get_ex(pid: u32, options_json: String) -> SysprimsCallJsonResult {
|
|
211
|
+
let options = match parse_process_options(&options_json) {
|
|
212
|
+
Ok(o) => o,
|
|
213
|
+
Err(e) => return err_json(e),
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
match sysprims_proc::get_process_with_options(pid, options) {
|
|
119
217
|
Ok(info) => match serde_json::to_string(&info) {
|
|
120
218
|
Ok(json) => ok_json(json),
|
|
121
219
|
Err(e) => err_json(SysprimsError::internal(format!(
|
|
@@ -129,6 +227,11 @@ pub fn sysprims_proc_get(pid: u32) -> SysprimsCallJsonResult {
|
|
|
129
227
|
|
|
130
228
|
#[napi]
|
|
131
229
|
pub fn sysprims_proc_list(filter_json: String) -> SysprimsCallJsonResult {
|
|
230
|
+
sysprims_proc_list_ex(filter_json, String::new())
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
#[napi]
|
|
234
|
+
pub fn sysprims_proc_list_ex(filter_json: String, options_json: String) -> SysprimsCallJsonResult {
|
|
132
235
|
let filter = if filter_json.is_empty() || filter_json == "{}" {
|
|
133
236
|
ProcessFilter::default()
|
|
134
237
|
} else {
|
|
@@ -147,7 +250,12 @@ pub fn sysprims_proc_list(filter_json: String) -> SysprimsCallJsonResult {
|
|
|
147
250
|
return err_json(e);
|
|
148
251
|
}
|
|
149
252
|
|
|
150
|
-
match
|
|
253
|
+
let options = match parse_process_options(&options_json) {
|
|
254
|
+
Ok(o) => o,
|
|
255
|
+
Err(e) => return err_json(e),
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
match sysprims_proc::snapshot_filtered_with_options(&filter, options) {
|
|
151
259
|
Ok(snapshot) => match serde_json::to_string(&snapshot) {
|
|
152
260
|
Ok(json) => ok_json(json),
|
|
153
261
|
Err(e) => err_json(SysprimsError::internal(format!(
|
|
@@ -245,29 +353,22 @@ pub fn sysprims_proc_wait_pid(pid: u32, timeout_ms: u32) -> SysprimsCallJsonResu
|
|
|
245
353
|
pub fn sysprims_proc_descendants(
|
|
246
354
|
root_pid: u32,
|
|
247
355
|
max_levels: u32,
|
|
248
|
-
|
|
356
|
+
config_json: String,
|
|
249
357
|
) -> SysprimsCallJsonResult {
|
|
250
|
-
let
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
match serde_json::from_str::<ProcessFilter>(&filter_json) {
|
|
254
|
-
Ok(f) => Some(f),
|
|
255
|
-
Err(e) => {
|
|
256
|
-
return err_json(SysprimsError::invalid_argument(format!(
|
|
257
|
-
"invalid filter JSON: {}",
|
|
258
|
-
e
|
|
259
|
-
)))
|
|
260
|
-
}
|
|
261
|
-
}
|
|
358
|
+
let parsed = match parse_descendants_config(&config_json) {
|
|
359
|
+
Ok(c) => c,
|
|
360
|
+
Err(e) => return err_json(e),
|
|
262
361
|
};
|
|
263
362
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
363
|
+
let config = DescendantsConfig {
|
|
364
|
+
root_pid,
|
|
365
|
+
max_levels: Some(max_levels),
|
|
366
|
+
filter: parsed.filter,
|
|
367
|
+
cpu_mode: parsed.cpu_mode,
|
|
368
|
+
sample_duration: parsed.sample_duration,
|
|
369
|
+
};
|
|
269
370
|
|
|
270
|
-
match
|
|
371
|
+
match descendants_with_config_and_options(config, ProcessOptions::default()) {
|
|
271
372
|
Ok(result) => match serde_json::to_string(&result) {
|
|
272
373
|
Ok(json) => ok_json(json),
|
|
273
374
|
Err(e) => err_json(SysprimsError::internal(format!(
|
|
@@ -284,30 +385,23 @@ pub fn sysprims_proc_kill_descendants(
|
|
|
284
385
|
root_pid: u32,
|
|
285
386
|
max_levels: u32,
|
|
286
387
|
signal: i32,
|
|
287
|
-
|
|
388
|
+
config_json: String,
|
|
288
389
|
) -> SysprimsCallJsonResult {
|
|
289
|
-
let
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
match serde_json::from_str::<ProcessFilter>(&filter_json) {
|
|
293
|
-
Ok(f) => Some(f),
|
|
294
|
-
Err(e) => {
|
|
295
|
-
return err_json(SysprimsError::invalid_argument(format!(
|
|
296
|
-
"invalid filter JSON: {}",
|
|
297
|
-
e
|
|
298
|
-
)))
|
|
299
|
-
}
|
|
300
|
-
}
|
|
390
|
+
let parsed = match parse_descendants_config(&config_json) {
|
|
391
|
+
Ok(c) => c,
|
|
392
|
+
Err(e) => return err_json(e),
|
|
301
393
|
};
|
|
302
394
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
395
|
+
let config = DescendantsConfig {
|
|
396
|
+
root_pid,
|
|
397
|
+
max_levels: Some(max_levels),
|
|
398
|
+
filter: parsed.filter,
|
|
399
|
+
cpu_mode: parsed.cpu_mode,
|
|
400
|
+
sample_duration: parsed.sample_duration,
|
|
401
|
+
};
|
|
308
402
|
|
|
309
|
-
// Traverse descendants
|
|
310
|
-
let desc_result = match
|
|
403
|
+
// Traverse descendants before sending any signal.
|
|
404
|
+
let desc_result = match descendants_with_config_and_options(config, ProcessOptions::default()) {
|
|
311
405
|
Ok(r) => r,
|
|
312
406
|
Err(e) => return err_json(e),
|
|
313
407
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@3leaps/sysprims",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"description": "GPL-free cross-platform process utilities (TypeScript bindings via Node-API native addon)",
|
|
5
5
|
"license": "MIT OR Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -45,13 +45,13 @@
|
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {},
|
|
47
47
|
"optionalDependencies": {
|
|
48
|
-
"@3leaps/sysprims-linux-x64-gnu": "0.1.
|
|
49
|
-
"@3leaps/sysprims-linux-x64-musl": "0.1.
|
|
50
|
-
"@3leaps/sysprims-linux-arm64-gnu": "0.1.
|
|
51
|
-
"@3leaps/sysprims-linux-arm64-musl": "0.1.
|
|
52
|
-
"@3leaps/sysprims-darwin-arm64": "0.1.
|
|
53
|
-
"@3leaps/sysprims-win32-x64-msvc": "0.1.
|
|
54
|
-
"@3leaps/sysprims-win32-arm64-msvc": "0.1.
|
|
48
|
+
"@3leaps/sysprims-linux-x64-gnu": "0.1.14",
|
|
49
|
+
"@3leaps/sysprims-linux-x64-musl": "0.1.14",
|
|
50
|
+
"@3leaps/sysprims-linux-arm64-gnu": "0.1.14",
|
|
51
|
+
"@3leaps/sysprims-linux-arm64-musl": "0.1.14",
|
|
52
|
+
"@3leaps/sysprims-darwin-arm64": "0.1.14",
|
|
53
|
+
"@3leaps/sysprims-win32-x64-msvc": "0.1.14",
|
|
54
|
+
"@3leaps/sysprims-win32-arm64-msvc": "0.1.14"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@napi-rs/cli": "^2.18.4",
|