newcode 0.2.4__tar.gz → 0.2.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 (286) hide show
  1. {newcode-0.2.4 → newcode-0.2.5}/PKG-INFO +1 -1
  2. {newcode-0.2.4 → newcode-0.2.5}/newcode/claude_cache_client.py +15 -61
  3. {newcode-0.2.4 → newcode-0.2.5}/pyproject.toml +1 -1
  4. {newcode-0.2.4 → newcode-0.2.5}/.gitignore +0 -0
  5. {newcode-0.2.4 → newcode-0.2.5}/LICENSE +0 -0
  6. {newcode-0.2.4 → newcode-0.2.5}/README.md +0 -0
  7. {newcode-0.2.4 → newcode-0.2.5}/newcode/__init__.py +0 -0
  8. {newcode-0.2.4 → newcode-0.2.5}/newcode/__main__.py +0 -0
  9. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/__init__.py +0 -0
  10. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_c_reviewer.py +0 -0
  11. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_code_agent.py +0 -0
  12. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_code_reviewer.py +0 -0
  13. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_cpp_reviewer.py +0 -0
  14. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_creator_agent.py +0 -0
  15. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_golang_reviewer.py +0 -0
  16. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_javascript_reviewer.py +0 -0
  17. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_manager.py +0 -0
  18. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_pack_leader.py +0 -0
  19. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_planning.py +0 -0
  20. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_python_programmer.py +0 -0
  21. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_python_reviewer.py +0 -0
  22. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_qa_browser.py +0 -0
  23. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_qa_expert.py +0 -0
  24. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_scheduler.py +0 -0
  25. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_security_auditor.py +0 -0
  26. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_terminal_qa.py +0 -0
  27. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/agent_typescript_reviewer.py +0 -0
  28. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/base_agent.py +0 -0
  29. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/event_stream_handler.py +0 -0
  30. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/json_agent.py +0 -0
  31. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/pack/__init__.py +0 -0
  32. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/pack/bloodhound.py +0 -0
  33. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/pack/husky.py +0 -0
  34. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/pack/retriever.py +0 -0
  35. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/pack/shepherd.py +0 -0
  36. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/pack/terrier.py +0 -0
  37. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/pack/watchdog.py +0 -0
  38. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/prompt_reviewer.py +0 -0
  39. {newcode-0.2.4 → newcode-0.2.5}/newcode/agents/subagent_stream_handler.py +0 -0
  40. {newcode-0.2.4 → newcode-0.2.5}/newcode/api/__init__.py +0 -0
  41. {newcode-0.2.4 → newcode-0.2.5}/newcode/api/app.py +0 -0
  42. {newcode-0.2.4 → newcode-0.2.5}/newcode/api/main.py +0 -0
  43. {newcode-0.2.4 → newcode-0.2.5}/newcode/api/pty_manager.py +0 -0
  44. {newcode-0.2.4 → newcode-0.2.5}/newcode/api/routers/__init__.py +0 -0
  45. {newcode-0.2.4 → newcode-0.2.5}/newcode/api/routers/agents.py +0 -0
  46. {newcode-0.2.4 → newcode-0.2.5}/newcode/api/routers/commands.py +0 -0
  47. {newcode-0.2.4 → newcode-0.2.5}/newcode/api/routers/config.py +0 -0
  48. {newcode-0.2.4 → newcode-0.2.5}/newcode/api/routers/sessions.py +0 -0
  49. {newcode-0.2.4 → newcode-0.2.5}/newcode/api/templates/terminal.html +0 -0
  50. {newcode-0.2.4 → newcode-0.2.5}/newcode/api/websocket.py +0 -0
  51. {newcode-0.2.4 → newcode-0.2.5}/newcode/callbacks.py +0 -0
  52. {newcode-0.2.4 → newcode-0.2.5}/newcode/chatgpt_codex_client.py +0 -0
  53. {newcode-0.2.4 → newcode-0.2.5}/newcode/cli_runner.py +0 -0
  54. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/__init__.py +0 -0
  55. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/add_model_menu.py +0 -0
  56. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/agent_menu.py +0 -0
  57. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/attachments.py +0 -0
  58. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/autosave_menu.py +0 -0
  59. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/clipboard.py +0 -0
  60. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/colors_menu.py +0 -0
  61. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/command_handler.py +0 -0
  62. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/command_registry.py +0 -0
  63. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/config_commands.py +0 -0
  64. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/core_commands.py +0 -0
  65. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/diff_menu.py +0 -0
  66. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/file_path_completion.py +0 -0
  67. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/load_context_completion.py +0 -0
  68. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/__init__.py +0 -0
  69. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/base.py +0 -0
  70. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/catalog_server_installer.py +0 -0
  71. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/custom_server_form.py +0 -0
  72. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/custom_server_installer.py +0 -0
  73. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/edit_command.py +0 -0
  74. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/handler.py +0 -0
  75. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/help_command.py +0 -0
  76. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/install_command.py +0 -0
  77. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/install_menu.py +0 -0
  78. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/list_command.py +0 -0
  79. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/logs_command.py +0 -0
  80. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/remove_command.py +0 -0
  81. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/restart_command.py +0 -0
  82. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/search_command.py +0 -0
  83. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/start_all_command.py +0 -0
  84. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/start_command.py +0 -0
  85. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/status_command.py +0 -0
  86. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/stop_all_command.py +0 -0
  87. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/stop_command.py +0 -0
  88. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/test_command.py +0 -0
  89. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/utils.py +0 -0
  90. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp/wizard_utils.py +0 -0
  91. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/mcp_completion.py +0 -0
  92. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/model_picker_completion.py +0 -0
  93. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/model_settings_menu.py +0 -0
  94. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/motd.py +0 -0
  95. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/onboarding_slides.py +0 -0
  96. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/onboarding_wizard.py +0 -0
  97. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/pin_command_completion.py +0 -0
  98. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/prompt_toolkit_completion.py +0 -0
  99. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/session_commands.py +0 -0
  100. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/skills_completion.py +0 -0
  101. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/uc_menu.py +0 -0
  102. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/utils.py +0 -0
  103. {newcode-0.2.4 → newcode-0.2.5}/newcode/command_line/wiggum_state.py +0 -0
  104. {newcode-0.2.4 → newcode-0.2.5}/newcode/config.py +0 -0
  105. {newcode-0.2.4 → newcode-0.2.5}/newcode/error_logging.py +0 -0
  106. {newcode-0.2.4 → newcode-0.2.5}/newcode/gemini_code_assist.py +0 -0
  107. {newcode-0.2.4 → newcode-0.2.5}/newcode/gemini_model.py +0 -0
  108. {newcode-0.2.4 → newcode-0.2.5}/newcode/hook_engine/README.md +0 -0
  109. {newcode-0.2.4 → newcode-0.2.5}/newcode/hook_engine/__init__.py +0 -0
  110. {newcode-0.2.4 → newcode-0.2.5}/newcode/hook_engine/aliases.py +0 -0
  111. {newcode-0.2.4 → newcode-0.2.5}/newcode/hook_engine/engine.py +0 -0
  112. {newcode-0.2.4 → newcode-0.2.5}/newcode/hook_engine/executor.py +0 -0
  113. {newcode-0.2.4 → newcode-0.2.5}/newcode/hook_engine/matcher.py +0 -0
  114. {newcode-0.2.4 → newcode-0.2.5}/newcode/hook_engine/models.py +0 -0
  115. {newcode-0.2.4 → newcode-0.2.5}/newcode/hook_engine/registry.py +0 -0
  116. {newcode-0.2.4 → newcode-0.2.5}/newcode/hook_engine/validator.py +0 -0
  117. {newcode-0.2.4 → newcode-0.2.5}/newcode/http_utils.py +0 -0
  118. {newcode-0.2.4 → newcode-0.2.5}/newcode/keymap.py +0 -0
  119. {newcode-0.2.4 → newcode-0.2.5}/newcode/main.py +0 -0
  120. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/__init__.py +0 -0
  121. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/async_lifecycle.py +0 -0
  122. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/blocking_startup.py +0 -0
  123. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/captured_stdio_server.py +0 -0
  124. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/circuit_breaker.py +0 -0
  125. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/config_wizard.py +0 -0
  126. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/dashboard.py +0 -0
  127. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/error_isolation.py +0 -0
  128. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/examples/retry_example.py +0 -0
  129. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/health_monitor.py +0 -0
  130. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/managed_server.py +0 -0
  131. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/manager.py +0 -0
  132. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/mcp_logs.py +0 -0
  133. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/registry.py +0 -0
  134. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/retry_manager.py +0 -0
  135. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/server_registry_catalog.py +0 -0
  136. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/status_tracker.py +0 -0
  137. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_/system_tools.py +0 -0
  138. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_prompts/__init__.py +0 -0
  139. {newcode-0.2.4 → newcode-0.2.5}/newcode/mcp_prompts/hook_creator.py +0 -0
  140. {newcode-0.2.4 → newcode-0.2.5}/newcode/messaging/__init__.py +0 -0
  141. {newcode-0.2.4 → newcode-0.2.5}/newcode/messaging/bus.py +0 -0
  142. {newcode-0.2.4 → newcode-0.2.5}/newcode/messaging/commands.py +0 -0
  143. {newcode-0.2.4 → newcode-0.2.5}/newcode/messaging/markdown_patches.py +0 -0
  144. {newcode-0.2.4 → newcode-0.2.5}/newcode/messaging/message_queue.py +0 -0
  145. {newcode-0.2.4 → newcode-0.2.5}/newcode/messaging/messages.py +0 -0
  146. {newcode-0.2.4 → newcode-0.2.5}/newcode/messaging/queue_console.py +0 -0
  147. {newcode-0.2.4 → newcode-0.2.5}/newcode/messaging/renderers.py +0 -0
  148. {newcode-0.2.4 → newcode-0.2.5}/newcode/messaging/rich_renderer.py +0 -0
  149. {newcode-0.2.4 → newcode-0.2.5}/newcode/messaging/spinner/__init__.py +0 -0
  150. {newcode-0.2.4 → newcode-0.2.5}/newcode/messaging/spinner/console_spinner.py +0 -0
  151. {newcode-0.2.4 → newcode-0.2.5}/newcode/messaging/spinner/spinner_base.py +0 -0
  152. {newcode-0.2.4 → newcode-0.2.5}/newcode/messaging/subagent_console.py +0 -0
  153. {newcode-0.2.4 → newcode-0.2.5}/newcode/model_factory.py +0 -0
  154. {newcode-0.2.4 → newcode-0.2.5}/newcode/model_switching.py +0 -0
  155. {newcode-0.2.4 → newcode-0.2.5}/newcode/model_utils.py +0 -0
  156. {newcode-0.2.4 → newcode-0.2.5}/newcode/models.json +0 -0
  157. {newcode-0.2.4 → newcode-0.2.5}/newcode/models_dev_api.json +0 -0
  158. {newcode-0.2.4 → newcode-0.2.5}/newcode/models_dev_parser.py +0 -0
  159. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/__init__.py +0 -0
  160. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/agent_skills/__init__.py +0 -0
  161. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/agent_skills/config.py +0 -0
  162. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/agent_skills/discovery.py +0 -0
  163. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/agent_skills/downloader.py +0 -0
  164. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/agent_skills/installer.py +0 -0
  165. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/agent_skills/metadata.py +0 -0
  166. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/agent_skills/prompt_builder.py +0 -0
  167. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/agent_skills/register_callbacks.py +0 -0
  168. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/agent_skills/remote_catalog.py +0 -0
  169. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/agent_skills/skill_catalog.py +0 -0
  170. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/agent_skills/skills_install_menu.py +0 -0
  171. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/agent_skills/skills_menu.py +0 -0
  172. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/antigravity_oauth/__init__.py +0 -0
  173. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/antigravity_oauth/accounts.py +0 -0
  174. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/antigravity_oauth/antigravity_model.py +0 -0
  175. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/antigravity_oauth/config.py +0 -0
  176. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/antigravity_oauth/constants.py +0 -0
  177. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/antigravity_oauth/oauth.py +0 -0
  178. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/antigravity_oauth/register_callbacks.py +0 -0
  179. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/antigravity_oauth/storage.py +0 -0
  180. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/antigravity_oauth/test_plugin.py +0 -0
  181. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/antigravity_oauth/token.py +0 -0
  182. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/antigravity_oauth/transport.py +0 -0
  183. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/antigravity_oauth/utils.py +0 -0
  184. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/chatgpt_oauth/__init__.py +0 -0
  185. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/chatgpt_oauth/config.py +0 -0
  186. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/chatgpt_oauth/oauth_flow.py +0 -0
  187. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/chatgpt_oauth/register_callbacks.py +0 -0
  188. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/chatgpt_oauth/test_plugin.py +0 -0
  189. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/chatgpt_oauth/utils.py +0 -0
  190. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/claude_code_hooks/__init__.py +0 -0
  191. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/claude_code_hooks/config.py +0 -0
  192. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/claude_code_hooks/register_callbacks.py +0 -0
  193. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/claude_code_oauth/README.md +0 -0
  194. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/claude_code_oauth/SETUP.md +0 -0
  195. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/claude_code_oauth/__init__.py +0 -0
  196. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/claude_code_oauth/config.py +0 -0
  197. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/claude_code_oauth/register_callbacks.py +0 -0
  198. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/claude_code_oauth/test_plugin.py +0 -0
  199. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/claude_code_oauth/token_refresh_heartbeat.py +0 -0
  200. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/claude_code_oauth/utils.py +0 -0
  201. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/customizable_commands/__init__.py +0 -0
  202. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/customizable_commands/register_callbacks.py +0 -0
  203. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/example_custom_command/README.md +0 -0
  204. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/example_custom_command/register_callbacks.py +0 -0
  205. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/file_permission_handler/__init__.py +0 -0
  206. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/file_permission_handler/register_callbacks.py +0 -0
  207. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/frontend_emitter/__init__.py +0 -0
  208. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/frontend_emitter/emitter.py +0 -0
  209. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/frontend_emitter/register_callbacks.py +0 -0
  210. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/hook_creator/__init__.py +0 -0
  211. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/hook_creator/register_callbacks.py +0 -0
  212. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/hook_manager/__init__.py +0 -0
  213. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/hook_manager/config.py +0 -0
  214. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/hook_manager/hooks_menu.py +0 -0
  215. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/hook_manager/register_callbacks.py +0 -0
  216. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/oauth_puppy_html.py +0 -0
  217. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/scheduler/__init__.py +0 -0
  218. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/scheduler/register_callbacks.py +0 -0
  219. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/scheduler/scheduler_menu.py +0 -0
  220. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/scheduler/scheduler_wizard.py +0 -0
  221. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/shell_safety/__init__.py +0 -0
  222. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/shell_safety/agent_shell_safety.py +0 -0
  223. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/shell_safety/command_cache.py +0 -0
  224. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/shell_safety/register_callbacks.py +0 -0
  225. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/synthetic_status/__init__.py +0 -0
  226. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/synthetic_status/register_callbacks.py +0 -0
  227. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/synthetic_status/status_api.py +0 -0
  228. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/universal_constructor/__init__.py +0 -0
  229. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/universal_constructor/models.py +0 -0
  230. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/universal_constructor/register_callbacks.py +0 -0
  231. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/universal_constructor/registry.py +0 -0
  232. {newcode-0.2.4 → newcode-0.2.5}/newcode/plugins/universal_constructor/sandbox.py +0 -0
  233. {newcode-0.2.4 → newcode-0.2.5}/newcode/prompts/antigravity_system_prompt.md +0 -0
  234. {newcode-0.2.4 → newcode-0.2.5}/newcode/pydantic_patches.py +0 -0
  235. {newcode-0.2.4 → newcode-0.2.5}/newcode/reopenable_async_client.py +0 -0
  236. {newcode-0.2.4 → newcode-0.2.5}/newcode/round_robin_model.py +0 -0
  237. {newcode-0.2.4 → newcode-0.2.5}/newcode/scheduler/__init__.py +0 -0
  238. {newcode-0.2.4 → newcode-0.2.5}/newcode/scheduler/__main__.py +0 -0
  239. {newcode-0.2.4 → newcode-0.2.5}/newcode/scheduler/cli.py +0 -0
  240. {newcode-0.2.4 → newcode-0.2.5}/newcode/scheduler/config.py +0 -0
  241. {newcode-0.2.4 → newcode-0.2.5}/newcode/scheduler/daemon.py +0 -0
  242. {newcode-0.2.4 → newcode-0.2.5}/newcode/scheduler/executor.py +0 -0
  243. {newcode-0.2.4 → newcode-0.2.5}/newcode/scheduler/platform.py +0 -0
  244. {newcode-0.2.4 → newcode-0.2.5}/newcode/scheduler/platform_unix.py +0 -0
  245. {newcode-0.2.4 → newcode-0.2.5}/newcode/scheduler/platform_win.py +0 -0
  246. {newcode-0.2.4 → newcode-0.2.5}/newcode/session_storage.py +0 -0
  247. {newcode-0.2.4 → newcode-0.2.5}/newcode/status_display.py +0 -0
  248. {newcode-0.2.4 → newcode-0.2.5}/newcode/summarization_agent.py +0 -0
  249. {newcode-0.2.4 → newcode-0.2.5}/newcode/terminal_utils.py +0 -0
  250. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/__init__.py +0 -0
  251. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/agent_tools.py +0 -0
  252. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/ask_user_question/__init__.py +0 -0
  253. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/ask_user_question/constants.py +0 -0
  254. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/ask_user_question/demo_tui.py +0 -0
  255. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/ask_user_question/handler.py +0 -0
  256. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/ask_user_question/models.py +0 -0
  257. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/ask_user_question/registration.py +0 -0
  258. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/ask_user_question/renderers.py +0 -0
  259. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/ask_user_question/terminal_ui.py +0 -0
  260. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/ask_user_question/theme.py +0 -0
  261. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/ask_user_question/tui_loop.py +0 -0
  262. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/browser/__init__.py +0 -0
  263. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/browser/browser_control.py +0 -0
  264. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/browser/browser_interactions.py +0 -0
  265. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/browser/browser_locators.py +0 -0
  266. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/browser/browser_manager.py +0 -0
  267. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/browser/browser_navigation.py +0 -0
  268. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/browser/browser_screenshot.py +0 -0
  269. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/browser/browser_scripts.py +0 -0
  270. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/browser/browser_workflows.py +0 -0
  271. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/browser/chromium_terminal_manager.py +0 -0
  272. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/browser/terminal_command_tools.py +0 -0
  273. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/browser/terminal_screenshot_tools.py +0 -0
  274. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/browser/terminal_tools.py +0 -0
  275. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/command_runner.py +0 -0
  276. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/common.py +0 -0
  277. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/display.py +0 -0
  278. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/file_modifications.py +0 -0
  279. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/file_operations.py +0 -0
  280. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/scheduler_tools.py +0 -0
  281. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/skills_tools.py +0 -0
  282. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/subagent_context.py +0 -0
  283. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/tools_content.py +0 -0
  284. {newcode-0.2.4 → newcode-0.2.5}/newcode/tools/universal_constructor.py +0 -0
  285. {newcode-0.2.4 → newcode-0.2.5}/newcode/uvx_detection.py +0 -0
  286. {newcode-0.2.4 → newcode-0.2.5}/newcode/version_checker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: newcode
3
- Version: 0.2.4
3
+ Version: 0.2.5
4
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
@@ -371,12 +371,10 @@ class ClaudeCacheAsyncClient(httpx.AsyncClient):
371
371
  is_auth_error = response.status_code in (401, 403)
372
372
 
373
373
  if response.status_code == 400:
374
- is_auth_error = self._is_cloudflare_html_error(
375
- response
376
- ) or self._is_token_expired_error(response)
374
+ is_auth_error = self._is_cloudflare_html_error(response)
377
375
  if is_auth_error:
378
376
  logger.info(
379
- "Detected 400 auth/token error, attempting token refresh"
377
+ "Detected Cloudflare 400 error (expired token), attempting token refresh"
380
378
  )
381
379
 
382
380
  if is_auth_error:
@@ -537,79 +535,35 @@ class ClaudeCacheAsyncClient(httpx.AsyncClient):
537
535
  """Check if this is a Cloudflare HTML error response.
538
536
 
539
537
  Cloudflare often returns HTML error pages with status 400 when
540
- there are authentication issues.
538
+ there are authentication issues. The response looks like:
539
+ <html>
540
+ <head><title>400 Bad Request</title></head>
541
+ <body>
542
+ <center><h1>400 Bad Request</h1></center>
543
+ <hr><center>cloudflare</center>
544
+ </body>
545
+ </html>
541
546
  """
542
- # Check content type
543
- content_type = response.headers.get("content-type", "")
544
- if "text/html" not in content_type.lower():
545
- return False
546
-
547
- # Check if body contains Cloudflare markers
548
547
  try:
549
- # Read response body if not already consumed
548
+ body = None
549
+ # Try reading the body from _content first (already consumed)
550
550
  if hasattr(response, "_content") and response._content:
551
551
  body = response._content.decode("utf-8", errors="ignore")
552
552
  else:
553
- # Try to read the text (this might be already consumed)
554
553
  try:
555
554
  body = response.text
556
555
  except Exception:
557
556
  return False
558
557
 
559
- # Look for Cloudflare and 400 Bad Request markers
558
+ if not body:
559
+ return False
560
+
560
561
  body_lower = body.lower()
561
562
  return "cloudflare" in body_lower and "400 bad request" in body_lower
562
563
  except Exception as exc:
563
564
  logger.debug("Error checking for Cloudflare error: %s", exc)
564
565
  return False
565
566
 
566
- @staticmethod
567
- def _is_token_expired_error(response: httpx.Response) -> bool:
568
- """Check if a 400 response indicates an expired or invalid OAuth token.
569
-
570
- The Anthropic API returns JSON 400 errors when the token is expired.
571
- Also checks stored token expiry as a heuristic.
572
- """
573
- try:
574
- # Check if the JSON body mentions auth/token issues
575
- body = None
576
- if hasattr(response, "_content") and response._content:
577
- body = response._content.decode("utf-8", errors="ignore")
578
- else:
579
- try:
580
- body = response.text
581
- except Exception:
582
- pass
583
-
584
- if body:
585
- body_lower = body.lower()
586
- auth_markers = (
587
- "expired",
588
- "invalid_token",
589
- "invalid_grant",
590
- "token",
591
- "unauthorized",
592
- "authentication",
593
- )
594
- if any(marker in body_lower for marker in auth_markers):
595
- return True
596
-
597
- # Fallback: check if our stored token is actually expired
598
- from newcode.plugins.claude_code_oauth.utils import (
599
- is_token_expired,
600
- load_stored_tokens,
601
- )
602
-
603
- tokens = load_stored_tokens()
604
- if tokens and is_token_expired(tokens):
605
- logger.info("Stored token is expired, treating 400 as auth error")
606
- return True
607
-
608
- except Exception as exc:
609
- logger.debug("Error checking for token expired error: %s", exc)
610
-
611
- return False
612
-
613
567
  def _refresh_claude_oauth_token(self) -> str | None:
614
568
  try:
615
569
  from newcode.plugins.claude_code_oauth.utils import refresh_access_token
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "newcode"
7
- version = "0.2.4"
7
+ version = "0.2.5"
8
8
  description = "AI-powered code generation agent platform"
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes