deepagents-code 0.1.65__tar.gz → 0.1.66__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 (636) hide show
  1. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/CHANGELOG.md +20 -0
  2. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/Makefile +1 -0
  3. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/PKG-INFO +16 -16
  4. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_build_info.py +1 -1
  5. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_cli_context.py +6 -0
  6. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_constants.py +1 -1
  7. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_env_vars.py +9 -0
  8. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_server_config.py +44 -0
  9. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_version.py +1 -1
  10. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/agent.py +59 -22
  11. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/app.py +61 -5
  12. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/auto_mode.py +168 -24
  13. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/client/launch/server_manager.py +19 -1
  14. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/client/non_interactive.py +1 -0
  15. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/client/remote_client.py +77 -3
  16. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/config.py +47 -0
  17. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/cost_tracking.py +1 -1
  18. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/goal_rubric.py +28 -0
  19. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/main.py +19 -7
  20. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/model_retry.py +3 -1
  21. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/offload_api.py +97 -6
  22. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/offload_middleware.py +11 -1
  23. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/plugins/discovery.py +13 -10
  24. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/plugins/manifest.py +47 -22
  25. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/plugins/marketplace.py +69 -19
  26. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/reliable_rubric.py +11 -49
  27. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/server_graph.py +95 -6
  28. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/approval.py +42 -5
  29. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/welcome.py +1 -1
  30. deepagents_code-0.1.66/deepagents_code/workspace.py +385 -0
  31. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/pyproject.toml +12 -12
  32. deepagents_code-0.1.66/scripts/check_process_cwd.py +432 -0
  33. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -48
  34. deepagents_code-0.1.66/tests/unit_tests/client/commands/test_extras.py +58 -0
  35. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/client/commands/test_mcp.py +0 -120
  36. deepagents_code-0.1.66/tests/unit_tests/client/commands/test_tools.py +231 -0
  37. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/hooks/models/test_models.py +4 -191
  38. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_client_lifecycle.py +2 -56
  39. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_configuration.py +1 -159
  40. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_engine.py +1 -654
  41. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_execution.py +0 -170
  42. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_manager.py +1 -45
  43. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_presenter.py +0 -13
  44. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_server_lifecycle.py +1 -466
  45. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_transcript.py +126 -297
  46. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/plugins/test_marketplace.py +184 -161
  47. deepagents_code-0.1.66/tests/unit_tests/plugins/test_plugin_hooks.py +5 -0
  48. deepagents_code-0.1.66/tests/unit_tests/plugins/test_plugins_p0.py +595 -0
  49. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/skills/test_commands.py +1 -348
  50. deepagents_code-0.1.66/tests/unit_tests/skills/test_load.py +125 -0
  51. deepagents_code-0.1.66/tests/unit_tests/skills/test_merge.py +75 -0
  52. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/skills/test_thread_inspector.py +0 -180
  53. deepagents_code-0.1.66/tests/unit_tests/test__tool_stream.py +350 -0
  54. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_agent.py +277 -1997
  55. deepagents_code-0.1.66/tests/unit_tests/test_agent_friendly.py +262 -0
  56. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_app.py +719 -16399
  57. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_approval_mode.py +0 -197
  58. deepagents_code-0.1.66/tests/unit_tests/test_args.py +347 -0
  59. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_ask_user_middleware.py +2 -400
  60. deepagents_code-0.1.66/tests/unit_tests/test_ask_user_types.py +163 -0
  61. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_auto_mode.py +589 -1718
  62. deepagents_code-0.1.66/tests/unit_tests/test_charset.py +175 -0
  63. deepagents_code-0.1.66/tests/unit_tests/test_cli_provider.py +85 -0
  64. deepagents_code-0.1.66/tests/unit_tests/test_clipboard.py +244 -0
  65. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_cold_cache.py +1 -603
  66. deepagents_code-0.1.66/tests/unit_tests/test_command_registry.py +128 -0
  67. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_compact_tool.py +51 -319
  68. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_config.py +52 -3526
  69. deepagents_code-0.1.66/tests/unit_tests/test_config_manifest.py +2028 -0
  70. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_configurable_model.py +50 -1018
  71. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_configuration.py +164 -1364
  72. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_configuration_resolver.py +2 -654
  73. deepagents_code-0.1.66/tests/unit_tests/test_context_doctor.py +89 -0
  74. deepagents_code-0.1.66/tests/unit_tests/test_cost_tracking.py +1643 -0
  75. deepagents_code-0.1.66/tests/unit_tests/test_cursor_style.py +26 -0
  76. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_debug.py +98 -237
  77. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_debug_buffer.py +1 -173
  78. deepagents_code-0.1.66/tests/unit_tests/test_debug_console.py +504 -0
  79. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_dep_floor_check.py +0 -66
  80. deepagents_code-0.1.66/tests/unit_tests/test_diff_utils.py +42 -0
  81. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_doctor.py +0 -302
  82. deepagents_code-0.1.66/tests/unit_tests/test_editor.py +45 -0
  83. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_end_to_end.py +0 -67
  84. deepagents_code-0.1.66/tests/unit_tests/test_env_vars.py +30 -0
  85. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_event_bus.py +0 -141
  86. deepagents_code-0.1.66/tests/unit_tests/test_exception_handling.py +83 -0
  87. deepagents_code-0.1.66/tests/unit_tests/test_extension_api.py +24 -0
  88. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_extension_cli_trust.py +1 -43
  89. deepagents_code-0.1.66/tests/unit_tests/test_extension_discovery.py +74 -0
  90. deepagents_code-0.1.66/tests/unit_tests/test_extension_host_runtime.py +52 -0
  91. deepagents_code-0.1.66/tests/unit_tests/test_extension_hosting.py +73 -0
  92. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_extension_runtime.py +0 -135
  93. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_extras_info.py +82 -376
  94. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_file_ops.py +1 -460
  95. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_formatting.py +3 -109
  96. deepagents_code-0.1.66/tests/unit_tests/test_git.py +346 -0
  97. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_glm_5p2_profile.py +0 -77
  98. deepagents_code-0.1.66/tests/unit_tests/test_goal_criteria_client.py +246 -0
  99. deepagents_code-0.1.66/tests/unit_tests/test_goal_rubric.py +1198 -0
  100. deepagents_code-0.1.66/tests/unit_tests/test_goal_state_limits.py +116 -0
  101. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_goal_state_notice.py +0 -89
  102. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_goal_state_persistence.py +0 -108
  103. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_goal_tools.py +4 -375
  104. deepagents_code-0.1.66/tests/unit_tests/test_hooks.py +176 -0
  105. deepagents_code-0.1.66/tests/unit_tests/test_imports.py +1 -0
  106. deepagents_code-0.1.66/tests/unit_tests/test_input_parsing.py +282 -0
  107. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_install_command.py +30 -690
  108. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_install_script.py +344 -3006
  109. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_invocation.py +0 -18
  110. deepagents_code-0.1.66/tests/unit_tests/test_iterm_cursor_guide.py +95 -0
  111. deepagents_code-0.1.66/tests/unit_tests/test_json_types.py +1 -0
  112. deepagents_code-0.1.66/tests/unit_tests/test_local_context.py +859 -0
  113. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_main.py +117 -1653
  114. deepagents_code-0.1.66/tests/unit_tests/test_main_acp_mode.py +124 -0
  115. deepagents_code-0.1.66/tests/unit_tests/test_main_args.py +1976 -0
  116. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_managed_tools.py +1 -573
  117. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_mcp_auth.py +1 -89
  118. deepagents_code-0.1.66/tests/unit_tests/test_mcp_config.py +56 -0
  119. deepagents_code-0.1.66/tests/unit_tests/test_mcp_disabled.py +95 -0
  120. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_mcp_login_service.py +0 -107
  121. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_mcp_tools.py +125 -1191
  122. deepagents_code-0.1.66/tests/unit_tests/test_media_utils.py +492 -0
  123. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_memory_guard.py +0 -115
  124. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_model_config.py +498 -5269
  125. deepagents_code-0.1.66/tests/unit_tests/test_model_retry.py +837 -0
  126. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_model_switch.py +1 -738
  127. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_non_interactive.py +879 -1943
  128. deepagents_code-0.1.66/tests/unit_tests/test_notifications.py +11 -0
  129. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_offload.py +2 -508
  130. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_offload_api.py +168 -251
  131. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_onboarding.py +2 -176
  132. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_openai_codex_integration.py +0 -21
  133. deepagents_code-0.1.66/tests/unit_tests/test_output.py +7 -0
  134. deepagents_code-0.1.66/tests/unit_tests/test_paths.py +637 -0
  135. deepagents_code-0.1.66/tests/unit_tests/test_process_cwd_check.py +182 -0
  136. deepagents_code-0.1.66/tests/unit_tests/test_reasoning_effort.py +176 -0
  137. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_reliable_rubric.py +262 -470
  138. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_reload.py +0 -898
  139. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_remote_client.py +87 -551
  140. deepagents_code-0.1.66/tests/unit_tests/test_repository_bounds.py +104 -0
  141. deepagents_code-0.1.66/tests/unit_tests/test_resume_compaction_recovery.py +3 -0
  142. deepagents_code-0.1.66/tests/unit_tests/test_resume_state.py +293 -0
  143. deepagents_code-0.1.66/tests/unit_tests/test_rubric_cli.py +40 -0
  144. deepagents_code-0.1.66/tests/unit_tests/test_sandbox_factory.py +540 -0
  145. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_sandbox_registry.py +0 -54
  146. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_server.py +0 -338
  147. deepagents_code-0.1.66/tests/unit_tests/test_server_config.py +239 -0
  148. deepagents_code-0.1.66/tests/unit_tests/test_server_graph.py +404 -0
  149. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_server_helpers.py +1 -81
  150. deepagents_code-0.1.66/tests/unit_tests/test_server_manager.py +355 -0
  151. deepagents_code-0.1.66/tests/unit_tests/test_session_stats.py +573 -0
  152. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_sessions.py +1 -1211
  153. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_skill_invocation.py +0 -456
  154. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_startup_fast_paths.py +5 -106
  155. deepagents_code-0.1.66/tests/unit_tests/test_subagents.py +210 -0
  156. deepagents_code-0.1.66/tests/unit_tests/test_terminal_capabilities.py +43 -0
  157. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_terminal_escape.py +0 -40
  158. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_terminal_stderr.py +0 -24
  159. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_textual_patches.py +0 -171
  160. deepagents_code-0.1.66/tests/unit_tests/test_theme.py +1182 -0
  161. deepagents_code-0.1.66/tests/unit_tests/test_threads_resume.py +282 -0
  162. deepagents_code-0.1.66/tests/unit_tests/test_tool_catalog.py +340 -0
  163. deepagents_code-0.1.66/tests/unit_tests/test_tool_display.py +303 -0
  164. deepagents_code-0.1.66/tests/unit_tests/test_tracing_replicas.py +28 -0
  165. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_transcript_virtualization.py +0 -16
  166. deepagents_code-0.1.66/tests/unit_tests/test_ui.py +11 -0
  167. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_uninstall_command.py +1 -57
  168. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_update_check.py +741 -4130
  169. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_version.py +5 -886
  170. deepagents_code-0.1.66/tests/unit_tests/test_workspace.py +159 -0
  171. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tools/test_current_thread.py +0 -7
  172. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tools/test_fetch_url.py +0 -73
  173. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/modals/plugin_manager/test_structure.py +0 -210
  174. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/modals/test_cold_cache.py +0 -95
  175. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/modals/test_model_switch.py +0 -14
  176. deepagents_code-0.1.66/tests/unit_tests/tui/modals/test_prompt_clipboard.py +60 -0
  177. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/test_textual_adapter.py +5025 -9739
  178. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_agent_selector.py +230 -0
  179. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_approval.py +575 -0
  180. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_ask_user.py +621 -0
  181. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_auto_mode_notice.py +22 -0
  182. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_autocomplete.py +604 -0
  183. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_chat_input.py +1897 -0
  184. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_cwd_switch.py +0 -86
  185. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_diff.py +342 -0
  186. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_goal_review.py +270 -0
  187. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_history.py +192 -0
  188. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_inline_prompt.py +0 -87
  189. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_install_confirm.py +122 -0
  190. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_launch_init.py +262 -0
  191. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_links.py +27 -170
  192. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_loading.py +62 -0
  193. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_mcp_login_modal.py +0 -47
  194. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_mcp_reconnect.py +0 -77
  195. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_mcp_viewer.py +1146 -0
  196. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_message_store.py +390 -0
  197. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_messages.py +86 -3201
  198. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_model_selector.py +1726 -0
  199. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_notification_center.py +209 -0
  200. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_notification_detail.py +54 -0
  201. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_notification_settings.py +0 -143
  202. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_restart_prompt.py +62 -0
  203. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_startup_tip.py +59 -0
  204. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_status.py +545 -0
  205. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_subagent_panel.py +263 -0
  206. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_thread_agent_switch.py +0 -55
  207. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_thread_selector.py +2436 -0
  208. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_tool_renderers.py +223 -0
  209. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_update_available.py +50 -0
  210. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_update_confirm.py +0 -42
  211. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_update_progress.py +1 -139
  212. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_welcome.py +423 -0
  213. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/uv.lock +50 -50
  214. deepagents_code-0.1.65/tests/integration_tests/test_goal_criteria_remote.py +0 -117
  215. deepagents_code-0.1.65/tests/unit_tests/client/commands/test_extras.py +0 -206
  216. deepagents_code-0.1.65/tests/unit_tests/client/commands/test_tools.py +0 -599
  217. deepagents_code-0.1.65/tests/unit_tests/plugins/test_plugin_hooks.py +0 -150
  218. deepagents_code-0.1.65/tests/unit_tests/plugins/test_plugins_p0.py +0 -1845
  219. deepagents_code-0.1.65/tests/unit_tests/plugins/test_store.py +0 -68
  220. deepagents_code-0.1.65/tests/unit_tests/skills/test_load.py +0 -934
  221. deepagents_code-0.1.65/tests/unit_tests/skills/test_merge.py +0 -420
  222. deepagents_code-0.1.65/tests/unit_tests/test__tool_stream.py +0 -737
  223. deepagents_code-0.1.65/tests/unit_tests/test_agent_friendly.py +0 -610
  224. deepagents_code-0.1.65/tests/unit_tests/test_args.py +0 -1044
  225. deepagents_code-0.1.65/tests/unit_tests/test_ask_user_types.py +0 -473
  226. deepagents_code-0.1.65/tests/unit_tests/test_charset.py +0 -371
  227. deepagents_code-0.1.65/tests/unit_tests/test_cli_provider.py +0 -351
  228. deepagents_code-0.1.65/tests/unit_tests/test_clipboard.py +0 -600
  229. deepagents_code-0.1.65/tests/unit_tests/test_command_registry.py +0 -392
  230. deepagents_code-0.1.65/tests/unit_tests/test_config_manifest.py +0 -4592
  231. deepagents_code-0.1.65/tests/unit_tests/test_context_doctor.py +0 -180
  232. deepagents_code-0.1.65/tests/unit_tests/test_cost_tracking.py +0 -4008
  233. deepagents_code-0.1.65/tests/unit_tests/test_cursor_blink.py +0 -95
  234. deepagents_code-0.1.65/tests/unit_tests/test_cursor_style.py +0 -56
  235. deepagents_code-0.1.65/tests/unit_tests/test_debug_console.py +0 -2170
  236. deepagents_code-0.1.65/tests/unit_tests/test_diff_utils.py +0 -242
  237. deepagents_code-0.1.65/tests/unit_tests/test_editor.py +0 -347
  238. deepagents_code-0.1.65/tests/unit_tests/test_env_vars.py +0 -135
  239. deepagents_code-0.1.65/tests/unit_tests/test_exception_handling.py +0 -241
  240. deepagents_code-0.1.65/tests/unit_tests/test_extension_api.py +0 -198
  241. deepagents_code-0.1.65/tests/unit_tests/test_extension_discovery.py +0 -206
  242. deepagents_code-0.1.65/tests/unit_tests/test_extension_host_runtime.py +0 -117
  243. deepagents_code-0.1.65/tests/unit_tests/test_extension_hosting.py +0 -184
  244. deepagents_code-0.1.65/tests/unit_tests/test_git.py +0 -879
  245. deepagents_code-0.1.65/tests/unit_tests/test_goal_criteria_client.py +0 -521
  246. deepagents_code-0.1.65/tests/unit_tests/test_goal_rubric.py +0 -2663
  247. deepagents_code-0.1.65/tests/unit_tests/test_goal_state_limits.py +0 -288
  248. deepagents_code-0.1.65/tests/unit_tests/test_hooks.py +0 -600
  249. deepagents_code-0.1.65/tests/unit_tests/test_imports.py +0 -8
  250. deepagents_code-0.1.65/tests/unit_tests/test_input_parsing.py +0 -655
  251. deepagents_code-0.1.65/tests/unit_tests/test_iterm_cursor_guide.py +0 -256
  252. deepagents_code-0.1.65/tests/unit_tests/test_json_types.py +0 -35
  253. deepagents_code-0.1.65/tests/unit_tests/test_local_context.py +0 -2134
  254. deepagents_code-0.1.65/tests/unit_tests/test_main_acp_mode.py +0 -670
  255. deepagents_code-0.1.65/tests/unit_tests/test_main_args.py +0 -4385
  256. deepagents_code-0.1.65/tests/unit_tests/test_mcp_config.py +0 -214
  257. deepagents_code-0.1.65/tests/unit_tests/test_mcp_disabled.py +0 -230
  258. deepagents_code-0.1.65/tests/unit_tests/test_media_utils.py +0 -1121
  259. deepagents_code-0.1.65/tests/unit_tests/test_middleware_trace_policy.py +0 -55
  260. deepagents_code-0.1.65/tests/unit_tests/test_model_retry.py +0 -1794
  261. deepagents_code-0.1.65/tests/unit_tests/test_notifications.py +0 -198
  262. deepagents_code-0.1.65/tests/unit_tests/test_output.py +0 -62
  263. deepagents_code-0.1.65/tests/unit_tests/test_paths.py +0 -1520
  264. deepagents_code-0.1.65/tests/unit_tests/test_reasoning_effort.py +0 -1340
  265. deepagents_code-0.1.65/tests/unit_tests/test_repository_bounds.py +0 -240
  266. deepagents_code-0.1.65/tests/unit_tests/test_resume_compaction_recovery.py +0 -75
  267. deepagents_code-0.1.65/tests/unit_tests/test_resume_state.py +0 -814
  268. deepagents_code-0.1.65/tests/unit_tests/test_rubric_cli.py +0 -363
  269. deepagents_code-0.1.65/tests/unit_tests/test_sandbox_factory.py +0 -1423
  270. deepagents_code-0.1.65/tests/unit_tests/test_server_config.py +0 -604
  271. deepagents_code-0.1.65/tests/unit_tests/test_server_graph.py +0 -718
  272. deepagents_code-0.1.65/tests/unit_tests/test_server_manager.py +0 -838
  273. deepagents_code-0.1.65/tests/unit_tests/test_session_stats.py +0 -1614
  274. deepagents_code-0.1.65/tests/unit_tests/test_startup_blocking.py +0 -72
  275. deepagents_code-0.1.65/tests/unit_tests/test_subagents.py +0 -731
  276. deepagents_code-0.1.65/tests/unit_tests/test_terminal_capabilities.py +0 -203
  277. deepagents_code-0.1.65/tests/unit_tests/test_theme.py +0 -3117
  278. deepagents_code-0.1.65/tests/unit_tests/test_threads_resume.py +0 -577
  279. deepagents_code-0.1.65/tests/unit_tests/test_tool_catalog.py +0 -755
  280. deepagents_code-0.1.65/tests/unit_tests/test_tool_display.py +0 -594
  281. deepagents_code-0.1.65/tests/unit_tests/test_tracing_replicas.py +0 -70
  282. deepagents_code-0.1.65/tests/unit_tests/test_ui.py +0 -72
  283. deepagents_code-0.1.65/tests/unit_tests/tui/modals/test_prompt_clipboard.py +0 -582
  284. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_agent_selector.py +0 -487
  285. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_approval.py +0 -1211
  286. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_ask_user.py +0 -2946
  287. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_auto_mode_notice.py +0 -91
  288. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_autocomplete.py +0 -1420
  289. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_chat_input.py +0 -8710
  290. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_diff.py +0 -1109
  291. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_goal_review.py +0 -605
  292. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_history.py +0 -546
  293. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_install_confirm.py +0 -395
  294. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_launch_init.py +0 -682
  295. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_loading.py +0 -161
  296. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_mcp_viewer.py +0 -2417
  297. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_message_store.py +0 -1662
  298. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_model_selector.py +0 -4597
  299. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_notification_center.py +0 -585
  300. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_notification_detail.py +0 -133
  301. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_restart_prompt.py +0 -127
  302. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_startup_tip.py +0 -159
  303. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_status.py +0 -1762
  304. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_subagent_panel.py +0 -590
  305. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_thread_selector.py +0 -5883
  306. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_tool_renderers.py +0 -642
  307. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_update_available.py +0 -185
  308. deepagents_code-0.1.65/tests/unit_tests/tui/widgets/test_welcome.py +0 -1113
  309. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/.gitignore +0 -0
  310. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/AGENTS.md +0 -0
  311. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/ARCHITECTURE.md +0 -0
  312. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/COMMANDS.md +0 -0
  313. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/DEVELOPMENT.md +0 -0
  314. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/EXTENSIONS.md +0 -0
  315. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/HOOKS.md +0 -0
  316. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/LICENSE +0 -0
  317. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/PRICING.md +0 -0
  318. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/README.md +0 -0
  319. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/THREAT_MODEL.md +0 -0
  320. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/__init__.py +0 -0
  321. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/__main__.py +0 -0
  322. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_ask_user_types.py +0 -0
  323. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_content_blocks.py +0 -0
  324. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_debug.py +0 -0
  325. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_debug_buffer.py +0 -0
  326. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_dep_floor_check.py +0 -0
  327. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_fake_models.py +0 -0
  328. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_git.py +0 -0
  329. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_glm_5p2_profile.py +0 -0
  330. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_home_error.py +0 -0
  331. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_invocation.py +0 -0
  332. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_markdown.py +0 -0
  333. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_paths.py +0 -0
  334. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_repository_bounds.py +0 -0
  335. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_reserved_names.py +0 -0
  336. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_session_stats.py +0 -0
  337. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_startup_error.py +0 -0
  338. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_terminal_stderr.py +0 -0
  339. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_testing_models.py +0 -0
  340. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_textual_patches.py +0 -0
  341. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_tool_stream.py +0 -0
  342. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/_tracing.py +0 -0
  343. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/acp.py +0 -0
  344. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/app.tcss +0 -0
  345. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/approval_mode.py +0 -0
  346. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/ask_user.py +0 -0
  347. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/auth_display.py +0 -0
  348. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/auth_store.py +0 -0
  349. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/built_in_skills/__init__.py +0 -0
  350. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/built_in_skills/deepagents-thread-inspector/SKILL.md +0 -0
  351. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/built_in_skills/deepagents-thread-inspector/scripts/inspect_sessions.py +0 -0
  352. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
  353. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
  354. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  355. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  356. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/bundled_prices.README.md +0 -0
  357. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/bundled_prices.json +0 -0
  358. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/client/__init__.py +0 -0
  359. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/client/commands/__init__.py +0 -0
  360. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/client/commands/auth.py +0 -0
  361. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/client/commands/config.py +0 -0
  362. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/client/commands/extras.py +0 -0
  363. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/client/commands/mcp.py +0 -0
  364. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/client/commands/tools.py +0 -0
  365. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/client/launch/__init__.py +0 -0
  366. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/client/launch/server.py +0 -0
  367. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/clipboard.py +0 -0
  368. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/cold_cache.py +0 -0
  369. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/command_registry.py +0 -0
  370. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/config_manifest.py +0 -0
  371. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/configurable_model.py +0 -0
  372. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/configuration/__init__.py +0 -0
  373. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/configuration/interpreter.py +0 -0
  374. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/configuration/paths.py +0 -0
  375. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/configuration/provider.py +0 -0
  376. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/configuration/providers.py +0 -0
  377. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/configuration/resolver.py +0 -0
  378. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/configuration/service.py +0 -0
  379. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/configuration/theme_resolution.py +0 -0
  380. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/configuration/types.py +0 -0
  381. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/configuration/writer.py +0 -0
  382. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/context_doctor.py +0 -0
  383. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/default_agent_prompt.md +0 -0
  384. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/diff_utils.py +0 -0
  385. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/doctor.py +0 -0
  386. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/editor.py +0 -0
  387. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/event_bus.py +0 -0
  388. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/extensions/__init__.py +0 -0
  389. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/extensions/api.py +0 -0
  390. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/extensions/discovery.py +0 -0
  391. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/extensions/hosting.py +0 -0
  392. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/extensions/loader.py +0 -0
  393. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/extensions/registry.py +0 -0
  394. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/extensions/runtime.py +0 -0
  395. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/extensions/settings.py +0 -0
  396. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/extensions/trust.py +0 -0
  397. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/extras_info.py +0 -0
  398. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/file_ops.py +0 -0
  399. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/formatting.py +0 -0
  400. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/goal_state_limits.py +0 -0
  401. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/goal_state_notice.py +0 -0
  402. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/goal_tools.py +0 -0
  403. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/__init__.py +0 -0
  404. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/capabilities.py +0 -0
  405. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/client.py +0 -0
  406. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/client_lifecycle.py +0 -0
  407. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/context.py +0 -0
  408. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/engine.py +0 -0
  409. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/env.py +0 -0
  410. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/envelope.py +0 -0
  411. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/interrupt.py +0 -0
  412. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/legacy.py +0 -0
  413. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/loading.py +0 -0
  414. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/manager.py +0 -0
  415. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/migration.py +0 -0
  416. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/models/__init__.py +0 -0
  417. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/models/adapters.py +0 -0
  418. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/models/config.py +0 -0
  419. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/models/domain.py +0 -0
  420. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/models/transport.py +0 -0
  421. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/models/wire.py +0 -0
  422. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/permissions.py +0 -0
  423. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/presenter.py +0 -0
  424. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/projection.py +0 -0
  425. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/reducer.py +0 -0
  426. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/runner.py +0 -0
  427. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/runtime.py +0 -0
  428. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/server_middleware.py +0 -0
  429. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/snapshot.py +0 -0
  430. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/tools.py +0 -0
  431. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/transcript.py +0 -0
  432. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/trust.py +0 -0
  433. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/hooks/validate_terminal_sequence.py +0 -0
  434. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/input.py +0 -0
  435. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/integrations/__init__.py +0 -0
  436. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/integrations/openai_codex.py +0 -0
  437. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/integrations/sandbox_config.py +0 -0
  438. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/integrations/sandbox_factory.py +0 -0
  439. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/integrations/sandbox_provider.py +0 -0
  440. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/integrations/sandbox_registry.py +0 -0
  441. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/iterm_cursor_guide.py +0 -0
  442. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/json_types.py +0 -0
  443. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/local_context.py +0 -0
  444. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/managed_tools.py +0 -0
  445. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/mcp_auth.py +0 -0
  446. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/mcp_config.py +0 -0
  447. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/mcp_disabled.py +0 -0
  448. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/mcp_login_service.py +0 -0
  449. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/mcp_oauth_ui.py +0 -0
  450. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/mcp_providers/__init__.py +0 -0
  451. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/mcp_providers/_registry.py +0 -0
  452. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/mcp_providers/base.py +0 -0
  453. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/mcp_providers/github.py +0 -0
  454. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/mcp_providers/slack.py +0 -0
  455. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/mcp_tools.py +0 -0
  456. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/media_utils.py +0 -0
  457. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/memory_guard.py +0 -0
  458. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/model_config.py +0 -0
  459. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/notifications.py +0 -0
  460. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/offload.py +0 -0
  461. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/onboarding.py +0 -0
  462. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/output.py +0 -0
  463. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/paste_collapse.py +0 -0
  464. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/plugins/__init__.py +0 -0
  465. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/plugins/_json.py +0 -0
  466. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/plugins/adapters/__init__.py +0 -0
  467. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/plugins/adapters/hooks.py +0 -0
  468. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/plugins/adapters/mcp.py +0 -0
  469. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/plugins/adapters/skills.py +0 -0
  470. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/plugins/adapters/skills_middleware.py +0 -0
  471. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/plugins/commands_cli.py +0 -0
  472. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/plugins/models.py +0 -0
  473. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/plugins/store.py +0 -0
  474. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/plugins/substitution.py +0 -0
  475. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/project_utils.py +0 -0
  476. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/py.typed +0 -0
  477. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/reasoning_effort.py +0 -0
  478. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/resume_state.py +0 -0
  479. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/sessions.py +0 -0
  480. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/skills/__init__.py +0 -0
  481. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/skills/commands.py +0 -0
  482. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/skills/invocation.py +0 -0
  483. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/skills/load.py +0 -0
  484. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/skills/merge.py +0 -0
  485. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/skills/trust.py +0 -0
  486. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/state_migration.py +0 -0
  487. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/subagents.py +0 -0
  488. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/system_prompt.md +0 -0
  489. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/terminal_capabilities.py +0 -0
  490. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/terminal_escape.py +0 -0
  491. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/theme.py +0 -0
  492. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tool_catalog.py +0 -0
  493. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tool_display.py +0 -0
  494. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tools.py +0 -0
  495. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/__init__.py +0 -0
  496. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/key_hints.py +0 -0
  497. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/modals/__init__.py +0 -0
  498. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/modals/cold_cache.py +0 -0
  499. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/modals/model_switch.py +0 -0
  500. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/modals/plugin_manager/__init__.py +0 -0
  501. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/modals/plugin_manager/content.py +0 -0
  502. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/modals/plugin_manager/models.py +0 -0
  503. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/modals/plugin_manager/plugin_manager.tcss +0 -0
  504. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/modals/plugin_manager/state.py +0 -0
  505. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/modals/plugin_manager/tabs.py +0 -0
  506. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/modals/prompt_clipboard.py +0 -0
  507. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/modals/prompt_clipboard.tcss +0 -0
  508. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/modals/resume_compact.py +0 -0
  509. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/screens/__init__.py +0 -0
  510. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/textual_adapter.py +0 -0
  511. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/__init__.py +0 -0
  512. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/_copy_spans.py +0 -0
  513. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/_inline_prompt.py +0 -0
  514. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/_js_eval_display.py +0 -0
  515. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/_links.py +0 -0
  516. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/_paste_textarea.py +0 -0
  517. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/agent_selector.py +0 -0
  518. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/ask_user.py +0 -0
  519. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/auth.py +0 -0
  520. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/auto_mode_notice.py +0 -0
  521. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/autocomplete.py +0 -0
  522. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/chat_input.py +0 -0
  523. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/codex_auth.py +0 -0
  524. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/context_usage.py +0 -0
  525. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/cwd_switch.py +0 -0
  526. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/debug_console.py +0 -0
  527. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/diff.py +0 -0
  528. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/effort_selector.py +0 -0
  529. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/goal_review.py +0 -0
  530. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/goal_status.py +0 -0
  531. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/history.py +0 -0
  532. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/install_confirm.py +0 -0
  533. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/launch_init.py +0 -0
  534. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/loading.py +0 -0
  535. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/mcp_login.py +0 -0
  536. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/mcp_reconnect.py +0 -0
  537. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/mcp_viewer.py +0 -0
  538. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/message_store.py +0 -0
  539. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/messages.py +0 -0
  540. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/model_selector.py +0 -0
  541. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/notification_center.py +0 -0
  542. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/notification_detail.py +0 -0
  543. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/notification_settings.py +0 -0
  544. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/prompt_search.py +0 -0
  545. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/restart_prompt.py +0 -0
  546. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/skill_trust.py +0 -0
  547. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/startup_tip.py +0 -0
  548. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/status.py +0 -0
  549. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/subagent_panel.py +0 -0
  550. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/theme_selector.py +0 -0
  551. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/thread_agent_switch.py +0 -0
  552. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/thread_selector.py +0 -0
  553. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/tool_renderers.py +0 -0
  554. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/tool_widgets.py +0 -0
  555. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/update_available.py +0 -0
  556. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/update_confirm.py +0 -0
  557. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/update_progress.py +0 -0
  558. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/yolo_mode_notice.py +0 -0
  559. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/ui.py +0 -0
  560. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/unicode_security.py +0 -0
  561. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/deepagents_code/update_check.py +0 -0
  562. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/examples/extensions/memory_store.py +0 -0
  563. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/examples/skills/arxiv-search/SKILL.md +0 -0
  564. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  565. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/examples/skills/langgraph-docs/SKILL.md +0 -0
  566. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/examples/skills/skill-creator/SKILL.md +0 -0
  567. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  568. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  569. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/examples/skills/web-research/SKILL.md +0 -0
  570. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/hatch_build.py +0 -0
  571. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/images/model-stream-retry.png +0 -0
  572. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/images/tui.png +0 -0
  573. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/scripts/check_imports.py +0 -0
  574. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/scripts/debug_server.sh +0 -0
  575. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/scripts/generate_commands_catalog.py +0 -0
  576. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/scripts/install.sh +0 -0
  577. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/README.md +0 -0
  578. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/integration_tests/__init__.py +0 -0
  579. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/integration_tests/benchmarks/__init__.py +0 -0
  580. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
  581. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/integration_tests/benchmarks/test_local_context_benchmarks.py +0 -0
  582. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/integration_tests/conftest.py +0 -0
  583. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/integration_tests/test_acp_mode.py +0 -0
  584. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/integration_tests/test_auto_approve_remote.py +0 -0
  585. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/integration_tests/test_compact_resume.py +0 -0
  586. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/integration_tests/test_offload_server_side.py +0 -0
  587. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/integration_tests/test_pending_work_recovery.py +0 -0
  588. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/integration_tests/test_sandbox_factory.py +0 -0
  589. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/integration_tests/test_sandbox_operations.py +0 -0
  590. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/__init__.py +0 -0
  591. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/client/__init__.py +0 -0
  592. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/client/commands/__init__.py +0 -0
  593. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/client/commands/test_auth.py +0 -0
  594. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/conftest.py +0 -0
  595. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/data/coding_agent_v1_validator.json +0 -0
  596. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/hooks/__init__.py +0 -0
  597. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/hooks/models/__init__.py +0 -0
  598. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_trust.py +0 -0
  599. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/plugins/__init__.py +0 -0
  600. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/skills/__init__.py +0 -0
  601. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/skills/test_skill_trust.py +0 -0
  602. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/skills/test_skills_json.py +0 -0
  603. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/smoke_tests/__init__.py +0 -0
  604. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/smoke_tests/conftest.py +0 -0
  605. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/smoke_tests/snapshots/system_prompt_interactive_local.md +0 -0
  606. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/smoke_tests/test_system_prompt.py +0 -0
  607. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_acp.py +0 -0
  608. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_auth_display.py +0 -0
  609. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_auth_store.py +0 -0
  610. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_auth_web_search_restart.py +0 -0
  611. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_coding_agent_metadata.py +0 -0
  612. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_configuration_resolution.py +0 -0
  613. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_extension_config_manifest.py +0 -0
  614. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_extension_display.py +0 -0
  615. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_hatch_build.py +0 -0
  616. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
  617. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_sandbox_config.py +0 -0
  618. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_sandbox_provider.py +0 -0
  619. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_shell_allow_list.py +0 -0
  620. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_state_migration.py +0 -0
  621. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
  622. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_tracing.py +0 -0
  623. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/test_unicode_security.py +0 -0
  624. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tools/__init__.py +0 -0
  625. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tools/test_tool_arg_schemas.py +0 -0
  626. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/__init__.py +0 -0
  627. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/modals/__init__.py +0 -0
  628. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/modals/plugin_manager/__init__.py +0 -0
  629. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/test_key_hints.py +0 -0
  630. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/test_modal_footer_layout.py +0 -0
  631. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/test_subagent_stream.py +5 -5
  632. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/__init__.py +0 -0
  633. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_auth_widgets.py +0 -0
  634. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_copy_spans.py +15 -15
  635. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_prompt_search.py +0 -0
  636. {deepagents_code-0.1.65 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_skill_trust_screen.py +0 -0
@@ -2,6 +2,26 @@
2
2
 
3
3
  # Deep Agents Code Changelog
4
4
 
5
+ ## [0.1.66](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.65...deepagents-code==0.1.66) (2026-09-03)
6
+
7
+ ### Features
8
+
9
+ - Defaulted general-purpose subagents to fork mode ([#6024](https://github.com/langchain-ai/deepagents/issues/6024)).
10
+ - Defaulted the Auto classifier by provider ([#6039](https://github.com/langchain-ai/deepagents/issues/6039)).
11
+ - Added support for binding conversations to a recorded workspace ([#5946](https://github.com/langchain-ai/deepagents/issues/5946)).
12
+ - Added tracing for the effective approval mode ([#5972](https://github.com/langchain-ai/deepagents/issues/5972)).
13
+
14
+ ### Bug Fixes
15
+
16
+ - Fixed request-time working directory binding and now show the bound workspace in shell approvals ([#5968](https://github.com/langchain-ai/deepagents/issues/5968), [#5966](https://github.com/langchain-ai/deepagents/issues/5966)).
17
+ - Fixed marketplace plugin installs to accept bare relative source paths and identify the rejected source path when validation fails ([#5959](https://github.com/langchain-ai/deepagents/issues/5959), [#5960](https://github.com/langchain-ai/deepagents/issues/5960)).
18
+ - Classifier errors now include model names ([#6038](https://github.com/langchain-ai/deepagents/issues/6038)).
19
+ - Updated the splash screen to use a sharp border ([#5970](https://github.com/langchain-ai/deepagents/issues/5970)).
20
+
21
+ ### Performance Improvements
22
+
23
+ - Reduced QuickJS middleware tracing overhead by omitting trace inputs ([#6015](https://github.com/langchain-ai/deepagents/issues/6015)).
24
+
5
25
  ## [0.1.65](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.64...deepagents-code==0.1.65) (2026-08-28)
6
26
 
7
27
  ### Features
@@ -73,6 +73,7 @@ lint lint_diff lint_package lint_tests:
73
73
  [ "$(PYTHON_FILES)" = "" ] || uv run --all-groups ruff format $(PYTHON_FILES) --diff
74
74
  $(MAKE) type PYTHON_FILES="$(PYTHON_FILES)"
75
75
  uv run --all-groups python scripts/generate_commands_catalog.py --check
76
+ uv run --all-groups python scripts/check_process_cwd.py deepagents_code
76
77
 
77
78
  type: ## Run type checker
78
79
  type typecheck:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: deepagents-code
3
- Version: 0.1.65
3
+ Version: 0.1.66
4
4
  Summary: Terminal coding agent built on the Deep Agents SDK - works with any model, with persistent memory, customizable skills, subagents, and approval controls.
5
5
  Project-URL: Homepage, https://www.langchain.com/dcode
6
6
  Project-URL: Documentation, https://docs.langchain.com/oss/deepagents/code/overview
@@ -30,21 +30,21 @@ Requires-Python: <4.0,>=3.12
30
30
  Requires-Dist: aiosqlite<1.0.0,>=0.22.1
31
31
  Requires-Dist: anyio<5.0.0,>=4.14.2
32
32
  Requires-Dist: deepagents-acp<1.0.0,>=0.0.10
33
- Requires-Dist: deepagents==0.7.10
33
+ Requires-Dist: deepagents==0.7.13
34
34
  Requires-Dist: filelock<3.30,>=3.29.7
35
- Requires-Dist: genai-prices<0.2.0,>=0.1.4
35
+ Requires-Dist: genai-prices<0.2.0,>=0.1.6
36
36
  Requires-Dist: httpx<1.0.0,>=0.28.1
37
- Requires-Dist: langchain-anthropic<2.0.0,>=1.7.0
38
- Requires-Dist: langchain-google-genai<5.0.0,>=4.3.7
37
+ Requires-Dist: langchain-anthropic<2.0.0,>=1.7.1
38
+ Requires-Dist: langchain-google-genai<5.0.0,>=4.4.0
39
39
  Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.3.2
40
40
  Requires-Dist: langchain-openai<2.0.0,>=1.6.0
41
41
  Requires-Dist: langchain-quickjs<0.4.0,>=0.3.4
42
- Requires-Dist: langchain<2.0.0,>=1.3.18
42
+ Requires-Dist: langchain<2.0.0,>=1.4.0
43
43
  Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.1.1
44
44
  Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.31
45
- Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.33.2
45
+ Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.33.3
46
46
  Requires-Dist: langgraph-sdk<1.0.0,>=0.4.4
47
- Requires-Dist: langsmith[sandbox]>=0.11.2
47
+ Requires-Dist: langsmith[sandbox]>=0.12.1
48
48
  Requires-Dist: markdownify<2.0.0,>=1.2.3
49
49
  Requires-Dist: mcp<2.0.0,>=1.28.1
50
50
  Requires-Dist: packaging>=26.2
@@ -66,18 +66,18 @@ Provides-Extra: agentcore
66
66
  Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.5; extra == 'agentcore'
67
67
  Provides-Extra: all-providers
68
68
  Requires-Dist: aiohttp<3.15.0,>=3.14.3; extra == 'all-providers'
69
- Requires-Dist: langchain-anthropic<2.0.0,>=1.7.0; extra == 'all-providers'
70
- Requires-Dist: langchain-aws<2.0.0,>=1.7.4; extra == 'all-providers'
69
+ Requires-Dist: langchain-anthropic<2.0.0,>=1.7.1; extra == 'all-providers'
70
+ Requires-Dist: langchain-aws<2.0.0,>=1.7.5; extra == 'all-providers'
71
71
  Requires-Dist: langchain-baseten<1.0.0,>=0.2.4; extra == 'all-providers'
72
72
  Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'all-providers'
73
73
  Requires-Dist: langchain-deepseek<2.0.0,>=1.1.0; extra == 'all-providers'
74
74
  Requires-Dist: langchain-fireworks<2.0.0,>=1.6.1; extra == 'all-providers'
75
- Requires-Dist: langchain-google-genai<5.0.0,>=4.3.7; extra == 'all-providers'
75
+ Requires-Dist: langchain-google-genai<5.0.0,>=4.4.0; extra == 'all-providers'
76
76
  Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.4; extra == 'all-providers'
77
77
  Requires-Dist: langchain-groq<2.0.0,>=1.1.3; extra == 'all-providers'
78
78
  Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'all-providers'
79
79
  Requires-Dist: langchain-ibm<2.0.0,>=1.1.0; extra == 'all-providers'
80
- Requires-Dist: langchain-litellm<2.0.0,>=0.7.0; extra == 'all-providers'
80
+ Requires-Dist: langchain-litellm<2.0.0,>=0.7.1; extra == 'all-providers'
81
81
  Requires-Dist: langchain-meta<2.0.0,>=0.5.0; extra == 'all-providers'
82
82
  Requires-Dist: langchain-mistralai<2.0.0,>=1.1.6; extra == 'all-providers'
83
83
  Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.3; extra == 'all-providers'
@@ -94,11 +94,11 @@ Requires-Dist: langchain-modal>=0.0.5; extra == 'all-sandboxes'
94
94
  Requires-Dist: langchain-runloop>=0.0.6; extra == 'all-sandboxes'
95
95
  Requires-Dist: langchain-vercel-sandbox>=0.0.1; extra == 'all-sandboxes'
96
96
  Provides-Extra: anthropic
97
- Requires-Dist: langchain-anthropic<2.0.0,>=1.7.0; extra == 'anthropic'
97
+ Requires-Dist: langchain-anthropic<2.0.0,>=1.7.1; extra == 'anthropic'
98
98
  Provides-Extra: baseten
99
99
  Requires-Dist: langchain-baseten<1.0.0,>=0.2.4; extra == 'baseten'
100
100
  Provides-Extra: bedrock
101
- Requires-Dist: langchain-aws<2.0.0,>=1.7.4; extra == 'bedrock'
101
+ Requires-Dist: langchain-aws<2.0.0,>=1.7.5; extra == 'bedrock'
102
102
  Provides-Extra: cohere
103
103
  Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'cohere'
104
104
  Provides-Extra: daytona
@@ -108,7 +108,7 @@ Requires-Dist: langchain-deepseek<2.0.0,>=1.1.0; extra == 'deepseek'
108
108
  Provides-Extra: fireworks
109
109
  Requires-Dist: langchain-fireworks<2.0.0,>=1.6.1; extra == 'fireworks'
110
110
  Provides-Extra: google-genai
111
- Requires-Dist: langchain-google-genai<5.0.0,>=4.3.7; extra == 'google-genai'
111
+ Requires-Dist: langchain-google-genai<5.0.0,>=4.4.0; extra == 'google-genai'
112
112
  Provides-Extra: groq
113
113
  Requires-Dist: langchain-groq<2.0.0,>=1.1.3; extra == 'groq'
114
114
  Provides-Extra: huggingface
@@ -116,7 +116,7 @@ Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'huggingface'
116
116
  Provides-Extra: ibm
117
117
  Requires-Dist: langchain-ibm<2.0.0,>=1.1.0; extra == 'ibm'
118
118
  Provides-Extra: litellm
119
- Requires-Dist: langchain-litellm<2.0.0,>=0.7.0; extra == 'litellm'
119
+ Requires-Dist: langchain-litellm<2.0.0,>=0.7.1; extra == 'litellm'
120
120
  Provides-Extra: media
121
121
  Requires-Dist: av<19.0.0,>=18.0.0; extra == 'media'
122
122
  Requires-Dist: pillow<13.0.0,>=12.3.0; extra == 'media'
@@ -1,3 +1,3 @@
1
1
  """Generated at build time. Do not edit or commit."""
2
2
 
3
- BUILD_COMMIT = "a233ded"
3
+ BUILD_COMMIT = "3812967"
@@ -87,6 +87,8 @@ class CLIContextSchema:
87
87
 
88
88
  prompt_id: str | None = None
89
89
 
90
+ workspace: dict[str, Any] = field(default_factory=dict)
91
+
90
92
  @classmethod
91
93
  def from_payload(cls, payload: object) -> CLIContextSchema | None:
92
94
  """Coerce a run's `context=` payload into this schema.
@@ -159,6 +161,7 @@ class CLIContextSchema:
159
161
  hooks_snapshot_id=_str("hooks_snapshot_id"),
160
162
  hooks_server_events=events,
161
163
  prompt_id=_str("prompt_id"),
164
+ workspace=_mapping("workspace"),
162
165
  )
163
166
 
164
167
 
@@ -249,3 +252,6 @@ class CLIContext(TypedDict, total=False):
249
252
 
250
253
  prompt_id: str | None
251
254
  """Optional per-turn prompt id projected into hook context."""
255
+
256
+ workspace: dict[str, Any]
257
+ """Server-validated workspace binding for the active thread."""
@@ -37,7 +37,7 @@ Hardcoded rather than read from `deepagents.middleware.rubric.RubricMiddleware`
37
37
  because this module is dependency-free and importing the SDK for a display
38
38
  string would violate the startup-performance rule (see AGENTS.md). This is a
39
39
  hand-maintained duplicate that can rot if the SDK bumps its default, so
40
- `test_reliable_rubric.py::TestReliableRubricMiddleware::test_displayed_max_iterations_default_matches_sdk`
40
+ `test_reliable_rubric.py::TestRubricMiddlewareIntegration::test_displayed_max_iterations_default_matches_sdk`
41
41
  is the drift guard that fails when the two diverge.
42
42
  """
43
43
 
@@ -251,6 +251,15 @@ setting it (see `config._PROJECT_DOTENV_DENIED_ENV_KEYS`); only the user's
251
251
  shell, launch env, or global `~/.deepagents/.env` can.
252
252
  """
253
253
 
254
+ FORKED_SUBAGENTS = "DEEPAGENTS_CODE_FORKED_SUBAGENTS"
255
+ """Whether dcode's built-in `general-purpose` subagent runs in fork mode.
256
+
257
+ On by default. Set to a falsy value to make the subagent receive only the delegated
258
+ task instead of inheriting the parent agent's conversation and state. Parsed by
259
+ `is_env_truthy`; set this only through the launching shell or global
260
+ `~/.deepagents/.env`, never a project `.env`.
261
+ """
262
+
254
263
  EXPERIMENTAL = "DEEPAGENTS_CODE_EXPERIMENTAL"
255
264
  """Opt into experimental, unstable dcode behavior.
256
265
 
@@ -422,6 +422,50 @@ class ServerConfig:
422
422
  extension_paths: tuple[str, ...] = ()
423
423
  """Absolute one-run extension files or directories from repeatable CLI flags."""
424
424
 
425
+ def to_workspace_payload(self) -> dict[str, Any]:
426
+ """Return non-secret resource policy for a durable workspace binding."""
427
+ return {
428
+ "assistant_id": self.assistant_id,
429
+ "auto_approve": self.auto_approve,
430
+ "interrupt_shell_only": self.interrupt_shell_only,
431
+ "shell_allow_list": self.shell_allow_list,
432
+ "interactive": self.interactive,
433
+ "enable_shell": self.enable_shell,
434
+ "enable_ask_user": self.enable_ask_user,
435
+ "enable_memory": self.enable_memory,
436
+ "enable_skills": self.enable_skills,
437
+ "enable_interpreter": self.enable_interpreter,
438
+ "interpreter_ptc": self.interpreter_ptc,
439
+ "interpreter_ptc_acknowledge_unsafe": (
440
+ self.interpreter_ptc_acknowledge_unsafe
441
+ ),
442
+ "allow_fs_tools": self.allow_fs_tools,
443
+ "recursion_limit": self.recursion_limit,
444
+ "sandbox_type": self.sandbox_type,
445
+ "sandbox_id": self.sandbox_id,
446
+ "sandbox_snapshot_name": self.sandbox_snapshot_name,
447
+ "sandbox_setup": self.sandbox_setup,
448
+ "mcp_config_path": self.mcp_config_path,
449
+ "no_mcp": self.no_mcp,
450
+ "trust_project_mcp": self.trust_project_mcp,
451
+ "trust_project_extensions": self.trust_project_extensions,
452
+ "extension_paths": list(self.extension_paths),
453
+ }
454
+
455
+ def workspace_fingerprint(self) -> str:
456
+ """Fingerprint the full effective config without persisting its contents.
457
+
458
+ Returns:
459
+ The canonical SHA-256 fingerprint.
460
+ """
461
+ import hashlib
462
+
463
+ values = self.to_env()
464
+ values.pop("CWD")
465
+ values.pop("PROJECT_ROOT")
466
+ serialized = json.dumps(values, sort_keys=True, separators=(",", ":"))
467
+ return hashlib.sha256(serialized.encode()).hexdigest()
468
+
425
469
  def __post_init__(self) -> None:
426
470
  """Normalize fields and validate invariants.
427
471
 
@@ -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.65" # x-release-please-version
5
+ __version__ = "0.1.66" # 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."""
@@ -65,6 +65,10 @@ from langchain_core.tools import StructuredTool, tool
65
65
  from deepagents_code import theme
66
66
  from deepagents_code._cli_context import CLIContextSchema
67
67
  from deepagents_code._constants import DEFAULT_AGENT_NAME
68
+ from deepagents_code._env_vars import (
69
+ FORKED_SUBAGENTS,
70
+ is_env_truthy,
71
+ )
68
72
  from deepagents_code._glm_5p2_profile import (
69
73
  _ensure_glm_5p2_profile_registered,
70
74
  _GlmTerminalStallRecovery,
@@ -139,6 +143,7 @@ from deepagents_code.unicode_security import (
139
143
  detect_dangerous_unicode,
140
144
  format_warning_detail,
141
145
  render_with_unicode_markers,
146
+ sanitize_control_chars,
142
147
  strip_dangerous_unicode,
143
148
  summarize_issues,
144
149
  )
@@ -1796,23 +1801,41 @@ def _format_task_description(
1796
1801
 
1797
1802
 
1798
1803
  def _format_execute_description(
1799
- tool_call: ToolCall, _state: AgentState[Any], _runtime: Runtime[Any]
1804
+ tool_call: ToolCall, _state: AgentState[Any], runtime: Runtime[Any]
1800
1805
  ) -> str:
1801
1806
  """Format execute tool call for approval prompt.
1802
1807
 
1808
+ The working directory comes from the run's bound workspace, which
1809
+ `require_thread_workspace` validates against the durable binding before
1810
+ the run starts. A run with no workspace falls back to the process-global
1811
+ server project context and then the process CWD; both can name a
1812
+ directory the command will not run in, so the fallback warns.
1813
+
1803
1814
  Returns:
1804
1815
  Formatted description string for the execute tool call.
1805
1816
  """
1806
1817
  args = tool_call["args"]
1807
1818
  command_raw = str(args.get("command", "N/A"))
1808
1819
  command = strip_dangerous_unicode(command_raw)
1809
- project_context = get_server_project_context()
1810
- effective_cwd = (
1811
- str(project_context.user_cwd)
1812
- if project_context is not None
1813
- else str(Path.cwd())
1814
- )
1815
- lines = [f"Execute Command: {command}", f"Working Directory: {effective_cwd}"]
1820
+ context = CLIContextSchema.from_payload(runtime.context)
1821
+ workspace = context.workspace if context is not None else {}
1822
+ effective_cwd = workspace.get("cwd") if isinstance(workspace, dict) else None
1823
+ # An empty or non-str `cwd` would render a blank directory line, which
1824
+ # reads as "no directory" rather than as missing data. Fall through.
1825
+ if not isinstance(effective_cwd, str) or not effective_cwd:
1826
+ logger.warning(
1827
+ "Shell approval prompt has no bound workspace cwd; the directory "
1828
+ "shown may not be where this command runs (workspace=%r)",
1829
+ workspace,
1830
+ )
1831
+ project_context = get_server_project_context()
1832
+ effective_cwd = (
1833
+ str(project_context.user_cwd)
1834
+ if project_context is not None
1835
+ else str(Path.cwd())
1836
+ )
1837
+ display_cwd = sanitize_control_chars(effective_cwd, collapse_whitespace=False)
1838
+ lines = [f"Execute Command: {command}", f"Working Directory: {display_cwd}"]
1816
1839
 
1817
1840
  issues = detect_dangerous_unicode(command_raw)
1818
1841
  if issues:
@@ -2595,7 +2618,7 @@ def create_cli_agent(
2595
2618
  """ # noqa: DOC502 - propagates from `ModelConfig.require_model_allowed`
2596
2619
  tools = list(tools or [])
2597
2620
  if extension_registry is not None:
2598
- from deepagents_code._env_vars import EXPERIMENTAL, is_env_truthy
2621
+ from deepagents_code._env_vars import EXPERIMENTAL
2599
2622
 
2600
2623
  if not is_env_truthy(EXPERIMENTAL):
2601
2624
  extension_registry = None
@@ -2815,6 +2838,8 @@ def create_cli_agent(
2815
2838
  "system_prompt": GENERAL_PURPOSE_SUBAGENT["system_prompt"],
2816
2839
  "middleware": _subagent_cli_middleware(has_explicit_model=False),
2817
2840
  }
2841
+ if is_env_truthy(FORKED_SUBAGENTS, default=True):
2842
+ general_purpose_subagent["mode"] = "fork"
2818
2843
  if resolved_interrupt_on is not None:
2819
2844
  general_purpose_subagent["interrupt_on"] = {}
2820
2845
  custom_subagents.append(general_purpose_subagent)
@@ -3293,8 +3318,11 @@ def create_cli_agent(
3293
3318
  fs_tools=fs_tools,
3294
3319
  )
3295
3320
  from deepagents_code.goal_rubric import (
3321
+ RubricGraderState,
3296
3322
  _ContextToolCallBudgetMiddleware,
3297
3323
  _CriteriaContextBudgetMiddleware,
3324
+ _rubric_grader_messages,
3325
+ _rubric_grader_state,
3298
3326
  _rubric_interrupt_on,
3299
3327
  _WebSearchBudgetMiddleware,
3300
3328
  )
@@ -3371,6 +3399,9 @@ def create_cli_agent(
3371
3399
  "tools": grader_tools,
3372
3400
  "grader_middleware": grader_middleware,
3373
3401
  "grader_context_schema": CLIContextSchema,
3402
+ "grader_state_schema": RubricGraderState,
3403
+ "prepare_messages_for_grader": _rubric_grader_messages,
3404
+ "build_grader_state": _rubric_grader_state,
3374
3405
  # The bootstrap only scaffolds the runtime grader's graph;
3375
3406
  # `ConfigurableModelMiddleware` swaps in the thread-selected model
3376
3407
  # before any call. Pass the main model through even as an
@@ -3419,19 +3450,25 @@ def create_cli_agent(
3419
3450
  from deepagents_code.extensions.hosting import ExtensionRuntimeMiddleware
3420
3451
 
3421
3452
  agent_middleware.append(ExtensionRuntimeMiddleware(extension_registry))
3422
- agent = create_deep_agent(
3423
- model=model,
3424
- system_prompt=system_prompt,
3425
- tools=tools,
3426
- backend=composite_backend,
3427
- middleware=agent_middleware,
3428
- interrupt_on=interrupt_on,
3429
- context_schema=CLIContextSchema,
3430
- checkpointer=checkpointer,
3431
- store=store,
3432
- subagents=all_subagents or None,
3433
- name=_sanitize_agent_message_name(assistant_id),
3434
- )
3453
+ with warnings.catch_warnings():
3454
+ warnings.filterwarnings(
3455
+ "ignore",
3456
+ message="The feature `forked subagents` is in beta",
3457
+ category=Warning,
3458
+ )
3459
+ agent = create_deep_agent(
3460
+ model=model,
3461
+ system_prompt=system_prompt,
3462
+ tools=tools,
3463
+ backend=composite_backend,
3464
+ middleware=agent_middleware,
3465
+ interrupt_on=interrupt_on,
3466
+ context_schema=CLIContextSchema,
3467
+ checkpointer=checkpointer,
3468
+ store=store,
3469
+ subagents=all_subagents or None,
3470
+ name=_sanitize_agent_message_name(assistant_id),
3471
+ )
3435
3472
  if effective_recursion_limit is not None:
3436
3473
  # `Pregel.with_config` uses `merge_configs`, which discards a value equal
3437
3474
  # to LangGraph's environment-derived default. Replace the copied graph's
@@ -234,8 +234,8 @@ _DEFERRED_START_NOTICE = (
234
234
  )
235
235
 
236
236
  _AUTO_CLASSIFIER_RECOMMENDED_MODELS = {
237
- "anthropic:claude-haiku-4-5": "Claude Haiku 4.5",
238
- "google_genai:gemini-3.7-flash": "Gemini 3.7 Flash",
237
+ "anthropic:claude-sonnet-5": "Claude Sonnet 5",
238
+ "google_genai:gemini-3.8-flash": "Gemini 3.8 Flash",
239
239
  "openai:gpt-5.6-luna": "GPT-5.6 Luna",
240
240
  }
241
241
  """Lower-latency models recommended for repeated Auto action reviews."""
@@ -3683,7 +3683,14 @@ class DeepAgentsApp(App):
3683
3683
  and cannot restart it).
3684
3684
  """
3685
3685
 
3686
+ if server_kwargs is not None:
3687
+ server_kwargs["cwd"] = self._cwd
3686
3688
  self._server_kwargs = server_kwargs
3689
+ if self._agent is not None:
3690
+ from deepagents_code.client.remote_client import RemoteAgent as _RemoteAgent
3691
+
3692
+ if isinstance(self._agent, _RemoteAgent):
3693
+ self._configure_remote_agent(self._agent)
3687
3694
  """Cached kwargs for `start_server_and_get_agent`.
3688
3695
 
3689
3696
  When non-`None`, startup is deferred and the UI begins in a status-bar
@@ -3893,6 +3900,9 @@ class DeepAgentsApp(App):
3893
3900
  statements. This flag puts `INHERIT_CLASSIFIER_MODEL` on the run context
3894
3901
  for the latter."""
3895
3902
 
3903
+ self._auto_classifier_model_is_retry_default: bool = False
3904
+ """Whether deferred-startup retry derived the classifier from its provider."""
3905
+
3896
3906
  self._active_goal: str | None = None
3897
3907
  """Goal objective accepted by the user and backed by the active rubric."""
3898
3908
 
@@ -4589,6 +4599,26 @@ class DeepAgentsApp(App):
4589
4599
  here; the user opens them via toast click or `ctrl+n`.
4590
4600
  """
4591
4601
 
4602
+ def _configure_remote_agent(self, agent: RemoteAgent) -> RemoteAgent:
4603
+ """Attach this session's explicit workspace to a remote client.
4604
+
4605
+ Returns:
4606
+ The configured client.
4607
+ """
4608
+ if self._server_kwargs is None:
4609
+ agent.set_workspace(self._cwd)
4610
+ return agent
4611
+
4612
+ from deepagents_code._server_config import ServerConfig
4613
+
4614
+ config = ServerConfig.from_env()
4615
+ agent.set_workspace(
4616
+ self._cwd,
4617
+ config.to_workspace_payload(),
4618
+ config_fingerprint=config.workspace_fingerprint(),
4619
+ )
4620
+ return agent
4621
+
4592
4622
  def _remote_agent(self) -> RemoteAgent | None:
4593
4623
  """Return the agent narrowed to `RemoteAgent`, or `None`.
4594
4624
 
@@ -5959,6 +5989,9 @@ class DeepAgentsApp(App):
5959
5989
  start_server_and_get_agent,
5960
5990
  )
5961
5991
 
5992
+ if self._server_kwargs is None:
5993
+ return
5994
+ self._server_kwargs["cwd"] = self._cwd
5962
5995
  coros: list[Any] = [start_server_and_get_agent(**self._server_kwargs)] # ty: ignore[invalid-argument-type]
5963
5996
 
5964
5997
  if self._mcp_preload_kwargs is not None:
@@ -22210,6 +22243,7 @@ class DeepAgentsApp(App):
22210
22243
 
22211
22244
  self._auto_classifier_model = display
22212
22245
  self._auto_classifier_model_cleared = display is None
22246
+ self._auto_classifier_model_is_retry_default = False
22213
22247
  if self._server_kwargs is not None:
22214
22248
  self._server_kwargs["auto_classifier_model"] = display
22215
22249
 
@@ -23847,7 +23881,9 @@ class DeepAgentsApp(App):
23847
23881
  Returns:
23848
23882
  A fresh `RemoteAgent`, exposed as `Any`.
23849
23883
  """
23850
- return _RemoteAgent(url=url, graph_name="agent")
23884
+ return self._configure_remote_agent(
23885
+ _RemoteAgent(url=url, graph_name="agent")
23886
+ )
23851
23887
 
23852
23888
  previous_agent = self._assistant_id
23853
23889
  previous_default_agent = self._default_assistant_id
@@ -27731,7 +27767,9 @@ class DeepAgentsApp(App):
27731
27767
  mcp_status = "fresh" if mcp_info is not None else "unavailable"
27732
27768
 
27733
27769
  def _build_agent(url: str) -> Any: # noqa: ANN401 # union narrowed elsewhere
27734
- return _RemoteAgent(url=url, graph_name="agent")
27770
+ return self._configure_remote_agent(
27771
+ _RemoteAgent(url=url, graph_name="agent")
27772
+ )
27735
27773
 
27736
27774
  # A failed refresh must not reach the UI as "zero servers": the
27737
27775
  # `ServerReady` handler recomputes the status-bar counters and the
@@ -28503,7 +28541,10 @@ class DeepAgentsApp(App):
28503
28541
  self._preserve_launch_relative_server_paths(previous_cwd)
28504
28542
  await self._switch_process_cwd(cwd)
28505
28543
 
28506
- coros: list[Any] = [start_server_and_get_agent(**self._server_kwargs)]
28544
+ self._server_kwargs["cwd"] = self._cwd
28545
+ coros: list[Any] = [
28546
+ start_server_and_get_agent(**self._server_kwargs) # ty: ignore[invalid-argument-type]
28547
+ ]
28507
28548
  if self._mcp_preload_kwargs is not None:
28508
28549
  coros.append(
28509
28550
  _preload_session_mcp_server_info(**self._mcp_preload_kwargs)
@@ -29692,6 +29733,21 @@ class DeepAgentsApp(App):
29692
29733
  display = model_spec
29693
29734
  if provider and not parsed:
29694
29735
  display = f"{provider}:{model_name}"
29736
+ if provider and (
29737
+ self._auto_classifier_model_is_retry_default
29738
+ or (
29739
+ self._server_kwargs.get("auto_classifier_model") is None
29740
+ and not self._auto_classifier_model_cleared
29741
+ )
29742
+ ):
29743
+ from deepagents_code.config import (
29744
+ resolve_auto_classifier_model_for_provider,
29745
+ )
29746
+
29747
+ classifier_model = resolve_auto_classifier_model_for_provider(provider)
29748
+ self._auto_classifier_model = classifier_model
29749
+ self._server_kwargs["auto_classifier_model"] = classifier_model
29750
+ self._auto_classifier_model_is_retry_default = True
29695
29751
 
29696
29752
  new_model_kwargs: dict[str, Any] = {
29697
29753
  "model_spec": display,