deepagents-code 0.1.8__tar.gz → 0.1.9__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 (255) hide show
  1. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/CHANGELOG.md +6 -0
  2. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/PKG-INFO +48 -48
  3. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/README.md +1 -1
  4. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_version.py +1 -1
  5. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/app.py +62 -20
  6. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/pyproject.toml +48 -34
  7. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_app.py +83 -0
  8. deepagents_code-0.1.9/tests/unit_tests/test_terminal_progress_preference.py +68 -0
  9. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/uv.lock +352 -441
  10. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/.gitignore +0 -0
  11. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/AGENTS.md +0 -0
  12. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/COMMANDS.md +0 -0
  13. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/DEV.md +0 -0
  14. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/Makefile +0 -0
  15. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/THREAT_MODEL.md +0 -0
  16. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/__init__.py +0 -0
  17. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/__main__.py +0 -0
  18. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_ask_user_types.py +0 -0
  19. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_cli_context.py +0 -0
  20. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_constants.py +0 -0
  21. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_debug.py +0 -0
  22. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_env_vars.py +0 -0
  23. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_git.py +0 -0
  24. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_server_config.py +0 -0
  25. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_session_stats.py +0 -0
  26. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_startup_error.py +0 -0
  27. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_testing_models.py +0 -0
  28. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_textual_patches.py +0 -0
  29. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/agent.py +0 -0
  30. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/app.tcss +0 -0
  31. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/ask_user.py +0 -0
  32. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/auth_store.py +0 -0
  33. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/built_in_skills/__init__.py +0 -0
  34. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
  35. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
  36. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  37. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  38. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/clipboard.py +0 -0
  39. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/command_registry.py +0 -0
  40. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/config.py +0 -0
  41. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/configurable_model.py +0 -0
  42. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/default_agent_prompt.md +0 -0
  43. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/editor.py +0 -0
  44. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/event_bus.py +0 -0
  45. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/extras_info.py +0 -0
  46. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/file_ops.py +0 -0
  47. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/filesystem_empty_result.py +0 -0
  48. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/formatting.py +0 -0
  49. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/hooks.py +0 -0
  50. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/input.py +0 -0
  51. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/integrations/__init__.py +0 -0
  52. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/integrations/sandbox_factory.py +0 -0
  53. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/integrations/sandbox_provider.py +0 -0
  54. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/iterm_cursor_guide.py +0 -0
  55. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/local_context.py +0 -0
  56. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/main.py +0 -0
  57. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_auth.py +0 -0
  58. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_commands.py +0 -0
  59. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_disabled.py +0 -0
  60. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_login_service.py +0 -0
  61. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_oauth_ui.py +0 -0
  62. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_providers/__init__.py +0 -0
  63. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_providers/_registry.py +0 -0
  64. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_providers/base.py +0 -0
  65. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_providers/github.py +0 -0
  66. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_providers/slack.py +0 -0
  67. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_tools.py +0 -0
  68. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_trust.py +0 -0
  69. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/media_utils.py +0 -0
  70. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/model_config.py +0 -0
  71. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/non_interactive.py +0 -0
  72. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/notifications.py +0 -0
  73. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/offload.py +0 -0
  74. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/onboarding.py +0 -0
  75. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/output.py +0 -0
  76. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/project_utils.py +0 -0
  77. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/py.typed +0 -0
  78. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/remote_client.py +0 -0
  79. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/resume_state.py +0 -0
  80. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/server.py +0 -0
  81. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/server_graph.py +0 -0
  82. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/server_manager.py +0 -0
  83. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/sessions.py +0 -0
  84. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/skills/__init__.py +0 -0
  85. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/skills/commands.py +0 -0
  86. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/skills/invocation.py +0 -0
  87. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/skills/load.py +0 -0
  88. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/state_migration.py +0 -0
  89. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/subagents.py +0 -0
  90. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/system_prompt.md +0 -0
  91. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/terminal_capabilities.py +0 -0
  92. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/terminal_escape.py +0 -0
  93. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/textual_adapter.py +0 -0
  94. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/theme.py +0 -0
  95. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/tool_display.py +0 -0
  96. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/tools.py +0 -0
  97. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/ui.py +0 -0
  98. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/unicode_security.py +0 -0
  99. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/update_check.py +0 -0
  100. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/__init__.py +0 -0
  101. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/_links.py +0 -0
  102. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/agent_selector.py +0 -0
  103. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/approval.py +0 -0
  104. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/ask_user.py +0 -0
  105. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/auth.py +0 -0
  106. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/autocomplete.py +0 -0
  107. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/chat_input.py +0 -0
  108. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/diff.py +0 -0
  109. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/history.py +0 -0
  110. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/launch_init.py +0 -0
  111. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/loading.py +0 -0
  112. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/mcp_login.py +0 -0
  113. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/mcp_reconnect.py +0 -0
  114. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/mcp_viewer.py +0 -0
  115. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/message_store.py +0 -0
  116. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/messages.py +0 -0
  117. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/model_selector.py +0 -0
  118. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/notification_center.py +0 -0
  119. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/notification_detail.py +0 -0
  120. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/notification_settings.py +0 -0
  121. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/status.py +0 -0
  122. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/theme_selector.py +0 -0
  123. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/thread_selector.py +0 -0
  124. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/tool_renderers.py +0 -0
  125. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/tool_widgets.py +0 -0
  126. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/update_available.py +0 -0
  127. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/update_progress.py +0 -0
  128. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/welcome.py +0 -0
  129. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/examples/skills/arxiv-search/SKILL.md +0 -0
  130. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  131. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/examples/skills/langgraph-docs/SKILL.md +0 -0
  132. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/examples/skills/skill-creator/SKILL.md +0 -0
  133. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  134. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  135. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/examples/skills/web-research/SKILL.md +0 -0
  136. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/images/tui.png +0 -0
  137. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/scripts/check_imports.py +0 -0
  138. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/scripts/debug_server.sh +0 -0
  139. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/scripts/generate_commands_catalog.py +0 -0
  140. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/scripts/install.sh +0 -0
  141. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/README.md +0 -0
  142. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/__init__.py +0 -0
  143. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/benchmarks/__init__.py +0 -0
  144. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
  145. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
  146. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/conftest.py +0 -0
  147. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/test_acp_mode.py +0 -0
  148. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/test_compact_resume.py +0 -0
  149. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/test_sandbox_factory.py +0 -0
  150. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/test_sandbox_operations.py +0 -0
  151. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/__init__.py +0 -0
  152. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/conftest.py +0 -0
  153. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/skills/__init__.py +0 -0
  154. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/skills/test_commands.py +0 -0
  155. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/skills/test_load.py +0 -0
  156. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/skills/test_skills_json.py +0 -0
  157. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_agent.py +0 -0
  158. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_agent_friendly.py +0 -0
  159. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_agent_selector.py +0 -0
  160. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_approval.py +0 -0
  161. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_args.py +0 -0
  162. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_ask_user.py +0 -0
  163. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_ask_user_middleware.py +0 -0
  164. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_auth_store.py +0 -0
  165. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_auth_widgets.py +0 -0
  166. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_autocomplete.py +0 -0
  167. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_charset.py +0 -0
  168. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_chat_input.py +0 -0
  169. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_clipboard.py +0 -0
  170. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_command_registry.py +0 -0
  171. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_compact_tool.py +0 -0
  172. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_config.py +0 -0
  173. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_configurable_model.py +0 -0
  174. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_cursor_blink.py +0 -0
  175. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_debug.py +0 -0
  176. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_editor.py +0 -0
  177. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_end_to_end.py +0 -0
  178. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_env_vars.py +0 -0
  179. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_event_bus.py +0 -0
  180. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_exception_handling.py +0 -0
  181. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_extras_info.py +0 -0
  182. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_file_ops.py +0 -0
  183. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_filesystem_empty_result.py +0 -0
  184. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_formatting.py +0 -0
  185. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_git.py +0 -0
  186. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_history.py +0 -0
  187. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_hooks.py +0 -0
  188. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_imports.py +0 -0
  189. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_input_parsing.py +0 -0
  190. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_install_command.py +0 -0
  191. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
  192. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_launch_init.py +0 -0
  193. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_links.py +0 -0
  194. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_loading.py +0 -0
  195. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_local_context.py +0 -0
  196. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_main.py +0 -0
  197. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_main_acp_mode.py +0 -0
  198. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_main_args.py +0 -0
  199. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_auth.py +0 -0
  200. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_commands.py +0 -0
  201. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_disabled.py +0 -0
  202. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_login_modal.py +0 -0
  203. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_login_service.py +0 -0
  204. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
  205. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_reconnect.py +0 -0
  206. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_tools.py +0 -0
  207. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_trust.py +0 -0
  208. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_viewer.py +0 -0
  209. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_media_utils.py +0 -0
  210. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_message_store.py +0 -0
  211. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_messages.py +0 -0
  212. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_model_config.py +0 -0
  213. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_model_selector.py +0 -0
  214. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_model_switch.py +0 -0
  215. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_non_interactive.py +0 -0
  216. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_notification_center.py +0 -0
  217. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_notification_detail.py +0 -0
  218. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_notifications.py +0 -0
  219. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_offload.py +0 -0
  220. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_offload_dict_messages.py +0 -0
  221. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_onboarding.py +0 -0
  222. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_output.py +0 -0
  223. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_reload.py +0 -0
  224. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_remote_client.py +0 -0
  225. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_resume_state.py +0 -0
  226. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_sandbox_factory.py +0 -0
  227. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_server.py +0 -0
  228. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_server_config.py +0 -0
  229. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_server_graph.py +0 -0
  230. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_server_helpers.py +0 -0
  231. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_server_manager.py +0 -0
  232. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_session_stats.py +0 -0
  233. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_sessions.py +0 -0
  234. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_shell_allow_list.py +0 -0
  235. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_skill_invocation.py +0 -0
  236. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_startup_fast_paths.py +0 -0
  237. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_state_migration.py +0 -0
  238. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_status.py +0 -0
  239. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_subagents.py +0 -0
  240. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_terminal_capabilities.py +0 -0
  241. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_terminal_escape.py +0 -0
  242. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_textual_adapter.py +0 -0
  243. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_textual_patches.py +0 -0
  244. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_theme.py +0 -0
  245. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_thread_selector.py +0 -0
  246. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_tool_display.py +0 -0
  247. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_ui.py +0 -0
  248. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_unicode_security.py +0 -0
  249. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_update_available.py +0 -0
  250. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_update_check.py +0 -0
  251. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_update_progress.py +0 -0
  252. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_version.py +0 -0
  253. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_welcome.py +0 -0
  254. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/tools/__init__.py +0 -0
  255. {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/tools/test_fetch_url.py +0 -0
@@ -2,6 +2,12 @@
2
2
 
3
3
  # Deep Agents Code Changelog
4
4
 
5
+ ## [0.1.9](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.8...deepagents-code==0.1.9) (2026-06-03)
6
+
7
+ ### Bug Fixes
8
+
9
+ * Add terminal progress preference ([#3728](https://github.com/langchain-ai/deepagents/issues/3728)) ([d9e4976](https://github.com/langchain-ai/deepagents/commit/d9e4976826ae2281e90e06facb5a70a785703029))
10
+
5
11
  ## [0.1.8](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.7...deepagents-code==0.1.8) (2026-06-02)
6
12
 
7
13
  ### Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepagents-code
3
- Version: 0.1.8
3
+ Version: 0.1.9
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/
@@ -25,105 +25,105 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
25
25
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
26
  Classifier: Topic :: Terminals
27
27
  Requires-Python: <4.0,>=3.11
28
- Requires-Dist: aiosqlite<1.0.0,>=0.19.0
29
- Requires-Dist: deepagents-acp>=0.0.4
30
- Requires-Dist: deepagents==0.6.7
28
+ Requires-Dist: aiosqlite<1.0.0,>=0.22.1
29
+ Requires-Dist: deepagents-acp<1.0.0,>=0.0.7
30
+ Requires-Dist: deepagents==0.6.8
31
31
  Requires-Dist: httpx<1.0.0,>=0.28.1
32
- Requires-Dist: langchain-anthropic<2.0.0,>=1.4.3
33
- Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2
32
+ Requires-Dist: langchain-anthropic<2.0.0,>=1.4.4
33
+ Requires-Dist: langchain-google-genai<5.0.0,>=4.2.4
34
34
  Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.2.2
35
- Requires-Dist: langchain-openai<2.0.0,>=1.2.1
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
- Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.24
39
- Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.28.1
40
- Requires-Dist: langgraph-sdk<1.0.0,>=0.3.13
41
- Requires-Dist: langsmith[sandbox]>=0.8.0
42
- Requires-Dist: markdownify<2.0.0,>=0.13.0
43
- Requires-Dist: packaging>=23.0
44
- Requires-Dist: pillow<13.0.0,>=10.0.0
38
+ Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.27
39
+ Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.29.0
40
+ Requires-Dist: langgraph-sdk<1.0.0,>=0.4.2
41
+ Requires-Dist: langsmith[sandbox]>=0.8.8
42
+ Requires-Dist: markdownify<2.0.0,>=1.2.2
43
+ Requires-Dist: packaging>=26.2
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
48
  Requires-Dist: pyyaml>=6.0.0
49
- Requires-Dist: requests<3.0.0,>=2.0.0
50
- Requires-Dist: rich<16.0.0,>=14.2.0
51
- Requires-Dist: tavily-python<1.0.0,>=0.7.24
49
+ Requires-Dist: requests<3.0.0,>=2.34.2
50
+ Requires-Dist: rich<16.0.0,>=14.0.0
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
54
- Requires-Dist: textual<9.0.0,>=8.2.5
55
- Requires-Dist: tomli-w<2.0.0,>=1.0.0
56
- Requires-Dist: uuid-utils<1.0.0,>=0.10.0
54
+ Requires-Dist: textual<9.0.0,>=8.2.7
55
+ Requires-Dist: tomli-w<2.0.0,>=1.2.0
56
+ Requires-Dist: uuid-utils<1.0.0,>=0.16.0
57
57
  Provides-Extra: agentcore
58
- Requires-Dist: langchain-agentcore-codeinterpreter>=0.0.2; extra == 'agentcore'
58
+ Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.3; extra == 'agentcore'
59
59
  Provides-Extra: all-providers
60
- Requires-Dist: langchain-anthropic<2.0.0,>=1.4.3; extra == 'all-providers'
61
- Requires-Dist: langchain-aws<2.0.0,>=1.4.6; extra == 'all-providers'
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'
62
62
  Requires-Dist: langchain-baseten<1.0.0,>=0.2.0; extra == 'all-providers'
63
- Requires-Dist: langchain-cohere<1.0.0,>=0.5.1; extra == 'all-providers'
63
+ Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'all-providers'
64
64
  Requires-Dist: langchain-deepseek<2.0.0,>=1.0.1; extra == 'all-providers'
65
- Requires-Dist: langchain-fireworks<2.0.0,>=1.3.1; extra == 'all-providers'
66
- Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2; extra == 'all-providers'
65
+ Requires-Dist: langchain-fireworks<2.0.0,>=1.4.2; extra == 'all-providers'
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'
68
68
  Requires-Dist: langchain-groq<2.0.0,>=1.1.2; extra == 'all-providers'
69
69
  Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'all-providers'
70
- Requires-Dist: langchain-ibm<2.0.0,>=1.0.7; extra == 'all-providers'
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.2.1; extra == 'all-providers'
73
+ Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.0; extra == 'all-providers'
74
74
  Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'all-providers'
75
- Requires-Dist: langchain-openai<2.0.0,>=1.2.1; extra == 'all-providers'
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.2.0; extra == 'all-providers'
77
+ Requires-Dist: langchain-perplexity<2.0.0,>=1.3.1; 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>=0.0.2; extra == 'all-sandboxes'
82
- Requires-Dist: langchain-daytona>=0.0.5; extra == 'all-sandboxes'
83
- Requires-Dist: langchain-modal>=0.0.3; extra == 'all-sandboxes'
84
- Requires-Dist: langchain-runloop>=0.0.4; 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'
84
+ Requires-Dist: langchain-runloop>=0.0.5; extra == 'all-sandboxes'
85
85
  Provides-Extra: anthropic
86
- Requires-Dist: langchain-anthropic<2.0.0,>=1.4.3; extra == 'anthropic'
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.4.6; extra == 'bedrock'
90
+ Requires-Dist: langchain-aws<2.0.0,>=1.5.0; extra == 'bedrock'
91
91
  Provides-Extra: cohere
92
- Requires-Dist: langchain-cohere<1.0.0,>=0.5.1; extra == 'cohere'
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.5; extra == 'daytona'
94
+ Requires-Dist: langchain-daytona>=0.0.6; extra == 'daytona'
95
95
  Provides-Extra: deepseek
96
96
  Requires-Dist: langchain-deepseek<2.0.0,>=1.0.1; extra == 'deepseek'
97
97
  Provides-Extra: fireworks
98
- Requires-Dist: langchain-fireworks<2.0.0,>=1.3.1; extra == 'fireworks'
98
+ Requires-Dist: langchain-fireworks<2.0.0,>=1.4.2; extra == 'fireworks'
99
99
  Provides-Extra: google-genai
100
- Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2; extra == 'google-genai'
100
+ Requires-Dist: langchain-google-genai<5.0.0,>=4.2.4; extra == 'google-genai'
101
101
  Provides-Extra: groq
102
102
  Requires-Dist: langchain-groq<2.0.0,>=1.1.2; extra == 'groq'
103
103
  Provides-Extra: huggingface
104
104
  Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'huggingface'
105
105
  Provides-Extra: ibm
106
- Requires-Dist: langchain-ibm<2.0.0,>=1.0.7; extra == 'ibm'
106
+ Requires-Dist: langchain-ibm<2.0.0,>=1.1.0; extra == 'ibm'
107
107
  Provides-Extra: litellm
108
108
  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.3; extra == 'modal'
112
+ Requires-Dist: langchain-modal>=0.0.4; extra == 'modal'
113
113
  Provides-Extra: nvidia
114
- Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.2.1; extra == 'nvidia'
114
+ Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.0; 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
118
- Requires-Dist: langchain-openai<2.0.0,>=1.2.1; extra == 'openai'
118
+ 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.2.0; extra == 'perplexity'
122
+ Requires-Dist: langchain-perplexity<2.0.0,>=1.3.1; extra == 'perplexity'
123
123
  Provides-Extra: quickjs
124
- Requires-Dist: langchain-quickjs<0.2.0,>=0.1.2; extra == 'quickjs'
124
+ Requires-Dist: langchain-quickjs<0.2.0,>=0.1.3; extra == 'quickjs'
125
125
  Provides-Extra: runloop
126
- Requires-Dist: langchain-runloop>=0.0.4; extra == 'runloop'
126
+ Requires-Dist: langchain-runloop>=0.0.5; extra == 'runloop'
127
127
  Provides-Extra: together
128
128
  Requires-Dist: langchain-together<2.0.0,>=0.4.0; extra == 'together'
129
129
  Provides-Extra: vertex
@@ -152,7 +152,7 @@ curl -LsSf https://langch.in/dcode | bash
152
152
  ```bash
153
153
  # With model provider extras
154
154
  # OpenAI, Anthropic, and Gemini are included by default
155
- DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/dcode | bash
155
+ DEEPAGENTS_CODE_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/dcode | bash
156
156
  ```
157
157
 
158
158
  Run:
@@ -18,7 +18,7 @@ curl -LsSf https://langch.in/dcode | bash
18
18
  ```bash
19
19
  # With model provider extras
20
20
  # OpenAI, Anthropic, and Gemini are included by default
21
- DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/dcode | bash
21
+ DEEPAGENTS_CODE_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/dcode | bash
22
22
  ```
23
23
 
24
24
  Run:
@@ -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.8" # x-release-please-version
5
+ __version__ = "0.1.9" # 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."""
@@ -560,16 +560,21 @@ def save_theme_preference(name: str) -> bool:
560
560
  return _save_theme_preference_result(name).ok
561
561
 
562
562
 
563
- def _load_cursor_blink_preference() -> bool:
564
- """Load the saved cursor-blink preference from `~/.deepagents/config.toml`.
563
+ def _load_bool_ui_preference(key: str, *, log_label: str) -> bool:
564
+ """Load a boolean `[ui]` preference from `~/.deepagents/config.toml`.
565
565
 
566
- The chat input cursor blink can be turned off by setting
567
- `[ui].cursor_blink = false` in the config file. There is no in-app command
568
- for this; the file is edited manually.
566
+ These preferences have no in-app command; the file is edited manually. The
567
+ loader is intentionally forgiving: any problem reading or parsing the config
568
+ falls back to `True` (the feature stays on) after logging a warning, so a
569
+ typo in a cosmetic setting never breaks startup.
570
+
571
+ Args:
572
+ key: The key to read from the `[ui]` table.
573
+ log_label: Human-readable name of the preference, used in warning logs.
569
574
 
570
575
  Returns:
571
- The saved `[ui].cursor_blink` value, or `True` (blink on) when unset,
572
- unreadable, or malformed.
576
+ The saved `[ui].<key>` value, or `True` when unset, unreadable,
577
+ or malformed.
573
578
  """
574
579
  import tomllib
575
580
 
@@ -581,28 +586,60 @@ def _load_cursor_blink_preference() -> bool:
581
586
  with DEFAULT_CONFIG_PATH.open("rb") as f:
582
587
  data = tomllib.load(f)
583
588
  except (tomllib.TOMLDecodeError, PermissionError, OSError) as exc:
584
- logger.warning("Could not read config for cursor blink preference: %s", exc)
589
+ logger.warning("Could not read config for %s preference: %s", log_label, exc)
585
590
  return True
586
591
 
587
592
  ui = data.get("ui", {})
588
593
  if not isinstance(ui, dict):
589
594
  logger.warning(
590
- "[ui] should be a table; got %s while loading cursor blink preference",
595
+ "[ui] should be a table; got %s while loading %s preference",
591
596
  type(ui).__name__,
597
+ log_label,
592
598
  )
593
599
  return True
594
600
 
595
- value = ui.get("cursor_blink")
601
+ value = ui.get(key)
596
602
  if isinstance(value, bool):
597
603
  return value
598
604
  if value is not None:
599
605
  logger.warning(
600
- "[ui].cursor_blink should be a boolean; got %s",
606
+ "[ui].%s should be a boolean; got %s",
607
+ key,
601
608
  type(value).__name__,
602
609
  )
603
610
  return True
604
611
 
605
612
 
613
+ def _load_cursor_blink_preference() -> bool:
614
+ """Load the saved cursor-blink preference from `~/.deepagents/config.toml`.
615
+
616
+ The chat input cursor blink can be turned off by setting
617
+ `[ui].cursor_blink = false` in the config file. There is no in-app command
618
+ for this; the file is edited manually.
619
+
620
+ Returns:
621
+ The saved `[ui].cursor_blink` value, or `True` (blink on) when unset,
622
+ unreadable, or malformed.
623
+ """
624
+ return _load_bool_ui_preference("cursor_blink", log_label="cursor blink")
625
+
626
+
627
+ def _load_terminal_progress_preference() -> bool:
628
+ """Load the `OSC 9;4` progress preference from `~/.deepagents/config.toml`.
629
+
630
+ The terminal taskbar/dock/tab progress indicator (where supported) can be
631
+ turned off by setting `[ui].terminal_progress = false` in the config file.
632
+ There is no in-app command for this; the file is edited manually. The
633
+ `DEEPAGENTS_CODE_NO_TERMINAL_ESCAPE` environment variable still disables all
634
+ terminal escapes regardless of this value.
635
+
636
+ Returns:
637
+ The saved `[ui].terminal_progress` value, or `True` (progress on) when
638
+ unset, unreadable, or malformed.
639
+ """
640
+ return _load_bool_ui_preference("terminal_progress", log_label="terminal progress")
641
+
642
+
606
643
  def _save_terminal_theme_mapping_result(
607
644
  term_program: str,
608
645
  name: str,
@@ -1410,6 +1447,9 @@ class DeepAgentsApp(App):
1410
1447
  self._cursor_blink_enabled = _load_cursor_blink_preference()
1411
1448
  """Whether the chat input cursor should blink (user preference)."""
1412
1449
 
1450
+ self._terminal_progress_enabled = _load_terminal_progress_preference()
1451
+ """Whether to emit `OSC 9;4` taskbar progress (user preference)."""
1452
+
1413
1453
  self.sync_terminal_background()
1414
1454
 
1415
1455
  # Injected session config
@@ -3948,18 +3988,20 @@ class DeepAgentsApp(App):
3948
3988
  if self._loading_widget:
3949
3989
  await self._loading_widget.remove()
3950
3990
  self._loading_widget = None
3991
+ if self._terminal_progress_enabled:
3992
+ try:
3993
+ clear_terminal_progress()
3994
+ except Exception:
3995
+ # Cosmetic only — must never break spinner lifecycle.
3996
+ logger.exception("clear_terminal_progress raised unexpectedly")
3997
+ return
3998
+
3999
+ if self._terminal_progress_enabled:
3951
4000
  try:
3952
- clear_terminal_progress()
4001
+ set_terminal_progress(state=TerminalProgressState.INDETERMINATE)
3953
4002
  except Exception:
3954
4003
  # Cosmetic only — must never break spinner lifecycle.
3955
- logger.exception("clear_terminal_progress raised unexpectedly")
3956
- return
3957
-
3958
- try:
3959
- set_terminal_progress(state=TerminalProgressState.INDETERMINATE)
3960
- except Exception:
3961
- # Cosmetic only — must never break spinner lifecycle.
3962
- logger.exception("set_terminal_progress raised unexpectedly")
4004
+ logger.exception("set_terminal_progress raised unexpectedly")
3963
4005
 
3964
4006
  try:
3965
4007
  messages = self.query_one("#messages", Container)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "deepagents-code"
7
- version = "0.1.8"
7
+ version = "0.1.9"
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,79 +26,79 @@ classifiers = [
26
26
  ]
27
27
  dependencies = [
28
28
  # Framework
29
- "deepagents==0.6.7",
29
+ "deepagents==0.6.8",
30
30
  "langchain>=1.3.4,<2.0.0",
31
31
  "langgraph-checkpoint-sqlite>=3.1.0,<4.0.0",
32
32
 
33
33
  # Client-server architecture
34
- "langgraph-sdk>=0.3.13,<1.0.0",
35
- "langgraph-cli[inmem]>=0.4.24,<1.0.0",
36
- "langgraph-runtime-inmem>=0.28.1,<1.0.0",
34
+ "langgraph-sdk>=0.4.2,<1.0.0",
35
+ "langgraph-cli[inmem]>=0.4.27,<1.0.0",
36
+ "langgraph-runtime-inmem>=0.29.0,<1.0.0",
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.3,<2.0.0",
41
- "langchain-google-genai>=4.2.2,<5.0.0",
42
- "langchain-openai>=1.2.1,<2.0.0",
40
+ "langchain-anthropic>=1.4.4,<2.0.0",
41
+ "langchain-google-genai>=4.2.4,<5.0.0",
42
+ "langchain-openai>=1.2.2,<2.0.0",
43
43
 
44
44
  # UI/Terminal
45
45
  # Workaround for Textualize/textual#6378 lives in `_textual_patches.py`.
46
46
  # On bump, run `tests/unit_tests/test_textual_patches.py` and delete the
47
47
  # patch if the upstream issue is fixed.
48
- "textual>=8.2.5,<9.0.0",
48
+ "textual>=8.2.7,<9.0.0",
49
49
  "textual-autocomplete>=4.0.6,<5.0.0",
50
50
  "textual-speedups>=0.2.1,<1.0.0",
51
51
  "prompt-toolkit>=3.0.52,<4.0.0",
52
- "rich>=14.2.0,<16.0.0",
53
- "markdownify>=0.13.0,<2.0.0",
52
+ "rich>=14.0.0,<16.0.0",
53
+ "markdownify>=1.2.2,<2.0.0",
54
54
 
55
55
  # Sandbox integrations
56
- "langsmith[sandbox]>=0.8.0",
56
+ "langsmith[sandbox]>=0.8.8",
57
57
 
58
58
  # Tools
59
- "tavily-python>=0.7.24,<1.0.0",
59
+ "tavily-python>=0.7.25,<1.0.0",
60
60
 
61
61
  # Clipboard
62
62
  "pyperclip>=1.11.0,<2.0.0",
63
63
 
64
64
  # Version parsing
65
- "packaging>=23.0",
65
+ "packaging>=26.2",
66
66
 
67
67
  # Utilities
68
- "uuid-utils>=0.10.0,<1.0.0",
68
+ "uuid-utils>=0.16.0,<1.0.0",
69
69
  "python-dotenv>=1.2.2,<2.0.0",
70
- "requests>=2.0.0,<3.0.0",
71
- "pillow>=10.0.0,<13.0.0",
70
+ "requests>=2.34.2,<3.0.0",
71
+ "pillow>=12.2.0,<13.0.0",
72
72
  "pyyaml>=6.0.0",
73
- "aiosqlite>=0.19.0,<1.0.0",
74
- "tomli-w>=1.0.0,<2.0.0",
73
+ "aiosqlite>=0.22.1,<1.0.0",
74
+ "tomli-w>=1.2.0,<2.0.0",
75
75
 
76
76
  # MCP
77
77
  "langchain-mcp-adapters>=0.2.2,<1.0.0",
78
78
 
79
79
  # ACP
80
- "deepagents-acp>=0.0.4",
80
+ "deepagents-acp>=0.0.7,<1.0.0",
81
81
  ]
82
82
 
83
83
  [project.optional-dependencies]
84
84
  # Model providers
85
- anthropic = ["langchain-anthropic>=1.4.3,<2.0.0"]
85
+ anthropic = ["langchain-anthropic>=1.4.4,<2.0.0"]
86
86
  baseten = ["langchain-baseten>=0.2.0,<1.0.0"]
87
- bedrock = ["langchain-aws>=1.4.6,<2.0.0"]
88
- cohere = ["langchain-cohere>=0.5.1,<1.0.0"]
87
+ bedrock = ["langchain-aws>=1.5.0,<2.0.0"]
88
+ cohere = ["langchain-cohere>=0.6.0,<1.0.0"]
89
89
  deepseek = ["langchain-deepseek>=1.0.1,<2.0.0"]
90
- fireworks = ["langchain-fireworks>=1.3.1,<2.0.0"]
91
- google-genai = ["langchain-google-genai>=4.2.2,<5.0.0"]
90
+ fireworks = ["langchain-fireworks>=1.4.2,<2.0.0"]
91
+ google-genai = ["langchain-google-genai>=4.2.4,<5.0.0"]
92
92
  groq = ["langchain-groq>=1.1.2,<2.0.0"]
93
93
  huggingface = ["langchain-huggingface>=1.2.2,<2.0.0"]
94
- ibm = ["langchain-ibm>=1.0.7,<2.0.0"]
94
+ ibm = ["langchain-ibm>=1.1.0,<2.0.0"]
95
95
  litellm = ["langchain-litellm>=0.6.6,<2.0.0"]
96
96
  mistralai = ["langchain-mistralai>=1.1.4,<2.0.0"]
97
- nvidia = ["langchain-nvidia-ai-endpoints>=1.2.1,<2.0.0"]
97
+ nvidia = ["langchain-nvidia-ai-endpoints>=1.4.0,<2.0.0"]
98
98
  ollama = ["langchain-ollama>=1.1.0,<2.0.0"]
99
- openai = ["langchain-openai>=1.2.1,<2.0.0"]
99
+ openai = ["langchain-openai>=1.2.2,<2.0.0"]
100
100
  openrouter = ["langchain-openrouter>=0.2.3,<2.0.0"]
101
- perplexity = ["langchain-perplexity>=1.2.0,<2.0.0"]
101
+ perplexity = ["langchain-perplexity>=1.3.1,<2.0.0"]
102
102
  together = ["langchain-together>=0.4.0,<2.0.0"]
103
103
  vertex = ["langchain-google-vertexai>=3.2.3,<4.0.0"]
104
104
  xai = ["langchain-xai>=1.2.2,<2.0.0"]
@@ -107,16 +107,16 @@ all-providers = [
107
107
  ]
108
108
 
109
109
  # Sandbox providers
110
- agentcore = ["langchain-agentcore-codeinterpreter>=0.0.2"]
111
- daytona = ["langchain-daytona>=0.0.5"]
112
- modal = ["langchain-modal>=0.0.3"]
113
- runloop = ["langchain-runloop>=0.0.4"]
110
+ agentcore = ["langchain-agentcore-codeinterpreter>=0.0.3,<1.0.0"]
111
+ daytona = ["langchain-daytona>=0.0.6"]
112
+ modal = ["langchain-modal>=0.0.4"]
113
+ runloop = ["langchain-runloop>=0.0.5"]
114
114
  all-sandboxes = [
115
115
  "deepagents-code[agentcore,daytona,modal,runloop]",
116
116
  ]
117
117
 
118
118
  # Standalone integrations (not part of any composite extra)
119
- quickjs = ["langchain-quickjs>=0.1.2,<0.2.0"]
119
+ quickjs = ["langchain-quickjs>=0.1.3,<0.2.0"]
120
120
 
121
121
 
122
122
  [project.scripts]
@@ -166,6 +166,20 @@ include = [
166
166
  "deepagents_code/default_agent_prompt.md" = "deepagents_code/default_agent_prompt.md"
167
167
  "deepagents_code/*.tcss" = "deepagents_code/"
168
168
 
169
+ [tool.uv]
170
+ # langchain-fireworks depends on fireworks-ai>=1.2.0a71 (a pre-release). Scope
171
+ # the pre-release opt-in to fireworks-ai only so every other package still
172
+ # resolves to stable releases.
173
+ #
174
+ # deepagents-acp's `server` module uses the agent-client-protocol v0.9 schema
175
+ # (e.g. `SetSessionConfigOptionResponse`) but its published floor is still
176
+ # `>=0.8.0`, so the lock can resolve to 0.8.x and break the import. Floor it to
177
+ # 0.9.0 here until deepagents-acp bumps its own dependency pin.
178
+ constraint-dependencies = [
179
+ "fireworks-ai>=1.2.0a71",
180
+ "agent-client-protocol>=0.9.0",
181
+ ]
182
+
169
183
  [tool.uv.sources]
170
184
  deepagents = { path = "../deepagents", editable = true }
171
185
  langchain-daytona = { path = "../partners/daytona", editable = true }
@@ -9200,6 +9200,21 @@ from deepagents_code.command_registry import BypassTier # noqa: E402
9200
9200
  class TestSetSpinnerTerminalProgress:
9201
9201
  """`_set_spinner` should drive the `OSC 9;4` terminal progress indicator."""
9202
9202
 
9203
+ @pytest.fixture(autouse=True)
9204
+ def _isolate_config(self, tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None:
9205
+ """Point the config path at an empty temp dir.
9206
+
9207
+ Without this, `_load_terminal_progress_preference` reads the developer's
9208
+ real `~/.deepagents/config.toml` during `DeepAgentsApp.__init__`, so a
9209
+ local `[ui].terminal_progress = false` would silently flip the
9210
+ positive-path tests below to failing. Tests that need a specific config
9211
+ write to and re-point at this same path.
9212
+ """
9213
+ monkeypatch.setattr(
9214
+ "deepagents_code.model_config.DEFAULT_CONFIG_PATH",
9215
+ tmp_path / "config.toml",
9216
+ )
9217
+
9203
9218
  async def test_status_triggers_indeterminate_progress(
9204
9219
  self, monkeypatch: pytest.MonkeyPatch
9205
9220
  ) -> None:
@@ -9263,6 +9278,74 @@ class TestSetSpinnerTerminalProgress:
9263
9278
 
9264
9279
  assert "clear" in calls
9265
9280
 
9281
+ async def test_config_opt_out_suppresses_progress(
9282
+ self, tmp_path: Path, monkeypatch: pytest.MonkeyPatch
9283
+ ) -> None:
9284
+ """`[ui].terminal_progress = false` should suppress progress escapes."""
9285
+ from deepagents_code import terminal_escape
9286
+
9287
+ config = tmp_path / "config.toml"
9288
+ config.write_text("[ui]\nterminal_progress = false\n", encoding="utf-8")
9289
+ monkeypatch.setattr("deepagents_code.model_config.DEFAULT_CONFIG_PATH", config)
9290
+
9291
+ calls: list[str] = []
9292
+
9293
+ def _record_set(*_args: object, **_kwargs: object) -> bool:
9294
+ calls.append("set")
9295
+ return True
9296
+
9297
+ def _record_clear() -> bool:
9298
+ calls.append("clear")
9299
+ return True
9300
+
9301
+ monkeypatch.setattr(terminal_escape, "set_terminal_progress", _record_set)
9302
+ monkeypatch.setattr(terminal_escape, "clear_terminal_progress", _record_clear)
9303
+
9304
+ app = DeepAgentsApp(agent=MagicMock(), thread_id="thread-osc-disabled")
9305
+ async with app.run_test() as pilot:
9306
+ await pilot.pause()
9307
+ await app._set_spinner("Thinking")
9308
+ await pilot.pause()
9309
+ await app._set_spinner(None)
9310
+ await pilot.pause()
9311
+
9312
+ assert calls == []
9313
+
9314
+ async def test_config_opt_in_emits_progress(
9315
+ self, tmp_path: Path, monkeypatch: pytest.MonkeyPatch
9316
+ ) -> None:
9317
+ """`[ui].terminal_progress = true` should emit set and clear escapes."""
9318
+ from deepagents_code import terminal_escape
9319
+
9320
+ config = tmp_path / "config.toml"
9321
+ config.write_text("[ui]\nterminal_progress = true\n", encoding="utf-8")
9322
+ monkeypatch.setattr("deepagents_code.model_config.DEFAULT_CONFIG_PATH", config)
9323
+
9324
+ calls: list[str] = []
9325
+
9326
+ def _record_set(*_args: object, **_kwargs: object) -> bool:
9327
+ calls.append("set")
9328
+ return True
9329
+
9330
+ def _record_clear() -> bool:
9331
+ calls.append("clear")
9332
+ return True
9333
+
9334
+ monkeypatch.setattr(terminal_escape, "set_terminal_progress", _record_set)
9335
+ monkeypatch.setattr(terminal_escape, "clear_terminal_progress", _record_clear)
9336
+
9337
+ app = DeepAgentsApp(agent=MagicMock(), thread_id="thread-osc-enabled")
9338
+ async with app.run_test() as pilot:
9339
+ await pilot.pause()
9340
+ calls.clear()
9341
+ await app._set_spinner("Thinking")
9342
+ await pilot.pause()
9343
+ await app._set_spinner(None)
9344
+ await pilot.pause()
9345
+
9346
+ assert "set" in calls
9347
+ assert "clear" in calls
9348
+
9266
9349
  async def test_consecutive_set_spinner_calls_keep_emitting(
9267
9350
  self, monkeypatch: pytest.MonkeyPatch
9268
9351
  ) -> None: