Download packages/coding-agent/src/cli/config-selector.ts from SaylorTwift/pi: direct link, hf CLI and curl.
- Browser
- Download file 1.67 kB
-
https://huggingface.co/SaylorTwift/pi/resolve/main/packages/coding-agent/src/cli/config-selector.ts
- Command line
-
hf download hf://SaylorTwift/pi/packages/coding-agent/src/cli/config-selector.ts
-
curl -L -o config-selector.ts https://huggingface.co/SaylorTwift/pi/resolve/main/packages/coding-agent/src/cli/config-selector.ts
1.67 kB
| /** | |
| * TUI config selector for `pi config` command | |
| */ | |
| import { ProcessTerminal, type TUI, TuiMainScreen } from "@earendil-works/pi-tui"; | |
| import type { SettingsManager } from "../core/settings-manager.ts"; | |
| import { ConfigSelectorComponent, type ScopedResolvedPaths } from "../modes/interactive/components/config-selector.ts"; | |
| import { initTheme, stopThemeWatcher } from "../modes/interactive/theme/theme.ts"; | |
| export interface ConfigSelectorOptions { | |
| resolvedPaths: ScopedResolvedPaths; | |
| settingsManager: SettingsManager; | |
| cwd: string; | |
| agentDir: string; | |
| writeScope: "global" | "project"; | |
| projectModeAvailable: boolean; | |
| } | |
| /** Show TUI config selector and return when closed */ | |
| export async function selectConfig(options: ConfigSelectorOptions): Promise<void> { | |
| // Initialize theme before showing TUI | |
| initTheme(options.settingsManager.getTheme(), true); | |
| return new Promise((resolve) => { | |
| const ui: TUI = new TuiMainScreen( | |
| new ProcessTerminal(), | |
| options.settingsManager.getShowHardwareCursor(), | |
| options.agentDir, | |
| ); | |
| ui.setClearOnShrink(options.settingsManager.getClearOnShrink()); | |
| let resolved = false; | |
| const selector = new ConfigSelectorComponent( | |
| options.resolvedPaths, | |
| options.settingsManager, | |
| options.cwd, | |
| options.agentDir, | |
| () => { | |
| if (!resolved) { | |
| resolved = true; | |
| ui.stop(); | |
| stopThemeWatcher(); | |
| resolve(); | |
| } | |
| }, | |
| () => { | |
| ui.stop(); | |
| stopThemeWatcher(); | |
| process.exit(0); | |
| }, | |
| () => ui.requestRender(), | |
| ui.terminal.rows, | |
| options.writeScope, | |
| options.projectModeAvailable, | |
| ); | |
| ui.addChild(selector); | |
| ui.setFocus(selector.getResourceList()); | |
| ui.start(); | |
| }); | |
| } | |