deepagents-code 0.1.88__tar.gz → 0.2.0__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 (617) hide show
  1. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/CHANGELOG.md +10 -0
  2. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/DEVELOPMENT.md +2 -2
  3. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/PKG-INFO +29 -31
  4. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_ask_user_types.py +1 -1
  5. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_build_info.py +1 -1
  6. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_dep_floor_check.py +3 -3
  7. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_git.py +12 -6
  8. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_repository_bounds.py +1 -1
  9. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_session_stats.py +1 -1
  10. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_tool_stream.py +1 -1
  11. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_version.py +1 -1
  12. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/app.py +20 -20
  13. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/approval_mode.py +1 -1
  14. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/auto_mode.py +4 -4
  15. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/btw.py +2 -2
  16. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/btw_api.py +2 -2
  17. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/built_in_skills/deepagents-thread-inspector/scripts/inspect_sessions.py +3 -11
  18. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/launch/server.py +1 -1
  19. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/launch/server_manager.py +1 -1
  20. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/non_interactive.py +1 -1
  21. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/remote_client.py +3 -3
  22. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/config.py +7 -7
  23. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/config_manifest.py +11 -7
  24. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configurable_model.py +1 -1
  25. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/paths.py +4 -1
  26. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/providers.py +3 -3
  27. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/resolver.py +1 -1
  28. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/cost_tracking.py +1 -1
  29. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/doctor.py +1 -1
  30. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/event_bus.py +1 -1
  31. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/discovery.py +1 -1
  32. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/loader.py +1 -1
  33. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/runtime.py +1 -1
  34. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extras_info.py +12 -12
  35. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/file_ops.py +3 -3
  36. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/formatting.py +1 -1
  37. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/goal_rubric.py +1 -1
  38. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/migration.py +2 -2
  39. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/runner.py +2 -2
  40. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/transcript.py +2 -2
  41. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/trust.py +3 -3
  42. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/input.py +7 -5
  43. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/integrations/sandbox_factory.py +2 -2
  44. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/iterm_cursor_guide.py +1 -1
  45. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/main.py +49 -61
  46. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/managed_tools.py +1 -1
  47. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_auth.py +1 -1
  48. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_tools.py +2 -2
  49. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/media_utils.py +3 -2
  50. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/memory_guard.py +4 -4
  51. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/model_api.py +3 -3
  52. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/model_config.py +23 -23
  53. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/model_retry.py +2 -2
  54. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/offload.py +5 -5
  55. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/offload_middleware.py +1 -1
  56. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/adapters/mcp.py +1 -1
  57. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/adapters/skills.py +1 -1
  58. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/adapters/skills_middleware.py +2 -2
  59. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/manifest.py +1 -1
  60. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/marketplace.py +4 -0
  61. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/sessions.py +4 -4
  62. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/skills/commands.py +1 -1
  63. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/skills/load.py +1 -1
  64. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/skills/trust.py +4 -4
  65. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/terminal_escape.py +1 -1
  66. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/terminal_title.py +1 -1
  67. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/theme.py +1 -1
  68. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tool_catalog.py +2 -2
  69. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tool_display.py +6 -4
  70. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/key_hints.py +4 -1
  71. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/plugin_manager/content.py +7 -2
  72. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/plugin_manager/models.py +3 -2
  73. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/plugin_manager/state.py +1 -1
  74. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/textual_adapter.py +2 -2
  75. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/_links.py +2 -2
  76. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/autocomplete.py +1 -1
  77. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/debug_console.py +1 -1
  78. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/history.py +1 -1
  79. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/messages.py +5 -5
  80. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/model_selector.py +2 -2
  81. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/startup_tip.py +1 -6
  82. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/status.py +1 -1
  83. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/subagent_panel.py +6 -6
  84. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/thread_selector.py +3 -3
  85. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/tool_widgets.py +1 -1
  86. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/welcome.py +2 -2
  87. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/update_check.py +17 -17
  88. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/examples/extensions/memory_store.py +4 -1
  89. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/pyproject.toml +33 -34
  90. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/scripts/install.sh +4 -4
  91. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/conftest.py +6 -3
  92. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_sandbox_factory.py +6 -2
  93. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_sandbox_operations.py +6 -2
  94. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/conftest.py +5 -5
  95. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/plugins/test_marketplace.py +19 -0
  96. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/skills/test_commands.py +6 -3
  97. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/skills/test_load.py +4 -1
  98. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/skills/test_pinned_skills.py +3 -2
  99. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/skills/test_skills_json.py +4 -1
  100. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/skills/test_thread_inspector.py +4 -1
  101. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/smoke_tests/test_system_prompt.py +1 -1
  102. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_acp.py +2 -1
  103. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_agent.py +6 -5
  104. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_agent_friendly.py +4 -1
  105. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_args.py +4 -1
  106. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_cache_expiry.py +7 -6
  107. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_config.py +5 -3
  108. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_configuration_resolver.py +4 -2
  109. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_doctor.py +4 -1
  110. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_end_to_end.py +12 -11
  111. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extension_config_manifest.py +6 -3
  112. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extension_discovery.py +4 -1
  113. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extension_display.py +4 -2
  114. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extension_host_runtime.py +4 -1
  115. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extension_hosting.py +4 -1
  116. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extension_runtime.py +4 -2
  117. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extras_info.py +4 -1
  118. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_file_ops.py +2 -1
  119. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_fork_goal_notice.py +6 -5
  120. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_git.py +38 -1
  121. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_goal_tools.py +2 -1
  122. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_hatch_build.py +6 -2
  123. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_main.py +18 -17
  124. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_disabled.py +5 -2
  125. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_model_catalog.py +5 -2
  126. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_model_config.py +7 -4
  127. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_model_metadata.py +5 -2
  128. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_model_switch.py +7 -4
  129. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_non_interactive.py +2 -1
  130. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_paths.py +1 -1
  131. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_reasoning_effort.py +5 -2
  132. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_reliable_rubric.py +5 -3
  133. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_reload.py +1 -1
  134. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_remote_client.py +1 -1
  135. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_sessions.py +8 -8
  136. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_subagents.py +6 -3
  137. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_text_encoding.py +4 -1
  138. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_tool_display.py +1 -1
  139. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_update_check.py +1 -1
  140. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/plugin_manager/test_inspection.py +4 -1
  141. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/plugin_manager/test_structure.py +4 -1
  142. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/test_textual_adapter.py +8 -8
  143. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_links.py +2 -1
  144. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_mcp_viewer.py +5 -1
  145. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_model_selector.py +5 -3
  146. deepagents_code-0.2.0/tests/unit_tests/tui/widgets/test_startup_tip.py +29 -0
  147. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_thread_selector.py +6 -3
  148. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_tool_renderers.py +6 -2
  149. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_welcome.py +5 -2
  150. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/uv.lock +99 -1606
  151. deepagents_code-0.1.88/tests/unit_tests/tui/widgets/test_startup_tip.py +0 -55
  152. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/.gitignore +0 -0
  153. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/AGENTS.md +0 -0
  154. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/ARCHITECTURE.md +0 -0
  155. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/COMMANDS.md +0 -0
  156. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/EXTENSIONS.md +0 -0
  157. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/HOOKS.md +0 -0
  158. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/LICENSE +0 -0
  159. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/Makefile +0 -0
  160. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/PRICING.md +0 -0
  161. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/README.md +0 -0
  162. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/THREAT_MODEL.md +0 -0
  163. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/__init__.py +0 -0
  164. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/__main__.py +0 -0
  165. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_async.py +0 -0
  166. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_cli_context.py +0 -0
  167. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_constants.py +0 -0
  168. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_content_blocks.py +0 -0
  169. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_debug.py +0 -0
  170. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_debug_buffer.py +0 -0
  171. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_env_vars.py +0 -0
  172. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_fake_models.py +0 -0
  173. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_glm_5p2_profile.py +0 -0
  174. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_home_error.py +0 -0
  175. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_invocation.py +0 -0
  176. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_js_cost.py +0 -0
  177. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_markdown.py +0 -0
  178. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_paths.py +0 -0
  179. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_reserved_names.py +0 -0
  180. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_server_config.py +0 -0
  181. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_startup_error.py +0 -0
  182. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_terminal_stderr.py +0 -0
  183. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_testing_models.py +0 -0
  184. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_textual_patches.py +0 -0
  185. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_tool_free.py +0 -0
  186. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_tracing.py +0 -0
  187. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/acp.py +0 -0
  188. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/agent.py +0 -0
  189. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/app.tcss +0 -0
  190. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/ask_user.py +0 -0
  191. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/auth_display.py +0 -0
  192. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/auth_store.py +0 -0
  193. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/btw_cost.py +0 -0
  194. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/built_in_skills/__init__.py +0 -0
  195. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/built_in_skills/deepagents-plugin-discovery/SKILL.md +0 -0
  196. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/built_in_skills/deepagents-thread-inspector/SKILL.md +0 -0
  197. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
  198. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
  199. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  200. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  201. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/bundled_prices.README.md +0 -0
  202. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/bundled_prices.json +0 -0
  203. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/__init__.py +0 -0
  204. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/commands/__init__.py +0 -0
  205. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/commands/auth.py +0 -0
  206. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/commands/config.py +0 -0
  207. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/commands/extras.py +0 -0
  208. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/commands/mcp.py +0 -0
  209. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/commands/tools.py +0 -0
  210. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/headless_resume.py +0 -0
  211. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/launch/__init__.py +0 -0
  212. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/launch/_server_bootstrap.py +0 -0
  213. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/session_cost.py +0 -0
  214. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/clipboard.py +0 -0
  215. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/cold_cache.py +0 -0
  216. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/command_registry.py +0 -0
  217. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/__init__.py +0 -0
  218. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/interpreter.py +0 -0
  219. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/provider.py +0 -0
  220. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/service.py +0 -0
  221. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/theme_resolution.py +0 -0
  222. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/types.py +0 -0
  223. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/writer.py +0 -0
  224. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/context_doctor.py +0 -0
  225. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/default_agent_prompt.md +0 -0
  226. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/diff_utils.py +0 -0
  227. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/editor.py +0 -0
  228. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/__init__.py +0 -0
  229. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/api.py +0 -0
  230. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/hosting.py +0 -0
  231. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/registry.py +0 -0
  232. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/settings.py +0 -0
  233. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/trust.py +0 -0
  234. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/goal_state_limits.py +0 -0
  235. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/goal_state_notice.py +0 -0
  236. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/goal_tools.py +0 -0
  237. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/__init__.py +0 -0
  238. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/capabilities.py +0 -0
  239. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/client.py +0 -0
  240. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/client_lifecycle.py +0 -0
  241. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/context.py +0 -0
  242. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/engine.py +0 -0
  243. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/env.py +0 -0
  244. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/envelope.py +0 -0
  245. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/interrupt.py +0 -0
  246. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/legacy.py +0 -0
  247. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/loading.py +0 -0
  248. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/manager.py +0 -0
  249. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/models/__init__.py +0 -0
  250. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/models/adapters.py +0 -0
  251. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/models/config.py +0 -0
  252. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/models/domain.py +0 -0
  253. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/models/transport.py +0 -0
  254. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/models/wire.py +0 -0
  255. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/permissions.py +0 -0
  256. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/presenter.py +0 -0
  257. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/projection.py +0 -0
  258. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/reducer.py +0 -0
  259. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/runtime.py +0 -0
  260. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/server_middleware.py +0 -0
  261. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/snapshot.py +0 -0
  262. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/tools.py +0 -0
  263. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/validate_terminal_sequence.py +0 -0
  264. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/integrations/__init__.py +0 -0
  265. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/integrations/openai_codex.py +0 -0
  266. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/integrations/sandbox_config.py +0 -0
  267. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/integrations/sandbox_provider.py +0 -0
  268. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/integrations/sandbox_registry.py +0 -0
  269. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/json_types.py +0 -0
  270. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/local_context.py +0 -0
  271. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_config.py +0 -0
  272. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_disabled.py +0 -0
  273. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_login_service.py +0 -0
  274. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_middleware.py +0 -0
  275. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_oauth_ui.py +0 -0
  276. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_providers/__init__.py +0 -0
  277. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_providers/_registry.py +0 -0
  278. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_providers/base.py +0 -0
  279. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_providers/github.py +0 -0
  280. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_providers/slack.py +0 -0
  281. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_proxy.py +0 -0
  282. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/model_catalog.py +0 -0
  283. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/model_metadata.py +0 -0
  284. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/notifications.py +0 -0
  285. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/offload_api.py +0 -0
  286. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/onboarding.py +0 -0
  287. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/output.py +0 -0
  288. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/paste_collapse.py +0 -0
  289. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/__init__.py +0 -0
  290. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/_json.py +0 -0
  291. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/adapters/__init__.py +0 -0
  292. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/adapters/hooks.py +0 -0
  293. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/commands_cli.py +0 -0
  294. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/discovery.py +0 -0
  295. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/models.py +0 -0
  296. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/store.py +0 -0
  297. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/substitution.py +0 -0
  298. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/project_utils.py +0 -0
  299. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/py.typed +0 -0
  300. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/reasoning_effort.py +0 -0
  301. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/reliable_rubric.py +0 -0
  302. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/resume_policy.py +0 -0
  303. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/resume_state.py +0 -0
  304. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/server_graph.py +0 -0
  305. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/skills/__init__.py +0 -0
  306. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/skills/invocation.py +0 -0
  307. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/skills/load_errors.py +0 -0
  308. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/skills/merge.py +0 -0
  309. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/state_migration.py +0 -0
  310. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/subagents.py +0 -0
  311. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/system_prompt.md +0 -0
  312. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/terminal_capabilities.py +0 -0
  313. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/thread_ownership.py +0 -0
  314. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/thread_titles.py +0 -0
  315. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tools.py +0 -0
  316. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/__init__.py +0 -0
  317. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/__init__.py +0 -0
  318. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/_cost_breakdown.py +0 -0
  319. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/btw.py +0 -0
  320. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/btw.tcss +0 -0
  321. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/cold_cache.py +0 -0
  322. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/cost_breakdown.py +0 -0
  323. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/mcp_servers.py +0 -0
  324. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/mcp_servers.tcss +0 -0
  325. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/model_switch.py +0 -0
  326. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/plugin_manager/__init__.py +0 -0
  327. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/plugin_manager/plugin_manager.tcss +0 -0
  328. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/plugin_manager/tabs.py +0 -0
  329. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/prompt_clipboard.py +0 -0
  330. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/prompt_clipboard.tcss +0 -0
  331. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/resume_blocked.py +0 -0
  332. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/resume_compact.py +0 -0
  333. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/session_cost.py +0 -0
  334. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/session_cost.tcss +0 -0
  335. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/thread_name.py +0 -0
  336. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/thread_name.tcss +0 -0
  337. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/screens/__init__.py +0 -0
  338. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/__init__.py +0 -0
  339. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/_condense_path.py +0 -0
  340. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/_copy_spans.py +0 -0
  341. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/_inline_prompt.py +0 -0
  342. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/_js_eval_display.py +0 -0
  343. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/_paste_textarea.py +0 -0
  344. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/agent_selector.py +0 -0
  345. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/approval.py +0 -0
  346. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/ask_user.py +0 -0
  347. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/auth.py +0 -0
  348. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/auto_mode_notice.py +0 -0
  349. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/chat_input.py +0 -0
  350. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/codex_auth.py +0 -0
  351. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/context_usage.py +0 -0
  352. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/cwd_switch.py +0 -0
  353. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/diff.py +0 -0
  354. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/effort_selector.py +0 -0
  355. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/goal_review.py +0 -0
  356. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/goal_status.py +0 -0
  357. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/install_confirm.py +0 -0
  358. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/launch_init.py +0 -0
  359. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/loading.py +0 -0
  360. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/mcp_login.py +0 -0
  361. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/mcp_reconnect.py +0 -0
  362. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/mcp_viewer.py +0 -0
  363. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/message_store.py +0 -0
  364. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/notification_center.py +0 -0
  365. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/notification_detail.py +0 -0
  366. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/notification_settings.py +0 -0
  367. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/prompt_search.py +0 -0
  368. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/restart_prompt.py +0 -0
  369. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/skill_trust.py +0 -0
  370. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/theme_selector.py +0 -0
  371. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/thread_agent_switch.py +0 -0
  372. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/tool_renderers.py +0 -0
  373. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/update_available.py +0 -0
  374. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/update_confirm.py +0 -0
  375. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/update_progress.py +0 -0
  376. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/yolo_mode_notice.py +0 -0
  377. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/ui.py +0 -0
  378. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/unicode_security.py +0 -0
  379. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/workspace.py +0 -0
  380. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/workspace_diagnostics.py +0 -0
  381. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/examples/skills/arxiv-search/SKILL.md +0 -0
  382. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  383. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/examples/skills/langgraph-docs/SKILL.md +0 -0
  384. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/examples/skills/skill-creator/SKILL.md +0 -0
  385. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  386. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  387. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/examples/skills/web-research/SKILL.md +0 -0
  388. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/hatch_build.py +0 -0
  389. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/images/debug-console-cost-breakdown.png +0 -0
  390. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/images/model-stream-retry.png +0 -0
  391. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/images/tui.png +0 -0
  392. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/scripts/check_imports.py +0 -0
  393. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/scripts/check_process_cwd.py +0 -0
  394. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/scripts/debug_server.sh +0 -0
  395. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/scripts/generate_commands_catalog.py +0 -0
  396. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/README.md +0 -0
  397. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/__init__.py +0 -0
  398. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/benchmarks/__init__.py +0 -0
  399. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
  400. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/benchmarks/test_local_context_benchmarks.py +0 -0
  401. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
  402. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/benchmarks/test_thread_loading_benchmarks.py +0 -0
  403. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_acp_mode.py +0 -0
  404. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_auto_approve_remote.py +0 -0
  405. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_compact_resume.py +0 -0
  406. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_headless_resume.py +0 -0
  407. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_offload_server_side.py +0 -0
  408. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_pending_work_recovery.py +0 -0
  409. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_server_owner_lifetime.py +0 -0
  410. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/__init__.py +0 -0
  411. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/client/__init__.py +0 -0
  412. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/client/commands/__init__.py +0 -0
  413. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/client/commands/test_auth.py +0 -0
  414. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/client/commands/test_extras.py +0 -0
  415. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/client/commands/test_mcp.py +0 -0
  416. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/client/commands/test_tools.py +0 -0
  417. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/data/coding_agent_v1_validator.json +0 -0
  418. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/__init__.py +0 -0
  419. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/models/__init__.py +0 -0
  420. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/models/test_models.py +0 -0
  421. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_client_lifecycle.py +0 -0
  422. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_configuration.py +0 -0
  423. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_engine.py +0 -0
  424. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_execution.py +0 -0
  425. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_manager.py +0 -0
  426. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_presenter.py +0 -0
  427. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_server_lifecycle.py +0 -0
  428. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_transcript.py +0 -0
  429. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_trust.py +0 -0
  430. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/plugins/__init__.py +0 -0
  431. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/plugins/test_plugin_hooks.py +0 -0
  432. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/plugins/test_plugins_p0.py +0 -0
  433. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/skills/__init__.py +0 -0
  434. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/skills/test_merge.py +0 -0
  435. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/skills/test_skill_trust.py +0 -0
  436. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/smoke_tests/__init__.py +0 -0
  437. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/smoke_tests/conftest.py +0 -0
  438. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/smoke_tests/snapshots/system_prompt_headless_local.md +0 -0
  439. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/smoke_tests/snapshots/system_prompt_interactive_local.md +0 -0
  440. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test__tool_stream.py +0 -0
  441. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_agent_mcp_timeout.py +0 -0
  442. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_app.py +0 -0
  443. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_app_thread_ownership.py +0 -0
  444. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_approval_mode.py +0 -0
  445. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_ask_user_middleware.py +0 -0
  446. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_ask_user_types.py +0 -0
  447. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_auth_display.py +0 -0
  448. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_auth_store.py +0 -0
  449. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_auth_web_search_restart.py +0 -0
  450. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_auto_mode.py +0 -0
  451. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_btw.py +0 -0
  452. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_btw_api.py +0 -0
  453. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_charset.py +0 -0
  454. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_cli_provider.py +0 -0
  455. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_clipboard.py +0 -0
  456. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_coding_agent_metadata.py +0 -0
  457. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_cold_cache.py +0 -0
  458. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_command_registry.py +0 -0
  459. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_compact_tool.py +0 -0
  460. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_config_manifest.py +0 -0
  461. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_configurable_model.py +0 -0
  462. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_configuration.py +0 -0
  463. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_configuration_resolution.py +0 -0
  464. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_context_doctor.py +0 -0
  465. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_cost_breakdown.py +0 -0
  466. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_cost_tracking.py +0 -0
  467. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_cursor_style.py +0 -0
  468. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_debug.py +0 -0
  469. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_debug_buffer.py +0 -0
  470. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_debug_console.py +0 -0
  471. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_dep_floor_check.py +0 -0
  472. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_diff_utils.py +0 -0
  473. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_editor.py +0 -0
  474. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_env_vars.py +0 -0
  475. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_event_bus.py +0 -0
  476. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_exception_handling.py +0 -0
  477. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extension_api.py +0 -0
  478. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extension_cli_trust.py +0 -0
  479. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extra_skills_dirs.py +0 -0
  480. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_formatting.py +0 -0
  481. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_glm_5p2_profile.py +0 -0
  482. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_goal_criteria_client.py +0 -0
  483. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_goal_rubric.py +0 -0
  484. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_goal_state_limits.py +0 -0
  485. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_goal_state_notice.py +0 -0
  486. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_goal_state_persistence.py +0 -0
  487. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_groq_tool_limit.py +0 -0
  488. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_headless_resume.py +0 -0
  489. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_hooks.py +0 -0
  490. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_idle_compaction.py +0 -0
  491. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_imports.py +0 -0
  492. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_input_parsing.py +0 -0
  493. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_install_command.py +0 -0
  494. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_install_script.py +0 -0
  495. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_interpreter_workspace_policy.py +0 -0
  496. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_invocation.py +0 -0
  497. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
  498. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_js_cost_sync.py +0 -0
  499. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_js_cost_tracking.py +0 -0
  500. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_json_types.py +0 -0
  501. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_local_context.py +0 -0
  502. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_main_acp_mode.py +0 -0
  503. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_main_args.py +0 -0
  504. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_managed_tools.py +0 -0
  505. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_auth.py +0 -0
  506. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_config.py +0 -0
  507. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_lifecycle.py +0 -0
  508. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_login_service.py +0 -0
  509. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_middleware.py +0 -0
  510. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
  511. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_proxy.py +0 -0
  512. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_schema.py +0 -0
  513. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_tools.py +0 -0
  514. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_media_utils.py +0 -0
  515. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_memory_guard.py +0 -0
  516. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_model_retry.py +0 -0
  517. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_notifications.py +0 -0
  518. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_offload.py +0 -0
  519. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_offload_api.py +0 -0
  520. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_onboarding.py +0 -0
  521. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_openai_codex_integration.py +0 -0
  522. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_output.py +0 -0
  523. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_process_cwd_check.py +0 -0
  524. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_python_migration_bridge.py +0 -0
  525. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_repository_bounds.py +0 -0
  526. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_resume_compaction_recovery.py +0 -0
  527. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_resume_state.py +0 -0
  528. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_resume_workspace_errors.py +0 -0
  529. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_rubric_cli.py +0 -0
  530. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_sandbox_config.py +0 -0
  531. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_sandbox_factory.py +0 -0
  532. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_sandbox_provider.py +0 -0
  533. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_sandbox_registry.py +0 -0
  534. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_server.py +0 -0
  535. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_server_config.py +0 -0
  536. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_server_graph.py +0 -0
  537. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_server_helpers.py +0 -0
  538. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_server_manager.py +0 -0
  539. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_server_pipe.py +0 -0
  540. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_server_tracing.py +0 -0
  541. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_session_stats.py +0 -0
  542. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_shell_allow_list.py +0 -0
  543. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_skill_invocation.py +0 -0
  544. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_startup_fast_paths.py +0 -0
  545. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_state_migration.py +0 -0
  546. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_terminal_capabilities.py +0 -0
  547. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_terminal_escape.py +0 -0
  548. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
  549. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_terminal_stderr.py +0 -0
  550. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_terminal_title.py +0 -0
  551. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_textual_patches.py +0 -0
  552. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_theme.py +0 -0
  553. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_thread_naming_app.py +0 -0
  554. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_thread_ownership.py +0 -0
  555. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_thread_ownership_transitions.py +0 -0
  556. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_thread_titles.py +0 -0
  557. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_threads_resume.py +0 -0
  558. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_tool_catalog.py +0 -0
  559. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_tracing.py +0 -0
  560. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_tracing_replicas.py +0 -0
  561. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_transcript_virtualization.py +0 -0
  562. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_ui.py +0 -0
  563. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_unicode_security.py +0 -0
  564. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_uninstall_command.py +0 -0
  565. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_version.py +0 -0
  566. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_workspace.py +0 -0
  567. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_workspace_diagnostics.py +0 -0
  568. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tools/__init__.py +0 -0
  569. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tools/test_current_thread.py +0 -0
  570. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tools/test_fetch_url.py +0 -0
  571. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tools/test_tool_arg_schemas.py +0 -0
  572. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tools/test_web_search.py +0 -0
  573. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/__init__.py +0 -0
  574. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/__init__.py +0 -0
  575. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/plugin_manager/__init__.py +0 -0
  576. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/test_cold_cache.py +0 -0
  577. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/test_model_switch.py +0 -0
  578. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/test_prompt_clipboard.py +0 -0
  579. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/test_resume_blocked.py +0 -0
  580. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/test_session_cost.py +0 -0
  581. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/test_key_hints.py +0 -0
  582. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/test_modal_footer_layout.py +0 -0
  583. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/test_subagent_stream.py +0 -0
  584. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/__init__.py +0 -0
  585. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_agent_selector.py +0 -0
  586. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_approval.py +0 -0
  587. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_ask_user.py +0 -0
  588. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_auth_widgets.py +0 -0
  589. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_auto_mode_notice.py +0 -0
  590. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_autocomplete.py +0 -0
  591. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_chat_input.py +0 -0
  592. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_condense_path.py +0 -0
  593. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_copy_spans.py +0 -0
  594. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_cwd_switch.py +0 -0
  595. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_diff.py +0 -0
  596. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_goal_review.py +0 -0
  597. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_history.py +0 -0
  598. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_inline_prompt.py +0 -0
  599. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_install_confirm.py +0 -0
  600. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_launch_init.py +0 -0
  601. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_loading.py +0 -0
  602. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_mcp_login_modal.py +0 -0
  603. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_mcp_reconnect.py +0 -0
  604. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_message_store.py +0 -0
  605. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_messages.py +0 -0
  606. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_notification_center.py +0 -0
  607. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_notification_detail.py +0 -0
  608. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_notification_settings.py +0 -0
  609. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_prompt_search.py +0 -0
  610. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_restart_prompt.py +0 -0
  611. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_skill_trust_screen.py +0 -0
  612. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_status.py +0 -0
  613. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_subagent_panel.py +0 -0
  614. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_thread_agent_switch.py +0 -0
  615. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_update_available.py +0 -0
  616. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_update_confirm.py +0 -0
  617. {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_update_progress.py +0 -0
@@ -2,6 +2,16 @@
2
2
 
3
3
  # Deep Agents Code Changelog
4
4
 
5
+ ## [0.2.0](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.88...deepagents-code==0.2.0) (2026-10-22)
6
+
7
+ ### ⚠ BREAKING CHANGES
8
+
9
+ - `deepagents-code` now requires Python 3.14 (`>=3.14,<3.15`). If you have auto-upgrade enabled, this should be handled for you automatically. Otherwise, re-run the dcode installer or recreate your environment with Python 3.14.
10
+
11
+ ### Bug Fixes
12
+
13
+ - Decode Git output as UTF-8.
14
+
5
15
  ## [0.1.88](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.87...deepagents-code==0.1.88) (2026-10-22)
6
16
 
7
17
  ### Bug Fixes
@@ -219,7 +219,7 @@ That lets you compare released behavior against local, and fall back to a known-
219
219
 
220
220
  ```bash
221
221
  # 1. Create an isolated venv for the dev binary
222
- uv venv ~/.local/share/dcode-dev --python 3.13
222
+ uv venv ~/.local/share/dcode-dev --python 3.14
223
223
 
224
224
  # 2. Install your checkout into it, editable
225
225
  uv pip install --python ~/.local/share/dcode-dev/bin/python -e <repo>/libs/code
@@ -228,7 +228,7 @@ uv pip install --python ~/.local/share/dcode-dev/bin/python -e <repo>/libs/code
228
228
  ln -sf ~/.local/share/dcode-dev/bin/dcode ~/.local/bin/dcode-dev
229
229
  ```
230
230
 
231
- The `--python 3.13` is illustrative — any interpreter satisfying the package's `requires-python` (currently `>=3.12`) works; omit the flag to let `uv` pick.
231
+ The `--python 3.14` is illustrative — any interpreter satisfying the package's `requires-python` (currently `>=3.14,<3.15`) works; omit the flag to let `uv` pick.
232
232
 
233
233
  > **Why `uv venv` + `uv pip install -e` rather than `uv sync` or `uv tool install --editable`?** This builds an isolated venv *outside* the workspace's locked environment, so the dev binary can be re-resolved on demand without disturbing the released tool or the repo's `uv.lock`. (`uv pip` and `uv venv` are first-class `uv` subcommands here, not bare `pip`.)
234
234
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: deepagents-code
3
- Version: 0.1.88
3
+ Version: 0.2.0
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
@@ -20,52 +20,50 @@ Classifier: Environment :: Console
20
20
  Classifier: Intended Audience :: Developers
21
21
  Classifier: License :: OSI Approved :: MIT License
22
22
  Classifier: Programming Language :: Python :: 3
23
- Classifier: Programming Language :: Python :: 3.12
24
- Classifier: Programming Language :: Python :: 3.13
25
23
  Classifier: Programming Language :: Python :: 3.14
26
24
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
27
25
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
28
26
  Classifier: Topic :: Terminals
29
- Requires-Python: <4.0,>=3.12
30
- Requires-Dist: aiosqlite<1.0.0,>=0.22.1
31
- Requires-Dist: anyio<5.0.0,>=4.14.2
27
+ Requires-Python: <3.15,>=3.14
28
+ Requires-Dist: aiosqlite>=0.22.1
29
+ Requires-Dist: anyio>=4.14.2
32
30
  Requires-Dist: deepagents-acp<1.0.0,>=0.0.10
33
31
  Requires-Dist: deepagents==0.7.30
34
- Requires-Dist: fastmcp<5.0.0,>=4.0.0b4
32
+ Requires-Dist: fastmcp>=4.0.0b4
35
33
  Requires-Dist: filelock<3.30,>=3.29.7
36
34
  Requires-Dist: genai-prices<0.2.0,>=0.1.13
37
- Requires-Dist: httpx<1.0.0,>=0.28.1
35
+ Requires-Dist: httpx>=0.28.1
38
36
  Requires-Dist: langchain-anthropic<2.0.0,>=1.7.6
39
37
  Requires-Dist: langchain-google-genai<5.0.0,>=4.4.2
40
38
  Requires-Dist: langchain-openai<2.0.0,>=1.7.2
41
39
  Requires-Dist: langchain-quickjs<0.4.0,>=0.3.4
42
- Requires-Dist: langchain<2.0.0,>=1.4.6
40
+ Requires-Dist: langchain<2.0.0,>=1.4.7
43
41
  Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.1.2
44
42
  Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.37
45
- Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.36.2
43
+ Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.36.4
46
44
  Requires-Dist: langgraph-sdk<1.0.0,>=0.4.8
47
- Requires-Dist: langsmith[sandbox]>=0.14.11
48
- Requires-Dist: markdownify<2.0.0,>=1.2.3
49
- Requires-Dist: mcp<3.0.0,>=2.0.0
45
+ Requires-Dist: langsmith[sandbox]>=0.14.12
46
+ Requires-Dist: markdownify>=1.2.3
47
+ Requires-Dist: mcp>=2.0.0
50
48
  Requires-Dist: packaging>=26.2
51
- Requires-Dist: pillow<14.0.0,>=13.0.0
52
- Requires-Dist: prompt-toolkit<4.0.0,>=3.0.53
53
- Requires-Dist: pydantic<2.14.0a0,>=2.12.5
54
- Requires-Dist: pyperclip<2.0.0,>=1.11.0
55
- Requires-Dist: python-dotenv<2.0.0,>=1.2.2
49
+ Requires-Dist: pillow>=13.0.0
50
+ Requires-Dist: prompt-toolkit>=3.0.53
51
+ Requires-Dist: pydantic<3.0.0,>=2.13.0
52
+ Requires-Dist: pyperclip>=1.11.0
53
+ Requires-Dist: python-dotenv>=1.2.2
56
54
  Requires-Dist: pyyaml>=6.0.3
57
- Requires-Dist: requests<3.0.0,>=2.34.2
58
- Requires-Dist: rich<16.0.0,>=15.0.0
59
- Requires-Dist: tavily-python<1.0.0,>=0.7.26
60
- Requires-Dist: textual-autocomplete<5.0.0,>=4.0.6
61
- Requires-Dist: textual-speedups<1.0.0,>=0.2.1
55
+ Requires-Dist: requests>=2.34.2
56
+ Requires-Dist: rich>=15.0.0
57
+ Requires-Dist: tavily-python>=0.7.26
58
+ Requires-Dist: textual-autocomplete>=4.0.6
59
+ Requires-Dist: textual-speedups>=0.2.1
62
60
  Requires-Dist: textual<9.0.0,>=8.2.8
63
- Requires-Dist: tomli-w<2.0.0,>=1.2.0
64
- Requires-Dist: uuid-utils<1.0.0,>=0.17.0
61
+ Requires-Dist: tomli-w>=1.2.0
62
+ Requires-Dist: uuid-utils>=0.17.0
65
63
  Provides-Extra: agentcore
66
64
  Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.5; extra == 'agentcore'
67
65
  Provides-Extra: all-providers
68
- Requires-Dist: aiohttp<3.15.0,>=3.14.3; extra == 'all-providers'
66
+ Requires-Dist: aiohttp>=3.14.3; extra == 'all-providers'
69
67
  Requires-Dist: langchain-anthropic<2.0.0,>=1.7.6; extra == 'all-providers'
70
68
  Requires-Dist: langchain-aws<2.0.0,>=1.9.0; extra == 'all-providers'
71
69
  Requires-Dist: langchain-baseten<1.0.0,>=0.2.5; extra == 'all-providers'
@@ -84,7 +82,7 @@ Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.5.0; extra == 'all-provid
84
82
  Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'all-providers'
85
83
  Requires-Dist: langchain-openai<2.0.0,>=1.7.2; extra == 'all-providers'
86
84
  Requires-Dist: langchain-openrouter<2.0.0,>=0.2.9; extra == 'all-providers'
87
- Requires-Dist: langchain-perplexity<2.0.0,>=1.4.1; extra == 'all-providers'
85
+ Requires-Dist: langchain-perplexity<2.0.0,>=1.4.2; extra == 'all-providers'
88
86
  Requires-Dist: langchain-together<2.0.0,>=0.4.0; extra == 'all-providers'
89
87
  Requires-Dist: langchain-xai<2.0.0,>=1.3.0; extra == 'all-providers'
90
88
  Provides-Extra: all-sandboxes
@@ -119,8 +117,8 @@ Requires-Dist: langchain-ibm<2.0.0,>=1.1.2; extra == 'ibm'
119
117
  Provides-Extra: litellm
120
118
  Requires-Dist: langchain-litellm<2.0.0,>=0.11.1; extra == 'litellm'
121
119
  Provides-Extra: media
122
- Requires-Dist: av<19.0.0,>=18.0.0; extra == 'media'
123
- Requires-Dist: pillow<14.0.0,>=13.0.0; extra == 'media'
120
+ Requires-Dist: av>=18.0.0; extra == 'media'
121
+ Requires-Dist: pillow>=13.0.0; extra == 'media'
124
122
  Provides-Extra: meta
125
123
  Requires-Dist: langchain-meta<2.0.0,>=0.5.0; extra == 'meta'
126
124
  Provides-Extra: mistralai
@@ -128,7 +126,7 @@ Requires-Dist: langchain-mistralai<2.0.0,>=1.1.6; extra == 'mistralai'
128
126
  Provides-Extra: modal
129
127
  Requires-Dist: langchain-modal>=0.0.5; extra == 'modal'
130
128
  Provides-Extra: nvidia
131
- Requires-Dist: aiohttp<3.15.0,>=3.14.3; extra == 'nvidia'
129
+ Requires-Dist: aiohttp>=3.14.3; extra == 'nvidia'
132
130
  Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.5.0; extra == 'nvidia'
133
131
  Provides-Extra: ollama
134
132
  Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'ollama'
@@ -139,7 +137,7 @@ Requires-Dist: langchain-openrouter<2.0.0,>=0.2.9; extra == 'openrouter'
139
137
  Provides-Extra: openshell
140
138
  Requires-Dist: langchain-nvidia-openshell>=0.1.1; extra == 'openshell'
141
139
  Provides-Extra: perplexity
142
- Requires-Dist: langchain-perplexity<2.0.0,>=1.4.1; extra == 'perplexity'
140
+ Requires-Dist: langchain-perplexity<2.0.0,>=1.4.2; extra == 'perplexity'
143
141
  Provides-Extra: quickjs
144
142
  Provides-Extra: runloop
145
143
  Requires-Dist: langchain-runloop>=0.0.6; extra == 'runloop'
@@ -109,7 +109,7 @@ def decode_multi_select_answer(raw: str) -> list[str] | None:
109
109
  """
110
110
  try:
111
111
  decoded = json.loads(raw)
112
- except (json.JSONDecodeError, RecursionError):
112
+ except json.JSONDecodeError, RecursionError:
113
113
  return None
114
114
  if not isinstance(decoded, list) or not all(
115
115
  isinstance(value, str) for value in decoded
@@ -1,3 +1,3 @@
1
1
  """Generated at build time. Do not edit or commit."""
2
2
 
3
- BUILD_COMMIT = "0324ff3"
3
+ BUILD_COMMIT = "981a87a"
@@ -96,7 +96,7 @@ def _load_cli_requirements() -> list[str] | None:
96
96
  try:
97
97
  data = tomllib.loads(pyproject.read_text(encoding="utf-8"))
98
98
  entries = data["project"]["dependencies"]
99
- except (OSError, KeyError, TypeError, tomllib.TOMLDecodeError):
99
+ except OSError, KeyError, TypeError, tomllib.TOMLDecodeError:
100
100
  logger.debug(
101
101
  "Could not read dependency floors from the source checkout",
102
102
  exc_info=True,
@@ -330,7 +330,7 @@ def _workspace_editable_paths() -> list[Path]:
330
330
  try:
331
331
  data = tomllib.loads(pyproject.read_text(encoding="utf-8"))
332
332
  sources = data["tool"]["uv"]["sources"]
333
- except (OSError, KeyError, TypeError, tomllib.TOMLDecodeError):
333
+ except OSError, KeyError, TypeError, tomllib.TOMLDecodeError:
334
334
  logger.debug(
335
335
  "Could not read workspace sources from the source checkout",
336
336
  exc_info=True,
@@ -565,7 +565,7 @@ def _read_dismissed_fingerprints(path: Path) -> dict[str, str]:
565
565
  """
566
566
  try:
567
567
  data = json.loads(path.read_text(encoding="utf-8"))
568
- except (OSError, ValueError):
568
+ except OSError, ValueError:
569
569
  return {}
570
570
  if not isinstance(data, dict):
571
571
  return {}
@@ -173,7 +173,7 @@ def _read_single_git_metadata_line(path: Path) -> str | None:
173
173
  return None
174
174
  try:
175
175
  raw = path.read_text(encoding="utf-8")
176
- except (OSError, UnicodeError):
176
+ except OSError, UnicodeError:
177
177
  logger.debug("Failed to read Git metadata from %s", path, exc_info=True)
178
178
  return None
179
179
 
@@ -204,7 +204,7 @@ def _resolve_git_metadata_path(path: Path, *, relative_to: Path) -> Path | None:
204
204
  candidate = relative_to / candidate
205
205
  try:
206
206
  return candidate.resolve(strict=True)
207
- except (OSError, RuntimeError, ValueError):
207
+ except OSError, RuntimeError, ValueError:
208
208
  logger.debug("Failed to resolve Git metadata path from %s", path, exc_info=True)
209
209
  return None
210
210
 
@@ -227,7 +227,7 @@ def _normalize_git_metadata_path(path: Path, *, relative_to: Path) -> Path | Non
227
227
  candidate = relative_to / candidate
228
228
  try:
229
229
  return Path(os.path.abspath(candidate)) # noqa: PTH100 # do not follow links
230
- except (OSError, RuntimeError, ValueError):
230
+ except OSError, RuntimeError, ValueError:
231
231
  logger.debug(
232
232
  "Failed to normalize Git metadata path from %s", path, exc_info=True
233
233
  )
@@ -254,7 +254,7 @@ def _parse_trusted_git_dir_pointer(git_entry: Path) -> Path | None:
254
254
  candidate = git_entry.parent / candidate
255
255
  try:
256
256
  git_dir = candidate.resolve(strict=True)
257
- except (OSError, RuntimeError, ValueError):
257
+ except OSError, RuntimeError, ValueError:
258
258
  logger.debug(
259
259
  "Failed to resolve trusted gitdir pointer %s", git_entry, exc_info=True
260
260
  )
@@ -328,7 +328,7 @@ def find_git_common_dir(path: str | Path) -> Path | None:
328
328
  backlink = _normalize_git_metadata_path(git_dir / "gitdir", relative_to=git_dir)
329
329
  if backlink is None or backlink != git_entry:
330
330
  return None
331
- except (OSError, RuntimeError, ValueError):
331
+ except OSError, RuntimeError, ValueError:
332
332
  logger.debug(
333
333
  "Failed to validate Git common directory for %s", path, exc_info=True
334
334
  )
@@ -377,7 +377,7 @@ def _submodule_git_dir(root: Path, parent_config_dir: Path) -> Path | None:
377
377
  if not candidate.is_absolute():
378
378
  candidate = git_dir / candidate
379
379
  return git_dir if candidate.resolve(strict=True) == root else None
380
- except (OSError, RuntimeError, ValueError):
380
+ except OSError, RuntimeError, ValueError:
381
381
  logger.debug("Failed to validate submodule Git metadata")
382
382
  return None
383
383
 
@@ -451,6 +451,9 @@ def read_git_branch_via_subprocess(path: str | Path) -> str:
451
451
  ["git", "rev-parse", "--abbrev-ref", "HEAD"], # noqa: S607
452
452
  capture_output=True,
453
453
  text=True,
454
+ # Branch names are UTF-8, not in the Windows ANSI code page.
455
+ encoding="utf-8",
456
+ errors="replace",
454
457
  timeout=2,
455
458
  check=False,
456
459
  cwd=path,
@@ -653,6 +656,9 @@ def read_git_remote_url_via_subprocess(path: str | Path) -> str:
653
656
  ["git", "config", "--get", "remote.origin.url"], # noqa: S607
654
657
  capture_output=True,
655
658
  text=True,
659
+ # Local-path remotes are UTF-8, not in the Windows ANSI code page.
660
+ encoding="utf-8",
661
+ errors="replace",
656
662
  timeout=2,
657
663
  check=False,
658
664
  cwd=path,
@@ -432,7 +432,7 @@ class RepositoryBounds:
432
432
  body, separator, notes = content.partition("\n\n")
433
433
  try:
434
434
  paths = ast.literal_eval(body)
435
- except (SyntaxError, ValueError):
435
+ except SyntaxError, ValueError:
436
436
  return content
437
437
  if not isinstance(paths, list) or not all(
438
438
  isinstance(path, str) for path in paths
@@ -1311,7 +1311,7 @@ def record_model_usage_event(
1311
1311
  "model_provider": provider,
1312
1312
  },
1313
1313
  )
1314
- except (TypeError, ValueError):
1314
+ except TypeError, ValueError:
1315
1315
  logger.debug("Rejected malformed nested model usage", exc_info=True)
1316
1316
  return None
1317
1317
  return record_message_usage(
@@ -711,7 +711,7 @@ class ToolCallBuffer:
711
711
  joined = self._materialize_args()
712
712
  try:
713
713
  parsed = json.loads(joined)
714
- except (json.JSONDecodeError, RecursionError):
714
+ except json.JSONDecodeError, RecursionError:
715
715
  # `RecursionError` is caught alongside the decode error because
716
716
  # pathologically nested model output can make `json.loads` exceed
717
717
  # the interpreter recursion limit, and that is one malformed call to
@@ -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.88" # x-release-please-version
5
+ __version__ = "0.2.0" # 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."""
@@ -514,7 +514,7 @@ def _coerce_session_cost_usd(value: object) -> float:
514
514
  return 0.0
515
515
  try:
516
516
  cost_usd = float(value)
517
- except (OverflowError, ValueError):
517
+ except OverflowError, ValueError:
518
518
  logger.warning("Discarding a persisted session cost that is out of range.")
519
519
  return 0.0
520
520
  if not math.isfinite(cost_usd) or cost_usd < 0:
@@ -558,7 +558,7 @@ def _coerce_provisional_cost_delta_usd(value: object) -> float | None:
558
558
  return None
559
559
  try:
560
560
  delta_usd = float(value)
561
- except (OverflowError, ValueError):
561
+ except OverflowError, ValueError:
562
562
  logger.warning("Discarding a provisional cost delta that is out of range.")
563
563
  return None
564
564
  if not math.isfinite(delta_usd):
@@ -5642,7 +5642,7 @@ class DeepAgentsApp(App):
5642
5642
  root = await asyncio.to_thread(project_root_for, Path(self._cwd))
5643
5643
  config_path = project_hooks_path(root)
5644
5644
  has_project_hooks = await asyncio.to_thread(config_path.is_file)
5645
- except (OSError, ValueError):
5645
+ except OSError, ValueError:
5646
5646
  logger.warning(
5647
5647
  "Could not inspect project hooks after cwd switch",
5648
5648
  exc_info=True,
@@ -6687,7 +6687,7 @@ class DeepAgentsApp(App):
6687
6687
 
6688
6688
  try:
6689
6689
  messages = self.query_one("#messages", Container)
6690
- except (NoMatches, ScreenStackError):
6690
+ except NoMatches, ScreenStackError:
6691
6691
  return
6692
6692
  if not messages.is_attached:
6693
6693
  return
@@ -8881,7 +8881,7 @@ class DeepAgentsApp(App):
8881
8881
  # composes its own rack, and modals must not retune the main one.
8882
8882
  screen = chrome.screen
8883
8883
  rack = screen.get_child_by_id("textual-toastrack")
8884
- except (NoMatches, NoScreen):
8884
+ except NoMatches, NoScreen:
8885
8885
  return
8886
8886
  region = chrome.region
8887
8887
  if not region:
@@ -10857,7 +10857,7 @@ class DeepAgentsApp(App):
10857
10857
  """
10858
10858
  try:
10859
10859
  messages = self.query_one("#messages", Container)
10860
- except (NoMatches, ScreenStackError):
10860
+ except NoMatches, ScreenStackError:
10861
10861
  logger.debug(
10862
10862
  "Messages container unavailable; skipping transient status %r",
10863
10863
  content,
@@ -11505,7 +11505,7 @@ class DeepAgentsApp(App):
11505
11505
  """
11506
11506
  try:
11507
11507
  await widget.remove()
11508
- except (AttributeError, RuntimeError):
11508
+ except AttributeError, RuntimeError:
11509
11509
  logger.debug(
11510
11510
  "Failed to remove %s widget during %s",
11511
11511
  prompt_name,
@@ -14058,7 +14058,7 @@ class DeepAgentsApp(App):
14058
14058
  proc.kill()
14059
14059
  with suppress(ProcessLookupError, OSError):
14060
14060
  await proc.wait()
14061
- except (ProcessLookupError, OSError):
14061
+ except ProcessLookupError, OSError:
14062
14062
  pass
14063
14063
 
14064
14064
  async def _open_url_command(self, command: str, cmd: str) -> None:
@@ -18284,7 +18284,7 @@ class DeepAgentsApp(App):
18284
18284
 
18285
18285
  clear_caches()
18286
18286
  self._sync_status_model()
18287
- except (OSError, ValueError):
18287
+ except OSError, ValueError:
18288
18288
  logger.exception("Failed to reload configuration")
18289
18289
  await self._mount_message(
18290
18290
  AppMessage(
@@ -21023,7 +21023,7 @@ class DeepAgentsApp(App):
21023
21023
  try:
21024
21024
  resumable = await thread_exists(previous_thread_id)
21025
21025
  owner = await get_thread_agent(previous_thread_id) if resumable else None
21026
- except (sqlite3.Error, OSError):
21026
+ except sqlite3.Error, OSError:
21027
21027
  # Keep store failures visible because they are not routine suppression.
21028
21028
  logger.info(
21029
21029
  "Could not check whether previous thread %s is resumable",
@@ -22503,18 +22503,18 @@ class DeepAgentsApp(App):
22503
22503
  if self._pending_approval_widget:
22504
22504
  try:
22505
22505
  self._pending_approval_widget.action_select_reject()
22506
- except (AttributeError, RuntimeError):
22506
+ except AttributeError, RuntimeError:
22507
22507
  logger.exception("force-clear: failed to reject pending approval")
22508
22508
  if self._pending_ask_user_widget:
22509
22509
  try:
22510
22510
  self._pending_ask_user_widget.action_cancel()
22511
- except (AttributeError, RuntimeError):
22511
+ except AttributeError, RuntimeError:
22512
22512
  logger.exception("force-clear: failed to cancel pending ask-user")
22513
22513
  self._cancel_goal_proposal_worker()
22514
22514
  if self._pending_goal_review_widget:
22515
22515
  try:
22516
22516
  self._pending_goal_review_widget.action_cancel()
22517
- except (AttributeError, RuntimeError):
22517
+ except AttributeError, RuntimeError:
22518
22518
  logger.exception("force-clear: failed to cancel pending goal review")
22519
22519
  if self._shell_running and self._shell_worker:
22520
22520
  self._shell_worker.cancel()
@@ -23514,14 +23514,14 @@ class DeepAgentsApp(App):
23514
23514
  asyncio.shield(worker.wait()),
23515
23515
  timeout=_GRACEFUL_EXIT_WAIT_SECONDS,
23516
23516
  )
23517
- except (asyncio.CancelledError, WorkerCancelled):
23517
+ except asyncio.CancelledError, WorkerCancelled:
23518
23518
  # Expected: exit() cancelled the worker above, so
23519
23519
  # its cancellation handler ran to completion.
23520
23520
  logger.debug(
23521
23521
  "Agent worker cancelled cleanly before app exit",
23522
23522
  exc_info=True,
23523
23523
  )
23524
- except (TimeoutError, WorkerFailed):
23524
+ except TimeoutError, WorkerFailed:
23525
23525
  # The worker did not finish within the window, so
23526
23526
  # the in-flight run's server-side trace may be
23527
23527
  # incomplete. Surface above debug so the loss isn't
@@ -26063,7 +26063,7 @@ class DeepAgentsApp(App):
26063
26063
  if self._pending_ask_user_widget is not None:
26064
26064
  try:
26065
26065
  self._pending_ask_user_widget.action_cancel()
26066
- except (AttributeError, RuntimeError):
26066
+ except AttributeError, RuntimeError:
26067
26067
  logger.debug(
26068
26068
  "Failed to cancel pending ask-user during agent swap",
26069
26069
  exc_info=True,
@@ -27933,7 +27933,7 @@ class DeepAgentsApp(App):
27933
27933
  """
27934
27934
  try:
27935
27935
  banner = self.query_one("#welcome-banner", WelcomeBanner)
27936
- except (NoMatches, ScreenStackError):
27936
+ except NoMatches, ScreenStackError:
27937
27937
  logger.debug("Welcome banner not mounted during MCP count refresh")
27938
27938
  return
27939
27939
  banner.set_connected(
@@ -30195,7 +30195,7 @@ class DeepAgentsApp(App):
30195
30195
 
30196
30196
  msg = f"No previous threads for '{active_agent}' to resume."
30197
30197
  await self._mount_message(AppMessage(msg))
30198
- except (sqlite3.Error, OSError):
30198
+ except sqlite3.Error, OSError:
30199
30199
  # Expected thread-store failures: log for a debug session and tell
30200
30200
  # the user to retry. Mirrors the launch-time resolver's handling.
30201
30201
  logger.warning(
@@ -31037,7 +31037,7 @@ class DeepAgentsApp(App):
31037
31037
  credentials.preview_reload_from_environment,
31038
31038
  start_path=cwd,
31039
31039
  )
31040
- except (OSError, ValueError):
31040
+ except OSError, ValueError:
31041
31041
  # Environmental failures (unreadable dotenv, malformed values) are
31042
31042
  # expected and non-fatal for a best-effort preview. Programming
31043
31043
  # errors (KeyError/TypeError/ImportError) are left to propagate so a
@@ -32257,7 +32257,7 @@ class DeepAgentsApp(App):
32257
32257
  self._retry_status_widget = None
32258
32258
  try:
32259
32259
  messages = self.query_one("#messages", Container)
32260
- except (NoMatches, ScreenStackError):
32260
+ except NoMatches, ScreenStackError:
32261
32261
  messages = None
32262
32262
  if messages is not None and messages.is_attached:
32263
32263
  new_widget = AppMessage(
@@ -408,7 +408,7 @@ def _load_approval_state(path: Path) -> dict[str, object]:
408
408
  data = json.loads(path.read_text(encoding="utf-8"))
409
409
  except FileNotFoundError:
410
410
  return {}
411
- except (OSError, UnicodeDecodeError, json.JSONDecodeError):
411
+ except OSError, UnicodeDecodeError, json.JSONDecodeError:
412
412
  logger.warning(
413
413
  "Ignoring unreadable or corrupt approval state at %s; callers fail "
414
414
  "closed and the file will be overwritten on the next save",
@@ -548,7 +548,7 @@ def _validate_temp_artifact(value: object) -> AutoTempArtifact | None:
548
548
  return None
549
549
  try:
550
550
  file_path = Path(cast("str", raw_file_path))
551
- except (OSError, TypeError, ValueError):
551
+ except OSError, TypeError, ValueError:
552
552
  return None
553
553
  if not file_path.is_absolute() or not file_path.name.startswith(
554
554
  _TEMP_ARTIFACT_PREFIX
@@ -794,7 +794,7 @@ def _known_credential_values(
794
794
  and len(value) >= _MIN_SECRET_LENGTH
795
795
  ):
796
796
  values.add(value)
797
- except (OSError, RuntimeError, TypeError, ValueError):
797
+ except OSError, RuntimeError, TypeError, ValueError:
798
798
  logger.debug("Could not load stored credential values for Auto redaction")
799
799
  return tuple(sorted(values, key=len, reverse=True))
800
800
 
@@ -2033,7 +2033,7 @@ def _resolve_path(root: Path, raw: object) -> Path | None:
2033
2033
  if not candidate.is_absolute():
2034
2034
  candidate = root / candidate
2035
2035
  return candidate.resolve(strict=False)
2036
- except (OSError, RuntimeError, ValueError):
2036
+ except OSError, RuntimeError, ValueError:
2037
2037
  return None
2038
2038
 
2039
2039
 
@@ -2662,7 +2662,7 @@ class AutoModeHITLMiddleware(HumanInTheLoopMiddleware[AutoModeState, Any, Any]):
2662
2662
  if not targets_managed_artifact:
2663
2663
  try:
2664
2664
  candidate_stat = candidate.stat()
2665
- except (OSError, ValueError):
2665
+ except OSError, ValueError:
2666
2666
  pass
2667
2667
  else:
2668
2668
  targets_managed_artifact = any(
@@ -186,7 +186,7 @@ async def _open_text_stream(
186
186
  messages: list[BaseMessage],
187
187
  config: RunnableConfig,
188
188
  settings: Mapping[str, Any],
189
- ) -> tuple[AsyncGenerator[AIMessageChunk, None], str]:
189
+ ) -> tuple[AsyncGenerator[AIMessageChunk], str]:
190
190
  """Open one attempt through its first visible fragment, closing failures.
191
191
 
192
192
  Returns:
@@ -194,7 +194,7 @@ async def _open_text_stream(
194
194
  """
195
195
  # BaseChatModel.astream is an async generator, annotated as an iterator.
196
196
  stream = cast(
197
- "AsyncGenerator[AIMessageChunk, None]",
197
+ "AsyncGenerator[AIMessageChunk]",
198
198
  model.astream(messages, config=config, **settings),
199
199
  )
200
200
  try:
@@ -133,7 +133,7 @@ class _BtwStreamingResponse(Response):
133
133
  await emit("error", {"detail": "Side question timed out. Try again."})
134
134
  except ClientDisconnect:
135
135
  raise # A closed transport cannot receive an error event.
136
- except (Exception, SystemExit):
136
+ except Exception, SystemExit:
137
137
  logger.exception("Side question failed")
138
138
  await emit(
139
139
  "error",
@@ -230,7 +230,7 @@ async def btw(request: Request) -> Response:
230
230
  return JSONResponse(
231
231
  {"detail": "Side question timed out. Try again."}, status_code=504
232
232
  )
233
- except (Exception, SystemExit):
233
+ except Exception, SystemExit:
234
234
  logger.exception("Side question failed")
235
235
  return JSONResponse(
236
236
  {"detail": "Side question failed on the server; see the server log."},
@@ -11,7 +11,6 @@ import shutil
11
11
  import sqlite3
12
12
  import subprocess # noqa: S404 # Used only to probe resolved dcode Python launchers.
13
13
  import sys
14
- import warnings
15
14
  from pathlib import Path
16
15
  from typing import TYPE_CHECKING, cast
17
16
 
@@ -34,7 +33,7 @@ def _has_runtime() -> bool:
34
33
  try:
35
34
  for module, symbol in _RUNTIME_IMPORTS:
36
35
  getattr(importlib.import_module(module), symbol)
37
- except (AttributeError, ImportError):
36
+ except AttributeError, ImportError:
38
37
  return False
39
38
  return True
40
39
 
@@ -57,7 +56,7 @@ def _ensure_runtime() -> None:
57
56
  launcher = Path(executable).resolve()
58
57
  try:
59
58
  first_line = launcher.read_text(encoding="utf-8").splitlines()[0]
60
- except (OSError, UnicodeDecodeError, IndexError):
59
+ except OSError, UnicodeDecodeError, IndexError:
61
60
  first_line = ""
62
61
  if first_line.startswith("#!"):
63
62
  candidates.append(Path(first_line[2:].strip()))
@@ -84,7 +83,7 @@ def _ensure_runtime() -> None:
84
83
  check=False,
85
84
  timeout=10,
86
85
  )
87
- except (subprocess.TimeoutExpired, OSError):
86
+ except subprocess.TimeoutExpired, OSError:
88
87
  # A hung or non-executable candidate must not abort the search;
89
88
  # skip it and fall through to the next one (or the clear error below).
90
89
  continue
@@ -636,13 +635,6 @@ def main() -> None:
636
635
  raise SystemExit(msg)
637
636
 
638
637
  _ensure_runtime()
639
- warnings.filterwarnings(
640
- "ignore",
641
- message=(
642
- "Core Pydantic V1 functionality isn't compatible with Python 3.14 "
643
- "or greater.*"
644
- ),
645
- )
646
638
  collected_warnings: list[str] = []
647
639
  result: dict[str, object]
648
640
  conn = _connect_read_only(args.db)
@@ -856,7 +856,7 @@ class ServerProcess:
856
856
  # unreachable, so this is defensive. `read_text(errors="replace")`
857
857
  # cannot raise `ValueError` for decoding, so the catch stays narrow
858
858
  # in practice.
859
- except (OSError, ValueError):
859
+ except OSError, ValueError:
860
860
  logger.warning(
861
861
  "Failed to read server log file %s",
862
862
  self._log_file.name,
@@ -176,7 +176,7 @@ def _write_pyproject(work_dir: Path) -> None:
176
176
  content = f"""[project]
177
177
  name = "deepagents-server-runtime"
178
178
  version = "0.0.1"
179
- requires-python = ">=3.12"
179
+ requires-python = ">=3.14,<3.15"
180
180
  dependencies = [
181
181
  "{_runtime_package_dependency()}",
182
182
  ]
@@ -215,7 +215,7 @@ def _make_stdio_encoding_safe() -> None:
215
215
  continue
216
216
  try:
217
217
  reconfigure(errors="replace")
218
- except (ValueError, OSError, TypeError):
218
+ except ValueError, OSError, TypeError:
219
219
  # Closed, detached, or otherwise non-reconfigurable stream (a
220
220
  # duck-typed `reconfigure` with a different signature raises
221
221
  # `TypeError`) — leave it as-is. This is a best-effort hardening