ripperdoc 0.2.9__py3-none-any.whl → 0.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ripperdoc/__init__.py +1 -1
- ripperdoc/cli/cli.py +379 -51
- ripperdoc/cli/commands/__init__.py +6 -0
- ripperdoc/cli/commands/agents_cmd.py +128 -5
- ripperdoc/cli/commands/clear_cmd.py +8 -0
- ripperdoc/cli/commands/doctor_cmd.py +29 -0
- ripperdoc/cli/commands/exit_cmd.py +1 -0
- ripperdoc/cli/commands/memory_cmd.py +2 -1
- ripperdoc/cli/commands/models_cmd.py +63 -7
- ripperdoc/cli/commands/resume_cmd.py +5 -0
- ripperdoc/cli/commands/skills_cmd.py +103 -0
- ripperdoc/cli/commands/stats_cmd.py +244 -0
- ripperdoc/cli/commands/status_cmd.py +10 -0
- ripperdoc/cli/commands/tasks_cmd.py +6 -3
- ripperdoc/cli/commands/themes_cmd.py +139 -0
- ripperdoc/cli/ui/file_mention_completer.py +63 -13
- ripperdoc/cli/ui/helpers.py +6 -3
- ripperdoc/cli/ui/interrupt_handler.py +34 -0
- ripperdoc/cli/ui/panels.py +14 -8
- ripperdoc/cli/ui/rich_ui.py +737 -47
- ripperdoc/cli/ui/spinner.py +93 -18
- ripperdoc/cli/ui/thinking_spinner.py +1 -2
- ripperdoc/cli/ui/tool_renderers.py +10 -9
- ripperdoc/cli/ui/wizard.py +24 -19
- ripperdoc/core/agents.py +14 -3
- ripperdoc/core/config.py +238 -6
- ripperdoc/core/default_tools.py +91 -10
- ripperdoc/core/hooks/events.py +4 -0
- ripperdoc/core/hooks/llm_callback.py +58 -0
- ripperdoc/core/hooks/manager.py +6 -0
- ripperdoc/core/permissions.py +160 -9
- ripperdoc/core/providers/openai.py +84 -28
- ripperdoc/core/query.py +489 -87
- ripperdoc/core/query_utils.py +17 -14
- ripperdoc/core/skills.py +1 -0
- ripperdoc/core/theme.py +298 -0
- ripperdoc/core/tool.py +15 -5
- ripperdoc/protocol/__init__.py +14 -0
- ripperdoc/protocol/models.py +300 -0
- ripperdoc/protocol/stdio.py +1453 -0
- ripperdoc/tools/background_shell.py +354 -139
- ripperdoc/tools/bash_tool.py +117 -22
- ripperdoc/tools/file_edit_tool.py +228 -50
- ripperdoc/tools/file_read_tool.py +154 -3
- ripperdoc/tools/file_write_tool.py +53 -11
- ripperdoc/tools/grep_tool.py +98 -8
- ripperdoc/tools/lsp_tool.py +609 -0
- ripperdoc/tools/multi_edit_tool.py +26 -3
- ripperdoc/tools/skill_tool.py +52 -1
- ripperdoc/tools/task_tool.py +539 -65
- ripperdoc/utils/conversation_compaction.py +1 -1
- ripperdoc/utils/file_watch.py +216 -7
- ripperdoc/utils/image_utils.py +125 -0
- ripperdoc/utils/log.py +30 -3
- ripperdoc/utils/lsp.py +812 -0
- ripperdoc/utils/mcp.py +80 -18
- ripperdoc/utils/message_formatting.py +7 -4
- ripperdoc/utils/messages.py +198 -33
- ripperdoc/utils/pending_messages.py +50 -0
- ripperdoc/utils/permissions/shell_command_validation.py +3 -3
- ripperdoc/utils/permissions/tool_permission_utils.py +180 -15
- ripperdoc/utils/platform.py +198 -0
- ripperdoc/utils/session_heatmap.py +242 -0
- ripperdoc/utils/session_history.py +2 -2
- ripperdoc/utils/session_stats.py +294 -0
- ripperdoc/utils/shell_utils.py +8 -5
- ripperdoc/utils/todo.py +0 -6
- {ripperdoc-0.2.9.dist-info → ripperdoc-0.3.0.dist-info}/METADATA +55 -17
- ripperdoc-0.3.0.dist-info/RECORD +136 -0
- {ripperdoc-0.2.9.dist-info → ripperdoc-0.3.0.dist-info}/WHEEL +1 -1
- ripperdoc/sdk/__init__.py +0 -9
- ripperdoc/sdk/client.py +0 -333
- ripperdoc-0.2.9.dist-info/RECORD +0 -123
- {ripperdoc-0.2.9.dist-info → ripperdoc-0.3.0.dist-info}/entry_points.txt +0 -0
- {ripperdoc-0.2.9.dist-info → ripperdoc-0.3.0.dist-info}/licenses/LICENSE +0 -0
- {ripperdoc-0.2.9.dist-info → ripperdoc-0.3.0.dist-info}/top_level.txt +0 -0
ripperdoc/cli/ui/panels.py
CHANGED
|
@@ -13,23 +13,27 @@ from rich import box
|
|
|
13
13
|
|
|
14
14
|
from ripperdoc import __version__
|
|
15
15
|
from ripperdoc.cli.ui.helpers import get_profile_for_pointer
|
|
16
|
+
from ripperdoc.core.theme import theme_color
|
|
16
17
|
|
|
17
18
|
|
|
18
19
|
def create_welcome_panel() -> Panel:
|
|
19
20
|
"""Create a welcome panel for the CLI startup."""
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
primary = theme_color("primary")
|
|
22
|
+
muted = theme_color("text_secondary")
|
|
23
|
+
|
|
24
|
+
welcome_content = f"""
|
|
25
|
+
[bold {primary}]Welcome to Ripperdoc![/bold {primary}]
|
|
22
26
|
|
|
23
27
|
Ripperdoc is an AI-powered coding assistant that helps with software development tasks.
|
|
24
28
|
You can read files, edit code, run commands, and help with various programming tasks.
|
|
25
29
|
|
|
26
|
-
[
|
|
30
|
+
[{muted}]Type your questions below. Press Ctrl+C twice to exit.[/{muted}]
|
|
27
31
|
"""
|
|
28
32
|
|
|
29
33
|
return Panel(
|
|
30
34
|
welcome_content,
|
|
31
35
|
title=f"Ripperdoc v{__version__}",
|
|
32
|
-
border_style="
|
|
36
|
+
border_style=theme_color("border"),
|
|
33
37
|
box=box.ROUNDED,
|
|
34
38
|
padding=(1, 2),
|
|
35
39
|
)
|
|
@@ -41,11 +45,11 @@ def create_status_bar() -> Text:
|
|
|
41
45
|
model_name = profile.model if profile else "Not configured"
|
|
42
46
|
|
|
43
47
|
status_text = Text()
|
|
44
|
-
status_text.append("Ripperdoc", style="bold
|
|
48
|
+
status_text.append("Ripperdoc", style=f"bold {theme_color('primary')}")
|
|
45
49
|
status_text.append(" • ")
|
|
46
|
-
status_text.append(model_name, style="
|
|
50
|
+
status_text.append(model_name, style=theme_color("text_secondary"))
|
|
47
51
|
status_text.append(" • ")
|
|
48
|
-
status_text.append("Ready", style="
|
|
52
|
+
status_text.append("Ready", style=theme_color("secondary"))
|
|
49
53
|
|
|
50
54
|
return status_text
|
|
51
55
|
|
|
@@ -55,8 +59,10 @@ def print_shortcuts(console: Console) -> None:
|
|
|
55
59
|
pairs: List[Tuple[str, str]] = [
|
|
56
60
|
("? for shortcuts", "! for bash mode"),
|
|
57
61
|
("/ for commands", "@ for file mention"),
|
|
62
|
+
("Alt+Enter for newline", "Enter to submit"),
|
|
58
63
|
]
|
|
59
|
-
|
|
64
|
+
muted = theme_color("text_secondary")
|
|
65
|
+
console.print(f"[{muted}]Shortcuts[/{muted}]")
|
|
60
66
|
for left, right in pairs:
|
|
61
67
|
left_text = f" {left}".ljust(32)
|
|
62
68
|
right_text = f"{right}" if right else ""
|