()
| 560 | // ========================================================================== |
| 561 | |
| 562 | async dispose(): Promise<void> { |
| 563 | // Clear managers. |
| 564 | this.outputManager.clear() |
| 565 | this.askDispatcher.clear() |
| 566 | |
| 567 | // Remove message listener. |
| 568 | if (this.messageListener) { |
| 569 | this.off("extensionWebviewMessage", this.messageListener) |
| 570 | this.messageListener = null |
| 571 | } |
| 572 | |
| 573 | // Reset client. |
| 574 | this.client.reset() |
| 575 | |
| 576 | // Deactivate extension. |
| 577 | if (this.extensionModule?.deactivate) { |
| 578 | try { |
| 579 | await this.extensionModule.deactivate() |
| 580 | } catch { |
| 581 | // NO-OP |
| 582 | } |
| 583 | } |
| 584 | |
| 585 | // Clear references. |
| 586 | this.vscode = null |
| 587 | this.extensionModule = null |
| 588 | this.extensionAPI = null |
| 589 | |
| 590 | // Clear globals. |
| 591 | delete (global as Record<string, unknown>).vscode |
| 592 | delete (global as Record<string, unknown>).__extensionHost |
| 593 | |
| 594 | // Restore console. |
| 595 | this.restoreConsole() |
| 596 | |
| 597 | // Clean up ephemeral storage. |
| 598 | if (this.ephemeralStorageDir) { |
| 599 | try { |
| 600 | await fs.promises.rm(this.ephemeralStorageDir, { recursive: true, force: true }) |
| 601 | this.ephemeralStorageDir = null |
| 602 | } catch { |
| 603 | // NO-OP |
| 604 | } |
| 605 | } |
| 606 | |
| 607 | // Restore previous CLI runtime marker for process hygiene in tests. |
| 608 | if (this.previousCliRuntimeEnv === undefined) { |
| 609 | delete process.env.ROO_CLI_RUNTIME |
| 610 | } else { |
| 611 | process.env.ROO_CLI_RUNTIME = this.previousCliRuntimeEnv |
| 612 | } |
| 613 | } |
| 614 | } |
nothing calls this directly
no test coverage detected