} catch (error) { this._emit({ type: "auto_compaction_end", result: undefined, aborted: false, willRetry: false });
if (reason === "overflow") { throw new Error( `Context overflow: ${error instanceof Error ? error.message : "compaction failed"}. Your input may be too large for the context window.`, ); }}} catch (error) { const errorMessage = error instanceof Error ? error.message : "compaction failed"; this._emit({ type: "auto_compaction_end", result: undefined, aborted: false, willRetry: false });
// Don't throw - emit the error for UI to display // The session remains usable (user can switch models, wait for quota, etc.) if (this._extensionRunner) { this._extensionRunner.emitError({ extensionPath: "auto_compaction", event: "compact", error: reason === "overflow" ? `Context overflow recovery failed: ${errorMessage}` : `Auto-compaction failed: ${errorMessage}`, }); } // For overflow case, the error message was already shown to user // Don't crash - let user decide what to do (switch model, wait, etc.)} // Don't throw - emit the error for UI to display // The session remains usable (user can switch models, wait for quota, etc.) if (this._extensionRunner) { this._extensionRunner.emitError({ extensionPath: "auto_compaction", event: "compact", error: reason === "overflow" ? `Context overflow recovery failed: ${errorMessage}` : `Auto-compaction failed: ${errorMessage}`, }); }// Current handling in interactive-mode.ts:if (event.aborted) { this.showStatus("Auto-compaction cancelled");} else if (event.result) { // ... show success}// Missing: else case for error!| { type: "auto_compaction_end"; result: CompactionResult | undefined; aborted: boolean; willRetry: boolean; errorMessage?: string }} catch (error) { const errorMessage = error instanceof Error ? error.message : "compaction failed"; this._emit({ type: "auto_compaction_end", result: undefined, aborted: false, willRetry: false, errorMessage: reason === "overflow" ? `Context overflow recovery failed: ${errorMessage}` : `Auto-compaction failed: ${errorMessage}`, }); // Don't throw - let UI handle the error display}} else if (event.errorMessage) { this.showStatus(event.errorMessage, "error");}session.subscribe((event) => { output(event);});