nomoreide 0.1.11 → 0.1.13

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.
@@ -23,6 +23,7 @@ export declare class ProcessManager {
23
23
  restartBundle(name: string): Promise<ServiceStatus[]>;
24
24
  stopAll(): Promise<void>;
25
25
  status(): NoMoreIdeStatus;
26
+ statusWithResources(): Promise<NoMoreIdeStatus>;
26
27
  private getService;
27
28
  private getBundle;
28
29
  private captureStream;
@@ -1,5 +1,6 @@
1
1
  import { spawn } from "node:child_process";
2
2
  import { isPortAvailable } from "./port-utils.js";
3
+ import { readProcessTree } from "./process-tree.js";
3
4
  export class ProcessManager {
4
5
  runtimes = new Map();
5
6
  configStore;
@@ -113,6 +114,17 @@ export class ProcessManager {
113
114
  ])),
114
115
  };
115
116
  }
117
+ async statusWithResources() {
118
+ const services = {};
119
+ for (const [name, runtime] of this.runtimes.entries()) {
120
+ const status = { ...runtime.status };
121
+ if (status.pid && status.state === "running") {
122
+ status.processTree = await readProcessTree(status.pid);
123
+ }
124
+ services[name] = status;
125
+ }
126
+ return { services };
127
+ }
116
128
  async getService(name) {
117
129
  const config = await this.configStore.load();
118
130
  const service = config.services.find((item) => item.name === name);
@@ -1 +1 @@
1
- {"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../../src/core/process-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../../src/core/process-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface ProcessRow {
2
+ pid: number;
3
+ ppid: number;
4
+ cpuPercent: number;
5
+ rssMb: number;
6
+ command: string;
7
+ }
8
+ export interface ProcessTreeSummary {
9
+ rootPid: number;
10
+ processCount: number;
11
+ cpuPercent: number;
12
+ rssMb: number;
13
+ processes: ProcessRow[];
14
+ }
15
+ export declare function parseProcessRows(raw: string): ProcessRow[];
16
+ export declare function summarizeProcessTree(rows: ProcessRow[], rootPid: number): ProcessTreeSummary;
17
+ export declare function readProcessTree(rootPid: number): Promise<ProcessTreeSummary>;
@@ -0,0 +1,64 @@
1
+ import { execFile } from "node:child_process";
2
+ import { promisify } from "node:util";
3
+ const execFileAsync = promisify(execFile);
4
+ export function parseProcessRows(raw) {
5
+ return raw
6
+ .trim()
7
+ .split(/\n/)
8
+ .map((line) => {
9
+ const match = line.trim().match(/^(\d+)\s+(\d+)\s+(\S+)\s+(\d+)\s+(.+)$/);
10
+ if (!match)
11
+ return undefined;
12
+ return {
13
+ pid: Number(match[1]),
14
+ ppid: Number(match[2]),
15
+ cpuPercent: Number(match[3]),
16
+ rssMb: Number(match[4]) / 1024,
17
+ command: match[5],
18
+ };
19
+ })
20
+ .filter((row) => Boolean(row));
21
+ }
22
+ export function summarizeProcessTree(rows, rootPid) {
23
+ const byParent = new Map();
24
+ for (const row of rows) {
25
+ const children = byParent.get(row.ppid) ?? [];
26
+ children.push(row);
27
+ byParent.set(row.ppid, children);
28
+ }
29
+ const processes = [];
30
+ const seen = new Set();
31
+ const stack = [rootPid];
32
+ while (stack.length > 0) {
33
+ const pid = stack.pop();
34
+ if (pid === undefined || seen.has(pid))
35
+ continue;
36
+ seen.add(pid);
37
+ const row = rows.find((item) => item.pid === pid);
38
+ if (row) {
39
+ processes.push(row);
40
+ }
41
+ for (const child of byParent.get(pid) ?? []) {
42
+ stack.push(child.pid);
43
+ }
44
+ }
45
+ return {
46
+ rootPid,
47
+ processCount: processes.length,
48
+ cpuPercent: roundOne(processes.reduce((sum, row) => sum + row.cpuPercent, 0)),
49
+ rssMb: roundOne(processes.reduce((sum, row) => sum + row.rssMb, 0)),
50
+ processes,
51
+ };
52
+ }
53
+ export async function readProcessTree(rootPid) {
54
+ const { stdout } = await execFileAsync("ps", [
55
+ "-ax",
56
+ "-o",
57
+ "pid=,ppid=,%cpu=,rss=,command=",
58
+ ]);
59
+ return summarizeProcessTree(parseProcessRows(stdout), rootPid);
60
+ }
61
+ function roundOne(value) {
62
+ return Math.round(value * 10) / 10;
63
+ }
64
+ //# sourceMappingURL=process-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-tree.js","sourceRoot":"","sources":["../../src/core/process-tree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { PortBindingStatus } from "./port-utils.js";
2
+ import type { LogEntry, ServiceDefinition, ServiceHealth, ServiceStatus } from "./types.js";
3
+ export interface ComputeServiceHealthInput {
4
+ service: ServiceDefinition;
5
+ status?: ServiceStatus;
6
+ ports: PortBindingStatus[];
7
+ logs: LogEntry[];
8
+ }
9
+ export declare function computeServiceHealth(input: ComputeServiceHealthInput): ServiceHealth;
@@ -0,0 +1,33 @@
1
+ export function computeServiceHealth(input) {
2
+ const status = input.status;
3
+ const lastErrorLog = [...input.logs]
4
+ .reverse()
5
+ .find((entry) => entry.stream === "stderr" || /error|failed|exception/i.test(entry.text));
6
+ if (!status || status.state === "stopped") {
7
+ return baseHealth(input, "unknown", "Service is not running.", lastErrorLog);
8
+ }
9
+ if (status.state === "exited") {
10
+ return baseHealth(input, "unhealthy", `Service exited with code ${status.exitCode ?? "unknown"}.`, lastErrorLog);
11
+ }
12
+ if (status.processTree && status.processTree.rssMb >= 1000) {
13
+ return baseHealth(input, "warning", `High memory usage: ${status.processTree.rssMb.toFixed(1)} MB RSS.`, lastErrorLog);
14
+ }
15
+ if (lastErrorLog) {
16
+ return baseHealth(input, "warning", `Recent error log: ${lastErrorLog.text}`, lastErrorLog);
17
+ }
18
+ return baseHealth(input, "healthy", "Service is running without detected warnings.", lastErrorLog);
19
+ }
20
+ function baseHealth(input, status, summary, lastErrorLog) {
21
+ return {
22
+ service: input.service.name,
23
+ status,
24
+ summary,
25
+ checkedAt: new Date().toISOString(),
26
+ checks: [],
27
+ processTree: input.status?.processTree,
28
+ ports: input.ports,
29
+ lastErrorLog,
30
+ agentContext: "",
31
+ };
32
+ }
33
+ //# sourceMappingURL=service-health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-health.js","sourceRoot":"","sources":["../../src/core/service-health.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,oBAAoB,CAClC,KAAgC;IAEhC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,MAAM,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;SACjC,OAAO,EAAE;SACT,IAAI,CACH,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAC1E,CAAC;IAEJ,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,yBAAyB,EAAE,YAAY,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,UAAU,CACf,KAAK,EACL,WAAW,EACX,4BAA4B,MAAM,CAAC,QAAQ,IAAI,SAAS,GAAG,EAC3D,YAAY,CACb,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;QAC3D,OAAO,UAAU,CACf,KAAK,EACL,SAAS,EACT,sBAAsB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EACnE,YAAY,CACb,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,UAAU,CACf,KAAK,EACL,SAAS,EACT,qBAAqB,YAAY,CAAC,IAAI,EAAE,EACxC,YAAY,CACb,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CACf,KAAK,EACL,SAAS,EACT,+CAA+C,EAC/C,YAAY,CACb,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CACjB,KAAgC,EAChC,MAA+B,EAC/B,OAAe,EACf,YAAuB;IAEvB,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;QAC3B,MAAM;QACN,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,MAAM,EAAE,EAAE;QACV,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW;QACtC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,YAAY;QACZ,YAAY,EAAE,EAAE;KACjB,CAAC;AACJ,CAAC"}
@@ -1,3 +1,5 @@
1
+ import type { ProcessTreeSummary } from "./process-tree.js";
2
+ import type { PortBindingStatus } from "./port-utils.js";
1
3
  export interface ServiceDefinition {
2
4
  name: string;
3
5
  command: string;
@@ -31,6 +33,7 @@ export interface ServiceStatus {
31
33
  exitedAt?: string;
32
34
  exitCode?: number | null;
33
35
  signal?: NodeJS.Signals | null;
36
+ processTree?: ProcessTreeSummary;
34
37
  }
35
38
  export type LogStream = "stdout" | "stderr";
36
39
  export interface LogEntry {
@@ -39,6 +42,24 @@ export interface LogEntry {
39
42
  text: string;
40
43
  timestamp: string;
41
44
  }
45
+ export type ServiceHealthStatus = "unknown" | "healthy" | "warning" | "unhealthy";
46
+ export interface HealthCheckResult {
47
+ name: string;
48
+ ok: boolean;
49
+ summary: string;
50
+ latencyMs?: number;
51
+ }
52
+ export interface ServiceHealth {
53
+ service: string;
54
+ status: ServiceHealthStatus;
55
+ summary: string;
56
+ checkedAt: string;
57
+ checks: HealthCheckResult[];
58
+ processTree?: ProcessTreeSummary;
59
+ ports: PortBindingStatus[];
60
+ lastErrorLog?: LogEntry;
61
+ agentContext: string;
62
+ }
42
63
  export interface ToolResult {
43
64
  ok: boolean;
44
65
  message: string;