deepagents-code 0.1.69__tar.gz → 0.1.71__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 (553) hide show
  1. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/AGENTS.md +1 -1
  2. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/ARCHITECTURE.md +0 -2
  3. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/CHANGELOG.md +24 -0
  4. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/DEVELOPMENT.md +1 -1
  5. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/PKG-INFO +12 -12
  6. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_build_info.py +1 -1
  7. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_version.py +1 -1
  8. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/app.py +111 -11
  9. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/config.py +1 -1
  10. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/mcp_auth.py +73 -82
  11. deepagents_code-0.1.71/deepagents_code/mcp_middleware.py +146 -0
  12. deepagents_code-0.1.71/deepagents_code/mcp_proxy.py +161 -0
  13. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/mcp_tools.py +609 -1110
  14. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/model_config.py +25 -7
  15. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/skills/load.py +1 -1
  16. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/modals/prompt_clipboard.py +8 -2
  17. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/textual_adapter.py +11 -11
  18. deepagents_code-0.1.71/deepagents_code/tui/widgets/_condense_path.py +94 -0
  19. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/chat_input.py +15 -1
  20. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/debug_console.py +6 -6
  21. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/prompt_search.py +20 -3
  22. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/status.py +79 -21
  23. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/pyproject.toml +10 -10
  24. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_app.py +118 -3
  25. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_debug_console.py +17 -0
  26. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_mcp_auth.py +226 -62
  27. deepagents_code-0.1.71/tests/unit_tests/test_mcp_lifecycle.py +419 -0
  28. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_mcp_oauth_ui.py +26 -17
  29. deepagents_code-0.1.71/tests/unit_tests/test_mcp_proxy.py +103 -0
  30. deepagents_code-0.1.71/tests/unit_tests/test_mcp_schema.py +75 -0
  31. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_mcp_tools.py +880 -1813
  32. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_reasoning_effort.py +1 -1
  33. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_server_graph.py +13 -17
  34. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/modals/test_prompt_clipboard.py +16 -0
  35. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/test_textual_adapter.py +80 -29
  36. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_chat_input.py +98 -1
  37. deepagents_code-0.1.71/tests/unit_tests/tui/widgets/test_condense_path.py +123 -0
  38. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_mcp_login_modal.py +17 -9
  39. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_status.py +66 -0
  40. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/uv.lock +358 -65
  41. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/.gitignore +0 -0
  42. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/COMMANDS.md +0 -0
  43. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/EXTENSIONS.md +0 -0
  44. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/HOOKS.md +0 -0
  45. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/LICENSE +0 -0
  46. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/Makefile +0 -0
  47. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/PRICING.md +0 -0
  48. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/README.md +0 -0
  49. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/THREAT_MODEL.md +0 -0
  50. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/__init__.py +0 -0
  51. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/__main__.py +0 -0
  52. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_ask_user_types.py +0 -0
  53. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_cli_context.py +0 -0
  54. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_constants.py +0 -0
  55. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_content_blocks.py +0 -0
  56. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_debug.py +0 -0
  57. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_debug_buffer.py +0 -0
  58. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_dep_floor_check.py +0 -0
  59. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_env_vars.py +0 -0
  60. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_fake_models.py +0 -0
  61. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_git.py +0 -0
  62. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_glm_5p2_profile.py +0 -0
  63. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_home_error.py +0 -0
  64. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_invocation.py +0 -0
  65. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_markdown.py +0 -0
  66. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_paths.py +0 -0
  67. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_repository_bounds.py +0 -0
  68. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_reserved_names.py +0 -0
  69. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_server_config.py +0 -0
  70. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_session_stats.py +0 -0
  71. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_startup_error.py +0 -0
  72. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_terminal_stderr.py +0 -0
  73. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_testing_models.py +0 -0
  74. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_textual_patches.py +0 -0
  75. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_tool_stream.py +0 -0
  76. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/_tracing.py +0 -0
  77. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/acp.py +0 -0
  78. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/agent.py +0 -0
  79. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/app.tcss +0 -0
  80. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/approval_mode.py +0 -0
  81. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/ask_user.py +0 -0
  82. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/auth_display.py +0 -0
  83. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/auth_store.py +0 -0
  84. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/auto_mode.py +0 -0
  85. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/built_in_skills/__init__.py +0 -0
  86. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/built_in_skills/deepagents-thread-inspector/SKILL.md +0 -0
  87. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/built_in_skills/deepagents-thread-inspector/scripts/inspect_sessions.py +0 -0
  88. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
  89. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
  90. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  91. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  92. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/bundled_prices.README.md +0 -0
  93. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/bundled_prices.json +0 -0
  94. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/client/__init__.py +0 -0
  95. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/client/commands/__init__.py +0 -0
  96. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/client/commands/auth.py +0 -0
  97. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/client/commands/config.py +0 -0
  98. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/client/commands/extras.py +0 -0
  99. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/client/commands/mcp.py +0 -0
  100. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/client/commands/tools.py +0 -0
  101. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/client/launch/__init__.py +0 -0
  102. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/client/launch/server.py +0 -0
  103. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/client/launch/server_manager.py +0 -0
  104. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/client/non_interactive.py +0 -0
  105. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/client/remote_client.py +0 -0
  106. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/clipboard.py +0 -0
  107. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/cold_cache.py +0 -0
  108. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/command_registry.py +0 -0
  109. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/config_manifest.py +0 -0
  110. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/configurable_model.py +0 -0
  111. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/configuration/__init__.py +0 -0
  112. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/configuration/interpreter.py +0 -0
  113. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/configuration/paths.py +0 -0
  114. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/configuration/provider.py +0 -0
  115. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/configuration/providers.py +0 -0
  116. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/configuration/resolver.py +0 -0
  117. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/configuration/service.py +0 -0
  118. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/configuration/theme_resolution.py +0 -0
  119. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/configuration/types.py +0 -0
  120. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/configuration/writer.py +0 -0
  121. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/context_doctor.py +0 -0
  122. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/cost_tracking.py +0 -0
  123. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/default_agent_prompt.md +0 -0
  124. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/diff_utils.py +0 -0
  125. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/doctor.py +0 -0
  126. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/editor.py +0 -0
  127. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/event_bus.py +0 -0
  128. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/extensions/__init__.py +0 -0
  129. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/extensions/api.py +0 -0
  130. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/extensions/discovery.py +0 -0
  131. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/extensions/hosting.py +0 -0
  132. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/extensions/loader.py +0 -0
  133. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/extensions/registry.py +0 -0
  134. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/extensions/runtime.py +0 -0
  135. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/extensions/settings.py +0 -0
  136. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/extensions/trust.py +0 -0
  137. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/extras_info.py +0 -0
  138. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/file_ops.py +0 -0
  139. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/formatting.py +0 -0
  140. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/goal_rubric.py +0 -0
  141. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/goal_state_limits.py +0 -0
  142. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/goal_state_notice.py +0 -0
  143. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/goal_tools.py +0 -0
  144. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/__init__.py +0 -0
  145. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/capabilities.py +0 -0
  146. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/client.py +0 -0
  147. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/client_lifecycle.py +0 -0
  148. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/context.py +0 -0
  149. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/engine.py +0 -0
  150. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/env.py +0 -0
  151. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/envelope.py +0 -0
  152. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/interrupt.py +0 -0
  153. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/legacy.py +0 -0
  154. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/loading.py +0 -0
  155. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/manager.py +0 -0
  156. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/migration.py +0 -0
  157. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/models/__init__.py +0 -0
  158. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/models/adapters.py +0 -0
  159. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/models/config.py +0 -0
  160. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/models/domain.py +0 -0
  161. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/models/transport.py +0 -0
  162. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/models/wire.py +0 -0
  163. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/permissions.py +0 -0
  164. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/presenter.py +0 -0
  165. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/projection.py +0 -0
  166. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/reducer.py +0 -0
  167. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/runner.py +0 -0
  168. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/runtime.py +0 -0
  169. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/server_middleware.py +0 -0
  170. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/snapshot.py +0 -0
  171. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/tools.py +0 -0
  172. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/transcript.py +0 -0
  173. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/trust.py +0 -0
  174. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/hooks/validate_terminal_sequence.py +0 -0
  175. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/input.py +0 -0
  176. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/integrations/__init__.py +0 -0
  177. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/integrations/openai_codex.py +0 -0
  178. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/integrations/sandbox_config.py +0 -0
  179. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/integrations/sandbox_factory.py +0 -0
  180. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/integrations/sandbox_provider.py +0 -0
  181. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/integrations/sandbox_registry.py +0 -0
  182. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/iterm_cursor_guide.py +0 -0
  183. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/json_types.py +0 -0
  184. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/local_context.py +0 -0
  185. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/main.py +0 -0
  186. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/managed_tools.py +0 -0
  187. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/mcp_config.py +0 -0
  188. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/mcp_disabled.py +0 -0
  189. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/mcp_login_service.py +0 -0
  190. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/mcp_oauth_ui.py +0 -0
  191. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/mcp_providers/__init__.py +0 -0
  192. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/mcp_providers/_registry.py +0 -0
  193. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/mcp_providers/base.py +0 -0
  194. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/mcp_providers/github.py +0 -0
  195. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/mcp_providers/slack.py +0 -0
  196. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/media_utils.py +0 -0
  197. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/memory_guard.py +0 -0
  198. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/model_retry.py +0 -0
  199. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/notifications.py +0 -0
  200. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/offload.py +0 -0
  201. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/offload_api.py +0 -0
  202. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/offload_middleware.py +0 -0
  203. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/onboarding.py +0 -0
  204. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/output.py +0 -0
  205. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/paste_collapse.py +0 -0
  206. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/plugins/__init__.py +0 -0
  207. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/plugins/_json.py +0 -0
  208. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/plugins/adapters/__init__.py +0 -0
  209. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/plugins/adapters/hooks.py +0 -0
  210. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/plugins/adapters/mcp.py +0 -0
  211. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/plugins/adapters/skills.py +0 -0
  212. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/plugins/adapters/skills_middleware.py +0 -0
  213. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/plugins/commands_cli.py +0 -0
  214. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/plugins/discovery.py +0 -0
  215. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/plugins/manifest.py +0 -0
  216. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/plugins/marketplace.py +0 -0
  217. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/plugins/models.py +0 -0
  218. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/plugins/store.py +0 -0
  219. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/plugins/substitution.py +0 -0
  220. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/project_utils.py +0 -0
  221. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/py.typed +0 -0
  222. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/reasoning_effort.py +0 -0
  223. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/reliable_rubric.py +0 -0
  224. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/resume_state.py +0 -0
  225. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/server_graph.py +0 -0
  226. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/sessions.py +0 -0
  227. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/skills/__init__.py +0 -0
  228. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/skills/commands.py +0 -0
  229. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/skills/invocation.py +0 -0
  230. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/skills/merge.py +0 -0
  231. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/skills/trust.py +0 -0
  232. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/state_migration.py +0 -0
  233. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/subagents.py +0 -0
  234. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/system_prompt.md +0 -0
  235. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/terminal_capabilities.py +0 -0
  236. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/terminal_escape.py +0 -0
  237. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/theme.py +0 -0
  238. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tool_catalog.py +0 -0
  239. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tool_display.py +0 -0
  240. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tools.py +0 -0
  241. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/__init__.py +0 -0
  242. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/key_hints.py +0 -0
  243. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/modals/__init__.py +0 -0
  244. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/modals/cold_cache.py +0 -0
  245. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/modals/model_switch.py +0 -0
  246. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/modals/plugin_manager/__init__.py +0 -0
  247. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/modals/plugin_manager/content.py +0 -0
  248. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/modals/plugin_manager/models.py +0 -0
  249. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/modals/plugin_manager/plugin_manager.tcss +0 -0
  250. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/modals/plugin_manager/state.py +0 -0
  251. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/modals/plugin_manager/tabs.py +0 -0
  252. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/modals/prompt_clipboard.tcss +0 -0
  253. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/modals/resume_blocked.py +0 -0
  254. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/modals/resume_compact.py +0 -0
  255. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/screens/__init__.py +0 -0
  256. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/__init__.py +0 -0
  257. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/_copy_spans.py +0 -0
  258. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/_inline_prompt.py +0 -0
  259. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/_js_eval_display.py +0 -0
  260. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/_links.py +0 -0
  261. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/_paste_textarea.py +0 -0
  262. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/agent_selector.py +0 -0
  263. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/approval.py +0 -0
  264. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/ask_user.py +0 -0
  265. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/auth.py +0 -0
  266. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/auto_mode_notice.py +0 -0
  267. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/autocomplete.py +0 -0
  268. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/codex_auth.py +0 -0
  269. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/context_usage.py +0 -0
  270. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/cwd_switch.py +0 -0
  271. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/diff.py +0 -0
  272. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/effort_selector.py +0 -0
  273. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/goal_review.py +0 -0
  274. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/goal_status.py +0 -0
  275. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/history.py +0 -0
  276. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/install_confirm.py +0 -0
  277. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/launch_init.py +0 -0
  278. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/loading.py +0 -0
  279. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/mcp_login.py +0 -0
  280. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/mcp_reconnect.py +0 -0
  281. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/mcp_viewer.py +0 -0
  282. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/message_store.py +0 -0
  283. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/messages.py +0 -0
  284. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/model_selector.py +0 -0
  285. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/notification_center.py +0 -0
  286. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/notification_detail.py +0 -0
  287. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/notification_settings.py +0 -0
  288. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/restart_prompt.py +0 -0
  289. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/skill_trust.py +0 -0
  290. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/startup_tip.py +0 -0
  291. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/subagent_panel.py +0 -0
  292. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/theme_selector.py +0 -0
  293. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/thread_agent_switch.py +0 -0
  294. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/thread_selector.py +0 -0
  295. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/tool_renderers.py +0 -0
  296. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/tool_widgets.py +0 -0
  297. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/update_available.py +0 -0
  298. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/update_confirm.py +0 -0
  299. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/update_progress.py +0 -0
  300. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/welcome.py +0 -0
  301. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/tui/widgets/yolo_mode_notice.py +0 -0
  302. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/ui.py +0 -0
  303. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/unicode_security.py +0 -0
  304. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/update_check.py +0 -0
  305. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/deepagents_code/workspace.py +0 -0
  306. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/examples/extensions/memory_store.py +0 -0
  307. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/examples/skills/arxiv-search/SKILL.md +0 -0
  308. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  309. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/examples/skills/langgraph-docs/SKILL.md +0 -0
  310. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/examples/skills/skill-creator/SKILL.md +0 -0
  311. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  312. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  313. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/examples/skills/web-research/SKILL.md +0 -0
  314. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/hatch_build.py +0 -0
  315. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/images/model-stream-retry.png +0 -0
  316. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/images/tui.png +0 -0
  317. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/scripts/check_imports.py +0 -0
  318. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/scripts/check_process_cwd.py +0 -0
  319. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/scripts/debug_server.sh +0 -0
  320. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/scripts/generate_commands_catalog.py +0 -0
  321. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/scripts/install.sh +0 -0
  322. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/README.md +0 -0
  323. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/integration_tests/__init__.py +0 -0
  324. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/integration_tests/benchmarks/__init__.py +0 -0
  325. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
  326. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/integration_tests/benchmarks/test_local_context_benchmarks.py +0 -0
  327. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
  328. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/integration_tests/conftest.py +0 -0
  329. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/integration_tests/test_acp_mode.py +0 -0
  330. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/integration_tests/test_auto_approve_remote.py +0 -0
  331. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/integration_tests/test_compact_resume.py +0 -0
  332. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/integration_tests/test_offload_server_side.py +0 -0
  333. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/integration_tests/test_pending_work_recovery.py +0 -0
  334. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/integration_tests/test_sandbox_factory.py +0 -0
  335. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/integration_tests/test_sandbox_operations.py +0 -0
  336. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/__init__.py +0 -0
  337. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/client/__init__.py +0 -0
  338. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/client/commands/__init__.py +0 -0
  339. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/client/commands/test_auth.py +0 -0
  340. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/client/commands/test_extras.py +0 -0
  341. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/client/commands/test_mcp.py +0 -0
  342. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/client/commands/test_tools.py +0 -0
  343. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/conftest.py +0 -0
  344. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/data/coding_agent_v1_validator.json +0 -0
  345. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/hooks/__init__.py +0 -0
  346. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/hooks/models/__init__.py +0 -0
  347. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/hooks/models/test_models.py +0 -0
  348. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/hooks/test_client_lifecycle.py +0 -0
  349. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/hooks/test_configuration.py +0 -0
  350. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/hooks/test_engine.py +0 -0
  351. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/hooks/test_execution.py +0 -0
  352. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/hooks/test_manager.py +0 -0
  353. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/hooks/test_presenter.py +0 -0
  354. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/hooks/test_server_lifecycle.py +0 -0
  355. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/hooks/test_transcript.py +0 -0
  356. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/hooks/test_trust.py +0 -0
  357. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/plugins/__init__.py +0 -0
  358. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/plugins/test_marketplace.py +0 -0
  359. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/plugins/test_plugin_hooks.py +0 -0
  360. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/plugins/test_plugins_p0.py +0 -0
  361. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/skills/__init__.py +0 -0
  362. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/skills/test_commands.py +0 -0
  363. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/skills/test_load.py +0 -0
  364. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/skills/test_merge.py +0 -0
  365. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/skills/test_skill_trust.py +0 -0
  366. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/skills/test_skills_json.py +0 -0
  367. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/skills/test_thread_inspector.py +0 -0
  368. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/smoke_tests/__init__.py +0 -0
  369. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/smoke_tests/conftest.py +0 -0
  370. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/smoke_tests/snapshots/system_prompt_interactive_local.md +0 -0
  371. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/smoke_tests/test_system_prompt.py +0 -0
  372. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test__tool_stream.py +0 -0
  373. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_acp.py +0 -0
  374. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_agent.py +0 -0
  375. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_agent_friendly.py +0 -0
  376. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_approval_mode.py +0 -0
  377. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_args.py +0 -0
  378. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_ask_user_middleware.py +0 -0
  379. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_ask_user_types.py +0 -0
  380. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_auth_display.py +0 -0
  381. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_auth_store.py +0 -0
  382. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_auth_web_search_restart.py +0 -0
  383. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_auto_mode.py +0 -0
  384. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_charset.py +0 -0
  385. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_cli_provider.py +0 -0
  386. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_clipboard.py +0 -0
  387. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_coding_agent_metadata.py +0 -0
  388. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_cold_cache.py +0 -0
  389. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_command_registry.py +0 -0
  390. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_compact_tool.py +0 -0
  391. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_config.py +0 -0
  392. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_config_manifest.py +0 -0
  393. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_configurable_model.py +0 -0
  394. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_configuration.py +0 -0
  395. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_configuration_resolution.py +0 -0
  396. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_configuration_resolver.py +0 -0
  397. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_context_doctor.py +0 -0
  398. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_cost_tracking.py +0 -0
  399. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_cursor_style.py +0 -0
  400. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_debug.py +0 -0
  401. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_debug_buffer.py +0 -0
  402. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_dep_floor_check.py +0 -0
  403. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_diff_utils.py +0 -0
  404. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_doctor.py +0 -0
  405. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_editor.py +0 -0
  406. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_end_to_end.py +0 -0
  407. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_env_vars.py +0 -0
  408. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_event_bus.py +0 -0
  409. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_exception_handling.py +0 -0
  410. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_extension_api.py +0 -0
  411. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_extension_cli_trust.py +0 -0
  412. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_extension_config_manifest.py +0 -0
  413. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_extension_discovery.py +0 -0
  414. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_extension_display.py +0 -0
  415. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_extension_host_runtime.py +0 -0
  416. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_extension_hosting.py +0 -0
  417. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_extension_runtime.py +0 -0
  418. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_extra_skills_dirs.py +0 -0
  419. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_extras_info.py +0 -0
  420. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_file_ops.py +0 -0
  421. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_formatting.py +0 -0
  422. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_git.py +0 -0
  423. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_glm_5p2_profile.py +0 -0
  424. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_goal_criteria_client.py +0 -0
  425. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_goal_rubric.py +0 -0
  426. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_goal_state_limits.py +0 -0
  427. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_goal_state_notice.py +0 -0
  428. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_goal_state_persistence.py +0 -0
  429. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_goal_tools.py +0 -0
  430. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_hatch_build.py +0 -0
  431. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_hooks.py +0 -0
  432. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_imports.py +0 -0
  433. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_input_parsing.py +0 -0
  434. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_install_command.py +0 -0
  435. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_install_script.py +0 -0
  436. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_invocation.py +0 -0
  437. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
  438. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_json_types.py +0 -0
  439. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_local_context.py +0 -0
  440. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_main.py +0 -0
  441. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_main_acp_mode.py +0 -0
  442. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_main_args.py +0 -0
  443. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_managed_tools.py +0 -0
  444. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_mcp_config.py +0 -0
  445. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_mcp_disabled.py +0 -0
  446. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_mcp_login_service.py +0 -0
  447. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_media_utils.py +0 -0
  448. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_memory_guard.py +0 -0
  449. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_model_config.py +0 -0
  450. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_model_retry.py +0 -0
  451. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_model_switch.py +0 -0
  452. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_non_interactive.py +0 -0
  453. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_notifications.py +0 -0
  454. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_offload.py +0 -0
  455. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_offload_api.py +0 -0
  456. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_onboarding.py +0 -0
  457. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_openai_codex_integration.py +0 -0
  458. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_output.py +0 -0
  459. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_paths.py +0 -0
  460. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_process_cwd_check.py +0 -0
  461. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_reliable_rubric.py +0 -0
  462. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_reload.py +0 -0
  463. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_remote_client.py +0 -0
  464. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_repository_bounds.py +0 -0
  465. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_resume_compaction_recovery.py +0 -0
  466. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_resume_state.py +0 -0
  467. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_rubric_cli.py +0 -0
  468. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_sandbox_config.py +0 -0
  469. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_sandbox_factory.py +0 -0
  470. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_sandbox_provider.py +0 -0
  471. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_sandbox_registry.py +0 -0
  472. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_server.py +0 -0
  473. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_server_config.py +0 -0
  474. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_server_helpers.py +0 -0
  475. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_server_manager.py +0 -0
  476. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_server_tracing.py +0 -0
  477. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_session_stats.py +0 -0
  478. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_sessions.py +0 -0
  479. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_shell_allow_list.py +0 -0
  480. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_skill_invocation.py +0 -0
  481. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_startup_fast_paths.py +0 -0
  482. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_state_migration.py +0 -0
  483. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_subagents.py +0 -0
  484. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_terminal_capabilities.py +0 -0
  485. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_terminal_escape.py +0 -0
  486. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
  487. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_terminal_stderr.py +0 -0
  488. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_textual_patches.py +0 -0
  489. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_theme.py +0 -0
  490. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_threads_resume.py +0 -0
  491. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_tool_catalog.py +0 -0
  492. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_tool_display.py +0 -0
  493. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_tracing.py +0 -0
  494. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_tracing_replicas.py +0 -0
  495. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_transcript_virtualization.py +0 -0
  496. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_ui.py +0 -0
  497. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_unicode_security.py +0 -0
  498. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_uninstall_command.py +0 -0
  499. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_update_check.py +0 -0
  500. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_version.py +0 -0
  501. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/test_workspace.py +0 -0
  502. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tools/__init__.py +0 -0
  503. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tools/test_current_thread.py +0 -0
  504. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tools/test_fetch_url.py +0 -0
  505. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tools/test_tool_arg_schemas.py +0 -0
  506. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tools/test_web_search.py +0 -0
  507. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/__init__.py +0 -0
  508. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/modals/__init__.py +0 -0
  509. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/modals/plugin_manager/__init__.py +0 -0
  510. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/modals/plugin_manager/test_structure.py +0 -0
  511. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/modals/test_cold_cache.py +0 -0
  512. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/modals/test_model_switch.py +0 -0
  513. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/modals/test_resume_blocked.py +0 -0
  514. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/test_key_hints.py +0 -0
  515. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/test_modal_footer_layout.py +0 -0
  516. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/test_subagent_stream.py +0 -0
  517. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/__init__.py +0 -0
  518. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_agent_selector.py +0 -0
  519. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_approval.py +0 -0
  520. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_ask_user.py +0 -0
  521. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_auth_widgets.py +0 -0
  522. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_auto_mode_notice.py +0 -0
  523. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_autocomplete.py +0 -0
  524. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_copy_spans.py +0 -0
  525. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_cwd_switch.py +0 -0
  526. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_diff.py +0 -0
  527. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_goal_review.py +0 -0
  528. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_history.py +0 -0
  529. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_inline_prompt.py +0 -0
  530. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_install_confirm.py +0 -0
  531. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_launch_init.py +0 -0
  532. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_links.py +0 -0
  533. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_loading.py +0 -0
  534. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_mcp_reconnect.py +0 -0
  535. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_mcp_viewer.py +0 -0
  536. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_message_store.py +0 -0
  537. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_messages.py +0 -0
  538. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_model_selector.py +0 -0
  539. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_notification_center.py +0 -0
  540. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_notification_detail.py +0 -0
  541. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_notification_settings.py +0 -0
  542. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_prompt_search.py +0 -0
  543. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_restart_prompt.py +0 -0
  544. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_skill_trust_screen.py +0 -0
  545. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_startup_tip.py +0 -0
  546. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_subagent_panel.py +0 -0
  547. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_thread_agent_switch.py +0 -0
  548. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_thread_selector.py +0 -0
  549. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_tool_renderers.py +0 -0
  550. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_update_available.py +0 -0
  551. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_update_confirm.py +0 -0
  552. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_update_progress.py +0 -0
  553. {deepagents_code-0.1.69 → deepagents_code-0.1.71}/tests/unit_tests/tui/widgets/test_welcome.py +0 -0
@@ -76,7 +76,7 @@ Apply these rules to new UI; do not treat them as a mandate to refactor existing
76
76
  ### Testing Textual apps
77
77
 
78
78
  - Use `textual.pilot` for async UI testing - see [Testing guide](https://textual.textualize.io/guide/testing/)
79
- - Snapshot testing available for visual regression - see repo `notes/snapshot_testing.md`
79
+ - Snapshot testing available for visual regression
80
80
  - 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.
81
81
  - A modal test that pushes the screen onto a bare `App` host cannot catch app-level key interception. The app owns a priority `shift+tab -> toggle_auto_approve` binding (`app.py`) that wins dispatch over any screen binding; `action_toggle_auto_approve` routes the key to the active screen. Cursor-style modals (highlighted rows, no focusable children) just implement `action_move_up` — the router's `_SupportsReverseNav` protocol branch picks them up automatically. The protocol matches on method *presence*, so enrollment is opt-out, not opt-in: a screen that defines `action_move_up` for its own arrow keys gets `shift+tab` reverse-nav whether or not it was written with that key in mind. Screens needing different behavior (`focus_previous`, tab bars) — or none — need an explicit branch *above* the protocol check in `action_toggle_auto_approve`. Add an app-level regression test in `test_app.py` when a screen needs behavior other than swallowing the key.
82
82
  - 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.
@@ -85,6 +85,4 @@ The main cost is the client/server boundary. When debugging, first decide which
85
85
  - For cost estimates and local pricing overrides (`prices.json`), see
86
86
  [`PRICING.md`](./PRICING.md).
87
87
  - For security boundaries, see [`THREAT_MODEL.md`](./THREAT_MODEL.md).
88
- - For how a transient model failure is retried after output has already streamed,
89
- see [`STREAMING_RETRY_DESIGN.md`](./STREAMING_RETRY_DESIGN.md).
90
88
  - For package-specific coding conventions, see [`AGENTS.md`](./AGENTS.md).
@@ -2,6 +2,30 @@
2
2
 
3
3
  # Deep Agents Code Changelog
4
4
 
5
+ ## [0.1.71](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.70...deepagents-code==0.1.71) (2026-09-18)
6
+
7
+ ### Features
8
+
9
+ - Moved MCP support onto FastMCP and `langchain.mcp`. ([#5922](https://github.com/langchain-ai/deepagents/pull/5922))
10
+ - Condensed the current working directory in the status bar from the middle, preserving the end of the path. ([#6252](https://github.com/langchain-ai/deepagents/pull/6252))
11
+
12
+ ### Bug Fixes
13
+
14
+ - Replaced the composer with prompt search and prevented query feedback. ([#6346](https://github.com/langchain-ai/deepagents/pull/6346))
15
+ - Kept absolute paths intact in normal input mode. ([#6379](https://github.com/langchain-ai/deepagents/pull/6379))
16
+ - Pinned resumed history to the newest message. ([#6225](https://github.com/langchain-ai/deepagents/pull/6225))
17
+ - Improved handling of overflowing pasted content in the chat input so it scrolls correctly. ([#6382](https://github.com/langchain-ai/deepagents/pull/6382))
18
+ - Wrapped debug logs before the scrollbar. ([#6219](https://github.com/langchain-ai/deepagents/pull/6219))
19
+
20
+ ## [0.1.70](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.69...deepagents-code==0.1.70) (2026-09-16)
21
+
22
+ ### Bug Fixes
23
+
24
+ - Fixed prompt clipboard word deletion behavior. ([#6345](https://github.com/langchain-ai/deepagents/pull/6345))
25
+ - Clarified unknown model effort in footer. ([#6337](https://github.com/langchain-ai/deepagents/pull/6337))
26
+ - Prevented duplicate clicks in the footer model and effort pickers. ([#6344](https://github.com/langchain-ai/deepagents/pull/6344))
27
+ - Delayed hook status display in the footer to reduce UI noise. ([#6322](https://github.com/langchain-ai/deepagents/pull/6322))
28
+
5
29
  ## [0.1.69](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.68...deepagents-code==0.1.69) (2026-09-14)
6
30
 
7
31
  ### Features
@@ -143,7 +143,7 @@ To send logs elsewhere, also `export DEEPAGENTS_CODE_DEBUG_DIRECTORY=<path>`. Ea
143
143
 
144
144
  The directory is created or tightened to owner-only access, and each file is created or tightened to user-only access. Symlinks are refused. If either cannot be secured, no file handler is attached and a warning goes to stderr. Use the in-app Debug Console in that case.
145
145
 
146
- Stdio MCP server stderr is captured here at `DEBUG`. This keeps server-side failures visible when the TUI cannot show process stderr. Each record is one line, capped at 4096 characters. Characters in the Unicode `C` categories are removed, which includes control and format characters. The ESC byte of an ANSI sequence is removed but the rest stays as literal text, so the log is not free of escape-sequence residue. The text comes from the server. It can contain credentials or other sensitive values. Enable `DEBUG` logging only if you accept that risk, and do not share the log file.
146
+ Raw stdio MCP server stderr is discarded to protect the TUI and prevent unbounded disk growth, including in debug mode. Structured MCP log notifications still reach the application logger with the server name and severity.
147
147
 
148
148
  ### In-app Debug Console (`Ctrl+\`)
149
149
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: deepagents-code
3
- Version: 0.1.69
3
+ Version: 0.1.71
4
4
  Summary: Terminal coding agent built on the Deep Agents SDK - works with any model, with persistent memory, customizable skills, subagents, and approval controls.
5
5
  Project-URL: Homepage, https://www.langchain.com/dcode
6
6
  Project-URL: Documentation, https://docs.langchain.com/oss/deepagents/code/overview
@@ -30,23 +30,23 @@ Requires-Python: <4.0,>=3.12
30
30
  Requires-Dist: aiosqlite<1.0.0,>=0.22.1
31
31
  Requires-Dist: anyio<5.0.0,>=4.14.2
32
32
  Requires-Dist: deepagents-acp<1.0.0,>=0.0.10
33
- Requires-Dist: deepagents==0.7.14
33
+ Requires-Dist: deepagents==0.7.15
34
+ Requires-Dist: fastmcp<5.0.0,>=4.0.0b4
34
35
  Requires-Dist: filelock<3.30,>=3.29.7
35
- Requires-Dist: genai-prices<0.2.0,>=0.1.6
36
+ Requires-Dist: genai-prices<0.2.0,>=0.1.7
36
37
  Requires-Dist: httpx<1.0.0,>=0.28.1
37
38
  Requires-Dist: langchain-anthropic<2.0.0,>=1.7.2
38
39
  Requires-Dist: langchain-google-genai<5.0.0,>=4.4.0
39
- Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.3.2
40
40
  Requires-Dist: langchain-openai<2.0.0,>=1.6.2
41
41
  Requires-Dist: langchain-quickjs<0.4.0,>=0.3.4
42
- Requires-Dist: langchain<2.0.0,>=1.4.0
42
+ Requires-Dist: langchain<2.0.0,>=1.4.1
43
43
  Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.1.1
44
44
  Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.31
45
- Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.34.0
45
+ Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.34.1
46
46
  Requires-Dist: langgraph-sdk<1.0.0,>=0.4.4
47
- Requires-Dist: langsmith[sandbox]>=0.12.4
47
+ Requires-Dist: langsmith[sandbox]>=0.12.6
48
48
  Requires-Dist: markdownify<2.0.0,>=1.2.3
49
- Requires-Dist: mcp<2.0.0,>=1.28.1
49
+ Requires-Dist: mcp<3.0.0,>=2.0.0
50
50
  Requires-Dist: packaging>=26.2
51
51
  Requires-Dist: pillow<13.0.0,>=12.3.0
52
52
  Requires-Dist: prompt-toolkit<4.0.0,>=3.0.53
@@ -67,7 +67,7 @@ Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.5; extra == 'agen
67
67
  Provides-Extra: all-providers
68
68
  Requires-Dist: aiohttp<3.15.0,>=3.14.3; extra == 'all-providers'
69
69
  Requires-Dist: langchain-anthropic<2.0.0,>=1.7.2; extra == 'all-providers'
70
- Requires-Dist: langchain-aws<2.0.0,>=1.7.6; extra == 'all-providers'
70
+ Requires-Dist: langchain-aws<2.0.0,>=1.7.8; extra == 'all-providers'
71
71
  Requires-Dist: langchain-baseten<1.0.0,>=0.2.4; extra == 'all-providers'
72
72
  Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'all-providers'
73
73
  Requires-Dist: langchain-deepseek<2.0.0,>=1.1.0; extra == 'all-providers'
@@ -77,7 +77,7 @@ Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.4; extra == 'all-providers'
77
77
  Requires-Dist: langchain-groq<2.0.0,>=1.1.3; extra == 'all-providers'
78
78
  Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'all-providers'
79
79
  Requires-Dist: langchain-ibm<2.0.0,>=1.1.0; extra == 'all-providers'
80
- Requires-Dist: langchain-litellm<2.0.0,>=0.7.1; extra == 'all-providers'
80
+ Requires-Dist: langchain-litellm<2.0.0,>=0.7.2; extra == 'all-providers'
81
81
  Requires-Dist: langchain-meta<2.0.0,>=0.5.0; extra == 'all-providers'
82
82
  Requires-Dist: langchain-mistralai<2.0.0,>=1.1.6; extra == 'all-providers'
83
83
  Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.3; extra == 'all-providers'
@@ -98,7 +98,7 @@ Requires-Dist: langchain-anthropic<2.0.0,>=1.7.2; extra == 'anthropic'
98
98
  Provides-Extra: baseten
99
99
  Requires-Dist: langchain-baseten<1.0.0,>=0.2.4; extra == 'baseten'
100
100
  Provides-Extra: bedrock
101
- Requires-Dist: langchain-aws<2.0.0,>=1.7.6; extra == 'bedrock'
101
+ Requires-Dist: langchain-aws<2.0.0,>=1.7.8; extra == 'bedrock'
102
102
  Provides-Extra: cohere
103
103
  Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'cohere'
104
104
  Provides-Extra: daytona
@@ -116,7 +116,7 @@ Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'huggingface'
116
116
  Provides-Extra: ibm
117
117
  Requires-Dist: langchain-ibm<2.0.0,>=1.1.0; extra == 'ibm'
118
118
  Provides-Extra: litellm
119
- Requires-Dist: langchain-litellm<2.0.0,>=0.7.1; extra == 'litellm'
119
+ Requires-Dist: langchain-litellm<2.0.0,>=0.7.2; extra == 'litellm'
120
120
  Provides-Extra: media
121
121
  Requires-Dist: av<19.0.0,>=18.0.0; extra == 'media'
122
122
  Requires-Dist: pillow<13.0.0,>=12.3.0; extra == 'media'
@@ -1,3 +1,3 @@
1
1
  """Generated at build time. Do not edit or commit."""
2
2
 
3
- BUILD_COMMIT = "1d3232c"
3
+ BUILD_COMMIT = "d1674e6"
@@ -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.69" # x-release-please-version
5
+ __version__ = "0.1.71" # 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."""
@@ -1173,6 +1173,9 @@ or the user queues input while waiting, the status bar reveals the connection
1173
1173
  state as the single app-wide progress indicator.
1174
1174
  """
1175
1175
 
1176
+ _HOOK_STATUS_REVEAL_DELAY_SECONDS = 2.0
1177
+ """Seconds to hide hook progress so fast hooks do not flash in the footer."""
1178
+
1176
1179
  _UPDATE_RECHECK_INTERVAL_SECONDS = 60 * 60
1177
1180
  """How often long-running TUI sessions quietly re-check for app updates."""
1178
1181
 
@@ -2039,7 +2042,7 @@ Shared by every such command -- `/effort`, `/summarization-model` -- so the
2039
2042
  habit transfers and the accepted spellings cannot drift apart.
2040
2043
  """
2041
2044
 
2042
- _UNKNOWN_EFFORT_LABEL = "effort"
2045
+ _UNKNOWN_EFFORT_LABEL = "effort?"
2043
2046
 
2044
2047
 
2045
2048
  def _parse_reconnect_args(rest: str) -> tuple[bool, bool]:
@@ -2960,6 +2963,7 @@ class _ChatScroll(VerticalScroll):
2960
2963
  """
2961
2964
  super().__init__(*args, **kwargs)
2962
2965
  self._follow_bottom_when_scrollable = False
2966
+ self._bottom_follow_generation = 0
2963
2967
 
2964
2968
  def anchor(self, anchor: bool = True) -> None:
2965
2969
  """Anchor only once the transcript is tall enough to scroll.
@@ -2976,6 +2980,8 @@ class _ChatScroll(VerticalScroll):
2976
2980
  delegate to the base class.
2977
2981
  """
2978
2982
  self._follow_bottom_when_scrollable = anchor
2983
+ if anchor:
2984
+ self._bottom_follow_generation += 1
2979
2985
  if not anchor:
2980
2986
  super().anchor(False)
2981
2987
  return
@@ -4078,6 +4084,9 @@ class DeepAgentsApp(App):
4078
4084
  self._agent_running = False
4079
4085
  """True while the agent worker is streaming a response."""
4080
4086
 
4087
+ self._footer_picker_requests: set[str] = set()
4088
+ """Footer picker commands currently being submitted."""
4089
+
4081
4090
  self._agent_reconciling = False
4082
4091
  """True while turn-end checkpoint state is being synchronized."""
4083
4092
 
@@ -4153,6 +4162,15 @@ class DeepAgentsApp(App):
4153
4162
  self._connection_status_reveal_timer: Timer | None = None
4154
4163
  """One-shot timer that reveals deferred status-bar connection progress."""
4155
4164
 
4165
+ self._pending_hook_status_message = ""
4166
+ """Latest hook progress text waiting for its footer reveal delay."""
4167
+
4168
+ self._hook_status_visible = False
4169
+ """Whether hook progress currently owns the visible status-message slot."""
4170
+
4171
+ self._hook_status_reveal_timer: Timer | None = None
4172
+ """One-shot timer that reveals continuously active hook progress."""
4173
+
4156
4174
  self._connection_ready_event = asyncio.Event()
4157
4175
  """Set once the initial server connection has either succeeded or failed."""
4158
4176
  if not self._connecting:
@@ -4328,6 +4346,9 @@ class DeepAgentsApp(App):
4328
4346
  self._history_prefetch_active = False
4329
4347
  """Whether resumed history is warming toward the soft window size."""
4330
4348
 
4349
+ self._history_prefetch_anchor_generation: int | None = None
4350
+ """Bottom-follow generation owned by resumed-history prefetch."""
4351
+
4331
4352
  self._transcript_prune_timer: Timer | None = None
4332
4353
  """Idle timer that defers opposite-edge pruning while scrolling."""
4333
4354
 
@@ -4811,6 +4832,8 @@ class DeepAgentsApp(App):
4811
4832
  self._apply_scrollbar_visibility(chat)
4812
4833
 
4813
4834
  self._status_bar = self.query_one("#status-bar", StatusBar)
4835
+ if self._pending_hook_status_message:
4836
+ self._schedule_hook_status_reveal_timer()
4814
4837
  self._goal_status_panel = self.query_one("#goal-status-panel", GoalStatusPanel)
4815
4838
  self._chat_input = self.query_one("#input-area", ChatInput)
4816
4839
  model_spec = self._effective_model_spec()
@@ -5318,9 +5341,44 @@ class DeepAgentsApp(App):
5318
5341
  self.notify(message, severity=severity, markup=False)
5319
5342
 
5320
5343
  def _update_hook_status(self, message: str) -> None:
5321
- """Update the status bar with hook-owned progress text."""
5322
- if self._status_bar:
5323
- self._status_bar.set_status_message(message, source="hooks")
5344
+ """Delay hook-owned progress text so fast hooks do not flash."""
5345
+ self._pending_hook_status_message = message
5346
+ if not message:
5347
+ self._hook_status_visible = False
5348
+ self._cancel_hook_status_reveal_timer()
5349
+ if self._status_bar:
5350
+ self._status_bar.set_status_message("", source="hooks")
5351
+ return
5352
+ if self._hook_status_visible:
5353
+ if self._status_bar:
5354
+ self._status_bar.set_status_message(message, source="hooks")
5355
+ return
5356
+ self._schedule_hook_status_reveal_timer()
5357
+
5358
+ def _schedule_hook_status_reveal_timer(self) -> None:
5359
+ """Schedule the one-shot timer that reveals active hook progress."""
5360
+ if self._hook_status_reveal_timer is not None or not self._running:
5361
+ return
5362
+ self._hook_status_reveal_timer = self.set_timer(
5363
+ _HOOK_STATUS_REVEAL_DELAY_SECONDS,
5364
+ self._on_hook_status_reveal_timer,
5365
+ )
5366
+
5367
+ def _cancel_hook_status_reveal_timer(self) -> None:
5368
+ """Cancel and clear the deferred hook-status reveal timer."""
5369
+ if self._hook_status_reveal_timer is None:
5370
+ return
5371
+ self._hook_status_reveal_timer.stop()
5372
+ self._hook_status_reveal_timer = None
5373
+
5374
+ def _on_hook_status_reveal_timer(self) -> None:
5375
+ """Reveal the latest hook progress after continuous activity."""
5376
+ self._hook_status_reveal_timer = None
5377
+ message = self._pending_hook_status_message
5378
+ if not message or self._status_bar is None:
5379
+ return
5380
+ self._hook_status_visible = True
5381
+ self._status_bar.set_status_message(message, source="hooks")
5324
5382
 
5325
5383
  async def _init_session_state(self) -> None:
5326
5384
  """Create session state and load its Hooks v2 manager.
@@ -9401,7 +9459,7 @@ class DeepAgentsApp(App):
9401
9459
  self._hydration_scheduled = False
9402
9460
 
9403
9461
  if hydrated_count == 0 and direction == "above":
9404
- self._history_prefetch_active = False
9462
+ self._stop_history_prefetch()
9405
9463
  if hydrated_count or self._hydration_requests:
9406
9464
  self.call_after_refresh(lambda: self._continue_hydration(direction))
9407
9465
 
@@ -9421,7 +9479,7 @@ class DeepAgentsApp(App):
9421
9479
  ):
9422
9480
  self._request_hydration("above")
9423
9481
  return
9424
- self._history_prefetch_active = False
9482
+ self._stop_history_prefetch()
9425
9483
  return
9426
9484
 
9427
9485
  if direction == "above":
@@ -9435,8 +9493,26 @@ class DeepAgentsApp(App):
9435
9493
  self._message_store.has_messages_above
9436
9494
  and self._message_store.visible_count < self._message_store.WINDOW_SIZE
9437
9495
  )
9438
- if self._history_prefetch_active:
9439
- self._request_hydration("above")
9496
+ if not self._history_prefetch_active:
9497
+ return
9498
+ self._history_prefetch_anchor_generation = None
9499
+ with suppress(NoMatches):
9500
+ chat = self.query_one("#chat", _ChatScroll)
9501
+ chat.anchor()
9502
+ self._history_prefetch_anchor_generation = chat._bottom_follow_generation
9503
+ self._request_hydration("above")
9504
+
9505
+ def _stop_history_prefetch(self) -> None:
9506
+ """End resumed-history warming and its temporary bottom anchor."""
9507
+ if not self._history_prefetch_active:
9508
+ return
9509
+ self._history_prefetch_active = False
9510
+ generation = self._history_prefetch_anchor_generation
9511
+ self._history_prefetch_anchor_generation = None
9512
+ with suppress(NoMatches):
9513
+ chat = self.query_one("#chat", _ChatScroll)
9514
+ if generation == chat._bottom_follow_generation:
9515
+ chat.anchor(False)
9440
9516
 
9441
9517
  def _check_hydration_needed(self) -> None:
9442
9518
  """Prefetch older messages near the mounted-window boundary."""
@@ -20807,6 +20883,9 @@ class DeepAgentsApp(App):
20807
20883
  self._pending_shell_messages.clear()
20808
20884
  self._hydration_requests.clear()
20809
20885
  self._history_prefetch_active = False
20886
+ self._history_prefetch_anchor_generation = None
20887
+ with suppress(NoMatches):
20888
+ self.query_one("#chat", _ChatScroll).anchor(False)
20810
20889
  if self._transcript_prune_timer is not None:
20811
20890
  self._transcript_prune_timer.stop()
20812
20891
  self._transcript_prune_timer = None
@@ -21740,6 +21819,7 @@ class DeepAgentsApp(App):
21740
21819
  # active workers so their subprocesses are terminated
21741
21820
  # (SIGTERM → SIGKILL) instead of being orphaned.
21742
21821
  self._cancel_connection_status_reveal_timer()
21822
+ self._cancel_hook_status_reveal_timer()
21743
21823
  self._discard_queue()
21744
21824
 
21745
21825
  if self._shell_running and self._shell_worker:
@@ -23522,6 +23602,26 @@ class DeepAgentsApp(App):
23522
23602
  # Model Switching
23523
23603
  # =========================================================================
23524
23604
 
23605
+ async def _submit_footer_picker(self, command: str) -> None:
23606
+ """Submit a footer picker unless the same request is open or queued."""
23607
+ from deepagents_code.tui.widgets.effort_selector import EffortSelectorScreen
23608
+ from deepagents_code.tui.widgets.model_selector import ModelSelectorScreen
23609
+
23610
+ screen_type = (
23611
+ ModelSelectorScreen if command == "/model" else EffortSelectorScreen
23612
+ )
23613
+ if (
23614
+ command in self._footer_picker_requests
23615
+ or isinstance(self.screen, screen_type)
23616
+ or any(message.text == command for message in self._pending_messages)
23617
+ ):
23618
+ return
23619
+ self._footer_picker_requests.add(command)
23620
+ try:
23621
+ await self._submit_input(command, "command")
23622
+ finally:
23623
+ self._footer_picker_requests.discard(command)
23624
+
23525
23625
  async def action_open_model_selector(self) -> None:
23526
23626
  """Open the model selector via `/model`.
23527
23627
 
@@ -23531,7 +23631,7 @@ class DeepAgentsApp(App):
23531
23631
  tip is dismissed. The bare form is `IMMEDIATE_UI`, so it still bypasses
23532
23632
  the queue and opens while the agent is busy.
23533
23633
  """
23534
- await self._submit_input("/model", "command")
23634
+ await self._submit_footer_picker("/model")
23535
23635
 
23536
23636
  async def action_open_effort_selector(self) -> None:
23537
23637
  """Open the reasoning effort picker via `/effort`.
@@ -23539,7 +23639,7 @@ class DeepAgentsApp(App):
23539
23639
  `/effort` is `QUEUED`, so it must go through `_submit_input` to keep its
23540
23640
  place behind any pending input instead of jumping an in-flight turn.
23541
23641
  """
23542
- await self._submit_input("/effort", "command")
23642
+ await self._submit_footer_picker("/effort")
23543
23643
 
23544
23644
  def _build_model_selector_screen(
23545
23645
  self,
@@ -25115,7 +25215,7 @@ class DeepAgentsApp(App):
25115
25215
  started_at = self._first_invocation_at
25116
25216
  if started_at is None:
25117
25217
  return "not started"
25118
- return format_duration(max(0.0, time.monotonic() - started_at))
25218
+ return format_duration(int(max(0.0, time.monotonic() - started_at)))
25119
25219
 
25120
25220
  def _model_field() -> SnapshotField:
25121
25221
  # Built directly (not via `_safe`) so the copyable metadata tracks
@@ -4817,7 +4817,7 @@ def configure_langsmith_secret_redaction() -> bool:
4817
4817
  _fail_closed_disable_tracing()
4818
4818
  return False
4819
4819
 
4820
- logger.info("LangSmith secret redaction enabled for agent traces.")
4820
+ logger.debug("LangSmith secret redaction enabled for agent traces.")
4821
4821
  return True
4822
4822
 
4823
4823