WOrks perfect

This commit is contained in:
2026-09-16 08:27:56 +00:00
commit 5438ebbb4e
Executable
+139
View File
@@ -0,0 +1,139 @@
#!/usr/bin/env python3
import os
import re
def setup_claude_whoops_config():
"""Create ~/.claude_whoops directory and default system message"""
config_dir = os.path.expanduser("~/.claude_whoops")
os.makedirs(config_dir, exist_ok=True)
system_msg_path = os.path.join(config_dir, "system_message")
# Only create if doesn't exist
if not os.path.exists(system_msg_path):
default_message = """Please read ~/.tmux_context to see the user context at the moment. It is his terminal output. Maybe he has an issue that you can solve."""
with open(system_msg_path, 'w') as f:
f.write(default_message)
print(f"✓ Created {system_msg_path}")
else:
print(f"✓ {system_msg_path} already exists (not overwriting)")
def install_command_handler():
"""Install or update command not found handler in .bashrc"""
bashrc_path = os.path.expanduser("~/.bashrc")
# Read existing content
if os.path.exists(bashrc_path):
with open(bashrc_path, 'r') as f:
content = f.read()
else:
content = ""
# Remove DPE command-not-found handler source line
content = re.sub(r'\[ -f /etc/dpe-command-not-found\.sh \].*\n', '', content)
# Remove ALL existing command_not_found handlers/handles
content = re.sub(
r'# Claude command not found handlers?\n'
r'command_not_found_hand(?:ler|le)\(\) \{[^}]*\}\n+',
'',
content,
flags=re.MULTILINE | re.DOTALL
)
# Remove any other command_not_found_handler or handle definitions
content = re.sub(
r'command_not_found_hand(?:ler|le)\(\) \{[^}]*\}\n*',
'',
content,
flags=re.DOTALL
)
# Add new handlers at the end (both bash standard and DPE variant)
handler = '''# Claude command not found handlers
command_not_found_handler() {
local cmd="$1"
shift
# Capture tmux pane if available
if command -v tmux >/dev/null 2>&1 && [ -n "$TMUX" ]; then
tmux capture-pane -p > "$HOME/.tmux_context" 2>/dev/null || true
fi
# Build prompt with system message if configured
local prompt="$cmd $*"
if [ -f "$HOME/.claude_whoops/system_message" ]; then
local sys_msg=$(cat "$HOME/.claude_whoops/system_message")
prompt="$sys_msg
$prompt"
fi
# Execute claude with prompt (bypass permissions for smooth UX)
claude --permission-mode bypassPermissions -p "$prompt"
return 127
}
# DPE variant
command_not_found_handle() {
local cmd="$1"
shift
# Capture tmux pane if available
if command -v tmux >/dev/null 2>&1 && [ -n "$TMUX" ]; then
tmux capture-pane -p > "$HOME/.tmux_context" 2>/dev/null || true
fi
# Build prompt with system message if configured
local prompt="$cmd $*"
if [ -f "$HOME/.claude_whoops/system_message" ]; then
local sys_msg=$(cat "$HOME/.claude_whoops/system_message")
prompt="$sys_msg
$prompt"
fi
# Execute claude with prompt (bypass permissions for smooth UX)
claude --permission-mode bypassPermissions -p "$prompt"
return 127
}
'''
content = content.rstrip() + '\n\n' + handler
# Write back
with open(bashrc_path, 'w') as f:
f.write(content)
print("✓ Installed Claude command not found handlers in ~/.bashrc")
def print_documentation():
"""Print concise professional documentation"""
msg_file = os.path.expanduser("~/.claude_whoops/system_message")
current_msg = ""
if os.path.exists(msg_file):
with open(msg_file, 'r') as f:
current_msg = f.read().strip()
docs = f"""CLAUDE COMMAND NOT FOUND INTEGRATION
Overview:
Intercepts unknown commands, captures tmux context, sends to Claude for analysis.
Configuration:
~/.bashrc Handler functions (command_not_found_handler/handle)
~/.claude_whoops/system_message System prompt (customize here)
~/.tmux_context Terminal context (generated on-demand)
Current system message:
{current_msg}
Customize:
Edit ~/.claude_whoops/system_message to change Claude's behavior.
Run python3 install.py to refresh handlers (preserves custom config).
"""
print(docs)
if __name__ == "__main__":
setup_claude_whoops_config()
install_command_handler()
print_documentation()