deepagents-code 0.1.4__tar.gz → 0.1.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/CHANGELOG.md +6 -0
  2. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/PKG-INFO +4 -5
  3. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/README.md +1 -1
  4. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/_version.py +1 -1
  5. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/sessions.py +50 -4
  6. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/pyproject.toml +3 -4
  7. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/scripts/install.sh +51 -5
  8. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_sessions.py +45 -0
  9. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/uv.lock +10 -12
  10. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/.gitignore +0 -0
  11. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/AGENTS.md +0 -0
  12. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/COMMANDS.md +0 -0
  13. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/DEV.md +0 -0
  14. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/Makefile +0 -0
  15. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/THREAT_MODEL.md +0 -0
  16. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/__init__.py +0 -0
  17. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/__main__.py +0 -0
  18. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/_ask_user_types.py +0 -0
  19. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/_cli_context.py +0 -0
  20. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/_constants.py +0 -0
  21. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/_debug.py +0 -0
  22. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/_env_vars.py +0 -0
  23. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/_git.py +0 -0
  24. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/_server_config.py +0 -0
  25. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/_session_stats.py +0 -0
  26. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/_startup_error.py +0 -0
  27. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/_testing_models.py +0 -0
  28. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/_textual_patches.py +0 -0
  29. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/agent.py +0 -0
  30. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/app.py +0 -0
  31. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/app.tcss +0 -0
  32. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/ask_user.py +0 -0
  33. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/auth_store.py +0 -0
  34. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/built_in_skills/__init__.py +0 -0
  35. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
  36. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
  37. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  38. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  39. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/clipboard.py +0 -0
  40. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/command_registry.py +0 -0
  41. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/config.py +0 -0
  42. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/configurable_model.py +0 -0
  43. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/default_agent_prompt.md +0 -0
  44. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/editor.py +0 -0
  45. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/event_bus.py +0 -0
  46. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/extras_info.py +0 -0
  47. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/file_ops.py +0 -0
  48. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/formatting.py +0 -0
  49. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/hooks.py +0 -0
  50. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/input.py +0 -0
  51. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/integrations/__init__.py +0 -0
  52. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/integrations/sandbox_factory.py +0 -0
  53. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/integrations/sandbox_provider.py +0 -0
  54. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/iterm_cursor_guide.py +0 -0
  55. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/local_context.py +0 -0
  56. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/main.py +0 -0
  57. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/mcp_auth.py +0 -0
  58. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/mcp_commands.py +0 -0
  59. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/mcp_disabled.py +0 -0
  60. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/mcp_login_service.py +0 -0
  61. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/mcp_oauth_ui.py +0 -0
  62. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/mcp_providers/__init__.py +0 -0
  63. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/mcp_providers/_registry.py +0 -0
  64. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/mcp_providers/base.py +0 -0
  65. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/mcp_providers/github.py +0 -0
  66. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/mcp_providers/slack.py +0 -0
  67. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/mcp_tools.py +0 -0
  68. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/mcp_trust.py +0 -0
  69. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/media_utils.py +0 -0
  70. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/model_config.py +0 -0
  71. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/non_interactive.py +0 -0
  72. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/notifications.py +0 -0
  73. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/offload.py +0 -0
  74. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/onboarding.py +0 -0
  75. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/output.py +0 -0
  76. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/project_utils.py +0 -0
  77. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/py.typed +0 -0
  78. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/remote_client.py +0 -0
  79. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/server.py +0 -0
  80. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/server_graph.py +0 -0
  81. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/server_manager.py +0 -0
  82. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/skills/__init__.py +0 -0
  83. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/skills/commands.py +0 -0
  84. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/skills/invocation.py +0 -0
  85. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/skills/load.py +0 -0
  86. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/state_migration.py +0 -0
  87. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/subagents.py +0 -0
  88. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/system_prompt.md +0 -0
  89. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/terminal_capabilities.py +0 -0
  90. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/terminal_escape.py +0 -0
  91. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/textual_adapter.py +0 -0
  92. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/theme.py +0 -0
  93. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/token_state.py +0 -0
  94. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/tool_display.py +0 -0
  95. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/tools.py +0 -0
  96. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/ui.py +0 -0
  97. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/unicode_security.py +0 -0
  98. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/update_check.py +0 -0
  99. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/__init__.py +0 -0
  100. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/_links.py +0 -0
  101. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/agent_selector.py +0 -0
  102. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/approval.py +0 -0
  103. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/ask_user.py +0 -0
  104. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/auth.py +0 -0
  105. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/autocomplete.py +0 -0
  106. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/chat_input.py +0 -0
  107. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/diff.py +0 -0
  108. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/history.py +0 -0
  109. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/launch_init.py +0 -0
  110. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/loading.py +0 -0
  111. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/mcp_login.py +0 -0
  112. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/mcp_reconnect.py +0 -0
  113. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/mcp_viewer.py +0 -0
  114. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/message_store.py +0 -0
  115. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/messages.py +0 -0
  116. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/model_selector.py +0 -0
  117. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/notification_center.py +0 -0
  118. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/notification_detail.py +0 -0
  119. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/notification_settings.py +0 -0
  120. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/status.py +0 -0
  121. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/theme_selector.py +0 -0
  122. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/thread_selector.py +0 -0
  123. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/tool_renderers.py +0 -0
  124. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/tool_widgets.py +0 -0
  125. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/update_available.py +0 -0
  126. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/update_progress.py +0 -0
  127. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/deepagents_code/widgets/welcome.py +0 -0
  128. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/examples/skills/arxiv-search/SKILL.md +0 -0
  129. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  130. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/examples/skills/langgraph-docs/SKILL.md +0 -0
  131. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/examples/skills/skill-creator/SKILL.md +0 -0
  132. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  133. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  134. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/examples/skills/web-research/SKILL.md +0 -0
  135. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/images/tui.png +0 -0
  136. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/scripts/check_imports.py +0 -0
  137. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/scripts/debug_server.sh +0 -0
  138. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/scripts/generate_commands_catalog.py +0 -0
  139. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/README.md +0 -0
  140. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/integration_tests/__init__.py +0 -0
  141. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/integration_tests/benchmarks/__init__.py +0 -0
  142. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
  143. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
  144. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/integration_tests/conftest.py +0 -0
  145. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/integration_tests/test_acp_mode.py +0 -0
  146. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/integration_tests/test_compact_resume.py +0 -0
  147. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/integration_tests/test_sandbox_factory.py +0 -0
  148. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/integration_tests/test_sandbox_operations.py +0 -0
  149. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/__init__.py +0 -0
  150. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/conftest.py +0 -0
  151. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/skills/__init__.py +0 -0
  152. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/skills/test_commands.py +0 -0
  153. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/skills/test_load.py +0 -0
  154. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/skills/test_skills_json.py +0 -0
  155. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_agent.py +0 -0
  156. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_agent_friendly.py +0 -0
  157. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_agent_selector.py +0 -0
  158. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_app.py +0 -0
  159. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_approval.py +0 -0
  160. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_args.py +0 -0
  161. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_ask_user.py +0 -0
  162. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_ask_user_middleware.py +0 -0
  163. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_auth_store.py +0 -0
  164. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_auth_widgets.py +0 -0
  165. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_autocomplete.py +0 -0
  166. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_charset.py +0 -0
  167. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_chat_input.py +0 -0
  168. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_clipboard.py +0 -0
  169. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_command_registry.py +0 -0
  170. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_compact_tool.py +0 -0
  171. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_config.py +0 -0
  172. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_configurable_model.py +0 -0
  173. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_debug.py +0 -0
  174. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_editor.py +0 -0
  175. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_end_to_end.py +0 -0
  176. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_env_vars.py +0 -0
  177. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_event_bus.py +0 -0
  178. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_exception_handling.py +0 -0
  179. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_extras_info.py +0 -0
  180. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_file_ops.py +0 -0
  181. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_formatting.py +0 -0
  182. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_git.py +0 -0
  183. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_history.py +0 -0
  184. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_hooks.py +0 -0
  185. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_imports.py +0 -0
  186. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_input_parsing.py +0 -0
  187. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
  188. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_launch_init.py +0 -0
  189. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_links.py +0 -0
  190. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_loading.py +0 -0
  191. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_local_context.py +0 -0
  192. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_main.py +0 -0
  193. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_main_acp_mode.py +0 -0
  194. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_main_args.py +0 -0
  195. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_mcp_auth.py +0 -0
  196. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_mcp_commands.py +0 -0
  197. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_mcp_disabled.py +0 -0
  198. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_mcp_login_modal.py +0 -0
  199. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_mcp_login_service.py +0 -0
  200. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
  201. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_mcp_reconnect.py +0 -0
  202. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_mcp_tools.py +0 -0
  203. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_mcp_trust.py +0 -0
  204. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_mcp_viewer.py +0 -0
  205. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_media_utils.py +0 -0
  206. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_message_store.py +0 -0
  207. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_messages.py +0 -0
  208. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_model_config.py +0 -0
  209. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_model_selector.py +0 -0
  210. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_model_switch.py +0 -0
  211. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_non_interactive.py +0 -0
  212. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_notification_center.py +0 -0
  213. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_notification_detail.py +0 -0
  214. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_notifications.py +0 -0
  215. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_offload.py +0 -0
  216. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_offload_dict_messages.py +0 -0
  217. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_onboarding.py +0 -0
  218. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_output.py +0 -0
  219. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_reload.py +0 -0
  220. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_remote_client.py +0 -0
  221. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_sandbox_factory.py +0 -0
  222. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_server.py +0 -0
  223. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_server_config.py +0 -0
  224. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_server_graph.py +0 -0
  225. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_server_helpers.py +0 -0
  226. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_server_manager.py +0 -0
  227. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_session_stats.py +0 -0
  228. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_shell_allow_list.py +0 -0
  229. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_skill_invocation.py +0 -0
  230. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_startup_fast_paths.py +0 -0
  231. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_state_migration.py +0 -0
  232. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_status.py +0 -0
  233. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_subagents.py +0 -0
  234. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_terminal_capabilities.py +0 -0
  235. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_terminal_escape.py +0 -0
  236. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_textual_adapter.py +0 -0
  237. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_textual_patches.py +0 -0
  238. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_theme.py +0 -0
  239. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_thread_selector.py +0 -0
  240. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_token_tracker.py +0 -0
  241. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_tool_display.py +0 -0
  242. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_ui.py +0 -0
  243. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_unicode_security.py +0 -0
  244. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_update_available.py +0 -0
  245. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_update_check.py +0 -0
  246. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_update_progress.py +0 -0
  247. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_version.py +0 -0
  248. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/test_welcome.py +0 -0
  249. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/tools/__init__.py +0 -0
  250. {deepagents_code-0.1.4 → deepagents_code-0.1.5}/tests/unit_tests/tools/test_fetch_url.py +0 -0
@@ -1,5 +1,11 @@
1
1
  # Deep Agents Code Changelog
2
2
 
3
+ ## [0.1.5](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.4...deepagents-code==0.1.5) (2026-05-26)
4
+
5
+ ### Bug Fixes
6
+
7
+ * Join aiosqlite worker thread after close ([#3585](https://github.com/langchain-ai/deepagents/issues/3585)) ([152cec0](https://github.com/langchain-ai/deepagents/commit/152cec04affed3508d4bfdffe7cae522b16d45e6))
8
+
3
9
  ## [0.1.4](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.3...deepagents-code==0.1.4) (2026-05-23)
4
10
 
5
11
  ### Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepagents-code
3
- Version: 0.1.4
3
+ Version: 0.1.5
4
4
  Summary: Terminal interface for Deep Agents - interactive AI agent with file operations, shell access, and sub-agent capabilities.
5
5
  Project-URL: Homepage, https://docs.langchain.com/oss/python/deepagents/overview
6
6
  Project-URL: Documentation, https://reference.langchain.com/python/deepagents/
@@ -27,18 +27,17 @@ 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.6.3
30
+ Requires-Dist: deepagents==0.6.4
31
31
  Requires-Dist: httpx<1.0.0,>=0.28.1
32
32
  Requires-Dist: langchain-anthropic<2.0.0,>=1.4.3
33
33
  Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2
34
34
  Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.2.2
35
35
  Requires-Dist: langchain-openai<2.0.0,>=1.2.1
36
- Requires-Dist: langchain<2.0.0,>=1.3.1
36
+ Requires-Dist: langchain<2.0.0,>=1.3.2
37
37
  Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.1.0
38
38
  Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.24
39
39
  Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.28.1
40
40
  Requires-Dist: langgraph-sdk<1.0.0,>=0.3.13
41
- Requires-Dist: langgraph<2.0.0,>=1.2.0
42
41
  Requires-Dist: langsmith[sandbox]>=0.8.0
43
42
  Requires-Dist: markdownify<2.0.0,>=0.13.0
44
43
  Requires-Dist: packaging>=23.0
@@ -179,7 +178,7 @@ The fastest way to start using Deep Agents. `deepagents-code` is a pre-built cod
179
178
 
180
179
  ## 📖 Resources
181
180
 
182
- - **[Documentation](https://docs.langchain.com/oss/python/deepagents/code/overview)**
181
+ - **[Documentation](https://docs.langchain.com/deepagents-code)**
183
182
  - **[Changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/code/CHANGELOG.md)**
184
183
  - **[Source code](https://github.com/langchain-ai/deepagents/tree/main/libs/code)**
185
184
  - **[Deep Agents SDK](https://github.com/langchain-ai/deepagents)** — underlying agent harness
@@ -44,7 +44,7 @@ The fastest way to start using Deep Agents. `deepagents-code` is a pre-built cod
44
44
 
45
45
  ## 📖 Resources
46
46
 
47
- - **[Documentation](https://docs.langchain.com/oss/python/deepagents/code/overview)**
47
+ - **[Documentation](https://docs.langchain.com/deepagents-code)**
48
48
  - **[Changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/code/CHANGELOG.md)**
49
49
  - **[Source code](https://github.com/langchain-ai/deepagents/tree/main/libs/code)**
50
50
  - **[Deep Agents SDK](https://github.com/langchain-ai/deepagents)** — underlying agent harness
@@ -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.4" # x-release-please-version
5
+ __version__ = "0.1.5" # 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."""
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import asyncio
6
+ import contextlib
6
7
  import logging
7
8
  import sqlite3
8
9
  from contextlib import asynccontextmanager
@@ -61,6 +62,35 @@ def _patch_aiosqlite() -> None:
61
62
  _aiosqlite_patched = True
62
63
 
63
64
 
65
+ async def _drain_aiosqlite_worker(conn: aiosqlite.Connection) -> None:
66
+ """Join the aiosqlite worker thread after its connection is closed.
67
+
68
+ `aiosqlite.Connection` wraps a daemon `Thread` (`conn._thread`) that
69
+ drains its tx queue independently of the caller's event loop. The
70
+ library's `close()` puts a stop sentinel on the queue and awaits the
71
+ sentinel's future, but does not explicitly join the worker thread.
72
+
73
+ If the connection is leaked (no explicit close) and the surrounding
74
+ event loop has already shut down, the worker can still pop a queued
75
+ item (typically from `Connection.__del__` calling `stop()`) and call
76
+ `future.get_loop().call_soon_threadsafe(...)` on the closed loop. That
77
+ raises `RuntimeError: Event loop is closed`, which pytest surfaces as
78
+ `PytestUnhandledThreadExceptionWarning` (and GitHub Actions then
79
+ surfaces as a workflow annotation).
80
+
81
+ Explicitly joining the worker thread after close guarantees it has
82
+ exited before this coroutine returns, eliminating the race for any
83
+ connection routed through `_connect` / `get_checkpointer`.
84
+ """
85
+ worker = getattr(conn, "_thread", None)
86
+ if worker is None or not worker.is_alive():
87
+ return
88
+ # `RuntimeError` covers the "thread was never started" case; treat as
89
+ # already drained.
90
+ with contextlib.suppress(RuntimeError):
91
+ await asyncio.to_thread(worker.join, 5.0)
92
+
93
+
64
94
  @asynccontextmanager
65
95
  async def _connect() -> AsyncIterator[aiosqlite.Connection]:
66
96
  """Import aiosqlite, apply the compatibility patch, and connect.
@@ -75,8 +105,14 @@ async def _connect() -> AsyncIterator[aiosqlite.Connection]:
75
105
 
76
106
  _patch_aiosqlite()
77
107
 
78
- async with _aiosqlite.connect(str(get_db_path()), timeout=30.0) as conn:
79
- yield conn
108
+ conn: aiosqlite.Connection | None = None
109
+ try:
110
+ async with _aiosqlite.connect(str(get_db_path()), timeout=30.0) as opened:
111
+ conn = opened
112
+ yield opened
113
+ finally:
114
+ if conn is not None:
115
+ await _drain_aiosqlite_worker(conn)
80
116
 
81
117
 
82
118
  class ThreadInfo(TypedDict):
@@ -1134,8 +1170,18 @@ async def get_checkpointer() -> AsyncIterator[AsyncSqliteSaver]:
1134
1170
 
1135
1171
  _patch_aiosqlite()
1136
1172
 
1137
- async with AsyncSqliteSaver.from_conn_string(str(get_db_path())) as checkpointer:
1138
- yield checkpointer
1173
+ saver: AsyncSqliteSaver | None = None
1174
+ try:
1175
+ async with AsyncSqliteSaver.from_conn_string(
1176
+ str(get_db_path())
1177
+ ) as checkpointer:
1178
+ saver = checkpointer
1179
+ yield checkpointer
1180
+ finally:
1181
+ if saver is not None:
1182
+ conn = getattr(saver, "conn", None)
1183
+ if conn is not None:
1184
+ await _drain_aiosqlite_worker(conn)
1139
1185
 
1140
1186
 
1141
1187
  _DEFAULT_THREAD_LIMIT = 20
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "deepagents-code"
7
- version = "0.1.4"
7
+ version = "0.1.5"
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,9 +26,8 @@ classifiers = [
26
26
  ]
27
27
  dependencies = [
28
28
  # Framework
29
- "deepagents==0.6.3",
30
- "langchain>=1.3.1,<2.0.0",
31
- "langgraph>=1.2.0,<2.0.0",
29
+ "deepagents==0.6.4",
30
+ "langchain>=1.3.2,<2.0.0",
32
31
  "langgraph-checkpoint-sqlite>=3.1.0,<4.0.0",
33
32
 
34
33
  # Client-server architecture
@@ -45,7 +45,7 @@ cleanup() {
45
45
  if [ $exit_code -ne 0 ]; then
46
46
  echo "" >&2
47
47
  log_error "Installation failed (exit code ${exit_code}). See errors above."
48
- log_error "For help, visit: https://docs.langchain.com/oss/python/deepagents/code/overview"
48
+ log_error "For help, visit: https://docs.langchain.com/deepagents-code"
49
49
  fi
50
50
  }
51
51
  trap cleanup EXIT
@@ -265,13 +265,58 @@ for candidate in dcode deepagents-code; do
265
265
  fi
266
266
  done
267
267
 
268
- if [ -n "$PRE_VERSION" ]; then
268
+ # Detect editable installs (uv tool install -e <path>) so we can tell the user
269
+ # why the environment will be rebuilt instead of upgraded in place.
270
+ IS_EDITABLE=false
271
+ EDITABLE_SRC=""
272
+ UV_TOOL_DIR=""
273
+ if UV_TOOL_DIR_RAW=$("$UV_BIN" tool dir 2>/dev/null); then
274
+ UV_TOOL_DIR="$UV_TOOL_DIR_RAW"
275
+ fi
276
+ if [ -n "$UV_TOOL_DIR" ] && [ -d "${UV_TOOL_DIR}/deepagents-code" ]; then
277
+ shopt -s nullglob
278
+ for du in "${UV_TOOL_DIR}"/deepagents-code/lib/python*/site-packages/deepagents_code-*.dist-info/direct_url.json; do
279
+ if grep -q '"editable"[[:space:]]*:[[:space:]]*true' "$du" 2>/dev/null; then
280
+ IS_EDITABLE=true
281
+ EDITABLE_SRC=$(sed -nE 's|.*"url"[[:space:]]*:[[:space:]]*"file://([^"]*)".*|\1|p' "$du" | head -1)
282
+ # Guard against malformed JSON producing a bogus path.
283
+ [ -n "$EDITABLE_SRC" ] && [ ! -d "$EDITABLE_SRC" ] && EDITABLE_SRC=""
284
+ break
285
+ fi
286
+ done
287
+ shopt -u nullglob
288
+ fi
289
+
290
+ if [ "$IS_EDITABLE" = true ]; then
291
+ pre_label="${PRE_VERSION:-(version unknown)}"
292
+ if [ -n "$EDITABLE_SRC" ]; then
293
+ log_info "deepagents-code ${pre_label} found (editable install from ${EDITABLE_SRC})."
294
+ else
295
+ log_info "deepagents-code ${pre_label} found (editable install from local source)."
296
+ fi
297
+ log_info " Replacing with a standard install from PyPI — the existing environment will be rebuilt."
298
+ elif [ -n "$PRE_VERSION" ]; then
269
299
  log_info "deepagents-code ${PRE_VERSION} found — checking for updates..."
270
300
  else
271
301
  log_info "Installing ${PACKAGE}..."
272
302
  fi
273
303
 
274
- if ! "$UV_BIN" tool install -U --python "$PYTHON_VERSION" "$PACKAGE"; then
304
+ # Capture uv stderr so we can rewrite its cryptic "Ignoring existing
305
+ # environment …" warning into plain English. uv emits that line when it
306
+ # rebuilds the tool venv instead of upgrading in place (e.g., Python
307
+ # interpreter mismatch, or editable↔regular install swap). Using a tempfile
308
+ # (vs. process substitution) ensures we see uv's full exit status and don't
309
+ # race the warning past later log lines.
310
+ uv_stderr=$(mktemp 2>/dev/null) || uv_stderr="/tmp/deepagents-install.$$.err"
311
+ uv_rc=0
312
+ "$UV_BIN" tool install -U --python "$PYTHON_VERSION" "$PACKAGE" 2>"$uv_stderr" || uv_rc=$?
313
+ if command -v sed >/dev/null 2>&1; then
314
+ sed -E 's/.*Ignoring existing environment.*/⚠ Existing environment uses a different Python — rebuilding from scratch (this is normal)./' "$uv_stderr" >&2
315
+ else
316
+ cat "$uv_stderr" >&2
317
+ fi
318
+ rm -f "$uv_stderr"
319
+ if [ "$uv_rc" -ne 0 ]; then
275
320
  log_error "Failed to install ${PACKAGE}. See errors above."
276
321
  log_error "Common fixes: check your network, try a different Python version (DEEPAGENTS_PYTHON=3.12), or install manually."
277
322
  exit 1
@@ -446,5 +491,6 @@ echo ""
446
491
  # shellcheck disable=SC2059
447
492
  printf "${GREEN}✔${NC} Setup complete. Run: ${BOLD}dcode${NC}\n"
448
493
  echo ""
449
- echo "For help and support, see the Deep Agents Code docs:"
450
- echo " https://docs.langchain.com/oss/python/deepagents/code/overview"
494
+ echo "For help and support, see the docs:"
495
+ echo ""
496
+ echo " https://docs.langchain.com/deepagents-code"
@@ -269,6 +269,51 @@ class TestGetCheckpointer:
269
269
 
270
270
  asyncio.run(_test())
271
271
 
272
+ def test_drains_worker_thread(self, tmp_path):
273
+ """`get_checkpointer` joins the aiosqlite worker thread on exit.
274
+
275
+ Prevents the daemon worker from outliving the surrounding event loop
276
+ and raising `RuntimeError: Event loop is closed` via
277
+ `call_soon_threadsafe` during interpreter / xdist worker shutdown.
278
+ """
279
+ captured: dict[str, object] = {}
280
+
281
+ async def _test() -> None:
282
+ db_path = tmp_path / "test.db"
283
+ with patch.object(sessions, "get_db_path", return_value=db_path):
284
+ async with sessions.get_checkpointer() as cp:
285
+ captured["conn"] = cp.conn
286
+
287
+ asyncio.run(_test())
288
+ conn = cast("aiosqlite.Connection", captured["conn"])
289
+ worker = conn._thread
290
+ assert not worker.is_alive(), (
291
+ "aiosqlite worker thread should be joined after get_checkpointer exit"
292
+ )
293
+
294
+
295
+ class TestConnectHelper:
296
+ """Tests for the internal `_connect` async context manager."""
297
+
298
+ def test_drains_worker_thread(self, tmp_path):
299
+ """`_connect` joins the aiosqlite worker thread on exit."""
300
+ db_path = tmp_path / "drain.db"
301
+ # Create empty file so aiosqlite has something to open.
302
+ sqlite3.connect(str(db_path)).close()
303
+ captured: dict[str, object] = {}
304
+
305
+ async def _test() -> None:
306
+ with patch.object(sessions, "get_db_path", return_value=db_path):
307
+ async with sessions._connect() as conn:
308
+ captured["conn"] = conn
309
+
310
+ asyncio.run(_test())
311
+ conn = cast("aiosqlite.Connection", captured["conn"])
312
+ worker = conn._thread
313
+ assert not worker.is_alive(), (
314
+ "aiosqlite worker thread should be joined after _connect exit"
315
+ )
316
+
272
317
 
273
318
  class TestFormatTimestamp:
274
319
  """Tests for format_timestamp helper."""
@@ -967,7 +967,7 @@ wheels = [
967
967
 
968
968
  [[package]]
969
969
  name = "deepagents"
970
- version = "0.6.3"
970
+ version = "0.6.4"
971
971
  source = { editable = "../deepagents" }
972
972
  dependencies = [
973
973
  { name = "langchain" },
@@ -980,7 +980,7 @@ dependencies = [
980
980
 
981
981
  [package.metadata]
982
982
  requires-dist = [
983
- { name = "langchain", specifier = ">=1.3.0,<2.0.0" },
983
+ { name = "langchain", specifier = ">=1.3.2,<2.0.0" },
984
984
  { name = "langchain-anthropic", specifier = ">=1.4.3,<2.0.0" },
985
985
  { name = "langchain-core", specifier = ">=1.4.0,<2.0.0" },
986
986
  { name = "langchain-google-genai", specifier = ">=4.2.2,<5.0.0" },
@@ -1025,7 +1025,7 @@ wheels = [
1025
1025
 
1026
1026
  [[package]]
1027
1027
  name = "deepagents-code"
1028
- version = "0.1.4"
1028
+ version = "0.1.5"
1029
1029
  source = { editable = "." }
1030
1030
  dependencies = [
1031
1031
  { name = "aiosqlite" },
@@ -1037,7 +1037,6 @@ dependencies = [
1037
1037
  { name = "langchain-google-genai" },
1038
1038
  { name = "langchain-mcp-adapters" },
1039
1039
  { name = "langchain-openai" },
1040
- { name = "langgraph" },
1041
1040
  { name = "langgraph-checkpoint-sqlite" },
1042
1041
  { name = "langgraph-cli", extra = ["inmem"] },
1043
1042
  { name = "langgraph-runtime-inmem" },
@@ -1194,7 +1193,7 @@ requires-dist = [
1194
1193
  { name = "deepagents-code", extras = ["agentcore", "daytona", "modal", "runloop"], marker = "extra == 'all-sandboxes'" },
1195
1194
  { name = "deepagents-code", extras = ["anthropic", "baseten", "bedrock", "cohere", "deepseek", "fireworks", "google-genai", "groq", "huggingface", "ibm", "litellm", "mistralai", "nvidia", "ollama", "openai", "openrouter", "perplexity", "together", "vertexai", "xai"], marker = "extra == 'all-providers'" },
1196
1195
  { name = "httpx", specifier = ">=0.28.1,<1.0.0" },
1197
- { name = "langchain", specifier = ">=1.3.1,<2.0.0" },
1196
+ { name = "langchain", specifier = ">=1.3.2,<2.0.0" },
1198
1197
  { name = "langchain-agentcore-codeinterpreter", marker = "extra == 'agentcore'", specifier = ">=0.0.2" },
1199
1198
  { name = "langchain-anthropic", specifier = ">=1.4.3,<2.0.0" },
1200
1199
  { name = "langchain-anthropic", marker = "extra == 'anthropic'", specifier = ">=1.4.3,<2.0.0" },
@@ -1224,7 +1223,6 @@ requires-dist = [
1224
1223
  { name = "langchain-runloop", marker = "extra == 'runloop'", editable = "../partners/runloop" },
1225
1224
  { name = "langchain-together", marker = "extra == 'together'", specifier = ">=0.4.0,<2.0.0" },
1226
1225
  { name = "langchain-xai", marker = "extra == 'xai'", specifier = ">=1.2.2,<2.0.0" },
1227
- { name = "langgraph", specifier = ">=1.2.0,<2.0.0" },
1228
1226
  { name = "langgraph-checkpoint-sqlite", specifier = ">=3.1.0,<4.0.0" },
1229
1227
  { name = "langgraph-cli", extras = ["inmem"], specifier = ">=0.4.24,<1.0.0" },
1230
1228
  { name = "langgraph-runtime-inmem", specifier = ">=0.28.1,<1.0.0" },
@@ -2553,16 +2551,16 @@ wheels = [
2553
2551
 
2554
2552
  [[package]]
2555
2553
  name = "langchain"
2556
- version = "1.3.1"
2554
+ version = "1.3.2"
2557
2555
  source = { registry = "https://pypi.org/simple" }
2558
2556
  dependencies = [
2559
2557
  { name = "langchain-core" },
2560
2558
  { name = "langgraph" },
2561
2559
  { name = "pydantic" },
2562
2560
  ]
2563
- sdist = { url = "https://files.pythonhosted.org/packages/11/e5/6350e77a9e2764eaafcb2d581cbf0b800f53c6bc98fdf5ebc85f3a931ded/langchain-1.3.1.tar.gz", hash = "sha256:bc283c220233230f48b8e50ab1fbf1b688bcb206d933fa448d40a9b143177f62", size = 581329, upload-time = "2026-05-15T18:14:55.368Z" }
2561
+ sdist = { url = "https://files.pythonhosted.org/packages/d5/d0/c7f9d3d26c0e3f8bb146c6d707ee0fc1d30d8da65a59626e8a580085e929/langchain-1.3.2.tar.gz", hash = "sha256:ffd5f204a46b5fa1a38bf89ba3b45ca0902c02d18fa7d2a2eaeaeb1f5bf19d0a", size = 600598, upload-time = "2026-05-26T18:17:57.715Z" }
2564
2562
  wheels = [
2565
- { url = "https://files.pythonhosted.org/packages/78/11/3d7ed10b535413a07ed5e15682abcb77f3c4204ac49586977a495f9b24e6/langchain-1.3.1-py3-none-any.whl", hash = "sha256:154e9c30c90b391eba4315296f6bf6b6fac6b058ddea4cc771a10470968fe36f", size = 114345, upload-time = "2026-05-15T18:14:53.984Z" },
2563
+ { url = "https://files.pythonhosted.org/packages/f8/82/a54edcd1c48163de5642eb10fa2cb58b13a8889c659964f63f0306b58b1e/langchain-1.3.2-py3-none-any.whl", hash = "sha256:900f6b3f4ee08b9ba3cdbe667dbf42525bd6f66a4a07a7f1db26262673e41ed6", size = 121225, upload-time = "2026-05-26T18:17:56.075Z" },
2566
2564
  ]
2567
2565
 
2568
2566
  [[package]]
@@ -3126,7 +3124,7 @@ wheels = [
3126
3124
 
3127
3125
  [[package]]
3128
3126
  name = "langgraph"
3129
- version = "1.2.0"
3127
+ version = "1.2.2"
3130
3128
  source = { registry = "https://pypi.org/simple" }
3131
3129
  dependencies = [
3132
3130
  { name = "langchain-core" },
@@ -3136,9 +3134,9 @@ dependencies = [
3136
3134
  { name = "pydantic" },
3137
3135
  { name = "xxhash" },
3138
3136
  ]
3139
- sdist = { url = "https://files.pythonhosted.org/packages/58/61/d5d25e783035aa307d289b37e082258a6061c0fb4caa4a284f3bf1e87169/langgraph-1.2.0.tar.gz", hash = "sha256:4a9baaf62afc5d5f63144a50095140a34b9aa9b7cea695d25326d564775348e7", size = 690248, upload-time = "2026-05-12T03:46:39.164Z" }
3137
+ sdist = { url = "https://files.pythonhosted.org/packages/e6/5a/ffc12434ee8aecab830d58b4d204ddea45073eae7639c963310f671a5bf5/langgraph-1.2.2.tar.gz", hash = "sha256:f54a98458976b3ff0774683867df125fb52d8dbedeb2441d0b0656a51331cee5", size = 695730, upload-time = "2026-05-26T18:07:28.49Z" }
3140
3138
  wheels = [
3141
- { url = "https://files.pythonhosted.org/packages/f6/e8/e3304ac0015c2bdb04ad9785e4ed65c788855ce7857ce6104dd2f5d322db/langgraph-1.2.0-py3-none-any.whl", hash = "sha256:03fd5895a8d4b70db1ff63ebc3bacead29dd20cd794a8b1a483e7ec9018f7a65", size = 234262, upload-time = "2026-05-12T03:46:37.971Z" },
3139
+ { url = "https://files.pythonhosted.org/packages/42/9b/b08d578bba73e25351152dfd3d6d21e81210a5fff1b6f26e56f33197c8f5/langgraph-1.2.2-py3-none-any.whl", hash = "sha256:0a851bf4ba5939c5474a2fd57e6b439b5315283e254e42943bd392c2d71a5e03", size = 236376, upload-time = "2026-05-26T18:07:26.577Z" },
3142
3140
  ]
3143
3141
 
3144
3142
  [[package]]
File without changes