From 58eec55154d3bb3e5927bddd7c43c8623888dbfb Mon Sep 17 00:00:00 2001 From: Danila Poyarkov Date: Sat, 17 Jan 2026 12:51:03 +0300 Subject: [PATCH] feat(coding-agent): export keyHint utilities for extensions (#802) --- packages/coding-agent/CHANGELOG.md | 4 ++++ packages/coding-agent/docs/extensions.md | 22 ++++++++++++++++++++++ packages/coding-agent/src/index.ts | 5 +++++ 3 files changed, 31 insertions(+) diff --git a/packages/coding-agent/CHANGELOG.md b/packages/coding-agent/CHANGELOG.md index 03d339d8..f8ff64e4 100644 --- a/packages/coding-agent/CHANGELOG.md +++ b/packages/coding-agent/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Added + +- Export `keyHint`, `appKeyHint`, `editorKey`, `appKey`, `rawKeyHint` for extensions to format keybinding hints consistently + ## [0.48.0] - 2026-01-16 ### Added diff --git a/packages/coding-agent/docs/extensions.md b/packages/coding-agent/docs/extensions.md index 7ef92582..0857fab4 100644 --- a/packages/coding-agent/docs/extensions.md +++ b/packages/coding-agent/docs/extensions.md @@ -1276,6 +1276,28 @@ renderResult(result, { expanded, isPartial }, theme) { } ``` +#### Keybinding Hints + +Use `keyHint()` to display keybinding hints that respect user's keybinding configuration: + +```typescript +import { keyHint } from "@mariozechner/pi-coding-agent"; + +renderResult(result, { expanded }, theme) { + let text = theme.fg("success", "✓ Done"); + if (!expanded) { + text += ` (${keyHint("expandTools", "to expand")})`; + } + return new Text(text, 0, 0); +} +``` + +Available functions: +- `keyHint(action, description)` - Editor actions (e.g., `"expandTools"`, `"selectConfirm"`) +- `appKeyHint(keybindings, action, description)` - App actions (requires `KeybindingsManager`) +- `editorKey(action)` - Get raw key string for editor action +- `rawKeyHint(key, description)` - Format a raw key string + #### Best Practices - Use `Text` with padding `(0, 0)` - the Box handles padding diff --git a/packages/coding-agent/src/index.ts b/packages/coding-agent/src/index.ts index 62cad798..bb929dc4 100644 --- a/packages/coding-agent/src/index.ts +++ b/packages/coding-agent/src/index.ts @@ -237,6 +237,8 @@ export { export { ArminComponent, AssistantMessageComponent, + appKey, + appKeyHint, BashExecutionComponent, BorderedLoader, BranchSummaryMessageComponent, @@ -247,11 +249,14 @@ export { ExtensionEditorComponent, ExtensionInputComponent, ExtensionSelectorComponent, + editorKey, FooterComponent, + keyHint, LoginDialogComponent, ModelSelectorComponent, OAuthSelectorComponent, type RenderDiffOptions, + rawKeyHint, renderDiff, SessionSelectorComponent, type SettingsCallbacks,