mstro-app 0.1.58 → 0.3.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 (161) hide show
  1. package/PRIVACY.md +126 -0
  2. package/README.md +24 -23
  3. package/bin/commands/login.js +85 -42
  4. package/bin/commands/logout.js +35 -1
  5. package/bin/commands/status.js +1 -1
  6. package/bin/mstro.js +231 -131
  7. package/dist/server/cli/headless/claude-invoker.d.ts.map +1 -1
  8. package/dist/server/cli/headless/claude-invoker.js +550 -115
  9. package/dist/server/cli/headless/claude-invoker.js.map +1 -1
  10. package/dist/server/cli/headless/index.d.ts +2 -1
  11. package/dist/server/cli/headless/index.d.ts.map +1 -1
  12. package/dist/server/cli/headless/index.js +2 -0
  13. package/dist/server/cli/headless/index.js.map +1 -1
  14. package/dist/server/cli/headless/prompt-utils.d.ts +5 -8
  15. package/dist/server/cli/headless/prompt-utils.d.ts.map +1 -1
  16. package/dist/server/cli/headless/prompt-utils.js +40 -5
  17. package/dist/server/cli/headless/prompt-utils.js.map +1 -1
  18. package/dist/server/cli/headless/runner.d.ts +1 -1
  19. package/dist/server/cli/headless/runner.d.ts.map +1 -1
  20. package/dist/server/cli/headless/runner.js +52 -7
  21. package/dist/server/cli/headless/runner.js.map +1 -1
  22. package/dist/server/cli/headless/stall-assessor.d.ts +79 -1
  23. package/dist/server/cli/headless/stall-assessor.d.ts.map +1 -1
  24. package/dist/server/cli/headless/stall-assessor.js +355 -20
  25. package/dist/server/cli/headless/stall-assessor.js.map +1 -1
  26. package/dist/server/cli/headless/tool-watchdog.d.ts +70 -0
  27. package/dist/server/cli/headless/tool-watchdog.d.ts.map +1 -0
  28. package/dist/server/cli/headless/tool-watchdog.js +302 -0
  29. package/dist/server/cli/headless/tool-watchdog.js.map +1 -0
  30. package/dist/server/cli/headless/types.d.ts +98 -1
  31. package/dist/server/cli/headless/types.d.ts.map +1 -1
  32. package/dist/server/cli/improvisation-session-manager.d.ts +136 -2
  33. package/dist/server/cli/improvisation-session-manager.d.ts.map +1 -1
  34. package/dist/server/cli/improvisation-session-manager.js +929 -132
  35. package/dist/server/cli/improvisation-session-manager.js.map +1 -1
  36. package/dist/server/index.js +5 -13
  37. package/dist/server/index.js.map +1 -1
  38. package/dist/server/mcp/bouncer-integration.d.ts.map +1 -1
  39. package/dist/server/mcp/bouncer-integration.js +18 -0
  40. package/dist/server/mcp/bouncer-integration.js.map +1 -1
  41. package/dist/server/mcp/security-audit.d.ts +2 -2
  42. package/dist/server/mcp/security-audit.d.ts.map +1 -1
  43. package/dist/server/mcp/security-audit.js +12 -8
  44. package/dist/server/mcp/security-audit.js.map +1 -1
  45. package/dist/server/mcp/security-patterns.d.ts.map +1 -1
  46. package/dist/server/mcp/security-patterns.js +9 -4
  47. package/dist/server/mcp/security-patterns.js.map +1 -1
  48. package/dist/server/routes/improvise.js +6 -6
  49. package/dist/server/routes/improvise.js.map +1 -1
  50. package/dist/server/services/analytics.d.ts +2 -0
  51. package/dist/server/services/analytics.d.ts.map +1 -1
  52. package/dist/server/services/analytics.js +26 -4
  53. package/dist/server/services/analytics.js.map +1 -1
  54. package/dist/server/services/platform.d.ts.map +1 -1
  55. package/dist/server/services/platform.js +17 -10
  56. package/dist/server/services/platform.js.map +1 -1
  57. package/dist/server/services/sandbox-utils.d.ts +6 -0
  58. package/dist/server/services/sandbox-utils.d.ts.map +1 -0
  59. package/dist/server/services/sandbox-utils.js +72 -0
  60. package/dist/server/services/sandbox-utils.js.map +1 -0
  61. package/dist/server/services/settings.d.ts +6 -0
  62. package/dist/server/services/settings.d.ts.map +1 -1
  63. package/dist/server/services/settings.js +21 -0
  64. package/dist/server/services/settings.js.map +1 -1
  65. package/dist/server/services/terminal/pty-manager.d.ts +5 -51
  66. package/dist/server/services/terminal/pty-manager.d.ts.map +1 -1
  67. package/dist/server/services/terminal/pty-manager.js +63 -102
  68. package/dist/server/services/terminal/pty-manager.js.map +1 -1
  69. package/dist/server/services/websocket/file-explorer-handlers.d.ts +5 -0
  70. package/dist/server/services/websocket/file-explorer-handlers.d.ts.map +1 -0
  71. package/dist/server/services/websocket/file-explorer-handlers.js +518 -0
  72. package/dist/server/services/websocket/file-explorer-handlers.js.map +1 -0
  73. package/dist/server/services/websocket/git-handlers.d.ts +36 -0
  74. package/dist/server/services/websocket/git-handlers.d.ts.map +1 -0
  75. package/dist/server/services/websocket/git-handlers.js +797 -0
  76. package/dist/server/services/websocket/git-handlers.js.map +1 -0
  77. package/dist/server/services/websocket/git-pr-handlers.d.ts +4 -0
  78. package/dist/server/services/websocket/git-pr-handlers.d.ts.map +1 -0
  79. package/dist/server/services/websocket/git-pr-handlers.js +299 -0
  80. package/dist/server/services/websocket/git-pr-handlers.js.map +1 -0
  81. package/dist/server/services/websocket/git-worktree-handlers.d.ts +4 -0
  82. package/dist/server/services/websocket/git-worktree-handlers.d.ts.map +1 -0
  83. package/dist/server/services/websocket/git-worktree-handlers.js +353 -0
  84. package/dist/server/services/websocket/git-worktree-handlers.js.map +1 -0
  85. package/dist/server/services/websocket/handler-context.d.ts +32 -0
  86. package/dist/server/services/websocket/handler-context.d.ts.map +1 -0
  87. package/dist/server/services/websocket/handler-context.js +4 -0
  88. package/dist/server/services/websocket/handler-context.js.map +1 -0
  89. package/dist/server/services/websocket/handler.d.ts +27 -338
  90. package/dist/server/services/websocket/handler.d.ts.map +1 -1
  91. package/dist/server/services/websocket/handler.js +74 -2106
  92. package/dist/server/services/websocket/handler.js.map +1 -1
  93. package/dist/server/services/websocket/index.d.ts +1 -1
  94. package/dist/server/services/websocket/index.d.ts.map +1 -1
  95. package/dist/server/services/websocket/index.js.map +1 -1
  96. package/dist/server/services/websocket/session-handlers.d.ts +10 -0
  97. package/dist/server/services/websocket/session-handlers.d.ts.map +1 -0
  98. package/dist/server/services/websocket/session-handlers.js +507 -0
  99. package/dist/server/services/websocket/session-handlers.js.map +1 -0
  100. package/dist/server/services/websocket/settings-handlers.d.ts +6 -0
  101. package/dist/server/services/websocket/settings-handlers.d.ts.map +1 -0
  102. package/dist/server/services/websocket/settings-handlers.js +125 -0
  103. package/dist/server/services/websocket/settings-handlers.js.map +1 -0
  104. package/dist/server/services/websocket/tab-handlers.d.ts +10 -0
  105. package/dist/server/services/websocket/tab-handlers.d.ts.map +1 -0
  106. package/dist/server/services/websocket/tab-handlers.js +131 -0
  107. package/dist/server/services/websocket/tab-handlers.js.map +1 -0
  108. package/dist/server/services/websocket/terminal-handlers.d.ts +9 -0
  109. package/dist/server/services/websocket/terminal-handlers.d.ts.map +1 -0
  110. package/dist/server/services/websocket/terminal-handlers.js +220 -0
  111. package/dist/server/services/websocket/terminal-handlers.js.map +1 -0
  112. package/dist/server/services/websocket/types.d.ts +67 -2
  113. package/dist/server/services/websocket/types.d.ts.map +1 -1
  114. package/hooks/bouncer.sh +11 -4
  115. package/package.json +7 -2
  116. package/server/README.md +176 -159
  117. package/server/cli/headless/claude-invoker.ts +740 -133
  118. package/server/cli/headless/index.ts +7 -1
  119. package/server/cli/headless/output-utils.test.ts +225 -0
  120. package/server/cli/headless/prompt-utils.ts +37 -5
  121. package/server/cli/headless/runner.ts +55 -8
  122. package/server/cli/headless/stall-assessor.test.ts +165 -0
  123. package/server/cli/headless/stall-assessor.ts +478 -22
  124. package/server/cli/headless/tool-watchdog.test.ts +429 -0
  125. package/server/cli/headless/tool-watchdog.ts +398 -0
  126. package/server/cli/headless/types.ts +93 -1
  127. package/server/cli/improvisation-session-manager.ts +1133 -145
  128. package/server/index.ts +5 -14
  129. package/server/mcp/README.md +59 -67
  130. package/server/mcp/bouncer-integration.test.ts +161 -0
  131. package/server/mcp/bouncer-integration.ts +28 -0
  132. package/server/mcp/security-audit.ts +12 -8
  133. package/server/mcp/security-patterns.test.ts +258 -0
  134. package/server/mcp/security-patterns.ts +8 -2
  135. package/server/routes/improvise.ts +6 -6
  136. package/server/services/analytics.ts +26 -4
  137. package/server/services/platform.test.ts +0 -10
  138. package/server/services/platform.ts +16 -11
  139. package/server/services/sandbox-utils.ts +78 -0
  140. package/server/services/settings.ts +25 -0
  141. package/server/services/terminal/pty-manager.ts +68 -129
  142. package/server/services/websocket/autocomplete.test.ts +194 -0
  143. package/server/services/websocket/file-explorer-handlers.ts +587 -0
  144. package/server/services/websocket/git-handlers.ts +924 -0
  145. package/server/services/websocket/git-pr-handlers.ts +363 -0
  146. package/server/services/websocket/git-worktree-handlers.ts +403 -0
  147. package/server/services/websocket/handler-context.ts +44 -0
  148. package/server/services/websocket/handler.test.ts +1 -1
  149. package/server/services/websocket/handler.ts +90 -2421
  150. package/server/services/websocket/index.ts +1 -1
  151. package/server/services/websocket/session-handlers.ts +574 -0
  152. package/server/services/websocket/settings-handlers.ts +150 -0
  153. package/server/services/websocket/tab-handlers.ts +150 -0
  154. package/server/services/websocket/terminal-handlers.ts +277 -0
  155. package/server/services/websocket/types.ts +145 -4
  156. package/bin/release.sh +0 -110
  157. package/dist/server/services/terminal/tmux-manager.d.ts +0 -82
  158. package/dist/server/services/terminal/tmux-manager.d.ts.map +0 -1
  159. package/dist/server/services/terminal/tmux-manager.js +0 -352
  160. package/dist/server/services/terminal/tmux-manager.js.map +0 -1
  161. package/server/services/terminal/tmux-manager.ts +0 -426
@@ -44,8 +44,6 @@ export interface WebSocketMessage {
44
44
  | 'terminalInit'
45
45
  | 'terminalReconnect'
46
46
  | 'terminalList'
47
- | 'terminalInitPersistent'
48
- | 'terminalListPersistent'
49
47
  | 'terminalInput'
50
48
  | 'terminalResize'
51
49
  | 'terminalClose'
@@ -57,6 +55,9 @@ export interface WebSocketMessage {
57
55
  | 'deleteFile'
58
56
  | 'renameFile'
59
57
  | 'notifyFileOpened'
58
+ | 'searchFileContents'
59
+ | 'cancelSearch'
60
+ | 'findDefinition'
60
61
  // Git message types
61
62
  | 'gitStatus'
62
63
  | 'gitStage'
@@ -64,9 +65,36 @@ export interface WebSocketMessage {
64
65
  | 'gitCommit'
65
66
  | 'gitCommitWithAI'
66
67
  | 'gitPush'
68
+ | 'gitPull'
67
69
  | 'gitLog'
68
70
  | 'gitDiscoverRepos'
69
71
  | 'gitSetDirectory'
72
+ | 'gitGetRemoteInfo'
73
+ | 'gitCreatePR'
74
+ | 'gitGeneratePRDescription'
75
+ // Branch operations
76
+ | 'gitListBranches'
77
+ | 'gitCheckout'
78
+ | 'gitCreateBranch'
79
+ | 'gitDeleteBranch'
80
+ // Diff operations
81
+ | 'gitDiff'
82
+ // Tag operations
83
+ | 'gitListTags'
84
+ | 'gitCreateTag'
85
+ | 'gitPushTag'
86
+ // Worktree operations
87
+ | 'gitWorktreeList'
88
+ | 'gitWorktreeCreate'
89
+ | 'gitWorktreeRemove'
90
+ | 'tabWorktreeSwitch'
91
+ | 'gitWorktreePush'
92
+ | 'gitWorktreeCreatePR'
93
+ // Merge operations
94
+ | 'gitMergePreview'
95
+ | 'gitWorktreeMerge'
96
+ | 'gitMergeAbort'
97
+ | 'gitMergeComplete'
70
98
  // Session sync message types
71
99
  | 'getActiveTabs'
72
100
  | 'createTab'
@@ -81,6 +109,8 @@ export interface WebSocketMessage {
81
109
  tabId?: string;
82
110
  terminalId?: string;
83
111
  data?: any;
112
+ /** Injected by server relay for sandboxed shared users (control + view) */
113
+ _permission?: 'control' | 'view';
84
114
  }
85
115
 
86
116
  export interface WebSocketResponse {
@@ -106,14 +136,13 @@ export interface WebSocketResponse {
106
136
  | 'tabInitialized'
107
137
  | 'approvalRequired'
108
138
  | 'toolUse'
139
+ | 'streamingTokens'
109
140
  | 'notificationSummary'
110
141
  | 'terminalOutput'
111
142
  | 'terminalReady'
112
143
  | 'terminalExit'
113
144
  | 'terminalError'
114
- | 'terminalScrollback'
115
145
  | 'terminalList'
116
- | 'terminalListPersistent'
117
146
  // File explorer response types
118
147
  | 'directoryListing'
119
148
  | 'fileWritten'
@@ -123,6 +152,10 @@ export interface WebSocketResponse {
123
152
  | 'fileRenamed'
124
153
  | 'fileOpened'
125
154
  | 'fileContentChanged'
155
+ | 'contentSearchResults'
156
+ | 'contentSearchComplete'
157
+ | 'contentSearchError'
158
+ | 'definitionResult'
126
159
  // Terminal sync response types
127
160
  | 'terminalCreated'
128
161
  | 'terminalClosed'
@@ -133,10 +166,37 @@ export interface WebSocketResponse {
133
166
  | 'gitCommitted'
134
167
  | 'gitCommitMessage'
135
168
  | 'gitPushed'
169
+ | 'gitPulled'
136
170
  | 'gitLog'
137
171
  | 'gitError'
138
172
  | 'gitReposDiscovered'
139
173
  | 'gitDirectorySet'
174
+ | 'gitRemoteInfo'
175
+ | 'gitPRCreated'
176
+ | 'gitPRDescription'
177
+ // Branch response types
178
+ | 'gitBranchList'
179
+ | 'gitCheckedOut'
180
+ | 'gitBranchCreated'
181
+ | 'gitBranchDeleted'
182
+ // Diff response types
183
+ | 'gitDiffResult'
184
+ // Tag response types
185
+ | 'gitTagList'
186
+ | 'gitTagCreated'
187
+ | 'gitTagPushed'
188
+ // Worktree response types
189
+ | 'gitWorktreeListResult'
190
+ | 'gitWorktreeCreated'
191
+ | 'gitWorktreeRemoved'
192
+ | 'tabWorktreeSwitched'
193
+ | 'gitWorktreePushed'
194
+ | 'gitWorktreePRCreated'
195
+ // Merge response types
196
+ | 'gitMergePreviewResult'
197
+ | 'gitWorktreeMergeResult'
198
+ | 'gitMergeAborted'
199
+ | 'gitMergeCompleted'
140
200
  // Session sync response types
141
201
  | 'activeTabs'
142
202
  | 'tabCreated'
@@ -315,6 +375,8 @@ export interface GitStatusResponse {
315
375
  ahead: number;
316
376
  /** Number of commits behind remote */
317
377
  behind: number;
378
+ /** Whether the branch has an upstream tracking branch */
379
+ hasUpstream: boolean;
318
380
  }
319
381
 
320
382
  /**
@@ -366,3 +428,82 @@ export interface GitDirectorySetResponse {
366
428
  /** Whether the directory is valid (contains .git) */
367
429
  isValid: boolean;
368
430
  }
431
+
432
+ // ============================================================================
433
+ // Branch Types
434
+ // ============================================================================
435
+
436
+ export interface GitBranchEntry {
437
+ /** Branch name, e.g. "feat/auth" or "origin/main" */
438
+ name: string;
439
+ /** Short commit hash */
440
+ shortHash: string;
441
+ /** Whether this is a remote branch */
442
+ isRemote: boolean;
443
+ /** Whether this is the currently checked out branch */
444
+ isCurrent: boolean;
445
+ /** Tracking branch, e.g. "origin/feat/auth" */
446
+ upstream?: string;
447
+ }
448
+
449
+ // ============================================================================
450
+ // Tag Types
451
+ // ============================================================================
452
+
453
+ export interface GitTagEntry {
454
+ /** Tag name */
455
+ name: string;
456
+ /** Short commit hash */
457
+ shortHash: string;
458
+ /** Creation date (ISO string) */
459
+ date: string;
460
+ /** Tag message (empty for lightweight tags) */
461
+ message: string;
462
+ }
463
+
464
+ // ============================================================================
465
+ // Worktree Types
466
+ // ============================================================================
467
+
468
+ export interface WorktreeInfo {
469
+ /** Absolute path to the worktree directory */
470
+ path: string;
471
+ /** Branch checked out in this worktree */
472
+ branch: string;
473
+ /** HEAD commit hash */
474
+ head: string;
475
+ /** Whether this is the main working tree */
476
+ isMain: boolean;
477
+ /** Whether this is a bare repository */
478
+ isBare: boolean;
479
+ /** Whether this worktree can be pruned */
480
+ prunable?: boolean;
481
+ }
482
+
483
+ // ============================================================================
484
+ // Merge Types
485
+ // ============================================================================
486
+
487
+ export interface MergePreviewResult {
488
+ /** Whether the merge can be done cleanly */
489
+ clean: boolean;
490
+ /** List of conflicting file paths */
491
+ conflicts: string[];
492
+ /** Diff stat summary */
493
+ stat: string;
494
+ /** List of commits to be merged */
495
+ commits: { hash: string; message: string }[];
496
+ /** Number of commits ahead */
497
+ ahead: number;
498
+ }
499
+
500
+ export interface WorktreeMergeResult {
501
+ /** Whether the merge succeeded */
502
+ success: boolean;
503
+ /** Merge commit hash (if successful) */
504
+ mergeCommit?: string;
505
+ /** Error message (if failed) */
506
+ error?: string;
507
+ /** List of conflicting files (if conflicts) */
508
+ conflictFiles?: string[];
509
+ }
package/bin/release.sh DELETED
@@ -1,110 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- # Release script for mstro
5
- # Usage: ./bin/release.sh [major|minor|patch]
6
- #
7
- # This script:
8
- # 1. Bumps the version in package.json
9
- # 2. Updates CHANGELOG.md with git commits since last tag
10
- # 3. Commits the changes
11
- # 4. Creates a git tag
12
- # 5. Pushes to GitHub (branch + tag)
13
- #
14
- # After push, run `npm publish` to publish to npmjs.
15
-
16
- BUMP_TYPE="${1:-patch}"
17
-
18
- if [[ "$BUMP_TYPE" != "major" && "$BUMP_TYPE" != "minor" && "$BUMP_TYPE" != "patch" ]]; then
19
- echo "Usage: $0 [major|minor|patch]"
20
- exit 1
21
- fi
22
-
23
- # Ensure we're in the cli directory
24
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
25
- CLI_DIR="$(dirname "$SCRIPT_DIR")"
26
- cd "$CLI_DIR"
27
-
28
- # Ensure working directory is clean
29
- if [[ -n "$(git status --porcelain)" ]]; then
30
- echo "Error: Working directory is not clean. Commit or stash changes first."
31
- exit 1
32
- fi
33
-
34
- # Get current version
35
- CURRENT_VERSION=$(node -e "console.log(require('./package.json').version)")
36
- echo "Current version: $CURRENT_VERSION"
37
-
38
- # Calculate new version
39
- IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT_VERSION"
40
- case "$BUMP_TYPE" in
41
- major) MAJOR=$((MAJOR + 1)); MINOR=0; PATCH=0 ;;
42
- minor) MINOR=$((MINOR + 1)); PATCH=0 ;;
43
- patch) PATCH=$((PATCH + 1)) ;;
44
- esac
45
- NEW_VERSION="$MAJOR.$MINOR.$PATCH"
46
- echo "New version: $NEW_VERSION"
47
-
48
- # Get the last tag (or first commit if no tags)
49
- LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || git rev-list --max-parents=0 HEAD)
50
-
51
- # Generate changelog entry from git commits
52
- CHANGELOG_ENTRY="## $NEW_VERSION ($(date +%Y-%m-%d))\n\n"
53
- COMMITS=$(git log "$LAST_TAG"..HEAD --pretty=format:"- %s" --no-merges 2>/dev/null || git log --pretty=format:"- %s" --no-merges)
54
-
55
- if [[ -z "$COMMITS" ]]; then
56
- CHANGELOG_ENTRY+="- Release $NEW_VERSION\n"
57
- else
58
- CHANGELOG_ENTRY+="$COMMITS\n"
59
- fi
60
-
61
- # Update CHANGELOG.md
62
- if [[ -f CHANGELOG.md ]]; then
63
- # Insert new entry after the header
64
- EXISTING=$(cat CHANGELOG.md)
65
- {
66
- echo "# Changelog"
67
- echo ""
68
- echo -e "$CHANGELOG_ENTRY"
69
- # Strip the first line (# Changelog) and any leading blank lines from existing
70
- echo "$EXISTING" | tail -n +2
71
- } > CHANGELOG.md
72
- else
73
- {
74
- echo "# Changelog"
75
- echo ""
76
- echo -e "$CHANGELOG_ENTRY"
77
- } > CHANGELOG.md
78
- fi
79
-
80
- # Bump version in package.json (without npm creating a git tag)
81
- npm version "$NEW_VERSION" --no-git-tag-version
82
-
83
- echo ""
84
- echo "Updated:"
85
- echo " - package.json: $CURRENT_VERSION -> $NEW_VERSION"
86
- echo " - CHANGELOG.md: added $NEW_VERSION entry"
87
-
88
- # Commit and tag
89
- git add package.json package-lock.json CHANGELOG.md
90
- git commit -m "release: v$NEW_VERSION"
91
- git tag -a "v$NEW_VERSION" -m "v$NEW_VERSION"
92
-
93
- echo ""
94
- echo "Created commit and tag v$NEW_VERSION"
95
-
96
- # Push
97
- echo ""
98
- read -rp "Push to origin? (y/N) " CONFIRM
99
- if [[ "$CONFIRM" =~ ^[Yy]$ ]]; then
100
- git push origin HEAD
101
- git push origin "v$NEW_VERSION"
102
- echo ""
103
- echo "Pushed to GitHub. Now run 'npm publish' to publish to npmjs."
104
- else
105
- echo ""
106
- echo "Skipped push. Run manually:"
107
- echo " git push origin HEAD"
108
- echo " git push origin v$NEW_VERSION"
109
- echo " npm publish"
110
- fi
@@ -1,82 +0,0 @@
1
- import { EventEmitter } from 'node:events';
2
- export interface TmuxSession {
3
- terminalId: string;
4
- tmuxSessionName: string;
5
- shell: string;
6
- cwd: string;
7
- createdAt: number;
8
- lastAttachedAt: number;
9
- }
10
- /**
11
- * Check if tmux is available on the system
12
- */
13
- export declare function isTmuxAvailable(): boolean;
14
- /**
15
- * TmuxManager - Manages tmux-backed terminal sessions
16
- */
17
- export declare class TmuxManager extends EventEmitter {
18
- private sessions;
19
- private outputHandlers;
20
- private tmuxAvailable;
21
- constructor();
22
- /**
23
- * Check if tmux persistence is available
24
- */
25
- isAvailable(): boolean;
26
- /**
27
- * Load session registry from disk
28
- */
29
- private loadRegistry;
30
- /**
31
- * Save session registry to disk
32
- */
33
- private saveRegistry;
34
- /**
35
- * Sync our registry with actual tmux sessions
36
- * Remove sessions that no longer exist in tmux
37
- */
38
- private syncWithTmux;
39
- /**
40
- * Check if a session exists
41
- */
42
- exists(terminalId: string): boolean;
43
- /**
44
- * Get session info
45
- */
46
- getSessionInfo(terminalId: string): TmuxSession | null;
47
- /**
48
- * Get all active sessions
49
- */
50
- getActiveSessions(): TmuxSession[];
51
- /**
52
- * Create a new tmux-backed terminal session
53
- */
54
- create(terminalId: string, workingDir: string, cols?: number, rows?: number, shell?: string): {
55
- shell: string;
56
- cwd: string;
57
- isReconnect: boolean;
58
- };
59
- /**
60
- * Attach to a tmux session and stream output
61
- * Returns a function to detach
62
- */
63
- attach(terminalId: string, onOutput: (data: string) => void, onExit: (code: number) => void): {
64
- write: (data: string) => void;
65
- resize: (cols: number, rows: number) => void;
66
- detach: () => void;
67
- };
68
- /**
69
- * Get scrollback/history from tmux session
70
- */
71
- getScrollback(terminalId: string, lines?: number): string[];
72
- /**
73
- * Close/kill a tmux session
74
- */
75
- close(terminalId: string): boolean;
76
- /**
77
- * Close all mstro-managed tmux sessions
78
- */
79
- closeAll(): void;
80
- }
81
- export declare function getTmuxManager(): TmuxManager;
82
- //# sourceMappingURL=tmux-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tmux-manager.d.ts","sourceRoot":"","sources":["../../../../server/services/terminal/tmux-manager.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQ3C,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAMD;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAOzC;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,cAAc,CAA0C;IAChE,OAAO,CAAC,aAAa,CAAU;;IAY/B;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,OAAO,CAAC,YAAY;IAgBpB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAoCpB;;OAEG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAenC;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAItD;;OAEG;IACH,iBAAiB,IAAI,WAAW,EAAE;IAKlC;;OAEG;IACH,MAAM,CACJ,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,MAAW,EACjB,IAAI,GAAE,MAAW,EACjB,KAAK,CAAC,EAAE,MAAM,GACb;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE;IAiEvD;;;OAGG;IACH,MAAM,CACJ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAChC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC7B;QAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE;IA4FtG;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,MAAa,GAAG,MAAM,EAAE;IAqBjE;;OAEG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAwBlC;;OAEG;IACH,QAAQ,IAAI,IAAI;CAKjB;AAKD,wBAAgB,cAAc,IAAI,WAAW,CAK5C"}