deepagents-code 0.1.64__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 (639) hide show
  1. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/AGENTS.md +1 -1
  2. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/ARCHITECTURE.md +2 -0
  3. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/CHANGELOG.md +39 -0
  4. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/COMMANDS.md +3 -1
  5. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/DEVELOPMENT.md +6 -5
  6. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/Makefile +1 -0
  7. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/PKG-INFO +16 -138
  8. deepagents_code-0.1.66/README.md +72 -0
  9. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_build_info.py +1 -1
  10. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_cli_context.py +103 -1
  11. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_constants.py +1 -1
  12. deepagents_code-0.1.66/deepagents_code/_content_blocks.py +30 -0
  13. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_debug.py +126 -61
  14. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_env_vars.py +28 -3
  15. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_server_config.py +56 -0
  16. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_session_stats.py +55 -13
  17. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_textual_patches.py +21 -0
  18. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_version.py +1 -1
  19. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/agent.py +98 -24
  20. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/app.py +854 -182
  21. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/auto_mode.py +322 -33
  22. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/client/commands/config.py +4 -1
  23. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/client/commands/extras.py +125 -6
  24. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/client/launch/server_manager.py +25 -1
  25. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/client/non_interactive.py +740 -71
  26. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/client/remote_client.py +185 -4
  27. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/command_registry.py +14 -0
  28. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/config.py +72 -9
  29. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/config_manifest.py +36 -2
  30. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/configurable_model.py +17 -25
  31. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/context_doctor.py +4 -1
  32. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/cost_tracking.py +1 -1
  33. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/doctor.py +3 -4
  34. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/extras_info.py +59 -8
  35. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/goal_rubric.py +28 -0
  36. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/transcript.py +157 -5
  37. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/main.py +148 -22
  38. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/mcp_tools.py +68 -42
  39. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/model_config.py +39 -22
  40. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/model_retry.py +430 -94
  41. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/offload_api.py +117 -14
  42. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/offload_middleware.py +542 -75
  43. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/plugins/discovery.py +13 -10
  44. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/plugins/manifest.py +47 -22
  45. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/plugins/marketplace.py +69 -19
  46. deepagents_code-0.1.66/deepagents_code/reliable_rubric.py +373 -0
  47. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/resume_state.py +45 -0
  48. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/server_graph.py +96 -6
  49. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/modals/plugin_manager/content.py +7 -3
  50. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/modals/resume_compact.py +27 -16
  51. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/textual_adapter.py +505 -10
  52. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/approval.py +42 -5
  53. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/auto_mode_notice.py +2 -1
  54. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/cwd_switch.py +5 -3
  55. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/debug_console.py +4 -1
  56. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/goal_status.py +4 -1
  57. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/mcp_login.py +4 -4
  58. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/mcp_viewer.py +7 -1
  59. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/message_store.py +23 -0
  60. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/messages.py +221 -27
  61. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/model_selector.py +35 -15
  62. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/startup_tip.py +3 -0
  63. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/status.py +6 -5
  64. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/subagent_panel.py +10 -4
  65. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/thread_agent_switch.py +3 -1
  66. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/welcome.py +1 -1
  67. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/yolo_mode_notice.py +3 -1
  68. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/ui.py +42 -0
  69. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/update_check.py +596 -104
  70. deepagents_code-0.1.66/deepagents_code/workspace.py +385 -0
  71. deepagents_code-0.1.66/images/model-stream-retry.png +0 -0
  72. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/pyproject.toml +12 -12
  73. deepagents_code-0.1.66/scripts/check_process_cwd.py +432 -0
  74. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -48
  75. deepagents_code-0.1.66/tests/integration_tests/test_pending_work_recovery.py +81 -0
  76. deepagents_code-0.1.66/tests/unit_tests/client/commands/test_extras.py +58 -0
  77. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/client/commands/test_mcp.py +0 -120
  78. deepagents_code-0.1.66/tests/unit_tests/client/commands/test_tools.py +231 -0
  79. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/hooks/models/test_models.py +4 -191
  80. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_client_lifecycle.py +2 -56
  81. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_configuration.py +1 -159
  82. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_engine.py +1 -654
  83. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_execution.py +0 -170
  84. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_manager.py +1 -45
  85. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_presenter.py +0 -13
  86. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_server_lifecycle.py +1 -466
  87. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_transcript.py +218 -163
  88. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/plugins/test_marketplace.py +184 -161
  89. deepagents_code-0.1.66/tests/unit_tests/plugins/test_plugin_hooks.py +5 -0
  90. deepagents_code-0.1.66/tests/unit_tests/plugins/test_plugins_p0.py +595 -0
  91. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/skills/test_commands.py +1 -348
  92. deepagents_code-0.1.66/tests/unit_tests/skills/test_load.py +125 -0
  93. deepagents_code-0.1.66/tests/unit_tests/skills/test_merge.py +75 -0
  94. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/skills/test_thread_inspector.py +0 -180
  95. deepagents_code-0.1.66/tests/unit_tests/test__tool_stream.py +350 -0
  96. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_agent.py +388 -1958
  97. deepagents_code-0.1.66/tests/unit_tests/test_agent_friendly.py +262 -0
  98. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_app.py +855 -16079
  99. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_approval_mode.py +0 -197
  100. deepagents_code-0.1.66/tests/unit_tests/test_args.py +347 -0
  101. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_ask_user_middleware.py +2 -400
  102. deepagents_code-0.1.66/tests/unit_tests/test_ask_user_types.py +163 -0
  103. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_auto_mode.py +463 -1340
  104. deepagents_code-0.1.66/tests/unit_tests/test_charset.py +175 -0
  105. deepagents_code-0.1.66/tests/unit_tests/test_cli_provider.py +85 -0
  106. deepagents_code-0.1.66/tests/unit_tests/test_clipboard.py +244 -0
  107. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_cold_cache.py +1 -603
  108. deepagents_code-0.1.66/tests/unit_tests/test_command_registry.py +128 -0
  109. deepagents_code-0.1.66/tests/unit_tests/test_compact_tool.py +1204 -0
  110. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_config.py +52 -3526
  111. deepagents_code-0.1.66/tests/unit_tests/test_config_manifest.py +2028 -0
  112. deepagents_code-0.1.66/tests/unit_tests/test_configurable_model.py +1093 -0
  113. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_configuration.py +164 -1364
  114. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_configuration_resolver.py +2 -654
  115. deepagents_code-0.1.66/tests/unit_tests/test_context_doctor.py +89 -0
  116. deepagents_code-0.1.66/tests/unit_tests/test_cost_tracking.py +1643 -0
  117. deepagents_code-0.1.66/tests/unit_tests/test_cursor_style.py +26 -0
  118. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_debug.py +173 -172
  119. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_debug_buffer.py +1 -173
  120. deepagents_code-0.1.66/tests/unit_tests/test_debug_console.py +504 -0
  121. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_dep_floor_check.py +0 -66
  122. deepagents_code-0.1.66/tests/unit_tests/test_diff_utils.py +42 -0
  123. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_doctor.py +0 -302
  124. deepagents_code-0.1.66/tests/unit_tests/test_editor.py +45 -0
  125. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_end_to_end.py +0 -67
  126. deepagents_code-0.1.66/tests/unit_tests/test_env_vars.py +30 -0
  127. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_event_bus.py +0 -141
  128. deepagents_code-0.1.66/tests/unit_tests/test_exception_handling.py +83 -0
  129. deepagents_code-0.1.66/tests/unit_tests/test_extension_api.py +24 -0
  130. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_extension_cli_trust.py +1 -43
  131. deepagents_code-0.1.66/tests/unit_tests/test_extension_discovery.py +74 -0
  132. deepagents_code-0.1.66/tests/unit_tests/test_extension_host_runtime.py +52 -0
  133. deepagents_code-0.1.66/tests/unit_tests/test_extension_hosting.py +73 -0
  134. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_extension_runtime.py +0 -135
  135. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_extras_info.py +86 -294
  136. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_file_ops.py +1 -460
  137. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_formatting.py +3 -109
  138. deepagents_code-0.1.66/tests/unit_tests/test_git.py +346 -0
  139. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_glm_5p2_profile.py +0 -77
  140. deepagents_code-0.1.66/tests/unit_tests/test_goal_criteria_client.py +246 -0
  141. deepagents_code-0.1.66/tests/unit_tests/test_goal_rubric.py +1198 -0
  142. deepagents_code-0.1.66/tests/unit_tests/test_goal_state_limits.py +116 -0
  143. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_goal_state_notice.py +0 -89
  144. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_goal_state_persistence.py +0 -108
  145. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_goal_tools.py +4 -375
  146. deepagents_code-0.1.66/tests/unit_tests/test_hooks.py +176 -0
  147. deepagents_code-0.1.66/tests/unit_tests/test_imports.py +1 -0
  148. deepagents_code-0.1.66/tests/unit_tests/test_input_parsing.py +282 -0
  149. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_install_command.py +41 -664
  150. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_install_script.py +344 -3006
  151. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_invocation.py +0 -18
  152. deepagents_code-0.1.66/tests/unit_tests/test_iterm_cursor_guide.py +95 -0
  153. deepagents_code-0.1.66/tests/unit_tests/test_json_types.py +1 -0
  154. deepagents_code-0.1.66/tests/unit_tests/test_local_context.py +859 -0
  155. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_main.py +130 -1604
  156. deepagents_code-0.1.66/tests/unit_tests/test_main_acp_mode.py +124 -0
  157. deepagents_code-0.1.66/tests/unit_tests/test_main_args.py +1976 -0
  158. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_managed_tools.py +1 -573
  159. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_mcp_auth.py +1 -89
  160. deepagents_code-0.1.66/tests/unit_tests/test_mcp_config.py +56 -0
  161. deepagents_code-0.1.66/tests/unit_tests/test_mcp_disabled.py +95 -0
  162. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_mcp_login_service.py +0 -107
  163. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_mcp_tools.py +106 -1074
  164. deepagents_code-0.1.66/tests/unit_tests/test_media_utils.py +492 -0
  165. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_memory_guard.py +0 -115
  166. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_model_config.py +524 -5255
  167. deepagents_code-0.1.66/tests/unit_tests/test_model_retry.py +837 -0
  168. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_model_switch.py +290 -708
  169. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_non_interactive.py +1334 -1117
  170. deepagents_code-0.1.66/tests/unit_tests/test_notifications.py +11 -0
  171. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_offload.py +2 -508
  172. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_offload_api.py +252 -251
  173. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_onboarding.py +2 -176
  174. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_openai_codex_integration.py +0 -21
  175. deepagents_code-0.1.66/tests/unit_tests/test_output.py +7 -0
  176. deepagents_code-0.1.66/tests/unit_tests/test_paths.py +637 -0
  177. deepagents_code-0.1.66/tests/unit_tests/test_process_cwd_check.py +182 -0
  178. deepagents_code-0.1.66/tests/unit_tests/test_reasoning_effort.py +176 -0
  179. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_reliable_rubric.py +288 -167
  180. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_reload.py +0 -898
  181. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_remote_client.py +235 -548
  182. deepagents_code-0.1.66/tests/unit_tests/test_repository_bounds.py +104 -0
  183. deepagents_code-0.1.66/tests/unit_tests/test_resume_compaction_recovery.py +3 -0
  184. deepagents_code-0.1.66/tests/unit_tests/test_resume_state.py +293 -0
  185. deepagents_code-0.1.66/tests/unit_tests/test_rubric_cli.py +40 -0
  186. deepagents_code-0.1.66/tests/unit_tests/test_sandbox_factory.py +540 -0
  187. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_sandbox_registry.py +0 -54
  188. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_server.py +0 -338
  189. deepagents_code-0.1.66/tests/unit_tests/test_server_config.py +239 -0
  190. deepagents_code-0.1.66/tests/unit_tests/test_server_graph.py +404 -0
  191. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_server_helpers.py +1 -81
  192. deepagents_code-0.1.66/tests/unit_tests/test_server_manager.py +355 -0
  193. deepagents_code-0.1.66/tests/unit_tests/test_session_stats.py +573 -0
  194. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_sessions.py +1 -1211
  195. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_skill_invocation.py +0 -456
  196. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_startup_fast_paths.py +5 -106
  197. deepagents_code-0.1.66/tests/unit_tests/test_subagents.py +210 -0
  198. deepagents_code-0.1.66/tests/unit_tests/test_terminal_capabilities.py +43 -0
  199. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_terminal_escape.py +0 -40
  200. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_terminal_stderr.py +0 -24
  201. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_textual_patches.py +23 -171
  202. deepagents_code-0.1.66/tests/unit_tests/test_theme.py +1182 -0
  203. deepagents_code-0.1.66/tests/unit_tests/test_threads_resume.py +282 -0
  204. deepagents_code-0.1.66/tests/unit_tests/test_tool_catalog.py +340 -0
  205. deepagents_code-0.1.66/tests/unit_tests/test_tool_display.py +303 -0
  206. deepagents_code-0.1.66/tests/unit_tests/test_tracing_replicas.py +28 -0
  207. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_transcript_virtualization.py +0 -16
  208. deepagents_code-0.1.66/tests/unit_tests/test_ui.py +11 -0
  209. deepagents_code-0.1.66/tests/unit_tests/test_uninstall_command.py +1454 -0
  210. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_update_check.py +734 -3959
  211. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_version.py +5 -886
  212. deepagents_code-0.1.66/tests/unit_tests/test_workspace.py +159 -0
  213. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tools/test_current_thread.py +0 -7
  214. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tools/test_fetch_url.py +0 -73
  215. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/modals/plugin_manager/test_structure.py +1 -211
  216. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/modals/test_cold_cache.py +0 -95
  217. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/modals/test_model_switch.py +0 -14
  218. deepagents_code-0.1.66/tests/unit_tests/tui/modals/test_prompt_clipboard.py +60 -0
  219. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/test_textual_adapter.py +1781 -5590
  220. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_agent_selector.py +230 -0
  221. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_approval.py +575 -0
  222. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_ask_user.py +621 -0
  223. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_auto_mode_notice.py +22 -0
  224. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_autocomplete.py +604 -0
  225. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_chat_input.py +1897 -0
  226. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_cwd_switch.py +5 -89
  227. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_diff.py +342 -0
  228. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_goal_review.py +270 -0
  229. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_history.py +192 -0
  230. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_inline_prompt.py +0 -87
  231. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_install_confirm.py +122 -0
  232. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_launch_init.py +262 -0
  233. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_links.py +27 -170
  234. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_loading.py +62 -0
  235. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_mcp_login_modal.py +0 -47
  236. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_mcp_reconnect.py +0 -77
  237. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_mcp_viewer.py +1146 -0
  238. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_message_store.py +390 -0
  239. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_messages.py +171 -3163
  240. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_model_selector.py +1726 -0
  241. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_notification_center.py +209 -0
  242. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_notification_detail.py +54 -0
  243. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_notification_settings.py +0 -143
  244. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_restart_prompt.py +62 -0
  245. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_startup_tip.py +59 -0
  246. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_status.py +545 -0
  247. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_subagent_panel.py +263 -0
  248. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_thread_agent_switch.py +2 -56
  249. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_thread_selector.py +2436 -0
  250. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_tool_renderers.py +223 -0
  251. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_update_available.py +50 -0
  252. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_update_confirm.py +0 -42
  253. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_update_progress.py +1 -139
  254. deepagents_code-0.1.66/tests/unit_tests/tui/widgets/test_welcome.py +423 -0
  255. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/uv.lock +50 -50
  256. deepagents_code-0.1.64/README.md +0 -194
  257. deepagents_code-0.1.64/deepagents_code/reliable_rubric.py +0 -136
  258. deepagents_code-0.1.64/tests/integration_tests/test_goal_criteria_remote.py +0 -117
  259. deepagents_code-0.1.64/tests/unit_tests/client/commands/test_extras.py +0 -168
  260. deepagents_code-0.1.64/tests/unit_tests/client/commands/test_tools.py +0 -599
  261. deepagents_code-0.1.64/tests/unit_tests/plugins/test_plugin_hooks.py +0 -150
  262. deepagents_code-0.1.64/tests/unit_tests/plugins/test_plugins_p0.py +0 -1845
  263. deepagents_code-0.1.64/tests/unit_tests/plugins/test_store.py +0 -68
  264. deepagents_code-0.1.64/tests/unit_tests/skills/test_load.py +0 -934
  265. deepagents_code-0.1.64/tests/unit_tests/skills/test_merge.py +0 -420
  266. deepagents_code-0.1.64/tests/unit_tests/test__tool_stream.py +0 -737
  267. deepagents_code-0.1.64/tests/unit_tests/test_agent_friendly.py +0 -610
  268. deepagents_code-0.1.64/tests/unit_tests/test_args.py +0 -1022
  269. deepagents_code-0.1.64/tests/unit_tests/test_ask_user_types.py +0 -473
  270. deepagents_code-0.1.64/tests/unit_tests/test_charset.py +0 -364
  271. deepagents_code-0.1.64/tests/unit_tests/test_cli_provider.py +0 -351
  272. deepagents_code-0.1.64/tests/unit_tests/test_clipboard.py +0 -600
  273. deepagents_code-0.1.64/tests/unit_tests/test_command_registry.py +0 -392
  274. deepagents_code-0.1.64/tests/unit_tests/test_compact_tool.py +0 -764
  275. deepagents_code-0.1.64/tests/unit_tests/test_config_manifest.py +0 -4563
  276. deepagents_code-0.1.64/tests/unit_tests/test_configurable_model.py +0 -1920
  277. deepagents_code-0.1.64/tests/unit_tests/test_context_doctor.py +0 -160
  278. deepagents_code-0.1.64/tests/unit_tests/test_cost_tracking.py +0 -4008
  279. deepagents_code-0.1.64/tests/unit_tests/test_cursor_blink.py +0 -95
  280. deepagents_code-0.1.64/tests/unit_tests/test_cursor_style.py +0 -56
  281. deepagents_code-0.1.64/tests/unit_tests/test_debug_console.py +0 -2170
  282. deepagents_code-0.1.64/tests/unit_tests/test_diff_utils.py +0 -242
  283. deepagents_code-0.1.64/tests/unit_tests/test_editor.py +0 -347
  284. deepagents_code-0.1.64/tests/unit_tests/test_env_vars.py +0 -135
  285. deepagents_code-0.1.64/tests/unit_tests/test_exception_handling.py +0 -241
  286. deepagents_code-0.1.64/tests/unit_tests/test_extension_api.py +0 -198
  287. deepagents_code-0.1.64/tests/unit_tests/test_extension_discovery.py +0 -206
  288. deepagents_code-0.1.64/tests/unit_tests/test_extension_host_runtime.py +0 -117
  289. deepagents_code-0.1.64/tests/unit_tests/test_extension_hosting.py +0 -184
  290. deepagents_code-0.1.64/tests/unit_tests/test_git.py +0 -879
  291. deepagents_code-0.1.64/tests/unit_tests/test_goal_criteria_client.py +0 -521
  292. deepagents_code-0.1.64/tests/unit_tests/test_goal_rubric.py +0 -2663
  293. deepagents_code-0.1.64/tests/unit_tests/test_goal_state_limits.py +0 -288
  294. deepagents_code-0.1.64/tests/unit_tests/test_hooks.py +0 -600
  295. deepagents_code-0.1.64/tests/unit_tests/test_imports.py +0 -8
  296. deepagents_code-0.1.64/tests/unit_tests/test_input_parsing.py +0 -655
  297. deepagents_code-0.1.64/tests/unit_tests/test_iterm_cursor_guide.py +0 -256
  298. deepagents_code-0.1.64/tests/unit_tests/test_json_types.py +0 -35
  299. deepagents_code-0.1.64/tests/unit_tests/test_local_context.py +0 -2134
  300. deepagents_code-0.1.64/tests/unit_tests/test_main_acp_mode.py +0 -667
  301. deepagents_code-0.1.64/tests/unit_tests/test_main_args.py +0 -4188
  302. deepagents_code-0.1.64/tests/unit_tests/test_mcp_config.py +0 -214
  303. deepagents_code-0.1.64/tests/unit_tests/test_mcp_disabled.py +0 -230
  304. deepagents_code-0.1.64/tests/unit_tests/test_media_utils.py +0 -1121
  305. deepagents_code-0.1.64/tests/unit_tests/test_middleware_trace_policy.py +0 -55
  306. deepagents_code-0.1.64/tests/unit_tests/test_model_retry.py +0 -1482
  307. deepagents_code-0.1.64/tests/unit_tests/test_notifications.py +0 -198
  308. deepagents_code-0.1.64/tests/unit_tests/test_output.py +0 -62
  309. deepagents_code-0.1.64/tests/unit_tests/test_paths.py +0 -1520
  310. deepagents_code-0.1.64/tests/unit_tests/test_reasoning_effort.py +0 -1340
  311. deepagents_code-0.1.64/tests/unit_tests/test_repository_bounds.py +0 -240
  312. deepagents_code-0.1.64/tests/unit_tests/test_resume_state.py +0 -796
  313. deepagents_code-0.1.64/tests/unit_tests/test_rubric_cli.py +0 -363
  314. deepagents_code-0.1.64/tests/unit_tests/test_sandbox_factory.py +0 -1423
  315. deepagents_code-0.1.64/tests/unit_tests/test_server_config.py +0 -604
  316. deepagents_code-0.1.64/tests/unit_tests/test_server_graph.py +0 -716
  317. deepagents_code-0.1.64/tests/unit_tests/test_server_manager.py +0 -808
  318. deepagents_code-0.1.64/tests/unit_tests/test_session_stats.py +0 -1338
  319. deepagents_code-0.1.64/tests/unit_tests/test_startup_blocking.py +0 -72
  320. deepagents_code-0.1.64/tests/unit_tests/test_subagents.py +0 -731
  321. deepagents_code-0.1.64/tests/unit_tests/test_terminal_capabilities.py +0 -203
  322. deepagents_code-0.1.64/tests/unit_tests/test_theme.py +0 -3117
  323. deepagents_code-0.1.64/tests/unit_tests/test_threads_resume.py +0 -577
  324. deepagents_code-0.1.64/tests/unit_tests/test_tool_catalog.py +0 -755
  325. deepagents_code-0.1.64/tests/unit_tests/test_tool_display.py +0 -594
  326. deepagents_code-0.1.64/tests/unit_tests/test_tracing_replicas.py +0 -70
  327. deepagents_code-0.1.64/tests/unit_tests/test_ui.py +0 -72
  328. deepagents_code-0.1.64/tests/unit_tests/tui/modals/test_prompt_clipboard.py +0 -582
  329. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_agent_selector.py +0 -487
  330. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_approval.py +0 -1211
  331. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_ask_user.py +0 -2946
  332. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_auto_mode_notice.py +0 -91
  333. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_autocomplete.py +0 -1420
  334. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_chat_input.py +0 -8710
  335. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_diff.py +0 -1109
  336. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_goal_review.py +0 -605
  337. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_history.py +0 -546
  338. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_install_confirm.py +0 -395
  339. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_launch_init.py +0 -682
  340. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_loading.py +0 -161
  341. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_mcp_viewer.py +0 -2400
  342. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_message_store.py +0 -1646
  343. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_model_selector.py +0 -4526
  344. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_notification_center.py +0 -585
  345. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_notification_detail.py +0 -133
  346. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_restart_prompt.py +0 -127
  347. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_startup_tip.py +0 -155
  348. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_status.py +0 -1744
  349. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_subagent_panel.py +0 -590
  350. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_thread_selector.py +0 -5850
  351. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_tool_renderers.py +0 -642
  352. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_update_available.py +0 -185
  353. deepagents_code-0.1.64/tests/unit_tests/tui/widgets/test_welcome.py +0 -1113
  354. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/.gitignore +0 -0
  355. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/EXTENSIONS.md +0 -0
  356. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/HOOKS.md +0 -0
  357. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/LICENSE +0 -0
  358. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/PRICING.md +0 -0
  359. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/THREAT_MODEL.md +0 -0
  360. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/__init__.py +0 -0
  361. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/__main__.py +0 -0
  362. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_ask_user_types.py +0 -0
  363. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_debug_buffer.py +0 -0
  364. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_dep_floor_check.py +0 -0
  365. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_fake_models.py +0 -0
  366. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_git.py +0 -0
  367. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_glm_5p2_profile.py +0 -0
  368. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_home_error.py +0 -0
  369. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_invocation.py +0 -0
  370. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_markdown.py +0 -0
  371. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_paths.py +0 -0
  372. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_repository_bounds.py +0 -0
  373. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_reserved_names.py +0 -0
  374. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_startup_error.py +0 -0
  375. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_terminal_stderr.py +0 -0
  376. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_testing_models.py +0 -0
  377. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_tool_stream.py +0 -0
  378. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/_tracing.py +0 -0
  379. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/acp.py +0 -0
  380. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/app.tcss +0 -0
  381. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/approval_mode.py +0 -0
  382. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/ask_user.py +0 -0
  383. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/auth_display.py +0 -0
  384. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/auth_store.py +0 -0
  385. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/built_in_skills/__init__.py +0 -0
  386. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/built_in_skills/deepagents-thread-inspector/SKILL.md +0 -0
  387. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/built_in_skills/deepagents-thread-inspector/scripts/inspect_sessions.py +0 -0
  388. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
  389. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
  390. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  391. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  392. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/bundled_prices.README.md +0 -0
  393. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/bundled_prices.json +0 -0
  394. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/client/__init__.py +0 -0
  395. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/client/commands/__init__.py +0 -0
  396. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/client/commands/auth.py +0 -0
  397. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/client/commands/mcp.py +0 -0
  398. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/client/commands/tools.py +0 -0
  399. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/client/launch/__init__.py +0 -0
  400. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/client/launch/server.py +0 -0
  401. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/clipboard.py +0 -0
  402. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/cold_cache.py +0 -0
  403. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/configuration/__init__.py +0 -0
  404. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/configuration/interpreter.py +0 -0
  405. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/configuration/paths.py +0 -0
  406. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/configuration/provider.py +0 -0
  407. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/configuration/providers.py +0 -0
  408. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/configuration/resolver.py +0 -0
  409. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/configuration/service.py +0 -0
  410. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/configuration/theme_resolution.py +0 -0
  411. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/configuration/types.py +0 -0
  412. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/configuration/writer.py +0 -0
  413. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/default_agent_prompt.md +0 -0
  414. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/diff_utils.py +0 -0
  415. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/editor.py +0 -0
  416. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/event_bus.py +0 -0
  417. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/extensions/__init__.py +0 -0
  418. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/extensions/api.py +0 -0
  419. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/extensions/discovery.py +0 -0
  420. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/extensions/hosting.py +0 -0
  421. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/extensions/loader.py +0 -0
  422. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/extensions/registry.py +0 -0
  423. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/extensions/runtime.py +0 -0
  424. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/extensions/settings.py +0 -0
  425. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/extensions/trust.py +0 -0
  426. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/file_ops.py +0 -0
  427. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/formatting.py +0 -0
  428. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/goal_state_limits.py +0 -0
  429. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/goal_state_notice.py +0 -0
  430. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/goal_tools.py +0 -0
  431. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/__init__.py +0 -0
  432. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/capabilities.py +0 -0
  433. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/client.py +0 -0
  434. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/client_lifecycle.py +0 -0
  435. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/context.py +0 -0
  436. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/engine.py +0 -0
  437. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/env.py +0 -0
  438. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/envelope.py +0 -0
  439. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/interrupt.py +0 -0
  440. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/legacy.py +0 -0
  441. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/loading.py +0 -0
  442. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/manager.py +0 -0
  443. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/migration.py +0 -0
  444. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/models/__init__.py +0 -0
  445. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/models/adapters.py +0 -0
  446. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/models/config.py +0 -0
  447. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/models/domain.py +0 -0
  448. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/models/transport.py +0 -0
  449. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/models/wire.py +0 -0
  450. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/permissions.py +0 -0
  451. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/presenter.py +0 -0
  452. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/projection.py +0 -0
  453. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/reducer.py +0 -0
  454. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/runner.py +0 -0
  455. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/runtime.py +0 -0
  456. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/server_middleware.py +0 -0
  457. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/snapshot.py +0 -0
  458. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/tools.py +0 -0
  459. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/trust.py +0 -0
  460. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/hooks/validate_terminal_sequence.py +0 -0
  461. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/input.py +0 -0
  462. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/integrations/__init__.py +0 -0
  463. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/integrations/openai_codex.py +0 -0
  464. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/integrations/sandbox_config.py +0 -0
  465. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/integrations/sandbox_factory.py +0 -0
  466. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/integrations/sandbox_provider.py +0 -0
  467. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/integrations/sandbox_registry.py +0 -0
  468. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/iterm_cursor_guide.py +0 -0
  469. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/json_types.py +0 -0
  470. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/local_context.py +0 -0
  471. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/managed_tools.py +0 -0
  472. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/mcp_auth.py +0 -0
  473. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/mcp_config.py +0 -0
  474. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/mcp_disabled.py +0 -0
  475. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/mcp_login_service.py +0 -0
  476. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/mcp_oauth_ui.py +0 -0
  477. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/mcp_providers/__init__.py +0 -0
  478. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/mcp_providers/_registry.py +0 -0
  479. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/mcp_providers/base.py +0 -0
  480. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/mcp_providers/github.py +0 -0
  481. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/mcp_providers/slack.py +0 -0
  482. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/media_utils.py +0 -0
  483. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/memory_guard.py +0 -0
  484. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/notifications.py +0 -0
  485. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/offload.py +0 -0
  486. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/onboarding.py +0 -0
  487. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/output.py +0 -0
  488. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/paste_collapse.py +0 -0
  489. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/plugins/__init__.py +0 -0
  490. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/plugins/_json.py +0 -0
  491. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/plugins/adapters/__init__.py +0 -0
  492. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/plugins/adapters/hooks.py +0 -0
  493. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/plugins/adapters/mcp.py +0 -0
  494. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/plugins/adapters/skills.py +0 -0
  495. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/plugins/adapters/skills_middleware.py +0 -0
  496. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/plugins/commands_cli.py +0 -0
  497. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/plugins/models.py +0 -0
  498. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/plugins/store.py +0 -0
  499. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/plugins/substitution.py +0 -0
  500. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/project_utils.py +0 -0
  501. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/py.typed +0 -0
  502. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/reasoning_effort.py +0 -0
  503. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/sessions.py +0 -0
  504. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/skills/__init__.py +0 -0
  505. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/skills/commands.py +0 -0
  506. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/skills/invocation.py +0 -0
  507. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/skills/load.py +0 -0
  508. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/skills/merge.py +0 -0
  509. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/skills/trust.py +0 -0
  510. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/state_migration.py +0 -0
  511. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/subagents.py +0 -0
  512. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/system_prompt.md +0 -0
  513. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/terminal_capabilities.py +0 -0
  514. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/terminal_escape.py +0 -0
  515. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/theme.py +0 -0
  516. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tool_catalog.py +0 -0
  517. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tool_display.py +0 -0
  518. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tools.py +0 -0
  519. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/__init__.py +0 -0
  520. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/key_hints.py +0 -0
  521. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/modals/__init__.py +0 -0
  522. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/modals/cold_cache.py +0 -0
  523. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/modals/model_switch.py +0 -0
  524. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/modals/plugin_manager/__init__.py +0 -0
  525. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/modals/plugin_manager/models.py +0 -0
  526. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/modals/plugin_manager/plugin_manager.tcss +0 -0
  527. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/modals/plugin_manager/state.py +0 -0
  528. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/modals/plugin_manager/tabs.py +0 -0
  529. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/modals/prompt_clipboard.py +0 -0
  530. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/modals/prompt_clipboard.tcss +0 -0
  531. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/screens/__init__.py +0 -0
  532. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/__init__.py +0 -0
  533. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/_copy_spans.py +0 -0
  534. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/_inline_prompt.py +0 -0
  535. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/_js_eval_display.py +0 -0
  536. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/_links.py +0 -0
  537. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/_paste_textarea.py +0 -0
  538. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/agent_selector.py +0 -0
  539. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/ask_user.py +0 -0
  540. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/auth.py +0 -0
  541. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/autocomplete.py +0 -0
  542. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/chat_input.py +0 -0
  543. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/codex_auth.py +0 -0
  544. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/context_usage.py +0 -0
  545. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/diff.py +0 -0
  546. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/effort_selector.py +0 -0
  547. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/goal_review.py +0 -0
  548. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/history.py +0 -0
  549. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/install_confirm.py +0 -0
  550. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/launch_init.py +0 -0
  551. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/loading.py +0 -0
  552. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/mcp_reconnect.py +0 -0
  553. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/notification_center.py +0 -0
  554. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/notification_detail.py +0 -0
  555. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/notification_settings.py +0 -0
  556. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/prompt_search.py +0 -0
  557. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/restart_prompt.py +0 -0
  558. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/skill_trust.py +0 -0
  559. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/theme_selector.py +0 -0
  560. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/thread_selector.py +0 -0
  561. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/tool_renderers.py +0 -0
  562. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/tool_widgets.py +0 -0
  563. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/update_available.py +0 -0
  564. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/update_confirm.py +0 -0
  565. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/tui/widgets/update_progress.py +0 -0
  566. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/deepagents_code/unicode_security.py +0 -0
  567. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/examples/extensions/memory_store.py +0 -0
  568. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/examples/skills/arxiv-search/SKILL.md +0 -0
  569. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  570. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/examples/skills/langgraph-docs/SKILL.md +0 -0
  571. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/examples/skills/skill-creator/SKILL.md +0 -0
  572. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  573. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  574. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/examples/skills/web-research/SKILL.md +0 -0
  575. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/hatch_build.py +0 -0
  576. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/images/tui.png +0 -0
  577. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/scripts/check_imports.py +0 -0
  578. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/scripts/debug_server.sh +0 -0
  579. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/scripts/generate_commands_catalog.py +0 -0
  580. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/scripts/install.sh +0 -0
  581. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/README.md +0 -0
  582. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/integration_tests/__init__.py +0 -0
  583. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/integration_tests/benchmarks/__init__.py +0 -0
  584. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
  585. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/integration_tests/benchmarks/test_local_context_benchmarks.py +0 -0
  586. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/integration_tests/conftest.py +0 -0
  587. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/integration_tests/test_acp_mode.py +0 -0
  588. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/integration_tests/test_auto_approve_remote.py +0 -0
  589. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/integration_tests/test_compact_resume.py +0 -0
  590. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/integration_tests/test_offload_server_side.py +0 -0
  591. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/integration_tests/test_sandbox_factory.py +0 -0
  592. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/integration_tests/test_sandbox_operations.py +0 -0
  593. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/__init__.py +0 -0
  594. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/client/__init__.py +0 -0
  595. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/client/commands/__init__.py +0 -0
  596. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/client/commands/test_auth.py +0 -0
  597. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/conftest.py +0 -0
  598. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/data/coding_agent_v1_validator.json +0 -0
  599. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/hooks/__init__.py +0 -0
  600. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/hooks/models/__init__.py +0 -0
  601. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/hooks/test_trust.py +0 -0
  602. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/plugins/__init__.py +0 -0
  603. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/skills/__init__.py +0 -0
  604. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/skills/test_skill_trust.py +0 -0
  605. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/skills/test_skills_json.py +0 -0
  606. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/smoke_tests/__init__.py +0 -0
  607. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/smoke_tests/conftest.py +0 -0
  608. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/smoke_tests/snapshots/system_prompt_interactive_local.md +0 -0
  609. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/smoke_tests/test_system_prompt.py +0 -0
  610. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_acp.py +0 -0
  611. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_auth_display.py +0 -0
  612. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_auth_store.py +0 -0
  613. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_auth_web_search_restart.py +0 -0
  614. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_coding_agent_metadata.py +0 -0
  615. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_configuration_resolution.py +0 -0
  616. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_extension_config_manifest.py +0 -0
  617. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_extension_display.py +0 -0
  618. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_hatch_build.py +0 -0
  619. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
  620. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_sandbox_config.py +0 -0
  621. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_sandbox_provider.py +0 -0
  622. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_shell_allow_list.py +0 -0
  623. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_state_migration.py +0 -0
  624. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
  625. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_tracing.py +0 -0
  626. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/test_unicode_security.py +0 -0
  627. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tools/__init__.py +0 -0
  628. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tools/test_tool_arg_schemas.py +0 -0
  629. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/__init__.py +0 -0
  630. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/modals/__init__.py +0 -0
  631. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/modals/plugin_manager/__init__.py +0 -0
  632. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/test_key_hints.py +0 -0
  633. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/test_modal_footer_layout.py +0 -0
  634. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/test_subagent_stream.py +5 -5
  635. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/__init__.py +0 -0
  636. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_auth_widgets.py +0 -0
  637. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_copy_spans.py +15 -15
  638. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_prompt_search.py +0 -0
  639. {deepagents_code-0.1.64 → deepagents_code-0.1.66}/tests/unit_tests/tui/widgets/test_skill_trust_screen.py +0 -0
@@ -126,7 +126,7 @@ Debug logging is configured **once**, on the `deepagents_code` package logger, b
126
126
 
127
127
  - Do **not** add per-module `configure_debug_logging(logger)` calls. They are redundant now that the package logger is configured at import, and they reintroduce the duplicate-handler problem the single-config approach solves.
128
128
  - Every module should create its logger with `logging.getLogger(__name__)` so it stays inside the `deepagents_code.*` hierarchy and inherits the package handler. Don't set `logger.propagate = False` or attach your own handlers.
129
- - The **file** handler only attaches when `DEEPAGENTS_CODE_DEBUG` is truthy; that path is a single env-var read, so it's safe on the startup hot path. See `DEVELOPMENT.md` for the `DEEPAGENTS_CODE_DEBUG` / `DEEPAGENTS_CODE_DEBUG_FILE` / `DEEPAGENTS_CODE_LOG_LEVEL` env vars.
129
+ - The **file** handler only attaches when `DEEPAGENTS_CODE_DEBUG` is truthy and the active thread is known; that path is a small env-var read and filesystem operation, so it's safe on the startup hot path. See `DEVELOPMENT.md` for the `DEEPAGENTS_CODE_DEBUG` / `DEEPAGENTS_CODE_DEBUG_DIRECTORY` / `DEEPAGENTS_CODE_LOG_LEVEL` env vars.
130
130
  - Separately, an **always-on in-memory ring buffer** (`_debug_buffer.install_log_buffer`, called from `__init__.py` right before `configure_debug_logging`) attaches unconditionally at import so the in-app Debug Console (`Ctrl+\`) can tail recent `deepagents_code.*` records without file logging. It captures `INFO` and above by default (or `DEEPAGENTS_CODE_LOG_LEVEL`), and may lower the package logger to `INFO` for the process lifetime. It never spills to the terminal (a handler is always found, so `lastResort` is skipped) and is bounded (a `deque` of 1000 records *per log level*), so it's cheap enough to keep on. Because it installs *before* `configure_debug_logging`, warnings that helper emits at startup are captured and visible in the console.
131
131
 
132
132
  ## CLI help screen
@@ -85,4 +85,6 @@ The main cost is the client/server boundary. When debugging, first decide which
85
85
  - For cost estimates and local pricing overrides (`prices.json`), see
86
86
  [`PRICING.md`](./PRICING.md).
87
87
  - For security boundaries, see [`THREAT_MODEL.md`](./THREAT_MODEL.md).
88
+ - For how a transient model failure is retried after output has already streamed,
89
+ see [`STREAMING_RETRY_DESIGN.md`](./STREAMING_RETRY_DESIGN.md).
88
90
  - For package-specific coding conventions, see [`AGENTS.md`](./AGENTS.md).
@@ -2,6 +2,45 @@
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
+
25
+ ## [0.1.65](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.64...deepagents-code==0.1.65) (2026-08-28)
26
+
27
+ ### Features
28
+
29
+ - Added Python extension support, including discovery, configuration and loading, runtime hosting, and trust and inspection UX ([#5631](https://github.com/langchain-ai/deepagents/issues/5631), [#5632](https://github.com/langchain-ai/deepagents/issues/5632), [#5633](https://github.com/langchain-ai/deepagents/issues/5633), [#5634](https://github.com/langchain-ai/deepagents/issues/5634))
30
+ - Added a `/summarization-model` command and model picker for configuring the summarization model ([#5884](https://github.com/langchain-ai/deepagents/issues/5884), [#5932](https://github.com/langchain-ai/deepagents/issues/5932))
31
+ - Added support for optional extra uninstall commands ([#5875](https://github.com/langchain-ai/deepagents/issues/5875))
32
+ - Added an option to show visible reasoning ([#5887](https://github.com/langchain-ai/deepagents/issues/5887))
33
+
34
+ ### Bug Fixes
35
+
36
+ - Improved model and task reliability by retrying interrupted model streams, recovering stale pending work before compaction, and isolating parallel `task` failures ([#5905](https://github.com/langchain-ai/deepagents/issues/5905), [#5909](https://github.com/langchain-ai/deepagents/issues/5909), [#5954](https://github.com/langchain-ai/deepagents/issues/5954))
37
+ - Improved server restart handling by waiting for graph readiness before continuing ([#5947](https://github.com/langchain-ai/deepagents/issues/5947))
38
+ - Capped MCP tool names for provider compatibility ([#5953](https://github.com/langchain-ai/deepagents/issues/5953))
39
+ - Fixed Auto approval gate path expansion handling and now records Auto classifier deadline misses as traced errors ([#5941](https://github.com/langchain-ai/deepagents/issues/5941), [#5944](https://github.com/langchain-ai/deepagents/issues/5944))
40
+ - Completed ASCII UI fallbacks and hid inactive F2 tool hints ([#5930](https://github.com/langchain-ai/deepagents/issues/5930), [#5939](https://github.com/langchain-ai/deepagents/issues/5939))
41
+ - Isolated debug logs by thread ([#5921](https://github.com/langchain-ai/deepagents/issues/5921))
42
+ - Updated rubric grader model changes to apply without a restart ([#5885](https://github.com/langchain-ai/deepagents/issues/5885))
43
+
5
44
  ## [0.1.64](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.63...deepagents-code==0.1.64) (2026-08-28)
6
45
 
7
46
  ### Features
@@ -8,7 +8,7 @@ Regenerate this file with `make commands-catalog` after changing command names,
8
8
  aliases, descriptions, visibility, or hidden-command metadata.
9
9
 
10
10
 
11
- ## Public (43)
11
+ ## Public (45)
12
12
 
13
13
  | Command | Aliases | Description |
14
14
  | --- | --- | --- |
@@ -46,12 +46,14 @@ aliases, descriptions, visibility, or hidden-command metadata.
46
46
  | `/rubric` | `/criteria` | Set explicit acceptance criteria for rubric grading |
47
47
  | `/scrollbar` | | Show or hide the chat scrollbar |
48
48
  | `/skill-creator` | | Create or refine agent skills |
49
+ | `/summarization-model` | | Set the model used for context-compaction summaries |
49
50
  | `/theme` | | Change color theme |
50
51
  | `/threads` | | Browse and resume past threads |
51
52
  | `/timestamps` | | Show or hide message timestamps |
52
53
  | `/tokens` | | Show token usage |
53
54
  | `/tools` | | List the tools available to the agent |
54
55
  | `/trace` | | Open this thread in LangSmith |
56
+ | `/uninstall` | | Remove an installed optional extra |
55
57
  | `/update` | | Check for and install updates |
56
58
  | `/version` | `/about` | Show version information |
57
59
  | `/yolo` | | Switch to YOLO approval mode (no review) |
@@ -102,14 +102,15 @@ uv run deepagents-code
102
102
  | Variable | Effect |
103
103
  | --- | --- |
104
104
  | `DEEPAGENTS_CODE_DEBUG` | Master switch. Preserves the server subprocess log on exit (printing its path to stderr) and attaches the client `DEBUG` file handler. Truthy: `1`/`true`/`yes`/`on` (case-insensitive). Falsy: `0`/`false`/`no`/`off`/empty/unset. |
105
- | `DEEPAGENTS_CODE_DEBUG_FILE=<path>` | Overrides the client log path (default `/tmp/deepagents_debug.log`). **Only takes effect when `DEEPAGENTS_CODE_DEBUG` is truthy**; does **not** affect the server subprocess log. |
105
+ | `DEEPAGENTS_CODE_DEBUG_DIRECTORY=<path>` | Overrides the client log directory (default `/tmp/deepagents_debug`). Each thread writes to `<thread-id>.log`. **Only takes effect when `DEEPAGENTS_CODE_DEBUG` is truthy**; does **not** affect the server subprocess log. |
106
+ | `DEEPAGENTS_CODE_DEBUG_FILE=<path>` | Deprecated compatibility override. When `DEEPAGENTS_CODE_DEBUG_DIRECTORY` and `[debug].directory` are unset, per-thread logs use this path's parent directory. Existing `[debug].file` config works the same way. |
106
107
 
107
108
  Then pick the log you need by symptom:
108
109
 
109
110
  | Symptom | Log you want | Default location |
110
111
  | --- | --- | --- |
111
112
  | App crashes on launch (one-line failure banner) | **Server subprocess log** — the real traceback | `$TMPDIR/deepagents_server_log_*.txt` |
112
- | App starts, then misbehaves (UI, model calls, slash commands) | **Client app log** — `deepagents_code` at `DEBUG` | `/tmp/deepagents_debug.log` |
113
+ | App starts, then misbehaves (UI, model calls, slash commands) | **Client app log** — `deepagents_code` at `DEBUG` | `/tmp/deepagents_debug/<thread-id>.log` |
113
114
 
114
115
  ### Startup crash -> server subprocess log
115
116
 
@@ -133,12 +134,12 @@ The TUI only surfaces a one-line banner; the actual exception lives in the subpr
133
134
  For problems that appear after the app is up, tail the client log in another terminal while reproducing:
134
135
 
135
136
  ```bash
136
- tail -f /tmp/deepagents_debug.log
137
+ tail -f /tmp/deepagents_debug/<thread-id>.log
137
138
  ```
138
139
 
139
- To send it elsewhere, also `export DEEPAGENTS_CODE_DEBUG_FILE=<path>`. The handler appends across runs, so a single file accumulates every session.
140
+ To send logs elsewhere, also `export DEEPAGENTS_CODE_DEBUG_DIRECTORY=<path>`. Each thread gets its own append-only file, and changing threads in the app switches the active log file.
140
141
 
141
- The file is created or tightened to user-only access. A symlink at the path is refused. If the file cannot be secured, no file handler is attached and a warning goes to stderr. Use the in-app Debug Console in that case.
142
+ The directory is created or tightened to owner-only access, and each file is created or tightened to user-only access. Symlinks are refused. If either cannot be secured, no file handler is attached and a warning goes to stderr. Use the in-app Debug Console in that case.
142
143
 
143
144
  Stdio MCP server stderr is captured here at `DEBUG`. This keeps server-side failures visible when the TUI cannot show process stderr. Each record is one line, capped at 4096 characters. Characters in the Unicode `C` categories are removed, which includes control and format characters. The ESC byte of an ANSI sequence is removed but the rest stays as literal text, so the log is not free of escape-sequence residue. The text comes from the server. It can contain credentials or other sensitive values. Enable `DEBUG` logging only if you accept that risk, and do not share the log file.
144
145
 
@@ -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.64
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.0
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.1
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'
@@ -200,128 +200,6 @@ By default, `dcode` trusts the directory you run it in. Human-in-the-loop approv
200
200
 
201
201
  Do not run `dcode` in a directory you do not trust without a sandbox backend. For untrusted repositories, use a [remote sandbox](https://docs.langchain.com/oss/python/deepagents/code/remote-sandboxes) so execution is isolated from your machine. Running `dcode` in a directory lets that directory's files shape execution. See [`THREAT_MODEL.md`](https://github.com/langchain-ai/deepagents/blob/main/libs/code/THREAT_MODEL.md) for details.
202
202
 
203
- ## Managed configuration
204
-
205
- Administrators can enforce any supported `config.toml` setting with a read-only
206
- `managed_config.toml` using the same TOML schema:
207
-
208
- - macOS: `/Library/Application Support/dcode/managed_config.toml`
209
- - Windows: the `ProgramData` directory reported by the registry, usually
210
- `C:\ProgramData\dcode\managed_config.toml`. The `%ProgramData%` environment
211
- variable is ignored, because any user can change it.
212
- - Linux and other supported POSIX systems: `/etc/dcode/managed_config.toml`
213
-
214
- Managed values override two lower layers: the `DEEPAGENTS_CODE_` and
215
- compatibility environment variables, and `~/.deepagents/config.toml`.
216
-
217
- For an agent launch, managed values also override these CLI flags: the model,
218
- the auto-classifier model, the interpreter toggle, the programmatic tool-calling
219
- list, the recursion limit, the shell allow list, and the startup mode. A managed
220
- `[sandboxes].default` names the backend of a launch that is already sandboxed;
221
- it does not sandbox a launch that asked for no sandbox. A managed startup mode
222
- only revokes `--auto-approve` and `--yolo`; the mode itself reaches the runtime
223
- through the merged configuration, so a headless launch still works. Subcommand
224
- display flags such as `dcode threads --relative` are not overridden.
225
-
226
- Tables merge recursively. Deny lists are unioned. An explicitly managed allow or
227
- trust list replaces lower-precedence grants. An empty managed list removes every
228
- lower-precedence grant.
229
-
230
- A managed value whose type contradicts the manifest is ignored, and the
231
- lower-precedence value stays in effect. Two exceptions:
232
-
233
- - The enforced keys (`startup.mode`, `startup.yolo_switcher`,
234
- `shell.allow_list`, `skills.extra_allowed_dirs`,
235
- `interpreter.enable_interpreter`, `interpreter.ptc`,
236
- `interpreter.ptc_acknowledge_unsafe`, `models.allowed`,
237
- `models.auto_classifier`, `runtime.recursion_limit`, `sandboxes.default`,
238
- `tracing.langsmith_redact`)
239
- stop every command except `config`, `doctor`, `auth path`, and the help
240
- screens. If one is ignored, the user's flag or environment variable stays in
241
- force. This grants the escalation, or it removes the boundary that the policy
242
- declared. Three
243
- cases stop the launch and block `/reload`: a value the manifest rejects, a
244
- `runtime.recursion_limit` outside its bounds, and a key shadowed by a scalar
245
- ancestor (`startup = "manual"` in place of `[startup]` and `mode`). A managed
246
- `[sandboxes].default` that names an unavailable backend stops a sandboxed
247
- launch; a launch that asked for no sandbox is unaffected. A scalar at any
248
- known configuration section (for example, `threads = "bad"` instead of
249
- `[threads]`) also stops launch and reload rather than replacing the user's
250
- whole section.
251
- - Inside structured tables (`[models.providers]`, `[themes]`,
252
- `[async_subagents]`, `[sandboxes.providers]`) the dedicated typed reader
253
- validates instead, so a wrong-typed managed leaf can displace a valid user
254
- leaf. The reader then falls back to the built-in default. A managed scalar
255
- still replaces a colliding user table there, the same as on the top-level
256
- merge.
257
-
258
- `[shell].allow_list` is read from `~/.deepagents/config.toml` and from
259
- `DEEPAGENTS_CODE_SHELL_ALLOW_LIST`, so a managed file can enforce it. A user can
260
- also grant themselves shell auto-approval from their own config file. An empty
261
- managed list removes every lower-precedence grant.
262
-
263
- `[models].allowed` narrows dcode to exact `provider:model` specifications:
264
-
265
- ```toml
266
- [models]
267
- allowed = ["acme:production", "acme:production-fast"]
268
- ```
269
-
270
- The rules:
271
-
272
- - A missing key preserves unrestricted model selection.
273
- - An empty list blocks all local model use.
274
- - A list that dcode cannot parse also blocks all local model use. A typo must not
275
- silently remove the restriction the user asked for. Fix or remove the key.
276
- - Matching is exact and splits only the first colon, so model identifiers may
277
- contain additional colons. Matching is also case-sensitive.
278
- - Entries must be fully qualified. A bare model name that you type at a prompt
279
- is first resolved to `provider:model`, the same as at construction, so
280
- `gpt-5.6-terra` matches an `openai:gpt-5.6-terra` entry. A bare name whose
281
- provider dcode cannot infer never matches.
282
- - Write a Bedrock model as `bedrock:<id>`. A bare Bedrock ID is rejected,
283
- because its version colon would make it a specification that nothing matches.
284
- - The list filters model discovery and the selector. Construction-time checks
285
- are authoritative for CLI flags, runtime switches, Auto classifiers, rubric
286
- graders, and explicit local subagent models.
287
- - A managed list replaces a user list. Managed default, recent, and
288
- Auto-classifier models must also appear in it.
289
- - `[models.providers.<name>].models` registers models additively. It does not
290
- grant permission, so a custom model may need both registration and an
291
- allowlist entry.
292
-
293
- `dcode` never writes the managed file. Users can still save a preference. The
294
- theme, terminal-mapping, UI-toggle, and MCP-server screens, and the
295
- `--auto-update` flag, report when a managed value keeps a saved preference from
296
- taking effect. The model-default, recent-model, and Auto-classifier writers
297
- refuse a value outside the effective allowlist, and report the policy as the
298
- reason. Other save paths do not check the allowlist.
299
-
300
- A missing managed file applies no policy. If one exists but is unreadable, not
301
- UTF-8, or invalid TOML, every command fails closed except the ones needed to
302
- diagnose it: `--help`, `--version`, `help`, `config`, `doctor`, and
303
- `auth path`. A managed file that becomes unusable later also blocks `/reload`:
304
- the session keeps the policy that was in force, and the reload reports that it
305
- kept it. Use `dcode config path` and `dcode doctor` to inspect its
306
- fixed path and parse health; `dcode config` also warns when the file exists but
307
- could not be parsed, or parses and declares a value that cannot be enforced.
308
-
309
- A deny list that cannot be read denies everything rather than nothing. This
310
- covers a managed `[mcp].disabled_servers` that is neither an array of names nor
311
- a comma-separated string, and a `[mcp]` section that is not a table. A managed
312
- `[mcp].enabled_project_server_approvals` that is not an array is treated the
313
- same way: the key is present, so policy means to narrow access, and reading its
314
- presence as absence would leave both the user's approvals and the
315
- `DEEPAGENTS_CODE_DANGEROUSLY_ENABLE_PROJECT_MCP_SERVERS` bypass in force.
316
-
317
- A corrupt `~/.deepagents/config.toml` does not disable managed policy: the user
318
- file is ignored and managed values still apply.
319
-
320
- Deployment tooling must create and protect this file with administrator or root
321
- permissions. `dcode` does not validate the file owner or mode. `dcode` provides
322
- no privileged writer. Deployment and `sudo` policy are the administrator's
323
- responsibility.
324
-
325
203
  ## 📖 Resources
326
204
 
327
205
  - **[Documentation](https://docs.langchain.com/deepagents-code)**
@@ -0,0 +1,72 @@
1
+ # 🧠🤖 Deep Agents Code
2
+
3
+ [![PyPI - Version](https://img.shields.io/pypi/v/deepagents-code?label=%20)](https://pypi.org/project/deepagents-code/#history)
4
+ [![PyPI - License](https://img.shields.io/pypi/l/deepagents-code)](https://opensource.org/licenses/MIT)
5
+ [![PyPI - Downloads](https://img.shields.io/pepy/dt/deepagents-code)](https://pypistats.org/packages/deepagents-code)
6
+ [![Twitter](https://img.shields.io/twitter/url/https/twitter.com/langchain_oss.svg?style=social&label=Follow%20%40LangChain)](https://x.com/langchain_oss)
7
+
8
+ <p align="center">
9
+ <img src="https://raw.githubusercontent.com/langchain-ai/deepagents/main/libs/code/images/tui.png" alt="Deep Agents Code" width="600"/>
10
+ </p>
11
+
12
+ ## Quick Install
13
+
14
+ ```bash
15
+ curl -LsSf https://langch.in/dcode | bash
16
+ ```
17
+
18
+ ```bash
19
+ # With model provider extras
20
+ # OpenAI, Anthropic, and Gemini are included by default
21
+ DEEPAGENTS_CODE_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/dcode | bash
22
+ ```
23
+
24
+ Run:
25
+
26
+ ```bash
27
+ dcode
28
+ ```
29
+
30
+ ## 🤔 What is this?
31
+
32
+ The fastest way to start using Deep Agents. `deepagents-code` is a pre-built coding agent in your terminal — similar to Claude Code or Cursor — powered by any LLM that supports tool calling. One install command and you're up and running, no code required.
33
+
34
+ **What `deepagents-code` adds on top of the SDK:**
35
+
36
+ - **Interactive TUI** — rich terminal interface with streaming responses
37
+ - **Conversation resume** — pick up where you left off across sessions
38
+ - **Web search** — ground responses in live information
39
+ - **Remote sandboxes** — run code in isolated environments (LangSmith, AgentCore, Daytona, Modal, Runloop, & more)
40
+ - **Persistent memory** — agent remembers context across conversations
41
+ - **Custom skills** — extend the agent with your own slash commands
42
+ - **Headless mode** — run non-interactively for scripting and CI
43
+ - **Human-in-the-loop** — approve or reject tool calls before execution
44
+
45
+ ## 🔒 Security model
46
+
47
+ By default, `dcode` trusts the directory you run it in. Human-in-the-loop approval gates model-requested tool calls, but project artifacts are read before any approval prompt.
48
+
49
+ Do not run `dcode` in a directory you do not trust without a sandbox backend. For untrusted repositories, use a [remote sandbox](https://docs.langchain.com/oss/python/deepagents/code/remote-sandboxes) so execution is isolated from your machine. Running `dcode` in a directory lets that directory's files shape execution. See [`THREAT_MODEL.md`](https://github.com/langchain-ai/deepagents/blob/main/libs/code/THREAT_MODEL.md) for details.
50
+
51
+ ## 📖 Resources
52
+
53
+ - **[Documentation](https://docs.langchain.com/deepagents-code)**
54
+ - **[Changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/code/CHANGELOG.md)**
55
+ - **[Source code](https://github.com/langchain-ai/deepagents/tree/main/libs/code)**
56
+ - **[Deep Agents SDK](https://github.com/langchain-ai/deepagents)** — underlying agent harness
57
+ - [LangChain Academy](https://academy.langchain.com/) — Comprehensive, free courses on LangChain libraries and products, made by the LangChain team.
58
+ - [Code of Conduct](https://github.com/langchain-ai/langchain/?tab=coc-ov-file) — community guidelines and standards
59
+
60
+ ## 📕 Releases & Versioning
61
+
62
+ See our [Releases](https://docs.langchain.com/oss/python/release-policy) and [Versioning](https://docs.langchain.com/oss/python/versioning) policies.
63
+
64
+ ## 💁 Contributing
65
+
66
+ As an open-source project in a rapidly developing field, we are extremely open to contributions, whether it be in the form of a new feature, improved infrastructure, or better documentation.
67
+
68
+ For detailed information on how to contribute, see the [Contributing Guide](https://docs.langchain.com/oss/python/contributing/overview).
69
+
70
+ ## 🤝 Acknowledgements
71
+
72
+ This project was primarily inspired by Claude Code, and initially was largely an attempt to see what made Claude Code general purpose, and make it even more so.
@@ -1,3 +1,3 @@
1
1
  """Generated at build time. Do not edit or commit."""
2
2
 
3
- BUILD_COMMIT = "d8686f7"
3
+ BUILD_COMMIT = "3812967"
@@ -9,7 +9,7 @@ middleware stack.
9
9
  from __future__ import annotations
10
10
 
11
11
  from dataclasses import dataclass, field
12
- from typing import Any, TypedDict
12
+ from typing import Any, TypedDict, cast
13
13
 
14
14
  INHERIT_CLASSIFIER_MODEL = "__dcode_inherit_classifier__"
15
15
  """Per-run `classifier_model` value meaning "review with the main agent model".
@@ -30,6 +30,15 @@ startup classifier authorizing actions after the UI reported the clear, so the
30
30
  sentinel stays plain ASCII.
31
31
  """
32
32
 
33
+ INHERIT_SUMMARIZATION_MODEL = "__dcode_inherit_summarization__"
34
+ """Per-run `summarization_model` value meaning "use the main agent model".
35
+
36
+ An absent (or `None`) `summarization_model` leaves the graph's startup summary
37
+ model in effect. `/summarization-model clear` needs the stronger statement that
38
+ summaries go back to the main agent model, which this sentinel carries across
39
+ the remote JSON boundary without being mistaken for a model spec.
40
+ """
41
+
33
42
 
34
43
  @dataclass
35
44
  class CLIContextSchema:
@@ -54,6 +63,8 @@ class CLIContextSchema:
54
63
 
55
64
  model_params: dict[str, Any] = field(default_factory=dict)
56
65
 
66
+ summarization_model: str | None = None
67
+
57
68
  profile_overrides: dict[str, Any] = field(default_factory=dict)
58
69
 
59
70
  model_context_limit: int | None = None
@@ -76,6 +87,83 @@ class CLIContextSchema:
76
87
 
77
88
  prompt_id: str | None = None
78
89
 
90
+ workspace: dict[str, Any] = field(default_factory=dict)
91
+
92
+ @classmethod
93
+ def from_payload(cls, payload: object) -> CLIContextSchema | None:
94
+ """Coerce a run's `context=` payload into this schema.
95
+
96
+ In-process LangGraph coerces the payload before consumers see it, so a
97
+ schema instance is returned unchanged. Over the API server (RemoteGraph)
98
+ the payload is JSON and arrives as a plain dict, which this rebuilds
99
+ field by field. Single conversion point for every consumer: a second
100
+ hand-rolled copy drifts field by field, and the copy that forgets a
101
+ field drops it silently.
102
+
103
+ Args:
104
+ payload: The value read from `runtime.context`.
105
+
106
+ Returns:
107
+ The coerced schema, or `None` when the payload is neither a
108
+ `CLIContextSchema` nor a dict.
109
+ """
110
+ if isinstance(payload, cls):
111
+ return payload
112
+ if not isinstance(payload, dict):
113
+ return None
114
+ data = cast("dict[str, Any]", payload)
115
+
116
+ def _str(key: str) -> str | None:
117
+ value = data.get(key)
118
+ return value if isinstance(value, str) else None
119
+
120
+ def _mapping(key: str) -> dict[str, Any]:
121
+ # `dict(...)` on a non-mapping (`"x"`, `7`, ...) raises
122
+ # `TypeError`/`ValueError`, which would abort the request before the
123
+ # model handler runs — even when the malformed field is unrelated to
124
+ # model selection. Fall back to empty instead.
125
+ value = data.get(key)
126
+ return dict(value) if isinstance(value, dict) else {}
127
+
128
+ # `bool` is an `int` subclass, so exclude it explicitly.
129
+ raw_limit = data.get("model_context_limit")
130
+ limit = (
131
+ raw_limit
132
+ if isinstance(raw_limit, int) and not isinstance(raw_limit, bool)
133
+ else None
134
+ )
135
+ approval_mode = _str("approval_mode")
136
+ raw_auto_approve = data.get("auto_approve")
137
+ # Only a real list is safe to iterate: `7` raises `TypeError`, and a
138
+ # bare string (`"PreToolUse"`) would explode into per-character events.
139
+ raw_events = data.get("hooks_server_events")
140
+ events = (
141
+ [event for event in raw_events if isinstance(event, str)]
142
+ if isinstance(raw_events, list)
143
+ else []
144
+ )
145
+ return cls(
146
+ model=_str("model"),
147
+ model_params=_mapping("model_params"),
148
+ summarization_model=_str("summarization_model"),
149
+ profile_overrides=_mapping("profile_overrides"),
150
+ model_context_limit=limit,
151
+ classifier_model=_str("classifier_model"),
152
+ approval_mode=approval_mode or "manual",
153
+ # Fail closed for malformed remote payloads. In particular,
154
+ # `bool("false")` is `True` and would enable legacy YOLO mode.
155
+ auto_approve=(
156
+ raw_auto_approve if isinstance(raw_auto_approve, bool) else False
157
+ ),
158
+ approval_mode_key=_str("approval_mode_key"),
159
+ thread_id=_str("thread_id"),
160
+ turn_id=_str("turn_id"),
161
+ hooks_snapshot_id=_str("hooks_snapshot_id"),
162
+ hooks_server_events=events,
163
+ prompt_id=_str("prompt_id"),
164
+ workspace=_mapping("workspace"),
165
+ )
166
+
79
167
 
80
168
  class CLIContext(TypedDict, total=False):
81
169
  """Client-facing builder for the per-run graph context payload.
@@ -94,6 +182,17 @@ class CLIContext(TypedDict, total=False):
94
182
  """Invocation params (e.g. `temperature`, `max_tokens`) to merge
95
183
  into `model_settings`."""
96
184
 
185
+ summarization_model: str | None
186
+ """Model spec used only for context-compaction summary generation.
187
+
188
+ `None` or an absent key keeps the graph's startup summary model.
189
+ `INHERIT_SUMMARIZATION_MODEL` explicitly selects the main agent model. This
190
+ value never changes the main model or its system-prompt identity: its only
191
+ consumers are the summary-generation slots installed by
192
+ `offload_middleware._summarization_for_runtime`, so compaction thresholds
193
+ and token counting still track the main model.
194
+ """
195
+
97
196
  profile_overrides: dict[str, Any]
98
197
  """Model profile metadata supplied by `--profile-override`."""
99
198
 
@@ -153,3 +252,6 @@ class CLIContext(TypedDict, total=False):
153
252
 
154
253
  prompt_id: str | None
155
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
 
@@ -0,0 +1,30 @@
1
+ """Shared reading of provider content blocks.
2
+
3
+ The three surfaces that render a streamed or replayed `AIMessage` -- the
4
+ transcript projection in `deepagents_code.app`, the interactive TUI
5
+ (`deepagents_code.tui.textual_adapter`), and the headless runner
6
+ (`deepagents_code.client.non_interactive`) -- all have to decide which blocks
7
+ carry reasoning. Keeping that decision here stops the three from drifting when
8
+ the block schema grows a new shape.
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+
14
+ def reasoning_text(block: object) -> str | None:
15
+ """Extract renderable reasoning text from a content block.
16
+
17
+ Args:
18
+ block: One entry of `AIMessage.content_blocks`. Typed loosely because
19
+ the three surfaces reach it through differently typed streams.
20
+
21
+ Returns:
22
+ The block's reasoning text, or `None` when the block is not reasoning
23
+ or carries nothing worth rendering.
24
+ """
25
+ if not isinstance(block, dict) or block.get("type") != "reasoning":
26
+ return None
27
+ text = block.get("reasoning")
28
+ if not isinstance(text, str) or not text:
29
+ return None
30
+ return text