@3leaps/sysprims 0.1.12 → 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 CHANGED
@@ -5,6 +5,7 @@ TypeScript/Node.js bindings for sysprims using a Node-API (N-API) native addon (
5
5
  ## Platform support
6
6
 
7
7
  Supported:
8
+
8
9
  - macOS: arm64
9
10
  - Linux: glibc and musl (Alpine)
10
11
  - Windows: x64, arm64 (msvc)
package/dist/ffi.d.ts CHANGED
@@ -16,10 +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;
25
+ sysprimsProcDescendants: (rootPid: number, maxLevels: number, configJson: string) => SysprimsCallJsonResult;
26
+ sysprimsProcKillDescendants: (rootPid: number, maxLevels: number, signal: number, configJson: string) => SysprimsCallJsonResult;
23
27
  sysprimsSelfGetpgid: () => SysprimsCallU32Result;
24
28
  sysprimsSelfGetsid: () => SysprimsCallU32Result;
25
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,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;AAqDD,wCAMC;AAED,gCAMC;AAED,4BAKC;AA1FD,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;AAiCD,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"}
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, FdFilter, FdSnapshot, 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, FdFilter, FdSnapshot, 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, FdFilter, FdSnapshot, PortBindi
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
  *
@@ -66,6 +66,56 @@ export declare function processList(filter?: ProcessFilter): ProcessSnapshot;
66
66
  * const http = listeningPorts({ local_port: 8080 });
67
67
  */
68
68
  export declare function listeningPorts(filter?: PortFilter): PortBindingsSnapshot;
69
+ /**
70
+ * Get descendants of a process.
71
+ *
72
+ * Performs a BFS traversal of the process tree starting at `pid` and returns
73
+ * processes grouped by depth level.
74
+ *
75
+ * @param pid - Root process ID to traverse from
76
+ * @param options - Optional traversal configuration
77
+ * @returns Descendants grouped by level with metadata
78
+ * @throws {SysprimsError} NotFound if root process does not exist
79
+ * @throws {SysprimsError} InvalidArgument if pid is 0 or filter is invalid
80
+ *
81
+ * @example
82
+ * // Get all descendants
83
+ * const result = descendants(1234);
84
+ *
85
+ * @example
86
+ * // Get direct children only
87
+ * const result = descendants(1234, { maxLevels: 1 });
88
+ *
89
+ * @example
90
+ * // Filter descendants by name
91
+ * const result = descendants(1234, { filter: { name_contains: "worker" } });
92
+ */
93
+ export declare function descendants(pid: number, options?: DescendantsOptions): DescendantsResult;
94
+ /**
95
+ * Kill descendants of a process.
96
+ *
97
+ * Traverses the process tree from `pid`, collects descendant PIDs, and sends
98
+ * the specified signal. Safety rules are enforced: root PID, self, PID 1, and
99
+ * parent are automatically excluded from the kill list.
100
+ *
101
+ * @param pid - Root process ID (will NOT be killed)
102
+ * @param signal - Signal number to send (default: 15 = SIGTERM)
103
+ * @param options - Optional configuration
104
+ * @returns Result with succeeded/failed PIDs and safety skip count
105
+ * @throws {SysprimsError} NotFound if root process does not exist
106
+ * @throws {SysprimsError} InvalidArgument if pid is 0 or filter is invalid
107
+ *
108
+ * @example
109
+ * // Kill all descendants with SIGTERM
110
+ * const result = killDescendants(1234);
111
+ *
112
+ * @example
113
+ * // Force kill descendants matching a filter
114
+ * const result = killDescendants(1234, 9, {
115
+ * filter: { cpu_above: 90 },
116
+ * });
117
+ */
118
+ export declare function killDescendants(pid: number, signal?: number, options?: KillDescendantsOptions): KillDescendantsResult;
69
119
  /**
70
120
  * Wait for a PID to exit up to the provided timeout (milliseconds).
71
121
  *
@@ -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,EACf,QAAQ,EACR,UAAU,EACV,oBAAoB,EACpB,UAAU,EACV,aAAa,EACb,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC;AAC5C,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,aAAa,EACb,WAAW,EACX,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,GACd,MAAM,SAAS,CAAC;AAMjB;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAIhD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,eAAe,CAKnE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,oBAAoB,CAKxE;AAMD;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,CAIrE;AAMD;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAKlE;AAMD;;;;;GAKG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAGjC;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAGhC;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAG5D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGlE;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAG3C;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAG3C;AA8BD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAexE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CAc7D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CAc7D;AAMD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,CAiB5F;AAMD,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,kBAAkB,CAS3E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,6 +4,8 @@ exports.SysprimsErrorCode = exports.SysprimsError = void 0;
4
4
  exports.procGet = procGet;
5
5
  exports.processList = processList;
6
6
  exports.listeningPorts = listeningPorts;
7
+ exports.descendants = descendants;
8
+ exports.killDescendants = killDescendants;
7
9
  exports.waitPID = waitPID;
8
10
  exports.listFds = listFds;
9
11
  exports.selfPGID = selfPGID;
@@ -24,6 +26,48 @@ const ffi_1 = require("./ffi");
24
26
  // -----------------------------------------------------------------------------
25
27
  // Process Inspection
26
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
+ }
27
71
  /**
28
72
  * Get information about a specific process by PID.
29
73
  *
@@ -32,9 +76,10 @@ const ffi_1 = require("./ffi");
32
76
  * @throws {SysprimsError} NotFound if process does not exist
33
77
  * @throws {SysprimsError} PermissionDenied if access is denied
34
78
  */
35
- function procGet(pid) {
79
+ function procGet(pid, options) {
36
80
  const lib = (0, ffi_1.loadSysprims)();
37
- const result = (0, ffi_1.callJsonReturn)(() => lib.sysprimsProcGet(pid >>> 0));
81
+ const optionsJson = serializeProcessOptions(options);
82
+ const result = (0, ffi_1.callJsonReturn)(() => lib.sysprimsProcGetEx(pid >>> 0, optionsJson));
38
83
  return result;
39
84
  }
40
85
  /**
@@ -64,10 +109,11 @@ function procGet(pid) {
64
109
  * // Filter by multiple criteria
65
110
  * const heavy = processList({ cpu_above: 50, memory_above_kb: 100000 });
66
111
  */
67
- function processList(filter) {
112
+ function processList(filter, options) {
68
113
  const lib = (0, ffi_1.loadSysprims)();
69
114
  const filterJson = filter ? JSON.stringify(filter) : "";
70
- const result = (0, ffi_1.callJsonReturn)(() => lib.sysprimsProcList(filterJson));
115
+ const optionsJson = serializeProcessOptions(options);
116
+ const result = (0, ffi_1.callJsonReturn)(() => lib.sysprimsProcListEx(filterJson, optionsJson));
71
117
  return result;
72
118
  }
73
119
  /**
@@ -103,6 +149,74 @@ function listeningPorts(filter) {
103
149
  return result;
104
150
  }
105
151
  // -----------------------------------------------------------------------------
152
+ // Descendants
153
+ // -----------------------------------------------------------------------------
154
+ const MAX_LEVELS_ALL = 0xffffffff; // u32::MAX
155
+ /**
156
+ * Get descendants of a process.
157
+ *
158
+ * Performs a BFS traversal of the process tree starting at `pid` and returns
159
+ * processes grouped by depth level.
160
+ *
161
+ * @param pid - Root process ID to traverse from
162
+ * @param options - Optional traversal configuration
163
+ * @returns Descendants grouped by level with metadata
164
+ * @throws {SysprimsError} NotFound if root process does not exist
165
+ * @throws {SysprimsError} InvalidArgument if pid is 0 or filter is invalid
166
+ *
167
+ * @example
168
+ * // Get all descendants
169
+ * const result = descendants(1234);
170
+ *
171
+ * @example
172
+ * // Get direct children only
173
+ * const result = descendants(1234, { maxLevels: 1 });
174
+ *
175
+ * @example
176
+ * // Filter descendants by name
177
+ * const result = descendants(1234, { filter: { name_contains: "worker" } });
178
+ */
179
+ function descendants(pid, options) {
180
+ const lib = (0, ffi_1.loadSysprims)();
181
+ const maxLevels = options?.maxLevels != null && Number.isFinite(options.maxLevels)
182
+ ? options.maxLevels >>> 0
183
+ : MAX_LEVELS_ALL;
184
+ const configJson = serializeDescendantsConfig(options);
185
+ return (0, ffi_1.callJsonReturn)(() => lib.sysprimsProcDescendants(pid >>> 0, maxLevels, configJson));
186
+ }
187
+ /**
188
+ * Kill descendants of a process.
189
+ *
190
+ * Traverses the process tree from `pid`, collects descendant PIDs, and sends
191
+ * the specified signal. Safety rules are enforced: root PID, self, PID 1, and
192
+ * parent are automatically excluded from the kill list.
193
+ *
194
+ * @param pid - Root process ID (will NOT be killed)
195
+ * @param signal - Signal number to send (default: 15 = SIGTERM)
196
+ * @param options - Optional configuration
197
+ * @returns Result with succeeded/failed PIDs and safety skip count
198
+ * @throws {SysprimsError} NotFound if root process does not exist
199
+ * @throws {SysprimsError} InvalidArgument if pid is 0 or filter is invalid
200
+ *
201
+ * @example
202
+ * // Kill all descendants with SIGTERM
203
+ * const result = killDescendants(1234);
204
+ *
205
+ * @example
206
+ * // Force kill descendants matching a filter
207
+ * const result = killDescendants(1234, 9, {
208
+ * filter: { cpu_above: 90 },
209
+ * });
210
+ */
211
+ function killDescendants(pid, signal = 15, options) {
212
+ const lib = (0, ffi_1.loadSysprims)();
213
+ const maxLevels = options?.maxLevels != null && Number.isFinite(options.maxLevels)
214
+ ? options.maxLevels >>> 0
215
+ : MAX_LEVELS_ALL;
216
+ const configJson = serializeDescendantsConfig(options);
217
+ return (0, ffi_1.callJsonReturn)(() => lib.sysprimsProcKillDescendants(pid >>> 0, maxLevels, signal | 0, configJson));
218
+ }
219
+ // -----------------------------------------------------------------------------
106
220
  // Wait
107
221
  // -----------------------------------------------------------------------------
108
222
  /**
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAoDA,0BAIC;AA6BD,kCAKC;AA4BD,wCAKC;AAaD,0BAIC;AAWD,0BAKC;AAYD,4BAGC;AAQD,0BAGC;AA2BD,gCAGC;AAcD,0CAGC;AAYD,8BAGC;AAYD,8BAGC;AAoCD,4BAeC;AAQD,sCAcC;AAQD,sCAcC;AAcD,sCAiBC;AAMD,oCASC;AAhZD,qCAA4D;AAmBnD,8FAnBA,sBAAa,OAmBA;AAAE,kGAnBA,0BAAiB,OAmBA;AAlBzC,+BAA2E;AAuC3E,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF;;;;;;;GAOG;AACH,SAAgB,OAAO,CAAC,GAAW;IACjC,MAAM,GAAG,GAAG,IAAA,kBAAY,GAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAA,oBAAc,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACpE,OAAO,MAAqB,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAgB,WAAW,CAAC,MAAsB;IAChD,MAAM,GAAG,GAAG,IAAA,kBAAY,GAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAA,oBAAc,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;IACtE,OAAO,MAAyB,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAgB,cAAc,CAAC,MAAmB;IAChD,MAAM,GAAG,GAAG,IAAA,kBAAY,GAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAA,oBAAc,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC,CAAC;IAChF,OAAO,MAA8B,CAAC;AACxC,CAAC;AAED,gFAAgF;AAChF,OAAO;AACP,gFAAgF;AAEhF;;;;;;GAMG;AACH,SAAgB,OAAO,CAAC,GAAW,EAAE,SAAiB;IACpD,MAAM,GAAG,GAAG,IAAA,kBAAY,GAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAA,oBAAc,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IACnF,OAAO,MAAuB,CAAC;AACjC,CAAC;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;;;GAIG;AACH,SAAgB,OAAO,CAAC,GAAW,EAAE,MAAiB;IACpD,MAAM,GAAG,GAAG,IAAA,kBAAY,GAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAA,oBAAc,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACpF,OAAO,MAAoB,CAAC;AAC9B,CAAC;AAED,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF;;;;;GAKG;AACH,SAAgB,QAAQ;IACtB,MAAM,GAAG,GAAG,IAAA,kBAAY,GAAE,CAAC;IAC3B,OAAO,IAAA,gBAAU,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACrD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,OAAO;IACrB,MAAM,GAAG,GAAG,IAAA,kBAAY,GAAE,CAAC;IAC3B,OAAO,IAAA,gBAAU,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,UAAU,CAAC,GAAW,EAAE,MAAc;IACpD,MAAM,GAAG,GAAG,IAAA,kBAAY,GAAE,CAAC;IAC3B,IAAA,cAAQ,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,eAAe,CAAC,IAAY,EAAE,MAAc;IAC1D,MAAM,GAAG,GAAG,IAAA,kBAAY,GAAE,CAAC;IAC3B,IAAA,cAAQ,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,SAAS,CAAC,GAAW;IACnC,MAAM,GAAG,GAAG,IAAA,kBAAY,GAAE,CAAC;IAC3B,IAAA,cAAQ,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,SAAS,CAAC,GAAW;IACnC,MAAM,GAAG,GAAG,IAAA,kBAAY,GAAE,CAAC;IAC3B,IAAA,cAAQ,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,YAAY,GAAG,UAAU,CAAC;AAEhC,SAAS,eAAe,CAAC,IAAc;IACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,sBAAa,CAAC,0BAAiB,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC;IACvF,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,sBAAa,CAAC,0BAAiB,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,MAAM,IAAI,sBAAa,CAAC,0BAAiB,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,GAAG,GAAG,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,sBAAa,CACrB,0BAAiB,CAAC,eAAe,EACjC,OAAO,GAAG,+BAA+B,YAAY,EAAE,CACxD,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,sBAAa,CAAC,0BAAiB,CAAC,eAAe,EAAE,2BAA2B,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,IAAc,EAAE,MAAc;IACrD,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvB,MAAM,MAAM,GAAoB,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC9D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACxB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAA6B,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,IAAc;IAC1C,eAAe,CAAC,IAAI,CAAC,CAAC;IAEtB,MAAM,MAAM,GAAoB,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC9D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,SAAS,CAAC,GAAG,CAAC,CAAC;YACf,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAA6B,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,IAAc;IAC1C,eAAe,CAAC,IAAI,CAAC,CAAC;IAEtB,MAAM,MAAM,GAAoB,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC9D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,SAAS,CAAC,GAAG,CAAC,CAAC;YACf,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAA6B,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF;;;;;;;GAOG;AACH,SAAgB,aAAa,CAAC,GAAW,EAAE,MAA4B;IACrE,MAAM,GAAG,GAAG,IAAA,kBAAY,GAAE,CAAC;IAE3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAA,oBAAc,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAwB,CAAC;IAC/F,CAAC;IAED,MAAM,GAAG,GAAwB;QAC/B,SAAS,EACP,MAAM,CAAC,SAAS;YAChB,sFAAsF;QACxF,GAAG,MAAM;KACV,CAAC;IAEF,OAAO,IAAA,oBAAc,EAAC,GAAG,EAAE,CACzB,GAAG,CAAC,qBAAqB,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CACnC,CAAC;AAC3B,CAAC;AAED,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF,SAAgB,YAAY,CAAC,MAA0B;IACrD,MAAM,GAAG,GAAG,IAAA,kBAAY,GAAE,CAAC;IAC3B,MAAM,GAAG,GAAuB;QAC9B,SAAS,EACP,MAAM,CAAC,SAAS;YAChB,sFAAsF;QACxF,GAAG,MAAM;KACV,CAAC;IACF,OAAO,IAAA,oBAAc,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAuB,CAAC;AACnG,CAAC"}
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.
@@ -26,9 +29,20 @@ export interface ProcessFilter {
26
29
  name_equals?: string;
27
30
  user_equals?: string;
28
31
  pid_in?: number[];
32
+ ppid?: number;
29
33
  state_in?: ProcessState[];
30
34
  cpu_above?: number;
31
35
  memory_above_kb?: number;
36
+ running_for_at_least_secs?: number;
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;
32
46
  }
33
47
  /**
34
48
  * Snapshot of running processes.
@@ -146,4 +160,69 @@ export interface BatchKillResult {
146
160
  succeeded: number[];
147
161
  failed: BatchKillFailure[];
148
162
  }
163
+ /**
164
+ * A single level in a descendants traversal result.
165
+ */
166
+ export interface DescendantsLevel {
167
+ level: number;
168
+ processes: ProcessInfo[];
169
+ }
170
+ /**
171
+ * Result of a descendants traversal.
172
+ * Matches schema: descendants-result.schema.json
173
+ */
174
+ export interface DescendantsResult {
175
+ schema_id: string;
176
+ root_pid: number;
177
+ max_levels: number;
178
+ levels: DescendantsLevel[];
179
+ total_found: number;
180
+ matched_by_filter: number;
181
+ timestamp: string;
182
+ platform: string;
183
+ }
184
+ /**
185
+ * Options for descendants traversal.
186
+ */
187
+ export interface DescendantsOptions {
188
+ /** Maximum depth (1 = children only). Omit or use Infinity for all levels. */
189
+ maxLevels?: number;
190
+ /** Optional filter applied to descendant processes. */
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;
196
+ }
197
+ /**
198
+ * Options for kill-descendants operation.
199
+ */
200
+ export interface KillDescendantsOptions {
201
+ /** Maximum depth. Omit or use Infinity for all levels. */
202
+ maxLevels?: number;
203
+ /** Optional filter applied to descendant processes. */
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;
209
+ }
210
+ /**
211
+ * A single failure in a kill-descendants operation.
212
+ */
213
+ export interface KillDescendantsFailure {
214
+ pid: number;
215
+ error: string;
216
+ }
217
+ /**
218
+ * Result of a kill-descendants operation.
219
+ */
220
+ export interface KillDescendantsResult {
221
+ schema_id: string;
222
+ signal_sent: number;
223
+ root_pid: number;
224
+ succeeded: number[];
225
+ failed: KillDescendantsFailure[];
226
+ skipped_safety: number;
227
+ }
149
228
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
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::{FdFilter, PortFilter, ProcessFilter};
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
- match sysprims_proc::get_process(pid) {
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 sysprims_proc::snapshot_filtered(&filter) {
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!(
@@ -237,6 +345,144 @@ pub fn sysprims_proc_wait_pid(pid: u32, timeout_ms: u32) -> SysprimsCallJsonResu
237
345
  }
238
346
  }
239
347
 
348
+ // -----------------------------------------------------------------------------
349
+ // Descendants
350
+ // -----------------------------------------------------------------------------
351
+
352
+ #[napi]
353
+ pub fn sysprims_proc_descendants(
354
+ root_pid: u32,
355
+ max_levels: u32,
356
+ config_json: String,
357
+ ) -> SysprimsCallJsonResult {
358
+ let parsed = match parse_descendants_config(&config_json) {
359
+ Ok(c) => c,
360
+ Err(e) => return err_json(e),
361
+ };
362
+
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
+ };
370
+
371
+ match descendants_with_config_and_options(config, ProcessOptions::default()) {
372
+ Ok(result) => match serde_json::to_string(&result) {
373
+ Ok(json) => ok_json(json),
374
+ Err(e) => err_json(SysprimsError::internal(format!(
375
+ "failed to serialize descendants result: {}",
376
+ e
377
+ ))),
378
+ },
379
+ Err(e) => err_json(e),
380
+ }
381
+ }
382
+
383
+ #[napi]
384
+ pub fn sysprims_proc_kill_descendants(
385
+ root_pid: u32,
386
+ max_levels: u32,
387
+ signal: i32,
388
+ config_json: String,
389
+ ) -> SysprimsCallJsonResult {
390
+ let parsed = match parse_descendants_config(&config_json) {
391
+ Ok(c) => c,
392
+ Err(e) => return err_json(e),
393
+ };
394
+
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
+ };
402
+
403
+ // Traverse descendants before sending any signal.
404
+ let desc_result = match descendants_with_config_and_options(config, ProcessOptions::default()) {
405
+ Ok(r) => r,
406
+ Err(e) => return err_json(e),
407
+ };
408
+
409
+ // Collect all descendant PIDs
410
+ let mut target_pids: Vec<u32> = desc_result
411
+ .levels
412
+ .iter()
413
+ .flat_map(|l| l.processes.iter().map(|p| p.pid))
414
+ .collect();
415
+ target_pids.sort_unstable();
416
+ target_pids.dedup();
417
+
418
+ // Safety: exclude root PID (descendants-only)
419
+ target_pids.retain(|&pid| pid != root_pid);
420
+
421
+ // Safety: exclude self, PID 1, parent
422
+ let self_pid = std::process::id();
423
+ let parent_pid = sysprims_proc::get_process(self_pid).ok().map(|p| p.ppid);
424
+
425
+ let before = target_pids.len();
426
+ target_pids.retain(|&pid| pid != self_pid && pid != 1);
427
+ if let Some(ppid) = parent_pid {
428
+ target_pids.retain(|&pid| pid != ppid);
429
+ }
430
+ let skipped_safety = before.saturating_sub(target_pids.len());
431
+
432
+ // Build result
433
+ let (succeeded, failed) = if target_pids.is_empty() {
434
+ (Vec::new(), Vec::<KillDescendantsFailureWire>::new())
435
+ } else {
436
+ match sysprims_signal::kill_many(&target_pids, signal) {
437
+ Ok(batch) => {
438
+ let failed_entries: Vec<KillDescendantsFailureWire> = batch
439
+ .failed
440
+ .iter()
441
+ .map(|f| KillDescendantsFailureWire {
442
+ pid: f.pid,
443
+ error: f.error.to_string(),
444
+ })
445
+ .collect();
446
+ (batch.succeeded, failed_entries)
447
+ }
448
+ Err(e) => return err_json(e),
449
+ }
450
+ };
451
+
452
+ let result = KillDescendantsResultWire {
453
+ schema_id: sysprims_core::schema::BATCH_KILL_RESULT_V1.to_string(),
454
+ signal_sent: signal,
455
+ root_pid,
456
+ succeeded,
457
+ failed,
458
+ skipped_safety,
459
+ };
460
+
461
+ match serde_json::to_string(&result) {
462
+ Ok(json) => ok_json(json),
463
+ Err(e) => err_json(SysprimsError::internal(format!(
464
+ "failed to serialize kill-descendants result: {}",
465
+ e
466
+ ))),
467
+ }
468
+ }
469
+
470
+ #[derive(serde::Serialize)]
471
+ struct KillDescendantsFailureWire {
472
+ pid: u32,
473
+ error: String,
474
+ }
475
+
476
+ #[derive(serde::Serialize)]
477
+ struct KillDescendantsResultWire {
478
+ schema_id: String,
479
+ signal_sent: i32,
480
+ root_pid: u32,
481
+ succeeded: Vec<u32>,
482
+ failed: Vec<KillDescendantsFailureWire>,
483
+ skipped_safety: usize,
484
+ }
485
+
240
486
  // -----------------------------------------------------------------------------
241
487
  // Self Introspection
242
488
  // -----------------------------------------------------------------------------
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3leaps/sysprims",
3
- "version": "0.1.12",
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.12",
49
- "@3leaps/sysprims-linux-x64-musl": "0.1.12",
50
- "@3leaps/sysprims-linux-arm64-gnu": "0.1.12",
51
- "@3leaps/sysprims-linux-arm64-musl": "0.1.12",
52
- "@3leaps/sysprims-darwin-arm64": "0.1.12",
53
- "@3leaps/sysprims-win32-x64-msvc": "0.1.12",
54
- "@3leaps/sysprims-win32-arm64-msvc": "0.1.12"
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",