code-puppy 0.0.751__tar.gz → 0.0.753__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.751 → code_puppy-0.0.753}/PKG-INFO +2 -2
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/_builder.py +4 -2
- code_puppy-0.0.753/code_puppy/agents/_model_message_transform.py +28 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/callbacks.py +11 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/subagent_invocation.py +7 -1
- {code_puppy-0.0.751 → code_puppy-0.0.753}/pyproject.toml +2 -2
- {code_puppy-0.0.751 → code_puppy-0.0.753}/.gitignore +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/LICENSE +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/README.md +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/__init__.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/__main__.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agent_execution_context.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/__init__.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/_compaction.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/_diagnostics.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/_history.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/_key_listeners.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/_non_streaming_render.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/_output_limits.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/_run_signals.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/_runtime.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/_steer_processor.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/agent_code_puppy.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/agent_creator_agent.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/agent_helios.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/agent_manager.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/agent_model_judge.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/agent_planning.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/agent_qa_kitten.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/agent_web_retriever.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/base_agent.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/event_stream_handler.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/json_agent.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/retry_profiles.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/run_stats.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/smooth_stream.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/agents/subagent_stream_handler.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/atomic_io.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/atomic_json.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/chatgpt_codex_client.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/claude_cache_client.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/cli_runner.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/__init__.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/add_model_menu.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/agent_menu.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/attachments.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/autosave_menu.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/autosave_search.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/clipboard.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/colors_menu.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/command_handler.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/command_registry.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/config_apply.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/config_commands.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/core_commands.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/diff_menu.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/file_index.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/file_path_completion.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/image_utils.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/load_context_completion.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/__init__.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/base.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/catalog_server_installer.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/custom_server_form.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/custom_server_installer.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/edit_command.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/handler.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/help_command.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/install_command.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/install_menu.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/list_command.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/logs_command.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/mcp_servers_store.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/remove_command.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/restart_command.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/search_command.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/silence_warning_command.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/start_all_command.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/start_command.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/status_command.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/stop_all_command.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/stop_command.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/trust_command.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/utils.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/wizard_utils.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp_binding_menu.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp_completion.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/model_picker_completion.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/model_settings_menu.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/onboarding_slides.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/onboarding_wizard.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/pagination.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/pin_command_completion.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/prompt_toolkit_completion.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/session_commands.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/set_menu.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/set_menu_catalog.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/set_menu_render.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/set_menu_schema.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/set_menu_settings.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/set_menu_shims.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/set_menu_values.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/shell_passthrough.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/skills_completion.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/uc_menu.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/utils.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/config.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/config_file.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/error_logging.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/gemini_code_assist.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/gemini_model.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/hook_engine/README.md +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/hook_engine/__init__.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/hook_engine/aliases.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/hook_engine/engine.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/hook_engine/executor.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/hook_engine/matcher.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/hook_engine/models.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/hook_engine/registry.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/hook_engine/validator.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/http_utils.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/i18n/__init__.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/i18n/audit.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/i18n/catalog.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/i18n/formats.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/i18n/locale.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/i18n/locales/en-US.json +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/i18n/locales/es.json +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/i18n/locales/fr-CA.json +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/i18n/plurals.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/i18n/pseudo.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/i18n/translate.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/kennel_provider.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/keymap.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/list_filtering.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/main.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/__init__.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/agent_bindings.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/async_lifecycle.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/blocking_startup.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/circuit_breaker.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/config_wizard.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/dashboard.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/error_isolation.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/examples/retry_example.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/health_monitor.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/managed_server.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/manager.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/mcp_logs.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/project_config.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/registry.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/retry_manager.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/server_registry_catalog.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/status_tracker.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/system_tools.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/tool_arg_coercion.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_/toolset_utils.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_prompts/__init__.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/mcp_prompts/hook_creator.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/__init__.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/bar_painters.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/bar_rendering.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/bottom_bar.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/bus.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/chords.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/commands.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/editor_actions.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/editor_completion.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/editor_display.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/editor_history.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/editor_keys.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/editor_paste.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/external_editor.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/inline_bar.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/line_editor.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/markdown_patches.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/message_queue.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/messages.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/pause_controller.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/prompt_prefix_style.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/queue_console.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/renderers.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/rich_renderer.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/run_ui.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/run_ui_wiring.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/spinner/__init__.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/subagent_console.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/messaging/transcript_guard.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/model_descriptions.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/model_factory.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/model_switching.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/model_utils.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/models.json +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/models_dev_api.json +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/models_dev_parser.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/observability.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/platform_utils.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/plugins/__init__.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/plugins/config.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/plugins/oauth_pasteback.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/plugins/oauth_puppy_html.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/plugins/trust.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/plugins/trust_notice.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/provider_credentials.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/provider_identity.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/pydantic_patches.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/reopenable_async_client.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/round_robin_model.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/secret_store.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/secret_store_backends.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/session_format_migration.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/session_lifecycle.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/session_migration.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/session_storage.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/session_surrogate_unpickler.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/skill_provider.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/splash.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/status_display.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/terminal_utils.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/token_usage.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/__init__.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/agent_tools.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/ask_user_question/__init__.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/ask_user_question/constants.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/ask_user_question/demo_tui.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/ask_user_question/handler.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/ask_user_question/models.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/ask_user_question/registration.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/ask_user_question/renderers.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/ask_user_question/terminal_ui.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/ask_user_question/theme.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/ask_user_question/tui_loop.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/browser/__init__.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/browser/browser_control.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/browser/browser_interactions.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/browser/browser_locator_resolver.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/browser/browser_locators.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/browser/browser_manager.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/browser/browser_navigation.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/browser/browser_page_snapshot.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/browser/browser_screenshot.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/browser/browser_scripts.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/browser/browser_semantic_interactions.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/browser/browser_workflows.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/browser/tool_registry.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/command_runner.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/common.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/display.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/file_modifications.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/file_operations.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/file_permission_state.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/fs_access.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/image_tools.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/io_backends.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/model_tools.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/shell_backgrounding.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/skills_tools.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/subagent_context.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/subagent_usage_metrics.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/tools_content.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/tools/universal_constructor.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/undo_manager.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/universal_constructor_provider.py +0 -0
- {code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/version_checker.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: code-puppy
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.753
|
|
4
4
|
Summary: Code generation agent
|
|
5
5
|
Project-URL: repository, https://github.com/mpfaffenberger/code_puppy
|
|
6
6
|
Project-URL: HomePage, https://github.com/mpfaffenberger/code_puppy
|
|
@@ -20,7 +20,7 @@ Requires-Dist: anthropic<1,>=0.108.0
|
|
|
20
20
|
Requires-Dist: anyio>=4.7.0
|
|
21
21
|
Requires-Dist: azure-identity>=1.15.0
|
|
22
22
|
Requires-Dist: boto3>=1.43.9
|
|
23
|
-
Requires-Dist: code-puppy-core-plugins>=0.0.
|
|
23
|
+
Requires-Dist: code-puppy-core-plugins>=0.0.12
|
|
24
24
|
Requires-Dist: httpx[http2]>=0.24.1
|
|
25
25
|
Requires-Dist: json-repair>=0.46.2
|
|
26
26
|
Requires-Dist: keyring>=24.0.0
|
|
@@ -19,6 +19,7 @@ from pydantic_ai import Agent as PydanticAgent
|
|
|
19
19
|
from pydantic_ai.capabilities import ProcessHistory
|
|
20
20
|
|
|
21
21
|
from code_puppy.agents._compaction import make_history_processor
|
|
22
|
+
from code_puppy.agents._model_message_transform import build_model_message_transform
|
|
22
23
|
from code_puppy.agents._output_limits import (
|
|
23
24
|
build_response_clamp,
|
|
24
25
|
build_tool_output_limits,
|
|
@@ -657,13 +658,14 @@ def build_pydantic_agent(
|
|
|
657
658
|
# `history_processors=` kwarg, removed in pydantic-ai v2).
|
|
658
659
|
# ToolOutputLimits reduces oversized tool returns on a different
|
|
659
660
|
# hook (after_tool_execute), so its position is inert; the
|
|
660
|
-
# response clamp runs before_model_request
|
|
661
|
-
#
|
|
661
|
+
# response clamp runs before_model_request after both history
|
|
662
|
+
# processors. The plugin transform wraps the final model request.
|
|
662
663
|
capabilities=[
|
|
663
664
|
*build_tool_output_limits(),
|
|
664
665
|
ProcessHistory(history_processor),
|
|
665
666
|
ProcessHistory(steer_processor),
|
|
666
667
|
build_response_clamp(),
|
|
668
|
+
build_model_message_transform(logical_agent_name),
|
|
667
669
|
],
|
|
668
670
|
model_settings=model_settings,
|
|
669
671
|
)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"""Plugin transforms for final outbound model messages."""
|
|
2
|
+
|
|
3
|
+
from copy import copy
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
from pydantic_ai import RunContext
|
|
7
|
+
from pydantic_ai.capabilities import Hooks, WrapModelRequestHandler
|
|
8
|
+
from pydantic_ai.messages import ModelResponse
|
|
9
|
+
from pydantic_ai.models import ModelRequestContext
|
|
10
|
+
|
|
11
|
+
from code_puppy.callbacks import on_transform_model_messages
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def build_model_message_transform(agent_name: str | None) -> Hooks:
|
|
15
|
+
"""Build the request-only plugin transform for an agent."""
|
|
16
|
+
|
|
17
|
+
async def transform(
|
|
18
|
+
_ctx: RunContext[Any],
|
|
19
|
+
*,
|
|
20
|
+
request_context: ModelRequestContext,
|
|
21
|
+
handler: WrapModelRequestHandler,
|
|
22
|
+
) -> ModelResponse:
|
|
23
|
+
transformed_context = copy(request_context)
|
|
24
|
+
transformed_context.messages = list(request_context.messages)
|
|
25
|
+
await on_transform_model_messages(agent_name, transformed_context.messages)
|
|
26
|
+
return await handler(transformed_context)
|
|
27
|
+
|
|
28
|
+
return Hooks(model_request=transform)
|
|
@@ -3,6 +3,8 @@ import logging
|
|
|
3
3
|
import traceback
|
|
4
4
|
from typing import Any, Callable, Dict, List, Literal, Optional, Set, Tuple
|
|
5
5
|
|
|
6
|
+
from pydantic_ai.messages import ModelMessage
|
|
7
|
+
|
|
6
8
|
PhaseType = Literal[
|
|
7
9
|
"startup",
|
|
8
10
|
"shutdown",
|
|
@@ -73,6 +75,7 @@ PhaseType = Literal[
|
|
|
73
75
|
"awaiting_user_input",
|
|
74
76
|
"git_branch_provider",
|
|
75
77
|
"feature_capability",
|
|
78
|
+
"transform_model_messages",
|
|
76
79
|
]
|
|
77
80
|
CallbackFunc = Callable[..., Any]
|
|
78
81
|
|
|
@@ -160,6 +163,7 @@ _callbacks: Dict[PhaseType, List[CallbackFunc]] = {
|
|
|
160
163
|
"awaiting_user_input": [],
|
|
161
164
|
"git_branch_provider": [],
|
|
162
165
|
"feature_capability": [],
|
|
166
|
+
"transform_model_messages": [],
|
|
163
167
|
}
|
|
164
168
|
|
|
165
169
|
logger = logging.getLogger(__name__)
|
|
@@ -886,6 +890,13 @@ async def on_stream_event(
|
|
|
886
890
|
)
|
|
887
891
|
|
|
888
892
|
|
|
893
|
+
async def on_transform_model_messages(
|
|
894
|
+
agent_name: str | None, messages: List[ModelMessage]
|
|
895
|
+
) -> List[Any]:
|
|
896
|
+
"""Let plugins mutate the final outbound model messages in place."""
|
|
897
|
+
return await _trigger_callbacks("transform_model_messages", agent_name, messages)
|
|
898
|
+
|
|
899
|
+
|
|
889
900
|
def on_register_tools() -> List[Dict[str, Any]]:
|
|
890
901
|
"""Collect custom tool registrations from plugins.
|
|
891
902
|
|
|
@@ -401,6 +401,9 @@ async def _invoke_agent_impl(
|
|
|
401
401
|
mcp_servers = manager.get_servers_for_agent(agent_name=bound_agent_name)
|
|
402
402
|
|
|
403
403
|
from code_puppy.agents._compaction import make_history_processor
|
|
404
|
+
from code_puppy.agents._model_message_transform import (
|
|
405
|
+
build_model_message_transform,
|
|
406
|
+
)
|
|
404
407
|
|
|
405
408
|
# Build the pydantic-ai agent. MCP servers always included; plugins
|
|
406
409
|
# (e.g. DBOS) may swap them via the agent_run_context hook.
|
|
@@ -417,7 +420,10 @@ async def _invoke_agent_impl(
|
|
|
417
420
|
toolsets=mcp_servers,
|
|
418
421
|
# ProcessHistory capability replaces the deprecated
|
|
419
422
|
# `history_processors=` kwarg (removed in pydantic-ai v2).
|
|
420
|
-
capabilities=[
|
|
423
|
+
capabilities=[
|
|
424
|
+
ProcessHistory(make_history_processor(agent_config)),
|
|
425
|
+
build_model_message_transform(agent_name),
|
|
426
|
+
],
|
|
421
427
|
model_settings=model_settings,
|
|
422
428
|
)
|
|
423
429
|
|
|
@@ -4,12 +4,12 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "code-puppy"
|
|
7
|
-
version = "0.0.
|
|
7
|
+
version = "0.0.753"
|
|
8
8
|
description = "Code generation agent"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11,<3.15"
|
|
11
11
|
dependencies = [
|
|
12
|
-
"code-puppy-core-plugins>=0.0.
|
|
12
|
+
"code-puppy-core-plugins>=0.0.12",
|
|
13
13
|
"logfire>=4.0",
|
|
14
14
|
"pydantic-ai-slim[openai,anthropic,mcp]==2.31.0",
|
|
15
15
|
"pydantic-ai-harness==0.23.0",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.751 → code_puppy-0.0.753}/code_puppy/command_line/load_context_completion.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.751 → code_puppy-0.0.753}/code_puppy/command_line/mcp/catalog_server_installer.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_puppy-0.0.751 → code_puppy-0.0.753}/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.751 → code_puppy-0.0.753}/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
|
{code_puppy-0.0.751 → code_puppy-0.0.753}/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.751 → code_puppy-0.0.753}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|