deepagents-code 0.1.21__tar.gz → 0.1.23__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 (296) hide show
  1. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/.gitignore +3 -0
  2. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/AGENTS.md +1 -1
  3. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/CHANGELOG.md +35 -0
  4. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/COMMANDS.md +1 -1
  5. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/DEVELOPMENT.md +13 -3
  6. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/Makefile +25 -1
  7. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/PKG-INFO +2 -2
  8. deepagents_code-0.1.23/deepagents_code/_build_info.py +3 -0
  9. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/_version.py +1 -1
  10. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/agent.py +26 -8
  11. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/app.py +471 -74
  12. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/auth_commands.py +52 -7
  13. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/auth_display.py +0 -2
  14. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/auth_store.py +65 -2
  15. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/command_registry.py +4 -2
  16. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/config.py +176 -47
  17. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/doctor.py +36 -2
  18. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/main.py +63 -6
  19. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/model_config.py +34 -8
  20. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/ui.py +4 -0
  21. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/update_check.py +660 -102
  22. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/auth.py +213 -68
  23. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/chat_input.py +79 -1
  24. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/launch_init.py +175 -56
  25. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/model_selector.py +106 -42
  26. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/notification_center.py +0 -1
  27. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/thread_selector.py +46 -1
  28. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/update_progress.py +44 -6
  29. deepagents_code-0.1.23/hatch_build.py +67 -0
  30. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/pyproject.toml +8 -2
  31. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/scripts/install.sh +75 -14
  32. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/conftest.py +18 -0
  33. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_agent.py +39 -0
  34. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_app.py +1221 -32
  35. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_auth_commands.py +82 -5
  36. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_auth_display.py +1 -1
  37. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_auth_store.py +61 -0
  38. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_auth_widgets.py +540 -12
  39. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_chat_input.py +112 -0
  40. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_config.py +460 -52
  41. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_doctor.py +58 -0
  42. deepagents_code-0.1.23/tests/unit_tests/test_hatch_build.py +159 -0
  43. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_install_command.py +133 -2
  44. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_install_confirm.py +4 -4
  45. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_install_script.py +310 -0
  46. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_launch_init.py +237 -13
  47. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_main.py +105 -0
  48. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_main_args.py +82 -8
  49. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_managed_tools.py +8 -1
  50. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_model_config.py +43 -0
  51. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_model_selector.py +232 -19
  52. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_non_interactive.py +12 -1
  53. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_notification_center.py +4 -0
  54. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_openai_codex_integration.py +25 -2
  55. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_startup_fast_paths.py +5 -2
  56. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_thread_selector.py +14 -0
  57. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_update_check.py +1395 -57
  58. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_update_progress.py +104 -0
  59. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_version.py +72 -0
  60. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_welcome.py +3 -3
  61. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/uv.lock +27 -1
  62. deepagents_code-0.1.21/deepagents_code/filesystem_empty_result.py +0 -99
  63. deepagents_code-0.1.21/tests/unit_tests/test_filesystem_empty_result.py +0 -160
  64. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/ARCHITECTURE.md +0 -0
  65. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/README.md +0 -0
  66. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/THREAT_MODEL.md +0 -0
  67. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/__init__.py +0 -0
  68. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/__main__.py +0 -0
  69. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/_ask_user_types.py +0 -0
  70. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/_cli_context.py +0 -0
  71. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/_constants.py +0 -0
  72. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/_debug.py +0 -0
  73. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/_env_vars.py +0 -0
  74. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/_git.py +0 -0
  75. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/_paths.py +0 -0
  76. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/_server_config.py +0 -0
  77. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/_session_stats.py +0 -0
  78. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/_startup_error.py +0 -0
  79. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/_testing_models.py +0 -0
  80. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/_textual_patches.py +0 -0
  81. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/app.tcss +0 -0
  82. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/ask_user.py +0 -0
  83. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/built_in_skills/__init__.py +0 -0
  84. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
  85. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
  86. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  87. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  88. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/clipboard.py +0 -0
  89. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/config_commands.py +0 -0
  90. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/config_manifest.py +0 -0
  91. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/configurable_model.py +0 -0
  92. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/default_agent_prompt.md +0 -0
  93. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/editor.py +0 -0
  94. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/event_bus.py +0 -0
  95. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/extras_info.py +0 -0
  96. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/file_ops.py +0 -0
  97. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/formatting.py +0 -0
  98. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/hooks.py +0 -0
  99. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/input.py +0 -0
  100. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/integrations/__init__.py +0 -0
  101. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/integrations/openai_codex.py +0 -0
  102. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/integrations/sandbox_config.py +0 -0
  103. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/integrations/sandbox_factory.py +0 -0
  104. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/integrations/sandbox_provider.py +0 -0
  105. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/integrations/sandbox_registry.py +0 -0
  106. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/iterm_cursor_guide.py +0 -0
  107. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/local_context.py +0 -0
  108. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/managed_tools.py +0 -0
  109. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/mcp_auth.py +0 -0
  110. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/mcp_commands.py +0 -0
  111. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/mcp_disabled.py +0 -0
  112. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/mcp_login_service.py +0 -0
  113. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/mcp_oauth_ui.py +0 -0
  114. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/mcp_providers/__init__.py +0 -0
  115. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/mcp_providers/_registry.py +0 -0
  116. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/mcp_providers/base.py +0 -0
  117. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/mcp_providers/github.py +0 -0
  118. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/mcp_providers/slack.py +0 -0
  119. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/mcp_tools.py +0 -0
  120. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/mcp_trust.py +0 -0
  121. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/media_utils.py +0 -0
  122. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/memory_guard.py +0 -0
  123. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/non_interactive.py +0 -0
  124. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/notifications.py +0 -0
  125. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/offload.py +0 -0
  126. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/onboarding.py +0 -0
  127. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/output.py +0 -0
  128. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/project_utils.py +0 -0
  129. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/py.typed +0 -0
  130. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/remote_client.py +0 -0
  131. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/resume_state.py +0 -0
  132. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/server.py +0 -0
  133. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/server_graph.py +0 -0
  134. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/server_manager.py +0 -0
  135. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/sessions.py +0 -0
  136. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/skills/__init__.py +0 -0
  137. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/skills/commands.py +0 -0
  138. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/skills/invocation.py +0 -0
  139. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/skills/load.py +0 -0
  140. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/state_migration.py +0 -0
  141. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/subagents.py +0 -0
  142. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/system_prompt.md +0 -0
  143. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/terminal_capabilities.py +0 -0
  144. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/terminal_escape.py +0 -0
  145. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/textual_adapter.py +0 -0
  146. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/theme.py +0 -0
  147. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/tool_display.py +0 -0
  148. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/tools.py +0 -0
  149. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/unicode_security.py +0 -0
  150. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/__init__.py +0 -0
  151. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/_js_eval_display.py +0 -0
  152. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/_links.py +0 -0
  153. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/agent_selector.py +0 -0
  154. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/approval.py +0 -0
  155. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/ask_user.py +0 -0
  156. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/autocomplete.py +0 -0
  157. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/codex_auth.py +0 -0
  158. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/cwd_switch.py +0 -0
  159. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/diff.py +0 -0
  160. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/history.py +0 -0
  161. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/install_confirm.py +0 -0
  162. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/loading.py +0 -0
  163. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/mcp_login.py +0 -0
  164. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/mcp_reconnect.py +0 -0
  165. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/mcp_viewer.py +0 -0
  166. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/message_store.py +0 -0
  167. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/messages.py +0 -0
  168. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/notification_detail.py +0 -0
  169. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/notification_settings.py +0 -0
  170. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/restart_prompt.py +0 -0
  171. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/status.py +0 -0
  172. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/theme_selector.py +0 -0
  173. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/tool_renderers.py +0 -0
  174. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/tool_widgets.py +0 -0
  175. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/update_available.py +0 -0
  176. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/update_confirm.py +0 -0
  177. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/deepagents_code/widgets/welcome.py +0 -0
  178. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/examples/skills/arxiv-search/SKILL.md +0 -0
  179. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  180. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/examples/skills/langgraph-docs/SKILL.md +0 -0
  181. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/examples/skills/skill-creator/SKILL.md +0 -0
  182. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  183. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  184. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/examples/skills/web-research/SKILL.md +0 -0
  185. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/images/tui.png +0 -0
  186. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/scripts/check_imports.py +0 -0
  187. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/scripts/debug_server.sh +0 -0
  188. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/scripts/generate_commands_catalog.py +0 -0
  189. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/README.md +0 -0
  190. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/integration_tests/__init__.py +0 -0
  191. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/integration_tests/benchmarks/__init__.py +0 -0
  192. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
  193. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
  194. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/integration_tests/conftest.py +0 -0
  195. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/integration_tests/test_acp_mode.py +0 -0
  196. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/integration_tests/test_compact_resume.py +0 -0
  197. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/integration_tests/test_sandbox_factory.py +0 -0
  198. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/integration_tests/test_sandbox_operations.py +0 -0
  199. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/__init__.py +0 -0
  200. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/skills/__init__.py +0 -0
  201. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/skills/test_commands.py +0 -0
  202. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/skills/test_load.py +0 -0
  203. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/skills/test_skills_json.py +0 -0
  204. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_agent_friendly.py +0 -0
  205. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_agent_selector.py +0 -0
  206. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_approval.py +0 -0
  207. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_args.py +0 -0
  208. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_ask_user.py +0 -0
  209. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_ask_user_middleware.py +0 -0
  210. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_autocomplete.py +0 -0
  211. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_charset.py +0 -0
  212. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_clipboard.py +0 -0
  213. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_command_registry.py +0 -0
  214. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_compact_tool.py +0 -0
  215. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_config_manifest.py +0 -0
  216. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_configurable_model.py +0 -0
  217. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_cursor_blink.py +0 -0
  218. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_cwd_switch.py +0 -0
  219. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_debug.py +0 -0
  220. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_editor.py +0 -0
  221. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_end_to_end.py +0 -0
  222. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_env_vars.py +0 -0
  223. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_event_bus.py +0 -0
  224. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_exception_handling.py +0 -0
  225. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_extras_info.py +0 -0
  226. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_file_ops.py +0 -0
  227. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_formatting.py +0 -0
  228. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_git.py +0 -0
  229. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_history.py +0 -0
  230. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_hooks.py +0 -0
  231. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_imports.py +0 -0
  232. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_input_parsing.py +0 -0
  233. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
  234. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_links.py +0 -0
  235. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_loading.py +0 -0
  236. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_local_context.py +0 -0
  237. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_main_acp_mode.py +0 -0
  238. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_mcp_auth.py +0 -0
  239. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_mcp_commands.py +0 -0
  240. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_mcp_disabled.py +0 -0
  241. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_mcp_login_modal.py +0 -0
  242. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_mcp_login_service.py +0 -0
  243. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
  244. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_mcp_reconnect.py +0 -0
  245. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_mcp_tools.py +0 -0
  246. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_mcp_trust.py +0 -0
  247. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_mcp_viewer.py +0 -0
  248. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_media_utils.py +0 -0
  249. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_memory_guard.py +0 -0
  250. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_message_store.py +0 -0
  251. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_messages.py +0 -0
  252. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_model_switch.py +0 -0
  253. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_notification_detail.py +0 -0
  254. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_notifications.py +0 -0
  255. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_offload.py +0 -0
  256. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_offload_dict_messages.py +0 -0
  257. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_onboarding.py +0 -0
  258. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_output.py +0 -0
  259. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_paths.py +0 -0
  260. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_reload.py +0 -0
  261. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_remote_client.py +0 -0
  262. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_restart_prompt.py +0 -0
  263. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_resume_state.py +0 -0
  264. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_sandbox_config.py +0 -0
  265. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_sandbox_factory.py +0 -0
  266. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_sandbox_provider.py +0 -0
  267. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_sandbox_registry.py +0 -0
  268. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_server.py +0 -0
  269. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_server_config.py +0 -0
  270. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_server_graph.py +0 -0
  271. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_server_helpers.py +0 -0
  272. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_server_manager.py +0 -0
  273. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_session_stats.py +0 -0
  274. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_sessions.py +0 -0
  275. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_shell_allow_list.py +0 -0
  276. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_skill_invocation.py +0 -0
  277. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_state_migration.py +0 -0
  278. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_status.py +0 -0
  279. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_subagents.py +0 -0
  280. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_terminal_capabilities.py +0 -0
  281. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_terminal_escape.py +0 -0
  282. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
  283. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_textual_adapter.py +0 -0
  284. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_textual_patches.py +0 -0
  285. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_theme.py +0 -0
  286. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_tool_display.py +0 -0
  287. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_tracing_replicas.py +0 -0
  288. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_ui.py +0 -0
  289. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_unicode_security.py +0 -0
  290. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_update_available.py +0 -0
  291. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/test_update_confirm.py +0 -0
  292. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/tools/__init__.py +0 -0
  293. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/tools/test_current_thread.py +0 -0
  294. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/tools/test_fetch_url.py +0 -0
  295. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/widgets/__init__.py +0 -0
  296. {deepagents_code-0.1.21 → deepagents_code-0.1.23}/tests/unit_tests/widgets/test_diff.py +0 -0
@@ -251,3 +251,6 @@ CLAUDE.md
251
251
  libs/cli/frontend/node_modules/
252
252
  libs/cli/frontend/dist/
253
253
  node_modules/
254
+
255
+ # Generated at build time by libs/code/hatch_build.py (stamps the release commit)
256
+ libs/code/deepagents_code/_build_info.py
@@ -69,7 +69,7 @@ Casts are acceptable when the type violation is the point of the test (for examp
69
69
 
70
70
  ## SDK dependency pin
71
71
 
72
- `deepagents-code` pins an exact `deepagents==X.Y.Z` version in `pyproject.toml`. When developing features that depend on new SDK functionality, bump this pin as part of the same PR. A CI check verifies the pin matches the current SDK version at release time (unless bypassed with `dangerous-skip-sdk-pin-check`).
72
+ `deepagents-code` pins an exact `deepagents==X.Y.Z` version in `pyproject.toml`. When developing features that depend on new SDK functionality, bump this pin as part of the same PR. A CI check verifies the pin is not older than the current SDK version at release time (unless bypassed with `dangerous-skip-sdk-pin-check`); pins ahead of the workspace SDK are allowed for intentional prerelease coordination.
73
73
 
74
74
  For a persistent editable `dcode-dev` install that stays separate from a released install, see [Local dev installs](./DEVELOPMENT.md#local-dev-installs) in the development guide.
75
75
 
@@ -2,6 +2,41 @@
2
2
 
3
3
  # Deep Agents Code Changelog
4
4
 
5
+ ## [0.1.23](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.22...deepagents-code==0.1.23) (2026-06-25)
6
+
7
+ ### Features
8
+
9
+ * Collect Tavily key during onboarding ([#4233](https://github.com/langchain-ai/deepagents/issues/4233)) ([e321cba](https://github.com/langchain-ai/deepagents/commit/e321cba5701313e974f979069186680f1a39587c))
10
+ * Surface `/auth` in `/trace not-configured` hint ([#4206](https://github.com/langchain-ai/deepagents/issues/4206)) ([392e410](https://github.com/langchain-ai/deepagents/commit/392e410e48639a56fda5e35b6f7f85a5215cce9c))
11
+ * Add Opus 4.8 to recommended models ([#4204](https://github.com/langchain-ai/deepagents/issues/4204)) ([8faf2b0](https://github.com/langchain-ai/deepagents/commit/8faf2b025f8429481a41a3e65544d26614e53589))
12
+
13
+ ### Bug Fixes
14
+
15
+ * `--reinstall` on `/install` so upgrades rebuild a clean env ([#4196](https://github.com/langchain-ai/deepagents/issues/4196)) ([5e152ac](https://github.com/langchain-ai/deepagents/commit/5e152ac0256d64376f96b293f8844bc8acc993ec))
16
+ * Suppress auto-update migration notice on fresh installs ([#4224](https://github.com/langchain-ai/deepagents/issues/4224)) ([eb8ff80](https://github.com/langchain-ai/deepagents/commit/eb8ff809a1b3130a261083c66a193e532095c6db))
17
+ * Bake release commit into `dcode doctor` ([#4225](https://github.com/langchain-ai/deepagents/issues/4225)) ([6dc0246](https://github.com/langchain-ai/deepagents/commit/6dc0246f5c6e9170e05191e1c82fad6975ac945c))
18
+ * Drop redundant version from "already up to date" message ([#4223](https://github.com/langchain-ai/deepagents/issues/4223)) ([5d080df](https://github.com/langchain-ai/deepagents/commit/5d080df2776d380214bf20ae31266b9628e4e5b0))
19
+ * Note subscription plans unusable for Anthropic in `/auth` ([#4207](https://github.com/langchain-ai/deepagents/issues/4207)) ([28cd19d](https://github.com/langchain-ai/deepagents/commit/28cd19db08bacf981ab2c91195638e66072816fe))
20
+
21
+ ## [0.1.22](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.21...deepagents-code==0.1.22) (2026-06-24)
22
+
23
+ ### Features
24
+
25
+ * Add LangSmith tracing config to `/auth` ([#4193](https://github.com/langchain-ai/deepagents/issues/4193)) ([8e62957](https://github.com/langchain-ai/deepagents/commit/8e6295791093c2ddfec7e6ac57f0df7f12048447))
26
+ * Auto-retry credentials-blocked startup after `/auth` ([#4176](https://github.com/langchain-ai/deepagents/issues/4176)) ([d10ba3d](https://github.com/langchain-ai/deepagents/commit/d10ba3dc162e47cc71df56b8e3d0000b6e0ed847))
27
+ * Improve onboarding Installed Integrations screen ([#4195](https://github.com/langchain-ai/deepagents/issues/4195)) ([0827bf1](https://github.com/langchain-ai/deepagents/commit/0827bf1b635b825121740ac8946dd6d98c815c7d))
28
+
29
+ ### Bug Fixes
30
+
31
+ * Exclude managed bin dir from agent picker ([#4190](https://github.com/langchain-ai/deepagents/issues/4190)) ([d869d1e](https://github.com/langchain-ai/deepagents/commit/d869d1e1fa8558510fb48e71f78fb74c69ca4840))
32
+ * Warn on `/trace` when thread has no messages ([#4162](https://github.com/langchain-ai/deepagents/issues/4162)) ([c338fc9](https://github.com/langchain-ai/deepagents/commit/c338fc914fcd383beb4b97c13f53dfb2684f8c90))
33
+ * Hide "Recent" section during onboarding model selection ([#4198](https://github.com/langchain-ai/deepagents/issues/4198)) ([af882e4](https://github.com/langchain-ai/deepagents/commit/af882e4f6c859878e350d8a37bb75b7bc01bb453))
34
+ * Keep auth modal interactive after install-on-select ([#4187](https://github.com/langchain-ai/deepagents/issues/4187)) ([afbc56a](https://github.com/langchain-ai/deepagents/commit/afbc56a1d9dbe8a89015f4c2f90bb87547d5c1d4))
35
+ * Generic "missing credentials" in model switcher ([#4182](https://github.com/langchain-ai/deepagents/issues/4182)) ([456ce5c](https://github.com/langchain-ai/deepagents/commit/456ce5c2f5487a754d1fea7046e32c03b7e27a17))
36
+ * Hide chat input action buttons in same frame as empty draft ([#4178](https://github.com/langchain-ai/deepagents/issues/4178)) ([f94d417](https://github.com/langchain-ai/deepagents/commit/f94d417d5ad9928db967777fe1d7bc2c37684fb9))
37
+ * Preserve uv tool context when installing extras ([#4201](https://github.com/langchain-ai/deepagents/issues/4201)) ([fcc616c](https://github.com/langchain-ai/deepagents/commit/fcc616cf9bc2bbc7b2dc2574ae8649e2f270dc53))
38
+ * Unpin uv self-updates and warn when a stale dcode shadows PATH ([#4185](https://github.com/langchain-ai/deepagents/issues/4185)) ([8ca0a18](https://github.com/langchain-ai/deepagents/commit/8ca0a185a15f800267cc057178a348fb5063df1e))
39
+
5
40
  ## [0.1.21](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.20...deepagents-code==0.1.21) (2026-06-23)
6
41
 
7
42
  ### Features
@@ -12,7 +12,7 @@ aliases, descriptions, visibility, or hidden-command metadata.
12
12
  | Command | Aliases | Description |
13
13
  | --- | --- | --- |
14
14
  | `/agents` | | Browse and switch between available agents |
15
- | `/auth` | `/connect` | Connect and manage model provider credentials |
15
+ | `/auth` | `/connect` | Connect and manage provider and service credentials |
16
16
  | `/auto-update` | | Turn automatic updates on or off |
17
17
  | `/changelog` | | Open the changelog in a browser |
18
18
  | `/clear` | | Clear the chat and start a new thread |
@@ -17,14 +17,16 @@ This package uses [`uv`](https://docs.astral.sh/uv/) for environment and depende
17
17
  curl -LsSf https://astral.sh/uv/install.sh | sh
18
18
  ```
19
19
 
20
- Clone the monorepo and sync the `code` package with its test dependencies (this creates the virtualenv and installs everything you need to run and test the app):
20
+ Clone the monorepo and bootstrap the `code` package. This creates the virtualenv, installs test dependencies, and installs local git hooks (`pre-commit` + `commit-msg`) so the same checks can run before you push:
21
21
 
22
22
  ```bash
23
23
  git clone https://github.com/langchain-ai/deepagents.git
24
24
  cd deepagents/libs/code
25
- uv sync --group test
25
+ make bootstrap
26
26
  ```
27
27
 
28
+ If you only want to sync dependencies without installing hooks, run `uv sync --group test` instead.
29
+
28
30
  Run the TUI from `libs/code` in your local checkout:
29
31
 
30
32
  ```bash
@@ -35,7 +37,15 @@ uv run deepagents-code
35
37
 
36
38
  ### Running the tests and linters
37
39
 
38
- All commands run from `libs/code`. These mirror what CI enforces, so run them before opening a PR.
40
+ All commands run from `libs/code`. Before opening a PR, run the full local check suite:
41
+
42
+ ```bash
43
+ make check
44
+ ```
45
+
46
+ This runs linting, import checks, unit tests, and lockfile/version/extras checks.
47
+
48
+ For targeted checks while iterating:
39
49
 
40
50
  ```bash
41
51
  # Unit tests (no network)
@@ -1,10 +1,12 @@
1
- .PHONY: format lint type typecheck test tests integration_test integration_tests test_watch benchmark bench bench-memory help run lint_package lint_tests check_imports coverage commands-catalog commands-catalog-check
1
+ .PHONY: format lint type typecheck test tests integration_test integration_tests test_watch benchmark bench bench-memory help run lint_package lint_tests check_imports coverage commands-catalog commands-catalog-check check bootstrap
2
2
 
3
3
  .DEFAULT_GOAL := help
4
4
 
5
5
  .EXPORT_ALL_VARIABLES:
6
6
  UV_FROZEN = true
7
7
 
8
+ REPO_ROOT := $(shell git rev-parse --show-toplevel)
9
+
8
10
  ######################
9
11
  # TESTING AND COVERAGE
10
12
  ######################
@@ -87,6 +89,28 @@ commands-catalog: ## Regenerate COMMANDS.md from the slash-command registry
87
89
  commands-catalog-check: ## Verify COMMANDS.md matches the slash-command registry
88
90
  uv run --all-groups python scripts/generate_commands_catalog.py --check
89
91
 
92
+ ######################
93
+ # LOCAL CI PARITY
94
+ ######################
95
+
96
+ bootstrap: ## Install dev dependencies and git hooks for local development
97
+ uv sync --group test
98
+ cd "$(REPO_ROOT)" && uvx pre-commit install --install-hooks
99
+ @echo "✅ Dev environment ready: deps synced and git hooks installed."
100
+
101
+ check: ## Run the full local CI gauntlet (lint, types, imports, tests, repo gates)
102
+ check: lint check_imports test
103
+ @echo "🔍 Verifying extras stay in sync with required deps..."
104
+ uv run --all-groups python "$(REPO_ROOT)/.github/scripts/check_extras_sync.py" pyproject.toml
105
+ @echo "🔍 Verifying pyproject.toml and _version.py agree..."
106
+ uv run --all-groups python "$(REPO_ROOT)/.github/scripts/check_version_equality.py"
107
+ @echo "🔒 Verifying uv.lock is up-to-date..."
108
+ uv lock --check
109
+ @echo "🔗 Checking SDK pin against workspace SDK (advisory)..."
110
+ @uv run --all-groups python "$(REPO_ROOT)/.github/scripts/check_sdk_pin.py" || \
111
+ { rc=$$?; [ $$rc -eq 1 ] && echo "⚠️ Stale SDK pin (advisory, non-fatal)." || exit $$rc; }
112
+ @echo "✅ All local CI checks passed!"
113
+
90
114
  ######################
91
115
  # HELP
92
116
  ######################
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepagents-code
3
- Version: 0.1.21
3
+ Version: 0.1.23
4
4
  Summary: Terminal interface for Deep Agents - interactive AI agent with file operations, shell access, and sub-agent capabilities.
5
5
  Project-URL: Homepage, https://docs.langchain.com/oss/python/deepagents/overview
6
6
  Project-URL: Documentation, https://reference.langchain.com/python/deepagents/
@@ -27,7 +27,7 @@ Classifier: Topic :: Terminals
27
27
  Requires-Python: <4.0,>=3.11
28
28
  Requires-Dist: aiosqlite<1.0.0,>=0.22.1
29
29
  Requires-Dist: deepagents-acp<1.0.0,>=0.0.8
30
- Requires-Dist: deepagents==0.6.11
30
+ Requires-Dist: deepagents==0.7.0a2
31
31
  Requires-Dist: httpx<1.0.0,>=0.28.1
32
32
  Requires-Dist: langchain-anthropic<2.0.0,>=1.4.7
33
33
  Requires-Dist: langchain-google-genai<5.0.0,>=4.2.5
@@ -0,0 +1,3 @@
1
+ """Generated at build time. Do not edit or commit."""
2
+
3
+ BUILD_COMMIT = "649443a"
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Keep the `x-release-please-version` annotation — release-please uses it to
4
4
  # bump `__version__` in sync with `pyproject.toml` on every release PR.
5
- __version__ = "0.1.21" # x-release-please-version
5
+ __version__ = "0.1.23" # x-release-please-version
6
6
 
7
7
  DOCS_URL = "https://docs.langchain.com/oss/python/deepagents/code"
8
8
  """URL for `deepagents-code` documentation."""
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import functools
5
6
  import logging
6
7
  import os
7
8
  import re
@@ -62,10 +63,10 @@ from deepagents_code.config import (
62
63
  get_default_coding_instructions,
63
64
  get_glyphs,
64
65
  get_langsmith_project_name,
66
+ restore_user_tracing_env,
65
67
  settings,
66
68
  )
67
69
  from deepagents_code.configurable_model import ConfigurableModelMiddleware
68
- from deepagents_code.filesystem_empty_result import _FilesystemEmptyResultMiddleware
69
70
  from deepagents_code.integrations.sandbox_factory import get_default_working_dir
70
71
  from deepagents_code.local_context import (
71
72
  LocalContextMiddleware,
@@ -438,17 +439,32 @@ def load_async_subagents(config_path: Path | None = None) -> list[AsyncSubAgent]
438
439
  return agents
439
440
 
440
441
 
442
+ @functools.lru_cache(maxsize=1)
443
+ def _reserved_agent_dir_names() -> frozenset[str]:
444
+ """Return non-agent directory names reserved by the app under `~/.deepagents/`.
445
+
446
+ `bin/` holds the managed `rg` binary (`managed_tools.BIN_DIR`) and must
447
+ never appear in the agent picker. The name is derived from `BIN_DIR` so it
448
+ stays a single source of truth rather than being hardcoded here. The result
449
+ is cached since the reserved set is constant for the process.
450
+ """
451
+ from deepagents_code.managed_tools import BIN_DIR
452
+
453
+ return frozenset({BIN_DIR.name})
454
+
455
+
441
456
  def _is_agent_dir_entry(entry: Path) -> bool:
442
457
  """Return whether a `~/.deepagents/` entry should be listed as an agent.
443
458
 
444
- Filters out symlinks (so dangling links don't masquerade as agents)
445
- and dot-prefixed names — `.state/` (app internal state) plus any
446
- other hidden directory the user may have placed there.
459
+ Filters out symlinks (so dangling links don't masquerade as agents),
460
+ dot-prefixed names — `.state/` (app internal state) plus any other
461
+ hidden directory the user may have placed there — and reserved names
462
+ the app owns (e.g. `bin/`, the managed-binary install dir).
447
463
 
448
464
  `OSError` from `is_dir`/`is_symlink` propagates so callers can log
449
465
  with the failing entry's name as context.
450
466
  """
451
- if entry.name.startswith("."):
467
+ if entry.name.startswith(".") or entry.name in _reserved_agent_dir_names():
452
468
  return False
453
469
  return entry.is_dir() and not entry.is_symlink()
454
470
 
@@ -458,8 +474,9 @@ def get_available_agent_names() -> list[str]:
458
474
 
459
475
  Scans the user's `.deepagents` directory and returns each real
460
476
  subdirectory found there. Symlinks excluded so a dangling link does not
461
- masquerade as an agent. Dot-prefixed entries (e.g., `.state/`) are
462
- skipped so internal app state never appears as an agent.
477
+ masquerade as an agent. Dot-prefixed entries (e.g., `.state/`) and
478
+ reserved app-owned directories (e.g., `bin/`, the managed-binary install
479
+ dir) are skipped so internal state never appears as an agent.
463
480
 
464
481
  Filesystem errors (missing parent, permission denied, broken entries) are
465
482
  logged and surfaced as an empty list rather than raised — the caller shows
@@ -1402,7 +1419,6 @@ def create_cli_agent(
1402
1419
  # Build middleware stack based on enabled features
1403
1420
  agent_middleware: list[AgentMiddleware[Any, Any]] = [
1404
1421
  ConfigurableModelMiddleware(),
1405
- _FilesystemEmptyResultMiddleware(),
1406
1422
  ]
1407
1423
 
1408
1424
  # Resume state: declares the `_context_tokens` and `_model_spec` channels
@@ -1506,6 +1522,7 @@ def create_cli_agent(
1506
1522
  shell_env["LANGSMITH_PROJECT"] = settings.user_langchain_project
1507
1523
  else:
1508
1524
  shell_env.pop("LANGSMITH_PROJECT", None)
1525
+ restore_user_tracing_env(shell_env)
1509
1526
  # Re-apply a launch-time PYTHONPATH that was stripped from the server
1510
1527
  # interpreter but relayed for approval-gated `execute` commands.
1511
1528
  _apply_inherited_pythonpath(shell_env)
@@ -1518,6 +1535,7 @@ def create_cli_agent(
1518
1535
  # and resurrect the popped carrier var, leaking it into `execute`.
1519
1536
  backend = LocalShellBackend(
1520
1537
  root_dir=root_dir,
1538
+ virtual_mode=False,
1521
1539
  inherit_env=False,
1522
1540
  env=shell_env,
1523
1541
  )