code-puppy 0.0.877__tar.gz → 0.0.879__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.
Files changed (321) hide show
  1. {code_puppy-0.0.877 → code_puppy-0.0.879}/PKG-INFO +3 -3
  2. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/file_index.py +4 -2
  3. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/file_operations.py +3 -28
  4. code_puppy-0.0.879/code_puppy/tools/ripgrep.py +31 -0
  5. {code_puppy-0.0.877 → code_puppy-0.0.879}/pyproject.toml +3 -3
  6. {code_puppy-0.0.877 → code_puppy-0.0.879}/.gitignore +0 -0
  7. {code_puppy-0.0.877 → code_puppy-0.0.879}/LICENSE +0 -0
  8. {code_puppy-0.0.877 → code_puppy-0.0.879}/README.md +0 -0
  9. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/__init__.py +0 -0
  10. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/__main__.py +0 -0
  11. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/_plugin_i18n_lifecycle.py +0 -0
  12. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/_pydantic_tool_helpers.py +0 -0
  13. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/_pydantic_video_patch.py +0 -0
  14. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agent_completion_inbox.py +0 -0
  15. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agent_execution_context.py +0 -0
  16. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/__init__.py +0 -0
  17. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/_builder.py +0 -0
  18. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/_code_mode.py +0 -0
  19. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/_code_mode_guidance.py +0 -0
  20. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/_compaction.py +0 -0
  21. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/_diagnostics.py +0 -0
  22. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/_history.py +0 -0
  23. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/_key_listeners.py +0 -0
  24. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/_model_message_transform.py +0 -0
  25. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/_non_streaming_render.py +0 -0
  26. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/_output_limits.py +0 -0
  27. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/_run_signals.py +0 -0
  28. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/_runtime.py +0 -0
  29. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/_steer_processor.py +0 -0
  30. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/_subagent_recursion.py +0 -0
  31. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/_windows_console.py +0 -0
  32. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/_wire_tool_names.py +0 -0
  33. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/agent_code_puppy.py +0 -0
  34. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/agent_creator_agent.py +0 -0
  35. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/agent_helios.py +0 -0
  36. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/agent_manager.py +0 -0
  37. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/agent_model_judge.py +0 -0
  38. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/agent_planning.py +0 -0
  39. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/agent_qa_kitten.py +0 -0
  40. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/agent_web_retriever.py +0 -0
  41. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/base_agent.py +0 -0
  42. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/event_stream_handler.py +0 -0
  43. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/json_agent.py +0 -0
  44. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/retry_checkpoint.py +0 -0
  45. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/retry_profiles.py +0 -0
  46. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/run_stats.py +0 -0
  47. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/smooth_stream.py +0 -0
  48. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/stream_status.py +0 -0
  49. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/subagent_stream_handler.py +0 -0
  50. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/agents/thinking_output.py +0 -0
  51. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/asyncio_cleanup.py +0 -0
  52. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/atomic_io.py +0 -0
  53. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/atomic_json.py +0 -0
  54. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/callbacks.py +0 -0
  55. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/capabilities/__init__.py +0 -0
  56. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/capabilities/compaction.py +0 -0
  57. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/capabilities/eager_timing.py +0 -0
  58. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/chatgpt_codex_client.py +0 -0
  59. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/claude_cache_client.py +0 -0
  60. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/claude_oauth_transport.py +0 -0
  61. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/cli_runner.py +0 -0
  62. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/__init__.py +0 -0
  63. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/add_model_details.py +0 -0
  64. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/add_model_menu.py +0 -0
  65. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/add_model_menus.py +0 -0
  66. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/add_model_vllm.py +0 -0
  67. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/agent_menu.py +0 -0
  68. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/attachments.py +0 -0
  69. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/autosave_menu.py +0 -0
  70. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/autosave_search.py +0 -0
  71. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/clipboard.py +0 -0
  72. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/colors_menu.py +0 -0
  73. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/command_handler.py +0 -0
  74. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/command_registry.py +0 -0
  75. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/completers.py +0 -0
  76. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/completion_cache.py +0 -0
  77. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/config_apply.py +0 -0
  78. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/config_commands.py +0 -0
  79. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/core_commands.py +0 -0
  80. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/file_path_completion.py +0 -0
  81. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/help_catalog.py +0 -0
  82. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/help_overlay.py +0 -0
  83. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/image_utils.py +0 -0
  84. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/load_context_completion.py +0 -0
  85. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/__init__.py +0 -0
  86. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/base.py +0 -0
  87. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/catalog_server_installer.py +0 -0
  88. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/custom_server_form.py +0 -0
  89. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/custom_server_installer.py +0 -0
  90. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/edit_command.py +0 -0
  91. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/handler.py +0 -0
  92. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/help_command.py +0 -0
  93. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/install_command.py +0 -0
  94. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/install_menu.py +0 -0
  95. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/list_command.py +0 -0
  96. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/logs_command.py +0 -0
  97. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/mcp_servers_store.py +0 -0
  98. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/remove_command.py +0 -0
  99. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/restart_command.py +0 -0
  100. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/search_command.py +0 -0
  101. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/silence_warning_command.py +0 -0
  102. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/start_all_command.py +0 -0
  103. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/start_command.py +0 -0
  104. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/status_command.py +0 -0
  105. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/stop_all_command.py +0 -0
  106. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/stop_command.py +0 -0
  107. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/trust_command.py +0 -0
  108. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/utils.py +0 -0
  109. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp/wizard_utils.py +0 -0
  110. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp_binding_menu.py +0 -0
  111. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/mcp_completion.py +0 -0
  112. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/menu_session.py +0 -0
  113. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/model_picker_completion.py +0 -0
  114. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/model_settings_defs.py +0 -0
  115. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/model_settings_menu.py +0 -0
  116. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/onboarding_slides.py +0 -0
  117. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/onboarding_wizard.py +0 -0
  118. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/pagination.py +0 -0
  119. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/pin_command_completion.py +0 -0
  120. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/refresh_models.py +0 -0
  121. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/session_browser.py +0 -0
  122. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/session_browser_data.py +0 -0
  123. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/session_commands.py +0 -0
  124. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/set_menu.py +0 -0
  125. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/set_menu_catalog.py +0 -0
  126. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/set_menu_schema.py +0 -0
  127. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/set_menu_settings.py +0 -0
  128. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/set_menu_shims.py +0 -0
  129. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/set_menu_values.py +0 -0
  130. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/shell_passthrough.py +0 -0
  131. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/skills_completion.py +0 -0
  132. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/tui_style.py +0 -0
  133. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/uc_menu.py +0 -0
  134. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/command_line/utils.py +0 -0
  135. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/config.py +0 -0
  136. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/config_file.py +0 -0
  137. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/diagnostics.py +0 -0
  138. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/error_logging.py +0 -0
  139. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/events/__init__.py +0 -0
  140. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/events/bridge.py +0 -0
  141. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/file_completion_io.py +0 -0
  142. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/file_completion_tokens.py +0 -0
  143. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/gemini_code_assist.py +0 -0
  144. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/gemini_common.py +0 -0
  145. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/gemini_model.py +0 -0
  146. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/hook_engine/README.md +0 -0
  147. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/hook_engine/__init__.py +0 -0
  148. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/hook_engine/aliases.py +0 -0
  149. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/hook_engine/engine.py +0 -0
  150. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/hook_engine/executor.py +0 -0
  151. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/hook_engine/matcher.py +0 -0
  152. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/hook_engine/models.py +0 -0
  153. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/hook_engine/registry.py +0 -0
  154. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/hook_engine/validator.py +0 -0
  155. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/http_retry.py +0 -0
  156. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/http_utils.py +0 -0
  157. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/httpx2_utils.py +0 -0
  158. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/i18n/__init__.py +0 -0
  159. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/i18n/audit.py +0 -0
  160. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/i18n/catalog.py +0 -0
  161. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/i18n/formats.py +0 -0
  162. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/i18n/interpolation.py +0 -0
  163. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/i18n/locale.py +0 -0
  164. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/i18n/locales/en-US.json +0 -0
  165. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/i18n/locales/es.json +0 -0
  166. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/i18n/locales/fr-CA.json +0 -0
  167. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/i18n/plugin_catalog.py +0 -0
  168. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/i18n/plurals.py +0 -0
  169. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/i18n/pseudo.py +0 -0
  170. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/i18n/translate.py +0 -0
  171. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/kennel_provider.py +0 -0
  172. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/keymap.py +0 -0
  173. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/list_filtering.py +0 -0
  174. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/main.py +0 -0
  175. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/__init__.py +0 -0
  176. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/agent_bindings.py +0 -0
  177. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/async_lifecycle.py +0 -0
  178. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/blocking_startup.py +0 -0
  179. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/circuit_breaker.py +0 -0
  180. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/config_wizard.py +0 -0
  181. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/dashboard.py +0 -0
  182. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/error_isolation.py +0 -0
  183. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/examples/retry_example.py +0 -0
  184. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/health_monitor.py +0 -0
  185. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/http_auth.py +0 -0
  186. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/managed_server.py +0 -0
  187. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/manager.py +0 -0
  188. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/manager_lifecycle.py +0 -0
  189. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/mcp_logs.py +0 -0
  190. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/project_config.py +0 -0
  191. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/registry.py +0 -0
  192. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/retry_manager.py +0 -0
  193. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/server_registry_catalog.py +0 -0
  194. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/status_tracker.py +0 -0
  195. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/system_tools.py +0 -0
  196. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/tool_arg_coercion.py +0 -0
  197. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_/toolset_utils.py +0 -0
  198. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_prompts/__init__.py +0 -0
  199. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/mcp_prompts/hook_creator.py +0 -0
  200. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/__init__.py +0 -0
  201. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/bar_painters.py +0 -0
  202. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/bar_rendering.py +0 -0
  203. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/bottom_bar.py +0 -0
  204. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/bus.py +0 -0
  205. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/chords.py +0 -0
  206. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/commands.py +0 -0
  207. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/editor_actions.py +0 -0
  208. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/editor_completion.py +0 -0
  209. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/editor_display.py +0 -0
  210. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/editor_history.py +0 -0
  211. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/editor_keys.py +0 -0
  212. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/editor_paste.py +0 -0
  213. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/editor_queue.py +0 -0
  214. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/editor_submission.py +0 -0
  215. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/external_editor.py +0 -0
  216. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/identity_line.py +0 -0
  217. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/idle_status.py +0 -0
  218. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/inline_bar.py +0 -0
  219. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/line_editor.py +0 -0
  220. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/markdown_patches.py +0 -0
  221. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/menu_lifecycle.py +0 -0
  222. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/message_queue.py +0 -0
  223. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/messages.py +0 -0
  224. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/pause_controller.py +0 -0
  225. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/prompt_prefix_style.py +0 -0
  226. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/queue_console.py +0 -0
  227. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/renderers.py +0 -0
  228. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/rich_renderer.py +0 -0
  229. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/run_ui.py +0 -0
  230. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/run_ui_wiring.py +0 -0
  231. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/speculation_line.py +0 -0
  232. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/speculation_stats.py +0 -0
  233. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/speculation_toggle.py +0 -0
  234. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/spinner/__init__.py +0 -0
  235. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/status_line.py +0 -0
  236. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/subagent_console.py +0 -0
  237. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/theme_accent.py +0 -0
  238. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/tool_output.py +0 -0
  239. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/messaging/transcript_guard.py +0 -0
  240. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/model_descriptions.py +0 -0
  241. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/model_factory.py +0 -0
  242. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/model_switching.py +0 -0
  243. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/model_utils.py +0 -0
  244. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/models.json +0 -0
  245. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/models_dev_api.json +0 -0
  246. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/models_dev_parser.py +0 -0
  247. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/observability.py +0 -0
  248. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/platform_utils.py +0 -0
  249. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/plugins/__init__.py +0 -0
  250. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/plugins/config.py +0 -0
  251. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/plugins/oauth_pasteback.py +0 -0
  252. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/plugins/oauth_puppy_html.py +0 -0
  253. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/plugins/trust.py +0 -0
  254. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/plugins/trust_notice.py +0 -0
  255. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/private_inference.py +0 -0
  256. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/provider_credentials.py +0 -0
  257. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/provider_identity.py +0 -0
  258. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/pydantic_patches.py +0 -0
  259. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/reopenable_async_client.py +0 -0
  260. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/round_robin_model.py +0 -0
  261. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/secret_store.py +0 -0
  262. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/secret_store_backends.py +0 -0
  263. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/session_format_migration.py +0 -0
  264. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/session_lifecycle.py +0 -0
  265. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/session_migration.py +0 -0
  266. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/session_storage.py +0 -0
  267. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/session_surrogate_unpickler.py +0 -0
  268. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/shared_credentials.py +0 -0
  269. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/skill_provider.py +0 -0
  270. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/splash.py +0 -0
  271. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/status_display.py +0 -0
  272. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/steer_metadata.py +0 -0
  273. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/terminal_utils.py +0 -0
  274. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/token_usage.py +0 -0
  275. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/__init__.py +0 -0
  276. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/_browser_registry.py +0 -0
  277. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/_lazy.py +0 -0
  278. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/agent_tools.py +0 -0
  279. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/ask_user_question/__init__.py +0 -0
  280. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/ask_user_question/constants.py +0 -0
  281. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/ask_user_question/demo_tui.py +0 -0
  282. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/ask_user_question/handler.py +0 -0
  283. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/ask_user_question/models.py +0 -0
  284. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/ask_user_question/registration.py +0 -0
  285. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/ask_user_question/renderers.py +0 -0
  286. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/ask_user_question/terminal_ui.py +0 -0
  287. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/ask_user_question/theme.py +0 -0
  288. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/ask_user_question/tui_loop.py +0 -0
  289. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/browser/__init__.py +0 -0
  290. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/browser/browser_control.py +0 -0
  291. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/browser/browser_interactions.py +0 -0
  292. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/browser/browser_locator_resolver.py +0 -0
  293. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/browser/browser_locators.py +0 -0
  294. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/browser/browser_manager.py +0 -0
  295. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/browser/browser_navigation.py +0 -0
  296. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/browser/browser_page_snapshot.py +0 -0
  297. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/browser/browser_screenshot.py +0 -0
  298. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/browser/browser_scripts.py +0 -0
  299. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/browser/browser_semantic_interactions.py +0 -0
  300. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/browser/browser_workflows.py +0 -0
  301. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/browser/tool_registry.py +0 -0
  302. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/command_runner.py +0 -0
  303. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/common.py +0 -0
  304. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/display.py +0 -0
  305. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/file_modifications.py +0 -0
  306. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/file_permission_state.py +0 -0
  307. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/fs_access.py +0 -0
  308. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/image_tools.py +0 -0
  309. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/io_backends.py +0 -0
  310. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/model_tools.py +0 -0
  311. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/shell_backgrounding.py +0 -0
  312. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/skills_tools.py +0 -0
  313. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/subagent_context.py +0 -0
  314. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/subagent_invocation.py +0 -0
  315. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/subagent_usage_metrics.py +0 -0
  316. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/tools_content.py +0 -0
  317. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/tools/universal_constructor.py +0 -0
  318. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/undo_manager.py +0 -0
  319. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/universal_constructor_provider.py +0 -0
  320. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/version_checker.py +0 -0
  321. {code_puppy-0.0.877 → code_puppy-0.0.879}/code_puppy/zai_model.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: code-puppy
3
- Version: 0.0.877
3
+ Version: 0.0.879
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<2,>=1.0.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.62
23
+ Requires-Dist: code-puppy-core-plugins>=0.0.67
24
24
  Requires-Dist: httpx2>=2.7
25
25
  Requires-Dist: httpx[http2]>=0.24.1
26
26
  Requires-Dist: json-repair>=0.46.2
@@ -32,7 +32,7 @@ Requires-Dist: packaging>=24.0
32
32
  Requires-Dist: pillow>=10.0.0
33
33
  Requires-Dist: playwright>=1.40.0; sys_platform != 'android'
34
34
  Requires-Dist: pydantic-ai-harness[code-mode]==0.35.0
35
- Requires-Dist: pydantic-ai-slim[anthropic,mcp,openai]==2.47.0
35
+ Requires-Dist: pydantic-ai-slim[anthropic,mcp,openai]==2.51.0
36
36
  Requires-Dist: pydantic-monty<1
37
37
  Requires-Dist: pydantic>=2.4.0
38
38
  Requires-Dist: pyfiglet>=0.8.post1
@@ -17,7 +17,6 @@ Design notes
17
17
  from __future__ import annotations
18
18
 
19
19
  import os
20
- import shutil
21
20
  import threading
22
21
  import time
23
22
  from dataclasses import dataclass, field
@@ -116,7 +115,10 @@ class FileIndex:
116
115
 
117
116
 
118
117
  def _run_ripgrep(root: str) -> Optional[List[str]]:
119
- rg = shutil.which("rg")
118
+ # Lazy: runs on the index build thread, keeping completion import light.
119
+ from code_puppy.tools.ripgrep import find_ripgrep
120
+
121
+ rg = find_ripgrep()
120
122
  if not rg:
121
123
  return None
122
124
  from code_puppy.file_completion_io import read_paths
@@ -2,7 +2,6 @@
2
2
 
3
3
  import os
4
4
  import re
5
- import shutil
6
5
  import subprocess
7
6
  import tempfile
8
7
  from typing import Callable, List, Tuple
@@ -22,6 +21,7 @@ from code_puppy.messaging import ( # New structured messaging types
22
21
  get_message_bus,
23
22
  )
24
23
  from code_puppy.tools.common import resolve_path, _sanitize_string, read_text_sanitized
24
+ from code_puppy.tools.ripgrep import find_ripgrep
25
25
  from code_puppy.tools import fs_access
26
26
 
27
27
 
@@ -246,7 +246,6 @@ def _list_entries_via_backend(directory: str, recursive: bool) -> List["ListedFi
246
246
  def _list_files(
247
247
  context: RunContext, directory: str = ".", recursive: bool = True
248
248
  ) -> ListFileOutput:
249
- import sys
250
249
 
251
250
  results = []
252
251
  # Synthesized parent directories already added to ``results``. Membership is
@@ -292,18 +291,7 @@ def _list_files(
292
291
  # Create a temporary ignore file with our ignore patterns (local rg path)
293
292
  ignore_file = None
294
293
  try:
295
- # Find ripgrep executable - first check system PATH, then virtual environment
296
- rg_path = shutil.which("rg")
297
- if not rg_path:
298
- # Try to find it in the virtual environment
299
- # Use sys.executable to determine the Python environment path
300
- python_dir = os.path.dirname(sys.executable)
301
- # python_dir is already bin/ (Unix) or Scripts/ (Windows)
302
- for name in ["rg", "rg.exe"]:
303
- candidate = os.path.join(python_dir, name)
304
- if os.path.exists(candidate):
305
- rg_path = candidate
306
- break
294
+ rg_path = find_ripgrep()
307
295
 
308
296
  if not rg_path and recursive and not _use_backend:
309
297
  # Only need ripgrep for recursive listings
@@ -1153,9 +1141,7 @@ def _carries_type_filter(rg_args: list[str]) -> bool:
1153
1141
  def _grep(context: RunContext, search_string: str, directory: str = ".") -> GrepOutput:
1154
1142
  import json
1155
1143
  import os
1156
- import shutil
1157
1144
  import subprocess
1158
- import sys
1159
1145
 
1160
1146
  # Sanitize search string to handle any surrogates from copy-paste
1161
1147
  search_string = _sanitize_string(search_string)
@@ -1191,18 +1177,7 @@ def _grep(context: RunContext, search_string: str, directory: str = ".") -> Grep
1191
1177
  # ripgrep: absolute path, --json output, --max-count 50, --max-filesize 5M,
1192
1178
  # --type=all, --ignore-file for our ignore list.
1193
1179
 
1194
- # Find ripgrep executable - first check system PATH, then virtual environment
1195
- rg_path = shutil.which("rg")
1196
- if not rg_path:
1197
- # Try to find it in the virtual environment
1198
- # Use sys.executable to determine the Python environment path
1199
- python_dir = os.path.dirname(sys.executable)
1200
- # python_dir is already bin/ (Unix) or Scripts/ (Windows)
1201
- for name in ["rg", "rg.exe"]:
1202
- candidate = os.path.join(python_dir, name)
1203
- if os.path.exists(candidate):
1204
- rg_path = candidate
1205
- break
1180
+ rg_path = find_ripgrep()
1206
1181
 
1207
1182
  if not rg_path:
1208
1183
  error_message = (
@@ -0,0 +1,31 @@
1
+ """Locate the ripgrep executable -- the one place that knows how.
2
+
3
+ Code Puppy depends on the ``ripgrep`` wheel, which installs ``rg`` next to the
4
+ interpreter (``bin/`` on Unix, ``Scripts/`` on Windows) -- a directory that is
5
+ not on PATH unless the virtualenv is activated. Every rg consumer (grep,
6
+ list_files, @-file completion, plugins) must therefore look in both places;
7
+ keep that logic here so they cannot drift apart again.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import os
13
+ import shutil
14
+ import sys
15
+
16
+ # Bare ``rg`` also covers Windows-without-extension installs; ``rg.exe`` is the
17
+ # wheel's Windows binary.
18
+ _BUNDLED_NAMES = ("rg", "rg.exe")
19
+
20
+
21
+ def find_ripgrep() -> str | None:
22
+ """Path to ``rg``: PATH first, then the copy bundled beside the interpreter."""
23
+ on_path = shutil.which("rg")
24
+ if on_path:
25
+ return on_path
26
+ interpreter_dir = os.path.dirname(sys.executable)
27
+ for name in _BUNDLED_NAMES:
28
+ candidate = os.path.join(interpreter_dir, name)
29
+ if os.path.exists(candidate):
30
+ return candidate
31
+ return None
@@ -4,14 +4,14 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "code-puppy"
7
- version = "0.0.877"
7
+ version = "0.0.879"
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.62",
12
+ "code-puppy-core-plugins>=0.0.67",
13
13
  "logfire>=4.0",
14
- "pydantic-ai-slim[openai,anthropic,mcp]==2.47.0",
14
+ "pydantic-ai-slim[openai,anthropic,mcp]==2.51.0",
15
15
  "pydantic-ai-harness[code-mode]==0.35.0",
16
16
  # Monty 1.0 removed max_duration_secs, still used by harness CodeMode.
17
17
  "pydantic-monty<1",
File without changes
File without changes
File without changes