deepagents-code 0.1.11__tar.gz → 0.1.12__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 (264) hide show
  1. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/.gitignore +15 -0
  2. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/AGENTS.md +46 -0
  3. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/CHANGELOG.md +30 -0
  4. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/COMMANDS.md +3 -3
  5. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/PKG-INFO +20 -20
  6. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/_session_stats.py +1 -1
  7. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/_textual_patches.py +3 -3
  8. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/_version.py +1 -1
  9. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/agent.py +32 -8
  10. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/app.py +992 -68
  11. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/command_registry.py +8 -6
  12. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/config.py +282 -96
  13. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/configurable_model.py +1 -1
  14. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/filesystem_empty_result.py +11 -0
  15. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/input.py +2 -2
  16. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/local_context.py +44 -6
  17. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/main.py +8 -3
  18. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/mcp_auth.py +8 -2
  19. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/mcp_commands.py +4 -0
  20. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/mcp_tools.py +46 -11
  21. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/media_utils.py +2 -2
  22. deepagents_code-0.1.12/deepagents_code/memory_guard.py +406 -0
  23. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/model_config.py +70 -6
  24. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/offload.py +1 -1
  25. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/onboarding.py +35 -0
  26. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/remote_client.py +29 -4
  27. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/server.py +27 -4
  28. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/server_graph.py +2 -2
  29. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/sessions.py +27 -1
  30. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/system_prompt.md +2 -0
  31. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/textual_adapter.py +45 -6
  32. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/theme.py +3 -3
  33. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/tools.py +25 -2
  34. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/update_check.py +17 -5
  35. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/autocomplete.py +53 -4
  36. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/chat_input.py +36 -10
  37. deepagents_code-0.1.12/deepagents_code/widgets/cwd_switch.py +157 -0
  38. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/messages.py +174 -88
  39. deepagents_code-0.1.12/deepagents_code/widgets/restart_prompt.py +135 -0
  40. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/thread_selector.py +63 -24
  41. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/examples/skills/arxiv-search/arxiv_search.py +1 -1
  42. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/pyproject.toml +30 -37
  43. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/integration_tests/test_compact_resume.py +2 -2
  44. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/integration_tests/test_sandbox_factory.py +5 -6
  45. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/conftest.py +15 -0
  46. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_agent.py +108 -4
  47. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_agent_friendly.py +1 -1
  48. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_app.py +2001 -253
  49. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_approval.py +9 -9
  50. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_auth_display.py +6 -1
  51. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_autocomplete.py +194 -0
  52. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_charset.py +1 -1
  53. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_chat_input.py +38 -6
  54. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_command_registry.py +15 -3
  55. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_config.py +53 -3
  56. deepagents_code-0.1.12/tests/unit_tests/test_cwd_switch.py +85 -0
  57. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_event_bus.py +1 -1
  58. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_install_command.py +305 -1
  59. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_launch_init.py +2 -2
  60. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_links.py +2 -2
  61. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_loading.py +4 -7
  62. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_local_context.py +71 -15
  63. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_main.py +3 -3
  64. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_main_acp_mode.py +6 -2
  65. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_main_args.py +18 -18
  66. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_mcp_auth.py +1 -1
  67. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_mcp_commands.py +1 -1
  68. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_mcp_login_modal.py +11 -11
  69. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_mcp_tools.py +106 -34
  70. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_mcp_viewer.py +5 -5
  71. deepagents_code-0.1.12/tests/unit_tests/test_memory_guard.py +411 -0
  72. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_message_store.py +1 -1
  73. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_messages.py +275 -34
  74. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_model_config.py +90 -4
  75. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_model_switch.py +44 -44
  76. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_non_interactive.py +2 -2
  77. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_notifications.py +1 -1
  78. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_offload.py +13 -13
  79. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_onboarding.py +53 -2
  80. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_reload.py +150 -26
  81. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_remote_client.py +39 -4
  82. deepagents_code-0.1.12/tests/unit_tests/test_restart_prompt.py +88 -0
  83. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_resume_state.py +14 -14
  84. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_sandbox_factory.py +9 -9
  85. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_server.py +41 -1
  86. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_server_graph.py +3 -1
  87. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_server_helpers.py +16 -0
  88. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_sessions.py +50 -3
  89. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_skill_invocation.py +11 -10
  90. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_terminal_escape.py +11 -2
  91. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_textual_adapter.py +63 -25
  92. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_theme.py +6 -5
  93. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_thread_selector.py +472 -83
  94. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_tool_display.py +3 -3
  95. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_update_check.py +31 -5
  96. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_update_progress.py +5 -2
  97. deepagents_code-0.1.12/tests/unit_tests/tools/test_current_thread.py +27 -0
  98. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/uv.lock +174 -171
  99. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/DEV.md +0 -0
  100. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/Makefile +0 -0
  101. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/README.md +0 -0
  102. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/THREAT_MODEL.md +0 -0
  103. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/__init__.py +0 -0
  104. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/__main__.py +0 -0
  105. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/_ask_user_types.py +0 -0
  106. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/_cli_context.py +0 -0
  107. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/_constants.py +0 -0
  108. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/_debug.py +0 -0
  109. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/_env_vars.py +0 -0
  110. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/_git.py +0 -0
  111. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/_server_config.py +0 -0
  112. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/_startup_error.py +0 -0
  113. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/_testing_models.py +0 -0
  114. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/app.tcss +0 -0
  115. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/ask_user.py +0 -0
  116. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/auth_display.py +0 -0
  117. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/auth_store.py +0 -0
  118. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/built_in_skills/__init__.py +0 -0
  119. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
  120. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
  121. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  122. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  123. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/clipboard.py +0 -0
  124. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/default_agent_prompt.md +0 -0
  125. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/editor.py +0 -0
  126. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/event_bus.py +0 -0
  127. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/extras_info.py +0 -0
  128. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/file_ops.py +0 -0
  129. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/formatting.py +0 -0
  130. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/hooks.py +0 -0
  131. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/integrations/__init__.py +0 -0
  132. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/integrations/sandbox_factory.py +0 -0
  133. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/integrations/sandbox_provider.py +0 -0
  134. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/iterm_cursor_guide.py +0 -0
  135. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/mcp_disabled.py +0 -0
  136. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/mcp_login_service.py +0 -0
  137. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/mcp_oauth_ui.py +0 -0
  138. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/mcp_providers/__init__.py +0 -0
  139. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/mcp_providers/_registry.py +0 -0
  140. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/mcp_providers/base.py +0 -0
  141. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/mcp_providers/github.py +0 -0
  142. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/mcp_providers/slack.py +0 -0
  143. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/mcp_trust.py +0 -0
  144. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/non_interactive.py +0 -0
  145. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/notifications.py +0 -0
  146. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/output.py +0 -0
  147. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/project_utils.py +0 -0
  148. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/py.typed +0 -0
  149. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/resume_state.py +0 -0
  150. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/server_manager.py +0 -0
  151. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/skills/__init__.py +0 -0
  152. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/skills/commands.py +0 -0
  153. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/skills/invocation.py +0 -0
  154. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/skills/load.py +0 -0
  155. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/state_migration.py +0 -0
  156. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/subagents.py +0 -0
  157. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/terminal_capabilities.py +0 -0
  158. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/terminal_escape.py +0 -0
  159. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/tool_display.py +0 -0
  160. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/ui.py +0 -0
  161. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/unicode_security.py +0 -0
  162. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/__init__.py +0 -0
  163. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/_links.py +0 -0
  164. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/agent_selector.py +0 -0
  165. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/approval.py +0 -0
  166. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/ask_user.py +0 -0
  167. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/auth.py +0 -0
  168. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/diff.py +0 -0
  169. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/history.py +0 -0
  170. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/launch_init.py +0 -0
  171. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/loading.py +0 -0
  172. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/mcp_login.py +0 -0
  173. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/mcp_reconnect.py +0 -0
  174. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/mcp_viewer.py +0 -0
  175. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/message_store.py +0 -0
  176. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/model_selector.py +0 -0
  177. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/notification_center.py +0 -0
  178. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/notification_detail.py +0 -0
  179. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/notification_settings.py +0 -0
  180. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/status.py +0 -0
  181. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/theme_selector.py +0 -0
  182. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/tool_renderers.py +0 -0
  183. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/tool_widgets.py +0 -0
  184. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/update_available.py +0 -0
  185. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/update_progress.py +0 -0
  186. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/deepagents_code/widgets/welcome.py +0 -0
  187. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/examples/skills/arxiv-search/SKILL.md +0 -0
  188. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/examples/skills/langgraph-docs/SKILL.md +0 -0
  189. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/examples/skills/skill-creator/SKILL.md +0 -0
  190. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  191. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  192. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/examples/skills/web-research/SKILL.md +0 -0
  193. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/images/tui.png +0 -0
  194. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/scripts/check_imports.py +0 -0
  195. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/scripts/debug_server.sh +0 -0
  196. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/scripts/generate_commands_catalog.py +0 -0
  197. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/scripts/install.sh +0 -0
  198. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/README.md +0 -0
  199. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/integration_tests/__init__.py +0 -0
  200. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/integration_tests/benchmarks/__init__.py +0 -0
  201. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
  202. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
  203. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/integration_tests/conftest.py +0 -0
  204. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/integration_tests/test_acp_mode.py +0 -0
  205. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/integration_tests/test_sandbox_operations.py +0 -0
  206. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/__init__.py +0 -0
  207. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/skills/__init__.py +0 -0
  208. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/skills/test_commands.py +0 -0
  209. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/skills/test_load.py +0 -0
  210. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/skills/test_skills_json.py +0 -0
  211. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_agent_selector.py +0 -0
  212. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_args.py +0 -0
  213. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_ask_user.py +0 -0
  214. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_ask_user_middleware.py +0 -0
  215. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_auth_store.py +0 -0
  216. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_auth_widgets.py +0 -0
  217. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_clipboard.py +0 -0
  218. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_compact_tool.py +0 -0
  219. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_configurable_model.py +0 -0
  220. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_cursor_blink.py +0 -0
  221. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_debug.py +0 -0
  222. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_editor.py +0 -0
  223. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_end_to_end.py +0 -0
  224. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_env_vars.py +0 -0
  225. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_exception_handling.py +0 -0
  226. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_extras_info.py +0 -0
  227. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_file_ops.py +0 -0
  228. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_filesystem_empty_result.py +0 -0
  229. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_formatting.py +0 -0
  230. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_git.py +0 -0
  231. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_history.py +0 -0
  232. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_hooks.py +0 -0
  233. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_imports.py +0 -0
  234. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_input_parsing.py +0 -0
  235. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
  236. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_mcp_disabled.py +0 -0
  237. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_mcp_login_service.py +0 -0
  238. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
  239. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_mcp_reconnect.py +0 -0
  240. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_mcp_trust.py +0 -0
  241. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_media_utils.py +0 -0
  242. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_model_selector.py +0 -0
  243. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_notification_center.py +0 -0
  244. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_notification_detail.py +0 -0
  245. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_offload_dict_messages.py +0 -0
  246. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_output.py +0 -0
  247. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_server_config.py +0 -0
  248. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_server_manager.py +0 -0
  249. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_session_stats.py +0 -0
  250. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_shell_allow_list.py +0 -0
  251. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_startup_fast_paths.py +0 -0
  252. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_state_migration.py +0 -0
  253. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_status.py +0 -0
  254. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_subagents.py +0 -0
  255. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_terminal_capabilities.py +0 -0
  256. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
  257. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_textual_patches.py +0 -0
  258. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_ui.py +0 -0
  259. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_unicode_security.py +0 -0
  260. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_update_available.py +0 -0
  261. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_version.py +0 -0
  262. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/test_welcome.py +0 -0
  263. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/tools/__init__.py +0 -0
  264. {deepagents_code-0.1.11 → deepagents_code-0.1.12}/tests/unit_tests/tools/test_fetch_url.py +0 -0
@@ -137,6 +137,7 @@ celerybeat.pid
137
137
 
138
138
  # Environments
139
139
  .env
140
+ .env.*
140
141
  .envrc
141
142
  env.local
142
143
  *.env.local
@@ -147,6 +148,20 @@ ENV/
147
148
  env.bak/
148
149
  venv.bak/
149
150
 
151
+ # Local credentials and secrets
152
+ *.pem
153
+ *.key
154
+ *.crt
155
+ *.p12
156
+ *.pfx
157
+ *.jks
158
+ credentials.json
159
+ token.json
160
+ Cookies
161
+ Cookies.db
162
+ cookies.sqlite
163
+ cookies.txt
164
+
150
165
  # Spyder project settings
151
166
  .spyderproject
152
167
  .spyproject
@@ -48,11 +48,57 @@ Textual's `App.notify(message)` parses the message string as Rich markup by defa
48
48
 
49
49
  - Use `textual.pilot` for async UI testing - see [Testing guide](https://textual.textualize.io/guide/testing/)
50
50
  - Snapshot testing available for visual regression - see repo `notes/snapshot_testing.md`
51
+ - For modal flows, test the real interaction path with keypresses when possible. Unit tests that call action methods or resume handlers directly can miss focus and modal-stack bugs.
52
+ - Do not open another modal or refocus the base chat input directly inside a modal dismiss callback. Preserve the non-blocking `push_screen(..., callback)` flow and schedule follow-up UI work with `call_after_refresh` so the dismissing modal fully unwinds first.
53
+ - Be cautious replacing `push_screen(..., callback)` with an awaited modal result inside slash-command handlers; awaiting can block the Textual message pump and break keyboard navigation in the active modal.
54
+
55
+ ### Typing and test doubles
56
+
57
+ When fixing `ty` diagnostics, do not mechanically replace `# type: ignore[...]` with `cast(...)`. First try to improve the actual type shape: narrower annotations, typed futures/callbacks, covariant read-only types such as `Mapping`/`Sequence`, local mock variables, or `monkeypatch.setattr(...)`. Treat `cast("Any", ...)` as a last resort.
58
+
59
+ For Textual tests that intentionally replace concrete app methods with `MagicMock` or `AsyncMock`, prefer `monkeypatch.setattr(...)` or one small documented dynamic helper over repeated `cast("Any", app)` expressions. Assert on local mock variables instead of re-reading mocked methods from the concrete object when possible.
60
+
61
+ Casts are acceptable when the type violation is the point of the test (for example, passing a wrong runtime type to exercise defensive validation) or when a third-party overload is narrower than verified runtime behavior. In those cases, keep the cast narrowly scoped and add a short comment explaining why it is intentional.
51
62
 
52
63
  ## SDK dependency pin
53
64
 
54
65
  `deepagents-code` pins an exact `deepagents==X.Y.Z` version in `pyproject.toml`. When developing features that depend on new SDK functionality, bump this pin as part of the same PR. A CI check verifies the pin matches the current SDK version at release time (unless bypassed with `dangerous-skip-sdk-pin-check`).
55
66
 
67
+ ## Local dev installs
68
+
69
+ Keep the released CLI and editable development CLI separate:
70
+
71
+ - `dcode` / `deepagents-code` should point at the normal installed tool, typically managed by `uv tool install deepagents-code`.
72
+ - `dcode-dev` should point at a dedicated editable venv under `~/.local/share/dcode-dev`, with a symlink in `~/.local/bin/dcode-dev`.
73
+
74
+ This uses a manual `uv venv` + `uv pip install -e` rather than `uv sync` or `uv tool install --editable` on purpose: it builds an isolated venv outside the workspace's locked environment, so the dev binary can be re-resolved on demand without disturbing the released tool or the repo's `uv.lock`. `uv pip`/`uv venv` are first-class `uv` subcommands here, not bare `pip`.
75
+
76
+ `~/.local/bin` must be on your `PATH` for the `dcode-dev` symlink to resolve (`uv tool install` adds its own shim directory automatically, but a hand-rolled symlink does not).
77
+
78
+ Example setup. The `--python` value is illustrative — any interpreter satisfying the package's `requires-python` (currently `>=3.11`) works; omit the flag to let `uv` pick. Replace `<repo>` with your local checkout path.
79
+
80
+ ```bash
81
+ uv venv ~/.local/share/dcode-dev --python 3.13
82
+ uv pip install --python ~/.local/share/dcode-dev/bin/python -e <repo>/libs/code
83
+ ln -sf ~/.local/share/dcode-dev/bin/dcode ~/.local/bin/dcode-dev
84
+ ```
85
+
86
+ When dependency constraints change in `libs/code/pyproject.toml`, update the dev venv explicitly:
87
+
88
+ ```bash
89
+ uv pip install --python ~/.local/share/dcode-dev/bin/python -e <repo>/libs/code --upgrade
90
+ ```
91
+
92
+ Verify command resolution and editable imports (the `dcode` checks assume the released tool is installed separately, per above):
93
+
94
+ ```bash
95
+ which dcode
96
+ which dcode-dev
97
+ dcode --version
98
+ dcode-dev --version
99
+ ~/.local/share/dcode-dev/bin/python -c 'import deepagents_code; print(deepagents_code.__file__)'
100
+ ```
101
+
56
102
  ## Startup performance
57
103
 
58
104
  `deepagents-code` must stay fast to launch. Never import heavy packages (e.g., `deepagents`, LangChain, LangGraph) at module level or in the argument-parsing path. These imports pull in large dependency trees and add seconds to every invocation, including trivial commands like `deepagents-code -v`.
@@ -2,6 +2,36 @@
2
2
 
3
3
  # Deep Agents Code Changelog
4
4
 
5
+ ## [0.1.12](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.11...deepagents-code==0.1.12) (2026-06-10)
6
+
7
+ ### Features
8
+
9
+ * Add `get_current_thread_id` tool ([#3820](https://github.com/langchain-ai/deepagents/issues/3820)) ([18ce094](https://github.com/langchain-ai/deepagents/commit/18ce094b7036796c7e23ce1338f4da56dc2ef126))
10
+ * Guard managed onboarding-name memory block from edits ([#3822](https://github.com/langchain-ai/deepagents/issues/3822)) ([dc0a51f](https://github.com/langchain-ai/deepagents/commit/dc0a51fc81d01b62dc8043148a9fd87099fc9123))
11
+ * Offer restart after restart-capable install ([#3821](https://github.com/langchain-ai/deepagents/issues/3821)) ([e356efe](https://github.com/langchain-ai/deepagents/commit/e356efeff1c8bfb894119cebbb7d3c0853d327a2))
12
+ * Persist `/threads` directory-scope preference ([#3824](https://github.com/langchain-ai/deepagents/issues/3824)) ([51a29f4](https://github.com/langchain-ai/deepagents/commit/51a29f4a0c28c122acae296a0df03bee20474455))
13
+ * Surface gateway key mismatch on `PermissionDeniedError` ([#3813](https://github.com/langchain-ai/deepagents/issues/3813)) ([5bd1ef8](https://github.com/langchain-ai/deepagents/commit/5bd1ef8cb29db781ccbb37755db44ce0ab1d7bd2))
14
+
15
+ ### Bug Fixes
16
+
17
+ * Surface cached MCP errors as failed tool messages ([#3829](https://github.com/langchain-ai/deepagents/issues/3829)) ([d83b428](https://github.com/langchain-ai/deepagents/commit/d83b428f7f97bc40b9219c02846c2d8b4ccac434))
18
+ * Handle MCP tool errors locally ([#3830](https://github.com/langchain-ai/deepagents/issues/3830)) ([97a7052](https://github.com/langchain-ai/deepagents/commit/97a7052b3eef7ec80bc90a4c3b606deeaf13cb9b))
19
+ * Make non-incognito `!` shell output visible to the model ([#3825](https://github.com/langchain-ai/deepagents/issues/3825)) ([2407bca](https://github.com/langchain-ai/deepagents/commit/2407bca66bac5d199a923a0e58872c813eb006bc))
20
+ * Expose `/restart` slash command ([#3809](https://github.com/langchain-ai/deepagents/issues/3809)) ([64505b8](https://github.com/langchain-ai/deepagents/commit/64505b848868b80213b6da87113cd63890c3d520))
21
+ * Agent retries `gh search` with invalid `mergedAt` field ([#3802](https://github.com/langchain-ai/deepagents/issues/3802)) ([0b683a9](https://github.com/langchain-ai/deepagents/commit/0b683a9435b95bce79d10451868eae54c6a3e88c))
22
+ * Clarify `/restart` message during server startup ([#3823](https://github.com/langchain-ai/deepagents/issues/3823)) ([49ded9e](https://github.com/langchain-ai/deepagents/commit/49ded9ef448dcd263bee07ac15f4904dd342bfa2))
23
+ * Cursor at end when popping queued message to input ([#3832](https://github.com/langchain-ai/deepagents/issues/3832)) ([aa522c9](https://github.com/langchain-ai/deepagents/commit/aa522c94fffb93dc578addb39b4879f779ac5899))
24
+ * Coalesce streamed markdown writes to keep input responsive ([#3819](https://github.com/langchain-ai/deepagents/issues/3819)) ([b45eeeb](https://github.com/langchain-ai/deepagents/commit/b45eeebaf7e6ae6e07b8f9ca521525c66fe14f63))
25
+ * Don't show `"No threads found"` while threads load ([#3815](https://github.com/langchain-ai/deepagents/issues/3815)) ([68e6426](https://github.com/langchain-ai/deepagents/commit/68e64263f590b3244b689664715f354fb3a389cd))
26
+ * Ignore stale cwd warmers in file autocomplete cache ([#3835](https://github.com/langchain-ai/deepagents/issues/3835)) ([9c8c2b2](https://github.com/langchain-ai/deepagents/commit/9c8c2b24853b7b3a7610cbcfc368a6464c0711e0))
27
+ * Offer cwd switch on resume ([#3810](https://github.com/langchain-ai/deepagents/issues/3810)) ([d417f53](https://github.com/langchain-ai/deepagents/commit/d417f530aafa8c77523487393dc3039cc822dc09))
28
+ * Recover from tool errors instead of aborting run ([#3804](https://github.com/langchain-ai/deepagents/issues/3804)) ([45691c5](https://github.com/langchain-ai/deepagents/commit/45691c556105e171c7210c7c10388dc73202a025))
29
+ * Show `/restart` feedback ([#3808](https://github.com/langchain-ai/deepagents/issues/3808)) ([c40bef9](https://github.com/langchain-ai/deepagents/commit/c40bef9b2aaace3909593503b28e8b548bc20014))
30
+ * Standardize search previews and restart status ([#3806](https://github.com/langchain-ai/deepagents/issues/3806)) ([71a6d50](https://github.com/langchain-ai/deepagents/commit/71a6d508b21b275c0c7c6bd2e0752adfba496ea9))
31
+ * Suppress stale update notices ([#3801](https://github.com/langchain-ai/deepagents/issues/3801)) ([db25241](https://github.com/langchain-ai/deepagents/commit/db252411d8ca945aca86429acb644540ec970bdb))
32
+ * Unblock `/remember` in server mode ([#3812](https://github.com/langchain-ai/deepagents/issues/3812)) ([12e00e1](https://github.com/langchain-ai/deepagents/commit/12e00e1a78e2d6be106147a0aa95a518be66849f))
33
+ * Unblock TUI input during `/restart` ([#3826](https://github.com/langchain-ai/deepagents/issues/3826)) ([366cd81](https://github.com/langchain-ai/deepagents/commit/366cd81269e2d3891a477848b774cf51af0cefc0))
34
+
5
35
  ## [0.1.11](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.10...deepagents-code==0.1.11) (2026-06-07)
6
36
 
7
37
  ### Bug Fixes
@@ -6,7 +6,7 @@ Canonical list of slash commands for `deepagents-code`, derived from
6
6
  regenerate after editing the registry.
7
7
 
8
8
 
9
- ## Public (27)
9
+ ## Public (28)
10
10
 
11
11
  | Command | Aliases | Description |
12
12
  | --- | --- | --- |
@@ -29,6 +29,7 @@ regenerate after editing the registry.
29
29
  | `/quit` | `/q` | Exit app |
30
30
  | `/reload` | | Reload config from environment variables and .env |
31
31
  | `/remember` | | Update memory and skills from conversation |
32
+ | `/restart` | | Restart the app-owned LangGraph server |
32
33
  | `/skill-creator` | | Guide for creating effective agent skills |
33
34
  | `/theme` | | Switch color theme |
34
35
  | `/threads` | | Browse and resume previous threads |
@@ -38,9 +39,8 @@ regenerate after editing the registry.
38
39
  | `/update` | | Check for and install updates |
39
40
  | `/version` | `/about` | Show version |
40
41
 
41
- ## Hidden (2)
42
+ ## Hidden (1)
42
43
 
43
44
  Hidden commands not exposed in autocomplete or help. See the `HIDDEN_COMMANDS` docstring in the registry for context.
44
45
 
45
46
  - `/debug-error`
46
- - `/restart`
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepagents-code
3
- Version: 0.1.11
3
+ Version: 0.1.12
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/
@@ -31,23 +31,23 @@ Requires-Dist: deepagents==0.6.8
31
31
  Requires-Dist: httpx<1.0.0,>=0.28.1
32
32
  Requires-Dist: langchain-anthropic<2.0.0,>=1.4.4
33
33
  Requires-Dist: langchain-google-genai<5.0.0,>=4.2.4
34
- Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.2.2
34
+ Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.3.0
35
35
  Requires-Dist: langchain-openai<2.0.0,>=1.2.2
36
36
  Requires-Dist: langchain<2.0.0,>=1.3.4
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.27
39
39
  Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.29.0
40
40
  Requires-Dist: langgraph-sdk<1.0.0,>=0.4.2
41
- Requires-Dist: langsmith[sandbox]>=0.8.8
41
+ Requires-Dist: langsmith[sandbox]>=0.8.11
42
42
  Requires-Dist: markdownify<2.0.0,>=1.2.2
43
43
  Requires-Dist: packaging>=26.2
44
44
  Requires-Dist: pillow<13.0.0,>=12.2.0
45
45
  Requires-Dist: prompt-toolkit<4.0.0,>=3.0.52
46
46
  Requires-Dist: pyperclip<2.0.0,>=1.11.0
47
47
  Requires-Dist: python-dotenv<2.0.0,>=1.2.2
48
- Requires-Dist: pyyaml>=6.0.0
48
+ Requires-Dist: pyyaml>=6.0.3
49
49
  Requires-Dist: requests<3.0.0,>=2.34.2
50
- Requires-Dist: rich<16.0.0,>=14.0.0
50
+ Requires-Dist: rich<16.0.0,>=15.0.0
51
51
  Requires-Dist: tavily-python<1.0.0,>=0.7.25
52
52
  Requires-Dist: textual-autocomplete<5.0.0,>=4.0.6
53
53
  Requires-Dist: textual-speedups<1.0.0,>=0.2.1
@@ -55,13 +55,13 @@ Requires-Dist: textual<9.0.0,>=8.2.7
55
55
  Requires-Dist: tomli-w<2.0.0,>=1.2.0
56
56
  Requires-Dist: uuid-utils<1.0.0,>=0.16.0
57
57
  Provides-Extra: agentcore
58
- Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.3; extra == 'agentcore'
58
+ Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.4; extra == 'agentcore'
59
59
  Provides-Extra: all-providers
60
60
  Requires-Dist: langchain-anthropic<2.0.0,>=1.4.4; extra == 'all-providers'
61
- Requires-Dist: langchain-aws<2.0.0,>=1.5.0; extra == 'all-providers'
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'
64
- Requires-Dist: langchain-deepseek<2.0.0,>=1.0.1; extra == 'all-providers'
64
+ Requires-Dist: langchain-deepseek<2.0.0,>=1.1.0; extra == 'all-providers'
65
65
  Requires-Dist: langchain-fireworks<2.0.0,>=1.4.2; extra == 'all-providers'
66
66
  Requires-Dist: langchain-google-genai<5.0.0,>=4.2.4; extra == 'all-providers'
67
67
  Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.3; extra == 'all-providers'
@@ -70,30 +70,30 @@ Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'all-providers'
70
70
  Requires-Dist: langchain-ibm<2.0.0,>=1.1.0; extra == 'all-providers'
71
71
  Requires-Dist: langchain-litellm<2.0.0,>=0.6.6; extra == 'all-providers'
72
72
  Requires-Dist: langchain-mistralai<2.0.0,>=1.1.4; extra == 'all-providers'
73
- Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.0; extra == 'all-providers'
73
+ Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.1; extra == 'all-providers'
74
74
  Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'all-providers'
75
75
  Requires-Dist: langchain-openai<2.0.0,>=1.2.2; extra == 'all-providers'
76
76
  Requires-Dist: langchain-openrouter<2.0.0,>=0.2.3; extra == 'all-providers'
77
- Requires-Dist: langchain-perplexity<2.0.0,>=1.3.1; extra == 'all-providers'
77
+ Requires-Dist: langchain-perplexity<2.0.0,>=1.3.2; extra == 'all-providers'
78
78
  Requires-Dist: langchain-together<2.0.0,>=0.4.0; extra == 'all-providers'
79
79
  Requires-Dist: langchain-xai<2.0.0,>=1.2.2; extra == 'all-providers'
80
80
  Provides-Extra: all-sandboxes
81
- Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.3; extra == 'all-sandboxes'
82
- Requires-Dist: langchain-daytona>=0.0.6; extra == 'all-sandboxes'
83
- Requires-Dist: langchain-modal>=0.0.4; extra == 'all-sandboxes'
81
+ Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.4; extra == 'all-sandboxes'
82
+ Requires-Dist: langchain-daytona>=0.0.7; extra == 'all-sandboxes'
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
86
  Requires-Dist: langchain-anthropic<2.0.0,>=1.4.4; 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
90
- Requires-Dist: langchain-aws<2.0.0,>=1.5.0; extra == 'bedrock'
90
+ Requires-Dist: langchain-aws<2.0.0,>=1.5.1; extra == 'bedrock'
91
91
  Provides-Extra: cohere
92
92
  Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'cohere'
93
93
  Provides-Extra: daytona
94
- Requires-Dist: langchain-daytona>=0.0.6; extra == 'daytona'
94
+ Requires-Dist: langchain-daytona>=0.0.7; extra == 'daytona'
95
95
  Provides-Extra: deepseek
96
- Requires-Dist: langchain-deepseek<2.0.0,>=1.0.1; extra == 'deepseek'
96
+ Requires-Dist: langchain-deepseek<2.0.0,>=1.1.0; extra == 'deepseek'
97
97
  Provides-Extra: fireworks
98
98
  Requires-Dist: langchain-fireworks<2.0.0,>=1.4.2; extra == 'fireworks'
99
99
  Provides-Extra: google-genai
@@ -109,9 +109,9 @@ Requires-Dist: langchain-litellm<2.0.0,>=0.6.6; extra == 'litellm'
109
109
  Provides-Extra: mistralai
110
110
  Requires-Dist: langchain-mistralai<2.0.0,>=1.1.4; extra == 'mistralai'
111
111
  Provides-Extra: modal
112
- Requires-Dist: langchain-modal>=0.0.4; extra == 'modal'
112
+ Requires-Dist: langchain-modal>=0.0.5; extra == 'modal'
113
113
  Provides-Extra: nvidia
114
- Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.0; extra == 'nvidia'
114
+ Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.1; extra == 'nvidia'
115
115
  Provides-Extra: ollama
116
116
  Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'ollama'
117
117
  Provides-Extra: openai
@@ -119,9 +119,9 @@ Requires-Dist: langchain-openai<2.0.0,>=1.2.2; extra == 'openai'
119
119
  Provides-Extra: openrouter
120
120
  Requires-Dist: langchain-openrouter<2.0.0,>=0.2.3; extra == 'openrouter'
121
121
  Provides-Extra: perplexity
122
- Requires-Dist: langchain-perplexity<2.0.0,>=1.3.1; extra == 'perplexity'
122
+ Requires-Dist: langchain-perplexity<2.0.0,>=1.3.2; extra == 'perplexity'
123
123
  Provides-Extra: quickjs
124
- Requires-Dist: langchain-quickjs<0.2.0,>=0.1.3; extra == 'quickjs'
124
+ Requires-Dist: langchain-quickjs<0.2.0,>=0.1.4; extra == 'quickjs'
125
125
  Provides-Extra: runloop
126
126
  Requires-Dist: langchain-runloop>=0.0.6; extra == 'runloop'
127
127
  Provides-Extra: together
@@ -11,7 +11,7 @@ from __future__ import annotations
11
11
  from dataclasses import dataclass, field
12
12
  from typing import Literal
13
13
 
14
- SpinnerStatus = Literal["Thinking", "Offloading"] | None
14
+ SpinnerStatus = Literal["Thinking", "Offloading", "Loading thread"] | None
15
15
  """Valid spinner display states, or `None` to hide."""
16
16
 
17
17
 
@@ -50,9 +50,9 @@ _DEEPAGENTS_WORD_SELECT_ACTIVE = "_deepagents_word_select_active"
50
50
 
51
51
  try:
52
52
  from textual import events
53
- from textual._ansi_sequences import (
54
- ANSI_SEQUENCES_KEYS, # noqa: PLC2701
55
- IGNORE_SEQUENCE, # noqa: PLC2701
53
+ from textual._ansi_sequences import ( # noqa: PLC2701
54
+ ANSI_SEQUENCES_KEYS,
55
+ IGNORE_SEQUENCE,
56
56
  )
57
57
  from textual._xterm_parser import XTermParser # noqa: PLC2701
58
58
 
@@ -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.11" # x-release-please-version
5
+ __version__ = "0.1.12" # 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."""
@@ -965,32 +965,32 @@ def _add_interrupt_on() -> dict[str, InterruptOnConfig]:
965
965
  """
966
966
  execute_interrupt_config: InterruptOnConfig = {
967
967
  "allowed_decisions": ["approve", "reject"],
968
- "description": _format_execute_description, # type: ignore[typeddict-item] # Callable description narrower than TypedDict expects
968
+ "description": _format_execute_description, # ty: ignore[invalid-argument-type] # Callable description narrower than TypedDict expects
969
969
  }
970
970
 
971
971
  write_file_interrupt_config: InterruptOnConfig = {
972
972
  "allowed_decisions": ["approve", "reject"],
973
- "description": _format_write_file_description, # type: ignore[typeddict-item] # Callable description narrower than TypedDict expects
973
+ "description": _format_write_file_description, # ty: ignore[invalid-argument-type] # Callable description narrower than TypedDict expects
974
974
  }
975
975
 
976
976
  edit_file_interrupt_config: InterruptOnConfig = {
977
977
  "allowed_decisions": ["approve", "reject"],
978
- "description": _format_edit_file_description, # type: ignore[typeddict-item] # Callable description narrower than TypedDict expects
978
+ "description": _format_edit_file_description, # ty: ignore[invalid-argument-type] # Callable description narrower than TypedDict expects
979
979
  }
980
980
 
981
981
  web_search_interrupt_config: InterruptOnConfig = {
982
982
  "allowed_decisions": ["approve", "reject"],
983
- "description": _format_web_search_description, # type: ignore[typeddict-item] # Callable description narrower than TypedDict expects
983
+ "description": _format_web_search_description, # ty: ignore[invalid-argument-type] # Callable description narrower than TypedDict expects
984
984
  }
985
985
 
986
986
  fetch_url_interrupt_config: InterruptOnConfig = {
987
987
  "allowed_decisions": ["approve", "reject"],
988
- "description": _format_fetch_url_description, # type: ignore[typeddict-item] # Callable description narrower than TypedDict expects
988
+ "description": _format_fetch_url_description, # ty: ignore[invalid-argument-type] # Callable description narrower than TypedDict expects
989
989
  }
990
990
 
991
991
  task_interrupt_config: InterruptOnConfig = {
992
992
  "allowed_decisions": ["approve", "reject"],
993
- "description": _format_task_description, # type: ignore[typeddict-item] # Callable description narrower than TypedDict expects
993
+ "description": _format_task_description, # ty: ignore[invalid-argument-type] # Callable description narrower than TypedDict expects
994
994
  }
995
995
 
996
996
  async_subagent_interrupt_config: InterruptOnConfig = {
@@ -1211,6 +1211,18 @@ def create_cli_agent(
1211
1211
  middleware.append(ConfigurableModelMiddleware())
1212
1212
  if restrictive_shell_allow_list is not None:
1213
1213
  middleware.append(ShellAllowListMiddleware(restrictive_shell_allow_list))
1214
+ # Subagents share the on-disk filesystem backend and can edit the user
1215
+ # AGENTS.md, so they get the same managed onboarding-name block guard as
1216
+ # the main agent. Gated on memory because the block only exists when
1217
+ # memory is enabled.
1218
+ if enable_memory:
1219
+ from deepagents_code.memory_guard import ManagedMemoryGuardMiddleware
1220
+
1221
+ middleware.append(
1222
+ ManagedMemoryGuardMiddleware(
1223
+ [settings.get_user_agent_md_path(assistant_id)]
1224
+ )
1225
+ )
1214
1226
  return middleware
1215
1227
 
1216
1228
  for subagent_meta in list_subagents(
@@ -1254,7 +1266,7 @@ def create_cli_agent(
1254
1266
  custom_subagents.append(general_purpose_subagent)
1255
1267
 
1256
1268
  # Build middleware stack based on enabled features
1257
- agent_middleware = [
1269
+ agent_middleware: list[AgentMiddleware[Any, Any]] = [
1258
1270
  ConfigurableModelMiddleware(),
1259
1271
  _FilesystemEmptyResultMiddleware(),
1260
1272
  ]
@@ -1290,6 +1302,18 @@ def create_cli_agent(
1290
1302
  )
1291
1303
  )
1292
1304
 
1305
+ # Protect the machine-managed onboarding-name block in the user
1306
+ # AGENTS.md from being rewritten by agent file edits. The block's
1307
+ # markers are HTML comments stripped before injection, so the model
1308
+ # can't see the boundary and would otherwise clobber it.
1309
+ from deepagents_code.memory_guard import ManagedMemoryGuardMiddleware
1310
+
1311
+ agent_middleware.append(
1312
+ ManagedMemoryGuardMiddleware(
1313
+ [settings.get_user_agent_md_path(assistant_id)]
1314
+ )
1315
+ )
1316
+
1293
1317
  # Add skills middleware
1294
1318
  if enable_skills:
1295
1319
  # Lowest to highest precedence:
@@ -1424,7 +1448,7 @@ def create_cli_agent(
1424
1448
  interrupt_on = {}
1425
1449
  else:
1426
1450
  # Full HITL for destructive operations
1427
- interrupt_on = _add_interrupt_on() # type: ignore[assignment] # InterruptOnConfig is compatible at runtime
1451
+ interrupt_on = _add_interrupt_on() # ty: ignore[invalid-assignment] # InterruptOnConfig is compatible at runtime
1428
1452
 
1429
1453
  # Set up composite backend with routing
1430
1454
  # For local FilesystemBackend, route large tool results to /tmp to avoid polluting