code-puppy 0.0.650__tar.gz → 0.0.652__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.650 → code_puppy-0.0.652}/PKG-INFO +1 -1
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/cli_runner.py +102 -98
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/config_commands.py +37 -36
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/config.py +3 -2
- code_puppy-0.0.652/code_puppy/i18n/audit.py +298 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/i18n/locale.py +15 -36
- code_puppy-0.0.652/code_puppy/i18n/locales/en-US.json +113 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/code_puppy_agent/SKILL.md +10 -4
- {code_puppy-0.0.650 → code_puppy-0.0.652}/pyproject.toml +1 -1
- code_puppy-0.0.650/code_puppy/i18n/locales/en-US.json +0 -23
- {code_puppy-0.0.650 → code_puppy-0.0.652}/.gitignore +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/LICENSE +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/README.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/__main__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/_builder.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/_compaction.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/_diagnostics.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/_history.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/_key_listeners.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/_non_streaming_render.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/_run_signals.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/_runtime.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/_steer_processor.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/agent_code_puppy.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/agent_creator_agent.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/agent_helios.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/agent_manager.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/agent_planning.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/agent_qa_kitten.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/base_agent.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/event_stream_handler.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/json_agent.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/retry_profiles.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/run_stats.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/smooth_stream.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/agents/subagent_stream_handler.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/chatgpt_codex_client.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/claude_cache_client.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/add_model_menu.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/agent_menu.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/attachments.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/autosave_menu.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/autosave_search.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/clipboard.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/colors_menu.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/command_handler.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/command_registry.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/config_apply.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/core_commands.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/diff_menu.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/file_index.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/file_path_completion.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/image_utils.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/judges_menu.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/load_context_completion.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/base.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/catalog_server_installer.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/custom_server_form.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/custom_server_installer.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/edit_command.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/handler.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/help_command.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/install_command.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/install_menu.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/list_command.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/logs_command.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/remove_command.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/restart_command.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/search_command.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/silence_warning_command.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/start_all_command.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/start_command.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/status_command.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/stop_all_command.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/stop_command.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/trust_command.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/utils.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp/wizard_utils.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp_binding_menu.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/mcp_completion.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/model_picker_completion.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/model_settings_menu.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/onboarding_slides.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/onboarding_wizard.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/pagination.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/pin_command_completion.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/prompt_toolkit_completion.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/session_commands.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/set_menu.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/set_menu_catalog.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/set_menu_render.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/set_menu_schema.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/set_menu_settings.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/set_menu_shims.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/set_menu_values.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/shell_passthrough.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/skills_completion.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/uc_menu.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/utils.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/command_line/wiggum_state.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/error_logging.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/gemini_code_assist.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/gemini_model.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/hook_engine/README.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/hook_engine/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/hook_engine/aliases.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/hook_engine/engine.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/hook_engine/executor.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/hook_engine/matcher.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/hook_engine/models.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/hook_engine/registry.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/hook_engine/validator.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/http_utils.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/i18n/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/i18n/catalog.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/i18n/formats.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/i18n/locales/es-AR.json +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/i18n/locales/es-CL.json +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/i18n/locales/es-CO.json +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/i18n/locales/es-MX.json +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/i18n/locales/es.json +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/i18n/locales/fr-CA.json +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/i18n/plurals.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/i18n/pseudo.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/i18n/translate.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/keymap.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/list_filtering.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/main.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/agent_bindings.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/async_lifecycle.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/blocking_startup.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/captured_stdio_server.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/circuit_breaker.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/config_wizard.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/dashboard.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/error_isolation.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/examples/retry_example.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/health_monitor.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/managed_server.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/manager.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/mcp_logs.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/project_config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/registry.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/retry_manager.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/server_registry_catalog.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/status_tracker.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/system_tools.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_/tool_arg_coercion.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_prompts/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/mcp_prompts/hook_creator.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/bar_painters.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/bar_rendering.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/bottom_bar.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/bus.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/chords.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/commands.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/editor_actions.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/editor_completion.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/editor_display.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/editor_history.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/editor_keys.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/editor_paste.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/external_editor.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/inline_bar.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/line_editor.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/markdown_patches.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/message_queue.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/messages.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/pause_controller.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/prompt_prefix_style.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/queue_console.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/renderers.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/rich_renderer.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/run_ui.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/run_ui_wiring.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/spinner/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/subagent_console.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/messaging/transcript_guard.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/model_descriptions.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/model_factory.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/model_switching.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/model_utils.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/models.json +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/models_dev_api.json +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/models_dev_parser.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/acp/README.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/acp/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/acp/agent.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/acp/bridge.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/acp/capabilities.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/acp/commands.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/acp/content.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/acp/io_delegation.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/acp/mcp_config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/acp/permissions.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/acp/persistence.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/acp/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/acp/replay.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/acp/session.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/acp/session_config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/acp/state.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/agent_skills/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/agent_skills/config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/agent_skills/discovery.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/agent_skills/downloader.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/agent_skills/enabled_skills.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/agent_skills/installer.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/agent_skills/metadata.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/agent_skills/prompt_builder.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/agent_skills/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/agent_skills/remote_catalog.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/agent_skills/skill_catalog.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/agent_skills/skill_commands.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/agent_skills/skills_install_menu.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/agent_skills/skills_menu.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/aws_bedrock/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/aws_bedrock/config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/aws_bedrock/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/aws_bedrock/utils.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/azure_foundry/README.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/azure_foundry/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/azure_foundry/config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/azure_foundry/discovery.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/azure_foundry/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/azure_foundry/token.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/azure_foundry/utils.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/btw/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/btw/inline_view.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/btw/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/btw/side_query.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/chatgpt_oauth/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/chatgpt_oauth/config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/chatgpt_oauth/oauth_flow.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/chatgpt_oauth/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/chatgpt_oauth/test_plugin.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/chatgpt_oauth/usage.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/chatgpt_oauth/utils.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/claude_code_hooks/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/claude_code_hooks/config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/claude_code_hooks/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/claude_code_oauth/README.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/claude_code_oauth/SETUP.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/claude_code_oauth/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/claude_code_oauth/config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/claude_code_oauth/fast_mode.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/claude_code_oauth/prompt_handler.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/claude_code_oauth/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/claude_code_oauth/test_fast_mode.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/claude_code_oauth/test_plugin.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/claude_code_oauth/token_refresh_heartbeat.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/claude_code_oauth/utils.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/code_puppy_agent/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/code_puppy_agent/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/context_indicator/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/context_indicator/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/context_indicator/usage.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/copilot_auth/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/copilot_auth/config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/copilot_auth/reasoning_client.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/copilot_auth/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/copilot_auth/utils.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/customizable_commands/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/customizable_commands/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/dbos_durable_exec/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/dbos_durable_exec/cancel.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/dbos_durable_exec/commands.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/dbos_durable_exec/config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/dbos_durable_exec/lifecycle.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/dbos_durable_exec/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/dbos_durable_exec/runtime.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/dbos_durable_exec/startup_lock.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/dbos_durable_exec/workflow_ids.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/dbos_durable_exec/wrapper.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/destructive_command_guard/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/destructive_command_guard/detector.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/destructive_command_guard/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/emoji_filter/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/emoji_filter/config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/emoji_filter/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/emoji_filter/stripper.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/empty_html_comment_filter/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/example_custom_command/README.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/example_custom_command/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/file_permission_handler/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/file_permission_handler/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/_docs/README.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/_docs/cheatsheet.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/_docs/pipeline.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/_docs/synopsis.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/about.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/address-feedback.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/ask.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/aug.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/auto-pilot.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/cheatsheet.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/commit.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/config.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/create-pr.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/exec.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/new.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/qa.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/rebase.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/review.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/split.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/squash-commits.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/status.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/commands/flux/tests.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/scripts/flux_about.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/scripts/flux_cheatsheet.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/bundled/scripts/flux_status.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/installer.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/flux_bootstrap/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/force_push_guard/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/force_push_guard/detector.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/force_push_guard/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/force_push_guard/test_detector.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/fork/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/fork/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/frontend_emitter/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/frontend_emitter/emitter.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/frontend_emitter/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/frontend_emitter/session_context.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/grok_oauth/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/grok_oauth/config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/grok_oauth/oauth_flow.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/grok_oauth/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/grok_oauth/test_plugin.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/grok_oauth/utils.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/herdr/README.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/herdr/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/herdr/client.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/herdr/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/herdr/reporter.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/hook_creator/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/hook_creator/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/hook_manager/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/hook_manager/config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/hook_manager/hooks_menu.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/hook_manager/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/no_tools/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/no_tools/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/oauth_pasteback.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/oauth_puppy_html.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/obsidian_agent/README.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/obsidian_agent/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/obsidian_agent/agent_obsidian.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/obsidian_agent/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/ollama/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/ollama/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/ollama_setup/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/ollama_setup/completer.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/ollama_setup/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/plugin_list/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/plugin_list/plugin_contributions.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/plugin_list/plugin_meta.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/plugin_list/plugin_text_utils.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/plugin_list/plugins_menu.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/plugin_list/plugins_menu_layout.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/plugin_list/plugins_menu_render.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/plugin_list/project_trust_flow.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/plugin_list/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/pop_command/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/pop_command/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/prompt_newline/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/prompt_newline/config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/prompt_newline/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/prune/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/prune/prune_menu.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/prune/prune_model.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/prune/prune_render.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/prune/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_kennel/README.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_kennel/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_kennel/commands.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_kennel/config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_kennel/kennel.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_kennel/packer.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_kennel/recorder.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_kennel/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_kennel/retriever.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_kennel/schema.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_kennel/state.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_kennel/tools.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_kennel/wings.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_spinner/README.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_spinner/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_spinner/builtin_frames.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_spinner/commands.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_spinner/picker.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_spinner/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/puppy_spinner/spinners.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/quick_resume/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/quick_resume/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/review_pr/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/review_pr/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/shell_safety/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/shell_safety/agent_shell_safety.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/shell_safety/command_cache.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/shell_safety/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/stack_dump/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/stack_dump/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/statusline/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/statusline/config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/statusline/payload.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/statusline/prompt_patch.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/statusline/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/statusline/runner.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/statusline/statusline_command.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/steer_queue/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/steer_queue/queue_menu.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/steer_queue/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/subagent_panel/README.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/subagent_panel/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/subagent_panel/coalesce_patch.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/subagent_panel/panel_render.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/subagent_panel/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/subagent_panel/resume_repaint.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/subagent_panel/state.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/switch_agent_resume/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/switch_agent_resume/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/theme/README.md +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/theme/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/theme/bundled_palettes.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/theme/content_styles.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/theme/osc_palette.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/theme/picker.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/theme/prompt_toolkit_theme.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/theme/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/theme/rich_themes.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/theme/themes.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/token_ratio_learner/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/token_ratio_learner/ratios.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/token_ratio_learner/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/trust.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/trust_notice.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/universal_constructor/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/universal_constructor/models.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/universal_constructor/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/universal_constructor/registry.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/universal_constructor/sandbox.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/wide_completion_menu/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/wide_completion_menu/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/wiggum/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/wiggum/judge.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/wiggum/judge_config.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/wiggum/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/wiggum/state.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/yolo_cli/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/plugins/yolo_cli/register_callbacks.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/provider_credentials.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/provider_identity.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/pydantic_patches.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/reopenable_async_client.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/round_robin_model.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/secret_store.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/secret_store_backends.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/session_lifecycle.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/session_migration.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/session_storage.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/status_display.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/summarization_agent.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/terminal_utils.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/agent_tools.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/ask_user_question/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/ask_user_question/constants.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/ask_user_question/demo_tui.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/ask_user_question/handler.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/ask_user_question/models.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/ask_user_question/registration.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/ask_user_question/renderers.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/ask_user_question/terminal_ui.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/ask_user_question/theme.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/ask_user_question/tui_loop.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/browser/__init__.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/browser/browser_control.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/browser/browser_interactions.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/browser/browser_locator_resolver.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/browser/browser_locators.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/browser/browser_manager.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/browser/browser_navigation.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/browser/browser_page_snapshot.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/browser/browser_screenshot.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/browser/browser_scripts.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/browser/browser_semantic_interactions.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/browser/browser_workflows.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/command_runner.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/common.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/display.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/file_modifications.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/file_operations.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/fs_access.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/image_tools.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/io_backends.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/model_tools.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/shell_backgrounding.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/skills_tools.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/subagent_context.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/subagent_invocation.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/tools_content.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/tools/universal_constructor.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/undo_manager.py +0 -0
- {code_puppy-0.0.650 → code_puppy-0.0.652}/code_puppy/version_checker.py +0 -0
|
@@ -20,6 +20,7 @@ from rich.console import Console
|
|
|
20
20
|
|
|
21
21
|
from code_puppy import __version__, callbacks, plugins
|
|
22
22
|
from code_puppy.agents import get_current_agent
|
|
23
|
+
from code_puppy.i18n import t
|
|
23
24
|
from code_puppy.command_line.attachments import (
|
|
24
25
|
parse_prompt_attachments,
|
|
25
26
|
resolve_user_prompt,
|
|
@@ -83,12 +84,7 @@ def _render_turn_exception(exc: Exception) -> None:
|
|
|
83
84
|
)
|
|
84
85
|
from code_puppy.messaging import emit_error
|
|
85
86
|
|
|
86
|
-
emit_error(
|
|
87
|
-
f"\U0001f50c The model connection hit a transient error "
|
|
88
|
-
f"({type(exc).__name__}) and didn't recover after auto-retries. "
|
|
89
|
-
"This is almost always a VPN/WiFi/provider blip \u2014 just re-run "
|
|
90
|
-
"your last prompt. Your session history is intact."
|
|
91
|
-
)
|
|
87
|
+
emit_error(t("cli.error.model_transient", error_type=type(exc).__name__))
|
|
92
88
|
return
|
|
93
89
|
|
|
94
90
|
log_error(
|
|
@@ -132,8 +128,10 @@ def apply_quick_resume(args) -> bool:
|
|
|
132
128
|
# Diagnostic identifies the lookup scope without leaking full local paths.
|
|
133
129
|
cwd, branch = get_quick_resume_location(target_path)
|
|
134
130
|
emit_info(
|
|
135
|
-
|
|
136
|
-
|
|
131
|
+
t(
|
|
132
|
+
"cli.resume.quick_searching",
|
|
133
|
+
scope=format_quick_resume_scope(cwd, branch),
|
|
134
|
+
)
|
|
137
135
|
)
|
|
138
136
|
|
|
139
137
|
quick_resume_pickle = resolve_quick_resume_pickle(target_path)
|
|
@@ -141,7 +139,7 @@ def apply_quick_resume(args) -> bool:
|
|
|
141
139
|
args.resume = quick_resume_pickle
|
|
142
140
|
return True
|
|
143
141
|
|
|
144
|
-
emit_info("
|
|
142
|
+
emit_info(t("cli.resume.none_found"))
|
|
145
143
|
return False
|
|
146
144
|
|
|
147
145
|
|
|
@@ -267,14 +265,14 @@ async def main():
|
|
|
267
265
|
# Print directly to console to avoid the 'dim' style from emit_system_message
|
|
268
266
|
display_console.print("\n".join(lines))
|
|
269
267
|
except ImportError:
|
|
270
|
-
emit_system_message("
|
|
268
|
+
emit_system_message(t("cli.loading"))
|
|
271
269
|
|
|
272
270
|
# Truecolor warning moved to interactive_mode() so it prints LAST
|
|
273
271
|
# after all the help stuff - max visibility for the ugly red box!
|
|
274
272
|
|
|
275
273
|
available_port = find_available_port()
|
|
276
274
|
if available_port is None:
|
|
277
|
-
emit_error("
|
|
275
|
+
emit_error(t("cli.error.no_ports"))
|
|
278
276
|
return
|
|
279
277
|
|
|
280
278
|
# Early model setting if specified via command line
|
|
@@ -333,14 +331,16 @@ async def main():
|
|
|
333
331
|
models_config = ModelFactory.load_config()
|
|
334
332
|
available_models = list(models_config.keys()) if models_config else []
|
|
335
333
|
|
|
336
|
-
emit_error(
|
|
337
|
-
emit_system_message(
|
|
334
|
+
emit_error(t("cli.model.not_found", model=model_name))
|
|
335
|
+
emit_system_message(
|
|
336
|
+
t("cli.model.available", models=", ".join(available_models))
|
|
337
|
+
)
|
|
338
338
|
sys.exit(1)
|
|
339
339
|
|
|
340
340
|
# Model is valid, show confirmation (already set earlier)
|
|
341
|
-
emit_system_message(
|
|
341
|
+
emit_system_message(t("cli.model.using", model=model_name))
|
|
342
342
|
except Exception as e:
|
|
343
|
-
emit_error(
|
|
343
|
+
emit_error(t("cli.model.validate_error", error=str(e)))
|
|
344
344
|
sys.exit(1)
|
|
345
345
|
|
|
346
346
|
# Handle agent selection from command line
|
|
@@ -355,17 +355,17 @@ async def main():
|
|
|
355
355
|
# First check if the agent exists by getting available agents
|
|
356
356
|
available_agents = get_available_agents()
|
|
357
357
|
if agent_name not in available_agents:
|
|
358
|
-
emit_error(
|
|
358
|
+
emit_error(t("cli.agent.not_found", agent=agent_name))
|
|
359
359
|
emit_system_message(
|
|
360
|
-
|
|
360
|
+
t("cli.agent.available", agents=", ".join(available_agents.keys()))
|
|
361
361
|
)
|
|
362
362
|
sys.exit(1)
|
|
363
363
|
|
|
364
364
|
# Agent exists, set it
|
|
365
365
|
set_current_agent(agent_name)
|
|
366
|
-
emit_system_message(
|
|
366
|
+
emit_system_message(t("cli.agent.using", agent=agent_name))
|
|
367
367
|
except Exception as e:
|
|
368
|
-
emit_error(
|
|
368
|
+
emit_error(t("cli.agent.set_error", error=str(e)))
|
|
369
369
|
sys.exit(1)
|
|
370
370
|
|
|
371
371
|
current_version = __version__
|
|
@@ -377,10 +377,8 @@ async def main():
|
|
|
377
377
|
"on",
|
|
378
378
|
)
|
|
379
379
|
if no_version_update:
|
|
380
|
-
version_msg =
|
|
381
|
-
update_disabled_msg = (
|
|
382
|
-
"Update phase disabled because NO_VERSION_UPDATE is set to 1 or true"
|
|
383
|
-
)
|
|
380
|
+
version_msg = t("version.current", version=current_version)
|
|
381
|
+
update_disabled_msg = t("cli.version.update_disabled")
|
|
384
382
|
emit_system_message(version_msg)
|
|
385
383
|
emit_system_message(update_disabled_msg)
|
|
386
384
|
else:
|
|
@@ -444,13 +442,18 @@ async def main():
|
|
|
444
442
|
emit_info(resolve_exc.hint)
|
|
445
443
|
available = list_sessions(sessions_dir)
|
|
446
444
|
if available:
|
|
447
|
-
emit_info(
|
|
445
|
+
emit_info(
|
|
446
|
+
t(
|
|
447
|
+
"cli.resume.available_sessions",
|
|
448
|
+
sessions=", ".join(available[:10]),
|
|
449
|
+
)
|
|
450
|
+
)
|
|
448
451
|
sys.exit(1)
|
|
449
452
|
|
|
450
453
|
# When lazy-create fired, announce it so scripts and users can
|
|
451
454
|
# distinguish first-run creation from a normal resume.
|
|
452
455
|
if lazy_created:
|
|
453
|
-
emit_info(
|
|
456
|
+
emit_info(t("cli.resume.created", session=session_name))
|
|
454
457
|
|
|
455
458
|
try:
|
|
456
459
|
history = load_session(session_name, session_dir)
|
|
@@ -475,11 +478,15 @@ async def main():
|
|
|
475
478
|
|
|
476
479
|
if not lazy_created:
|
|
477
480
|
emit_success(
|
|
478
|
-
|
|
479
|
-
|
|
481
|
+
t(
|
|
482
|
+
"cli.resume.resumed",
|
|
483
|
+
messages=len(history),
|
|
484
|
+
tokens=total_tokens,
|
|
485
|
+
session=session_name,
|
|
486
|
+
)
|
|
480
487
|
)
|
|
481
488
|
except Exception as e:
|
|
482
|
-
emit_error(
|
|
489
|
+
emit_error(t("cli.resume.failed", target=resume_target, error=e))
|
|
483
490
|
sys.exit(1)
|
|
484
491
|
|
|
485
492
|
global shutdown_flag
|
|
@@ -672,40 +679,22 @@ async def interactive_mode(message_renderer, initial_command: str = None) -> Non
|
|
|
672
679
|
display_console = message_renderer.console
|
|
673
680
|
from code_puppy.messaging import emit_info, emit_system_message
|
|
674
681
|
|
|
675
|
-
emit_system_message(
|
|
676
|
-
|
|
677
|
-
)
|
|
678
|
-
emit_system_message("
|
|
679
|
-
emit_system_message("
|
|
680
|
-
emit_system_message(
|
|
681
|
-
"Type @ for path completion, or /model to pick a model. Toggle multiline with Alt+M or F2; newline: Shift+Enter."
|
|
682
|
-
)
|
|
683
|
-
emit_system_message("Paste images: Ctrl+V (even on Mac!), F3, or /paste command.")
|
|
682
|
+
emit_system_message(t("cli.help.exit"))
|
|
683
|
+
emit_system_message(t("cli.help.clear"))
|
|
684
|
+
emit_system_message(t("cli.help.commands"))
|
|
685
|
+
emit_system_message(t("cli.help.completion"))
|
|
686
|
+
emit_system_message(t("cli.help.paste_images"))
|
|
684
687
|
import platform
|
|
685
688
|
|
|
686
689
|
if platform.system() == "Darwin":
|
|
687
|
-
emit_system_message(
|
|
688
|
-
"💡 macOS tip: Use Ctrl+V (not Cmd+V) to paste images in terminal."
|
|
689
|
-
)
|
|
690
|
+
emit_system_message(t("cli.help.macos_paste"))
|
|
690
691
|
cancel_key = get_cancel_agent_display_name()
|
|
691
|
-
emit_system_message(
|
|
692
|
-
|
|
693
|
-
)
|
|
694
|
-
emit_system_message(
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
"Ctrl+X Ctrl+X to kill running shell commands."
|
|
698
|
-
)
|
|
699
|
-
emit_system_message(
|
|
700
|
-
"Use /autosave_load to manually load a previous autosave session."
|
|
701
|
-
)
|
|
702
|
-
emit_system_message(
|
|
703
|
-
"Use /diff to configure diff highlighting colors for file changes."
|
|
704
|
-
)
|
|
705
|
-
emit_system_message("To re-run the tutorial, use /tutorial.")
|
|
706
|
-
emit_system_message(
|
|
707
|
-
"!<command> to run shell commands directly (e.g., !git status)",
|
|
708
|
-
)
|
|
692
|
+
emit_system_message(t("cli.help.cancel_key", cancel_key=cancel_key))
|
|
693
|
+
emit_system_message(t("cli.help.editor_shortcuts"))
|
|
694
|
+
emit_system_message(t("cli.help.autosave_load"))
|
|
695
|
+
emit_system_message(t("cli.help.diff"))
|
|
696
|
+
emit_system_message(t("cli.help.tutorial"))
|
|
697
|
+
emit_system_message(t("cli.help.shell_passthrough"))
|
|
709
698
|
# Print truecolor warning LAST so it's the most visible thing on startup
|
|
710
699
|
# Big ugly red box should be impossible to miss! 🔴
|
|
711
700
|
print_truecolor_warning(display_console)
|
|
@@ -727,7 +716,7 @@ async def interactive_mode(message_renderer, initial_command: str = None) -> Non
|
|
|
727
716
|
from code_puppy.messaging import emit_info, emit_success, emit_system_message
|
|
728
717
|
|
|
729
718
|
agent = get_current_agent()
|
|
730
|
-
emit_info(
|
|
719
|
+
emit_info(t("cli.initial_command.processing", command=initial_command))
|
|
731
720
|
|
|
732
721
|
try:
|
|
733
722
|
# Skip the run UI if a tool is already waiting for user input
|
|
@@ -763,15 +752,13 @@ async def interactive_mode(message_renderer, initial_command: str = None) -> Non
|
|
|
763
752
|
)
|
|
764
753
|
get_message_bus().emit(response_msg)
|
|
765
754
|
|
|
766
|
-
emit_success("
|
|
767
|
-
emit_system_message(
|
|
768
|
-
"Your command and response are preserved in the conversation history."
|
|
769
|
-
)
|
|
755
|
+
emit_success(t("cli.initial_command.continuing"))
|
|
756
|
+
emit_system_message(t("cli.initial_command.preserved"))
|
|
770
757
|
|
|
771
758
|
except Exception as e:
|
|
772
759
|
from code_puppy.messaging import emit_error
|
|
773
760
|
|
|
774
|
-
emit_error(
|
|
761
|
+
emit_error(t("cli.initial_command.error", error=str(e)))
|
|
775
762
|
|
|
776
763
|
# Check if prompt_toolkit is installed
|
|
777
764
|
try:
|
|
@@ -782,7 +769,7 @@ async def interactive_mode(message_renderer, initial_command: str = None) -> Non
|
|
|
782
769
|
except ImportError:
|
|
783
770
|
from code_puppy.messaging import emit_warning
|
|
784
771
|
|
|
785
|
-
emit_warning("
|
|
772
|
+
emit_warning(t("cli.prompt_toolkit.installing"))
|
|
786
773
|
try:
|
|
787
774
|
import subprocess
|
|
788
775
|
|
|
@@ -791,7 +778,7 @@ async def interactive_mode(message_renderer, initial_command: str = None) -> Non
|
|
|
791
778
|
)
|
|
792
779
|
from code_puppy.messaging import emit_success
|
|
793
780
|
|
|
794
|
-
emit_success("
|
|
781
|
+
emit_success(t("cli.prompt_toolkit.installed"))
|
|
795
782
|
from code_puppy.command_line.prompt_toolkit_completion import (
|
|
796
783
|
get_input_with_combined_completion,
|
|
797
784
|
get_prompt_with_active_model,
|
|
@@ -799,8 +786,8 @@ async def interactive_mode(message_renderer, initial_command: str = None) -> Non
|
|
|
799
786
|
except Exception as e:
|
|
800
787
|
from code_puppy.messaging import emit_error, emit_warning
|
|
801
788
|
|
|
802
|
-
emit_error(
|
|
803
|
-
emit_warning("
|
|
789
|
+
emit_error(t("cli.prompt_toolkit.install_error", error=e))
|
|
790
|
+
emit_warning(t("cli.prompt_toolkit.fallback"))
|
|
804
791
|
|
|
805
792
|
# Autosave loading is now manual - use /autosave_load command
|
|
806
793
|
|
|
@@ -848,7 +835,7 @@ async def interactive_mode(message_renderer, initial_command: str = None) -> Non
|
|
|
848
835
|
|
|
849
836
|
# Get the custom prompt from the current agent, or use default
|
|
850
837
|
current_agent = get_current_agent()
|
|
851
|
-
user_prompt = current_agent.get_user_prompt() or "
|
|
838
|
+
user_prompt = current_agent.get_user_prompt() or t("cli.prompt.enter_task")
|
|
852
839
|
|
|
853
840
|
if not persistent_prompt:
|
|
854
841
|
# Persistent path drops the per-iteration banner — the pinned
|
|
@@ -877,7 +864,7 @@ async def interactive_mode(message_renderer, initial_command: str = None) -> Non
|
|
|
877
864
|
if queued_task is not None:
|
|
878
865
|
task = queued_task
|
|
879
866
|
emit_info(_prompt_echo_text(task))
|
|
880
|
-
emit_info("
|
|
867
|
+
emit_info(t("cli.queue.running"))
|
|
881
868
|
else:
|
|
882
869
|
# Raises EOFError on Ctrl+D-with-empty-buffer, which the
|
|
883
870
|
# existing quit branch below handles.
|
|
@@ -922,17 +909,17 @@ async def interactive_mode(message_renderer, initial_command: str = None) -> Non
|
|
|
922
909
|
from code_puppy.messaging import emit_warning
|
|
923
910
|
|
|
924
911
|
await on_interactive_turn_cancel("", reason="Ctrl+C")
|
|
925
|
-
emit_warning("\
|
|
912
|
+
emit_warning("\n" + t("cli.input.cancelled"))
|
|
926
913
|
continue
|
|
927
914
|
except EOFError:
|
|
928
915
|
# Handle Ctrl+D - exit the application
|
|
929
916
|
from code_puppy.messaging import emit_success
|
|
930
917
|
|
|
931
|
-
emit_success("\
|
|
918
|
+
emit_success("\n" + t("cli.goodbye_ctrld"))
|
|
932
919
|
|
|
933
920
|
# Cancel any running agent task for clean shutdown
|
|
934
921
|
if current_agent_task and not current_agent_task.done():
|
|
935
|
-
emit_info("
|
|
922
|
+
emit_info(t("cli.agent.cancelling"))
|
|
936
923
|
current_agent_task.cancel()
|
|
937
924
|
try:
|
|
938
925
|
await current_agent_task
|
|
@@ -963,11 +950,11 @@ async def interactive_mode(message_renderer, initial_command: str = None) -> Non
|
|
|
963
950
|
]:
|
|
964
951
|
from code_puppy.messaging import emit_success
|
|
965
952
|
|
|
966
|
-
emit_success("
|
|
953
|
+
emit_success(t("cli.goodbye"))
|
|
967
954
|
|
|
968
955
|
# Cancel any running agent task for clean shutdown
|
|
969
956
|
if current_agent_task and not current_agent_task.done():
|
|
970
|
-
emit_info("
|
|
957
|
+
emit_info(t("cli.agent.cancelling"))
|
|
971
958
|
current_agent_task.cancel()
|
|
972
959
|
try:
|
|
973
960
|
await current_agent_task
|
|
@@ -1000,7 +987,7 @@ async def interactive_mode(message_renderer, initial_command: str = None) -> Non
|
|
|
1000
987
|
except Exception as e:
|
|
1001
988
|
from code_puppy.messaging import emit_error
|
|
1002
989
|
|
|
1003
|
-
emit_error(
|
|
990
|
+
emit_error(t("cli.command.error", error=e))
|
|
1004
991
|
# Continue interactive loop instead of exiting
|
|
1005
992
|
continue
|
|
1006
993
|
if command_result is True:
|
|
@@ -1048,7 +1035,7 @@ async def interactive_mode(message_renderer, initial_command: str = None) -> Non
|
|
|
1048
1035
|
chosen_session = await interactive_autosave_picker()
|
|
1049
1036
|
|
|
1050
1037
|
if not chosen_session:
|
|
1051
|
-
emit_warning("
|
|
1038
|
+
emit_warning(t("cli.autosave.load_cancelled"))
|
|
1052
1039
|
continue
|
|
1053
1040
|
|
|
1054
1041
|
# Load the session
|
|
@@ -1068,9 +1055,13 @@ async def interactive_mode(message_renderer, initial_command: str = None) -> Non
|
|
|
1068
1055
|
session_path = base_dir / f"{chosen_session}.pkl"
|
|
1069
1056
|
|
|
1070
1057
|
emit_success(
|
|
1071
|
-
|
|
1072
|
-
|
|
1058
|
+
t(
|
|
1059
|
+
"cli.autosave.loaded",
|
|
1060
|
+
messages=len(history),
|
|
1061
|
+
tokens=total_tokens,
|
|
1062
|
+
)
|
|
1073
1063
|
)
|
|
1064
|
+
emit_info(t("cli.autosave.loaded_path", path=session_path))
|
|
1074
1065
|
|
|
1075
1066
|
# Display recent message history for context
|
|
1076
1067
|
from code_puppy.command_line.autosave_menu import (
|
|
@@ -1085,7 +1076,7 @@ async def interactive_mode(message_renderer, initial_command: str = None) -> Non
|
|
|
1085
1076
|
except Exception as e:
|
|
1086
1077
|
from code_puppy.messaging import emit_error
|
|
1087
1078
|
|
|
1088
|
-
emit_error(
|
|
1079
|
+
emit_error(t("cli.autosave.load_failed", error=e))
|
|
1089
1080
|
continue
|
|
1090
1081
|
else:
|
|
1091
1082
|
# Command returned a prompt to execute
|
|
@@ -1171,7 +1162,7 @@ async def interactive_mode(message_renderer, initial_command: str = None) -> Non
|
|
|
1171
1162
|
from code_puppy.messaging import emit_warning
|
|
1172
1163
|
|
|
1173
1164
|
await on_interactive_turn_cancel(task, reason="Ctrl+C")
|
|
1174
|
-
emit_warning("\
|
|
1165
|
+
emit_warning("\n" + t("cli.turn.cancelled"))
|
|
1175
1166
|
continue
|
|
1176
1167
|
except Exception as e:
|
|
1177
1168
|
turn_error = e
|
|
@@ -1219,7 +1210,7 @@ async def interactive_mode(message_renderer, initial_command: str = None) -> Non
|
|
|
1219
1210
|
new_session_id = finalize_autosave_session()
|
|
1220
1211
|
current_agent.clear_message_history()
|
|
1221
1212
|
emit_system_message(
|
|
1222
|
-
|
|
1213
|
+
t("cli.context.cleared", session=new_session_id)
|
|
1223
1214
|
)
|
|
1224
1215
|
|
|
1225
1216
|
delay = float(continuation.get("delay") or 0)
|
|
@@ -1317,19 +1308,28 @@ async def run_prompt_with_attachments(
|
|
|
1317
1308
|
# Build summary of all attachments
|
|
1318
1309
|
summary_parts = []
|
|
1319
1310
|
if resolved.file_attachments:
|
|
1320
|
-
summary_parts.append(
|
|
1311
|
+
summary_parts.append(
|
|
1312
|
+
t("cli.attachments.files", count=len(resolved.file_attachments))
|
|
1313
|
+
)
|
|
1321
1314
|
if resolved.clipboard_images:
|
|
1322
|
-
summary_parts.append(
|
|
1315
|
+
summary_parts.append(
|
|
1316
|
+
t(
|
|
1317
|
+
"cli.attachments.clipboard_images",
|
|
1318
|
+
count=len(resolved.clipboard_images),
|
|
1319
|
+
)
|
|
1320
|
+
)
|
|
1323
1321
|
if resolved.link_attachments:
|
|
1324
|
-
summary_parts.append(
|
|
1322
|
+
summary_parts.append(
|
|
1323
|
+
t("cli.attachments.urls", count=len(resolved.link_attachments))
|
|
1324
|
+
)
|
|
1325
1325
|
if summary_parts:
|
|
1326
|
-
emit_system_message(
|
|
1326
|
+
emit_system_message(
|
|
1327
|
+
t("cli.attachments.detected", summary=", ".join(summary_parts))
|
|
1328
|
+
)
|
|
1327
1329
|
|
|
1328
1330
|
cleaned_prompt = resolved.text
|
|
1329
1331
|
if not cleaned_prompt:
|
|
1330
|
-
emit_warning(
|
|
1331
|
-
"Prompt is empty after removing attachments; add instructions and retry."
|
|
1332
|
-
)
|
|
1332
|
+
emit_warning(t("cli.attachments.empty_prompt"))
|
|
1333
1333
|
return None, None
|
|
1334
1334
|
|
|
1335
1335
|
attachments = resolved.attachments
|
|
@@ -1356,7 +1356,7 @@ async def run_prompt_with_attachments(
|
|
|
1356
1356
|
result = await agent_task
|
|
1357
1357
|
return result, agent_task
|
|
1358
1358
|
except asyncio.CancelledError:
|
|
1359
|
-
emit_info("
|
|
1359
|
+
emit_info(t("cli.agent.task_cancelled"))
|
|
1360
1360
|
return None, agent_task
|
|
1361
1361
|
|
|
1362
1362
|
if use_run_ui:
|
|
@@ -1416,22 +1416,20 @@ async def execute_single_prompt(
|
|
|
1416
1416
|
try:
|
|
1417
1417
|
command_result = handle_command(command_prompt)
|
|
1418
1418
|
except Exception as command_error:
|
|
1419
|
-
emit_error(
|
|
1419
|
+
emit_error(t("cli.command.error", error=command_error))
|
|
1420
1420
|
return
|
|
1421
1421
|
|
|
1422
1422
|
if command_result is True:
|
|
1423
1423
|
return
|
|
1424
1424
|
if command_result == "__AUTOSAVE_LOAD__":
|
|
1425
|
-
emit_warning(
|
|
1426
|
-
"/autosave_load requires interactive mode; use -r SESSION in headless mode."
|
|
1427
|
-
)
|
|
1425
|
+
emit_warning(t("cli.autosave.headless_unsupported"))
|
|
1428
1426
|
return
|
|
1429
1427
|
if isinstance(command_result, str):
|
|
1430
1428
|
prompt = command_result
|
|
1431
1429
|
|
|
1432
1430
|
effective_session_name = session_name or get_current_session_name()
|
|
1433
1431
|
agent = None
|
|
1434
|
-
emit_info(
|
|
1432
|
+
emit_info(t("cli.headless.executing", prompt=prompt))
|
|
1435
1433
|
|
|
1436
1434
|
try:
|
|
1437
1435
|
agent = get_current_agent()
|
|
@@ -1456,9 +1454,9 @@ async def execute_single_prompt(
|
|
|
1456
1454
|
agent.set_message_history(list(result.all_messages()))
|
|
1457
1455
|
|
|
1458
1456
|
except asyncio.CancelledError:
|
|
1459
|
-
emit_warning("
|
|
1457
|
+
emit_warning(t("cli.headless.cancelled"))
|
|
1460
1458
|
except Exception as error:
|
|
1461
|
-
emit_error(
|
|
1459
|
+
emit_error(t("cli.headless.error", error=error))
|
|
1462
1460
|
finally:
|
|
1463
1461
|
try:
|
|
1464
1462
|
session_agent = agent or get_current_agent()
|
|
@@ -1476,7 +1474,13 @@ async def execute_single_prompt(
|
|
|
1476
1474
|
except Exception as save_error:
|
|
1477
1475
|
# The response has already been emitted; a persistence failure
|
|
1478
1476
|
# must not hide the primary result.
|
|
1479
|
-
emit_error(
|
|
1477
|
+
emit_error(
|
|
1478
|
+
t(
|
|
1479
|
+
"cli.headless.save_failed",
|
|
1480
|
+
session=effective_session_name,
|
|
1481
|
+
error=save_error,
|
|
1482
|
+
)
|
|
1483
|
+
)
|
|
1480
1484
|
|
|
1481
1485
|
|
|
1482
1486
|
def _force_utf8_stdio():
|