deepagents-code 0.0.1__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.
- deepagents_code-0.1.0/CHANGELOG.md +10 -0
- deepagents_code-0.1.0/DEV.md +92 -0
- deepagents_code-0.1.0/Makefile +91 -0
- deepagents_code-0.1.0/PKG-INFO +204 -0
- deepagents_code-0.1.0/README.md +71 -0
- deepagents_code-0.1.0/THREAT_MODEL.md +478 -0
- deepagents_code-0.1.0/deepagents_code/__init__.py +36 -0
- deepagents_code-0.1.0/deepagents_code/__main__.py +6 -0
- deepagents_code-0.1.0/deepagents_code/_ask_user_types.py +90 -0
- deepagents_code-0.1.0/deepagents_code/_cli_context.py +27 -0
- deepagents_code-0.1.0/deepagents_code/_constants.py +14 -0
- deepagents_code-0.1.0/deepagents_code/_debug.py +52 -0
- deepagents_code-0.1.0/deepagents_code/_env_vars.py +182 -0
- deepagents_code-0.1.0/deepagents_code/_git.py +236 -0
- deepagents_code-0.1.0/deepagents_code/_server_config.py +399 -0
- deepagents_code-0.1.0/deepagents_code/_session_stats.py +114 -0
- deepagents_code-0.1.0/deepagents_code/_testing_models.py +144 -0
- deepagents_code-0.1.0/deepagents_code/_textual_patches.py +66 -0
- deepagents_code-0.1.0/deepagents_code/_version.py +26 -0
- deepagents_code-0.1.0/deepagents_code/agent.py +1286 -0
- deepagents_code-0.1.0/deepagents_code/app.py +8709 -0
- deepagents_code-0.1.0/deepagents_code/app.tcss +334 -0
- deepagents_code-0.1.0/deepagents_code/ask_user.py +301 -0
- deepagents_code-0.1.0/deepagents_code/auth_store.py +363 -0
- deepagents_code-0.1.0/deepagents_code/built_in_skills/__init__.py +5 -0
- deepagents_code-0.1.0/deepagents_code/built_in_skills/remember/SKILL.md +118 -0
- deepagents_code-0.1.0/deepagents_code/built_in_skills/skill-creator/SKILL.md +383 -0
- deepagents_code-0.1.0/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +366 -0
- deepagents_code-0.1.0/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +158 -0
- deepagents_code-0.1.0/deepagents_code/clipboard.py +155 -0
- deepagents_code-0.1.0/deepagents_code/command_registry.py +358 -0
- deepagents_code-0.1.0/deepagents_code/config.py +2567 -0
- deepagents_code-0.1.0/deepagents_code/configurable_model.py +201 -0
- deepagents_code-0.1.0/deepagents_code/default_agent_prompt.md +12 -0
- deepagents_code-0.1.0/deepagents_code/editor.py +142 -0
- deepagents_code-0.1.0/deepagents_code/event_bus.py +411 -0
- deepagents_code-0.1.0/deepagents_code/extras_info.py +260 -0
- deepagents_code-0.1.0/deepagents_code/file_ops.py +473 -0
- deepagents_code-0.1.0/deepagents_code/formatting.py +28 -0
- deepagents_code-0.1.0/deepagents_code/hooks.py +209 -0
- deepagents_code-0.1.0/deepagents_code/input.py +787 -0
- deepagents_code-0.1.0/deepagents_code/integrations/__init__.py +1 -0
- deepagents_code-0.1.0/deepagents_code/integrations/sandbox_factory.py +899 -0
- deepagents_code-0.1.0/deepagents_code/integrations/sandbox_provider.py +71 -0
- deepagents_code-0.1.0/deepagents_code/iterm_cursor_guide.py +176 -0
- deepagents_code-0.1.0/deepagents_code/local_context.py +738 -0
- deepagents_code-0.1.0/deepagents_code/main.py +2241 -0
- deepagents_code-0.1.0/deepagents_code/mcp_auth.py +712 -0
- deepagents_code-0.1.0/deepagents_code/mcp_commands.py +204 -0
- deepagents_code-0.1.0/deepagents_code/mcp_providers/__init__.py +23 -0
- deepagents_code-0.1.0/deepagents_code/mcp_providers/_registry.py +39 -0
- deepagents_code-0.1.0/deepagents_code/mcp_providers/base.py +99 -0
- deepagents_code-0.1.0/deepagents_code/mcp_providers/github.py +91 -0
- deepagents_code-0.1.0/deepagents_code/mcp_providers/slack.py +130 -0
- deepagents_code-0.1.0/deepagents_code/mcp_tools.py +1532 -0
- deepagents_code-0.1.0/deepagents_code/mcp_trust.py +167 -0
- deepagents_code-0.1.0/deepagents_code/media_utils.py +478 -0
- deepagents_code-0.1.0/deepagents_code/model_config.py +2749 -0
- deepagents_code-0.1.0/deepagents_code/non_interactive.py +1197 -0
- deepagents_code-0.1.0/deepagents_code/notifications.py +244 -0
- deepagents_code-0.1.0/deepagents_code/offload.py +402 -0
- deepagents_code-0.1.0/deepagents_code/onboarding.py +188 -0
- deepagents_code-0.1.0/deepagents_code/output.py +69 -0
- deepagents_code-0.1.0/deepagents_code/project_utils.py +231 -0
- deepagents_code-0.1.0/deepagents_code/remote_client.py +537 -0
- deepagents_code-0.1.0/deepagents_code/server.py +558 -0
- deepagents_code-0.1.0/deepagents_code/server_graph.py +230 -0
- deepagents_code-0.1.0/deepagents_code/server_manager.py +454 -0
- deepagents_code-0.1.0/deepagents_code/sessions.py +1302 -0
- deepagents_code-0.1.0/deepagents_code/skills/__init__.py +18 -0
- deepagents_code-0.1.0/deepagents_code/skills/commands.py +1083 -0
- deepagents_code-0.1.0/deepagents_code/skills/invocation.py +103 -0
- deepagents_code-0.1.0/deepagents_code/skills/load.py +196 -0
- deepagents_code-0.1.0/deepagents_code/state_migration.py +136 -0
- deepagents_code-0.1.0/deepagents_code/subagents.py +173 -0
- deepagents_code-0.1.0/deepagents_code/system_prompt.md +243 -0
- deepagents_code-0.1.0/deepagents_code/terminal_capabilities.py +115 -0
- deepagents_code-0.1.0/deepagents_code/terminal_escape.py +287 -0
- deepagents_code-0.1.0/deepagents_code/textual_adapter.py +1544 -0
- deepagents_code-0.1.0/deepagents_code/theme.py +867 -0
- deepagents_code-0.1.0/deepagents_code/token_state.py +31 -0
- deepagents_code-0.1.0/deepagents_code/tool_display.py +298 -0
- deepagents_code-0.1.0/deepagents_code/tools.py +159 -0
- deepagents_code-0.1.0/deepagents_code/ui.py +537 -0
- deepagents_code-0.1.0/deepagents_code/unicode_security.py +516 -0
- deepagents_code-0.1.0/deepagents_code/update_check.py +977 -0
- deepagents_code-0.1.0/deepagents_code/widgets/__init__.py +9 -0
- deepagents_code-0.1.0/deepagents_code/widgets/_links.py +96 -0
- deepagents_code-0.1.0/deepagents_code/widgets/agent_selector.py +420 -0
- deepagents_code-0.1.0/deepagents_code/widgets/approval.py +599 -0
- deepagents_code-0.1.0/deepagents_code/widgets/ask_user.py +485 -0
- deepagents_code-0.1.0/deepagents_code/widgets/auth.py +632 -0
- deepagents_code-0.1.0/deepagents_code/widgets/autocomplete.py +703 -0
- deepagents_code-0.1.0/deepagents_code/widgets/chat_input.py +2181 -0
- deepagents_code-0.1.0/deepagents_code/widgets/diff.py +248 -0
- deepagents_code-0.1.0/deepagents_code/widgets/history.py +188 -0
- deepagents_code-0.1.0/deepagents_code/widgets/launch_init.py +363 -0
- deepagents_code-0.1.0/deepagents_code/widgets/loading.py +208 -0
- deepagents_code-0.1.0/deepagents_code/widgets/mcp_viewer.py +432 -0
- deepagents_code-0.1.0/deepagents_code/widgets/message_store.py +742 -0
- deepagents_code-0.1.0/deepagents_code/widgets/messages.py +2142 -0
- deepagents_code-0.1.0/deepagents_code/widgets/model_selector.py +1177 -0
- deepagents_code-0.1.0/deepagents_code/widgets/notification_center.py +399 -0
- deepagents_code-0.1.0/deepagents_code/widgets/notification_detail.py +257 -0
- deepagents_code-0.1.0/deepagents_code/widgets/notification_settings.py +170 -0
- deepagents_code-0.1.0/deepagents_code/widgets/status.py +457 -0
- deepagents_code-0.1.0/deepagents_code/widgets/theme_selector.py +347 -0
- deepagents_code-0.1.0/deepagents_code/widgets/thread_selector.py +2227 -0
- deepagents_code-0.1.0/deepagents_code/widgets/tool_renderers.py +148 -0
- deepagents_code-0.1.0/deepagents_code/widgets/tool_widgets.py +274 -0
- deepagents_code-0.1.0/deepagents_code/widgets/update_available.py +311 -0
- deepagents_code-0.1.0/deepagents_code/widgets/update_progress.py +281 -0
- deepagents_code-0.1.0/deepagents_code/widgets/welcome.py +489 -0
- deepagents_code-0.1.0/examples/skills/arxiv-search/SKILL.md +33 -0
- deepagents_code-0.1.0/examples/skills/arxiv-search/arxiv_search.py +61 -0
- deepagents_code-0.1.0/examples/skills/langgraph-docs/SKILL.md +28 -0
- deepagents_code-0.1.0/examples/skills/skill-creator/SKILL.md +385 -0
- deepagents_code-0.1.0/examples/skills/skill-creator/scripts/init_skill.py +311 -0
- deepagents_code-0.1.0/examples/skills/skill-creator/scripts/quick_validate.py +152 -0
- deepagents_code-0.1.0/examples/skills/web-research/SKILL.md +77 -0
- deepagents_code-0.1.0/images/tui.png +0 -0
- deepagents_code-0.1.0/pyproject.toml +285 -0
- deepagents_code-0.1.0/scripts/check_imports.py +32 -0
- deepagents_code-0.1.0/scripts/debug_server.sh +66 -0
- deepagents_code-0.1.0/scripts/install.sh +439 -0
- deepagents_code-0.1.0/tests/README.md +11 -0
- deepagents_code-0.1.0/tests/integration_tests/__init__.py +0 -0
- deepagents_code-0.1.0/tests/integration_tests/benchmarks/__init__.py +0 -0
- deepagents_code-0.1.0/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +185 -0
- deepagents_code-0.1.0/tests/integration_tests/benchmarks/test_startup_benchmarks.py +339 -0
- deepagents_code-0.1.0/tests/integration_tests/conftest.py +39 -0
- deepagents_code-0.1.0/tests/integration_tests/test_acp_mode.py +117 -0
- deepagents_code-0.1.0/tests/integration_tests/test_compact_resume.py +204 -0
- deepagents_code-0.1.0/tests/integration_tests/test_sandbox_factory.py +349 -0
- deepagents_code-0.1.0/tests/integration_tests/test_sandbox_operations.py +1179 -0
- deepagents_code-0.1.0/tests/unit_tests/__init__.py +0 -0
- deepagents_code-0.1.0/tests/unit_tests/conftest.py +171 -0
- deepagents_code-0.1.0/tests/unit_tests/skills/__init__.py +1 -0
- deepagents_code-0.1.0/tests/unit_tests/skills/test_commands.py +1338 -0
- deepagents_code-0.1.0/tests/unit_tests/skills/test_load.py +856 -0
- deepagents_code-0.1.0/tests/unit_tests/skills/test_skills_json.py +154 -0
- deepagents_code-0.1.0/tests/unit_tests/test_agent.py +2406 -0
- deepagents_code-0.1.0/tests/unit_tests/test_agent_friendly.py +605 -0
- deepagents_code-0.1.0/tests/unit_tests/test_agent_selector.py +466 -0
- deepagents_code-0.1.0/tests/unit_tests/test_app.py +8292 -0
- deepagents_code-0.1.0/tests/unit_tests/test_approval.py +641 -0
- deepagents_code-0.1.0/tests/unit_tests/test_args.py +581 -0
- deepagents_code-0.1.0/tests/unit_tests/test_ask_user.py +779 -0
- deepagents_code-0.1.0/tests/unit_tests/test_ask_user_middleware.py +221 -0
- deepagents_code-0.1.0/tests/unit_tests/test_auth_store.py +266 -0
- deepagents_code-0.1.0/tests/unit_tests/test_auth_widgets.py +390 -0
- deepagents_code-0.1.0/tests/unit_tests/test_autocomplete.py +592 -0
- deepagents_code-0.1.0/tests/unit_tests/test_charset.py +360 -0
- deepagents_code-0.1.0/tests/unit_tests/test_chat_input.py +2869 -0
- deepagents_code-0.1.0/tests/unit_tests/test_clipboard.py +274 -0
- deepagents_code-0.1.0/tests/unit_tests/test_command_registry.py +221 -0
- deepagents_code-0.1.0/tests/unit_tests/test_compact_tool.py +40 -0
- deepagents_code-0.1.0/tests/unit_tests/test_config.py +3004 -0
- deepagents_code-0.1.0/tests/unit_tests/test_configurable_model.py +609 -0
- deepagents_code-0.1.0/tests/unit_tests/test_debug.py +69 -0
- deepagents_code-0.1.0/tests/unit_tests/test_editor.py +274 -0
- deepagents_code-0.1.0/tests/unit_tests/test_end_to_end.py +435 -0
- deepagents_code-0.1.0/tests/unit_tests/test_env_vars.py +135 -0
- deepagents_code-0.1.0/tests/unit_tests/test_event_bus.py +445 -0
- deepagents_code-0.1.0/tests/unit_tests/test_exception_handling.py +252 -0
- deepagents_code-0.1.0/tests/unit_tests/test_extras_info.py +240 -0
- deepagents_code-0.1.0/tests/unit_tests/test_file_ops.py +120 -0
- deepagents_code-0.1.0/tests/unit_tests/test_formatting.py +66 -0
- deepagents_code-0.1.0/tests/unit_tests/test_git.py +264 -0
- deepagents_code-0.1.0/tests/unit_tests/test_history.py +233 -0
- deepagents_code-0.1.0/tests/unit_tests/test_hooks.py +357 -0
- deepagents_code-0.1.0/tests/unit_tests/test_imports.py +29 -0
- deepagents_code-0.1.0/tests/unit_tests/test_input_parsing.py +414 -0
- deepagents_code-0.1.0/tests/unit_tests/test_iterm_cursor_guide.py +256 -0
- deepagents_code-0.1.0/tests/unit_tests/test_launch_init.py +336 -0
- deepagents_code-0.1.0/tests/unit_tests/test_links.py +42 -0
- deepagents_code-0.1.0/tests/unit_tests/test_loading.py +86 -0
- deepagents_code-0.1.0/tests/unit_tests/test_local_context.py +1541 -0
- deepagents_code-0.1.0/tests/unit_tests/test_main.py +1214 -0
- deepagents_code-0.1.0/tests/unit_tests/test_main_acp_mode.py +190 -0
- deepagents_code-0.1.0/tests/unit_tests/test_main_args.py +1032 -0
- deepagents_code-0.1.0/tests/unit_tests/test_mcp_auth.py +967 -0
- deepagents_code-0.1.0/tests/unit_tests/test_mcp_commands.py +332 -0
- deepagents_code-0.1.0/tests/unit_tests/test_mcp_tools.py +2277 -0
- deepagents_code-0.1.0/tests/unit_tests/test_mcp_trust.py +112 -0
- deepagents_code-0.1.0/tests/unit_tests/test_mcp_viewer.py +197 -0
- deepagents_code-0.1.0/tests/unit_tests/test_media_utils.py +733 -0
- deepagents_code-0.1.0/tests/unit_tests/test_message_store.py +867 -0
- deepagents_code-0.1.0/tests/unit_tests/test_messages.py +1342 -0
- deepagents_code-0.1.0/tests/unit_tests/test_model_config.py +4341 -0
- deepagents_code-0.1.0/tests/unit_tests/test_model_selector.py +1314 -0
- deepagents_code-0.1.0/tests/unit_tests/test_model_switch.py +1122 -0
- deepagents_code-0.1.0/tests/unit_tests/test_non_interactive.py +1562 -0
- deepagents_code-0.1.0/tests/unit_tests/test_notification_center.py +312 -0
- deepagents_code-0.1.0/tests/unit_tests/test_notification_detail.py +133 -0
- deepagents_code-0.1.0/tests/unit_tests/test_notifications.py +204 -0
- deepagents_code-0.1.0/tests/unit_tests/test_offload.py +1506 -0
- deepagents_code-0.1.0/tests/unit_tests/test_offload_dict_messages.py +335 -0
- deepagents_code-0.1.0/tests/unit_tests/test_onboarding.py +241 -0
- deepagents_code-0.1.0/tests/unit_tests/test_output.py +62 -0
- deepagents_code-0.1.0/tests/unit_tests/test_reload.py +632 -0
- deepagents_code-0.1.0/tests/unit_tests/test_remote_client.py +615 -0
- deepagents_code-0.1.0/tests/unit_tests/test_sandbox_factory.py +505 -0
- deepagents_code-0.1.0/tests/unit_tests/test_server.py +321 -0
- deepagents_code-0.1.0/tests/unit_tests/test_server_config.py +217 -0
- deepagents_code-0.1.0/tests/unit_tests/test_server_graph.py +139 -0
- deepagents_code-0.1.0/tests/unit_tests/test_server_helpers.py +95 -0
- deepagents_code-0.1.0/tests/unit_tests/test_server_manager.py +370 -0
- deepagents_code-0.1.0/tests/unit_tests/test_session_stats.py +151 -0
- deepagents_code-0.1.0/tests/unit_tests/test_sessions.py +1860 -0
- deepagents_code-0.1.0/tests/unit_tests/test_shell_allow_list.py +719 -0
- deepagents_code-0.1.0/tests/unit_tests/test_skill_invocation.py +596 -0
- deepagents_code-0.1.0/tests/unit_tests/test_startup_fast_paths.py +213 -0
- deepagents_code-0.1.0/tests/unit_tests/test_state_migration.py +204 -0
- deepagents_code-0.1.0/tests/unit_tests/test_status.py +430 -0
- deepagents_code-0.1.0/tests/unit_tests/test_subagents.py +431 -0
- deepagents_code-0.1.0/tests/unit_tests/test_terminal_capabilities.py +203 -0
- deepagents_code-0.1.0/tests/unit_tests/test_terminal_escape.py +377 -0
- deepagents_code-0.1.0/tests/unit_tests/test_textual_adapter.py +2336 -0
- deepagents_code-0.1.0/tests/unit_tests/test_textual_patches.py +92 -0
- deepagents_code-0.1.0/tests/unit_tests/test_theme.py +2543 -0
- deepagents_code-0.1.0/tests/unit_tests/test_thread_selector.py +3374 -0
- deepagents_code-0.1.0/tests/unit_tests/test_token_tracker.py +150 -0
- deepagents_code-0.1.0/tests/unit_tests/test_tool_display.py +470 -0
- deepagents_code-0.1.0/tests/unit_tests/test_ui.py +388 -0
- deepagents_code-0.1.0/tests/unit_tests/test_unicode_security.py +246 -0
- deepagents_code-0.1.0/tests/unit_tests/test_update_available.py +183 -0
- deepagents_code-0.1.0/tests/unit_tests/test_update_check.py +1429 -0
- deepagents_code-0.1.0/tests/unit_tests/test_update_progress.py +116 -0
- deepagents_code-0.1.0/tests/unit_tests/test_version.py +396 -0
- deepagents_code-0.1.0/tests/unit_tests/test_welcome.py +665 -0
- deepagents_code-0.1.0/tests/unit_tests/tools/__init__.py +0 -0
- deepagents_code-0.1.0/tests/unit_tests/tools/test_fetch_url.py +72 -0
- deepagents_code-0.1.0/uv.lock +6771 -0
- deepagents_code-0.0.1/CHANGELOG.md +0 -1
- deepagents_code-0.0.1/Makefile +0 -49
- deepagents_code-0.0.1/PKG-INFO +0 -26
- deepagents_code-0.0.1/README.md +0 -5
- deepagents_code-0.0.1/deepagents_code/__init__.py +0 -5
- deepagents_code-0.0.1/deepagents_code/_version.py +0 -3
- deepagents_code-0.0.1/pyproject.toml +0 -84
- deepagents_code-0.0.1/tests/unit_tests/test_placeholder.py +0 -5
- deepagents_code-0.0.1/uv.lock +0 -872
- {deepagents_code-0.0.1 → deepagents_code-0.1.0}/.gitignore +0 -0
- {deepagents_code-0.0.1 → deepagents_code-0.1.0}/deepagents_code/py.typed +0 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Deep Agents Code Changelog
|
|
2
|
+
|
|
3
|
+
## [0.1.0](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.0.1...deepagents-code==0.1.0) (2026-05-12)
|
|
4
|
+
|
|
5
|
+
Hello world! Ported from `libs/cli`.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
`deepagents-code` was forked from `deepagents-cli` at v0.1.0 (2026-05-12).
|
|
10
|
+
For history prior to the fork, see [the `deepagents-cli` changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/cli/CHANGELOG.md).
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Deep Agents Code Development Guide
|
|
2
|
+
|
|
3
|
+
## Live CSS development with Textual devtools
|
|
4
|
+
|
|
5
|
+
Textual's devtools console enables CSS hot-reload and live `self.log()` output during development.
|
|
6
|
+
|
|
7
|
+
### Prerequisites
|
|
8
|
+
|
|
9
|
+
Sync the `test` dependency group (includes `textual-dev`):
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
cd libs/code && uv sync --group test
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Create the dev wrapper script (one-time):
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
cat > /tmp/dev_deepagents.py << 'PYEOF'
|
|
19
|
+
"""Dev wrapper to run Deep Agents Code with textual devtools."""
|
|
20
|
+
import sys
|
|
21
|
+
sys.argv = ["deepagents"] + sys.argv[1:]
|
|
22
|
+
|
|
23
|
+
from deepagents_code.main import cli_main
|
|
24
|
+
cli_main()
|
|
25
|
+
PYEOF
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Running
|
|
29
|
+
|
|
30
|
+
**Terminal 1** — devtools console:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
cd libs/code && uv run --group test textual console
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Terminal 2** — TUI with live reload:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cd libs/code && uv run --group test textual run --dev /tmp/dev_deepagents.py
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Edit any `.tcss` file and save — changes appear immediately. Any `self.log()` calls in widget code show in the console.
|
|
43
|
+
|
|
44
|
+
### Console options
|
|
45
|
+
|
|
46
|
+
- `textual console -v` — verbose mode, shows all events (key presses, mouse, etc.)
|
|
47
|
+
- `textual console -x EVENT` — exclude noisy event groups
|
|
48
|
+
- `textual console --port 7342` — custom port (pass matching `--port` to `textual run`)
|
|
49
|
+
|
|
50
|
+
### Why the wrapper script?
|
|
51
|
+
|
|
52
|
+
`textual run --dev` handles the devtools connection, but it needs to run inside the project's virtualenv to import `deepagents_code`. The wrapper script bridges the gap — `uv run --group test textual run --dev` ensures both `textual-dev` (from the `test` group) and `deepagents_code` are available in the same environment.
|
|
53
|
+
|
|
54
|
+
## Debugging
|
|
55
|
+
|
|
56
|
+
The app runs a `langgraph dev` subprocess for every interactive session. When the subprocess crashes during startup, the TUI shows a one-line failure banner; the actual exception lives in the subprocess's stdout/stderr, which is captured to a temp file.
|
|
57
|
+
|
|
58
|
+
### Environment variables
|
|
59
|
+
|
|
60
|
+
| Variable | Effect |
|
|
61
|
+
| --- | --- |
|
|
62
|
+
| `DEEPAGENTS_CODE_DEBUG=1` | Preserves the server subprocess log on shutdown and prints its path to stderr. Without this, the log is deleted when the process stops. Also enables the app-process file handler below. Accepts `1`/`true`/`yes`/`on` (case-insensitive) as enabled; `0`/`false`/`no`/`off`/empty/unset as disabled. |
|
|
63
|
+
| `DEEPAGENTS_CODE_DEBUG_FILE=<path>` | Overrides the default path (`/tmp/deepagents_debug.log`) for the app-process file handler, which attaches at `DEBUG` level to `textual_adapter` and `remote_client`. **Only takes effect when `DEEPAGENTS_CODE_DEBUG` is truthy.** Useful for diagnosing streaming/client-side issues; does **not** capture the server subprocess. |
|
|
64
|
+
|
|
65
|
+
`DEEPAGENTS_CODE_DEBUG` is what you want for startup crashes (graph init, MCP config, sandbox): the preserved subprocess log contains the real traceback. The optional `DEEPAGENTS_CODE_DEBUG_FILE` override is for post-startup client-side debugging.
|
|
66
|
+
|
|
67
|
+
### Finding the server subprocess log
|
|
68
|
+
|
|
69
|
+
On macOS, `tempfile` resolves to `$TMPDIR` (a path under `/var/folders/.../T/`). Each `ServerProcess` writes its combined stdout+stderr to a file matching `deepagents_server_log_*.txt`:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# Newest first
|
|
73
|
+
ls -lt ${TMPDIR:-/tmp}/deepagents_server_log_*.txt | head -5
|
|
74
|
+
|
|
75
|
+
# Tail the latest while reproducing the crash
|
|
76
|
+
tail -F "$(ls -t ${TMPDIR:-/tmp}/deepagents_server_log_*.txt | head -1)"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The interesting line is `Failed to initialize server graph: <exc>` followed by a traceback — everything above that is uvicorn/lifespan unwinding.
|
|
80
|
+
|
|
81
|
+
### Triage flow for a startup crash
|
|
82
|
+
|
|
83
|
+
1. **Rerun with `DEEPAGENTS_CODE_DEBUG=1`.** The log is preserved and a "Server log preserved at: ..." line is printed to stderr. Textual's fullscreen mode can hide that line, but the file itself is still on disk.
|
|
84
|
+
2. **Locate the log** via the `ls` command above. Open it in your editor.
|
|
85
|
+
3. **Search for `Failed to initialize server graph`.** The stack trace beneath names the concrete failure point (MCP config validation, sandbox init, model resolution, subagent load, etc.).
|
|
86
|
+
4. **Pre-flight validators run in the app process** for the common failure modes (e.g., `--mcp-config` is validated in `start_server_and_get_agent` before the subprocess spawns). When the banner shows `MCPConfigError: <path>: <reason>`, the subprocess never started — fix the file and retry.
|
|
87
|
+
|
|
88
|
+
### Common startup failure patterns
|
|
89
|
+
|
|
90
|
+
- **`MCPConfigError: Invalid MCP config at <path>: ...`** — malformed `--mcp-config`. The pre-flight wraps the underlying `ValueError`/`TypeError` with the offending path. See `_preflight_validate_mcp_config` in `server_manager.py`.
|
|
91
|
+
- **`Server 'X' missing required 'command' field`** (from a discovered project `.mcp.json`, not `--mcp-config`) — an stdio server config without `command`. For remote servers, just use `{"url": "..."}`; transport is inferred as `http` when no `type`/`transport` is present.
|
|
92
|
+
- **Uncaught exception inside a bare `sys.exit(1)`** — usually means the surrounding `make_graph()` raised. Look one traceback up in the subprocess log for the real cause.
|
|
@@ -0,0 +1,91 @@
|
|
|
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
|
|
2
|
+
|
|
3
|
+
.DEFAULT_GOAL := help
|
|
4
|
+
|
|
5
|
+
.EXPORT_ALL_VARIABLES:
|
|
6
|
+
UV_FROZEN = true
|
|
7
|
+
|
|
8
|
+
######################
|
|
9
|
+
# TESTING AND COVERAGE
|
|
10
|
+
######################
|
|
11
|
+
|
|
12
|
+
# Define a variable for the test file path.
|
|
13
|
+
TEST_FILE ?= tests/unit_tests/
|
|
14
|
+
integration_test integration_tests: TEST_FILE=tests/integration_tests/
|
|
15
|
+
|
|
16
|
+
COV_ARGS ?= --cov=deepagents_code --cov-report=term-missing
|
|
17
|
+
PYTEST_EXTRA ?=
|
|
18
|
+
|
|
19
|
+
test: ## Run unit tests
|
|
20
|
+
test tests:
|
|
21
|
+
uv run --group test pytest -n auto --benchmark-disable --disable-socket --allow-unix-socket $(PYTEST_EXTRA) $(TEST_FILE) \
|
|
22
|
+
$(COV_ARGS)
|
|
23
|
+
|
|
24
|
+
coverage: ## Run unit tests with coverage
|
|
25
|
+
uv run --group test pytest --cov \
|
|
26
|
+
--cov-config=.coveragerc \
|
|
27
|
+
--cov-report xml \
|
|
28
|
+
--cov-report term-missing:skip-covered \
|
|
29
|
+
$(TEST_FILE)
|
|
30
|
+
|
|
31
|
+
integration_test: ## Run integration tests
|
|
32
|
+
integration_test integration_tests:
|
|
33
|
+
uv run --group test pytest -n auto --benchmark-disable -vvv --timeout 30 $(TEST_FILE)
|
|
34
|
+
|
|
35
|
+
test_watch: ## Run tests in watch mode
|
|
36
|
+
uv run --group test ptw --now . -- -vv $(TEST_FILE)
|
|
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
|
+
run: ## Reinstall and run package
|
|
48
|
+
uvx --no-cache --reinstall .
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
######################
|
|
52
|
+
# LINTING AND FORMATTING
|
|
53
|
+
######################
|
|
54
|
+
|
|
55
|
+
# Define a variable for Python and notebook files.
|
|
56
|
+
PYTHON_FILES=.
|
|
57
|
+
lint format: PYTHON_FILES=.
|
|
58
|
+
lint_diff format_diff: PYTHON_FILES=$(shell git diff --relative=libs/code --name-only --diff-filter=d main | grep -E '\.py$$|\.ipynb$$')
|
|
59
|
+
lint_package: ## Lint only the package
|
|
60
|
+
lint_package: PYTHON_FILES=deepagents_code
|
|
61
|
+
lint_tests: ## Lint only tests
|
|
62
|
+
lint_tests: PYTHON_FILES=tests
|
|
63
|
+
|
|
64
|
+
lint: ## Run linters and type checker
|
|
65
|
+
lint lint_diff lint_package lint_tests:
|
|
66
|
+
[ "$(PYTHON_FILES)" = "" ] || uv run --all-groups ruff check $(PYTHON_FILES)
|
|
67
|
+
[ "$(PYTHON_FILES)" = "" ] || uv run --all-groups ruff format $(PYTHON_FILES) --diff
|
|
68
|
+
$(MAKE) type PYTHON_FILES="$(PYTHON_FILES)"
|
|
69
|
+
|
|
70
|
+
type: ## Run type checker
|
|
71
|
+
type typecheck:
|
|
72
|
+
uv run --all-groups ty check $(PYTHON_FILES)
|
|
73
|
+
|
|
74
|
+
format: ## Run code formatters
|
|
75
|
+
format format_diff:
|
|
76
|
+
[ "$(PYTHON_FILES)" = "" ] || uv run --all-groups ruff format $(PYTHON_FILES)
|
|
77
|
+
[ "$(PYTHON_FILES)" = "" ] || uv run --all-groups ruff check --fix $(PYTHON_FILES)
|
|
78
|
+
|
|
79
|
+
check_imports: ## Check imports
|
|
80
|
+
check_imports: $(shell find deepagents_code -name '*.py')
|
|
81
|
+
uv run --all-groups python ./scripts/check_imports.py $^
|
|
82
|
+
|
|
83
|
+
######################
|
|
84
|
+
# HELP
|
|
85
|
+
######################
|
|
86
|
+
|
|
87
|
+
help: ## Show this help message
|
|
88
|
+
@echo "Usage: make [target] [TEST_FILE=path/to/tests/]"
|
|
89
|
+
@echo ""
|
|
90
|
+
@echo "Targets:"
|
|
91
|
+
@awk 'BEGIN {FS = ":.*##"} /^[a-zA-Z_-]+:.*##/ {printf " %-20s %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: deepagents-code
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Terminal interface for Deep Agents - interactive AI agent with file operations, shell access, and sub-agent capabilities.
|
|
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/code/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,langchain,langgraph,llm,terminal
|
|
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
|
+
Classifier: Topic :: Terminals
|
|
27
|
+
Requires-Python: <4.0,>=3.11
|
|
28
|
+
Requires-Dist: aiosqlite<1.0.0,>=0.19.0
|
|
29
|
+
Requires-Dist: deepagents-acp>=0.0.4
|
|
30
|
+
Requires-Dist: deepagents==0.6.1
|
|
31
|
+
Requires-Dist: httpx<1.0.0,>=0.28.1
|
|
32
|
+
Requires-Dist: langchain-anthropic<2.0.0,>=1.4.3
|
|
33
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2
|
|
34
|
+
Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.2.2
|
|
35
|
+
Requires-Dist: langchain-openai<2.0.0,>=1.2.1
|
|
36
|
+
Requires-Dist: langchain<2.0.0,>=1.3.0
|
|
37
|
+
Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.1.0
|
|
38
|
+
Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.24
|
|
39
|
+
Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.28.1
|
|
40
|
+
Requires-Dist: langgraph-sdk<1.0.0,>=0.3.13
|
|
41
|
+
Requires-Dist: langgraph<2.0.0,>=1.2.0
|
|
42
|
+
Requires-Dist: langsmith[sandbox]>=0.8.0
|
|
43
|
+
Requires-Dist: markdownify<2.0.0,>=0.13.0
|
|
44
|
+
Requires-Dist: packaging>=23.0
|
|
45
|
+
Requires-Dist: pillow<13.0.0,>=10.0.0
|
|
46
|
+
Requires-Dist: prompt-toolkit<4.0.0,>=3.0.52
|
|
47
|
+
Requires-Dist: pyperclip<2.0.0,>=1.11.0
|
|
48
|
+
Requires-Dist: python-dotenv<2.0.0,>=1.2.2
|
|
49
|
+
Requires-Dist: pyyaml>=6.0.0
|
|
50
|
+
Requires-Dist: requests<3.0.0,>=2.0.0
|
|
51
|
+
Requires-Dist: rich<16.0.0,>=14.2.0
|
|
52
|
+
Requires-Dist: tavily-python<1.0.0,>=0.7.24
|
|
53
|
+
Requires-Dist: textual-autocomplete<5.0.0,>=4.0.6
|
|
54
|
+
Requires-Dist: textual-speedups<1.0.0,>=0.2.1
|
|
55
|
+
Requires-Dist: textual<9.0.0,>=8.2.5
|
|
56
|
+
Requires-Dist: tomli-w<2.0.0,>=1.0.0
|
|
57
|
+
Requires-Dist: uuid-utils<1.0.0,>=0.10.0
|
|
58
|
+
Provides-Extra: agentcore
|
|
59
|
+
Requires-Dist: langchain-agentcore-codeinterpreter>=0.0.2; extra == 'agentcore'
|
|
60
|
+
Provides-Extra: all-providers
|
|
61
|
+
Requires-Dist: langchain-anthropic<2.0.0,>=1.4.3; extra == 'all-providers'
|
|
62
|
+
Requires-Dist: langchain-aws<2.0.0,>=1.4.6; extra == 'all-providers'
|
|
63
|
+
Requires-Dist: langchain-baseten<1.0.0,>=0.2.0; extra == 'all-providers'
|
|
64
|
+
Requires-Dist: langchain-cohere<1.0.0,>=0.5.1; extra == 'all-providers'
|
|
65
|
+
Requires-Dist: langchain-deepseek<2.0.0,>=1.0.1; extra == 'all-providers'
|
|
66
|
+
Requires-Dist: langchain-fireworks<2.0.0,>=1.3.1; extra == 'all-providers'
|
|
67
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2; extra == 'all-providers'
|
|
68
|
+
Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.3; extra == 'all-providers'
|
|
69
|
+
Requires-Dist: langchain-groq<2.0.0,>=1.1.2; extra == 'all-providers'
|
|
70
|
+
Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'all-providers'
|
|
71
|
+
Requires-Dist: langchain-ibm<2.0.0,>=1.0.7; extra == 'all-providers'
|
|
72
|
+
Requires-Dist: langchain-litellm<2.0.0,>=0.6.4; extra == 'all-providers'
|
|
73
|
+
Requires-Dist: langchain-mistralai<2.0.0,>=1.1.4; extra == 'all-providers'
|
|
74
|
+
Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.2.1; extra == 'all-providers'
|
|
75
|
+
Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'all-providers'
|
|
76
|
+
Requires-Dist: langchain-openai<2.0.0,>=1.2.1; extra == 'all-providers'
|
|
77
|
+
Requires-Dist: langchain-openrouter<2.0.0,>=0.2.3; extra == 'all-providers'
|
|
78
|
+
Requires-Dist: langchain-perplexity<2.0.0,>=1.2.0; extra == 'all-providers'
|
|
79
|
+
Requires-Dist: langchain-together<2.0.0,>=0.4.0; extra == 'all-providers'
|
|
80
|
+
Requires-Dist: langchain-xai<2.0.0,>=1.2.2; extra == 'all-providers'
|
|
81
|
+
Provides-Extra: all-sandboxes
|
|
82
|
+
Requires-Dist: langchain-agentcore-codeinterpreter>=0.0.2; extra == 'all-sandboxes'
|
|
83
|
+
Requires-Dist: langchain-daytona>=0.0.5; extra == 'all-sandboxes'
|
|
84
|
+
Requires-Dist: langchain-modal>=0.0.3; extra == 'all-sandboxes'
|
|
85
|
+
Requires-Dist: langchain-runloop>=0.0.4; extra == 'all-sandboxes'
|
|
86
|
+
Provides-Extra: anthropic
|
|
87
|
+
Requires-Dist: langchain-anthropic<2.0.0,>=1.4.3; extra == 'anthropic'
|
|
88
|
+
Provides-Extra: baseten
|
|
89
|
+
Requires-Dist: langchain-baseten<1.0.0,>=0.2.0; extra == 'baseten'
|
|
90
|
+
Provides-Extra: bedrock
|
|
91
|
+
Requires-Dist: langchain-aws<2.0.0,>=1.4.6; extra == 'bedrock'
|
|
92
|
+
Provides-Extra: cohere
|
|
93
|
+
Requires-Dist: langchain-cohere<1.0.0,>=0.5.1; extra == 'cohere'
|
|
94
|
+
Provides-Extra: daytona
|
|
95
|
+
Requires-Dist: langchain-daytona>=0.0.5; extra == 'daytona'
|
|
96
|
+
Provides-Extra: deepseek
|
|
97
|
+
Requires-Dist: langchain-deepseek<2.0.0,>=1.0.1; extra == 'deepseek'
|
|
98
|
+
Provides-Extra: fireworks
|
|
99
|
+
Requires-Dist: langchain-fireworks<2.0.0,>=1.3.1; extra == 'fireworks'
|
|
100
|
+
Provides-Extra: google-genai
|
|
101
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2; extra == 'google-genai'
|
|
102
|
+
Provides-Extra: groq
|
|
103
|
+
Requires-Dist: langchain-groq<2.0.0,>=1.1.2; extra == 'groq'
|
|
104
|
+
Provides-Extra: huggingface
|
|
105
|
+
Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'huggingface'
|
|
106
|
+
Provides-Extra: ibm
|
|
107
|
+
Requires-Dist: langchain-ibm<2.0.0,>=1.0.7; extra == 'ibm'
|
|
108
|
+
Provides-Extra: litellm
|
|
109
|
+
Requires-Dist: langchain-litellm<2.0.0,>=0.6.4; extra == 'litellm'
|
|
110
|
+
Provides-Extra: mistralai
|
|
111
|
+
Requires-Dist: langchain-mistralai<2.0.0,>=1.1.4; extra == 'mistralai'
|
|
112
|
+
Provides-Extra: modal
|
|
113
|
+
Requires-Dist: langchain-modal>=0.0.3; extra == 'modal'
|
|
114
|
+
Provides-Extra: nvidia
|
|
115
|
+
Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.2.1; extra == 'nvidia'
|
|
116
|
+
Provides-Extra: ollama
|
|
117
|
+
Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'ollama'
|
|
118
|
+
Provides-Extra: openai
|
|
119
|
+
Requires-Dist: langchain-openai<2.0.0,>=1.2.1; extra == 'openai'
|
|
120
|
+
Provides-Extra: openrouter
|
|
121
|
+
Requires-Dist: langchain-openrouter<2.0.0,>=0.2.3; extra == 'openrouter'
|
|
122
|
+
Provides-Extra: perplexity
|
|
123
|
+
Requires-Dist: langchain-perplexity<2.0.0,>=1.2.0; extra == 'perplexity'
|
|
124
|
+
Provides-Extra: runloop
|
|
125
|
+
Requires-Dist: langchain-runloop>=0.0.4; extra == 'runloop'
|
|
126
|
+
Provides-Extra: together
|
|
127
|
+
Requires-Dist: langchain-together<2.0.0,>=0.4.0; extra == 'together'
|
|
128
|
+
Provides-Extra: vertexai
|
|
129
|
+
Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.3; extra == 'vertexai'
|
|
130
|
+
Provides-Extra: xai
|
|
131
|
+
Requires-Dist: langchain-xai<2.0.0,>=1.2.2; extra == 'xai'
|
|
132
|
+
Description-Content-Type: text/markdown
|
|
133
|
+
|
|
134
|
+
# 🧠🤖 Deep Agents Code
|
|
135
|
+
|
|
136
|
+
[](https://pypi.org/project/deepagents-code/#history)
|
|
137
|
+
[](https://opensource.org/licenses/MIT)
|
|
138
|
+
[](https://pypistats.org/packages/deepagents-code)
|
|
139
|
+
[](https://x.com/langchain_oss)
|
|
140
|
+
|
|
141
|
+
<p align="center">
|
|
142
|
+
<img src="https://raw.githubusercontent.com/langchain-ai/deepagents/main/libs/code/images/tui.png" alt="Deep Agents Code" width="600"/>
|
|
143
|
+
</p>
|
|
144
|
+
|
|
145
|
+
## Quick Install
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
curl -LsSf https://langch.in/gh-da-cli | bash
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
# With model provider extras
|
|
153
|
+
# OpenAI, Anthropic, and Gemini are included by default
|
|
154
|
+
DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/gh-da-cli | bash
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Or install directly with `uv`:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# Install with chosen model providers
|
|
161
|
+
uv tool install 'deepagents-code[nvidia,ollama]'
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Run:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
dcode
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## 🤔 What is this?
|
|
171
|
+
|
|
172
|
+
The fastest way to start using Deep Agents. `deepagents-code` is a pre-built coding agent in your terminal — similar to Claude Code or Cursor — powered by any LLM that supports tool calling. One install command and you're up and running, no code required.
|
|
173
|
+
|
|
174
|
+
**What `deepagents-code` adds on top of the SDK:**
|
|
175
|
+
|
|
176
|
+
- **Interactive TUI** — rich terminal interface with streaming responses
|
|
177
|
+
- **Conversation resume** — pick up where you left off across sessions
|
|
178
|
+
- **Web search** — ground responses in live information
|
|
179
|
+
- **Remote sandboxes** — run code in isolated environments (LangSmith, AgentCore, Daytona, Modal, Runloop, & more)
|
|
180
|
+
- **Persistent memory** — agent remembers context across conversations
|
|
181
|
+
- **Custom skills** — extend the agent with your own slash commands
|
|
182
|
+
- **Headless mode** — run non-interactively for scripting and CI
|
|
183
|
+
- **Human-in-the-loop** — approve or reject tool calls before execution
|
|
184
|
+
|
|
185
|
+
## 📖 Resources
|
|
186
|
+
|
|
187
|
+
- **[CLI Documentation](https://docs.langchain.com/oss/python/deepagents/cli/overview)**
|
|
188
|
+
- **[Changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/code/CHANGELOG.md)**
|
|
189
|
+
- **[Source code](https://github.com/langchain-ai/deepagents/tree/main/libs/code)**
|
|
190
|
+
- **[Deep Agents SDK](https://github.com/langchain-ai/deepagents)** — underlying agent harness
|
|
191
|
+
|
|
192
|
+
## 📕 Releases & Versioning
|
|
193
|
+
|
|
194
|
+
See our [Releases](https://docs.langchain.com/oss/python/release-policy) and [Versioning](https://docs.langchain.com/oss/python/versioning) policies.
|
|
195
|
+
|
|
196
|
+
## 💁 Contributing
|
|
197
|
+
|
|
198
|
+
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.
|
|
199
|
+
|
|
200
|
+
For detailed information on how to contribute, see the [Contributing Guide](https://docs.langchain.com/oss/python/contributing/overview).
|
|
201
|
+
|
|
202
|
+
## 🤝 Acknowledgements
|
|
203
|
+
|
|
204
|
+
This project was primarily inspired by Claude Code, and initially was largely an attempt to see what made Claude Code general purpose, and make it even more so.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# 🧠🤖 Deep Agents Code
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/deepagents-code/#history)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
[](https://pypistats.org/packages/deepagents-code)
|
|
6
|
+
[](https://x.com/langchain_oss)
|
|
7
|
+
|
|
8
|
+
<p align="center">
|
|
9
|
+
<img src="https://raw.githubusercontent.com/langchain-ai/deepagents/main/libs/code/images/tui.png" alt="Deep Agents Code" width="600"/>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
## Quick Install
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
curl -LsSf https://langch.in/gh-da-cli | bash
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# With model provider extras
|
|
20
|
+
# OpenAI, Anthropic, and Gemini are included by default
|
|
21
|
+
DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/gh-da-cli | bash
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Or install directly with `uv`:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Install with chosen model providers
|
|
28
|
+
uv tool install 'deepagents-code[nvidia,ollama]'
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Run:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
dcode
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## 🤔 What is this?
|
|
38
|
+
|
|
39
|
+
The fastest way to start using Deep Agents. `deepagents-code` is a pre-built coding agent in your terminal — similar to Claude Code or Cursor — powered by any LLM that supports tool calling. One install command and you're up and running, no code required.
|
|
40
|
+
|
|
41
|
+
**What `deepagents-code` adds on top of the SDK:**
|
|
42
|
+
|
|
43
|
+
- **Interactive TUI** — rich terminal interface with streaming responses
|
|
44
|
+
- **Conversation resume** — pick up where you left off across sessions
|
|
45
|
+
- **Web search** — ground responses in live information
|
|
46
|
+
- **Remote sandboxes** — run code in isolated environments (LangSmith, AgentCore, Daytona, Modal, Runloop, & more)
|
|
47
|
+
- **Persistent memory** — agent remembers context across conversations
|
|
48
|
+
- **Custom skills** — extend the agent with your own slash commands
|
|
49
|
+
- **Headless mode** — run non-interactively for scripting and CI
|
|
50
|
+
- **Human-in-the-loop** — approve or reject tool calls before execution
|
|
51
|
+
|
|
52
|
+
## 📖 Resources
|
|
53
|
+
|
|
54
|
+
- **[CLI Documentation](https://docs.langchain.com/oss/python/deepagents/cli/overview)**
|
|
55
|
+
- **[Changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/code/CHANGELOG.md)**
|
|
56
|
+
- **[Source code](https://github.com/langchain-ai/deepagents/tree/main/libs/code)**
|
|
57
|
+
- **[Deep Agents SDK](https://github.com/langchain-ai/deepagents)** — underlying agent harness
|
|
58
|
+
|
|
59
|
+
## 📕 Releases & Versioning
|
|
60
|
+
|
|
61
|
+
See our [Releases](https://docs.langchain.com/oss/python/release-policy) and [Versioning](https://docs.langchain.com/oss/python/versioning) policies.
|
|
62
|
+
|
|
63
|
+
## 💁 Contributing
|
|
64
|
+
|
|
65
|
+
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.
|
|
66
|
+
|
|
67
|
+
For detailed information on how to contribute, see the [Contributing Guide](https://docs.langchain.com/oss/python/contributing/overview).
|
|
68
|
+
|
|
69
|
+
## 🤝 Acknowledgements
|
|
70
|
+
|
|
71
|
+
This project was primarily inspired by Claude Code, and initially was largely an attempt to see what made Claude Code general purpose, and make it even more so.
|