deepagents-cli 0.0.59__tar.gz → 0.1.0__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 (307) hide show
  1. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/CHANGELOG.md +9 -0
  2. deepagents_cli-0.1.0/DEV.md +44 -0
  3. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/Makefile +3 -12
  4. deepagents_cli-0.1.0/PKG-INFO +99 -0
  5. deepagents_cli-0.1.0/README.md +49 -0
  6. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/THREAT_MODEL.md +9 -0
  7. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/__init__.py +9 -7
  8. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/__main__.py +1 -1
  9. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/_version.py +1 -1
  10. deepagents_cli-0.1.0/deepagents_cli/config.py +128 -0
  11. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/deploy/commands.py +3 -0
  12. deepagents_cli-0.1.0/deepagents_cli/main.py +167 -0
  13. deepagents_cli-0.1.0/deepagents_cli/model_config.py +55 -0
  14. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/package-lock.json +3 -3
  15. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/pyproject.toml +7 -96
  16. deepagents_cli-0.1.0/tests/unit_tests/conftest.py +32 -0
  17. deepagents_cli-0.1.0/tests/unit_tests/test_version.py +49 -0
  18. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/uv.lock +9 -2749
  19. deepagents_cli-0.0.59/DEV.md +0 -92
  20. deepagents_cli-0.0.59/PKG-INFO +0 -204
  21. deepagents_cli-0.0.59/README.md +0 -71
  22. deepagents_cli-0.0.59/deepagents_cli/_ask_user_types.py +0 -90
  23. deepagents_cli-0.0.59/deepagents_cli/_cli_context.py +0 -27
  24. deepagents_cli-0.0.59/deepagents_cli/_constants.py +0 -14
  25. deepagents_cli-0.0.59/deepagents_cli/_debug.py +0 -52
  26. deepagents_cli-0.0.59/deepagents_cli/_env_vars.py +0 -173
  27. deepagents_cli-0.0.59/deepagents_cli/_git.py +0 -236
  28. deepagents_cli-0.0.59/deepagents_cli/_server_config.py +0 -351
  29. deepagents_cli-0.0.59/deepagents_cli/_session_stats.py +0 -114
  30. deepagents_cli-0.0.59/deepagents_cli/_testing_models.py +0 -144
  31. deepagents_cli-0.0.59/deepagents_cli/_textual_patches.py +0 -66
  32. deepagents_cli-0.0.59/deepagents_cli/agent.py +0 -1286
  33. deepagents_cli-0.0.59/deepagents_cli/app.py +0 -8704
  34. deepagents_cli-0.0.59/deepagents_cli/app.tcss +0 -334
  35. deepagents_cli-0.0.59/deepagents_cli/ask_user.py +0 -301
  36. deepagents_cli-0.0.59/deepagents_cli/auth_store.py +0 -363
  37. deepagents_cli-0.0.59/deepagents_cli/built_in_skills/__init__.py +0 -5
  38. deepagents_cli-0.0.59/deepagents_cli/built_in_skills/remember/SKILL.md +0 -118
  39. deepagents_cli-0.0.59/deepagents_cli/built_in_skills/skill-creator/SKILL.md +0 -383
  40. deepagents_cli-0.0.59/deepagents_cli/built_in_skills/skill-creator/scripts/init_skill.py +0 -366
  41. deepagents_cli-0.0.59/deepagents_cli/built_in_skills/skill-creator/scripts/quick_validate.py +0 -158
  42. deepagents_cli-0.0.59/deepagents_cli/clipboard.py +0 -155
  43. deepagents_cli-0.0.59/deepagents_cli/command_registry.py +0 -358
  44. deepagents_cli-0.0.59/deepagents_cli/config.py +0 -2567
  45. deepagents_cli-0.0.59/deepagents_cli/configurable_model.py +0 -201
  46. deepagents_cli-0.0.59/deepagents_cli/default_agent_prompt.md +0 -12
  47. deepagents_cli-0.0.59/deepagents_cli/editor.py +0 -142
  48. deepagents_cli-0.0.59/deepagents_cli/event_bus.py +0 -411
  49. deepagents_cli-0.0.59/deepagents_cli/extras_info.py +0 -260
  50. deepagents_cli-0.0.59/deepagents_cli/file_ops.py +0 -473
  51. deepagents_cli-0.0.59/deepagents_cli/formatting.py +0 -28
  52. deepagents_cli-0.0.59/deepagents_cli/hooks.py +0 -209
  53. deepagents_cli-0.0.59/deepagents_cli/input.py +0 -787
  54. deepagents_cli-0.0.59/deepagents_cli/integrations/__init__.py +0 -1
  55. deepagents_cli-0.0.59/deepagents_cli/integrations/sandbox_factory.py +0 -899
  56. deepagents_cli-0.0.59/deepagents_cli/integrations/sandbox_provider.py +0 -71
  57. deepagents_cli-0.0.59/deepagents_cli/iterm_cursor_guide.py +0 -176
  58. deepagents_cli-0.0.59/deepagents_cli/local_context.py +0 -738
  59. deepagents_cli-0.0.59/deepagents_cli/main.py +0 -2258
  60. deepagents_cli-0.0.59/deepagents_cli/mcp_auth.py +0 -712
  61. deepagents_cli-0.0.59/deepagents_cli/mcp_commands.py +0 -204
  62. deepagents_cli-0.0.59/deepagents_cli/mcp_providers/__init__.py +0 -23
  63. deepagents_cli-0.0.59/deepagents_cli/mcp_providers/_registry.py +0 -39
  64. deepagents_cli-0.0.59/deepagents_cli/mcp_providers/base.py +0 -99
  65. deepagents_cli-0.0.59/deepagents_cli/mcp_providers/github.py +0 -91
  66. deepagents_cli-0.0.59/deepagents_cli/mcp_providers/slack.py +0 -130
  67. deepagents_cli-0.0.59/deepagents_cli/mcp_tools.py +0 -1532
  68. deepagents_cli-0.0.59/deepagents_cli/mcp_trust.py +0 -167
  69. deepagents_cli-0.0.59/deepagents_cli/media_utils.py +0 -478
  70. deepagents_cli-0.0.59/deepagents_cli/model_config.py +0 -2749
  71. deepagents_cli-0.0.59/deepagents_cli/non_interactive.py +0 -1197
  72. deepagents_cli-0.0.59/deepagents_cli/notifications.py +0 -244
  73. deepagents_cli-0.0.59/deepagents_cli/offload.py +0 -402
  74. deepagents_cli-0.0.59/deepagents_cli/onboarding.py +0 -188
  75. deepagents_cli-0.0.59/deepagents_cli/output.py +0 -69
  76. deepagents_cli-0.0.59/deepagents_cli/project_utils.py +0 -231
  77. deepagents_cli-0.0.59/deepagents_cli/remote_client.py +0 -537
  78. deepagents_cli-0.0.59/deepagents_cli/server.py +0 -558
  79. deepagents_cli-0.0.59/deepagents_cli/server_graph.py +0 -230
  80. deepagents_cli-0.0.59/deepagents_cli/server_manager.py +0 -428
  81. deepagents_cli-0.0.59/deepagents_cli/sessions.py +0 -1302
  82. deepagents_cli-0.0.59/deepagents_cli/skills/__init__.py +0 -18
  83. deepagents_cli-0.0.59/deepagents_cli/skills/commands.py +0 -1090
  84. deepagents_cli-0.0.59/deepagents_cli/skills/invocation.py +0 -103
  85. deepagents_cli-0.0.59/deepagents_cli/skills/load.py +0 -196
  86. deepagents_cli-0.0.59/deepagents_cli/state_migration.py +0 -136
  87. deepagents_cli-0.0.59/deepagents_cli/subagents.py +0 -173
  88. deepagents_cli-0.0.59/deepagents_cli/system_prompt.md +0 -243
  89. deepagents_cli-0.0.59/deepagents_cli/terminal_capabilities.py +0 -115
  90. deepagents_cli-0.0.59/deepagents_cli/terminal_escape.py +0 -287
  91. deepagents_cli-0.0.59/deepagents_cli/textual_adapter.py +0 -1544
  92. deepagents_cli-0.0.59/deepagents_cli/theme.py +0 -867
  93. deepagents_cli-0.0.59/deepagents_cli/token_state.py +0 -31
  94. deepagents_cli-0.0.59/deepagents_cli/tool_display.py +0 -298
  95. deepagents_cli-0.0.59/deepagents_cli/tools.py +0 -167
  96. deepagents_cli-0.0.59/deepagents_cli/ui.py +0 -546
  97. deepagents_cli-0.0.59/deepagents_cli/unicode_security.py +0 -516
  98. deepagents_cli-0.0.59/deepagents_cli/update_check.py +0 -977
  99. deepagents_cli-0.0.59/deepagents_cli/widgets/__init__.py +0 -9
  100. deepagents_cli-0.0.59/deepagents_cli/widgets/_links.py +0 -96
  101. deepagents_cli-0.0.59/deepagents_cli/widgets/agent_selector.py +0 -420
  102. deepagents_cli-0.0.59/deepagents_cli/widgets/approval.py +0 -599
  103. deepagents_cli-0.0.59/deepagents_cli/widgets/ask_user.py +0 -485
  104. deepagents_cli-0.0.59/deepagents_cli/widgets/auth.py +0 -633
  105. deepagents_cli-0.0.59/deepagents_cli/widgets/autocomplete.py +0 -703
  106. deepagents_cli-0.0.59/deepagents_cli/widgets/chat_input.py +0 -2181
  107. deepagents_cli-0.0.59/deepagents_cli/widgets/diff.py +0 -248
  108. deepagents_cli-0.0.59/deepagents_cli/widgets/history.py +0 -188
  109. deepagents_cli-0.0.59/deepagents_cli/widgets/launch_init.py +0 -363
  110. deepagents_cli-0.0.59/deepagents_cli/widgets/loading.py +0 -208
  111. deepagents_cli-0.0.59/deepagents_cli/widgets/mcp_viewer.py +0 -432
  112. deepagents_cli-0.0.59/deepagents_cli/widgets/message_store.py +0 -742
  113. deepagents_cli-0.0.59/deepagents_cli/widgets/messages.py +0 -2142
  114. deepagents_cli-0.0.59/deepagents_cli/widgets/model_selector.py +0 -1177
  115. deepagents_cli-0.0.59/deepagents_cli/widgets/notification_center.py +0 -399
  116. deepagents_cli-0.0.59/deepagents_cli/widgets/notification_detail.py +0 -257
  117. deepagents_cli-0.0.59/deepagents_cli/widgets/notification_settings.py +0 -170
  118. deepagents_cli-0.0.59/deepagents_cli/widgets/status.py +0 -457
  119. deepagents_cli-0.0.59/deepagents_cli/widgets/theme_selector.py +0 -347
  120. deepagents_cli-0.0.59/deepagents_cli/widgets/thread_selector.py +0 -2228
  121. deepagents_cli-0.0.59/deepagents_cli/widgets/tool_renderers.py +0 -148
  122. deepagents_cli-0.0.59/deepagents_cli/widgets/tool_widgets.py +0 -274
  123. deepagents_cli-0.0.59/deepagents_cli/widgets/update_available.py +0 -311
  124. deepagents_cli-0.0.59/deepagents_cli/widgets/update_progress.py +0 -279
  125. deepagents_cli-0.0.59/deepagents_cli/widgets/welcome.py +0 -490
  126. deepagents_cli-0.0.59/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -185
  127. deepagents_cli-0.0.59/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -339
  128. deepagents_cli-0.0.59/tests/integration_tests/test_acp_mode.py +0 -117
  129. deepagents_cli-0.0.59/tests/integration_tests/test_compact_resume.py +0 -204
  130. deepagents_cli-0.0.59/tests/integration_tests/test_sandbox_factory.py +0 -349
  131. deepagents_cli-0.0.59/tests/integration_tests/test_sandbox_operations.py +0 -1179
  132. deepagents_cli-0.0.59/tests/unit_tests/conftest.py +0 -168
  133. deepagents_cli-0.0.59/tests/unit_tests/deploy/__init__.py +0 -0
  134. deepagents_cli-0.0.59/tests/unit_tests/skills/__init__.py +0 -1
  135. deepagents_cli-0.0.59/tests/unit_tests/skills/test_commands.py +0 -1338
  136. deepagents_cli-0.0.59/tests/unit_tests/skills/test_load.py +0 -852
  137. deepagents_cli-0.0.59/tests/unit_tests/skills/test_skills_json.py +0 -154
  138. deepagents_cli-0.0.59/tests/unit_tests/test_agent.py +0 -2406
  139. deepagents_cli-0.0.59/tests/unit_tests/test_agent_friendly.py +0 -605
  140. deepagents_cli-0.0.59/tests/unit_tests/test_agent_selector.py +0 -466
  141. deepagents_cli-0.0.59/tests/unit_tests/test_app.py +0 -8292
  142. deepagents_cli-0.0.59/tests/unit_tests/test_approval.py +0 -641
  143. deepagents_cli-0.0.59/tests/unit_tests/test_args.py +0 -581
  144. deepagents_cli-0.0.59/tests/unit_tests/test_ask_user.py +0 -779
  145. deepagents_cli-0.0.59/tests/unit_tests/test_ask_user_middleware.py +0 -221
  146. deepagents_cli-0.0.59/tests/unit_tests/test_auth_store.py +0 -266
  147. deepagents_cli-0.0.59/tests/unit_tests/test_auth_widgets.py +0 -390
  148. deepagents_cli-0.0.59/tests/unit_tests/test_autocomplete.py +0 -592
  149. deepagents_cli-0.0.59/tests/unit_tests/test_charset.py +0 -360
  150. deepagents_cli-0.0.59/tests/unit_tests/test_chat_input.py +0 -2869
  151. deepagents_cli-0.0.59/tests/unit_tests/test_clipboard.py +0 -274
  152. deepagents_cli-0.0.59/tests/unit_tests/test_command_registry.py +0 -221
  153. deepagents_cli-0.0.59/tests/unit_tests/test_compact_tool.py +0 -40
  154. deepagents_cli-0.0.59/tests/unit_tests/test_config.py +0 -3004
  155. deepagents_cli-0.0.59/tests/unit_tests/test_configurable_model.py +0 -609
  156. deepagents_cli-0.0.59/tests/unit_tests/test_debug.py +0 -69
  157. deepagents_cli-0.0.59/tests/unit_tests/test_editor.py +0 -274
  158. deepagents_cli-0.0.59/tests/unit_tests/test_end_to_end.py +0 -435
  159. deepagents_cli-0.0.59/tests/unit_tests/test_env_vars.py +0 -135
  160. deepagents_cli-0.0.59/tests/unit_tests/test_event_bus.py +0 -445
  161. deepagents_cli-0.0.59/tests/unit_tests/test_exception_handling.py +0 -244
  162. deepagents_cli-0.0.59/tests/unit_tests/test_extras_info.py +0 -240
  163. deepagents_cli-0.0.59/tests/unit_tests/test_file_ops.py +0 -120
  164. deepagents_cli-0.0.59/tests/unit_tests/test_formatting.py +0 -66
  165. deepagents_cli-0.0.59/tests/unit_tests/test_git.py +0 -264
  166. deepagents_cli-0.0.59/tests/unit_tests/test_history.py +0 -233
  167. deepagents_cli-0.0.59/tests/unit_tests/test_hooks.py +0 -357
  168. deepagents_cli-0.0.59/tests/unit_tests/test_imports.py +0 -29
  169. deepagents_cli-0.0.59/tests/unit_tests/test_input_parsing.py +0 -414
  170. deepagents_cli-0.0.59/tests/unit_tests/test_iterm_cursor_guide.py +0 -256
  171. deepagents_cli-0.0.59/tests/unit_tests/test_launch_init.py +0 -336
  172. deepagents_cli-0.0.59/tests/unit_tests/test_links.py +0 -42
  173. deepagents_cli-0.0.59/tests/unit_tests/test_loading.py +0 -86
  174. deepagents_cli-0.0.59/tests/unit_tests/test_local_context.py +0 -1541
  175. deepagents_cli-0.0.59/tests/unit_tests/test_main.py +0 -1212
  176. deepagents_cli-0.0.59/tests/unit_tests/test_main_acp_mode.py +0 -186
  177. deepagents_cli-0.0.59/tests/unit_tests/test_main_args.py +0 -1032
  178. deepagents_cli-0.0.59/tests/unit_tests/test_mcp_auth.py +0 -967
  179. deepagents_cli-0.0.59/tests/unit_tests/test_mcp_commands.py +0 -332
  180. deepagents_cli-0.0.59/tests/unit_tests/test_mcp_tools.py +0 -2277
  181. deepagents_cli-0.0.59/tests/unit_tests/test_mcp_trust.py +0 -112
  182. deepagents_cli-0.0.59/tests/unit_tests/test_mcp_viewer.py +0 -197
  183. deepagents_cli-0.0.59/tests/unit_tests/test_media_utils.py +0 -733
  184. deepagents_cli-0.0.59/tests/unit_tests/test_message_store.py +0 -867
  185. deepagents_cli-0.0.59/tests/unit_tests/test_messages.py +0 -1342
  186. deepagents_cli-0.0.59/tests/unit_tests/test_model_config.py +0 -4341
  187. deepagents_cli-0.0.59/tests/unit_tests/test_model_selector.py +0 -1314
  188. deepagents_cli-0.0.59/tests/unit_tests/test_model_switch.py +0 -1122
  189. deepagents_cli-0.0.59/tests/unit_tests/test_non_interactive.py +0 -1562
  190. deepagents_cli-0.0.59/tests/unit_tests/test_notification_center.py +0 -312
  191. deepagents_cli-0.0.59/tests/unit_tests/test_notification_detail.py +0 -133
  192. deepagents_cli-0.0.59/tests/unit_tests/test_notifications.py +0 -204
  193. deepagents_cli-0.0.59/tests/unit_tests/test_offload.py +0 -1510
  194. deepagents_cli-0.0.59/tests/unit_tests/test_offload_dict_messages.py +0 -335
  195. deepagents_cli-0.0.59/tests/unit_tests/test_onboarding.py +0 -241
  196. deepagents_cli-0.0.59/tests/unit_tests/test_output.py +0 -62
  197. deepagents_cli-0.0.59/tests/unit_tests/test_reload.py +0 -632
  198. deepagents_cli-0.0.59/tests/unit_tests/test_remote_client.py +0 -615
  199. deepagents_cli-0.0.59/tests/unit_tests/test_sandbox_factory.py +0 -505
  200. deepagents_cli-0.0.59/tests/unit_tests/test_server.py +0 -321
  201. deepagents_cli-0.0.59/tests/unit_tests/test_server_config.py +0 -217
  202. deepagents_cli-0.0.59/tests/unit_tests/test_server_graph.py +0 -139
  203. deepagents_cli-0.0.59/tests/unit_tests/test_server_helpers.py +0 -95
  204. deepagents_cli-0.0.59/tests/unit_tests/test_server_manager.py +0 -340
  205. deepagents_cli-0.0.59/tests/unit_tests/test_session_stats.py +0 -151
  206. deepagents_cli-0.0.59/tests/unit_tests/test_sessions.py +0 -1860
  207. deepagents_cli-0.0.59/tests/unit_tests/test_shell_allow_list.py +0 -719
  208. deepagents_cli-0.0.59/tests/unit_tests/test_skill_invocation.py +0 -596
  209. deepagents_cli-0.0.59/tests/unit_tests/test_startup_fast_paths.py +0 -213
  210. deepagents_cli-0.0.59/tests/unit_tests/test_state_migration.py +0 -204
  211. deepagents_cli-0.0.59/tests/unit_tests/test_status.py +0 -430
  212. deepagents_cli-0.0.59/tests/unit_tests/test_subagents.py +0 -431
  213. deepagents_cli-0.0.59/tests/unit_tests/test_terminal_capabilities.py +0 -203
  214. deepagents_cli-0.0.59/tests/unit_tests/test_terminal_escape.py +0 -377
  215. deepagents_cli-0.0.59/tests/unit_tests/test_textual_adapter.py +0 -2334
  216. deepagents_cli-0.0.59/tests/unit_tests/test_textual_patches.py +0 -92
  217. deepagents_cli-0.0.59/tests/unit_tests/test_theme.py +0 -2543
  218. deepagents_cli-0.0.59/tests/unit_tests/test_thread_selector.py +0 -3374
  219. deepagents_cli-0.0.59/tests/unit_tests/test_token_tracker.py +0 -150
  220. deepagents_cli-0.0.59/tests/unit_tests/test_tool_display.py +0 -470
  221. deepagents_cli-0.0.59/tests/unit_tests/test_ui.py +0 -388
  222. deepagents_cli-0.0.59/tests/unit_tests/test_unicode_security.py +0 -246
  223. deepagents_cli-0.0.59/tests/unit_tests/test_update_available.py +0 -183
  224. deepagents_cli-0.0.59/tests/unit_tests/test_update_check.py +0 -1424
  225. deepagents_cli-0.0.59/tests/unit_tests/test_update_progress.py +0 -116
  226. deepagents_cli-0.0.59/tests/unit_tests/test_version.py +0 -396
  227. deepagents_cli-0.0.59/tests/unit_tests/test_welcome.py +0 -665
  228. deepagents_cli-0.0.59/tests/unit_tests/tools/__init__.py +0 -0
  229. deepagents_cli-0.0.59/tests/unit_tests/tools/test_fetch_url.py +0 -72
  230. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/.gitignore +0 -0
  231. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/deploy/__init__.py +0 -0
  232. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/deploy/bundler.py +0 -0
  233. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/deploy/config.py +0 -0
  234. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/deploy/context_hub.py +0 -0
  235. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/deploy/frontend_dist/assets/anonymous-B9UzAXQd.js +0 -0
  236. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/deploy/frontend_dist/assets/clerk-5xHgyQyG.js +0 -0
  237. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/deploy/frontend_dist/assets/highlighted-body-OFNGDK62-rX-7qT8o.js +0 -0
  238. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/deploy/frontend_dist/assets/index-DM3gptpu.js +0 -0
  239. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/deploy/frontend_dist/assets/index-Ddy7F6KI.css +0 -0
  240. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/deploy/frontend_dist/assets/supabase-S6NACDgm.js +0 -0
  241. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/deploy/frontend_dist/index.html +0 -0
  242. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/deploy/frontend_dist/logo-dark.svg +0 -0
  243. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/deploy/frontend_dist/logo-light.svg +0 -0
  244. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/deploy/templates.py +0 -0
  245. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/deepagents_cli/py.typed +0 -0
  246. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/examples/deploy-content-writer/.env.example +0 -0
  247. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/examples/deploy-content-writer/skills/blog-post/SKILL.md +0 -0
  248. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/examples/deploy-content-writer/skills/social-media/SKILL.md +0 -0
  249. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/examples/deploy-content-writer/user/context.md +0 -0
  250. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/examples/deploy-content-writer/user/preferences.md +0 -0
  251. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/examples/skills/arxiv-search/SKILL.md +0 -0
  252. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  253. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/examples/skills/langgraph-docs/SKILL.md +0 -0
  254. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/examples/skills/skill-creator/SKILL.md +0 -0
  255. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  256. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  257. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/examples/skills/web-research/SKILL.md +0 -0
  258. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/.nvmrc +0 -0
  259. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/index.html +0 -0
  260. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/package.json +0 -0
  261. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/postcss.config.js +0 -0
  262. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/public/logo-dark.svg +0 -0
  263. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/public/logo-light.svg +0 -0
  264. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/App.tsx +0 -0
  265. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/ThemeProvider.tsx +0 -0
  266. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/auth/anonymous.tsx +0 -0
  267. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/auth/clerk.tsx +0 -0
  268. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/auth/loader.tsx +0 -0
  269. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/auth/supabase.tsx +0 -0
  270. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/auth/types.ts +0 -0
  271. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/components/AppHeader.tsx +0 -0
  272. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/components/FilePanels.tsx +0 -0
  273. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/components/MessageList.tsx +0 -0
  274. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/components/SubagentActivity.tsx +0 -0
  275. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/components/ThreadPicker.tsx +0 -0
  276. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/components/TodosPanel.tsx +0 -0
  277. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/components/ToolCallCard.tsx +0 -0
  278. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/components/toolcalls/FileToolCard.tsx +0 -0
  279. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/components/toolcalls/SearchCard.tsx +0 -0
  280. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/components/toolcalls/ThinkCard.tsx +0 -0
  281. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/components/toolcalls/TodosCard.tsx +0 -0
  282. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/components/toolcalls/index.ts +0 -0
  283. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/constants.ts +0 -0
  284. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/index.css +0 -0
  285. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/main.tsx +0 -0
  286. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/runtimeConfig.ts +0 -0
  287. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/types.ts +0 -0
  288. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/src/vite-env.d.ts +0 -0
  289. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/tsconfig.json +0 -0
  290. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/frontend/vite.config.ts +0 -0
  291. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/images/cli.png +0 -0
  292. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/scripts/check_imports.py +0 -0
  293. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/scripts/debug_server.sh +0 -0
  294. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/scripts/install.sh +0 -0
  295. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/tests/README.md +0 -0
  296. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/tests/integration_tests/__init__.py +0 -0
  297. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/tests/integration_tests/conftest.py +0 -0
  298. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/tests/integration_tests/test_context_hub.py +0 -0
  299. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/tests/integration_tests/test_deploy_hub.py +0 -0
  300. {deepagents_cli-0.0.59/tests/integration_tests/benchmarks → deepagents_cli-0.1.0/tests/unit_tests}/__init__.py +0 -0
  301. {deepagents_cli-0.0.59/tests/unit_tests → deepagents_cli-0.1.0/tests/unit_tests/deploy}/__init__.py +0 -0
  302. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/tests/unit_tests/deploy/test_bundler.py +0 -0
  303. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/tests/unit_tests/deploy/test_commands.py +0 -0
  304. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/tests/unit_tests/deploy/test_config.py +0 -0
  305. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/tests/unit_tests/deploy/test_context_hub.py +0 -0
  306. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/tests/unit_tests/deploy/test_frontend_bundle.py +0 -0
  307. {deepagents_cli-0.0.59 → deepagents_cli-0.1.0}/tests/unit_tests/deploy/test_frontend_config.py +0 -0
@@ -1,5 +1,14 @@
1
1
  # Deep Agents CLI Changelog
2
2
 
3
+ From 0.1.0 onward, `deepagents-cli` only contains `deploy`, `dev`, and `init`.
4
+ The coding agent (interactive TUI & headless CLI) moved to [`deepagents-code`](https://github.com/langchain-ai/deepagents/blob/main/libs/code/CHANGELOG.md).
5
+
6
+ ## [0.1.0](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.59...deepagents-cli==0.1.0) (2026-05-16)
7
+
8
+ ### ⚠ BREAKING CHANGES
9
+
10
+ * Removes the interactive TUI / coding-agent surface from `deepagents-cli`. The package now only ships the `deploy` command and supporting config. Users relying on the chat REPL, sessions, MCP tooling, skills, and related widgets should migrate to `deepagents-code`.
11
+
3
12
  ## [0.0.59](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.58...deepagents-cli==0.0.59) (2026-05-12)
4
13
 
5
14
  ### Bug Fixes
@@ -0,0 +1,44 @@
1
+ # CLI Development Guide
2
+
3
+ `deepagents-cli` now contains only the deployment subcommands (`init`, `dev`,
4
+ `deploy`). For interactive-REPL development guidance, see
5
+ [`libs/code/DEV.md`](../code/DEV.md).
6
+
7
+ ## Local setup
8
+
9
+ ```bash
10
+ cd libs/cli && uv sync --group test
11
+ ```
12
+
13
+ Run the CLI from a checkout:
14
+
15
+ ```bash
16
+ uv run python -m deepagents_cli init my-agent
17
+ uv run python -m deepagents_cli dev --config my-agent/deepagents.toml
18
+ uv run python -m deepagents_cli deploy --config my-agent/deepagents.toml --dry-run
19
+ ```
20
+
21
+ ## Tests
22
+
23
+ ```bash
24
+ make test # unit tests (no network)
25
+ make lint # ruff + ty
26
+ ```
27
+
28
+ Integration tests in `tests/integration_tests/` exercise the LangSmith Hub
29
+ seeding path and require `LANGSMITH_API_KEY` to be set.
30
+
31
+ ## `langgraph` subcommand interop
32
+
33
+ `dev` and `deploy` shell out to the `langgraph` CLI (`langgraph-cli[inmem]`
34
+ runtime dependency). When debugging dev-server startup failures, run the
35
+ generated command manually from the build directory printed by
36
+ `print_bundle_summary`:
37
+
38
+ ```bash
39
+ cd /tmp/deepagents-dev-XXXX
40
+ langgraph dev --port 2024 --allow-blocking
41
+ ```
42
+
43
+ The bundle is self-contained — re-running `langgraph dev` from the build
44
+ directory reproduces the failure without re-bundling.
@@ -1,4 +1,4 @@
1
- .PHONY: format lint type typecheck test tests integration_test integration_tests test_watch benchmark bench bench-memory help run lint_package lint_tests check_imports coverage
1
+ .PHONY: format lint type typecheck test tests integration_test integration_tests test_watch help run lint_package lint_tests check_imports coverage
2
2
 
3
3
  .DEFAULT_GOAL := help
4
4
 
@@ -18,7 +18,7 @@ PYTEST_EXTRA ?=
18
18
 
19
19
  test: ## Run unit tests
20
20
  test tests:
21
- uv run --group test pytest -n auto --benchmark-disable --disable-socket --allow-unix-socket $(PYTEST_EXTRA) $(TEST_FILE) \
21
+ uv run --group test pytest -n auto --disable-socket --allow-unix-socket $(PYTEST_EXTRA) $(TEST_FILE) \
22
22
  $(COV_ARGS)
23
23
 
24
24
  coverage: ## Run unit tests with coverage
@@ -30,20 +30,11 @@ coverage: ## Run unit tests with coverage
30
30
 
31
31
  integration_test: ## Run integration tests
32
32
  integration_test integration_tests:
33
- uv run --group test pytest -n auto --benchmark-disable -vvv --timeout 30 $(TEST_FILE)
33
+ uv run --group test pytest -n auto -vvv --timeout 30 $(TEST_FILE)
34
34
 
35
35
  test_watch: ## Run tests in watch mode
36
36
  uv run --group test ptw --now . -- -vv $(TEST_FILE)
37
37
 
38
- benchmark: ## Run benchmark tests
39
- uv run --group test pytest ./tests -m benchmark
40
-
41
- bench: ## Run benchmarks under CodSpeed instrumentation
42
- uv run --group test pytest ./tests -m benchmark --codspeed
43
-
44
- bench-memory: ## Run memory benchmarks under CodSpeed instrumentation
45
- uv run --group test pytest ./tests -m memory_benchmark --codspeed
46
-
47
38
  run: ## Reinstall and run package
48
39
  uvx --no-cache --reinstall .
49
40
 
@@ -0,0 +1,99 @@
1
+ Metadata-Version: 2.4
2
+ Name: deepagents-cli
3
+ Version: 0.1.0
4
+ Summary: Deployment tooling for Deep Agents - bundle, run, and ship agents to LangGraph Platform.
5
+ Project-URL: Homepage, https://docs.langchain.com/oss/python/deepagents/overview
6
+ Project-URL: Documentation, https://reference.langchain.com/python/deepagents/
7
+ Project-URL: Repository, https://github.com/langchain-ai/deepagents
8
+ Project-URL: Issues, https://github.com/langchain-ai/deepagents/issues
9
+ Project-URL: Changelog, https://github.com/langchain-ai/deepagents/blob/main/libs/cli/CHANGELOG.md
10
+ Project-URL: Twitter, https://x.com/langchain_oss
11
+ Project-URL: Slack, https://www.langchain.com/join-community
12
+ Project-URL: Reddit, https://www.reddit.com/r/LangChain/
13
+ License: MIT
14
+ Keywords: agents,ai,cli,deep-agent,deploy,langchain,langgraph,llm
15
+ Classifier: Development Status :: 4 - Beta
16
+ Classifier: Environment :: Console
17
+ Classifier: Intended Audience :: Developers
18
+ Classifier: License :: OSI Approved :: MIT License
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
24
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
25
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
+ Requires-Python: <4.0,>=3.11
27
+ Requires-Dist: deepagents>=0.6.1
28
+ Requires-Dist: httpx<1.0.0,>=0.28.1
29
+ Requires-Dist: langchain<2.0.0,>=1.3.0
30
+ Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.24
31
+ Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.28.1
32
+ Requires-Dist: langgraph-sdk<1.0.0,>=0.3.13
33
+ Requires-Dist: langgraph<2.0.0,>=1.2.0
34
+ Requires-Dist: langsmith>=0.8.0
35
+ Requires-Dist: python-dotenv<2.0.0,>=1.2.2
36
+ Provides-Extra: agentcore
37
+ Requires-Dist: langchain-agentcore-codeinterpreter>=0.0.2; extra == 'agentcore'
38
+ Provides-Extra: all-sandboxes
39
+ Requires-Dist: langchain-agentcore-codeinterpreter>=0.0.2; extra == 'all-sandboxes'
40
+ Requires-Dist: langchain-daytona>=0.0.5; extra == 'all-sandboxes'
41
+ Requires-Dist: langchain-modal>=0.0.3; extra == 'all-sandboxes'
42
+ Requires-Dist: langchain-runloop>=0.0.4; extra == 'all-sandboxes'
43
+ Provides-Extra: daytona
44
+ Requires-Dist: langchain-daytona>=0.0.5; extra == 'daytona'
45
+ Provides-Extra: modal
46
+ Requires-Dist: langchain-modal>=0.0.3; extra == 'modal'
47
+ Provides-Extra: runloop
48
+ Requires-Dist: langchain-runloop>=0.0.4; extra == 'runloop'
49
+ Description-Content-Type: text/markdown
50
+
51
+ # Deep Agents CLI — Deployment Tooling
52
+
53
+ [![PyPI - Version](https://img.shields.io/pypi/v/deepagents-cli?label=%20)](https://pypi.org/project/deepagents-cli/#history)
54
+ [![PyPI - License](https://img.shields.io/pypi/l/deepagents-cli)](https://opensource.org/licenses/MIT)
55
+ [![PyPI - Downloads](https://img.shields.io/pepy/dt/deepagents-cli)](https://pypistats.org/packages/deepagents-cli)
56
+ [![Twitter](https://img.shields.io/twitter/url/https/twitter.com/langchain_oss.svg?style=social&label=Follow%20%40LangChain)](https://x.com/langchain_oss)
57
+
58
+ ## Install
59
+
60
+ ```bash
61
+ uv tool install deepagents-cli
62
+ ```
63
+
64
+ Or with optional sandbox providers:
65
+
66
+ ```bash
67
+ uv tool install 'deepagents-cli[all-sandboxes]'
68
+ ```
69
+
70
+ ## Usage
71
+
72
+ ```bash
73
+ # Scaffold a new project folder
74
+ deepagents init my-agent
75
+
76
+ # Run a local langgraph dev server against the project
77
+ cd my-agent && deepagents dev
78
+
79
+ # Bundle and ship to LangSmith Deployment
80
+ deepagents deploy
81
+ ```
82
+
83
+ ## 📖 Resources
84
+
85
+ - **[CLI Documentation](https://docs.langchain.com/oss/python/deepagents/cli/overview)**
86
+ - **[Changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/cli/CHANGELOG.md)**
87
+ - **[Source code](https://github.com/langchain-ai/deepagents/tree/main/libs/cli)**
88
+ - **[Deep Agents SDK](https://github.com/langchain-ai/deepagents)** — underlying agent harness
89
+ - **[Deep Agents Code](https://pypi.org/project/deepagents-code/)** — coding agent
90
+
91
+ ## 📕 Releases & Versioning
92
+
93
+ See our [Releases](https://docs.langchain.com/oss/python/release-policy) and [Versioning](https://docs.langchain.com/oss/python/versioning) policies.
94
+
95
+ ## 💁 Contributing
96
+
97
+ As an open-source project in a rapidly developing field, we are extremely open to contributions, whether it be in the form of a new feature, improved infrastructure, or better documentation.
98
+
99
+ For detailed information on how to contribute, see the [Contributing Guide](https://docs.langchain.com/oss/python/contributing/overview).
@@ -0,0 +1,49 @@
1
+ # Deep Agents CLI — Deployment Tooling
2
+
3
+ [![PyPI - Version](https://img.shields.io/pypi/v/deepagents-cli?label=%20)](https://pypi.org/project/deepagents-cli/#history)
4
+ [![PyPI - License](https://img.shields.io/pypi/l/deepagents-cli)](https://opensource.org/licenses/MIT)
5
+ [![PyPI - Downloads](https://img.shields.io/pepy/dt/deepagents-cli)](https://pypistats.org/packages/deepagents-cli)
6
+ [![Twitter](https://img.shields.io/twitter/url/https/twitter.com/langchain_oss.svg?style=social&label=Follow%20%40LangChain)](https://x.com/langchain_oss)
7
+
8
+ ## Install
9
+
10
+ ```bash
11
+ uv tool install deepagents-cli
12
+ ```
13
+
14
+ Or with optional sandbox providers:
15
+
16
+ ```bash
17
+ uv tool install 'deepagents-cli[all-sandboxes]'
18
+ ```
19
+
20
+ ## Usage
21
+
22
+ ```bash
23
+ # Scaffold a new project folder
24
+ deepagents init my-agent
25
+
26
+ # Run a local langgraph dev server against the project
27
+ cd my-agent && deepagents dev
28
+
29
+ # Bundle and ship to LangSmith Deployment
30
+ deepagents deploy
31
+ ```
32
+
33
+ ## 📖 Resources
34
+
35
+ - **[CLI Documentation](https://docs.langchain.com/oss/python/deepagents/cli/overview)**
36
+ - **[Changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/cli/CHANGELOG.md)**
37
+ - **[Source code](https://github.com/langchain-ai/deepagents/tree/main/libs/cli)**
38
+ - **[Deep Agents SDK](https://github.com/langchain-ai/deepagents)** — underlying agent harness
39
+ - **[Deep Agents Code](https://pypi.org/project/deepagents-code/)** — coding agent
40
+
41
+ ## 📕 Releases & Versioning
42
+
43
+ See our [Releases](https://docs.langchain.com/oss/python/release-policy) and [Versioning](https://docs.langchain.com/oss/python/versioning) policies.
44
+
45
+ ## 💁 Contributing
46
+
47
+ As an open-source project in a rapidly developing field, we are extremely open to contributions, whether it be in the form of a new feature, improved infrastructure, or better documentation.
48
+
49
+ For detailed information on how to contribute, see the [Contributing Guide](https://docs.langchain.com/oss/python/contributing/overview).
@@ -2,6 +2,15 @@
2
2
 
3
3
  > Generated: 2026-03-28 | Commit: e859077f | Scope: libs/cli only
4
4
 
5
+ > ⚠️ **(2026-05-15):** This document was generated before the
6
+ > 0.1.0 split that moved the interactive REPL out of `deepagents-cli`. The
7
+ > sections covering the Textual app, `non_interactive.py`, MCP, sandbox
8
+ > bootstrap, sessions, server subprocess management, hooks, and skills no
9
+ > longer apply to this package — those surfaces now live under
10
+ > [`libs/code/`](../code/THREAT_MODEL.md). The remaining in-scope surface is
11
+ > `deepagents_cli.deploy` (bundler, templates, hub seeding) and the slim
12
+ > `_load_dotenv`/`resolve_env_var` helpers in `config.py`/`model_config.py`.
13
+
5
14
  > **Disclaimer:** This threat model is automatically generated to help developers and security researchers understand where trust is placed in this system and where boundaries exist. It is experimental, subject to change, and not an authoritative security reference — findings should be validated before acting on them. The analysis may be incomplete or contain inaccuracies. We welcome suggestions and corrections to improve this document.
6
15
 
7
16
  ## Scope
@@ -1,4 +1,7 @@
1
- """Deep Agents CLI - Interactive AI coding assistant."""
1
+ """Deep Agents CLI - deployment tooling (`init`, `dev`, `deploy`).
2
+
3
+ For the interactive coding agent, install the `deepagents-code` package.
4
+ """
2
5
 
3
6
  from __future__ import annotations
4
7
 
@@ -16,17 +19,16 @@ __all__ = [
16
19
 
17
20
 
18
21
  def __getattr__(name: str) -> Callable[[], None]:
19
- """Lazy import for `cli_main` to avoid loading `main.py` at package import.
22
+ """Lazy import for `cli_main` to keep `import deepagents_cli` cheap.
20
23
 
21
- `main.py` pulls in `argparse`, signal handling, and other startup machinery
22
- that isn't needed when submodules like `config` or `widgets` are
23
- imported directly.
24
+ Args:
25
+ name: Attribute being looked up on the package.
24
26
 
25
27
  Returns:
26
- The requested callable.
28
+ The requested attribute (only `cli_main` is provided lazily).
27
29
 
28
30
  Raises:
29
- AttributeError: If *name* is not a lazily-provided attribute.
31
+ AttributeError: If `name` is not a lazily-provided attribute.
30
32
  """
31
33
  if name == "cli_main":
32
34
  from deepagents_cli.main import cli_main
@@ -1,4 +1,4 @@
1
- """Allow running the CLI as: python -m deepagents.cli."""
1
+ """Allow running the CLI as `python -m deepagents_cli`."""
2
2
 
3
3
  from deepagents_cli.main import cli_main
4
4
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Keep the `x-release-please-version` annotation — release-please uses it to
4
4
  # bump `__version__` in sync with `pyproject.toml` on every release PR.
5
- __version__ = "0.0.59" # x-release-please-version
5
+ __version__ = "0.1.0" # x-release-please-version
6
6
 
7
7
  DOCS_URL = "https://docs.langchain.com/oss/python/deepagents/cli"
8
8
  """URL for `deepagents-cli` documentation."""
@@ -0,0 +1,128 @@
1
+ """Project and global `.env` loading for the deploy CLI."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import logging
6
+ import sys
7
+ from pathlib import Path
8
+
9
+ logger = logging.getLogger(__name__)
10
+
11
+
12
+ def _stderr(msg: str) -> None:
13
+ """Print a diagnostic to stderr without a trailing newline corruption.
14
+
15
+ The CLI does not configure logging handlers by default, so `logger.warning`
16
+ output is invisible to end users. Diagnostics that the user authored — like
17
+ a malformed `.env` they meant to load — should also surface on stderr.
18
+ """
19
+ sys.stderr.write(f"warning: {msg}\n")
20
+
21
+
22
+ def _find_dotenv_from_start_path(start_path: Path) -> Path | None:
23
+ """Find the nearest `.env` file from an explicit start path upward.
24
+
25
+ Args:
26
+ start_path: Directory to start searching from.
27
+
28
+ Returns:
29
+ Path to the nearest `.env` file, or `None` if not found.
30
+ """
31
+ current = start_path.expanduser().resolve()
32
+ for parent in [current, *list(current.parents)]:
33
+ candidate = parent / ".env"
34
+ try:
35
+ if candidate.is_file():
36
+ return candidate
37
+ except OSError:
38
+ logger.warning("Could not inspect .env candidate %s", candidate)
39
+ continue
40
+ return None
41
+
42
+
43
+ try:
44
+ _GLOBAL_DOTENV_PATH = Path.home() / ".deepagents" / ".env"
45
+ except RuntimeError:
46
+ # `Path.home()` raises when `HOME` is unset/misconfigured (e.g. on some
47
+ # CI runners). Fall back to a path that won't exist so `is_file()`
48
+ # short-circuits cleanly, and surface the suppression on stderr so the
49
+ # user knows global defaults will not apply.
50
+ _GLOBAL_DOTENV_PATH = Path("/nonexistent/.deepagents/.env")
51
+ _stderr(
52
+ "could not resolve home directory; "
53
+ "global `~/.deepagents/.env` will not be loaded",
54
+ )
55
+ logger.warning(
56
+ "Could not resolve home directory; global .env will not be loaded",
57
+ exc_info=True,
58
+ )
59
+
60
+
61
+ def _load_dotenv(*, start_path: Path) -> bool:
62
+ """Load environment variables from project and global `.env` files.
63
+
64
+ Loads in order (first write wins, `override=False`):
65
+
66
+ 1. Project `.env` — discovered upward from `start_path`.
67
+ 2. `~/.deepagents/.env` — global user defaults.
68
+
69
+ Both layers use `override=False` so that shell-exported variables always
70
+ take precedence over dotenv files. Because the project file loads first,
71
+ the effective precedence is:
72
+
73
+ ```text
74
+ shell env > project `.env` > global `.env`
75
+ ```
76
+
77
+ When a *resolved* dotenv path fails to parse the user is notified on
78
+ stderr in addition to the structured `logger.warning` (the CLI does not
79
+ install logging handlers by default).
80
+
81
+ Args:
82
+ start_path: Directory to use for project `.env` discovery. Searched
83
+ upward until either a `.env` is found or the filesystem root is
84
+ reached.
85
+
86
+ Returns:
87
+ `True` when at least one dotenv file was loaded, `False` otherwise.
88
+ """
89
+ import dotenv
90
+
91
+ loaded = False
92
+
93
+ dotenv_path = _find_dotenv_from_start_path(start_path)
94
+ if dotenv_path is not None:
95
+ try:
96
+ loaded = (
97
+ dotenv.load_dotenv(dotenv_path=dotenv_path, override=False) or loaded
98
+ )
99
+ except (OSError, ValueError) as exc:
100
+ _stderr(
101
+ f"could not read project .env at {dotenv_path}: {exc}. "
102
+ "Project env vars will not be loaded.",
103
+ )
104
+ logger.warning(
105
+ "Could not read project dotenv at %s; "
106
+ "project env vars will not be loaded",
107
+ dotenv_path,
108
+ exc_info=True,
109
+ )
110
+
111
+ try:
112
+ if _GLOBAL_DOTENV_PATH.is_file() and dotenv.load_dotenv(
113
+ dotenv_path=_GLOBAL_DOTENV_PATH, override=False
114
+ ):
115
+ loaded = True
116
+ logger.debug("Loaded global dotenv: %s", _GLOBAL_DOTENV_PATH)
117
+ except (OSError, ValueError) as exc:
118
+ _stderr(
119
+ f"could not read global .env at {_GLOBAL_DOTENV_PATH}: {exc}. "
120
+ "Global defaults will not be applied.",
121
+ )
122
+ logger.warning(
123
+ "Could not read global dotenv at %s; global defaults will not be applied",
124
+ _GLOBAL_DOTENV_PATH,
125
+ exc_info=True,
126
+ )
127
+
128
+ return loaded
@@ -46,6 +46,7 @@ def setup_deploy_parsers(
46
46
  "-h",
47
47
  "--help",
48
48
  action=make_help_action(lambda: init_parser.print_help()),
49
+ help="show this help message and exit",
49
50
  )
50
51
  init_parser.add_argument(
51
52
  "--force",
@@ -63,6 +64,7 @@ def setup_deploy_parsers(
63
64
  "-h",
64
65
  "--help",
65
66
  action=make_help_action(lambda: dev_parser.print_help()),
67
+ help="show this help message and exit",
66
68
  )
67
69
  dev_parser.add_argument(
68
70
  "--config",
@@ -93,6 +95,7 @@ def setup_deploy_parsers(
93
95
  "-h",
94
96
  "--help",
95
97
  action=make_help_action(lambda: deploy_parser.print_help()),
98
+ help="show this help message and exit",
96
99
  )
97
100
  deploy_parser.add_argument(
98
101
  "--config",
@@ -0,0 +1,167 @@
1
+ """Entry point for the `deepagents` CLI.
2
+
3
+ As of `deepagents-cli==0.1.0` the interactive Textual REPL has moved to the
4
+ [`deepagents-code`](https://pypi.org/project/deepagents-code/) package. This
5
+ CLI now exposes only the deployment-oriented commands: `init`, `dev`, and
6
+ `deploy`. Bare invocations print a deprecation notice and exit non-zero.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ import argparse
12
+ import contextlib
13
+ import os
14
+ import sys
15
+ from typing import TYPE_CHECKING, Any
16
+
17
+ from deepagents_cli._version import __version__
18
+
19
+ if TYPE_CHECKING:
20
+ from collections.abc import Callable, Sequence
21
+
22
+
23
+ _REPL_REDIRECT_MESSAGE = (
24
+ "The interactive `deepagents` REPL has moved to the `deepagents-code` "
25
+ "package.\n"
26
+ "Install it with:\n\n"
27
+ " pip install deepagents-code\n\n"
28
+ "Then run `deepagents-code` to start an interactive session.\n\n"
29
+ "The `deepagents` CLI now only provides the `init`, `dev`, and `deploy` "
30
+ "subcommands."
31
+ )
32
+
33
+
34
+ def _make_help_action(
35
+ help_fn: Callable[[], None],
36
+ ) -> type[argparse.Action]:
37
+ """Create an argparse Action that calls `help_fn` and exits.
38
+
39
+ argparse requires a *class* (not a callable) for custom actions; this
40
+ factory uses a closure so each subcommand can wire `-h` to its own
41
+ `print_help()`.
42
+
43
+ Args:
44
+ help_fn: Callable that prints help text to stdout.
45
+
46
+ Returns:
47
+ An argparse Action class wired to the given help function.
48
+ """
49
+
50
+ class _ShowHelp(argparse.Action):
51
+ def __init__(
52
+ self,
53
+ option_strings: list[str],
54
+ dest: str = argparse.SUPPRESS,
55
+ default: str = argparse.SUPPRESS,
56
+ **kwargs: Any,
57
+ ) -> None:
58
+ super().__init__(
59
+ option_strings=option_strings,
60
+ dest=dest,
61
+ default=default,
62
+ nargs=0,
63
+ **kwargs,
64
+ )
65
+
66
+ def __call__(
67
+ self,
68
+ parser: argparse.ArgumentParser,
69
+ namespace: argparse.Namespace, # noqa: ARG002
70
+ values: str | Sequence[Any] | None, # noqa: ARG002
71
+ option_string: str | None = None, # noqa: ARG002
72
+ ) -> None:
73
+ with contextlib.suppress(BrokenPipeError):
74
+ help_fn()
75
+ parser.exit()
76
+
77
+ return _ShowHelp
78
+
79
+
80
+ def _build_parser() -> argparse.ArgumentParser:
81
+ """Build the top-level argparse parser for the deploy/dev/init CLI.
82
+
83
+ Returns:
84
+ Configured `ArgumentParser` with `init`, `dev`, and `deploy`
85
+ subparsers registered.
86
+ """
87
+ from deepagents_cli.deploy import setup_deploy_parsers
88
+
89
+ parser = argparse.ArgumentParser(
90
+ prog="deepagents",
91
+ description=(
92
+ "Deep Agents - deployment tooling.\n\n"
93
+ "For interactive chat, install `deepagents-code` instead."
94
+ ),
95
+ formatter_class=argparse.RawDescriptionHelpFormatter,
96
+ add_help=False,
97
+ )
98
+ parser.add_argument(
99
+ "-h",
100
+ "--help",
101
+ action=_make_help_action(parser.print_help),
102
+ help="show this help message and exit",
103
+ )
104
+ parser.add_argument(
105
+ "-v",
106
+ "--version",
107
+ action="version",
108
+ version=f"deepagents-cli {__version__}",
109
+ )
110
+
111
+ subparsers = parser.add_subparsers(dest="command", help="Command to run")
112
+ setup_deploy_parsers(subparsers, make_help_action=_make_help_action)
113
+ return parser
114
+
115
+
116
+ def parse_args(argv: Sequence[str] | None = None) -> argparse.Namespace:
117
+ """Parse CLI arguments and return the resulting namespace.
118
+
119
+ Args:
120
+ argv: Optional argument list (defaults to `sys.argv[1:]`).
121
+
122
+ Returns:
123
+ Parsed argparse `Namespace`.
124
+ """
125
+ parser = _build_parser()
126
+ return parser.parse_args(argv)
127
+
128
+
129
+ def cli_main() -> None:
130
+ """Entry point for the `deepagents` and `deepagents-cli` console scripts.
131
+
132
+ Raises:
133
+ SystemExit: On `--help`/`--version`, after a subcommand finishes,
134
+ on `KeyboardInterrupt`, when invoked without a subcommand (the
135
+ user is redirected to `deepagents-code`), or when a subcommand
136
+ handler raises `SystemExit` directly (e.g. config validation
137
+ failures in `execute_deploy_command`).
138
+ """
139
+ if sys.platform == "darwin":
140
+ # gRPC (pulled in transitively by LangSmith deps) crashes on macOS
141
+ # when the process forks after gRPC has been initialized. Disable
142
+ # fork support to avoid the abort; the current deploy/dev paths
143
+ # don't fork, so disabling fork support is a safe default —
144
+ # reconsider this env var if a future subcommand spawns workers.
145
+ os.environ.setdefault("GRPC_ENABLE_FORK_SUPPORT", "0")
146
+
147
+ args = parse_args()
148
+
149
+ try:
150
+ if args.command == "init":
151
+ from deepagents_cli.deploy import execute_init_command
152
+
153
+ execute_init_command(args)
154
+ elif args.command == "dev":
155
+ from deepagents_cli.deploy import execute_dev_command
156
+
157
+ execute_dev_command(args)
158
+ elif args.command == "deploy":
159
+ from deepagents_cli.deploy import execute_deploy_command
160
+
161
+ execute_deploy_command(args)
162
+ else:
163
+ sys.stderr.write(_REPL_REDIRECT_MESSAGE + "\n")
164
+ raise SystemExit(1)
165
+ except KeyboardInterrupt:
166
+ sys.stderr.write("\nInterrupted.\n")
167
+ raise SystemExit(130) from None