deepagents-code 0.1.84__tar.gz → 0.1.85__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 (604) hide show
  1. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/CHANGELOG.md +10 -0
  2. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/PKG-INFO +13 -13
  3. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_build_info.py +1 -1
  4. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_version.py +1 -1
  5. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/_cost_breakdown.py +37 -38
  6. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/cost_breakdown.py +6 -9
  7. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/auto_mode_notice.py +1 -1
  8. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/messages.py +1 -1
  9. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/yolo_mode_notice.py +1 -1
  10. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/pyproject.toml +11 -11
  11. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/scripts/install.sh +1 -3
  12. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_app.py +7 -5
  13. deepagents_code-0.1.85/tests/unit_tests/test_cost_breakdown.py +35 -0
  14. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_debug_console.py +7 -6
  15. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/uv.lock +52 -51
  16. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/.gitignore +0 -0
  17. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/AGENTS.md +0 -0
  18. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/ARCHITECTURE.md +0 -0
  19. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/COMMANDS.md +0 -0
  20. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/DEVELOPMENT.md +0 -0
  21. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/EXTENSIONS.md +0 -0
  22. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/HOOKS.md +0 -0
  23. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/LICENSE +0 -0
  24. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/Makefile +0 -0
  25. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/PRICING.md +0 -0
  26. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/README.md +0 -0
  27. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/THREAT_MODEL.md +0 -0
  28. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/__init__.py +0 -0
  29. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/__main__.py +0 -0
  30. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_ask_user_types.py +0 -0
  31. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_async.py +0 -0
  32. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_cli_context.py +0 -0
  33. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_constants.py +0 -0
  34. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_content_blocks.py +0 -0
  35. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_debug.py +0 -0
  36. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_debug_buffer.py +0 -0
  37. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_dep_floor_check.py +0 -0
  38. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_env_vars.py +0 -0
  39. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_fake_models.py +0 -0
  40. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_git.py +0 -0
  41. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_glm_5p2_profile.py +0 -0
  42. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_home_error.py +0 -0
  43. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_invocation.py +0 -0
  44. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_js_cost.py +0 -0
  45. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_markdown.py +0 -0
  46. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_paths.py +0 -0
  47. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_repository_bounds.py +0 -0
  48. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_reserved_names.py +0 -0
  49. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_server_config.py +0 -0
  50. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_session_stats.py +0 -0
  51. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_startup_error.py +0 -0
  52. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_terminal_stderr.py +0 -0
  53. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_testing_models.py +0 -0
  54. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_textual_patches.py +0 -0
  55. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_tool_free.py +0 -0
  56. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_tool_stream.py +0 -0
  57. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/_tracing.py +0 -0
  58. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/acp.py +0 -0
  59. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/agent.py +0 -0
  60. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/app.py +0 -0
  61. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/app.tcss +0 -0
  62. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/approval_mode.py +0 -0
  63. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/ask_user.py +0 -0
  64. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/auth_display.py +0 -0
  65. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/auth_store.py +0 -0
  66. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/auto_mode.py +0 -0
  67. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/btw.py +0 -0
  68. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/btw_api.py +0 -0
  69. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/btw_cost.py +0 -0
  70. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/built_in_skills/__init__.py +0 -0
  71. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/built_in_skills/deepagents-plugin-discovery/SKILL.md +0 -0
  72. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/built_in_skills/deepagents-thread-inspector/SKILL.md +0 -0
  73. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/built_in_skills/deepagents-thread-inspector/scripts/inspect_sessions.py +0 -0
  74. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
  75. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
  76. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  77. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  78. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/bundled_prices.README.md +0 -0
  79. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/bundled_prices.json +0 -0
  80. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/client/__init__.py +0 -0
  81. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/client/commands/__init__.py +0 -0
  82. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/client/commands/auth.py +0 -0
  83. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/client/commands/config.py +0 -0
  84. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/client/commands/extras.py +0 -0
  85. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/client/commands/mcp.py +0 -0
  86. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/client/commands/tools.py +0 -0
  87. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/client/launch/__init__.py +0 -0
  88. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/client/launch/server.py +0 -0
  89. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/client/launch/server_manager.py +0 -0
  90. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/client/non_interactive.py +0 -0
  91. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/client/remote_client.py +0 -0
  92. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/client/session_cost.py +0 -0
  93. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/clipboard.py +0 -0
  94. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/cold_cache.py +0 -0
  95. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/command_registry.py +0 -0
  96. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/config.py +0 -0
  97. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/config_manifest.py +0 -0
  98. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/configurable_model.py +0 -0
  99. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/configuration/__init__.py +0 -0
  100. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/configuration/interpreter.py +0 -0
  101. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/configuration/paths.py +0 -0
  102. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/configuration/provider.py +0 -0
  103. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/configuration/providers.py +0 -0
  104. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/configuration/resolver.py +0 -0
  105. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/configuration/service.py +0 -0
  106. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/configuration/theme_resolution.py +0 -0
  107. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/configuration/types.py +0 -0
  108. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/configuration/writer.py +0 -0
  109. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/context_doctor.py +0 -0
  110. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/cost_tracking.py +0 -0
  111. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/default_agent_prompt.md +0 -0
  112. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/diff_utils.py +0 -0
  113. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/doctor.py +0 -0
  114. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/editor.py +0 -0
  115. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/event_bus.py +0 -0
  116. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/extensions/__init__.py +0 -0
  117. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/extensions/api.py +0 -0
  118. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/extensions/discovery.py +0 -0
  119. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/extensions/hosting.py +0 -0
  120. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/extensions/loader.py +0 -0
  121. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/extensions/registry.py +0 -0
  122. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/extensions/runtime.py +0 -0
  123. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/extensions/settings.py +0 -0
  124. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/extensions/trust.py +0 -0
  125. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/extras_info.py +0 -0
  126. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/file_ops.py +0 -0
  127. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/formatting.py +0 -0
  128. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/goal_rubric.py +0 -0
  129. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/goal_state_limits.py +0 -0
  130. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/goal_state_notice.py +0 -0
  131. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/goal_tools.py +0 -0
  132. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/__init__.py +0 -0
  133. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/capabilities.py +0 -0
  134. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/client.py +0 -0
  135. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/client_lifecycle.py +0 -0
  136. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/context.py +0 -0
  137. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/engine.py +0 -0
  138. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/env.py +0 -0
  139. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/envelope.py +0 -0
  140. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/interrupt.py +0 -0
  141. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/legacy.py +0 -0
  142. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/loading.py +0 -0
  143. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/manager.py +0 -0
  144. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/migration.py +0 -0
  145. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/models/__init__.py +0 -0
  146. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/models/adapters.py +0 -0
  147. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/models/config.py +0 -0
  148. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/models/domain.py +0 -0
  149. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/models/transport.py +0 -0
  150. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/models/wire.py +0 -0
  151. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/permissions.py +0 -0
  152. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/presenter.py +0 -0
  153. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/projection.py +0 -0
  154. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/reducer.py +0 -0
  155. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/runner.py +0 -0
  156. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/runtime.py +0 -0
  157. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/server_middleware.py +0 -0
  158. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/snapshot.py +0 -0
  159. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/tools.py +0 -0
  160. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/transcript.py +0 -0
  161. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/trust.py +0 -0
  162. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/hooks/validate_terminal_sequence.py +0 -0
  163. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/input.py +0 -0
  164. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/integrations/__init__.py +0 -0
  165. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/integrations/openai_codex.py +0 -0
  166. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/integrations/sandbox_config.py +0 -0
  167. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/integrations/sandbox_factory.py +0 -0
  168. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/integrations/sandbox_provider.py +0 -0
  169. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/integrations/sandbox_registry.py +0 -0
  170. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/iterm_cursor_guide.py +0 -0
  171. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/json_types.py +0 -0
  172. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/local_context.py +0 -0
  173. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/main.py +0 -0
  174. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/managed_tools.py +0 -0
  175. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/mcp_auth.py +0 -0
  176. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/mcp_config.py +0 -0
  177. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/mcp_disabled.py +0 -0
  178. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/mcp_login_service.py +0 -0
  179. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/mcp_middleware.py +0 -0
  180. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/mcp_oauth_ui.py +0 -0
  181. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/mcp_providers/__init__.py +0 -0
  182. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/mcp_providers/_registry.py +0 -0
  183. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/mcp_providers/base.py +0 -0
  184. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/mcp_providers/github.py +0 -0
  185. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/mcp_providers/slack.py +0 -0
  186. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/mcp_proxy.py +0 -0
  187. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/mcp_tools.py +0 -0
  188. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/media_utils.py +0 -0
  189. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/memory_guard.py +0 -0
  190. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/model_api.py +0 -0
  191. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/model_catalog.py +0 -0
  192. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/model_config.py +0 -0
  193. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/model_metadata.py +0 -0
  194. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/model_retry.py +0 -0
  195. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/notifications.py +0 -0
  196. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/offload.py +0 -0
  197. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/offload_api.py +0 -0
  198. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/offload_middleware.py +0 -0
  199. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/onboarding.py +0 -0
  200. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/output.py +0 -0
  201. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/paste_collapse.py +0 -0
  202. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/plugins/__init__.py +0 -0
  203. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/plugins/_json.py +0 -0
  204. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/plugins/adapters/__init__.py +0 -0
  205. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/plugins/adapters/hooks.py +0 -0
  206. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/plugins/adapters/mcp.py +0 -0
  207. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/plugins/adapters/skills.py +0 -0
  208. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/plugins/adapters/skills_middleware.py +0 -0
  209. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/plugins/commands_cli.py +0 -0
  210. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/plugins/discovery.py +0 -0
  211. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/plugins/manifest.py +0 -0
  212. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/plugins/marketplace.py +0 -0
  213. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/plugins/models.py +0 -0
  214. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/plugins/store.py +0 -0
  215. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/plugins/substitution.py +0 -0
  216. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/project_utils.py +0 -0
  217. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/py.typed +0 -0
  218. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/reasoning_effort.py +0 -0
  219. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/reliable_rubric.py +0 -0
  220. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/resume_state.py +0 -0
  221. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/server_graph.py +0 -0
  222. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/sessions.py +0 -0
  223. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/skills/__init__.py +0 -0
  224. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/skills/commands.py +0 -0
  225. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/skills/invocation.py +0 -0
  226. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/skills/load.py +0 -0
  227. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/skills/load_errors.py +0 -0
  228. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/skills/merge.py +0 -0
  229. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/skills/trust.py +0 -0
  230. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/state_migration.py +0 -0
  231. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/subagents.py +0 -0
  232. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/system_prompt.md +0 -0
  233. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/terminal_capabilities.py +0 -0
  234. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/terminal_escape.py +0 -0
  235. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/terminal_title.py +0 -0
  236. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/theme.py +0 -0
  237. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/thread_ownership.py +0 -0
  238. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/thread_titles.py +0 -0
  239. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tool_catalog.py +0 -0
  240. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tool_display.py +0 -0
  241. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tools.py +0 -0
  242. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/__init__.py +0 -0
  243. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/key_hints.py +0 -0
  244. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/__init__.py +0 -0
  245. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/btw.py +0 -0
  246. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/btw.tcss +0 -0
  247. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/cold_cache.py +0 -0
  248. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/mcp_servers.py +0 -0
  249. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/mcp_servers.tcss +0 -0
  250. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/model_switch.py +0 -0
  251. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/plugin_manager/__init__.py +0 -0
  252. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/plugin_manager/content.py +0 -0
  253. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/plugin_manager/models.py +0 -0
  254. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/plugin_manager/plugin_manager.tcss +0 -0
  255. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/plugin_manager/state.py +0 -0
  256. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/plugin_manager/tabs.py +0 -0
  257. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/prompt_clipboard.py +0 -0
  258. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/prompt_clipboard.tcss +0 -0
  259. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/resume_blocked.py +0 -0
  260. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/resume_compact.py +0 -0
  261. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/session_cost.py +0 -0
  262. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/session_cost.tcss +0 -0
  263. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/thread_name.py +0 -0
  264. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/modals/thread_name.tcss +0 -0
  265. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/screens/__init__.py +0 -0
  266. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/textual_adapter.py +0 -0
  267. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/__init__.py +0 -0
  268. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/_condense_path.py +0 -0
  269. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/_copy_spans.py +0 -0
  270. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/_inline_prompt.py +0 -0
  271. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/_js_eval_display.py +0 -0
  272. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/_links.py +0 -0
  273. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/_paste_textarea.py +0 -0
  274. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/agent_selector.py +0 -0
  275. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/approval.py +0 -0
  276. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/ask_user.py +0 -0
  277. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/auth.py +0 -0
  278. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/autocomplete.py +0 -0
  279. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/chat_input.py +0 -0
  280. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/codex_auth.py +0 -0
  281. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/context_usage.py +0 -0
  282. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/cwd_switch.py +0 -0
  283. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/debug_console.py +0 -0
  284. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/diff.py +0 -0
  285. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/effort_selector.py +0 -0
  286. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/goal_review.py +0 -0
  287. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/goal_status.py +0 -0
  288. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/history.py +0 -0
  289. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/install_confirm.py +0 -0
  290. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/launch_init.py +0 -0
  291. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/loading.py +0 -0
  292. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/mcp_login.py +0 -0
  293. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/mcp_reconnect.py +0 -0
  294. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/mcp_viewer.py +0 -0
  295. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/message_store.py +0 -0
  296. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/model_selector.py +0 -0
  297. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/notification_center.py +0 -0
  298. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/notification_detail.py +0 -0
  299. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/notification_settings.py +0 -0
  300. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/prompt_search.py +0 -0
  301. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/restart_prompt.py +0 -0
  302. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/skill_trust.py +0 -0
  303. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/startup_tip.py +0 -0
  304. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/status.py +0 -0
  305. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/subagent_panel.py +0 -0
  306. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/theme_selector.py +0 -0
  307. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/thread_agent_switch.py +0 -0
  308. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/thread_selector.py +0 -0
  309. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/tool_renderers.py +0 -0
  310. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/tool_widgets.py +0 -0
  311. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/update_available.py +0 -0
  312. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/update_confirm.py +0 -0
  313. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/update_progress.py +0 -0
  314. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/tui/widgets/welcome.py +0 -0
  315. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/ui.py +0 -0
  316. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/unicode_security.py +0 -0
  317. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/update_check.py +0 -0
  318. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/workspace.py +0 -0
  319. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/deepagents_code/workspace_diagnostics.py +0 -0
  320. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/examples/extensions/memory_store.py +0 -0
  321. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/examples/skills/arxiv-search/SKILL.md +0 -0
  322. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  323. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/examples/skills/langgraph-docs/SKILL.md +0 -0
  324. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/examples/skills/skill-creator/SKILL.md +0 -0
  325. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  326. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  327. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/examples/skills/web-research/SKILL.md +0 -0
  328. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/hatch_build.py +0 -0
  329. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/images/debug-console-cost-breakdown.png +0 -0
  330. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/images/model-stream-retry.png +0 -0
  331. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/images/tui.png +0 -0
  332. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/scripts/check_imports.py +0 -0
  333. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/scripts/check_process_cwd.py +0 -0
  334. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/scripts/debug_server.sh +0 -0
  335. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/scripts/generate_commands_catalog.py +0 -0
  336. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/README.md +0 -0
  337. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/integration_tests/__init__.py +0 -0
  338. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/integration_tests/benchmarks/__init__.py +0 -0
  339. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
  340. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/integration_tests/benchmarks/test_local_context_benchmarks.py +0 -0
  341. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
  342. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/integration_tests/benchmarks/test_thread_loading_benchmarks.py +0 -0
  343. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/integration_tests/conftest.py +0 -0
  344. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/integration_tests/test_acp_mode.py +0 -0
  345. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/integration_tests/test_auto_approve_remote.py +0 -0
  346. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/integration_tests/test_compact_resume.py +0 -0
  347. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/integration_tests/test_offload_server_side.py +0 -0
  348. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/integration_tests/test_pending_work_recovery.py +0 -0
  349. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/integration_tests/test_sandbox_factory.py +0 -0
  350. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/integration_tests/test_sandbox_operations.py +0 -0
  351. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/__init__.py +0 -0
  352. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/client/__init__.py +0 -0
  353. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/client/commands/__init__.py +0 -0
  354. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/client/commands/test_auth.py +0 -0
  355. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/client/commands/test_extras.py +0 -0
  356. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/client/commands/test_mcp.py +0 -0
  357. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/client/commands/test_tools.py +0 -0
  358. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/conftest.py +0 -0
  359. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/data/coding_agent_v1_validator.json +0 -0
  360. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/hooks/__init__.py +0 -0
  361. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/hooks/models/__init__.py +0 -0
  362. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/hooks/models/test_models.py +0 -0
  363. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/hooks/test_client_lifecycle.py +0 -0
  364. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/hooks/test_configuration.py +0 -0
  365. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/hooks/test_engine.py +0 -0
  366. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/hooks/test_execution.py +0 -0
  367. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/hooks/test_manager.py +0 -0
  368. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/hooks/test_presenter.py +0 -0
  369. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/hooks/test_server_lifecycle.py +0 -0
  370. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/hooks/test_transcript.py +0 -0
  371. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/hooks/test_trust.py +0 -0
  372. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/plugins/__init__.py +0 -0
  373. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/plugins/test_marketplace.py +0 -0
  374. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/plugins/test_plugin_hooks.py +0 -0
  375. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/plugins/test_plugins_p0.py +0 -0
  376. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/skills/__init__.py +0 -0
  377. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/skills/test_commands.py +0 -0
  378. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/skills/test_load.py +0 -0
  379. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/skills/test_merge.py +0 -0
  380. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/skills/test_pinned_skills.py +0 -0
  381. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/skills/test_skill_trust.py +0 -0
  382. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/skills/test_skills_json.py +0 -0
  383. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/skills/test_thread_inspector.py +0 -0
  384. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/smoke_tests/__init__.py +0 -0
  385. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/smoke_tests/conftest.py +0 -0
  386. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/smoke_tests/snapshots/system_prompt_headless_local.md +0 -0
  387. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/smoke_tests/snapshots/system_prompt_interactive_local.md +0 -0
  388. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/smoke_tests/test_system_prompt.py +0 -0
  389. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test__tool_stream.py +0 -0
  390. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_acp.py +0 -0
  391. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_agent.py +0 -0
  392. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_agent_friendly.py +0 -0
  393. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_agent_mcp_timeout.py +0 -0
  394. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_app_thread_ownership.py +0 -0
  395. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_approval_mode.py +0 -0
  396. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_args.py +0 -0
  397. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_ask_user_middleware.py +0 -0
  398. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_ask_user_types.py +0 -0
  399. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_auth_display.py +0 -0
  400. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_auth_store.py +0 -0
  401. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_auth_web_search_restart.py +0 -0
  402. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_auto_mode.py +0 -0
  403. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_btw.py +0 -0
  404. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_btw_api.py +0 -0
  405. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_cache_expiry.py +0 -0
  406. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_charset.py +0 -0
  407. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_cli_provider.py +0 -0
  408. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_clipboard.py +0 -0
  409. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_coding_agent_metadata.py +0 -0
  410. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_cold_cache.py +0 -0
  411. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_command_registry.py +0 -0
  412. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_compact_tool.py +0 -0
  413. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_config.py +0 -0
  414. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_config_manifest.py +0 -0
  415. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_configurable_model.py +0 -0
  416. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_configuration.py +0 -0
  417. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_configuration_resolution.py +0 -0
  418. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_configuration_resolver.py +0 -0
  419. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_context_doctor.py +0 -0
  420. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_cost_tracking.py +0 -0
  421. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_cursor_style.py +0 -0
  422. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_debug.py +0 -0
  423. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_debug_buffer.py +0 -0
  424. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_dep_floor_check.py +0 -0
  425. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_diff_utils.py +0 -0
  426. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_doctor.py +0 -0
  427. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_editor.py +0 -0
  428. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_end_to_end.py +0 -0
  429. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_env_vars.py +0 -0
  430. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_event_bus.py +0 -0
  431. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_exception_handling.py +0 -0
  432. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_extension_api.py +0 -0
  433. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_extension_cli_trust.py +0 -0
  434. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_extension_config_manifest.py +0 -0
  435. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_extension_discovery.py +0 -0
  436. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_extension_display.py +0 -0
  437. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_extension_host_runtime.py +0 -0
  438. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_extension_hosting.py +0 -0
  439. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_extension_runtime.py +0 -0
  440. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_extra_skills_dirs.py +0 -0
  441. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_extras_info.py +0 -0
  442. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_file_ops.py +0 -0
  443. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_fork_goal_notice.py +0 -0
  444. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_formatting.py +0 -0
  445. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_git.py +0 -0
  446. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_glm_5p2_profile.py +0 -0
  447. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_goal_criteria_client.py +0 -0
  448. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_goal_rubric.py +0 -0
  449. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_goal_state_limits.py +0 -0
  450. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_goal_state_notice.py +0 -0
  451. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_goal_state_persistence.py +0 -0
  452. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_goal_tools.py +0 -0
  453. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_hatch_build.py +0 -0
  454. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_hooks.py +0 -0
  455. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_imports.py +0 -0
  456. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_input_parsing.py +0 -0
  457. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_install_command.py +0 -0
  458. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_install_script.py +0 -0
  459. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_invocation.py +0 -0
  460. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
  461. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_js_cost_sync.py +0 -0
  462. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_js_cost_tracking.py +0 -0
  463. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_json_types.py +0 -0
  464. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_local_context.py +0 -0
  465. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_main.py +0 -0
  466. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_main_acp_mode.py +0 -0
  467. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_main_args.py +0 -0
  468. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_managed_tools.py +0 -0
  469. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_mcp_auth.py +0 -0
  470. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_mcp_config.py +0 -0
  471. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_mcp_disabled.py +0 -0
  472. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_mcp_lifecycle.py +0 -0
  473. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_mcp_login_service.py +0 -0
  474. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_mcp_middleware.py +0 -0
  475. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
  476. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_mcp_proxy.py +0 -0
  477. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_mcp_schema.py +0 -0
  478. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_mcp_tools.py +0 -0
  479. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_media_utils.py +0 -0
  480. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_memory_guard.py +0 -0
  481. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_model_catalog.py +0 -0
  482. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_model_config.py +0 -0
  483. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_model_metadata.py +0 -0
  484. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_model_retry.py +0 -0
  485. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_model_switch.py +0 -0
  486. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_non_interactive.py +0 -0
  487. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_notifications.py +0 -0
  488. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_offload.py +0 -0
  489. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_offload_api.py +0 -0
  490. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_onboarding.py +0 -0
  491. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_openai_codex_integration.py +0 -0
  492. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_output.py +0 -0
  493. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_paths.py +0 -0
  494. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_process_cwd_check.py +0 -0
  495. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_reasoning_effort.py +0 -0
  496. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_reliable_rubric.py +0 -0
  497. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_reload.py +0 -0
  498. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_remote_client.py +0 -0
  499. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_repository_bounds.py +0 -0
  500. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_resume_compaction_recovery.py +0 -0
  501. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_resume_state.py +0 -0
  502. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_rubric_cli.py +0 -0
  503. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_sandbox_config.py +0 -0
  504. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_sandbox_factory.py +0 -0
  505. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_sandbox_provider.py +0 -0
  506. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_sandbox_registry.py +0 -0
  507. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_server.py +0 -0
  508. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_server_config.py +0 -0
  509. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_server_graph.py +0 -0
  510. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_server_helpers.py +0 -0
  511. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_server_manager.py +0 -0
  512. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_server_tracing.py +0 -0
  513. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_session_stats.py +0 -0
  514. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_sessions.py +0 -0
  515. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_shell_allow_list.py +0 -0
  516. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_skill_invocation.py +0 -0
  517. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_startup_fast_paths.py +0 -0
  518. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_state_migration.py +0 -0
  519. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_subagents.py +0 -0
  520. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_terminal_capabilities.py +0 -0
  521. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_terminal_escape.py +0 -0
  522. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
  523. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_terminal_stderr.py +0 -0
  524. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_terminal_title.py +0 -0
  525. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_text_encoding.py +0 -0
  526. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_textual_patches.py +0 -0
  527. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_theme.py +0 -0
  528. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_thread_naming_app.py +0 -0
  529. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_thread_ownership.py +0 -0
  530. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_thread_ownership_transitions.py +0 -0
  531. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_thread_titles.py +0 -0
  532. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_threads_resume.py +0 -0
  533. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_tool_catalog.py +0 -0
  534. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_tool_display.py +0 -0
  535. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_tracing.py +0 -0
  536. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_tracing_replicas.py +0 -0
  537. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_transcript_virtualization.py +0 -0
  538. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_ui.py +0 -0
  539. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_unicode_security.py +0 -0
  540. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_uninstall_command.py +0 -0
  541. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_update_check.py +0 -0
  542. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_version.py +0 -0
  543. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_workspace.py +0 -0
  544. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/test_workspace_diagnostics.py +0 -0
  545. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tools/__init__.py +0 -0
  546. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tools/test_current_thread.py +0 -0
  547. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tools/test_fetch_url.py +0 -0
  548. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tools/test_tool_arg_schemas.py +0 -0
  549. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tools/test_web_search.py +0 -0
  550. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/__init__.py +0 -0
  551. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/modals/__init__.py +0 -0
  552. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/modals/plugin_manager/__init__.py +0 -0
  553. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/modals/plugin_manager/test_inspection.py +0 -0
  554. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/modals/plugin_manager/test_structure.py +0 -0
  555. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/modals/test_cold_cache.py +0 -0
  556. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/modals/test_model_switch.py +0 -0
  557. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/modals/test_prompt_clipboard.py +0 -0
  558. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/modals/test_resume_blocked.py +0 -0
  559. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/modals/test_session_cost.py +0 -0
  560. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/test_key_hints.py +0 -0
  561. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/test_modal_footer_layout.py +0 -0
  562. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/test_subagent_stream.py +0 -0
  563. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/test_textual_adapter.py +0 -0
  564. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/__init__.py +0 -0
  565. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_agent_selector.py +0 -0
  566. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_approval.py +0 -0
  567. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_ask_user.py +0 -0
  568. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_auth_widgets.py +0 -0
  569. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_auto_mode_notice.py +0 -0
  570. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_autocomplete.py +0 -0
  571. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_chat_input.py +0 -0
  572. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_condense_path.py +0 -0
  573. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_copy_spans.py +0 -0
  574. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_cwd_switch.py +0 -0
  575. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_diff.py +0 -0
  576. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_goal_review.py +0 -0
  577. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_history.py +0 -0
  578. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_inline_prompt.py +0 -0
  579. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_install_confirm.py +0 -0
  580. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_launch_init.py +0 -0
  581. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_links.py +0 -0
  582. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_loading.py +0 -0
  583. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_mcp_login_modal.py +0 -0
  584. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_mcp_reconnect.py +0 -0
  585. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_mcp_viewer.py +0 -0
  586. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_message_store.py +0 -0
  587. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_messages.py +0 -0
  588. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_model_selector.py +0 -0
  589. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_notification_center.py +0 -0
  590. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_notification_detail.py +0 -0
  591. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_notification_settings.py +0 -0
  592. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_prompt_search.py +0 -0
  593. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_restart_prompt.py +0 -0
  594. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_skill_trust_screen.py +0 -0
  595. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_startup_tip.py +0 -0
  596. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_status.py +0 -0
  597. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_subagent_panel.py +0 -0
  598. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_thread_agent_switch.py +0 -0
  599. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_thread_selector.py +0 -0
  600. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_tool_renderers.py +0 -0
  601. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_update_available.py +0 -0
  602. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_update_confirm.py +0 -0
  603. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_update_progress.py +0 -0
  604. {deepagents_code-0.1.84 → deepagents_code-0.1.85}/tests/unit_tests/tui/widgets/test_welcome.py +0 -0
@@ -2,6 +2,16 @@
2
2
 
3
3
  # Deep Agents Code Changelog
4
4
 
5
+ ## [0.1.85](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.84...deepagents-code==0.1.85) (2026-10-14)
6
+
7
+ ### Bug Fixes
8
+
9
+ - Suppress ownership warnings for root installs.
10
+
11
+ ### Performance Improvements
12
+
13
+ - Avoid restyling transcript history when inserting messages.
14
+
5
15
  ## [0.1.84](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.83...deepagents-code==0.1.84) (2026-10-12)
6
16
 
7
17
  ### Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: deepagents-code
3
- Version: 0.1.84
3
+ Version: 0.1.85
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.24
33
+ Requires-Dist: deepagents==0.7.25
34
34
  Requires-Dist: fastmcp<5.0.0,>=4.0.0b4
35
35
  Requires-Dist: filelock<3.30,>=3.29.7
36
- Requires-Dist: genai-prices<0.2.0,>=0.1.10
36
+ Requires-Dist: genai-prices<0.2.0,>=0.1.12
37
37
  Requires-Dist: httpx<1.0.0,>=0.28.1
38
38
  Requires-Dist: langchain-anthropic<2.0.0,>=1.7.6
39
- Requires-Dist: langchain-google-genai<5.0.0,>=4.4.1
39
+ Requires-Dist: langchain-google-genai<5.0.0,>=4.4.2
40
40
  Requires-Dist: langchain-openai<2.0.0,>=1.7.1
41
41
  Requires-Dist: langchain-quickjs<0.4.0,>=0.3.4
42
- Requires-Dist: langchain<2.0.0,>=1.4.4
43
- Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.1.1
44
- Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.33
42
+ Requires-Dist: langchain<2.0.0,>=1.4.5
43
+ Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.1.2
44
+ Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.34
45
45
  Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.36.0
46
- Requires-Dist: langgraph-sdk<1.0.0,>=0.4.6
47
- Requires-Dist: langsmith[sandbox]>=0.14.7
46
+ Requires-Dist: langgraph-sdk<1.0.0,>=0.4.7
47
+ Requires-Dist: langsmith[sandbox]>=0.14.8
48
48
  Requires-Dist: markdownify<2.0.0,>=1.2.3
49
49
  Requires-Dist: mcp<3.0.0,>=2.0.0
50
50
  Requires-Dist: packaging>=26.2
@@ -67,12 +67,12 @@ Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.5; extra == 'agen
67
67
  Provides-Extra: all-providers
68
68
  Requires-Dist: aiohttp<3.15.0,>=3.14.3; extra == 'all-providers'
69
69
  Requires-Dist: langchain-anthropic<2.0.0,>=1.7.6; extra == 'all-providers'
70
- Requires-Dist: langchain-aws<2.0.0,>=1.8.1; extra == 'all-providers'
70
+ Requires-Dist: langchain-aws<2.0.0,>=1.8.2; extra == 'all-providers'
71
71
  Requires-Dist: langchain-baseten<1.0.0,>=0.2.5; extra == 'all-providers'
72
72
  Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'all-providers'
73
73
  Requires-Dist: langchain-deepseek<2.0.0,>=1.1.1; extra == 'all-providers'
74
74
  Requires-Dist: langchain-fireworks<2.0.0,>=1.7.1; extra == 'all-providers'
75
- Requires-Dist: langchain-google-genai<5.0.0,>=4.4.1; extra == 'all-providers'
75
+ Requires-Dist: langchain-google-genai<5.0.0,>=4.4.2; 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.3; extra == 'all-providers'
@@ -98,7 +98,7 @@ Requires-Dist: langchain-anthropic<2.0.0,>=1.7.6; extra == 'anthropic'
98
98
  Provides-Extra: baseten
99
99
  Requires-Dist: langchain-baseten<1.0.0,>=0.2.5; extra == 'baseten'
100
100
  Provides-Extra: bedrock
101
- Requires-Dist: langchain-aws<2.0.0,>=1.8.1; extra == 'bedrock'
101
+ Requires-Dist: langchain-aws<2.0.0,>=1.8.2; 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.1; extra == 'deepseek'
108
108
  Provides-Extra: fireworks
109
109
  Requires-Dist: langchain-fireworks<2.0.0,>=1.7.1; extra == 'fireworks'
110
110
  Provides-Extra: google-genai
111
- Requires-Dist: langchain-google-genai<5.0.0,>=4.4.1; extra == 'google-genai'
111
+ Requires-Dist: langchain-google-genai<5.0.0,>=4.4.2; 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
@@ -1,3 +1,3 @@
1
1
  """Generated at build time. Do not edit or commit."""
2
2
 
3
- BUILD_COMMIT = "2069079"
3
+ BUILD_COMMIT = "4bfa520"
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Keep the `x-release-please-version` annotation — release-please uses it to
4
4
  # bump `__version__` in sync with `pyproject.toml` on every release PR.
5
- __version__ = "0.1.84" # x-release-please-version
5
+ __version__ = "0.1.85" # x-release-please-version
6
6
 
7
7
  DOCS_URL = "https://docs.langchain.com/oss/python/deepagents/code"
8
8
  """URL for `deepagents-code` documentation."""
@@ -1,8 +1,14 @@
1
- """Plain-text formatting for the token and cost breakdown modal."""
1
+ """Markdown formatting for the token and cost breakdown modal."""
2
2
 
3
3
  import math
4
4
  from collections.abc import Mapping
5
5
 
6
+ _SMALL_COST = 0.0001
7
+
8
+
9
+ def _format_usd(value: float) -> str:
10
+ return f"{value:.4g}" if 0 < value < _SMALL_COST else f"{value:.4f}"
11
+
6
12
 
7
13
  def format_cost_breakdown_table(
8
14
  total_usd: float, breakdown: Mapping[str, object] | None
@@ -10,7 +16,7 @@ def format_cost_breakdown_table(
10
16
  """Build the copyable entire-thread estimated token/cost table.
11
17
 
12
18
  Returns:
13
- A plain-text table, or an empty string when historical detail is missing.
19
+ A Markdown table, or an empty string when historical detail is missing.
14
20
  """
15
21
  if (
16
22
  not isinstance(breakdown, Mapping)
@@ -31,14 +37,14 @@ def format_cost_breakdown_table(
31
37
  if not isinstance(value, int) or isinstance(value, bool) or value < 0:
32
38
  return "unavailable"
33
39
  if complete_key and breakdown.get(complete_key) is not True:
34
- return f"{value} (partial)"
35
- return str(value)
40
+ return f"{value:,} (partial)"
41
+ return f"{value:,}"
36
42
 
37
43
  def _cost(key: str, complete_key: str | None = None) -> str:
38
44
  value = _number(key)
39
45
  if value is None:
40
46
  return "unavailable"
41
- text = repr(value)
47
+ text = _format_usd(value)
42
48
  if complete_key and breakdown.get(complete_key) is not True:
43
49
  return f"{text} (partial)"
44
50
  return text
@@ -47,77 +53,70 @@ def format_cost_breakdown_table(
47
53
  value = _number(key)
48
54
  if value is None or total_usd <= 0:
49
55
  return "n/a"
50
- return f"{value / total_usd * 100:.6g}%"
56
+ return f"{value / total_usd * 100:.1f}%"
51
57
 
58
+ total_tokens = int(_number("input_tokens") or 0) + int(
59
+ _number("output_tokens") or 0
60
+ )
52
61
  rows = [
53
62
  (
54
- "Input",
63
+ "**Input**",
55
64
  _percent("input_cost_usd"),
56
65
  _tokens("input_tokens", "input_tokens_complete"),
57
66
  _cost("input_cost_usd", "input_cost_complete"),
58
67
  ),
59
68
  (
60
- " cache creation",
69
+ "cache creation",
61
70
  _percent("cache_creation_cost_usd"),
62
71
  _tokens("cache_creation_tokens", "cache_creation_tokens_complete"),
63
72
  _cost("cache_creation_cost_usd", "cache_creation_cost_complete"),
64
73
  ),
65
74
  (
66
- " cache read",
75
+ "cache read",
67
76
  _percent("cache_read_cost_usd"),
68
77
  _tokens("cache_read_tokens", "cache_read_tokens_complete"),
69
78
  _cost("cache_read_cost_usd", "cache_read_cost_complete"),
70
79
  ),
71
80
  (
72
- "Output",
81
+ "**Output**",
73
82
  _percent("output_cost_usd"),
74
83
  _tokens("output_tokens", "output_tokens_complete"),
75
84
  _cost("output_cost_usd", "output_cost_complete"),
76
85
  ),
77
86
  (
78
- " reasoning",
87
+ "reasoning",
79
88
  _percent("reasoning_cost_usd"),
80
89
  _tokens("reasoning_tokens", "reasoning_tokens_complete"),
81
90
  _cost("reasoning_cost_usd", "reasoning_cost_complete"),
82
91
  ),
83
92
  (
84
- "Total",
93
+ "**Total**",
85
94
  "100%" if total_usd > 0 else "n/a",
86
- str(int(_number("input_tokens") or 0) + int(_number("output_tokens") or 0)),
87
- repr(total_usd),
95
+ f"{total_tokens:,}",
96
+ _format_usd(total_usd),
88
97
  ),
89
98
  ]
90
- widths = [
91
- max(
92
- len(row[index])
93
- for row in [("Category", "% cost", "Tokens", "Cost (USD)"), *rows]
94
- )
95
- for index in range(4)
96
- ]
97
99
  rendered = [
98
- " ".join(
99
- value.ljust(widths[index])
100
- for index, value in enumerate(
101
- ("Category", "% cost", "Tokens", "Cost (USD)")
102
- )
103
- ).rstrip()
100
+ "| Category | % cost | Tokens | Cost (USD) |",
101
+ "| :--- | ---: | ---: | ---: |",
102
+ *("| " + " | ".join(row) + " |" for row in rows),
103
+ ]
104
+ notes: list[str] = [
105
+ "Input and Output are inclusive; cache and reasoning rows are subsets."
104
106
  ]
105
- rendered.append(" ".join("-" * width for width in widths))
106
- rendered.extend(
107
- " ".join(
108
- value.ljust(widths[index]) for index, value in enumerate(row)
109
- ).rstrip()
110
- for row in rows
111
- )
112
- notes: list[str] = ["Parent rows are inclusive; indented rows are subsets."]
113
107
  attributed = (_number("input_cost_usd") or 0.0) + (
114
108
  _number("output_cost_usd") or 0.0
115
109
  )
116
110
  if not math.isclose(attributed, total_usd, rel_tol=1e-12, abs_tol=1e-15):
117
111
  notes.append(
118
- f"Partial attribution: {max(total_usd - attributed, 0.0)!r} USD is "
119
- "directionless/unattributed."
112
+ f"Partial attribution: {_format_usd(max(total_usd - attributed, 0.0))} "
113
+ "USD is directionless/unattributed."
120
114
  )
121
115
  if breakdown.get("priced_request_count") != breakdown.get("request_count"):
122
116
  notes.append("Some requests were unpriceable; costs are partial.")
123
- return "Entire-thread estimated breakdown\n" + "\n".join(rendered + notes)
117
+ return (
118
+ "Entire-thread estimated breakdown\n\n"
119
+ + "\n".join(rendered)
120
+ + "\n\n"
121
+ + "\n\n".join(notes)
122
+ )
@@ -7,9 +7,8 @@ from typing import TYPE_CHECKING, ClassVar
7
7
 
8
8
  from textual.binding import Binding, BindingType
9
9
  from textual.containers import VerticalScroll
10
- from textual.content import Content
11
10
  from textual.screen import ModalScreen
12
- from textual.widgets import Static
11
+ from textual.widgets import Markdown, Static
13
12
 
14
13
  from deepagents_code.clipboard import copy_text_to_clipboard
15
14
  from deepagents_code.config import get_glyphs
@@ -48,7 +47,7 @@ class CostBreakdownScreen(ModalScreen[None]):
48
47
  CSS = """
49
48
  CostBreakdownScreen { align: center middle; }
50
49
  CostBreakdownScreen > VerticalScroll {
51
- width: 78; max-width: 92%; height: auto; max-height: 85%;
50
+ width: 86; max-width: 92%; height: auto; max-height: 85%;
52
51
  background: $surface; border: solid $primary; padding: 1 2;
53
52
  }
54
53
  CostBreakdownScreen .cost-breakdown-title {
@@ -56,7 +55,7 @@ class CostBreakdownScreen(ModalScreen[None]):
56
55
  text-align: center; margin-bottom: 1;
57
56
  }
58
57
  CostBreakdownScreen .cost-breakdown-body {
59
- height: auto; color: $text;
58
+ height: auto; color: $text; padding: 0;
60
59
  }
61
60
  CostBreakdownScreen .cost-breakdown-help {
62
61
  height: auto; color: $text-muted; text-style: italic;
@@ -65,7 +64,7 @@ class CostBreakdownScreen(ModalScreen[None]):
65
64
  """
66
65
 
67
66
  def __init__(self, breakdown: str, provider: Callable[[], str]) -> None:
68
- """Initialize with a plain-text breakdown and its live provider."""
67
+ """Initialize with a Markdown breakdown and its live provider."""
69
68
  super().__init__()
70
69
  self._provider = provider
71
70
  self._breakdown = sanitize_control_chars(
@@ -80,9 +79,7 @@ class CostBreakdownScreen(ModalScreen[None]):
80
79
  """
81
80
  with VerticalScroll():
82
81
  yield Static("Token & Cost Breakdown", classes="cost-breakdown-title")
83
- yield Static(
84
- Content(self._breakdown), classes="cost-breakdown-body", markup=False
85
- )
82
+ yield Markdown(self._breakdown, classes="cost-breakdown-body")
86
83
  separator = f" {get_glyphs().separator} "
87
84
  yield Static(
88
85
  separator.join(("c copy", "Esc close")),
@@ -109,7 +106,7 @@ class CostBreakdownScreen(ModalScreen[None]):
109
106
  )
110
107
  if breakdown != self._breakdown:
111
108
  self._breakdown = breakdown
112
- self.query_one(".cost-breakdown-body", Static).update(Content(breakdown))
109
+ self.query_one(".cost-breakdown-body", Markdown).update(breakdown)
113
110
 
114
111
  def action_copy(self) -> None:
115
112
  """Copy the complete breakdown to the clipboard."""
@@ -143,7 +143,7 @@ class AutoModeNoticeScreen(ModalScreen[bool]):
143
143
  margin: 0 0 1 0;
144
144
  }
145
145
 
146
- AutoModeNoticeScreen .auto-mode-notice-body > *:last-child {
146
+ AutoModeNoticeScreen .auto-mode-notice-body > MarkdownBlock:last-child {
147
147
  margin-bottom: 0;
148
148
  }
149
149
 
@@ -1495,7 +1495,7 @@ class AssistantMessage(_StreamedTextParts, Vertical):
1495
1495
 
1496
1496
  /* Markdown blocks carry a bottom margin for inter-block spacing; drop it
1497
1497
  on the final block so the message has no trailing blank row. */
1498
- AssistantMessage Markdown > *:last-child {
1498
+ AssistantMessage Markdown > MarkdownBlock:last-child {
1499
1499
  margin-bottom: 0;
1500
1500
  }
1501
1501
  """
@@ -102,7 +102,7 @@ class YoloModeNoticeScreen(ModalScreen[YoloModeNoticeResult]):
102
102
  margin: 0 0 1 0;
103
103
  }
104
104
 
105
- YoloModeNoticeScreen .yolo-mode-notice-body > *:last-child {
105
+ YoloModeNoticeScreen .yolo-mode-notice-body > MarkdownBlock:last-child {
106
106
  margin-bottom: 0;
107
107
  }
108
108
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "deepagents-code"
7
- version = "0.1.84"
7
+ version = "0.1.85"
8
8
  description = "Terminal coding agent built on the Deep Agents SDK - works with any model, with persistent memory, customizable skills, subagents, and approval controls."
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -27,19 +27,19 @@ classifiers = [
27
27
  ]
28
28
  dependencies = [
29
29
  # Framework
30
- "deepagents==0.7.24",
31
- "langchain>=1.4.4,<2.0.0",
32
- "langgraph-checkpoint-sqlite>=3.1.1,<4.0.0",
30
+ "deepagents==0.7.25",
31
+ "langchain>=1.4.5,<2.0.0",
32
+ "langgraph-checkpoint-sqlite>=3.1.2,<4.0.0",
33
33
 
34
34
  # Client-server architecture
35
- "langgraph-sdk>=0.4.6,<1.0.0",
36
- "langgraph-cli[inmem]>=0.4.33,<1.0.0",
35
+ "langgraph-sdk>=0.4.7,<1.0.0",
36
+ "langgraph-cli[inmem]>=0.4.34,<1.0.0",
37
37
  "langgraph-runtime-inmem>=0.36.0,<1.0.0",
38
38
  "httpx>=0.28.1,<1.0.0",
39
39
 
40
40
  # Core model providers - others are added as optional
41
41
  "langchain-anthropic>=1.7.6,<2.0.0",
42
- "langchain-google-genai>=4.4.1,<5.0.0",
42
+ "langchain-google-genai>=4.4.2,<5.0.0",
43
43
  "langchain-openai>=1.7.1,<2.0.0",
44
44
  "pydantic>=2.12.5,<2.14.0a0",
45
45
 
@@ -58,7 +58,7 @@ dependencies = [
58
58
  "markdownify>=1.2.3,<2.0.0",
59
59
 
60
60
  # Sandbox integrations
61
- "langsmith[sandbox]>=0.14.7",
61
+ "langsmith[sandbox]>=0.14.8",
62
62
 
63
63
  # Tools
64
64
  "tavily-python>=0.7.26,<1.0.0",
@@ -71,7 +71,7 @@ dependencies = [
71
71
  # compatibility promise, and this range spans every 0.1.x patch, so re-verify
72
72
  # both against `cost_tracking._build_price_overrides` and
73
73
  # `cost_tracking._find_override_model` when widening it.
74
- "genai-prices>=0.1.10,<0.2.0",
74
+ "genai-prices>=0.1.12,<0.2.0",
75
75
 
76
76
  # Clipboard
77
77
  "pyperclip>=1.11.0,<2.0.0",
@@ -109,11 +109,11 @@ dependencies = [
109
109
  # Model providers
110
110
  anthropic = ["langchain-anthropic>=1.7.6,<2.0.0"]
111
111
  baseten = ["langchain-baseten>=0.2.5,<1.0.0"]
112
- bedrock = ["langchain-aws>=1.8.1,<2.0.0"]
112
+ bedrock = ["langchain-aws>=1.8.2,<2.0.0"]
113
113
  cohere = ["langchain-cohere>=0.6.0,<1.0.0"]
114
114
  deepseek = ["langchain-deepseek>=1.1.1,<2.0.0"]
115
115
  fireworks = ["langchain-fireworks>=1.7.1,<2.0.0"]
116
- google-genai = ["langchain-google-genai>=4.4.1,<5.0.0"]
116
+ google-genai = ["langchain-google-genai>=4.4.2,<5.0.0"]
117
117
  groq = ["langchain-groq>=1.1.3,<2.0.0"]
118
118
  huggingface = ["langchain-huggingface>=1.2.3,<2.0.0"]
119
119
  ibm = ["langchain-ibm>=1.1.2,<2.0.0"]
@@ -603,8 +603,6 @@ if [ "$(id -u)" -eq 0 ]; then
603
603
  fi
604
604
 
605
605
  if [ -z "$TARGET_USER" ] || [ "$TARGET_USER" = "root" ]; then
606
- log_warn "Could not determine non-root target user. Files under ${HOME} may remain owned by root."
607
- log_warn " Re-run as the target user, or repair only the exact installed paths reported above."
608
606
  fix_file_owner() { :; }
609
607
  fix_tree_owner() { :; }
610
608
  else
@@ -2581,7 +2579,7 @@ while IFS= read -r uv_cache_dir; do
2581
2579
  done <<EOF
2582
2580
  ${UV_TOOL_CACHE_NEW}
2583
2581
  EOF
2584
- if [ "$(id -u)" -eq 0 ]; then
2582
+ if [ "$(id -u)" -eq 0 ] && [ -n "$TARGET_USER" ] && [ "$TARGET_USER" != "root" ]; then
2585
2583
  while IFS= read -r uv_cache_dir; do
2586
2584
  [ -n "$uv_cache_dir" ] || continue
2587
2585
  [ -d "$uv_cache_dir" ] || continue
@@ -1376,6 +1376,8 @@ class TestFooterCostBreakdown:
1376
1376
  async def test_footer_cost_opens_live_modal_and_restores_focus(
1377
1377
  self,
1378
1378
  ) -> None:
1379
+ from textual.widgets import Markdown
1380
+
1379
1381
  from deepagents_code.cost_tracking import _empty_cost_breakdown
1380
1382
  from deepagents_code.tui.modals.cost_breakdown import CostBreakdownScreen
1381
1383
  from deepagents_code.tui.widgets.status import MetricsLine
@@ -1396,9 +1398,9 @@ class TestFooterCostBreakdown:
1396
1398
 
1397
1399
  modal = app.screen
1398
1400
  assert isinstance(modal, CostBreakdownScreen)
1399
- body = modal.query_one(".cost-breakdown-body", Static)
1400
- assert "123" in str(body.render())
1401
- assert "1.25" in str(body.render())
1401
+ body = modal.query_one(".cost-breakdown-body", Markdown)
1402
+ assert "123" in body._markdown
1403
+ assert "1.25" in body._markdown
1402
1404
  stack_size = len(app.screen_stack)
1403
1405
  app.action_open_cost_breakdown()
1404
1406
  await pilot.pause()
@@ -1409,8 +1411,8 @@ class TestFooterCostBreakdown:
1409
1411
  updated["input_tokens"] = 456
1410
1412
  app._set_session_cost(2.5, breakdown=updated)
1411
1413
  await pilot.pause(delay=0.6)
1412
- assert "456" in str(body.render())
1413
- assert "2.5" in str(body.render())
1414
+ assert "456" in body._markdown
1415
+ assert "2.5" in body._markdown
1414
1416
 
1415
1417
  await pilot.press("escape")
1416
1418
  await pilot.pause()
@@ -0,0 +1,35 @@
1
+ """Tests for the copyable cost breakdown presentation."""
2
+
3
+ from deepagents_code.cost_tracking import _empty_cost_breakdown
4
+ from deepagents_code.tui.modals.cost_breakdown import format_cost_breakdown_table
5
+
6
+
7
+ def test_readable_markdown_preserves_small_costs_and_partial_notes() -> None:
8
+ breakdown = _empty_cost_breakdown()
9
+ breakdown.update(
10
+ input_tokens=123456,
11
+ input_tokens_complete=False,
12
+ input_cost_usd=0.000000123,
13
+ input_cost_complete=False,
14
+ request_count=2,
15
+ priced_request_count=1,
16
+ )
17
+ table = format_cost_breakdown_table(0.001, breakdown)
18
+
19
+ assert "| Category | % cost | Tokens | Cost (USD) |" in table
20
+ assert "| **Input** | 0.0% | 123,456 (partial) | 1.23e-07 (partial) |" in table
21
+ assert "| **Total** | 100% | 123,456 | 0.0010 |" in table
22
+ assert "Partial attribution: 0.0010 USD is directionless/unattributed." in table
23
+ assert "Some requests were unpriceable; costs are partial." in table
24
+
25
+
26
+ def test_zero_cost_and_unavailable_details() -> None:
27
+ breakdown: dict[str, object] = dict(_empty_cost_breakdown())
28
+ breakdown.update(cache_read_tokens=None, cache_read_cost_usd=None)
29
+ table = format_cost_breakdown_table(0, breakdown)
30
+
31
+ assert "| cache read | n/a | unavailable | unavailable |" in table
32
+ assert "| **Total** | n/a | 0 | 0.0000 |" in table
33
+ assert format_cost_breakdown_table(0, None) == ""
34
+ breakdown["historical_complete"] = False
35
+ assert format_cost_breakdown_table(0, breakdown) == ""
@@ -10,7 +10,7 @@ import pytest
10
10
  from textual.app import App, ComposeResult
11
11
  from textual.containers import VerticalScroll
12
12
  from textual.screen import ModalScreen
13
- from textual.widgets import Button, Checkbox, Select, Static
13
+ from textual.widgets import Button, Checkbox, Markdown, Select, Static
14
14
 
15
15
  import deepagents_code.tui.modals.cost_breakdown as cost_breakdown_mod
16
16
  import deepagents_code.tui.modals.mcp_servers as mcp_servers_mod
@@ -373,8 +373,9 @@ class TestDebugConsoleScreen:
373
373
  await pilot.pause()
374
374
 
375
375
  assert isinstance(app.screen, CostBreakdownScreen)
376
- assert breakdown in _widget_text(
377
- app.screen.query_one(".cost-breakdown-body", Static)
376
+ assert (
377
+ breakdown
378
+ == app.screen.query_one(".cost-breakdown-body", Markdown)._markdown
378
379
  )
379
380
  await pilot.press("escape")
380
381
  await pilot.pause()
@@ -400,12 +401,12 @@ class TestDebugConsoleScreen:
400
401
  await pilot.click(console.query_one("#debug-cost-breakdown", Button))
401
402
  await pilot.pause()
402
403
  modal = cast("CostBreakdownScreen", app.screen)
403
- assert "12" in _widget_text(modal.query_one(".cost-breakdown-body", Static))
404
+ assert "12" in modal.query_one(".cost-breakdown-body", Markdown)._markdown
404
405
 
405
406
  breakdown = "Input 24 0.02"
406
407
  await pilot.pause(delay=0.6)
407
- assert breakdown in _widget_text(
408
- modal.query_one(".cost-breakdown-body", Static)
408
+ assert (
409
+ breakdown == modal.query_one(".cost-breakdown-body", Markdown)._markdown
409
410
  )
410
411
  await pilot.press("c")
411
412
  assert copied == [breakdown]