deepagents-cli 0.0.50__tar.gz → 0.0.51__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 (286) hide show
  1. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/CHANGELOG.md +7 -0
  2. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/PKG-INFO +26 -26
  3. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/_version.py +1 -1
  4. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/app.py +62 -27
  5. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/integrations/sandbox_factory.py +1 -1
  6. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/mcp_commands.py +3 -1
  7. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/mcp_tools.py +16 -5
  8. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/ui.py +41 -0
  9. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/messages.py +18 -16
  10. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/pyproject.toml +19 -19
  11. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_config.py +16 -0
  12. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_mcp_tools.py +14 -1
  13. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_messages.py +0 -54
  14. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_reload.py +133 -0
  15. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/uv.lock +92 -65
  16. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/.gitignore +0 -0
  17. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/DEV.md +0 -0
  18. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/Makefile +0 -0
  19. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/README.md +0 -0
  20. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/THREAT_MODEL.md +0 -0
  21. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/__init__.py +0 -0
  22. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/__main__.py +0 -0
  23. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/_ask_user_types.py +0 -0
  24. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/_cli_context.py +0 -0
  25. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/_constants.py +0 -0
  26. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/_debug.py +0 -0
  27. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/_env_vars.py +0 -0
  28. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/_git.py +0 -0
  29. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/_server_config.py +0 -0
  30. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/_session_stats.py +0 -0
  31. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/_testing_models.py +0 -0
  32. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/_textual_patches.py +0 -0
  33. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/agent.py +0 -0
  34. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/app.tcss +0 -0
  35. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/ask_user.py +0 -0
  36. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/auth_store.py +0 -0
  37. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/built_in_skills/__init__.py +0 -0
  38. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/built_in_skills/remember/SKILL.md +0 -0
  39. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/built_in_skills/skill-creator/SKILL.md +0 -0
  40. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  41. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  42. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/clipboard.py +0 -0
  43. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/command_registry.py +0 -0
  44. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/config.py +0 -0
  45. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/configurable_model.py +0 -0
  46. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/default_agent_prompt.md +0 -0
  47. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/deploy/__init__.py +0 -0
  48. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/deploy/bundler.py +0 -0
  49. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/deploy/commands.py +0 -0
  50. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/deploy/config.py +0 -0
  51. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/deploy/frontend_dist/assets/anonymous-B9UzAXQd.js +0 -0
  52. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/deploy/frontend_dist/assets/clerk-5xHgyQyG.js +0 -0
  53. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/deploy/frontend_dist/assets/highlighted-body-OFNGDK62-rX-7qT8o.js +0 -0
  54. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/deploy/frontend_dist/assets/index-DM3gptpu.js +0 -0
  55. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/deploy/frontend_dist/assets/index-Ddy7F6KI.css +0 -0
  56. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/deploy/frontend_dist/assets/supabase-S6NACDgm.js +0 -0
  57. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/deploy/frontend_dist/index.html +0 -0
  58. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/deploy/frontend_dist/logo-dark.svg +0 -0
  59. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/deploy/frontend_dist/logo-light.svg +0 -0
  60. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/deploy/templates.py +0 -0
  61. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/editor.py +0 -0
  62. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/extras_info.py +0 -0
  63. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/file_ops.py +0 -0
  64. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/formatting.py +0 -0
  65. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/hooks.py +0 -0
  66. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/input.py +0 -0
  67. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/integrations/__init__.py +0 -0
  68. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/integrations/sandbox_provider.py +0 -0
  69. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/local_context.py +0 -0
  70. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/main.py +0 -0
  71. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/mcp_auth.py +0 -0
  72. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/mcp_providers/__init__.py +0 -0
  73. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/mcp_providers/_registry.py +0 -0
  74. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/mcp_providers/base.py +0 -0
  75. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/mcp_providers/github.py +0 -0
  76. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/mcp_providers/slack.py +0 -0
  77. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/mcp_trust.py +0 -0
  78. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/media_utils.py +0 -0
  79. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/model_config.py +0 -0
  80. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/non_interactive.py +0 -0
  81. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/notifications.py +0 -0
  82. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/offload.py +0 -0
  83. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/onboarding.py +0 -0
  84. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/output.py +0 -0
  85. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/project_utils.py +0 -0
  86. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/py.typed +0 -0
  87. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/remote_client.py +0 -0
  88. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/server.py +0 -0
  89. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/server_graph.py +0 -0
  90. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/server_manager.py +0 -0
  91. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/sessions.py +0 -0
  92. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/skills/__init__.py +0 -0
  93. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/skills/commands.py +0 -0
  94. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/skills/invocation.py +0 -0
  95. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/skills/load.py +0 -0
  96. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/state_migration.py +0 -0
  97. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/subagents.py +0 -0
  98. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/system_prompt.md +0 -0
  99. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/terminal_capabilities.py +0 -0
  100. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/textual_adapter.py +0 -0
  101. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/theme.py +0 -0
  102. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/token_state.py +0 -0
  103. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/tool_display.py +0 -0
  104. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/tools.py +0 -0
  105. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/unicode_security.py +0 -0
  106. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/update_check.py +0 -0
  107. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/__init__.py +0 -0
  108. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/_links.py +0 -0
  109. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/agent_selector.py +0 -0
  110. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/approval.py +0 -0
  111. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/ask_user.py +0 -0
  112. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/auth.py +0 -0
  113. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/autocomplete.py +0 -0
  114. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/chat_input.py +0 -0
  115. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/diff.py +0 -0
  116. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/history.py +0 -0
  117. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/launch_init.py +0 -0
  118. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/loading.py +0 -0
  119. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/mcp_viewer.py +0 -0
  120. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/message_store.py +0 -0
  121. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/model_selector.py +0 -0
  122. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/notification_center.py +0 -0
  123. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/notification_detail.py +0 -0
  124. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/notification_settings.py +0 -0
  125. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/status.py +0 -0
  126. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/theme_selector.py +0 -0
  127. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/thread_selector.py +0 -0
  128. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/tool_renderers.py +0 -0
  129. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/tool_widgets.py +0 -0
  130. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/update_available.py +0 -0
  131. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/deepagents_cli/widgets/welcome.py +0 -0
  132. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/examples/deploy-content-writer/.env.example +0 -0
  133. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/examples/deploy-content-writer/skills/blog-post/SKILL.md +0 -0
  134. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/examples/deploy-content-writer/skills/social-media/SKILL.md +0 -0
  135. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/examples/deploy-content-writer/user/context.md +0 -0
  136. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/examples/deploy-content-writer/user/preferences.md +0 -0
  137. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/examples/skills/arxiv-search/SKILL.md +0 -0
  138. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  139. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/examples/skills/langgraph-docs/SKILL.md +0 -0
  140. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/examples/skills/skill-creator/SKILL.md +0 -0
  141. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  142. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  143. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/examples/skills/web-research/SKILL.md +0 -0
  144. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/.nvmrc +0 -0
  145. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/index.html +0 -0
  146. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/package-lock.json +0 -0
  147. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/package.json +0 -0
  148. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/postcss.config.js +0 -0
  149. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/public/logo-dark.svg +0 -0
  150. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/public/logo-light.svg +0 -0
  151. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/App.tsx +0 -0
  152. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/ThemeProvider.tsx +0 -0
  153. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/auth/anonymous.tsx +0 -0
  154. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/auth/clerk.tsx +0 -0
  155. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/auth/loader.tsx +0 -0
  156. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/auth/supabase.tsx +0 -0
  157. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/auth/types.ts +0 -0
  158. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/components/AppHeader.tsx +0 -0
  159. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/components/FilePanels.tsx +0 -0
  160. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/components/MessageList.tsx +0 -0
  161. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/components/SubagentActivity.tsx +0 -0
  162. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/components/ThreadPicker.tsx +0 -0
  163. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/components/TodosPanel.tsx +0 -0
  164. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/components/ToolCallCard.tsx +0 -0
  165. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/components/toolcalls/FileToolCard.tsx +0 -0
  166. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/components/toolcalls/SearchCard.tsx +0 -0
  167. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/components/toolcalls/ThinkCard.tsx +0 -0
  168. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/components/toolcalls/TodosCard.tsx +0 -0
  169. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/components/toolcalls/index.ts +0 -0
  170. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/constants.ts +0 -0
  171. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/index.css +0 -0
  172. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/main.tsx +0 -0
  173. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/runtimeConfig.ts +0 -0
  174. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/types.ts +0 -0
  175. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/src/vite-env.d.ts +0 -0
  176. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/tsconfig.json +0 -0
  177. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/frontend/vite.config.ts +0 -0
  178. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/images/cli.png +0 -0
  179. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/scripts/check_imports.py +0 -0
  180. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/scripts/debug_server.sh +0 -0
  181. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/scripts/install.sh +0 -0
  182. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/README.md +0 -0
  183. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/integration_tests/__init__.py +0 -0
  184. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/integration_tests/benchmarks/__init__.py +0 -0
  185. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
  186. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
  187. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/integration_tests/conftest.py +0 -0
  188. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/integration_tests/test_acp_mode.py +0 -0
  189. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/integration_tests/test_compact_resume.py +0 -0
  190. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/integration_tests/test_sandbox_factory.py +0 -0
  191. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/integration_tests/test_sandbox_operations.py +0 -0
  192. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/__init__.py +0 -0
  193. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/conftest.py +0 -0
  194. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/deploy/__init__.py +0 -0
  195. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/deploy/test_bundler.py +0 -0
  196. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/deploy/test_commands.py +0 -0
  197. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/deploy/test_config.py +0 -0
  198. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/deploy/test_frontend_bundle.py +0 -0
  199. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/deploy/test_frontend_config.py +0 -0
  200. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/skills/__init__.py +0 -0
  201. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/skills/test_commands.py +0 -0
  202. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/skills/test_load.py +0 -0
  203. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/skills/test_skills_json.py +0 -0
  204. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_agent.py +0 -0
  205. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_agent_friendly.py +0 -0
  206. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_agent_selector.py +0 -0
  207. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_app.py +0 -0
  208. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_approval.py +0 -0
  209. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_args.py +0 -0
  210. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_ask_user.py +0 -0
  211. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_ask_user_middleware.py +0 -0
  212. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_auth_store.py +0 -0
  213. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_auth_widgets.py +0 -0
  214. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_autocomplete.py +0 -0
  215. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_charset.py +0 -0
  216. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_chat_input.py +0 -0
  217. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_command_registry.py +0 -0
  218. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_compact_tool.py +0 -0
  219. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_configurable_model.py +0 -0
  220. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_debug.py +0 -0
  221. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_editor.py +0 -0
  222. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_end_to_end.py +0 -0
  223. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_env_vars.py +0 -0
  224. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_exception_handling.py +0 -0
  225. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_extras_info.py +0 -0
  226. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_file_ops.py +0 -0
  227. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_formatting.py +0 -0
  228. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_git.py +0 -0
  229. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_history.py +0 -0
  230. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_hooks.py +0 -0
  231. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_imports.py +0 -0
  232. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_input_parsing.py +0 -0
  233. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_launch_init.py +0 -0
  234. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_links.py +0 -0
  235. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_loading.py +0 -0
  236. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_local_context.py +0 -0
  237. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_main.py +0 -0
  238. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_main_acp_mode.py +0 -0
  239. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_main_args.py +0 -0
  240. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_mcp_auth.py +0 -0
  241. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_mcp_commands.py +0 -0
  242. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_mcp_trust.py +0 -0
  243. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_mcp_viewer.py +0 -0
  244. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_media_utils.py +0 -0
  245. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_message_store.py +0 -0
  246. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_model_config.py +0 -0
  247. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_model_selector.py +0 -0
  248. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_model_switch.py +0 -0
  249. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_non_interactive.py +0 -0
  250. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_notification_center.py +0 -0
  251. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_notification_detail.py +0 -0
  252. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_notifications.py +0 -0
  253. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_offload.py +0 -0
  254. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_offload_dict_messages.py +0 -0
  255. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_onboarding.py +0 -0
  256. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_output.py +0 -0
  257. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_remote_client.py +0 -0
  258. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_sandbox_factory.py +0 -0
  259. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_server.py +0 -0
  260. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_server_config.py +0 -0
  261. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_server_graph.py +0 -0
  262. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_server_helpers.py +0 -0
  263. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_server_manager.py +0 -0
  264. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_session_stats.py +0 -0
  265. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_sessions.py +0 -0
  266. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_shell_allow_list.py +0 -0
  267. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_skill_invocation.py +0 -0
  268. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_startup_fast_paths.py +0 -0
  269. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_state_migration.py +0 -0
  270. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_status.py +0 -0
  271. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_subagents.py +0 -0
  272. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_terminal_capabilities.py +0 -0
  273. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_textual_adapter.py +0 -0
  274. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_textual_patches.py +0 -0
  275. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_theme.py +0 -0
  276. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_thread_selector.py +0 -0
  277. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_token_tracker.py +0 -0
  278. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_tool_display.py +0 -0
  279. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_ui.py +0 -0
  280. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_unicode_security.py +0 -0
  281. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_update_available.py +0 -0
  282. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_update_check.py +0 -0
  283. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_version.py +0 -0
  284. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/test_welcome.py +0 -0
  285. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/tools/__init__.py +0 -0
  286. {deepagents_cli-0.0.50 → deepagents_cli-0.0.51}/tests/unit_tests/tools/test_fetch_url.py +0 -0
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.51](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.50...deepagents-cli==0.0.51) (2026-05-05)
4
+
5
+ ### Features
6
+
7
+ * `/reload` skill diff report ([#3153](https://github.com/langchain-ai/deepagents/issues/3153)) ([7c3278a](https://github.com/langchain-ai/deepagents/commit/7c3278a46fe1bace82224f43d8e1b7a023d0086a))
8
+ * Surface MCP config discovery paths and format in help screens ([#3152](https://github.com/langchain-ai/deepagents/issues/3152)) ([ce6887c](https://github.com/langchain-ai/deepagents/commit/ce6887c89bacee63bdd74ab9d26097e2e418ff43))
9
+
3
10
  ## [0.0.50](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.49...deepagents-cli==0.0.50) (2026-05-04)
4
11
 
5
12
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepagents-cli
3
- Version: 0.0.50
3
+ Version: 0.0.51
4
4
  Summary: Terminal interface for Deep Agents - interactive AI agent with file operations, shell access, and sub-agent capabilities.
5
5
  Project-URL: Homepage, https://docs.langchain.com/oss/python/deepagents/overview
6
6
  Project-URL: Documentation, https://reference.langchain.com/python/deepagents/
@@ -27,19 +27,19 @@ Classifier: Topic :: Terminals
27
27
  Requires-Python: <4.0,>=3.11
28
28
  Requires-Dist: aiosqlite<1.0.0,>=0.19.0
29
29
  Requires-Dist: deepagents-acp>=0.0.4
30
- Requires-Dist: deepagents==0.5.6
30
+ Requires-Dist: deepagents==0.5.7
31
31
  Requires-Dist: httpx<1.0.0,>=0.28.1
32
- Requires-Dist: langchain-anthropic<2.0.0,>=1.4.2
32
+ Requires-Dist: langchain-anthropic<2.0.0,>=1.4.3
33
33
  Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2
34
34
  Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.2.2
35
35
  Requires-Dist: langchain-openai<2.0.0,>=1.2.1
36
- Requires-Dist: langchain<2.0.0,>=1.2.15
37
- Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.0.0
38
- Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.15
36
+ Requires-Dist: langchain<2.0.0,>=1.2.17
37
+ Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.0.3
38
+ Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.24
39
39
  Requires-Dist: langgraph-prebuilt<2.0.0,>=1.0.13
40
- Requires-Dist: langgraph-sdk<1.0.0,>=0.3.11
41
- Requires-Dist: langgraph<2.0.0,>=1.1.6
42
- Requires-Dist: langsmith[sandbox]>=0.7.32
40
+ Requires-Dist: langgraph-sdk<1.0.0,>=0.3.13
41
+ Requires-Dist: langgraph<2.0.0,>=1.1.10
42
+ Requires-Dist: langsmith[sandbox]>=0.8.0
43
43
  Requires-Dist: markdownify<2.0.0,>=0.13.0
44
44
  Requires-Dist: packaging>=23.0
45
45
  Requires-Dist: pillow<13.0.0,>=10.0.0
@@ -48,9 +48,9 @@ Requires-Dist: pyperclip<2.0.0,>=1.11.0
48
48
  Requires-Dist: python-dotenv<2.0.0,>=1.0.0
49
49
  Requires-Dist: pyyaml>=6.0.0
50
50
  Requires-Dist: requests<3.0.0,>=2.0.0
51
- Requires-Dist: rich<15.0.0,>=14.0.0
52
- Requires-Dist: tavily-python<1.0.0,>=0.7.21
53
- Requires-Dist: textual-autocomplete<5.0.0,>=3.0.0
51
+ Requires-Dist: rich<16.0.0,>=15.0.0
52
+ Requires-Dist: tavily-python<1.0.0,>=0.7.24
53
+ Requires-Dist: textual-autocomplete<5.0.0,>=4.0.6
54
54
  Requires-Dist: textual-speedups<1.0.0,>=0.2.1
55
55
  Requires-Dist: textual<9.0.0,>=8.2.5
56
56
  Requires-Dist: tomli-w<2.0.0,>=1.0.0
@@ -58,24 +58,24 @@ Requires-Dist: uuid-utils<1.0.0,>=0.10.0
58
58
  Provides-Extra: agentcore
59
59
  Requires-Dist: langchain-agentcore-codeinterpreter>=0.0.2; extra == 'agentcore'
60
60
  Provides-Extra: all-providers
61
- Requires-Dist: langchain-anthropic<2.0.0,>=1.4.2; extra == 'all-providers'
62
- Requires-Dist: langchain-aws<2.0.0,>=1.4.5; extra == 'all-providers'
61
+ Requires-Dist: langchain-anthropic<2.0.0,>=1.4.3; extra == 'all-providers'
62
+ Requires-Dist: langchain-aws<2.0.0,>=1.4.6; extra == 'all-providers'
63
63
  Requires-Dist: langchain-baseten<1.0.0,>=0.2.0; extra == 'all-providers'
64
64
  Requires-Dist: langchain-cohere<1.0.0,>=0.5.1; extra == 'all-providers'
65
65
  Requires-Dist: langchain-deepseek<2.0.0,>=1.0.1; extra == 'all-providers'
66
- Requires-Dist: langchain-fireworks<2.0.0,>=1.2.0; extra == 'all-providers'
66
+ Requires-Dist: langchain-fireworks<2.0.0,>=1.3.1; extra == 'all-providers'
67
67
  Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2; extra == 'all-providers'
68
- Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.2; extra == 'all-providers'
68
+ Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.3; extra == 'all-providers'
69
69
  Requires-Dist: langchain-groq<2.0.0,>=1.1.2; extra == 'all-providers'
70
70
  Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'all-providers'
71
71
  Requires-Dist: langchain-ibm<2.0.0,>=1.0.7; extra == 'all-providers'
72
72
  Requires-Dist: langchain-litellm<2.0.0,>=0.6.4; extra == 'all-providers'
73
- Requires-Dist: langchain-mistralai<2.0.0,>=1.1.2; extra == 'all-providers'
73
+ Requires-Dist: langchain-mistralai<2.0.0,>=1.1.4; extra == 'all-providers'
74
74
  Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.2.1; extra == 'all-providers'
75
75
  Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'all-providers'
76
76
  Requires-Dist: langchain-openai<2.0.0,>=1.2.1; extra == 'all-providers'
77
- Requires-Dist: langchain-openrouter<2.0.0,>=0.2.1; extra == 'all-providers'
78
- Requires-Dist: langchain-perplexity<2.0.0,>=1.1.0; extra == 'all-providers'
77
+ Requires-Dist: langchain-openrouter<2.0.0,>=0.2.3; extra == 'all-providers'
78
+ Requires-Dist: langchain-perplexity<2.0.0,>=1.2.0; extra == 'all-providers'
79
79
  Requires-Dist: langchain-xai<2.0.0,>=1.2.2; extra == 'all-providers'
80
80
  Provides-Extra: all-sandboxes
81
81
  Requires-Dist: langchain-agentcore-codeinterpreter>=0.0.2; extra == 'all-sandboxes'
@@ -83,11 +83,11 @@ Requires-Dist: langchain-daytona>=0.0.5; extra == 'all-sandboxes'
83
83
  Requires-Dist: langchain-modal>=0.0.3; extra == 'all-sandboxes'
84
84
  Requires-Dist: langchain-runloop>=0.0.4; extra == 'all-sandboxes'
85
85
  Provides-Extra: anthropic
86
- Requires-Dist: langchain-anthropic<2.0.0,>=1.4.2; extra == 'anthropic'
86
+ Requires-Dist: langchain-anthropic<2.0.0,>=1.4.3; extra == 'anthropic'
87
87
  Provides-Extra: baseten
88
88
  Requires-Dist: langchain-baseten<1.0.0,>=0.2.0; extra == 'baseten'
89
89
  Provides-Extra: bedrock
90
- Requires-Dist: langchain-aws<2.0.0,>=1.4.5; extra == 'bedrock'
90
+ Requires-Dist: langchain-aws<2.0.0,>=1.4.6; extra == 'bedrock'
91
91
  Provides-Extra: cohere
92
92
  Requires-Dist: langchain-cohere<1.0.0,>=0.5.1; extra == 'cohere'
93
93
  Provides-Extra: daytona
@@ -95,7 +95,7 @@ Requires-Dist: langchain-daytona>=0.0.5; extra == 'daytona'
95
95
  Provides-Extra: deepseek
96
96
  Requires-Dist: langchain-deepseek<2.0.0,>=1.0.1; extra == 'deepseek'
97
97
  Provides-Extra: fireworks
98
- Requires-Dist: langchain-fireworks<2.0.0,>=1.2.0; extra == 'fireworks'
98
+ Requires-Dist: langchain-fireworks<2.0.0,>=1.3.1; extra == 'fireworks'
99
99
  Provides-Extra: google-genai
100
100
  Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2; extra == 'google-genai'
101
101
  Provides-Extra: groq
@@ -107,7 +107,7 @@ Requires-Dist: langchain-ibm<2.0.0,>=1.0.7; extra == 'ibm'
107
107
  Provides-Extra: litellm
108
108
  Requires-Dist: langchain-litellm<2.0.0,>=0.6.4; extra == 'litellm'
109
109
  Provides-Extra: mistralai
110
- Requires-Dist: langchain-mistralai<2.0.0,>=1.1.2; extra == 'mistralai'
110
+ Requires-Dist: langchain-mistralai<2.0.0,>=1.1.4; extra == 'mistralai'
111
111
  Provides-Extra: modal
112
112
  Requires-Dist: langchain-modal>=0.0.3; extra == 'modal'
113
113
  Provides-Extra: nvidia
@@ -117,13 +117,13 @@ Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'ollama'
117
117
  Provides-Extra: openai
118
118
  Requires-Dist: langchain-openai<2.0.0,>=1.2.1; extra == 'openai'
119
119
  Provides-Extra: openrouter
120
- Requires-Dist: langchain-openrouter<2.0.0,>=0.2.1; extra == 'openrouter'
120
+ Requires-Dist: langchain-openrouter<2.0.0,>=0.2.3; extra == 'openrouter'
121
121
  Provides-Extra: perplexity
122
- Requires-Dist: langchain-perplexity<2.0.0,>=1.1.0; extra == 'perplexity'
122
+ Requires-Dist: langchain-perplexity<2.0.0,>=1.2.0; extra == 'perplexity'
123
123
  Provides-Extra: runloop
124
124
  Requires-Dist: langchain-runloop>=0.0.4; extra == 'runloop'
125
125
  Provides-Extra: vertexai
126
- Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.2; extra == 'vertexai'
126
+ Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.3; extra == 'vertexai'
127
127
  Provides-Extra: xai
128
128
  Requires-Dist: langchain-xai<2.0.0,>=1.2.2; extra == 'xai'
129
129
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  """Version information and lightweight constants for `deepagents-cli`."""
2
2
 
3
- __version__ = "0.0.50" # x-release-please-version
3
+ __version__ = "0.0.51" # x-release-please-version
4
4
 
5
5
  DOCS_URL = "https://docs.langchain.com/oss/python/deepagents/cli"
6
6
  """URL for `deepagents-cli` documentation."""
@@ -1631,7 +1631,7 @@ class DeepAgentsApp(App):
1631
1631
  timeout=15,
1632
1632
  )
1633
1633
 
1634
- async def _discover_skills(self) -> None:
1634
+ async def _discover_skills(self) -> bool:
1635
1635
  """Discover skills, cache metadata, and update autocomplete.
1636
1636
 
1637
1637
  Caches the full `ExtendedSkillMetadata` list and pre-resolved
@@ -1639,29 +1639,22 @@ class DeepAgentsApp(App):
1639
1639
  re-walking every skill directory.
1640
1640
 
1641
1641
  Runs filesystem I/O in a thread to avoid blocking the event loop.
1642
+
1643
+ On failure, prior cache is preserved so a transient error (e.g.,
1644
+ a single unreadable subdir) doesn't wipe a known-good skill list.
1645
+ Callers that need to distinguish "no skills" from "discovery
1646
+ failed" can check the return value.
1647
+
1648
+ Returns:
1649
+ `True` on success, `False` if discovery raised. Callers that
1650
+ don't care (fire-and-forget startup/agent-switch workers)
1651
+ simply ignore the result.
1642
1652
  """
1643
1653
  from deepagents_cli.command_registry import SLASH_COMMANDS, build_skill_commands
1644
1654
 
1645
1655
  try:
1646
1656
  skills, roots = await asyncio.to_thread(self._discover_skills_and_roots)
1647
- self._discovered_skills = skills
1648
- self._skill_allowed_roots = roots
1649
- if skills:
1650
- skill_commands = build_skill_commands(skills)
1651
- if self._chat_input:
1652
- merged = list(SLASH_COMMANDS) + skill_commands
1653
- self._chat_input.update_slash_commands(merged)
1654
- else:
1655
- logger.debug(
1656
- "Skill discovery completed (%d skills) but chat input "
1657
- "not yet mounted; autocomplete deferred",
1658
- len(skills),
1659
- )
1660
1657
  except OSError:
1661
- # Clear stale cache so /reload failures don't silently
1662
- # leave old data in place.
1663
- self._discovered_skills = []
1664
- self._skill_allowed_roots = []
1665
1658
  logger.warning(
1666
1659
  "Filesystem error during skill discovery",
1667
1660
  exc_info=True,
@@ -1673,9 +1666,8 @@ class DeepAgentsApp(App):
1673
1666
  timeout=6,
1674
1667
  markup=False,
1675
1668
  )
1669
+ return False
1676
1670
  except Exception:
1677
- self._discovered_skills = []
1678
- self._skill_allowed_roots = []
1679
1671
  logger.exception("Unexpected error during skill discovery")
1680
1672
  self.notify(
1681
1673
  "Skill discovery failed unexpectedly. "
@@ -1684,6 +1676,22 @@ class DeepAgentsApp(App):
1684
1676
  timeout=8,
1685
1677
  markup=False,
1686
1678
  )
1679
+ return False
1680
+
1681
+ self._discovered_skills = skills
1682
+ self._skill_allowed_roots = roots
1683
+ if skills:
1684
+ skill_commands = build_skill_commands(skills)
1685
+ if self._chat_input:
1686
+ merged = list(SLASH_COMMANDS) + skill_commands
1687
+ self._chat_input.update_slash_commands(merged)
1688
+ else:
1689
+ logger.debug(
1690
+ "Skill discovery completed (%d skills) but chat input "
1691
+ "not yet mounted; autocomplete deferred",
1692
+ len(skills),
1693
+ )
1694
+ return True
1687
1695
 
1688
1696
  def _discover_skills_and_roots(
1689
1697
  self,
@@ -4213,6 +4221,10 @@ class DeepAgentsApp(App):
4213
4221
  await self._show_model_selector(extra_kwargs=extra_kwargs)
4214
4222
  elif cmd == "/reload":
4215
4223
  await self._mount_message(UserMessage(command))
4224
+
4225
+ # Snapshot pre-reload skill names so the report can show diff.
4226
+ old_skill_names = {s["name"] for s in self._discovered_skills}
4227
+
4216
4228
  try:
4217
4229
  changes = settings.reload_from_environment()
4218
4230
 
@@ -4239,6 +4251,22 @@ class DeepAgentsApp(App):
4239
4251
  theme_reload_ok = False
4240
4252
  logger.warning("Failed to reload user themes", exc_info=True)
4241
4253
 
4254
+ # Re-discover skills so autocomplete reflects any new/removed
4255
+ # skills. Run via the same exclusive-group worker used at
4256
+ # startup so any in-flight startup discovery is cancelled
4257
+ # rather than racing this one, then await its completion so
4258
+ # the report can include the diff.
4259
+ skill_worker = self.run_worker(
4260
+ self._discover_skills(),
4261
+ exclusive=True,
4262
+ group="startup-skill-discovery",
4263
+ )
4264
+ await skill_worker.wait()
4265
+ discovery_ok = skill_worker.result is True
4266
+ new_skill_names = {s["name"] for s in self._discovered_skills}
4267
+ added_skills = sorted(new_skill_names - old_skill_names)
4268
+ removed_skills = sorted(old_skill_names - new_skill_names)
4269
+
4242
4270
  if changes:
4243
4271
  report = "Configuration reloaded. Changes:\n" + "\n".join(
4244
4272
  f" - {change}" for change in changes
@@ -4252,14 +4280,21 @@ class DeepAgentsApp(App):
4252
4280
  report += (
4253
4281
  "\nTheme registry reload failed. Check config.toml for errors."
4254
4282
  )
4283
+ if not discovery_ok:
4284
+ # Diff is meaningless when discovery failed: prior cache
4285
+ # was preserved, so old vs. new is identical and
4286
+ # `Skills reloaded. No changes detected.` would be a lie.
4287
+ report += (
4288
+ "\nSkill re-discovery failed; existing /skill: list left as-is."
4289
+ )
4290
+ elif added_skills or removed_skills:
4291
+ skill_lines = []
4292
+ if added_skills:
4293
+ skill_lines.append(f" - Added: {', '.join(added_skills)}")
4294
+ if removed_skills:
4295
+ skill_lines.append(f" - Removed: {', '.join(removed_skills)}")
4296
+ report += "\nSkills updated:\n" + "\n".join(skill_lines)
4255
4297
  await self._mount_message(AppMessage(report))
4256
-
4257
- # Re-discover skills so autocomplete reflects any new/removed skills
4258
- self.run_worker(
4259
- self._discover_skills(),
4260
- exclusive=True,
4261
- group="startup-skill-discovery",
4262
- )
4263
4298
  elif cmd.startswith("/skill:"):
4264
4299
  await self._handle_skill_command(command)
4265
4300
  # -- Hidden debug commands (not in COMMANDS / autocomplete) -----------
@@ -710,7 +710,7 @@ class _AgentCoreProvider(SandboxProvider):
710
710
 
711
711
  # Validate AWS credentials early for a clear error message.
712
712
  try:
713
- import boto3 # ty: ignore[unresolved-import]
713
+ import boto3 # ty: ignore[unresolved-import, unused-ignore-comment]
714
714
 
715
715
  session = boto3.Session()
716
716
  credentials = session.get_credentials()
@@ -113,7 +113,9 @@ async def run_mcp_login(*, server: str, config_path: str | None) -> int:
113
113
  found = discover_mcp_configs()
114
114
  if not found:
115
115
  print( # noqa: T201
116
- "No MCP config file found. Pass --config <path>.",
116
+ "No MCP config file found in any auto-discovered location. "
117
+ "Pass --config <path>, or run `deepagents mcp login --help` "
118
+ "to see the search paths and config format.",
117
119
  file=sys.stderr,
118
120
  )
119
121
  return 2
@@ -640,16 +640,27 @@ def _resolve_project_config_base(project_context: ProjectContext | None) -> Path
640
640
  return find_project_root() or Path.cwd()
641
641
 
642
642
 
643
+ MCP_CONFIG_DISCOVERY_PATHS: tuple[tuple[str, str], ...] = (
644
+ ("~/.deepagents/.mcp.json", "user-level"),
645
+ ("<project-root>/.deepagents/.mcp.json", "project subdir"),
646
+ ("<project-root>/.mcp.json", "project root"),
647
+ )
648
+ """Display strings for the auto-discovered MCP config paths.
649
+
650
+ Ordered from lowest to highest precedence. Each entry is `(path, label)`
651
+ suitable for rendering in help screens and error messages. The runtime
652
+ discovery in `discover_mcp_configs` builds the same paths from
653
+ `Path.home()` and `_resolve_project_config_base()`.
654
+ """
655
+
656
+
643
657
  def discover_mcp_configs(
644
658
  *, project_context: ProjectContext | None = None
645
659
  ) -> list[Path]:
646
660
  """Find MCP config files from standard locations.
647
661
 
648
- Checks three paths in precedence order (lowest to highest):
649
-
650
- 1. `~/.deepagents/.mcp.json` (user-level global)
651
- 2. `<project-root>/.deepagents/.mcp.json` (project subdir)
652
- 3. `<project-root>/.mcp.json` (project root, Claude Code compat)
662
+ Checks the paths listed in `MCP_CONFIG_DISCOVERY_PATHS`, lowest to
663
+ highest precedence.
653
664
 
654
665
  Args:
655
666
  project_context: Explicit project path context, if available.
@@ -403,6 +403,35 @@ def show_update_help() -> None:
403
403
  console.print()
404
404
 
405
405
 
406
+ def _print_mcp_discovery_paths() -> None:
407
+ """Print the auto-discovered MCP config paths in precedence order."""
408
+ from deepagents_cli.mcp_tools import MCP_CONFIG_DISCOVERY_PATHS
409
+
410
+ console.print(
411
+ "[bold]Auto-discovered config paths (precedence order):[/bold]",
412
+ style=theme.PRIMARY,
413
+ )
414
+ width = max(len(path) for path, _ in MCP_CONFIG_DISCOVERY_PATHS)
415
+ for path, label in MCP_CONFIG_DISCOVERY_PATHS:
416
+ console.print(f" {path:<{width}} ({label})")
417
+ console.print(
418
+ " <project-root> = nearest ancestor with a `.git` entry, else CWD.",
419
+ style=theme.MUTED,
420
+ )
421
+
422
+
423
+ _MCP_CONFIG_FORMAT_EXAMPLE = """\
424
+ {
425
+ "mcpServers": {
426
+ "notion": {
427
+ "transport": "http",
428
+ "url": "https://mcp.notion.com/mcp",
429
+ "auth": "oauth"
430
+ }
431
+ }
432
+ }"""
433
+
434
+
406
435
  def show_mcp_help() -> None:
407
436
  """Show help information for the `mcp` subcommand."""
408
437
  console.print()
@@ -414,6 +443,13 @@ def show_mcp_help() -> None:
414
443
  console.print()
415
444
  _print_option_section()
416
445
  console.print()
446
+ _print_mcp_discovery_paths()
447
+ console.print()
448
+ console.print(
449
+ " Pass --config <path> to any subcommand to bypass discovery.",
450
+ style=theme.MUTED,
451
+ )
452
+ console.print()
417
453
  console.print("[bold]Examples:[/bold]", style=theme.PRIMARY)
418
454
  console.print(" deepagents mcp login notion")
419
455
  console.print(" deepagents mcp login linear --config ./mcp-config.json")
@@ -431,6 +467,11 @@ def show_mcp_login_help() -> None:
431
467
  "(default: auto-discovered)",
432
468
  )
433
469
  console.print()
470
+ _print_mcp_discovery_paths()
471
+ console.print()
472
+ console.print("[bold]Config format:[/bold]", style=theme.PRIMARY)
473
+ console.print(_MCP_CONFIG_FORMAT_EXAMPLE, style=theme.MUTED)
474
+ console.print()
434
475
  console.print("[bold]Examples:[/bold]", style=theme.PRIMARY)
435
476
  console.print(" deepagents mcp login notion")
436
477
  console.print(" deepagents mcp login linear --config ./mcp-config.json")
@@ -41,7 +41,7 @@ if TYPE_CHECKING:
41
41
  logger = logging.getLogger(__name__)
42
42
 
43
43
 
44
- def _show_timestamp_toast(widget: Static | Vertical) -> None:
44
+ def _show_timestamp_toast(widget: Static | Vertical) -> None: # noqa: ARG001 # temporarily disabled
45
45
  """Show a toast with the message's creation timestamp.
46
46
 
47
47
  No-ops silently if the widget is not mounted or has no associated message
@@ -50,21 +50,23 @@ def _show_timestamp_toast(widget: Static | Vertical) -> None:
50
50
  Args:
51
51
  widget: The message widget whose timestamp to display.
52
52
  """
53
- from datetime import UTC, datetime
54
-
55
- try:
56
- app = widget.app
57
- except Exception: # noqa: BLE001 # Textual raises when widget has no app
58
- return
59
- if not widget.id:
60
- return
61
- store = app._message_store # type: ignore[attr-defined]
62
- data = store.get_message(widget.id)
63
- if not data:
64
- return
65
- dt = datetime.fromtimestamp(data.timestamp, tz=UTC).astimezone()
66
- label = f"{dt:%b} {dt.day}, {dt.hour % 12 or 12}:{dt:%M:%S} {dt:%p}"
67
- app.notify(label, timeout=3)
53
+ # TODO: temporarily disabled — uncomment to restore click-to-show-timestamp
54
+ return # early return while feature is disabled
55
+ # from datetime import UTC, datetime # noqa: ERA001
56
+ #
57
+ # try: # noqa: ERA001
58
+ # app = widget.app # noqa: ERA001
59
+ # except Exception: # Textual raises when widget has no app # noqa: ERA001
60
+ # return # noqa: ERA001
61
+ # if not widget.id:
62
+ # return # noqa: ERA001
63
+ # store = app._message_store # noqa: ERA001
64
+ # data = store.get_message(widget.id) # noqa: ERA001
65
+ # if not data:
66
+ # return # noqa: ERA001
67
+ # dt = datetime.fromtimestamp(data.timestamp, tz=UTC).astimezone() # noqa: ERA001
68
+ # label = f"{dt:%b} {dt.day}, {dt.hour % 12 or 12}:{dt:%M:%S} {dt:%p}" # noqa: ERA001, E501
69
+ # app.notify(label, timeout=3) # noqa: ERA001
68
70
 
69
71
 
70
72
  class _TimestampClickMixin:
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "deepagents-cli"
7
- version = "0.0.50"
7
+ version = "0.0.51"
8
8
  description = "Terminal interface for Deep Agents - interactive AI agent with file operations, shell access, and sub-agent capabilities."
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -26,19 +26,19 @@ classifiers = [
26
26
  ]
27
27
  dependencies = [
28
28
  # Framework
29
- "deepagents==0.5.6",
30
- "langchain>=1.2.15,<2.0.0",
31
- "langgraph>=1.1.6,<2.0.0",
32
- "langgraph-checkpoint-sqlite>=3.0.0,<4.0.0",
29
+ "deepagents==0.5.7",
30
+ "langchain>=1.2.17,<2.0.0",
31
+ "langgraph>=1.1.10,<2.0.0",
32
+ "langgraph-checkpoint-sqlite>=3.0.3,<4.0.0",
33
33
  "langgraph-prebuilt>=1.0.13,<2.0.0",
34
34
 
35
35
  # Client-server architecture
36
- "langgraph-sdk>=0.3.11,<1.0.0",
37
- "langgraph-cli[inmem]>=0.4.15,<1.0.0",
36
+ "langgraph-sdk>=0.3.13,<1.0.0",
37
+ "langgraph-cli[inmem]>=0.4.24,<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
- "langchain-anthropic>=1.4.2,<2.0.0",
41
+ "langchain-anthropic>=1.4.3,<2.0.0",
42
42
  "langchain-google-genai>=4.2.2,<5.0.0",
43
43
  "langchain-openai>=1.2.1,<2.0.0",
44
44
 
@@ -47,17 +47,17 @@ dependencies = [
47
47
  # On bump, run `tests/unit_tests/test_textual_patches.py` and delete the
48
48
  # patch if the upstream issue is fixed.
49
49
  "textual>=8.2.5,<9.0.0",
50
- "textual-autocomplete>=3.0.0,<5.0.0",
50
+ "textual-autocomplete>=4.0.6,<5.0.0",
51
51
  "textual-speedups>=0.2.1,<1.0.0",
52
52
  "prompt-toolkit>=3.0.52,<4.0.0",
53
- "rich>=14.0.0,<15.0.0",
53
+ "rich>=15.0.0,<16.0.0",
54
54
  "markdownify>=0.13.0,<2.0.0",
55
55
 
56
56
  # Sandbox integrations
57
- "langsmith[sandbox]>=0.7.32",
57
+ "langsmith[sandbox]>=0.8.0",
58
58
 
59
59
  # Tools
60
- "tavily-python>=0.7.21,<1.0.0",
60
+ "tavily-python>=0.7.24,<1.0.0",
61
61
 
62
62
  # Clipboard
63
63
  "pyperclip>=1.11.0,<2.0.0",
@@ -83,24 +83,24 @@ dependencies = [
83
83
 
84
84
  [project.optional-dependencies]
85
85
  # Model providers
86
- anthropic = ["langchain-anthropic>=1.4.2,<2.0.0"]
86
+ anthropic = ["langchain-anthropic>=1.4.3,<2.0.0"]
87
87
  baseten = ["langchain-baseten>=0.2.0,<1.0.0"]
88
- bedrock = ["langchain-aws>=1.4.5,<2.0.0"]
88
+ bedrock = ["langchain-aws>=1.4.6,<2.0.0"]
89
89
  cohere = ["langchain-cohere>=0.5.1,<1.0.0"]
90
90
  deepseek = ["langchain-deepseek>=1.0.1,<2.0.0"]
91
- fireworks = ["langchain-fireworks>=1.2.0,<2.0.0"]
91
+ fireworks = ["langchain-fireworks>=1.3.1,<2.0.0"]
92
92
  google-genai = ["langchain-google-genai>=4.2.2,<5.0.0"]
93
93
  groq = ["langchain-groq>=1.1.2,<2.0.0"]
94
94
  huggingface = ["langchain-huggingface>=1.2.2,<2.0.0"]
95
95
  ibm = ["langchain-ibm>=1.0.7,<2.0.0"]
96
96
  litellm = ["langchain-litellm>=0.6.4,<2.0.0"]
97
- mistralai = ["langchain-mistralai>=1.1.2,<2.0.0"]
97
+ mistralai = ["langchain-mistralai>=1.1.4,<2.0.0"]
98
98
  nvidia = ["langchain-nvidia-ai-endpoints>=1.2.1,<2.0.0"]
99
99
  ollama = ["langchain-ollama>=1.1.0,<2.0.0"]
100
100
  openai = ["langchain-openai>=1.2.1,<2.0.0"]
101
- openrouter = ["langchain-openrouter>=0.2.1,<2.0.0"]
102
- perplexity = ["langchain-perplexity>=1.1.0,<2.0.0"]
103
- vertexai = ["langchain-google-vertexai>=3.2.2,<4.0.0"]
101
+ openrouter = ["langchain-openrouter>=0.2.3,<2.0.0"]
102
+ perplexity = ["langchain-perplexity>=1.2.0,<2.0.0"]
103
+ vertexai = ["langchain-google-vertexai>=3.2.3,<4.0.0"]
104
104
  xai = ["langchain-xai>=1.2.2,<2.0.0"]
105
105
  all-providers = [
106
106
  "deepagents-cli[anthropic,baseten,bedrock,cohere,deepseek,fireworks,google-genai,groq,huggingface,ibm,litellm,mistralai,nvidia,ollama,openai,openrouter,perplexity,vertexai,xai]",
@@ -1956,6 +1956,22 @@ app_categories = ["cloud-agent"]
1956
1956
  assert "app_url" not in call_kwargs
1957
1957
  assert "app_title" not in call_kwargs
1958
1958
  assert "app_categories" not in call_kwargs
1959
+ assert "openrouter_provider" not in call_kwargs
1960
+
1961
+ @patch("langchain.chat_models.init_chat_model")
1962
+ def test_sdk_provider_routing_flows_through_cli_profile(
1963
+ self, mock_init: Mock, monkeypatch: pytest.MonkeyPatch
1964
+ ) -> None:
1965
+ """SDK's Azure-ignore default survives CLI profile chaining."""
1966
+ from deepagents.profiles.provider._openrouter import _OPENROUTER_ALLOW_AZURE_ENV
1967
+
1968
+ monkeypatch.delenv(_OPENROUTER_ALLOW_AZURE_ENV, raising=False)
1969
+ mock_init.return_value = _make_init_chat_model_mock()
1970
+
1971
+ create_model("openrouter:deepseek/deepseek-chat")
1972
+
1973
+ _, call_kwargs = mock_init.call_args
1974
+ assert call_kwargs["openrouter_provider"] == {"ignore": ["azure"]}
1959
1975
 
1960
1976
 
1961
1977
  class TestCreateModelForwardsProviderProfile:
@@ -92,10 +92,23 @@ def write_config(tmp_path: Path) -> Callable[..., str]:
92
92
 
93
93
  @pytest.fixture
94
94
  def fake_home(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> Path:
95
- """Redirect `Path.home()` to a temp directory."""
95
+ """Redirect `Path.home()` and `DEFAULT_STATE_DIR` into a temp directory.
96
+
97
+ `Path.home` is patched for code that resolves it at call time;
98
+ `DEFAULT_STATE_DIR` is patched for code (like `mcp_auth._tokens_dir`)
99
+ that pulls from the import-time-frozen constant in `model_config`.
100
+ Without the second patch, `FileTokenStorage` reads/writes the real
101
+ `~/.deepagents/.state/mcp-tokens/` directory, which leaks token state
102
+ across tests and causes flakes (e.g. one test's `set_tokens` makes a
103
+ later test's `get_tokens` return non-`None`).
104
+ """
96
105
  fake = tmp_path / "home"
97
106
  fake.mkdir()
98
107
  monkeypatch.setattr(Path, "home", staticmethod(lambda: fake))
108
+ monkeypatch.setattr(
109
+ "deepagents_cli.model_config.DEFAULT_STATE_DIR",
110
+ fake / ".deepagents" / ".state",
111
+ )
99
112
  return fake
100
113
 
101
114