mstro-app 0.4.17 → 0.4.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +148 -75
- package/dist/server/cli/headless/claude-invoker-process.d.ts +1 -1
- package/dist/server/cli/headless/claude-invoker-process.d.ts.map +1 -1
- package/dist/server/cli/headless/claude-invoker-process.js +4 -10
- package/dist/server/cli/headless/claude-invoker-process.js.map +1 -1
- package/dist/server/cli/headless/claude-invoker.js +1 -1
- package/dist/server/cli/headless/claude-invoker.js.map +1 -1
- package/dist/server/cli/headless/mcp-config.d.ts +7 -2
- package/dist/server/cli/headless/mcp-config.d.ts.map +1 -1
- package/dist/server/cli/headless/mcp-config.js +28 -4
- package/dist/server/cli/headless/mcp-config.js.map +1 -1
- package/dist/server/cli/headless/runner.d.ts.map +1 -1
- package/dist/server/cli/headless/runner.js +0 -1
- package/dist/server/cli/headless/runner.js.map +1 -1
- package/dist/server/cli/headless/types.d.ts +1 -4
- package/dist/server/cli/headless/types.d.ts.map +1 -1
- package/dist/server/cli/improvisation-retry.d.ts +1 -1
- package/dist/server/cli/improvisation-retry.d.ts.map +1 -1
- package/dist/server/cli/improvisation-retry.js +1 -2
- package/dist/server/cli/improvisation-retry.js.map +1 -1
- package/dist/server/cli/improvisation-session-manager.d.ts +0 -1
- package/dist/server/cli/improvisation-session-manager.d.ts.map +1 -1
- package/dist/server/cli/improvisation-session-manager.js +44 -9
- package/dist/server/cli/improvisation-session-manager.js.map +1 -1
- package/dist/server/index.js +17 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/mcp/bouncer-haiku.d.ts.map +1 -1
- package/dist/server/mcp/bouncer-haiku.js +10 -5
- package/dist/server/mcp/bouncer-haiku.js.map +1 -1
- package/dist/server/mcp/bouncer-integration.d.ts +3 -1
- package/dist/server/mcp/bouncer-integration.d.ts.map +1 -1
- package/dist/server/mcp/bouncer-integration.js +16 -5
- package/dist/server/mcp/bouncer-integration.js.map +1 -1
- package/dist/server/mcp/server.js +3 -1
- package/dist/server/mcp/server.js.map +1 -1
- package/dist/server/services/plan/composer.d.ts +1 -1
- package/dist/server/services/plan/composer.d.ts.map +1 -1
- package/dist/server/services/plan/composer.js +2 -3
- package/dist/server/services/plan/composer.js.map +1 -1
- package/dist/server/services/plan/executor.d.ts +0 -3
- package/dist/server/services/plan/executor.d.ts.map +1 -1
- package/dist/server/services/plan/executor.js +1 -8
- package/dist/server/services/plan/executor.js.map +1 -1
- package/dist/server/services/plan/review-gate.d.ts.map +1 -1
- package/dist/server/services/plan/review-gate.js +19 -2
- package/dist/server/services/plan/review-gate.js.map +1 -1
- package/dist/server/services/plan/state-reconciler.d.ts +6 -0
- package/dist/server/services/plan/state-reconciler.d.ts.map +1 -1
- package/dist/server/services/plan/state-reconciler.js +68 -1
- package/dist/server/services/plan/state-reconciler.js.map +1 -1
- package/dist/server/services/platform.d.ts.map +1 -1
- package/dist/server/services/platform.js +18 -6
- package/dist/server/services/platform.js.map +1 -1
- package/dist/server/services/terminal/pty-manager.d.ts +2 -4
- package/dist/server/services/terminal/pty-manager.d.ts.map +1 -1
- package/dist/server/services/terminal/pty-manager.js +5 -28
- package/dist/server/services/terminal/pty-manager.js.map +1 -1
- package/dist/server/services/terminal/pty-utils.d.ts +2 -13
- package/dist/server/services/terminal/pty-utils.d.ts.map +1 -1
- package/dist/server/services/terminal/pty-utils.js +2 -74
- package/dist/server/services/terminal/pty-utils.js.map +1 -1
- package/dist/server/services/websocket/autocomplete.d.ts +1 -1
- package/dist/server/services/websocket/autocomplete.d.ts.map +1 -1
- package/dist/server/services/websocket/autocomplete.js +37 -24
- package/dist/server/services/websocket/autocomplete.js.map +1 -1
- package/dist/server/services/websocket/file-explorer-handlers.d.ts +2 -2
- package/dist/server/services/websocket/file-explorer-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/file-explorer-handlers.js +11 -4
- package/dist/server/services/websocket/file-explorer-handlers.js.map +1 -1
- package/dist/server/services/websocket/handler.d.ts.map +1 -1
- package/dist/server/services/websocket/handler.js +6 -1
- package/dist/server/services/websocket/handler.js.map +1 -1
- package/dist/server/services/websocket/plan-board-handlers.d.ts +5 -5
- package/dist/server/services/websocket/plan-board-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-board-handlers.js.map +1 -1
- package/dist/server/services/websocket/plan-execution-handlers.d.ts +6 -6
- package/dist/server/services/websocket/plan-execution-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-execution-handlers.js +1 -4
- package/dist/server/services/websocket/plan-execution-handlers.js.map +1 -1
- package/dist/server/services/websocket/plan-handlers.d.ts +1 -1
- package/dist/server/services/websocket/plan-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-handlers.js.map +1 -1
- package/dist/server/services/websocket/plan-helpers.d.ts +1 -1
- package/dist/server/services/websocket/plan-helpers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-helpers.js.map +1 -1
- package/dist/server/services/websocket/plan-issue-handlers.d.ts +4 -4
- package/dist/server/services/websocket/plan-issue-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-issue-handlers.js +10 -0
- package/dist/server/services/websocket/plan-issue-handlers.js.map +1 -1
- package/dist/server/services/websocket/plan-sprint-handlers.d.ts +3 -3
- package/dist/server/services/websocket/plan-sprint-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-sprint-handlers.js.map +1 -1
- package/dist/server/services/websocket/quality-handlers.d.ts +1 -1
- package/dist/server/services/websocket/quality-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-handlers.js +9 -5
- package/dist/server/services/websocket/quality-handlers.js.map +1 -1
- package/dist/server/services/websocket/quality-review-agent.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-review-agent.js +7 -4
- package/dist/server/services/websocket/quality-review-agent.js.map +1 -1
- package/dist/server/services/websocket/session-handlers.d.ts +1 -1
- package/dist/server/services/websocket/session-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/session-handlers.js +5 -2
- package/dist/server/services/websocket/session-handlers.js.map +1 -1
- package/dist/server/services/websocket/terminal-handlers.d.ts +1 -1
- package/dist/server/services/websocket/terminal-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/terminal-handlers.js +9 -21
- package/dist/server/services/websocket/terminal-handlers.js.map +1 -1
- package/dist/server/services/websocket/types.d.ts +2 -2
- package/dist/server/services/websocket/types.d.ts.map +1 -1
- package/dist/server/utils/port.d.ts +0 -11
- package/dist/server/utils/port.d.ts.map +1 -1
- package/dist/server/utils/port.js +0 -31
- package/dist/server/utils/port.js.map +1 -1
- package/package.json +1 -2
- package/server/cli/headless/claude-invoker-process.ts +5 -12
- package/server/cli/headless/claude-invoker.ts +1 -1
- package/server/cli/headless/mcp-config.ts +31 -4
- package/server/cli/headless/runner.ts +0 -1
- package/server/cli/headless/types.ts +1 -4
- package/server/cli/improvisation-retry.ts +0 -2
- package/server/cli/improvisation-session-manager.ts +45 -10
- package/server/index.ts +16 -2
- package/server/mcp/bouncer-haiku.ts +11 -5
- package/server/mcp/bouncer-integration.ts +14 -5
- package/server/mcp/server.ts +3 -1
- package/server/services/plan/composer.ts +1 -3
- package/server/services/plan/executor.ts +1 -9
- package/server/services/plan/review-gate.ts +13 -2
- package/server/services/plan/state-reconciler.ts +70 -1
- package/server/services/platform.ts +17 -6
- package/server/services/terminal/pty-manager.ts +6 -33
- package/server/services/terminal/pty-utils.ts +2 -80
- package/server/services/websocket/autocomplete.ts +48 -26
- package/server/services/websocket/file-explorer-handlers.ts +14 -7
- package/server/services/websocket/handler.ts +8 -2
- package/server/services/websocket/plan-board-handlers.ts +5 -5
- package/server/services/websocket/plan-execution-handlers.ts +7 -10
- package/server/services/websocket/plan-handlers.ts +1 -1
- package/server/services/websocket/plan-helpers.ts +1 -1
- package/server/services/websocket/plan-issue-handlers.ts +14 -4
- package/server/services/websocket/plan-sprint-handlers.ts +3 -3
- package/server/services/websocket/quality-handlers.ts +9 -5
- package/server/services/websocket/quality-review-agent.ts +7 -4
- package/server/services/websocket/session-handlers.ts +8 -3
- package/server/services/websocket/terminal-handlers.ts +10 -24
- package/server/services/websocket/types.ts +2 -2
- package/server/utils/port.ts +0 -41
- package/dist/server/mcp/bouncer-sandbox.d.ts +0 -60
- package/dist/server/mcp/bouncer-sandbox.d.ts.map +0 -1
- package/dist/server/mcp/bouncer-sandbox.js +0 -182
- package/dist/server/mcp/bouncer-sandbox.js.map +0 -1
- package/dist/server/services/credentials.d.ts +0 -39
- package/dist/server/services/credentials.d.ts.map +0 -1
- package/dist/server/services/credentials.js +0 -110
- package/dist/server/services/credentials.js.map +0 -1
- package/dist/server/services/sandbox-utils.d.ts +0 -8
- package/dist/server/services/sandbox-utils.d.ts.map +0 -1
- package/dist/server/services/sandbox-utils.js +0 -75
- package/dist/server/services/sandbox-utils.js.map +0 -1
- package/server/mcp/bouncer-sandbox.ts +0 -214
- package/server/services/credentials.ts +0 -134
- package/server/services/sandbox-utils.ts +0 -82
package/README.md
CHANGED
|
@@ -1,84 +1,134 @@
|
|
|
1
1
|
# mstro
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The productivity scaling workspace. AI that builds, ships, and monitors software on your machines, autonomously, from any browser.
|
|
4
4
|
|
|
5
|
-
> **
|
|
5
|
+
> **Start in 30 seconds:**
|
|
6
6
|
>
|
|
7
7
|
> ```bash
|
|
8
8
|
> npx mstro-app
|
|
9
9
|
> ```
|
|
10
10
|
>
|
|
11
|
-
> Open [mstro.app](https://mstro.app)
|
|
11
|
+
> Open [mstro.app](https://mstro.app). Start building.
|
|
12
12
|
|
|
13
|
-
## What
|
|
13
|
+
## What Mstro Does
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
### 1. Browser-based AI workstation for your machines
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
- **Use a powerful machine remotely**: run Claude on a beefy server, interact from a lightweight laptop
|
|
19
|
-
- **Stop babysitting permissions**: mstro's Security Bouncer handles tool approvals automatically so you can kick off long-running tasks and walk away knowing Claude will keep working until the job is done
|
|
20
|
-
- **Share live sessions**: let a teammate watch or collaborate in real time
|
|
17
|
+
Open [mstro.app](https://mstro.app) and connect to Claude Code running on your laptop, cloud VMs, or servers. Chat, edit files, use git, run terminals. All from any browser, on any device. Your code stays on your hardware.
|
|
21
18
|
|
|
22
|
-
|
|
19
|
+
### 2. Long-running AI tasks with zero babysitting
|
|
23
20
|
|
|
24
|
-
|
|
21
|
+
Start a complex task and walk away. The Security Bouncer handles every permission decision automatically. A three-layer watchdog detects stalls, kills frozen processes, and recovers. Come back to finished work.
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
2. Open [mstro.app](https://mstro.app) in any browser, your machine appears as a workspace
|
|
28
|
-
3. Type a prompt in the browser, and mstro works on your code directly on your machine
|
|
29
|
-
4. Results stream back to your browser in real time
|
|
23
|
+
### 3. One prompt to full apps of any complexity
|
|
30
24
|
|
|
31
|
-
|
|
25
|
+
Describe what you want. The PM board breaks it into a kanban board of tasks, assigns AI agent teams, and they build features in parallel on separate git worktrees. Track progress in real time. What takes a solo developer a week ships in hours.
|
|
32
26
|
|
|
33
|
-
##
|
|
27
|
+
## Quick Start
|
|
34
28
|
|
|
35
|
-
|
|
36
|
-
- **[Claude Code](https://docs.anthropic.com/en/docs/claude-code)** installed and signed in, you should be able to run `claude` in your terminal
|
|
29
|
+
**Prerequisites:**
|
|
37
30
|
|
|
38
|
-
|
|
31
|
+
- Node.js 18+ (check with `node --version`, [download here](https://nodejs.org/))
|
|
32
|
+
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code) installed and signed in. `claude` must work in your terminal
|
|
39
33
|
|
|
40
|
-
|
|
41
|
-
npm install -g mstro-app
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Or skip the install and run directly:
|
|
34
|
+
**Run without installing:**
|
|
45
35
|
|
|
46
36
|
```bash
|
|
47
37
|
npx mstro-app
|
|
48
38
|
```
|
|
49
39
|
|
|
50
|
-
|
|
40
|
+
**Or install globally:**
|
|
51
41
|
|
|
52
42
|
```bash
|
|
43
|
+
npm install -g mstro-app
|
|
53
44
|
mstro
|
|
54
45
|
```
|
|
55
46
|
|
|
56
|
-
On first run, mstro opens your browser
|
|
47
|
+
On first run, mstro opens your browser to sign in. Once connected, open [mstro.app](https://mstro.app) — your machine appears as a workspace.
|
|
57
48
|
|
|
58
|
-
Run
|
|
49
|
+
Run `mstro` on multiple machines. Each one appears as a separate workspace.
|
|
59
50
|
|
|
60
|
-
Stop with Ctrl+C
|
|
51
|
+
Stop with `Ctrl+C`.
|
|
61
52
|
|
|
62
|
-
##
|
|
53
|
+
## How It Works
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
Browser (mstro.app) <--WS--> Platform Server (relay) <--WS--> mstro CLI (your machine) --> Claude Code
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Your code never leaves your computer. The browser is a window into what's happening on your machines.
|
|
60
|
+
|
|
61
|
+
## Features
|
|
62
|
+
|
|
63
|
+
| Feature | What it does |
|
|
64
|
+
|---------|-------------|
|
|
65
|
+
| **Chat** | Parallel AI conversation tabs with file autocomplete and drag-and-drop context |
|
|
66
|
+
| **PM Board** | One prompt becomes a kanban board. AI agent teams build features in parallel on separate git worktrees |
|
|
67
|
+
| **Quality** | Automated linting, complexity analysis, and AI code review before shipping |
|
|
68
|
+
| **Files** | Browse, edit, search, and diff files on any connected machine with syntax highlighting |
|
|
69
|
+
| **Git** | Stage, commit, push, and create PRs — AI writes commit messages |
|
|
70
|
+
| **Terminal** | Full PTY shell access to any machine from your browser |
|
|
71
|
+
| **Shared Apps** | Invite others with view-only, project control, or full machine access |
|
|
72
|
+
|
|
73
|
+
## Security
|
|
74
|
+
|
|
75
|
+
The Security Bouncer makes permission decisions so you don't have to sit there clicking "Allow."
|
|
76
|
+
|
|
77
|
+
Two layers:
|
|
78
|
+
|
|
79
|
+
1. **Pattern matching** (<5ms): instantly blocks known threats like `rm -rf /` and reverse shells
|
|
80
|
+
2. **AI analysis** (~200-500ms): catches prompt injection and data exfiltration
|
|
81
|
+
|
|
82
|
+
Validated against 400+ tests covering 22 MITRE ATT&CK techniques.
|
|
83
|
+
|
|
84
|
+
For the full architecture, threat model, red-team results, and vulnerability reporting, see **[SECURITY.md](./SECURITY.md)**.
|
|
85
|
+
|
|
86
|
+
### Autonomous Execution
|
|
87
|
+
|
|
88
|
+
Three safety layers run continuously during AI sessions:
|
|
89
|
+
|
|
90
|
+
- **Security Bouncer**: 2-layer tool approval (pattern matching + Haiku AI) via MCP
|
|
91
|
+
- **Stall Assessor**: heuristic + AI analysis detects stuck processes
|
|
92
|
+
- **Tool Watchdog**: per-tool adaptive timeouts using RFC 6298 EMA, with custom profiles for long-running operations (WebFetch 3m, Bash 5m, Task 15m)
|
|
63
93
|
|
|
64
|
-
|
|
94
|
+
## PM Board
|
|
65
95
|
|
|
66
|
-
|
|
96
|
+
The PM board turns a single prompt into a managed project:
|
|
97
|
+
|
|
98
|
+
1. Describe what you want to build
|
|
99
|
+
2. AI generates a kanban board with prioritized issues
|
|
100
|
+
3. AI agent teams execute issues in parallel on separate git worktrees
|
|
101
|
+
4. Track progress in real time — see each agent's output, status, and artifacts
|
|
102
|
+
5. Review quality before merging
|
|
103
|
+
|
|
104
|
+
Configurable parallel execution (max concurrent agents), custom review criteria per board, and board-scoped artifacts (progress logs, output files, review results).
|
|
105
|
+
|
|
106
|
+
## Quality
|
|
107
|
+
|
|
108
|
+
Quality analysis runs across your codebase:
|
|
109
|
+
|
|
110
|
+
- **Tool detection**: auto-detects linters and analyzers for your ecosystem (Node, Python, Rust, Go, Swift, Kotlin)
|
|
111
|
+
- **Automated scanning**: runs detected tools with progress tracking
|
|
112
|
+
- **AI code review**: Claude reviews code for architecture violations, SOLID principles, security, and performance
|
|
113
|
+
- **Severity scoring**: findings tagged with severity, category, file paths, and line numbers
|
|
114
|
+
- **Automated fixes**: AI can fix identified issues with progress tracking
|
|
115
|
+
|
|
116
|
+
## CLI Reference
|
|
67
117
|
|
|
68
118
|
```bash
|
|
69
|
-
mstro # Start
|
|
70
|
-
mstro login #
|
|
119
|
+
mstro # Start (auto-authenticates)
|
|
120
|
+
mstro login # Authenticate or switch accounts
|
|
71
121
|
mstro logout # Sign out
|
|
72
|
-
mstro whoami # Show
|
|
73
|
-
mstro status # Show connection
|
|
122
|
+
mstro whoami # Show user and device info
|
|
123
|
+
mstro status # Show connection status
|
|
74
124
|
mstro setup-terminal # Enable web terminal (compiles native module)
|
|
75
|
-
mstro telemetry [on|off] #
|
|
125
|
+
mstro telemetry [on|off] # Toggle anonymous telemetry
|
|
76
126
|
```
|
|
77
127
|
|
|
78
128
|
### Options
|
|
79
129
|
|
|
80
|
-
|
|
|
81
|
-
|
|
130
|
+
| Flag | Description |
|
|
131
|
+
|------|-------------|
|
|
82
132
|
| `-p, --port <port>` | Start on a specific port (default: 4101, auto-increments if busy) |
|
|
83
133
|
| `-w, --working-dir <dir>` | Set working directory |
|
|
84
134
|
| `-v, --verbose` | Verbose output |
|
|
@@ -92,67 +142,100 @@ mstro telemetry [on|off] # Show/toggle anonymous telemetry
|
|
|
92
142
|
| Variable | Description |
|
|
93
143
|
|----------|-------------|
|
|
94
144
|
| `PORT` | Override server port |
|
|
95
|
-
| `BOUNCER_USE_AI` |
|
|
96
|
-
| `MSTRO_TELEMETRY` |
|
|
145
|
+
| `BOUNCER_USE_AI` | `false` to disable AI analysis layer |
|
|
146
|
+
| `MSTRO_TELEMETRY` | `0` to disable telemetry |
|
|
97
147
|
|
|
98
148
|
### Config Files
|
|
99
149
|
|
|
100
|
-
|
|
150
|
+
Stored in `~/.mstro/`:
|
|
101
151
|
|
|
102
152
|
| File | Purpose |
|
|
103
153
|
|------|---------|
|
|
104
|
-
|
|
|
154
|
+
| `credentials.json` | Device auth token (created by `mstro login`) |
|
|
155
|
+
| `settings.json` | Model selection, preferences |
|
|
156
|
+
| `session-registry.json` | Tab-to-session mapping |
|
|
105
157
|
|
|
106
|
-
##
|
|
107
|
-
|
|
108
|
-
When you use Claude Code through mstro, you don't need to sit there approving every file write and shell command. The Security Bouncer makes those decisions for you, and it's been tested more rigorously than any human clicking "Allow" ever could be.
|
|
158
|
+
## Architecture
|
|
109
159
|
|
|
110
|
-
|
|
160
|
+
```
|
|
161
|
+
server/
|
|
162
|
+
index.ts # Hono app entry, port detection, WebSocket setup
|
|
163
|
+
services/
|
|
164
|
+
websocket/handler.ts # Main WebSocket message router
|
|
165
|
+
websocket/*-handlers.ts # Domain handlers (session, plan, quality, git, terminal, files)
|
|
166
|
+
plan/executor.ts # PM board execution engine
|
|
167
|
+
plan/composer.ts # AI prompt composition for boards
|
|
168
|
+
plan/review-gate.ts # Quality gates for board execution
|
|
169
|
+
terminal/pty-manager.ts # PTY session management
|
|
170
|
+
platform.ts # WebSocket connection to platform server
|
|
171
|
+
cli/
|
|
172
|
+
headless/runner.ts # Claude Code orchestrator
|
|
173
|
+
headless/stall-assessor.ts # 2-layer stall detection (heuristic + Haiku AI)
|
|
174
|
+
headless/tool-watchdog.ts # Per-tool adaptive timeouts (RFC 6298 EMA)
|
|
175
|
+
improvisation-session-manager.ts # Session orchestration, retry, checkpoints
|
|
176
|
+
mcp/
|
|
177
|
+
server.ts # MCP server (stdio transport)
|
|
178
|
+
bouncer-integration.ts # 2-layer security (patterns + Haiku AI)
|
|
179
|
+
security-patterns.ts # Threat/safe pattern matching
|
|
180
|
+
bin/
|
|
181
|
+
mstro.js # CLI entry point
|
|
182
|
+
commands/ # login, logout, status, whoami, config
|
|
183
|
+
```
|
|
111
184
|
|
|
112
|
-
|
|
185
|
+
### Key Subsystems
|
|
113
186
|
|
|
114
|
-
|
|
187
|
+
- **Headless Runner**: spawns Claude Code processes with MCP bouncer integration, manages lifecycle
|
|
188
|
+
- **Improvisation Session Manager**: session orchestration, retry with context recovery, checkpoint-and-retry on tool timeouts
|
|
189
|
+
- **Security Bouncer**: MCP-integrated 2-layer tool approval (see [SECURITY.md](./SECURITY.md))
|
|
190
|
+
- **PM Board Executor**: parallel board execution with wave-based scheduling and quality gates
|
|
191
|
+
- **PTY Manager**: terminal session management with tmux support and subscriber model
|
|
192
|
+
- **Session Registry**: tab-to-session persistence across WebSocket disconnects
|
|
115
193
|
|
|
116
194
|
## Optional Setup
|
|
117
195
|
|
|
118
196
|
### Web Terminal
|
|
119
197
|
|
|
120
|
-
The
|
|
121
|
-
|
|
122
|
-
On first run, mstro automatically tries to compile the required native module. If your system has build tools, it just works. If not, install them first:
|
|
198
|
+
The terminal tab requires a native module. Mstro tries to compile it automatically on first run. If it fails, install build tools first:
|
|
123
199
|
|
|
124
200
|
- **macOS**: `xcode-select --install`
|
|
125
201
|
- **Linux (Debian/Ubuntu)**: `sudo apt install build-essential python3`
|
|
126
202
|
- **Linux (Fedora/RHEL)**: `sudo dnf install gcc-c++ make python3`
|
|
127
203
|
- **Windows**: `npm install -g windows-build-tools`
|
|
128
204
|
|
|
129
|
-
Then run
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
mstro setup-terminal
|
|
133
|
-
```
|
|
205
|
+
Then run `mstro setup-terminal`.
|
|
134
206
|
|
|
135
207
|
### Persistent Terminals
|
|
136
208
|
|
|
137
|
-
Install [tmux](https://github.com/tmux/tmux) for
|
|
209
|
+
Install [tmux](https://github.com/tmux/tmux) for sessions that survive restarts:
|
|
138
210
|
|
|
139
211
|
```bash
|
|
140
212
|
# macOS
|
|
141
213
|
brew install tmux
|
|
142
|
-
|
|
143
214
|
# Debian/Ubuntu
|
|
144
215
|
sudo apt install tmux
|
|
145
216
|
```
|
|
146
217
|
|
|
147
|
-
##
|
|
218
|
+
## Development
|
|
148
219
|
|
|
149
|
-
|
|
220
|
+
```bash
|
|
221
|
+
cd cli
|
|
222
|
+
npm install
|
|
223
|
+
npm run dev # Dev server with tsx (port 4101)
|
|
224
|
+
npm run test # vitest
|
|
225
|
+
npm run check # tsc + vitest + biome + npm audit
|
|
226
|
+
npm run build # tsc -p tsconfig.build.json
|
|
227
|
+
```
|
|
150
228
|
|
|
151
|
-
|
|
229
|
+
The CLI runs on Node.js with tsx in development (no build step). Hono serves HTTP and WebSocket. Biome handles linting. Published as ESM.
|
|
152
230
|
|
|
153
|
-
|
|
231
|
+
## Troubleshooting
|
|
154
232
|
|
|
155
|
-
|
|
233
|
+
| Problem | Fix |
|
|
234
|
+
|---------|-----|
|
|
235
|
+
| `claude` not found | Install [Claude Code](https://docs.anthropic.com/en/docs/claude-code) and sign in |
|
|
236
|
+
| Port conflict | `mstro -p 4200` or let it auto-increment |
|
|
237
|
+
| Machine not appearing | Run `mstro status` to verify connection |
|
|
238
|
+
| node-pty build fails | Install build tools (see Optional Setup), then `mstro setup-terminal` |
|
|
156
239
|
|
|
157
240
|
## Uninstall
|
|
158
241
|
|
|
@@ -161,20 +244,10 @@ npm uninstall -g mstro-app
|
|
|
161
244
|
rm -rf ~/.mstro
|
|
162
245
|
```
|
|
163
246
|
|
|
164
|
-
## Telemetry and Privacy
|
|
165
|
-
|
|
166
|
-
Mstro collects anonymous error reports and usage data to improve the software. No personal data or code is collected. See [PRIVACY.md](./PRIVACY.md) for details.
|
|
167
|
-
|
|
168
|
-
```bash
|
|
169
|
-
mstro telemetry off # Disable
|
|
170
|
-
mstro telemetry on # Enable
|
|
171
|
-
```
|
|
172
|
-
|
|
173
247
|
## Links
|
|
174
248
|
|
|
175
249
|
- **Web App**: [mstro.app](https://mstro.app)
|
|
176
|
-
- **
|
|
177
|
-
- **Security**: [SECURITY.md](./SECURITY.md) — bouncer architecture, threat model, vulnerability reporting
|
|
250
|
+
- **Security**: [SECURITY.md](./SECURITY.md) - bouncer architecture, threat model, red teaming, vulnerability reporting
|
|
178
251
|
|
|
179
252
|
## License
|
|
180
253
|
|
|
@@ -4,7 +4,7 @@ import type { ExecutionResult, ResolvedHeadlessConfig } from './types.js';
|
|
|
4
4
|
export declare function handleSpawnError(error: NodeJS.ErrnoException, config: ResolvedHeadlessConfig, reject: (reason: Error) => void): void;
|
|
5
5
|
export declare function buildClaudeArgs(config: ResolvedHeadlessConfig, prompt: string, hasImageAttachments: boolean, useStreamJson: boolean, mcpConfigPath: string | null): string[];
|
|
6
6
|
/** Spawn the Claude CLI process and register it */
|
|
7
|
-
export declare function spawnAndRegister(config: ResolvedHeadlessConfig, prompt: string, hasImageAttachments: boolean, useStreamJson: boolean, runningProcesses: Map<number, ChildProcess>, perfStart: number): ChildProcess
|
|
7
|
+
export declare function spawnAndRegister(config: ResolvedHeadlessConfig, prompt: string, hasImageAttachments: boolean, useStreamJson: boolean, runningProcesses: Map<number, ChildProcess>, perfStart: number): Promise<ChildProcess>;
|
|
8
8
|
export declare function buildCloseResult(ctx: StreamHandlerContext, stdout: string, stderr: string, code: number | null, signal: NodeJS.Signals | null, sessionCapture: {
|
|
9
9
|
claudeSessionId?: string;
|
|
10
10
|
}): ExecutionResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-invoker-process.d.ts","sourceRoot":"","sources":["../../../../server/cli/headless/claude-invoker-process.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAKvE,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AA0B1E,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,CAAC,cAAc,EAC5B,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,GAC9B,IAAI,CAYN;AAID,wBAAgB,eAAe,CAC7B,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,OAAO,EAC5B,aAAa,EAAE,OAAO,EACtB,aAAa,EAAE,MAAM,GAAG,IAAI,GAC3B,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"claude-invoker-process.d.ts","sourceRoot":"","sources":["../../../../server/cli/headless/claude-invoker-process.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAKvE,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AA0B1E,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,CAAC,cAAc,EAC5B,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,GAC9B,IAAI,CAYN;AAID,wBAAgB,eAAe,CAC7B,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,OAAO,EAC5B,aAAa,EAAE,OAAO,EACtB,aAAa,EAAE,MAAM,GAAG,IAAI,GAC3B,MAAM,EAAE,CAyCV;AAqBD,mDAAmD;AACnD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,OAAO,EAC5B,aAAa,EAAE,OAAO,EACtB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAC3C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC,CAuCvB;AAID,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,oBAAoB,EACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,EAC7B,cAAc,EAAE;IAAE,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,eAAe,CAoBjB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
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
|
import { spawn } from 'node:child_process';
|
|
4
|
-
import {
|
|
4
|
+
import { randomUUID } from 'node:crypto';
|
|
5
5
|
import { flushNativeTimeoutBuffers, verboseLog } from './claude-invoker-stream.js';
|
|
6
6
|
import { herror } from './headless-logger.js';
|
|
7
7
|
import { generateMcpConfig } from './mcp-config.js';
|
|
@@ -68,10 +68,6 @@ export function buildClaudeArgs(config, prompt, hasImageAttachments, useStreamJs
|
|
|
68
68
|
}
|
|
69
69
|
// Reduce Edit-without-Read errors by reminding the model
|
|
70
70
|
args.push('--append-system-prompt', 'IMPORTANT: Always use the Read tool to read a file before using Edit or Write on it. Never edit a file you have not read in this session.');
|
|
71
|
-
// Sandboxed sessions: restrict all file operations to the working directory
|
|
72
|
-
if (config.sandboxed) {
|
|
73
|
-
args.push('--append-system-prompt', `SECURITY: You are running in sandboxed mode for a shared user. You MUST NOT read, write, list, or access any files or directories outside the working directory (${config.workingDir}). This includes home directories, /etc, /tmp, /proc, and any path that does not start with ${config.workingDir}. If asked to access files outside this boundary, refuse the request and explain that access is restricted to the project directory.`);
|
|
74
|
-
}
|
|
75
71
|
if (!hasImageAttachments) {
|
|
76
72
|
// Strip null bytes — Node.js spawn rejects args containing \0
|
|
77
73
|
args.push(prompt.replaceAll('\0', ''));
|
|
@@ -92,16 +88,14 @@ function writeImageAttachmentsToStdin(claudeProcess, prompt, config) {
|
|
|
92
88
|
}
|
|
93
89
|
// ========== Process Spawning ==========
|
|
94
90
|
/** Spawn the Claude CLI process and register it */
|
|
95
|
-
export function spawnAndRegister(config, prompt, hasImageAttachments, useStreamJson, runningProcesses, perfStart) {
|
|
96
|
-
const mcpConfigPath = generateMcpConfig(config.workingDir, config.verbose);
|
|
91
|
+
export async function spawnAndRegister(config, prompt, hasImageAttachments, useStreamJson, runningProcesses, perfStart) {
|
|
92
|
+
const mcpConfigPath = generateMcpConfig(config.workingDir, config.verbose, prompt, randomUUID());
|
|
97
93
|
if (!mcpConfigPath && config.outputCallback) {
|
|
98
94
|
config.outputCallback('\n[[MSTRO_ERROR:BOUNCER_UNAVAILABLE]] Security bouncer not available. Running with limited permissions — file edits allowed, but shell commands may be restricted.\n');
|
|
99
95
|
}
|
|
100
96
|
const args = buildClaudeArgs(config, prompt, hasImageAttachments, useStreamJson, mcpConfigPath);
|
|
101
97
|
verboseLog(config.verbose, `[PERF] About to spawn: ${Date.now() - perfStart}ms`, `[PERF] Command: ${config.claudeCommand} ${args.join(' ')}`);
|
|
102
|
-
const baseEnv =
|
|
103
|
-
? sanitizeEnvForSandbox(process.env, config.workingDir, { overrideHome: false })
|
|
104
|
-
: { ...process.env };
|
|
98
|
+
const baseEnv = { ...process.env };
|
|
105
99
|
const spawnEnv = config.extraEnv
|
|
106
100
|
? { ...baseEnv, ...config.extraEnv }
|
|
107
101
|
: baseEnv;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-invoker-process.js","sourceRoot":"","sources":["../../../../server/cli/headless/claude-invoker-process.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AAEhE,OAAO,EAAqB,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"claude-invoker-process.js","sourceRoot":"","sources":["../../../../server/cli/headless/claude-invoker-process.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ export async function executeClaudeCommand(prompt, _movementId, _sessionNumber,
|
|
|
16
16
|
verboseLog(config.verbose, '[PERF] executeMovement started');
|
|
17
17
|
const hasImageAttachments = config.imageAttachments && config.imageAttachments.length > 0;
|
|
18
18
|
const useStreamJson = hasImageAttachments || config.thinkingCallback || config.outputCallback || config.toolUseCallback;
|
|
19
|
-
const claudeProcess = spawnAndRegister(config, prompt, !!hasImageAttachments, !!useStreamJson, runningProcesses, perfStart);
|
|
19
|
+
const claudeProcess = await spawnAndRegister(config, prompt, !!hasImageAttachments, !!useStreamJson, runningProcesses, perfStart);
|
|
20
20
|
let stdout = '';
|
|
21
21
|
let stderr = '';
|
|
22
22
|
let thinkingBuffer = '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-invoker.js","sourceRoot":"","sources":["../../../../server/cli/headless/claude-invoker.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AAWhE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAmB,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAA6B,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAChI,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAQxD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAc,EACd,WAAmB,EACnB,cAAsB,EACtB,OAA6B;IAE7B,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,gCAAgC,CAAC,CAAC;IAE7D,MAAM,mBAAmB,GAAG,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1F,MAAM,aAAa,GAAG,mBAAmB,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,eAAe,CAAC;IAExH,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,aAAa,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-invoker.js","sourceRoot":"","sources":["../../../../server/cli/headless/claude-invoker.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,12 @@
|
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
7
|
* Generate MCP config with bouncer + user's MCP servers from ~/.claude.json.
|
|
8
|
-
* Writes to ~/.mstro/mcp-config.json for use with --mcp-config flag.
|
|
8
|
+
* Writes to ~/.mstro/mcp-config-{sessionId}.json for use with --mcp-config flag.
|
|
9
|
+
* Per-session files prevent concurrent sessions from overwriting each other's config.
|
|
10
|
+
*
|
|
11
|
+
* @param userPrompt — The user's original prompt, passed to the bouncer so its
|
|
12
|
+
* AI layer can distinguish user-requested operations from prompt injection.
|
|
13
|
+
* @param sessionId — Unique session identifier for per-session config isolation.
|
|
9
14
|
*/
|
|
10
|
-
export declare function generateMcpConfig(workingDir: string, verbose?: boolean): string | null;
|
|
15
|
+
export declare function generateMcpConfig(workingDir: string, verbose?: boolean, userPrompt?: string, sessionId?: string): string | null;
|
|
11
16
|
//# sourceMappingURL=mcp-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../../../../server/cli/headless/mcp-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../../../../server/cli/headless/mcp-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwDH;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA6CtI"}
|
|
@@ -39,22 +39,45 @@ function loadUserMcpServers(workingDir, verbose) {
|
|
|
39
39
|
}
|
|
40
40
|
return servers;
|
|
41
41
|
}
|
|
42
|
+
/** Max length for user prompt passed to bouncer (prevents env var size issues). */
|
|
43
|
+
const MAX_USER_PROMPT_LENGTH = 4000;
|
|
44
|
+
/** Truncate prompt at a word boundary and append a marker so the bouncer knows it's incomplete. */
|
|
45
|
+
function truncatePrompt(prompt) {
|
|
46
|
+
const truncated = prompt.slice(0, MAX_USER_PROMPT_LENGTH);
|
|
47
|
+
const lastSpace = truncated.lastIndexOf(' ');
|
|
48
|
+
const clean = lastSpace > MAX_USER_PROMPT_LENGTH * 0.8 ? truncated.slice(0, lastSpace) : truncated;
|
|
49
|
+
return `${clean}... [truncated]`;
|
|
50
|
+
}
|
|
42
51
|
/**
|
|
43
52
|
* Generate MCP config with bouncer + user's MCP servers from ~/.claude.json.
|
|
44
|
-
* Writes to ~/.mstro/mcp-config.json for use with --mcp-config flag.
|
|
53
|
+
* Writes to ~/.mstro/mcp-config-{sessionId}.json for use with --mcp-config flag.
|
|
54
|
+
* Per-session files prevent concurrent sessions from overwriting each other's config.
|
|
55
|
+
*
|
|
56
|
+
* @param userPrompt — The user's original prompt, passed to the bouncer so its
|
|
57
|
+
* AI layer can distinguish user-requested operations from prompt injection.
|
|
58
|
+
* @param sessionId — Unique session identifier for per-session config isolation.
|
|
45
59
|
*/
|
|
46
|
-
export function generateMcpConfig(workingDir, verbose = false) {
|
|
60
|
+
export function generateMcpConfig(workingDir, verbose = false, userPrompt, sessionId) {
|
|
47
61
|
try {
|
|
48
62
|
if (!existsSync(MCP_SERVER_PATH)) {
|
|
49
63
|
herror(`[${new Date().toISOString()}] MCP server not found at ${MCP_SERVER_PATH}`);
|
|
50
64
|
return null;
|
|
51
65
|
}
|
|
66
|
+
const bouncerEnv = {
|
|
67
|
+
BOUNCER_USE_AI: 'true',
|
|
68
|
+
MSTRO_ROOT: MSTRO_ROOT,
|
|
69
|
+
};
|
|
70
|
+
if (userPrompt) {
|
|
71
|
+
bouncerEnv.BOUNCER_USER_PROMPT = userPrompt.length > MAX_USER_PROMPT_LENGTH
|
|
72
|
+
? truncatePrompt(userPrompt)
|
|
73
|
+
: userPrompt;
|
|
74
|
+
}
|
|
52
75
|
const mcpServers = {
|
|
53
76
|
'mstro-bouncer': {
|
|
54
77
|
command: 'npx',
|
|
55
78
|
args: ['tsx', MCP_SERVER_PATH],
|
|
56
79
|
description: 'Mstro security bouncer for approving/denying Claude Code tool use',
|
|
57
|
-
env:
|
|
80
|
+
env: bouncerEnv,
|
|
58
81
|
},
|
|
59
82
|
...loadUserMcpServers(workingDir, verbose)
|
|
60
83
|
};
|
|
@@ -62,7 +85,8 @@ export function generateMcpConfig(workingDir, verbose = false) {
|
|
|
62
85
|
if (!existsSync(configDir)) {
|
|
63
86
|
mkdirSync(configDir, { recursive: true });
|
|
64
87
|
}
|
|
65
|
-
const
|
|
88
|
+
const configFileName = sessionId ? `mcp-config-${sessionId}.json` : 'mcp-config.json';
|
|
89
|
+
const configPath = join(configDir, configFileName);
|
|
66
90
|
writeFileSync(configPath, JSON.stringify({ mcpServers }, null, 2));
|
|
67
91
|
if (verbose) {
|
|
68
92
|
hlog(`[${new Date().toISOString()}] Generated MCP config at ${configPath} (${Object.keys(mcpServers).length} servers)`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../../../server/cli/headless/mcp-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;GAEG;AACH,SAAS,kBAAkB,CAAC,UAAkB,EAAE,OAAgB;IAC9D,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;IAEzD,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;QAEzE,IAAI,YAAY,CAAC,UAAU,IAAI,OAAO,YAAY,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC3E,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,YAAY,CAAC,QAAQ,IAAI,OAAO,YAAY,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACvE,KAAK,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjF,MAAM,cAAc,GAAI,aAAyC,EAAE,UAAU,CAAC;gBAC9E,IAAI,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;oBAC7E,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,uCAAuC,CAAC,CAAC;QACnH,CAAC;IACH,CAAC;IAAC,OAAO,UAAmB,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,qCAAqC,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACnJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../../../server/cli/headless/mcp-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../server/cli/headless/runner.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,cAAc,EAGd,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtJ;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAO1E;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,gBAAgB,CAAwC;gBAEpD,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../server/cli/headless/runner.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,cAAc,EAGd,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtJ;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAO1E;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,gBAAgB,CAAwC;gBAEpD,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC;IAiC3C;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;IAcnC;;OAEG;YACW,eAAe;IAkF7B;;OAEG;YACW,oBAAoB;IAalC;;OAEG;IACH,OAAO,IAAI,IAAI;IAoBf;;;OAGG;IACH,YAAY,IAAI,MAAM;CAUvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../server/cli/headless/runner.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AAUhE,OAAO,EAA6B,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAW5D;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,MAAsB;IAClE,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,IAAI,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,MAAM,OAAO,cAAc;IACjB,MAAM,CAAyB;IAC/B,gBAAgB,GAA8B,IAAI,GAAG,EAAE,CAAC;IAEhE,YAAY,MAA+B;QACzC,IAAI,CAAC,MAAM,GAAG;YACZ,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE;YAC9C,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,IAAI,MAAM;YAC3D,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;YACrC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;YAClC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,QAAQ;YAC7E,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;YACzB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;YACzB,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB;YAC7C,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,CAAC;YAC1C,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;YACvC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE,oBAAoB,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;YACtF,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,OAAO;YAChD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;YAC5C,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,KAAK,KAAK;YACvD,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,CAAC;YAClD,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,SAAS;YAClD,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,KAAK,KAAK;YACvD,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,CAAC;YAC1C,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../server/cli/headless/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -111,8 +111,6 @@ export interface HeadlessConfig {
|
|
|
111
111
|
maxAutoRetries?: number;
|
|
112
112
|
/** Called when a tool times out with checkpoint data */
|
|
113
113
|
onToolTimeout?: (checkpoint: ExecutionCheckpoint) => void;
|
|
114
|
-
/** When true, spawn Claude with sanitized env (strips secrets, HOME=workingDir) */
|
|
115
|
-
sandboxed?: boolean;
|
|
116
114
|
/** Extra environment variables to merge into the spawned Claude process env */
|
|
117
115
|
extraEnv?: Record<string, string>;
|
|
118
116
|
/** Tools to disallow in the spawned Claude session (passed as --disallowedTools) */
|
|
@@ -200,7 +198,7 @@ export interface ExecutionResult {
|
|
|
200
198
|
stopReason?: string;
|
|
201
199
|
}
|
|
202
200
|
/** Resolved config with all defaults applied */
|
|
203
|
-
export type ResolvedHeadlessConfig = Omit<Required<HeadlessConfig>, 'outputCallback' | 'thinkingCallback' | 'toolUseCallback' | 'tokenUsageCallback' | 'continueSession' | 'claudeSessionId' | 'imageAttachments' | 'model' | 'toolTimeoutProfiles' | 'onToolTimeout' | '
|
|
201
|
+
export type ResolvedHeadlessConfig = Omit<Required<HeadlessConfig>, 'outputCallback' | 'thinkingCallback' | 'toolUseCallback' | 'tokenUsageCallback' | 'continueSession' | 'claudeSessionId' | 'imageAttachments' | 'model' | 'toolTimeoutProfiles' | 'onToolTimeout' | 'extraEnv' | 'disallowedTools'> & {
|
|
204
202
|
outputCallback?: (text: string) => void;
|
|
205
203
|
thinkingCallback?: (text: string) => void;
|
|
206
204
|
toolUseCallback?: (event: ToolUseEvent) => void;
|
|
@@ -214,7 +212,6 @@ export type ResolvedHeadlessConfig = Omit<Required<HeadlessConfig>, 'outputCallb
|
|
|
214
212
|
model?: string;
|
|
215
213
|
toolTimeoutProfiles?: Record<string, Partial<ToolTimeoutProfile>>;
|
|
216
214
|
onToolTimeout?: (checkpoint: ExecutionCheckpoint) => void;
|
|
217
|
-
sandboxed?: boolean;
|
|
218
215
|
extraEnv?: Record<string, string>;
|
|
219
216
|
disallowedTools?: string[];
|
|
220
217
|
};
|