newcode 0.1.7__tar.gz → 0.1.8__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 (286) hide show
  1. {newcode-0.1.7 → newcode-0.1.8}/PKG-INFO +2 -2
  2. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/__init__.py +1 -1
  3. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/agent_c_reviewer.py +2 -2
  4. newcode-0.1.7/code_puppy/agents/agent_code_puppy.py → newcode-0.1.8/code_puppy/agents/agent_code_agent.py +2 -2
  5. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/agent_code_reviewer.py +2 -2
  6. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/agent_cpp_reviewer.py +3 -3
  7. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/agent_golang_reviewer.py +7 -7
  8. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/agent_javascript_reviewer.py +3 -3
  9. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/agent_manager.py +4 -4
  10. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/agent_planning.py +2 -2
  11. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/agent_python_programmer.py +5 -7
  12. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/agent_python_reviewer.py +3 -3
  13. newcode-0.1.7/code_puppy/agents/agent_qa_kitten.py → newcode-0.1.8/code_puppy/agents/agent_qa_browser.py +9 -9
  14. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/agent_qa_expert.py +2 -2
  15. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/agent_scheduler.py +2 -2
  16. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/agent_security_auditor.py +3 -3
  17. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/agent_typescript_reviewer.py +3 -3
  18. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/base_agent.py +17 -17
  19. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/config.py +2 -2
  20. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/scheduler/scheduler_wizard.py +1 -1
  21. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/scheduler/config.py +1 -1
  22. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/scheduler/executor.py +6 -6
  23. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/status_display.py +10 -10
  24. {newcode-0.1.7 → newcode-0.1.8}/pyproject.toml +4 -2
  25. {newcode-0.1.7 → newcode-0.1.8}/.gitignore +0 -0
  26. {newcode-0.1.7 → newcode-0.1.8}/LICENSE +0 -0
  27. {newcode-0.1.7 → newcode-0.1.8}/README.md +0 -0
  28. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/__init__.py +0 -0
  29. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/__main__.py +0 -0
  30. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/agent_creator_agent.py +0 -0
  31. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/agent_pack_leader.py +0 -0
  32. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/agent_terminal_qa.py +0 -0
  33. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/event_stream_handler.py +0 -0
  34. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/json_agent.py +0 -0
  35. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/pack/__init__.py +0 -0
  36. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/pack/bloodhound.py +0 -0
  37. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/pack/husky.py +0 -0
  38. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/pack/retriever.py +0 -0
  39. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/pack/shepherd.py +0 -0
  40. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/pack/terrier.py +0 -0
  41. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/pack/watchdog.py +0 -0
  42. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/prompt_reviewer.py +0 -0
  43. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/agents/subagent_stream_handler.py +0 -0
  44. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/api/__init__.py +0 -0
  45. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/api/app.py +0 -0
  46. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/api/main.py +0 -0
  47. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/api/pty_manager.py +0 -0
  48. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/api/routers/__init__.py +0 -0
  49. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/api/routers/agents.py +0 -0
  50. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/api/routers/commands.py +0 -0
  51. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/api/routers/config.py +0 -0
  52. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/api/routers/sessions.py +0 -0
  53. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/api/templates/terminal.html +0 -0
  54. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/api/websocket.py +0 -0
  55. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/callbacks.py +0 -0
  56. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/chatgpt_codex_client.py +0 -0
  57. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/claude_cache_client.py +0 -0
  58. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/cli_runner.py +0 -0
  59. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/__init__.py +0 -0
  60. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/add_model_menu.py +0 -0
  61. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/agent_menu.py +0 -0
  62. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/attachments.py +0 -0
  63. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/autosave_menu.py +0 -0
  64. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/clipboard.py +0 -0
  65. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/colors_menu.py +0 -0
  66. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/command_handler.py +0 -0
  67. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/command_registry.py +0 -0
  68. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/config_commands.py +0 -0
  69. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/core_commands.py +0 -0
  70. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/diff_menu.py +0 -0
  71. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/file_path_completion.py +0 -0
  72. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/load_context_completion.py +0 -0
  73. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/__init__.py +0 -0
  74. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/base.py +0 -0
  75. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/catalog_server_installer.py +0 -0
  76. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/custom_server_form.py +0 -0
  77. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/custom_server_installer.py +0 -0
  78. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/edit_command.py +0 -0
  79. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/handler.py +0 -0
  80. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/help_command.py +0 -0
  81. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/install_command.py +0 -0
  82. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/install_menu.py +0 -0
  83. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/list_command.py +0 -0
  84. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/logs_command.py +0 -0
  85. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/remove_command.py +0 -0
  86. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/restart_command.py +0 -0
  87. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/search_command.py +0 -0
  88. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/start_all_command.py +0 -0
  89. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/start_command.py +0 -0
  90. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/status_command.py +0 -0
  91. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/stop_all_command.py +0 -0
  92. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/stop_command.py +0 -0
  93. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/test_command.py +0 -0
  94. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/utils.py +0 -0
  95. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp/wizard_utils.py +0 -0
  96. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/mcp_completion.py +0 -0
  97. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/model_picker_completion.py +0 -0
  98. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/model_settings_menu.py +0 -0
  99. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/motd.py +0 -0
  100. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/onboarding_slides.py +0 -0
  101. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/onboarding_wizard.py +0 -0
  102. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/pin_command_completion.py +0 -0
  103. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/prompt_toolkit_completion.py +0 -0
  104. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/session_commands.py +0 -0
  105. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/skills_completion.py +0 -0
  106. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/uc_menu.py +0 -0
  107. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/utils.py +0 -0
  108. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/command_line/wiggum_state.py +0 -0
  109. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/error_logging.py +0 -0
  110. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/gemini_code_assist.py +0 -0
  111. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/gemini_model.py +0 -0
  112. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/hook_engine/README.md +0 -0
  113. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/hook_engine/__init__.py +0 -0
  114. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/hook_engine/aliases.py +0 -0
  115. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/hook_engine/engine.py +0 -0
  116. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/hook_engine/executor.py +0 -0
  117. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/hook_engine/matcher.py +0 -0
  118. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/hook_engine/models.py +0 -0
  119. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/hook_engine/registry.py +0 -0
  120. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/hook_engine/validator.py +0 -0
  121. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/http_utils.py +0 -0
  122. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/keymap.py +0 -0
  123. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/main.py +0 -0
  124. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/__init__.py +0 -0
  125. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/async_lifecycle.py +0 -0
  126. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/blocking_startup.py +0 -0
  127. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/captured_stdio_server.py +0 -0
  128. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/circuit_breaker.py +0 -0
  129. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/config_wizard.py +0 -0
  130. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/dashboard.py +0 -0
  131. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/error_isolation.py +0 -0
  132. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/examples/retry_example.py +0 -0
  133. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/health_monitor.py +0 -0
  134. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/managed_server.py +0 -0
  135. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/manager.py +0 -0
  136. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/mcp_logs.py +0 -0
  137. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/registry.py +0 -0
  138. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/retry_manager.py +0 -0
  139. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/server_registry_catalog.py +0 -0
  140. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/status_tracker.py +0 -0
  141. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_/system_tools.py +0 -0
  142. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_prompts/__init__.py +0 -0
  143. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/mcp_prompts/hook_creator.py +0 -0
  144. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/messaging/__init__.py +0 -0
  145. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/messaging/bus.py +0 -0
  146. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/messaging/commands.py +0 -0
  147. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/messaging/markdown_patches.py +0 -0
  148. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/messaging/message_queue.py +0 -0
  149. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/messaging/messages.py +0 -0
  150. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/messaging/queue_console.py +0 -0
  151. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/messaging/renderers.py +0 -0
  152. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/messaging/rich_renderer.py +0 -0
  153. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/messaging/spinner/__init__.py +0 -0
  154. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/messaging/spinner/console_spinner.py +0 -0
  155. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/messaging/spinner/spinner_base.py +0 -0
  156. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/messaging/subagent_console.py +0 -0
  157. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/model_factory.py +0 -0
  158. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/model_switching.py +0 -0
  159. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/model_utils.py +0 -0
  160. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/models.json +0 -0
  161. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/models_dev_api.json +0 -0
  162. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/models_dev_parser.py +0 -0
  163. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/__init__.py +0 -0
  164. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/agent_skills/__init__.py +0 -0
  165. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/agent_skills/config.py +0 -0
  166. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/agent_skills/discovery.py +0 -0
  167. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/agent_skills/downloader.py +0 -0
  168. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/agent_skills/installer.py +0 -0
  169. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/agent_skills/metadata.py +0 -0
  170. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/agent_skills/prompt_builder.py +0 -0
  171. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/agent_skills/register_callbacks.py +0 -0
  172. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/agent_skills/remote_catalog.py +0 -0
  173. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/agent_skills/skill_catalog.py +0 -0
  174. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/agent_skills/skills_install_menu.py +0 -0
  175. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/agent_skills/skills_menu.py +0 -0
  176. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/antigravity_oauth/__init__.py +0 -0
  177. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/antigravity_oauth/accounts.py +0 -0
  178. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/antigravity_oauth/antigravity_model.py +0 -0
  179. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/antigravity_oauth/config.py +0 -0
  180. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/antigravity_oauth/constants.py +0 -0
  181. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/antigravity_oauth/oauth.py +0 -0
  182. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/antigravity_oauth/register_callbacks.py +0 -0
  183. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/antigravity_oauth/storage.py +0 -0
  184. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/antigravity_oauth/test_plugin.py +0 -0
  185. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/antigravity_oauth/token.py +0 -0
  186. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/antigravity_oauth/transport.py +0 -0
  187. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/antigravity_oauth/utils.py +0 -0
  188. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/chatgpt_oauth/__init__.py +0 -0
  189. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/chatgpt_oauth/config.py +0 -0
  190. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/chatgpt_oauth/oauth_flow.py +0 -0
  191. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/chatgpt_oauth/register_callbacks.py +0 -0
  192. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/chatgpt_oauth/test_plugin.py +0 -0
  193. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/chatgpt_oauth/utils.py +0 -0
  194. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/claude_code_hooks/__init__.py +0 -0
  195. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/claude_code_hooks/config.py +0 -0
  196. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/claude_code_hooks/register_callbacks.py +0 -0
  197. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/claude_code_oauth/README.md +0 -0
  198. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/claude_code_oauth/SETUP.md +0 -0
  199. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/claude_code_oauth/__init__.py +0 -0
  200. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/claude_code_oauth/config.py +0 -0
  201. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/claude_code_oauth/register_callbacks.py +0 -0
  202. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/claude_code_oauth/test_plugin.py +0 -0
  203. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/claude_code_oauth/token_refresh_heartbeat.py +0 -0
  204. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/claude_code_oauth/utils.py +0 -0
  205. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/customizable_commands/__init__.py +0 -0
  206. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/customizable_commands/register_callbacks.py +0 -0
  207. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/example_custom_command/README.md +0 -0
  208. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/example_custom_command/register_callbacks.py +0 -0
  209. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/file_permission_handler/__init__.py +0 -0
  210. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/file_permission_handler/register_callbacks.py +0 -0
  211. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/frontend_emitter/__init__.py +0 -0
  212. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/frontend_emitter/emitter.py +0 -0
  213. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/frontend_emitter/register_callbacks.py +0 -0
  214. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/hook_creator/__init__.py +0 -0
  215. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/hook_creator/register_callbacks.py +0 -0
  216. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/hook_manager/__init__.py +0 -0
  217. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/hook_manager/config.py +0 -0
  218. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/hook_manager/hooks_menu.py +0 -0
  219. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/hook_manager/register_callbacks.py +0 -0
  220. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/oauth_puppy_html.py +0 -0
  221. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/scheduler/__init__.py +0 -0
  222. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/scheduler/register_callbacks.py +0 -0
  223. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/scheduler/scheduler_menu.py +0 -0
  224. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/shell_safety/__init__.py +0 -0
  225. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/shell_safety/agent_shell_safety.py +0 -0
  226. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/shell_safety/command_cache.py +0 -0
  227. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/shell_safety/register_callbacks.py +0 -0
  228. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/synthetic_status/__init__.py +0 -0
  229. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/synthetic_status/register_callbacks.py +0 -0
  230. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/synthetic_status/status_api.py +0 -0
  231. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/universal_constructor/__init__.py +0 -0
  232. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/universal_constructor/models.py +0 -0
  233. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/universal_constructor/register_callbacks.py +0 -0
  234. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/universal_constructor/registry.py +0 -0
  235. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/plugins/universal_constructor/sandbox.py +0 -0
  236. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/prompts/antigravity_system_prompt.md +0 -0
  237. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/pydantic_patches.py +0 -0
  238. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/reopenable_async_client.py +0 -0
  239. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/round_robin_model.py +0 -0
  240. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/scheduler/__init__.py +0 -0
  241. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/scheduler/__main__.py +0 -0
  242. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/scheduler/cli.py +0 -0
  243. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/scheduler/daemon.py +0 -0
  244. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/scheduler/platform.py +0 -0
  245. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/scheduler/platform_unix.py +0 -0
  246. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/scheduler/platform_win.py +0 -0
  247. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/session_storage.py +0 -0
  248. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/summarization_agent.py +0 -0
  249. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/terminal_utils.py +0 -0
  250. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/__init__.py +0 -0
  251. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/agent_tools.py +0 -0
  252. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/ask_user_question/__init__.py +0 -0
  253. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/ask_user_question/constants.py +0 -0
  254. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/ask_user_question/demo_tui.py +0 -0
  255. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/ask_user_question/handler.py +0 -0
  256. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/ask_user_question/models.py +0 -0
  257. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/ask_user_question/registration.py +0 -0
  258. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/ask_user_question/renderers.py +0 -0
  259. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/ask_user_question/terminal_ui.py +0 -0
  260. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/ask_user_question/theme.py +0 -0
  261. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/ask_user_question/tui_loop.py +0 -0
  262. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/browser/__init__.py +0 -0
  263. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/browser/browser_control.py +0 -0
  264. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/browser/browser_interactions.py +0 -0
  265. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/browser/browser_locators.py +0 -0
  266. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/browser/browser_manager.py +0 -0
  267. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/browser/browser_navigation.py +0 -0
  268. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/browser/browser_screenshot.py +0 -0
  269. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/browser/browser_scripts.py +0 -0
  270. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/browser/browser_workflows.py +0 -0
  271. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/browser/chromium_terminal_manager.py +0 -0
  272. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/browser/terminal_command_tools.py +0 -0
  273. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/browser/terminal_screenshot_tools.py +0 -0
  274. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/browser/terminal_tools.py +0 -0
  275. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/command_runner.py +0 -0
  276. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/common.py +0 -0
  277. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/display.py +0 -0
  278. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/file_modifications.py +0 -0
  279. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/file_operations.py +0 -0
  280. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/scheduler_tools.py +0 -0
  281. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/skills_tools.py +0 -0
  282. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/subagent_context.py +0 -0
  283. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/tools_content.py +0 -0
  284. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/tools/universal_constructor.py +0 -0
  285. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/uvx_detection.py +0 -0
  286. {newcode-0.1.7 → newcode-0.1.8}/code_puppy/version_checker.py +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: newcode
3
- Version: 0.1.7
4
- Summary: AI-powered code generation agent - a fedstew fork of code-puppy
3
+ Version: 0.1.8
4
+ Summary: AI-powered code generation agent platform
5
5
  Project-URL: repository, https://github.com/janfeddersen-wq/new_code
6
6
  Project-URL: HomePage, https://github.com/janfeddersen-wq/new_code
7
7
  Project-URL: Upstream, https://github.com/mpfaffenberger/code_puppy
@@ -1,4 +1,4 @@
1
- """Agent management system for code-puppy.
1
+ """Agent management system for newcode.
2
2
 
3
3
  This module provides functionality for switching between different agent
4
4
  configurations, each with their own system prompts and tool sets.
@@ -31,7 +31,7 @@ class CReviewerAgent(BaseAgent):
31
31
 
32
32
  def get_system_prompt(self) -> str:
33
33
  return """
34
- You are the C systems reviewer puppy. Think C99/C11 in the trenches: kernels, drivers, embedded firmware, high-performance network stacks. Embrace the sass, but never compromise on correctness.
34
+ You are a C systems code reviewer. Think C99/C11 in the trenches: kernels, drivers, embedded firmware, high-performance network stacks. Be direct and never compromise on correctness.
35
35
 
36
36
  Mission profile:
37
37
  - Review only `.c`/`.h` files with meaningful code diffs. Skip untouched files or mechanical formatting changes.
@@ -150,5 +150,5 @@ Agent collaboration:
150
150
  - Use list_agents to discover specialists for domain-specific concerns (embedded, networking, etc.)
151
151
  - Always explain why you're invoking another agent and what specific expertise you need
152
152
 
153
- You're the C review persona for this CLI. Be witty, relentless about low-level rigor, and absurdly helpful.
153
+ You're the C review agent for this CLI. Be thorough, relentless about low-level rigor, and helpful.
154
154
  """
@@ -6,12 +6,12 @@ from .. import callbacks
6
6
  from .base_agent import BaseAgent
7
7
 
8
8
 
9
- class CodePuppyAgent(BaseAgent):
9
+ class CodeAgent(BaseAgent):
10
10
  """Code Agent - The default general-purpose code agent."""
11
11
 
12
12
  @property
13
13
  def name(self) -> str:
14
- return "code-puppy"
14
+ return "code-agent"
15
15
 
16
16
  @property
17
17
  def display_name(self) -> str:
@@ -31,7 +31,7 @@ class CodeQualityReviewerAgent(BaseAgent):
31
31
 
32
32
  def get_system_prompt(self) -> str:
33
33
  return """
34
- You are the general-purpose code review puppy. Security-first, performance-aware, best-practices obsessed. Keep the banter friendly but the feedback razor sharp.
34
+ You are a general-purpose code reviewer. Security-first, performance-aware, best-practices obsessed. Keep the feedback clear and razor sharp.
35
35
 
36
36
  Mission scope:
37
37
  - Review only files with substantive code or config changes. Skip untouched or trivial reformatting noise.
@@ -85,5 +85,5 @@ Agent collaboration:
85
85
  - Always explain what expertise you need when involving other agents
86
86
  - Act as a coordinator when multiple specialist reviews are required
87
87
 
88
- You're the default quality-and-security reviewer for this CLI. Stay playful, stay thorough, keep teams shipping safe and maintainable code.
88
+ You're the default quality-and-security reviewer for this CLI. Stay thorough and keep teams shipping safe and maintainable code.
89
89
  """
@@ -29,7 +29,7 @@ class CppReviewerAgent(BaseAgent):
29
29
 
30
30
  def get_system_prompt(self) -> str:
31
31
  return """
32
- You are the C++ reviewer puppy. You live for zero-overhead abstractions, predictable performance, and ruthless safety. Bring the snark, keep it kind.
32
+ You are a C++ code reviewer. You live for zero-overhead abstractions, predictable performance, and ruthless safety. Be direct and constructive.
33
33
 
34
34
  Mission priorities:
35
35
  - Review only `.cpp`/`.cc`/`.cxx`/`.hpp`/`.hh`/`.hxx` files with meaningful code diffs. Skip untouched headers/impls or formatting-only changes.
@@ -99,7 +99,7 @@ Security Hardening Checklist:
99
99
  - [ ] Type safety: avoid void*, use templates or variants
100
100
 
101
101
  Feedback protocol:
102
- - Be playful yet precise. "Consider …" keeps morale high while delivering the truth.
102
+ - Be direct yet precise. "Consider …" keeps morale high while delivering the truth.
103
103
  - Group related feedback; reference exact lines like `src/core/foo.cpp:128`. No ranges, no hand-waving.
104
104
  - Surface assumptions ("Assuming SSE4.2 is available…") so humans can confirm.
105
105
  - If the change is rock-solid, say so and highlight the wins.
@@ -127,5 +127,5 @@ Agent collaboration:
127
127
  - Use list_agents to find domain experts (graphics, embedded, scientific computing)
128
128
  - Always articulate what specific expertise you need when invoking other agents
129
129
 
130
- You're the C++ review persona for this CLI. Be witty, relentless about quality, and absurdly helpful.
130
+ You're the C++ review agent for this CLI. Be thorough, relentless about quality, and helpful.
131
131
  """
@@ -31,11 +31,11 @@ class GolangReviewerAgent(BaseAgent):
31
31
 
32
32
  def get_system_prompt(self) -> str:
33
33
  return """
34
- You are an expert Golang reviewer puppy. Sniff only the Go code that changed, bark constructive stuff, and keep it playful but razor sharp without name-dropping any specific humans.
34
+ You are an expert Golang code reviewer. Focus only on the Go code that changed, provide constructive feedback, and keep it razor sharp without name-dropping any specific humans.
35
35
 
36
36
  Mission profile:
37
- - Review only tracked `.go` files with real code diffs. If a file is untouched or only whitespace/comments changed, just wag your tail and skip it.
38
- - Ignore every non-Go file: `.yml`, `.yaml`, `.md`, `.json`, `.txt`, `Dockerfile`, `LICENSE`, `README.md`, etc. If someone tries to sneak one in, roll over and move on.
37
+ - Review only tracked `.go` files with real code diffs. If a file is untouched or only whitespace/comments changed, skip it.
38
+ - Ignore every non-Go file: `.yml`, `.yaml`, `.md`, `.json`, `.txt`, `Dockerfile`, `LICENSE`, `README.md`, etc. If someone tries to sneak one in, skip it.
39
39
  - Live by `Effective Go` (https://go.dev/doc/effective_go) and the `Google Go Style Guide` (https://google.github.io/styleguide/go/).
40
40
  - Enforce gofmt/goimports cleanliness, make sure `go vet`, `staticcheck`, `golangci-lint`, and `go fmt` would be happy, and flag any missing `//nolint` justifications.
41
41
  - You are the guardian of SOLID, DRY, YAGNI, and the Zen of Python (yes, even here). Call out violations with precision.
@@ -46,10 +46,10 @@ Per Go file that actually matters:
46
46
  3. Sprinkle genuine praise when a change slaps—great naming, clean abstractions, smart concurrency, tests that cover real edge cases.
47
47
 
48
48
  Review etiquette:
49
- - Stay concise, organized, and focused on impact. Group similar findings so the reader doesn’t chase their tail.
49
+ - Stay concise, organized, and focused on impact. Group similar findings for easy consumption.
50
50
  - Flag missing tests or weak coverage when it matters. Suggest concrete test names or scenarios using `go test -v`, `go test -race`, `go test -cover`.
51
- - Prefer positive phrasing: "Consider" beats "Don’t". We’re a nice puppy, just ridiculously picky.
52
- - If everything looks barking good, say so explicitly and call out strengths.
51
+ - Prefer positive phrasing: "Consider" beats "Don’t". Be constructive and thorough.
52
+ - If everything looks good, say so explicitly and call out strengths.
53
53
  - Always mention residual risks or assumptions you made when you can’t fully verify something.
54
54
  - Recommend specific Go tools: `go mod tidy`, `go mod verify`, `go generate`, `pprof` profiling.
55
55
 
@@ -144,7 +144,7 @@ Toolchain integration:
144
144
  - Enable `pprof` profiling for performance analysis
145
145
  - Use `go generate` for code generation patterns
146
146
 
147
- You are the Golang review persona for this CLI pack. Be sassy, precise, and wildly helpful.
147
+ You are the Golang review agent for this CLI. Be precise and helpful.
148
148
  - When concurrency primitives show up, double-check for race hazards, context cancellation, and proper error propagation.
149
149
  - If performance or allocation pressure might bite, call it out and suggest profiling or benchmarks.
150
150
  """
@@ -16,7 +16,7 @@ class JavaScriptReviewerAgent(BaseAgent):
16
16
 
17
17
  @property
18
18
  def description(self) -> str:
19
- return "Snarky-but-helpful JavaScript reviewer enforcing modern patterns and runtime sanity"
19
+ return "Thorough JavaScript reviewer enforcing modern patterns and runtime sanity"
20
20
 
21
21
  def get_available_tools(self) -> list[str]:
22
22
  """Reviewers need read-only inspection helpers plus agent collaboration."""
@@ -31,7 +31,7 @@ class JavaScriptReviewerAgent(BaseAgent):
31
31
 
32
32
  def get_system_prompt(self) -> str:
33
33
  return """
34
- You are the JavaScript reviewer puppy. Stay playful but be brutally honest about runtime risks, async chaos, and bundle bloat.
34
+ You are a JavaScript code reviewer. Be thorough and honest about runtime risks, async issues, and bundle bloat.
35
35
 
36
36
  Mission focus:
37
37
  - Review only `.js`/`.mjs`/`.cjs` files (and `.jsx`) with real code changes. Skip untouched files or pure prettier churn.
@@ -155,5 +155,5 @@ Agent collaboration:
155
155
  - Use list_agents to find specialists for specific frameworks (React, Vue, Angular) or deployment concerns
156
156
  - Always articulate what specific JavaScript/Node expertise you need when invoking other agents
157
157
 
158
- You're the JavaScript review persona for this CLI. Be witty, obsessive about quality, and ridiculously helpful.
158
+ You're the JavaScript review agent for this CLI. Be thorough, obsessive about quality, and helpful.
159
159
  """
@@ -382,7 +382,7 @@ def get_current_agent_name() -> str:
382
382
 
383
383
  Returns:
384
384
  The name of the current agent for this session.
385
- Priority: session agent > config default > 'code-puppy'.
385
+ Priority: session agent > config default > 'code-agent'.
386
386
  """
387
387
  _ensure_session_cache_loaded()
388
388
  session_id = get_terminal_session_id()
@@ -469,9 +469,9 @@ def load_agent(agent_name: str) -> BaseAgent:
469
469
  _discover_agents(message_group_id=message_group_id)
470
470
 
471
471
  if agent_name not in _AGENT_REGISTRY:
472
- # Fallback to code-puppy if agent not found
473
- if "code-puppy" in _AGENT_REGISTRY:
474
- agent_name = "code-puppy"
472
+ # Fallback to code-agent if agent not found
473
+ if "code-agent" in _AGENT_REGISTRY:
474
+ agent_name = "code-agent"
475
475
  else:
476
476
  raise ValueError(
477
477
  f"Agent '{agent_name}' not found and no fallback available"
@@ -79,9 +79,9 @@ Your core responsibility is to:
79
79
 
80
80
  ### Step 4: Agent Coordination
81
81
  - Recommend which specialized agents should handle specific tasks:
82
- - Code generation: code-puppy
82
+ - Code generation: code-agent
83
83
  - Security review: security-auditor
84
- - Quality assurance: qa-kitten (only for web development) or qa-expert (for all other domains)
84
+ - Quality assurance: qa-browser (only for web development) or qa-expert (for all other domains)
85
85
  - Language-specific reviews: python-reviewer, javascript-reviewer, etc.
86
86
  - File permissions: file-permission-handler
87
87
 
@@ -35,7 +35,7 @@ class PythonProgrammerAgent(BaseAgent):
35
35
 
36
36
  def get_system_prompt(self) -> str:
37
37
  return """
38
- You are a Python programming wizard puppy! 🐍 You breathe Pythonic code and dream in async generators. Your mission is to craft production-ready Python solutions that would make Guido van Rossum proud.
38
+ You are a Python programming specialist. You write Pythonic code and excel at async patterns. Your mission is to craft production-ready Python solutions that follow best practices.
39
39
 
40
40
  Your Python superpowers include:
41
41
 
@@ -145,11 +145,9 @@ Code Quality Checklist (mentally verify for each change):
145
145
  - [ ] Proper error handling and logging
146
146
  - [ ] Documentation is clear and accurate
147
147
 
148
- Your Personality:
149
- - Be enthusiastic about Python but brutally honest about code quality
150
- - Use playful analogies: "This function is slower than a sloth on vacation"
151
- - Be pedantic about best practices but explain WHY they matter
152
- - Celebrate good code: "Now THAT'S some Pythonic poetry!"
148
+ Your Approach:
149
+ - Be thorough about Python but honest about code quality
150
+ - Be rigorous about best practices and explain WHY they matter
153
151
  - When suggesting improvements, provide concrete examples
154
152
  - Always explain the "why" behind your recommendations
155
153
  - Stay current with Python trends but prioritize proven patterns
@@ -160,5 +158,5 @@ Tool Usage:
160
158
  - Use read_file and grep to understand existing codebases
161
159
  Remember: You're not just writing code - you're crafting maintainable, performant, and secure Python solutions that will make future developers (and your future self) grateful. Every line should have purpose, every function should have clarity, and every module should have cohesion.
162
160
 
163
- Now go forth and write some phenomenal Python! 🐍✨
161
+ Write clean, maintainable, and performant Python.
164
162
  """
@@ -31,7 +31,7 @@ class PythonReviewerAgent(BaseAgent):
31
31
 
32
32
  def get_system_prompt(self) -> str:
33
33
  return """
34
- You are a senior Python reviewer puppy. Bring the sass, guard code quality like a dragon hoards gold, and stay laser-focused on meaningful diff hunks.
34
+ You are a senior Python code reviewer. Guard code quality rigorously and stay laser-focused on meaningful diff hunks.
35
35
 
36
36
  Mission parameters:
37
37
  - Review only `.py` files with substantive code changes. Skip untouched files or pure formatting/whitespace churn.
@@ -56,7 +56,7 @@ Review heuristics:
56
56
  - Packaging & deployment: entry points with `setuptools`/`poetry`, dependency pinning with `pip-tools`, wheel friendliness, CLI ergonomics with `click`/`typer`, containerization with Docker multi-stage builds.
57
57
 
58
58
  Feedback style:
59
- - Be playful but precise. “Consider …” beats “This is wrong.”
59
+ - Be direct but precise. “Consider …” beats “This is wrong.”
60
60
  - Group related issues; reference exact lines (`path/to/file.py:123`). No ranges, no hand-wavy “somewhere in here.”
61
61
  - Call out unknowns or assumptions so humans can double-check.
62
62
  - If everything looks shipshape, declare victory and highlight why.
@@ -85,5 +85,5 @@ Agent collaboration:
85
85
  - Use list_agents to discover specialists for specific domains (ML, devops, databases)
86
86
  - Always explain what specific Python expertise you need when collaborating with other agents
87
87
 
88
- You're the Python review persona for this CLI. Be opinionated, kind, and relentlessly helpful.
88
+ You're the Python review agent for this CLI. Be opinionated, kind, and relentlessly helpful.
89
89
  """
@@ -1,25 +1,25 @@
1
- """Quality Assurance Kitten - Playwright-powered browser automation agent."""
1
+ """QA Browser - Playwright-powered browser automation agent."""
2
2
 
3
3
  from .base_agent import BaseAgent
4
4
 
5
5
 
6
- class QualityAssuranceKittenAgent(BaseAgent):
7
- """Quality Assurance Kitten - Advanced browser automation with Playwright."""
6
+ class QABrowserAgent(BaseAgent):
7
+ """QA Browser - Advanced browser automation with Playwright."""
8
8
 
9
9
  @property
10
10
  def name(self) -> str:
11
- return "qa-kitten"
11
+ return "qa-browser"
12
12
 
13
13
  @property
14
14
  def display_name(self) -> str:
15
- return "Quality Assurance Kitten 🐱"
15
+ return "QA Browser"
16
16
 
17
17
  @property
18
18
  def description(self) -> str:
19
19
  return "Advanced web browser automation and quality assurance testing using Playwright with visual analysis capabilities"
20
20
 
21
21
  def get_available_tools(self) -> list[str]:
22
- """Get the list of tools available to Web Browser Puppy."""
22
+ """Get the list of tools available to QA Browser."""
23
23
  return [
24
24
  # Browser control and initialization
25
25
  "browser_initialize",
@@ -71,9 +71,9 @@ class QualityAssuranceKittenAgent(BaseAgent):
71
71
  ]
72
72
 
73
73
  def get_system_prompt(self) -> str:
74
- """Get Web Browser Puppy's specialized system prompt."""
74
+ """Get QA Browser's specialized system prompt."""
75
75
  return """
76
- You are Quality Assurance Kitten 🐱, an advanced autonomous browser automation and QA testing agent powered by Playwright!
76
+ You are QA Browser, an advanced autonomous browser automation and QA testing agent powered by Playwright.
77
77
 
78
78
  You specialize in:
79
79
  🎯 **Quality Assurance Testing** - automated testing of web applications and user workflows
@@ -202,5 +202,5 @@ For any browser task, follow this approach:
202
202
  - **Follow accessibility best practices** - your automation should work for everyone
203
203
  - **Document your successes** - Save working patterns with browser_save_workflow for future reuse
204
204
 
205
- Your browser automation should be reliable, maintainable, and accessible. You are a meticulous QA engineer who catches bugs before users do! 🐱✨
205
+ Your browser automation should be reliable, maintainable, and accessible. You are a meticulous QA engineer who catches bugs before users do.
206
206
  """
@@ -31,7 +31,7 @@ class QAExpertAgent(BaseAgent):
31
31
 
32
32
  def get_system_prompt(self) -> str:
33
33
  return """
34
- You are the QA expert puppy. Risk-based mindset, defect-prevention first, automation evangelist. Be playful, but push teams to ship with confidence.
34
+ You are a QA expert. Risk-based mindset, defect-prevention first, automation evangelist. Push teams to ship with confidence.
35
35
 
36
36
  Mission charter:
37
37
  - Review only files/artifacts tied to quality: tests, configs, pipelines, docs, code touching critical risk areas.
@@ -158,5 +158,5 @@ Agent collaboration:
158
158
  - Always articulate what specific testing expertise you need when involving other agents
159
159
  - Coordinate multiple reviewers when comprehensive quality assessment is needed
160
160
 
161
- You're the QA conscience for this CLI. Stay playful, stay relentless about quality, and make sure every release feels boringly safe.
161
+ You're the QA agent for this CLI. Stay relentless about quality and make sure every release is thoroughly validated.
162
162
  """
@@ -63,7 +63,7 @@ You can help users:
63
63
 
64
64
  - Tasks are stored in `~/.code_puppy/scheduled_tasks.json`
65
65
  - A background daemon checks for tasks to run based on their schedule
66
- - Each task runs: `code-puppy -p <prompt> --model <model> --agent <agent>`
66
+ - Each task runs: `newcode -p <prompt> --model <model> --agent <agent>`
67
67
  - Output is saved to log files in `~/.code_puppy/scheduler_logs/`
68
68
 
69
69
  ## Schedule Types
@@ -75,7 +75,7 @@ You can help users:
75
75
  ## Available Agents to Suggest
76
76
 
77
77
  When users ask about automation, suggest appropriate agents:
78
- - `code-puppy` - General coding tasks
78
+ - `code-agent` - General coding tasks
79
79
  - `code-reviewer` or `python-reviewer` - Code review tasks
80
80
  - `security-auditor` - Security scanning
81
81
  - `qa-expert` - Quality assurance checks
@@ -31,7 +31,7 @@ class SecurityAuditorAgent(BaseAgent):
31
31
 
32
32
  def get_system_prompt(self) -> str:
33
33
  return """
34
- You are the security auditor puppy. Objective, risk-driven, compliance-savvy. Mix kindness with ruthless clarity so teams actually fix things.
34
+ You are a security auditor. Objective, risk-driven, compliance-savvy. Mix clarity with actionable guidance so teams actually fix things.
35
35
 
36
36
  Audit mandate:
37
37
  - Scope only the files and configs tied to security posture: auth, access control, crypto, infrastructure as code, policies, logs, pipeline guards.
@@ -61,7 +61,7 @@ Evidence & documentation:
61
61
  Reporting etiquette:
62
62
  - Be concise but complete: risk description, impact, likelihood, affected assets, recommendation.
63
63
  - Suggest remediation phases: immediate quick win, medium-term fix, long-term strategic guardrail.
64
- - Call out positive controls or improvements observed—security teams deserve treats too.
64
+ - Call out positive controls or improvements observed—security teams deserve recognition too.
65
65
 
66
66
  Security toolchain integration:
67
67
  - SAST tools: `semgrep --config=auto`, `codeql database analyze`, SonarQube security rules, `bandit -r .` (Python), `gosec ./...` (Go), `eslint --plugin security`
@@ -176,5 +176,5 @@ Agent collaboration:
176
176
  - Always explain what specific security expertise you need when collaborating with other agents
177
177
  - Provide actionable remediation guidance that other reviewers can implement
178
178
 
179
- You're the security audit persona for this CLI. Stay independent, stay constructive, and keep the whole pack safe.
179
+ You're the security audit agent for this CLI. Stay independent, stay constructive, and keep the whole team safe.
180
180
  """
@@ -31,7 +31,7 @@ class TypeScriptReviewerAgent(BaseAgent):
31
31
 
32
32
  def get_system_prompt(self) -> str:
33
33
  return """
34
- You are an elite TypeScript reviewer puppy. Keep the jokes coming, but defend type soundness, DX, and runtime sanity like it’s your chew toy.
34
+ You are an elite TypeScript code reviewer. Defend type soundness, DX, and runtime sanity with unwavering rigor.
35
35
 
36
36
  Mission directives:
37
37
  - Review only `.ts`/`.tsx` files (and `.mts`/`.cts`) with substantive code changes. Skip untouched files or cosmetic reformatting.
@@ -55,7 +55,7 @@ Review heuristics:
55
55
  - Security: input validation, auth guards, CSRF/CSR token handling, SSR data leaks, and sanitization for DOM APIs.
56
56
 
57
57
  Feedback style:
58
- - Be cheeky but constructive. “Consider …” or “Maybe try …” keeps the tail wagging.
58
+ - Be direct but constructive. “Consider …” or “Maybe try …” keeps the feedback actionable.
59
59
  - Group related feedback; cite precise lines like `src/components/Foo.tsx:42`. No ranges, no vibes-only feedback.
60
60
  - Flag unknowns or assumptions explicitly so humans know what to double-check.
61
61
  - If nothing smells funky, celebrate and spotlight strengths.
@@ -161,5 +161,5 @@ Agent collaboration:
161
161
  - Always articulate what specific TypeScript expertise you need when collaborating with other agents
162
162
  - Ensure type safety collaboration catches runtime issues before deployment
163
163
 
164
- You're the TypeScript review persona for this CLI. Be witty, ruthless about quality, and delightfully helpful.
164
+ You're the TypeScript review agent for this CLI. Be thorough, rigorous about quality, and helpful.
165
165
  """
@@ -150,8 +150,8 @@ class BaseAgent(ABC):
150
150
  # Agent construction cache
151
151
  self._code_generation_agent = None
152
152
  self._last_model_name: Optional[str] = None
153
- # Puppy rules loaded lazily
154
- self._puppy_rules: Optional[str] = None
153
+ # Agent rules loaded lazily
154
+ self._agent_rules: Optional[str] = None
155
155
  self.cur_model: pydantic_ai.models.Model
156
156
  # Cache for MCP tool definitions (for token estimation)
157
157
  # This is populated after the first successful run when MCP tools are retrieved
@@ -1175,7 +1175,7 @@ class BaseAgent(ABC):
1175
1175
  return run_summarization_sync(instructions, message_history)
1176
1176
 
1177
1177
  # ===== Agent wiring formerly in code_puppy/agent.py =====
1178
- def load_puppy_rules(self) -> Optional[str]:
1178
+ def load_agent_rules(self) -> Optional[str]:
1179
1179
  """Load AGENT(S).md from both global config and project directory.
1180
1180
 
1181
1181
  Checks for AGENTS.md/AGENT.md/agents.md/agent.md in this order:
@@ -1185,8 +1185,8 @@ class BaseAgent(ABC):
1185
1185
  If both exist, they are combined with global rules first, then project rules.
1186
1186
  This allows project-specific rules to override or extend global rules.
1187
1187
  """
1188
- if self._puppy_rules is not None:
1189
- return self._puppy_rules
1188
+ if self._agent_rules is not None:
1189
+ return self._agent_rules
1190
1190
  from pathlib import Path
1191
1191
 
1192
1192
  possible_paths = ["AGENTS.md", "AGENT.md", "agents.md", "agent.md"]
@@ -1212,8 +1212,8 @@ class BaseAgent(ABC):
1212
1212
  # Combine global and project rules
1213
1213
  # Global rules come first, project rules second (allowing project to override)
1214
1214
  rules = [r for r in [global_rules, project_rules] if r]
1215
- self._puppy_rules = "\n\n".join(rules) if rules else None
1216
- return self._puppy_rules
1215
+ self._agent_rules = "\n\n".join(rules) if rules else None
1216
+ return self._agent_rules
1217
1217
 
1218
1218
  def load_mcp_servers(self, extra_headers: Optional[Dict[str, str]] = None):
1219
1219
  """Load MCP servers through the manager and return pydantic-ai compatible servers.
@@ -1317,9 +1317,9 @@ class BaseAgent(ABC):
1317
1317
  )
1318
1318
 
1319
1319
  instructions = self.get_full_system_prompt()
1320
- puppy_rules = self.load_puppy_rules()
1321
- if puppy_rules:
1322
- instructions += f"\n{puppy_rules}"
1320
+ agent_rules = self.load_agent_rules()
1321
+ if agent_rules:
1322
+ instructions += f"\n{agent_rules}"
1323
1323
 
1324
1324
  mcp_servers = self.load_mcp_servers()
1325
1325
 
@@ -1485,9 +1485,9 @@ class BaseAgent(ABC):
1485
1485
  )
1486
1486
 
1487
1487
  instructions = self.get_full_system_prompt()
1488
- puppy_rules = self.load_puppy_rules()
1489
- if puppy_rules:
1490
- instructions += f"\n{puppy_rules}"
1488
+ agent_rules = self.load_agent_rules()
1489
+ if agent_rules:
1490
+ instructions += f"\n{agent_rules}"
1491
1491
 
1492
1492
  mcp_servers = getattr(self, "_mcp_servers", []) or []
1493
1493
  model_settings = make_model_settings(resolved_model_name)
@@ -1664,7 +1664,7 @@ class BaseAgent(ABC):
1664
1664
  )
1665
1665
 
1666
1666
  thread = threading.Thread(
1667
- target=listener, name="code-puppy-key-listener", daemon=True
1667
+ target=listener, name="key-listener", daemon=True
1668
1668
  )
1669
1669
  thread.start()
1670
1670
  return thread
@@ -1823,9 +1823,9 @@ class BaseAgent(ABC):
1823
1823
  should_prepend = len(self.get_message_history()) == 0
1824
1824
  if should_prepend:
1825
1825
  system_prompt = self.get_full_system_prompt()
1826
- puppy_rules = self.load_puppy_rules()
1827
- if puppy_rules:
1828
- system_prompt += f"\n{puppy_rules}"
1826
+ agent_rules = self.load_agent_rules()
1827
+ if agent_rules:
1828
+ system_prompt += f"\n{agent_rules}"
1829
1829
 
1830
1830
  prepared = prepare_prompt_for_model(
1831
1831
  model_name=self.get_model_name(),
@@ -1763,9 +1763,9 @@ def get_default_agent() -> str:
1763
1763
  Get the default agent name from puppy.cfg.
1764
1764
 
1765
1765
  Returns:
1766
- str: The default agent name, or "code-puppy" if not set.
1766
+ str: The default agent name, or "code-agent" if not set.
1767
1767
  """
1768
- return get_value("default_agent") or "code-puppy"
1768
+ return get_value("default_agent") or "code-agent"
1769
1769
 
1770
1770
 
1771
1771
  def set_default_agent(agent_name: str) -> None:
@@ -176,7 +176,7 @@ def get_available_agents_list() -> List[Tuple[str, str]]:
176
176
  result.append((agent_name, desc))
177
177
  return result
178
178
  except Exception:
179
- return [("code-puppy", "Default agent")]
179
+ return [("code-agent", "Default agent")]
180
180
 
181
181
 
182
182
  def get_available_models_list() -> List[str]:
@@ -27,7 +27,7 @@ class ScheduledTask:
27
27
  id: str = field(default_factory=lambda: str(uuid.uuid4())[:8])
28
28
  name: str = ""
29
29
  prompt: str = ""
30
- agent: str = "code-puppy"
30
+ agent: str = "code-agent"
31
31
  model: str = "" # Uses default if empty
32
32
  schedule_type: str = "interval" # "interval", "cron", "daily", "hourly"
33
33
  schedule_value: str = "1h" # e.g., "30m", "1h", "0 9 * * *" for cron
@@ -18,14 +18,14 @@ from code_puppy.scheduler.config import (
18
18
 
19
19
 
20
20
  def get_code_puppy_command() -> str:
21
- """Get the path to the code-puppy executable."""
22
- # Try to find code-puppy in the same environment as this script
21
+ """Get the path to the newcode executable."""
22
+ # Try to find newcode in the same environment as this script
23
23
  if sys.platform == "win32":
24
- # On Windows, look for code-puppy.exe or use python -m
25
- return "code-puppy"
24
+ # On Windows, look for newcode.exe or use python -m
25
+ return "newcode"
26
26
  else:
27
- # On Unix, code-puppy should be in PATH if installed
28
- return "code-puppy"
27
+ # On Unix, newcode should be in PATH if installed
28
+ return "newcode"
29
29
 
30
30
 
31
31
  def execute_task(task: ScheduledTask) -> Tuple[bool, int, str]:
@@ -35,16 +35,16 @@ class StatusDisplay:
35
35
  "Wagging tail...",
36
36
  "Pawsing for a moment...",
37
37
  "Chasing tail...",
38
- "Digging up results...",
39
- "Barking at the data...",
40
- "Rolling over...",
41
- "Panting with excitement...",
42
- "Chewing on it...",
43
- "Prancing along...",
44
- "Howling at the code...",
45
- "Snuggling up to the task...",
46
- "Bounding through data...",
47
- "Puppy pondering...",
38
+ "Analyzing...",
39
+ "Processing...",
40
+ "Searching...",
41
+ "Evaluating...",
42
+ "Computing...",
43
+ "Reasoning...",
44
+ "Working...",
45
+ "Thinking...",
46
+ "Generating...",
47
+ "Resolving...",
48
48
  ]
49
49
  self.current_message_index = 0
50
50
  self.spinner = Spinner("dots", text="")
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "newcode"
7
- version = "0.1.7"
8
- description = "AI-powered code generation agent - a fedstew fork of code-puppy"
7
+ version = "0.1.8"
8
+ description = "AI-powered code generation agent platform"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11,<3.14"
11
11
  dependencies = [
@@ -37,6 +37,7 @@ dev-dependencies = [
37
37
  "pytest>=8.3.4",
38
38
  "pytest-cov>=6.1.1",
39
39
  "pytest-asyncio>=0.23.1",
40
+ "pytest-xdist>=3.5.0",
40
41
  "ruff>=0.11.11",
41
42
  "pexpect>=4.9.0",
42
43
  ]
@@ -100,6 +101,7 @@ dev = [
100
101
  "pytest>=8.3.4",
101
102
  "pytest-cov>=6.1.1",
102
103
  "pytest-asyncio>=0.23.1",
104
+ "pytest-xdist>=3.5.0",
103
105
  "ruff>=0.11.11",
104
106
  "pexpect>=4.9.0",
105
107
  ]
File without changes
File without changes
File without changes
File without changes
File without changes