deepagents-cli 0.0.43__tar.gz → 0.0.45__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 (265) hide show
  1. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/CHANGELOG.md +14 -2
  2. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/PKG-INFO +51 -51
  3. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/README.md +1 -1
  4. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/_version.py +1 -1
  5. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/app.py +70 -1
  6. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/project_utils.py +62 -10
  7. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/chat_input.py +6 -0
  8. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/loading.py +1 -1
  9. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/pyproject.toml +28 -28
  10. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_app.py +185 -0
  11. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_chat_input.py +50 -1
  12. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_config.py +139 -6
  13. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/uv.lock +170 -94
  14. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/.gitignore +0 -0
  15. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/DEV.md +0 -0
  16. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/Makefile +0 -0
  17. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/THREAT_MODEL.md +0 -0
  18. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/__init__.py +0 -0
  19. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/__main__.py +0 -0
  20. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/_ask_user_types.py +0 -0
  21. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/_cli_context.py +0 -0
  22. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/_debug.py +0 -0
  23. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/_env_vars.py +0 -0
  24. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/_git.py +0 -0
  25. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/_server_config.py +0 -0
  26. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/_session_stats.py +0 -0
  27. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/_testing_models.py +0 -0
  28. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/_textual_patches.py +0 -0
  29. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/agent.py +0 -0
  30. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/app.tcss +0 -0
  31. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/ask_user.py +0 -0
  32. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/built_in_skills/__init__.py +0 -0
  33. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/built_in_skills/remember/SKILL.md +0 -0
  34. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/built_in_skills/skill-creator/SKILL.md +0 -0
  35. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  36. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  37. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/clipboard.py +0 -0
  38. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/command_registry.py +0 -0
  39. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/config.py +0 -0
  40. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/configurable_model.py +0 -0
  41. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/default_agent_prompt.md +0 -0
  42. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/deploy/__init__.py +0 -0
  43. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/deploy/bundler.py +0 -0
  44. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/deploy/commands.py +0 -0
  45. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/deploy/config.py +0 -0
  46. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/deploy/frontend_dist/assets/anonymous-B9UzAXQd.js +0 -0
  47. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/deploy/frontend_dist/assets/clerk-5xHgyQyG.js +0 -0
  48. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/deploy/frontend_dist/assets/highlighted-body-OFNGDK62-rX-7qT8o.js +0 -0
  49. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/deploy/frontend_dist/assets/index-DM3gptpu.js +0 -0
  50. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/deploy/frontend_dist/assets/index-Ddy7F6KI.css +0 -0
  51. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/deploy/frontend_dist/assets/supabase-S6NACDgm.js +0 -0
  52. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/deploy/frontend_dist/index.html +0 -0
  53. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/deploy/frontend_dist/logo-dark.svg +0 -0
  54. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/deploy/frontend_dist/logo-light.svg +0 -0
  55. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/deploy/templates.py +0 -0
  56. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/editor.py +0 -0
  57. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/extras_info.py +0 -0
  58. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/file_ops.py +0 -0
  59. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/formatting.py +0 -0
  60. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/hooks.py +0 -0
  61. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/input.py +0 -0
  62. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/integrations/__init__.py +0 -0
  63. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/integrations/sandbox_factory.py +0 -0
  64. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/integrations/sandbox_provider.py +0 -0
  65. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/local_context.py +0 -0
  66. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/main.py +0 -0
  67. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/mcp_tools.py +0 -0
  68. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/mcp_trust.py +0 -0
  69. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/media_utils.py +0 -0
  70. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/model_config.py +0 -0
  71. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/non_interactive.py +0 -0
  72. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/notifications.py +0 -0
  73. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/offload.py +0 -0
  74. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/output.py +0 -0
  75. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/py.typed +0 -0
  76. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/remote_client.py +0 -0
  77. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/server.py +0 -0
  78. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/server_graph.py +0 -0
  79. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/server_manager.py +0 -0
  80. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/sessions.py +0 -0
  81. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/skills/__init__.py +0 -0
  82. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/skills/commands.py +0 -0
  83. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/skills/invocation.py +0 -0
  84. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/skills/load.py +0 -0
  85. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/subagents.py +0 -0
  86. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/system_prompt.md +0 -0
  87. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/terminal_capabilities.py +0 -0
  88. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/textual_adapter.py +0 -0
  89. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/theme.py +0 -0
  90. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/token_state.py +0 -0
  91. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/tool_display.py +0 -0
  92. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/tools.py +0 -0
  93. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/ui.py +0 -0
  94. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/unicode_security.py +0 -0
  95. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/update_check.py +0 -0
  96. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/__init__.py +0 -0
  97. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/_links.py +0 -0
  98. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/agent_selector.py +0 -0
  99. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/approval.py +0 -0
  100. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/ask_user.py +0 -0
  101. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/autocomplete.py +0 -0
  102. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/diff.py +0 -0
  103. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/history.py +0 -0
  104. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/mcp_viewer.py +0 -0
  105. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/message_store.py +0 -0
  106. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/messages.py +0 -0
  107. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/model_selector.py +0 -0
  108. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/notification_center.py +0 -0
  109. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/notification_detail.py +0 -0
  110. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/notification_settings.py +0 -0
  111. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/status.py +0 -0
  112. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/theme_selector.py +0 -0
  113. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/thread_selector.py +0 -0
  114. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/tool_renderers.py +0 -0
  115. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/tool_widgets.py +0 -0
  116. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/update_available.py +0 -0
  117. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/deepagents_cli/widgets/welcome.py +0 -0
  118. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/examples/deploy-content-writer/.env.example +0 -0
  119. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/examples/deploy-content-writer/skills/blog-post/SKILL.md +0 -0
  120. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/examples/deploy-content-writer/skills/social-media/SKILL.md +0 -0
  121. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/examples/deploy-content-writer/user/context.md +0 -0
  122. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/examples/deploy-content-writer/user/preferences.md +0 -0
  123. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/examples/skills/arxiv-search/SKILL.md +0 -0
  124. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  125. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/examples/skills/langgraph-docs/SKILL.md +0 -0
  126. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/examples/skills/skill-creator/SKILL.md +0 -0
  127. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  128. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  129. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/examples/skills/web-research/SKILL.md +0 -0
  130. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/.nvmrc +0 -0
  131. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/index.html +0 -0
  132. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/package-lock.json +0 -0
  133. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/package.json +0 -0
  134. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/postcss.config.js +0 -0
  135. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/public/logo-dark.svg +0 -0
  136. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/public/logo-light.svg +0 -0
  137. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/App.tsx +0 -0
  138. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/ThemeProvider.tsx +0 -0
  139. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/auth/anonymous.tsx +0 -0
  140. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/auth/clerk.tsx +0 -0
  141. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/auth/loader.tsx +0 -0
  142. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/auth/supabase.tsx +0 -0
  143. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/auth/types.ts +0 -0
  144. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/components/AppHeader.tsx +0 -0
  145. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/components/FilePanels.tsx +0 -0
  146. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/components/MessageList.tsx +0 -0
  147. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/components/SubagentActivity.tsx +0 -0
  148. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/components/ThreadPicker.tsx +0 -0
  149. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/components/TodosPanel.tsx +0 -0
  150. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/components/ToolCallCard.tsx +0 -0
  151. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/components/toolcalls/FileToolCard.tsx +0 -0
  152. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/components/toolcalls/SearchCard.tsx +0 -0
  153. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/components/toolcalls/ThinkCard.tsx +0 -0
  154. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/components/toolcalls/TodosCard.tsx +0 -0
  155. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/components/toolcalls/index.ts +0 -0
  156. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/constants.ts +0 -0
  157. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/index.css +0 -0
  158. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/main.tsx +0 -0
  159. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/runtimeConfig.ts +0 -0
  160. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/types.ts +0 -0
  161. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/src/vite-env.d.ts +0 -0
  162. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/tsconfig.json +0 -0
  163. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/frontend/vite.config.ts +0 -0
  164. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/images/cli.png +0 -0
  165. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/scripts/check_imports.py +0 -0
  166. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/scripts/debug_server.sh +0 -0
  167. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/scripts/install.sh +0 -0
  168. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/README.md +0 -0
  169. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/integration_tests/__init__.py +0 -0
  170. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/integration_tests/benchmarks/__init__.py +0 -0
  171. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
  172. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
  173. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/integration_tests/conftest.py +0 -0
  174. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/integration_tests/test_acp_mode.py +0 -0
  175. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/integration_tests/test_compact_resume.py +0 -0
  176. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/integration_tests/test_sandbox_factory.py +0 -0
  177. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/integration_tests/test_sandbox_operations.py +0 -0
  178. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/__init__.py +0 -0
  179. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/conftest.py +0 -0
  180. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/deploy/__init__.py +0 -0
  181. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/deploy/test_bundler.py +0 -0
  182. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/deploy/test_commands.py +0 -0
  183. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/deploy/test_config.py +0 -0
  184. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/deploy/test_frontend_bundle.py +0 -0
  185. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/deploy/test_frontend_config.py +0 -0
  186. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/skills/__init__.py +0 -0
  187. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/skills/test_commands.py +0 -0
  188. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/skills/test_load.py +0 -0
  189. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/skills/test_skills_json.py +0 -0
  190. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_agent.py +0 -0
  191. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_agent_friendly.py +0 -0
  192. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_agent_selector.py +0 -0
  193. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_approval.py +0 -0
  194. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_args.py +0 -0
  195. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_ask_user.py +0 -0
  196. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_ask_user_middleware.py +0 -0
  197. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_autocomplete.py +0 -0
  198. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_charset.py +0 -0
  199. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_command_registry.py +0 -0
  200. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_compact_tool.py +0 -0
  201. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_configurable_model.py +0 -0
  202. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_debug.py +0 -0
  203. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_editor.py +0 -0
  204. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_end_to_end.py +0 -0
  205. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_env_vars.py +0 -0
  206. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_exception_handling.py +0 -0
  207. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_extras_info.py +0 -0
  208. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_file_ops.py +0 -0
  209. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_formatting.py +0 -0
  210. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_git.py +0 -0
  211. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_history.py +0 -0
  212. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_hooks.py +0 -0
  213. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_imports.py +0 -0
  214. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_input_parsing.py +0 -0
  215. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_links.py +0 -0
  216. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_loading.py +0 -0
  217. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_local_context.py +0 -0
  218. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_main.py +0 -0
  219. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_main_acp_mode.py +0 -0
  220. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_main_args.py +0 -0
  221. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_mcp_tools.py +0 -0
  222. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_mcp_trust.py +0 -0
  223. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_mcp_viewer.py +0 -0
  224. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_media_utils.py +0 -0
  225. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_message_store.py +0 -0
  226. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_messages.py +0 -0
  227. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_model_config.py +0 -0
  228. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_model_selector.py +0 -0
  229. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_model_switch.py +0 -0
  230. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_non_interactive.py +0 -0
  231. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_notification_center.py +0 -0
  232. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_notification_detail.py +0 -0
  233. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_notifications.py +0 -0
  234. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_offload.py +0 -0
  235. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_offload_dict_messages.py +0 -0
  236. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_output.py +0 -0
  237. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_reload.py +0 -0
  238. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_remote_client.py +0 -0
  239. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_sandbox_factory.py +0 -0
  240. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_server.py +0 -0
  241. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_server_config.py +0 -0
  242. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_server_graph.py +0 -0
  243. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_server_helpers.py +0 -0
  244. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_server_manager.py +0 -0
  245. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_session_stats.py +0 -0
  246. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_sessions.py +0 -0
  247. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_shell_allow_list.py +0 -0
  248. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_skill_invocation.py +0 -0
  249. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_status.py +0 -0
  250. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_subagents.py +0 -0
  251. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_terminal_capabilities.py +0 -0
  252. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_textual_adapter.py +0 -0
  253. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_textual_patches.py +0 -0
  254. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_theme.py +0 -0
  255. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_thread_selector.py +0 -0
  256. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_token_tracker.py +0 -0
  257. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_tool_display.py +0 -0
  258. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_ui.py +0 -0
  259. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_unicode_security.py +0 -0
  260. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_update_available.py +0 -0
  261. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_update_check.py +0 -0
  262. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_version.py +0 -0
  263. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/test_welcome.py +0 -0
  264. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/tools/__init__.py +0 -0
  265. {deepagents_cli-0.0.43 → deepagents_cli-0.0.45}/tests/unit_tests/tools/test_fetch_url.py +0 -0
@@ -1,11 +1,23 @@
1
1
  # Changelog
2
2
 
3
- ## [0.0.43](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.42...deepagents-cli==0.0.43) (2026-04-29)
3
+ ## [0.0.45](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.44...deepagents-cli==0.0.45) (2026-04-30)
4
+
5
+ ### Bug Fixes
6
+
7
+ * Reject out-of-tree symlinked project `AGENTS.md` ([#3039](https://github.com/langchain-ai/deepagents/issues/3039)) ([4618098](https://github.com/langchain-ai/deepagents/commit/4618098e59c8c8d1d3f91354e4f4163a9582f710))
8
+ * Support modified backspace word deletion ([#3037](https://github.com/langchain-ai/deepagents/issues/3037)) ([bc3d019](https://github.com/langchain-ai/deepagents/commit/bc3d01916d2ba34be07d56c9eb9b813008c1584c))
9
+
10
+ ## [0.0.44](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.43...deepagents-cli==0.0.44) (2026-04-29)
4
11
 
12
+ ### Bug Fixes
13
+
14
+ * Startup import deadlock ([#3017](https://github.com/langchain-ai/deepagents/issues/3017)) ([d40ab57](https://github.com/langchain-ai/deepagents/commit/d40ab57800a6ad12b0c9a5e249753702ec0832c8))
15
+
16
+ ## [0.0.43](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.42...deepagents-cli==0.0.43) (2026-04-29)
5
17
 
6
18
  ### Features
7
19
 
8
- * **cli:** bundled chat frontend for deepagent deploy ([#2940](https://github.com/langchain-ai/deepagents/issues/2940)) ([9bde0c7](https://github.com/langchain-ai/deepagents/commit/9bde0c7835ded20e80466d8361f40784141d68d8))
20
+ * Bundled chat frontend for deepagent deploy ([#2940](https://github.com/langchain-ai/deepagents/issues/2940)) ([9bde0c7](https://github.com/langchain-ai/deepagents/commit/9bde0c7835ded20e80466d8361f40784141d68d8))
9
21
 
10
22
  ## [0.0.42](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.41...deepagents-cli==0.0.42) (2026-04-29)
11
23
 
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepagents-cli
3
- Version: 0.0.43
3
+ Version: 0.0.45
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/
7
7
  Project-URL: Repository, https://github.com/langchain-ai/deepagents
8
8
  Project-URL: Issues, https://github.com/langchain-ai/deepagents/issues
9
9
  Project-URL: Changelog, https://github.com/langchain-ai/deepagents/blob/main/libs/cli/CHANGELOG.md
10
- Project-URL: Twitter, https://x.com/LangChain
10
+ Project-URL: Twitter, https://x.com/langchain_oss
11
11
  Project-URL: Slack, https://www.langchain.com/join-community
12
12
  Project-URL: Reddit, https://www.reddit.com/r/LangChain/
13
13
  License: MIT
@@ -27,12 +27,12 @@ Classifier: Topic :: Terminals
27
27
  Requires-Python: <4.0,>=3.11
28
28
  Requires-Dist: aiosqlite<1.0.0,>=0.19.0
29
29
  Requires-Dist: deepagents-acp>=0.0.4
30
- Requires-Dist: deepagents==0.5.4
30
+ Requires-Dist: deepagents==0.5.5
31
31
  Requires-Dist: httpx<1.0.0,>=0.28.1
32
32
  Requires-Dist: langchain-anthropic<2.0.0,>=1.4.2
33
- Requires-Dist: langchain-google-genai<5.0.0,>=4.2.1
34
- Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.2.0
35
- Requires-Dist: langchain-openai<2.0.0,>=1.1.12
33
+ Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2
34
+ Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.2.2
35
+ Requires-Dist: langchain-openai<2.0.0,>=1.2.1
36
36
  Requires-Dist: langchain<2.0.0,>=1.2.15
37
37
  Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.0.0
38
38
  Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.15
@@ -55,76 +55,76 @@ Requires-Dist: textual<9.0.0,>=8.0.0
55
55
  Requires-Dist: tomli-w<2.0.0,>=1.0.0
56
56
  Requires-Dist: uuid-utils<1.0.0,>=0.10.0
57
57
  Provides-Extra: agentcore
58
- Requires-Dist: langchain-agentcore-codeinterpreter>=0.0.1; extra == 'agentcore'
58
+ Requires-Dist: langchain-agentcore-codeinterpreter>=0.0.2; extra == 'agentcore'
59
59
  Provides-Extra: all-providers
60
60
  Requires-Dist: langchain-anthropic<2.0.0,>=1.4.2; extra == 'all-providers'
61
- Requires-Dist: langchain-aws<2.0.0,>=1.0.0; extra == 'all-providers'
62
- Requires-Dist: langchain-baseten<1.0.0,>=0.1.9; extra == 'all-providers'
63
- Requires-Dist: langchain-cohere<1.0.0,>=0.5.0; extra == 'all-providers'
64
- Requires-Dist: langchain-deepseek<2.0.0,>=1.0.0; extra == 'all-providers'
65
- Requires-Dist: langchain-fireworks<2.0.0,>=1.0.0; extra == 'all-providers'
66
- Requires-Dist: langchain-google-genai<5.0.0,>=4.2.1; extra == 'all-providers'
67
- Requires-Dist: langchain-google-vertexai<4.0.0,>=3.0.0; extra == 'all-providers'
68
- Requires-Dist: langchain-groq<2.0.0,>=1.0.0; extra == 'all-providers'
69
- Requires-Dist: langchain-huggingface<2.0.0,>=1.0.0; extra == 'all-providers'
70
- Requires-Dist: langchain-ibm<2.0.0,>=1.0.0; extra == 'all-providers'
71
- Requires-Dist: langchain-litellm<2.0.0,>=0.6.1; extra == 'all-providers'
72
- Requires-Dist: langchain-mistralai<2.0.0,>=1.0.0; extra == 'all-providers'
73
- Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.0.0; extra == 'all-providers'
74
- Requires-Dist: langchain-ollama<2.0.0,>=1.0.0; extra == 'all-providers'
75
- Requires-Dist: langchain-openai<2.0.0,>=1.1.12; extra == 'all-providers'
76
- Requires-Dist: langchain-openrouter<2.0.0,>=0.2.0; extra == 'all-providers'
77
- Requires-Dist: langchain-perplexity<2.0.0,>=1.0.0; extra == 'all-providers'
78
- Requires-Dist: langchain-xai<2.0.0,>=1.0.0; extra == 'all-providers'
61
+ Requires-Dist: langchain-aws<2.0.0,>=1.4.5; extra == 'all-providers'
62
+ Requires-Dist: langchain-baseten<1.0.0,>=0.2.0; extra == 'all-providers'
63
+ Requires-Dist: langchain-cohere<1.0.0,>=0.5.1; extra == 'all-providers'
64
+ Requires-Dist: langchain-deepseek<2.0.0,>=1.0.1; extra == 'all-providers'
65
+ Requires-Dist: langchain-fireworks<2.0.0,>=1.2.0; extra == 'all-providers'
66
+ Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2; extra == 'all-providers'
67
+ Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.2; extra == 'all-providers'
68
+ Requires-Dist: langchain-groq<2.0.0,>=1.1.2; extra == 'all-providers'
69
+ Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'all-providers'
70
+ Requires-Dist: langchain-ibm<2.0.0,>=1.0.7; extra == 'all-providers'
71
+ Requires-Dist: langchain-litellm<2.0.0,>=0.6.4; extra == 'all-providers'
72
+ Requires-Dist: langchain-mistralai<2.0.0,>=1.1.2; extra == 'all-providers'
73
+ Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.2.1; extra == 'all-providers'
74
+ Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'all-providers'
75
+ Requires-Dist: langchain-openai<2.0.0,>=1.2.1; extra == 'all-providers'
76
+ Requires-Dist: langchain-openrouter<2.0.0,>=0.2.1; extra == 'all-providers'
77
+ Requires-Dist: langchain-perplexity<2.0.0,>=1.1.0; extra == 'all-providers'
78
+ Requires-Dist: langchain-xai<2.0.0,>=1.2.2; extra == 'all-providers'
79
79
  Provides-Extra: all-sandboxes
80
- Requires-Dist: langchain-agentcore-codeinterpreter>=0.0.1; extra == 'all-sandboxes'
81
- Requires-Dist: langchain-daytona>=0.0.4; extra == 'all-sandboxes'
82
- Requires-Dist: langchain-modal>=0.0.2; extra == 'all-sandboxes'
83
- Requires-Dist: langchain-runloop>=0.0.3; extra == 'all-sandboxes'
80
+ Requires-Dist: langchain-agentcore-codeinterpreter>=0.0.2; extra == 'all-sandboxes'
81
+ Requires-Dist: langchain-daytona>=0.0.5; extra == 'all-sandboxes'
82
+ Requires-Dist: langchain-modal>=0.0.3; extra == 'all-sandboxes'
83
+ Requires-Dist: langchain-runloop>=0.0.4; extra == 'all-sandboxes'
84
84
  Provides-Extra: anthropic
85
85
  Requires-Dist: langchain-anthropic<2.0.0,>=1.4.2; extra == 'anthropic'
86
86
  Provides-Extra: baseten
87
- Requires-Dist: langchain-baseten<1.0.0,>=0.1.9; extra == 'baseten'
87
+ Requires-Dist: langchain-baseten<1.0.0,>=0.2.0; extra == 'baseten'
88
88
  Provides-Extra: bedrock
89
- Requires-Dist: langchain-aws<2.0.0,>=1.0.0; extra == 'bedrock'
89
+ Requires-Dist: langchain-aws<2.0.0,>=1.4.5; extra == 'bedrock'
90
90
  Provides-Extra: cohere
91
- Requires-Dist: langchain-cohere<1.0.0,>=0.5.0; extra == 'cohere'
91
+ Requires-Dist: langchain-cohere<1.0.0,>=0.5.1; extra == 'cohere'
92
92
  Provides-Extra: daytona
93
- Requires-Dist: langchain-daytona>=0.0.4; extra == 'daytona'
93
+ Requires-Dist: langchain-daytona>=0.0.5; extra == 'daytona'
94
94
  Provides-Extra: deepseek
95
- Requires-Dist: langchain-deepseek<2.0.0,>=1.0.0; extra == 'deepseek'
95
+ Requires-Dist: langchain-deepseek<2.0.0,>=1.0.1; extra == 'deepseek'
96
96
  Provides-Extra: fireworks
97
- Requires-Dist: langchain-fireworks<2.0.0,>=1.0.0; extra == 'fireworks'
97
+ Requires-Dist: langchain-fireworks<2.0.0,>=1.2.0; extra == 'fireworks'
98
98
  Provides-Extra: google-genai
99
- Requires-Dist: langchain-google-genai<5.0.0,>=4.2.1; extra == 'google-genai'
99
+ Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2; extra == 'google-genai'
100
100
  Provides-Extra: groq
101
- Requires-Dist: langchain-groq<2.0.0,>=1.0.0; extra == 'groq'
101
+ Requires-Dist: langchain-groq<2.0.0,>=1.1.2; extra == 'groq'
102
102
  Provides-Extra: huggingface
103
- Requires-Dist: langchain-huggingface<2.0.0,>=1.0.0; extra == 'huggingface'
103
+ Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'huggingface'
104
104
  Provides-Extra: ibm
105
- Requires-Dist: langchain-ibm<2.0.0,>=1.0.0; extra == 'ibm'
105
+ Requires-Dist: langchain-ibm<2.0.0,>=1.0.7; extra == 'ibm'
106
106
  Provides-Extra: litellm
107
- Requires-Dist: langchain-litellm<2.0.0,>=0.6.1; extra == 'litellm'
107
+ Requires-Dist: langchain-litellm<2.0.0,>=0.6.4; extra == 'litellm'
108
108
  Provides-Extra: mistralai
109
- Requires-Dist: langchain-mistralai<2.0.0,>=1.0.0; extra == 'mistralai'
109
+ Requires-Dist: langchain-mistralai<2.0.0,>=1.1.2; extra == 'mistralai'
110
110
  Provides-Extra: modal
111
- Requires-Dist: langchain-modal>=0.0.2; extra == 'modal'
111
+ Requires-Dist: langchain-modal>=0.0.3; extra == 'modal'
112
112
  Provides-Extra: nvidia
113
- Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.0.0; extra == 'nvidia'
113
+ Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.2.1; extra == 'nvidia'
114
114
  Provides-Extra: ollama
115
- Requires-Dist: langchain-ollama<2.0.0,>=1.0.0; extra == 'ollama'
115
+ Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'ollama'
116
116
  Provides-Extra: openai
117
- Requires-Dist: langchain-openai<2.0.0,>=1.1.12; extra == 'openai'
117
+ Requires-Dist: langchain-openai<2.0.0,>=1.2.1; extra == 'openai'
118
118
  Provides-Extra: openrouter
119
- Requires-Dist: langchain-openrouter<2.0.0,>=0.2.0; extra == 'openrouter'
119
+ Requires-Dist: langchain-openrouter<2.0.0,>=0.2.1; extra == 'openrouter'
120
120
  Provides-Extra: perplexity
121
- Requires-Dist: langchain-perplexity<2.0.0,>=1.0.0; extra == 'perplexity'
121
+ Requires-Dist: langchain-perplexity<2.0.0,>=1.1.0; extra == 'perplexity'
122
122
  Provides-Extra: runloop
123
- Requires-Dist: langchain-runloop>=0.0.3; extra == 'runloop'
123
+ Requires-Dist: langchain-runloop>=0.0.4; extra == 'runloop'
124
124
  Provides-Extra: vertexai
125
- Requires-Dist: langchain-google-vertexai<4.0.0,>=3.0.0; extra == 'vertexai'
125
+ Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.2; extra == 'vertexai'
126
126
  Provides-Extra: xai
127
- Requires-Dist: langchain-xai<2.0.0,>=1.0.0; extra == 'xai'
127
+ Requires-Dist: langchain-xai<2.0.0,>=1.2.2; extra == 'xai'
128
128
  Description-Content-Type: text/markdown
129
129
 
130
130
  # 🧠🤖 Deep Agents CLI
@@ -132,7 +132,7 @@ Description-Content-Type: text/markdown
132
132
  [![PyPI - Version](https://img.shields.io/pypi/v/deepagents-cli?label=%20)](https://pypi.org/project/deepagents-cli/#history)
133
133
  [![PyPI - License](https://img.shields.io/pypi/l/deepagents-cli)](https://opensource.org/licenses/MIT)
134
134
  [![PyPI - Downloads](https://img.shields.io/pepy/dt/deepagents-cli)](https://pypistats.org/packages/deepagents-cli)
135
- [![Twitter](https://img.shields.io/twitter/url/https/twitter.com/langchain.svg?style=social&label=Follow%20%40LangChain)](https://x.com/langchain)
135
+ [![Twitter](https://img.shields.io/twitter/url/https/twitter.com/langchain_oss.svg?style=social&label=Follow%20%40LangChain)](https://x.com/langchain_oss)
136
136
 
137
137
  <p align="center">
138
138
  <img src="https://raw.githubusercontent.com/langchain-ai/deepagents/main/libs/cli/images/cli.png" alt="Deep Agents CLI" width="600"/>
@@ -3,7 +3,7 @@
3
3
  [![PyPI - Version](https://img.shields.io/pypi/v/deepagents-cli?label=%20)](https://pypi.org/project/deepagents-cli/#history)
4
4
  [![PyPI - License](https://img.shields.io/pypi/l/deepagents-cli)](https://opensource.org/licenses/MIT)
5
5
  [![PyPI - Downloads](https://img.shields.io/pepy/dt/deepagents-cli)](https://pypistats.org/packages/deepagents-cli)
6
- [![Twitter](https://img.shields.io/twitter/url/https/twitter.com/langchain.svg?style=social&label=Follow%20%40LangChain)](https://x.com/langchain)
6
+ [![Twitter](https://img.shields.io/twitter/url/https/twitter.com/langchain_oss.svg?style=social&label=Follow%20%40LangChain)](https://x.com/langchain_oss)
7
7
 
8
8
  <p align="center">
9
9
  <img src="https://raw.githubusercontent.com/langchain-ai/deepagents/main/libs/cli/images/cli.png" alt="Deep Agents CLI" width="600"/>
@@ -1,6 +1,6 @@
1
1
  """Version information and lightweight constants for `deepagents-cli`."""
2
2
 
3
- __version__ = "0.0.43" # x-release-please-version
3
+ __version__ = "0.0.45" # x-release-please-version
4
4
 
5
5
  DOCS_URL = "https://docs.langchain.com/oss/python/deepagents/cli"
6
6
  """URL for `deepagents-cli` documentation."""
@@ -849,6 +849,13 @@ class DeepAgentsApp(App):
849
849
  self._shell_running = False
850
850
  """True while a `!` shell command is executing."""
851
851
 
852
+ self._prewarm_worker: Worker[None] | None = None
853
+ """Background worker that prewarms `deepagents`/LangChain imports.
854
+
855
+ Awaited via `_await_prewarm_imports` before any caller on the event
856
+ loop re-enters the same module graph (see that method for why).
857
+ """
858
+
852
859
  # Lifecycle flags & re-entry guards
853
860
  self._connecting = server_kwargs is not None
854
861
  """True while the backing server is being started or restarted.
@@ -1038,6 +1045,39 @@ class DeepAgentsApp(App):
1038
1045
  colors = theme.get_theme_colors(self)
1039
1046
  return theme.get_css_variable_defaults(colors=colors)
1040
1047
 
1048
+ def _fatal_error(self) -> None:
1049
+ """Render an unhandled-exception traceback without leaking secrets.
1050
+
1051
+ Textual's default `_fatal_error` renders with `show_locals=True`,
1052
+ which prints local variables — including resolved API keys carried
1053
+ in `kwargs` dicts on the call path through `create_model`. Locals
1054
+ are only re-enabled when `DEEPAGENTS_CLI_DEBUG` matches a truthy
1055
+ token (`"1"`, `"true"`, `"yes"`); any other value, including `"0"`
1056
+ and `"false"`, leaves them disabled.
1057
+ """
1058
+ try:
1059
+ import rich
1060
+ from rich.segment import Segments
1061
+ from rich.traceback import Traceback
1062
+
1063
+ from deepagents_cli._env_vars import DEBUG
1064
+ except Exception: # noqa: BLE001 # mid-teardown import errors fall through to Textual's default rather than double-fault and swallow the original crash
1065
+ super()._fatal_error()
1066
+ return
1067
+
1068
+ self.bell()
1069
+ show_locals = os.environ.get(DEBUG, "").lower() in {"1", "true", "yes"}
1070
+ traceback = Traceback(
1071
+ show_locals=show_locals,
1072
+ width=None,
1073
+ locals_max_length=5,
1074
+ suppress=[rich],
1075
+ )
1076
+ self._exit_renderables.append(
1077
+ Segments(self.console.render(traceback, self.console.options))
1078
+ )
1079
+ self._close_messages_no_wait()
1080
+
1041
1081
  def compose(self) -> ComposeResult:
1042
1082
  """Compose the application layout.
1043
1083
 
@@ -1108,7 +1148,8 @@ class DeepAgentsApp(App):
1108
1148
  # Prewarm heavy imports in a thread while the first frame renders.
1109
1149
  # The user can't type yet, so GIL contention is harmless. By the
1110
1150
  # time _post_paint_init fires its inline imports are dict lookups.
1111
- self.run_worker(
1151
+ # Handle is captured so `_await_prewarm_imports` can block on it.
1152
+ self._prewarm_worker = self.run_worker(
1112
1153
  asyncio.to_thread(self._prewarm_deferred_imports),
1113
1154
  exclusive=True,
1114
1155
  group="startup-import-prewarm",
@@ -1580,6 +1621,10 @@ class DeepAgentsApp(App):
1580
1621
  # does the heavy langchain import + SDK init and may refine them
1581
1622
  # (e.g., context_limit from the model profile).
1582
1623
  if self._model_kwargs is not None:
1624
+ # Block on prewarm before re-entering the import graph; see
1625
+ # `_await_prewarm_imports` for the deadlock rationale.
1626
+ await self._await_prewarm_imports()
1627
+
1583
1628
  from deepagents_cli.config import create_model
1584
1629
  from deepagents_cli.model_config import ModelConfigError, save_recent_model
1585
1630
 
@@ -1719,6 +1764,30 @@ class DeepAgentsApp(App):
1719
1764
  self._queued_widgets.clear()
1720
1765
  self._deferred_actions.clear()
1721
1766
 
1767
+ async def _await_prewarm_imports(self) -> None:
1768
+ """Wait for prewarm imports before re-entering their module graph.
1769
+
1770
+ Prevents a multi-threaded import deadlock: the prewarm worker runs in
1771
+ `asyncio.to_thread`, and any caller that imports `deepagents` or
1772
+ LangChain from the event-loop thread while it's still running can
1773
+ race on partially-initialized module locks.
1774
+
1775
+ `CancelledError` propagates so app shutdown isn't silently absorbed.
1776
+ """
1777
+ from textual.worker import WorkerFailed
1778
+
1779
+ worker = self._prewarm_worker
1780
+ if worker is None:
1781
+ return
1782
+ try:
1783
+ await worker.wait()
1784
+ except WorkerFailed:
1785
+ # Prewarm body best-efforts third-party imports and already
1786
+ # warns; logging at WARNING here surfaces unexpected failures
1787
+ # (e.g. a regression that breaks a non-optional import) that
1788
+ # the body itself didn't catch.
1789
+ logger.warning("Import prewarm worker failed", exc_info=True)
1790
+
1722
1791
  @staticmethod
1723
1792
  def _prewarm_deferred_imports() -> None:
1724
1793
  """Background-load modules deferred from the startup path.
@@ -156,24 +156,76 @@ def find_project_agent_md(project_root: Path) -> list[Path]:
156
156
 
157
157
  Both files will be loaded and combined if both exist.
158
158
 
159
+ Candidates with symlinked path components are followed only when the
160
+ resolved target stays inside `project_root`. The returned `Path` is the
161
+ resolved target when any symlink component was traversed, so
162
+ `FilesystemBackend.download_files` opens a regular file rather than
163
+ tripping `O_NOFOLLOW` on the link itself. Symlinks pointing outside the
164
+ project root, symlink loops, and unreadable parents are skipped with a
165
+ warning. Broken symlinks are treated as missing files (no warning),
166
+ matching the pre-existing behavior for absent candidates.
167
+
168
+ Why: project AGENTS.md is auto-discovered and loaded into the system
169
+ prompt before the first model call. Without the in-tree check, a
170
+ malicious clone could ship `AGENTS.md -> ~/.ssh/config` (or any other
171
+ locally-readable file) and have its contents injected as agent
172
+ instructions on first run.
173
+
159
174
  Args:
160
175
  project_root: Path to the project root directory.
161
176
 
162
177
  Returns:
163
- Existing AGENTS.md paths.
164
-
165
- Empty if neither file exists, one entry if only one is present, or
166
- two entries if both locations have the file.
178
+ Existing AGENTS.md paths, with in-tree symlinked path components
179
+ pre-resolved to their targets. Empty if neither file exists, one
180
+ entry if only one is present, or two entries if both locations
181
+ have the file.
167
182
  """
183
+ # Resolve the root once so the candidate-equality check below works even
184
+ # when the caller passes a non-canonical `project_root` (e.g., macOS
185
+ # `/var` -> `/private/var`, or a path with symlinked ancestors).
186
+ project_root_resolved = project_root.resolve()
168
187
  candidates = [
169
- project_root / ".deepagents" / "AGENTS.md",
170
- project_root / "AGENTS.md",
188
+ project_root_resolved / ".deepagents" / "AGENTS.md",
189
+ project_root_resolved / "AGENTS.md",
171
190
  ]
172
191
  paths: list[Path] = []
173
192
  for candidate in candidates:
174
193
  try:
175
- if candidate.exists():
176
- paths.append(candidate)
177
- except OSError:
178
- pass
194
+ # Single syscall handles existence, broken symlinks, loops, and
195
+ # canonicalization. `strict=True` raises rather than returning
196
+ # the unresolved path.
197
+ resolved = candidate.resolve(strict=True)
198
+ except FileNotFoundError:
199
+ # Absent file or broken symlink — matches the pre-existing
200
+ # silent-skip behavior for missing candidates. `Path.exists()`
201
+ # also returns False for symlink loops on some Python versions,
202
+ # so loops do NOT come through here; see the OSError branch.
203
+ continue
204
+ except (OSError, RuntimeError) as exc:
205
+ # `OSError(ELOOP)` on Python 3.13+, `RuntimeError("Symlink loop
206
+ # ...")` on 3.11-3.12; bare `OSError` for permission/unreadable
207
+ # parent. Security-relevant — warn and skip.
208
+ logger.warning(
209
+ "Skipping AGENTS.md candidate %s: %s",
210
+ candidate,
211
+ exc,
212
+ )
213
+ continue
214
+
215
+ try:
216
+ resolved.relative_to(project_root_resolved)
217
+ except ValueError:
218
+ logger.warning(
219
+ "Skipping AGENTS.md symlink %s: target %s is outside "
220
+ "the project root %s",
221
+ candidate,
222
+ resolved,
223
+ project_root_resolved,
224
+ )
225
+ continue
226
+
227
+ if candidate.absolute() == resolved:
228
+ paths.append(candidate)
229
+ else:
230
+ paths.append(resolved)
179
231
  return paths
@@ -332,6 +332,12 @@ class ChatTextArea(TextArea):
332
332
  show=False,
333
333
  priority=True,
334
334
  ),
335
+ Binding(
336
+ "ctrl+backspace,alt+backspace",
337
+ "delete_word_left",
338
+ "Delete left to start of word",
339
+ show=False,
340
+ ),
335
341
  ]
336
342
  """Key bindings for the chat text area.
337
343
 
@@ -60,7 +60,7 @@ class LoadingWidget(Static):
60
60
  LoadingWidget {
61
61
  height: auto;
62
62
  padding: 0 1;
63
- margin-top: 1;
63
+ margin: 0 0 1 0;
64
64
  }
65
65
 
66
66
  LoadingWidget .loading-container {
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "deepagents-cli"
7
- version = "0.0.43"
7
+ version = "0.0.45"
8
8
  description = "Terminal interface for Deep Agents - interactive AI agent with file operations, shell access, and sub-agent capabilities."
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -26,7 +26,7 @@ classifiers = [
26
26
  ]
27
27
  dependencies = [
28
28
  # Framework
29
- "deepagents==0.5.4",
29
+ "deepagents==0.5.5",
30
30
  "langchain>=1.2.15,<2.0.0",
31
31
  "langgraph>=1.1.6,<2.0.0",
32
32
  "langgraph-checkpoint-sqlite>=3.0.0,<4.0.0",
@@ -38,8 +38,8 @@ dependencies = [
38
38
 
39
39
  # Core model providers - others are added as optional
40
40
  "langchain-anthropic>=1.4.2,<2.0.0",
41
- "langchain-google-genai>=4.2.1,<5.0.0",
42
- "langchain-openai>=1.1.12,<2.0.0",
41
+ "langchain-google-genai>=4.2.2,<5.0.0",
42
+ "langchain-openai>=1.2.1,<2.0.0",
43
43
 
44
44
  # UI/Terminal
45
45
  # Workaround for Textualize/textual#6378 lives in `_textual_patches.py`.
@@ -74,7 +74,7 @@ dependencies = [
74
74
  "tomli-w>=1.0.0,<2.0.0",
75
75
 
76
76
  # MCP
77
- "langchain-mcp-adapters>=0.2.0,<1.0.0",
77
+ "langchain-mcp-adapters>=0.2.2,<1.0.0",
78
78
 
79
79
  # ACP
80
80
  "deepagents-acp>=0.0.4",
@@ -83,33 +83,33 @@ dependencies = [
83
83
  [project.optional-dependencies]
84
84
  # Model providers
85
85
  anthropic = ["langchain-anthropic>=1.4.2,<2.0.0"]
86
- baseten = ["langchain-baseten>=0.1.9,<1.0.0"]
87
- bedrock = ["langchain-aws>=1.0.0,<2.0.0"]
88
- cohere = ["langchain-cohere>=0.5.0,<1.0.0"]
89
- deepseek = ["langchain-deepseek>=1.0.0,<2.0.0"]
90
- fireworks = ["langchain-fireworks>=1.0.0,<2.0.0"]
91
- google-genai = ["langchain-google-genai>=4.2.1,<5.0.0"]
92
- groq = ["langchain-groq>=1.0.0,<2.0.0"]
93
- huggingface = ["langchain-huggingface>=1.0.0,<2.0.0"]
94
- ibm = ["langchain-ibm>=1.0.0,<2.0.0"]
95
- litellm = ["langchain-litellm>=0.6.1,<2.0.0"]
96
- mistralai = ["langchain-mistralai>=1.0.0,<2.0.0"]
97
- nvidia = ["langchain-nvidia-ai-endpoints>=1.0.0,<2.0.0"]
98
- ollama = ["langchain-ollama>=1.0.0,<2.0.0"]
99
- openai = ["langchain-openai>=1.1.12,<2.0.0"]
100
- openrouter = ["langchain-openrouter>=0.2.0,<2.0.0"]
101
- perplexity = ["langchain-perplexity>=1.0.0,<2.0.0"]
102
- vertexai = ["langchain-google-vertexai>=3.0.0,<4.0.0"]
103
- xai = ["langchain-xai>=1.0.0,<2.0.0"]
86
+ baseten = ["langchain-baseten>=0.2.0,<1.0.0"]
87
+ bedrock = ["langchain-aws>=1.4.5,<2.0.0"]
88
+ cohere = ["langchain-cohere>=0.5.1,<1.0.0"]
89
+ deepseek = ["langchain-deepseek>=1.0.1,<2.0.0"]
90
+ fireworks = ["langchain-fireworks>=1.2.0,<2.0.0"]
91
+ google-genai = ["langchain-google-genai>=4.2.2,<5.0.0"]
92
+ groq = ["langchain-groq>=1.1.2,<2.0.0"]
93
+ huggingface = ["langchain-huggingface>=1.2.2,<2.0.0"]
94
+ ibm = ["langchain-ibm>=1.0.7,<2.0.0"]
95
+ litellm = ["langchain-litellm>=0.6.4,<2.0.0"]
96
+ mistralai = ["langchain-mistralai>=1.1.2,<2.0.0"]
97
+ nvidia = ["langchain-nvidia-ai-endpoints>=1.2.1,<2.0.0"]
98
+ ollama = ["langchain-ollama>=1.1.0,<2.0.0"]
99
+ openai = ["langchain-openai>=1.2.1,<2.0.0"]
100
+ openrouter = ["langchain-openrouter>=0.2.1,<2.0.0"]
101
+ perplexity = ["langchain-perplexity>=1.1.0,<2.0.0"]
102
+ vertexai = ["langchain-google-vertexai>=3.2.2,<4.0.0"]
103
+ xai = ["langchain-xai>=1.2.2,<2.0.0"]
104
104
  all-providers = [
105
105
  "deepagents-cli[anthropic,baseten,bedrock,cohere,deepseek,fireworks,google-genai,groq,huggingface,ibm,litellm,mistralai,nvidia,ollama,openai,openrouter,perplexity,vertexai,xai]",
106
106
  ]
107
107
 
108
108
  # Sandbox providers
109
- agentcore = ["langchain-agentcore-codeinterpreter>=0.0.1"]
110
- daytona = ["langchain-daytona>=0.0.4"]
111
- modal = ["langchain-modal>=0.0.2"]
112
- runloop = ["langchain-runloop>=0.0.3"]
109
+ agentcore = ["langchain-agentcore-codeinterpreter>=0.0.2"]
110
+ daytona = ["langchain-daytona>=0.0.5"]
111
+ modal = ["langchain-modal>=0.0.3"]
112
+ runloop = ["langchain-runloop>=0.0.4"]
113
113
  all-sandboxes = [
114
114
  "deepagents-cli[agentcore,daytona,modal,runloop]",
115
115
  ]
@@ -125,7 +125,7 @@ Documentation = "https://reference.langchain.com/python/deepagents/"
125
125
  Repository = "https://github.com/langchain-ai/deepagents"
126
126
  Issues = "https://github.com/langchain-ai/deepagents/issues"
127
127
  Changelog = "https://github.com/langchain-ai/deepagents/blob/main/libs/cli/CHANGELOG.md"
128
- Twitter = "https://x.com/LangChain"
128
+ Twitter = "https://x.com/langchain_oss"
129
129
  Slack = "https://www.langchain.com/join-community"
130
130
  Reddit = "https://www.reddit.com/r/LangChain/"
131
131