deepagents-code 0.1.74__tar.gz → 0.1.76__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 (563) hide show
  1. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/CHANGELOG.md +18 -0
  2. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/PKG-INFO +11 -11
  3. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_build_info.py +1 -1
  4. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_version.py +1 -1
  5. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/mcp_login_service.py +40 -11
  6. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/mcp_tools.py +7 -1
  7. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/modals/cost_breakdown.py +26 -3
  8. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/debug_console.py +3 -1
  9. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/mcp_viewer.py +15 -31
  10. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/pyproject.toml +8 -8
  11. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_debug_console.py +31 -0
  12. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_mcp_login_service.py +149 -2
  13. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_mcp_viewer.py +69 -11
  14. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/uv.lock +27 -25
  15. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/.gitignore +0 -0
  16. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/AGENTS.md +0 -0
  17. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/ARCHITECTURE.md +0 -0
  18. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/COMMANDS.md +0 -0
  19. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/DEVELOPMENT.md +0 -0
  20. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/EXTENSIONS.md +0 -0
  21. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/HOOKS.md +0 -0
  22. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/LICENSE +0 -0
  23. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/Makefile +0 -0
  24. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/PRICING.md +0 -0
  25. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/README.md +0 -0
  26. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/THREAT_MODEL.md +0 -0
  27. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/__init__.py +0 -0
  28. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/__main__.py +0 -0
  29. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_ask_user_types.py +0 -0
  30. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_cli_context.py +0 -0
  31. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_constants.py +0 -0
  32. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_content_blocks.py +0 -0
  33. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_debug.py +0 -0
  34. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_debug_buffer.py +0 -0
  35. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_dep_floor_check.py +0 -0
  36. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_env_vars.py +0 -0
  37. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_fake_models.py +0 -0
  38. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_git.py +0 -0
  39. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_glm_5p2_profile.py +0 -0
  40. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_home_error.py +0 -0
  41. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_invocation.py +0 -0
  42. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_markdown.py +0 -0
  43. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_paths.py +0 -0
  44. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_repository_bounds.py +0 -0
  45. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_reserved_names.py +0 -0
  46. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_server_config.py +0 -0
  47. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_session_stats.py +0 -0
  48. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_startup_error.py +0 -0
  49. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_terminal_stderr.py +0 -0
  50. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_testing_models.py +0 -0
  51. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_textual_patches.py +0 -0
  52. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_tool_stream.py +0 -0
  53. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/_tracing.py +0 -0
  54. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/acp.py +0 -0
  55. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/agent.py +0 -0
  56. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/app.py +0 -0
  57. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/app.tcss +0 -0
  58. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/approval_mode.py +0 -0
  59. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/ask_user.py +0 -0
  60. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/auth_display.py +0 -0
  61. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/auth_store.py +0 -0
  62. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/auto_mode.py +0 -0
  63. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/built_in_skills/__init__.py +0 -0
  64. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/built_in_skills/deepagents-thread-inspector/SKILL.md +0 -0
  65. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/built_in_skills/deepagents-thread-inspector/scripts/inspect_sessions.py +0 -0
  66. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
  67. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
  68. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  69. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  70. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/bundled_prices.README.md +0 -0
  71. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/bundled_prices.json +0 -0
  72. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/client/__init__.py +0 -0
  73. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/client/commands/__init__.py +0 -0
  74. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/client/commands/auth.py +0 -0
  75. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/client/commands/config.py +0 -0
  76. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/client/commands/extras.py +0 -0
  77. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/client/commands/mcp.py +0 -0
  78. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/client/commands/tools.py +0 -0
  79. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/client/launch/__init__.py +0 -0
  80. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/client/launch/server.py +0 -0
  81. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/client/launch/server_manager.py +0 -0
  82. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/client/non_interactive.py +0 -0
  83. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/client/remote_client.py +0 -0
  84. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/clipboard.py +0 -0
  85. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/cold_cache.py +0 -0
  86. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/command_registry.py +0 -0
  87. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/config.py +0 -0
  88. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/config_manifest.py +0 -0
  89. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/configurable_model.py +0 -0
  90. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/configuration/__init__.py +0 -0
  91. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/configuration/interpreter.py +0 -0
  92. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/configuration/paths.py +0 -0
  93. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/configuration/provider.py +0 -0
  94. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/configuration/providers.py +0 -0
  95. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/configuration/resolver.py +0 -0
  96. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/configuration/service.py +0 -0
  97. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/configuration/theme_resolution.py +0 -0
  98. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/configuration/types.py +0 -0
  99. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/configuration/writer.py +0 -0
  100. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/context_doctor.py +0 -0
  101. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/cost_tracking.py +0 -0
  102. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/default_agent_prompt.md +0 -0
  103. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/diff_utils.py +0 -0
  104. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/doctor.py +0 -0
  105. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/editor.py +0 -0
  106. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/event_bus.py +0 -0
  107. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/extensions/__init__.py +0 -0
  108. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/extensions/api.py +0 -0
  109. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/extensions/discovery.py +0 -0
  110. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/extensions/hosting.py +0 -0
  111. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/extensions/loader.py +0 -0
  112. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/extensions/registry.py +0 -0
  113. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/extensions/runtime.py +0 -0
  114. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/extensions/settings.py +0 -0
  115. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/extensions/trust.py +0 -0
  116. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/extras_info.py +0 -0
  117. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/file_ops.py +0 -0
  118. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/formatting.py +0 -0
  119. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/goal_rubric.py +0 -0
  120. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/goal_state_limits.py +0 -0
  121. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/goal_state_notice.py +0 -0
  122. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/goal_tools.py +0 -0
  123. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/__init__.py +0 -0
  124. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/capabilities.py +0 -0
  125. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/client.py +0 -0
  126. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/client_lifecycle.py +0 -0
  127. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/context.py +0 -0
  128. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/engine.py +0 -0
  129. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/env.py +0 -0
  130. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/envelope.py +0 -0
  131. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/interrupt.py +0 -0
  132. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/legacy.py +0 -0
  133. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/loading.py +0 -0
  134. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/manager.py +0 -0
  135. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/migration.py +0 -0
  136. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/models/__init__.py +0 -0
  137. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/models/adapters.py +0 -0
  138. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/models/config.py +0 -0
  139. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/models/domain.py +0 -0
  140. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/models/transport.py +0 -0
  141. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/models/wire.py +0 -0
  142. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/permissions.py +0 -0
  143. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/presenter.py +0 -0
  144. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/projection.py +0 -0
  145. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/reducer.py +0 -0
  146. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/runner.py +0 -0
  147. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/runtime.py +0 -0
  148. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/server_middleware.py +0 -0
  149. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/snapshot.py +0 -0
  150. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/tools.py +0 -0
  151. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/transcript.py +0 -0
  152. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/trust.py +0 -0
  153. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/hooks/validate_terminal_sequence.py +0 -0
  154. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/input.py +0 -0
  155. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/integrations/__init__.py +0 -0
  156. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/integrations/openai_codex.py +0 -0
  157. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/integrations/sandbox_config.py +0 -0
  158. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/integrations/sandbox_factory.py +0 -0
  159. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/integrations/sandbox_provider.py +0 -0
  160. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/integrations/sandbox_registry.py +0 -0
  161. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/iterm_cursor_guide.py +0 -0
  162. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/json_types.py +0 -0
  163. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/local_context.py +0 -0
  164. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/main.py +0 -0
  165. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/managed_tools.py +0 -0
  166. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/mcp_auth.py +0 -0
  167. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/mcp_config.py +0 -0
  168. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/mcp_disabled.py +0 -0
  169. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/mcp_middleware.py +0 -0
  170. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/mcp_oauth_ui.py +0 -0
  171. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/mcp_providers/__init__.py +0 -0
  172. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/mcp_providers/_registry.py +0 -0
  173. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/mcp_providers/base.py +0 -0
  174. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/mcp_providers/github.py +0 -0
  175. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/mcp_providers/slack.py +0 -0
  176. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/mcp_proxy.py +0 -0
  177. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/media_utils.py +0 -0
  178. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/memory_guard.py +0 -0
  179. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/model_config.py +0 -0
  180. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/model_retry.py +0 -0
  181. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/notifications.py +0 -0
  182. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/offload.py +0 -0
  183. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/offload_api.py +0 -0
  184. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/offload_middleware.py +0 -0
  185. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/onboarding.py +0 -0
  186. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/output.py +0 -0
  187. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/paste_collapse.py +0 -0
  188. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/plugins/__init__.py +0 -0
  189. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/plugins/_json.py +0 -0
  190. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/plugins/adapters/__init__.py +0 -0
  191. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/plugins/adapters/hooks.py +0 -0
  192. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/plugins/adapters/mcp.py +0 -0
  193. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/plugins/adapters/skills.py +0 -0
  194. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/plugins/adapters/skills_middleware.py +0 -0
  195. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/plugins/commands_cli.py +0 -0
  196. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/plugins/discovery.py +0 -0
  197. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/plugins/manifest.py +0 -0
  198. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/plugins/marketplace.py +0 -0
  199. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/plugins/models.py +0 -0
  200. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/plugins/store.py +0 -0
  201. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/plugins/substitution.py +0 -0
  202. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/project_utils.py +0 -0
  203. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/py.typed +0 -0
  204. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/reasoning_effort.py +0 -0
  205. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/reliable_rubric.py +0 -0
  206. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/resume_state.py +0 -0
  207. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/server_graph.py +0 -0
  208. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/sessions.py +0 -0
  209. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/skills/__init__.py +0 -0
  210. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/skills/commands.py +0 -0
  211. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/skills/invocation.py +0 -0
  212. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/skills/load.py +0 -0
  213. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/skills/merge.py +0 -0
  214. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/skills/trust.py +0 -0
  215. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/state_migration.py +0 -0
  216. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/subagents.py +0 -0
  217. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/system_prompt.md +0 -0
  218. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/terminal_capabilities.py +0 -0
  219. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/terminal_escape.py +0 -0
  220. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/theme.py +0 -0
  221. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tool_catalog.py +0 -0
  222. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tool_display.py +0 -0
  223. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tools.py +0 -0
  224. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/__init__.py +0 -0
  225. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/key_hints.py +0 -0
  226. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/modals/__init__.py +0 -0
  227. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/modals/cold_cache.py +0 -0
  228. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/modals/model_switch.py +0 -0
  229. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/modals/plugin_manager/__init__.py +0 -0
  230. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/modals/plugin_manager/content.py +0 -0
  231. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/modals/plugin_manager/models.py +0 -0
  232. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/modals/plugin_manager/plugin_manager.tcss +0 -0
  233. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/modals/plugin_manager/state.py +0 -0
  234. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/modals/plugin_manager/tabs.py +0 -0
  235. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/modals/prompt_clipboard.py +0 -0
  236. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/modals/prompt_clipboard.tcss +0 -0
  237. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/modals/resume_blocked.py +0 -0
  238. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/modals/resume_compact.py +0 -0
  239. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/modals/session_cost.py +0 -0
  240. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/modals/session_cost.tcss +0 -0
  241. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/screens/__init__.py +0 -0
  242. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/textual_adapter.py +0 -0
  243. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/__init__.py +0 -0
  244. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/_condense_path.py +0 -0
  245. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/_copy_spans.py +0 -0
  246. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/_inline_prompt.py +0 -0
  247. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/_js_eval_display.py +0 -0
  248. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/_links.py +0 -0
  249. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/_paste_textarea.py +0 -0
  250. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/agent_selector.py +0 -0
  251. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/approval.py +0 -0
  252. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/ask_user.py +0 -0
  253. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/auth.py +0 -0
  254. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/auto_mode_notice.py +0 -0
  255. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/autocomplete.py +0 -0
  256. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/chat_input.py +0 -0
  257. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/codex_auth.py +0 -0
  258. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/context_usage.py +0 -0
  259. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/cwd_switch.py +0 -0
  260. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/diff.py +0 -0
  261. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/effort_selector.py +0 -0
  262. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/goal_review.py +0 -0
  263. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/goal_status.py +0 -0
  264. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/history.py +0 -0
  265. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/install_confirm.py +0 -0
  266. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/launch_init.py +0 -0
  267. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/loading.py +0 -0
  268. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/mcp_login.py +0 -0
  269. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/mcp_reconnect.py +0 -0
  270. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/message_store.py +0 -0
  271. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/messages.py +0 -0
  272. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/model_selector.py +0 -0
  273. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/notification_center.py +0 -0
  274. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/notification_detail.py +0 -0
  275. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/notification_settings.py +0 -0
  276. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/prompt_search.py +0 -0
  277. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/restart_prompt.py +0 -0
  278. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/skill_trust.py +0 -0
  279. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/startup_tip.py +0 -0
  280. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/status.py +0 -0
  281. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/subagent_panel.py +0 -0
  282. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/theme_selector.py +0 -0
  283. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/thread_agent_switch.py +0 -0
  284. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/thread_selector.py +0 -0
  285. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/tool_renderers.py +0 -0
  286. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/tool_widgets.py +0 -0
  287. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/update_available.py +0 -0
  288. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/update_confirm.py +0 -0
  289. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/update_progress.py +0 -0
  290. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/welcome.py +0 -0
  291. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/tui/widgets/yolo_mode_notice.py +0 -0
  292. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/ui.py +0 -0
  293. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/unicode_security.py +0 -0
  294. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/update_check.py +0 -0
  295. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/workspace.py +0 -0
  296. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/deepagents_code/workspace_diagnostics.py +0 -0
  297. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/examples/extensions/memory_store.py +0 -0
  298. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/examples/skills/arxiv-search/SKILL.md +0 -0
  299. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  300. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/examples/skills/langgraph-docs/SKILL.md +0 -0
  301. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/examples/skills/skill-creator/SKILL.md +0 -0
  302. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  303. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  304. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/examples/skills/web-research/SKILL.md +0 -0
  305. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/hatch_build.py +0 -0
  306. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/images/debug-console-cost-breakdown.png +0 -0
  307. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/images/model-stream-retry.png +0 -0
  308. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/images/tui.png +0 -0
  309. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/scripts/check_imports.py +0 -0
  310. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/scripts/check_process_cwd.py +0 -0
  311. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/scripts/debug_server.sh +0 -0
  312. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/scripts/generate_commands_catalog.py +0 -0
  313. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/scripts/install.sh +0 -0
  314. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/README.md +0 -0
  315. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/integration_tests/__init__.py +0 -0
  316. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/integration_tests/benchmarks/__init__.py +0 -0
  317. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
  318. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/integration_tests/benchmarks/test_local_context_benchmarks.py +0 -0
  319. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
  320. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/integration_tests/benchmarks/test_thread_loading_benchmarks.py +0 -0
  321. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/integration_tests/conftest.py +0 -0
  322. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/integration_tests/test_acp_mode.py +0 -0
  323. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/integration_tests/test_auto_approve_remote.py +0 -0
  324. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/integration_tests/test_compact_resume.py +0 -0
  325. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/integration_tests/test_offload_server_side.py +0 -0
  326. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/integration_tests/test_pending_work_recovery.py +0 -0
  327. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/integration_tests/test_sandbox_factory.py +0 -0
  328. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/integration_tests/test_sandbox_operations.py +0 -0
  329. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/__init__.py +0 -0
  330. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/client/__init__.py +0 -0
  331. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/client/commands/__init__.py +0 -0
  332. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/client/commands/test_auth.py +0 -0
  333. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/client/commands/test_extras.py +0 -0
  334. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/client/commands/test_mcp.py +0 -0
  335. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/client/commands/test_tools.py +0 -0
  336. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/conftest.py +0 -0
  337. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/data/coding_agent_v1_validator.json +0 -0
  338. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/hooks/__init__.py +0 -0
  339. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/hooks/models/__init__.py +0 -0
  340. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/hooks/models/test_models.py +0 -0
  341. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/hooks/test_client_lifecycle.py +0 -0
  342. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/hooks/test_configuration.py +0 -0
  343. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/hooks/test_engine.py +0 -0
  344. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/hooks/test_execution.py +0 -0
  345. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/hooks/test_manager.py +0 -0
  346. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/hooks/test_presenter.py +0 -0
  347. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/hooks/test_server_lifecycle.py +0 -0
  348. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/hooks/test_transcript.py +0 -0
  349. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/hooks/test_trust.py +0 -0
  350. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/plugins/__init__.py +0 -0
  351. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/plugins/test_marketplace.py +0 -0
  352. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/plugins/test_plugin_hooks.py +0 -0
  353. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/plugins/test_plugins_p0.py +0 -0
  354. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/skills/__init__.py +0 -0
  355. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/skills/test_commands.py +0 -0
  356. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/skills/test_load.py +0 -0
  357. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/skills/test_merge.py +0 -0
  358. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/skills/test_skill_trust.py +0 -0
  359. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/skills/test_skills_json.py +0 -0
  360. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/skills/test_thread_inspector.py +0 -0
  361. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/smoke_tests/__init__.py +0 -0
  362. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/smoke_tests/conftest.py +0 -0
  363. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/smoke_tests/snapshots/system_prompt_headless_local.md +0 -0
  364. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/smoke_tests/snapshots/system_prompt_interactive_local.md +0 -0
  365. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/smoke_tests/test_system_prompt.py +0 -0
  366. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test__tool_stream.py +0 -0
  367. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_acp.py +0 -0
  368. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_agent.py +0 -0
  369. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_agent_friendly.py +0 -0
  370. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_app.py +0 -0
  371. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_approval_mode.py +0 -0
  372. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_args.py +0 -0
  373. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_ask_user_middleware.py +0 -0
  374. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_ask_user_types.py +0 -0
  375. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_auth_display.py +0 -0
  376. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_auth_store.py +0 -0
  377. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_auth_web_search_restart.py +0 -0
  378. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_auto_mode.py +0 -0
  379. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_charset.py +0 -0
  380. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_cli_provider.py +0 -0
  381. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_clipboard.py +0 -0
  382. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_coding_agent_metadata.py +0 -0
  383. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_cold_cache.py +0 -0
  384. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_command_registry.py +0 -0
  385. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_compact_tool.py +0 -0
  386. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_config.py +0 -0
  387. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_config_manifest.py +0 -0
  388. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_configurable_model.py +0 -0
  389. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_configuration.py +0 -0
  390. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_configuration_resolution.py +0 -0
  391. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_configuration_resolver.py +0 -0
  392. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_context_doctor.py +0 -0
  393. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_cost_tracking.py +0 -0
  394. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_cursor_style.py +0 -0
  395. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_debug.py +0 -0
  396. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_debug_buffer.py +0 -0
  397. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_dep_floor_check.py +0 -0
  398. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_diff_utils.py +0 -0
  399. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_doctor.py +0 -0
  400. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_editor.py +0 -0
  401. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_end_to_end.py +0 -0
  402. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_env_vars.py +0 -0
  403. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_event_bus.py +0 -0
  404. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_exception_handling.py +0 -0
  405. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_extension_api.py +0 -0
  406. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_extension_cli_trust.py +0 -0
  407. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_extension_config_manifest.py +0 -0
  408. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_extension_discovery.py +0 -0
  409. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_extension_display.py +0 -0
  410. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_extension_host_runtime.py +0 -0
  411. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_extension_hosting.py +0 -0
  412. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_extension_runtime.py +0 -0
  413. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_extra_skills_dirs.py +0 -0
  414. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_extras_info.py +0 -0
  415. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_file_ops.py +0 -0
  416. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_formatting.py +0 -0
  417. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_git.py +0 -0
  418. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_glm_5p2_profile.py +0 -0
  419. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_goal_criteria_client.py +0 -0
  420. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_goal_rubric.py +0 -0
  421. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_goal_state_limits.py +0 -0
  422. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_goal_state_notice.py +0 -0
  423. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_goal_state_persistence.py +0 -0
  424. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_goal_tools.py +0 -0
  425. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_hatch_build.py +0 -0
  426. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_hooks.py +0 -0
  427. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_imports.py +0 -0
  428. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_input_parsing.py +0 -0
  429. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_install_command.py +0 -0
  430. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_install_script.py +0 -0
  431. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_invocation.py +0 -0
  432. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
  433. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_json_types.py +0 -0
  434. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_local_context.py +0 -0
  435. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_main.py +0 -0
  436. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_main_acp_mode.py +0 -0
  437. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_main_args.py +0 -0
  438. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_managed_tools.py +0 -0
  439. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_mcp_auth.py +0 -0
  440. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_mcp_config.py +0 -0
  441. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_mcp_disabled.py +0 -0
  442. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_mcp_lifecycle.py +0 -0
  443. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
  444. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_mcp_proxy.py +0 -0
  445. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_mcp_schema.py +0 -0
  446. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_mcp_tools.py +0 -0
  447. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_media_utils.py +0 -0
  448. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_memory_guard.py +0 -0
  449. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_model_config.py +0 -0
  450. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_model_retry.py +0 -0
  451. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_model_switch.py +0 -0
  452. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_non_interactive.py +0 -0
  453. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_notifications.py +0 -0
  454. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_offload.py +0 -0
  455. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_offload_api.py +0 -0
  456. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_onboarding.py +0 -0
  457. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_openai_codex_integration.py +0 -0
  458. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_output.py +0 -0
  459. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_paths.py +0 -0
  460. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_process_cwd_check.py +0 -0
  461. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_reasoning_effort.py +0 -0
  462. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_reliable_rubric.py +0 -0
  463. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_reload.py +0 -0
  464. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_remote_client.py +0 -0
  465. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_repository_bounds.py +0 -0
  466. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_resume_compaction_recovery.py +0 -0
  467. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_resume_state.py +0 -0
  468. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_rubric_cli.py +0 -0
  469. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_sandbox_config.py +0 -0
  470. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_sandbox_factory.py +0 -0
  471. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_sandbox_provider.py +0 -0
  472. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_sandbox_registry.py +0 -0
  473. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_server.py +0 -0
  474. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_server_config.py +0 -0
  475. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_server_graph.py +0 -0
  476. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_server_helpers.py +0 -0
  477. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_server_manager.py +0 -0
  478. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_server_tracing.py +0 -0
  479. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_session_stats.py +0 -0
  480. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_sessions.py +0 -0
  481. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_shell_allow_list.py +0 -0
  482. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_skill_invocation.py +0 -0
  483. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_startup_fast_paths.py +0 -0
  484. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_state_migration.py +0 -0
  485. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_subagents.py +0 -0
  486. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_terminal_capabilities.py +0 -0
  487. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_terminal_escape.py +0 -0
  488. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
  489. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_terminal_stderr.py +0 -0
  490. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_text_encoding.py +0 -0
  491. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_textual_patches.py +0 -0
  492. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_theme.py +0 -0
  493. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_threads_resume.py +0 -0
  494. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_tool_catalog.py +0 -0
  495. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_tool_display.py +0 -0
  496. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_tracing.py +0 -0
  497. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_tracing_replicas.py +0 -0
  498. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_transcript_virtualization.py +0 -0
  499. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_ui.py +0 -0
  500. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_unicode_security.py +0 -0
  501. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_uninstall_command.py +0 -0
  502. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_update_check.py +0 -0
  503. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_version.py +0 -0
  504. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_workspace.py +0 -0
  505. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/test_workspace_diagnostics.py +0 -0
  506. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tools/__init__.py +0 -0
  507. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tools/test_current_thread.py +0 -0
  508. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tools/test_fetch_url.py +0 -0
  509. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tools/test_tool_arg_schemas.py +0 -0
  510. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tools/test_web_search.py +0 -0
  511. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/__init__.py +0 -0
  512. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/modals/__init__.py +0 -0
  513. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/modals/plugin_manager/__init__.py +0 -0
  514. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/modals/plugin_manager/test_structure.py +0 -0
  515. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/modals/test_cold_cache.py +0 -0
  516. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/modals/test_model_switch.py +0 -0
  517. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/modals/test_prompt_clipboard.py +0 -0
  518. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/modals/test_resume_blocked.py +0 -0
  519. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/modals/test_session_cost.py +0 -0
  520. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/test_key_hints.py +0 -0
  521. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/test_modal_footer_layout.py +0 -0
  522. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/test_subagent_stream.py +0 -0
  523. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/test_textual_adapter.py +0 -0
  524. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/__init__.py +0 -0
  525. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_agent_selector.py +0 -0
  526. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_approval.py +0 -0
  527. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_ask_user.py +0 -0
  528. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_auth_widgets.py +0 -0
  529. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_auto_mode_notice.py +0 -0
  530. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_autocomplete.py +0 -0
  531. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_chat_input.py +0 -0
  532. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_condense_path.py +0 -0
  533. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_copy_spans.py +0 -0
  534. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_cwd_switch.py +0 -0
  535. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_diff.py +0 -0
  536. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_goal_review.py +0 -0
  537. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_history.py +0 -0
  538. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_inline_prompt.py +0 -0
  539. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_install_confirm.py +0 -0
  540. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_launch_init.py +0 -0
  541. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_links.py +0 -0
  542. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_loading.py +0 -0
  543. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_mcp_login_modal.py +0 -0
  544. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_mcp_reconnect.py +0 -0
  545. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_message_store.py +0 -0
  546. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_messages.py +0 -0
  547. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_model_selector.py +0 -0
  548. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_notification_center.py +0 -0
  549. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_notification_detail.py +0 -0
  550. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_notification_settings.py +0 -0
  551. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_prompt_search.py +0 -0
  552. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_restart_prompt.py +0 -0
  553. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_skill_trust_screen.py +0 -0
  554. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_startup_tip.py +0 -0
  555. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_status.py +0 -0
  556. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_subagent_panel.py +0 -0
  557. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_thread_agent_switch.py +0 -0
  558. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_thread_selector.py +0 -0
  559. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_tool_renderers.py +0 -0
  560. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_update_available.py +0 -0
  561. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_update_confirm.py +0 -0
  562. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_update_progress.py +0 -0
  563. {deepagents_code-0.1.74 → deepagents_code-0.1.76}/tests/unit_tests/tui/widgets/test_welcome.py +0 -0
@@ -2,6 +2,24 @@
2
2
 
3
3
  # Deep Agents Code Changelog
4
4
 
5
+ ## [0.1.76](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.75...deepagents-code==0.1.76) (2026-09-24)
6
+
7
+ ### Features
8
+
9
+ - Label plugin servers in the MCP viewer ([#6539](https://github.com/langchain-ai/deepagents/pull/6539)).
10
+
11
+ ### Bug Fixes
12
+
13
+ - Resolve plugin MCP servers during login ([#6524](https://github.com/langchain-ai/deepagents/pull/6524)).
14
+ - Keep empty MCP servers searchable and include descriptions in search results ([#6540](https://github.com/langchain-ai/deepagents/pull/6540)).
15
+
16
+ ## [0.1.75](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.74...deepagents-code==0.1.75) (2026-09-23)
17
+
18
+ ### Bug Fixes
19
+
20
+ - Lazy MCP caches now warm without blocking the event loop.
21
+ - Token and cost breakdowns now refresh while the view is open.
22
+
5
23
  ## [0.1.74](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.73...deepagents-code==0.1.74) (2026-09-23)
6
24
 
7
25
  ### Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: deepagents-code
3
- Version: 0.1.74
3
+ Version: 0.1.76
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
@@ -33,15 +33,15 @@ Requires-Dist: deepagents-acp<1.0.0,>=0.0.10
33
33
  Requires-Dist: deepagents==0.7.18
34
34
  Requires-Dist: fastmcp<5.0.0,>=4.0.0b4
35
35
  Requires-Dist: filelock<3.30,>=3.29.7
36
- Requires-Dist: genai-prices<0.2.0,>=0.1.7
36
+ Requires-Dist: genai-prices<0.2.0,>=0.1.8
37
37
  Requires-Dist: httpx<1.0.0,>=0.28.1
38
- Requires-Dist: langchain-anthropic<2.0.0,>=1.7.3
38
+ Requires-Dist: langchain-anthropic<2.0.0,>=1.7.4
39
39
  Requires-Dist: langchain-google-genai<5.0.0,>=4.4.0
40
- Requires-Dist: langchain-openai<2.0.0,>=1.6.4
40
+ Requires-Dist: langchain-openai<2.0.0,>=1.6.5
41
41
  Requires-Dist: langchain-quickjs<0.4.0,>=0.3.4
42
42
  Requires-Dist: langchain<2.0.0,>=1.4.2
43
43
  Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.1.1
44
- Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.31
44
+ Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.32
45
45
  Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.34.1
46
46
  Requires-Dist: langgraph-sdk<1.0.0,>=0.4.5
47
47
  Requires-Dist: langsmith[sandbox]>=0.14.0
@@ -66,7 +66,7 @@ Provides-Extra: agentcore
66
66
  Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.5; extra == 'agentcore'
67
67
  Provides-Extra: all-providers
68
68
  Requires-Dist: aiohttp<3.15.0,>=3.14.3; extra == 'all-providers'
69
- Requires-Dist: langchain-anthropic<2.0.0,>=1.7.3; extra == 'all-providers'
69
+ Requires-Dist: langchain-anthropic<2.0.0,>=1.7.4; extra == 'all-providers'
70
70
  Requires-Dist: langchain-aws<2.0.0,>=1.7.9; 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'
@@ -77,12 +77,12 @@ 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.2; extra == 'all-providers'
80
+ Requires-Dist: langchain-litellm<2.0.0,>=0.8.0; 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'
84
84
  Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'all-providers'
85
- Requires-Dist: langchain-openai<2.0.0,>=1.6.4; extra == 'all-providers'
85
+ Requires-Dist: langchain-openai<2.0.0,>=1.6.5; extra == 'all-providers'
86
86
  Requires-Dist: langchain-openrouter<2.0.0,>=0.2.9; extra == 'all-providers'
87
87
  Requires-Dist: langchain-perplexity<2.0.0,>=1.4.1; extra == 'all-providers'
88
88
  Requires-Dist: langchain-together<2.0.0,>=0.4.0; extra == 'all-providers'
@@ -94,7 +94,7 @@ Requires-Dist: langchain-modal>=0.0.5; extra == 'all-sandboxes'
94
94
  Requires-Dist: langchain-runloop>=0.0.6; extra == 'all-sandboxes'
95
95
  Requires-Dist: langchain-vercel-sandbox>=0.0.1; extra == 'all-sandboxes'
96
96
  Provides-Extra: anthropic
97
- Requires-Dist: langchain-anthropic<2.0.0,>=1.7.3; extra == 'anthropic'
97
+ Requires-Dist: langchain-anthropic<2.0.0,>=1.7.4; 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
@@ -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.2; extra == 'litellm'
119
+ Requires-Dist: langchain-litellm<2.0.0,>=0.8.0; 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'
@@ -132,7 +132,7 @@ Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.3; extra == 'nvidia'
132
132
  Provides-Extra: ollama
133
133
  Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'ollama'
134
134
  Provides-Extra: openai
135
- Requires-Dist: langchain-openai<2.0.0,>=1.6.4; extra == 'openai'
135
+ Requires-Dist: langchain-openai<2.0.0,>=1.6.5; extra == 'openai'
136
136
  Provides-Extra: openrouter
137
137
  Requires-Dist: langchain-openrouter<2.0.0,>=0.2.9; extra == 'openrouter'
138
138
  Provides-Extra: perplexity
@@ -1,3 +1,3 @@
1
1
  """Generated at build time. Do not edit or commit."""
2
2
 
3
- BUILD_COMMIT = "e109d04"
3
+ BUILD_COMMIT = "e801fa1"
@@ -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.74" # x-release-please-version
5
+ __version__ = "0.1.76" # 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."""
@@ -15,7 +15,7 @@ functions that need them.
15
15
 
16
16
  from __future__ import annotations
17
17
 
18
- from dataclasses import dataclass
18
+ from dataclasses import dataclass, field
19
19
  from enum import StrEnum
20
20
  from pathlib import Path
21
21
  from typing import TYPE_CHECKING, Any
@@ -148,20 +148,26 @@ class ConfigResolution:
148
148
  the reason is already embedded in `message`, so the field lives only here.
149
149
  See `format_load_errors_notice`."""
150
150
 
151
+ includes_plugins: bool = field(default=False, kw_only=True)
152
+ """Whether enabled plugins contributed to the merged configuration."""
153
+
151
154
  def __post_init__(self) -> None:
152
- """Enforce the non-empty `used_paths` invariant.
155
+ """Require at least one file or plugin configuration source.
153
156
 
154
157
  Raises:
155
- ValueError: If `used_paths` is empty.
158
+ ValueError: If neither files nor plugins contributed configuration.
156
159
  """
157
- if not self.used_paths:
158
- msg = "ConfigResolution must have at least one used path"
160
+ if not self.used_paths and not self.includes_plugins:
161
+ msg = "ConfigResolution must have at least one file or plugin source"
159
162
  raise ValueError(msg)
160
163
 
161
164
  @property
162
165
  def search_label(self) -> str:
163
- """Human-readable join of the paths backing this resolution."""
164
- return ", ".join(str(path) for path in self.used_paths)
166
+ """Human-readable join of the sources backing this resolution."""
167
+ labels = [str(path) for path in self.used_paths]
168
+ if self.includes_plugins:
169
+ labels.append("enabled plugins")
170
+ return ", ".join(labels)
165
171
 
166
172
 
167
173
  @dataclass(frozen=True)
@@ -209,6 +215,7 @@ def resolve_mcp_config(
209
215
  _drop_invalid_mcp_config_servers,
210
216
  _load_mcp_config_top_level_with_error,
211
217
  _merge_mcp_configs_with_sources,
218
+ _resolve_project_config_base,
212
219
  discover_mcp_config_sources,
213
220
  filter_trusted_project_servers,
214
221
  load_mcp_config,
@@ -229,8 +236,12 @@ def resolve_mcp_config(
229
236
  used_paths=(Path(config_path),),
230
237
  )
231
238
 
239
+ from deepagents_code.plugins.adapters.mcp import discover_plugin_mcp_configs
240
+
232
241
  found = discover_mcp_config_sources()
233
- if not found:
242
+ plugin_project_root = _resolve_project_config_base(None)
243
+ plugin_configs = discover_plugin_mcp_configs(project_dir=plugin_project_root)
244
+ if not found and not plugin_configs:
234
245
  return ConfigResolutionError(
235
246
  kind=ConfigErrorKind.NO_CONFIG_FOUND,
236
247
  message=(
@@ -264,7 +275,8 @@ def resolve_mcp_config(
264
275
  elif error is not None:
265
276
  load_errors.append((path, error))
266
277
 
267
- if project_paths:
278
+ includes_plugins = False
279
+ if plugin_configs or project_paths:
268
280
  from deepagents_code.model_config import load_mcp_server_trust_lists
269
281
 
270
282
  trust_lists = load_mcp_server_trust_lists()
@@ -277,6 +289,20 @@ def resolve_mcp_config(
277
289
  # trust-list loader has already discarded scoped approvals while
278
290
  # retaining names explicitly enabled through the readable env var.
279
291
  policy_error = trust_lists.read_error
292
+ for plugin_config in plugin_configs:
293
+ plugin_servers = plugin_config.get("mcpServers")
294
+ if not isinstance(plugin_servers, dict):
295
+ continue
296
+ plugin_kept = filter_trusted_project_servers(
297
+ plugin_servers,
298
+ trust_lists,
299
+ project_root=plugin_project_root,
300
+ config_trusted=not trust_lists.load_failed,
301
+ )
302
+ if plugin_kept:
303
+ configs.append({**plugin_config, "mcpServers": plugin_kept})
304
+ includes_plugins = True
305
+
280
306
  config_trusted = trust_project_mcp is True and not trust_lists.load_failed
281
307
  loaded_projects: list[tuple[Path, dict[str, Any]]] = []
282
308
  for path in project_paths:
@@ -334,8 +360,10 @@ def resolve_mcp_config(
334
360
  detail = "; ".join(f"{path}: {error}" for path, error in load_errors)
335
361
  message = f"No usable MCP config found (load errors: {detail})"
336
362
  else:
337
- found_paths = ", ".join(str(source.path) for source in found)
338
- message = f"No usable MCP config found in: {found_paths}"
363
+ found_labels = [str(source.path) for source in found]
364
+ if plugin_configs:
365
+ found_labels.append("enabled plugins")
366
+ message = f"No usable MCP config found in: {', '.join(found_labels)}"
339
367
  return ConfigResolutionError(
340
368
  kind=ConfigErrorKind.NO_USABLE_CONFIG,
341
369
  message=message,
@@ -349,6 +377,7 @@ def resolve_mcp_config(
349
377
  return ConfigResolution(
350
378
  config=merge_mcp_configs(configs),
351
379
  used_paths=tuple(used_paths),
380
+ includes_plugins=includes_plugins,
352
381
  untrusted_project_paths=untrusted,
353
382
  legacy_ignored=legacy_ignored,
354
383
  policy_error=policy_error,
@@ -1707,7 +1707,7 @@ spawn an unbounded number of simultaneous socket/subprocess handshakes (or
1707
1707
 
1708
1708
 
1709
1709
  def _warm_mcp_adapter_imports() -> None:
1710
- """Eagerly import MCP modules whose first import may block.
1710
+ """Warm MCP imports and lazy filesystem-backed caches off the event loop.
1711
1711
 
1712
1712
  Run via `asyncio.to_thread` before adapter/auth symbols are used, so any
1713
1713
  blocking side effect of a first import happens off the server event loop
@@ -1724,10 +1724,16 @@ def _warm_mcp_adapter_imports() -> None:
1724
1724
  import `mcp_auth` otherwise — so it is swallowed here and left to re-raise
1725
1725
  at the real use site. Runs only when at least one active MCP server exists.
1726
1726
  """
1727
+ from importlib import import_module
1728
+
1729
+ from fastmcp.server.dependencies import is_docket_available
1727
1730
  from langchain_core._api import ( # noqa: PLC2701
1728
1731
  suppress_langchain_beta_warning,
1729
1732
  )
1730
1733
 
1734
+ import_module("jsonschema")
1735
+ is_docket_available()
1736
+
1731
1737
  with suppress_langchain_beta_warning():
1732
1738
  from langchain import mcp as _langchain_mcp # noqa: F401
1733
1739
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import logging
5
6
  from typing import TYPE_CHECKING, ClassVar
6
7
 
7
8
  from textual.binding import Binding, BindingType
@@ -15,8 +16,12 @@ from deepagents_code.config import get_glyphs
15
16
  from deepagents_code.unicode_security import sanitize_control_chars
16
17
 
17
18
  if TYPE_CHECKING:
19
+ from collections.abc import Callable
20
+
18
21
  from textual.app import ComposeResult
19
22
 
23
+ logger = logging.getLogger(__name__)
24
+
20
25
 
21
26
  class CostBreakdownScreen(ModalScreen[None]):
22
27
  """Modal showing the copyable entire-thread token and cost breakdown."""
@@ -45,9 +50,10 @@ class CostBreakdownScreen(ModalScreen[None]):
45
50
  }
46
51
  """
47
52
 
48
- def __init__(self, breakdown: str) -> None:
49
- """Initialize with a plain-text breakdown."""
53
+ def __init__(self, breakdown: str, provider: Callable[[], str]) -> None:
54
+ """Initialize with a plain-text breakdown and its live provider."""
50
55
  super().__init__()
56
+ self._provider = provider
51
57
  self._breakdown = sanitize_control_chars(
52
58
  breakdown, keep_newlines=True, collapse_whitespace=False
53
59
  )
@@ -71,8 +77,25 @@ class CostBreakdownScreen(ModalScreen[None]):
71
77
  )
72
78
 
73
79
  def on_mount(self) -> None:
74
- """Focus the modal so its bindings receive keyboard input."""
80
+ """Focus the modal and refresh its breakdown while open."""
75
81
  self.focus()
82
+ self.set_interval(0.5, self._refresh_breakdown)
83
+
84
+ def _refresh_breakdown(self) -> None:
85
+ """Update the displayed and copyable breakdown when costs change."""
86
+ try:
87
+ breakdown = self._provider()
88
+ except Exception:
89
+ logger.debug("Cost breakdown refresh failed", exc_info=True)
90
+ return
91
+ if not breakdown:
92
+ return
93
+ breakdown = sanitize_control_chars(
94
+ breakdown, keep_newlines=True, collapse_whitespace=False
95
+ )
96
+ if breakdown != self._breakdown:
97
+ self._breakdown = breakdown
98
+ self.query_one(".cost-breakdown-body", Static).update(Content(breakdown))
76
99
 
77
100
  def action_copy(self) -> None:
78
101
  """Copy the complete breakdown to the clipboard."""
@@ -1153,7 +1153,9 @@ class DebugConsoleScreen(ModalScreen[None]):
1153
1153
  )
1154
1154
  return
1155
1155
  if breakdown:
1156
- self.app.push_screen(CostBreakdownScreen(breakdown))
1156
+ self.app.push_screen(
1157
+ CostBreakdownScreen(breakdown, self._cost_breakdown_provider)
1158
+ )
1157
1159
 
1158
1160
  def on_select_changed(self, event: Select.Changed) -> None:
1159
1161
  """Refresh visible records when the log-level filter changes."""
@@ -188,35 +188,21 @@ def _can_start_login(server: MCPServerInfo) -> bool:
188
188
  def _visible_tools_for(
189
189
  server: MCPServerInfo, tokens: list[str]
190
190
  ) -> tuple[MCPToolInfo, ...] | None:
191
- """Return the tools to render for `server` under the active filter.
192
-
193
- Filter matches tool and server *names* only — descriptions, parameter
194
- names, and the transport are deliberately not in the haystack so long
195
- MCP docstrings don't produce spurious matches. A server with zero tools
196
- that matches by name returns `None` so the caller can skip rendering a
197
- stub header followed by the global "No matching tools" empty-state.
198
-
199
- Args:
200
- server: The server whose tools are candidates for display.
201
- tokens: Lower-cased filter tokens — empty means "no filter".
191
+ """Match server names or tool names/descriptions, preserving empty servers.
202
192
 
203
193
  Returns:
204
- - `server.tools` when the filter is empty or matches the server name
205
- and the server actually has tools.
206
- - A subset tuple when individual tool names match.
207
- - `None` when nothing matches, including the server-name-match case
208
- on a server with zero tools — caller skips the header entirely.
194
+ Matching tools (possibly empty), or `None` to hide the server.
209
195
  """
210
196
  if not tokens:
211
197
  return server.tools
212
198
 
213
199
  if all(token in server.name.lower() for token in tokens):
214
- return server.tools or None
200
+ return server.tools
215
201
 
216
202
  matching = tuple(
217
203
  tool
218
204
  for tool in server.tools
219
- if all(token in tool.name.lower() for token in tokens)
205
+ if all(token in f"{tool.name} {tool.description}".lower() for token in tokens)
220
206
  )
221
207
  return matching or None
222
208
 
@@ -466,26 +452,30 @@ def _render_server_header(
466
452
  Styled `Content` ready to mount inside a `Static`.
467
453
  """
468
454
  dim_style = "" if selected else "dim"
455
+ name = Content.assemble(
456
+ (server.name, "bold"),
457
+ (" (plugin)", dim_style) if server.name.startswith("plugin__") else "",
458
+ )
469
459
  tool_count = len(visible_tools)
470
460
  t_label = "tool" if tool_count == 1 else "tools"
471
461
  if server.status == "ok":
472
462
  summary = f" {server.transport} {glyphs.bullet} {tool_count} {t_label}"
473
463
  return Content.assemble(
474
464
  (f"{indicator_glyph} ", indicator_color),
475
- (server.name, "bold"),
465
+ name,
476
466
  (summary, dim_style),
477
467
  )
478
468
  if server.status == "unauthenticated":
479
469
  return Content.assemble(
480
470
  (f"{indicator_glyph} ", indicator_color),
481
- (server.name, "bold"),
471
+ name,
482
472
  (f" {server.transport}", dim_style),
483
473
  (f" {glyphs.bullet} {server.status}", indicator_color),
484
474
  )
485
475
  if server.status == "awaiting_reconnect":
486
476
  return Content.assemble(
487
477
  (f"{indicator_glyph} ", indicator_color),
488
- (server.name, "bold"),
478
+ name,
489
479
  (f" {server.transport}", dim_style),
490
480
  (f" {glyphs.bullet} ready to load", indicator_color),
491
481
  (f" — {MCP_RECONNECT_KEY_LABEL} to load tools", dim_style),
@@ -493,7 +483,7 @@ def _render_server_header(
493
483
  if server.status == "error":
494
484
  return Content.assemble(
495
485
  (f"{indicator_glyph} ", indicator_color),
496
- (server.name, "bold"),
486
+ name,
497
487
  (f" {server.transport}", dim_style),
498
488
  (f" {glyphs.bullet} {server.status}", indicator_color),
499
489
  )
@@ -503,7 +493,7 @@ def _render_server_header(
503
493
  )
504
494
  return Content.assemble(
505
495
  (f"{indicator_glyph} ", indicator_color),
506
- (server.name, "bold"),
496
+ name,
507
497
  (f" {server.transport}", dim_style),
508
498
  (f" {glyphs.bullet} {server.status}", indicator_color),
509
499
  (f" — {error_text}", dim_style) if error_text else "",
@@ -1217,7 +1207,7 @@ class MCPViewerScreen(ModalScreen[str | None]):
1217
1207
  container.mount(
1218
1208
  Input(
1219
1209
  id="mcp-filter",
1220
- placeholder="Filter tools...",
1210
+ placeholder="Filter servers and tools...",
1221
1211
  value=self._query,
1222
1212
  )
1223
1213
  )
@@ -1318,13 +1308,7 @@ class MCPViewerScreen(ModalScreen[str | None]):
1318
1308
  help_static.update(self._build_help_text(get_glyphs()))
1319
1309
 
1320
1310
  def _populate_scroll(self, scroll: VerticalScroll, query: str) -> None:
1321
- """Mount filtered server headers + tool items into `scroll`.
1322
-
1323
- Empty `query` shows everything; otherwise multi-token AND matching
1324
- on server names and tool names only — descriptions, parameter
1325
- names, and transport are not in the haystack (see
1326
- `_visible_tools_for`).
1327
- """
1311
+ """Mount server headers and tools matching names or tool descriptions."""
1328
1312
  glyphs = get_glyphs()
1329
1313
 
1330
1314
  if not self._server_info:
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "deepagents-code"
7
- version = "0.1.74"
7
+ version = "0.1.76"
8
8
  description = "Terminal coding agent built on the Deep Agents SDK - works with any model, with persistent memory, customizable skills, subagents, and approval controls."
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -33,14 +33,14 @@ dependencies = [
33
33
 
34
34
  # Client-server architecture
35
35
  "langgraph-sdk>=0.4.5,<1.0.0",
36
- "langgraph-cli[inmem]>=0.4.31,<1.0.0",
36
+ "langgraph-cli[inmem]>=0.4.32,<1.0.0",
37
37
  "langgraph-runtime-inmem>=0.34.1,<1.0.0",
38
38
  "httpx>=0.28.1,<1.0.0",
39
39
 
40
40
  # Core model providers - others are added as optional
41
- "langchain-anthropic>=1.7.3,<2.0.0",
41
+ "langchain-anthropic>=1.7.4,<2.0.0",
42
42
  "langchain-google-genai>=4.4.0,<5.0.0",
43
- "langchain-openai>=1.6.4,<2.0.0",
43
+ "langchain-openai>=1.6.5,<2.0.0",
44
44
  "pydantic>=2.12.5,<2.14.0a0",
45
45
 
46
46
  # UI/Terminal
@@ -71,7 +71,7 @@ dependencies = [
71
71
  # compatibility promise, and this range spans every 0.1.x patch, so re-verify
72
72
  # both against `cost_tracking._build_price_overrides` and
73
73
  # `cost_tracking._find_override_model` when widening it.
74
- "genai-prices>=0.1.7,<0.2.0",
74
+ "genai-prices>=0.1.8,<0.2.0",
75
75
 
76
76
  # Clipboard
77
77
  "pyperclip>=1.11.0,<2.0.0",
@@ -107,7 +107,7 @@ dependencies = [
107
107
 
108
108
  [project.optional-dependencies]
109
109
  # Model providers
110
- anthropic = ["langchain-anthropic>=1.7.3,<2.0.0"]
110
+ anthropic = ["langchain-anthropic>=1.7.4,<2.0.0"]
111
111
  baseten = ["langchain-baseten>=0.2.4,<1.0.0"]
112
112
  bedrock = ["langchain-aws>=1.7.9,<2.0.0"]
113
113
  cohere = ["langchain-cohere>=0.6.0,<1.0.0"]
@@ -117,7 +117,7 @@ google-genai = ["langchain-google-genai>=4.4.0,<5.0.0"]
117
117
  groq = ["langchain-groq>=1.1.3,<2.0.0"]
118
118
  huggingface = ["langchain-huggingface>=1.2.2,<2.0.0"]
119
119
  ibm = ["langchain-ibm>=1.1.0,<2.0.0"]
120
- litellm = ["langchain-litellm>=0.7.2,<2.0.0"]
120
+ litellm = ["langchain-litellm>=0.8.0,<2.0.0"]
121
121
  meta = ["langchain-meta>=0.5.0,<2.0.0"]
122
122
  mistralai = ["langchain-mistralai>=1.1.6,<2.0.0"]
123
123
  nvidia = [
@@ -125,7 +125,7 @@ nvidia = [
125
125
  "langchain-nvidia-ai-endpoints>=1.4.3,<2.0.0",
126
126
  ]
127
127
  ollama = ["langchain-ollama>=1.1.0,<2.0.0"]
128
- openai = ["langchain-openai>=1.6.4,<2.0.0"]
128
+ openai = ["langchain-openai>=1.6.5,<2.0.0"]
129
129
  openrouter = ["langchain-openrouter>=0.2.9,<2.0.0"]
130
130
  perplexity = ["langchain-perplexity>=1.4.1,<2.0.0"]
131
131
  together = ["langchain-together>=0.4.0,<2.0.0"]
@@ -10,6 +10,7 @@ from textual.app import App, ComposeResult
10
10
  from textual.screen import ModalScreen
11
11
  from textual.widgets import Button, Checkbox, Select, Static
12
12
 
13
+ import deepagents_code.tui.modals.cost_breakdown as cost_breakdown_mod
13
14
  import deepagents_code.tui.widgets.debug_console as debug_console_mod
14
15
  from deepagents_code._debug_buffer import InMemoryLogRecord, get_log_buffer
15
16
  from deepagents_code.app import DeepAgentsApp
@@ -375,6 +376,36 @@ class TestDebugConsoleScreen:
375
376
  await pilot.pause()
376
377
  assert app.screen is console
377
378
 
379
+ async def test_cost_breakdown_updates_while_open_and_copies_latest(
380
+ self, monkeypatch: pytest.MonkeyPatch
381
+ ) -> None:
382
+ breakdown = "Input 12 0.01"
383
+ copied: list[str] = []
384
+ monkeypatch.setattr(
385
+ cost_breakdown_mod,
386
+ "copy_text_to_clipboard",
387
+ lambda _app, text: (copied.append(text) or True, None),
388
+ )
389
+ app = _Harness()
390
+ async with app.run_test() as pilot:
391
+ console = DebugConsoleScreen(
392
+ _snapshot(), cost_breakdown_provider=lambda: breakdown
393
+ )
394
+ app.push_screen(console)
395
+ await pilot.pause()
396
+ await pilot.click(console.query_one("#debug-cost-breakdown", Button))
397
+ await pilot.pause()
398
+ modal = cast("CostBreakdownScreen", app.screen)
399
+ assert "12" in _widget_text(modal.query_one(".cost-breakdown-body", Static))
400
+
401
+ breakdown = "Input 24 0.02"
402
+ await pilot.pause(delay=0.6)
403
+ assert breakdown in _widget_text(
404
+ modal.query_one(".cost-breakdown-body", Static)
405
+ )
406
+ await pilot.press("c")
407
+ assert copied == [breakdown]
408
+
378
409
  async def test_escape_dismisses(self) -> None:
379
410
  app = _Harness()
380
411
  async with app.run_test() as pilot: