@mako10k/shell-server 0.2.2 → 0.2.4
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 +35 -10
- package/dist/backoffice/server.js +9 -9
- package/dist/backoffice/server.js.map +1 -1
- package/dist/core/file-manager.d.ts +3 -3
- package/dist/core/file-manager.js +27 -27
- package/dist/core/file-manager.js.map +1 -1
- package/dist/core/file-storage-subscriber.d.ts +7 -7
- package/dist/core/file-storage-subscriber.js +19 -19
- package/dist/core/file-storage-subscriber.js.map +1 -1
- package/dist/core/monitoring-manager.d.ts +1 -1
- package/dist/core/monitoring-manager.js +31 -31
- package/dist/core/monitoring-manager.js.map +1 -1
- package/dist/core/process-manager.d.ts +4 -4
- package/dist/core/process-manager.js +151 -151
- package/dist/core/process-manager.js.map +1 -1
- package/dist/core/realtime-stream-subscriber.d.ts +18 -18
- package/dist/core/realtime-stream-subscriber.d.ts.map +1 -1
- package/dist/core/realtime-stream-subscriber.js +23 -23
- package/dist/core/realtime-stream-subscriber.js.map +1 -1
- package/dist/core/stream-publisher.d.ts +20 -20
- package/dist/core/stream-publisher.d.ts.map +1 -1
- package/dist/core/stream-publisher.js +15 -15
- package/dist/core/stream-publisher.js.map +1 -1
- package/dist/core/streaming-pipeline-reader.d.ts +12 -16
- package/dist/core/streaming-pipeline-reader.d.ts.map +1 -1
- package/dist/core/streaming-pipeline-reader.js +28 -28
- package/dist/core/streaming-pipeline-reader.js.map +1 -1
- package/dist/core/terminal-manager.d.ts +3 -3
- package/dist/core/terminal-manager.js +61 -61
- package/dist/core/terminal-manager.js.map +1 -1
- package/dist/executor/server.js +3 -3
- package/dist/executor/server.js.map +1 -1
- package/dist/security/chat-completion-adapter.d.ts.map +1 -1
- package/dist/security/chat-completion-adapter.js +23 -4
- package/dist/security/chat-completion-adapter.js.map +1 -1
- package/dist/security/enhanced-evaluator.js +3 -3
- package/dist/security/enhanced-evaluator.js.map +1 -1
- package/dist/security/manager.js +2 -2
- package/dist/security/manager.js.map +1 -1
- package/dist/security/security-llm-prompt-generator.d.ts +2 -2
- package/dist/security/security-llm-prompt-generator.js +4 -4
- package/dist/security/security-llm-prompt-generator.js.map +1 -1
- package/dist/tools/shell-tools.d.ts.map +1 -1
- package/dist/tools/shell-tools.js +28 -28
- package/dist/tools/shell-tools.js.map +1 -1
- package/dist/types/enhanced-security.js +29 -29
- package/dist/types/enhanced-security.js.map +1 -1
- package/dist/types/index.js +21 -21
- package/dist/types/index.js.map +1 -1
- package/dist/types/quick-schemas.js +5 -5
- package/dist/types/quick-schemas.js.map +1 -1
- package/dist/types/response-schemas.js +4 -4
- package/dist/types/response-schemas.js.map +1 -1
- package/dist/types/schemas.js +3 -3
- package/dist/types/schemas.js.map +1 -1
- package/dist/utils/errors.js +1 -1
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/helpers.js +51 -51
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/process-utils.d.ts +6 -6
- package/dist/utils/process-utils.js +29 -29
- package/dist/utils/process-utils.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Issue #13: FileManager Subscriber
|
|
3
|
-
*
|
|
2
|
+
* Issue #13: FileManager Subscriber implementation
|
|
3
|
+
* Extend existing FileManager with a StreamSubscriber pattern
|
|
4
4
|
*/
|
|
5
5
|
import * as fs from 'fs/promises';
|
|
6
6
|
import * as path from 'path';
|
|
7
7
|
import { generateId, getCurrentTimestamp } from '../utils/helpers.js';
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
9
|
+
* Subscriber wrapper for FileManager
|
|
10
|
+
* Subscriber that saves process output to files
|
|
11
11
|
*/
|
|
12
12
|
export class FileStorageSubscriber {
|
|
13
13
|
fileManager;
|
|
@@ -21,7 +21,7 @@ export class FileStorageSubscriber {
|
|
|
21
21
|
this.id = `file-storage-${generateId()}`;
|
|
22
22
|
}
|
|
23
23
|
async onProcessStart(executionId, _command) {
|
|
24
|
-
//
|
|
24
|
+
// Prepare output file paths
|
|
25
25
|
const timestamp = getCurrentTimestamp().replace(/[:.]/g, '-');
|
|
26
26
|
const stdoutPath = path.join(this.baseDir, `${executionId}-stdout-${timestamp}.txt`);
|
|
27
27
|
const stderrPath = path.join(this.baseDir, `${executionId}-stderr-${timestamp}.txt`);
|
|
@@ -29,13 +29,13 @@ export class FileStorageSubscriber {
|
|
|
29
29
|
stdout: stdoutPath,
|
|
30
30
|
stderr: stderrPath,
|
|
31
31
|
});
|
|
32
|
-
//
|
|
32
|
+
// Open file handles for writing
|
|
33
33
|
try {
|
|
34
34
|
const stdoutHandle = await fs.open(stdoutPath, 'w');
|
|
35
35
|
const stderrHandle = await fs.open(stderrPath, 'w');
|
|
36
36
|
this.fileStreams.set(`${executionId}-stdout`, stdoutHandle);
|
|
37
37
|
this.fileStreams.set(`${executionId}-stderr`, stderrHandle);
|
|
38
|
-
// FileManager
|
|
38
|
+
// Register with FileManager (initially zero size)
|
|
39
39
|
await this.fileManager.registerFile(stdoutPath, 'stdout', executionId);
|
|
40
40
|
await this.fileManager.registerFile(stderrPath, 'stderr', executionId);
|
|
41
41
|
}
|
|
@@ -50,7 +50,7 @@ export class FileStorageSubscriber {
|
|
|
50
50
|
if (fileHandle) {
|
|
51
51
|
try {
|
|
52
52
|
await fileHandle.write(data);
|
|
53
|
-
//
|
|
53
|
+
// Flush immediately so other processes can read
|
|
54
54
|
await fileHandle.sync();
|
|
55
55
|
}
|
|
56
56
|
catch (error) {
|
|
@@ -59,7 +59,7 @@ export class FileStorageSubscriber {
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
async onProcessEnd(executionId, _exitCode) {
|
|
62
|
-
//
|
|
62
|
+
// Close file handles
|
|
63
63
|
const stdoutHandle = this.fileStreams.get(`${executionId}-stdout`);
|
|
64
64
|
const stderrHandle = this.fileStreams.get(`${executionId}-stderr`);
|
|
65
65
|
try {
|
|
@@ -71,7 +71,7 @@ export class FileStorageSubscriber {
|
|
|
71
71
|
await stderrHandle.close();
|
|
72
72
|
this.fileStreams.delete(`${executionId}-stderr`);
|
|
73
73
|
}
|
|
74
|
-
// FileManager
|
|
74
|
+
// Update FileManager info (final file sizes, etc.)
|
|
75
75
|
const filePaths = this.filePaths.get(executionId);
|
|
76
76
|
if (filePaths) {
|
|
77
77
|
await this.updateFileManagerInfo(executionId, filePaths);
|
|
@@ -83,9 +83,9 @@ export class FileStorageSubscriber {
|
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
async onError(executionId, error) {
|
|
86
|
-
//
|
|
86
|
+
// Ensure files are properly closed on error
|
|
87
87
|
await this.onProcessEnd(executionId, -1);
|
|
88
|
-
//
|
|
88
|
+
// Write error log to the stderr file
|
|
89
89
|
const filePaths = this.filePaths.get(executionId);
|
|
90
90
|
if (filePaths) {
|
|
91
91
|
try {
|
|
@@ -98,14 +98,14 @@ export class FileStorageSubscriber {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
/**
|
|
101
|
-
* FileManager
|
|
101
|
+
* Update FileManager info with final file sizes
|
|
102
102
|
*/
|
|
103
103
|
async updateFileManagerInfo(executionId, filePaths) {
|
|
104
104
|
try {
|
|
105
|
-
//
|
|
106
|
-
//
|
|
107
|
-
//
|
|
108
|
-
//
|
|
105
|
+
// Obtain file sizes and update FileManager
|
|
106
|
+
// This part depends on FileManager internals;
|
|
107
|
+
// may need to add an updateFileSize method to FileManager.
|
|
108
|
+
// Currently only logs via console.error
|
|
109
109
|
const stdoutStat = await fs.stat(filePaths.stdout);
|
|
110
110
|
const stderrStat = await fs.stat(filePaths.stderr);
|
|
111
111
|
console.error(`FileStorageSubscriber: Files updated for ${executionId}:`);
|
|
@@ -117,13 +117,13 @@ export class FileStorageSubscriber {
|
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
/**
|
|
120
|
-
*
|
|
120
|
+
* Get output file paths for the specified execution
|
|
121
121
|
*/
|
|
122
122
|
getFilePaths(executionId) {
|
|
123
123
|
return this.filePaths.get(executionId);
|
|
124
124
|
}
|
|
125
125
|
/**
|
|
126
|
-
*
|
|
126
|
+
* Get active file stream count (for debugging)
|
|
127
127
|
*/
|
|
128
128
|
getActiveStreamsCount() {
|
|
129
129
|
return this.fileStreams.size;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-storage-subscriber.js","sourceRoot":"","sources":["../../src/core/file-storage-subscriber.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEtE;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IAMtB;IACA;IANM,EAAE,CAAS;IACnB,WAAW,GAA+B,IAAI,GAAG,EAAE,CAAC;IACpD,SAAS,GAAoD,IAAI,GAAG,EAAE,CAAC;IAE/E,YACU,WAAwB,EACxB,UAAkB,wBAAwB;QAD1C,gBAAW,GAAX,WAAW,CAAa;QACxB,YAAO,GAAP,OAAO,CAAmC;QAElD,IAAI,CAAC,EAAE,GAAG,gBAAgB,UAAU,EAAE,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,WAAmB,EAAE,QAAgB;QACxD,
|
|
1
|
+
{"version":3,"file":"file-storage-subscriber.js","sourceRoot":"","sources":["../../src/core/file-storage-subscriber.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ export declare class MonitoringManager {
|
|
|
7
7
|
private readonly maxMetricsHistory;
|
|
8
8
|
constructor();
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* Helper to execute an exec command for retrieving process information
|
|
11
11
|
*/
|
|
12
12
|
private getExecAsync;
|
|
13
13
|
startProcessMonitor(processId: number, intervalMs?: number, includeMetrics?: string[]): MonitorInfo;
|
|
@@ -7,11 +7,11 @@ export class MonitoringManager {
|
|
|
7
7
|
systemMonitoringInterval = null;
|
|
8
8
|
maxMetricsHistory = 1000;
|
|
9
9
|
constructor() {
|
|
10
|
-
//
|
|
10
|
+
// Start periodic collection of system statistics
|
|
11
11
|
this.startSystemMonitoring();
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* Helper to execute an exec command for retrieving process information
|
|
15
15
|
*/
|
|
16
16
|
async getExecAsync() {
|
|
17
17
|
const { exec } = await import('child_process');
|
|
@@ -30,7 +30,7 @@ export class MonitoringManager {
|
|
|
30
30
|
metrics: {},
|
|
31
31
|
};
|
|
32
32
|
this.monitors.set(monitorId, monitorInfo);
|
|
33
|
-
//
|
|
33
|
+
// Start metrics collection
|
|
34
34
|
const interval = setInterval(() => {
|
|
35
35
|
this.collectProcessMetrics(monitorId, processId, includeMetrics);
|
|
36
36
|
}, intervalMs);
|
|
@@ -43,43 +43,43 @@ export class MonitoringManager {
|
|
|
43
43
|
return;
|
|
44
44
|
try {
|
|
45
45
|
const metrics = {};
|
|
46
|
-
// CPU
|
|
46
|
+
// Measure CPU usage
|
|
47
47
|
if (!includeMetrics || includeMetrics.includes('cpu')) {
|
|
48
48
|
metrics.cpu_usage_percent = await this.getCpuUsage(processId);
|
|
49
49
|
}
|
|
50
|
-
//
|
|
50
|
+
// Measure memory usage
|
|
51
51
|
if (!includeMetrics || includeMetrics.includes('memory')) {
|
|
52
52
|
metrics.memory_usage_mb = await this.getMemoryUsage(processId);
|
|
53
53
|
}
|
|
54
|
-
// I/O
|
|
54
|
+
// Measure I/O statistics
|
|
55
55
|
if (!includeMetrics || includeMetrics.includes('io')) {
|
|
56
56
|
const ioStats = await this.getIoStats(processId);
|
|
57
57
|
metrics.io_read_bytes = ioStats.read_bytes;
|
|
58
58
|
metrics.io_write_bytes = ioStats.write_bytes;
|
|
59
59
|
}
|
|
60
|
-
//
|
|
60
|
+
// Measure network statistics
|
|
61
61
|
if (!includeMetrics || includeMetrics.includes('network')) {
|
|
62
62
|
const networkStats = await this.getNetworkStats(processId);
|
|
63
63
|
metrics.network_rx_bytes = networkStats.rx_bytes;
|
|
64
64
|
metrics.network_tx_bytes = networkStats.tx_bytes;
|
|
65
65
|
}
|
|
66
|
-
//
|
|
66
|
+
// Store metrics
|
|
67
67
|
this.storeProcessMetrics(processId, metrics);
|
|
68
|
-
//
|
|
68
|
+
// Update monitor information
|
|
69
69
|
monitor.metrics = metrics;
|
|
70
70
|
monitor.last_update = getCurrentTimestamp();
|
|
71
71
|
this.monitors.set(monitorId, monitor);
|
|
72
72
|
}
|
|
73
73
|
catch (error) {
|
|
74
|
-
//
|
|
74
|
+
// Record error to internal log (avoid stdout)
|
|
75
75
|
// console.error(`Failed to collect metrics for process ${processId}:`, error);
|
|
76
|
-
//
|
|
76
|
+
// Stop monitoring on error
|
|
77
77
|
this.stopProcessMonitor(monitorId);
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
async getCpuUsage(processId) {
|
|
81
81
|
try {
|
|
82
|
-
//
|
|
82
|
+
// Platform-specific CPU usage retrieval
|
|
83
83
|
if (process.platform === 'linux') {
|
|
84
84
|
return await this.getLinuxCpuUsage(processId);
|
|
85
85
|
}
|
|
@@ -87,7 +87,7 @@ export class MonitoringManager {
|
|
|
87
87
|
return await this.getMacOsCpuUsage(processId);
|
|
88
88
|
}
|
|
89
89
|
else {
|
|
90
|
-
return 0; // Windows
|
|
90
|
+
return 0; // Simplified implementation for Windows, etc.
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
catch {
|
|
@@ -139,7 +139,7 @@ export class MonitoringManager {
|
|
|
139
139
|
const execAsync = await this.getExecAsync();
|
|
140
140
|
const { stdout } = await execAsync(`ps -p ${processId} -o rss --no-headers`);
|
|
141
141
|
const rssKb = parseInt(stdout.trim()) || 0;
|
|
142
|
-
return rssKb / 1024; // MB
|
|
142
|
+
return rssKb / 1024; // convert to MB
|
|
143
143
|
}
|
|
144
144
|
catch {
|
|
145
145
|
return 0;
|
|
@@ -154,7 +154,7 @@ export class MonitoringManager {
|
|
|
154
154
|
const lines = stdout.trim().split('\n');
|
|
155
155
|
if (lines.length > 1 && lines[1]) {
|
|
156
156
|
const rssKb = parseInt(lines[1].trim()) || 0;
|
|
157
|
-
return rssKb / 1024; // MB
|
|
157
|
+
return rssKb / 1024; // convert to MB
|
|
158
158
|
}
|
|
159
159
|
return 0;
|
|
160
160
|
}
|
|
@@ -181,12 +181,12 @@ export class MonitoringManager {
|
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
183
|
catch {
|
|
184
|
-
//
|
|
184
|
+
// Return default values on error
|
|
185
185
|
}
|
|
186
186
|
return { read_bytes: 0, write_bytes: 0 };
|
|
187
187
|
}
|
|
188
188
|
async getNetworkStats(_processId) {
|
|
189
|
-
//
|
|
189
|
+
// Network stats collection is complex; using a simplified implementation here
|
|
190
190
|
return { rx_bytes: 0, tx_bytes: 0 };
|
|
191
191
|
}
|
|
192
192
|
storeProcessMetrics(processId, metrics) {
|
|
@@ -196,7 +196,7 @@ export class MonitoringManager {
|
|
|
196
196
|
const metricsHistory = this.processMetrics.get(processId);
|
|
197
197
|
if (metricsHistory) {
|
|
198
198
|
metricsHistory.push(metrics);
|
|
199
|
-
//
|
|
199
|
+
// Limit history size
|
|
200
200
|
if (metricsHistory.length > this.maxMetricsHistory) {
|
|
201
201
|
metricsHistory.shift();
|
|
202
202
|
}
|
|
@@ -207,13 +207,13 @@ export class MonitoringManager {
|
|
|
207
207
|
if (!monitor) {
|
|
208
208
|
throw new ResourceNotFoundError('monitor', monitorId);
|
|
209
209
|
}
|
|
210
|
-
//
|
|
210
|
+
// Stop the interval
|
|
211
211
|
const interval = this.intervals.get(monitorId);
|
|
212
212
|
if (interval) {
|
|
213
213
|
clearInterval(interval);
|
|
214
214
|
this.intervals.delete(monitorId);
|
|
215
215
|
}
|
|
216
|
-
//
|
|
216
|
+
// Update monitoring status
|
|
217
217
|
monitor.status = 'stopped';
|
|
218
218
|
monitor.last_update = getCurrentTimestamp();
|
|
219
219
|
this.monitors.set(monitorId, monitor);
|
|
@@ -231,11 +231,11 @@ export class MonitoringManager {
|
|
|
231
231
|
}
|
|
232
232
|
getSystemStats(_timeRangeMinutes = 60) {
|
|
233
233
|
const systemInfo = getSystemInfo();
|
|
234
|
-
// const processInfo = getProcessInfo(); //
|
|
234
|
+
// const processInfo = getProcessInfo(); // currently unused
|
|
235
235
|
const stats = {
|
|
236
236
|
active_processes: this.getActiveProcessCount(),
|
|
237
|
-
active_terminals: 0, // TerminalManager
|
|
238
|
-
total_files: 0, // FileManager
|
|
237
|
+
active_terminals: 0, // needs to be obtained from TerminalManager
|
|
238
|
+
total_files: 0, // needs to be obtained from FileManager
|
|
239
239
|
system_load: {
|
|
240
240
|
load1: systemInfo.loadavg[0] || 0,
|
|
241
241
|
load5: systemInfo.loadavg[1] || 0,
|
|
@@ -245,7 +245,7 @@ export class MonitoringManager {
|
|
|
245
245
|
total_mb: Math.round(systemInfo.totalmem / 1024 / 1024),
|
|
246
246
|
used_mb: Math.round((systemInfo.totalmem - systemInfo.freemem) / 1024 / 1024),
|
|
247
247
|
free_mb: Math.round(systemInfo.freemem / 1024 / 1024),
|
|
248
|
-
available_mb: Math.round(systemInfo.freemem / 1024 / 1024), //
|
|
248
|
+
available_mb: Math.round(systemInfo.freemem / 1024 / 1024), // simplified implementation
|
|
249
249
|
},
|
|
250
250
|
uptime_seconds: Math.round(systemInfo.uptime),
|
|
251
251
|
collected_at: getCurrentTimestamp(),
|
|
@@ -257,23 +257,23 @@ export class MonitoringManager {
|
|
|
257
257
|
.length;
|
|
258
258
|
}
|
|
259
259
|
startSystemMonitoring() {
|
|
260
|
-
// 5
|
|
260
|
+
// Collect system statistics every 5 minutes
|
|
261
261
|
this.systemMonitoringInterval = setInterval(() => {
|
|
262
262
|
try {
|
|
263
|
-
//
|
|
263
|
+
// In future, write system stats to a log file
|
|
264
264
|
const stats = this.getSystemStats();
|
|
265
265
|
this.logSystemStats(stats);
|
|
266
266
|
}
|
|
267
267
|
catch (error) {
|
|
268
|
-
//
|
|
268
|
+
// Record error to internal log (avoid stdout)
|
|
269
269
|
// console.error('Failed to collect system stats:', error);
|
|
270
270
|
}
|
|
271
271
|
}, 5 * 60 * 1000);
|
|
272
|
-
//
|
|
272
|
+
// Prevent interfering with shutdown
|
|
273
273
|
this.systemMonitoringInterval.unref?.();
|
|
274
274
|
}
|
|
275
275
|
logSystemStats(_stats) {
|
|
276
|
-
//
|
|
276
|
+
// In future, output to a log file (avoid stdout)
|
|
277
277
|
// console.log(`[${stats.collected_at}] System Stats:`, {
|
|
278
278
|
// processes: stats.active_processes,
|
|
279
279
|
// load: stats.system_load.load1,
|
|
@@ -285,13 +285,13 @@ export class MonitoringManager {
|
|
|
285
285
|
clearInterval(this.systemMonitoringInterval);
|
|
286
286
|
this.systemMonitoringInterval = null;
|
|
287
287
|
}
|
|
288
|
-
//
|
|
288
|
+
// Stop all monitors
|
|
289
289
|
for (const monitorId of this.monitors.keys()) {
|
|
290
290
|
try {
|
|
291
291
|
this.stopProcessMonitor(monitorId);
|
|
292
292
|
}
|
|
293
293
|
catch (error) {
|
|
294
|
-
//
|
|
294
|
+
// Record error to internal log (avoid stdout)
|
|
295
295
|
// console.error(`Failed to stop monitor ${monitorId}:`, error);
|
|
296
296
|
}
|
|
297
297
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monitoring-manager.js","sourceRoot":"","sources":["../../src/core/monitoring-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAW3D,MAAM,OAAO,iBAAiB;IACpB,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC1C,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC9C,cAAc,GAAG,IAAI,GAAG,EAA4B,CAAC;IACrD,wBAAwB,GAA0B,IAAI,CAAC;IAC9C,iBAAiB,GAAG,IAAI,CAAC;IAE1C;QACE,
|
|
1
|
+
{"version":3,"file":"monitoring-manager.js","sourceRoot":"","sources":["../../src/core/monitoring-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAW3D,MAAM,OAAO,iBAAiB;IACpB,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC1C,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC9C,cAAc,GAAG,IAAI,GAAG,EAA4B,CAAC;IACrD,wBAAwB,GAA0B,IAAI,CAAC;IAC9C,iBAAiB,GAAG,IAAI,CAAC;IAE1C;QACE,iDAAiD;QACjD,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY;QACxB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,mBAAmB,CACjB,SAAiB,EACjB,UAAU,GAAG,IAAI,EACjB,cAAyB;QAEzB,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAC;QAElC,MAAM,WAAW,GAAgB;YAC/B,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,GAAG;YACf,WAAW,EAAE,GAAG;YAChB,OAAO,EAAE,EAAE;SACZ,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAE1C,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QACnE,CAAC,EAAE,UAAU,CAAC,CAAC;QAEf,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAExC,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,qBAAqB,CACjC,SAAiB,EACjB,SAAiB,EACjB,cAAyB;QAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,CAAC;YACH,MAAM,OAAO,GAAmB,EAAE,CAAC;YAEnC,oBAAoB;YACpB,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtD,OAAO,CAAC,iBAAiB,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAChE,CAAC;YAED,uBAAuB;YACvB,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzD,OAAO,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACjE,CAAC;YAED,yBAAyB;YACzB,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBACjD,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;gBAC3C,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;YAC/C,CAAC;YAED,6BAA6B;YAC7B,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAC3D,OAAO,CAAC,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC;gBACjD,OAAO,CAAC,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC;YACnD,CAAC;YAED,gBAAgB;YAChB,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAE7C,6BAA6B;YAC7B,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;YAC1B,OAAO,CAAC,WAAW,GAAG,mBAAmB,EAAE,CAAC;YAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8CAA8C;YAC9C,+EAA+E;YAE/E,2BAA2B;YAC3B,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,SAAiB;QACzC,IAAI,CAAC;YACH,wCAAwC;YACxC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACjC,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAChD,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACzC,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,CAAC,CAAC,8CAA8C;YAC1D,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QAC9C,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAE5C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,SAAS,SAAS,uBAAuB,CAAC,CAAC;YAC9E,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QAC9C,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAE5C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,SAAS,SAAS,UAAU,CAAC,CAAC;YACjE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,SAAiB;QAC5C,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACjC,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YACnD,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACzC,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,SAAiB;QACjD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAE5C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,SAAS,SAAS,sBAAsB,CAAC,CAAC;YAC7E,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3C,OAAO,KAAK,GAAG,IAAI,CAAC,CAAC,gBAAgB;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,SAAiB;QACjD,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAElC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,SAAS,SAAS,SAAS,CAAC,CAAC;YAChE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC7C,OAAO,KAAK,GAAG,IAAI,CAAC,CAAC,gBAAgB;YACvC,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU,CACtB,SAAiB;QAEjB,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACjC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;gBACvC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,SAAS,KAAK,EAAE,OAAO,CAAC,CAAC;gBAEnE,IAAI,SAAS,GAAG,CAAC,CAAC;gBAClB,IAAI,UAAU,GAAG,CAAC,CAAC;gBAEnB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtC,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;wBACnC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC;oBAC1D,CAAC;yBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;wBAC3C,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC;oBAC3D,CAAC;gBACH,CAAC;gBAED,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;YAC5D,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iCAAiC;QACnC,CAAC;QAED,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,UAAkB;QAElB,8EAA8E;QAC9E,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACtC,CAAC;IAEO,mBAAmB,CAAC,SAAiB,EAAE,OAAuB;QACpE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,cAAc,EAAE,CAAC;YACnB,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE7B,qBAAqB;YACrB,IAAI,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACnD,cAAc,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,SAAiB;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACxD,CAAC;QAED,oBAAoB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,QAAQ,EAAE,CAAC;YACb,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QAED,2BAA2B;QAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;QAC3B,OAAO,CAAC,WAAW,GAAG,mBAAmB,EAAE,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,cAAc,CAAC,iBAAiB,GAAG,EAAE;QACnC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QACnC,4DAA4D;QAE5D,MAAM,KAAK,GAAgB;YACzB,gBAAgB,EAAE,IAAI,CAAC,qBAAqB,EAAE;YAC9C,gBAAgB,EAAE,CAAC,EAAE,4CAA4C;YACjE,WAAW,EAAE,CAAC,EAAE,wCAAwC;YACxD,WAAW,EAAE;gBACX,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;gBACjC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;gBACjC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;aACnC;YACD,YAAY,EAAE;gBACZ,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;gBACvD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;gBAC7E,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;gBACrD,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,4BAA4B;aACzF;YACD,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;YAC7C,YAAY,EAAE,mBAAmB,EAAE;SACpC,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,qBAAqB;QAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC;aACvF,MAAM,CAAC;IACZ,CAAC;IAEO,qBAAqB;QAC3B,4CAA4C;QAC5C,IAAI,CAAC,wBAAwB,GAAG,WAAW,CACzC,GAAG,EAAE;YACH,IAAI,CAAC;gBACH,8CAA8C;gBAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,8CAA8C;gBAC9C,2DAA2D;YAC7D,CAAC;QACH,CAAC,EACD,CAAC,GAAG,EAAE,GAAG,IAAI,CACd,CAAC;QAEF,oCAAoC;QACpC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,EAAE,CAAC;IAC1C,CAAC;IAEO,cAAc,CAAC,MAAmB;QACxC,iDAAiD;QACjD,yDAAyD;QACzD,uCAAuC;QACvC,mCAAmC;QACnC,gDAAgD;QAChD,MAAM;IACR,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAClC,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC7C,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACvC,CAAC;QAED,oBAAoB;QACpB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,8CAA8C;gBAC9C,gEAAgE;YAClE,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -49,13 +49,13 @@ export declare class ProcessManager {
|
|
|
49
49
|
enableStreamingFeature(enable?: boolean): void;
|
|
50
50
|
getRealtimeStreamSubscriber(): RealtimeStreamSubscriber | undefined;
|
|
51
51
|
/**
|
|
52
|
-
|
|
52
|
+
* Issue #13: Get execution ID from output_id
|
|
53
53
|
*/
|
|
54
54
|
private findExecutionIdByOutputId;
|
|
55
55
|
private initializeOutputDirectory;
|
|
56
56
|
executeCommand(options: ExecutionOptions): Promise<ExecutionInfo>;
|
|
57
57
|
/**
|
|
58
|
-
|
|
58
|
+
* Issue #13: Execute command using StreamingPipelineReader
|
|
59
59
|
*/
|
|
60
60
|
private executeCommandWithInputStream;
|
|
61
61
|
private executeForegroundCommand;
|
|
@@ -66,9 +66,9 @@ export declare class ProcessManager {
|
|
|
66
66
|
private executeDetachedCommand;
|
|
67
67
|
private saveOutputToFile;
|
|
68
68
|
/**
|
|
69
|
-
|
|
69
|
+
* Helper to set detailed output status information
|
|
70
70
|
* Issue #14: Enhanced guidance messages for adaptive mode transitions
|
|
71
|
-
|
|
71
|
+
* Improvement: determine status by reason instead of outputTruncated
|
|
72
72
|
*/
|
|
73
73
|
private setOutputStatus;
|
|
74
74
|
getExecution(executionId: string): ExecutionInfo | undefined;
|