192e8adf18
- Replace regex-based command blocking with environment configuration - Add cross-platform null device support (NUL for Windows, /dev/null for Unix) - Wrap all bash commands with non-interactive environment variables - Only block TUI programs that require full PTY - Update schema, README docs, and all imports/exports 🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
58 lines
1.3 KiB
TypeScript
58 lines
1.3 KiB
TypeScript
export const HOOK_NAME = "non-interactive-env"
|
|
|
|
export const NULL_DEVICE = process.platform === "win32" ? "NUL" : "/dev/null"
|
|
|
|
export const NON_INTERACTIVE_ENV: Record<string, string> = {
|
|
CI: "true",
|
|
DEBIAN_FRONTEND: "noninteractive",
|
|
GIT_TERMINAL_PROMPT: "0",
|
|
GCM_INTERACTIVE: "never",
|
|
HOMEBREW_NO_AUTO_UPDATE: "1",
|
|
}
|
|
|
|
export const TUI_PATTERNS = [
|
|
/\b(?:vim?|nvim|nano|emacs|pico|joe|micro|helix|hx)\b/,
|
|
/^\s*(?:python|python3|ipython|node|bun|deno|irb|pry|ghci|erl|iex|lua|R)\s*$/,
|
|
/\btop\b(?!\s+\|)/,
|
|
/\bhtop\b/,
|
|
/\bbtop\b/,
|
|
/\bless\b(?!\s+\|)/,
|
|
/\bmore\b(?!\s+\|)/,
|
|
/\bman\b/,
|
|
/\bwatch\b/,
|
|
/\bncurses\b/,
|
|
/\bdialog\b/,
|
|
/\bwhiptail\b/,
|
|
/\bmc\b/,
|
|
/\branger\b/,
|
|
/\bnnn\b/,
|
|
/\blf\b/,
|
|
/\bvifm\b/,
|
|
/\bgitui\b/,
|
|
/\blazygit\b/,
|
|
/\blazydocker\b/,
|
|
/\bk9s\b/,
|
|
/\bselect\b.*\bin\b/,
|
|
]
|
|
|
|
export const TUI_SUGGESTION = `
|
|
[non-interactive-env]
|
|
This command requires a full interactive terminal (TUI) which cannot be emulated.
|
|
|
|
**Recommendation**: Use tmux for TUI commands.
|
|
|
|
Example with interactive-terminal skill:
|
|
\`\`\`
|
|
# Start a tmux session
|
|
tmux new-session -d -s interactive
|
|
|
|
# Send your command
|
|
tmux send-keys -t interactive 'your-command-here' Enter
|
|
|
|
# Capture output
|
|
tmux capture-pane -t interactive -p
|
|
\`\`\`
|
|
|
|
Or use the 'interactive-terminal' skill for easier workflow.
|
|
`
|