diff --git a/packages/pi-coding-agent/src/modes/interactive/components/provider-manager.ts b/packages/pi-coding-agent/src/modes/interactive/components/provider-manager.ts index 718d68030..4d45fa725 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/provider-manager.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/provider-manager.ts @@ -43,6 +43,7 @@ export class ProviderManagerComponent extends Container implements Focusable { private modelsJsonWriter: ModelsJsonWriter; private onDone: () => void; private onDiscover: (provider: string) => void; + private onSetupAuth: (provider: string) => void; private confirmingRemove = false; private hintsContainer: Container; @@ -52,6 +53,7 @@ export class ProviderManagerComponent extends Container implements Focusable { modelRegistry: ModelRegistry, onDone: () => void, onDiscover: (provider: string) => void, + onSetupAuth?: (provider: string) => void, ) { super(); @@ -61,6 +63,7 @@ export class ProviderManagerComponent extends Container implements Focusable { this.modelsJsonWriter = new ModelsJsonWriter(this.modelRegistry.modelsJsonPath); this.onDone = onDone; this.onDiscover = onDiscover; + this.onSetupAuth = onSetupAuth ?? (() => {}); // Header this.addChild(new Text(theme.fg("accent", "Provider Manager"), 0, 0)); @@ -125,6 +128,7 @@ export class ProviderManagerComponent extends Container implements Focusable { this.hintsContainer.addChild(new Text(hints, 0, 0)); } else { const hints = [ + rawKeyHint("enter", "setup auth"), rawKeyHint("d", "discover"), rawKeyHint("r", "remove auth"), rawKeyHint("esc", "close"), @@ -203,6 +207,12 @@ export class ProviderManagerComponent extends Container implements Focusable { this.tui.requestRender(); } } + } else if (kb.matches(keyData, "selectConfirm")) { + // Enter key → initiate auth setup for the selected provider (#3579) + const provider = this.providers[this.selectedIndex]; + if (provider) { + this.onSetupAuth(provider.name); + } } } } diff --git a/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts b/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts index ca98db678..80255d8de 100644 --- a/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +++ b/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts @@ -3411,6 +3411,11 @@ export class InteractiveMode { done(); this.ui.requestRender(); }, + async (provider: string) => { + // Enter key → auth setup for selected provider (#3579) + done(); + await this.showLoginDialog(provider); + }, ); return { component, focus: component }; });