code-puppy 0.0.323__tar.gz → 0.0.361__tar.gz
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-0.0.323 → code_puppy-0.0.361}/.gitignore +1 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/PKG-INFO +37 -58
- {code_puppy-0.0.323 → code_puppy-0.0.361}/README.md +31 -55
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/__init__.py +2 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/agent_manager.py +49 -0
- code_puppy-0.0.361/code_puppy/agents/agent_pack_leader.py +383 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/agent_qa_kitten.py +12 -7
- code_puppy-0.0.361/code_puppy/agents/agent_terminal_qa.py +323 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/base_agent.py +74 -263
- code_puppy-0.0.361/code_puppy/agents/event_stream_handler.py +350 -0
- code_puppy-0.0.361/code_puppy/agents/pack/__init__.py +34 -0
- code_puppy-0.0.361/code_puppy/agents/pack/bloodhound.py +304 -0
- code_puppy-0.0.361/code_puppy/agents/pack/husky.py +321 -0
- code_puppy-0.0.361/code_puppy/agents/pack/retriever.py +393 -0
- code_puppy-0.0.361/code_puppy/agents/pack/shepherd.py +348 -0
- code_puppy-0.0.361/code_puppy/agents/pack/terrier.py +287 -0
- code_puppy-0.0.361/code_puppy/agents/pack/watchdog.py +367 -0
- code_puppy-0.0.361/code_puppy/agents/subagent_stream_handler.py +276 -0
- code_puppy-0.0.361/code_puppy/api/__init__.py +13 -0
- code_puppy-0.0.361/code_puppy/api/app.py +169 -0
- code_puppy-0.0.361/code_puppy/api/main.py +21 -0
- code_puppy-0.0.361/code_puppy/api/pty_manager.py +446 -0
- code_puppy-0.0.361/code_puppy/api/routers/__init__.py +12 -0
- code_puppy-0.0.361/code_puppy/api/routers/agents.py +36 -0
- code_puppy-0.0.361/code_puppy/api/routers/commands.py +217 -0
- code_puppy-0.0.361/code_puppy/api/routers/config.py +74 -0
- code_puppy-0.0.361/code_puppy/api/routers/sessions.py +232 -0
- code_puppy-0.0.361/code_puppy/api/templates/terminal.html +361 -0
- code_puppy-0.0.361/code_puppy/api/websocket.py +154 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/callbacks.py +73 -0
- code_puppy-0.0.361/code_puppy/claude_cache_client.py +586 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/cli_runner.py +156 -35
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/add_model_menu.py +23 -9
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/autosave_menu.py +23 -24
- code_puppy-0.0.361/code_puppy/command_line/clipboard.py +527 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/colors_menu.py +5 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/config_commands.py +24 -1
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/core_commands.py +170 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/diff_menu.py +5 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/catalog_server_installer.py +5 -6
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/custom_server_form.py +58 -19
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/custom_server_installer.py +8 -9
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/handler.py +0 -2
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/help_command.py +1 -5
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/install_menu.py +5 -1
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/start_command.py +36 -18
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/model_settings_menu.py +5 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/motd.py +13 -7
- code_puppy-0.0.361/code_puppy/command_line/onboarding_slides.py +179 -0
- code_puppy-0.0.361/code_puppy/command_line/onboarding_wizard.py +340 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/prompt_toolkit_completion.py +124 -0
- code_puppy-0.0.361/code_puppy/command_line/utils.py +93 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/config.py +69 -64
- code_puppy-0.0.361/code_puppy/http_utils.py +338 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/keymap.py +10 -8
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/async_lifecycle.py +35 -4
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/managed_server.py +49 -24
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/manager.py +81 -52
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/messaging/__init__.py +15 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/messaging/message_queue.py +11 -23
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/messaging/messages.py +30 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/messaging/queue_console.py +1 -1
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/messaging/rich_renderer.py +150 -23
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/messaging/spinner/__init__.py +20 -2
- code_puppy-0.0.361/code_puppy/messaging/subagent_console.py +461 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/model_factory.py +102 -15
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/model_utils.py +54 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/models.json +4 -4
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/__init__.py +12 -0
- code_puppy-0.0.361/code_puppy/plugins/antigravity_oauth/__init__.py +10 -0
- code_puppy-0.0.361/code_puppy/plugins/antigravity_oauth/accounts.py +406 -0
- code_puppy-0.0.361/code_puppy/plugins/antigravity_oauth/antigravity_model.py +739 -0
- code_puppy-0.0.361/code_puppy/plugins/antigravity_oauth/config.py +42 -0
- code_puppy-0.0.361/code_puppy/plugins/antigravity_oauth/constants.py +136 -0
- code_puppy-0.0.361/code_puppy/plugins/antigravity_oauth/oauth.py +478 -0
- code_puppy-0.0.361/code_puppy/plugins/antigravity_oauth/register_callbacks.py +406 -0
- code_puppy-0.0.361/code_puppy/plugins/antigravity_oauth/storage.py +271 -0
- code_puppy-0.0.361/code_puppy/plugins/antigravity_oauth/test_plugin.py +319 -0
- code_puppy-0.0.361/code_puppy/plugins/antigravity_oauth/token.py +167 -0
- code_puppy-0.0.361/code_puppy/plugins/antigravity_oauth/transport.py +665 -0
- code_puppy-0.0.361/code_puppy/plugins/antigravity_oauth/utils.py +169 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/chatgpt_oauth/register_callbacks.py +2 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/claude_code_oauth/register_callbacks.py +2 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/claude_code_oauth/utils.py +126 -7
- code_puppy-0.0.361/code_puppy/plugins/frontend_emitter/__init__.py +25 -0
- code_puppy-0.0.361/code_puppy/plugins/frontend_emitter/emitter.py +121 -0
- code_puppy-0.0.361/code_puppy/plugins/frontend_emitter/register_callbacks.py +261 -0
- code_puppy-0.0.361/code_puppy/prompts/antigravity_system_prompt.md +1 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/reopenable_async_client.py +8 -8
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/status_display.py +6 -2
- code_puppy-0.0.361/code_puppy/terminal_utils.py +418 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/tools/__init__.py +37 -1
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/tools/agent_tools.py +139 -36
- code_puppy-0.0.361/code_puppy/tools/browser/__init__.py +37 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/tools/browser/browser_control.py +6 -6
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/tools/browser/browser_interactions.py +21 -20
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/tools/browser/browser_locators.py +9 -9
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/tools/browser/browser_navigation.py +7 -7
- code_puppy-0.0.361/code_puppy/tools/browser/browser_screenshot.py +179 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/tools/browser/browser_scripts.py +15 -13
- code_puppy-0.0.361/code_puppy/tools/browser/camoufox_manager.py +397 -0
- code_puppy-0.0.361/code_puppy/tools/browser/chromium_terminal_manager.py +259 -0
- code_puppy-0.0.361/code_puppy/tools/browser/terminal_command_tools.py +521 -0
- code_puppy-0.0.361/code_puppy/tools/browser/terminal_screenshot_tools.py +556 -0
- code_puppy-0.0.361/code_puppy/tools/browser/terminal_tools.py +525 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/tools/command_runner.py +335 -155
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/tools/common.py +179 -10
- code_puppy-0.0.361/code_puppy/tools/display.py +84 -0
- code_puppy-0.0.361/code_puppy/tools/subagent_context.py +158 -0
- code_puppy-0.0.361/code_puppy/uvx_detection.py +242 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/pyproject.toml +6 -3
- code_puppy-0.0.323/code_puppy/claude_cache_client.py +0 -165
- code_puppy-0.0.323/code_puppy/command_line/mcp/add_command.py +0 -170
- code_puppy-0.0.323/code_puppy/command_line/utils.py +0 -39
- code_puppy-0.0.323/code_puppy/http_utils.py +0 -416
- code_puppy-0.0.323/code_puppy/terminal_utils.py +0 -126
- code_puppy-0.0.323/code_puppy/tools/browser/__init__.py +0 -0
- code_puppy-0.0.323/code_puppy/tools/browser/browser_screenshot.py +0 -241
- code_puppy-0.0.323/code_puppy/tools/browser/camoufox_manager.py +0 -235
- code_puppy-0.0.323/code_puppy/tools/browser/vqa_agent.py +0 -90
- {code_puppy-0.0.323 → code_puppy-0.0.361}/LICENSE +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/__init__.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/__main__.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/agent_c_reviewer.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/agent_code_puppy.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/agent_code_reviewer.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/agent_cpp_reviewer.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/agent_creator_agent.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/agent_golang_reviewer.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/agent_javascript_reviewer.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/agent_planning.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/agent_python_programmer.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/agent_python_reviewer.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/agent_qa_expert.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/agent_security_auditor.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/agent_typescript_reviewer.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/json_agent.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/agents/prompt_reviewer.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/chatgpt_codex_client.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/__init__.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/attachments.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/command_handler.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/command_registry.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/file_path_completion.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/load_context_completion.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/__init__.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/base.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/edit_command.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/install_command.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/list_command.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/logs_command.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/remove_command.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/restart_command.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/search_command.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/start_all_command.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/status_command.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/stop_all_command.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/stop_command.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/test_command.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/utils.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp/wizard_utils.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/mcp_completion.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/model_picker_completion.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/pin_command_completion.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/command_line/session_commands.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/error_logging.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/gemini_code_assist.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/main.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/__init__.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/blocking_startup.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/captured_stdio_server.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/circuit_breaker.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/config_wizard.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/dashboard.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/error_isolation.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/examples/retry_example.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/health_monitor.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/mcp_logs.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/registry.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/retry_manager.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/server_registry_catalog.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/status_tracker.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/mcp_/system_tools.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/messaging/bus.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/messaging/commands.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/messaging/markdown_patches.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/messaging/renderers.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/messaging/spinner/console_spinner.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/messaging/spinner/spinner_base.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/models_dev_api.json +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/models_dev_parser.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/chatgpt_oauth/__init__.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/chatgpt_oauth/config.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/chatgpt_oauth/oauth_flow.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/chatgpt_oauth/test_plugin.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/chatgpt_oauth/utils.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/claude_code_oauth/README.md +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/claude_code_oauth/SETUP.md +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/claude_code_oauth/__init__.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/claude_code_oauth/config.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/claude_code_oauth/test_plugin.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/customizable_commands/__init__.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/customizable_commands/register_callbacks.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/example_custom_command/README.md +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/example_custom_command/register_callbacks.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/file_permission_handler/__init__.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/file_permission_handler/register_callbacks.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/oauth_puppy_html.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/shell_safety/__init__.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/shell_safety/agent_shell_safety.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/shell_safety/command_cache.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/plugins/shell_safety/register_callbacks.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/prompts/codex_system_prompt.md +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/pydantic_patches.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/round_robin_model.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/session_storage.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/summarization_agent.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/tools/browser/browser_workflows.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/tools/file_modifications.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/tools/file_operations.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/tools/tools_content.py +0 -0
- {code_puppy-0.0.323 → code_puppy-0.0.361}/code_puppy/version_checker.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-puppy
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.361
|
|
4
4
|
Summary: Code generation agent
|
|
5
5
|
Project-URL: repository, https://github.com/mpfaffenberger/code_puppy
|
|
6
6
|
Project-URL: HomePage, https://github.com/mpfaffenberger/code_puppy
|
|
@@ -17,11 +17,12 @@ Classifier: Topic :: Software Development :: Code Generators
|
|
|
17
17
|
Requires-Python: <3.14,>=3.11
|
|
18
18
|
Requires-Dist: camoufox>=0.4.11
|
|
19
19
|
Requires-Dist: dbos>=2.5.0
|
|
20
|
-
Requires-Dist: fastapi>=0.
|
|
20
|
+
Requires-Dist: fastapi>=0.109.0
|
|
21
21
|
Requires-Dist: httpx[http2]>=0.24.1
|
|
22
22
|
Requires-Dist: json-repair>=0.46.2
|
|
23
23
|
Requires-Dist: logfire>=0.7.1
|
|
24
24
|
Requires-Dist: openai>=1.99.1
|
|
25
|
+
Requires-Dist: pillow>=10.0.0
|
|
25
26
|
Requires-Dist: playwright>=1.40.0
|
|
26
27
|
Requires-Dist: prompt-toolkit>=3.0.52
|
|
27
28
|
Requires-Dist: pydantic-ai==1.25.0
|
|
@@ -34,7 +35,9 @@ Requires-Dist: rich>=13.4.2
|
|
|
34
35
|
Requires-Dist: ripgrep==14.1.0
|
|
35
36
|
Requires-Dist: ruff>=0.11.11
|
|
36
37
|
Requires-Dist: tenacity>=8.2.0
|
|
37
|
-
Requires-Dist:
|
|
38
|
+
Requires-Dist: termflow-md>=0.1.8
|
|
39
|
+
Requires-Dist: uvicorn[standard]>=0.27.0
|
|
40
|
+
Requires-Dist: websockets>=12.0
|
|
38
41
|
Description-Content-Type: text/markdown
|
|
39
42
|
|
|
40
43
|
<div align="center">
|
|
@@ -44,20 +47,18 @@ Description-Content-Type: text/markdown
|
|
|
44
47
|
**🐶✨The sassy AI code agent that makes IDEs look outdated** ✨🐶
|
|
45
48
|
|
|
46
49
|
[](https://pypi.org/project/code-puppy/)
|
|
47
|
-
[](https://pypi.org/project/code-puppy/)
|
|
48
51
|
[](https://python.org)
|
|
49
52
|
[](LICENSE)
|
|
50
53
|
[](https://github.com/mpfaffenberger/code_puppy/actions)
|
|
51
|
-
[](https://github.com/mpfaffenberger/code_puppy)
|
|
52
|
-
[](https://github.com/psf/black)
|
|
53
54
|
[](https://github.com/mpfaffenberger/code_puppy/tests)
|
|
54
55
|
|
|
55
|
-
[](https://openai.com)
|
|
56
|
+
[](https://openai.com)
|
|
56
57
|
[](https://ai.google.dev/)
|
|
57
58
|
[](https://anthropic.com)
|
|
58
|
-
[](https://synthetic.new)
|
|
59
|
+
[](https://cerebras.ai)
|
|
60
|
+
[](https://z.ai/)
|
|
61
|
+
[](https://synthetic.new)
|
|
61
62
|
|
|
62
63
|
[](https://github.com/mpfaffenberger/code_puppy)
|
|
63
64
|
[](https://github.com/pydantic/pydantic-ai)
|
|
@@ -67,6 +68,9 @@ Description-Content-Type: text/markdown
|
|
|
67
68
|
[](https://github.com/mpfaffenberger/code_puppy/stargazers)
|
|
68
69
|
[](https://github.com/mpfaffenberger/code_puppy/network)
|
|
69
70
|
|
|
71
|
+
[](https://discord.gg/SqYAaXVy)
|
|
72
|
+
[](https://code-puppy.dev)
|
|
73
|
+
|
|
70
74
|
**[⭐ Star this repo if you hate expensive IDEs! ⭐](#quick-start)**
|
|
71
75
|
|
|
72
76
|
*"Who needs an IDE when you have 1024 angry puppies?"* - Someone, probably.
|
|
@@ -100,66 +104,32 @@ uvx code-puppy -i
|
|
|
100
104
|
|
|
101
105
|
### UV (Recommended)
|
|
102
106
|
|
|
107
|
+
#### macOS / Linux
|
|
108
|
+
|
|
103
109
|
```bash
|
|
104
110
|
# Install UV if you don't have it
|
|
105
111
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
106
112
|
|
|
107
|
-
|
|
108
|
-
echo 'export UV_MANAGED_PYTHON=1' >> ~/.zshrc # or ~/.bashrc
|
|
109
|
-
source ~/.zshrc # or ~/.bashrc
|
|
110
|
-
|
|
111
|
-
# Install and run code-puppy
|
|
112
|
-
uvx code-puppy -i
|
|
113
|
+
uvx code-puppy
|
|
113
114
|
```
|
|
114
115
|
|
|
115
|
-
|
|
116
|
+
#### Windows
|
|
116
117
|
|
|
117
|
-
|
|
118
|
+
On Windows, we recommend installing code-puppy as a global tool for the best experience with keyboard shortcuts (Ctrl+C/Ctrl+X cancellation):
|
|
118
119
|
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
*Note: pip installation requires your system Python to be 3.11 or newer.*
|
|
124
|
-
|
|
125
|
-
### Permanent Python Management
|
|
126
|
-
|
|
127
|
-
To make UV always use managed Python versions (recommended):
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
# Set environment variable permanently
|
|
131
|
-
echo 'export UV_MANAGED_PYTHON=1' >> ~/.zshrc # or ~/.bashrc
|
|
132
|
-
source ~/.zshrc # or ~/.bashrc
|
|
120
|
+
```powershell
|
|
121
|
+
# Install UV if you don't have it (run in PowerShell as Admin)
|
|
122
|
+
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
133
123
|
|
|
134
|
-
|
|
135
|
-
uvx code-puppy # No need for --managed-python flag anymore
|
|
124
|
+
uvx code-puppy
|
|
136
125
|
```
|
|
137
126
|
|
|
138
|
-
|
|
127
|
+
## Changelog (By Kittylog!)
|
|
139
128
|
|
|
140
|
-
|
|
141
|
-
# Check which Python UV will use
|
|
142
|
-
uv python find
|
|
143
|
-
|
|
144
|
-
# Or check the current project's Python
|
|
145
|
-
uv run python --version
|
|
146
|
-
```
|
|
129
|
+
[📋 View the full changelog on Kittylog](https://kittylog.app/c/mpfaffenberger/code_puppy)
|
|
147
130
|
|
|
148
131
|
## Usage
|
|
149
132
|
|
|
150
|
-
### Custom Commands
|
|
151
|
-
Create markdown files in `.claude/commands/`, `.github/prompts/`, or `.agents/commands/` to define custom slash commands. The filename becomes the command name and the content runs as a prompt.
|
|
152
|
-
|
|
153
|
-
```bash
|
|
154
|
-
# Create a custom command
|
|
155
|
-
echo "# Code Review
|
|
156
|
-
|
|
157
|
-
Please review this code for security issues." > .claude/commands/review.md
|
|
158
|
-
|
|
159
|
-
# Use it in Code Puppy
|
|
160
|
-
/review with focus on authentication
|
|
161
|
-
```
|
|
162
|
-
|
|
163
133
|
### Adding Models from models.dev 🆕
|
|
164
134
|
|
|
165
135
|
While there are several models configured right out of the box from providers like Synthetic, Cerebras, OpenAI, Google, and Anthropic, Code Puppy integrates with [models.dev](https://models.dev) to let you browse and add models from **65+ providers** with a single command:
|
|
@@ -227,6 +197,18 @@ The following environment variables control DBOS behavior:
|
|
|
227
197
|
- `DBOS_SYSTEM_DATABASE_URL`: Database URL used by DBOS. Can point to a local SQLite file or a Postgres instance. Example: `postgresql://postgres:dbos@localhost:5432/postgres`. Default: `dbos_store.sqlite` file in the config directory.
|
|
228
198
|
- `DBOS_APP_VERSION`: If set, Code Puppy uses it as the [DBOS application version](https://docs.dbos.dev/architecture#application-and-workflow-versions) and automatically tries to recover pending workflows for this version. Default: Code Puppy version + Unix timestamp in millisecond (disable automatic recovery).
|
|
229
199
|
|
|
200
|
+
### Custom Commands
|
|
201
|
+
Create markdown files in `.claude/commands/`, `.github/prompts/`, or `.agents/commands/` to define custom slash commands. The filename becomes the command name and the content runs as a prompt.
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
# Create a custom command
|
|
205
|
+
echo "# Code Review
|
|
206
|
+
|
|
207
|
+
Please review this code for security issues." > .claude/commands/review.md
|
|
208
|
+
|
|
209
|
+
# Use it in Code Puppy
|
|
210
|
+
/review with focus on authentication
|
|
211
|
+
```
|
|
230
212
|
|
|
231
213
|
## Requirements
|
|
232
214
|
|
|
@@ -246,9 +228,6 @@ For examples and more information about agent rules, visit [https://agent.md](ht
|
|
|
246
228
|
|
|
247
229
|
Use the `/mcp` command to manage MCP (list, start, stop, status, etc.)
|
|
248
230
|
|
|
249
|
-
Watch this video for examples! https://www.youtube.com/watch?v=1t1zEetOqlo
|
|
250
|
-
|
|
251
|
-
|
|
252
231
|
## Round Robin Model Distribution
|
|
253
232
|
|
|
254
233
|
Code Puppy supports **Round Robin model distribution** to help you overcome rate limits and distribute load across multiple AI models. This feature automatically cycles through configured models with each request, maximizing your API usage while staying within rate limits.
|
|
@@ -5,20 +5,18 @@
|
|
|
5
5
|
**🐶✨The sassy AI code agent that makes IDEs look outdated** ✨🐶
|
|
6
6
|
|
|
7
7
|
[](https://pypi.org/project/code-puppy/)
|
|
8
|
-
[](https://pypi.org/project/code-puppy/)
|
|
9
9
|
[](https://python.org)
|
|
10
10
|
[](LICENSE)
|
|
11
11
|
[](https://github.com/mpfaffenberger/code_puppy/actions)
|
|
12
|
-
[](https://github.com/mpfaffenberger/code_puppy)
|
|
13
|
-
[](https://github.com/psf/black)
|
|
14
12
|
[](https://github.com/mpfaffenberger/code_puppy/tests)
|
|
15
13
|
|
|
16
|
-
[](https://openai.com)
|
|
14
|
+
[](https://openai.com)
|
|
17
15
|
[](https://ai.google.dev/)
|
|
18
16
|
[](https://anthropic.com)
|
|
19
|
-
[](https://synthetic.new)
|
|
17
|
+
[](https://cerebras.ai)
|
|
18
|
+
[](https://z.ai/)
|
|
19
|
+
[](https://synthetic.new)
|
|
22
20
|
|
|
23
21
|
[](https://github.com/mpfaffenberger/code_puppy)
|
|
24
22
|
[](https://github.com/pydantic/pydantic-ai)
|
|
@@ -28,6 +26,9 @@
|
|
|
28
26
|
[](https://github.com/mpfaffenberger/code_puppy/stargazers)
|
|
29
27
|
[](https://github.com/mpfaffenberger/code_puppy/network)
|
|
30
28
|
|
|
29
|
+
[](https://discord.gg/SqYAaXVy)
|
|
30
|
+
[](https://code-puppy.dev)
|
|
31
|
+
|
|
31
32
|
**[⭐ Star this repo if you hate expensive IDEs! ⭐](#quick-start)**
|
|
32
33
|
|
|
33
34
|
*"Who needs an IDE when you have 1024 angry puppies?"* - Someone, probably.
|
|
@@ -61,66 +62,32 @@ uvx code-puppy -i
|
|
|
61
62
|
|
|
62
63
|
### UV (Recommended)
|
|
63
64
|
|
|
65
|
+
#### macOS / Linux
|
|
66
|
+
|
|
64
67
|
```bash
|
|
65
68
|
# Install UV if you don't have it
|
|
66
69
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
67
70
|
|
|
68
|
-
|
|
69
|
-
echo 'export UV_MANAGED_PYTHON=1' >> ~/.zshrc # or ~/.bashrc
|
|
70
|
-
source ~/.zshrc # or ~/.bashrc
|
|
71
|
-
|
|
72
|
-
# Install and run code-puppy
|
|
73
|
-
uvx code-puppy -i
|
|
71
|
+
uvx code-puppy
|
|
74
72
|
```
|
|
75
73
|
|
|
76
|
-
|
|
74
|
+
#### Windows
|
|
77
75
|
|
|
78
|
-
|
|
76
|
+
On Windows, we recommend installing code-puppy as a global tool for the best experience with keyboard shortcuts (Ctrl+C/Ctrl+X cancellation):
|
|
79
77
|
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
*Note: pip installation requires your system Python to be 3.11 or newer.*
|
|
85
|
-
|
|
86
|
-
### Permanent Python Management
|
|
87
|
-
|
|
88
|
-
To make UV always use managed Python versions (recommended):
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
# Set environment variable permanently
|
|
92
|
-
echo 'export UV_MANAGED_PYTHON=1' >> ~/.zshrc # or ~/.bashrc
|
|
93
|
-
source ~/.zshrc # or ~/.bashrc
|
|
78
|
+
```powershell
|
|
79
|
+
# Install UV if you don't have it (run in PowerShell as Admin)
|
|
80
|
+
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
94
81
|
|
|
95
|
-
|
|
96
|
-
uvx code-puppy # No need for --managed-python flag anymore
|
|
82
|
+
uvx code-puppy
|
|
97
83
|
```
|
|
98
84
|
|
|
99
|
-
|
|
85
|
+
## Changelog (By Kittylog!)
|
|
100
86
|
|
|
101
|
-
|
|
102
|
-
# Check which Python UV will use
|
|
103
|
-
uv python find
|
|
104
|
-
|
|
105
|
-
# Or check the current project's Python
|
|
106
|
-
uv run python --version
|
|
107
|
-
```
|
|
87
|
+
[📋 View the full changelog on Kittylog](https://kittylog.app/c/mpfaffenberger/code_puppy)
|
|
108
88
|
|
|
109
89
|
## Usage
|
|
110
90
|
|
|
111
|
-
### Custom Commands
|
|
112
|
-
Create markdown files in `.claude/commands/`, `.github/prompts/`, or `.agents/commands/` to define custom slash commands. The filename becomes the command name and the content runs as a prompt.
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
# Create a custom command
|
|
116
|
-
echo "# Code Review
|
|
117
|
-
|
|
118
|
-
Please review this code for security issues." > .claude/commands/review.md
|
|
119
|
-
|
|
120
|
-
# Use it in Code Puppy
|
|
121
|
-
/review with focus on authentication
|
|
122
|
-
```
|
|
123
|
-
|
|
124
91
|
### Adding Models from models.dev 🆕
|
|
125
92
|
|
|
126
93
|
While there are several models configured right out of the box from providers like Synthetic, Cerebras, OpenAI, Google, and Anthropic, Code Puppy integrates with [models.dev](https://models.dev) to let you browse and add models from **65+ providers** with a single command:
|
|
@@ -188,6 +155,18 @@ The following environment variables control DBOS behavior:
|
|
|
188
155
|
- `DBOS_SYSTEM_DATABASE_URL`: Database URL used by DBOS. Can point to a local SQLite file or a Postgres instance. Example: `postgresql://postgres:dbos@localhost:5432/postgres`. Default: `dbos_store.sqlite` file in the config directory.
|
|
189
156
|
- `DBOS_APP_VERSION`: If set, Code Puppy uses it as the [DBOS application version](https://docs.dbos.dev/architecture#application-and-workflow-versions) and automatically tries to recover pending workflows for this version. Default: Code Puppy version + Unix timestamp in millisecond (disable automatic recovery).
|
|
190
157
|
|
|
158
|
+
### Custom Commands
|
|
159
|
+
Create markdown files in `.claude/commands/`, `.github/prompts/`, or `.agents/commands/` to define custom slash commands. The filename becomes the command name and the content runs as a prompt.
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# Create a custom command
|
|
163
|
+
echo "# Code Review
|
|
164
|
+
|
|
165
|
+
Please review this code for security issues." > .claude/commands/review.md
|
|
166
|
+
|
|
167
|
+
# Use it in Code Puppy
|
|
168
|
+
/review with focus on authentication
|
|
169
|
+
```
|
|
191
170
|
|
|
192
171
|
## Requirements
|
|
193
172
|
|
|
@@ -207,9 +186,6 @@ For examples and more information about agent rules, visit [https://agent.md](ht
|
|
|
207
186
|
|
|
208
187
|
Use the `/mcp` command to manage MCP (list, start, stop, status, etc.)
|
|
209
188
|
|
|
210
|
-
Watch this video for examples! https://www.youtube.com/watch?v=1t1zEetOqlo
|
|
211
|
-
|
|
212
|
-
|
|
213
189
|
## Round Robin Model Distribution
|
|
214
190
|
|
|
215
191
|
Code Puppy supports **Round Robin model distribution** to help you overcome rate limits and distribute load across multiple AI models. This feature automatically cycles through configured models with each request, maximizing your API usage while staying within rate limits.
|
|
@@ -12,6 +12,7 @@ from .agent_manager import (
|
|
|
12
12
|
refresh_agents,
|
|
13
13
|
set_current_agent,
|
|
14
14
|
)
|
|
15
|
+
from .subagent_stream_handler import subagent_stream_handler
|
|
15
16
|
|
|
16
17
|
__all__ = [
|
|
17
18
|
"get_available_agents",
|
|
@@ -20,4 +21,5 @@ __all__ = [
|
|
|
20
21
|
"load_agent",
|
|
21
22
|
"get_agent_descriptions",
|
|
22
23
|
"refresh_agents",
|
|
24
|
+
"subagent_stream_handler",
|
|
23
25
|
]
|
|
@@ -225,6 +225,55 @@ def _discover_agents(message_group_id: Optional[str] = None):
|
|
|
225
225
|
)
|
|
226
226
|
continue
|
|
227
227
|
|
|
228
|
+
# 1b. Discover agents in sub-packages (like 'pack')
|
|
229
|
+
for _, subpkg_name, ispkg in pkgutil.iter_modules(agents_package.__path__):
|
|
230
|
+
if not ispkg or subpkg_name.startswith("_"):
|
|
231
|
+
continue
|
|
232
|
+
|
|
233
|
+
try:
|
|
234
|
+
# Import the sub-package
|
|
235
|
+
subpkg = importlib.import_module(f"code_puppy.agents.{subpkg_name}")
|
|
236
|
+
|
|
237
|
+
# Iterate through modules in the sub-package
|
|
238
|
+
if not hasattr(subpkg, "__path__"):
|
|
239
|
+
continue
|
|
240
|
+
|
|
241
|
+
for _, modname, _ in pkgutil.iter_modules(subpkg.__path__):
|
|
242
|
+
if modname.startswith("_"):
|
|
243
|
+
continue
|
|
244
|
+
|
|
245
|
+
try:
|
|
246
|
+
# Import the submodule
|
|
247
|
+
module = importlib.import_module(
|
|
248
|
+
f"code_puppy.agents.{subpkg_name}.{modname}"
|
|
249
|
+
)
|
|
250
|
+
|
|
251
|
+
# Look for BaseAgent subclasses
|
|
252
|
+
for attr_name in dir(module):
|
|
253
|
+
attr = getattr(module, attr_name)
|
|
254
|
+
if (
|
|
255
|
+
isinstance(attr, type)
|
|
256
|
+
and issubclass(attr, BaseAgent)
|
|
257
|
+
and attr not in [BaseAgent, JSONAgent]
|
|
258
|
+
):
|
|
259
|
+
# Create an instance to get the name
|
|
260
|
+
agent_instance = attr()
|
|
261
|
+
_AGENT_REGISTRY[agent_instance.name] = attr
|
|
262
|
+
|
|
263
|
+
except Exception as e:
|
|
264
|
+
emit_warning(
|
|
265
|
+
f"Warning: Could not load agent {subpkg_name}.{modname}: {e}",
|
|
266
|
+
message_group=message_group_id,
|
|
267
|
+
)
|
|
268
|
+
continue
|
|
269
|
+
|
|
270
|
+
except Exception as e:
|
|
271
|
+
emit_warning(
|
|
272
|
+
f"Warning: Could not load agent sub-package {subpkg_name}: {e}",
|
|
273
|
+
message_group=message_group_id,
|
|
274
|
+
)
|
|
275
|
+
continue
|
|
276
|
+
|
|
228
277
|
# 2. Discover JSON agents in user directory
|
|
229
278
|
try:
|
|
230
279
|
json_agents = discover_json_agents()
|