localpov 0.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.
Files changed (45) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +309 -0
  3. package/bin/localpov-mcp.js +15 -0
  4. package/bin/localpov.js +599 -0
  5. package/dashboard/index.html +909 -0
  6. package/dist/collectors/browser-capture.d.ts +124 -0
  7. package/dist/collectors/browser-capture.js +327 -0
  8. package/dist/collectors/browser-capture.js.map +1 -0
  9. package/dist/collectors/build-parser.d.ts +18 -0
  10. package/dist/collectors/build-parser.js +192 -0
  11. package/dist/collectors/build-parser.js.map +1 -0
  12. package/dist/collectors/docker-watcher.d.ts +42 -0
  13. package/dist/collectors/docker-watcher.js +101 -0
  14. package/dist/collectors/docker-watcher.js.map +1 -0
  15. package/dist/collectors/terminal.d.ts +42 -0
  16. package/dist/collectors/terminal.js +128 -0
  17. package/dist/collectors/terminal.js.map +1 -0
  18. package/dist/index.d.ts +1 -0
  19. package/dist/index.js +6 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/mcp-server.d.ts +1 -0
  22. package/dist/mcp-server.js +466 -0
  23. package/dist/mcp-server.js.map +1 -0
  24. package/dist/utils/inject.d.ts +11 -0
  25. package/dist/utils/inject.js +241 -0
  26. package/dist/utils/inject.js.map +1 -0
  27. package/dist/utils/network.d.ts +7 -0
  28. package/dist/utils/network.js +42 -0
  29. package/dist/utils/network.js.map +1 -0
  30. package/dist/utils/proxy.d.ts +24 -0
  31. package/dist/utils/proxy.js +363 -0
  32. package/dist/utils/proxy.js.map +1 -0
  33. package/dist/utils/scanner.d.ts +9 -0
  34. package/dist/utils/scanner.js +96 -0
  35. package/dist/utils/scanner.js.map +1 -0
  36. package/dist/utils/session-manager.d.ts +109 -0
  37. package/dist/utils/session-manager.js +488 -0
  38. package/dist/utils/session-manager.js.map +1 -0
  39. package/dist/utils/shell-init.d.ts +26 -0
  40. package/dist/utils/shell-init.js +422 -0
  41. package/dist/utils/shell-init.js.map +1 -0
  42. package/dist/utils/system-info.d.ts +51 -0
  43. package/dist/utils/system-info.js +170 -0
  44. package/dist/utils/system-info.js.map +1 -0
  45. package/package.json +64 -0
@@ -0,0 +1,488 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SessionManager = exports.SESSION_DIR = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const os_1 = __importDefault(require("os"));
10
+ const events_1 = require("events");
11
+ exports.SESSION_DIR = path_1.default.join(os_1.default.homedir(), '.localpov', 'sessions');
12
+ function _readFile(filePath) {
13
+ return fs_1.default.readFileSync(filePath, 'utf8').replace(/^\uFEFF/, '');
14
+ }
15
+ const MARKER_RE = /\x1b\]localpov;([^;]+);([^;]*);(\d+)\x07/g;
16
+ const ERROR_PATTERNS = [
17
+ { re: /(?:Error|TypeError|ReferenceError|SyntaxError|RangeError|URIError):\s*.+/, lang: 'js' },
18
+ { re: /at\s+.+\(.+:\d+:\d+\)/, lang: 'js' },
19
+ { re: /ENOENT|EACCES|EADDRINUSE|ECONNREFUSED|ECONNRESET/, lang: 'node' },
20
+ { re: /UnhandledPromiseRejection/, lang: 'node' },
21
+ { re: /error TS\d+:/, lang: 'ts' },
22
+ { re: /\.tsx?\(\d+,\d+\):\s*error/, lang: 'ts' },
23
+ { re: /ERROR\s+in\s+/, lang: 'build' },
24
+ { re: /Module not found/, lang: 'build' },
25
+ { re: /Cannot find module/, lang: 'build' },
26
+ { re: /Failed to compile/, lang: 'build' },
27
+ { re: /Build failed/, lang: 'build' },
28
+ { re: /Traceback \(most recent call last\)/, lang: 'python' },
29
+ { re: /^\s*\w+Error:/, lang: 'python' },
30
+ { re: /^error\[E\d+\]:/, lang: 'rust' },
31
+ { re: /^\.\/\w+\.go:\d+:\d+:/, lang: 'go' },
32
+ { re: /cannot use .+ as .+ in/, lang: 'go' },
33
+ { re: /\b(?:FATAL|CRITICAL|PANIC)\b/i, lang: 'generic' },
34
+ { re: /npm ERR!/, lang: 'npm' },
35
+ { re: /exited with code [1-9]/, lang: 'generic' },
36
+ { re: /segmentation fault/i, lang: 'generic' },
37
+ { re: /killed|OOM|out of memory/i, lang: 'generic' },
38
+ ];
39
+ /**
40
+ * Manages terminal session logs captured by shell integration.
41
+ */
42
+ class SessionManager extends events_1.EventEmitter {
43
+ _fileWatchers;
44
+ constructor() {
45
+ super();
46
+ this._fileWatchers = new Map();
47
+ }
48
+ listSessions() {
49
+ const sessions = [];
50
+ try {
51
+ fs_1.default.mkdirSync(exports.SESSION_DIR, { recursive: true });
52
+ }
53
+ catch { }
54
+ let files;
55
+ try {
56
+ files = fs_1.default.readdirSync(exports.SESSION_DIR);
57
+ }
58
+ catch {
59
+ return sessions;
60
+ }
61
+ for (const file of files) {
62
+ if (!file.endsWith('.meta'))
63
+ continue;
64
+ const pid = parseInt(path_1.default.basename(file, '.meta'), 10);
65
+ if (isNaN(pid))
66
+ continue;
67
+ const metaPath = path_1.default.join(exports.SESSION_DIR, file);
68
+ const logPath = path_1.default.join(exports.SESSION_DIR, `${pid}.log`);
69
+ try {
70
+ const raw = fs_1.default.readFileSync(metaPath, 'utf8').replace(/^\uFEFF/, '');
71
+ const meta = JSON.parse(raw);
72
+ const alive = _isProcessAlive(pid);
73
+ let logSize = 0;
74
+ let lastActivity = meta.started * 1000 || 0;
75
+ let hasLog = false;
76
+ try {
77
+ const stat = fs_1.default.statSync(logPath);
78
+ logSize = stat.size;
79
+ lastActivity = stat.mtimeMs;
80
+ hasLog = true;
81
+ }
82
+ catch { }
83
+ sessions.push({
84
+ pid,
85
+ shell: meta.shell || 'unknown',
86
+ cwd: meta.cwd || '',
87
+ started: meta.started || 0,
88
+ user: meta.user || '',
89
+ term: meta.term || '',
90
+ alive,
91
+ logSize,
92
+ lastActivity,
93
+ hasLog,
94
+ });
95
+ }
96
+ catch {
97
+ // Corrupt meta file — skip
98
+ }
99
+ }
100
+ sessions.sort((a, b) => {
101
+ if (a.alive !== b.alive)
102
+ return a.alive ? -1 : 1;
103
+ return b.lastActivity - a.lastActivity;
104
+ });
105
+ return sessions;
106
+ }
107
+ readSession(pid, options = {}) {
108
+ const lines = options.lines || 100;
109
+ const raw = !!options.raw;
110
+ const logPath = path_1.default.join(exports.SESSION_DIR, `${pid}.log`);
111
+ if (!fs_1.default.existsSync(logPath)) {
112
+ return { error: 'Session log not found', pid, lines: [], lineCount: 0, commands: [] };
113
+ }
114
+ const content = _tailFile(logPath, lines + 20);
115
+ const commands = _parseMarkers(content);
116
+ let display = content;
117
+ if (!raw) {
118
+ display = _stripAnsi(display);
119
+ display = display.replace(/\x1b\]localpov;[^\x07]*\x07/g, '');
120
+ }
121
+ display = display
122
+ .replace(/^Script started.*\n/m, '')
123
+ .replace(/\nScript done.*$/m, '');
124
+ const psNoisePatterns = [
125
+ /^\*{4,}$/,
126
+ /^Windows PowerShell transcript/,
127
+ /^(Start|End) time:/,
128
+ /^Username:/,
129
+ /^RunAs User:/,
130
+ /^Configuration Name:/,
131
+ /^Machine:/,
132
+ /^Host Application:/,
133
+ /^Process ID:/,
134
+ /^PSVersion:/,
135
+ /^PSEdition:/,
136
+ /^PSCompatibleVersions:/,
137
+ /^BuildVersion:/,
138
+ /^CLRVersion:/,
139
+ /^WSManStackVersion:/,
140
+ /^PSRemotingProtocolVersion:/,
141
+ /^SerializationVersion:/,
142
+ ];
143
+ display = display.split('\n')
144
+ .filter(line => {
145
+ const trimmed = line.trim();
146
+ if (!trimmed)
147
+ return true;
148
+ return !psNoisePatterns.some(p => p.test(trimmed));
149
+ })
150
+ .join('\n');
151
+ // Strip VS Code shell integration markers (]633;...) — they appear inline
152
+ display = display.replace(/\]633;[^\x07\n]*(\x07)?/g, '');
153
+ // Clean PS> transcript command echo prefix → show as bare command
154
+ display = display.replace(/^PS>/gm, '> ');
155
+ // Clean leftover prompt fragments like "PS C:\path\here> " on otherwise empty lines
156
+ display = display.replace(/^PS [A-Z]:\\[^>]*>\s*$/gm, '');
157
+ // Collapse 3+ consecutive blank lines into 1
158
+ display = display.replace(/\n{3,}/g, '\n\n');
159
+ const outputLines = display.split('\n').slice(-lines);
160
+ return {
161
+ pid,
162
+ lines: outputLines,
163
+ lineCount: outputLines.length,
164
+ commands: commands.slice(-20),
165
+ };
166
+ }
167
+ readCommand(pid, commandIndex) {
168
+ const logPath = path_1.default.join(exports.SESSION_DIR, `${pid}.log`);
169
+ if (!fs_1.default.existsSync(logPath))
170
+ return { error: 'Session not found' };
171
+ const content = _readFile(logPath);
172
+ const commands = _parseMarkers(content);
173
+ if (commands.length === 0)
174
+ return { error: 'No commands found in session' };
175
+ if (commandIndex < 0)
176
+ commandIndex = commands.length + commandIndex;
177
+ if (commandIndex < 0 || commandIndex >= commands.length) {
178
+ return { error: `Command index out of range (0 to ${commands.length - 1}, or -1 for last)` };
179
+ }
180
+ const cmd = commands[commandIndex];
181
+ return {
182
+ command: cmd.command,
183
+ exitCode: cmd.exitCode,
184
+ started: cmd.started,
185
+ ended: cmd.ended,
186
+ duration: cmd.ended && cmd.started ? cmd.ended - cmd.started : null,
187
+ output: _stripAnsi(cmd.output),
188
+ running: cmd.exitCode === null,
189
+ };
190
+ }
191
+ readLastCommand(pid) {
192
+ return this.readCommand(pid, -1);
193
+ }
194
+ searchAll(pattern, options = {}) {
195
+ const maxResults = options.maxResults || 20;
196
+ const ignoreCase = options.ignoreCase !== false;
197
+ const results = [];
198
+ let regex;
199
+ try {
200
+ regex = new RegExp(pattern, ignoreCase ? 'gi' : 'g');
201
+ }
202
+ catch (e) {
203
+ const msg = e instanceof Error ? e.message : String(e);
204
+ return { error: `Invalid regex: ${msg}` };
205
+ }
206
+ const sessions = this.listSessions();
207
+ for (const session of sessions) {
208
+ if (!session.hasLog)
209
+ continue;
210
+ const logPath = path_1.default.join(exports.SESSION_DIR, `${session.pid}.log`);
211
+ let content;
212
+ try {
213
+ content = _stripAnsi(_readFile(logPath));
214
+ }
215
+ catch {
216
+ continue;
217
+ }
218
+ const lines = content.split('\n');
219
+ for (let i = 0; i < lines.length && results.length < maxResults; i++) {
220
+ if (regex.test(lines[i])) {
221
+ results.push({
222
+ pid: session.pid,
223
+ alive: session.alive,
224
+ line: i + 1,
225
+ text: lines[i].trim().slice(0, 200),
226
+ context: lines.slice(Math.max(0, i - 2), Math.min(lines.length, i + 3)).join('\n'),
227
+ });
228
+ regex.lastIndex = 0;
229
+ }
230
+ }
231
+ if (results.length >= maxResults)
232
+ break;
233
+ }
234
+ return { results, total: results.length, pattern };
235
+ }
236
+ getErrors(options = {}) {
237
+ const since = options.since || 0;
238
+ const maxPerSession = options.maxPerSession || 10;
239
+ const sessions = this.listSessions();
240
+ const errors = [];
241
+ for (const session of sessions) {
242
+ if (!session.hasLog)
243
+ continue;
244
+ if (since && session.lastActivity < since)
245
+ continue;
246
+ const logPath = path_1.default.join(exports.SESSION_DIR, `${session.pid}.log`);
247
+ let content;
248
+ try {
249
+ content = _stripAnsi(_readFile(logPath));
250
+ }
251
+ catch {
252
+ continue;
253
+ }
254
+ const lines = content.split('\n');
255
+ let sessionErrors = 0;
256
+ for (let i = 0; i < lines.length; i++) {
257
+ if (sessionErrors >= maxPerSession)
258
+ break;
259
+ const line = lines[i];
260
+ for (const { re, lang } of ERROR_PATTERNS) {
261
+ if (re.test(line)) {
262
+ const contextStart = Math.max(0, i - 2);
263
+ const contextEnd = Math.min(lines.length, i + 6);
264
+ errors.push({
265
+ pid: session.pid,
266
+ alive: session.alive,
267
+ cwd: session.cwd,
268
+ line: i + 1,
269
+ text: line.trim().slice(0, 300),
270
+ context: lines.slice(contextStart, contextEnd).join('\n'),
271
+ lang,
272
+ });
273
+ sessionErrors++;
274
+ break;
275
+ }
276
+ }
277
+ }
278
+ }
279
+ return errors;
280
+ }
281
+ getDiagnostics() {
282
+ const sessions = this.listSessions();
283
+ const alive = sessions.filter(s => s.alive);
284
+ const dead = sessions.filter(s => !s.alive);
285
+ const errors = this.getErrors({ maxPerSession: 5 });
286
+ const errorsBySession = {};
287
+ for (const err of errors) {
288
+ if (!errorsBySession[err.pid])
289
+ errorsBySession[err.pid] = [];
290
+ errorsBySession[err.pid].push(err);
291
+ }
292
+ const crashed = dead.filter(s => {
293
+ const sessionErrors = errorsBySession[s.pid];
294
+ return sessionErrors && sessionErrors.length > 0;
295
+ });
296
+ const summary = [];
297
+ if (errors.length > 0)
298
+ summary.push(`${errors.length} error(s) detected`);
299
+ if (crashed.length > 0)
300
+ summary.push(`${crashed.length} session(s) crashed`);
301
+ if (alive.length > 0)
302
+ summary.push(`${alive.length} active session(s)`);
303
+ if (errors.length === 0 && crashed.length === 0)
304
+ summary.push('All clear — no errors detected');
305
+ return {
306
+ sessions: {
307
+ active: alive.length,
308
+ dead: dead.length,
309
+ total: sessions.length,
310
+ },
311
+ errors: {
312
+ total: errors.length,
313
+ items: errors.slice(0, 15),
314
+ bySession: Object.fromEntries(Object.entries(errorsBySession).map(([pid, errs]) => [pid, errs.length])),
315
+ },
316
+ crashed: crashed.map(s => ({
317
+ pid: s.pid,
318
+ cwd: s.cwd,
319
+ shell: s.shell,
320
+ errors: (errorsBySession[s.pid] || []).slice(0, 3),
321
+ })),
322
+ summary: summary.join('. ') + '.',
323
+ };
324
+ }
325
+ watchSession(pid, callback) {
326
+ const logPath = path_1.default.join(exports.SESSION_DIR, `${pid}.log`);
327
+ if (!fs_1.default.existsSync(logPath))
328
+ return null;
329
+ let lastSize;
330
+ try {
331
+ lastSize = fs_1.default.statSync(logPath).size;
332
+ }
333
+ catch {
334
+ return null;
335
+ }
336
+ const interval = setInterval(() => {
337
+ try {
338
+ const stat = fs_1.default.statSync(logPath);
339
+ if (stat.size > lastSize) {
340
+ const fd = fs_1.default.openSync(logPath, 'r');
341
+ const buf = Buffer.alloc(stat.size - lastSize);
342
+ fs_1.default.readSync(fd, buf, 0, buf.length, lastSize);
343
+ fs_1.default.closeSync(fd);
344
+ lastSize = stat.size;
345
+ callback(_stripAnsi(buf.toString('utf8')));
346
+ }
347
+ }
348
+ catch { }
349
+ }, 500);
350
+ this._fileWatchers.set(pid, interval);
351
+ return () => {
352
+ clearInterval(interval);
353
+ this._fileWatchers.delete(pid);
354
+ };
355
+ }
356
+ cleanup() {
357
+ let cleaned = 0;
358
+ let files;
359
+ try {
360
+ files = fs_1.default.readdirSync(exports.SESSION_DIR);
361
+ }
362
+ catch {
363
+ return 0;
364
+ }
365
+ const now = Date.now();
366
+ for (const file of files) {
367
+ const filePath = path_1.default.join(exports.SESSION_DIR, file);
368
+ try {
369
+ const stat = fs_1.default.statSync(filePath);
370
+ const pid = parseInt(path_1.default.basename(file).split('.')[0], 10);
371
+ const age = now - stat.mtimeMs;
372
+ const dead = !_isProcessAlive(pid);
373
+ if (age > 24 * 60 * 60 * 1000 || (dead && age > 60 * 60 * 1000)) {
374
+ fs_1.default.unlinkSync(filePath);
375
+ cleaned++;
376
+ }
377
+ }
378
+ catch { }
379
+ }
380
+ return cleaned;
381
+ }
382
+ destroy() {
383
+ for (const interval of this._fileWatchers.values()) {
384
+ clearInterval(interval);
385
+ }
386
+ this._fileWatchers.clear();
387
+ }
388
+ }
389
+ exports.SessionManager = SessionManager;
390
+ // ── Internal helpers ──
391
+ function _isProcessAlive(pid) {
392
+ try {
393
+ process.kill(pid, 0);
394
+ return true;
395
+ }
396
+ catch {
397
+ return false;
398
+ }
399
+ }
400
+ function _tailFile(filePath, numLines) {
401
+ const CHUNK = 16384;
402
+ let stat;
403
+ try {
404
+ stat = fs_1.default.statSync(filePath);
405
+ }
406
+ catch {
407
+ return '';
408
+ }
409
+ if (stat.size === 0)
410
+ return '';
411
+ if (stat.size < CHUNK * 2) {
412
+ const content = _readFile(filePath);
413
+ return content.split('\n').slice(-numLines).join('\n');
414
+ }
415
+ const fd = fs_1.default.openSync(filePath, 'r');
416
+ let pos = Math.max(0, stat.size - CHUNK);
417
+ let text = '';
418
+ let lines = 0;
419
+ while (pos >= 0 && lines < numLines) {
420
+ const readSize = Math.min(CHUNK, stat.size - pos);
421
+ const buf = Buffer.alloc(readSize);
422
+ fs_1.default.readSync(fd, buf, 0, readSize, pos);
423
+ text = buf.toString('utf8') + text;
424
+ lines = text.split('\n').length;
425
+ if (pos === 0)
426
+ break;
427
+ pos = Math.max(0, pos - CHUNK);
428
+ }
429
+ fs_1.default.closeSync(fd);
430
+ return text.split('\n').slice(-numLines).join('\n');
431
+ }
432
+ function _parseMarkers(content) {
433
+ const commands = [];
434
+ let current = null;
435
+ for (const line of content.split('\n')) {
436
+ const markerRe = /\x1b\]localpov;([^;]+);([^;]*);(\d+)\x07/g;
437
+ let match;
438
+ while ((match = markerRe.exec(line)) !== null) {
439
+ const [, type, value, ts] = match;
440
+ if (type === 'cmd-start') {
441
+ if (current) {
442
+ current.output = (current._lines || []).join('\n');
443
+ delete current._lines;
444
+ commands.push(current);
445
+ }
446
+ current = {
447
+ command: value,
448
+ started: parseInt(ts, 10),
449
+ exitCode: null,
450
+ ended: null,
451
+ output: '',
452
+ _lines: [],
453
+ };
454
+ }
455
+ else if (type === 'cmd-end') {
456
+ if (current) {
457
+ current.exitCode = parseInt(value, 10);
458
+ current.ended = parseInt(ts, 10);
459
+ current.output = (current._lines || []).join('\n');
460
+ delete current._lines;
461
+ commands.push(current);
462
+ current = null;
463
+ }
464
+ }
465
+ }
466
+ if (current) {
467
+ const clean = line.replace(/\x1b\]localpov;[^\x07]*\x07/g, '');
468
+ if (!current._lines)
469
+ current._lines = [];
470
+ current._lines.push(clean);
471
+ }
472
+ }
473
+ if (current) {
474
+ current.output = (current._lines || []).join('\n');
475
+ delete current._lines;
476
+ commands.push(current);
477
+ }
478
+ return commands;
479
+ }
480
+ function _stripAnsi(text) {
481
+ return text
482
+ .replace(/\x1b\[[0-9;]*[a-zA-Z]/g, '')
483
+ .replace(/\x1b\][^\x07]*\x07/g, '')
484
+ .replace(/\x1b\(B/g, '')
485
+ .replace(/\x1b\[\?[0-9;]*[a-zA-Z]/g, '')
486
+ .replace(/\r/g, '');
487
+ }
488
+ //# sourceMappingURL=session-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/utils/session-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export declare const LOCALPOV_DIR: string;
2
+ export declare const SESSION_DIR: string;
3
+ type ShellType = 'bash' | 'zsh' | 'fish' | 'powershell';
4
+ interface SetupResult {
5
+ success: boolean;
6
+ error?: string;
7
+ already?: boolean;
8
+ shell?: string;
9
+ profilePath?: string;
10
+ initPath?: string;
11
+ allProfiles?: string[];
12
+ }
13
+ interface UnsetupResult {
14
+ success: boolean;
15
+ error?: string;
16
+ shell?: string;
17
+ profilePath?: string;
18
+ }
19
+ export declare function detectShell(): ShellType;
20
+ export declare function getShellProfile(shell: ShellType): string | null;
21
+ export declare function getInitFilePath(shell: ShellType): string;
22
+ export declare function getInitScript(shell: ShellType): string | null;
23
+ export declare function setup(shell?: ShellType): SetupResult;
24
+ export declare function unsetup(shell?: ShellType): UnsetupResult;
25
+ export declare function cleanSessions(): number;
26
+ export {};