newcode 0.1.3__tar.gz → 0.1.5__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 (287) hide show
  1. {newcode-0.1.3 → newcode-0.1.5}/PKG-INFO +1 -1
  2. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_code_puppy.py +1 -1
  3. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/event_stream_handler.py +3 -3
  4. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/autosave_menu.py +1 -1
  5. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/colors_menu.py +2 -2
  6. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/config.py +15 -6
  7. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/managed_server.py +1 -1
  8. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/rich_renderer.py +11 -11
  9. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/agent_tools.py +1 -1
  10. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/__init__.py +1 -1
  11. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/display.py +1 -1
  12. {newcode-0.1.3 → newcode-0.1.5}/pyproject.toml +1 -1
  13. {newcode-0.1.3 → newcode-0.1.5}/.gitignore +0 -0
  14. {newcode-0.1.3 → newcode-0.1.5}/LICENSE +0 -0
  15. {newcode-0.1.3 → newcode-0.1.5}/README.md +0 -0
  16. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/__init__.py +0 -0
  17. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/__main__.py +0 -0
  18. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/__init__.py +0 -0
  19. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_c_reviewer.py +0 -0
  20. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_code_reviewer.py +0 -0
  21. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_cpp_reviewer.py +0 -0
  22. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_creator_agent.py +0 -0
  23. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_golang_reviewer.py +0 -0
  24. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_helios.py +0 -0
  25. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_javascript_reviewer.py +0 -0
  26. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_manager.py +0 -0
  27. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_pack_leader.py +0 -0
  28. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_planning.py +0 -0
  29. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_python_programmer.py +0 -0
  30. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_python_reviewer.py +0 -0
  31. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_qa_expert.py +0 -0
  32. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_qa_kitten.py +0 -0
  33. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_scheduler.py +0 -0
  34. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_security_auditor.py +0 -0
  35. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_terminal_qa.py +0 -0
  36. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_typescript_reviewer.py +0 -0
  37. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/base_agent.py +0 -0
  38. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/json_agent.py +0 -0
  39. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/pack/__init__.py +0 -0
  40. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/pack/bloodhound.py +0 -0
  41. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/pack/husky.py +0 -0
  42. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/pack/retriever.py +0 -0
  43. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/pack/shepherd.py +0 -0
  44. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/pack/terrier.py +0 -0
  45. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/pack/watchdog.py +0 -0
  46. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/prompt_reviewer.py +0 -0
  47. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/subagent_stream_handler.py +0 -0
  48. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/__init__.py +0 -0
  49. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/app.py +0 -0
  50. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/main.py +0 -0
  51. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/pty_manager.py +0 -0
  52. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/routers/__init__.py +0 -0
  53. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/routers/agents.py +0 -0
  54. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/routers/commands.py +0 -0
  55. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/routers/config.py +0 -0
  56. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/routers/sessions.py +0 -0
  57. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/templates/terminal.html +0 -0
  58. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/websocket.py +0 -0
  59. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/callbacks.py +0 -0
  60. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/chatgpt_codex_client.py +0 -0
  61. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/claude_cache_client.py +0 -0
  62. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/cli_runner.py +0 -0
  63. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/__init__.py +0 -0
  64. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/add_model_menu.py +0 -0
  65. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/agent_menu.py +0 -0
  66. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/attachments.py +0 -0
  67. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/clipboard.py +0 -0
  68. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/command_handler.py +0 -0
  69. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/command_registry.py +0 -0
  70. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/config_commands.py +0 -0
  71. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/core_commands.py +0 -0
  72. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/diff_menu.py +0 -0
  73. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/file_path_completion.py +0 -0
  74. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/load_context_completion.py +0 -0
  75. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/__init__.py +0 -0
  76. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/base.py +0 -0
  77. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/catalog_server_installer.py +0 -0
  78. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/custom_server_form.py +0 -0
  79. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/custom_server_installer.py +0 -0
  80. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/edit_command.py +0 -0
  81. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/handler.py +0 -0
  82. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/help_command.py +0 -0
  83. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/install_command.py +0 -0
  84. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/install_menu.py +0 -0
  85. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/list_command.py +0 -0
  86. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/logs_command.py +0 -0
  87. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/remove_command.py +0 -0
  88. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/restart_command.py +0 -0
  89. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/search_command.py +0 -0
  90. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/start_all_command.py +0 -0
  91. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/start_command.py +0 -0
  92. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/status_command.py +0 -0
  93. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/stop_all_command.py +0 -0
  94. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/stop_command.py +0 -0
  95. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/test_command.py +0 -0
  96. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/utils.py +0 -0
  97. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/wizard_utils.py +0 -0
  98. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp_completion.py +0 -0
  99. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/model_picker_completion.py +0 -0
  100. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/model_settings_menu.py +0 -0
  101. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/motd.py +0 -0
  102. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/onboarding_slides.py +0 -0
  103. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/onboarding_wizard.py +0 -0
  104. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/pin_command_completion.py +0 -0
  105. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/prompt_toolkit_completion.py +0 -0
  106. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/session_commands.py +0 -0
  107. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/skills_completion.py +0 -0
  108. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/uc_menu.py +0 -0
  109. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/utils.py +0 -0
  110. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/wiggum_state.py +0 -0
  111. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/error_logging.py +0 -0
  112. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/gemini_code_assist.py +0 -0
  113. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/gemini_model.py +0 -0
  114. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/README.md +0 -0
  115. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/__init__.py +0 -0
  116. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/aliases.py +0 -0
  117. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/engine.py +0 -0
  118. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/executor.py +0 -0
  119. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/matcher.py +0 -0
  120. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/models.py +0 -0
  121. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/registry.py +0 -0
  122. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/validator.py +0 -0
  123. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/http_utils.py +0 -0
  124. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/keymap.py +0 -0
  125. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/main.py +0 -0
  126. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/__init__.py +0 -0
  127. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/async_lifecycle.py +0 -0
  128. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/blocking_startup.py +0 -0
  129. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/captured_stdio_server.py +0 -0
  130. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/circuit_breaker.py +0 -0
  131. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/config_wizard.py +0 -0
  132. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/dashboard.py +0 -0
  133. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/error_isolation.py +0 -0
  134. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/examples/retry_example.py +0 -0
  135. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/health_monitor.py +0 -0
  136. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/manager.py +0 -0
  137. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/mcp_logs.py +0 -0
  138. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/registry.py +0 -0
  139. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/retry_manager.py +0 -0
  140. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/server_registry_catalog.py +0 -0
  141. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/status_tracker.py +0 -0
  142. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/system_tools.py +0 -0
  143. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_prompts/__init__.py +0 -0
  144. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_prompts/hook_creator.py +0 -0
  145. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/__init__.py +0 -0
  146. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/bus.py +0 -0
  147. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/commands.py +0 -0
  148. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/markdown_patches.py +0 -0
  149. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/message_queue.py +0 -0
  150. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/messages.py +0 -0
  151. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/queue_console.py +0 -0
  152. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/renderers.py +0 -0
  153. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/spinner/__init__.py +0 -0
  154. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/spinner/console_spinner.py +0 -0
  155. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/spinner/spinner_base.py +0 -0
  156. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/subagent_console.py +0 -0
  157. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/model_factory.py +0 -0
  158. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/model_switching.py +0 -0
  159. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/model_utils.py +0 -0
  160. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/models.json +0 -0
  161. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/models_dev_api.json +0 -0
  162. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/models_dev_parser.py +0 -0
  163. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/__init__.py +0 -0
  164. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/__init__.py +0 -0
  165. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/config.py +0 -0
  166. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/discovery.py +0 -0
  167. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/downloader.py +0 -0
  168. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/installer.py +0 -0
  169. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/metadata.py +0 -0
  170. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/prompt_builder.py +0 -0
  171. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/register_callbacks.py +0 -0
  172. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/remote_catalog.py +0 -0
  173. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/skill_catalog.py +0 -0
  174. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/skills_install_menu.py +0 -0
  175. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/skills_menu.py +0 -0
  176. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/__init__.py +0 -0
  177. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/accounts.py +0 -0
  178. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/antigravity_model.py +0 -0
  179. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/config.py +0 -0
  180. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/constants.py +0 -0
  181. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/oauth.py +0 -0
  182. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/register_callbacks.py +0 -0
  183. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/storage.py +0 -0
  184. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/test_plugin.py +0 -0
  185. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/token.py +0 -0
  186. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/transport.py +0 -0
  187. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/utils.py +0 -0
  188. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/chatgpt_oauth/__init__.py +0 -0
  189. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/chatgpt_oauth/config.py +0 -0
  190. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/chatgpt_oauth/oauth_flow.py +0 -0
  191. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/chatgpt_oauth/register_callbacks.py +0 -0
  192. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/chatgpt_oauth/test_plugin.py +0 -0
  193. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/chatgpt_oauth/utils.py +0 -0
  194. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_hooks/__init__.py +0 -0
  195. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_hooks/config.py +0 -0
  196. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_hooks/register_callbacks.py +0 -0
  197. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_oauth/README.md +0 -0
  198. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_oauth/SETUP.md +0 -0
  199. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_oauth/__init__.py +0 -0
  200. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_oauth/config.py +0 -0
  201. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_oauth/register_callbacks.py +0 -0
  202. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_oauth/test_plugin.py +0 -0
  203. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_oauth/token_refresh_heartbeat.py +0 -0
  204. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_oauth/utils.py +0 -0
  205. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/customizable_commands/__init__.py +0 -0
  206. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/customizable_commands/register_callbacks.py +0 -0
  207. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/example_custom_command/README.md +0 -0
  208. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/example_custom_command/register_callbacks.py +0 -0
  209. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/file_permission_handler/__init__.py +0 -0
  210. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/file_permission_handler/register_callbacks.py +0 -0
  211. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/frontend_emitter/__init__.py +0 -0
  212. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/frontend_emitter/emitter.py +0 -0
  213. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/frontend_emitter/register_callbacks.py +0 -0
  214. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/hook_creator/__init__.py +0 -0
  215. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/hook_creator/register_callbacks.py +0 -0
  216. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/hook_manager/__init__.py +0 -0
  217. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/hook_manager/config.py +0 -0
  218. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/hook_manager/hooks_menu.py +0 -0
  219. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/hook_manager/register_callbacks.py +0 -0
  220. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/oauth_puppy_html.py +0 -0
  221. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/scheduler/__init__.py +0 -0
  222. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/scheduler/register_callbacks.py +0 -0
  223. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/scheduler/scheduler_menu.py +0 -0
  224. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/scheduler/scheduler_wizard.py +0 -0
  225. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/shell_safety/__init__.py +0 -0
  226. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/shell_safety/agent_shell_safety.py +0 -0
  227. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/shell_safety/command_cache.py +0 -0
  228. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/shell_safety/register_callbacks.py +0 -0
  229. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/synthetic_status/__init__.py +0 -0
  230. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/synthetic_status/register_callbacks.py +0 -0
  231. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/synthetic_status/status_api.py +0 -0
  232. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/universal_constructor/__init__.py +0 -0
  233. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/universal_constructor/models.py +0 -0
  234. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/universal_constructor/register_callbacks.py +0 -0
  235. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/universal_constructor/registry.py +0 -0
  236. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/universal_constructor/sandbox.py +0 -0
  237. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/prompts/antigravity_system_prompt.md +0 -0
  238. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/pydantic_patches.py +0 -0
  239. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/reopenable_async_client.py +0 -0
  240. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/round_robin_model.py +0 -0
  241. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/__init__.py +0 -0
  242. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/__main__.py +0 -0
  243. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/cli.py +0 -0
  244. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/config.py +0 -0
  245. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/daemon.py +0 -0
  246. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/executor.py +0 -0
  247. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/platform.py +0 -0
  248. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/platform_unix.py +0 -0
  249. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/platform_win.py +0 -0
  250. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/session_storage.py +0 -0
  251. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/status_display.py +0 -0
  252. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/summarization_agent.py +0 -0
  253. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/terminal_utils.py +0 -0
  254. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/__init__.py +0 -0
  255. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/__init__.py +0 -0
  256. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/constants.py +0 -0
  257. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/demo_tui.py +0 -0
  258. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/handler.py +0 -0
  259. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/models.py +0 -0
  260. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/registration.py +0 -0
  261. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/renderers.py +0 -0
  262. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/terminal_ui.py +0 -0
  263. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/theme.py +0 -0
  264. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/tui_loop.py +0 -0
  265. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/browser_control.py +0 -0
  266. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/browser_interactions.py +0 -0
  267. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/browser_locators.py +0 -0
  268. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/browser_manager.py +0 -0
  269. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/browser_navigation.py +0 -0
  270. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/browser_screenshot.py +0 -0
  271. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/browser_scripts.py +0 -0
  272. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/browser_workflows.py +0 -0
  273. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/chromium_terminal_manager.py +0 -0
  274. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/terminal_command_tools.py +0 -0
  275. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/terminal_screenshot_tools.py +0 -0
  276. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/terminal_tools.py +0 -0
  277. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/command_runner.py +0 -0
  278. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/common.py +0 -0
  279. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/file_modifications.py +0 -0
  280. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/file_operations.py +0 -0
  281. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/scheduler_tools.py +0 -0
  282. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/skills_tools.py +0 -0
  283. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/subagent_context.py +0 -0
  284. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/tools_content.py +0 -0
  285. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/universal_constructor.py +0 -0
  286. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/uvx_detection.py +0 -0
  287. {newcode-0.1.3 → newcode-0.1.5}/code_puppy/version_checker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: newcode
3
- Version: 0.1.3
3
+ Version: 0.1.5
4
4
  Summary: AI-powered code generation agent - a fedstew fork of code-puppy
5
5
  Project-URL: repository, https://github.com/janfeddersen-wq/new_code
6
6
  Project-URL: HomePage, https://github.com/janfeddersen-wq/new_code
@@ -19,7 +19,7 @@ class CodePuppyAgent(BaseAgent):
19
19
 
20
20
  @property
21
21
  def description(self) -> str:
22
- return "General-purpose code generation and modification agent"
22
+ return "General-purpose code agent that can read, write, and modify files, search codebases, and execute shell commands"
23
23
 
24
24
  def get_available_tools(self) -> list[str]:
25
25
  """Get the list of tools available to the Code Agent."""
@@ -138,10 +138,10 @@ async def event_stream_handler(
138
138
  thinking_color = get_banner_color("thinking")
139
139
  console.print(
140
140
  Text.from_markup(
141
- f"[{thinking_color}][/{thinking_color}] [bold {thinking_color}]thinking[/bold {thinking_color}] [dim]"
141
+ f"[{thinking_color}]───[/{thinking_color}] [bold]THINKING[/bold] [{thinking_color}]───[/{thinking_color}]"
142
142
  ),
143
- end="",
144
143
  )
144
+ console.print("[dim]", end="")
145
145
  did_stream_anything = True
146
146
 
147
147
  async def _print_response_banner() -> None:
@@ -156,7 +156,7 @@ async def event_stream_handler(
156
156
  response_color = get_banner_color("agent_response")
157
157
  console.print(
158
158
  Text.from_markup(
159
- f"[{response_color}][/{response_color}] [bold {response_color}]agent response[/bold {response_color}]"
159
+ f"[{response_color}]───[/{response_color}] [bold]AGENT RESPONSE[/bold] [{response_color}]───[/{response_color}]"
160
160
  )
161
161
  )
162
162
  did_stream_anything = True
@@ -481,7 +481,7 @@ def display_resumed_history(
481
481
  console.print(f"[dim]{content}[/dim]")
482
482
  else: # assistant
483
483
  # Use the exact same banner format as normal agent response
484
- banner = f"[{response_color}][/{response_color}] [bold {response_color}]agent response[/bold {response_color}]"
484
+ banner = f"[{response_color}]───[/{response_color}] [bold]AGENT RESPONSE[/bold] [{response_color}]───[/{response_color}]"
485
485
  console.print(f"\n{banner}")
486
486
  # Render content as markdown (same as normal chat)
487
487
  md = Markdown(content)
@@ -420,7 +420,7 @@ def _get_preview_text_for_prompt_toolkit(config: ColorConfiguration) -> ANSI:
420
420
  # Print the banner with its configured color (left-border style)
421
421
  icon_str = f" {icon}" if icon else ""
422
422
  banner_text = (
423
- f"[{color}][/{color}] [bold {color}]{display_name}[/bold {color}]{icon_str}"
423
+ f"[{color}]───[/{color}] [bold]{display_name.upper()}[/bold] [{color}]───[/{color}]{icon_str}"
424
424
  )
425
425
  console.print(banner_text)
426
426
 
@@ -507,7 +507,7 @@ def _get_single_banner_preview(config: ColorConfiguration) -> ANSI:
507
507
  # Show the banner large (left-border style)
508
508
  icon_str = f" {icon}" if icon else ""
509
509
  banner_text = (
510
- f"[{color}][/{color}] [bold {color}]{display_name}[/bold {color}]{icon_str}"
510
+ f"[{color}]───[/{color}] [bold]{display_name.upper()}[/bold] [{color}]───[/{color}]{icon_str}"
511
511
  )
512
512
  console.print(banner_text)
513
513
  console.print()
@@ -336,6 +336,15 @@ def get_config_keys():
336
336
  default_keys.append("resume_message_count")
337
337
  # Add show_diffs toggle
338
338
  default_keys.append("show_diffs")
339
+ # Add remaining settable keys
340
+ default_keys.append("subagent_verbose")
341
+ default_keys.append("safety_permission_level")
342
+ default_keys.append("mcp_disabled")
343
+ default_keys.append("grep_output_verbose")
344
+ default_keys.append("diff_addition_color")
345
+ default_keys.append("diff_deletion_color")
346
+ default_keys.append("suppress_thinking_messages")
347
+ default_keys.append("suppress_informational_messages")
339
348
 
340
349
  config = configparser.ConfigParser()
341
350
  config.read(CONFIG_FILE)
@@ -1620,15 +1629,15 @@ def finalize_autosave_session() -> str:
1620
1629
  def get_show_diffs() -> bool:
1621
1630
  """Check whether diff content should be shown in edit blocks.
1622
1631
 
1623
- Defaults to True (show full diffs). When False, only the filename and
1624
- a count of lines added/removed is displayed.
1632
+ Defaults to False (compact mode showing only filename and line counts).
1633
+ When True, full diff content is displayed.
1625
1634
  """
1626
- false_vals = {"0", "false", "no", "off"}
1635
+ true_vals = {"1", "true", "yes", "on"}
1627
1636
  cfg_val = get_value("show_diffs")
1628
1637
  if cfg_val is not None:
1629
- if str(cfg_val).strip().lower() in false_vals:
1630
- return False
1631
- return True
1638
+ if str(cfg_val).strip().lower() in true_vals:
1639
+ return True
1640
+ return False
1632
1641
 
1633
1642
 
1634
1643
  def get_suppress_thinking_messages() -> bool:
@@ -86,7 +86,7 @@ async def process_tool_call(
86
86
 
87
87
  console = Console()
88
88
  color = get_banner_color("mcp_tool_call")
89
- banner = f"[{color}][/{color}] [bold {color}]mcp tool call[/bold {color}]"
89
+ banner = f"[{color}]───[/{color}] [bold]MCP TOOL CALL[/bold] [{color}]───[/{color}]"
90
90
  console.print(f"\n{banner} [bold cyan]{name}[/bold cyan]")
91
91
  return await call_tool(name, tool_args, {"deps": ctx.deps})
92
92
 
@@ -170,7 +170,7 @@ class RichConsoleRenderer:
170
170
  return get_banner_color(banner_name)
171
171
 
172
172
  def _format_banner(self, banner_name: str, text: str) -> str:
173
- """Format a banner with its configured color.
173
+ """Format a banner with colored dashes and bold capitalized text.
174
174
 
175
175
  Args:
176
176
  banner_name: The banner identifier
@@ -180,7 +180,7 @@ class RichConsoleRenderer:
180
180
  Rich markup string for the banner
181
181
  """
182
182
  color = self._get_banner_color(banner_name)
183
- return f"[{color}][/{color}] [bold {color}]{text.lower()}[/bold {color}]"
183
+ return f"[{color}]───[/{color}] [bold]{text.upper()}[/bold] [{color}]───[/{color}]"
184
184
 
185
185
  def _should_suppress_subagent_output(self) -> bool:
186
186
  """Check if sub-agent output should be suppressed.
@@ -431,7 +431,7 @@ class RichConsoleRenderer:
431
431
 
432
432
  bar = self._bar(color)
433
433
  self._console.print(
434
- f"{bar} [bold cyan]{msg.directory}[/bold cyan] [dim]{rec_flag}[/dim]\n"
434
+ f"{bar} [bold cyan]{msg.directory}[/bold cyan] [dim]{rec_flag}[/dim]"
435
435
  )
436
436
 
437
437
  # Build a tree structure: {parent_path: {files: [], dirs: set(), size: int}}
@@ -484,7 +484,10 @@ class RichConsoleRenderer:
484
484
 
485
485
  # For root level, just show contents
486
486
  if dir_path == root_key:
487
- # Show files at root level (depth 0)
487
+ # Show subdirs first (like ls), then files
488
+ for subdir in subdirs:
489
+ render_dir_tree(subdir, depth)
490
+
488
491
  for f in sorted(files, key=lambda x: x.path):
489
492
  name = os.path.basename(f.path)
490
493
  size_str = (
@@ -495,10 +498,6 @@ class RichConsoleRenderer:
495
498
  self._console.print(
496
499
  f"{bar}{indent}[green]{name}[/green]{size_str}"
497
500
  )
498
-
499
- # Show subdirs at root level
500
- for subdir in subdirs:
501
- render_dir_tree(subdir, depth)
502
501
  else:
503
502
  # Show directory with summary
504
503
  dir_name = os.path.basename(dir_path)
@@ -538,6 +537,7 @@ class RichConsoleRenderer:
538
537
  f"[green]{msg.file_count} files[/green] "
539
538
  f"[dim]({self._format_size(msg.total_size)} total)[/dim]"
540
539
  )
540
+ self._console.print(f"{bar}")
541
541
 
542
542
  def _render_file_content(self, msg: FileContentMessage) -> None:
543
543
  """Render a file read - just show the header, not the content."""
@@ -773,7 +773,7 @@ class RichConsoleRenderer:
773
773
  """Render agent response with header and markdown formatting."""
774
774
  # Header
775
775
  banner = self._format_banner("agent_response", "AGENT RESPONSE")
776
- self._console.print(f"\n{banner}\n")
776
+ self._console.print(f"\n{banner}")
777
777
 
778
778
  # Content (markdown or plain)
779
779
  if msg.is_markdown:
@@ -1057,13 +1057,13 @@ class RichConsoleRenderer:
1057
1057
  banner = self._format_banner("agent_response", "LIST SKILLS")
1058
1058
  query_info = f" matching [cyan]'{msg.query}'[/cyan]" if msg.query else ""
1059
1059
  self._console.print(
1060
- f"\n{banner} Found [bold]{msg.total_count}[/bold] skill(s){query_info}\n"
1060
+ f"\n{banner} Found [bold]{msg.total_count}[/bold] skill(s){query_info}"
1061
1061
  )
1062
1062
 
1063
1063
  if not msg.skills:
1064
1064
  self._console.print(f"{bar}[dim] No skills found.[/dim]")
1065
1065
  self._console.print(
1066
- f"{bar}[dim] Install skills in ~/.code_puppy/skills/[/dim]\n"
1066
+ f"{bar}[dim] Install skills in ~/.code_puppy/skills/[/dim]"
1067
1067
  )
1068
1068
  return
1069
1069
 
@@ -250,7 +250,7 @@ def register_list_agents(agent):
250
250
  list_agents_color = get_banner_color("list_agents")
251
251
  emit_info(
252
252
  Text.from_markup(
253
- f"\n[{list_agents_color}][/{list_agents_color}] [bold {list_agents_color}]list agents[/bold {list_agents_color}]"
253
+ f"\n[{list_agents_color}]───[/{list_agents_color}] [bold]LIST AGENTS[/bold] [{list_agents_color}]───[/{list_agents_color}]"
254
254
  ),
255
255
  message_group=group_id,
256
256
  )
@@ -25,7 +25,7 @@ def format_terminal_banner(text: str) -> str:
25
25
  Rich markup formatted string
26
26
  """
27
27
  color = get_banner_color("terminal_tool")
28
- return f"[{color}][/{color}] [bold {color}]{text.lower()}[/bold {color}]"
28
+ return f"[{color}]───[/{color}] [bold]{text.upper()}[/bold] [{color}]───[/{color}]"
29
29
 
30
30
 
31
31
  __all__ = [
@@ -60,7 +60,7 @@ def display_non_streamed_result(
60
60
  banner_color = get_banner_color(banner_name)
61
61
  console.print(
62
62
  Text.from_markup(
63
- f"[{banner_color}][/{banner_color}] [bold {banner_color}]{banner_text.lower()}[/bold {banner_color}]"
63
+ f"[{banner_color}]───[/{banner_color}] [bold]{banner_text.upper()}[/bold] [{banner_color}]───[/{banner_color}]"
64
64
  )
65
65
  )
66
66
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "newcode"
7
- version = "0.1.3"
7
+ version = "0.1.5"
8
8
  description = "AI-powered code generation agent - a fedstew fork of code-puppy"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11,<3.14"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes