code-puppy 0.0.169__py3-none-any.whl → 0.0.366__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.
- code_puppy/__init__.py +7 -1
- code_puppy/agents/__init__.py +8 -8
- code_puppy/agents/agent_c_reviewer.py +155 -0
- code_puppy/agents/agent_code_puppy.py +9 -2
- code_puppy/agents/agent_code_reviewer.py +90 -0
- code_puppy/agents/agent_cpp_reviewer.py +132 -0
- code_puppy/agents/agent_creator_agent.py +48 -9
- code_puppy/agents/agent_golang_reviewer.py +151 -0
- code_puppy/agents/agent_javascript_reviewer.py +160 -0
- code_puppy/agents/agent_manager.py +146 -199
- code_puppy/agents/agent_pack_leader.py +383 -0
- code_puppy/agents/agent_planning.py +163 -0
- code_puppy/agents/agent_python_programmer.py +165 -0
- code_puppy/agents/agent_python_reviewer.py +90 -0
- code_puppy/agents/agent_qa_expert.py +163 -0
- code_puppy/agents/agent_qa_kitten.py +208 -0
- code_puppy/agents/agent_security_auditor.py +181 -0
- code_puppy/agents/agent_terminal_qa.py +323 -0
- code_puppy/agents/agent_typescript_reviewer.py +166 -0
- code_puppy/agents/base_agent.py +1713 -1
- code_puppy/agents/event_stream_handler.py +350 -0
- code_puppy/agents/json_agent.py +12 -1
- code_puppy/agents/pack/__init__.py +34 -0
- code_puppy/agents/pack/bloodhound.py +304 -0
- code_puppy/agents/pack/husky.py +321 -0
- code_puppy/agents/pack/retriever.py +393 -0
- code_puppy/agents/pack/shepherd.py +348 -0
- code_puppy/agents/pack/terrier.py +287 -0
- code_puppy/agents/pack/watchdog.py +367 -0
- code_puppy/agents/prompt_reviewer.py +145 -0
- code_puppy/agents/subagent_stream_handler.py +276 -0
- code_puppy/api/__init__.py +13 -0
- code_puppy/api/app.py +169 -0
- code_puppy/api/main.py +21 -0
- code_puppy/api/pty_manager.py +446 -0
- code_puppy/api/routers/__init__.py +12 -0
- code_puppy/api/routers/agents.py +36 -0
- code_puppy/api/routers/commands.py +217 -0
- code_puppy/api/routers/config.py +74 -0
- code_puppy/api/routers/sessions.py +232 -0
- code_puppy/api/templates/terminal.html +361 -0
- code_puppy/api/websocket.py +154 -0
- code_puppy/callbacks.py +174 -4
- code_puppy/chatgpt_codex_client.py +283 -0
- code_puppy/claude_cache_client.py +586 -0
- code_puppy/cli_runner.py +916 -0
- code_puppy/command_line/add_model_menu.py +1079 -0
- code_puppy/command_line/agent_menu.py +395 -0
- code_puppy/command_line/attachments.py +395 -0
- code_puppy/command_line/autosave_menu.py +605 -0
- code_puppy/command_line/clipboard.py +527 -0
- code_puppy/command_line/colors_menu.py +520 -0
- code_puppy/command_line/command_handler.py +233 -627
- code_puppy/command_line/command_registry.py +150 -0
- code_puppy/command_line/config_commands.py +715 -0
- code_puppy/command_line/core_commands.py +792 -0
- code_puppy/command_line/diff_menu.py +863 -0
- code_puppy/command_line/load_context_completion.py +15 -22
- code_puppy/command_line/mcp/base.py +1 -4
- code_puppy/command_line/mcp/catalog_server_installer.py +175 -0
- code_puppy/command_line/mcp/custom_server_form.py +688 -0
- code_puppy/command_line/mcp/custom_server_installer.py +195 -0
- code_puppy/command_line/mcp/edit_command.py +148 -0
- code_puppy/command_line/mcp/handler.py +9 -4
- code_puppy/command_line/mcp/help_command.py +6 -5
- code_puppy/command_line/mcp/install_command.py +16 -27
- code_puppy/command_line/mcp/install_menu.py +685 -0
- code_puppy/command_line/mcp/list_command.py +3 -3
- code_puppy/command_line/mcp/logs_command.py +174 -65
- code_puppy/command_line/mcp/remove_command.py +2 -2
- code_puppy/command_line/mcp/restart_command.py +12 -4
- code_puppy/command_line/mcp/search_command.py +17 -11
- code_puppy/command_line/mcp/start_all_command.py +22 -13
- code_puppy/command_line/mcp/start_command.py +50 -31
- code_puppy/command_line/mcp/status_command.py +6 -7
- code_puppy/command_line/mcp/stop_all_command.py +11 -8
- code_puppy/command_line/mcp/stop_command.py +11 -10
- code_puppy/command_line/mcp/test_command.py +2 -2
- code_puppy/command_line/mcp/utils.py +1 -1
- code_puppy/command_line/mcp/wizard_utils.py +22 -18
- code_puppy/command_line/mcp_completion.py +174 -0
- code_puppy/command_line/model_picker_completion.py +89 -30
- code_puppy/command_line/model_settings_menu.py +884 -0
- code_puppy/command_line/motd.py +14 -8
- code_puppy/command_line/onboarding_slides.py +179 -0
- code_puppy/command_line/onboarding_wizard.py +340 -0
- code_puppy/command_line/pin_command_completion.py +329 -0
- code_puppy/command_line/prompt_toolkit_completion.py +626 -75
- code_puppy/command_line/session_commands.py +296 -0
- code_puppy/command_line/utils.py +54 -0
- code_puppy/config.py +1181 -51
- code_puppy/error_logging.py +118 -0
- code_puppy/gemini_code_assist.py +385 -0
- code_puppy/gemini_model.py +602 -0
- code_puppy/http_utils.py +220 -104
- code_puppy/keymap.py +128 -0
- code_puppy/main.py +5 -594
- code_puppy/{mcp → mcp_}/__init__.py +17 -0
- code_puppy/{mcp → mcp_}/async_lifecycle.py +35 -4
- code_puppy/{mcp → mcp_}/blocking_startup.py +70 -43
- code_puppy/{mcp → mcp_}/captured_stdio_server.py +2 -2
- code_puppy/{mcp → mcp_}/config_wizard.py +5 -5
- code_puppy/{mcp → mcp_}/dashboard.py +15 -6
- code_puppy/{mcp → mcp_}/examples/retry_example.py +4 -1
- code_puppy/{mcp → mcp_}/managed_server.py +66 -39
- code_puppy/{mcp → mcp_}/manager.py +146 -52
- code_puppy/mcp_/mcp_logs.py +224 -0
- code_puppy/{mcp → mcp_}/registry.py +6 -6
- code_puppy/{mcp → mcp_}/server_registry_catalog.py +25 -8
- code_puppy/messaging/__init__.py +199 -2
- code_puppy/messaging/bus.py +610 -0
- code_puppy/messaging/commands.py +167 -0
- code_puppy/messaging/markdown_patches.py +57 -0
- code_puppy/messaging/message_queue.py +17 -48
- code_puppy/messaging/messages.py +500 -0
- code_puppy/messaging/queue_console.py +1 -24
- code_puppy/messaging/renderers.py +43 -146
- code_puppy/messaging/rich_renderer.py +1027 -0
- code_puppy/messaging/spinner/__init__.py +33 -5
- code_puppy/messaging/spinner/console_spinner.py +92 -52
- code_puppy/messaging/spinner/spinner_base.py +29 -0
- code_puppy/messaging/subagent_console.py +461 -0
- code_puppy/model_factory.py +686 -80
- code_puppy/model_utils.py +167 -0
- code_puppy/models.json +86 -104
- code_puppy/models_dev_api.json +1 -0
- code_puppy/models_dev_parser.py +592 -0
- code_puppy/plugins/__init__.py +164 -10
- code_puppy/plugins/antigravity_oauth/__init__.py +10 -0
- code_puppy/plugins/antigravity_oauth/accounts.py +406 -0
- code_puppy/plugins/antigravity_oauth/antigravity_model.py +704 -0
- code_puppy/plugins/antigravity_oauth/config.py +42 -0
- code_puppy/plugins/antigravity_oauth/constants.py +136 -0
- code_puppy/plugins/antigravity_oauth/oauth.py +478 -0
- code_puppy/plugins/antigravity_oauth/register_callbacks.py +406 -0
- code_puppy/plugins/antigravity_oauth/storage.py +271 -0
- code_puppy/plugins/antigravity_oauth/test_plugin.py +319 -0
- code_puppy/plugins/antigravity_oauth/token.py +167 -0
- code_puppy/plugins/antigravity_oauth/transport.py +767 -0
- code_puppy/plugins/antigravity_oauth/utils.py +169 -0
- code_puppy/plugins/chatgpt_oauth/__init__.py +8 -0
- code_puppy/plugins/chatgpt_oauth/config.py +52 -0
- code_puppy/plugins/chatgpt_oauth/oauth_flow.py +328 -0
- code_puppy/plugins/chatgpt_oauth/register_callbacks.py +94 -0
- code_puppy/plugins/chatgpt_oauth/test_plugin.py +293 -0
- code_puppy/plugins/chatgpt_oauth/utils.py +489 -0
- code_puppy/plugins/claude_code_oauth/README.md +167 -0
- code_puppy/plugins/claude_code_oauth/SETUP.md +93 -0
- code_puppy/plugins/claude_code_oauth/__init__.py +6 -0
- code_puppy/plugins/claude_code_oauth/config.py +50 -0
- code_puppy/plugins/claude_code_oauth/register_callbacks.py +308 -0
- code_puppy/plugins/claude_code_oauth/test_plugin.py +283 -0
- code_puppy/plugins/claude_code_oauth/utils.py +518 -0
- code_puppy/plugins/customizable_commands/__init__.py +0 -0
- code_puppy/plugins/customizable_commands/register_callbacks.py +169 -0
- code_puppy/plugins/example_custom_command/README.md +280 -0
- code_puppy/plugins/example_custom_command/register_callbacks.py +51 -0
- code_puppy/plugins/file_permission_handler/__init__.py +4 -0
- code_puppy/plugins/file_permission_handler/register_callbacks.py +523 -0
- code_puppy/plugins/frontend_emitter/__init__.py +25 -0
- code_puppy/plugins/frontend_emitter/emitter.py +121 -0
- code_puppy/plugins/frontend_emitter/register_callbacks.py +261 -0
- code_puppy/plugins/oauth_puppy_html.py +228 -0
- code_puppy/plugins/shell_safety/__init__.py +6 -0
- code_puppy/plugins/shell_safety/agent_shell_safety.py +69 -0
- code_puppy/plugins/shell_safety/command_cache.py +156 -0
- code_puppy/plugins/shell_safety/register_callbacks.py +202 -0
- code_puppy/prompts/antigravity_system_prompt.md +1 -0
- code_puppy/prompts/codex_system_prompt.md +310 -0
- code_puppy/pydantic_patches.py +131 -0
- code_puppy/reopenable_async_client.py +8 -8
- code_puppy/round_robin_model.py +10 -15
- code_puppy/session_storage.py +294 -0
- code_puppy/status_display.py +21 -4
- code_puppy/summarization_agent.py +52 -14
- code_puppy/terminal_utils.py +418 -0
- code_puppy/tools/__init__.py +139 -6
- code_puppy/tools/agent_tools.py +548 -49
- code_puppy/tools/browser/__init__.py +37 -0
- code_puppy/tools/browser/browser_control.py +289 -0
- code_puppy/tools/browser/browser_interactions.py +545 -0
- code_puppy/tools/browser/browser_locators.py +640 -0
- code_puppy/tools/browser/browser_manager.py +316 -0
- code_puppy/tools/browser/browser_navigation.py +251 -0
- code_puppy/tools/browser/browser_screenshot.py +179 -0
- code_puppy/tools/browser/browser_scripts.py +462 -0
- code_puppy/tools/browser/browser_workflows.py +221 -0
- code_puppy/tools/browser/chromium_terminal_manager.py +259 -0
- code_puppy/tools/browser/terminal_command_tools.py +521 -0
- code_puppy/tools/browser/terminal_screenshot_tools.py +556 -0
- code_puppy/tools/browser/terminal_tools.py +525 -0
- code_puppy/tools/command_runner.py +941 -153
- code_puppy/tools/common.py +1146 -6
- code_puppy/tools/display.py +84 -0
- code_puppy/tools/file_modifications.py +288 -89
- code_puppy/tools/file_operations.py +352 -266
- code_puppy/tools/subagent_context.py +158 -0
- code_puppy/uvx_detection.py +242 -0
- code_puppy/version_checker.py +30 -11
- code_puppy-0.0.366.data/data/code_puppy/models.json +110 -0
- code_puppy-0.0.366.data/data/code_puppy/models_dev_api.json +1 -0
- {code_puppy-0.0.169.dist-info → code_puppy-0.0.366.dist-info}/METADATA +184 -67
- code_puppy-0.0.366.dist-info/RECORD +217 -0
- {code_puppy-0.0.169.dist-info → code_puppy-0.0.366.dist-info}/WHEEL +1 -1
- {code_puppy-0.0.169.dist-info → code_puppy-0.0.366.dist-info}/entry_points.txt +1 -0
- code_puppy/agent.py +0 -231
- code_puppy/agents/agent_orchestrator.json +0 -26
- code_puppy/agents/runtime_manager.py +0 -272
- code_puppy/command_line/mcp/add_command.py +0 -183
- code_puppy/command_line/meta_command_handler.py +0 -153
- code_puppy/message_history_processor.py +0 -490
- code_puppy/messaging/spinner/textual_spinner.py +0 -101
- code_puppy/state_management.py +0 -200
- code_puppy/tui/__init__.py +0 -10
- code_puppy/tui/app.py +0 -986
- code_puppy/tui/components/__init__.py +0 -21
- code_puppy/tui/components/chat_view.py +0 -550
- code_puppy/tui/components/command_history_modal.py +0 -218
- code_puppy/tui/components/copy_button.py +0 -139
- code_puppy/tui/components/custom_widgets.py +0 -63
- code_puppy/tui/components/human_input_modal.py +0 -175
- code_puppy/tui/components/input_area.py +0 -167
- code_puppy/tui/components/sidebar.py +0 -309
- code_puppy/tui/components/status_bar.py +0 -182
- code_puppy/tui/messages.py +0 -27
- code_puppy/tui/models/__init__.py +0 -8
- code_puppy/tui/models/chat_message.py +0 -25
- code_puppy/tui/models/command_history.py +0 -89
- code_puppy/tui/models/enums.py +0 -24
- code_puppy/tui/screens/__init__.py +0 -15
- code_puppy/tui/screens/help.py +0 -130
- code_puppy/tui/screens/mcp_install_wizard.py +0 -803
- code_puppy/tui/screens/settings.py +0 -290
- code_puppy/tui/screens/tools.py +0 -74
- code_puppy-0.0.169.data/data/code_puppy/models.json +0 -128
- code_puppy-0.0.169.dist-info/RECORD +0 -112
- /code_puppy/{mcp → mcp_}/circuit_breaker.py +0 -0
- /code_puppy/{mcp → mcp_}/error_isolation.py +0 -0
- /code_puppy/{mcp → mcp_}/health_monitor.py +0 -0
- /code_puppy/{mcp → mcp_}/retry_manager.py +0 -0
- /code_puppy/{mcp → mcp_}/status_tracker.py +0 -0
- /code_puppy/{mcp → mcp_}/system_tools.py +0 -0
- {code_puppy-0.0.169.dist-info → code_puppy-0.0.366.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Settings modal screen.
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
from textual import on
|
|
6
|
-
from textual.app import ComposeResult
|
|
7
|
-
from textual.containers import Container
|
|
8
|
-
from textual.screen import ModalScreen
|
|
9
|
-
from textual.widgets import Button, Input, Select, Static
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class SettingsScreen(ModalScreen):
|
|
13
|
-
"""Settings configuration screen."""
|
|
14
|
-
|
|
15
|
-
DEFAULT_CSS = """
|
|
16
|
-
SettingsScreen {
|
|
17
|
-
align: center middle;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
#settings-dialog {
|
|
21
|
-
width: 80;
|
|
22
|
-
height: 33;
|
|
23
|
-
border: thick $primary;
|
|
24
|
-
background: $surface;
|
|
25
|
-
padding: 1;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
#settings-form {
|
|
29
|
-
height: 1fr;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.setting-row {
|
|
33
|
-
layout: horizontal;
|
|
34
|
-
height: 3;
|
|
35
|
-
margin: 0 0 1 0;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.setting-label {
|
|
39
|
-
width: 20;
|
|
40
|
-
text-align: right;
|
|
41
|
-
padding: 1 1 0 0;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.setting-input {
|
|
45
|
-
width: 1fr;
|
|
46
|
-
margin: 0 0 0 1;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/* Additional styling for static input values */
|
|
50
|
-
#yolo-static {
|
|
51
|
-
padding: 1 0 0 0; /* Align text vertically with other inputs */
|
|
52
|
-
color: $success; /* Use success color to emphasize it's enabled */
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
#settings-buttons {
|
|
56
|
-
layout: horizontal;
|
|
57
|
-
height: 3;
|
|
58
|
-
align: center middle;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
#save-button, #cancel-button {
|
|
62
|
-
margin: 0 1;
|
|
63
|
-
}
|
|
64
|
-
"""
|
|
65
|
-
|
|
66
|
-
def __init__(self, **kwargs):
|
|
67
|
-
super().__init__(**kwargs)
|
|
68
|
-
self.settings_data = {}
|
|
69
|
-
|
|
70
|
-
def compose(self) -> ComposeResult:
|
|
71
|
-
with Container(id="settings-dialog"):
|
|
72
|
-
yield Static("⚙️ Settings Configuration", id="settings-title")
|
|
73
|
-
with Container(id="settings-form"):
|
|
74
|
-
with Container(classes="setting-row"):
|
|
75
|
-
yield Static("Puppy Name:", classes="setting-label")
|
|
76
|
-
yield Input(id="puppy-name-input", classes="setting-input")
|
|
77
|
-
|
|
78
|
-
with Container(classes="setting-row"):
|
|
79
|
-
yield Static("Owner Name:", classes="setting-label")
|
|
80
|
-
yield Input(id="owner-name-input", classes="setting-input")
|
|
81
|
-
|
|
82
|
-
with Container(classes="setting-row"):
|
|
83
|
-
yield Static("Model:", classes="setting-label")
|
|
84
|
-
yield Select([], id="model-select", classes="setting-input")
|
|
85
|
-
|
|
86
|
-
with Container(classes="setting-row"):
|
|
87
|
-
yield Static("YOLO Mode:", classes="setting-label")
|
|
88
|
-
yield Static(
|
|
89
|
-
"✅ Enabled (always on in TUI)",
|
|
90
|
-
id="yolo-static",
|
|
91
|
-
classes="setting-input",
|
|
92
|
-
)
|
|
93
|
-
|
|
94
|
-
with Container(classes="setting-row"):
|
|
95
|
-
yield Static("Protected Tokens:", classes="setting-label")
|
|
96
|
-
yield Input(
|
|
97
|
-
id="protected-tokens-input",
|
|
98
|
-
classes="setting-input",
|
|
99
|
-
placeholder="e.g., 50000",
|
|
100
|
-
)
|
|
101
|
-
|
|
102
|
-
with Container(classes="setting-row"):
|
|
103
|
-
yield Static("Compaction Strategy:", classes="setting-label")
|
|
104
|
-
yield Select(
|
|
105
|
-
[
|
|
106
|
-
("Summarization", "summarization"),
|
|
107
|
-
("Truncation", "truncation"),
|
|
108
|
-
],
|
|
109
|
-
id="compaction-strategy-select",
|
|
110
|
-
classes="setting-input",
|
|
111
|
-
)
|
|
112
|
-
|
|
113
|
-
with Container(classes="setting-row"):
|
|
114
|
-
yield Static("Compaction Threshold:", classes="setting-label")
|
|
115
|
-
yield Input(
|
|
116
|
-
id="compaction-threshold-input",
|
|
117
|
-
classes="setting-input",
|
|
118
|
-
placeholder="e.g., 0.85",
|
|
119
|
-
)
|
|
120
|
-
|
|
121
|
-
with Container(id="settings-buttons"):
|
|
122
|
-
yield Button("Save", id="save-button", variant="primary")
|
|
123
|
-
yield Button("Cancel", id="cancel-button")
|
|
124
|
-
|
|
125
|
-
def on_mount(self) -> None:
|
|
126
|
-
"""Load current settings when the screen mounts."""
|
|
127
|
-
from code_puppy.config import (
|
|
128
|
-
get_model_name,
|
|
129
|
-
get_owner_name,
|
|
130
|
-
get_protected_token_count,
|
|
131
|
-
get_puppy_name,
|
|
132
|
-
get_compaction_strategy,
|
|
133
|
-
get_compaction_threshold,
|
|
134
|
-
)
|
|
135
|
-
|
|
136
|
-
# Load current values
|
|
137
|
-
puppy_name_input = self.query_one("#puppy-name-input", Input)
|
|
138
|
-
owner_name_input = self.query_one("#owner-name-input", Input)
|
|
139
|
-
model_select = self.query_one("#model-select", Select)
|
|
140
|
-
protected_tokens_input = self.query_one("#protected-tokens-input", Input)
|
|
141
|
-
compaction_threshold_input = self.query_one(
|
|
142
|
-
"#compaction-threshold-input", Input
|
|
143
|
-
)
|
|
144
|
-
compaction_strategy_select = self.query_one(
|
|
145
|
-
"#compaction-strategy-select", Select
|
|
146
|
-
)
|
|
147
|
-
|
|
148
|
-
puppy_name_input.value = get_puppy_name() or ""
|
|
149
|
-
owner_name_input.value = get_owner_name() or ""
|
|
150
|
-
protected_tokens_input.value = str(get_protected_token_count())
|
|
151
|
-
compaction_threshold_input.value = str(get_compaction_threshold())
|
|
152
|
-
compaction_strategy_select.value = get_compaction_strategy()
|
|
153
|
-
|
|
154
|
-
# Load available models
|
|
155
|
-
self.load_model_options(model_select)
|
|
156
|
-
|
|
157
|
-
# Set current model selection
|
|
158
|
-
current_model = get_model_name()
|
|
159
|
-
model_select.value = current_model
|
|
160
|
-
|
|
161
|
-
# YOLO mode is always enabled in TUI mode
|
|
162
|
-
|
|
163
|
-
def load_model_options(self, model_select):
|
|
164
|
-
"""Load available models into the model select widget."""
|
|
165
|
-
try:
|
|
166
|
-
# Use the same method that interactive mode uses to load models
|
|
167
|
-
|
|
168
|
-
from code_puppy.model_factory import ModelFactory
|
|
169
|
-
|
|
170
|
-
# Load models using the same path and method as interactive mode
|
|
171
|
-
models_data = ModelFactory.load_config()
|
|
172
|
-
|
|
173
|
-
# Create options as (display_name, model_name) tuples
|
|
174
|
-
model_options = []
|
|
175
|
-
for model_name, model_config in models_data.items():
|
|
176
|
-
model_type = model_config.get("type", "unknown")
|
|
177
|
-
display_name = f"{model_name} ({model_type})"
|
|
178
|
-
model_options.append((display_name, model_name))
|
|
179
|
-
|
|
180
|
-
# Set the options on the select widget
|
|
181
|
-
model_select.set_options(model_options)
|
|
182
|
-
|
|
183
|
-
except Exception:
|
|
184
|
-
# Fallback to a basic option if loading fails
|
|
185
|
-
model_select.set_options([("gpt-4.1 (openai)", "gpt-4.1")])
|
|
186
|
-
|
|
187
|
-
@on(Button.Pressed, "#save-button")
|
|
188
|
-
def save_settings(self) -> None:
|
|
189
|
-
"""Save the modified settings."""
|
|
190
|
-
from code_puppy.config import (
|
|
191
|
-
set_config_value,
|
|
192
|
-
set_model_name,
|
|
193
|
-
get_model_context_length,
|
|
194
|
-
)
|
|
195
|
-
|
|
196
|
-
try:
|
|
197
|
-
# Get values from inputs
|
|
198
|
-
puppy_name = self.query_one("#puppy-name-input", Input).value.strip()
|
|
199
|
-
owner_name = self.query_one("#owner-name-input", Input).value.strip()
|
|
200
|
-
selected_model = self.query_one("#model-select", Select).value
|
|
201
|
-
yolo_mode = "true" # Always set to true in TUI mode
|
|
202
|
-
protected_tokens = self.query_one(
|
|
203
|
-
"#protected-tokens-input", Input
|
|
204
|
-
).value.strip()
|
|
205
|
-
compaction_threshold = self.query_one(
|
|
206
|
-
"#compaction-threshold-input", Input
|
|
207
|
-
).value.strip()
|
|
208
|
-
|
|
209
|
-
# Validate and save
|
|
210
|
-
if puppy_name:
|
|
211
|
-
set_config_value("puppy_name", puppy_name)
|
|
212
|
-
if owner_name:
|
|
213
|
-
set_config_value("owner_name", owner_name)
|
|
214
|
-
|
|
215
|
-
# Save model selection
|
|
216
|
-
if selected_model:
|
|
217
|
-
set_model_name(selected_model)
|
|
218
|
-
|
|
219
|
-
set_config_value("yolo_mode", yolo_mode)
|
|
220
|
-
|
|
221
|
-
# Validate and save protected tokens
|
|
222
|
-
if protected_tokens.isdigit():
|
|
223
|
-
tokens_value = int(protected_tokens)
|
|
224
|
-
model_context_length = get_model_context_length()
|
|
225
|
-
max_protected_tokens = int(model_context_length * 0.75)
|
|
226
|
-
|
|
227
|
-
if tokens_value >= 1000: # Minimum validation
|
|
228
|
-
if tokens_value <= max_protected_tokens: # Maximum validation
|
|
229
|
-
set_config_value("protected_token_count", protected_tokens)
|
|
230
|
-
else:
|
|
231
|
-
raise ValueError(
|
|
232
|
-
f"Protected tokens must not exceed 75% of model context length ({max_protected_tokens} tokens for current model)"
|
|
233
|
-
)
|
|
234
|
-
else:
|
|
235
|
-
raise ValueError("Protected tokens must be at least 1000")
|
|
236
|
-
elif protected_tokens: # If not empty but not digit
|
|
237
|
-
raise ValueError("Protected tokens must be a valid number")
|
|
238
|
-
|
|
239
|
-
# Validate and save compaction threshold
|
|
240
|
-
if compaction_threshold:
|
|
241
|
-
try:
|
|
242
|
-
threshold_value = float(compaction_threshold)
|
|
243
|
-
if 0.8 <= threshold_value <= 0.95: # Same bounds as config function
|
|
244
|
-
set_config_value("compaction_threshold", compaction_threshold)
|
|
245
|
-
else:
|
|
246
|
-
raise ValueError(
|
|
247
|
-
"Compaction threshold must be between 0.8 and 0.95"
|
|
248
|
-
)
|
|
249
|
-
except ValueError as ve:
|
|
250
|
-
if "must be between" in str(ve):
|
|
251
|
-
raise ve
|
|
252
|
-
else:
|
|
253
|
-
raise ValueError(
|
|
254
|
-
"Compaction threshold must be a valid decimal number"
|
|
255
|
-
)
|
|
256
|
-
|
|
257
|
-
# Save compaction strategy
|
|
258
|
-
compaction_strategy = self.query_one(
|
|
259
|
-
"#compaction-strategy-select", Select
|
|
260
|
-
).value
|
|
261
|
-
if compaction_strategy in ["summarization", "truncation"]:
|
|
262
|
-
set_config_value("compaction_strategy", compaction_strategy)
|
|
263
|
-
|
|
264
|
-
# Return success message with model change info
|
|
265
|
-
message = "Settings saved successfully!"
|
|
266
|
-
if selected_model:
|
|
267
|
-
message += f" Model switched to: {selected_model}"
|
|
268
|
-
|
|
269
|
-
self.dismiss(
|
|
270
|
-
{
|
|
271
|
-
"success": True,
|
|
272
|
-
"message": message,
|
|
273
|
-
"model_changed": bool(selected_model),
|
|
274
|
-
}
|
|
275
|
-
)
|
|
276
|
-
|
|
277
|
-
except Exception as e:
|
|
278
|
-
self.dismiss(
|
|
279
|
-
{"success": False, "message": f"Error saving settings: {str(e)}"}
|
|
280
|
-
)
|
|
281
|
-
|
|
282
|
-
@on(Button.Pressed, "#cancel-button")
|
|
283
|
-
def cancel_settings(self) -> None:
|
|
284
|
-
"""Cancel settings changes."""
|
|
285
|
-
self.dismiss({"success": False, "message": "Settings cancelled"})
|
|
286
|
-
|
|
287
|
-
def on_key(self, event) -> None:
|
|
288
|
-
"""Handle key events."""
|
|
289
|
-
if event.key == "escape":
|
|
290
|
-
self.cancel_settings()
|
code_puppy/tui/screens/tools.py
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Tools modal screen.
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
from textual import on
|
|
6
|
-
from textual.app import ComposeResult
|
|
7
|
-
from textual.containers import Container, VerticalScroll
|
|
8
|
-
from textual.screen import ModalScreen
|
|
9
|
-
from textual.widgets import Button, Markdown, Static
|
|
10
|
-
|
|
11
|
-
from code_puppy.tools.tools_content import tools_content
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class ToolsScreen(ModalScreen):
|
|
15
|
-
"""Tools modal screen"""
|
|
16
|
-
|
|
17
|
-
DEFAULT_CSS = """
|
|
18
|
-
ToolsScreen {
|
|
19
|
-
align: center middle;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
#tools-dialog {
|
|
23
|
-
width: 95;
|
|
24
|
-
height: 40;
|
|
25
|
-
border: thick $primary;
|
|
26
|
-
background: $surface;
|
|
27
|
-
padding: 1;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
#tools-content {
|
|
31
|
-
height: 1fr;
|
|
32
|
-
margin: 0 0 1 0;
|
|
33
|
-
overflow-y: auto;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
#tools-buttons {
|
|
37
|
-
layout: horizontal;
|
|
38
|
-
height: 3;
|
|
39
|
-
align: center middle;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
#dismiss-button {
|
|
43
|
-
margin: 0 1;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
#tools-markdown {
|
|
47
|
-
margin: 0;
|
|
48
|
-
padding: 0;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/* Style markdown elements for better readability */
|
|
52
|
-
Markdown {
|
|
53
|
-
margin: 0;
|
|
54
|
-
padding: 0;
|
|
55
|
-
}
|
|
56
|
-
"""
|
|
57
|
-
|
|
58
|
-
def compose(self) -> ComposeResult:
|
|
59
|
-
with Container(id="tools-dialog"):
|
|
60
|
-
yield Static("🛠️ Cooper's Toolkit\n", id="tools-title")
|
|
61
|
-
with VerticalScroll(id="tools-content"):
|
|
62
|
-
yield Markdown(tools_content, id="tools-markdown")
|
|
63
|
-
with Container(id="tools-buttons"):
|
|
64
|
-
yield Button("Dismiss", id="dismiss-button", variant="primary")
|
|
65
|
-
|
|
66
|
-
@on(Button.Pressed, "#dismiss-button")
|
|
67
|
-
def dismiss_tools(self) -> None:
|
|
68
|
-
"""Dismiss the tools modal."""
|
|
69
|
-
self.dismiss()
|
|
70
|
-
|
|
71
|
-
def on_key(self, event) -> None:
|
|
72
|
-
"""Handle key events."""
|
|
73
|
-
if event.key == "escape":
|
|
74
|
-
self.dismiss()
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"gpt-5": {
|
|
3
|
-
"type": "openai",
|
|
4
|
-
"name": "gpt-5",
|
|
5
|
-
"context_length": 400000
|
|
6
|
-
},
|
|
7
|
-
"Cerebras-Qwen3-Coder-480b": {
|
|
8
|
-
"type": "cerebras",
|
|
9
|
-
"name": "qwen-3-coder-480b",
|
|
10
|
-
"custom_endpoint": {
|
|
11
|
-
"url": "https://api.cerebras.ai/v1",
|
|
12
|
-
"api_key": "$CEREBRAS_API_KEY"
|
|
13
|
-
},
|
|
14
|
-
"context_length": 131072
|
|
15
|
-
},
|
|
16
|
-
"Cerebras-Qwen3-235b-a22b-instruct-2507": {
|
|
17
|
-
"type": "cerebras",
|
|
18
|
-
"name": "qwen-3-235b-a22b-instruct-2507",
|
|
19
|
-
"custom_endpoint": {
|
|
20
|
-
"url": "https://api.cerebras.ai/v1",
|
|
21
|
-
"api_key": "$CEREBRAS_API_KEY"
|
|
22
|
-
},
|
|
23
|
-
"context_length": 64000
|
|
24
|
-
},
|
|
25
|
-
"Cerebras-gpt-oss-120b": {
|
|
26
|
-
"type": "cerebras",
|
|
27
|
-
"name": "gpt-oss-120b",
|
|
28
|
-
"custom_endpoint": {
|
|
29
|
-
"url": "https://api.cerebras.ai/v1",
|
|
30
|
-
"api_key": "$CEREBRAS_API_KEY"
|
|
31
|
-
},
|
|
32
|
-
"context_length": 131072
|
|
33
|
-
},
|
|
34
|
-
"Cerebras-Qwen-3-32b": {
|
|
35
|
-
"type": "cerebras",
|
|
36
|
-
"name": "qwen-3-32b",
|
|
37
|
-
"custom_endpoint": {
|
|
38
|
-
"url": "https://api.cerebras.ai/v1",
|
|
39
|
-
"api_key": "$CEREBRAS_API_KEY"
|
|
40
|
-
},
|
|
41
|
-
"context_length": 65536
|
|
42
|
-
},
|
|
43
|
-
"claude-4-0-sonnet": {
|
|
44
|
-
"type": "anthropic",
|
|
45
|
-
"name": "claude-sonnet-4-20250514",
|
|
46
|
-
"context_length": 200000
|
|
47
|
-
},
|
|
48
|
-
"o3": {
|
|
49
|
-
"type": "openai",
|
|
50
|
-
"name": "o3",
|
|
51
|
-
"context_length": 200000
|
|
52
|
-
},
|
|
53
|
-
"grok-4": {
|
|
54
|
-
"type": "custom_openai",
|
|
55
|
-
"name": "grok-4",
|
|
56
|
-
"custom_endpoint": {
|
|
57
|
-
"url": "https://api.x.ai/v1",
|
|
58
|
-
"api_key": "$XAI_API_KEY"
|
|
59
|
-
},
|
|
60
|
-
"context_length": 256000
|
|
61
|
-
},
|
|
62
|
-
"grok-code-fast-1": {
|
|
63
|
-
"type": "custom_openai",
|
|
64
|
-
"name": "grok-code-fast-1",
|
|
65
|
-
"custom_endpoint": {
|
|
66
|
-
"url": "https://api.x.ai/v1",
|
|
67
|
-
"api_key": "$XAI_API_KEY"
|
|
68
|
-
},
|
|
69
|
-
"context_length": 256000
|
|
70
|
-
},
|
|
71
|
-
"gemini-2.5-flash-preview-05-20": {
|
|
72
|
-
"type": "gemini",
|
|
73
|
-
"name": "gemini-2.5-flash-preview-05-20",
|
|
74
|
-
"context_length": 1048576
|
|
75
|
-
},
|
|
76
|
-
"gpt-4.1": {
|
|
77
|
-
"type": "openai",
|
|
78
|
-
"name": "gpt-4.1",
|
|
79
|
-
"context_length": 1000000
|
|
80
|
-
},
|
|
81
|
-
"Qwen/Qwen3-235B-A22B-fp8-tput": {
|
|
82
|
-
"type": "custom_openai",
|
|
83
|
-
"name": "Qwen/Qwen3-235B-A22B-fp8-tput",
|
|
84
|
-
"custom_endpoint": {
|
|
85
|
-
"url": "https://api.together.xyz/v1",
|
|
86
|
-
"api_key": "$TOGETHER_API_KEY"
|
|
87
|
-
},
|
|
88
|
-
"context_length": 64000
|
|
89
|
-
},
|
|
90
|
-
"azure-gpt-4.1": {
|
|
91
|
-
"type": "azure_openai",
|
|
92
|
-
"name": "gpt-4.1",
|
|
93
|
-
"api_version": "2024-12-01-preview",
|
|
94
|
-
"api_key": "$AZURE_OPENAI_API_KEY",
|
|
95
|
-
"azure_endpoint": "$AZURE_OPENAI_ENDPOINT",
|
|
96
|
-
"context_length": 128000
|
|
97
|
-
},
|
|
98
|
-
"gpt-4.1-mini": {
|
|
99
|
-
"type": "openai",
|
|
100
|
-
"name": "gpt-4.1-mini",
|
|
101
|
-
"context_length": 128000
|
|
102
|
-
},
|
|
103
|
-
"gpt-4.1-nano": {
|
|
104
|
-
"type": "openai",
|
|
105
|
-
"name": "gpt-4.1-nano",
|
|
106
|
-
"context_length": 128000
|
|
107
|
-
},
|
|
108
|
-
"gpt-4.1-custom": {
|
|
109
|
-
"type": "custom_openai",
|
|
110
|
-
"name": "gpt-4.1-custom",
|
|
111
|
-
"custom_endpoint": {
|
|
112
|
-
"url": "https://my.cute.endpoint:8080",
|
|
113
|
-
"headers": {
|
|
114
|
-
"X-Api-Key": "$OPENAI_API_KEY"
|
|
115
|
-
},
|
|
116
|
-
"ca_certs_path": "/path/to/cert.pem"
|
|
117
|
-
},
|
|
118
|
-
"context_length": 128000
|
|
119
|
-
},
|
|
120
|
-
"ollama-llama3.3": {
|
|
121
|
-
"type": "custom_openai",
|
|
122
|
-
"name": "llama3.3",
|
|
123
|
-
"custom_endpoint": {
|
|
124
|
-
"url": "http://localhost:11434/v1"
|
|
125
|
-
},
|
|
126
|
-
"context_length": 8192
|
|
127
|
-
}
|
|
128
|
-
}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
code_puppy/__init__.py,sha256=ehbM1-wMjNmOXk_DBhhJECFyBv2dRHwwo7ucjHeM68E,107
|
|
2
|
-
code_puppy/__main__.py,sha256=pDVssJOWP8A83iFkxMLY9YteHYat0EyWDQqMkKHpWp4,203
|
|
3
|
-
code_puppy/agent.py,sha256=wCARhq7PcD38c4l83fuXm4Us_6c1TXVa0U7TnBnNPEY,8064
|
|
4
|
-
code_puppy/callbacks.py,sha256=6wYB6K_fGSCkKKEFaYOYkJT45WaV5W_NhUIzcvVH_nU,5060
|
|
5
|
-
code_puppy/config.py,sha256=J8XU0iOPtfzrkDD49b4TdrdHoQmW2kaP-25PPbGGdKU,16386
|
|
6
|
-
code_puppy/http_utils.py,sha256=XJ1ItAW3I4zdJNzybV17Z8Y58NoFyAJEjUg7I69SXlw,8096
|
|
7
|
-
code_puppy/main.py,sha256=tYLfhUjPTJ-4S1r-pr-jSbn6kIU1iYvt2Z8lxI7zDFY,22220
|
|
8
|
-
code_puppy/message_history_processor.py,sha256=zzeOSUC1Wpsry-z2MD6pQWk2wt1axGSOKaGR2v22_qQ,18825
|
|
9
|
-
code_puppy/model_factory.py,sha256=z9vQbcGllgMwU0On8rPvzYxkygW2Uyd3NJmRzbKv-is,13759
|
|
10
|
-
code_puppy/models.json,sha256=iXmLZGflnQcu2DRh4WUlgAhoXdvoxUc7KBhB8YxawXM,3088
|
|
11
|
-
code_puppy/reopenable_async_client.py,sha256=4UJRaMp5np8cbef9F0zKQ7TPKOfyf5U-Kv-0zYUWDho,8274
|
|
12
|
-
code_puppy/round_robin_model.py,sha256=SEN3VSwTgC5wHjx2sZsHQLPWOycf4jGwzB-EydgqkdY,5643
|
|
13
|
-
code_puppy/state_management.py,sha256=o4mNBCPblRyVrNBH-992-1YqffgH6AKHU7iZRqgP1LI,5925
|
|
14
|
-
code_puppy/status_display.py,sha256=F6eEAkGePDp4StM2BWj-uLLQTDGtJrf0IufzCeP1rRg,8336
|
|
15
|
-
code_puppy/summarization_agent.py,sha256=kos4_YK-l_YjYRq4Fs4X5YoTUbmAcDhhPqefL-rdenI,3197
|
|
16
|
-
code_puppy/version_checker.py,sha256=bjLDmgGPrl7XnYwX1u13O8uFlsfikV90PK6nbA9Z9QU,1150
|
|
17
|
-
code_puppy/agents/__init__.py,sha256=SwtHGNG1GIgDBv7y3EGIXOXEWrG_Ou7fEknNgFbrHv8,594
|
|
18
|
-
code_puppy/agents/agent_code_puppy.py,sha256=sbuQxLzlkMbPOyLbILbXOAHecRsxbFdQt13HJ_GEqQo,7972
|
|
19
|
-
code_puppy/agents/agent_creator_agent.py,sha256=chxZlvvl_12ol1d9V2WF7cjE1Px9d-S6NEH3CaKg_lc,23270
|
|
20
|
-
code_puppy/agents/agent_manager.py,sha256=nXvro6fpX8KA-NedRoVJuhJW966trrePOrH4eAnqq40,17034
|
|
21
|
-
code_puppy/agents/agent_orchestrator.json,sha256=Iqnc0p6ICoAlUTMkEsi1XXMXJi4pdxVnWZUMaih6s5o,1267
|
|
22
|
-
code_puppy/agents/base_agent.py,sha256=XYSff6IQX9Z6C7hPVbN_YXC2xfjwd268e2jtG3ZGnVk,3450
|
|
23
|
-
code_puppy/agents/json_agent.py,sha256=y6AYE3Fx9LhmemcPzt46d7359MNnkGIjU83YBGNer2g,4533
|
|
24
|
-
code_puppy/agents/runtime_manager.py,sha256=fUOBpmETo3wTyLc5wWBfGKSX1HFRQWSpuwxYAOyA-_8,10059
|
|
25
|
-
code_puppy/command_line/__init__.py,sha256=y7WeRemfYppk8KVbCGeAIiTuiOszIURCDjOMZv_YRmU,45
|
|
26
|
-
code_puppy/command_line/command_handler.py,sha256=Owf5ZFipN25XTy_wNrw7nOb22T0D0WVRxnGdB3A-4Cs,25960
|
|
27
|
-
code_puppy/command_line/file_path_completion.py,sha256=gw8NpIxa6GOpczUJRyh7VNZwoXKKn-yvCqit7h2y6Gg,2931
|
|
28
|
-
code_puppy/command_line/load_context_completion.py,sha256=6eZxV6Bs-EFwZjN93V8ZDZUC-6RaWxvtZk-04Wtikyw,2240
|
|
29
|
-
code_puppy/command_line/meta_command_handler.py,sha256=80aK5JQOaqjt149qBmSsM02uy2Cikkee8zaQnu5u2KQ,5712
|
|
30
|
-
code_puppy/command_line/model_picker_completion.py,sha256=adxp3NZaDV67YqaGv0SG7WVvOTXN0UwkkLqxTsknAvs,4126
|
|
31
|
-
code_puppy/command_line/motd.py,sha256=PEdkp3ZnydVfvd7mNJylm8YyFNUKg9jmY6uwkA1em8c,2152
|
|
32
|
-
code_puppy/command_line/prompt_toolkit_completion.py,sha256=PLb1Yt_65iQI2mzPEPxPsSaRww5Ur951Qn-K-TLMCGQ,10006
|
|
33
|
-
code_puppy/command_line/utils.py,sha256=7eyxDHjPjPB9wGDJQQcXV_zOsGdYsFgI0SGCetVmTqE,1251
|
|
34
|
-
code_puppy/command_line/mcp/__init__.py,sha256=0-OQuwjq_pLiTVJ1_NrirVwdRerghyKs_MTZkwPC7YY,315
|
|
35
|
-
code_puppy/command_line/mcp/add_command.py,sha256=RghGmOCjwwYJfrbLiV5UZojMA4-FNPlM04LKci0rpAw,6415
|
|
36
|
-
code_puppy/command_line/mcp/base.py,sha256=nIDv0S5LmGuYtYjVAa9yw3NuSvldxDB17YEEvhbEL1s,889
|
|
37
|
-
code_puppy/command_line/mcp/handler.py,sha256=ZPWNfJEwGurNQh4KUCRRRsHXuB0kHlaGG4oLN1sFhBg,4412
|
|
38
|
-
code_puppy/command_line/mcp/help_command.py,sha256=Z55-ObpUQFMdqMWAkSJkRi_v2uZhDFVxg6DcIdjVY6Q,5250
|
|
39
|
-
code_puppy/command_line/mcp/install_command.py,sha256=AgrEp-MynkbLsrOZL54dod5jUsc0Zw_VbHcS3EFz8N4,8826
|
|
40
|
-
code_puppy/command_line/mcp/list_command.py,sha256=9ggXgoqMyzCp9_XGMLbA0WOdIDTynRfJC0VRxnjG7uk,3178
|
|
41
|
-
code_puppy/command_line/mcp/logs_command.py,sha256=x_QsVGPpI5XY7RCZtiNFegc6R3csiwF_IEB_Rh2575w,4453
|
|
42
|
-
code_puppy/command_line/mcp/remove_command.py,sha256=MrWmXQ9jZTq1wrohFDO3ls0a1faTHCqRZocN-ynTzh8,2753
|
|
43
|
-
code_puppy/command_line/mcp/restart_command.py,sha256=-arZhayEVjTg3WErQKiBoFxbpbQcFlPXTzUI5o8AQLg,3254
|
|
44
|
-
code_puppy/command_line/mcp/search_command.py,sha256=oBJaCMo07IQJyn4X17iP_Ek--WM61W_g_IoUjlO4qjs,4112
|
|
45
|
-
code_puppy/command_line/mcp/start_all_command.py,sha256=Sfkx83X0KCid9lDGyVS7nfWoGvRCIgZ3JhU3aBsR6tk,4294
|
|
46
|
-
code_puppy/command_line/mcp/start_command.py,sha256=r00onOpfSSL-gtJLDOvmD-8G4RZhhmd-nv3TyIWGMUI,3350
|
|
47
|
-
code_puppy/command_line/mcp/status_command.py,sha256=xInCR0WDUBfoIJzMYC8rzDmj_muIz7YAs-e5yoXFGEo,6638
|
|
48
|
-
code_puppy/command_line/mcp/stop_all_command.py,sha256=-HbIE-WXzfWEMFVZhFtxf7pfeTh1F8LrzQiQyWL4R2I,3715
|
|
49
|
-
code_puppy/command_line/mcp/stop_command.py,sha256=zuZO8pIP2Ix11LATf-cwwX3fPFIGAbRDaZ6qnfPTqLY,2594
|
|
50
|
-
code_puppy/command_line/mcp/test_command.py,sha256=Pjod77DYRcA9WDZcxaCe6AUgpEXKJr42QRkxMhSjXhM,3689
|
|
51
|
-
code_puppy/command_line/mcp/utils.py,sha256=FqaeJMPEp39suMq_R3_xb-e8zcNpw1Rcluwvdgum3Uo,3624
|
|
52
|
-
code_puppy/command_line/mcp/wizard_utils.py,sha256=HabnT3y6EWLP6w1llRwVO_P25Wi15bYFddTM_2kxAq8,11073
|
|
53
|
-
code_puppy/mcp/__init__.py,sha256=UZ6ZYEIN8At3Jq88ZTkrVQHswNMxHyIBz4hbOn71osk,1444
|
|
54
|
-
code_puppy/mcp/async_lifecycle.py,sha256=pTQrwQCVgjad8EJeRTSHtIeSQRgT_8r5BeLv-1SgKog,7772
|
|
55
|
-
code_puppy/mcp/blocking_startup.py,sha256=bgYln3j12kuHoBsoCUzCjVcTdcoSIAx8kSaOJVwUaRg,13484
|
|
56
|
-
code_puppy/mcp/captured_stdio_server.py,sha256=ubINgtKdd5-oOLR7MRuavUqd40iQFJk2YCNtTFYeI5Q,8948
|
|
57
|
-
code_puppy/mcp/circuit_breaker.py,sha256=a83YwXux9h4R6zBWBUrCIqtp2ffyl7JZEoK2tErG_0I,8601
|
|
58
|
-
code_puppy/mcp/config_wizard.py,sha256=SIsm8uhDInfRYy_2W8wPIZcmoxk24680ikhMT93VuvQ,16481
|
|
59
|
-
code_puppy/mcp/dashboard.py,sha256=y6t6trrBZU-mr8W1_29VN5DeZI8VYvOsKNz1EXxlvUg,9022
|
|
60
|
-
code_puppy/mcp/error_isolation.py,sha256=mpPBiH17zTXPsOEAn9WmkbwQwnt4gmgiaWv87JBJbUo,12426
|
|
61
|
-
code_puppy/mcp/health_monitor.py,sha256=n5R6EeYOYbUucUFe74qGWCU3g6Mep5UEQbLF0wbT0dU,19688
|
|
62
|
-
code_puppy/mcp/managed_server.py,sha256=EZwWsQGxzgnjL6TGJTm58Pj6fw7kkYpLuolYQY-GbXY,14256
|
|
63
|
-
code_puppy/mcp/manager.py,sha256=Yx9zxukdXgdPDgeJiiQPYlPae0zQPofHWB-axuoMNc8,26426
|
|
64
|
-
code_puppy/mcp/registry.py,sha256=IvbIL-pETQ7HS7iRgsoT5j7eY8TOJXqYczSiigT2ofU,15752
|
|
65
|
-
code_puppy/mcp/retry_manager.py,sha256=evVxbtrsHNyo8UoI7zpO-NVDegibn82RLlgN8VKewA8,10665
|
|
66
|
-
code_puppy/mcp/server_registry_catalog.py,sha256=U0HJMgEeF8Ntq3ZWepA0Z9t8ZG82Toa9JCGBjiDAzh8,38760
|
|
67
|
-
code_puppy/mcp/status_tracker.py,sha256=uekxrzkzIWrv3OfSVgblaPuoGFcAh_dBYwCcaHZ_CrM,12183
|
|
68
|
-
code_puppy/mcp/system_tools.py,sha256=7_oR8k0c8YjtCcYF9g7A946oAGuKOf_i-92aJH7VmlQ,7331
|
|
69
|
-
code_puppy/mcp/examples/retry_example.py,sha256=En3LiqECYmG00gWaa7K9L9vvGk1VJyYtKWcv3p3gzCc,7220
|
|
70
|
-
code_puppy/messaging/__init__.py,sha256=h2eZ7nJblKF71_dNUIBj3vL5RDw7WGy8nh6T_EYVrcA,1176
|
|
71
|
-
code_puppy/messaging/message_queue.py,sha256=CDVpstLee_RbCBeJWv2eON3c3qhlEISf2i9aSXJTLU4,12600
|
|
72
|
-
code_puppy/messaging/queue_console.py,sha256=hf32bKfAOdAaxYuARnmDuWhq4ET77xMWDvu5_T2JggY,10912
|
|
73
|
-
code_puppy/messaging/renderers.py,sha256=9VOpVmu7emyyg1CXgm17u4IzMNcLHvueBl7G14pLQho,16123
|
|
74
|
-
code_puppy/messaging/spinner/__init__.py,sha256=9mkXPYojafydBOAMh9ZUrB4X6uH5Iqz_-E-Obpd72ko,1365
|
|
75
|
-
code_puppy/messaging/spinner/console_spinner.py,sha256=DhEXjD37_FuJwcNNfIP2D0y1ruGlFmuCCuaUW4DFrNg,6932
|
|
76
|
-
code_puppy/messaging/spinner/spinner_base.py,sha256=474qMrTYpNfWcprFzmhaOJEOC-2rRHpTFCLsnl54bXA,1689
|
|
77
|
-
code_puppy/messaging/spinner/textual_spinner.py,sha256=Omx9A-FSPkxYDMYgBXgYMBQnK-DMlyqLOgkFVG8cmo4,3465
|
|
78
|
-
code_puppy/plugins/__init__.py,sha256=fksDqMUiXPJ5WNuMsYsVR8ulueQRCXPlvECEyicHPtQ,1312
|
|
79
|
-
code_puppy/tools/__init__.py,sha256=YiiXRqxU1BEJ5t0Oe163lSqOneI9sKtwDW0swCPgBt4,2119
|
|
80
|
-
code_puppy/tools/agent_tools.py,sha256=bHMrFIbYRhuubR41G_XdLsk3cUKWfIPl2O4bVzo2pE0,5591
|
|
81
|
-
code_puppy/tools/command_runner.py,sha256=TeKbUY1BeHpUEYtBbmEXnYd4ESI-RGNXRlI-7I1UNHU,22427
|
|
82
|
-
code_puppy/tools/common.py,sha256=pL-9xcRs3rxU7Fl9X9EUgbDp2-csh2LLJ5DHH_KAHKY,10596
|
|
83
|
-
code_puppy/tools/file_modifications.py,sha256=EaDWcv6gi8wAvpgyeJdKSKPWg9fTpZoEkxQiLCE6rn4,23218
|
|
84
|
-
code_puppy/tools/file_operations.py,sha256=dEnsGCbDF12ctegCm9Kiu-mgNCrvopf64ij_CQbikW4,32460
|
|
85
|
-
code_puppy/tools/tools_content.py,sha256=bsBqW-ppd1XNAS_g50B3UHDQBWEALC1UneH6-afz1zo,2365
|
|
86
|
-
code_puppy/tui/__init__.py,sha256=XesAxIn32zLPOmvpR2wIDxDAnnJr81a5pBJB4cZp1Xs,321
|
|
87
|
-
code_puppy/tui/app.py,sha256=nPOzwlusjdWzBfu__EbC3Q0etkPrqRq-2g-mk4IcfG4,39378
|
|
88
|
-
code_puppy/tui/messages.py,sha256=zQoToWI0eWdT36NEsY6RdCFzcDfAmfvoPlHv8jiCbgo,720
|
|
89
|
-
code_puppy/tui/components/__init__.py,sha256=uj5pnk3s6SEN3SbFI0ZnzaA2KK1NNg8TfUj6U-Z732U,455
|
|
90
|
-
code_puppy/tui/components/chat_view.py,sha256=NfyNXuN2idPht1rKJB4YhHVXb1AIRNO5q_nLdt8Ocug,19913
|
|
91
|
-
code_puppy/tui/components/command_history_modal.py,sha256=pUPEQvoCWa2iUnuMgNwO22y8eUbyw0HpcPH3wAosHvU,7097
|
|
92
|
-
code_puppy/tui/components/copy_button.py,sha256=E4-OJYk5YNzDf-E81NyiVGKsTRPrUX-RnQ8qFuVnabw,4375
|
|
93
|
-
code_puppy/tui/components/custom_widgets.py,sha256=y-ZodibwL_GNaWntmFMn7eeC93wJNss590D43rGMO6A,2122
|
|
94
|
-
code_puppy/tui/components/human_input_modal.py,sha256=isj-zrSIcK5iy3L7HJNgDFWN1zhxY4f3zvp4krbs07E,5424
|
|
95
|
-
code_puppy/tui/components/input_area.py,sha256=R4R32eXPZ2R8KFisIbldNGq60KMk7kCxWrdbeTgJUr8,4395
|
|
96
|
-
code_puppy/tui/components/sidebar.py,sha256=nGtCiYzZalPmiFaJ4dwj2S4EJBu5wQZVzhoigYYY7U4,10369
|
|
97
|
-
code_puppy/tui/components/status_bar.py,sha256=GgznJqF8Wk6XkurBuKohLyu75eT_ucBTvl9oPcySmnM,6338
|
|
98
|
-
code_puppy/tui/models/__init__.py,sha256=5Eq7BMibz-z_t_v7B4H4tCdKRG41i2CaCuNQf_lteAE,140
|
|
99
|
-
code_puppy/tui/models/chat_message.py,sha256=2fSqsl4EHKgGsi_cVKWBbFq1NQwZyledGuJ9djovtLY,477
|
|
100
|
-
code_puppy/tui/models/command_history.py,sha256=bPWr_xnyQvjG5tPg_5pwqlEzn2fR170HlvBJwAXRpAE,2895
|
|
101
|
-
code_puppy/tui/models/enums.py,sha256=1ulsei95Gxy4r1sk-m-Sm5rdmejYCGRI-YtUwJmKFfM,501
|
|
102
|
-
code_puppy/tui/screens/__init__.py,sha256=tJ00d0aYQ9kzOGHRChqy6cCQ6JUKKXBzLUTEbk_eA2Y,286
|
|
103
|
-
code_puppy/tui/screens/help.py,sha256=eJuPaOOCp7ZSUlecearqsuX6caxWv7NQszUh0tZJjBM,3232
|
|
104
|
-
code_puppy/tui/screens/mcp_install_wizard.py,sha256=xqwN5omltMkfxWZwXj3D2PbXbtrxUi1dT0XT77oxOKk,27685
|
|
105
|
-
code_puppy/tui/screens/settings.py,sha256=GMpv-qa08rorAE9mj3AjmqjZFPhmeJ_GWd-DBHG6iAA,10671
|
|
106
|
-
code_puppy/tui/screens/tools.py,sha256=3pr2Xkpa9Js6Yhf1A3_wQVRzFOui-KDB82LwrsdBtyk,1715
|
|
107
|
-
code_puppy-0.0.169.data/data/code_puppy/models.json,sha256=iXmLZGflnQcu2DRh4WUlgAhoXdvoxUc7KBhB8YxawXM,3088
|
|
108
|
-
code_puppy-0.0.169.dist-info/METADATA,sha256=-cW4srdgLTHw8gOC4LFKiZ6RjmO9SQVKRHnp8vl8N3s,20039
|
|
109
|
-
code_puppy-0.0.169.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
110
|
-
code_puppy-0.0.169.dist-info/entry_points.txt,sha256=d8YkBvIUxF-dHNJAj-x4fPEqizbY5d_TwvYpc01U5kw,58
|
|
111
|
-
code_puppy-0.0.169.dist-info/licenses/LICENSE,sha256=31u8x0SPgdOq3izJX41kgFazWsM43zPEF9eskzqbJMY,1075
|
|
112
|
-
code_puppy-0.0.169.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|