deepagents-cli 0.0.45__tar.gz → 0.0.47__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 (277) hide show
  1. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/CHANGELOG.md +17 -0
  2. deepagents_cli-0.0.47/DEV.md +92 -0
  3. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/PKG-INFO +4 -4
  4. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/README.md +2 -2
  5. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_debug.py +3 -3
  6. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_env_vars.py +38 -1
  7. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_version.py +1 -1
  8. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/app.py +324 -23
  9. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/config.py +10 -6
  10. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/main.py +45 -15
  11. deepagents_cli-0.0.47/deepagents_cli/mcp_auth.py +704 -0
  12. deepagents_cli-0.0.47/deepagents_cli/mcp_commands.py +202 -0
  13. deepagents_cli-0.0.47/deepagents_cli/mcp_providers/__init__.py +23 -0
  14. deepagents_cli-0.0.47/deepagents_cli/mcp_providers/_registry.py +39 -0
  15. deepagents_cli-0.0.47/deepagents_cli/mcp_providers/base.py +99 -0
  16. deepagents_cli-0.0.47/deepagents_cli/mcp_providers/github.py +91 -0
  17. deepagents_cli-0.0.47/deepagents_cli/mcp_providers/slack.py +130 -0
  18. deepagents_cli-0.0.47/deepagents_cli/mcp_tools.py +1521 -0
  19. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/model_config.py +28 -0
  20. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/server.py +20 -3
  21. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/server_graph.py +25 -2
  22. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/server_manager.py +64 -1
  23. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/theme.py +69 -58
  24. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/ui.py +35 -0
  25. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/mcp_viewer.py +159 -89
  26. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/theme_selector.py +3 -3
  27. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/welcome.py +59 -33
  28. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/pyproject.toml +8 -2
  29. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/scripts/install.sh +1 -1
  30. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_agent_friendly.py +8 -0
  31. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_app.py +66 -12
  32. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_args.py +74 -1
  33. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_chat_input.py +13 -2
  34. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_env_vars.py +45 -0
  35. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_local_context.py +3 -1
  36. deepagents_cli-0.0.47/tests/unit_tests/test_mcp_auth.py +957 -0
  37. deepagents_cli-0.0.47/tests/unit_tests/test_mcp_commands.py +332 -0
  38. deepagents_cli-0.0.47/tests/unit_tests/test_mcp_tools.py +2264 -0
  39. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_mcp_viewer.py +14 -6
  40. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_model_switch.py +137 -0
  41. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_server_graph.py +13 -6
  42. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_server_manager.py +60 -0
  43. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_theme.py +22 -20
  44. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_welcome.py +0 -15
  45. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/uv.lock +5 -5
  46. deepagents_cli-0.0.45/DEV.md +0 -52
  47. deepagents_cli-0.0.45/deepagents_cli/mcp_tools.py +0 -712
  48. deepagents_cli-0.0.45/tests/unit_tests/test_mcp_tools.py +0 -1804
  49. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/.gitignore +0 -0
  50. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/Makefile +0 -0
  51. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/THREAT_MODEL.md +0 -0
  52. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/__init__.py +0 -0
  53. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/__main__.py +0 -0
  54. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_ask_user_types.py +0 -0
  55. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_cli_context.py +0 -0
  56. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_git.py +0 -0
  57. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_server_config.py +0 -0
  58. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_session_stats.py +0 -0
  59. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_testing_models.py +0 -0
  60. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_textual_patches.py +0 -0
  61. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/agent.py +0 -0
  62. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/app.tcss +0 -0
  63. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/ask_user.py +0 -0
  64. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/built_in_skills/__init__.py +0 -0
  65. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/built_in_skills/remember/SKILL.md +0 -0
  66. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/built_in_skills/skill-creator/SKILL.md +0 -0
  67. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  68. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  69. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/clipboard.py +0 -0
  70. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/command_registry.py +0 -0
  71. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/configurable_model.py +0 -0
  72. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/default_agent_prompt.md +0 -0
  73. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/__init__.py +0 -0
  74. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/bundler.py +0 -0
  75. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/commands.py +0 -0
  76. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/config.py +0 -0
  77. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/assets/anonymous-B9UzAXQd.js +0 -0
  78. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/assets/clerk-5xHgyQyG.js +0 -0
  79. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/assets/highlighted-body-OFNGDK62-rX-7qT8o.js +0 -0
  80. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/assets/index-DM3gptpu.js +0 -0
  81. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/assets/index-Ddy7F6KI.css +0 -0
  82. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/assets/supabase-S6NACDgm.js +0 -0
  83. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/index.html +0 -0
  84. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/logo-dark.svg +0 -0
  85. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/logo-light.svg +0 -0
  86. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/templates.py +0 -0
  87. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/editor.py +0 -0
  88. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/extras_info.py +0 -0
  89. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/file_ops.py +0 -0
  90. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/formatting.py +0 -0
  91. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/hooks.py +0 -0
  92. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/input.py +0 -0
  93. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/integrations/__init__.py +0 -0
  94. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/integrations/sandbox_factory.py +0 -0
  95. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/integrations/sandbox_provider.py +0 -0
  96. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/local_context.py +0 -0
  97. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/mcp_trust.py +0 -0
  98. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/media_utils.py +0 -0
  99. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/non_interactive.py +0 -0
  100. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/notifications.py +0 -0
  101. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/offload.py +0 -0
  102. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/output.py +0 -0
  103. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/project_utils.py +0 -0
  104. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/py.typed +0 -0
  105. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/remote_client.py +0 -0
  106. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/sessions.py +0 -0
  107. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/skills/__init__.py +0 -0
  108. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/skills/commands.py +0 -0
  109. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/skills/invocation.py +0 -0
  110. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/skills/load.py +0 -0
  111. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/subagents.py +0 -0
  112. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/system_prompt.md +0 -0
  113. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/terminal_capabilities.py +0 -0
  114. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/textual_adapter.py +0 -0
  115. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/token_state.py +0 -0
  116. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/tool_display.py +0 -0
  117. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/tools.py +0 -0
  118. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/unicode_security.py +0 -0
  119. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/update_check.py +0 -0
  120. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/__init__.py +0 -0
  121. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/_links.py +0 -0
  122. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/agent_selector.py +0 -0
  123. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/approval.py +0 -0
  124. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/ask_user.py +0 -0
  125. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/autocomplete.py +0 -0
  126. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/chat_input.py +0 -0
  127. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/diff.py +0 -0
  128. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/history.py +0 -0
  129. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/loading.py +0 -0
  130. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/message_store.py +0 -0
  131. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/messages.py +0 -0
  132. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/model_selector.py +0 -0
  133. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/notification_center.py +0 -0
  134. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/notification_detail.py +0 -0
  135. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/notification_settings.py +0 -0
  136. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/status.py +0 -0
  137. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/thread_selector.py +0 -0
  138. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/tool_renderers.py +0 -0
  139. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/tool_widgets.py +0 -0
  140. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/update_available.py +0 -0
  141. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/deploy-content-writer/.env.example +0 -0
  142. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/deploy-content-writer/skills/blog-post/SKILL.md +0 -0
  143. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/deploy-content-writer/skills/social-media/SKILL.md +0 -0
  144. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/deploy-content-writer/user/context.md +0 -0
  145. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/deploy-content-writer/user/preferences.md +0 -0
  146. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/skills/arxiv-search/SKILL.md +0 -0
  147. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  148. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/skills/langgraph-docs/SKILL.md +0 -0
  149. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/skills/skill-creator/SKILL.md +0 -0
  150. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  151. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  152. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/skills/web-research/SKILL.md +0 -0
  153. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/.nvmrc +0 -0
  154. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/index.html +0 -0
  155. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/package-lock.json +0 -0
  156. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/package.json +0 -0
  157. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/postcss.config.js +0 -0
  158. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/public/logo-dark.svg +0 -0
  159. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/public/logo-light.svg +0 -0
  160. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/App.tsx +0 -0
  161. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/ThemeProvider.tsx +0 -0
  162. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/auth/anonymous.tsx +0 -0
  163. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/auth/clerk.tsx +0 -0
  164. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/auth/loader.tsx +0 -0
  165. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/auth/supabase.tsx +0 -0
  166. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/auth/types.ts +0 -0
  167. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/AppHeader.tsx +0 -0
  168. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/FilePanels.tsx +0 -0
  169. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/MessageList.tsx +0 -0
  170. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/SubagentActivity.tsx +0 -0
  171. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/ThreadPicker.tsx +0 -0
  172. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/TodosPanel.tsx +0 -0
  173. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/ToolCallCard.tsx +0 -0
  174. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/toolcalls/FileToolCard.tsx +0 -0
  175. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/toolcalls/SearchCard.tsx +0 -0
  176. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/toolcalls/ThinkCard.tsx +0 -0
  177. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/toolcalls/TodosCard.tsx +0 -0
  178. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/toolcalls/index.ts +0 -0
  179. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/constants.ts +0 -0
  180. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/index.css +0 -0
  181. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/main.tsx +0 -0
  182. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/runtimeConfig.ts +0 -0
  183. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/types.ts +0 -0
  184. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/vite-env.d.ts +0 -0
  185. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/tsconfig.json +0 -0
  186. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/vite.config.ts +0 -0
  187. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/images/cli.png +0 -0
  188. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/scripts/check_imports.py +0 -0
  189. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/scripts/debug_server.sh +0 -0
  190. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/README.md +0 -0
  191. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/__init__.py +0 -0
  192. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/benchmarks/__init__.py +0 -0
  193. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
  194. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
  195. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/conftest.py +0 -0
  196. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/test_acp_mode.py +0 -0
  197. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/test_compact_resume.py +0 -0
  198. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/test_sandbox_factory.py +0 -0
  199. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/test_sandbox_operations.py +0 -0
  200. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/__init__.py +0 -0
  201. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/conftest.py +0 -0
  202. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/deploy/__init__.py +0 -0
  203. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/deploy/test_bundler.py +0 -0
  204. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/deploy/test_commands.py +0 -0
  205. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/deploy/test_config.py +0 -0
  206. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/deploy/test_frontend_bundle.py +0 -0
  207. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/deploy/test_frontend_config.py +0 -0
  208. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/skills/__init__.py +0 -0
  209. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/skills/test_commands.py +0 -0
  210. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/skills/test_load.py +0 -0
  211. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/skills/test_skills_json.py +0 -0
  212. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_agent.py +0 -0
  213. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_agent_selector.py +0 -0
  214. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_approval.py +0 -0
  215. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_ask_user.py +0 -0
  216. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_ask_user_middleware.py +0 -0
  217. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_autocomplete.py +0 -0
  218. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_charset.py +0 -0
  219. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_command_registry.py +0 -0
  220. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_compact_tool.py +0 -0
  221. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_config.py +0 -0
  222. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_configurable_model.py +0 -0
  223. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_debug.py +0 -0
  224. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_editor.py +0 -0
  225. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_end_to_end.py +0 -0
  226. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_exception_handling.py +0 -0
  227. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_extras_info.py +0 -0
  228. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_file_ops.py +0 -0
  229. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_formatting.py +0 -0
  230. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_git.py +0 -0
  231. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_history.py +0 -0
  232. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_hooks.py +0 -0
  233. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_imports.py +0 -0
  234. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_input_parsing.py +0 -0
  235. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_links.py +0 -0
  236. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_loading.py +0 -0
  237. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_main.py +0 -0
  238. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_main_acp_mode.py +0 -0
  239. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_main_args.py +0 -0
  240. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_mcp_trust.py +0 -0
  241. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_media_utils.py +0 -0
  242. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_message_store.py +0 -0
  243. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_messages.py +0 -0
  244. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_model_config.py +0 -0
  245. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_model_selector.py +0 -0
  246. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_non_interactive.py +0 -0
  247. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_notification_center.py +0 -0
  248. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_notification_detail.py +0 -0
  249. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_notifications.py +0 -0
  250. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_offload.py +0 -0
  251. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_offload_dict_messages.py +0 -0
  252. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_output.py +0 -0
  253. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_reload.py +0 -0
  254. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_remote_client.py +0 -0
  255. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_sandbox_factory.py +0 -0
  256. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_server.py +0 -0
  257. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_server_config.py +0 -0
  258. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_server_helpers.py +0 -0
  259. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_session_stats.py +0 -0
  260. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_sessions.py +0 -0
  261. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_shell_allow_list.py +0 -0
  262. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_skill_invocation.py +0 -0
  263. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_status.py +0 -0
  264. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_subagents.py +0 -0
  265. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_terminal_capabilities.py +0 -0
  266. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_textual_adapter.py +0 -0
  267. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_textual_patches.py +0 -0
  268. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_thread_selector.py +0 -0
  269. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_token_tracker.py +0 -0
  270. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_tool_display.py +0 -0
  271. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_ui.py +0 -0
  272. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_unicode_security.py +0 -0
  273. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_update_available.py +0 -0
  274. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_update_check.py +0 -0
  275. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_version.py +0 -0
  276. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/tools/__init__.py +0 -0
  277. {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/tools/test_fetch_url.py +0 -0
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.47](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.46...deepagents-cli==0.0.47) (2026-05-01)
4
+
5
+ ### Features
6
+
7
+ * Auto-discover Textual built-in themes ([#3068](https://github.com/langchain-ai/deepagents/issues/3068)) ([27894e3](https://github.com/langchain-ai/deepagents/commit/27894e336f20f270fb4bb685bf979f24b9bea0bc))
8
+
9
+ ### Bug Fixes
10
+
11
+ * Recover from failed server startup via `/model` ([#3056](https://github.com/langchain-ai/deepagents/issues/3056)) ([6ee375e](https://github.com/langchain-ai/deepagents/commit/6ee375e979b672cd1d172669f0e5a7a665431d7c))
12
+
13
+ ## [0.0.46](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.45...deepagents-cli==0.0.46) (2026-04-30)
14
+
15
+ ### Features
16
+
17
+ * Rework MCP integration and add OAuth login ([#2906](https://github.com/langchain-ai/deepagents/issues/2906)) ([6b7b0be](https://github.com/langchain-ai/deepagents/commit/6b7b0bef95db673fed23fc92803abaaa398b0a6d))
18
+ * `allowedTools` and `disabledTools` filters in MCP config ([#2835](https://github.com/langchain-ai/deepagents/issues/2835)) ([eafd691](https://github.com/langchain-ai/deepagents/commit/eafd6912db637ab59085a0b05d6e36d6cdd10e1a))
19
+
3
20
  ## [0.0.45](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.44...deepagents-cli==0.0.45) (2026-04-30)
4
21
 
5
22
  ### Bug Fixes
@@ -0,0 +1,92 @@
1
+ # CLI Development Guide
2
+
3
+ ## Live CSS development with Textual devtools
4
+
5
+ Textual's devtools console enables CSS hot-reload and live `self.log()` output during development.
6
+
7
+ ### Prerequisites
8
+
9
+ Sync the `test` dependency group (includes `textual-dev`):
10
+
11
+ ```bash
12
+ cd libs/cli && uv sync --group test
13
+ ```
14
+
15
+ Create the dev wrapper script (one-time):
16
+
17
+ ```bash
18
+ cat > /tmp/dev_deepagents.py << 'PYEOF'
19
+ """Dev wrapper to run Deep Agents CLI with textual devtools."""
20
+ import sys
21
+ sys.argv = ["deepagents"] + sys.argv[1:]
22
+
23
+ from deepagents_cli.main import cli_main
24
+ cli_main()
25
+ PYEOF
26
+ ```
27
+
28
+ ### Running
29
+
30
+ **Terminal 1** — devtools console:
31
+
32
+ ```bash
33
+ cd libs/cli && uv run --group test textual console
34
+ ```
35
+
36
+ **Terminal 2** — CLI with live reload:
37
+
38
+ ```bash
39
+ cd libs/cli && uv run --group test textual run --dev /tmp/dev_deepagents.py
40
+ ```
41
+
42
+ Edit any `.tcss` file and save — changes appear immediately. Any `self.log()` calls in widget code show in the console.
43
+
44
+ ### Console options
45
+
46
+ - `textual console -v` — verbose mode, shows all events (key presses, mouse, etc.)
47
+ - `textual console -x EVENT` — exclude noisy event groups
48
+ - `textual console --port 7342` — custom port (pass matching `--port` to `textual run`)
49
+
50
+ ### Why the wrapper script?
51
+
52
+ `textual run --dev` handles the devtools connection, but it needs to run inside the project's virtualenv to import `deepagents_cli`. The wrapper script bridges the gap — `uv run --group test textual run --dev` ensures both `textual-dev` (from the `test` group) and `deepagents_cli` are available in the same environment.
53
+
54
+ ## Debugging
55
+
56
+ The CLI runs a `langgraph dev` subprocess for every interactive session. When the subprocess crashes during startup, the TUI shows a one-line failure banner; the actual exception lives in the subprocess's stdout/stderr, which is captured to a temp file.
57
+
58
+ ### Environment variables
59
+
60
+ | Variable | Effect |
61
+ | --- | --- |
62
+ | `DEEPAGENTS_CLI_DEBUG=1` | Preserves the server subprocess log on shutdown and prints its path to stderr. Without this, the log is deleted when the process stops. Also enables the CLI-process file handler below. Accepts `1`/`true`/`yes`/`on` (case-insensitive) as enabled; `0`/`false`/`no`/`off`/empty/unset as disabled. |
63
+ | `DEEPAGENTS_CLI_DEBUG_FILE=<path>` | Overrides the default path (`/tmp/deepagents_debug.log`) for the CLI-process file handler, which attaches at `DEBUG` level to `textual_adapter` and `remote_client`. **Only takes effect when `DEEPAGENTS_CLI_DEBUG` is truthy.** Useful for diagnosing streaming/client-side issues; does **not** capture the server subprocess. |
64
+
65
+ `DEEPAGENTS_CLI_DEBUG` is what you want for startup crashes (graph init, MCP config, sandbox): the preserved subprocess log contains the real traceback. The optional `DEEPAGENTS_CLI_DEBUG_FILE` override is for post-startup client-side debugging.
66
+
67
+ ### Finding the server subprocess log
68
+
69
+ On macOS, `tempfile` resolves to `$TMPDIR` (a path under `/var/folders/.../T/`). Each `ServerProcess` writes its combined stdout+stderr to a file matching `deepagents_server_log_*.txt`:
70
+
71
+ ```bash
72
+ # Newest first
73
+ ls -lt ${TMPDIR:-/tmp}/deepagents_server_log_*.txt | head -5
74
+
75
+ # Tail the latest while reproducing the crash
76
+ tail -F "$(ls -t ${TMPDIR:-/tmp}/deepagents_server_log_*.txt | head -1)"
77
+ ```
78
+
79
+ The interesting line is `Failed to initialize server graph: <exc>` followed by a traceback — everything above that is uvicorn/lifespan unwinding.
80
+
81
+ ### Triage flow for a startup crash
82
+
83
+ 1. **Rerun with `DEEPAGENTS_CLI_DEBUG=1`.** The log is preserved and a "Server log preserved at: ..." line is printed to stderr. Textual's fullscreen mode can hide that line, but the file itself is still on disk.
84
+ 2. **Locate the log** via the `ls` command above. Open it in your editor.
85
+ 3. **Search for `Failed to initialize server graph`.** The stack trace beneath names the concrete failure point (MCP config validation, sandbox init, model resolution, subagent load, etc.).
86
+ 4. **Pre-flight validators run in the CLI process** for the common failure modes (e.g., `--mcp-config` is validated in `start_server_and_get_agent` before the subprocess spawns). When the banner shows `MCPConfigError: <path>: <reason>`, the subprocess never started — fix the file and retry.
87
+
88
+ ### Common startup failure patterns
89
+
90
+ - **`MCPConfigError: Invalid MCP config at <path>: ...`** — malformed `--mcp-config`. The pre-flight wraps the underlying `ValueError`/`TypeError` with the offending path. See `_preflight_validate_mcp_config` in `server_manager.py`.
91
+ - **`Server 'X' missing required 'command' field`** (from a discovered project `.mcp.json`, not `--mcp-config`) — an stdio server config without `command`. For remote servers, just use `{"url": "..."}`; transport is inferred as `http` when no `type`/`transport` is present.
92
+ - **Uncaught exception inside a bare `sys.exit(1)`** — usually means the surrounding `make_graph()` raised. Look one traceback up in the subprocess log for the real cause.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepagents-cli
3
- Version: 0.0.45
3
+ Version: 0.0.47
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/
@@ -51,7 +51,7 @@ Requires-Dist: rich<15.0.0,>=14.0.0
51
51
  Requires-Dist: tavily-python<1.0.0,>=0.7.21
52
52
  Requires-Dist: textual-autocomplete<5.0.0,>=3.0.0
53
53
  Requires-Dist: textual-speedups<1.0.0,>=0.2.1
54
- Requires-Dist: textual<9.0.0,>=8.0.0
54
+ Requires-Dist: textual<9.0.0,>=8.2.5
55
55
  Requires-Dist: tomli-w<2.0.0,>=1.0.0
56
56
  Requires-Dist: uuid-utils<1.0.0,>=0.10.0
57
57
  Provides-Extra: agentcore
@@ -141,13 +141,13 @@ Description-Content-Type: text/markdown
141
141
  ## Quick Install
142
142
 
143
143
  ```bash
144
- curl -LsSf https://raw.githubusercontent.com/langchain-ai/deepagents/main/libs/cli/scripts/install.sh | bash
144
+ curl -LsSf https://langch.in/gh-da-cli | bash
145
145
  ```
146
146
 
147
147
  ```bash
148
148
  # With model provider extras
149
149
  # OpenAI, Anthropic, and Gemini are included by default
150
- DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://raw.githubusercontent.com/langchain-ai/deepagents/main/libs/cli/scripts/install.sh | bash
150
+ DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/gh-da-cli | bash
151
151
  ```
152
152
 
153
153
  Or install directly with `uv`:
@@ -12,13 +12,13 @@
12
12
  ## Quick Install
13
13
 
14
14
  ```bash
15
- curl -LsSf https://raw.githubusercontent.com/langchain-ai/deepagents/main/libs/cli/scripts/install.sh | bash
15
+ curl -LsSf https://langch.in/gh-da-cli | bash
16
16
  ```
17
17
 
18
18
  ```bash
19
19
  # With model provider extras
20
20
  # OpenAI, Anthropic, and Gemini are included by default
21
- DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://raw.githubusercontent.com/langchain-ai/deepagents/main/libs/cli/scripts/install.sh | bash
21
+ DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/gh-da-cli | bash
22
22
  ```
23
23
 
24
24
  Or install directly with `uv`:
@@ -12,7 +12,7 @@ import logging
12
12
  import os
13
13
  from pathlib import Path
14
14
 
15
- from deepagents_cli._env_vars import DEBUG, DEBUG_FILE
15
+ from deepagents_cli._env_vars import DEBUG, DEBUG_FILE, is_env_truthy
16
16
 
17
17
 
18
18
  def configure_debug_logging(target: logging.Logger) -> None:
@@ -22,12 +22,12 @@ def configure_debug_logging(target: logging.Logger) -> None:
22
22
  with `DEEPAGENTS_CLI_DEBUG_FILE`. The handler appends so that multiple
23
23
  modules share the same log file across a session.
24
24
 
25
- Does nothing when `DEEPAGENTS_CLI_DEBUG` is not set.
25
+ Does nothing when `DEEPAGENTS_CLI_DEBUG` is not truthy (see `is_env_truthy`).
26
26
 
27
27
  Args:
28
28
  target: Logger to configure.
29
29
  """
30
- if not os.environ.get(DEBUG):
30
+ if not is_env_truthy(DEBUG):
31
31
  return
32
32
 
33
33
  debug_path = Path(
@@ -23,6 +23,8 @@ ever renamed, only the value here changes.
23
23
 
24
24
  from __future__ import annotations
25
25
 
26
+ import os
27
+
26
28
  # ---------------------------------------------------------------------------
27
29
  # Constants — import these instead of bare string literals.
28
30
  # Keep alphabetically sorted by constant name.
@@ -32,7 +34,10 @@ AUTO_UPDATE = "DEEPAGENTS_CLI_AUTO_UPDATE"
32
34
  """Enable automatic CLI updates ('1', 'true', or 'yes')."""
33
35
 
34
36
  DEBUG = "DEEPAGENTS_CLI_DEBUG"
35
- """Enable verbose debug logging to a file."""
37
+ """Enable verbose debug logging and preserve the server subprocess log.
38
+
39
+ Parsed by `is_env_truthy`: accepts `1`, `true`, `yes`, `on` (case-insensitive)
40
+ as enabled, and `0`, `false`, `no`, `off`, empty string, or unset as disabled."""
36
41
 
37
42
  DEBUG_FILE = "DEEPAGENTS_CLI_DEBUG_FILE"
38
43
  """Path for the debug log file (default: `/tmp/deepagents_debug.log`)."""
@@ -69,3 +74,35 @@ SHELL_ALLOW_LIST = "DEEPAGENTS_CLI_SHELL_ALLOW_LIST"
69
74
 
70
75
  USER_ID = "DEEPAGENTS_CLI_USER_ID"
71
76
  """Attach a user identifier to LangSmith trace metadata."""
77
+
78
+
79
+ _TRUTHY_VALUES = frozenset({"1", "true", "yes", "on"})
80
+ _FALSY_VALUES = frozenset({"0", "false", "no", "off", ""})
81
+
82
+
83
+ def is_env_truthy(name: str, *, default: bool = False) -> bool:
84
+ """Return whether env var *name* is set to a recognizably truthy value.
85
+
86
+ Unlike `bool(os.environ.get(name))`, this does not treat `"0"` or
87
+ `"false"` as enabled. Use this for on/off flags where the user would
88
+ reasonably expect `VAR=0` to mean "disabled".
89
+
90
+ Args:
91
+ name: Environment variable name (typically a `DEEPAGENTS_CLI_*`
92
+ constant from this module).
93
+ default: Value returned when the variable is unset OR set to a
94
+ value that is neither recognizably truthy nor falsy.
95
+
96
+ Returns:
97
+ `True` for `1`/`true`/`yes`/`on` (case-insensitive), `False` for
98
+ `0`/`false`/`no`/`off`/empty string, or `default` otherwise.
99
+ """
100
+ raw = os.environ.get(name)
101
+ if raw is None:
102
+ return default
103
+ lowered = raw.strip().lower()
104
+ if lowered in _TRUTHY_VALUES:
105
+ return True
106
+ if lowered in _FALSY_VALUES:
107
+ return False
108
+ return default
@@ -1,6 +1,6 @@
1
1
  """Version information and lightweight constants for `deepagents-cli`."""
2
2
 
3
- __version__ = "0.0.45" # x-release-please-version
3
+ __version__ = "0.0.47" # 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."""