deepagents-code 0.1.21__tar.gz → 0.1.22__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 (293) hide show
  1. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/CHANGELOG.md +19 -0
  2. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/COMMANDS.md +1 -1
  3. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/DEVELOPMENT.md +13 -3
  4. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/Makefile +25 -1
  5. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/PKG-INFO +1 -1
  6. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_version.py +1 -1
  7. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/agent.py +26 -6
  8. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/app.py +372 -62
  9. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/auth_commands.py +52 -7
  10. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/auth_display.py +0 -2
  11. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/auth_store.py +65 -2
  12. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/command_registry.py +4 -2
  13. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/config.py +167 -45
  14. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/main.py +62 -5
  15. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/model_config.py +34 -8
  16. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/ui.py +4 -0
  17. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/update_check.py +552 -60
  18. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/auth.py +154 -55
  19. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/chat_input.py +79 -1
  20. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/launch_init.py +174 -55
  21. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/model_selector.py +104 -42
  22. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/notification_center.py +0 -1
  23. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/thread_selector.py +46 -1
  24. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/update_progress.py +44 -6
  25. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/pyproject.toml +1 -1
  26. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/scripts/install.sh +73 -12
  27. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_agent.py +39 -0
  28. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_app.py +909 -20
  29. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_auth_commands.py +82 -5
  30. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_auth_display.py +1 -1
  31. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_auth_store.py +61 -0
  32. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_auth_widgets.py +378 -4
  33. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_chat_input.py +112 -0
  34. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_config.py +418 -49
  35. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_install_command.py +133 -2
  36. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_install_confirm.py +4 -4
  37. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_install_script.py +310 -0
  38. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_launch_init.py +237 -13
  39. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_main.py +105 -0
  40. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_main_args.py +82 -8
  41. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_managed_tools.py +8 -1
  42. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_model_config.py +43 -0
  43. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_model_selector.py +232 -19
  44. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_non_interactive.py +12 -1
  45. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_notification_center.py +4 -0
  46. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_openai_codex_integration.py +25 -2
  47. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_startup_fast_paths.py +5 -2
  48. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_thread_selector.py +14 -0
  49. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_update_check.py +1083 -47
  50. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_update_progress.py +104 -0
  51. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_version.py +72 -0
  52. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_welcome.py +3 -3
  53. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/uv.lock +1 -1
  54. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/.gitignore +0 -0
  55. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/AGENTS.md +0 -0
  56. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/ARCHITECTURE.md +0 -0
  57. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/README.md +0 -0
  58. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/THREAT_MODEL.md +0 -0
  59. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/__init__.py +0 -0
  60. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/__main__.py +0 -0
  61. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_ask_user_types.py +0 -0
  62. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_cli_context.py +0 -0
  63. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_constants.py +0 -0
  64. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_debug.py +0 -0
  65. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_env_vars.py +0 -0
  66. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_git.py +0 -0
  67. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_paths.py +0 -0
  68. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_server_config.py +0 -0
  69. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_session_stats.py +0 -0
  70. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_startup_error.py +0 -0
  71. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_testing_models.py +0 -0
  72. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_textual_patches.py +0 -0
  73. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/app.tcss +0 -0
  74. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/ask_user.py +0 -0
  75. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/built_in_skills/__init__.py +0 -0
  76. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
  77. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
  78. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  79. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  80. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/clipboard.py +0 -0
  81. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/config_commands.py +0 -0
  82. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/config_manifest.py +0 -0
  83. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/configurable_model.py +0 -0
  84. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/default_agent_prompt.md +0 -0
  85. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/doctor.py +0 -0
  86. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/editor.py +0 -0
  87. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/event_bus.py +0 -0
  88. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/extras_info.py +0 -0
  89. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/file_ops.py +0 -0
  90. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/filesystem_empty_result.py +0 -0
  91. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/formatting.py +0 -0
  92. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/hooks.py +0 -0
  93. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/input.py +0 -0
  94. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/integrations/__init__.py +0 -0
  95. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/integrations/openai_codex.py +0 -0
  96. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/integrations/sandbox_config.py +0 -0
  97. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/integrations/sandbox_factory.py +0 -0
  98. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/integrations/sandbox_provider.py +0 -0
  99. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/integrations/sandbox_registry.py +0 -0
  100. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/iterm_cursor_guide.py +0 -0
  101. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/local_context.py +0 -0
  102. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/managed_tools.py +0 -0
  103. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_auth.py +0 -0
  104. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_commands.py +0 -0
  105. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_disabled.py +0 -0
  106. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_login_service.py +0 -0
  107. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_oauth_ui.py +0 -0
  108. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_providers/__init__.py +0 -0
  109. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_providers/_registry.py +0 -0
  110. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_providers/base.py +0 -0
  111. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_providers/github.py +0 -0
  112. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_providers/slack.py +0 -0
  113. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_tools.py +0 -0
  114. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_trust.py +0 -0
  115. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/media_utils.py +0 -0
  116. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/memory_guard.py +0 -0
  117. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/non_interactive.py +0 -0
  118. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/notifications.py +0 -0
  119. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/offload.py +0 -0
  120. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/onboarding.py +0 -0
  121. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/output.py +0 -0
  122. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/project_utils.py +0 -0
  123. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/py.typed +0 -0
  124. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/remote_client.py +0 -0
  125. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/resume_state.py +0 -0
  126. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/server.py +0 -0
  127. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/server_graph.py +0 -0
  128. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/server_manager.py +0 -0
  129. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/sessions.py +0 -0
  130. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/skills/__init__.py +0 -0
  131. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/skills/commands.py +0 -0
  132. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/skills/invocation.py +0 -0
  133. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/skills/load.py +0 -0
  134. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/state_migration.py +0 -0
  135. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/subagents.py +0 -0
  136. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/system_prompt.md +0 -0
  137. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/terminal_capabilities.py +0 -0
  138. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/terminal_escape.py +0 -0
  139. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/textual_adapter.py +0 -0
  140. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/theme.py +0 -0
  141. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/tool_display.py +0 -0
  142. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/tools.py +0 -0
  143. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/unicode_security.py +0 -0
  144. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/__init__.py +0 -0
  145. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/_js_eval_display.py +0 -0
  146. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/_links.py +0 -0
  147. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/agent_selector.py +0 -0
  148. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/approval.py +0 -0
  149. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/ask_user.py +0 -0
  150. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/autocomplete.py +0 -0
  151. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/codex_auth.py +0 -0
  152. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/cwd_switch.py +0 -0
  153. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/diff.py +0 -0
  154. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/history.py +0 -0
  155. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/install_confirm.py +0 -0
  156. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/loading.py +0 -0
  157. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/mcp_login.py +0 -0
  158. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/mcp_reconnect.py +0 -0
  159. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/mcp_viewer.py +0 -0
  160. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/message_store.py +0 -0
  161. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/messages.py +0 -0
  162. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/notification_detail.py +0 -0
  163. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/notification_settings.py +0 -0
  164. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/restart_prompt.py +0 -0
  165. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/status.py +0 -0
  166. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/theme_selector.py +0 -0
  167. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/tool_renderers.py +0 -0
  168. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/tool_widgets.py +0 -0
  169. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/update_available.py +0 -0
  170. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/update_confirm.py +0 -0
  171. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/welcome.py +0 -0
  172. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/examples/skills/arxiv-search/SKILL.md +0 -0
  173. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  174. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/examples/skills/langgraph-docs/SKILL.md +0 -0
  175. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/examples/skills/skill-creator/SKILL.md +0 -0
  176. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  177. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  178. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/examples/skills/web-research/SKILL.md +0 -0
  179. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/images/tui.png +0 -0
  180. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/scripts/check_imports.py +0 -0
  181. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/scripts/debug_server.sh +0 -0
  182. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/scripts/generate_commands_catalog.py +0 -0
  183. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/README.md +0 -0
  184. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/__init__.py +0 -0
  185. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/benchmarks/__init__.py +0 -0
  186. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
  187. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
  188. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/conftest.py +0 -0
  189. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/test_acp_mode.py +0 -0
  190. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/test_compact_resume.py +0 -0
  191. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/test_sandbox_factory.py +0 -0
  192. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/test_sandbox_operations.py +0 -0
  193. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/__init__.py +0 -0
  194. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/conftest.py +0 -0
  195. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/skills/__init__.py +0 -0
  196. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/skills/test_commands.py +0 -0
  197. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/skills/test_load.py +0 -0
  198. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/skills/test_skills_json.py +0 -0
  199. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_agent_friendly.py +0 -0
  200. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_agent_selector.py +0 -0
  201. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_approval.py +0 -0
  202. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_args.py +0 -0
  203. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_ask_user.py +0 -0
  204. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_ask_user_middleware.py +0 -0
  205. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_autocomplete.py +0 -0
  206. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_charset.py +0 -0
  207. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_clipboard.py +0 -0
  208. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_command_registry.py +0 -0
  209. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_compact_tool.py +0 -0
  210. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_config_manifest.py +0 -0
  211. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_configurable_model.py +0 -0
  212. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_cursor_blink.py +0 -0
  213. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_cwd_switch.py +0 -0
  214. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_debug.py +0 -0
  215. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_doctor.py +0 -0
  216. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_editor.py +0 -0
  217. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_end_to_end.py +0 -0
  218. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_env_vars.py +0 -0
  219. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_event_bus.py +0 -0
  220. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_exception_handling.py +0 -0
  221. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_extras_info.py +0 -0
  222. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_file_ops.py +0 -0
  223. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_filesystem_empty_result.py +0 -0
  224. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_formatting.py +0 -0
  225. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_git.py +0 -0
  226. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_history.py +0 -0
  227. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_hooks.py +0 -0
  228. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_imports.py +0 -0
  229. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_input_parsing.py +0 -0
  230. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
  231. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_links.py +0 -0
  232. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_loading.py +0 -0
  233. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_local_context.py +0 -0
  234. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_main_acp_mode.py +0 -0
  235. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_auth.py +0 -0
  236. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_commands.py +0 -0
  237. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_disabled.py +0 -0
  238. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_login_modal.py +0 -0
  239. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_login_service.py +0 -0
  240. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
  241. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_reconnect.py +0 -0
  242. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_tools.py +0 -0
  243. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_trust.py +0 -0
  244. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_viewer.py +0 -0
  245. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_media_utils.py +0 -0
  246. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_memory_guard.py +0 -0
  247. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_message_store.py +0 -0
  248. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_messages.py +0 -0
  249. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_model_switch.py +0 -0
  250. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_notification_detail.py +0 -0
  251. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_notifications.py +0 -0
  252. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_offload.py +0 -0
  253. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_offload_dict_messages.py +0 -0
  254. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_onboarding.py +0 -0
  255. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_output.py +0 -0
  256. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_paths.py +0 -0
  257. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_reload.py +0 -0
  258. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_remote_client.py +0 -0
  259. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_restart_prompt.py +0 -0
  260. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_resume_state.py +0 -0
  261. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_sandbox_config.py +0 -0
  262. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_sandbox_factory.py +0 -0
  263. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_sandbox_provider.py +0 -0
  264. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_sandbox_registry.py +0 -0
  265. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_server.py +0 -0
  266. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_server_config.py +0 -0
  267. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_server_graph.py +0 -0
  268. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_server_helpers.py +0 -0
  269. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_server_manager.py +0 -0
  270. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_session_stats.py +0 -0
  271. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_sessions.py +0 -0
  272. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_shell_allow_list.py +0 -0
  273. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_skill_invocation.py +0 -0
  274. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_state_migration.py +0 -0
  275. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_status.py +0 -0
  276. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_subagents.py +0 -0
  277. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_terminal_capabilities.py +0 -0
  278. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_terminal_escape.py +0 -0
  279. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
  280. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_textual_adapter.py +0 -0
  281. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_textual_patches.py +0 -0
  282. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_theme.py +0 -0
  283. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_tool_display.py +0 -0
  284. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_tracing_replicas.py +0 -0
  285. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_ui.py +0 -0
  286. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_unicode_security.py +0 -0
  287. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_update_available.py +0 -0
  288. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_update_confirm.py +0 -0
  289. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/tools/__init__.py +0 -0
  290. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/tools/test_current_thread.py +0 -0
  291. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/tools/test_fetch_url.py +0 -0
  292. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/widgets/__init__.py +0 -0
  293. {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/widgets/test_diff.py +0 -0
@@ -2,6 +2,25 @@
2
2
 
3
3
  # Deep Agents Code Changelog
4
4
 
5
+ ## [0.1.22](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.21...deepagents-code==0.1.22) (2026-06-24)
6
+
7
+ ### Features
8
+
9
+ * Add LangSmith tracing config to `/auth` ([#4193](https://github.com/langchain-ai/deepagents/issues/4193)) ([8e62957](https://github.com/langchain-ai/deepagents/commit/8e6295791093c2ddfec7e6ac57f0df7f12048447))
10
+ * 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))
11
+ * Improve onboarding Installed Integrations screen ([#4195](https://github.com/langchain-ai/deepagents/issues/4195)) ([0827bf1](https://github.com/langchain-ai/deepagents/commit/0827bf1b635b825121740ac8946dd6d98c815c7d))
12
+
13
+ ### Bug Fixes
14
+
15
+ * 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))
16
+ * 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))
17
+ * 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))
18
+ * 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))
19
+ * Generic "missing credentials" in model switcher ([#4182](https://github.com/langchain-ai/deepagents/issues/4182)) ([456ce5c](https://github.com/langchain-ai/deepagents/commit/456ce5c2f5487a754d1fea7046e32c03b7e27a17))
20
+ * 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))
21
+ * 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))
22
+ * 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))
23
+
5
24
  ## [0.1.21](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.20...deepagents-code==0.1.21) (2026-06-23)
6
25
 
7
26
  ### 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 "⚠️ SDK pin drift (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.22
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/
@@ -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.22" # 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,6 +63,7 @@ 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
@@ -438,17 +440,32 @@ def load_async_subagents(config_path: Path | None = None) -> list[AsyncSubAgent]
438
440
  return agents
439
441
 
440
442
 
443
+ @functools.lru_cache(maxsize=1)
444
+ def _reserved_agent_dir_names() -> frozenset[str]:
445
+ """Return non-agent directory names reserved by the app under `~/.deepagents/`.
446
+
447
+ `bin/` holds the managed `rg` binary (`managed_tools.BIN_DIR`) and must
448
+ never appear in the agent picker. The name is derived from `BIN_DIR` so it
449
+ stays a single source of truth rather than being hardcoded here. The result
450
+ is cached since the reserved set is constant for the process.
451
+ """
452
+ from deepagents_code.managed_tools import BIN_DIR
453
+
454
+ return frozenset({BIN_DIR.name})
455
+
456
+
441
457
  def _is_agent_dir_entry(entry: Path) -> bool:
442
458
  """Return whether a `~/.deepagents/` entry should be listed as an agent.
443
459
 
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.
460
+ Filters out symlinks (so dangling links don't masquerade as agents),
461
+ dot-prefixed names — `.state/` (app internal state) plus any other
462
+ hidden directory the user may have placed there — and reserved names
463
+ the app owns (e.g. `bin/`, the managed-binary install dir).
447
464
 
448
465
  `OSError` from `is_dir`/`is_symlink` propagates so callers can log
449
466
  with the failing entry's name as context.
450
467
  """
451
- if entry.name.startswith("."):
468
+ if entry.name.startswith(".") or entry.name in _reserved_agent_dir_names():
452
469
  return False
453
470
  return entry.is_dir() and not entry.is_symlink()
454
471
 
@@ -458,8 +475,9 @@ def get_available_agent_names() -> list[str]:
458
475
 
459
476
  Scans the user's `.deepagents` directory and returns each real
460
477
  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.
478
+ masquerade as an agent. Dot-prefixed entries (e.g., `.state/`) and
479
+ reserved app-owned directories (e.g., `bin/`, the managed-binary install
480
+ dir) are skipped so internal state never appears as an agent.
463
481
 
464
482
  Filesystem errors (missing parent, permission denied, broken entries) are
465
483
  logged and surfaced as an empty list rather than raised — the caller shows
@@ -1506,6 +1524,7 @@ def create_cli_agent(
1506
1524
  shell_env["LANGSMITH_PROJECT"] = settings.user_langchain_project
1507
1525
  else:
1508
1526
  shell_env.pop("LANGSMITH_PROJECT", None)
1527
+ restore_user_tracing_env(shell_env)
1509
1528
  # Re-apply a launch-time PYTHONPATH that was stripped from the server
1510
1529
  # interpreter but relayed for approval-gated `execute` commands.
1511
1530
  _apply_inherited_pythonpath(shell_env)
@@ -1518,6 +1537,7 @@ def create_cli_agent(
1518
1537
  # and resurrect the popped carrier var, leaking it into `execute`.
1519
1538
  backend = LocalShellBackend(
1520
1539
  root_dir=root_dir,
1540
+ virtual_mode=False,
1521
1541
  inherit_env=False,
1522
1542
  env=shell_env,
1523
1543
  )