conqr 1.7.2 → 2.1.0

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-buffer.js","sourceRoot":"","sources":["../src/log-buffer.ts"],"names":[],"mappings":"AAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAUnC,MAAM,OAAO,SAAS;IACZ,OAAO,CAA0B;IACjC,aAAa,CAAa;IAC1B,QAAQ,CAAS;IAEzB;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,SAAiB,EAAE,IAAY,EAAE,SAA8B,QAAQ,EAAE,WAAoB,KAAK;QACvG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE/D,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtF,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,EAAE,CAAC;YACnD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,SAAiB;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,SAAkB;QACtB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;CACF"}
@@ -1,49 +0,0 @@
1
- import { ChildProcess } from 'child_process';
2
- import { EventEmitter } from 'events';
3
- import { CommandInfo } from './cli.js';
4
- import { LogBuffer } from './log-buffer.js';
5
- export type ProcessStatus = 'running' | 'stopped' | 'error' | 'unknown';
6
- export interface LogEvent {
7
- processId: number;
8
- line: string;
9
- source: 'stdout' | 'stderr';
10
- }
11
- export interface StatusChangeEvent {
12
- processId: number;
13
- status: ProcessStatus;
14
- }
15
- export interface RestartStateChangeEvent {
16
- processId: number;
17
- isRestarting: boolean;
18
- restartCount: number;
19
- crashCount: number;
20
- }
21
- export declare class ProcessManager extends EventEmitter {
22
- private processes;
23
- private logBuffer;
24
- private buffers;
25
- private restartTimeouts;
26
- private restartCounts;
27
- private crashCounts;
28
- private isRestartingMap;
29
- private restartInFlight;
30
- private intentionalExitProcesses;
31
- constructor(logBuffer: LogBuffer);
32
- private detectError;
33
- startCommand(commandInfo: CommandInfo): ChildProcess;
34
- startAll(commands: CommandInfo[]): void;
35
- getStatus(processId: number): ProcessStatus;
36
- getAllStatuses(): Map<number, ProcessStatus>;
37
- private updateStatusToError;
38
- private checkRecentErrors;
39
- private killProcess;
40
- killAll(): Promise<void>;
41
- private killOne;
42
- restart(processId: number, isManual?: boolean): Promise<void>;
43
- private scheduleRestart;
44
- private emitRestartStateChange;
45
- isRestarting(processId: number): boolean;
46
- getRestartCount(processId: number): number;
47
- getCrashCount(processId: number): number;
48
- }
49
- //# sourceMappingURL=process-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process-manager.d.ts","sourceRoot":"","sources":["../src/process-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAcxE,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,wBAAwB,CAAoB;gBAExC,SAAS,EAAE,SAAS;IAahC,OAAO,CAAC,WAAW;IAoBnB,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,YAAY;IA2JpD,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI;IAIvC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa;IAK3C,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC;IAQ5C,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,WAAW;IA6Bb,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YA8EhB,OAAO;IAkDf,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAiE1E,OAAO,CAAC,eAAe;IAoDvB,OAAO,CAAC,sBAAsB;IAY9B,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIxC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI1C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAGzC"}
@@ -1,478 +0,0 @@
1
- import { spawn } from 'child_process';
2
- import { EventEmitter } from 'events';
3
- export class ProcessManager extends EventEmitter {
4
- processes;
5
- logBuffer;
6
- buffers;
7
- restartTimeouts;
8
- restartCounts;
9
- crashCounts;
10
- isRestartingMap;
11
- restartInFlight;
12
- intentionalExitProcesses;
13
- constructor(logBuffer) {
14
- super();
15
- this.processes = new Map();
16
- this.logBuffer = logBuffer;
17
- this.buffers = new Map();
18
- this.restartTimeouts = new Map();
19
- this.restartCounts = new Map();
20
- this.crashCounts = new Map();
21
- this.isRestartingMap = new Map();
22
- this.restartInFlight = new Set();
23
- this.intentionalExitProcesses = new Set();
24
- }
25
- detectError(line) {
26
- const hasRedAnsi = /\x1b\[31m|\x1b\[91m|\x1b\[38;5;1m/.test(line);
27
- const errorPatterns = [
28
- /SyntaxError/i,
29
- /TypeError/i,
30
- /ReferenceError/i,
31
- /Error:/i,
32
- /Error\s+at/i,
33
- /FATAL/i,
34
- /CRITICAL/i,
35
- /failed/i,
36
- /failure/i,
37
- /cannot/i,
38
- /uncaught/i,
39
- /unhandled/i,
40
- /^\s+at .+\(.+:\d+:\d+\)$/,
41
- ];
42
- return hasRedAnsi || errorPatterns.some(pattern => pattern.test(line));
43
- }
44
- startCommand(commandInfo) {
45
- const { id, name, command } = commandInfo;
46
- const runId = (this.processes.get(id)?.runId || 0) + 1;
47
- const proc = spawn(command, {
48
- shell: true,
49
- stdio: ['ignore', 'pipe', 'pipe'],
50
- detached: true
51
- });
52
- proc.stdout?.setEncoding('utf8');
53
- proc.stderr?.setEncoding('utf8');
54
- this.buffers.set(id, { stdout: '', stderr: '' });
55
- proc.stdout?.on('data', (data) => {
56
- const buffer = this.buffers.get(id);
57
- if (!buffer)
58
- return;
59
- buffer.stdout += data.toString();
60
- const lines = buffer.stdout.split('\n');
61
- buffer.stdout = lines.pop() || '';
62
- lines.forEach(line => {
63
- if (line.length > 0) {
64
- this.logBuffer.addLog(id, line, 'stdout');
65
- this.emit('log', { processId: id, line, source: 'stdout' });
66
- this.checkRecentErrors(id);
67
- }
68
- });
69
- });
70
- proc.stderr?.on('data', (data) => {
71
- const buffer = this.buffers.get(id);
72
- if (!buffer)
73
- return;
74
- buffer.stderr += data.toString();
75
- const lines = buffer.stderr.split('\n');
76
- buffer.stderr = lines.pop() || '';
77
- lines.forEach(line => {
78
- if (line.length > 0) {
79
- this.logBuffer.addLog(id, line, 'stderr');
80
- this.emit('log', { processId: id, line, source: 'stderr' });
81
- this.checkRecentErrors(id);
82
- }
83
- });
84
- });
85
- // Flush remaining buffer data when streams end
86
- const flushBuffer = (source) => {
87
- const buffer = this.buffers.get(id);
88
- if (!buffer)
89
- return;
90
- const bufferContent = source === 'stdout' ? buffer.stdout : buffer.stderr;
91
- if (bufferContent.trim().length > 0) {
92
- this.logBuffer.addLog(id, bufferContent.trim(), source);
93
- this.emit('log', { processId: id, line: bufferContent.trim(), source });
94
- this.checkRecentErrors(id);
95
- }
96
- if (source === 'stdout') {
97
- buffer.stdout = '';
98
- }
99
- else {
100
- buffer.stderr = '';
101
- }
102
- };
103
- proc.stdout?.on('end', () => {
104
- flushBuffer('stdout');
105
- });
106
- proc.stderr?.on('end', () => {
107
- flushBuffer('stderr');
108
- });
109
- proc.on('error', (err) => {
110
- this.logBuffer.addLog(id, `Process error: ${err.message}`, 'stderr', true);
111
- const current = this.processes.get(id);
112
- if (current && current.process === proc) {
113
- current.status = 'error';
114
- current.pid = proc.pid;
115
- this.emit('status-change', { processId: id, status: 'error' });
116
- }
117
- });
118
- proc.on('exit', (code) => {
119
- const wasIntentionalExit = this.intentionalExitProcesses.has(proc);
120
- this.intentionalExitProcesses.delete(proc);
121
- const hasNonZeroExitCode = typeof code === 'number' && code !== 0;
122
- const procInfo = this.processes.get(id);
123
- if (procInfo && procInfo.process === proc) {
124
- // Flush any remaining buffer data before logging exit message
125
- const buffer = this.buffers.get(id);
126
- if (buffer) {
127
- if (buffer.stdout.trim().length > 0) {
128
- this.logBuffer.addLog(id, buffer.stdout.trim(), 'stdout');
129
- this.emit('log', { processId: id, line: buffer.stdout.trim(), source: 'stdout' });
130
- this.checkRecentErrors(id);
131
- buffer.stdout = '';
132
- }
133
- if (buffer.stderr.trim().length > 0) {
134
- this.logBuffer.addLog(id, buffer.stderr.trim(), 'stderr');
135
- this.emit('log', { processId: id, line: buffer.stderr.trim(), source: 'stderr' });
136
- this.checkRecentErrors(id);
137
- buffer.stderr = '';
138
- }
139
- }
140
- procInfo.status = 'stopped';
141
- procInfo.pid = proc.pid;
142
- this.emit('status-change', { processId: id, status: 'stopped' });
143
- // Increment crash count for non-zero exits
144
- if (hasNonZeroExitCode && !wasIntentionalExit) {
145
- const currentCrashCount = this.crashCounts.get(id) || 0;
146
- this.crashCounts.set(id, currentCrashCount + 1);
147
- this.emitRestartStateChange(id);
148
- }
149
- // Check restart policy and schedule restart if needed (Requirements 1.4, 1.5, 1.6)
150
- const restartConfig = procInfo.restart;
151
- let willRestart = false;
152
- if (restartConfig && !wasIntentionalExit) {
153
- const { policy, delay } = restartConfig;
154
- if (policy === 'on-exit') {
155
- // Requirement 1.6: Restart whenever process exits, regardless of exit code
156
- this.scheduleRestart(id, delay, code, procInfo.runId);
157
- willRestart = true;
158
- }
159
- else if (policy === 'on-error' && hasNonZeroExitCode) {
160
- // Requirement 1.5: Restart only when exit code is non-zero
161
- this.scheduleRestart(id, delay, code, procInfo.runId);
162
- willRestart = true;
163
- }
164
- // Requirement 1.4: If policy is 'never', do nothing (existing behavior)
165
- }
166
- // Log exit code for non-restartable processes or when restart won't happen
167
- if (!willRestart) {
168
- const exitEmoji = code === 0 ? '•' : '×';
169
- const exitCodeStr = code === null ? 'null' : code.toString();
170
- const exitMessage = `${exitEmoji} Process exited with code ${exitCodeStr}`.trim();
171
- this.logBuffer.addLog(id, exitMessage, 'stdout', true);
172
- this.emit('log', { processId: id, line: exitMessage, source: 'stdout' });
173
- }
174
- }
175
- });
176
- const startMessage = '› Service starting';
177
- this.logBuffer.addLog(id, startMessage, 'stdout', true);
178
- this.emit('log', { processId: id, line: startMessage, source: 'stdout' });
179
- const procInfo = { ...commandInfo, status: 'running', process: proc, runId, pid: proc.pid };
180
- this.processes.set(id, procInfo);
181
- this.emit('status-change', { processId: id, status: 'running' });
182
- return proc;
183
- }
184
- startAll(commands) {
185
- commands.forEach(cmd => this.startCommand(cmd));
186
- }
187
- getStatus(processId) {
188
- const procInfo = this.processes.get(processId);
189
- return procInfo ? procInfo.status : 'unknown';
190
- }
191
- getAllStatuses() {
192
- const statuses = new Map();
193
- this.processes.forEach((procInfo, id) => {
194
- statuses.set(id, procInfo.status);
195
- });
196
- return statuses;
197
- }
198
- updateStatusToError(processId) {
199
- const procInfo = this.processes.get(processId);
200
- if (procInfo && procInfo.status === 'running') {
201
- procInfo.status = 'error';
202
- this.emit('status-change', { processId, status: 'error' });
203
- }
204
- }
205
- checkRecentErrors(processId) {
206
- const procInfo = this.processes.get(processId);
207
- if (!procInfo || procInfo.status === 'stopped' || procInfo.status === 'unknown') {
208
- return;
209
- }
210
- const logs = this.logBuffer.getLogs(processId);
211
- const recentLogs = logs.slice(-10);
212
- const hasRecentError = recentLogs.some(log => this.detectError(log.line));
213
- if (hasRecentError && procInfo.status === 'running') {
214
- procInfo.status = 'error';
215
- this.emit('status-change', { processId, status: 'error' });
216
- }
217
- else if (!hasRecentError && procInfo.status === 'error' && procInfo.process.exitCode === null && !procInfo.process.killed) {
218
- procInfo.status = 'running';
219
- this.emit('status-change', { processId, status: 'running' });
220
- }
221
- }
222
- killProcess(procInfo, signal) {
223
- if (!procInfo.process || procInfo.process.killed) {
224
- return;
225
- }
226
- try {
227
- this.intentionalExitProcesses.add(procInfo.process);
228
- const pid = procInfo.process.pid;
229
- if (!pid) {
230
- return;
231
- }
232
- if (process.platform !== 'win32') {
233
- try {
234
- process.kill(-pid, signal);
235
- }
236
- catch {
237
- procInfo.process.kill(signal);
238
- }
239
- }
240
- else {
241
- try {
242
- spawn('taskkill', ['/pid', pid.toString(), '/t', '/f'], { stdio: 'ignore' });
243
- }
244
- catch {
245
- procInfo.process.kill(signal);
246
- }
247
- }
248
- }
249
- catch {
250
- }
251
- }
252
- async killAll() {
253
- // Clear all pending restart timeouts to prevent restarts during shutdown
254
- // This ensures processes don't auto-restart while the application is shutting down
255
- for (const timeout of this.restartTimeouts.values()) {
256
- clearTimeout(timeout);
257
- }
258
- this.restartTimeouts.clear();
259
- // Clear restart states
260
- for (const processId of this.isRestartingMap.keys()) {
261
- this.isRestartingMap.set(processId, false);
262
- this.emitRestartStateChange(processId);
263
- }
264
- const killPromises = [];
265
- this.processes.forEach((procInfo) => {
266
- if (!procInfo.process || procInfo.process.killed) {
267
- return;
268
- }
269
- const promise = new Promise((resolve) => {
270
- let resolved = false;
271
- const timeout = setTimeout(() => {
272
- if (!resolved) {
273
- resolved = true;
274
- resolve();
275
- }
276
- }, 1000);
277
- const onExit = () => {
278
- if (!resolved) {
279
- resolved = true;
280
- clearTimeout(timeout);
281
- resolve();
282
- }
283
- };
284
- procInfo.process.once('exit', onExit);
285
- this.killProcess(procInfo, 'SIGTERM');
286
- });
287
- killPromises.push(promise);
288
- });
289
- await Promise.all(killPromises);
290
- const forceKillPromises = [];
291
- this.processes.forEach((procInfo) => {
292
- if (!procInfo.process || procInfo.process.killed) {
293
- return;
294
- }
295
- this.killProcess(procInfo, 'SIGKILL');
296
- const promise = new Promise((resolve) => {
297
- let resolved = false;
298
- const timeout = setTimeout(() => {
299
- if (!resolved) {
300
- resolved = true;
301
- resolve();
302
- }
303
- }, 500);
304
- const onExit = () => {
305
- if (!resolved) {
306
- resolved = true;
307
- clearTimeout(timeout);
308
- resolve();
309
- }
310
- };
311
- procInfo.process.once('exit', onExit);
312
- });
313
- forceKillPromises.push(promise);
314
- });
315
- await Promise.all(forceKillPromises);
316
- }
317
- async killOne(procInfo) {
318
- if (!procInfo.process || procInfo.process.killed) {
319
- return;
320
- }
321
- await new Promise((resolve) => {
322
- let resolved = false;
323
- const timeout = setTimeout(() => {
324
- if (!resolved) {
325
- resolved = true;
326
- resolve();
327
- }
328
- }, 1000);
329
- const onExit = () => {
330
- if (!resolved) {
331
- resolved = true;
332
- clearTimeout(timeout);
333
- resolve();
334
- }
335
- };
336
- procInfo.process.once('exit', onExit);
337
- this.killProcess(procInfo, 'SIGTERM');
338
- });
339
- if (!procInfo.process.killed) {
340
- await new Promise((resolve) => {
341
- let resolved = false;
342
- const timeout = setTimeout(() => {
343
- if (!resolved) {
344
- resolved = true;
345
- resolve();
346
- }
347
- }, 500);
348
- const onExit = () => {
349
- if (!resolved) {
350
- resolved = true;
351
- clearTimeout(timeout);
352
- resolve();
353
- }
354
- };
355
- procInfo.process.once('exit', onExit);
356
- this.killProcess(procInfo, 'SIGKILL');
357
- });
358
- }
359
- }
360
- async restart(processId, isManual = false) {
361
- if (this.restartInFlight.has(processId)) {
362
- return;
363
- }
364
- this.restartInFlight.add(processId);
365
- try {
366
- await Promise.resolve();
367
- // Clear any pending auto-restart timeout for this process (Requirement 1.4)
368
- // This prevents duplicate restarts when user manually restarts a process
369
- // that already has an auto-restart scheduled
370
- const pendingTimeout = this.restartTimeouts.get(processId);
371
- if (pendingTimeout) {
372
- clearTimeout(pendingTimeout);
373
- this.restartTimeouts.delete(processId);
374
- }
375
- const procInfo = this.processes.get(processId);
376
- if (!procInfo) {
377
- return;
378
- }
379
- if (this.isRestartingMap.get(processId)) {
380
- this.isRestartingMap.set(processId, false);
381
- this.emitRestartStateChange(processId);
382
- }
383
- // Log manual restart message immediately when restart is initiated
384
- if (isManual) {
385
- const hasLiveProcess = procInfo.process.exitCode === null && !procInfo.process.killed;
386
- const restartMessage = hasLiveProcess
387
- ? '› Restart initiated, SIGTERM signal sent'
388
- : '› Restart initiated';
389
- this.logBuffer.addLog(processId, restartMessage, 'stdout', true);
390
- this.emit('log', { processId, line: restartMessage, source: 'stdout' });
391
- }
392
- const hasLiveProcess = procInfo.process.exitCode === null && !procInfo.process.killed;
393
- if (hasLiveProcess) {
394
- await this.killOne(procInfo);
395
- }
396
- // Increment restart count
397
- const currentRestartCount = this.restartCounts.get(processId) || 0;
398
- this.restartCounts.set(processId, currentRestartCount + 1);
399
- // Set restarting state to false since we're about to start the new process
400
- this.isRestartingMap.set(processId, false);
401
- this.startCommand({
402
- id: procInfo.id,
403
- name: procInfo.name,
404
- command: procInfo.command,
405
- restart: procInfo.restart
406
- });
407
- // Emit restart state change after restart completes
408
- this.emitRestartStateChange(processId);
409
- }
410
- finally {
411
- this.restartInFlight.delete(processId);
412
- }
413
- }
414
- scheduleRestart(processId, delay, exitCode, expectedRunId) {
415
- // Clear any existing timeout for this process to prevent duplicate restarts
416
- const existingTimeout = this.restartTimeouts.get(processId);
417
- if (existingTimeout) {
418
- clearTimeout(existingTimeout);
419
- }
420
- // Get process info for logging
421
- const procInfo = this.processes.get(processId);
422
- const processName = procInfo?.name ?? `Process ${processId}`;
423
- // Log restart message with delay info (Requirement 3.1)
424
- const delaySeconds = (delay / 1000).toFixed(1);
425
- let restartMessage;
426
- if (exitCode !== undefined) {
427
- // Combined exit and restart message for auto-restarts
428
- const exitEmoji = exitCode === 0 ? '•' : '×';
429
- const exitCodeStr = exitCode === null ? 'null' : exitCode.toString();
430
- restartMessage = `${exitEmoji} Process exited with code ${exitCodeStr} › ${delaySeconds}s`.trim();
431
- }
432
- else {
433
- // Manual restart message (shouldn't happen in practice, but keeping for safety)
434
- restartMessage = `› ${processName} ${delaySeconds}s`.trim();
435
- }
436
- this.logBuffer.addLog(processId, restartMessage, 'stdout', true);
437
- this.emit('log', { processId, line: restartMessage, source: 'stdout' });
438
- // Set restarting state to true
439
- this.isRestartingMap.set(processId, true);
440
- this.emitRestartStateChange(processId);
441
- // Schedule restart via setTimeout (Requirement 1.7)
442
- const timeout = setTimeout(() => {
443
- this.restartTimeouts.delete(processId);
444
- const currentProcess = this.processes.get(processId);
445
- if (!currentProcess || currentProcess.runId !== expectedRunId || currentProcess.status !== 'stopped') {
446
- if (this.isRestartingMap.get(processId) && currentProcess?.runId === expectedRunId) {
447
- this.isRestartingMap.set(processId, false);
448
- this.emitRestartStateChange(processId);
449
- }
450
- return;
451
- }
452
- void this.restart(processId, false); // false = automatic restart
453
- }, delay);
454
- // Store the timeout in the map
455
- this.restartTimeouts.set(processId, timeout);
456
- }
457
- emitRestartStateChange(processId) {
458
- const isRestarting = this.isRestartingMap.get(processId) || false;
459
- const restartCount = this.restartCounts.get(processId) || 0;
460
- const crashCount = this.crashCounts.get(processId) || 0;
461
- this.emit('restart-state-change', {
462
- processId,
463
- isRestarting,
464
- restartCount,
465
- crashCount
466
- });
467
- }
468
- isRestarting(processId) {
469
- return this.isRestartingMap.get(processId) || false;
470
- }
471
- getRestartCount(processId) {
472
- return this.restartCounts.get(processId) || 0;
473
- }
474
- getCrashCount(processId) {
475
- return this.crashCounts.get(processId) || 0;
476
- }
477
- }
478
- //# sourceMappingURL=process-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../src/process-manager.ts"],"names":[],"mappings":"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"}
package/dist/ui.d.ts DELETED
@@ -1,12 +0,0 @@
1
- import { CommandInfo } from './cli.js';
2
- import { ProcessManager } from './process-manager.js';
3
- import { LogBuffer } from './log-buffer.js';
4
- interface TUIProps {
5
- commands: CommandInfo[];
6
- processManager: ProcessManager;
7
- logBuffer: LogBuffer;
8
- }
9
- export declare function TUI({ commands, processManager, logBuffer }: TUIProps): import("react/jsx-runtime").JSX.Element;
10
- export declare function renderTUI(commands: CommandInfo[], processManager: ProcessManager, logBuffer: LogBuffer): void;
11
- export {};
12
- //# sourceMappingURL=ui.d.ts.map
package/dist/ui.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,cAAc,EAAqC,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,SAAS,EAAY,MAAM,iBAAiB,CAAC;AAmGtD,UAAU,QAAQ;IAChB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,SAAS,CAAC;CACtB;AAqED,wBAAgB,GAAG,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,QAAQ,2CA4RpE;AA0VD,wBAAgB,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,QAgCtG"}