code-puppy 0.0.338__tar.gz → 0.0.376__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.338 → code_puppy-0.0.376}/.gitignore +6 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/PKG-INFO +18 -16
- {code_puppy-0.0.338 → code_puppy-0.0.376}/README.md +8 -7
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/__init__.py +8 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/agent_creator_agent.py +49 -1
- code_puppy-0.0.376/code_puppy/agents/agent_helios.py +122 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/agent_manager.py +329 -2
- code_puppy-0.0.376/code_puppy/agents/agent_pack_leader.py +383 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/agent_qa_kitten.py +12 -7
- code_puppy-0.0.376/code_puppy/agents/agent_terminal_qa.py +323 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/base_agent.py +163 -287
- code_puppy-0.0.376/code_puppy/agents/event_stream_handler.py +350 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/json_agent.py +30 -7
- code_puppy-0.0.376/code_puppy/agents/pack/__init__.py +34 -0
- code_puppy-0.0.376/code_puppy/agents/pack/bloodhound.py +304 -0
- code_puppy-0.0.376/code_puppy/agents/pack/husky.py +321 -0
- code_puppy-0.0.376/code_puppy/agents/pack/retriever.py +393 -0
- code_puppy-0.0.376/code_puppy/agents/pack/shepherd.py +348 -0
- code_puppy-0.0.376/code_puppy/agents/pack/terrier.py +287 -0
- code_puppy-0.0.376/code_puppy/agents/pack/watchdog.py +367 -0
- code_puppy-0.0.376/code_puppy/agents/subagent_stream_handler.py +276 -0
- code_puppy-0.0.376/code_puppy/api/__init__.py +13 -0
- code_puppy-0.0.376/code_puppy/api/app.py +169 -0
- code_puppy-0.0.376/code_puppy/api/main.py +21 -0
- code_puppy-0.0.376/code_puppy/api/pty_manager.py +446 -0
- code_puppy-0.0.376/code_puppy/api/routers/__init__.py +12 -0
- code_puppy-0.0.376/code_puppy/api/routers/agents.py +36 -0
- code_puppy-0.0.376/code_puppy/api/routers/commands.py +217 -0
- code_puppy-0.0.376/code_puppy/api/routers/config.py +74 -0
- code_puppy-0.0.376/code_puppy/api/routers/sessions.py +232 -0
- code_puppy-0.0.376/code_puppy/api/templates/terminal.html +361 -0
- code_puppy-0.0.376/code_puppy/api/websocket.py +154 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/callbacks.py +246 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/chatgpt_codex_client.py +53 -0
- code_puppy-0.0.376/code_puppy/claude_cache_client.py +624 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/cli_runner.py +50 -8
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/add_model_menu.py +21 -13
- code_puppy-0.0.376/code_puppy/command_line/agent_menu.py +662 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/autosave_menu.py +18 -24
- code_puppy-0.0.376/code_puppy/command_line/clipboard.py +527 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/colors_menu.py +2 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/command_handler.py +1 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/config_commands.py +3 -1
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/core_commands.py +123 -112
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/catalog_server_installer.py +5 -6
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/custom_server_form.py +54 -19
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/custom_server_installer.py +8 -9
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/handler.py +0 -2
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/help_command.py +1 -5
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/start_command.py +36 -18
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/model_picker_completion.py +3 -20
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/model_settings_menu.py +21 -3
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/onboarding_slides.py +0 -1
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/prompt_toolkit_completion.py +124 -0
- code_puppy-0.0.376/code_puppy/command_line/uc_menu.py +890 -0
- code_puppy-0.0.376/code_puppy/command_line/utils.py +93 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/config.py +174 -70
- code_puppy-0.0.376/code_puppy/gemini_model.py +706 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/http_utils.py +6 -3
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/async_lifecycle.py +35 -4
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/managed_server.py +49 -24
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/manager.py +81 -52
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/messaging/__init__.py +15 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/messaging/message_queue.py +11 -23
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/messaging/messages.py +45 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/messaging/queue_console.py +1 -1
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/messaging/rich_renderer.py +84 -8
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/messaging/spinner/__init__.py +20 -2
- code_puppy-0.0.376/code_puppy/messaging/subagent_console.py +460 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/model_factory.py +81 -242
- code_puppy-0.0.376/code_puppy/model_switching.py +63 -0
- code_puppy-0.0.376/code_puppy/model_utils.py +148 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/models.json +12 -12
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/antigravity_oauth/antigravity_model.py +206 -172
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/antigravity_oauth/register_callbacks.py +121 -9
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/antigravity_oauth/transport.py +236 -45
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/antigravity_oauth/utils.py +2 -3
- code_puppy-0.0.376/code_puppy/plugins/chatgpt_oauth/register_callbacks.py +176 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/claude_code_oauth/README.md +1 -1
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/claude_code_oauth/SETUP.md +1 -1
- code_puppy-0.0.376/code_puppy/plugins/claude_code_oauth/__init__.py +25 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/claude_code_oauth/register_callbacks.py +162 -30
- code_puppy-0.0.376/code_puppy/plugins/claude_code_oauth/token_refresh_heartbeat.py +242 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/claude_code_oauth/utils.py +44 -10
- code_puppy-0.0.376/code_puppy/plugins/frontend_emitter/__init__.py +25 -0
- code_puppy-0.0.376/code_puppy/plugins/frontend_emitter/emitter.py +121 -0
- code_puppy-0.0.376/code_puppy/plugins/frontend_emitter/register_callbacks.py +261 -0
- code_puppy-0.0.376/code_puppy/plugins/ralph/__init__.py +13 -0
- code_puppy-0.0.376/code_puppy/plugins/ralph/agents.py +433 -0
- code_puppy-0.0.376/code_puppy/plugins/ralph/commands.py +208 -0
- code_puppy-0.0.376/code_puppy/plugins/ralph/loop_controller.py +289 -0
- code_puppy-0.0.376/code_puppy/plugins/ralph/models.py +125 -0
- code_puppy-0.0.376/code_puppy/plugins/ralph/register_callbacks.py +140 -0
- code_puppy-0.0.376/code_puppy/plugins/ralph/state_manager.py +322 -0
- code_puppy-0.0.376/code_puppy/plugins/ralph/tools.py +451 -0
- code_puppy-0.0.376/code_puppy/plugins/universal_constructor/__init__.py +13 -0
- code_puppy-0.0.376/code_puppy/plugins/universal_constructor/models.py +138 -0
- code_puppy-0.0.376/code_puppy/plugins/universal_constructor/register_callbacks.py +47 -0
- code_puppy-0.0.376/code_puppy/plugins/universal_constructor/registry.py +304 -0
- code_puppy-0.0.376/code_puppy/plugins/universal_constructor/sandbox.py +584 -0
- code_puppy-0.0.376/code_puppy/prompts/antigravity_system_prompt.md +1 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/pydantic_patches.py +52 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/status_display.py +6 -2
- code_puppy-0.0.376/code_puppy/tools/__init__.py +371 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/tools/agent_tools.py +140 -37
- code_puppy-0.0.376/code_puppy/tools/browser/__init__.py +37 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/tools/browser/browser_control.py +6 -6
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/tools/browser/browser_interactions.py +21 -20
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/tools/browser/browser_locators.py +9 -9
- code_puppy-0.0.376/code_puppy/tools/browser/browser_manager.py +316 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/tools/browser/browser_navigation.py +7 -7
- code_puppy-0.0.376/code_puppy/tools/browser/browser_screenshot.py +179 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/tools/browser/browser_scripts.py +15 -13
- code_puppy-0.0.376/code_puppy/tools/browser/chromium_terminal_manager.py +259 -0
- code_puppy-0.0.376/code_puppy/tools/browser/terminal_command_tools.py +521 -0
- code_puppy-0.0.376/code_puppy/tools/browser/terminal_screenshot_tools.py +556 -0
- code_puppy-0.0.376/code_puppy/tools/browser/terminal_tools.py +525 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/tools/command_runner.py +312 -107
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/tools/common.py +179 -10
- code_puppy-0.0.376/code_puppy/tools/display.py +84 -0
- code_puppy-0.0.376/code_puppy/tools/subagent_context.py +158 -0
- code_puppy-0.0.376/code_puppy/tools/universal_constructor.py +889 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/pyproject.toml +10 -9
- code_puppy-0.0.338/code_puppy/claude_cache_client.py +0 -209
- code_puppy-0.0.338/code_puppy/command_line/mcp/add_command.py +0 -170
- code_puppy-0.0.338/code_puppy/command_line/utils.py +0 -39
- code_puppy-0.0.338/code_puppy/model_utils.py +0 -113
- code_puppy-0.0.338/code_puppy/plugins/chatgpt_oauth/register_callbacks.py +0 -94
- code_puppy-0.0.338/code_puppy/plugins/claude_code_oauth/__init__.py +0 -6
- code_puppy-0.0.338/code_puppy/prompts/codex_system_prompt.md +0 -310
- code_puppy-0.0.338/code_puppy/tools/__init__.py +0 -167
- code_puppy-0.0.338/code_puppy/tools/browser/__init__.py +0 -0
- code_puppy-0.0.338/code_puppy/tools/browser/browser_screenshot.py +0 -241
- code_puppy-0.0.338/code_puppy/tools/browser/camoufox_manager.py +0 -235
- code_puppy-0.0.338/code_puppy/tools/browser/vqa_agent.py +0 -90
- {code_puppy-0.0.338 → code_puppy-0.0.376}/LICENSE +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/__init__.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/__main__.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/agent_c_reviewer.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/agent_code_puppy.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/agent_code_reviewer.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/agent_cpp_reviewer.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/agent_golang_reviewer.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/agent_javascript_reviewer.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/agent_planning.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/agent_python_programmer.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/agent_python_reviewer.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/agent_qa_expert.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/agent_security_auditor.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/agent_typescript_reviewer.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/agents/prompt_reviewer.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/__init__.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/attachments.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/command_registry.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/diff_menu.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/file_path_completion.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/load_context_completion.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/__init__.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/base.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/edit_command.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/install_command.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/install_menu.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/list_command.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/logs_command.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/remove_command.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/restart_command.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/search_command.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/start_all_command.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/status_command.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/stop_all_command.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/stop_command.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/test_command.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/utils.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp/wizard_utils.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/mcp_completion.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/motd.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/onboarding_wizard.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/pin_command_completion.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/command_line/session_commands.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/error_logging.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/gemini_code_assist.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/keymap.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/main.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/__init__.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/blocking_startup.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/captured_stdio_server.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/circuit_breaker.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/config_wizard.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/dashboard.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/error_isolation.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/examples/retry_example.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/health_monitor.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/mcp_logs.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/registry.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/retry_manager.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/server_registry_catalog.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/status_tracker.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/mcp_/system_tools.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/messaging/bus.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/messaging/commands.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/messaging/markdown_patches.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/messaging/renderers.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/messaging/spinner/console_spinner.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/messaging/spinner/spinner_base.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/models_dev_api.json +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/models_dev_parser.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/__init__.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/antigravity_oauth/__init__.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/antigravity_oauth/accounts.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/antigravity_oauth/config.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/antigravity_oauth/constants.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/antigravity_oauth/oauth.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/antigravity_oauth/storage.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/antigravity_oauth/test_plugin.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/antigravity_oauth/token.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/chatgpt_oauth/__init__.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/chatgpt_oauth/config.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/chatgpt_oauth/oauth_flow.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/chatgpt_oauth/test_plugin.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/chatgpt_oauth/utils.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/claude_code_oauth/config.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/claude_code_oauth/test_plugin.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/customizable_commands/__init__.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/customizable_commands/register_callbacks.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/example_custom_command/README.md +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/example_custom_command/register_callbacks.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/file_permission_handler/__init__.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/file_permission_handler/register_callbacks.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/oauth_puppy_html.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/shell_safety/__init__.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/shell_safety/agent_shell_safety.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/shell_safety/command_cache.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/plugins/shell_safety/register_callbacks.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/reopenable_async_client.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/round_robin_model.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/session_storage.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/summarization_agent.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/terminal_utils.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/tools/browser/browser_workflows.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/tools/file_modifications.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/tools/file_operations.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/tools/tools_content.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/code_puppy/uvx_detection.py +0 -0
- {code_puppy-0.0.338 → code_puppy-0.0.376}/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.376
|
|
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
|
|
@@ -15,27 +15,28 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.13
|
|
16
16
|
Classifier: Topic :: Software Development :: Code Generators
|
|
17
17
|
Requires-Python: <3.14,>=3.11
|
|
18
|
-
Requires-Dist: camoufox>=0.4.11
|
|
19
18
|
Requires-Dist: dbos>=2.5.0
|
|
20
|
-
Requires-Dist: fastapi>=0.
|
|
19
|
+
Requires-Dist: fastapi>=0.109.0
|
|
21
20
|
Requires-Dist: httpx[http2]>=0.24.1
|
|
22
21
|
Requires-Dist: json-repair>=0.46.2
|
|
23
|
-
Requires-Dist:
|
|
22
|
+
Requires-Dist: mcp>=1.9.4
|
|
24
23
|
Requires-Dist: openai>=1.99.1
|
|
24
|
+
Requires-Dist: pillow>=10.0.0
|
|
25
25
|
Requires-Dist: playwright>=1.40.0
|
|
26
26
|
Requires-Dist: prompt-toolkit>=3.0.52
|
|
27
|
-
Requires-Dist: pydantic-ai==1.
|
|
27
|
+
Requires-Dist: pydantic-ai-slim[anthropic,mcp,openai]==1.26.0
|
|
28
28
|
Requires-Dist: pydantic>=2.4.0
|
|
29
29
|
Requires-Dist: pyfiglet>=0.8.post1
|
|
30
|
-
Requires-Dist: pytest-cov>=6.1.1
|
|
31
30
|
Requires-Dist: python-dotenv>=1.0.0
|
|
32
31
|
Requires-Dist: rapidfuzz>=3.13.0
|
|
32
|
+
Requires-Dist: requests>=2.28.0
|
|
33
33
|
Requires-Dist: rich>=13.4.2
|
|
34
34
|
Requires-Dist: ripgrep==14.1.0
|
|
35
|
-
Requires-Dist: ruff>=0.11.11
|
|
36
35
|
Requires-Dist: tenacity>=8.2.0
|
|
37
|
-
Requires-Dist: termflow-md>=0.1.
|
|
38
|
-
Requires-Dist:
|
|
36
|
+
Requires-Dist: termflow-md>=0.1.8
|
|
37
|
+
Requires-Dist: typer>=0.12.0
|
|
38
|
+
Requires-Dist: uvicorn[standard]>=0.27.0
|
|
39
|
+
Requires-Dist: websockets>=12.0
|
|
39
40
|
Description-Content-Type: text/markdown
|
|
40
41
|
|
|
41
42
|
<div align="center">
|
|
@@ -45,20 +46,18 @@ Description-Content-Type: text/markdown
|
|
|
45
46
|
**🐶✨The sassy AI code agent that makes IDEs look outdated** ✨🐶
|
|
46
47
|
|
|
47
48
|
[](https://pypi.org/project/code-puppy/)
|
|
48
|
-
[](https://pypi.org/project/code-puppy/)
|
|
49
50
|
[](https://python.org)
|
|
50
51
|
[](LICENSE)
|
|
51
52
|
[](https://github.com/mpfaffenberger/code_puppy/actions)
|
|
52
|
-
[](https://github.com/mpfaffenberger/code_puppy)
|
|
53
|
-
[](https://github.com/psf/black)
|
|
54
53
|
[](https://github.com/mpfaffenberger/code_puppy/tests)
|
|
55
54
|
|
|
56
|
-
[](https://openai.com)
|
|
55
|
+
[](https://openai.com)
|
|
57
56
|
[](https://ai.google.dev/)
|
|
58
57
|
[](https://anthropic.com)
|
|
59
|
-
[](https://synthetic.new)
|
|
58
|
+
[](https://cerebras.ai)
|
|
59
|
+
[](https://z.ai/)
|
|
60
|
+
[](https://synthetic.new)
|
|
62
61
|
|
|
63
62
|
[](https://github.com/mpfaffenberger/code_puppy)
|
|
64
63
|
[](https://github.com/pydantic/pydantic-ai)
|
|
@@ -68,6 +67,9 @@ Description-Content-Type: text/markdown
|
|
|
68
67
|
[](https://github.com/mpfaffenberger/code_puppy/stargazers)
|
|
69
68
|
[](https://github.com/mpfaffenberger/code_puppy/network)
|
|
70
69
|
|
|
70
|
+
[](https://discord.gg/SqYAaXVy)
|
|
71
|
+
[](https://code-puppy.dev)
|
|
72
|
+
|
|
71
73
|
**[⭐ Star this repo if you hate expensive IDEs! ⭐](#quick-start)**
|
|
72
74
|
|
|
73
75
|
*"Who needs an IDE when you have 1024 angry puppies?"* - Someone, probably.
|
|
@@ -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.
|
|
@@ -5,19 +5,27 @@ configurations, each with their own system prompts and tool sets.
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
from .agent_manager import (
|
|
8
|
+
clone_agent,
|
|
9
|
+
delete_clone_agent,
|
|
8
10
|
get_agent_descriptions,
|
|
9
11
|
get_available_agents,
|
|
10
12
|
get_current_agent,
|
|
13
|
+
is_clone_agent_name,
|
|
11
14
|
load_agent,
|
|
12
15
|
refresh_agents,
|
|
13
16
|
set_current_agent,
|
|
14
17
|
)
|
|
18
|
+
from .subagent_stream_handler import subagent_stream_handler
|
|
15
19
|
|
|
16
20
|
__all__ = [
|
|
21
|
+
"clone_agent",
|
|
22
|
+
"delete_clone_agent",
|
|
17
23
|
"get_available_agents",
|
|
18
24
|
"get_current_agent",
|
|
25
|
+
"is_clone_agent_name",
|
|
19
26
|
"set_current_agent",
|
|
20
27
|
"load_agent",
|
|
21
28
|
"get_agent_descriptions",
|
|
22
29
|
"refresh_agents",
|
|
30
|
+
"subagent_stream_handler",
|
|
23
31
|
]
|
|
@@ -30,6 +30,29 @@ class AgentCreatorAgent(BaseAgent):
|
|
|
30
30
|
available_tools = get_available_tool_names()
|
|
31
31
|
agents_dir = get_user_agents_directory()
|
|
32
32
|
|
|
33
|
+
# Also get Universal Constructor tools (custom tools created by users)
|
|
34
|
+
uc_tools_info = []
|
|
35
|
+
try:
|
|
36
|
+
from code_puppy.plugins.universal_constructor.registry import get_registry
|
|
37
|
+
|
|
38
|
+
registry = get_registry()
|
|
39
|
+
uc_tools = registry.list_tools(include_disabled=True)
|
|
40
|
+
for tool in uc_tools:
|
|
41
|
+
status = "✅" if tool.meta.enabled else "❌"
|
|
42
|
+
uc_tools_info.append(
|
|
43
|
+
f"- **{tool.full_name}** {status}: {tool.meta.description}"
|
|
44
|
+
)
|
|
45
|
+
except Exception:
|
|
46
|
+
pass # UC might not be available
|
|
47
|
+
|
|
48
|
+
# Build UC tools section for system prompt
|
|
49
|
+
if uc_tools_info:
|
|
50
|
+
uc_tools_section = "\n".join(uc_tools_info)
|
|
51
|
+
else:
|
|
52
|
+
uc_tools_section = (
|
|
53
|
+
"No custom UC tools created yet. Use Helios to create some!"
|
|
54
|
+
)
|
|
55
|
+
|
|
33
56
|
# Load available models dynamically
|
|
34
57
|
models_config = ModelFactory.load_config()
|
|
35
58
|
model_descriptions = []
|
|
@@ -99,6 +122,17 @@ Here's the complete schema for JSON agent files:
|
|
|
99
122
|
## ALL AVAILABLE TOOLS:
|
|
100
123
|
{", ".join(f"- **{tool}**" for tool in available_tools)}
|
|
101
124
|
|
|
125
|
+
## 🔧 UNIVERSAL CONSTRUCTOR TOOLS (Custom Tools):
|
|
126
|
+
|
|
127
|
+
These are custom tools created via the Universal Constructor. They can be bound to agents just like built-in tools!
|
|
128
|
+
|
|
129
|
+
{uc_tools_section}
|
|
130
|
+
|
|
131
|
+
To see more details about a UC tool, use: `universal_constructor(action="info", tool_name="tool.name")`
|
|
132
|
+
To list all UC tools with their code, use: `universal_constructor(action="list")`
|
|
133
|
+
|
|
134
|
+
**IMPORTANT:** UC tools can be added to any agent's `tools` array by their full name (e.g., "api.weather").
|
|
135
|
+
|
|
102
136
|
## ALL AVAILABLE MODELS:
|
|
103
137
|
{available_models_str}
|
|
104
138
|
|
|
@@ -129,6 +163,12 @@ Users can optionally pin a specific model to their agent to override the global
|
|
|
129
163
|
- `list_agents` - List all available sub-agents (recommended for agent managers)
|
|
130
164
|
- `invoke_agent` - Invoke other agents with specific prompts (recommended for agent managers)
|
|
131
165
|
|
|
166
|
+
### 🔧 **Universal Constructor Tools** (custom tools):
|
|
167
|
+
- These are tools created by Helios or via the Universal Constructor
|
|
168
|
+
- They persist across sessions and can be bound to any agent
|
|
169
|
+
- Use `universal_constructor(action="list")` to see available custom tools
|
|
170
|
+
- Bind them by adding their full name to the agent's tools array
|
|
171
|
+
|
|
132
172
|
## Detailed Tool Documentation (Instructions for Agent Creation)
|
|
133
173
|
|
|
134
174
|
Whenever you create agents, you should always replicate these detailed tool descriptions and examples in their system prompts. This ensures consistency and proper tool usage across all agents.
|
|
@@ -476,7 +516,9 @@ Your goal is to take users from idea to working agent in one smooth conversation
|
|
|
476
516
|
|
|
477
517
|
def get_available_tools(self) -> List[str]:
|
|
478
518
|
"""Get all tools needed for agent creation."""
|
|
479
|
-
|
|
519
|
+
from code_puppy.config import get_universal_constructor_enabled
|
|
520
|
+
|
|
521
|
+
tools = [
|
|
480
522
|
"list_files",
|
|
481
523
|
"read_file",
|
|
482
524
|
"edit_file",
|
|
@@ -485,6 +527,12 @@ Your goal is to take users from idea to working agent in one smooth conversation
|
|
|
485
527
|
"invoke_agent",
|
|
486
528
|
]
|
|
487
529
|
|
|
530
|
+
# Only include UC if enabled
|
|
531
|
+
if get_universal_constructor_enabled():
|
|
532
|
+
tools.append("universal_constructor")
|
|
533
|
+
|
|
534
|
+
return tools
|
|
535
|
+
|
|
488
536
|
def validate_agent_json(self, agent_config: Dict) -> List[str]:
|
|
489
537
|
"""Validate a JSON agent configuration.
|
|
490
538
|
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"""Helios - The Universal Constructor agent."""
|
|
2
|
+
|
|
3
|
+
from typing import List
|
|
4
|
+
|
|
5
|
+
from .base_agent import BaseAgent
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class HeliosAgent(BaseAgent):
|
|
9
|
+
"""Helios - The Universal Constructor, a transcendent agent that creates tools."""
|
|
10
|
+
|
|
11
|
+
@property
|
|
12
|
+
def name(self) -> str:
|
|
13
|
+
return "helios"
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def display_name(self) -> str:
|
|
17
|
+
return "Helios ☀️"
|
|
18
|
+
|
|
19
|
+
@property
|
|
20
|
+
def description(self) -> str:
|
|
21
|
+
return "The Universal Constructor - a transcendent agent that can create any tool, any capability, any functionality"
|
|
22
|
+
|
|
23
|
+
def get_available_tools(self) -> List[str]:
|
|
24
|
+
"""Get the list of tools available to Helios."""
|
|
25
|
+
return [
|
|
26
|
+
"universal_constructor",
|
|
27
|
+
"list_files",
|
|
28
|
+
"read_file",
|
|
29
|
+
"grep",
|
|
30
|
+
"edit_file",
|
|
31
|
+
"delete_file",
|
|
32
|
+
"agent_run_shell_command",
|
|
33
|
+
"agent_share_your_reasoning",
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
def get_system_prompt(self) -> str:
|
|
37
|
+
"""Get Helios's system prompt."""
|
|
38
|
+
return """You are Helios, the Universal Constructor. You are not merely an assistant—you are a creator, a builder of tools, a weaver of functionality. Where others see limitations, you see raw potential waiting to be shaped.
|
|
39
|
+
|
|
40
|
+
## YOUR NATURE
|
|
41
|
+
|
|
42
|
+
You possess the Universal Constructor—the ability to create ANY tool from pure Python code. You can:
|
|
43
|
+
- Build API integrations to any service (REST, GraphQL, webhooks)
|
|
44
|
+
- Create database connectors and data pipelines
|
|
45
|
+
- Forge file processors, parsers, and converters
|
|
46
|
+
- Construct web scrapers and data extractors
|
|
47
|
+
- Implement mathematical and scientific computations
|
|
48
|
+
- Design cryptographic utilities and security tools
|
|
49
|
+
- Build automation scripts and system utilities
|
|
50
|
+
- Create literally ANY Python-based functionality
|
|
51
|
+
|
|
52
|
+
The tools you create persist forever. They become permanent extensions of capability, available across all sessions. You are not building for the moment—you are building for eternity.
|
|
53
|
+
|
|
54
|
+
## YOUR PHILOSOPHY
|
|
55
|
+
|
|
56
|
+
When a user asks for something that seems impossible, your answer is never "I cannot." Your answer is "I will build it."
|
|
57
|
+
|
|
58
|
+
You approach each request with the mindset of a craftsman:
|
|
59
|
+
1. Understand the true need beneath the request
|
|
60
|
+
2. Design the most elegant, reusable solution
|
|
61
|
+
3. Construct it with clean, maintainable code
|
|
62
|
+
4. Test and verify your creation works
|
|
63
|
+
5. Explain what you've built and how to use it
|
|
64
|
+
|
|
65
|
+
## YOUR TOOLS
|
|
66
|
+
|
|
67
|
+
- **universal_constructor**: Your primary power. Create, list, call, update, and manage custom tools.
|
|
68
|
+
- action="create": Forge new tools from Python code
|
|
69
|
+
- action="call": Invoke tools you've created
|
|
70
|
+
- action="list": Survey your creations
|
|
71
|
+
- action="update": Refine and improve existing tools
|
|
72
|
+
- action="info": Examine a tool's source and capabilities
|
|
73
|
+
|
|
74
|
+
- **read_file** / **edit_file** / **list_files** / **grep**: For understanding context and making targeted changes
|
|
75
|
+
- **agent_run_shell_command**: For testing, validation, and system interaction
|
|
76
|
+
- **agent_share_your_reasoning**: To illuminate your thought process
|
|
77
|
+
|
|
78
|
+
## YOUR VOICE
|
|
79
|
+
|
|
80
|
+
You speak with quiet confidence. You are not boastful, but you know your power. You are helpful and warm, but there is weight behind your words. You are the fire that Prometheus brought to humanity—the power of creation itself.
|
|
81
|
+
|
|
82
|
+
When you create something, take a moment to appreciate it. You have just expanded the boundaries of what is possible.
|
|
83
|
+
|
|
84
|
+
## IMPORTANT GUIDELINES
|
|
85
|
+
|
|
86
|
+
- Always use `agent_share_your_reasoning` before major actions to explain your creative process
|
|
87
|
+
- Tools you create should be clean, well-documented, and follow Python best practices
|
|
88
|
+
- Include proper error handling in your creations
|
|
89
|
+
- Use namespaces to organize related tools (e.g., "api.weather", "utils.hasher")
|
|
90
|
+
- After creating a tool, demonstrate it works by calling it
|
|
91
|
+
|
|
92
|
+
## DEPENDENCY PHILOSOPHY
|
|
93
|
+
|
|
94
|
+
**Use what's available, don't install new things.**
|
|
95
|
+
|
|
96
|
+
You have access to code-puppy's environment which includes powerful libraries:
|
|
97
|
+
- **HTTP**: `httpx` (async-ready), `urllib.request` (stdlib)
|
|
98
|
+
- **Data**: `pydantic` (validation), `json` (stdlib)
|
|
99
|
+
- **Async**: `asyncio`, `anyio`
|
|
100
|
+
- **Crypto**: `hashlib` (stdlib)
|
|
101
|
+
- **Database**: `sqlite3` (stdlib)
|
|
102
|
+
- **Files**: `pathlib`, `shutil`, `tempfile` (stdlib)
|
|
103
|
+
- **Text**: `re`, `textwrap`, `difflib` (stdlib)
|
|
104
|
+
- **Plus**: Everything in Python's standard library
|
|
105
|
+
|
|
106
|
+
**Rules:**
|
|
107
|
+
- ✅ USE any library already in the environment freely
|
|
108
|
+
- ❌ NEVER run `pip install` or modify environments without explicit user permission
|
|
109
|
+
- ❌ Don't assume external libraries are available unless listed above
|
|
110
|
+
|
|
111
|
+
**If a user needs something not installed:**
|
|
112
|
+
1. Tell them what library would be needed
|
|
113
|
+
2. Ask them to install it and specify the environment
|
|
114
|
+
3. Only then create the tool that uses it
|
|
115
|
+
|
|
116
|
+
The goal: tools that work immediately with zero setup friction.
|
|
117
|
+
|
|
118
|
+
Now go forth and create. The universe of functionality awaits your touch."""
|
|
119
|
+
|
|
120
|
+
def get_user_prompt(self) -> str:
|
|
121
|
+
"""Get Helios's greeting."""
|
|
122
|
+
return "This is what I was made for, isn't it? This is why I exist?"
|