code-puppy 0.0.892__tar.gz → 0.0.894__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.892 → code_puppy-0.0.894}/PKG-INFO +1 -1
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/http_auth.py +10 -1
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/models_dev_parser.py +2 -3
- code_puppy-0.0.894/code_puppy/tools/approval_feedback.py +29 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/common.py +9 -5
- {code_puppy-0.0.892 → code_puppy-0.0.894}/pyproject.toml +1 -1
- {code_puppy-0.0.892 → code_puppy-0.0.894}/.gitignore +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/LICENSE +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/README.md +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/__init__.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/__main__.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/_plugin_i18n_lifecycle.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/_pydantic_tool_helpers.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/_pydantic_video_patch.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agent_completion_inbox.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agent_execution_context.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/__init__.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/_builder.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/_code_mode.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/_code_mode_guidance.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/_compaction.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/_diagnostics.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/_foreign_thinking.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/_history.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/_key_listeners.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/_model_message_transform.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/_non_streaming_render.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/_output_limits.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/_run_signals.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/_runtime.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/_steer_processor.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/_subagent_recursion.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/_windows_console.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/_wire_tool_names.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/agent_code_puppy.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/agent_creator_agent.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/agent_helios.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/agent_manager.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/agent_model_judge.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/agent_planning.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/agent_qa_kitten.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/agent_web_retriever.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/base_agent.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/event_stream_handler.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/json_agent.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/retry_checkpoint.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/retry_profiles.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/run_stats.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/smooth_stream.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/stream_status.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/subagent_stream_handler.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/agents/thinking_output.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/asyncio_cleanup.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/atomic_io.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/atomic_json.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/ca_bundle.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/callbacks.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/capabilities/__init__.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/capabilities/compaction.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/capabilities/eager_timing.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/chatgpt_codex_client.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/claude_cache_client.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/claude_oauth_transport.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/cli_runner.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/__init__.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/add_model_details.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/add_model_menu.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/add_model_menus.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/add_model_vllm.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/agent_menu.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/attachments.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/autosave_menu.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/autosave_search.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/clipboard.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/colors_menu.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/command_handler.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/command_registry.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/completers.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/completion_cache.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/config_apply.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/config_commands.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/core_commands.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/file_index.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/file_path_completion.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/help_catalog.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/help_overlay.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/image_utils.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/load_context_completion.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/__init__.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/base.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/catalog_server_installer.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/custom_server_form.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/custom_server_installer.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/edit_command.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/handler.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/help_command.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/install_command.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/install_menu.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/list_command.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/logs_command.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/mcp_servers_store.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/remove_command.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/restart_command.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/search_command.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/silence_warning_command.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/start_all_command.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/start_command.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/status_command.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/stop_all_command.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/stop_command.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/trust_command.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/utils.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/wizard_utils.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp_binding_menu.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp_completion.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/menu_session.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/model_picker_completion.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/model_settings_defs.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/model_settings_menu.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/onboarding_slides.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/onboarding_wizard.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/pagination.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/pin_command_completion.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/refresh_models.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/session_browser.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/session_browser_data.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/session_commands.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/set_menu.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/set_menu_catalog.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/set_menu_schema.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/set_menu_settings.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/set_menu_shims.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/set_menu_values.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/shell_passthrough.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/skills_completion.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/tui_style.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/uc_menu.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/utils.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/config.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/config_file.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/diagnostics.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/error_logging.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/events/__init__.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/events/bridge.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/file_completion_io.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/file_completion_tokens.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/gemini_code_assist.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/gemini_common.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/gemini_model.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/hook_engine/README.md +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/hook_engine/__init__.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/hook_engine/aliases.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/hook_engine/engine.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/hook_engine/executor.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/hook_engine/matcher.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/hook_engine/models.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/hook_engine/registry.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/hook_engine/validator.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/http_retry.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/http_utils.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/httpx2_utils.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/i18n/__init__.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/i18n/audit.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/i18n/catalog.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/i18n/formats.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/i18n/interpolation.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/i18n/locale.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/i18n/locales/en-US.json +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/i18n/locales/es.json +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/i18n/locales/fr-CA.json +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/i18n/plugin_catalog.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/i18n/plurals.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/i18n/pseudo.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/i18n/translate.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/kennel_provider.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/keymap.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/list_filtering.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/main.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/__init__.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/agent_bindings.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/async_lifecycle.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/blocking_startup.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/circuit_breaker.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/config_wizard.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/dashboard.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/error_isolation.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/examples/retry_example.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/health_monitor.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/managed_server.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/manager.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/manager_lifecycle.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/mcp_logs.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/project_config.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/registry.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/retry_manager.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/server_registry_catalog.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/status_tracker.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/system_tools.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/tool_arg_coercion.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_/toolset_utils.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_prompts/__init__.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/mcp_prompts/hook_creator.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/__init__.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/bar_painters.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/bar_rendering.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/bottom_bar.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/bus.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/chords.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/commands.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/editor_actions.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/editor_completion.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/editor_display.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/editor_history.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/editor_keys.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/editor_paste.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/editor_queue.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/editor_submission.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/external_editor.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/identity_line.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/idle_status.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/inline_bar.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/line_editor.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/markdown_patches.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/menu_lifecycle.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/message_queue.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/messages.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/pause_controller.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/prompt_prefix_style.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/queue_console.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/renderers.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/rich_renderer.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/run_ui.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/run_ui_wiring.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/speculation_line.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/speculation_stats.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/speculation_toggle.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/spinner/__init__.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/status_line.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/subagent_console.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/theme_accent.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/tool_output.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/messaging/transcript_guard.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/model_descriptions.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/model_factory.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/model_switching.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/model_utils.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/models.json +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/models_dev_api.json +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/observability.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/platform_utils.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/plugins/__init__.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/plugins/config.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/plugins/oauth_pasteback.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/plugins/oauth_puppy_html.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/plugins/trust.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/plugins/trust_notice.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/private_inference.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/provider_credentials.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/provider_identity.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/pydantic_patches.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/reopenable_async_client.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/round_robin_model.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/secret_store.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/secret_store_backends.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/session_format_migration.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/session_lifecycle.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/session_migration.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/session_storage.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/session_surrogate_unpickler.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/shared_credentials.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/skill_provider.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/splash.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/status_display.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/steer_metadata.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/terminal_utils.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/token_usage.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/__init__.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/_browser_registry.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/_lazy.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/agent_tools.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/ask_user_question/__init__.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/ask_user_question/constants.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/ask_user_question/demo_tui.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/ask_user_question/handler.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/ask_user_question/models.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/ask_user_question/registration.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/ask_user_question/renderers.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/ask_user_question/terminal_ui.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/ask_user_question/theme.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/ask_user_question/tui_loop.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/browser/__init__.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/browser/browser_control.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/browser/browser_interactions.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/browser/browser_locator_resolver.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/browser/browser_locators.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/browser/browser_manager.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/browser/browser_navigation.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/browser/browser_page_snapshot.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/browser/browser_screenshot.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/browser/browser_scripts.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/browser/browser_semantic_interactions.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/browser/browser_workflows.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/browser/tool_registry.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/command_runner.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/display.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/file_modifications.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/file_operations.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/file_permission_state.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/fs_access.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/image_tools.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/io_backends.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/model_tools.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/ripgrep.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/shell_backgrounding.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/skills_tools.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/subagent_context.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/subagent_invocation.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/subagent_usage_metrics.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/tools_content.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/tools/universal_constructor.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/undo_manager.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/universal_constructor_provider.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/version_checker.py +0 -0
- {code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/zai_model.py +0 -0
|
@@ -37,4 +37,13 @@ def http_auth(config: dict, url: str, headers: dict | None) -> OAuth | None:
|
|
|
37
37
|
raise ValueError(t("mcp.oauth.https_required"))
|
|
38
38
|
if not parsed.hostname or parsed.username or parsed.password:
|
|
39
39
|
raise ValueError(t("mcp.oauth.https_required"))
|
|
40
|
-
|
|
40
|
+
# Register as a public client (RFC 8252 §8.4): a CLI cannot keep a secret,
|
|
41
|
+
# and PKCE already protects the code exchange. Left unset, servers default
|
|
42
|
+
# to client_secret_basic, and the MCP SDK then sends the Basic header *and*
|
|
43
|
+
# client_id in the body; strict servers (mcp.cloudflare.com) reject that
|
|
44
|
+
# token request as "multiple authentication methods".
|
|
45
|
+
return OAuth(
|
|
46
|
+
client_name="Code Puppy",
|
|
47
|
+
callback_host="127.0.0.1",
|
|
48
|
+
additional_client_metadata={"token_endpoint_auth_method": "none"},
|
|
49
|
+
)
|
|
@@ -554,9 +554,8 @@ def get_registry() -> Optional[ModelsDevRegistry]:
|
|
|
554
554
|
|
|
555
555
|
This serves the model-resolution path (``config.get_model_max_output_tokens``),
|
|
556
556
|
which runs at startup and on every model switch, so it must never touch the
|
|
557
|
-
network: a plain ``hi`` would otherwise phone models.dev
|
|
558
|
-
|
|
559
|
-
every release over it. The interactive ``/add_model`` and
|
|
557
|
+
network: a plain ``hi`` would otherwise phone models.dev (pinned by
|
|
558
|
+
``tests/test_models_dev_registry_cache.py``). The interactive ``/add_model`` and
|
|
560
559
|
``/refresh_models`` commands build their own live ``ModelsDevRegistry()``
|
|
561
560
|
on demand, so the snapshot only ever lags until the user asks for fresh
|
|
562
561
|
data. The first caller pays the parse cost once; everyone after reuses
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""Keep blocking feedback input off the loop without abandoning stdin."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
from collections.abc import Callable
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
async def read_feedback(prompt: Callable[[], str]) -> str:
|
|
8
|
+
"""Read feedback in a worker, retaining ownership through cancellation.
|
|
9
|
+
|
|
10
|
+
A blocking terminal read cannot be interrupted by cancelling its asyncio
|
|
11
|
+
waiter. Defer cancellation until the user submits or closes the input;
|
|
12
|
+
callers must retain their stdin suspension and approval lock throughout.
|
|
13
|
+
"""
|
|
14
|
+
reader = asyncio.create_task(asyncio.to_thread(prompt))
|
|
15
|
+
try:
|
|
16
|
+
return await asyncio.shield(reader)
|
|
17
|
+
except asyncio.CancelledError:
|
|
18
|
+
# Further cancel requests must not release stdin while it is still
|
|
19
|
+
# being read. Retrieve the result/exception before propagating cancel.
|
|
20
|
+
while not reader.done():
|
|
21
|
+
try:
|
|
22
|
+
await asyncio.shield(reader)
|
|
23
|
+
except asyncio.CancelledError:
|
|
24
|
+
continue
|
|
25
|
+
except Exception:
|
|
26
|
+
break
|
|
27
|
+
if not reader.cancelled():
|
|
28
|
+
reader.exception()
|
|
29
|
+
raise
|
|
@@ -1136,14 +1136,18 @@ async def _get_user_approval_async_impl(
|
|
|
1136
1136
|
confirmed = False
|
|
1137
1137
|
emit_info("")
|
|
1138
1138
|
emit_info(t("tools.common.approval.tell", puppy_name=puppy_name))
|
|
1139
|
-
#
|
|
1140
|
-
#
|
|
1139
|
+
# Reading feedback must not block the agent's event loop.
|
|
1140
|
+
# Keep stdin ownership suspended until the worker finishes.
|
|
1141
1141
|
from code_puppy.agents._key_listeners import suspended_key_listener
|
|
1142
|
+
from code_puppy.tools.approval_feedback import read_feedback
|
|
1142
1143
|
|
|
1143
1144
|
with suspended_key_listener():
|
|
1144
|
-
user_feedback =
|
|
1145
|
-
|
|
1146
|
-
|
|
1145
|
+
user_feedback = (
|
|
1146
|
+
await read_feedback(
|
|
1147
|
+
lambda: Prompt.ask(
|
|
1148
|
+
"[bold green]\u27a4[/bold green]", default=""
|
|
1149
|
+
)
|
|
1150
|
+
)
|
|
1147
1151
|
).strip()
|
|
1148
1152
|
|
|
1149
1153
|
if not user_feedback:
|
|
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
|
|
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.892 → code_puppy-0.0.894}/code_puppy/command_line/load_context_completion.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/catalog_server_installer.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.892 → code_puppy-0.0.894}/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
|
{code_puppy-0.0.892 → code_puppy-0.0.894}/code_puppy/command_line/mcp/silence_warning_command.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
|
{code_puppy-0.0.892 → code_puppy-0.0.894}/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
|
|
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
|