deepagents-code 0.1.80__tar.gz → 0.1.82__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 (602) hide show
  1. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/CHANGELOG.md +39 -0
  2. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/COMMANDS.md +2 -2
  3. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/PKG-INFO +9 -9
  4. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_build_info.py +1 -1
  5. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_cli_context.py +1 -1
  6. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_js_cost.py +3 -0
  7. deepagents_code-0.1.82/deepagents_code/_startup_error.py +136 -0
  8. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_textual_patches.py +20 -8
  9. deepagents_code-0.1.82/deepagents_code/_tool_free.py +79 -0
  10. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_version.py +1 -1
  11. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/agent.py +2 -0
  12. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/app.py +1395 -696
  13. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/app.tcss +7 -0
  14. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/btw.py +5 -62
  15. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/btw_cost.py +5 -5
  16. deepagents_code-0.1.82/deepagents_code/built_in_skills/deepagents-plugin-discovery/SKILL.md +17 -0
  17. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/built_in_skills/deepagents-thread-inspector/SKILL.md +6 -2
  18. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/built_in_skills/deepagents-thread-inspector/scripts/inspect_sessions.py +22 -0
  19. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/client/commands/config.py +27 -0
  20. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/client/launch/server.py +20 -7
  21. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/client/launch/server_manager.py +4 -3
  22. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/client/non_interactive.py +15 -21
  23. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/client/remote_client.py +191 -5
  24. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/cold_cache.py +6 -0
  25. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/command_registry.py +13 -25
  26. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/config.py +244 -22
  27. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/config_manifest.py +12 -0
  28. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/configurable_model.py +35 -15
  29. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/cost_tracking.py +4 -4
  30. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/server_middleware.py +59 -6
  31. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/main.py +52 -2
  32. deepagents_code-0.1.82/deepagents_code/model_api.py +226 -0
  33. deepagents_code-0.1.82/deepagents_code/model_catalog.py +248 -0
  34. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/model_config.py +128 -21
  35. deepagents_code-0.1.82/deepagents_code/model_metadata.py +82 -0
  36. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/model_retry.py +46 -17
  37. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/offload_api.py +53 -7
  38. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/offload_middleware.py +3 -3
  39. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/server_graph.py +14 -0
  40. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/sessions.py +274 -36
  41. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/system_prompt.md +4 -0
  42. deepagents_code-0.1.82/deepagents_code/terminal_title.py +141 -0
  43. deepagents_code-0.1.82/deepagents_code/thread_ownership.py +303 -0
  44. deepagents_code-0.1.82/deepagents_code/thread_titles.py +155 -0
  45. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tool_display.py +22 -0
  46. deepagents_code-0.1.82/deepagents_code/tui/modals/_cost_breakdown.py +123 -0
  47. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/cost_breakdown.py +15 -1
  48. deepagents_code-0.1.82/deepagents_code/tui/modals/mcp_servers.py +94 -0
  49. deepagents_code-0.1.82/deepagents_code/tui/modals/mcp_servers.tcss +34 -0
  50. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/session_cost.py +2 -1
  51. deepagents_code-0.1.82/deepagents_code/tui/modals/thread_name.py +58 -0
  52. deepagents_code-0.1.82/deepagents_code/tui/modals/thread_name.tcss +40 -0
  53. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/textual_adapter.py +90 -0
  54. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/autocomplete.py +5 -3
  55. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/chat_input.py +4 -0
  56. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/debug_console.py +27 -6
  57. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/messages.py +6 -0
  58. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/model_selector.py +223 -131
  59. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/startup_tip.py +2 -11
  60. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/status.py +35 -2
  61. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/subagent_panel.py +19 -5
  62. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/thread_selector.py +44 -8
  63. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/ui.py +6 -0
  64. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/pyproject.toml +7 -7
  65. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/integration_tests/test_pending_work_recovery.py +3 -1
  66. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/hooks/test_server_lifecycle.py +138 -0
  67. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/skills/test_load.py +12 -0
  68. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/skills/test_thread_inspector.py +56 -0
  69. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/smoke_tests/snapshots/system_prompt_headless_local.md +7 -1
  70. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/smoke_tests/snapshots/system_prompt_interactive_local.md +7 -1
  71. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/smoke_tests/test_system_prompt.py +1 -0
  72. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_agent.py +32 -0
  73. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_app.py +652 -368
  74. deepagents_code-0.1.82/tests/unit_tests/test_app_thread_ownership.py +162 -0
  75. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_args.py +24 -0
  76. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_cache_expiry.py +100 -10
  77. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_command_registry.py +4 -12
  78. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_config.py +794 -47
  79. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_config_manifest.py +44 -0
  80. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_configurable_model.py +75 -0
  81. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_cost_tracking.py +87 -0
  82. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_debug_console.py +91 -0
  83. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_js_cost_tracking.py +69 -6
  84. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_main_acp_mode.py +63 -0
  85. deepagents_code-0.1.82/tests/unit_tests/test_model_catalog.py +565 -0
  86. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_model_config.py +97 -0
  87. deepagents_code-0.1.82/tests/unit_tests/test_model_metadata.py +710 -0
  88. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_model_retry.py +7 -0
  89. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_model_switch.py +364 -323
  90. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_non_interactive.py +74 -199
  91. deepagents_code-0.1.82/tests/unit_tests/test_reasoning_effort.py +631 -0
  92. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_remote_client.py +139 -27
  93. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_server.py +93 -0
  94. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_server_graph.py +19 -0
  95. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_sessions.py +208 -32
  96. deepagents_code-0.1.82/tests/unit_tests/test_terminal_title.py +151 -0
  97. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_textual_patches.py +77 -0
  98. deepagents_code-0.1.82/tests/unit_tests/test_thread_naming_app.py +971 -0
  99. deepagents_code-0.1.82/tests/unit_tests/test_thread_ownership.py +418 -0
  100. deepagents_code-0.1.82/tests/unit_tests/test_thread_ownership_transitions.py +550 -0
  101. deepagents_code-0.1.82/tests/unit_tests/test_thread_titles.py +352 -0
  102. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_tool_display.py +43 -0
  103. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_update_check.py +5 -4
  104. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/test_textual_adapter.py +223 -0
  105. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_autocomplete.py +63 -0
  106. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_chat_input.py +99 -6
  107. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_messages.py +40 -0
  108. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_model_selector.py +40 -26
  109. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_startup_tip.py +0 -4
  110. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_status.py +42 -0
  111. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_subagent_panel.py +94 -5
  112. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_thread_selector.py +86 -0
  113. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/uv.lock +171 -132
  114. deepagents_code-0.1.80/deepagents_code/_startup_error.py +0 -45
  115. deepagents_code-0.1.80/tests/unit_tests/test_reasoning_effort.py +0 -293
  116. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/.gitignore +0 -0
  117. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/AGENTS.md +0 -0
  118. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/ARCHITECTURE.md +0 -0
  119. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/DEVELOPMENT.md +0 -0
  120. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/EXTENSIONS.md +0 -0
  121. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/HOOKS.md +0 -0
  122. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/LICENSE +0 -0
  123. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/Makefile +0 -0
  124. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/PRICING.md +0 -0
  125. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/README.md +0 -0
  126. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/THREAT_MODEL.md +0 -0
  127. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/__init__.py +0 -0
  128. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/__main__.py +0 -0
  129. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_ask_user_types.py +0 -0
  130. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_async.py +0 -0
  131. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_constants.py +0 -0
  132. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_content_blocks.py +0 -0
  133. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_debug.py +0 -0
  134. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_debug_buffer.py +0 -0
  135. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_dep_floor_check.py +0 -0
  136. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_env_vars.py +0 -0
  137. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_fake_models.py +0 -0
  138. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_git.py +0 -0
  139. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_glm_5p2_profile.py +0 -0
  140. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_home_error.py +0 -0
  141. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_invocation.py +0 -0
  142. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_markdown.py +0 -0
  143. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_paths.py +0 -0
  144. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_repository_bounds.py +0 -0
  145. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_reserved_names.py +0 -0
  146. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_server_config.py +0 -0
  147. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_session_stats.py +0 -0
  148. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_terminal_stderr.py +0 -0
  149. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_testing_models.py +0 -0
  150. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_tool_stream.py +0 -0
  151. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/_tracing.py +0 -0
  152. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/acp.py +0 -0
  153. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/approval_mode.py +0 -0
  154. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/ask_user.py +0 -0
  155. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/auth_display.py +0 -0
  156. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/auth_store.py +0 -0
  157. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/auto_mode.py +0 -0
  158. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/btw_api.py +0 -0
  159. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/built_in_skills/__init__.py +0 -0
  160. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
  161. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
  162. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  163. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  164. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/bundled_prices.README.md +0 -0
  165. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/bundled_prices.json +0 -0
  166. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/client/__init__.py +0 -0
  167. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/client/commands/__init__.py +0 -0
  168. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/client/commands/auth.py +0 -0
  169. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/client/commands/extras.py +0 -0
  170. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/client/commands/mcp.py +0 -0
  171. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/client/commands/tools.py +0 -0
  172. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/client/launch/__init__.py +0 -0
  173. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/client/session_cost.py +0 -0
  174. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/clipboard.py +0 -0
  175. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/configuration/__init__.py +0 -0
  176. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/configuration/interpreter.py +0 -0
  177. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/configuration/paths.py +0 -0
  178. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/configuration/provider.py +0 -0
  179. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/configuration/providers.py +0 -0
  180. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/configuration/resolver.py +0 -0
  181. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/configuration/service.py +0 -0
  182. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/configuration/theme_resolution.py +0 -0
  183. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/configuration/types.py +0 -0
  184. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/configuration/writer.py +0 -0
  185. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/context_doctor.py +0 -0
  186. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/default_agent_prompt.md +0 -0
  187. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/diff_utils.py +0 -0
  188. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/doctor.py +0 -0
  189. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/editor.py +0 -0
  190. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/event_bus.py +0 -0
  191. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/extensions/__init__.py +0 -0
  192. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/extensions/api.py +0 -0
  193. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/extensions/discovery.py +0 -0
  194. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/extensions/hosting.py +0 -0
  195. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/extensions/loader.py +0 -0
  196. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/extensions/registry.py +0 -0
  197. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/extensions/runtime.py +0 -0
  198. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/extensions/settings.py +0 -0
  199. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/extensions/trust.py +0 -0
  200. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/extras_info.py +0 -0
  201. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/file_ops.py +0 -0
  202. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/formatting.py +0 -0
  203. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/goal_rubric.py +0 -0
  204. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/goal_state_limits.py +0 -0
  205. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/goal_state_notice.py +0 -0
  206. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/goal_tools.py +0 -0
  207. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/__init__.py +0 -0
  208. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/capabilities.py +0 -0
  209. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/client.py +0 -0
  210. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/client_lifecycle.py +0 -0
  211. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/context.py +0 -0
  212. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/engine.py +0 -0
  213. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/env.py +0 -0
  214. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/envelope.py +0 -0
  215. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/interrupt.py +0 -0
  216. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/legacy.py +0 -0
  217. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/loading.py +0 -0
  218. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/manager.py +0 -0
  219. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/migration.py +0 -0
  220. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/models/__init__.py +0 -0
  221. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/models/adapters.py +0 -0
  222. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/models/config.py +0 -0
  223. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/models/domain.py +0 -0
  224. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/models/transport.py +0 -0
  225. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/models/wire.py +0 -0
  226. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/permissions.py +0 -0
  227. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/presenter.py +0 -0
  228. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/projection.py +0 -0
  229. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/reducer.py +0 -0
  230. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/runner.py +0 -0
  231. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/runtime.py +0 -0
  232. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/snapshot.py +0 -0
  233. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/tools.py +0 -0
  234. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/transcript.py +0 -0
  235. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/trust.py +0 -0
  236. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/hooks/validate_terminal_sequence.py +0 -0
  237. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/input.py +0 -0
  238. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/integrations/__init__.py +0 -0
  239. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/integrations/openai_codex.py +0 -0
  240. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/integrations/sandbox_config.py +0 -0
  241. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/integrations/sandbox_factory.py +0 -0
  242. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/integrations/sandbox_provider.py +0 -0
  243. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/integrations/sandbox_registry.py +0 -0
  244. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/iterm_cursor_guide.py +0 -0
  245. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/json_types.py +0 -0
  246. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/local_context.py +0 -0
  247. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/managed_tools.py +0 -0
  248. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/mcp_auth.py +0 -0
  249. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/mcp_config.py +0 -0
  250. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/mcp_disabled.py +0 -0
  251. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/mcp_login_service.py +0 -0
  252. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/mcp_middleware.py +0 -0
  253. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/mcp_oauth_ui.py +0 -0
  254. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/mcp_providers/__init__.py +0 -0
  255. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/mcp_providers/_registry.py +0 -0
  256. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/mcp_providers/base.py +0 -0
  257. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/mcp_providers/github.py +0 -0
  258. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/mcp_providers/slack.py +0 -0
  259. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/mcp_proxy.py +0 -0
  260. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/mcp_tools.py +0 -0
  261. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/media_utils.py +0 -0
  262. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/memory_guard.py +0 -0
  263. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/notifications.py +0 -0
  264. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/offload.py +0 -0
  265. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/onboarding.py +0 -0
  266. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/output.py +0 -0
  267. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/paste_collapse.py +0 -0
  268. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/plugins/__init__.py +0 -0
  269. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/plugins/_json.py +0 -0
  270. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/plugins/adapters/__init__.py +0 -0
  271. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/plugins/adapters/hooks.py +0 -0
  272. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/plugins/adapters/mcp.py +0 -0
  273. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/plugins/adapters/skills.py +0 -0
  274. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/plugins/adapters/skills_middleware.py +0 -0
  275. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/plugins/commands_cli.py +0 -0
  276. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/plugins/discovery.py +0 -0
  277. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/plugins/manifest.py +0 -0
  278. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/plugins/marketplace.py +0 -0
  279. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/plugins/models.py +0 -0
  280. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/plugins/store.py +0 -0
  281. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/plugins/substitution.py +0 -0
  282. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/project_utils.py +0 -0
  283. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/py.typed +0 -0
  284. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/reasoning_effort.py +0 -0
  285. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/reliable_rubric.py +0 -0
  286. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/resume_state.py +0 -0
  287. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/skills/__init__.py +0 -0
  288. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/skills/commands.py +0 -0
  289. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/skills/invocation.py +0 -0
  290. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/skills/load.py +0 -0
  291. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/skills/merge.py +0 -0
  292. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/skills/trust.py +0 -0
  293. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/state_migration.py +0 -0
  294. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/subagents.py +0 -0
  295. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/terminal_capabilities.py +0 -0
  296. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/terminal_escape.py +0 -0
  297. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/theme.py +0 -0
  298. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tool_catalog.py +0 -0
  299. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tools.py +0 -0
  300. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/__init__.py +0 -0
  301. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/key_hints.py +0 -0
  302. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/__init__.py +0 -0
  303. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/btw.py +0 -0
  304. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/btw.tcss +0 -0
  305. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/cold_cache.py +0 -0
  306. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/model_switch.py +0 -0
  307. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/plugin_manager/__init__.py +0 -0
  308. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/plugin_manager/content.py +0 -0
  309. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/plugin_manager/models.py +0 -0
  310. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/plugin_manager/plugin_manager.tcss +0 -0
  311. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/plugin_manager/state.py +0 -0
  312. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/plugin_manager/tabs.py +0 -0
  313. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/prompt_clipboard.py +0 -0
  314. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/prompt_clipboard.tcss +0 -0
  315. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/resume_blocked.py +0 -0
  316. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/resume_compact.py +0 -0
  317. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/modals/session_cost.tcss +0 -0
  318. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/screens/__init__.py +0 -0
  319. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/__init__.py +0 -0
  320. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/_condense_path.py +0 -0
  321. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/_copy_spans.py +0 -0
  322. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/_inline_prompt.py +0 -0
  323. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/_js_eval_display.py +0 -0
  324. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/_links.py +0 -0
  325. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/_paste_textarea.py +0 -0
  326. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/agent_selector.py +0 -0
  327. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/approval.py +0 -0
  328. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/ask_user.py +0 -0
  329. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/auth.py +0 -0
  330. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/auto_mode_notice.py +0 -0
  331. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/codex_auth.py +0 -0
  332. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/context_usage.py +0 -0
  333. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/cwd_switch.py +0 -0
  334. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/diff.py +0 -0
  335. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/effort_selector.py +0 -0
  336. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/goal_review.py +0 -0
  337. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/goal_status.py +0 -0
  338. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/history.py +0 -0
  339. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/install_confirm.py +0 -0
  340. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/launch_init.py +0 -0
  341. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/loading.py +0 -0
  342. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/mcp_login.py +0 -0
  343. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/mcp_reconnect.py +0 -0
  344. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/mcp_viewer.py +0 -0
  345. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/message_store.py +0 -0
  346. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/notification_center.py +0 -0
  347. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/notification_detail.py +0 -0
  348. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/notification_settings.py +0 -0
  349. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/prompt_search.py +0 -0
  350. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/restart_prompt.py +0 -0
  351. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/skill_trust.py +0 -0
  352. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/theme_selector.py +0 -0
  353. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/thread_agent_switch.py +0 -0
  354. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/tool_renderers.py +0 -0
  355. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/tool_widgets.py +0 -0
  356. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/update_available.py +0 -0
  357. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/update_confirm.py +0 -0
  358. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/update_progress.py +0 -0
  359. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/welcome.py +0 -0
  360. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/tui/widgets/yolo_mode_notice.py +0 -0
  361. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/unicode_security.py +0 -0
  362. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/update_check.py +0 -0
  363. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/workspace.py +0 -0
  364. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/deepagents_code/workspace_diagnostics.py +0 -0
  365. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/examples/extensions/memory_store.py +0 -0
  366. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/examples/skills/arxiv-search/SKILL.md +0 -0
  367. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  368. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/examples/skills/langgraph-docs/SKILL.md +0 -0
  369. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/examples/skills/skill-creator/SKILL.md +0 -0
  370. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  371. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  372. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/examples/skills/web-research/SKILL.md +0 -0
  373. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/hatch_build.py +0 -0
  374. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/images/debug-console-cost-breakdown.png +0 -0
  375. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/images/model-stream-retry.png +0 -0
  376. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/images/tui.png +0 -0
  377. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/scripts/check_imports.py +0 -0
  378. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/scripts/check_process_cwd.py +0 -0
  379. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/scripts/debug_server.sh +0 -0
  380. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/scripts/generate_commands_catalog.py +0 -0
  381. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/scripts/install.sh +0 -0
  382. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/README.md +0 -0
  383. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/integration_tests/__init__.py +0 -0
  384. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/integration_tests/benchmarks/__init__.py +0 -0
  385. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
  386. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/integration_tests/benchmarks/test_local_context_benchmarks.py +0 -0
  387. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
  388. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/integration_tests/benchmarks/test_thread_loading_benchmarks.py +0 -0
  389. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/integration_tests/conftest.py +0 -0
  390. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/integration_tests/test_acp_mode.py +0 -0
  391. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/integration_tests/test_auto_approve_remote.py +0 -0
  392. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/integration_tests/test_compact_resume.py +0 -0
  393. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/integration_tests/test_offload_server_side.py +0 -0
  394. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/integration_tests/test_sandbox_factory.py +0 -0
  395. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/integration_tests/test_sandbox_operations.py +0 -0
  396. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/__init__.py +0 -0
  397. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/client/__init__.py +0 -0
  398. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/client/commands/__init__.py +0 -0
  399. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/client/commands/test_auth.py +0 -0
  400. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/client/commands/test_extras.py +0 -0
  401. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/client/commands/test_mcp.py +0 -0
  402. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/client/commands/test_tools.py +0 -0
  403. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/conftest.py +0 -0
  404. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/data/coding_agent_v1_validator.json +0 -0
  405. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/hooks/__init__.py +0 -0
  406. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/hooks/models/__init__.py +0 -0
  407. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/hooks/models/test_models.py +0 -0
  408. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/hooks/test_client_lifecycle.py +0 -0
  409. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/hooks/test_configuration.py +0 -0
  410. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/hooks/test_engine.py +0 -0
  411. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/hooks/test_execution.py +0 -0
  412. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/hooks/test_manager.py +0 -0
  413. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/hooks/test_presenter.py +0 -0
  414. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/hooks/test_transcript.py +0 -0
  415. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/hooks/test_trust.py +0 -0
  416. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/plugins/__init__.py +0 -0
  417. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/plugins/test_marketplace.py +0 -0
  418. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/plugins/test_plugin_hooks.py +0 -0
  419. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/plugins/test_plugins_p0.py +0 -0
  420. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/skills/__init__.py +0 -0
  421. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/skills/test_commands.py +0 -0
  422. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/skills/test_merge.py +0 -0
  423. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/skills/test_skill_trust.py +0 -0
  424. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/skills/test_skills_json.py +0 -0
  425. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/smoke_tests/__init__.py +0 -0
  426. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/smoke_tests/conftest.py +0 -0
  427. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test__tool_stream.py +0 -0
  428. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_acp.py +0 -0
  429. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_agent_friendly.py +0 -0
  430. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_agent_mcp_timeout.py +0 -0
  431. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_approval_mode.py +0 -0
  432. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_ask_user_middleware.py +0 -0
  433. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_ask_user_types.py +0 -0
  434. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_auth_display.py +0 -0
  435. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_auth_store.py +0 -0
  436. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_auth_web_search_restart.py +0 -0
  437. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_auto_mode.py +0 -0
  438. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_btw.py +0 -0
  439. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_btw_api.py +0 -0
  440. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_charset.py +0 -0
  441. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_cli_provider.py +0 -0
  442. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_clipboard.py +0 -0
  443. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_coding_agent_metadata.py +0 -0
  444. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_cold_cache.py +0 -0
  445. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_compact_tool.py +0 -0
  446. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_configuration.py +0 -0
  447. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_configuration_resolution.py +0 -0
  448. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_configuration_resolver.py +0 -0
  449. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_context_doctor.py +0 -0
  450. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_cursor_style.py +0 -0
  451. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_debug.py +0 -0
  452. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_debug_buffer.py +0 -0
  453. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_dep_floor_check.py +0 -0
  454. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_diff_utils.py +0 -0
  455. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_doctor.py +0 -0
  456. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_editor.py +0 -0
  457. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_end_to_end.py +0 -0
  458. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_env_vars.py +0 -0
  459. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_event_bus.py +0 -0
  460. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_exception_handling.py +0 -0
  461. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_extension_api.py +0 -0
  462. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_extension_cli_trust.py +0 -0
  463. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_extension_config_manifest.py +0 -0
  464. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_extension_discovery.py +0 -0
  465. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_extension_display.py +0 -0
  466. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_extension_host_runtime.py +0 -0
  467. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_extension_hosting.py +0 -0
  468. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_extension_runtime.py +0 -0
  469. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_extra_skills_dirs.py +0 -0
  470. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_extras_info.py +0 -0
  471. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_file_ops.py +0 -0
  472. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_formatting.py +0 -0
  473. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_git.py +0 -0
  474. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_glm_5p2_profile.py +0 -0
  475. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_goal_criteria_client.py +0 -0
  476. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_goal_rubric.py +0 -0
  477. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_goal_state_limits.py +0 -0
  478. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_goal_state_notice.py +0 -0
  479. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_goal_state_persistence.py +0 -0
  480. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_goal_tools.py +0 -0
  481. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_hatch_build.py +0 -0
  482. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_hooks.py +0 -0
  483. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_imports.py +0 -0
  484. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_input_parsing.py +0 -0
  485. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_install_command.py +0 -0
  486. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_install_script.py +0 -0
  487. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_invocation.py +0 -0
  488. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
  489. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_js_cost_sync.py +0 -0
  490. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_json_types.py +0 -0
  491. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_local_context.py +0 -0
  492. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_main.py +0 -0
  493. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_main_args.py +0 -0
  494. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_managed_tools.py +0 -0
  495. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_mcp_auth.py +0 -0
  496. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_mcp_config.py +0 -0
  497. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_mcp_disabled.py +0 -0
  498. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_mcp_lifecycle.py +0 -0
  499. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_mcp_login_service.py +0 -0
  500. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_mcp_middleware.py +0 -0
  501. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
  502. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_mcp_proxy.py +0 -0
  503. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_mcp_schema.py +0 -0
  504. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_mcp_tools.py +0 -0
  505. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_media_utils.py +0 -0
  506. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_memory_guard.py +0 -0
  507. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_notifications.py +0 -0
  508. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_offload.py +0 -0
  509. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_offload_api.py +0 -0
  510. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_onboarding.py +0 -0
  511. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_openai_codex_integration.py +0 -0
  512. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_output.py +0 -0
  513. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_paths.py +0 -0
  514. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_process_cwd_check.py +0 -0
  515. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_reliable_rubric.py +0 -0
  516. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_reload.py +0 -0
  517. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_repository_bounds.py +0 -0
  518. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_resume_compaction_recovery.py +0 -0
  519. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_resume_state.py +0 -0
  520. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_rubric_cli.py +0 -0
  521. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_sandbox_config.py +0 -0
  522. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_sandbox_factory.py +0 -0
  523. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_sandbox_provider.py +0 -0
  524. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_sandbox_registry.py +0 -0
  525. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_server_config.py +0 -0
  526. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_server_helpers.py +0 -0
  527. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_server_manager.py +0 -0
  528. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_server_tracing.py +0 -0
  529. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_session_stats.py +0 -0
  530. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_shell_allow_list.py +0 -0
  531. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_skill_invocation.py +0 -0
  532. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_startup_fast_paths.py +0 -0
  533. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_state_migration.py +0 -0
  534. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_subagents.py +0 -0
  535. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_terminal_capabilities.py +0 -0
  536. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_terminal_escape.py +0 -0
  537. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
  538. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_terminal_stderr.py +0 -0
  539. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_text_encoding.py +0 -0
  540. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_theme.py +0 -0
  541. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_threads_resume.py +0 -0
  542. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_tool_catalog.py +0 -0
  543. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_tracing.py +0 -0
  544. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_tracing_replicas.py +0 -0
  545. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_transcript_virtualization.py +0 -0
  546. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_ui.py +0 -0
  547. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_unicode_security.py +0 -0
  548. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_uninstall_command.py +0 -0
  549. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_version.py +0 -0
  550. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_workspace.py +0 -0
  551. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/test_workspace_diagnostics.py +0 -0
  552. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tools/__init__.py +0 -0
  553. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tools/test_current_thread.py +0 -0
  554. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tools/test_fetch_url.py +0 -0
  555. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tools/test_tool_arg_schemas.py +0 -0
  556. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tools/test_web_search.py +0 -0
  557. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/__init__.py +0 -0
  558. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/modals/__init__.py +0 -0
  559. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/modals/plugin_manager/__init__.py +0 -0
  560. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/modals/plugin_manager/test_inspection.py +0 -0
  561. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/modals/plugin_manager/test_structure.py +0 -0
  562. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/modals/test_cold_cache.py +0 -0
  563. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/modals/test_model_switch.py +0 -0
  564. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/modals/test_prompt_clipboard.py +0 -0
  565. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/modals/test_resume_blocked.py +0 -0
  566. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/modals/test_session_cost.py +0 -0
  567. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/test_key_hints.py +0 -0
  568. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/test_modal_footer_layout.py +0 -0
  569. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/test_subagent_stream.py +0 -0
  570. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/__init__.py +0 -0
  571. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_agent_selector.py +0 -0
  572. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_approval.py +0 -0
  573. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_ask_user.py +0 -0
  574. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_auth_widgets.py +0 -0
  575. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_auto_mode_notice.py +0 -0
  576. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_condense_path.py +0 -0
  577. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_copy_spans.py +0 -0
  578. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_cwd_switch.py +0 -0
  579. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_diff.py +0 -0
  580. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_goal_review.py +0 -0
  581. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_history.py +0 -0
  582. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_inline_prompt.py +0 -0
  583. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_install_confirm.py +0 -0
  584. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_launch_init.py +0 -0
  585. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_links.py +0 -0
  586. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_loading.py +0 -0
  587. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_mcp_login_modal.py +0 -0
  588. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_mcp_reconnect.py +0 -0
  589. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_mcp_viewer.py +0 -0
  590. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_message_store.py +0 -0
  591. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_notification_center.py +0 -0
  592. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_notification_detail.py +0 -0
  593. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_notification_settings.py +0 -0
  594. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_prompt_search.py +0 -0
  595. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_restart_prompt.py +0 -0
  596. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_skill_trust_screen.py +0 -0
  597. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_thread_agent_switch.py +0 -0
  598. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_tool_renderers.py +0 -0
  599. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_update_available.py +0 -0
  600. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_update_confirm.py +0 -0
  601. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_update_progress.py +0 -0
  602. {deepagents_code-0.1.80 → deepagents_code-0.1.82}/tests/unit_tests/tui/widgets/test_welcome.py +0 -0
@@ -2,6 +2,45 @@
2
2
 
3
3
  # Deep Agents Code Changelog
4
4
 
5
+ ## [0.1.82](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.81...deepagents-code==0.1.82) (2026-10-07)
6
+
7
+ ### Features
8
+
9
+ - Create persistent thread names automatically or on demand, and rename threads manually. ([#6715](https://github.com/langchain-ai/deepagents/pull/6715), [#6767](https://github.com/langchain-ai/deepagents/pull/6767))
10
+ - Customize terminal tab titles. ([#6768](https://github.com/langchain-ai/deepagents/pull/6768))
11
+ - Distinguish skill reads in the transcript. ([#6825](https://github.com/langchain-ai/deepagents/pull/6825))
12
+
13
+ ### Bug Fixes
14
+
15
+ - Keep the thread picker open when ownership conflicts occur. ([#6824](https://github.com/langchain-ai/deepagents/pull/6824))
16
+ - Preserve completion markers on remote messages. ([#6831](https://github.com/langchain-ai/deepagents/pull/6831))
17
+ - Extend triple-click selection across blocks. ([#6819](https://github.com/langchain-ai/deepagents/pull/6819))
18
+ - Recommend GPT-6 Luna for auto review. ([#6821](https://github.com/langchain-ai/deepagents/pull/6821))
19
+ - Show editable install status in debug version information. ([#6797](https://github.com/langchain-ai/deepagents/pull/6797))
20
+
21
+ ## [0.1.81](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.80...deepagents-code==0.1.81) (2026-10-06)
22
+
23
+ ### Features
24
+
25
+ - The agent can now discover marketplace plugins ([#6719](https://github.com/langchain-ai/deepagents/pull/6719)).
26
+ - You can open the effort selector during active runs ([#6724](https://github.com/langchain-ai/deepagents/pull/6724)) and the cost breakdown from the footer ([#6723](https://github.com/langchain-ai/deepagents/pull/6723)).
27
+ - Added `--no-tracing` and an explicit tracing status indicator ([#6721](https://github.com/langchain-ai/deepagents/pull/6721)).
28
+ - Renamed `/summarization-model` to `/offload model` ([#6774](https://github.com/langchain-ai/deepagents/pull/6774)).
29
+ - Highlighted the active line in multiline chat input ([#6746](https://github.com/langchain-ai/deepagents/pull/6746)).
30
+
31
+ ### Bug Fixes
32
+
33
+ - Use `ChatBedrockConverse` for non-Anthropic Bedrock models ([#6718](https://github.com/langchain-ai/deepagents/pull/6718)).
34
+ - Prevented concurrent writes to local threads ([#6717](https://github.com/langchain-ai/deepagents/pull/6717)).
35
+ - Hook execution now fails closed if its context changes when a run resumes ([#6712](https://github.com/langchain-ai/deepagents/pull/6712)).
36
+ - Improved server-side model catalog, selection, and interactive model metadata handling ([#6773](https://github.com/langchain-ai/deepagents/pull/6773), [#6772](https://github.com/langchain-ai/deepagents/pull/6772)).
37
+ - Isolated stored provider endpoints in workspace models ([#6771](https://github.com/langchain-ai/deepagents/pull/6771)).
38
+ - Reconciled cache expiry during model requests ([#6763](https://github.com/langchain-ai/deepagents/pull/6763)).
39
+ - Preserved dispatch timers across interrupt replays ([#6722](https://github.com/langchain-ai/deepagents/pull/6722)).
40
+ - Collapsed idle subagents and reopened them for new work ([#6782](https://github.com/langchain-ai/deepagents/pull/6782)).
41
+ - Moved debug MCP server details into a modal ([#6720](https://github.com/langchain-ai/deepagents/pull/6720)).
42
+ - Clarified that clearing the chat starts a new thread ([#6726](https://github.com/langchain-ai/deepagents/pull/6726)).
43
+
5
44
  ## [0.1.80](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.79...deepagents-code==0.1.80) (2026-10-01)
6
45
 
7
46
  ### Features
@@ -37,17 +37,17 @@ aliases, descriptions, visibility, or hidden-command metadata.
37
37
  | `/mcp` | | Manage MCP servers and authentication |
38
38
  | `/model` | | Switch models or edit model settings |
39
39
  | `/notifications` | | Review notifications and configure warning settings |
40
- | `/offload` | `/compact` | Summarize and offload older messages to free context |
40
+ | `/offload` | `/compact` | Offload older messages or choose the summarization model |
41
41
  | `/plugins` | | Manage plugins |
42
42
  | `/prompts` | | Search and reuse a previous prompt |
43
43
  | `/quit` | `/q` | Exit app |
44
44
  | `/reload` | | Reload environment and config |
45
45
  | `/remember` | | Save useful context to memory or skills |
46
+ | `/rename` | | Name this thread or generate a suggested name |
46
47
  | `/restart` | | Restart the agent server |
47
48
  | `/rubric` | `/criteria` | Set explicit acceptance criteria for rubric grading |
48
49
  | `/scrollbar` | | Show or hide the chat scrollbar |
49
50
  | `/skill-creator` | | Create or refine agent skills |
50
- | `/summarization-model` | | Set the model used for context-compaction summaries |
51
51
  | `/theme` | | Change color theme |
52
52
  | `/threads` | | Browse and resume past threads |
53
53
  | `/timestamps` | | Show or hide message timestamps |
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: deepagents-code
3
- Version: 0.1.80
3
+ Version: 0.1.82
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,7 +30,7 @@ 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.21
33
+ Requires-Dist: deepagents==0.7.22
34
34
  Requires-Dist: fastmcp<5.0.0,>=4.0.0b4
35
35
  Requires-Dist: filelock<3.30,>=3.29.7
36
36
  Requires-Dist: genai-prices<0.2.0,>=0.1.9
@@ -42,9 +42,9 @@ Requires-Dist: langchain-quickjs<0.4.0,>=0.3.4
42
42
  Requires-Dist: langchain<2.0.0,>=1.4.3
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.32
45
- Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.35.1
46
- Requires-Dist: langgraph-sdk<1.0.0,>=0.4.5
47
- Requires-Dist: langsmith[sandbox]>=0.14.2
45
+ Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.35.2
46
+ Requires-Dist: langgraph-sdk<1.0.0,>=0.4.6
47
+ Requires-Dist: langsmith[sandbox]>=0.14.4
48
48
  Requires-Dist: markdownify<2.0.0,>=1.2.3
49
49
  Requires-Dist: mcp<3.0.0,>=2.0.0
50
50
  Requires-Dist: packaging>=26.2
@@ -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.5; extra == 'all-providers'
70
- Requires-Dist: langchain-aws<2.0.0,>=1.8.0; extra == 'all-providers'
70
+ Requires-Dist: langchain-aws<2.0.0,>=1.8.1; 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.1; extra == 'all-providers'
@@ -76,7 +76,7 @@ Requires-Dist: langchain-google-genai<5.0.0,>=4.4.0; extra == 'all-providers'
76
76
  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
- Requires-Dist: langchain-ibm<2.0.0,>=1.1.1; extra == 'all-providers'
79
+ Requires-Dist: langchain-ibm<2.0.0,>=1.1.2; extra == 'all-providers'
80
80
  Requires-Dist: langchain-litellm<2.0.0,>=0.11.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'
@@ -98,7 +98,7 @@ Requires-Dist: langchain-anthropic<2.0.0,>=1.7.5; 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.8.0; extra == 'bedrock'
101
+ Requires-Dist: langchain-aws<2.0.0,>=1.8.1; 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
@@ -114,7 +114,7 @@ Requires-Dist: langchain-groq<2.0.0,>=1.1.3; extra == 'groq'
114
114
  Provides-Extra: huggingface
115
115
  Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'huggingface'
116
116
  Provides-Extra: ibm
117
- Requires-Dist: langchain-ibm<2.0.0,>=1.1.1; extra == 'ibm'
117
+ Requires-Dist: langchain-ibm<2.0.0,>=1.1.2; extra == 'ibm'
118
118
  Provides-Extra: litellm
119
119
  Requires-Dist: langchain-litellm<2.0.0,>=0.11.0; extra == 'litellm'
120
120
  Provides-Extra: media
@@ -1,3 +1,3 @@
1
1
  """Generated at build time. Do not edit or commit."""
2
2
 
3
- BUILD_COMMIT = "e4c1ffe"
3
+ BUILD_COMMIT = "981c043"
@@ -34,7 +34,7 @@ INHERIT_SUMMARIZATION_MODEL = "__dcode_inherit_summarization__"
34
34
  """Per-run `summarization_model` value meaning "use the main agent model".
35
35
 
36
36
  An absent (or `None`) `summarization_model` leaves the graph's startup summary
37
- model in effect. `/summarization-model clear` needs the stronger statement that
37
+ model in effect. `/offload model clear` needs the stronger statement that
38
38
  summaries go back to the main agent model, which this sentinel carries across
39
39
  the remote JSON boundary without being mistaken for a model spec.
40
40
  """
@@ -26,6 +26,7 @@ from deepagents_code.cost_tracking import (
26
26
  _merge_cost_breakdowns,
27
27
  _parent_checkpoint_scope,
28
28
  )
29
+ from deepagents_code.thread_ownership import OWNER_KEY
29
30
 
30
31
  if TYPE_CHECKING:
31
32
  from collections.abc import Awaitable, Callable
@@ -202,6 +203,8 @@ def record_cost_receipt(
202
203
  "checkpoint_ns": f"{owner}|receipt:{_digest(namespace)}",
203
204
  }
204
205
  }
206
+ if OWNER_KEY in configurable:
207
+ config["configurable"][OWNER_KEY] = configurable[OWNER_KEY]
205
208
  loop = configurable["__deepagents_js_cost_loop"]
206
209
  asyncio.run_coroutine_threadsafe(
207
210
  _put_receipt(saver, config, owner, amount, breakdown), loop
@@ -0,0 +1,136 @@
1
+ """Stderr marker emission used by the langgraph server graph entry point.
2
+
3
+ Lives in its own module so unit tests can exercise the marker contract
4
+ without triggering `server_graph.make_graph()` at import time.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import json
10
+ import logging
11
+ import sys
12
+ import traceback
13
+
14
+ logger = logging.getLogger(__name__)
15
+
16
+ STARTUP_ERROR_MARKER = "DEEPAGENTS_STARTUP_ERROR:"
17
+ """Stderr marker the parent app scans for in `server._extract_startup_error_marker`
18
+ to upgrade an opaque "Server process exited with code N" into a one-line summary.
19
+ Format is `{STARTUP_ERROR_MARKER}{single-line message}`."""
20
+
21
+ _STARTUP_ERROR_DETAILS_MARKER = "DEEPAGENTS_STARTUP_ERROR_DETAILS:"
22
+
23
+
24
+ def _recovery_details(exc: BaseException) -> dict[str, str | None] | None:
25
+ """Allowlist recovery fields; never serialize an exception's full state.
26
+
27
+ Returns:
28
+ Recovery details for known errors, or `None` for other failures.
29
+ """
30
+ from deepagents_code.model_config import (
31
+ MissingCredentialsError,
32
+ MissingProviderPackageError,
33
+ )
34
+
35
+ if isinstance(exc, MissingCredentialsError):
36
+ return {
37
+ "type": "MissingCredentialsError",
38
+ "message": str(exc),
39
+ "provider": exc.provider,
40
+ "env_var": exc.env_var,
41
+ }
42
+ if isinstance(exc, MissingProviderPackageError):
43
+ return {
44
+ "type": "MissingProviderPackageError",
45
+ "message": str(exc),
46
+ "provider": exc.provider,
47
+ "package": exc.package,
48
+ }
49
+ return None
50
+
51
+
52
+ def _decode_recovery_error(payload: object) -> Exception | None:
53
+ """Reconstruct only known recovery errors with validated string fields.
54
+
55
+ Returns:
56
+ A typed error, or `None` for unsupported or invalid payloads.
57
+ """
58
+ from deepagents_code.model_config import (
59
+ MissingCredentialsError,
60
+ MissingProviderPackageError,
61
+ )
62
+
63
+ if not isinstance(payload, dict):
64
+ return None
65
+ message, provider = payload.get("message"), payload.get("provider")
66
+ if not isinstance(message, str) or not isinstance(provider, str) or not provider:
67
+ return None
68
+ if payload.get("type") == "MissingCredentialsError":
69
+ env_var = payload.get("env_var")
70
+ if env_var is None or isinstance(env_var, str):
71
+ return MissingCredentialsError(message, provider=provider, env_var=env_var)
72
+ if payload.get("type") == "MissingProviderPackageError":
73
+ package = payload.get("package")
74
+ if isinstance(package, str) and package:
75
+ return MissingProviderPackageError(
76
+ message, provider=provider, package=package
77
+ )
78
+ return None
79
+
80
+
81
+ def startup_error_from_output(output: str, fallback: str) -> Exception:
82
+ """Restore a typed recovery error, falling back to the ordinary log summary.
83
+
84
+ Args:
85
+ output: Server subprocess output containing startup markers.
86
+ fallback: Error text for legacy, unknown, or malformed markers.
87
+
88
+ Returns:
89
+ A known model recovery error or a `RuntimeError` with the fallback text.
90
+ """
91
+ for line in reversed(output.splitlines()):
92
+ if _STARTUP_ERROR_DETAILS_MARKER in line:
93
+ _, encoded = line.split(_STARTUP_ERROR_DETAILS_MARKER, 1)
94
+ try:
95
+ error = _decode_recovery_error(json.loads(encoded))
96
+ except ValueError:
97
+ break
98
+ if error is not None:
99
+ return error
100
+ break
101
+ return RuntimeError(fallback)
102
+
103
+
104
+ def emit_startup_failure(exc: BaseException) -> None:
105
+ """Report a server graph startup failure to the parent app process.
106
+
107
+ Emits the full traceback for logs/debugging, then a
108
+ single-line `{STARTUP_ERROR_MARKER}{type}: {summary}` line that
109
+ `server._extract_startup_error_marker` parses to upgrade an opaque
110
+ "Server process exited with code N" into an actionable summary.
111
+ Known credential/package errors also include JSON recovery fields so the
112
+ client can restore their types without constructing a provider model.
113
+
114
+ Args:
115
+ exc: The exception raised during graph initialization.
116
+ """
117
+ logger.critical("Failed to initialize server graph", exc_info=exc)
118
+ print( # noqa: T201 # stderr fallback — logger may not reach parent process
119
+ f"Failed to initialize server graph: {exc}\n{traceback.format_exc()}",
120
+ file=sys.stderr,
121
+ )
122
+ # Marker contract is single-line; guard against multi-line/empty `str(exc)`
123
+ # and include the type so e.g. `ValueError` and `RuntimeError` are
124
+ # distinguishable in the parent's truncated summary.
125
+ exc_lines = str(exc).splitlines()
126
+ summary = exc_lines[0] if exc_lines else "<no message>"
127
+ print( # noqa: T201
128
+ f"{STARTUP_ERROR_MARKER}{type(exc).__name__}: {summary}",
129
+ file=sys.stderr,
130
+ )
131
+ details = _recovery_details(exc)
132
+ if details is not None:
133
+ print( # noqa: T201 # parent process recovery protocol
134
+ f"{_STARTUP_ERROR_DETAILS_MARKER}{json.dumps(details)}",
135
+ file=sys.stderr,
136
+ )
@@ -39,8 +39,9 @@ upstream.
39
39
 
40
40
  3. Double-click word selection. Stock Textual selects the entire widget on
41
41
  a click chain; these patches narrow a double-click (and double-click
42
- drag) to word boundaries. No upstream issue tracks this yet, so it has
43
- no removal criterion — it stays until Textual grows native word select.
42
+ drag) to word boundaries. Holding the third press selects whole blocks
43
+ while dragging across widgets. No upstream issue tracks this yet, so it
44
+ stays until Textual grows native word and block selection.
44
45
 
45
46
  4. Shift-click selection extension. Stock Textual replaces an existing text
46
47
  selection on every mouse press, so Shift+click cannot move the active end
@@ -134,6 +135,7 @@ _ESC_PREFIX_LEN = 2
134
135
  _DOUBLE_CLICK_CHAIN = 2
135
136
  _TRIPLE_CLICK_CHAIN = 3
136
137
  _DEEPAGENTS_WORD_SELECT_ACTIVE = "_deepagents_word_select_active"
138
+ _DEEPAGENTS_BLOCK_SELECT_ACTIVE = "_deepagents_block_select_active"
137
139
 
138
140
  try:
139
141
  from textual import events
@@ -417,11 +419,10 @@ else:
417
419
 
418
420
  def _forward_event_with_word_select(self: Screen, event: Event) -> None:
419
421
  if isinstance(event, _events.MouseDown):
420
- setattr(
421
- self,
422
- _DEEPAGENTS_WORD_SELECT_ACTIVE,
423
- _is_word_select_start(self, event),
424
- )
422
+ chained = _is_word_select_start(self, event)
423
+ block_select = chained and self.app._chained_clicks == _DOUBLE_CLICK_CHAIN
424
+ setattr(self, _DEEPAGENTS_BLOCK_SELECT_ACTIVE, block_select)
425
+ setattr(self, _DEEPAGENTS_WORD_SELECT_ACTIVE, chained and not block_select)
425
426
  try:
426
427
  _original_forward_event(self, event)
427
428
  finally:
@@ -438,6 +439,12 @@ else:
438
439
  # without forcing a same-day patch update.
439
440
  if isawaitable(result):
440
441
  await result
442
+ if getattr(self, _DEEPAGENTS_BLOCK_SELECT_ACTIVE, False) and select_state:
443
+ if select_state.end is None:
444
+ widget = select_state.start.content_widget
445
+ if widget is not None:
446
+ self.selections = {widget: Selection(None, None)}
447
+ return
441
448
  if not getattr(self, _DEEPAGENTS_WORD_SELECT_ACTIVE, False):
442
449
  return
443
450
 
@@ -640,8 +647,13 @@ else:
640
647
  # Textual stores the new dict before invoking this watcher. Clamp that
641
648
  # object synchronously before returning the original watcher's awaitable;
642
649
  # assigning `self.selections` here would schedule this watcher again.
650
+ block_select = getattr(self, _DEEPAGENTS_BLOCK_SELECT_ACTIVE, False)
643
651
  for widget, selection in list(selections.items()):
644
- clamped = clamp_selection(widget, selection)
652
+ # Expand before clamping: a partial endpoint at the first source
653
+ # column would otherwise be dropped as a gutter-only selection.
654
+ clamped = clamp_selection(
655
+ widget, Selection(None, None) if block_select else selection
656
+ )
645
657
  if clamped is None:
646
658
  del selections[widget]
647
659
  elif clamped != selection:
@@ -0,0 +1,79 @@
1
+ """Remove executable tool configuration from isolated model requests."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import Mapping
6
+ from copy import deepcopy
7
+ from typing import TYPE_CHECKING
8
+
9
+ if TYPE_CHECKING:
10
+ from langchain_core.language_models import BaseChatModel
11
+
12
+ _TOOL_OPTIONS = frozenset(
13
+ {
14
+ "tools",
15
+ "tool_choice",
16
+ "functions",
17
+ "function_call",
18
+ "parallel_tool_calls",
19
+ "mcp_servers",
20
+ }
21
+ )
22
+ _OPTION_CONTAINERS = ("model_kwargs", "extra_body")
23
+
24
+
25
+ def _tool_free_options[K](options: Mapping[K, object]) -> dict[K, object]:
26
+ """Copy request defaults, including nested provider payload overrides.
27
+
28
+ Returns:
29
+ Options with tool configuration removed.
30
+ """
31
+ return {
32
+ key: (
33
+ _tool_free_options(value)
34
+ if key in _OPTION_CONTAINERS and isinstance(value, Mapping)
35
+ else deepcopy(value)
36
+ )
37
+ for key, value in options.items()
38
+ if key not in _TOOL_OPTIONS
39
+ }
40
+
41
+
42
+ def tool_free_model(model: BaseChatModel) -> BaseChatModel:
43
+ """Isolate request defaults while sharing the provider's HTTP clients.
44
+
45
+ Args:
46
+ model: Unbound chat model whose defaults should be isolated.
47
+
48
+ Returns:
49
+ A model copy with tool-free provider defaults.
50
+ """
51
+ updates: dict[str, object] = {
52
+ key: _tool_free_options(value)
53
+ for key in _OPTION_CONTAINERS
54
+ if isinstance(value := getattr(model, key, None), Mapping)
55
+ }
56
+ if hasattr(model, "mcp_servers"):
57
+ updates["mcp_servers"] = None
58
+ return model.model_copy(update=updates)
59
+
60
+
61
+ def tool_free_settings(
62
+ model: object, settings: Mapping[str, object]
63
+ ) -> dict[str, object]:
64
+ """Flatten bound defaults with request overrides taking precedence.
65
+
66
+ Args:
67
+ model: Chat model, optionally wrapped in request bindings.
68
+ settings: Request overrides to apply after bound defaults.
69
+
70
+ Returns:
71
+ Isolated generation settings without tool configuration.
72
+ """
73
+ from langchain_core.runnables import RunnableBinding
74
+
75
+ merged = dict(settings)
76
+ while isinstance(model, RunnableBinding):
77
+ merged = {**model.kwargs, **merged}
78
+ model = model.bound
79
+ return _tool_free_options(merged)
@@ -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.80" # x-release-please-version
5
+ __version__ = "0.1.82" # 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."""
@@ -75,6 +75,7 @@ from deepagents_code._glm_5p2_profile import (
75
75
  _ensure_glm_5p2_profile_registered,
76
76
  _GlmTerminalStallRecovery,
77
77
  )
78
+ from deepagents_code._invocation import invoked_name
78
79
  from deepagents_code._paths import (
79
80
  PATHS,
80
81
  ensure_agent_dir,
@@ -1787,6 +1788,7 @@ def get_system_prompt(
1787
1788
  .replace("{model_identity_section}", model_identity_section)
1788
1789
  .replace("{working_dir_section}", working_dir_section)
1789
1790
  .replace("{skills_path}", skills_path)
1791
+ .replace("{cli_name}", invoked_name())
1790
1792
  .replace("{filesystem_tool_guidance}", filesystem_tool_guidance)
1791
1793
  .replace("{tool_approval_guidance}", tool_approval_guidance)
1792
1794
  .replace("{web_search_tool_guidance}", web_search_tool_guidance)