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
|
@@ -6,76 +6,16 @@
|
|
|
6
6
|
* Handles WebSocket connection to the Mstro platform.
|
|
7
7
|
* Requires token-based authentication from `mstro login`.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
* 1. Client reads token from ~/.mstro/credentials.json
|
|
11
|
-
* 2. Client connects to platform WebSocket with auth token
|
|
12
|
-
* 3. Platform validates token and auto-pairs to user's account
|
|
13
|
-
* 4. Client becomes an "orchestra" visible in user's web dashboard
|
|
9
|
+
* Credential management lives in platform-credentials.ts.
|
|
14
10
|
*/
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import { basename, join } from 'node:path';
|
|
11
|
+
import { arch, hostname, type } from 'node:os';
|
|
12
|
+
import { basename } from 'node:path';
|
|
18
13
|
import { AnalyticsEvents, trackEvent } from './analytics.js';
|
|
19
14
|
import { getClientId } from './client-id.js';
|
|
15
|
+
import { CLI_VERSION, getCredentials, shouldRefreshToken, updateCredentials, } from './platform-credentials.js';
|
|
20
16
|
import { captureException } from './sentry.js';
|
|
21
|
-
// Read CLI version from package.json once at import time
|
|
22
|
-
const CLI_VERSION = (() => {
|
|
23
|
-
try {
|
|
24
|
-
const pkg = JSON.parse(readFileSync(join(import.meta.dirname || '.', '..', 'package.json'), 'utf-8'));
|
|
25
|
-
return pkg.version || '0.0.0';
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
return '0.0.0';
|
|
29
|
-
}
|
|
30
|
-
})();
|
|
31
|
-
const MSTRO_DIR = join(homedir(), '.mstro');
|
|
32
|
-
const CREDENTIALS_FILE = join(MSTRO_DIR, 'credentials.json');
|
|
33
|
-
// Refresh token every 30 days
|
|
34
|
-
const TOKEN_REFRESH_INTERVAL_MS = 30 * 24 * 60 * 60 * 1000;
|
|
35
|
-
/**
|
|
36
|
-
* Get stored credentials from ~/.mstro/credentials.json
|
|
37
|
-
*/
|
|
38
|
-
function getCredentials() {
|
|
39
|
-
if (!existsSync(CREDENTIALS_FILE)) {
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
try {
|
|
43
|
-
const content = readFileSync(CREDENTIALS_FILE, 'utf-8');
|
|
44
|
-
const creds = JSON.parse(content);
|
|
45
|
-
if (creds.token && creds.userId && creds.email) {
|
|
46
|
-
return creds;
|
|
47
|
-
}
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Update stored credentials (for token refresh)
|
|
56
|
-
*/
|
|
57
|
-
function updateCredentials(updates) {
|
|
58
|
-
const creds = getCredentials();
|
|
59
|
-
if (!creds)
|
|
60
|
-
return;
|
|
61
|
-
writeFileSync(CREDENTIALS_FILE, JSON.stringify({ ...creds, ...updates }, null, 2), {
|
|
62
|
-
mode: 0o600
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Check if token should be refreshed
|
|
67
|
-
*/
|
|
68
|
-
function shouldRefreshToken(creds) {
|
|
69
|
-
if (!creds.lastRefreshedAt) {
|
|
70
|
-
return true; // Never refreshed
|
|
71
|
-
}
|
|
72
|
-
const lastRefreshed = new Date(creds.lastRefreshedAt).getTime();
|
|
73
|
-
const now = Date.now();
|
|
74
|
-
return now - lastRefreshed > TOKEN_REFRESH_INTERVAL_MS;
|
|
75
|
-
}
|
|
76
17
|
/**
|
|
77
18
|
* Get machine identification string
|
|
78
|
-
* Format: "hostname @ node-vX.X.X platform (arch)"
|
|
79
19
|
* Example: "Jessica @ node-v22.21.1 linux (arm64)"
|
|
80
20
|
*/
|
|
81
21
|
export function getMachineIdentifier() {
|
|
@@ -96,9 +36,6 @@ else {
|
|
|
96
36
|
}
|
|
97
37
|
// PLATFORM_URL is set via --server / --dev flag in mstro.js
|
|
98
38
|
const DEFAULT_PLATFORM_URL = process.env.PLATFORM_URL || 'https://api.mstro.app';
|
|
99
|
-
/**
|
|
100
|
-
* Platform WebSocket connection with token-based authentication
|
|
101
|
-
*/
|
|
102
39
|
/** Number of missed pongs before treating connection as dead */
|
|
103
40
|
const MAX_MISSED_PONGS = 2;
|
|
104
41
|
export class PlatformConnection {
|
|
@@ -115,19 +52,17 @@ export class PlatformConnection {
|
|
|
115
52
|
tokenRefreshInterval = null;
|
|
116
53
|
heartbeatInterval = null;
|
|
117
54
|
missedPongs = 0;
|
|
55
|
+
startedAt;
|
|
118
56
|
constructor(workingDirectory, callbacks = {}, platformUrl) {
|
|
119
57
|
this.workingDirectory = workingDirectory;
|
|
120
58
|
this.platformUrl = platformUrl || DEFAULT_PLATFORM_URL;
|
|
121
59
|
this.callbacks = callbacks;
|
|
60
|
+
this.startedAt = new Date().toISOString();
|
|
122
61
|
}
|
|
123
|
-
/**
|
|
124
|
-
* Refresh the device token if needed
|
|
125
|
-
*/
|
|
126
62
|
async maybeRefreshToken() {
|
|
127
63
|
const creds = getCredentials();
|
|
128
|
-
if (!creds || !shouldRefreshToken(creds))
|
|
64
|
+
if (!creds || !shouldRefreshToken(creds))
|
|
129
65
|
return;
|
|
130
|
-
}
|
|
131
66
|
try {
|
|
132
67
|
const response = await fetch(`${this.platformUrl}/api/auth/device/refresh`, {
|
|
133
68
|
method: 'POST',
|
|
@@ -151,24 +86,13 @@ export class PlatformConnection {
|
|
|
151
86
|
console.warn('[Platform] Token refresh error:', err);
|
|
152
87
|
}
|
|
153
88
|
}
|
|
154
|
-
/**
|
|
155
|
-
* Start periodic token refresh check
|
|
156
|
-
*/
|
|
157
89
|
startTokenRefreshCheck() {
|
|
158
|
-
// Check every 24 hours
|
|
159
90
|
this.tokenRefreshInterval = setInterval(() => {
|
|
160
91
|
this.maybeRefreshToken();
|
|
161
92
|
}, 24 * 60 * 60 * 1000);
|
|
162
93
|
}
|
|
163
|
-
/**
|
|
164
|
-
* Start heartbeat to keep connection alive and refresh server-side TTL.
|
|
165
|
-
* Tracks missed pongs — if the server doesn't respond to MAX_MISSED_PONGS
|
|
166
|
-
* consecutive pings, the connection is considered dead and force-closed
|
|
167
|
-
* to trigger reconnection.
|
|
168
|
-
*/
|
|
169
94
|
startHeartbeat() {
|
|
170
95
|
this.missedPongs = 0;
|
|
171
|
-
// Send ping every 2 minutes (server TTL is 5 minutes)
|
|
172
96
|
this.heartbeatInterval = setInterval(() => this.heartbeatTick(), 2 * 60 * 1000);
|
|
173
97
|
}
|
|
174
98
|
heartbeatTick() {
|
|
@@ -192,27 +116,18 @@ export class PlatformConnection {
|
|
|
192
116
|
// Send failed — onclose will handle reconnect
|
|
193
117
|
}
|
|
194
118
|
}
|
|
195
|
-
/**
|
|
196
|
-
* Stop heartbeat
|
|
197
|
-
*/
|
|
198
119
|
stopHeartbeat() {
|
|
199
120
|
if (this.heartbeatInterval) {
|
|
200
121
|
clearInterval(this.heartbeatInterval);
|
|
201
122
|
this.heartbeatInterval = null;
|
|
202
123
|
}
|
|
203
124
|
}
|
|
204
|
-
/**
|
|
205
|
-
* Stop periodic token refresh check
|
|
206
|
-
*/
|
|
207
125
|
stopTokenRefreshCheck() {
|
|
208
126
|
if (this.tokenRefreshInterval) {
|
|
209
127
|
clearInterval(this.tokenRefreshInterval);
|
|
210
128
|
this.tokenRefreshInterval = null;
|
|
211
129
|
}
|
|
212
130
|
}
|
|
213
|
-
/**
|
|
214
|
-
* Connect to platform WebSocket
|
|
215
|
-
*/
|
|
216
131
|
connect() {
|
|
217
132
|
this.isIntentionallyClosed = false;
|
|
218
133
|
const name = basename(this.workingDirectory);
|
|
@@ -222,7 +137,6 @@ export class PlatformConnection {
|
|
|
222
137
|
const nodeVersion = process.version;
|
|
223
138
|
const osType = type().toLowerCase();
|
|
224
139
|
const cpuArch = arch();
|
|
225
|
-
// Get auth token from credentials
|
|
226
140
|
const credentials = getCredentials();
|
|
227
141
|
const authToken = credentials?.token;
|
|
228
142
|
if (!authToken) {
|
|
@@ -230,8 +144,6 @@ export class PlatformConnection {
|
|
|
230
144
|
this.callbacks.onError?.('Not logged in - run `mstro login` first');
|
|
231
145
|
return;
|
|
232
146
|
}
|
|
233
|
-
// Build URL params WITHOUT the auth token — token is sent post-connection
|
|
234
|
-
// to avoid leaking it in proxy logs, browser history, and server access logs
|
|
235
147
|
const params = new URLSearchParams({
|
|
236
148
|
name,
|
|
237
149
|
workingDirectory: this.workingDirectory,
|
|
@@ -242,7 +154,8 @@ export class PlatformConnection {
|
|
|
242
154
|
osType,
|
|
243
155
|
cpuArch,
|
|
244
156
|
cliVersion: CLI_VERSION,
|
|
245
|
-
capabilities: JSON.stringify({})
|
|
157
|
+
capabilities: JSON.stringify({}),
|
|
158
|
+
startedAt: this.startedAt,
|
|
246
159
|
});
|
|
247
160
|
const wsUrl = `${this.platformUrl.replace(/^http/, 'ws')}/ws/client?${params}`;
|
|
248
161
|
try {
|
|
@@ -255,10 +168,9 @@ export class PlatformConnection {
|
|
|
255
168
|
this.scheduleReconnect();
|
|
256
169
|
return;
|
|
257
170
|
}
|
|
258
|
-
// Connection timeout - if not connected within 10 seconds, show helpful error
|
|
259
171
|
const connectionTimeout = setTimeout(() => {
|
|
260
172
|
const state = this.ws?.readyState;
|
|
261
|
-
if (this.ws && (state === 0 || state === undefined)) {
|
|
173
|
+
if (this.ws && (state === 0 || state === undefined)) {
|
|
262
174
|
console.error('\n❌ Connection timeout. The platform may have rejected your credentials.');
|
|
263
175
|
console.error(' Run `mstro login --force` to re-authenticate.\n');
|
|
264
176
|
this.ws.close();
|
|
@@ -267,12 +179,8 @@ export class PlatformConnection {
|
|
|
267
179
|
}, 10000);
|
|
268
180
|
this.ws.onopen = () => {
|
|
269
181
|
clearTimeout(connectionTimeout);
|
|
270
|
-
// Platform WebSocket open — auth will follow
|
|
271
|
-
// Send auth token as first message instead of URL param
|
|
272
182
|
this.ws.send(JSON.stringify({ type: 'auth', token: authToken }));
|
|
273
|
-
// Check if token needs refresh on connect
|
|
274
183
|
this.maybeRefreshToken();
|
|
275
|
-
// Start periodic refresh checks
|
|
276
184
|
this.startTokenRefreshCheck();
|
|
277
185
|
this.reconnectAttempts = 0;
|
|
278
186
|
trackEvent(AnalyticsEvents.PLATFORM_CONNECTED);
|
|
@@ -286,7 +194,6 @@ export class PlatformConnection {
|
|
|
286
194
|
console.error('Failed to parse platform message:', err);
|
|
287
195
|
}
|
|
288
196
|
};
|
|
289
|
-
// Track if we ever successfully connected (received 'paired' message)
|
|
290
197
|
let everConnected = false;
|
|
291
198
|
const originalOnConnected = this.callbacks.onConnected;
|
|
292
199
|
this.callbacks.onConnected = (connectionId) => {
|
|
@@ -294,11 +201,9 @@ export class PlatformConnection {
|
|
|
294
201
|
originalOnConnected?.(connectionId);
|
|
295
202
|
};
|
|
296
203
|
this.ws.onclose = (event) => {
|
|
297
|
-
// Stop heartbeat on any close
|
|
298
204
|
this.stopHeartbeat();
|
|
299
205
|
this.isConnected = false;
|
|
300
206
|
if (!this.isIntentionallyClosed) {
|
|
301
|
-
// Check if we were rejected due to auth (code 4001 or 1006 before ever connecting)
|
|
302
207
|
const isAuthFailure = event.code === 4001 ||
|
|
303
208
|
event.reason?.includes('Unauthorized') ||
|
|
304
209
|
(event.code === 1006 && !everConnected);
|
|
@@ -323,8 +228,6 @@ export class PlatformConnection {
|
|
|
323
228
|
case 'paired':
|
|
324
229
|
this.isConnected = true;
|
|
325
230
|
this.connectionId = message.connectionId;
|
|
326
|
-
// Connection status printed by onConnected callback
|
|
327
|
-
// Start heartbeat to keep server-side TTL refreshed
|
|
328
231
|
this.startHeartbeat();
|
|
329
232
|
this.callbacks.onConnected?.(message.connectionId);
|
|
330
233
|
break;
|
|
@@ -340,8 +243,6 @@ export class PlatformConnection {
|
|
|
340
243
|
this.missedPongs = 0;
|
|
341
244
|
break;
|
|
342
245
|
default:
|
|
343
|
-
// Relay message from web to wsHandler
|
|
344
|
-
// These are messages like 'execute', 'initTab', 'autocomplete', etc.
|
|
345
246
|
this.callbacks.onRelayedMessage?.(message);
|
|
346
247
|
break;
|
|
347
248
|
}
|
|
@@ -360,26 +261,16 @@ export class PlatformConnection {
|
|
|
360
261
|
this.connect();
|
|
361
262
|
}, delay);
|
|
362
263
|
}
|
|
363
|
-
/**
|
|
364
|
-
* Send message to platform (will be relayed to web if connected)
|
|
365
|
-
*/
|
|
366
264
|
send(message) {
|
|
367
265
|
if (this.ws && this.ws.readyState === WebSocketImpl.OPEN) {
|
|
368
266
|
this.ws.send(JSON.stringify(message));
|
|
369
267
|
}
|
|
370
268
|
}
|
|
371
|
-
/**
|
|
372
|
-
* Check if connected to platform
|
|
373
|
-
*/
|
|
374
269
|
isConnectedToPlatform() {
|
|
375
270
|
return this.isConnected && this.ws?.readyState === WebSocketImpl.OPEN;
|
|
376
271
|
}
|
|
377
|
-
/**
|
|
378
|
-
* Disconnect from platform
|
|
379
|
-
*/
|
|
380
272
|
disconnect() {
|
|
381
273
|
this.isIntentionallyClosed = true;
|
|
382
|
-
// Stop heartbeat and token refresh checks
|
|
383
274
|
this.stopHeartbeat();
|
|
384
275
|
this.stopTokenRefreshCheck();
|
|
385
276
|
if (this.reconnectTimeout) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../server/services/platform.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../server/services/platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,91 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* PTY Manager - Manages pseudo-terminal sessions for shell access
|
|
2
|
+
* PTY Manager - Manages pseudo-terminal sessions for shell access.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Supports session persistence:
|
|
8
|
-
* - Sessions survive WebSocket disconnections
|
|
9
|
-
* - Scrollback buffer is maintained for replay on reconnect
|
|
10
|
-
* - Sessions can be reattached without losing running processes
|
|
11
|
-
*
|
|
12
|
-
* NOTE: node-pty is an optional dependency requiring native compilation.
|
|
13
|
-
* Terminal features gracefully degrade when node-pty is not available.
|
|
4
|
+
* Utilities (node-pty loading, shell detection, ScrollbackBuffer, types)
|
|
5
|
+
* live in pty-utils.ts. This file owns session lifecycle orchestration.
|
|
14
6
|
*/
|
|
15
7
|
import { EventEmitter } from 'node:events';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
export declare function isPtyAvailable(): boolean;
|
|
20
|
-
/**
|
|
21
|
-
* Re-attempt loading node-pty at runtime.
|
|
22
|
-
* Called after `mstro setup-terminal` compiles the native module
|
|
23
|
-
* so the running server can pick it up without a restart.
|
|
24
|
-
*
|
|
25
|
-
* Uses createRequire (CJS) to bypass ESM's module cache — a failed
|
|
26
|
-
* ESM import is permanently cached, but CJS require cache entries
|
|
27
|
-
* can be deleted and re-required.
|
|
28
|
-
*/
|
|
29
|
-
export declare function reloadPty(): Promise<boolean>;
|
|
30
|
-
/**
|
|
31
|
-
* Get installation instructions for node-pty based on platform
|
|
32
|
-
*/
|
|
33
|
-
export declare function getPtyInstallInstructions(): string;
|
|
34
|
-
type IPty = import('node-pty').IPty;
|
|
35
|
-
/**
|
|
36
|
-
* Fixed-size buffer that retains the most recent PTY output for replay on reconnect.
|
|
37
|
-
* Stores raw string chunks and evicts oldest data when the total exceeds maxBytes.
|
|
38
|
-
*/
|
|
39
|
-
declare class ScrollbackBuffer {
|
|
40
|
-
private chunks;
|
|
41
|
-
private totalLength;
|
|
42
|
-
private maxBytes;
|
|
43
|
-
constructor(maxBytes: number);
|
|
44
|
-
append(data: string): void;
|
|
45
|
-
getContents(): string;
|
|
46
|
-
clear(): void;
|
|
47
|
-
}
|
|
48
|
-
export interface PTYSession {
|
|
49
|
-
id: string;
|
|
50
|
-
pty: IPty;
|
|
51
|
-
shell: string;
|
|
52
|
-
cwd: string;
|
|
53
|
-
createdAt: number;
|
|
54
|
-
lastActivityAt: number;
|
|
55
|
-
cols: number;
|
|
56
|
-
rows: number;
|
|
57
|
-
_outputBuffer: string;
|
|
58
|
-
_outputTimer: ReturnType<typeof setTimeout> | null;
|
|
59
|
-
scrollback: ScrollbackBuffer;
|
|
60
|
-
}
|
|
8
|
+
import type { PTYSession } from './pty-utils.js';
|
|
9
|
+
export type { PTYSession } from './pty-utils.js';
|
|
10
|
+
export { isPtyAvailable, reloadPty } from './pty-utils.js';
|
|
61
11
|
export declare class PTYManager extends EventEmitter {
|
|
62
12
|
private terminals;
|
|
63
13
|
constructor();
|
|
64
|
-
/**
|
|
65
|
-
* Check if a terminal session exists and is still running
|
|
66
|
-
*/
|
|
67
14
|
exists(terminalId: string): boolean;
|
|
68
|
-
/**
|
|
69
|
-
* Get session info for reconnection
|
|
70
|
-
* Returns null if session doesn't exist
|
|
71
|
-
*/
|
|
72
15
|
getSessionInfo(terminalId: string): {
|
|
73
16
|
shell: string;
|
|
74
17
|
cwd: string;
|
|
75
18
|
cols: number;
|
|
76
19
|
rows: number;
|
|
77
20
|
} | null;
|
|
78
|
-
/**
|
|
79
|
-
* Check if PTY functionality is available
|
|
80
|
-
*/
|
|
81
21
|
isPtyAvailable(): boolean;
|
|
82
|
-
/**
|
|
83
|
-
* Get installation instructions if PTY is not available
|
|
84
|
-
*/
|
|
85
22
|
getPtyInstallInstructions(): string;
|
|
86
|
-
/**
|
|
87
|
-
* Create a new terminal session
|
|
88
|
-
*/
|
|
89
23
|
create(terminalId: string, workingDir: string, cols?: number, rows?: number, requestedShell?: string, options?: {
|
|
90
24
|
sandboxed?: boolean;
|
|
91
25
|
}): {
|
|
@@ -94,39 +28,15 @@ export declare class PTYManager extends EventEmitter {
|
|
|
94
28
|
isReconnect: boolean;
|
|
95
29
|
platform: string;
|
|
96
30
|
};
|
|
97
|
-
|
|
98
|
-
* Write input data to terminal
|
|
99
|
-
*/
|
|
31
|
+
private attachOutputHandlers;
|
|
100
32
|
write(terminalId: string, data: string): boolean;
|
|
101
|
-
/**
|
|
102
|
-
* Resize terminal
|
|
103
|
-
*/
|
|
104
33
|
resize(terminalId: string, cols: number, rows: number): boolean;
|
|
105
|
-
/**
|
|
106
|
-
* Close terminal session
|
|
107
|
-
*/
|
|
108
34
|
close(terminalId: string): boolean;
|
|
109
|
-
/**
|
|
110
|
-
* Get scrollback buffer contents for replay on reconnect
|
|
111
|
-
*/
|
|
112
35
|
getScrollback(terminalId: string): string | null;
|
|
113
|
-
/**
|
|
114
|
-
* Get terminal session info
|
|
115
|
-
*/
|
|
116
36
|
getSession(terminalId: string): PTYSession | undefined;
|
|
117
|
-
/**
|
|
118
|
-
* Check if terminal exists
|
|
119
|
-
*/
|
|
120
37
|
has(terminalId: string): boolean;
|
|
121
|
-
/**
|
|
122
|
-
* Get all active terminal IDs
|
|
123
|
-
*/
|
|
124
38
|
getActiveTerminals(): string[];
|
|
125
|
-
/**
|
|
126
|
-
* Close all terminals
|
|
127
|
-
*/
|
|
128
39
|
closeAll(): void;
|
|
129
40
|
}
|
|
130
41
|
export declare function getPTYManager(): PTYManager;
|
|
131
|
-
export {};
|
|
132
42
|
//# sourceMappingURL=pty-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-manager.d.ts","sourceRoot":"","sources":["../../../../server/services/terminal/pty-manager.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"pty-manager.d.ts","sourceRoot":"","sources":["../../../../server/services/terminal/pty-manager.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAWjD,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3D,qBAAa,UAAW,SAAQ,YAAY;IAC1C,OAAO,CAAC,SAAS,CAAsC;;IAOvD,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAInC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAMrG,cAAc,IAAI,OAAO;IAIzB,yBAAyB,IAAI,MAAM;IAInC,MAAM,CACJ,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,MAAW,EACjB,IAAI,GAAE,MAAW,EACjB,cAAc,CAAC,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAChC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAmDzE,OAAO,CAAC,oBAAoB;IAyC5B,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAgBhD,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAe/D,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAsBlC,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMhD,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAItD,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIhC,kBAAkB,IAAI,MAAM,EAAE;IAI9B,QAAQ,IAAI,IAAI;CAKjB;AAKD,wBAAgB,aAAa,IAAI,UAAU,CAK1C"}
|