mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-01 01:51:44 +00:00
- resolveEditor() now returns argv (string[]) so EDITOR='code --wait' and VISUAL='emacsclient -t' tokenize correctly into spawnSync's separate command + args. Previously the whole string was passed as argv[0] and would ENOENT. - Skip the POSIX X_OK PATH walk on Windows; return ['notepad.exe'] there since fs.constants.X_OK is not meaningful and PATHEXT-based resolution would need its own implementation. - Surface openEditor() rejections via actions.sys instead of letting them become unhandled promise rejections in the useInput callback. - Hotkey docs/comment now say Cmd/Ctrl+G to match isAction()'s platform-action-modifier behavior (Cmd on macOS, Ctrl elsewhere).
36 lines
1.4 KiB
TypeScript
36 lines
1.4 KiB
TypeScript
import { isMac, isRemoteShell } from '../lib/platform.js'
|
|
|
|
const action = isMac ? 'Cmd' : 'Ctrl'
|
|
const paste = isMac ? 'Cmd' : 'Alt'
|
|
|
|
const copyHotkeys: [string, string][] = isMac
|
|
? [
|
|
['Cmd+C', 'copy selection'],
|
|
['Ctrl+C', 'interrupt / clear draft / exit']
|
|
]
|
|
: isRemoteShell()
|
|
? [
|
|
['Cmd+C', 'copy selection when forwarded by the terminal'],
|
|
['Ctrl+C', 'copy selection / interrupt / clear draft / exit']
|
|
]
|
|
: [['Ctrl+C', 'copy selection / interrupt / clear draft / exit']]
|
|
|
|
export const HOTKEYS: [string, string][] = [
|
|
...copyHotkeys,
|
|
[action + '+D', 'exit'],
|
|
[action + '+G / Alt+G', 'open $EDITOR (Alt+G fallback for VSCode/Cursor)'],
|
|
[action + '+L', 'new session (clear)'],
|
|
[paste + '+V / /paste', 'paste text; /paste attaches clipboard image'],
|
|
['Tab', 'apply completion'],
|
|
['↑/↓', 'completions / queue edit / history'],
|
|
[action + '+A/E', 'home / end of line'],
|
|
[action + '+Z / ' + action + '+Y', 'undo / redo input edits'],
|
|
[action + '+W', 'delete word'],
|
|
[action + '+U/K', 'delete to start / end'],
|
|
[action + '+←/→', 'jump word'],
|
|
['Home/End', 'start / end of line'],
|
|
['Shift+Enter / Alt+Enter', 'insert newline'],
|
|
['\\+Enter', 'multi-line continuation (fallback)'],
|
|
['!<cmd>', 'run a shell command (e.g. !ls, !git status)'],
|
|
['{!<cmd>}', 'interpolate shell output inline (e.g. "branch is {!git branch --show-current}")']
|
|
]
|