deepagents-code 0.1.14__tar.gz → 0.1.15__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 (278) hide show
  1. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/CHANGELOG.md +6 -0
  2. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/PKG-INFO +8 -6
  3. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/README.md +2 -0
  4. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/_version.py +1 -1
  5. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/config.py +28 -3
  6. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/main.py +3 -4
  7. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/welcome.py +0 -1
  8. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/pyproject.toml +5 -5
  9. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_textual_adapter.py +40 -2
  10. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/uv.lock +24 -24
  11. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/.gitignore +0 -0
  12. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/AGENTS.md +0 -0
  13. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/COMMANDS.md +0 -0
  14. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/DEV.md +0 -0
  15. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/Makefile +0 -0
  16. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/THREAT_MODEL.md +0 -0
  17. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/__init__.py +0 -0
  18. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/__main__.py +0 -0
  19. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/_ask_user_types.py +0 -0
  20. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/_cli_context.py +0 -0
  21. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/_constants.py +0 -0
  22. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/_debug.py +0 -0
  23. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/_env_vars.py +0 -0
  24. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/_git.py +0 -0
  25. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/_server_config.py +0 -0
  26. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/_session_stats.py +0 -0
  27. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/_startup_error.py +0 -0
  28. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/_testing_models.py +0 -0
  29. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/_textual_patches.py +0 -0
  30. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/agent.py +0 -0
  31. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/app.py +0 -0
  32. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/app.tcss +0 -0
  33. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/ask_user.py +0 -0
  34. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/auth_display.py +0 -0
  35. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/auth_store.py +0 -0
  36. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/built_in_skills/__init__.py +0 -0
  37. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
  38. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
  39. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  40. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  41. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/clipboard.py +0 -0
  42. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/command_registry.py +0 -0
  43. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/config_commands.py +0 -0
  44. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/config_manifest.py +0 -0
  45. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/configurable_model.py +0 -0
  46. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/default_agent_prompt.md +0 -0
  47. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/editor.py +0 -0
  48. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/event_bus.py +0 -0
  49. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/extras_info.py +0 -0
  50. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/file_ops.py +0 -0
  51. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/filesystem_empty_result.py +0 -0
  52. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/formatting.py +0 -0
  53. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/hooks.py +0 -0
  54. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/input.py +0 -0
  55. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/integrations/__init__.py +0 -0
  56. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/integrations/sandbox_config.py +0 -0
  57. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/integrations/sandbox_factory.py +0 -0
  58. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/integrations/sandbox_provider.py +0 -0
  59. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/integrations/sandbox_registry.py +0 -0
  60. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/iterm_cursor_guide.py +0 -0
  61. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/local_context.py +0 -0
  62. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/managed_tools.py +0 -0
  63. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/mcp_auth.py +0 -0
  64. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/mcp_commands.py +0 -0
  65. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/mcp_disabled.py +0 -0
  66. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/mcp_login_service.py +0 -0
  67. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/mcp_oauth_ui.py +0 -0
  68. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/mcp_providers/__init__.py +0 -0
  69. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/mcp_providers/_registry.py +0 -0
  70. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/mcp_providers/base.py +0 -0
  71. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/mcp_providers/github.py +0 -0
  72. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/mcp_providers/slack.py +0 -0
  73. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/mcp_tools.py +0 -0
  74. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/mcp_trust.py +0 -0
  75. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/media_utils.py +0 -0
  76. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/memory_guard.py +0 -0
  77. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/model_config.py +0 -0
  78. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/non_interactive.py +0 -0
  79. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/notifications.py +0 -0
  80. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/offload.py +0 -0
  81. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/onboarding.py +0 -0
  82. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/output.py +0 -0
  83. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/project_utils.py +0 -0
  84. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/py.typed +0 -0
  85. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/remote_client.py +0 -0
  86. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/resume_state.py +0 -0
  87. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/server.py +0 -0
  88. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/server_graph.py +0 -0
  89. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/server_manager.py +0 -0
  90. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/sessions.py +0 -0
  91. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/skills/__init__.py +0 -0
  92. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/skills/commands.py +0 -0
  93. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/skills/invocation.py +0 -0
  94. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/skills/load.py +0 -0
  95. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/state_migration.py +0 -0
  96. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/subagents.py +0 -0
  97. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/system_prompt.md +0 -0
  98. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/terminal_capabilities.py +0 -0
  99. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/terminal_escape.py +0 -0
  100. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/textual_adapter.py +0 -0
  101. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/theme.py +0 -0
  102. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/tool_display.py +0 -0
  103. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/tools.py +0 -0
  104. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/ui.py +0 -0
  105. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/unicode_security.py +0 -0
  106. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/update_check.py +0 -0
  107. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/__init__.py +0 -0
  108. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/_links.py +0 -0
  109. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/agent_selector.py +0 -0
  110. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/approval.py +0 -0
  111. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/ask_user.py +0 -0
  112. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/auth.py +0 -0
  113. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/autocomplete.py +0 -0
  114. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/chat_input.py +0 -0
  115. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/cwd_switch.py +0 -0
  116. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/diff.py +0 -0
  117. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/history.py +0 -0
  118. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/install_confirm.py +0 -0
  119. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/launch_init.py +0 -0
  120. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/loading.py +0 -0
  121. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/mcp_login.py +0 -0
  122. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/mcp_reconnect.py +0 -0
  123. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/mcp_viewer.py +0 -0
  124. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/message_store.py +0 -0
  125. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/messages.py +0 -0
  126. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/model_selector.py +0 -0
  127. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/notification_center.py +0 -0
  128. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/notification_detail.py +0 -0
  129. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/notification_settings.py +0 -0
  130. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/restart_prompt.py +0 -0
  131. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/status.py +0 -0
  132. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/theme_selector.py +0 -0
  133. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/thread_selector.py +0 -0
  134. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/tool_renderers.py +0 -0
  135. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/tool_widgets.py +0 -0
  136. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/update_available.py +0 -0
  137. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/deepagents_code/widgets/update_progress.py +0 -0
  138. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/examples/skills/arxiv-search/SKILL.md +0 -0
  139. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  140. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/examples/skills/langgraph-docs/SKILL.md +0 -0
  141. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/examples/skills/skill-creator/SKILL.md +0 -0
  142. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  143. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  144. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/examples/skills/web-research/SKILL.md +0 -0
  145. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/images/tui.png +0 -0
  146. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/scripts/check_imports.py +0 -0
  147. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/scripts/debug_server.sh +0 -0
  148. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/scripts/generate_commands_catalog.py +0 -0
  149. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/scripts/install.sh +0 -0
  150. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/README.md +0 -0
  151. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/integration_tests/__init__.py +0 -0
  152. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/integration_tests/benchmarks/__init__.py +0 -0
  153. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
  154. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
  155. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/integration_tests/conftest.py +0 -0
  156. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/integration_tests/test_acp_mode.py +0 -0
  157. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/integration_tests/test_compact_resume.py +0 -0
  158. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/integration_tests/test_sandbox_factory.py +0 -0
  159. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/integration_tests/test_sandbox_operations.py +0 -0
  160. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/__init__.py +0 -0
  161. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/conftest.py +0 -0
  162. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/skills/__init__.py +0 -0
  163. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/skills/test_commands.py +0 -0
  164. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/skills/test_load.py +0 -0
  165. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/skills/test_skills_json.py +0 -0
  166. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_agent.py +0 -0
  167. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_agent_friendly.py +0 -0
  168. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_agent_selector.py +0 -0
  169. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_app.py +0 -0
  170. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_approval.py +0 -0
  171. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_args.py +0 -0
  172. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_ask_user.py +0 -0
  173. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_ask_user_middleware.py +0 -0
  174. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_auth_display.py +0 -0
  175. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_auth_store.py +0 -0
  176. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_auth_widgets.py +0 -0
  177. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_autocomplete.py +0 -0
  178. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_charset.py +0 -0
  179. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_chat_input.py +0 -0
  180. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_clipboard.py +0 -0
  181. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_command_registry.py +0 -0
  182. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_compact_tool.py +0 -0
  183. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_config.py +0 -0
  184. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_config_manifest.py +0 -0
  185. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_configurable_model.py +0 -0
  186. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_cursor_blink.py +0 -0
  187. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_cwd_switch.py +0 -0
  188. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_debug.py +0 -0
  189. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_editor.py +0 -0
  190. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_end_to_end.py +0 -0
  191. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_env_vars.py +0 -0
  192. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_event_bus.py +0 -0
  193. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_exception_handling.py +0 -0
  194. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_extras_info.py +0 -0
  195. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_file_ops.py +0 -0
  196. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_filesystem_empty_result.py +0 -0
  197. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_formatting.py +0 -0
  198. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_git.py +0 -0
  199. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_history.py +0 -0
  200. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_hooks.py +0 -0
  201. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_imports.py +0 -0
  202. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_input_parsing.py +0 -0
  203. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_install_command.py +0 -0
  204. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_install_confirm.py +0 -0
  205. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
  206. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_launch_init.py +0 -0
  207. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_links.py +0 -0
  208. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_loading.py +0 -0
  209. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_local_context.py +0 -0
  210. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_main.py +0 -0
  211. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_main_acp_mode.py +0 -0
  212. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_main_args.py +0 -0
  213. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_managed_tools.py +0 -0
  214. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_mcp_auth.py +0 -0
  215. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_mcp_commands.py +0 -0
  216. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_mcp_disabled.py +0 -0
  217. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_mcp_login_modal.py +0 -0
  218. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_mcp_login_service.py +0 -0
  219. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
  220. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_mcp_reconnect.py +0 -0
  221. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_mcp_tools.py +0 -0
  222. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_mcp_trust.py +0 -0
  223. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_mcp_viewer.py +0 -0
  224. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_media_utils.py +0 -0
  225. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_memory_guard.py +0 -0
  226. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_message_store.py +0 -0
  227. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_messages.py +0 -0
  228. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_model_config.py +0 -0
  229. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_model_selector.py +0 -0
  230. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_model_switch.py +0 -0
  231. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_non_interactive.py +0 -0
  232. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_notification_center.py +0 -0
  233. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_notification_detail.py +0 -0
  234. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_notifications.py +0 -0
  235. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_offload.py +0 -0
  236. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_offload_dict_messages.py +0 -0
  237. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_onboarding.py +0 -0
  238. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_output.py +0 -0
  239. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_reload.py +0 -0
  240. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_remote_client.py +0 -0
  241. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_restart_prompt.py +0 -0
  242. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_resume_state.py +0 -0
  243. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_sandbox_config.py +0 -0
  244. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_sandbox_factory.py +0 -0
  245. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_sandbox_provider.py +0 -0
  246. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_sandbox_registry.py +0 -0
  247. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_server.py +0 -0
  248. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_server_config.py +0 -0
  249. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_server_graph.py +0 -0
  250. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_server_helpers.py +0 -0
  251. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_server_manager.py +0 -0
  252. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_session_stats.py +0 -0
  253. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_sessions.py +0 -0
  254. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_shell_allow_list.py +0 -0
  255. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_skill_invocation.py +0 -0
  256. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_startup_fast_paths.py +0 -0
  257. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_state_migration.py +0 -0
  258. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_status.py +0 -0
  259. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_subagents.py +0 -0
  260. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_terminal_capabilities.py +0 -0
  261. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_terminal_escape.py +0 -0
  262. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
  263. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_textual_patches.py +0 -0
  264. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_theme.py +0 -0
  265. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_thread_selector.py +0 -0
  266. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_tool_display.py +0 -0
  267. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_ui.py +0 -0
  268. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_unicode_security.py +0 -0
  269. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_update_available.py +0 -0
  270. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_update_check.py +0 -0
  271. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_update_progress.py +0 -0
  272. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_version.py +0 -0
  273. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/test_welcome.py +0 -0
  274. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/tools/__init__.py +0 -0
  275. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/tools/test_current_thread.py +0 -0
  276. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/tools/test_fetch_url.py +0 -0
  277. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/widgets/__init__.py +0 -0
  278. {deepagents_code-0.1.14 → deepagents_code-0.1.15}/tests/unit_tests/widgets/test_diff.py +0 -0
@@ -2,6 +2,12 @@
2
2
 
3
3
  # Deep Agents Code Changelog
4
4
 
5
+ ## [0.1.15](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.14...deepagents-code==0.1.15) (2026-06-12)
6
+
7
+ ### Features
8
+
9
+ * Add Deep Agents client version metadata ([#3934](https://github.com/langchain-ai/deepagents/issues/3934)) ([058cec6](https://github.com/langchain-ai/deepagents/commit/058cec654645dd1a504408d712ab678edc48273d))
10
+
5
11
  ## [0.1.14](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.13...deepagents-code==0.1.14) (2026-06-12)
6
12
 
7
13
  ### Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepagents-code
3
- Version: 0.1.14
3
+ Version: 0.1.15
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,13 +27,13 @@ Classifier: Topic :: Terminals
27
27
  Requires-Python: <4.0,>=3.11
28
28
  Requires-Dist: aiosqlite<1.0.0,>=0.22.1
29
29
  Requires-Dist: deepagents-acp<1.0.0,>=0.0.8
30
- Requires-Dist: deepagents==0.6.8
30
+ Requires-Dist: deepagents==0.6.9
31
31
  Requires-Dist: httpx<1.0.0,>=0.28.1
32
- Requires-Dist: langchain-anthropic<2.0.0,>=1.4.5
32
+ Requires-Dist: langchain-anthropic<2.0.0,>=1.4.6
33
33
  Requires-Dist: langchain-google-genai<5.0.0,>=4.2.5
34
34
  Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.3.0
35
35
  Requires-Dist: langchain-openai<2.0.0,>=1.3.0
36
- Requires-Dist: langchain<2.0.0,>=1.3.8
36
+ Requires-Dist: langchain<2.0.0,>=1.3.9
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.29
39
39
  Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.30.0
@@ -57,7 +57,7 @@ Requires-Dist: uuid-utils<1.0.0,>=0.16.0
57
57
  Provides-Extra: agentcore
58
58
  Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.4; extra == 'agentcore'
59
59
  Provides-Extra: all-providers
60
- Requires-Dist: langchain-anthropic<2.0.0,>=1.4.5; extra == 'all-providers'
60
+ Requires-Dist: langchain-anthropic<2.0.0,>=1.4.6; extra == 'all-providers'
61
61
  Requires-Dist: langchain-aws<2.0.0,>=1.5.1; extra == 'all-providers'
62
62
  Requires-Dist: langchain-baseten<1.0.0,>=0.2.0; extra == 'all-providers'
63
63
  Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'all-providers'
@@ -83,7 +83,7 @@ Requires-Dist: langchain-daytona>=0.0.7; extra == 'all-sandboxes'
83
83
  Requires-Dist: langchain-modal>=0.0.5; extra == 'all-sandboxes'
84
84
  Requires-Dist: langchain-runloop>=0.0.6; extra == 'all-sandboxes'
85
85
  Provides-Extra: anthropic
86
- Requires-Dist: langchain-anthropic<2.0.0,>=1.4.5; extra == 'anthropic'
86
+ Requires-Dist: langchain-anthropic<2.0.0,>=1.4.6; extra == 'anthropic'
87
87
  Provides-Extra: baseten
88
88
  Requires-Dist: langchain-baseten<1.0.0,>=0.2.0; extra == 'baseten'
89
89
  Provides-Extra: bedrock
@@ -182,6 +182,8 @@ The fastest way to start using Deep Agents. `deepagents-code` is a pre-built cod
182
182
  - **[Changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/code/CHANGELOG.md)**
183
183
  - **[Source code](https://github.com/langchain-ai/deepagents/tree/main/libs/code)**
184
184
  - **[Deep Agents SDK](https://github.com/langchain-ai/deepagents)** — underlying agent harness
185
+ - [LangChain Academy](https://academy.langchain.com/) — Comprehensive, free courses on LangChain libraries and products, made by the LangChain team.
186
+ - [Code of Conduct](https://github.com/langchain-ai/langchain/?tab=coc-ov-file) — community guidelines and standards
185
187
 
186
188
  ## 📕 Releases & Versioning
187
189
 
@@ -48,6 +48,8 @@ The fastest way to start using Deep Agents. `deepagents-code` is a pre-built cod
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
51
+ - [LangChain Academy](https://academy.langchain.com/) — Comprehensive, free courses on LangChain libraries and products, made by the LangChain team.
52
+ - [Code of Conduct](https://github.com/langchain-ai/langchain/?tab=coc-ov-file) — community guidelines and standards
51
53
 
52
54
  ## 📕 Releases & Versioning
53
55
 
@@ -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.14" # x-release-please-version
5
+ __version__ = "0.1.15" # 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."""
@@ -13,7 +13,7 @@ import sys
13
13
  import threading
14
14
  from dataclasses import dataclass
15
15
  from enum import StrEnum
16
- from importlib.metadata import PackageNotFoundError, distribution
16
+ from importlib.metadata import PackageNotFoundError, distribution, version
17
17
  from pathlib import Path
18
18
  from typing import TYPE_CHECKING, Any
19
19
  from urllib.parse import unquote, urlparse
@@ -568,6 +568,23 @@ Kept short so tracing metadata can never stall app flows.
568
568
  """
569
569
 
570
570
 
571
+ def _get_deepagents_version() -> str | None:
572
+ """Read the installed Deep Agents SDK version from package metadata.
573
+
574
+ Returns:
575
+ The installed Deep Agents SDK version, or `None` when package metadata
576
+ is unavailable.
577
+ """
578
+ try:
579
+ return version("deepagents")
580
+ except PackageNotFoundError:
581
+ logger.debug(
582
+ "Failed to read deepagents version from package metadata",
583
+ exc_info=True,
584
+ )
585
+ return None
586
+
587
+
571
588
  def _resolve_editable_info() -> tuple[bool, str | None]:
572
589
  """Parse PEP 610 `direct_url.json` once and cache both results.
573
590
 
@@ -826,11 +843,15 @@ def build_stream_config(
826
843
  ) -> RunnableConfig:
827
844
  """Build the LangGraph stream config dict.
828
845
 
829
- Injects the dcode version into `metadata["versions"]` so LangSmith traces
846
+ Injects the dcode version into `metadata["lc_versions"]` so LangSmith traces
830
847
  can be correlated with specific releases. `create_deep_agent` supplies the
831
848
  SDK version through the compiled graph config, and LangChain merges nested
832
849
  metadata dictionaries so both versions survive at stream time.
833
850
 
851
+ Also records `dcode_client_deepagents_version` as a dcode-client diagnostic.
852
+ This describes the Deep Agents package installed alongside the TUI, which
853
+ can differ from a remote graph's Deep Agents runtime version.
854
+
834
855
  Includes `ls_integration` metadata so LangSmith traces originating from
835
856
  the app are distinguishable from bare SDK usage.
836
857
 
@@ -854,9 +875,13 @@ def build_stream_config(
854
875
  cwd = ""
855
876
 
856
877
  metadata: dict[str, Any] = {
857
- "versions": {"deepagents-code": __version__},
878
+ "lc_versions": {"deepagents-code": __version__},
858
879
  "ls_integration": "deepagents-code",
859
880
  }
881
+ deepagents_version = _get_deepagents_version()
882
+ if deepagents_version is not None:
883
+ metadata["dcode_client_deepagents_version"] = deepagents_version
884
+
860
885
  from deepagents_code._env_vars import USER_ID
861
886
 
862
887
  user_id = os.environ.get(USER_ID)
@@ -179,22 +179,21 @@ def _run_startup_auto_update(console: "Console") -> None:
179
179
  return
180
180
  release_age = format_release_age_parenthetical(latest)
181
181
  console.print(
182
- f"Auto-updating deepagents-code from v{cli_version} to "
183
- f"v{latest}{release_age} before startup..."
182
+ f"Updating dcode from v{cli_version} to v{latest}{release_age}..."
184
183
  )
185
184
  if os.environ.get(DEBUG_UPDATE):
186
185
  console.print("Skipped update install (debug mode).", style="dim")
187
186
  return
188
187
  log_path = create_update_log_path()
189
188
  console.print(
190
- f"Update log: {log_path}\nTail progress: tail -f {log_path}",
189
+ f"Progress: tail -f {log_path}",
191
190
  style="dim",
192
191
  highlight=False,
193
192
  markup=False,
194
193
  )
195
194
  success, output = asyncio.run(perform_upgrade(log_path=log_path))
196
195
  if success:
197
- console.print(f"[green]Updated to v{latest}. Restarting...[/green]")
196
+ console.print(f"[green]Updated to v{latest}. Launching...[/green]")
198
197
  # Record the target version so the re-exec'd process can detect a
199
198
  # no-op upgrade and break the loop (see the `restarted_for` guard).
200
199
  os.environ[RESTARTED_AFTER_UPDATE] = latest
@@ -58,7 +58,6 @@ _TIPS: dict[str, int] = {
58
58
  "In /agents, press Ctrl+S to set the highlighted agent as your default": 1,
59
59
  "Press Shift+Tab to toggle auto-approve mode": 2,
60
60
  "Use --startup-cmd to run a shell command before the first prompt": 1,
61
- "Set [retries] in ~/.deepagents/config.toml for resilience to transient errors": 1,
62
61
  "Use !! for incognito shell commands that stay out of model context": 1,
63
62
  "Deep Agents can explain its own features and look up its docs. Ask it how to use.": 3, # noqa: E501
64
63
  }
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "deepagents-code"
7
- version = "0.1.14"
7
+ version = "0.1.15"
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,8 +26,8 @@ classifiers = [
26
26
  ]
27
27
  dependencies = [
28
28
  # Framework
29
- "deepagents==0.6.8",
30
- "langchain>=1.3.8,<2.0.0",
29
+ "deepagents==0.6.9",
30
+ "langchain>=1.3.9,<2.0.0",
31
31
  "langgraph-checkpoint-sqlite>=3.1.0,<4.0.0",
32
32
 
33
33
  # Client-server architecture
@@ -37,7 +37,7 @@ dependencies = [
37
37
  "httpx>=0.28.1,<1.0.0",
38
38
 
39
39
  # Core model providers - others are added as optional
40
- "langchain-anthropic>=1.4.5,<2.0.0",
40
+ "langchain-anthropic>=1.4.6,<2.0.0",
41
41
  "langchain-google-genai>=4.2.5,<5.0.0",
42
42
  "langchain-openai>=1.3.0,<2.0.0",
43
43
 
@@ -82,7 +82,7 @@ dependencies = [
82
82
 
83
83
  [project.optional-dependencies]
84
84
  # Model providers
85
- anthropic = ["langchain-anthropic>=1.4.5,<2.0.0"]
85
+ anthropic = ["langchain-anthropic>=1.4.6,<2.0.0"]
86
86
  baseten = ["langchain-baseten>=0.2.0,<1.0.0"]
87
87
  bedrock = ["langchain-aws>=1.5.1,<2.0.0"]
88
88
  cohere = ["langchain-cohere>=0.6.0,<1.0.0"]
@@ -1,9 +1,11 @@
1
1
  """Unit tests for textual_adapter functions."""
2
2
 
3
3
  import asyncio
4
+ import sys
4
5
  from asyncio import Future
5
6
  from collections.abc import AsyncIterator, Generator
6
7
  from datetime import datetime
8
+ from importlib.metadata import PackageNotFoundError
7
9
  from io import StringIO
8
10
  from pathlib import Path
9
11
  from types import SimpleNamespace
@@ -608,11 +610,47 @@ class TestBuildStreamConfig:
608
610
  assert "model_params" not in config["configurable"]
609
611
 
610
612
  def test_versions_contains_cli_version(self) -> None:
611
- """CLI version should always be present in metadata.versions."""
613
+ """CLI version should always be present in metadata.lc_versions."""
612
614
  from deepagents_code._version import __version__
613
615
 
614
616
  config = build_stream_config("t-ver", assistant_id=None)
615
- assert config["metadata"]["versions"]["deepagents-code"] == __version__
617
+ assert config["metadata"]["lc_versions"] == {"deepagents-code": __version__}
618
+
619
+ def test_dcode_client_deepagents_version_is_diagnostic_metadata(self) -> None:
620
+ """Client-side SDK version should not be reported as graph instrumentation."""
621
+ with patch("deepagents_code.config.version", return_value="1.2.3"):
622
+ config = build_stream_config("t-sdk", assistant_id=None)
623
+ assert config["metadata"]["dcode_client_deepagents_version"] == "1.2.3"
624
+ assert "deepagents" not in config["metadata"]["lc_versions"]
625
+
626
+ def test_dcode_client_deepagents_version_absent_when_metadata_missing(
627
+ self,
628
+ ) -> None:
629
+ """Missing SDK metadata should not prevent stream config construction."""
630
+ with patch(
631
+ "deepagents_code.config.version",
632
+ side_effect=PackageNotFoundError("deepagents"),
633
+ ):
634
+ config = build_stream_config("t-missing-sdk", assistant_id=None)
635
+
636
+ assert "dcode_client_deepagents_version" not in config["metadata"]
637
+
638
+ def test_dcode_client_deepagents_version_does_not_import_sdk(
639
+ self,
640
+ monkeypatch: pytest.MonkeyPatch,
641
+ ) -> None:
642
+ """SDK version metadata lookup should not import the SDK package."""
643
+ for module in list(sys.modules):
644
+ if module == "deepagents" or module.startswith("deepagents."):
645
+ monkeypatch.delitem(sys.modules, module, raising=False)
646
+
647
+ with patch("deepagents_code.config.version", return_value="1.2.3"):
648
+ build_stream_config("t-no-sdk-import", assistant_id=None)
649
+
650
+ assert not any(
651
+ module == "deepagents" or module.startswith("deepagents.")
652
+ for module in sys.modules
653
+ )
616
654
 
617
655
  def test_user_id_included_when_set(self) -> None:
618
656
  """DEEPAGENTS_CODE_USER_ID should appear in metadata when set."""
@@ -970,7 +970,7 @@ wheels = [
970
970
 
971
971
  [[package]]
972
972
  name = "deepagents"
973
- version = "0.6.8"
973
+ version = "0.6.9"
974
974
  source = { editable = "../deepagents" }
975
975
  dependencies = [
976
976
  { name = "langchain" },
@@ -983,9 +983,9 @@ dependencies = [
983
983
 
984
984
  [package.metadata]
985
985
  requires-dist = [
986
- { name = "langchain", specifier = ">=1.3.8,<2.0.0" },
987
- { name = "langchain-anthropic", specifier = ">=1.4.5,<2.0.0" },
988
- { name = "langchain-core", specifier = ">=1.4.6,<2.0.0" },
986
+ { name = "langchain", specifier = ">=1.3.9,<2.0.0" },
987
+ { name = "langchain-anthropic", specifier = ">=1.4.6,<2.0.0" },
988
+ { name = "langchain-core", specifier = ">=1.4.7,<2.0.0" },
989
989
  { name = "langchain-google-genai", specifier = ">=4.2.5,<5.0.0" },
990
990
  { name = "langchain-quickjs", marker = "extra == 'quickjs'" },
991
991
  { name = "langsmith", specifier = ">=0.8.11" },
@@ -1028,7 +1028,7 @@ wheels = [
1028
1028
 
1029
1029
  [[package]]
1030
1030
  name = "deepagents-code"
1031
- version = "0.1.14"
1031
+ version = "0.1.15"
1032
1032
  source = { editable = "." }
1033
1033
  dependencies = [
1034
1034
  { name = "aiosqlite" },
@@ -1196,10 +1196,10 @@ requires-dist = [
1196
1196
  { name = "deepagents-code", extras = ["agentcore", "daytona", "modal", "runloop"], marker = "extra == 'all-sandboxes'" },
1197
1197
  { name = "deepagents-code", extras = ["anthropic", "baseten", "bedrock", "cohere", "deepseek", "fireworks", "google-genai", "groq", "huggingface", "ibm", "litellm", "mistralai", "nvidia", "ollama", "openai", "openrouter", "perplexity", "together", "vertex", "xai"], marker = "extra == 'all-providers'" },
1198
1198
  { name = "httpx", specifier = ">=0.28.1,<1.0.0" },
1199
- { name = "langchain", specifier = ">=1.3.8,<2.0.0" },
1199
+ { name = "langchain", specifier = ">=1.3.9,<2.0.0" },
1200
1200
  { name = "langchain-agentcore-codeinterpreter", marker = "extra == 'agentcore'", specifier = ">=0.0.4,<1.0.0" },
1201
- { name = "langchain-anthropic", specifier = ">=1.4.5,<2.0.0" },
1202
- { name = "langchain-anthropic", marker = "extra == 'anthropic'", specifier = ">=1.4.5,<2.0.0" },
1201
+ { name = "langchain-anthropic", specifier = ">=1.4.6,<2.0.0" },
1202
+ { name = "langchain-anthropic", marker = "extra == 'anthropic'", specifier = ">=1.4.6,<2.0.0" },
1203
1203
  { name = "langchain-aws", marker = "extra == 'bedrock'", specifier = ">=1.5.1,<2.0.0" },
1204
1204
  { name = "langchain-baseten", marker = "extra == 'baseten'", specifier = ">=0.2.0,<1.0.0" },
1205
1205
  { name = "langchain-cohere", marker = "extra == 'cohere'", specifier = ">=0.6.0,<1.0.0" },
@@ -2537,16 +2537,16 @@ wheels = [
2537
2537
 
2538
2538
  [[package]]
2539
2539
  name = "langchain"
2540
- version = "1.3.8"
2540
+ version = "1.3.9"
2541
2541
  source = { registry = "https://pypi.org/simple" }
2542
2542
  dependencies = [
2543
2543
  { name = "langchain-core" },
2544
2544
  { name = "langgraph" },
2545
2545
  { name = "pydantic" },
2546
2546
  ]
2547
- sdist = { url = "https://files.pythonhosted.org/packages/8a/71/b4980282e69b4b89cb8ad4a2ddf4c2fe71645dee014364dbf1f834a1da3b/langchain-1.3.8.tar.gz", hash = "sha256:7f34f42f9d946a8a4b0275382078dc340fe336ba6dbc1c0ebb4f225ada9853ce", size = 629985, upload-time = "2026-06-12T04:20:35.135Z" }
2547
+ sdist = { url = "https://files.pythonhosted.org/packages/56/7c/651d0dc4913a7a892156c03dd343b99cfe19ee729e6911ab1f4fe7567b8b/langchain-1.3.9.tar.gz", hash = "sha256:9b14ef0db9ef314299ded858b22ca2a40b8f1b05c8c9cb6b82d53a53075fef00", size = 631514, upload-time = "2026-06-12T16:53:27.083Z" }
2548
2548
  wheels = [
2549
- { url = "https://files.pythonhosted.org/packages/12/e9/3f6977eee9ae43483d2df76dfb999c0f7315a5ed3d90864b121b57012272/langchain-1.3.8-py3-none-any.whl", hash = "sha256:d1baf2c766ffc805aa77c59750a50ede4119794cdcee237c55f1a7df0d148953", size = 132146, upload-time = "2026-06-12T04:20:33.266Z" },
2549
+ { url = "https://files.pythonhosted.org/packages/b7/55/3481619d21b9bdfbfda8680fba5cfc6cfe926789b8eaaad95353078cfa20/langchain-1.3.9-py3-none-any.whl", hash = "sha256:4af49ad1095799e4408b489fb79d4b8b49292453618b202d8a697fca59bb6871", size = 132873, upload-time = "2026-06-12T16:53:25.489Z" },
2550
2550
  ]
2551
2551
 
2552
2552
  [[package]]
@@ -2565,16 +2565,16 @@ wheels = [
2565
2565
 
2566
2566
  [[package]]
2567
2567
  name = "langchain-anthropic"
2568
- version = "1.4.5"
2568
+ version = "1.4.6"
2569
2569
  source = { registry = "https://pypi.org/simple" }
2570
2570
  dependencies = [
2571
2571
  { name = "anthropic" },
2572
2572
  { name = "langchain-core" },
2573
2573
  { name = "pydantic" },
2574
2574
  ]
2575
- sdist = { url = "https://files.pythonhosted.org/packages/2c/f4/404a6a4b75133479ac0426f4080c7f75cc02f4220df5282188b2c1913abe/langchain_anthropic-1.4.5.tar.gz", hash = "sha256:ed5cb345cee846a1c69a11e1e55cfd2deedac31a8ea3bea46568ea1702d2e702", size = 693439, upload-time = "2026-06-10T21:41:12.261Z" }
2575
+ sdist = { url = "https://files.pythonhosted.org/packages/e1/f5/cd397b94aeed5fa0e8ab9595b9fb578ac99f424d42220defe6626e6a1a7b/langchain_anthropic-1.4.6.tar.gz", hash = "sha256:78942d4458d883b7d362438a095ed501ed84f44d402622404482481fc973b9da", size = 706540, upload-time = "2026-06-12T16:54:15.352Z" }
2576
2576
  wheels = [
2577
- { url = "https://files.pythonhosted.org/packages/14/74/365775548cedaff9a93420f9436c665114dd9f399225ac7200b4958407e0/langchain_anthropic-1.4.5-py3-none-any.whl", hash = "sha256:6f6811a7f7fb815061639728ad58ba7d7de9cc1b23dd076f4690cfdc2f733969", size = 51343, upload-time = "2026-06-10T21:41:11.026Z" },
2577
+ { url = "https://files.pythonhosted.org/packages/26/af/927dbbc5a1f5fea1a69adc2883f034cbd1430004e36f4eacd302d500393a/langchain_anthropic-1.4.6-py3-none-any.whl", hash = "sha256:dbd412a956b6b8b0716d9d8460ef71f834a6731cdbfc59e6160482a4a9fb5200", size = 51797, upload-time = "2026-06-12T16:54:14.159Z" },
2578
2578
  ]
2579
2579
 
2580
2580
  [[package]]
@@ -2623,7 +2623,7 @@ wheels = [
2623
2623
 
2624
2624
  [[package]]
2625
2625
  name = "langchain-core"
2626
- version = "1.4.6"
2626
+ version = "1.4.7"
2627
2627
  source = { registry = "https://pypi.org/simple" }
2628
2628
  dependencies = [
2629
2629
  { name = "jsonpatch" },
@@ -2636,9 +2636,9 @@ dependencies = [
2636
2636
  { name = "typing-extensions" },
2637
2637
  { name = "uuid-utils" },
2638
2638
  ]
2639
- sdist = { url = "https://files.pythonhosted.org/packages/64/a7/1652f8f00e2a3ed8714a57c902670897c6d001b96488abe49625d8c7fa1b/langchain_core-1.4.6.tar.gz", hash = "sha256:fb8547f83587c8f646f2136b106b732a974ffbff5537799125d16ed4c326eb63", size = 949354, upload-time = "2026-06-11T07:09:54.464Z" }
2639
+ sdist = { url = "https://files.pythonhosted.org/packages/ee/2b/fffaff399d20a56d40b9562fa19701e91abd72d8c9d9bc8c2673077b56b6/langchain_core-1.4.7.tar.gz", hash = "sha256:7a825d77de0a3f39adbd9d09612a75e85527e14a52c1601089bcc062972d9f2b", size = 952522, upload-time = "2026-06-12T19:23:57.588Z" }
2640
2640
  wheels = [
2641
- { url = "https://files.pythonhosted.org/packages/0c/63/6746479c3cc0b1ff793abd03d45e12ee689d14ee899fa4c7060c6e928e9f/langchain_core-1.4.6-py3-none-any.whl", hash = "sha256:84b73716aa9f8b529b426ea256bb71bcb55dea5980212e54c89c9a040fd50230", size = 554275, upload-time = "2026-06-11T07:09:53.085Z" },
2641
+ { url = "https://files.pythonhosted.org/packages/de/3e/dcdffa60078ae7b3a00ebb4cbbf1a204a14c3609983c604886523a7d4418/langchain_core-1.4.7-py3-none-any.whl", hash = "sha256:bcadd51951140ecdcba98311dbd931ba5de02a5ba8a2288dad5069c1eea2a13d", size = 554941, upload-time = "2026-06-12T19:23:55.826Z" },
2642
2642
  ]
2643
2643
 
2644
2644
  [[package]]
@@ -2932,7 +2932,7 @@ wheels = [
2932
2932
 
2933
2933
  [[package]]
2934
2934
  name = "langchain-quickjs"
2935
- version = "0.1.4"
2935
+ version = "0.2.0"
2936
2936
  source = { editable = "../partners/quickjs" }
2937
2937
  dependencies = [
2938
2938
  { name = "deepagents" },
@@ -2945,9 +2945,9 @@ dependencies = [
2945
2945
  [package.metadata]
2946
2946
  requires-dist = [
2947
2947
  { name = "deepagents", editable = "../deepagents" },
2948
- { name = "langchain", specifier = ">=1.3.4,<2.0.0" },
2949
- { name = "langchain-core", specifier = ">=1.4.2,<2.0.0" },
2950
- { name = "langgraph", specifier = ">=1.2.4,<2.0.0" },
2948
+ { name = "langchain", specifier = ">=1.3.9,<2.0.0" },
2949
+ { name = "langchain-core", specifier = ">=1.4.7,<2.0.0" },
2950
+ { name = "langgraph", specifier = ">=1.2.5,<2.0.0" },
2951
2951
  { name = "quickjs-rs", specifier = ">=0.1.2,<0.2.0" },
2952
2952
  ]
2953
2953
 
@@ -3034,7 +3034,7 @@ wheels = [
3034
3034
 
3035
3035
  [[package]]
3036
3036
  name = "langgraph"
3037
- version = "1.2.4"
3037
+ version = "1.2.5"
3038
3038
  source = { registry = "https://pypi.org/simple" }
3039
3039
  dependencies = [
3040
3040
  { name = "langchain-core" },
@@ -3044,9 +3044,9 @@ dependencies = [
3044
3044
  { name = "pydantic" },
3045
3045
  { name = "xxhash" },
3046
3046
  ]
3047
- sdist = { url = "https://files.pythonhosted.org/packages/1c/43/dac5a2621c1e57f8eb7f0703f6f6fe34a5caf62f8f0fb4d2bb395bb454ea/langgraph-1.2.4.tar.gz", hash = "sha256:5df076973a2d23efb13eceb279d1e5b46feebcbbeded0a86a2ef669abd9e4399", size = 720374, upload-time = "2026-06-02T17:07:37.347Z" }
3047
+ sdist = { url = "https://files.pythonhosted.org/packages/77/9d/7c9ebd17b95569122e2d2e641f535cf086c870d66bb8e59be33cdba856b3/langgraph-1.2.5.tar.gz", hash = "sha256:09a3bdec6fdb3228623fc78b6f69a1400d383f66348d0b04d0efb692022cc6ef", size = 712532, upload-time = "2026-06-12T20:30:58.498Z" }
3048
3048
  wheels = [
3049
- { url = "https://files.pythonhosted.org/packages/48/9e/31ca236104966d7bb14ea9e93cfd73350aea8c41008ddf057b65794ed10d/langgraph-1.2.4-py3-none-any.whl", hash = "sha256:ffe3e1e31dce28907640f82525858470f293506d2b272d07ea3b3ce97974b067", size = 245402, upload-time = "2026-06-02T17:07:35.977Z" },
3049
+ { url = "https://files.pythonhosted.org/packages/a2/03/187281cf61845c5a9c397ae6cd9cd73bb54b39435e5575a7b83c853e5b76/langgraph-1.2.5-py3-none-any.whl", hash = "sha256:9286bb5def82fc865959c14378fe473518dc097d586225f622f029637a2a4bb9", size = 246150, upload-time = "2026-06-12T20:30:57.018Z" },
3050
3050
  ]
3051
3051
 
3052
3052
  [[package]]