deepagents-cli 0.0.59__tar.gz → 0.1.1__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.
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/CHANGELOG.md +15 -0
- deepagents_cli-0.1.1/DEV.md +44 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/Makefile +3 -12
- deepagents_cli-0.1.1/PKG-INFO +99 -0
- deepagents_cli-0.1.1/README.md +49 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/THREAT_MODEL.md +9 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/__init__.py +9 -7
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/__main__.py +1 -1
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/_version.py +1 -1
- deepagents_cli-0.1.1/deepagents_cli/config.py +128 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/deploy/commands.py +24 -1
- deepagents_cli-0.1.1/deepagents_cli/main.py +167 -0
- deepagents_cli-0.1.1/deepagents_cli/model_config.py +55 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/package-lock.json +3 -3
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/pyproject.toml +7 -96
- deepagents_cli-0.1.1/tests/unit_tests/conftest.py +32 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/tests/unit_tests/deploy/test_commands.py +28 -0
- deepagents_cli-0.1.1/tests/unit_tests/test_version.py +49 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/uv.lock +9 -2749
- deepagents_cli-0.0.59/DEV.md +0 -92
- deepagents_cli-0.0.59/PKG-INFO +0 -204
- deepagents_cli-0.0.59/README.md +0 -71
- deepagents_cli-0.0.59/deepagents_cli/_ask_user_types.py +0 -90
- deepagents_cli-0.0.59/deepagents_cli/_cli_context.py +0 -27
- deepagents_cli-0.0.59/deepagents_cli/_constants.py +0 -14
- deepagents_cli-0.0.59/deepagents_cli/_debug.py +0 -52
- deepagents_cli-0.0.59/deepagents_cli/_env_vars.py +0 -173
- deepagents_cli-0.0.59/deepagents_cli/_git.py +0 -236
- deepagents_cli-0.0.59/deepagents_cli/_server_config.py +0 -351
- deepagents_cli-0.0.59/deepagents_cli/_session_stats.py +0 -114
- deepagents_cli-0.0.59/deepagents_cli/_testing_models.py +0 -144
- deepagents_cli-0.0.59/deepagents_cli/_textual_patches.py +0 -66
- deepagents_cli-0.0.59/deepagents_cli/agent.py +0 -1286
- deepagents_cli-0.0.59/deepagents_cli/app.py +0 -8704
- deepagents_cli-0.0.59/deepagents_cli/app.tcss +0 -334
- deepagents_cli-0.0.59/deepagents_cli/ask_user.py +0 -301
- deepagents_cli-0.0.59/deepagents_cli/auth_store.py +0 -363
- deepagents_cli-0.0.59/deepagents_cli/built_in_skills/__init__.py +0 -5
- deepagents_cli-0.0.59/deepagents_cli/built_in_skills/remember/SKILL.md +0 -118
- deepagents_cli-0.0.59/deepagents_cli/built_in_skills/skill-creator/SKILL.md +0 -383
- deepagents_cli-0.0.59/deepagents_cli/built_in_skills/skill-creator/scripts/init_skill.py +0 -366
- deepagents_cli-0.0.59/deepagents_cli/built_in_skills/skill-creator/scripts/quick_validate.py +0 -158
- deepagents_cli-0.0.59/deepagents_cli/clipboard.py +0 -155
- deepagents_cli-0.0.59/deepagents_cli/command_registry.py +0 -358
- deepagents_cli-0.0.59/deepagents_cli/config.py +0 -2567
- deepagents_cli-0.0.59/deepagents_cli/configurable_model.py +0 -201
- deepagents_cli-0.0.59/deepagents_cli/default_agent_prompt.md +0 -12
- deepagents_cli-0.0.59/deepagents_cli/editor.py +0 -142
- deepagents_cli-0.0.59/deepagents_cli/event_bus.py +0 -411
- deepagents_cli-0.0.59/deepagents_cli/extras_info.py +0 -260
- deepagents_cli-0.0.59/deepagents_cli/file_ops.py +0 -473
- deepagents_cli-0.0.59/deepagents_cli/formatting.py +0 -28
- deepagents_cli-0.0.59/deepagents_cli/hooks.py +0 -209
- deepagents_cli-0.0.59/deepagents_cli/input.py +0 -787
- deepagents_cli-0.0.59/deepagents_cli/integrations/__init__.py +0 -1
- deepagents_cli-0.0.59/deepagents_cli/integrations/sandbox_factory.py +0 -899
- deepagents_cli-0.0.59/deepagents_cli/integrations/sandbox_provider.py +0 -71
- deepagents_cli-0.0.59/deepagents_cli/iterm_cursor_guide.py +0 -176
- deepagents_cli-0.0.59/deepagents_cli/local_context.py +0 -738
- deepagents_cli-0.0.59/deepagents_cli/main.py +0 -2258
- deepagents_cli-0.0.59/deepagents_cli/mcp_auth.py +0 -712
- deepagents_cli-0.0.59/deepagents_cli/mcp_commands.py +0 -204
- deepagents_cli-0.0.59/deepagents_cli/mcp_providers/__init__.py +0 -23
- deepagents_cli-0.0.59/deepagents_cli/mcp_providers/_registry.py +0 -39
- deepagents_cli-0.0.59/deepagents_cli/mcp_providers/base.py +0 -99
- deepagents_cli-0.0.59/deepagents_cli/mcp_providers/github.py +0 -91
- deepagents_cli-0.0.59/deepagents_cli/mcp_providers/slack.py +0 -130
- deepagents_cli-0.0.59/deepagents_cli/mcp_tools.py +0 -1532
- deepagents_cli-0.0.59/deepagents_cli/mcp_trust.py +0 -167
- deepagents_cli-0.0.59/deepagents_cli/media_utils.py +0 -478
- deepagents_cli-0.0.59/deepagents_cli/model_config.py +0 -2749
- deepagents_cli-0.0.59/deepagents_cli/non_interactive.py +0 -1197
- deepagents_cli-0.0.59/deepagents_cli/notifications.py +0 -244
- deepagents_cli-0.0.59/deepagents_cli/offload.py +0 -402
- deepagents_cli-0.0.59/deepagents_cli/onboarding.py +0 -188
- deepagents_cli-0.0.59/deepagents_cli/output.py +0 -69
- deepagents_cli-0.0.59/deepagents_cli/project_utils.py +0 -231
- deepagents_cli-0.0.59/deepagents_cli/remote_client.py +0 -537
- deepagents_cli-0.0.59/deepagents_cli/server.py +0 -558
- deepagents_cli-0.0.59/deepagents_cli/server_graph.py +0 -230
- deepagents_cli-0.0.59/deepagents_cli/server_manager.py +0 -428
- deepagents_cli-0.0.59/deepagents_cli/sessions.py +0 -1302
- deepagents_cli-0.0.59/deepagents_cli/skills/__init__.py +0 -18
- deepagents_cli-0.0.59/deepagents_cli/skills/commands.py +0 -1090
- deepagents_cli-0.0.59/deepagents_cli/skills/invocation.py +0 -103
- deepagents_cli-0.0.59/deepagents_cli/skills/load.py +0 -196
- deepagents_cli-0.0.59/deepagents_cli/state_migration.py +0 -136
- deepagents_cli-0.0.59/deepagents_cli/subagents.py +0 -173
- deepagents_cli-0.0.59/deepagents_cli/system_prompt.md +0 -243
- deepagents_cli-0.0.59/deepagents_cli/terminal_capabilities.py +0 -115
- deepagents_cli-0.0.59/deepagents_cli/terminal_escape.py +0 -287
- deepagents_cli-0.0.59/deepagents_cli/textual_adapter.py +0 -1544
- deepagents_cli-0.0.59/deepagents_cli/theme.py +0 -867
- deepagents_cli-0.0.59/deepagents_cli/token_state.py +0 -31
- deepagents_cli-0.0.59/deepagents_cli/tool_display.py +0 -298
- deepagents_cli-0.0.59/deepagents_cli/tools.py +0 -167
- deepagents_cli-0.0.59/deepagents_cli/ui.py +0 -546
- deepagents_cli-0.0.59/deepagents_cli/unicode_security.py +0 -516
- deepagents_cli-0.0.59/deepagents_cli/update_check.py +0 -977
- deepagents_cli-0.0.59/deepagents_cli/widgets/__init__.py +0 -9
- deepagents_cli-0.0.59/deepagents_cli/widgets/_links.py +0 -96
- deepagents_cli-0.0.59/deepagents_cli/widgets/agent_selector.py +0 -420
- deepagents_cli-0.0.59/deepagents_cli/widgets/approval.py +0 -599
- deepagents_cli-0.0.59/deepagents_cli/widgets/ask_user.py +0 -485
- deepagents_cli-0.0.59/deepagents_cli/widgets/auth.py +0 -633
- deepagents_cli-0.0.59/deepagents_cli/widgets/autocomplete.py +0 -703
- deepagents_cli-0.0.59/deepagents_cli/widgets/chat_input.py +0 -2181
- deepagents_cli-0.0.59/deepagents_cli/widgets/diff.py +0 -248
- deepagents_cli-0.0.59/deepagents_cli/widgets/history.py +0 -188
- deepagents_cli-0.0.59/deepagents_cli/widgets/launch_init.py +0 -363
- deepagents_cli-0.0.59/deepagents_cli/widgets/loading.py +0 -208
- deepagents_cli-0.0.59/deepagents_cli/widgets/mcp_viewer.py +0 -432
- deepagents_cli-0.0.59/deepagents_cli/widgets/message_store.py +0 -742
- deepagents_cli-0.0.59/deepagents_cli/widgets/messages.py +0 -2142
- deepagents_cli-0.0.59/deepagents_cli/widgets/model_selector.py +0 -1177
- deepagents_cli-0.0.59/deepagents_cli/widgets/notification_center.py +0 -399
- deepagents_cli-0.0.59/deepagents_cli/widgets/notification_detail.py +0 -257
- deepagents_cli-0.0.59/deepagents_cli/widgets/notification_settings.py +0 -170
- deepagents_cli-0.0.59/deepagents_cli/widgets/status.py +0 -457
- deepagents_cli-0.0.59/deepagents_cli/widgets/theme_selector.py +0 -347
- deepagents_cli-0.0.59/deepagents_cli/widgets/thread_selector.py +0 -2228
- deepagents_cli-0.0.59/deepagents_cli/widgets/tool_renderers.py +0 -148
- deepagents_cli-0.0.59/deepagents_cli/widgets/tool_widgets.py +0 -274
- deepagents_cli-0.0.59/deepagents_cli/widgets/update_available.py +0 -311
- deepagents_cli-0.0.59/deepagents_cli/widgets/update_progress.py +0 -279
- deepagents_cli-0.0.59/deepagents_cli/widgets/welcome.py +0 -490
- deepagents_cli-0.0.59/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -185
- deepagents_cli-0.0.59/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -339
- deepagents_cli-0.0.59/tests/integration_tests/test_acp_mode.py +0 -117
- deepagents_cli-0.0.59/tests/integration_tests/test_compact_resume.py +0 -204
- deepagents_cli-0.0.59/tests/integration_tests/test_sandbox_factory.py +0 -349
- deepagents_cli-0.0.59/tests/integration_tests/test_sandbox_operations.py +0 -1179
- deepagents_cli-0.0.59/tests/unit_tests/conftest.py +0 -168
- deepagents_cli-0.0.59/tests/unit_tests/deploy/__init__.py +0 -0
- deepagents_cli-0.0.59/tests/unit_tests/skills/__init__.py +0 -1
- deepagents_cli-0.0.59/tests/unit_tests/skills/test_commands.py +0 -1338
- deepagents_cli-0.0.59/tests/unit_tests/skills/test_load.py +0 -852
- deepagents_cli-0.0.59/tests/unit_tests/skills/test_skills_json.py +0 -154
- deepagents_cli-0.0.59/tests/unit_tests/test_agent.py +0 -2406
- deepagents_cli-0.0.59/tests/unit_tests/test_agent_friendly.py +0 -605
- deepagents_cli-0.0.59/tests/unit_tests/test_agent_selector.py +0 -466
- deepagents_cli-0.0.59/tests/unit_tests/test_app.py +0 -8292
- deepagents_cli-0.0.59/tests/unit_tests/test_approval.py +0 -641
- deepagents_cli-0.0.59/tests/unit_tests/test_args.py +0 -581
- deepagents_cli-0.0.59/tests/unit_tests/test_ask_user.py +0 -779
- deepagents_cli-0.0.59/tests/unit_tests/test_ask_user_middleware.py +0 -221
- deepagents_cli-0.0.59/tests/unit_tests/test_auth_store.py +0 -266
- deepagents_cli-0.0.59/tests/unit_tests/test_auth_widgets.py +0 -390
- deepagents_cli-0.0.59/tests/unit_tests/test_autocomplete.py +0 -592
- deepagents_cli-0.0.59/tests/unit_tests/test_charset.py +0 -360
- deepagents_cli-0.0.59/tests/unit_tests/test_chat_input.py +0 -2869
- deepagents_cli-0.0.59/tests/unit_tests/test_clipboard.py +0 -274
- deepagents_cli-0.0.59/tests/unit_tests/test_command_registry.py +0 -221
- deepagents_cli-0.0.59/tests/unit_tests/test_compact_tool.py +0 -40
- deepagents_cli-0.0.59/tests/unit_tests/test_config.py +0 -3004
- deepagents_cli-0.0.59/tests/unit_tests/test_configurable_model.py +0 -609
- deepagents_cli-0.0.59/tests/unit_tests/test_debug.py +0 -69
- deepagents_cli-0.0.59/tests/unit_tests/test_editor.py +0 -274
- deepagents_cli-0.0.59/tests/unit_tests/test_end_to_end.py +0 -435
- deepagents_cli-0.0.59/tests/unit_tests/test_env_vars.py +0 -135
- deepagents_cli-0.0.59/tests/unit_tests/test_event_bus.py +0 -445
- deepagents_cli-0.0.59/tests/unit_tests/test_exception_handling.py +0 -244
- deepagents_cli-0.0.59/tests/unit_tests/test_extras_info.py +0 -240
- deepagents_cli-0.0.59/tests/unit_tests/test_file_ops.py +0 -120
- deepagents_cli-0.0.59/tests/unit_tests/test_formatting.py +0 -66
- deepagents_cli-0.0.59/tests/unit_tests/test_git.py +0 -264
- deepagents_cli-0.0.59/tests/unit_tests/test_history.py +0 -233
- deepagents_cli-0.0.59/tests/unit_tests/test_hooks.py +0 -357
- deepagents_cli-0.0.59/tests/unit_tests/test_imports.py +0 -29
- deepagents_cli-0.0.59/tests/unit_tests/test_input_parsing.py +0 -414
- deepagents_cli-0.0.59/tests/unit_tests/test_iterm_cursor_guide.py +0 -256
- deepagents_cli-0.0.59/tests/unit_tests/test_launch_init.py +0 -336
- deepagents_cli-0.0.59/tests/unit_tests/test_links.py +0 -42
- deepagents_cli-0.0.59/tests/unit_tests/test_loading.py +0 -86
- deepagents_cli-0.0.59/tests/unit_tests/test_local_context.py +0 -1541
- deepagents_cli-0.0.59/tests/unit_tests/test_main.py +0 -1212
- deepagents_cli-0.0.59/tests/unit_tests/test_main_acp_mode.py +0 -186
- deepagents_cli-0.0.59/tests/unit_tests/test_main_args.py +0 -1032
- deepagents_cli-0.0.59/tests/unit_tests/test_mcp_auth.py +0 -967
- deepagents_cli-0.0.59/tests/unit_tests/test_mcp_commands.py +0 -332
- deepagents_cli-0.0.59/tests/unit_tests/test_mcp_tools.py +0 -2277
- deepagents_cli-0.0.59/tests/unit_tests/test_mcp_trust.py +0 -112
- deepagents_cli-0.0.59/tests/unit_tests/test_mcp_viewer.py +0 -197
- deepagents_cli-0.0.59/tests/unit_tests/test_media_utils.py +0 -733
- deepagents_cli-0.0.59/tests/unit_tests/test_message_store.py +0 -867
- deepagents_cli-0.0.59/tests/unit_tests/test_messages.py +0 -1342
- deepagents_cli-0.0.59/tests/unit_tests/test_model_config.py +0 -4341
- deepagents_cli-0.0.59/tests/unit_tests/test_model_selector.py +0 -1314
- deepagents_cli-0.0.59/tests/unit_tests/test_model_switch.py +0 -1122
- deepagents_cli-0.0.59/tests/unit_tests/test_non_interactive.py +0 -1562
- deepagents_cli-0.0.59/tests/unit_tests/test_notification_center.py +0 -312
- deepagents_cli-0.0.59/tests/unit_tests/test_notification_detail.py +0 -133
- deepagents_cli-0.0.59/tests/unit_tests/test_notifications.py +0 -204
- deepagents_cli-0.0.59/tests/unit_tests/test_offload.py +0 -1510
- deepagents_cli-0.0.59/tests/unit_tests/test_offload_dict_messages.py +0 -335
- deepagents_cli-0.0.59/tests/unit_tests/test_onboarding.py +0 -241
- deepagents_cli-0.0.59/tests/unit_tests/test_output.py +0 -62
- deepagents_cli-0.0.59/tests/unit_tests/test_reload.py +0 -632
- deepagents_cli-0.0.59/tests/unit_tests/test_remote_client.py +0 -615
- deepagents_cli-0.0.59/tests/unit_tests/test_sandbox_factory.py +0 -505
- deepagents_cli-0.0.59/tests/unit_tests/test_server.py +0 -321
- deepagents_cli-0.0.59/tests/unit_tests/test_server_config.py +0 -217
- deepagents_cli-0.0.59/tests/unit_tests/test_server_graph.py +0 -139
- deepagents_cli-0.0.59/tests/unit_tests/test_server_helpers.py +0 -95
- deepagents_cli-0.0.59/tests/unit_tests/test_server_manager.py +0 -340
- deepagents_cli-0.0.59/tests/unit_tests/test_session_stats.py +0 -151
- deepagents_cli-0.0.59/tests/unit_tests/test_sessions.py +0 -1860
- deepagents_cli-0.0.59/tests/unit_tests/test_shell_allow_list.py +0 -719
- deepagents_cli-0.0.59/tests/unit_tests/test_skill_invocation.py +0 -596
- deepagents_cli-0.0.59/tests/unit_tests/test_startup_fast_paths.py +0 -213
- deepagents_cli-0.0.59/tests/unit_tests/test_state_migration.py +0 -204
- deepagents_cli-0.0.59/tests/unit_tests/test_status.py +0 -430
- deepagents_cli-0.0.59/tests/unit_tests/test_subagents.py +0 -431
- deepagents_cli-0.0.59/tests/unit_tests/test_terminal_capabilities.py +0 -203
- deepagents_cli-0.0.59/tests/unit_tests/test_terminal_escape.py +0 -377
- deepagents_cli-0.0.59/tests/unit_tests/test_textual_adapter.py +0 -2334
- deepagents_cli-0.0.59/tests/unit_tests/test_textual_patches.py +0 -92
- deepagents_cli-0.0.59/tests/unit_tests/test_theme.py +0 -2543
- deepagents_cli-0.0.59/tests/unit_tests/test_thread_selector.py +0 -3374
- deepagents_cli-0.0.59/tests/unit_tests/test_token_tracker.py +0 -150
- deepagents_cli-0.0.59/tests/unit_tests/test_tool_display.py +0 -470
- deepagents_cli-0.0.59/tests/unit_tests/test_ui.py +0 -388
- deepagents_cli-0.0.59/tests/unit_tests/test_unicode_security.py +0 -246
- deepagents_cli-0.0.59/tests/unit_tests/test_update_available.py +0 -183
- deepagents_cli-0.0.59/tests/unit_tests/test_update_check.py +0 -1424
- deepagents_cli-0.0.59/tests/unit_tests/test_update_progress.py +0 -116
- deepagents_cli-0.0.59/tests/unit_tests/test_version.py +0 -396
- deepagents_cli-0.0.59/tests/unit_tests/test_welcome.py +0 -665
- deepagents_cli-0.0.59/tests/unit_tests/tools/__init__.py +0 -0
- deepagents_cli-0.0.59/tests/unit_tests/tools/test_fetch_url.py +0 -72
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/.gitignore +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/deploy/__init__.py +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/deploy/bundler.py +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/deploy/config.py +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/deploy/context_hub.py +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/deploy/frontend_dist/assets/anonymous-B9UzAXQd.js +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/deploy/frontend_dist/assets/clerk-5xHgyQyG.js +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/deploy/frontend_dist/assets/highlighted-body-OFNGDK62-rX-7qT8o.js +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/deploy/frontend_dist/assets/index-DM3gptpu.js +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/deploy/frontend_dist/assets/index-Ddy7F6KI.css +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/deploy/frontend_dist/assets/supabase-S6NACDgm.js +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/deploy/frontend_dist/index.html +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/deploy/frontend_dist/logo-dark.svg +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/deploy/frontend_dist/logo-light.svg +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/deploy/templates.py +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/deepagents_cli/py.typed +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/examples/deploy-content-writer/.env.example +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/examples/deploy-content-writer/skills/blog-post/SKILL.md +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/examples/deploy-content-writer/skills/social-media/SKILL.md +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/examples/deploy-content-writer/user/context.md +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/examples/deploy-content-writer/user/preferences.md +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/.nvmrc +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/index.html +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/package.json +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/postcss.config.js +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/public/logo-dark.svg +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/public/logo-light.svg +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/App.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/ThemeProvider.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/auth/anonymous.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/auth/clerk.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/auth/loader.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/auth/supabase.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/auth/types.ts +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/components/AppHeader.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/components/FilePanels.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/components/MessageList.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/components/SubagentActivity.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/components/ThreadPicker.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/components/TodosPanel.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/components/ToolCallCard.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/components/toolcalls/FileToolCard.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/components/toolcalls/SearchCard.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/components/toolcalls/ThinkCard.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/components/toolcalls/TodosCard.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/components/toolcalls/index.ts +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/constants.ts +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/index.css +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/main.tsx +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/runtimeConfig.ts +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/types.ts +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/src/vite-env.d.ts +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/tsconfig.json +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/frontend/vite.config.ts +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/images/cli.png +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/scripts/check_imports.py +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/scripts/debug_server.sh +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/scripts/install.sh +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/tests/README.md +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/tests/integration_tests/__init__.py +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/tests/integration_tests/conftest.py +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/tests/integration_tests/test_context_hub.py +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/tests/integration_tests/test_deploy_hub.py +0 -0
- {deepagents_cli-0.0.59/tests/integration_tests/benchmarks → deepagents_cli-0.1.1/tests/unit_tests}/__init__.py +0 -0
- {deepagents_cli-0.0.59/tests/unit_tests → deepagents_cli-0.1.1/tests/unit_tests/deploy}/__init__.py +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/tests/unit_tests/deploy/test_bundler.py +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/tests/unit_tests/deploy/test_config.py +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/tests/unit_tests/deploy/test_context_hub.py +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/tests/unit_tests/deploy/test_frontend_bundle.py +0 -0
- {deepagents_cli-0.0.59 → deepagents_cli-0.1.1}/tests/unit_tests/deploy/test_frontend_config.py +0 -0
|
@@ -1,5 +1,20 @@
|
|
|
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.1](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.1.0...deepagents-cli==0.1.1) (2026-05-18)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* Add `--host` option to `deepagents dev` command ([#3444](https://github.com/langchain-ai/deepagents/issues/3444)) ([0bb1e74](https://github.com/langchain-ai/deepagents/commit/0bb1e74bba8097b38f204e3db6e6ebad7e0f5317))
|
|
11
|
+
|
|
12
|
+
## [0.1.0](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.59...deepagents-cli==0.1.0) (2026-05-16)
|
|
13
|
+
|
|
14
|
+
### ⚠ BREAKING CHANGES
|
|
15
|
+
|
|
16
|
+
* 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`.
|
|
17
|
+
|
|
3
18
|
## [0.0.59](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.58...deepagents-cli==0.0.59) (2026-05-12)
|
|
4
19
|
|
|
5
20
|
### 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
|
|
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 --
|
|
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
|
|
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.1
|
|
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
|
+
[](https://pypi.org/project/deepagents-cli/#history)
|
|
54
|
+
[](https://opensource.org/licenses/MIT)
|
|
55
|
+
[](https://pypistats.org/packages/deepagents-cli)
|
|
56
|
+
[](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
|
+
[](https://pypi.org/project/deepagents-cli/#history)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
[](https://pypistats.org/packages/deepagents-cli)
|
|
6
|
+
[](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 -
|
|
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
|
|
22
|
+
"""Lazy import for `cli_main` to keep `import deepagents_cli` cheap.
|
|
20
23
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
imported directly.
|
|
24
|
+
Args:
|
|
25
|
+
name: Attribute being looked up on the package.
|
|
24
26
|
|
|
25
27
|
Returns:
|
|
26
|
-
The requested
|
|
28
|
+
The requested attribute (only `cli_main` is provided lazily).
|
|
27
29
|
|
|
28
30
|
Raises:
|
|
29
|
-
AttributeError: If
|
|
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
|
|
@@ -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.
|
|
5
|
+
__version__ = "0.1.1" # 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",
|
|
@@ -82,6 +84,15 @@ def setup_deploy_parsers(
|
|
|
82
84
|
default=True,
|
|
83
85
|
help="Pass --allow-blocking to langgraph dev (default: enabled)",
|
|
84
86
|
)
|
|
87
|
+
dev_parser.add_argument(
|
|
88
|
+
"--host",
|
|
89
|
+
type=str,
|
|
90
|
+
default="127.0.0.1",
|
|
91
|
+
help=(
|
|
92
|
+
"Network interface to bind the dev server "
|
|
93
|
+
"(default: 127.0.0.1; use 0.0.0.0 for all interfaces)"
|
|
94
|
+
),
|
|
95
|
+
)
|
|
85
96
|
|
|
86
97
|
# deepagents deploy
|
|
87
98
|
deploy_parser = subparsers.add_parser(
|
|
@@ -93,6 +104,7 @@ def setup_deploy_parsers(
|
|
|
93
104
|
"-h",
|
|
94
105
|
"--help",
|
|
95
106
|
action=make_help_action(lambda: deploy_parser.print_help()),
|
|
107
|
+
help="show this help message and exit",
|
|
96
108
|
)
|
|
97
109
|
deploy_parser.add_argument(
|
|
98
110
|
"--config",
|
|
@@ -135,6 +147,7 @@ def execute_dev_command(args: argparse.Namespace) -> None:
|
|
|
135
147
|
_dev(
|
|
136
148
|
config_path=args.config,
|
|
137
149
|
port=args.port,
|
|
150
|
+
host=args.host,
|
|
138
151
|
allow_blocking=args.allow_blocking,
|
|
139
152
|
)
|
|
140
153
|
|
|
@@ -340,6 +353,7 @@ def _dev(
|
|
|
340
353
|
*,
|
|
341
354
|
config_path: str | None,
|
|
342
355
|
port: int,
|
|
356
|
+
host: str = "127.0.0.1",
|
|
343
357
|
allow_blocking: bool,
|
|
344
358
|
) -> None:
|
|
345
359
|
"""Bundle the project and run a local `langgraph dev` server.
|
|
@@ -353,6 +367,7 @@ def _dev(
|
|
|
353
367
|
Args:
|
|
354
368
|
config_path: Path to `deepagents.toml`, or `None` for default.
|
|
355
369
|
port: Local port for the dev server.
|
|
370
|
+
host: Network interface to bind (default: 127.0.0.1).
|
|
356
371
|
allow_blocking: Pass `--allow-blocking` to `langgraph dev` so
|
|
357
372
|
sync HTTP calls inside the graph (e.g. the LangSmith sandbox
|
|
358
373
|
client) don't trigger blockbuster errors.
|
|
@@ -410,13 +425,21 @@ def _dev(
|
|
|
410
425
|
"langgraph",
|
|
411
426
|
"dev",
|
|
412
427
|
"--no-browser",
|
|
428
|
+
"--host",
|
|
429
|
+
host,
|
|
413
430
|
"--port",
|
|
414
431
|
str(port),
|
|
415
432
|
]
|
|
416
433
|
if allow_blocking:
|
|
417
434
|
cmd.append("--allow-blocking")
|
|
418
435
|
|
|
419
|
-
|
|
436
|
+
if host == "0.0.0.0":
|
|
437
|
+
print(
|
|
438
|
+
f"\nStarting langgraph dev on http://localhost:{port} "
|
|
439
|
+
"(bound to 0.0.0.0)"
|
|
440
|
+
)
|
|
441
|
+
else:
|
|
442
|
+
print(f"\nStarting langgraph dev on http://{host}:{port}")
|
|
420
443
|
print(f"Build directory: {build_dir}")
|
|
421
444
|
print(f"Running: {' '.join(cmd)}\n")
|
|
422
445
|
|