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.
- package/PRIVACY.md +126 -0
- package/README.md +24 -23
- package/bin/commands/login.js +85 -42
- package/bin/commands/logout.js +35 -1
- package/bin/commands/status.js +1 -1
- package/bin/mstro.js +231 -131
- package/dist/server/cli/headless/claude-invoker.d.ts.map +1 -1
- package/dist/server/cli/headless/claude-invoker.js +550 -115
- package/dist/server/cli/headless/claude-invoker.js.map +1 -1
- package/dist/server/cli/headless/index.d.ts +2 -1
- package/dist/server/cli/headless/index.d.ts.map +1 -1
- package/dist/server/cli/headless/index.js +2 -0
- package/dist/server/cli/headless/index.js.map +1 -1
- package/dist/server/cli/headless/prompt-utils.d.ts +5 -8
- package/dist/server/cli/headless/prompt-utils.d.ts.map +1 -1
- package/dist/server/cli/headless/prompt-utils.js +40 -5
- package/dist/server/cli/headless/prompt-utils.js.map +1 -1
- package/dist/server/cli/headless/runner.d.ts +1 -1
- package/dist/server/cli/headless/runner.d.ts.map +1 -1
- package/dist/server/cli/headless/runner.js +52 -7
- package/dist/server/cli/headless/runner.js.map +1 -1
- package/dist/server/cli/headless/stall-assessor.d.ts +79 -1
- package/dist/server/cli/headless/stall-assessor.d.ts.map +1 -1
- package/dist/server/cli/headless/stall-assessor.js +355 -20
- package/dist/server/cli/headless/stall-assessor.js.map +1 -1
- package/dist/server/cli/headless/tool-watchdog.d.ts +70 -0
- package/dist/server/cli/headless/tool-watchdog.d.ts.map +1 -0
- package/dist/server/cli/headless/tool-watchdog.js +302 -0
- package/dist/server/cli/headless/tool-watchdog.js.map +1 -0
- package/dist/server/cli/headless/types.d.ts +98 -1
- package/dist/server/cli/headless/types.d.ts.map +1 -1
- package/dist/server/cli/improvisation-session-manager.d.ts +136 -2
- package/dist/server/cli/improvisation-session-manager.d.ts.map +1 -1
- package/dist/server/cli/improvisation-session-manager.js +929 -132
- package/dist/server/cli/improvisation-session-manager.js.map +1 -1
- package/dist/server/index.js +5 -13
- package/dist/server/index.js.map +1 -1
- package/dist/server/mcp/bouncer-integration.d.ts.map +1 -1
- package/dist/server/mcp/bouncer-integration.js +18 -0
- package/dist/server/mcp/bouncer-integration.js.map +1 -1
- package/dist/server/mcp/security-audit.d.ts +2 -2
- package/dist/server/mcp/security-audit.d.ts.map +1 -1
- package/dist/server/mcp/security-audit.js +12 -8
- package/dist/server/mcp/security-audit.js.map +1 -1
- package/dist/server/mcp/security-patterns.d.ts.map +1 -1
- package/dist/server/mcp/security-patterns.js +9 -4
- package/dist/server/mcp/security-patterns.js.map +1 -1
- package/dist/server/routes/improvise.js +6 -6
- package/dist/server/routes/improvise.js.map +1 -1
- package/dist/server/services/analytics.d.ts +2 -0
- package/dist/server/services/analytics.d.ts.map +1 -1
- package/dist/server/services/analytics.js +26 -4
- package/dist/server/services/analytics.js.map +1 -1
- package/dist/server/services/platform.d.ts.map +1 -1
- package/dist/server/services/platform.js +17 -10
- package/dist/server/services/platform.js.map +1 -1
- package/dist/server/services/sandbox-utils.d.ts +6 -0
- package/dist/server/services/sandbox-utils.d.ts.map +1 -0
- package/dist/server/services/sandbox-utils.js +72 -0
- package/dist/server/services/sandbox-utils.js.map +1 -0
- package/dist/server/services/settings.d.ts +6 -0
- package/dist/server/services/settings.d.ts.map +1 -1
- package/dist/server/services/settings.js +21 -0
- package/dist/server/services/settings.js.map +1 -1
- package/dist/server/services/terminal/pty-manager.d.ts +5 -51
- package/dist/server/services/terminal/pty-manager.d.ts.map +1 -1
- package/dist/server/services/terminal/pty-manager.js +63 -102
- package/dist/server/services/terminal/pty-manager.js.map +1 -1
- package/dist/server/services/websocket/file-explorer-handlers.d.ts +5 -0
- package/dist/server/services/websocket/file-explorer-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/file-explorer-handlers.js +518 -0
- package/dist/server/services/websocket/file-explorer-handlers.js.map +1 -0
- package/dist/server/services/websocket/git-handlers.d.ts +36 -0
- package/dist/server/services/websocket/git-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/git-handlers.js +797 -0
- package/dist/server/services/websocket/git-handlers.js.map +1 -0
- package/dist/server/services/websocket/git-pr-handlers.d.ts +4 -0
- package/dist/server/services/websocket/git-pr-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/git-pr-handlers.js +299 -0
- package/dist/server/services/websocket/git-pr-handlers.js.map +1 -0
- package/dist/server/services/websocket/git-worktree-handlers.d.ts +4 -0
- package/dist/server/services/websocket/git-worktree-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/git-worktree-handlers.js +353 -0
- package/dist/server/services/websocket/git-worktree-handlers.js.map +1 -0
- package/dist/server/services/websocket/handler-context.d.ts +32 -0
- package/dist/server/services/websocket/handler-context.d.ts.map +1 -0
- package/dist/server/services/websocket/handler-context.js +4 -0
- package/dist/server/services/websocket/handler-context.js.map +1 -0
- package/dist/server/services/websocket/handler.d.ts +27 -338
- package/dist/server/services/websocket/handler.d.ts.map +1 -1
- package/dist/server/services/websocket/handler.js +74 -2106
- package/dist/server/services/websocket/handler.js.map +1 -1
- package/dist/server/services/websocket/index.d.ts +1 -1
- package/dist/server/services/websocket/index.d.ts.map +1 -1
- package/dist/server/services/websocket/index.js.map +1 -1
- package/dist/server/services/websocket/session-handlers.d.ts +10 -0
- package/dist/server/services/websocket/session-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/session-handlers.js +507 -0
- package/dist/server/services/websocket/session-handlers.js.map +1 -0
- package/dist/server/services/websocket/settings-handlers.d.ts +6 -0
- package/dist/server/services/websocket/settings-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/settings-handlers.js +125 -0
- package/dist/server/services/websocket/settings-handlers.js.map +1 -0
- package/dist/server/services/websocket/tab-handlers.d.ts +10 -0
- package/dist/server/services/websocket/tab-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/tab-handlers.js +131 -0
- package/dist/server/services/websocket/tab-handlers.js.map +1 -0
- package/dist/server/services/websocket/terminal-handlers.d.ts +9 -0
- package/dist/server/services/websocket/terminal-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/terminal-handlers.js +220 -0
- package/dist/server/services/websocket/terminal-handlers.js.map +1 -0
- package/dist/server/services/websocket/types.d.ts +67 -2
- package/dist/server/services/websocket/types.d.ts.map +1 -1
- package/hooks/bouncer.sh +11 -4
- package/package.json +7 -2
- package/server/README.md +176 -159
- package/server/cli/headless/claude-invoker.ts +740 -133
- package/server/cli/headless/index.ts +7 -1
- package/server/cli/headless/output-utils.test.ts +225 -0
- package/server/cli/headless/prompt-utils.ts +37 -5
- package/server/cli/headless/runner.ts +55 -8
- package/server/cli/headless/stall-assessor.test.ts +165 -0
- package/server/cli/headless/stall-assessor.ts +478 -22
- package/server/cli/headless/tool-watchdog.test.ts +429 -0
- package/server/cli/headless/tool-watchdog.ts +398 -0
- package/server/cli/headless/types.ts +93 -1
- package/server/cli/improvisation-session-manager.ts +1133 -145
- package/server/index.ts +5 -14
- package/server/mcp/README.md +59 -67
- package/server/mcp/bouncer-integration.test.ts +161 -0
- package/server/mcp/bouncer-integration.ts +28 -0
- package/server/mcp/security-audit.ts +12 -8
- package/server/mcp/security-patterns.test.ts +258 -0
- package/server/mcp/security-patterns.ts +8 -2
- package/server/routes/improvise.ts +6 -6
- package/server/services/analytics.ts +26 -4
- package/server/services/platform.test.ts +0 -10
- package/server/services/platform.ts +16 -11
- package/server/services/sandbox-utils.ts +78 -0
- package/server/services/settings.ts +25 -0
- package/server/services/terminal/pty-manager.ts +68 -129
- package/server/services/websocket/autocomplete.test.ts +194 -0
- package/server/services/websocket/file-explorer-handlers.ts +587 -0
- package/server/services/websocket/git-handlers.ts +924 -0
- package/server/services/websocket/git-pr-handlers.ts +363 -0
- package/server/services/websocket/git-worktree-handlers.ts +403 -0
- package/server/services/websocket/handler-context.ts +44 -0
- package/server/services/websocket/handler.test.ts +1 -1
- package/server/services/websocket/handler.ts +90 -2421
- package/server/services/websocket/index.ts +1 -1
- package/server/services/websocket/session-handlers.ts +574 -0
- package/server/services/websocket/settings-handlers.ts +150 -0
- package/server/services/websocket/tab-handlers.ts +150 -0
- package/server/services/websocket/terminal-handlers.ts +277 -0
- package/server/services/websocket/types.ts +145 -4
- package/bin/release.sh +0 -110
- package/dist/server/services/terminal/tmux-manager.d.ts +0 -82
- package/dist/server/services/terminal/tmux-manager.d.ts.map +0 -1
- package/dist/server/services/terminal/tmux-manager.js +0 -352
- package/dist/server/services/terminal/tmux-manager.js.map +0 -1
- package/server/services/terminal/tmux-manager.ts +0 -426
|
@@ -42,6 +42,8 @@ export interface MovementRecord {
|
|
|
42
42
|
thinkingOutput?: string;
|
|
43
43
|
toolUseHistory?: ToolUseRecord[];
|
|
44
44
|
errorOutput?: string;
|
|
45
|
+
durationMs?: number;
|
|
46
|
+
retryLog?: RetryLogEntry[];
|
|
45
47
|
}
|
|
46
48
|
export interface SessionHistory {
|
|
47
49
|
sessionId: string;
|
|
@@ -51,6 +53,14 @@ export interface SessionHistory {
|
|
|
51
53
|
movements: MovementRecord[];
|
|
52
54
|
claudeSessionId?: string;
|
|
53
55
|
}
|
|
56
|
+
/** Entry in the retry log for debugging recovery paths */
|
|
57
|
+
interface RetryLogEntry {
|
|
58
|
+
retryNumber: number;
|
|
59
|
+
path: string;
|
|
60
|
+
reason: string;
|
|
61
|
+
timestamp: number;
|
|
62
|
+
durationMs?: number;
|
|
63
|
+
}
|
|
54
64
|
export declare class ImprovisationSessionManager extends EventEmitter {
|
|
55
65
|
private sessionId;
|
|
56
66
|
private improviseDir;
|
|
@@ -67,8 +77,12 @@ export declare class ImprovisationSessionManager extends EventEmitter {
|
|
|
67
77
|
accumulatedKnowledge: string;
|
|
68
78
|
/** Whether a prompt is currently executing */
|
|
69
79
|
private _isExecuting;
|
|
80
|
+
/** Timestamp when current execution started (for accurate elapsed time across reconnects) */
|
|
81
|
+
private _executionStartTimestamp;
|
|
70
82
|
/** Buffered events during current execution, for replay on reconnect */
|
|
71
83
|
private executionEventLog;
|
|
84
|
+
/** Set by cancel() to signal the retry loop to exit */
|
|
85
|
+
private _cancelled;
|
|
72
86
|
/**
|
|
73
87
|
* Resume from a historical session.
|
|
74
88
|
* Creates a new session manager that continues the conversation from a previous session.
|
|
@@ -89,23 +103,138 @@ export declare class ImprovisationSessionManager extends EventEmitter {
|
|
|
89
103
|
*/
|
|
90
104
|
private flushOutputQueue;
|
|
91
105
|
/**
|
|
92
|
-
* Build prompt with text file attachments prepended
|
|
106
|
+
* Build prompt with text file attachments prepended and disk path references
|
|
93
107
|
* Format: each text file is shown as @path followed by content in code block
|
|
94
108
|
*/
|
|
95
109
|
private buildPromptWithAttachments;
|
|
110
|
+
/**
|
|
111
|
+
* Write attachments to disk at .mstro/tmp/attachments/{sessionId}/
|
|
112
|
+
* Returns array of absolute file paths for each persisted attachment.
|
|
113
|
+
*/
|
|
114
|
+
private persistAttachments;
|
|
115
|
+
/**
|
|
116
|
+
* Clean up persisted attachments for this session
|
|
117
|
+
*/
|
|
118
|
+
private cleanupAttachments;
|
|
96
119
|
/**
|
|
97
120
|
* Execute a user prompt directly (Improvise mode - no score decomposition)
|
|
98
121
|
* Uses persistent Claude sessions via --resume <sessionId> for conversation continuity
|
|
99
122
|
* Each tab maintains its own claudeSessionId for proper isolation
|
|
100
123
|
* Supports file attachments: text files prepended to prompt, images via stream-json multimodal
|
|
101
124
|
*/
|
|
102
|
-
executePrompt(userPrompt: string, attachments?: FileAttachment[]
|
|
125
|
+
executePrompt(userPrompt: string, attachments?: FileAttachment[], options?: {
|
|
126
|
+
sandboxed?: boolean;
|
|
127
|
+
workingDir?: string;
|
|
128
|
+
}): Promise<MovementRecord>;
|
|
129
|
+
private handleCancelledExecution;
|
|
130
|
+
private runRetryLoop;
|
|
131
|
+
/** Prepare prompt with attachments and limit image count */
|
|
132
|
+
private preparePromptAndAttachments;
|
|
133
|
+
/** Determine whether to use --resume and which session ID */
|
|
134
|
+
private determineResumeStrategy;
|
|
135
|
+
/** Create HeadlessRunner for one retry iteration */
|
|
136
|
+
private createExecutionRunner;
|
|
137
|
+
/** Save checkpoint and reset per-iteration state before each retry loop pass. */
|
|
138
|
+
private resetIterationState;
|
|
139
|
+
/** Update best result tracking */
|
|
140
|
+
private updateBestResult;
|
|
141
|
+
/** Detect resume context loss (Path 1): session expired on --resume */
|
|
142
|
+
private detectResumeContextLoss;
|
|
143
|
+
/** Detect native timeout context loss (Path 2): tool timeouts caused confusion */
|
|
144
|
+
private detectNativeTimeoutContextLoss;
|
|
145
|
+
/** Flush post-timeout output if context wasn't lost */
|
|
146
|
+
private flushPostTimeoutOutput;
|
|
147
|
+
/** Check if context loss recovery should trigger a retry. Returns true if loop should continue. */
|
|
148
|
+
private shouldRetryContextLoss;
|
|
149
|
+
/** Accumulate completed tool results from a run into the retry state.
|
|
150
|
+
* Caps at MAX_ACCUMULATED_RESULTS to prevent recovery prompts from exceeding context limits.
|
|
151
|
+
* When the cap is reached, older results are evicted (FIFO) to make room for newer ones. */
|
|
152
|
+
private static readonly MAX_ACCUMULATED_RESULTS;
|
|
153
|
+
private accumulateToolResults;
|
|
154
|
+
/** Handle inter-movement context loss recovery (resume session expired) */
|
|
155
|
+
private applyInterMovementRecovery;
|
|
156
|
+
/** Handle native-timeout context loss recovery (tool timeouts caused confusion) */
|
|
157
|
+
private applyNativeTimeoutRecovery;
|
|
158
|
+
/** Handle tool timeout checkpoint. Returns true if loop should continue. */
|
|
159
|
+
private applyToolTimeoutRetry;
|
|
160
|
+
/**
|
|
161
|
+
* Detect and retry after a signal crash (e.g., SIGTERM exit code 143).
|
|
162
|
+
* When the Claude process is killed externally (OOM, system signal, internal timeout
|
|
163
|
+
* that bypasses our watchdog), no existing recovery path catches it because contextLost
|
|
164
|
+
* is never set and no checkpoint is created. This adds a dedicated recovery path.
|
|
165
|
+
*/
|
|
166
|
+
private shouldRetrySignalCrash;
|
|
167
|
+
/** Build a recovery prompt after signal crash */
|
|
168
|
+
private buildSignalCrashRecoveryPrompt;
|
|
169
|
+
/** Select the best result across retries using Haiku assessment */
|
|
170
|
+
private selectBestResult;
|
|
171
|
+
/** Fallback best result selection using numeric scoring */
|
|
172
|
+
private fallbackBestResult;
|
|
173
|
+
/** Replace a result's claudeSessionId with a newer one */
|
|
174
|
+
private mergeResultSessionId;
|
|
175
|
+
/** Capture Claude session ID and surface execution failures */
|
|
176
|
+
private captureSessionAndSurfaceErrors;
|
|
177
|
+
/** Build a MovementRecord from execution result */
|
|
178
|
+
private buildMovementRecord;
|
|
179
|
+
/** Handle file conflicts from execution result */
|
|
180
|
+
private handleConflicts;
|
|
181
|
+
/** Persist movement to history */
|
|
182
|
+
private persistMovement;
|
|
183
|
+
/** Emit movement completion events and analytics */
|
|
184
|
+
private emitMovementComplete;
|
|
103
185
|
/**
|
|
104
186
|
* Build historical context for resuming a session.
|
|
105
187
|
* This creates a summary of the previous conversation that will be injected
|
|
106
188
|
* into the first prompt of a resumed session.
|
|
107
189
|
*/
|
|
108
190
|
private buildHistoricalContext;
|
|
191
|
+
/**
|
|
192
|
+
* Build a retry prompt from a tool timeout checkpoint.
|
|
193
|
+
* Injects completed tool results and instructs Claude to skip the failed resource.
|
|
194
|
+
*/
|
|
195
|
+
private buildRetryPrompt;
|
|
196
|
+
/**
|
|
197
|
+
* Build a short retry prompt for --resume sessions.
|
|
198
|
+
* The session already has full conversation context, so we only need to
|
|
199
|
+
* explain what timed out and instruct Claude to continue.
|
|
200
|
+
*/
|
|
201
|
+
private buildResumeRetryPrompt;
|
|
202
|
+
/**
|
|
203
|
+
* Build a recovery prompt for --resume after context loss.
|
|
204
|
+
* Since we're resuming the same session, Claude has full conversation history
|
|
205
|
+
* (including all preserved tool results). We just need to redirect it back to the task.
|
|
206
|
+
*/
|
|
207
|
+
private buildContextRecoveryPrompt;
|
|
208
|
+
/**
|
|
209
|
+
* Build a recovery prompt for a fresh session (no --resume) after repeated context loss.
|
|
210
|
+
* Injects all accumulated tool results from previous attempts so Claude can continue
|
|
211
|
+
* the task without re-fetching data it already gathered.
|
|
212
|
+
*/
|
|
213
|
+
private buildFreshRecoveryPrompt;
|
|
214
|
+
/**
|
|
215
|
+
* Extract tool results from the last N movements in history.
|
|
216
|
+
* Used for inter-movement recovery to provide context from prior work
|
|
217
|
+
* when a resume session is corrupted/expired.
|
|
218
|
+
*/
|
|
219
|
+
private extractHistoricalToolResults;
|
|
220
|
+
/**
|
|
221
|
+
* Build a recovery prompt for inter-movement context loss.
|
|
222
|
+
* The Claude session expired between movements (not due to native timeouts).
|
|
223
|
+
* Includes prior conversation summary + preserved tool results + anti-timeout guidance.
|
|
224
|
+
*/
|
|
225
|
+
private buildInterMovementRecoveryPrompt;
|
|
226
|
+
/** Summarize a tool input for display in retry prompts */
|
|
227
|
+
private summarizeToolInput;
|
|
228
|
+
/** Format a list of timed-out tools for retry prompts */
|
|
229
|
+
private formatTimedOutTools;
|
|
230
|
+
/** Format completed checkpoint tools for retry prompts */
|
|
231
|
+
private formatCompletedTools;
|
|
232
|
+
/** Format in-progress tools for retry prompts */
|
|
233
|
+
private formatInProgressTools;
|
|
234
|
+
/** Format tool results from ToolUseRecord[] for recovery prompts */
|
|
235
|
+
private formatToolResults;
|
|
236
|
+
/** Format conversation history for recovery prompts */
|
|
237
|
+
private formatConversationHistory;
|
|
109
238
|
/**
|
|
110
239
|
* Load history from disk
|
|
111
240
|
*/
|
|
@@ -155,6 +284,10 @@ export declare class ImprovisationSessionManager extends EventEmitter {
|
|
|
155
284
|
* Whether a prompt is currently executing
|
|
156
285
|
*/
|
|
157
286
|
get isExecuting(): boolean;
|
|
287
|
+
/**
|
|
288
|
+
* Timestamp when current execution started (undefined when not executing)
|
|
289
|
+
*/
|
|
290
|
+
get executionStartTimestamp(): number | undefined;
|
|
158
291
|
/**
|
|
159
292
|
* Get buffered execution events for replay on reconnect.
|
|
160
293
|
* Only meaningful while isExecuting is true.
|
|
@@ -171,4 +304,5 @@ export declare class ImprovisationSessionManager extends EventEmitter {
|
|
|
171
304
|
*/
|
|
172
305
|
startNewSession(overrides?: Partial<ImprovisationOptions>): ImprovisationSessionManager;
|
|
173
306
|
}
|
|
307
|
+
export {};
|
|
174
308
|
//# sourceMappingURL=improvisation-session-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"improvisation-session-manager.d.ts","sourceRoot":"","sources":["../../../server/cli/improvisation-session-manager.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"improvisation-session-manager.d.ts","sourceRoot":"","sources":["../../../server/cli/improvisation-session-manager.ts"],"names":[],"mappings":"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"}
|