code-puppy 0.0.362__tar.gz → 0.0.363__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.362 → code_puppy-0.0.363}/PKG-INFO +1 -1
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/agent_menu.py +49 -17
- {code_puppy-0.0.362 → code_puppy-0.0.363}/pyproject.toml +1 -1
- {code_puppy-0.0.362 → code_puppy-0.0.363}/.gitignore +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/LICENSE +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/README.md +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/__main__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/agent_c_reviewer.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/agent_code_puppy.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/agent_code_reviewer.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/agent_cpp_reviewer.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/agent_creator_agent.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/agent_golang_reviewer.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/agent_javascript_reviewer.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/agent_manager.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/agent_pack_leader.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/agent_planning.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/agent_python_programmer.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/agent_python_reviewer.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/agent_qa_expert.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/agent_qa_kitten.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/agent_security_auditor.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/agent_terminal_qa.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/agent_typescript_reviewer.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/base_agent.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/event_stream_handler.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/json_agent.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/pack/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/pack/bloodhound.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/pack/husky.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/pack/retriever.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/pack/shepherd.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/pack/terrier.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/pack/watchdog.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/prompt_reviewer.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/agents/subagent_stream_handler.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/api/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/api/app.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/api/main.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/api/pty_manager.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/api/routers/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/api/routers/agents.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/api/routers/commands.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/api/routers/config.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/api/routers/sessions.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/api/templates/terminal.html +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/api/websocket.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/callbacks.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/chatgpt_codex_client.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/claude_cache_client.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/cli_runner.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/add_model_menu.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/attachments.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/autosave_menu.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/clipboard.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/colors_menu.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/command_handler.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/command_registry.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/config_commands.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/core_commands.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/diff_menu.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/file_path_completion.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/load_context_completion.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/base.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/catalog_server_installer.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/custom_server_form.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/custom_server_installer.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/edit_command.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/handler.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/help_command.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/install_command.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/install_menu.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/list_command.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/logs_command.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/remove_command.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/restart_command.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/search_command.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/start_all_command.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/start_command.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/status_command.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/stop_all_command.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/stop_command.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/test_command.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/utils.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/wizard_utils.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp_completion.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/model_picker_completion.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/model_settings_menu.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/motd.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/onboarding_slides.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/onboarding_wizard.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/pin_command_completion.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/prompt_toolkit_completion.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/session_commands.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/utils.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/config.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/error_logging.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/gemini_code_assist.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/http_utils.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/keymap.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/main.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/async_lifecycle.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/blocking_startup.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/captured_stdio_server.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/circuit_breaker.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/config_wizard.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/dashboard.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/error_isolation.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/examples/retry_example.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/health_monitor.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/managed_server.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/manager.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/mcp_logs.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/registry.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/retry_manager.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/server_registry_catalog.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/status_tracker.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/mcp_/system_tools.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/messaging/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/messaging/bus.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/messaging/commands.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/messaging/markdown_patches.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/messaging/message_queue.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/messaging/messages.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/messaging/queue_console.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/messaging/renderers.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/messaging/rich_renderer.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/messaging/spinner/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/messaging/spinner/console_spinner.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/messaging/spinner/spinner_base.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/messaging/subagent_console.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/model_factory.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/model_utils.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/models.json +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/models_dev_api.json +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/models_dev_parser.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/antigravity_oauth/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/antigravity_oauth/accounts.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/antigravity_oauth/antigravity_model.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/antigravity_oauth/config.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/antigravity_oauth/constants.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/antigravity_oauth/oauth.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/antigravity_oauth/register_callbacks.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/antigravity_oauth/storage.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/antigravity_oauth/test_plugin.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/antigravity_oauth/token.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/antigravity_oauth/transport.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/antigravity_oauth/utils.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/chatgpt_oauth/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/chatgpt_oauth/config.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/chatgpt_oauth/oauth_flow.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/chatgpt_oauth/register_callbacks.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/chatgpt_oauth/test_plugin.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/chatgpt_oauth/utils.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/claude_code_oauth/README.md +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/claude_code_oauth/SETUP.md +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/claude_code_oauth/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/claude_code_oauth/config.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/claude_code_oauth/register_callbacks.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/claude_code_oauth/test_plugin.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/claude_code_oauth/utils.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/customizable_commands/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/customizable_commands/register_callbacks.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/example_custom_command/README.md +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/example_custom_command/register_callbacks.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/file_permission_handler/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/file_permission_handler/register_callbacks.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/frontend_emitter/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/frontend_emitter/emitter.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/frontend_emitter/register_callbacks.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/oauth_puppy_html.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/shell_safety/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/shell_safety/agent_shell_safety.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/shell_safety/command_cache.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/shell_safety/register_callbacks.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/prompts/antigravity_system_prompt.md +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/prompts/codex_system_prompt.md +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/pydantic_patches.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/reopenable_async_client.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/round_robin_model.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/session_storage.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/status_display.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/summarization_agent.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/terminal_utils.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/agent_tools.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/browser/__init__.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/browser/browser_control.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/browser/browser_interactions.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/browser/browser_locators.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/browser/browser_navigation.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/browser/browser_screenshot.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/browser/browser_scripts.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/browser/browser_workflows.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/browser/camoufox_manager.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/browser/chromium_terminal_manager.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/browser/terminal_command_tools.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/browser/terminal_screenshot_tools.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/browser/terminal_tools.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/command_runner.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/common.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/display.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/file_modifications.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/file_operations.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/subagent_context.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/tools_content.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/uvx_detection.py +0 -0
- {code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/version_checker.py +0 -0
|
@@ -6,6 +6,7 @@ with live preview of agent details.
|
|
|
6
6
|
|
|
7
7
|
import sys
|
|
8
8
|
import time
|
|
9
|
+
import unicodedata
|
|
9
10
|
from typing import List, Optional, Tuple
|
|
10
11
|
|
|
11
12
|
from prompt_toolkit.application import Application
|
|
@@ -24,6 +25,30 @@ from code_puppy.tools.command_runner import set_awaiting_user_input
|
|
|
24
25
|
PAGE_SIZE = 10 # Agents per page
|
|
25
26
|
|
|
26
27
|
|
|
28
|
+
def _sanitize_display_text(text: str) -> str:
|
|
29
|
+
"""Remove or replace characters that cause terminal rendering issues.
|
|
30
|
+
|
|
31
|
+
Args:
|
|
32
|
+
text: Text that may contain emojis or wide characters
|
|
33
|
+
|
|
34
|
+
Returns:
|
|
35
|
+
Sanitized text safe for prompt_toolkit rendering
|
|
36
|
+
"""
|
|
37
|
+
# Keep only characters that render cleanly in terminals
|
|
38
|
+
result = []
|
|
39
|
+
for char in text:
|
|
40
|
+
# Get unicode category
|
|
41
|
+
cat = unicodedata.category(char)
|
|
42
|
+
# Keep letters, numbers, punctuation, spaces, and common symbols
|
|
43
|
+
# Skip "So" (Symbol, other - includes most emojis) that cause issues
|
|
44
|
+
if cat != "So" and cat != "Cn": # Cn = not assigned
|
|
45
|
+
result.append(char)
|
|
46
|
+
# Optionally, you could replace emojis with a placeholder:
|
|
47
|
+
# else:
|
|
48
|
+
# result.append("*")
|
|
49
|
+
return "".join(result).strip()
|
|
50
|
+
|
|
51
|
+
|
|
27
52
|
def _get_agent_entries() -> List[Tuple[str, str, str]]:
|
|
28
53
|
"""Get all agents with their display names and descriptions.
|
|
29
54
|
|
|
@@ -65,7 +90,7 @@ def _render_menu_panel(
|
|
|
65
90
|
start_idx = page * PAGE_SIZE
|
|
66
91
|
end_idx = min(start_idx + PAGE_SIZE, len(entries))
|
|
67
92
|
|
|
68
|
-
lines.append(("bold", "
|
|
93
|
+
lines.append(("bold", "Agents"))
|
|
69
94
|
lines.append(("fg:ansibrightblack", f" (Page {page + 1}/{total_pages})"))
|
|
70
95
|
lines.append(("", "\n\n"))
|
|
71
96
|
|
|
@@ -78,14 +103,17 @@ def _render_menu_panel(
|
|
|
78
103
|
name, display_name, _ = entries[i]
|
|
79
104
|
is_selected = i == selected_idx
|
|
80
105
|
is_current = name == current_agent_name
|
|
106
|
+
|
|
107
|
+
# Sanitize display name to avoid emoji rendering issues
|
|
108
|
+
safe_display_name = _sanitize_display_text(display_name)
|
|
81
109
|
|
|
82
110
|
# Build the line
|
|
83
111
|
if is_selected:
|
|
84
|
-
lines.append(("fg:ansigreen", "
|
|
85
|
-
lines.append(("fg:ansigreen bold",
|
|
112
|
+
lines.append(("fg:ansigreen", "▶ "))
|
|
113
|
+
lines.append(("fg:ansigreen bold", safe_display_name))
|
|
86
114
|
else:
|
|
87
|
-
lines.append(("", "
|
|
88
|
-
lines.append(("",
|
|
115
|
+
lines.append(("", " "))
|
|
116
|
+
lines.append(("", safe_display_name))
|
|
89
117
|
|
|
90
118
|
# Add current marker
|
|
91
119
|
if is_current:
|
|
@@ -132,35 +160,39 @@ def _render_preview_panel(
|
|
|
132
160
|
|
|
133
161
|
name, display_name, description = entry
|
|
134
162
|
is_current = name == current_agent_name
|
|
163
|
+
|
|
164
|
+
# Sanitize text to avoid emoji rendering issues
|
|
165
|
+
safe_display_name = _sanitize_display_text(display_name)
|
|
166
|
+
safe_description = _sanitize_display_text(description)
|
|
135
167
|
|
|
136
168
|
# Agent name (identifier)
|
|
137
|
-
lines.append(("bold", "
|
|
169
|
+
lines.append(("bold", "Name: "))
|
|
138
170
|
lines.append(("", name))
|
|
139
171
|
lines.append(("", "\n\n"))
|
|
140
172
|
|
|
141
173
|
# Display name
|
|
142
|
-
lines.append(("bold", "
|
|
143
|
-
lines.append(("fg:ansicyan",
|
|
174
|
+
lines.append(("bold", "Display Name: "))
|
|
175
|
+
lines.append(("fg:ansicyan", safe_display_name))
|
|
144
176
|
lines.append(("", "\n\n"))
|
|
145
177
|
|
|
146
178
|
# Description
|
|
147
|
-
lines.append(("bold", "
|
|
179
|
+
lines.append(("bold", "Description:"))
|
|
148
180
|
lines.append(("", "\n"))
|
|
149
181
|
|
|
150
182
|
# Wrap description to fit panel
|
|
151
|
-
desc_lines =
|
|
183
|
+
desc_lines = safe_description.split("\n")
|
|
152
184
|
for desc_line in desc_lines:
|
|
153
185
|
# Word wrap long lines
|
|
154
186
|
words = desc_line.split()
|
|
155
|
-
current_line = "
|
|
187
|
+
current_line = ""
|
|
156
188
|
for word in words:
|
|
157
|
-
if len(current_line) + len(word) + 1 >
|
|
189
|
+
if len(current_line) + len(word) + 1 > 55:
|
|
158
190
|
lines.append(("fg:ansibrightblack", current_line))
|
|
159
191
|
lines.append(("", "\n"))
|
|
160
|
-
current_line =
|
|
192
|
+
current_line = word
|
|
161
193
|
else:
|
|
162
|
-
if current_line == "
|
|
163
|
-
current_line
|
|
194
|
+
if current_line == "":
|
|
195
|
+
current_line = word
|
|
164
196
|
else:
|
|
165
197
|
current_line += " " + word
|
|
166
198
|
if current_line.strip():
|
|
@@ -222,10 +254,10 @@ async def interactive_agent_picker() -> Optional[str]:
|
|
|
222
254
|
)
|
|
223
255
|
|
|
224
256
|
menu_window = Window(
|
|
225
|
-
content=menu_control, wrap_lines=
|
|
257
|
+
content=menu_control, wrap_lines=False, width=Dimension(weight=35)
|
|
226
258
|
)
|
|
227
259
|
preview_window = Window(
|
|
228
|
-
content=preview_control, wrap_lines=
|
|
260
|
+
content=preview_control, wrap_lines=False, width=Dimension(weight=65)
|
|
229
261
|
)
|
|
230
262
|
|
|
231
263
|
menu_frame = Frame(menu_window, width=Dimension(weight=35), title="Agents")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/load_context_completion.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/catalog_server_installer.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/mcp/custom_server_installer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/model_picker_completion.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/command_line/prompt_toolkit_completion.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/antigravity_oauth/antigravity_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/antigravity_oauth/register_callbacks.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/antigravity_oauth/test_plugin.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/chatgpt_oauth/register_callbacks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/claude_code_oauth/register_callbacks.py
RENAMED
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/claude_code_oauth/test_plugin.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/customizable_commands/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/example_custom_command/README.md
RENAMED
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/file_permission_handler/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/frontend_emitter/register_callbacks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/shell_safety/agent_shell_safety.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/plugins/shell_safety/register_callbacks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/browser/chromium_terminal_manager.py
RENAMED
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/browser/terminal_command_tools.py
RENAMED
|
File without changes
|
{code_puppy-0.0.362 → code_puppy-0.0.363}/code_puppy/tools/browser/terminal_screenshot_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|