code-puppy 0.0.485__tar.gz → 0.0.486__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.485 → code_puppy-0.0.486}/PKG-INFO +1 -1
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/file_modifications.py +73 -32
- {code_puppy-0.0.485 → code_puppy-0.0.486}/pyproject.toml +1 -1
- {code_puppy-0.0.485 → code_puppy-0.0.486}/.gitignore +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/LICENSE +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/README.md +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/__main__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/_builder.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/_compaction.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/_diagnostics.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/_history.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/_key_listeners.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/_non_streaming_render.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/_runtime.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/agent_code_puppy.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/agent_creator_agent.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/agent_helios.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/agent_manager.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/agent_planning.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/agent_qa_kitten.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/base_agent.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/event_stream_handler.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/json_agent.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/agents/subagent_stream_handler.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/chatgpt_codex_client.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/claude_cache_client.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/cli_runner.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/add_model_menu.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/agent_menu.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/attachments.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/autosave_menu.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/clipboard.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/colors_menu.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/command_handler.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/command_registry.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/config_commands.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/core_commands.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/diff_menu.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/file_path_completion.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/load_context_completion.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/base.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/catalog_server_installer.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/custom_server_form.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/custom_server_installer.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/edit_command.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/handler.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/help_command.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/install_command.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/install_menu.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/list_command.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/logs_command.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/remove_command.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/restart_command.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/search_command.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/start_all_command.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/start_command.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/status_command.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/stop_all_command.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/stop_command.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/test_command.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/utils.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/wizard_utils.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp_completion.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/model_picker_completion.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/model_settings_menu.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/onboarding_slides.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/onboarding_wizard.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/pagination.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/pin_command_completion.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/prompt_toolkit_completion.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/session_commands.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/shell_passthrough.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/skills_completion.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/uc_menu.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/utils.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/wiggum_state.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/config.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/error_logging.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/gemini_code_assist.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/gemini_model.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/hook_engine/README.md +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/hook_engine/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/hook_engine/aliases.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/hook_engine/engine.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/hook_engine/executor.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/hook_engine/matcher.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/hook_engine/models.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/hook_engine/registry.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/hook_engine/validator.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/http_utils.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/keymap.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/list_filtering.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/main.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/async_lifecycle.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/blocking_startup.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/captured_stdio_server.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/circuit_breaker.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/config_wizard.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/dashboard.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/error_isolation.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/examples/retry_example.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/health_monitor.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/managed_server.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/manager.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/mcp_logs.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/registry.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/retry_manager.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/server_registry_catalog.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/status_tracker.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_/system_tools.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_prompts/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/mcp_prompts/hook_creator.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/messaging/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/messaging/bus.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/messaging/commands.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/messaging/markdown_patches.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/messaging/message_queue.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/messaging/messages.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/messaging/queue_console.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/messaging/renderers.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/messaging/rich_renderer.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/messaging/spinner/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/messaging/spinner/console_spinner.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/messaging/spinner/spinner_base.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/messaging/subagent_console.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/model_factory.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/model_switching.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/model_utils.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/models.json +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/models_dev_api.json +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/models_dev_parser.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/agent_skills/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/agent_skills/config.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/agent_skills/discovery.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/agent_skills/downloader.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/agent_skills/installer.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/agent_skills/metadata.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/agent_skills/prompt_builder.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/agent_skills/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/agent_skills/remote_catalog.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/agent_skills/skill_catalog.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/agent_skills/skills_install_menu.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/agent_skills/skills_menu.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/aws_bedrock/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/aws_bedrock/config.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/aws_bedrock/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/aws_bedrock/utils.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/azure_foundry/README.md +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/azure_foundry/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/azure_foundry/config.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/azure_foundry/discovery.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/azure_foundry/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/azure_foundry/token.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/azure_foundry/utils.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/chatgpt_oauth/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/chatgpt_oauth/config.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/chatgpt_oauth/oauth_flow.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/chatgpt_oauth/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/chatgpt_oauth/test_plugin.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/chatgpt_oauth/utils.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/claude_code_hooks/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/claude_code_hooks/config.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/claude_code_hooks/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/claude_code_oauth/README.md +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/claude_code_oauth/SETUP.md +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/claude_code_oauth/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/claude_code_oauth/config.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/claude_code_oauth/fast_mode.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/claude_code_oauth/prompt_handler.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/claude_code_oauth/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/claude_code_oauth/test_fast_mode.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/claude_code_oauth/test_plugin.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/claude_code_oauth/token_refresh_heartbeat.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/claude_code_oauth/utils.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/copilot_auth/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/copilot_auth/config.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/copilot_auth/reasoning_client.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/copilot_auth/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/copilot_auth/utils.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/customizable_commands/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/customizable_commands/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/dbos_durable_exec/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/dbos_durable_exec/cancel.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/dbos_durable_exec/commands.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/dbos_durable_exec/config.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/dbos_durable_exec/lifecycle.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/dbos_durable_exec/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/dbos_durable_exec/runtime.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/dbos_durable_exec/workflow_ids.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/dbos_durable_exec/wrapper.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/destructive_command_guard/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/destructive_command_guard/detector.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/example_custom_command/README.md +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/example_custom_command/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/file_permission_handler/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/file_permission_handler/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/force_push_guard/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/force_push_guard/detector.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/force_push_guard/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/force_push_guard/test_detector.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/frontend_emitter/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/frontend_emitter/emitter.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/frontend_emitter/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/hook_creator/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/hook_creator/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/hook_manager/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/hook_manager/config.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/hook_manager/hooks_menu.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/hook_manager/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/oauth_puppy_html.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/ollama_setup/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/ollama_setup/completer.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/ollama_setup/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/pop_command/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/pop_command/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/shell_safety/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/shell_safety/agent_shell_safety.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/shell_safety/command_cache.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/shell_safety/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/synthetic_status/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/synthetic_status/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/synthetic_status/status_api.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/universal_constructor/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/universal_constructor/models.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/universal_constructor/register_callbacks.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/universal_constructor/registry.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/universal_constructor/sandbox.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/provider_identity.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/pydantic_patches.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/reopenable_async_client.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/round_robin_model.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/session_storage.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/status_display.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/summarization_agent.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/terminal_utils.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/agent_tools.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/ask_user_question/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/ask_user_question/constants.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/ask_user_question/demo_tui.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/ask_user_question/handler.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/ask_user_question/models.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/ask_user_question/registration.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/ask_user_question/renderers.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/ask_user_question/terminal_ui.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/ask_user_question/theme.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/ask_user_question/tui_loop.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/browser/__init__.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/browser/browser_control.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/browser/browser_interactions.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/browser/browser_locators.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/browser/browser_manager.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/browser/browser_navigation.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/browser/browser_screenshot.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/browser/browser_scripts.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/browser/browser_workflows.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/command_runner.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/common.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/display.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/file_operations.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/image_tools.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/skills_tools.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/subagent_context.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/tools_content.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/tools/universal_constructor.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/uvx_detection.py +0 -0
- {code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/version_checker.py +0 -0
|
@@ -793,6 +793,21 @@ _REPLACEMENT_ITEM_SCHEMA = {
|
|
|
793
793
|
InlineReplacement = Annotated[Dict[str, str], WithJsonSchema(_REPLACEMENT_ITEM_SCHEMA)]
|
|
794
794
|
|
|
795
795
|
|
|
796
|
+
def _try_json_repair(v: Any) -> Any:
|
|
797
|
+
"""Best-effort: turn a JSON-ish string into a real Python value.
|
|
798
|
+
|
|
799
|
+
Returns the parsed object on success, or the original ``v`` unchanged on
|
|
800
|
+
failure (or if ``v`` isn't a string in the first place). Used by both the
|
|
801
|
+
outer list coercion and the per-item validation in ``replace_in_file``.
|
|
802
|
+
"""
|
|
803
|
+
if not isinstance(v, str):
|
|
804
|
+
return v
|
|
805
|
+
try:
|
|
806
|
+
return json.loads(json_repair.repair_json(v))
|
|
807
|
+
except Exception:
|
|
808
|
+
return v
|
|
809
|
+
|
|
810
|
+
|
|
796
811
|
def _coerce_replacements_arg(v: Any) -> Any:
|
|
797
812
|
"""Coerce a stringified JSON array back into an actual list.
|
|
798
813
|
|
|
@@ -803,13 +818,7 @@ def _coerce_replacements_arg(v: Any) -> Any:
|
|
|
803
818
|
the normal validator. Non-strings pass through untouched so regular list
|
|
804
819
|
inputs keep their fast path.
|
|
805
820
|
"""
|
|
806
|
-
|
|
807
|
-
try:
|
|
808
|
-
return json.loads(json_repair.repair_json(v))
|
|
809
|
-
except Exception:
|
|
810
|
-
# Fall through; let Pydantic raise its normal, informative error.
|
|
811
|
-
return v
|
|
812
|
-
return v
|
|
821
|
+
return _try_json_repair(v)
|
|
813
822
|
|
|
814
823
|
|
|
815
824
|
# List type that tolerates JSON-string-encoded arrays coming from the wire.
|
|
@@ -836,32 +845,64 @@ def register_replace_in_file(agent):
|
|
|
836
845
|
Replacements are applied sequentially. Prefer this over full file rewrites.
|
|
837
846
|
"""
|
|
838
847
|
group_id = generate_group_id("replace_in_file", file_path)
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
848
|
+
try:
|
|
849
|
+
# Validate replacements up front so a malformed payload from the
|
|
850
|
+
# model returns a clean error instead of bubbling a KeyError up
|
|
851
|
+
# through pydantic_ai and tearing down the whole agent run.
|
|
852
|
+
normalized: List[Dict[str, str]] = []
|
|
853
|
+
for idx, raw in enumerate(replacements):
|
|
854
|
+
# Per-item json_repair: some models stringify each replacement
|
|
855
|
+
# individually (e.g. ["{\"old_str\": ...}", ...]). Heal those
|
|
856
|
+
# before strict validation so we don't reject recoverable input.
|
|
857
|
+
r = _try_json_repair(raw)
|
|
858
|
+
if not isinstance(r, dict):
|
|
859
|
+
return {
|
|
860
|
+
"error": (
|
|
861
|
+
f"replacements[{idx}] must be an object with "
|
|
862
|
+
f"'old_str' and 'new_str' keys, got {type(raw).__name__}."
|
|
863
|
+
)
|
|
864
|
+
}
|
|
865
|
+
missing = [k for k in ("old_str", "new_str") if k not in r]
|
|
866
|
+
if missing:
|
|
867
|
+
return {
|
|
868
|
+
"error": (
|
|
869
|
+
f"replacements[{idx}] is missing required key(s): "
|
|
870
|
+
f"{', '.join(missing)}. Each replacement must include "
|
|
871
|
+
f"both 'old_str' and 'new_str'."
|
|
872
|
+
)
|
|
873
|
+
}
|
|
874
|
+
normalized.append({"old_str": r["old_str"], "new_str": r["new_str"]})
|
|
863
875
|
|
|
864
|
-
|
|
876
|
+
result = _replace_in_file_helper(
|
|
877
|
+
context, file_path, normalized, message_group=group_id
|
|
878
|
+
)
|
|
879
|
+
if "diff" in result:
|
|
880
|
+
del result["diff"]
|
|
881
|
+
|
|
882
|
+
# Trigger legacy edit_file callbacks for backward compatibility
|
|
883
|
+
payload = ReplacementsPayload(
|
|
884
|
+
file_path=file_path,
|
|
885
|
+
replacements=[
|
|
886
|
+
Replacement(old_str=r["old_str"], new_str=r["new_str"])
|
|
887
|
+
for r in normalized
|
|
888
|
+
],
|
|
889
|
+
)
|
|
890
|
+
enhanced_results = on_edit_file(context, result, payload)
|
|
891
|
+
if enhanced_results:
|
|
892
|
+
for enhanced_result in enhanced_results:
|
|
893
|
+
if enhanced_result is not None:
|
|
894
|
+
result = enhanced_result
|
|
895
|
+
break
|
|
896
|
+
|
|
897
|
+
return result
|
|
898
|
+
except Exception as exc:
|
|
899
|
+
# Last line of defense — never let this tool crash the agent run.
|
|
900
|
+
_log_error(
|
|
901
|
+
"Unhandled exception in replace_in_file",
|
|
902
|
+
exc,
|
|
903
|
+
message_group=group_id,
|
|
904
|
+
)
|
|
905
|
+
return {"error": f"replace_in_file failed: {exc}"}
|
|
865
906
|
|
|
866
907
|
|
|
867
908
|
def register_delete_snippet(agent):
|
|
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.485 → code_puppy-0.0.486}/code_puppy/command_line/load_context_completion.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/command_line/mcp/catalog_server_installer.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.485 → code_puppy-0.0.486}/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.485 → code_puppy-0.0.486}/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.485 → code_puppy-0.0.486}/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
|
|
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.485 → code_puppy-0.0.486}/code_puppy/plugins/agent_skills/register_callbacks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/agent_skills/skills_install_menu.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/aws_bedrock/register_callbacks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/azure_foundry/register_callbacks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/chatgpt_oauth/register_callbacks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/claude_code_hooks/register_callbacks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.485 → code_puppy-0.0.486}/code_puppy/plugins/claude_code_oauth/prompt_handler.py
RENAMED
|
File without changes
|