mstro-app 0.4.3 → 0.4.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/dist/server/cli/headless/claude-invoker-process.d.ts +11 -0
- package/dist/server/cli/headless/claude-invoker-process.d.ts.map +1 -0
- package/dist/server/cli/headless/claude-invoker-process.js +140 -0
- package/dist/server/cli/headless/claude-invoker-process.js.map +1 -0
- package/dist/server/cli/headless/claude-invoker-stall.d.ts +40 -0
- package/dist/server/cli/headless/claude-invoker-stall.d.ts.map +1 -0
- package/dist/server/cli/headless/claude-invoker-stall.js +98 -0
- package/dist/server/cli/headless/claude-invoker-stall.js.map +1 -0
- package/dist/server/cli/headless/claude-invoker-stream.d.ts +44 -0
- package/dist/server/cli/headless/claude-invoker-stream.d.ts.map +1 -0
- package/dist/server/cli/headless/claude-invoker-stream.js +276 -0
- package/dist/server/cli/headless/claude-invoker-stream.js.map +1 -0
- package/dist/server/cli/headless/claude-invoker-tools.d.ts +21 -0
- package/dist/server/cli/headless/claude-invoker-tools.d.ts.map +1 -0
- package/dist/server/cli/headless/claude-invoker-tools.js +137 -0
- package/dist/server/cli/headless/claude-invoker-tools.js.map +1 -0
- package/dist/server/cli/headless/claude-invoker.d.ts +6 -4
- package/dist/server/cli/headless/claude-invoker.d.ts.map +1 -1
- package/dist/server/cli/headless/claude-invoker.js +10 -807
- package/dist/server/cli/headless/claude-invoker.js.map +1 -1
- package/dist/server/cli/headless/haiku-assessments.d.ts +62 -0
- package/dist/server/cli/headless/haiku-assessments.d.ts.map +1 -0
- package/dist/server/cli/headless/haiku-assessments.js +281 -0
- package/dist/server/cli/headless/haiku-assessments.js.map +1 -0
- package/dist/server/cli/headless/headless-logger.d.ts +3 -2
- package/dist/server/cli/headless/headless-logger.d.ts.map +1 -1
- package/dist/server/cli/headless/headless-logger.js +28 -5
- package/dist/server/cli/headless/headless-logger.js.map +1 -1
- package/dist/server/cli/headless/native-timeout-detector.d.ts +44 -0
- package/dist/server/cli/headless/native-timeout-detector.d.ts.map +1 -0
- package/dist/server/cli/headless/native-timeout-detector.js +99 -0
- package/dist/server/cli/headless/native-timeout-detector.js.map +1 -0
- package/dist/server/cli/headless/stall-assessor.d.ts +2 -110
- package/dist/server/cli/headless/stall-assessor.d.ts.map +1 -1
- package/dist/server/cli/headless/stall-assessor.js +65 -457
- package/dist/server/cli/headless/stall-assessor.js.map +1 -1
- package/dist/server/cli/improvisation-attachments.d.ts +21 -0
- package/dist/server/cli/improvisation-attachments.d.ts.map +1 -0
- package/dist/server/cli/improvisation-attachments.js +116 -0
- package/dist/server/cli/improvisation-attachments.js.map +1 -0
- package/dist/server/cli/improvisation-retry.d.ts +52 -0
- package/dist/server/cli/improvisation-retry.d.ts.map +1 -0
- package/dist/server/cli/improvisation-retry.js +434 -0
- package/dist/server/cli/improvisation-retry.js.map +1 -0
- package/dist/server/cli/improvisation-session-manager.d.ts +10 -266
- package/dist/server/cli/improvisation-session-manager.d.ts.map +1 -1
- package/dist/server/cli/improvisation-session-manager.js +117 -1079
- package/dist/server/cli/improvisation-session-manager.js.map +1 -1
- package/dist/server/cli/improvisation-types.d.ts +86 -0
- package/dist/server/cli/improvisation-types.d.ts.map +1 -0
- package/dist/server/cli/improvisation-types.js +10 -0
- package/dist/server/cli/improvisation-types.js.map +1 -0
- package/dist/server/cli/prompt-builders.d.ts +68 -0
- package/dist/server/cli/prompt-builders.d.ts.map +1 -0
- package/dist/server/cli/prompt-builders.js +312 -0
- package/dist/server/cli/prompt-builders.js.map +1 -0
- package/dist/server/index.js +33 -212
- package/dist/server/index.js.map +1 -1
- package/dist/server/mcp/bouncer-haiku.d.ts +10 -0
- package/dist/server/mcp/bouncer-haiku.d.ts.map +1 -0
- package/dist/server/mcp/bouncer-haiku.js +152 -0
- package/dist/server/mcp/bouncer-haiku.js.map +1 -0
- package/dist/server/mcp/bouncer-integration.d.ts +3 -4
- package/dist/server/mcp/bouncer-integration.d.ts.map +1 -1
- package/dist/server/mcp/bouncer-integration.js +50 -196
- package/dist/server/mcp/bouncer-integration.js.map +1 -1
- package/dist/server/mcp/security-analysis.d.ts +38 -0
- package/dist/server/mcp/security-analysis.d.ts.map +1 -0
- package/dist/server/mcp/security-analysis.js +183 -0
- package/dist/server/mcp/security-analysis.js.map +1 -0
- package/dist/server/mcp/security-audit.d.ts +1 -1
- package/dist/server/mcp/security-audit.d.ts.map +1 -1
- package/dist/server/mcp/security-patterns.d.ts +1 -25
- package/dist/server/mcp/security-patterns.d.ts.map +1 -1
- package/dist/server/mcp/security-patterns.js +55 -260
- package/dist/server/mcp/security-patterns.js.map +1 -1
- package/dist/server/server-setup.d.ts +22 -0
- package/dist/server/server-setup.d.ts.map +1 -0
- package/dist/server/server-setup.js +101 -0
- package/dist/server/server-setup.js.map +1 -0
- package/dist/server/services/file-explorer-ops.d.ts +24 -0
- package/dist/server/services/file-explorer-ops.d.ts.map +1 -0
- package/dist/server/services/file-explorer-ops.js +211 -0
- package/dist/server/services/file-explorer-ops.js.map +1 -0
- package/dist/server/services/files.d.ts +2 -85
- package/dist/server/services/files.d.ts.map +1 -1
- package/dist/server/services/files.js +7 -427
- package/dist/server/services/files.js.map +1 -1
- package/dist/server/services/plan/composer.d.ts.map +1 -1
- package/dist/server/services/plan/composer.js +2 -1
- package/dist/server/services/plan/composer.js.map +1 -1
- package/dist/server/services/plan/executor.d.ts.map +1 -1
- package/dist/server/services/plan/executor.js +3 -1
- package/dist/server/services/plan/executor.js.map +1 -1
- package/dist/server/services/plan/parser-core.d.ts +20 -0
- package/dist/server/services/plan/parser-core.d.ts.map +1 -0
- package/dist/server/services/plan/parser-core.js +350 -0
- package/dist/server/services/plan/parser-core.js.map +1 -0
- package/dist/server/services/plan/parser-migration.d.ts +5 -0
- package/dist/server/services/plan/parser-migration.d.ts.map +1 -0
- package/dist/server/services/plan/parser-migration.js +124 -0
- package/dist/server/services/plan/parser-migration.js.map +1 -0
- package/dist/server/services/plan/parser.d.ts +0 -8
- package/dist/server/services/plan/parser.d.ts.map +1 -1
- package/dist/server/services/plan/parser.js +50 -569
- package/dist/server/services/plan/parser.js.map +1 -1
- package/dist/server/services/plan/review-gate.d.ts +2 -0
- package/dist/server/services/plan/review-gate.d.ts.map +1 -1
- package/dist/server/services/plan/review-gate.js +2 -2
- package/dist/server/services/plan/review-gate.js.map +1 -1
- package/dist/server/services/plan/types.d.ts +2 -0
- package/dist/server/services/plan/types.d.ts.map +1 -1
- package/dist/server/services/platform-credentials.d.ts +24 -0
- package/dist/server/services/platform-credentials.d.ts.map +1 -0
- package/dist/server/services/platform-credentials.js +68 -0
- package/dist/server/services/platform-credentials.js.map +1 -0
- package/dist/server/services/platform.d.ts +1 -31
- package/dist/server/services/platform.d.ts.map +1 -1
- package/dist/server/services/platform.js +10 -119
- package/dist/server/services/platform.js.map +1 -1
- package/dist/server/services/terminal/pty-manager.d.ts +7 -97
- package/dist/server/services/terminal/pty-manager.d.ts.map +1 -1
- package/dist/server/services/terminal/pty-manager.js +53 -266
- package/dist/server/services/terminal/pty-manager.js.map +1 -1
- package/dist/server/services/terminal/pty-utils.d.ts +57 -0
- package/dist/server/services/terminal/pty-utils.d.ts.map +1 -0
- package/dist/server/services/terminal/pty-utils.js +141 -0
- package/dist/server/services/terminal/pty-utils.js.map +1 -0
- package/dist/server/services/websocket/file-definition-handlers.d.ts +4 -0
- package/dist/server/services/websocket/file-definition-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/file-definition-handlers.js +153 -0
- package/dist/server/services/websocket/file-definition-handlers.js.map +1 -0
- package/dist/server/services/websocket/file-explorer-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/file-explorer-handlers.js +52 -391
- package/dist/server/services/websocket/file-explorer-handlers.js.map +1 -1
- package/dist/server/services/websocket/file-search-handlers.d.ts +5 -0
- package/dist/server/services/websocket/file-search-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/file-search-handlers.js +238 -0
- package/dist/server/services/websocket/file-search-handlers.js.map +1 -0
- package/dist/server/services/websocket/file-utils.js +3 -3
- package/dist/server/services/websocket/file-utils.js.map +1 -1
- package/dist/server/services/websocket/git-branch-handlers.d.ts +7 -0
- package/dist/server/services/websocket/git-branch-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/git-branch-handlers.js +110 -0
- package/dist/server/services/websocket/git-branch-handlers.js.map +1 -0
- package/dist/server/services/websocket/git-diff-handlers.d.ts +6 -0
- package/dist/server/services/websocket/git-diff-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/git-diff-handlers.js +123 -0
- package/dist/server/services/websocket/git-diff-handlers.js.map +1 -0
- package/dist/server/services/websocket/git-handlers.d.ts +2 -31
- package/dist/server/services/websocket/git-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-handlers.js +35 -541
- package/dist/server/services/websocket/git-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-log-handlers.d.ts +6 -0
- package/dist/server/services/websocket/git-log-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/git-log-handlers.js +128 -0
- package/dist/server/services/websocket/git-log-handlers.js.map +1 -0
- package/dist/server/services/websocket/git-pr-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-pr-handlers.js +13 -53
- package/dist/server/services/websocket/git-pr-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-tag-handlers.d.ts +6 -0
- package/dist/server/services/websocket/git-tag-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/git-tag-handlers.js +76 -0
- package/dist/server/services/websocket/git-tag-handlers.js.map +1 -0
- package/dist/server/services/websocket/git-utils.d.ts +43 -0
- package/dist/server/services/websocket/git-utils.d.ts.map +1 -0
- package/dist/server/services/websocket/git-utils.js +201 -0
- package/dist/server/services/websocket/git-utils.js.map +1 -0
- package/dist/server/services/websocket/handler.d.ts +2 -0
- package/dist/server/services/websocket/handler.d.ts.map +1 -1
- package/dist/server/services/websocket/handler.js +37 -126
- package/dist/server/services/websocket/handler.js.map +1 -1
- package/dist/server/services/websocket/plan-board-handlers.d.ts +11 -0
- package/dist/server/services/websocket/plan-board-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/plan-board-handlers.js +218 -0
- package/dist/server/services/websocket/plan-board-handlers.js.map +1 -0
- package/dist/server/services/websocket/plan-execution-handlers.d.ts +9 -0
- package/dist/server/services/websocket/plan-execution-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/plan-execution-handlers.js +142 -0
- package/dist/server/services/websocket/plan-execution-handlers.js.map +1 -0
- package/dist/server/services/websocket/plan-handlers.d.ts +7 -2
- package/dist/server/services/websocket/plan-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-handlers.js +6 -925
- package/dist/server/services/websocket/plan-handlers.js.map +1 -1
- package/dist/server/services/websocket/plan-helpers.d.ts +19 -0
- package/dist/server/services/websocket/plan-helpers.d.ts.map +1 -0
- package/dist/server/services/websocket/plan-helpers.js +199 -0
- package/dist/server/services/websocket/plan-helpers.js.map +1 -0
- package/dist/server/services/websocket/plan-issue-handlers.d.ts +12 -0
- package/dist/server/services/websocket/plan-issue-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/plan-issue-handlers.js +162 -0
- package/dist/server/services/websocket/plan-issue-handlers.js.map +1 -0
- package/dist/server/services/websocket/plan-sprint-handlers.d.ts +7 -0
- package/dist/server/services/websocket/plan-sprint-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/plan-sprint-handlers.js +206 -0
- package/dist/server/services/websocket/plan-sprint-handlers.js.map +1 -0
- package/dist/server/services/websocket/quality-complexity.d.ts +14 -0
- package/dist/server/services/websocket/quality-complexity.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-complexity.js +262 -0
- package/dist/server/services/websocket/quality-complexity.js.map +1 -0
- package/dist/server/services/websocket/quality-fix-agent.d.ts +16 -0
- package/dist/server/services/websocket/quality-fix-agent.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-fix-agent.js +140 -0
- package/dist/server/services/websocket/quality-fix-agent.js.map +1 -0
- package/dist/server/services/websocket/quality-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-handlers.js +34 -346
- package/dist/server/services/websocket/quality-handlers.js.map +1 -1
- package/dist/server/services/websocket/quality-linting.d.ts +9 -0
- package/dist/server/services/websocket/quality-linting.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-linting.js +178 -0
- package/dist/server/services/websocket/quality-linting.js.map +1 -0
- package/dist/server/services/websocket/quality-review-agent.d.ts +19 -0
- package/dist/server/services/websocket/quality-review-agent.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-review-agent.js +206 -0
- package/dist/server/services/websocket/quality-review-agent.js.map +1 -0
- package/dist/server/services/websocket/quality-service.d.ts +3 -51
- package/dist/server/services/websocket/quality-service.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-service.js +9 -651
- package/dist/server/services/websocket/quality-service.js.map +1 -1
- package/dist/server/services/websocket/quality-tools.d.ts +23 -0
- package/dist/server/services/websocket/quality-tools.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-tools.js +208 -0
- package/dist/server/services/websocket/quality-tools.js.map +1 -0
- package/dist/server/services/websocket/quality-types.d.ts +59 -0
- package/dist/server/services/websocket/quality-types.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-types.js +101 -0
- package/dist/server/services/websocket/quality-types.js.map +1 -0
- package/dist/server/services/websocket/session-handlers.d.ts +3 -4
- package/dist/server/services/websocket/session-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/session-handlers.js +3 -378
- package/dist/server/services/websocket/session-handlers.js.map +1 -1
- package/dist/server/services/websocket/session-history.d.ts +4 -0
- package/dist/server/services/websocket/session-history.d.ts.map +1 -0
- package/dist/server/services/websocket/session-history.js +208 -0
- package/dist/server/services/websocket/session-history.js.map +1 -0
- package/dist/server/services/websocket/session-initialization.d.ts +5 -0
- package/dist/server/services/websocket/session-initialization.d.ts.map +1 -0
- package/dist/server/services/websocket/session-initialization.js +163 -0
- package/dist/server/services/websocket/session-initialization.js.map +1 -0
- package/dist/server/services/websocket/types.d.ts +12 -2
- package/dist/server/services/websocket/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/server/cli/headless/claude-invoker-process.ts +204 -0
- package/server/cli/headless/claude-invoker-stall.ts +164 -0
- package/server/cli/headless/claude-invoker-stream.ts +353 -0
- package/server/cli/headless/claude-invoker-tools.ts +187 -0
- package/server/cli/headless/claude-invoker.ts +15 -1096
- package/server/cli/headless/haiku-assessments.ts +365 -0
- package/server/cli/headless/headless-logger.ts +26 -5
- package/server/cli/headless/native-timeout-detector.ts +117 -0
- package/server/cli/headless/stall-assessor.ts +65 -618
- package/server/cli/improvisation-attachments.ts +148 -0
- package/server/cli/improvisation-retry.ts +602 -0
- package/server/cli/improvisation-session-manager.ts +140 -1349
- package/server/cli/improvisation-types.ts +98 -0
- package/server/cli/prompt-builders.ts +370 -0
- package/server/index.ts +35 -246
- package/server/mcp/bouncer-haiku.ts +182 -0
- package/server/mcp/bouncer-integration.ts +87 -248
- package/server/mcp/security-analysis.ts +217 -0
- package/server/mcp/security-audit.ts +1 -1
- package/server/mcp/security-patterns.ts +60 -283
- package/server/server-setup.ts +114 -0
- package/server/services/file-explorer-ops.ts +293 -0
- package/server/services/files.ts +20 -532
- package/server/services/plan/composer.ts +2 -1
- package/server/services/plan/executor.ts +3 -1
- package/server/services/plan/parser-core.ts +406 -0
- package/server/services/plan/parser-migration.ts +128 -0
- package/server/services/plan/parser.ts +52 -620
- package/server/services/plan/review-gate.ts +4 -2
- package/server/services/plan/types.ts +2 -0
- package/server/services/platform-credentials.ts +83 -0
- package/server/services/platform.ts +15 -141
- package/server/services/terminal/pty-manager.ts +66 -313
- package/server/services/terminal/pty-utils.ts +176 -0
- package/server/services/websocket/file-definition-handlers.ts +165 -0
- package/server/services/websocket/file-explorer-handlers.ts +37 -452
- package/server/services/websocket/file-search-handlers.ts +291 -0
- package/server/services/websocket/file-utils.ts +3 -3
- package/server/services/websocket/git-branch-handlers.ts +130 -0
- package/server/services/websocket/git-diff-handlers.ts +140 -0
- package/server/services/websocket/git-handlers.ts +40 -625
- package/server/services/websocket/git-log-handlers.ts +149 -0
- package/server/services/websocket/git-pr-handlers.ts +17 -62
- package/server/services/websocket/git-tag-handlers.ts +91 -0
- package/server/services/websocket/git-utils.ts +230 -0
- package/server/services/websocket/handler.ts +39 -126
- package/server/services/websocket/plan-board-handlers.ts +277 -0
- package/server/services/websocket/plan-execution-handlers.ts +184 -0
- package/server/services/websocket/plan-handlers.ts +8 -1114
- package/server/services/websocket/plan-helpers.ts +215 -0
- package/server/services/websocket/plan-issue-handlers.ts +204 -0
- package/server/services/websocket/plan-sprint-handlers.ts +252 -0
- package/server/services/websocket/quality-complexity.ts +294 -0
- package/server/services/websocket/quality-fix-agent.ts +181 -0
- package/server/services/websocket/quality-handlers.ts +36 -404
- package/server/services/websocket/quality-linting.ts +187 -0
- package/server/services/websocket/quality-review-agent.ts +246 -0
- package/server/services/websocket/quality-service.ts +11 -762
- package/server/services/websocket/quality-tools.ts +209 -0
- package/server/services/websocket/quality-types.ts +169 -0
- package/server/services/websocket/session-handlers.ts +5 -437
- package/server/services/websocket/session-history.ts +222 -0
- package/server/services/websocket/session-initialization.ts +209 -0
- package/server/services/websocket/types.ts +17 -0
|
@@ -1,237 +1,59 @@
|
|
|
1
1
|
// Copyright (c) 2025-present Mstro, Inc. All rights reserved.
|
|
2
2
|
// Licensed under the MIT License. See LICENSE file for details.
|
|
3
3
|
/**
|
|
4
|
-
* PTY Manager - Manages pseudo-terminal sessions for shell access
|
|
4
|
+
* PTY Manager - Manages pseudo-terminal sessions for shell access.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* Supports session persistence:
|
|
10
|
-
* - Sessions survive WebSocket disconnections
|
|
11
|
-
* - Scrollback buffer is maintained for replay on reconnect
|
|
12
|
-
* - Sessions can be reattached without losing running processes
|
|
13
|
-
*
|
|
14
|
-
* NOTE: node-pty is an optional dependency requiring native compilation.
|
|
15
|
-
* Terminal features gracefully degrade when node-pty is not available.
|
|
6
|
+
* Utilities (node-pty loading, shell detection, ScrollbackBuffer, types)
|
|
7
|
+
* live in pty-utils.ts. This file owns session lifecycle orchestration.
|
|
16
8
|
*/
|
|
17
9
|
import { EventEmitter } from 'node:events';
|
|
18
|
-
import { createRequire } from 'node:module';
|
|
19
10
|
import { homedir, platform } from 'node:os';
|
|
20
11
|
import { sanitizeEnvForSandbox } from '../sandbox-utils.js';
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
try {
|
|
25
|
-
pty = await import('node-pty');
|
|
26
|
-
}
|
|
27
|
-
catch (error) {
|
|
28
|
-
_ptyLoadError = error instanceof Error ? error.message : 'Failed to load node-pty';
|
|
29
|
-
console.warn('[PTYManager] node-pty not available - terminal features disabled');
|
|
30
|
-
console.warn('[PTYManager] To enable terminals, run: mstro setup-terminal');
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Check if node-pty is available
|
|
34
|
-
*/
|
|
35
|
-
export function isPtyAvailable() {
|
|
36
|
-
return pty !== null;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Re-attempt loading node-pty at runtime.
|
|
40
|
-
* Called after `mstro setup-terminal` compiles the native module
|
|
41
|
-
* so the running server can pick it up without a restart.
|
|
42
|
-
*
|
|
43
|
-
* Uses createRequire (CJS) to bypass ESM's module cache — a failed
|
|
44
|
-
* ESM import is permanently cached, but CJS require cache entries
|
|
45
|
-
* can be deleted and re-required.
|
|
46
|
-
*/
|
|
47
|
-
export async function reloadPty() {
|
|
48
|
-
if (pty)
|
|
49
|
-
return true;
|
|
50
|
-
try {
|
|
51
|
-
const require = createRequire(import.meta.url);
|
|
52
|
-
// Clear any cached failure so require() retries the native load
|
|
53
|
-
const resolved = require.resolve('node-pty');
|
|
54
|
-
delete require.cache[resolved];
|
|
55
|
-
pty = require('node-pty');
|
|
56
|
-
_ptyLoadError = null;
|
|
57
|
-
console.log('[PTYManager] node-pty loaded successfully after reload');
|
|
58
|
-
return true;
|
|
59
|
-
}
|
|
60
|
-
catch (error) {
|
|
61
|
-
_ptyLoadError = error instanceof Error ? error.message : 'Failed to load node-pty';
|
|
62
|
-
return false;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Get installation instructions for node-pty based on platform
|
|
67
|
-
*/
|
|
68
|
-
export function getPtyInstallInstructions() {
|
|
69
|
-
const os = platform();
|
|
70
|
-
let instructions = `Terminal feature requires native compilation of node-pty.\n\n`;
|
|
71
|
-
instructions += `To enable this feature:\n\n`;
|
|
72
|
-
if (os === 'darwin') {
|
|
73
|
-
instructions += `1. Install Xcode Command Line Tools:\n`;
|
|
74
|
-
instructions += ` xcode-select --install\n\n`;
|
|
75
|
-
}
|
|
76
|
-
else if (os === 'win32') {
|
|
77
|
-
instructions += `1. Install Windows Build Tools:\n`;
|
|
78
|
-
instructions += ` npm install -g windows-build-tools\n\n`;
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
// Linux
|
|
82
|
-
instructions += `1. Install build tools:\n`;
|
|
83
|
-
instructions += ` # Debian/Ubuntu:\n`;
|
|
84
|
-
instructions += ` sudo apt install build-essential python3\n\n`;
|
|
85
|
-
instructions += ` # Fedora/RHEL:\n`;
|
|
86
|
-
instructions += ` sudo dnf install gcc-c++ make python3\n\n`;
|
|
87
|
-
instructions += ` # Arch:\n`;
|
|
88
|
-
instructions += ` sudo pacman -S base-devel python\n\n`;
|
|
89
|
-
}
|
|
90
|
-
instructions += `2. Rebuild native modules:\n`;
|
|
91
|
-
instructions += ` npm rebuild node-pty\n\n`;
|
|
92
|
-
instructions += `3. Restart mstro\n`;
|
|
93
|
-
return instructions;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Fixed-size buffer that retains the most recent PTY output for replay on reconnect.
|
|
97
|
-
* Stores raw string chunks and evicts oldest data when the total exceeds maxBytes.
|
|
98
|
-
*/
|
|
99
|
-
class ScrollbackBuffer {
|
|
100
|
-
chunks = [];
|
|
101
|
-
totalLength = 0;
|
|
102
|
-
maxBytes;
|
|
103
|
-
constructor(maxBytes) {
|
|
104
|
-
this.maxBytes = maxBytes;
|
|
105
|
-
}
|
|
106
|
-
append(data) {
|
|
107
|
-
this.chunks.push(data);
|
|
108
|
-
this.totalLength += data.length;
|
|
109
|
-
// Evict oldest chunks until under budget
|
|
110
|
-
while (this.totalLength > this.maxBytes && this.chunks.length > 1) {
|
|
111
|
-
const removed = this.chunks.shift();
|
|
112
|
-
this.totalLength -= removed.length;
|
|
113
|
-
}
|
|
114
|
-
// If a single chunk exceeds max, truncate from the front
|
|
115
|
-
if (this.totalLength > this.maxBytes && this.chunks.length === 1) {
|
|
116
|
-
const excess = this.totalLength - this.maxBytes;
|
|
117
|
-
this.chunks[0] = this.chunks[0].slice(excess);
|
|
118
|
-
this.totalLength = this.chunks[0].length;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
getContents() {
|
|
122
|
-
return this.chunks.join('');
|
|
123
|
-
}
|
|
124
|
-
clear() {
|
|
125
|
-
this.chunks = [];
|
|
126
|
-
this.totalLength = 0;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
const SCROLLBACK_MAX_BYTES = 256 * 1024; // 256KB
|
|
130
|
-
/**
|
|
131
|
-
* Detect the user's default shell
|
|
132
|
-
*/
|
|
133
|
-
function detectShell() {
|
|
134
|
-
const shell = process.env.SHELL;
|
|
135
|
-
if (shell) {
|
|
136
|
-
return shell;
|
|
137
|
-
}
|
|
138
|
-
// Platform-specific defaults
|
|
139
|
-
if (platform() === 'win32') {
|
|
140
|
-
return process.env.COMSPEC || 'powershell.exe';
|
|
141
|
-
}
|
|
142
|
-
return '/bin/bash';
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Get shell name from path
|
|
146
|
-
*/
|
|
147
|
-
function getShellName(shellPath) {
|
|
148
|
-
const parts = shellPath.split(/[/\\]/);
|
|
149
|
-
return parts[parts.length - 1] || 'shell';
|
|
150
|
-
}
|
|
12
|
+
import { detectShell, getPty, getPtyInstallInstructions, getShellName, isPtyAvailable, SCROLLBACK_MAX_BYTES, ScrollbackBuffer, } from './pty-utils.js';
|
|
13
|
+
// Re-export public API for backward compatibility
|
|
14
|
+
export { isPtyAvailable, reloadPty } from './pty-utils.js';
|
|
151
15
|
export class PTYManager extends EventEmitter {
|
|
152
16
|
terminals = new Map();
|
|
153
17
|
constructor() {
|
|
154
18
|
super();
|
|
155
|
-
// Each terminal adds 3 listeners (output, exit, error) to this singleton.
|
|
156
|
-
// With multiple terminals, the default limit of 10 is easily exceeded.
|
|
157
19
|
this.setMaxListeners(50);
|
|
158
20
|
}
|
|
159
|
-
/**
|
|
160
|
-
* Check if a terminal session exists and is still running
|
|
161
|
-
*/
|
|
162
21
|
exists(terminalId) {
|
|
163
22
|
return this.terminals.has(terminalId);
|
|
164
23
|
}
|
|
165
|
-
/**
|
|
166
|
-
* Get session info for reconnection
|
|
167
|
-
* Returns null if session doesn't exist
|
|
168
|
-
*/
|
|
169
24
|
getSessionInfo(terminalId) {
|
|
170
25
|
const session = this.terminals.get(terminalId);
|
|
171
26
|
if (!session)
|
|
172
27
|
return null;
|
|
173
|
-
return {
|
|
174
|
-
shell: session.shell,
|
|
175
|
-
cwd: session.cwd,
|
|
176
|
-
cols: session.cols,
|
|
177
|
-
rows: session.rows,
|
|
178
|
-
};
|
|
28
|
+
return { shell: session.shell, cwd: session.cwd, cols: session.cols, rows: session.rows };
|
|
179
29
|
}
|
|
180
|
-
/**
|
|
181
|
-
* Check if PTY functionality is available
|
|
182
|
-
*/
|
|
183
30
|
isPtyAvailable() {
|
|
184
31
|
return isPtyAvailable();
|
|
185
32
|
}
|
|
186
|
-
/**
|
|
187
|
-
* Get installation instructions if PTY is not available
|
|
188
|
-
*/
|
|
189
33
|
getPtyInstallInstructions() {
|
|
190
34
|
return getPtyInstallInstructions();
|
|
191
35
|
}
|
|
192
|
-
/**
|
|
193
|
-
* Create a new terminal session
|
|
194
|
-
*/
|
|
195
36
|
create(terminalId, workingDir, cols = 80, rows = 24, requestedShell, options) {
|
|
196
|
-
|
|
37
|
+
const pty = getPty();
|
|
197
38
|
if (!pty) {
|
|
198
39
|
throw new Error(`PTY_NOT_AVAILABLE:${getPtyInstallInstructions()}`);
|
|
199
40
|
}
|
|
200
|
-
//
|
|
41
|
+
// Reconnect to existing session
|
|
201
42
|
if (this.terminals.has(terminalId)) {
|
|
202
43
|
const existingSession = this.terminals.get(terminalId);
|
|
203
|
-
// Always resize on reconnect to trigger SIGWINCH, which causes the
|
|
204
|
-
// shell to redraw its prompt line for the reconnected client
|
|
205
44
|
existingSession.pty.resize(cols, rows);
|
|
206
45
|
existingSession.cols = cols;
|
|
207
46
|
existingSession.rows = rows;
|
|
208
|
-
return {
|
|
209
|
-
shell: existingSession.shell,
|
|
210
|
-
cwd: existingSession.cwd,
|
|
211
|
-
isReconnect: true,
|
|
212
|
-
platform: platform(),
|
|
213
|
-
};
|
|
47
|
+
return { shell: existingSession.shell, cwd: existingSession.cwd, isReconnect: true, platform: platform() };
|
|
214
48
|
}
|
|
215
49
|
const shell = requestedShell || detectShell();
|
|
216
50
|
const cwd = workingDir || homedir();
|
|
217
51
|
try {
|
|
218
|
-
// Build env: sandboxed sessions get stripped secrets and HOME=projectDir
|
|
219
52
|
const baseEnv = options?.sandboxed
|
|
220
53
|
? sanitizeEnvForSandbox(process.env, cwd)
|
|
221
54
|
: { ...process.env, HOME: homedir() };
|
|
222
|
-
const env = {
|
|
223
|
-
|
|
224
|
-
TERM: 'xterm-256color',
|
|
225
|
-
COLORTERM: 'truecolor',
|
|
226
|
-
};
|
|
227
|
-
// Spawn the PTY process
|
|
228
|
-
const ptyProcess = pty.spawn(shell, [], {
|
|
229
|
-
name: 'xterm-256color',
|
|
230
|
-
cols,
|
|
231
|
-
rows,
|
|
232
|
-
cwd,
|
|
233
|
-
env,
|
|
234
|
-
});
|
|
55
|
+
const env = { ...baseEnv, TERM: 'xterm-256color', COLORTERM: 'truecolor' };
|
|
56
|
+
const ptyProcess = pty.spawn(shell, [], { name: 'xterm-256color', cols, rows, cwd, env });
|
|
235
57
|
const session = {
|
|
236
58
|
id: terminalId,
|
|
237
59
|
pty: ptyProcess,
|
|
@@ -246,55 +68,7 @@ export class PTYManager extends EventEmitter {
|
|
|
246
68
|
scrollback: new ScrollbackBuffer(SCROLLBACK_MAX_BYTES),
|
|
247
69
|
};
|
|
248
70
|
this.terminals.set(terminalId, session);
|
|
249
|
-
|
|
250
|
-
// On macOS, node-pty emits many tiny chunks (sometimes single bytes) and zsh
|
|
251
|
-
// wraps echoed chars in multi-part ANSI sequences (RPROMPT, syntax highlighting).
|
|
252
|
-
// A longer window on macOS ensures these multi-part sequences arrive as one chunk,
|
|
253
|
-
// which the browser's predictive echo can match correctly.
|
|
254
|
-
// 32ms on macOS captures full zsh redraw cycles (RPROMPT + syntax highlighting)
|
|
255
|
-
// that 24ms often split across coalesce boundaries.
|
|
256
|
-
const OUTPUT_COALESCE_MS = platform() === 'darwin' ? 32 : 8;
|
|
257
|
-
// High-water mark: flush immediately when buffer exceeds this size
|
|
258
|
-
// to prevent unbounded memory growth during high-output commands (e.g. `yes`)
|
|
259
|
-
const OUTPUT_HIGH_WATER = 64 * 1024; // 64KB
|
|
260
|
-
// Maximum chunk size per WebSocket message to prevent browser overload
|
|
261
|
-
const OUTPUT_CHUNK_SIZE = 64 * 1024;
|
|
262
|
-
const flushOutputBuffer = () => {
|
|
263
|
-
if (session._outputTimer) {
|
|
264
|
-
clearTimeout(session._outputTimer);
|
|
265
|
-
session._outputTimer = null;
|
|
266
|
-
}
|
|
267
|
-
const buffered = session._outputBuffer;
|
|
268
|
-
session._outputBuffer = '';
|
|
269
|
-
// Chunk large output to prevent single massive WebSocket frames
|
|
270
|
-
for (let i = 0; i < buffered.length; i += OUTPUT_CHUNK_SIZE) {
|
|
271
|
-
this.emit('output', terminalId, buffered.slice(i, i + OUTPUT_CHUNK_SIZE));
|
|
272
|
-
}
|
|
273
|
-
};
|
|
274
|
-
ptyProcess.onData((data) => {
|
|
275
|
-
session.scrollback.append(data);
|
|
276
|
-
session.lastActivityAt = Date.now();
|
|
277
|
-
session._outputBuffer += data;
|
|
278
|
-
// Flush immediately if buffer exceeds high-water mark
|
|
279
|
-
if (session._outputBuffer.length >= OUTPUT_HIGH_WATER) {
|
|
280
|
-
flushOutputBuffer();
|
|
281
|
-
}
|
|
282
|
-
else if (!session._outputTimer) {
|
|
283
|
-
session._outputTimer = setTimeout(flushOutputBuffer, OUTPUT_COALESCE_MS);
|
|
284
|
-
}
|
|
285
|
-
});
|
|
286
|
-
// Handle exit — flush any buffered output first
|
|
287
|
-
ptyProcess.onExit(({ exitCode }) => {
|
|
288
|
-
if (session._outputBuffer) {
|
|
289
|
-
flushOutputBuffer();
|
|
290
|
-
}
|
|
291
|
-
else if (session._outputTimer) {
|
|
292
|
-
clearTimeout(session._outputTimer);
|
|
293
|
-
session._outputTimer = null;
|
|
294
|
-
}
|
|
295
|
-
this.emit('exit', terminalId, exitCode);
|
|
296
|
-
this.terminals.delete(terminalId);
|
|
297
|
-
});
|
|
71
|
+
this.attachOutputHandlers(session, terminalId);
|
|
298
72
|
return { shell: session.shell, cwd, isReconnect: false, platform: platform() };
|
|
299
73
|
}
|
|
300
74
|
catch (error) {
|
|
@@ -303,9 +77,45 @@ export class PTYManager extends EventEmitter {
|
|
|
303
77
|
throw error;
|
|
304
78
|
}
|
|
305
79
|
}
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
80
|
+
attachOutputHandlers(session, terminalId) {
|
|
81
|
+
// Output coalescing constants
|
|
82
|
+
const OUTPUT_COALESCE_MS = platform() === 'darwin' ? 32 : 8;
|
|
83
|
+
const OUTPUT_HIGH_WATER = 64 * 1024;
|
|
84
|
+
const OUTPUT_CHUNK_SIZE = 64 * 1024;
|
|
85
|
+
const flushOutputBuffer = () => {
|
|
86
|
+
if (session._outputTimer) {
|
|
87
|
+
clearTimeout(session._outputTimer);
|
|
88
|
+
session._outputTimer = null;
|
|
89
|
+
}
|
|
90
|
+
const buffered = session._outputBuffer;
|
|
91
|
+
session._outputBuffer = '';
|
|
92
|
+
for (let i = 0; i < buffered.length; i += OUTPUT_CHUNK_SIZE) {
|
|
93
|
+
this.emit('output', terminalId, buffered.slice(i, i + OUTPUT_CHUNK_SIZE));
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
session.pty.onData((data) => {
|
|
97
|
+
session.scrollback.append(data);
|
|
98
|
+
session.lastActivityAt = Date.now();
|
|
99
|
+
session._outputBuffer += data;
|
|
100
|
+
if (session._outputBuffer.length >= OUTPUT_HIGH_WATER) {
|
|
101
|
+
flushOutputBuffer();
|
|
102
|
+
}
|
|
103
|
+
else if (!session._outputTimer) {
|
|
104
|
+
session._outputTimer = setTimeout(flushOutputBuffer, OUTPUT_COALESCE_MS);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
session.pty.onExit(({ exitCode }) => {
|
|
108
|
+
if (session._outputBuffer) {
|
|
109
|
+
flushOutputBuffer();
|
|
110
|
+
}
|
|
111
|
+
else if (session._outputTimer) {
|
|
112
|
+
clearTimeout(session._outputTimer);
|
|
113
|
+
session._outputTimer = null;
|
|
114
|
+
}
|
|
115
|
+
this.emit('exit', terminalId, exitCode);
|
|
116
|
+
this.terminals.delete(terminalId);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
309
119
|
write(terminalId, data) {
|
|
310
120
|
const session = this.terminals.get(terminalId);
|
|
311
121
|
if (!session) {
|
|
@@ -322,9 +132,6 @@ export class PTYManager extends EventEmitter {
|
|
|
322
132
|
return false;
|
|
323
133
|
}
|
|
324
134
|
}
|
|
325
|
-
/**
|
|
326
|
-
* Resize terminal
|
|
327
|
-
*/
|
|
328
135
|
resize(terminalId, cols, rows) {
|
|
329
136
|
const session = this.terminals.get(terminalId);
|
|
330
137
|
if (!session) {
|
|
@@ -340,16 +147,11 @@ export class PTYManager extends EventEmitter {
|
|
|
340
147
|
return false;
|
|
341
148
|
}
|
|
342
149
|
}
|
|
343
|
-
/**
|
|
344
|
-
* Close terminal session
|
|
345
|
-
*/
|
|
346
150
|
close(terminalId) {
|
|
347
151
|
const session = this.terminals.get(terminalId);
|
|
348
|
-
if (!session)
|
|
152
|
+
if (!session)
|
|
349
153
|
return false;
|
|
350
|
-
}
|
|
351
154
|
try {
|
|
352
|
-
// Flush any coalesced output before closing
|
|
353
155
|
if (session._outputTimer) {
|
|
354
156
|
clearTimeout(session._outputTimer);
|
|
355
157
|
if (session._outputBuffer) {
|
|
@@ -368,36 +170,21 @@ export class PTYManager extends EventEmitter {
|
|
|
368
170
|
return false;
|
|
369
171
|
}
|
|
370
172
|
}
|
|
371
|
-
/**
|
|
372
|
-
* Get scrollback buffer contents for replay on reconnect
|
|
373
|
-
*/
|
|
374
173
|
getScrollback(terminalId) {
|
|
375
174
|
const session = this.terminals.get(terminalId);
|
|
376
175
|
if (!session)
|
|
377
176
|
return null;
|
|
378
177
|
return session.scrollback.getContents();
|
|
379
178
|
}
|
|
380
|
-
/**
|
|
381
|
-
* Get terminal session info
|
|
382
|
-
*/
|
|
383
179
|
getSession(terminalId) {
|
|
384
180
|
return this.terminals.get(terminalId);
|
|
385
181
|
}
|
|
386
|
-
/**
|
|
387
|
-
* Check if terminal exists
|
|
388
|
-
*/
|
|
389
182
|
has(terminalId) {
|
|
390
183
|
return this.terminals.has(terminalId);
|
|
391
184
|
}
|
|
392
|
-
/**
|
|
393
|
-
* Get all active terminal IDs
|
|
394
|
-
*/
|
|
395
185
|
getActiveTerminals() {
|
|
396
186
|
return Array.from(this.terminals.keys());
|
|
397
187
|
}
|
|
398
|
-
/**
|
|
399
|
-
* Close all terminals
|
|
400
|
-
*/
|
|
401
188
|
closeAll() {
|
|
402
189
|
for (const terminalId of this.terminals.keys()) {
|
|
403
190
|
this.close(terminalId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-manager.js","sourceRoot":"","sources":["../../../../server/services/terminal/pty-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pty-manager.js","sourceRoot":"","sources":["../../../../server/services/terminal/pty-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export declare function getPty(): typeof import('node-pty') | null;
|
|
2
|
+
/**
|
|
3
|
+
* Check if node-pty is available
|
|
4
|
+
*/
|
|
5
|
+
export declare function isPtyAvailable(): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Re-attempt loading node-pty at runtime.
|
|
8
|
+
* Called after `mstro setup-terminal` compiles the native module
|
|
9
|
+
* so the running server can pick it up without a restart.
|
|
10
|
+
*
|
|
11
|
+
* Uses createRequire (CJS) to bypass ESM's module cache — a failed
|
|
12
|
+
* ESM import is permanently cached, but CJS require cache entries
|
|
13
|
+
* can be deleted and re-required.
|
|
14
|
+
*/
|
|
15
|
+
export declare function reloadPty(): Promise<boolean>;
|
|
16
|
+
/**
|
|
17
|
+
* Get installation instructions for node-pty based on platform
|
|
18
|
+
*/
|
|
19
|
+
export declare function getPtyInstallInstructions(): string;
|
|
20
|
+
/**
|
|
21
|
+
* Detect the user's default shell
|
|
22
|
+
*/
|
|
23
|
+
export declare function detectShell(): string;
|
|
24
|
+
/**
|
|
25
|
+
* Get shell name from path
|
|
26
|
+
*/
|
|
27
|
+
export declare function getShellName(shellPath: string): string;
|
|
28
|
+
export declare const SCROLLBACK_MAX_BYTES: number;
|
|
29
|
+
/**
|
|
30
|
+
* Fixed-size buffer that retains the most recent PTY output for replay on reconnect.
|
|
31
|
+
* Stores raw string chunks and evicts oldest data when the total exceeds maxBytes.
|
|
32
|
+
*/
|
|
33
|
+
export declare class ScrollbackBuffer {
|
|
34
|
+
private chunks;
|
|
35
|
+
private totalLength;
|
|
36
|
+
private maxBytes;
|
|
37
|
+
constructor(maxBytes: number);
|
|
38
|
+
append(data: string): void;
|
|
39
|
+
getContents(): string;
|
|
40
|
+
clear(): void;
|
|
41
|
+
}
|
|
42
|
+
type IPty = import('node-pty').IPty;
|
|
43
|
+
export interface PTYSession {
|
|
44
|
+
id: string;
|
|
45
|
+
pty: IPty;
|
|
46
|
+
shell: string;
|
|
47
|
+
cwd: string;
|
|
48
|
+
createdAt: number;
|
|
49
|
+
lastActivityAt: number;
|
|
50
|
+
cols: number;
|
|
51
|
+
rows: number;
|
|
52
|
+
_outputBuffer: string;
|
|
53
|
+
_outputTimer: ReturnType<typeof setTimeout> | null;
|
|
54
|
+
scrollback: ScrollbackBuffer;
|
|
55
|
+
}
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=pty-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pty-utils.d.ts","sourceRoot":"","sources":["../../../../server/services/terminal/pty-utils.ts"],"names":[],"mappings":"AA2BA,wBAAgB,MAAM,IAAI,cAAc,UAAU,CAAC,GAAG,IAAI,CAEzD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAclD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CA2BlD;AAID;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAOpC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGtD;AAID,eAAO,MAAM,oBAAoB,QAAa,CAAC;AAE/C;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAI5B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAc1B,WAAW,IAAI,MAAM;IAIrB,KAAK,IAAI,IAAI;CAId;AAKD,KAAK,IAAI,GAAG,OAAO,UAAU,EAAE,IAAI,CAAC;AAEpC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,IAAI,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;IACnD,UAAU,EAAE,gBAAgB,CAAC;CAC9B"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
// Copyright (c) 2025-present Mstro, Inc. All rights reserved.
|
|
2
|
+
// Licensed under the MIT License. See LICENSE file for details.
|
|
3
|
+
/**
|
|
4
|
+
* PTY Utilities — node-pty loading, shell detection, scrollback buffer, and types.
|
|
5
|
+
*
|
|
6
|
+
* Separated from pty-manager.ts so the PTYManager class stays focused
|
|
7
|
+
* on session lifecycle orchestration.
|
|
8
|
+
*/
|
|
9
|
+
import { createRequire } from 'node:module';
|
|
10
|
+
import { platform } from 'node:os';
|
|
11
|
+
// ── node-pty loading ──────────────────────────────────────────
|
|
12
|
+
// Try to load node-pty (optional native dependency)
|
|
13
|
+
let pty = null;
|
|
14
|
+
let _ptyLoadError = null;
|
|
15
|
+
try {
|
|
16
|
+
pty = await import('node-pty');
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
_ptyLoadError = error instanceof Error ? error.message : 'Failed to load node-pty';
|
|
20
|
+
console.warn('[PTYManager] node-pty not available - terminal features disabled');
|
|
21
|
+
console.warn('[PTYManager] To enable terminals, run: mstro setup-terminal');
|
|
22
|
+
}
|
|
23
|
+
export function getPty() {
|
|
24
|
+
return pty;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Check if node-pty is available
|
|
28
|
+
*/
|
|
29
|
+
export function isPtyAvailable() {
|
|
30
|
+
return pty !== null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Re-attempt loading node-pty at runtime.
|
|
34
|
+
* Called after `mstro setup-terminal` compiles the native module
|
|
35
|
+
* so the running server can pick it up without a restart.
|
|
36
|
+
*
|
|
37
|
+
* Uses createRequire (CJS) to bypass ESM's module cache — a failed
|
|
38
|
+
* ESM import is permanently cached, but CJS require cache entries
|
|
39
|
+
* can be deleted and re-required.
|
|
40
|
+
*/
|
|
41
|
+
export async function reloadPty() {
|
|
42
|
+
if (pty)
|
|
43
|
+
return true;
|
|
44
|
+
try {
|
|
45
|
+
const require = createRequire(import.meta.url);
|
|
46
|
+
const resolved = require.resolve('node-pty');
|
|
47
|
+
delete require.cache[resolved];
|
|
48
|
+
pty = require('node-pty');
|
|
49
|
+
_ptyLoadError = null;
|
|
50
|
+
console.log('[PTYManager] node-pty loaded successfully after reload');
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
_ptyLoadError = error instanceof Error ? error.message : 'Failed to load node-pty';
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get installation instructions for node-pty based on platform
|
|
60
|
+
*/
|
|
61
|
+
export function getPtyInstallInstructions() {
|
|
62
|
+
const os = platform();
|
|
63
|
+
let instructions = `Terminal feature requires native compilation of node-pty.\n\n`;
|
|
64
|
+
instructions += `To enable this feature:\n\n`;
|
|
65
|
+
if (os === 'darwin') {
|
|
66
|
+
instructions += `1. Install Xcode Command Line Tools:\n`;
|
|
67
|
+
instructions += ` xcode-select --install\n\n`;
|
|
68
|
+
}
|
|
69
|
+
else if (os === 'win32') {
|
|
70
|
+
instructions += `1. Install Windows Build Tools:\n`;
|
|
71
|
+
instructions += ` npm install -g windows-build-tools\n\n`;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
instructions += `1. Install build tools:\n`;
|
|
75
|
+
instructions += ` # Debian/Ubuntu:\n`;
|
|
76
|
+
instructions += ` sudo apt install build-essential python3\n\n`;
|
|
77
|
+
instructions += ` # Fedora/RHEL:\n`;
|
|
78
|
+
instructions += ` sudo dnf install gcc-c++ make python3\n\n`;
|
|
79
|
+
instructions += ` # Arch:\n`;
|
|
80
|
+
instructions += ` sudo pacman -S base-devel python\n\n`;
|
|
81
|
+
}
|
|
82
|
+
instructions += `2. Rebuild native modules:\n`;
|
|
83
|
+
instructions += ` npm rebuild node-pty\n\n`;
|
|
84
|
+
instructions += `3. Restart mstro\n`;
|
|
85
|
+
return instructions;
|
|
86
|
+
}
|
|
87
|
+
// ── Shell detection ───────────────────────────────────────────
|
|
88
|
+
/**
|
|
89
|
+
* Detect the user's default shell
|
|
90
|
+
*/
|
|
91
|
+
export function detectShell() {
|
|
92
|
+
const shell = process.env.SHELL;
|
|
93
|
+
if (shell)
|
|
94
|
+
return shell;
|
|
95
|
+
if (platform() === 'win32') {
|
|
96
|
+
return process.env.COMSPEC || 'powershell.exe';
|
|
97
|
+
}
|
|
98
|
+
return '/bin/bash';
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get shell name from path
|
|
102
|
+
*/
|
|
103
|
+
export function getShellName(shellPath) {
|
|
104
|
+
const parts = shellPath.split(/[/\\]/);
|
|
105
|
+
return parts[parts.length - 1] || 'shell';
|
|
106
|
+
}
|
|
107
|
+
// ── Scrollback buffer ─────────────────────────────────────────
|
|
108
|
+
export const SCROLLBACK_MAX_BYTES = 256 * 1024; // 256KB
|
|
109
|
+
/**
|
|
110
|
+
* Fixed-size buffer that retains the most recent PTY output for replay on reconnect.
|
|
111
|
+
* Stores raw string chunks and evicts oldest data when the total exceeds maxBytes.
|
|
112
|
+
*/
|
|
113
|
+
export class ScrollbackBuffer {
|
|
114
|
+
chunks = [];
|
|
115
|
+
totalLength = 0;
|
|
116
|
+
maxBytes;
|
|
117
|
+
constructor(maxBytes) {
|
|
118
|
+
this.maxBytes = maxBytes;
|
|
119
|
+
}
|
|
120
|
+
append(data) {
|
|
121
|
+
this.chunks.push(data);
|
|
122
|
+
this.totalLength += data.length;
|
|
123
|
+
while (this.totalLength > this.maxBytes && this.chunks.length > 1) {
|
|
124
|
+
const removed = this.chunks.shift();
|
|
125
|
+
this.totalLength -= removed.length;
|
|
126
|
+
}
|
|
127
|
+
if (this.totalLength > this.maxBytes && this.chunks.length === 1) {
|
|
128
|
+
const excess = this.totalLength - this.maxBytes;
|
|
129
|
+
this.chunks[0] = this.chunks[0].slice(excess);
|
|
130
|
+
this.totalLength = this.chunks[0].length;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
getContents() {
|
|
134
|
+
return this.chunks.join('');
|
|
135
|
+
}
|
|
136
|
+
clear() {
|
|
137
|
+
this.chunks = [];
|
|
138
|
+
this.totalLength = 0;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=pty-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pty-utils.js","sourceRoot":"","sources":["../../../../server/services/terminal/pty-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { HandlerContext } from './handler-context.js';
|
|
2
|
+
import type { WebSocketMessage, WSContext } from './types.js';
|
|
3
|
+
export declare function handleFindDefinition(ctx: HandlerContext, ws: WSContext, msg: WebSocketMessage, tabId: string, workingDir: string): void;
|
|
4
|
+
//# sourceMappingURL=file-definition-handlers.d.ts.map
|