code-puppy 0.0.586__tar.gz → 0.0.587__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 (405) hide show
  1. {code_puppy-0.0.586 → code_puppy-0.0.587}/PKG-INFO +1 -1
  2. code_puppy-0.0.587/code_puppy/plugins/btw/__init__.py +1 -0
  3. code_puppy-0.0.587/code_puppy/plugins/btw/inline_view.py +135 -0
  4. code_puppy-0.0.587/code_puppy/plugins/btw/register_callbacks.py +106 -0
  5. code_puppy-0.0.587/code_puppy/plugins/btw/side_query.py +91 -0
  6. {code_puppy-0.0.586 → code_puppy-0.0.587}/pyproject.toml +1 -1
  7. {code_puppy-0.0.586 → code_puppy-0.0.587}/.gitignore +0 -0
  8. {code_puppy-0.0.586 → code_puppy-0.0.587}/LICENSE +0 -0
  9. {code_puppy-0.0.586 → code_puppy-0.0.587}/README.md +0 -0
  10. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/__init__.py +0 -0
  11. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/__main__.py +0 -0
  12. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/__init__.py +0 -0
  13. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/_builder.py +0 -0
  14. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/_compaction.py +0 -0
  15. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/_diagnostics.py +0 -0
  16. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/_history.py +0 -0
  17. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/_key_listeners.py +0 -0
  18. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/_non_streaming_render.py +0 -0
  19. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/_run_signals.py +0 -0
  20. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/_runtime.py +0 -0
  21. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/_steer_processor.py +0 -0
  22. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/agent_code_puppy.py +0 -0
  23. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/agent_creator_agent.py +0 -0
  24. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/agent_helios.py +0 -0
  25. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/agent_manager.py +0 -0
  26. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/agent_planning.py +0 -0
  27. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/agent_qa_kitten.py +0 -0
  28. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/base_agent.py +0 -0
  29. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/event_stream_handler.py +0 -0
  30. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/json_agent.py +0 -0
  31. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/run_stats.py +0 -0
  32. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/smooth_stream.py +0 -0
  33. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/agents/subagent_stream_handler.py +0 -0
  34. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/callbacks.py +0 -0
  35. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/chatgpt_codex_client.py +0 -0
  36. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/claude_cache_client.py +0 -0
  37. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/cli_runner.py +0 -0
  38. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/__init__.py +0 -0
  39. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/add_model_menu.py +0 -0
  40. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/agent_menu.py +0 -0
  41. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/attachments.py +0 -0
  42. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/autosave_menu.py +0 -0
  43. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/autosave_search.py +0 -0
  44. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/clipboard.py +0 -0
  45. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/colors_menu.py +0 -0
  46. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/command_handler.py +0 -0
  47. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/command_registry.py +0 -0
  48. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/config_apply.py +0 -0
  49. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/config_commands.py +0 -0
  50. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/core_commands.py +0 -0
  51. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/diff_menu.py +0 -0
  52. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/file_index.py +0 -0
  53. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/file_path_completion.py +0 -0
  54. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/judges_menu.py +0 -0
  55. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/load_context_completion.py +0 -0
  56. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/__init__.py +0 -0
  57. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/base.py +0 -0
  58. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/catalog_server_installer.py +0 -0
  59. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/custom_server_form.py +0 -0
  60. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/custom_server_installer.py +0 -0
  61. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/edit_command.py +0 -0
  62. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/handler.py +0 -0
  63. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/help_command.py +0 -0
  64. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/install_command.py +0 -0
  65. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/install_menu.py +0 -0
  66. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/list_command.py +0 -0
  67. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/logs_command.py +0 -0
  68. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/remove_command.py +0 -0
  69. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/restart_command.py +0 -0
  70. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/search_command.py +0 -0
  71. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/silence_warning_command.py +0 -0
  72. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/start_all_command.py +0 -0
  73. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/start_command.py +0 -0
  74. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/status_command.py +0 -0
  75. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/stop_all_command.py +0 -0
  76. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/stop_command.py +0 -0
  77. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/utils.py +0 -0
  78. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp/wizard_utils.py +0 -0
  79. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp_binding_menu.py +0 -0
  80. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/mcp_completion.py +0 -0
  81. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/model_picker_completion.py +0 -0
  82. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/model_settings_menu.py +0 -0
  83. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/onboarding_slides.py +0 -0
  84. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/onboarding_wizard.py +0 -0
  85. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/pagination.py +0 -0
  86. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/pin_command_completion.py +0 -0
  87. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/prompt_toolkit_completion.py +0 -0
  88. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/session_commands.py +0 -0
  89. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/set_menu.py +0 -0
  90. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/set_menu_catalog.py +0 -0
  91. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/set_menu_render.py +0 -0
  92. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/set_menu_schema.py +0 -0
  93. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/set_menu_settings.py +0 -0
  94. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/set_menu_shims.py +0 -0
  95. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/set_menu_values.py +0 -0
  96. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/shell_passthrough.py +0 -0
  97. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/skills_completion.py +0 -0
  98. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/uc_menu.py +0 -0
  99. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/utils.py +0 -0
  100. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/command_line/wiggum_state.py +0 -0
  101. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/config.py +0 -0
  102. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/error_logging.py +0 -0
  103. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/gemini_code_assist.py +0 -0
  104. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/gemini_model.py +0 -0
  105. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/hook_engine/README.md +0 -0
  106. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/hook_engine/__init__.py +0 -0
  107. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/hook_engine/aliases.py +0 -0
  108. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/hook_engine/engine.py +0 -0
  109. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/hook_engine/executor.py +0 -0
  110. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/hook_engine/matcher.py +0 -0
  111. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/hook_engine/models.py +0 -0
  112. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/hook_engine/registry.py +0 -0
  113. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/hook_engine/validator.py +0 -0
  114. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/http_utils.py +0 -0
  115. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/keymap.py +0 -0
  116. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/list_filtering.py +0 -0
  117. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/main.py +0 -0
  118. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/__init__.py +0 -0
  119. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/agent_bindings.py +0 -0
  120. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/async_lifecycle.py +0 -0
  121. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/blocking_startup.py +0 -0
  122. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/captured_stdio_server.py +0 -0
  123. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/circuit_breaker.py +0 -0
  124. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/config_wizard.py +0 -0
  125. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/dashboard.py +0 -0
  126. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/error_isolation.py +0 -0
  127. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/examples/retry_example.py +0 -0
  128. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/health_monitor.py +0 -0
  129. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/managed_server.py +0 -0
  130. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/manager.py +0 -0
  131. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/mcp_logs.py +0 -0
  132. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/registry.py +0 -0
  133. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/retry_manager.py +0 -0
  134. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/server_registry_catalog.py +0 -0
  135. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/status_tracker.py +0 -0
  136. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/system_tools.py +0 -0
  137. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_/tool_arg_coercion.py +0 -0
  138. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_prompts/__init__.py +0 -0
  139. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/mcp_prompts/hook_creator.py +0 -0
  140. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/__init__.py +0 -0
  141. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/bar_painters.py +0 -0
  142. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/bar_rendering.py +0 -0
  143. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/bottom_bar.py +0 -0
  144. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/bus.py +0 -0
  145. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/commands.py +0 -0
  146. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/editor_actions.py +0 -0
  147. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/editor_completion.py +0 -0
  148. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/editor_history.py +0 -0
  149. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/editor_keys.py +0 -0
  150. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/editor_paste.py +0 -0
  151. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/line_editor.py +0 -0
  152. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/markdown_patches.py +0 -0
  153. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/message_queue.py +0 -0
  154. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/messages.py +0 -0
  155. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/pause_controller.py +0 -0
  156. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/prompt_prefix_style.py +0 -0
  157. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/queue_console.py +0 -0
  158. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/renderers.py +0 -0
  159. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/rich_renderer.py +0 -0
  160. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/run_ui.py +0 -0
  161. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/run_ui_wiring.py +0 -0
  162. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/spinner/__init__.py +0 -0
  163. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/messaging/subagent_console.py +0 -0
  164. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/model_descriptions.py +0 -0
  165. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/model_factory.py +0 -0
  166. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/model_switching.py +0 -0
  167. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/model_utils.py +0 -0
  168. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/models.json +0 -0
  169. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/models_dev_api.json +0 -0
  170. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/models_dev_parser.py +0 -0
  171. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/__init__.py +0 -0
  172. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/agent_skills/__init__.py +0 -0
  173. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/agent_skills/config.py +0 -0
  174. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/agent_skills/discovery.py +0 -0
  175. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/agent_skills/downloader.py +0 -0
  176. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/agent_skills/enabled_skills.py +0 -0
  177. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/agent_skills/installer.py +0 -0
  178. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/agent_skills/metadata.py +0 -0
  179. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/agent_skills/prompt_builder.py +0 -0
  180. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/agent_skills/register_callbacks.py +0 -0
  181. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/agent_skills/remote_catalog.py +0 -0
  182. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/agent_skills/skill_catalog.py +0 -0
  183. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/agent_skills/skill_commands.py +0 -0
  184. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/agent_skills/skills_install_menu.py +0 -0
  185. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/agent_skills/skills_menu.py +0 -0
  186. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/aws_bedrock/__init__.py +0 -0
  187. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/aws_bedrock/config.py +0 -0
  188. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/aws_bedrock/register_callbacks.py +0 -0
  189. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/aws_bedrock/utils.py +0 -0
  190. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/azure_foundry/README.md +0 -0
  191. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/azure_foundry/__init__.py +0 -0
  192. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/azure_foundry/config.py +0 -0
  193. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/azure_foundry/discovery.py +0 -0
  194. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/azure_foundry/register_callbacks.py +0 -0
  195. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/azure_foundry/token.py +0 -0
  196. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/azure_foundry/utils.py +0 -0
  197. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/chatgpt_oauth/__init__.py +0 -0
  198. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/chatgpt_oauth/config.py +0 -0
  199. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/chatgpt_oauth/oauth_flow.py +0 -0
  200. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/chatgpt_oauth/register_callbacks.py +0 -0
  201. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/chatgpt_oauth/test_plugin.py +0 -0
  202. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/chatgpt_oauth/utils.py +0 -0
  203. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/claude_code_hooks/__init__.py +0 -0
  204. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/claude_code_hooks/config.py +0 -0
  205. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/claude_code_hooks/register_callbacks.py +0 -0
  206. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/claude_code_oauth/README.md +0 -0
  207. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/claude_code_oauth/SETUP.md +0 -0
  208. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/claude_code_oauth/__init__.py +0 -0
  209. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/claude_code_oauth/config.py +0 -0
  210. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/claude_code_oauth/fast_mode.py +0 -0
  211. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/claude_code_oauth/prompt_handler.py +0 -0
  212. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/claude_code_oauth/register_callbacks.py +0 -0
  213. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/claude_code_oauth/test_fast_mode.py +0 -0
  214. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/claude_code_oauth/test_plugin.py +0 -0
  215. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/claude_code_oauth/token_refresh_heartbeat.py +0 -0
  216. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/claude_code_oauth/utils.py +0 -0
  217. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/code_puppy_agent/SKILL.md +0 -0
  218. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/code_puppy_agent/__init__.py +0 -0
  219. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/code_puppy_agent/register_callbacks.py +0 -0
  220. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/config.py +0 -0
  221. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/context_indicator/__init__.py +0 -0
  222. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/context_indicator/register_callbacks.py +0 -0
  223. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/context_indicator/usage.py +0 -0
  224. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/copilot_auth/__init__.py +0 -0
  225. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/copilot_auth/config.py +0 -0
  226. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/copilot_auth/reasoning_client.py +0 -0
  227. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/copilot_auth/register_callbacks.py +0 -0
  228. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/copilot_auth/utils.py +0 -0
  229. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/customizable_commands/__init__.py +0 -0
  230. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/customizable_commands/register_callbacks.py +0 -0
  231. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/dbos_durable_exec/__init__.py +0 -0
  232. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/dbos_durable_exec/cancel.py +0 -0
  233. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/dbos_durable_exec/commands.py +0 -0
  234. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/dbos_durable_exec/config.py +0 -0
  235. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/dbos_durable_exec/lifecycle.py +0 -0
  236. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/dbos_durable_exec/register_callbacks.py +0 -0
  237. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/dbos_durable_exec/runtime.py +0 -0
  238. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/dbos_durable_exec/startup_lock.py +0 -0
  239. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/dbos_durable_exec/workflow_ids.py +0 -0
  240. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/dbos_durable_exec/wrapper.py +0 -0
  241. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/destructive_command_guard/__init__.py +0 -0
  242. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/destructive_command_guard/detector.py +0 -0
  243. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/destructive_command_guard/register_callbacks.py +0 -0
  244. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/emoji_filter/__init__.py +0 -0
  245. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/emoji_filter/config.py +0 -0
  246. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/emoji_filter/register_callbacks.py +0 -0
  247. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/emoji_filter/stripper.py +0 -0
  248. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/example_custom_command/README.md +0 -0
  249. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/example_custom_command/register_callbacks.py +0 -0
  250. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/file_permission_handler/__init__.py +0 -0
  251. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/file_permission_handler/register_callbacks.py +0 -0
  252. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/force_push_guard/__init__.py +0 -0
  253. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/force_push_guard/detector.py +0 -0
  254. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/force_push_guard/register_callbacks.py +0 -0
  255. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/force_push_guard/test_detector.py +0 -0
  256. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/frontend_emitter/__init__.py +0 -0
  257. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/frontend_emitter/emitter.py +0 -0
  258. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/frontend_emitter/register_callbacks.py +0 -0
  259. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/frontend_emitter/session_context.py +0 -0
  260. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/hook_creator/__init__.py +0 -0
  261. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/hook_creator/register_callbacks.py +0 -0
  262. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/hook_manager/__init__.py +0 -0
  263. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/hook_manager/config.py +0 -0
  264. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/hook_manager/hooks_menu.py +0 -0
  265. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/hook_manager/register_callbacks.py +0 -0
  266. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/oauth_puppy_html.py +0 -0
  267. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/obsidian_agent/README.md +0 -0
  268. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/obsidian_agent/__init__.py +0 -0
  269. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/obsidian_agent/agent_obsidian.py +0 -0
  270. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/obsidian_agent/register_callbacks.py +0 -0
  271. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/ollama/__init__.py +0 -0
  272. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/ollama/register_callbacks.py +0 -0
  273. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/ollama_setup/__init__.py +0 -0
  274. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/ollama_setup/completer.py +0 -0
  275. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/ollama_setup/register_callbacks.py +0 -0
  276. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/plugin_list/__init__.py +0 -0
  277. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/plugin_list/plugin_contributions.py +0 -0
  278. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/plugin_list/plugin_meta.py +0 -0
  279. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/plugin_list/plugin_text_utils.py +0 -0
  280. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/plugin_list/plugins_menu.py +0 -0
  281. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/plugin_list/plugins_menu_render.py +0 -0
  282. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/plugin_list/register_callbacks.py +0 -0
  283. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/pop_command/__init__.py +0 -0
  284. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/pop_command/register_callbacks.py +0 -0
  285. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/prompt_newline/__init__.py +0 -0
  286. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/prompt_newline/config.py +0 -0
  287. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/prompt_newline/register_callbacks.py +0 -0
  288. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/prune/__init__.py +0 -0
  289. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/prune/prune_menu.py +0 -0
  290. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/prune/prune_model.py +0 -0
  291. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/prune/prune_render.py +0 -0
  292. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/prune/register_callbacks.py +0 -0
  293. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/puppy_kennel/README.md +0 -0
  294. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/puppy_kennel/__init__.py +0 -0
  295. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/puppy_kennel/commands.py +0 -0
  296. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/puppy_kennel/config.py +0 -0
  297. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/puppy_kennel/kennel.py +0 -0
  298. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/puppy_kennel/packer.py +0 -0
  299. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/puppy_kennel/recorder.py +0 -0
  300. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/puppy_kennel/register_callbacks.py +0 -0
  301. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/puppy_kennel/retriever.py +0 -0
  302. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/puppy_kennel/schema.py +0 -0
  303. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/puppy_kennel/state.py +0 -0
  304. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/puppy_kennel/tools.py +0 -0
  305. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/puppy_kennel/wings.py +0 -0
  306. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/puppy_spinner/__init__.py +0 -0
  307. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/puppy_spinner/register_callbacks.py +0 -0
  308. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/quick_resume/__init__.py +0 -0
  309. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/quick_resume/register_callbacks.py +0 -0
  310. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/review_pr/__init__.py +0 -0
  311. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/review_pr/register_callbacks.py +0 -0
  312. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/shell_safety/__init__.py +0 -0
  313. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/shell_safety/agent_shell_safety.py +0 -0
  314. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/shell_safety/command_cache.py +0 -0
  315. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/shell_safety/register_callbacks.py +0 -0
  316. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/statusline/__init__.py +0 -0
  317. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/statusline/config.py +0 -0
  318. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/statusline/payload.py +0 -0
  319. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/statusline/prompt_patch.py +0 -0
  320. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/statusline/register_callbacks.py +0 -0
  321. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/statusline/runner.py +0 -0
  322. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/statusline/statusline_command.py +0 -0
  323. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/steer_queue/__init__.py +0 -0
  324. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/steer_queue/queue_menu.py +0 -0
  325. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/steer_queue/register_callbacks.py +0 -0
  326. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/subagent_panel/README.md +0 -0
  327. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/subagent_panel/__init__.py +0 -0
  328. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/subagent_panel/coalesce_patch.py +0 -0
  329. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/subagent_panel/panel_render.py +0 -0
  330. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/subagent_panel/register_callbacks.py +0 -0
  331. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/subagent_panel/resume_repaint.py +0 -0
  332. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/subagent_panel/state.py +0 -0
  333. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/switch_agent_resume/__init__.py +0 -0
  334. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/switch_agent_resume/register_callbacks.py +0 -0
  335. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/theme/README.md +0 -0
  336. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/theme/__init__.py +0 -0
  337. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/theme/bundled_palettes.py +0 -0
  338. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/theme/content_styles.py +0 -0
  339. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/theme/osc_palette.py +0 -0
  340. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/theme/picker.py +0 -0
  341. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/theme/register_callbacks.py +0 -0
  342. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/theme/rich_themes.py +0 -0
  343. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/theme/themes.py +0 -0
  344. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/token_ratio_learner/__init__.py +0 -0
  345. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/token_ratio_learner/ratios.py +0 -0
  346. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/token_ratio_learner/register_callbacks.py +0 -0
  347. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/universal_constructor/__init__.py +0 -0
  348. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/universal_constructor/models.py +0 -0
  349. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/universal_constructor/register_callbacks.py +0 -0
  350. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/universal_constructor/registry.py +0 -0
  351. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/universal_constructor/sandbox.py +0 -0
  352. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/wide_completion_menu/__init__.py +0 -0
  353. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/wide_completion_menu/register_callbacks.py +0 -0
  354. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/wiggum/__init__.py +0 -0
  355. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/wiggum/judge.py +0 -0
  356. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/wiggum/judge_config.py +0 -0
  357. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/wiggum/register_callbacks.py +0 -0
  358. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/plugins/wiggum/state.py +0 -0
  359. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/provider_credentials.py +0 -0
  360. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/provider_identity.py +0 -0
  361. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/pydantic_patches.py +0 -0
  362. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/reopenable_async_client.py +0 -0
  363. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/round_robin_model.py +0 -0
  364. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/session_lifecycle.py +0 -0
  365. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/session_migration.py +0 -0
  366. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/session_storage.py +0 -0
  367. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/status_display.py +0 -0
  368. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/summarization_agent.py +0 -0
  369. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/terminal_utils.py +0 -0
  370. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/__init__.py +0 -0
  371. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/agent_tools.py +0 -0
  372. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/ask_user_question/__init__.py +0 -0
  373. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/ask_user_question/constants.py +0 -0
  374. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/ask_user_question/demo_tui.py +0 -0
  375. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/ask_user_question/handler.py +0 -0
  376. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/ask_user_question/models.py +0 -0
  377. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/ask_user_question/registration.py +0 -0
  378. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/ask_user_question/renderers.py +0 -0
  379. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/ask_user_question/terminal_ui.py +0 -0
  380. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/ask_user_question/theme.py +0 -0
  381. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/ask_user_question/tui_loop.py +0 -0
  382. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/browser/__init__.py +0 -0
  383. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/browser/browser_control.py +0 -0
  384. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/browser/browser_interactions.py +0 -0
  385. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/browser/browser_locators.py +0 -0
  386. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/browser/browser_manager.py +0 -0
  387. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/browser/browser_navigation.py +0 -0
  388. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/browser/browser_screenshot.py +0 -0
  389. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/browser/browser_scripts.py +0 -0
  390. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/browser/browser_workflows.py +0 -0
  391. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/command_runner.py +0 -0
  392. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/common.py +0 -0
  393. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/display.py +0 -0
  394. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/file_modifications.py +0 -0
  395. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/file_operations.py +0 -0
  396. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/image_tools.py +0 -0
  397. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/model_tools.py +0 -0
  398. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/skills_tools.py +0 -0
  399. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/subagent_context.py +0 -0
  400. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/subagent_invocation.py +0 -0
  401. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/tools_content.py +0 -0
  402. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/tools/universal_constructor.py +0 -0
  403. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/undo_manager.py +0 -0
  404. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/uvx_detection.py +0 -0
  405. {code_puppy-0.0.586 → code_puppy-0.0.587}/code_puppy/version_checker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-puppy
3
- Version: 0.0.586
3
+ Version: 0.0.587
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
@@ -0,0 +1 @@
1
+ """/btw — quick side questions without polluting the main conversation."""
@@ -0,0 +1,135 @@
1
+ """Inline rendering for `/btw` answers (Claude Code style).
2
+
3
+ Why direct console writes instead of ``emit_info``: the `/btw` handler
4
+ blocks the main event loop while the side query runs, which starves the
5
+ async transcript renderer — queued messages would only paint *after*
6
+ the handler returns. Every slash command already executes under
7
+ ``suspended_run_ui`` (idle and mid-run), so the terminal is ours for
8
+ the duration; printing straight to it is the same trick the TUI menus
9
+ use.
10
+
11
+ The dismiss-wait is load-bearing mid-run: the agent stays parked at its
12
+ pause boundary until the user dismisses (or the timeout fires), so the
13
+ resuming stream can't immediately scroll the answer away.
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ import logging
19
+ import os
20
+ import sys
21
+ import time
22
+
23
+ logger = logging.getLogger(__name__)
24
+
25
+ DISMISS_TIMEOUT_S = 120.0
26
+ _DISMISS_KEYS = (b" ", b"\r", b"\n", b"\x1b")
27
+ _HINT = "Press Space, Enter, or Escape to dismiss"
28
+ _INDENT = (0, 0, 0, 2) # answer block: two-cell left inset
29
+
30
+
31
+ def is_tty() -> bool:
32
+ if os.getenv("CODE_PUPPY_NO_TUI") == "1":
33
+ return False
34
+ try:
35
+ return sys.stdin.isatty() and sys.stdout.isatty()
36
+ except Exception:
37
+ return False
38
+
39
+
40
+ def _console():
41
+ from rich.console import Console
42
+
43
+ return Console()
44
+
45
+
46
+ def show_asking(question: str, model_name: str) -> None:
47
+ """Echo the question and a progress line before the query blocks."""
48
+ from rich.markup import escape
49
+
50
+ console = _console()
51
+ console.print()
52
+ console.print(f"[bold yellow]/btw[/bold yellow] [dim]{escape(question)}[/dim]")
53
+ console.print(f" [dim]thinking ({escape(model_name)})...[/dim]")
54
+
55
+
56
+ def show_answer(answer: str) -> None:
57
+ """Render the answer inline as Markdown, plus the dismiss hint."""
58
+ from rich.markdown import Markdown
59
+ from rich.padding import Padding
60
+
61
+ console = _console()
62
+ console.print()
63
+ console.print(Padding(Markdown(answer), _INDENT))
64
+ console.print()
65
+ console.print(f" [dim]{_HINT}[/dim]")
66
+
67
+
68
+ def wait_for_dismiss(timeout_s: float = DISMISS_TIMEOUT_S) -> None:
69
+ """Block until Space / Enter / Esc, or auto-dismiss on timeout.
70
+
71
+ Never raises. Skips waiting entirely when a raw key can't be read
72
+ (no termios/msvcrt, weird stdin) — better to resume than to hang.
73
+ """
74
+ if not is_tty():
75
+ return
76
+ try:
77
+ _wait_key_posix(timeout_s)
78
+ return
79
+ except ImportError:
80
+ pass
81
+ except Exception:
82
+ logger.debug("btw: posix key wait failed", exc_info=True)
83
+ return
84
+ try:
85
+ _wait_key_windows(timeout_s)
86
+ except Exception:
87
+ logger.debug("btw: windows key wait failed", exc_info=True)
88
+
89
+
90
+ def _wait_key_posix(timeout_s: float) -> None:
91
+ import select
92
+ import termios
93
+ import tty
94
+
95
+ fd = sys.stdin.fileno()
96
+ old = termios.tcgetattr(fd)
97
+ try:
98
+ tty.setcbreak(fd)
99
+ deadline = time.monotonic() + timeout_s
100
+ while True:
101
+ remaining = deadline - time.monotonic()
102
+ if remaining <= 0:
103
+ return
104
+ ready, _, _ = select.select([fd], [], [], min(remaining, 0.5))
105
+ if ready and os.read(fd, 1) in _DISMISS_KEYS:
106
+ return
107
+ finally:
108
+ termios.tcsetattr(fd, termios.TCSADRAIN, old)
109
+
110
+
111
+ def _wait_key_windows(timeout_s: float) -> None:
112
+ import msvcrt
113
+
114
+ deadline = time.monotonic() + timeout_s
115
+ while time.monotonic() < deadline:
116
+ if msvcrt.kbhit() and msvcrt.getch() in _DISMISS_KEYS:
117
+ return
118
+ time.sleep(0.05)
119
+
120
+
121
+ def emit_fallback(question: str, answer: str) -> None:
122
+ """Non-TTY path: plain transcript message via the message queue."""
123
+ from code_puppy.messaging import emit_info
124
+
125
+ emit_info(f"/btw {question}\n\n{answer}")
126
+
127
+
128
+ __all__ = [
129
+ "DISMISS_TIMEOUT_S",
130
+ "emit_fallback",
131
+ "is_tty",
132
+ "show_answer",
133
+ "show_asking",
134
+ "wait_for_dismiss",
135
+ ]
@@ -0,0 +1,106 @@
1
+ """Plugin: `/btw` — ask a quick side question without derailing the task.
2
+
3
+ Runs an independent, single-turn model query (fresh throwaway agent, no
4
+ tools, no shared history) and shows the answer inline, Claude Code
5
+ style. The main conversation's context window never sees the exchange,
6
+ so minor "by the way..." curiosities stop costing you expensive tokens.
7
+
8
+ Mid-run behaviour comes free from ``run_ui._run_paused_commands``:
9
+ slash commands typed while the agent works are queued, the in-flight
10
+ stream finishes, the agent parks at its pause boundary, the command
11
+ runs with the terminal released, then the run resumes. `/btw` just has
12
+ to behave like any other blocking command inside that window — and the
13
+ dismiss-wait keeps the window open until the user has read the answer.
14
+
15
+ Usage:
16
+ /btw <question> One-shot side query, answer shown inline
17
+ /btw --help Show usage
18
+ """
19
+
20
+ from __future__ import annotations
21
+
22
+ import logging
23
+ from typing import List, Optional, Tuple
24
+
25
+ from code_puppy.callbacks import register_callback
26
+
27
+ logger = logging.getLogger(__name__)
28
+
29
+ COMMAND_NAME = "btw"
30
+
31
+ _USAGE = (
32
+ "Usage: /btw <question>\n"
33
+ " Runs an independent single-turn query and shows the answer in a\n"
34
+ " temporary overlay. Your main conversation history is untouched."
35
+ )
36
+
37
+
38
+ def _custom_help() -> List[Tuple[str, str]]:
39
+ return [
40
+ (
41
+ COMMAND_NAME,
42
+ "Quick side question, answered inline (single turn, history untouched)",
43
+ )
44
+ ]
45
+
46
+
47
+ def _parse_question(command: str) -> Optional[str]:
48
+ """Return the question text, or None if usage was shown instead."""
49
+ parts = command.split(maxsplit=1)
50
+ question = parts[1].strip() if len(parts) == 2 else ""
51
+ if not question or question in {"--help", "-h", "help"}:
52
+ from code_puppy.messaging import emit_info
53
+
54
+ emit_info(_USAGE)
55
+ return None
56
+ return question
57
+
58
+
59
+ def _handle_custom_command(command: str, name: str) -> Optional[bool]:
60
+ if name != COMMAND_NAME:
61
+ return None
62
+
63
+ question = _parse_question(command)
64
+ if question is None:
65
+ return True
66
+
67
+ from code_puppy.messaging import emit_error, emit_info
68
+
69
+ from . import inline_view
70
+ from .side_query import ask_blocking, resolve_model_name
71
+
72
+ model_name = resolve_model_name()
73
+ if not model_name:
74
+ emit_error("/btw: could not resolve a model to ask. Check your model config.")
75
+ return True
76
+
77
+ tty = inline_view.is_tty()
78
+ if tty:
79
+ inline_view.show_asking(question, model_name)
80
+ else:
81
+ emit_info(f"btw: asking {model_name} (side query, history untouched)...")
82
+
83
+ try:
84
+ answer = ask_blocking(model_name, question)
85
+ except Exception as exc:
86
+ emit_error(f"/btw failed ({type(exc).__name__}): {exc}")
87
+ return True
88
+
89
+ if tty:
90
+ inline_view.show_answer(answer)
91
+ inline_view.wait_for_dismiss()
92
+ else:
93
+ inline_view.emit_fallback(question, answer)
94
+ return True
95
+
96
+
97
+ register_callback("custom_command", _handle_custom_command)
98
+ register_callback("custom_command_help", _custom_help)
99
+
100
+
101
+ __all__ = [
102
+ "COMMAND_NAME",
103
+ "_custom_help",
104
+ "_handle_custom_command",
105
+ "_parse_question",
106
+ ]
@@ -0,0 +1,91 @@
1
+ """One-shot, history-free model query backing the `/btw` command.
2
+
3
+ Deliberately minimal (YAGNI): a throwaway pydantic_ai Agent with no
4
+ tools, no message history, and a tiny system prompt. The main agent's
5
+ context window never sees any of this — that's the whole point.
6
+
7
+ Threading note: ``handle_command`` executes synchronously *inside* the
8
+ already-running main event loop, so we can't ``asyncio.run`` on the
9
+ main thread. Same escape hatch as the ``steer_queue`` menu: hop to a
10
+ worker thread and give it its own loop.
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ import asyncio
16
+ import concurrent.futures
17
+ import logging
18
+
19
+ logger = logging.getLogger(__name__)
20
+
21
+ QUERY_TIMEOUT_S = 180.0
22
+
23
+ _INSTRUCTIONS = (
24
+ "You are answering a quick side question ('/btw') a developer asked "
25
+ "mid-coding-session. Answer directly and concisely — a few sentences "
26
+ "or a short snippet is ideal. No preamble, no follow-up questions."
27
+ )
28
+
29
+
30
+ def resolve_model_name() -> str | None:
31
+ """Current agent's pinned model if any, else the global model."""
32
+ try:
33
+ from code_puppy.agents.agent_manager import get_current_agent
34
+
35
+ pinned = get_current_agent().get_model_name()
36
+ if pinned:
37
+ return pinned
38
+ except Exception:
39
+ logger.debug("btw: agent model lookup failed", exc_info=True)
40
+ try:
41
+ from code_puppy.config import get_global_model_name
42
+
43
+ return get_global_model_name()
44
+ except Exception:
45
+ logger.debug("btw: global model lookup failed", exc_info=True)
46
+ return None
47
+
48
+
49
+ async def _ask(model_name: str, question: str) -> str:
50
+ """Single-turn query against a fresh Agent. Raises on failure."""
51
+ from pydantic_ai import Agent, UsageLimits
52
+
53
+ from code_puppy.model_factory import ModelFactory, make_model_settings
54
+ from code_puppy.model_utils import prepare_prompt_for_model
55
+
56
+ models_config = ModelFactory.load_config()
57
+ if model_name not in models_config:
58
+ raise ValueError(f"model {model_name!r} not present in the model config")
59
+
60
+ model = ModelFactory.get_model(model_name, models_config)
61
+ prepared = prepare_prompt_for_model(
62
+ model_name,
63
+ _INSTRUCTIONS,
64
+ question,
65
+ prepend_system_to_user=True,
66
+ )
67
+ agent = Agent(
68
+ model=model,
69
+ instructions=prepared.instructions,
70
+ retries=1,
71
+ model_settings=make_model_settings(model_name),
72
+ )
73
+ result = await agent.run(
74
+ prepared.user_prompt,
75
+ usage_limits=UsageLimits(request_limit=3),
76
+ )
77
+ return str(result.output)
78
+
79
+
80
+ def ask_blocking(
81
+ model_name: str,
82
+ question: str,
83
+ timeout_s: float = QUERY_TIMEOUT_S,
84
+ ) -> str:
85
+ """Run the one-shot query on a worker thread; block until answered."""
86
+ with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
87
+ future = executor.submit(lambda: asyncio.run(_ask(model_name, question)))
88
+ return future.result(timeout=timeout_s)
89
+
90
+
91
+ __all__ = ["QUERY_TIMEOUT_S", "ask_blocking", "resolve_model_name"]
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "code-puppy"
7
- version = "0.0.586"
7
+ version = "0.0.587"
8
8
  description = "Code generation agent"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11,<3.15"
File without changes
File without changes
File without changes