deepagents-cli 0.0.30__tar.gz → 0.0.32__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.30 → deepagents_cli-0.0.32}/CHANGELOG.md +31 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/PKG-INFO +22 -13
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/README.md +20 -11
- deepagents_cli-0.0.32/deepagents_cli/_version.py +3 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/agent.py +148 -22
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/app.py +298 -57
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/app.tcss +55 -0
- deepagents_cli-0.0.32/deepagents_cli/ask_user.py +376 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/config.py +143 -6
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/integrations/langsmith.py +25 -16
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/main.py +65 -4
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/model_config.py +215 -1
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/non_interactive.py +29 -7
- deepagents_cli-0.0.32/deepagents_cli/output.py +69 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/sessions.py +509 -72
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/skills/commands.py +145 -37
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/system_prompt.md +3 -4
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/textual_adapter.py +219 -34
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/tool_display.py +6 -1
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/ui.py +69 -42
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/widgets/approval.py +14 -14
- deepagents_cli-0.0.32/deepagents_cli/widgets/ask_user.py +399 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/widgets/autocomplete.py +2 -1
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/widgets/chat_input.py +90 -4
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/widgets/messages.py +7 -3
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/widgets/status.py +50 -7
- deepagents_cli-0.0.32/deepagents_cli/widgets/thread_selector.py +1740 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/widgets/welcome.py +23 -8
- deepagents_cli-0.0.32/images/cli.png +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/pyproject.toml +2 -2
- deepagents_cli-0.0.32/scripts/install.sh +77 -0
- deepagents_cli-0.0.32/tests/unit_tests/skills/test_skills_json.py +154 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_agent.py +309 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_app.py +490 -3
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_approval.py +77 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_args.py +83 -1
- deepagents_cli-0.0.32/tests/unit_tests/test_ask_user.py +601 -0
- deepagents_cli-0.0.32/tests/unit_tests/test_ask_user_middleware.py +221 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_chat_input.py +140 -2
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_compact.py +1 -4
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_config.py +15 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_messages.py +6 -6
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_model_config.py +131 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_model_switch.py +34 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_non_interactive.py +55 -0
- deepagents_cli-0.0.32/tests/unit_tests/test_output.py +62 -0
- deepagents_cli-0.0.32/tests/unit_tests/test_reload.py +240 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_sessions.py +777 -16
- deepagents_cli-0.0.32/tests/unit_tests/test_status.py +133 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_textual_adapter.py +293 -7
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_thread_selector.py +1035 -159
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_version.py +0 -2
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_welcome.py +105 -1
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/uv.lock +20 -20
- deepagents_cli-0.0.30/deepagents_cli/_version.py +0 -3
- deepagents_cli-0.0.30/deepagents_cli/widgets/thread_selector.py +0 -698
- deepagents_cli-0.0.30/images/cli.png +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/.gitignore +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/Makefile +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/__init__.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/__main__.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/built_in_skills/__init__.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/built_in_skills/skill-creator/SKILL.md +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/clipboard.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/default_agent_prompt.md +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/file_ops.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/hooks.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/input.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/integrations/__init__.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/integrations/daytona.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/integrations/modal.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/integrations/runloop.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/integrations/sandbox_factory.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/integrations/sandbox_provider.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/local_context.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/mcp_tools.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/mcp_trust.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/media_utils.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/project_utils.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/py.typed +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/skills/__init__.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/skills/load.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/subagents.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/tools.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/unicode_security.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/update_check.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/widgets/__init__.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/widgets/_links.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/widgets/diff.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/widgets/history.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/widgets/loading.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/widgets/mcp_viewer.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/widgets/message_store.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/widgets/model_selector.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/widgets/tool_renderers.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/deepagents_cli/widgets/tool_widgets.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/scripts/check_imports.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/README.md +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/integration_tests/__init__.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/integration_tests/benchmarks/__init__.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/integration_tests/conftest.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/integration_tests/test_acp_mode.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/integration_tests/test_sandbox_factory.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/integration_tests/test_sandbox_operations.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/__init__.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/conftest.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/skills/__init__.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/skills/test_commands.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/skills/test_load.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_autocomplete.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_charset.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_compact_tool.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_end_to_end.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_exception_handling.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_file_ops.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_history.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_hooks.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_imports.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_input_parsing.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_local_context.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_main.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_main_acp_mode.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_main_args.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_mcp_tools.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_mcp_trust.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_mcp_viewer.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_media_utils.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_message_store.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_model_selector.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_shell_allow_list.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_subagents.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_token_tracker.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_ui.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_unicode_security.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/test_update_check.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/tools/__init__.py +0 -0
- {deepagents_cli-0.0.30 → deepagents_cli-0.0.32}/tests/unit_tests/tools/test_fetch_url.py +0 -0
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.0.32](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.31...deepagents-cli==0.0.32) (2026-03-11)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* Add token breakdown to `/tokens` and simplify `/compact` messages ([#1782](https://github.com/langchain-ai/deepagents/issues/1782)) ([2f37bff](https://github.com/langchain-ai/deepagents/commit/2f37bffa9d7a9ced6945abe4ab6bc3409bfb97b1))
|
|
8
|
+
* `--json` flag for machine-readable output ([#1768](https://github.com/langchain-ai/deepagents/issues/1768)) ([6f62496](https://github.com/langchain-ai/deepagents/commit/6f62496bb699dfa6086ee1850b83f38d3b1242fa))
|
|
9
|
+
|
|
10
|
+
### Bug Fixes
|
|
11
|
+
|
|
12
|
+
* Work around VS Code 1.110 space key regression ([#1748](https://github.com/langchain-ai/deepagents/issues/1748)) ([f5fe431](https://github.com/langchain-ai/deepagents/commit/f5fe4315143bf5b636cf42fc98cbfe3d99918cfc))
|
|
13
|
+
|
|
14
|
+
## [0.0.31](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.30...deepagents-cli==0.0.31) (2026-03-09)
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
* Opt-in `ask_user` tool for interactive agent questions ([#1377](https://github.com/langchain-ai/deepagents/issues/1377)) ([de7068d](https://github.com/langchain-ai/deepagents/commit/de7068d21fd4b932c6e53f500b0ea3b02a04c0aa))
|
|
19
|
+
* Big thread improvements!
|
|
20
|
+
* Rework `/thread` switcher with search, columns, delete, and sort toggle ([#1723](https://github.com/langchain-ai/deepagents/issues/1723)) ([8b21ddb](https://github.com/langchain-ai/deepagents/commit/8b21ddb2ff7f13d6b3ffcbf2fe605bfbadbc3d38))
|
|
21
|
+
* Track and display working directory per thread ([#1735](https://github.com/langchain-ai/deepagents/issues/1735)) ([0e4f25d](https://github.com/langchain-ai/deepagents/commit/0e4f25dfbc3e15653bc3f8a6d32a0a61ead4ba82))
|
|
22
|
+
* Add `-n` short flag for `threads list --limit` ([#1731](https://github.com/langchain-ai/deepagents/issues/1731)) ([8bbace9](https://github.com/langchain-ai/deepagents/commit/8bbace9facd1e33757521e835dcb291accd2fa91))
|
|
23
|
+
* Add sort, branch filter, and verbose flags to threads list ([#1732](https://github.com/langchain-ai/deepagents/issues/1732)) ([11dc8e3](https://github.com/langchain-ai/deepagents/commit/11dc8e3397ef9e9dbe8b15578e9258544ed6b452))
|
|
24
|
+
* Tailor system prompt for non-interactive mode ([#1727](https://github.com/langchain-ai/deepagents/issues/1727)) ([871e5cf](https://github.com/langchain-ai/deepagents/commit/871e5cf76b1a7e7cf7175b4415bb8e2206da39ec))
|
|
25
|
+
* `/reload` command for in-session config refresh ([#1722](https://github.com/langchain-ai/deepagents/issues/1722)) ([381aee6](https://github.com/langchain-ai/deepagents/commit/381aee6d223fe3d866bedfe3a534916f419a4435))
|
|
26
|
+
* Rearrange HITL option order in approval menu ([#1726](https://github.com/langchain-ai/deepagents/issues/1726)) ([0ca6cb2](https://github.com/langchain-ai/deepagents/commit/0ca6cb237b6da538bad2b4bf292942c8db72ec1f))
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
* Localize newline shortcut labels by platform ([#1721](https://github.com/langchain-ai/deepagents/issues/1721)) ([f35576b](https://github.com/langchain-ai/deepagents/commit/f35576bafac711d6c04f1f9dd40ec97a90e30060))
|
|
31
|
+
* Prevent `shift+enter` from sending `backslash+enter` ([#1728](https://github.com/langchain-ai/deepagents/issues/1728)) ([81dceb0](https://github.com/langchain-ai/deepagents/commit/81dceb043097a47702bb5a0227a8f12e9055bd05))
|
|
32
|
+
* Write files with langsmith sandbox ([#1714](https://github.com/langchain-ai/deepagents/issues/1714)) ([5933c9e](https://github.com/langchain-ai/deepagents/commit/5933c9e2995c422e43649c61981e086ac1eaf725))
|
|
33
|
+
|
|
3
34
|
## [0.0.30](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.29...deepagents-cli==0.0.30) (2026-03-07)
|
|
4
35
|
|
|
5
36
|
### Features
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deepagents-cli
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.32
|
|
4
4
|
Summary: Terminal interface for Deep Agents - interactive AI agent with file operations, shell access, and sub-agent capabilities.
|
|
5
5
|
Project-URL: Homepage, https://docs.langchain.com/oss/python/deepagents/overview
|
|
6
6
|
Project-URL: Documentation, https://reference.langchain.com/python/deepagents/
|
|
@@ -26,7 +26,7 @@ Requires-Python: <4.0,>=3.11
|
|
|
26
26
|
Requires-Dist: aiosqlite<1.0.0,>=0.19.0
|
|
27
27
|
Requires-Dist: daytona<1.0.0,>=0.113.0
|
|
28
28
|
Requires-Dist: deepagents-acp>=0.0.4
|
|
29
|
-
Requires-Dist: deepagents==0.4.
|
|
29
|
+
Requires-Dist: deepagents==0.4.10
|
|
30
30
|
Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.2.0
|
|
31
31
|
Requires-Dist: langchain-openai<2.0.0,>=1.1.8
|
|
32
32
|
Requires-Dist: langchain<2.0.0,>=1.2.10
|
|
@@ -114,12 +114,12 @@ Description-Content-Type: text/markdown
|
|
|
114
114
|
## Quick Install
|
|
115
115
|
|
|
116
116
|
```bash
|
|
117
|
-
curl -LsSf https://raw.githubusercontent.com/langchain-ai/deepagents/main/scripts/install.sh | bash
|
|
117
|
+
curl -LsSf https://raw.githubusercontent.com/langchain-ai/deepagents/main/libs/cli/scripts/install.sh | bash
|
|
118
118
|
```
|
|
119
119
|
|
|
120
120
|
```bash
|
|
121
121
|
# With model provider extras (OpenAI is included by default)
|
|
122
|
-
DEEPAGENTS_EXTRAS="anthropic,groq" curl -LsSf https://raw.githubusercontent.com/langchain-ai/deepagents/main/scripts/install.sh | bash
|
|
122
|
+
DEEPAGENTS_EXTRAS="anthropic,groq" curl -LsSf https://raw.githubusercontent.com/langchain-ai/deepagents/main/libs/cli/scripts/install.sh | bash
|
|
123
123
|
```
|
|
124
124
|
|
|
125
125
|
Or install directly with `uv`:
|
|
@@ -137,20 +137,25 @@ deepagents
|
|
|
137
137
|
|
|
138
138
|
## 🤔 What is this?
|
|
139
139
|
|
|
140
|
-
|
|
140
|
+
The fastest way to start using Deep Agents. `deepagents-cli` 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.
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
**What the CLI adds on top of the SDK:**
|
|
143
143
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
**
|
|
144
|
+
- **Interactive TUI** — rich terminal interface with streaming responses
|
|
145
|
+
- **Conversation resume** — pick up where you left off across sessions
|
|
146
|
+
- **Web search** — ground responses in live information
|
|
147
|
+
- **Remote sandboxes** — run code in isolated environments (Modal, Runloop, Daytona, & more)
|
|
148
|
+
- **Persistent memory** — agent remembers context across conversations
|
|
149
|
+
- **Custom skills** — extend the agent with your own slash commands
|
|
150
|
+
- **Headless mode** — run non-interactively for scripting and CI
|
|
151
|
+
- **Human-in-the-loop** — approve or reject tool calls before execution
|
|
147
152
|
|
|
148
153
|
## 📖 Resources
|
|
149
154
|
|
|
150
|
-
- **[CLI Documentation](https://docs.langchain.com/oss/python/deepagents/cli/overview)**
|
|
151
|
-
- **[
|
|
152
|
-
- **[
|
|
153
|
-
- **[
|
|
155
|
+
- **[CLI Documentation](https://docs.langchain.com/oss/python/deepagents/cli/overview)**
|
|
156
|
+
- **[Changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/cli/CHANGELOG.md)**
|
|
157
|
+
- **[Source code](https://github.com/langchain-ai/deepagents/tree/main/libs/cli)**
|
|
158
|
+
- **[Deep Agents SDK](https://github.com/langchain-ai/deepagents)** — underlying agent harness
|
|
154
159
|
|
|
155
160
|
## 📕 Releases & Versioning
|
|
156
161
|
|
|
@@ -161,3 +166,7 @@ See our [Releases](https://docs.langchain.com/oss/python/release-policy) and [Ve
|
|
|
161
166
|
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.
|
|
162
167
|
|
|
163
168
|
For detailed information on how to contribute, see the [Contributing Guide](https://docs.langchain.com/oss/python/contributing/overview).
|
|
169
|
+
|
|
170
|
+
## 🤝 Acknowledgements
|
|
171
|
+
|
|
172
|
+
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.
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
## Quick Install
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
curl -LsSf https://raw.githubusercontent.com/langchain-ai/deepagents/main/scripts/install.sh | bash
|
|
15
|
+
curl -LsSf https://raw.githubusercontent.com/langchain-ai/deepagents/main/libs/cli/scripts/install.sh | bash
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
19
|
# With model provider extras (OpenAI is included by default)
|
|
20
|
-
DEEPAGENTS_EXTRAS="anthropic,groq" curl -LsSf https://raw.githubusercontent.com/langchain-ai/deepagents/main/scripts/install.sh | bash
|
|
20
|
+
DEEPAGENTS_EXTRAS="anthropic,groq" curl -LsSf https://raw.githubusercontent.com/langchain-ai/deepagents/main/libs/cli/scripts/install.sh | bash
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
Or install directly with `uv`:
|
|
@@ -35,20 +35,25 @@ deepagents
|
|
|
35
35
|
|
|
36
36
|
## 🤔 What is this?
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
The fastest way to start using Deep Agents. `deepagents-cli` 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.
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
**What the CLI adds on top of the SDK:**
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
**
|
|
42
|
+
- **Interactive TUI** — rich terminal interface with streaming responses
|
|
43
|
+
- **Conversation resume** — pick up where you left off across sessions
|
|
44
|
+
- **Web search** — ground responses in live information
|
|
45
|
+
- **Remote sandboxes** — run code in isolated environments (Modal, Runloop, Daytona, & more)
|
|
46
|
+
- **Persistent memory** — agent remembers context across conversations
|
|
47
|
+
- **Custom skills** — extend the agent with your own slash commands
|
|
48
|
+
- **Headless mode** — run non-interactively for scripting and CI
|
|
49
|
+
- **Human-in-the-loop** — approve or reject tool calls before execution
|
|
45
50
|
|
|
46
51
|
## 📖 Resources
|
|
47
52
|
|
|
48
|
-
- **[CLI Documentation](https://docs.langchain.com/oss/python/deepagents/cli/overview)**
|
|
49
|
-
- **[
|
|
50
|
-
- **[
|
|
51
|
-
- **[
|
|
53
|
+
- **[CLI Documentation](https://docs.langchain.com/oss/python/deepagents/cli/overview)**
|
|
54
|
+
- **[Changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/cli/CHANGELOG.md)**
|
|
55
|
+
- **[Source code](https://github.com/langchain-ai/deepagents/tree/main/libs/cli)**
|
|
56
|
+
- **[Deep Agents SDK](https://github.com/langchain-ai/deepagents)** — underlying agent harness
|
|
52
57
|
|
|
53
58
|
## 📕 Releases & Versioning
|
|
54
59
|
|
|
@@ -59,3 +64,7 @@ See our [Releases](https://docs.langchain.com/oss/python/release-policy) and [Ve
|
|
|
59
64
|
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.
|
|
60
65
|
|
|
61
66
|
For detailed information on how to contribute, see the [Contributing Guide](https://docs.langchain.com/oss/python/contributing/overview).
|
|
67
|
+
|
|
68
|
+
## 🤝 Acknowledgements
|
|
69
|
+
|
|
70
|
+
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.
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import logging
|
|
5
6
|
import os
|
|
7
|
+
import re
|
|
6
8
|
import shutil
|
|
7
9
|
import tempfile
|
|
8
10
|
from pathlib import Path
|
|
@@ -29,6 +31,7 @@ if TYPE_CHECKING:
|
|
|
29
31
|
from langgraph.runtime import Runtime
|
|
30
32
|
|
|
31
33
|
from deepagents_cli.mcp_tools import MCPServerInfo
|
|
34
|
+
from deepagents_cli.output import OutputFormat
|
|
32
35
|
|
|
33
36
|
from deepagents_cli.config import (
|
|
34
37
|
COLORS,
|
|
@@ -50,6 +53,8 @@ from deepagents_cli.unicode_security import (
|
|
|
50
53
|
summarize_issues,
|
|
51
54
|
)
|
|
52
55
|
|
|
56
|
+
logger = logging.getLogger(__name__)
|
|
57
|
+
|
|
53
58
|
DEFAULT_AGENT_NAME = "agent"
|
|
54
59
|
"""The default agent name used when no `-a` flag is provided."""
|
|
55
60
|
|
|
@@ -57,11 +62,20 @@ REQUIRE_COMPACT_TOOL_APPROVAL: bool = True
|
|
|
57
62
|
"""When `True`, `compact_conversation` requires HITL approval like other gated tools."""
|
|
58
63
|
|
|
59
64
|
|
|
60
|
-
def list_agents() -> None:
|
|
61
|
-
"""List all available agents.
|
|
65
|
+
def list_agents(*, output_format: OutputFormat = "text") -> None:
|
|
66
|
+
"""List all available agents.
|
|
67
|
+
|
|
68
|
+
Args:
|
|
69
|
+
output_format: Output format — `'text'` (Rich) or `'json'`.
|
|
70
|
+
"""
|
|
62
71
|
agents_dir = settings.user_deepagents_dir
|
|
63
72
|
|
|
64
73
|
if not agents_dir.exists() or not any(agents_dir.iterdir()):
|
|
74
|
+
if output_format == "json":
|
|
75
|
+
from deepagents_cli.output import write_json
|
|
76
|
+
|
|
77
|
+
write_json("list", [])
|
|
78
|
+
return
|
|
65
79
|
console.print("[yellow]No agents found.[/yellow]")
|
|
66
80
|
console.print(
|
|
67
81
|
"[dim]Agents will be created in ~/.deepagents/ "
|
|
@@ -70,6 +84,24 @@ def list_agents() -> None:
|
|
|
70
84
|
)
|
|
71
85
|
return
|
|
72
86
|
|
|
87
|
+
if output_format == "json":
|
|
88
|
+
from deepagents_cli.output import write_json
|
|
89
|
+
|
|
90
|
+
agents = []
|
|
91
|
+
for agent_path in sorted(agents_dir.iterdir()):
|
|
92
|
+
if agent_path.is_dir():
|
|
93
|
+
agent_name = agent_path.name
|
|
94
|
+
agents.append(
|
|
95
|
+
{
|
|
96
|
+
"name": agent_name,
|
|
97
|
+
"path": str(agent_path),
|
|
98
|
+
"has_agents_md": (agent_path / "AGENTS.md").exists(),
|
|
99
|
+
"is_default": agent_name == DEFAULT_AGENT_NAME,
|
|
100
|
+
}
|
|
101
|
+
)
|
|
102
|
+
write_json("list", agents)
|
|
103
|
+
return
|
|
104
|
+
|
|
73
105
|
console.print("\n[bold]Available Agents:[/bold]\n", style=COLORS["primary"])
|
|
74
106
|
|
|
75
107
|
for agent_path in sorted(agents_dir.iterdir()):
|
|
@@ -97,8 +129,19 @@ def list_agents() -> None:
|
|
|
97
129
|
console.print()
|
|
98
130
|
|
|
99
131
|
|
|
100
|
-
def reset_agent(
|
|
101
|
-
|
|
132
|
+
def reset_agent(
|
|
133
|
+
agent_name: str,
|
|
134
|
+
source_agent: str | None = None,
|
|
135
|
+
*,
|
|
136
|
+
output_format: OutputFormat = "text",
|
|
137
|
+
) -> None:
|
|
138
|
+
"""Reset an agent to default or copy from another agent.
|
|
139
|
+
|
|
140
|
+
Args:
|
|
141
|
+
agent_name: Name of the agent to reset.
|
|
142
|
+
source_agent: Copy AGENTS.md from this agent instead of default.
|
|
143
|
+
output_format: Output format — `'text'` (Rich) or `'json'`.
|
|
144
|
+
"""
|
|
102
145
|
agents_dir = settings.user_deepagents_dir
|
|
103
146
|
agent_dir = agents_dir / agent_name
|
|
104
147
|
|
|
@@ -121,14 +164,28 @@ def reset_agent(agent_name: str, source_agent: str | None = None) -> None:
|
|
|
121
164
|
|
|
122
165
|
if agent_dir.exists():
|
|
123
166
|
shutil.rmtree(agent_dir)
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
167
|
+
if output_format != "json":
|
|
168
|
+
console.print(
|
|
169
|
+
f"Removed existing agent directory: {agent_dir}", style=COLORS["tool"]
|
|
170
|
+
)
|
|
127
171
|
|
|
128
172
|
agent_dir.mkdir(parents=True, exist_ok=True)
|
|
129
173
|
agent_md = agent_dir / "AGENTS.md"
|
|
130
174
|
agent_md.write_text(source_content)
|
|
131
175
|
|
|
176
|
+
if output_format == "json":
|
|
177
|
+
from deepagents_cli.output import write_json
|
|
178
|
+
|
|
179
|
+
write_json(
|
|
180
|
+
"reset",
|
|
181
|
+
{
|
|
182
|
+
"agent": agent_name,
|
|
183
|
+
"reset_to": source_agent or "default",
|
|
184
|
+
"path": str(agent_dir),
|
|
185
|
+
},
|
|
186
|
+
)
|
|
187
|
+
return
|
|
188
|
+
|
|
132
189
|
console.print(
|
|
133
190
|
f"{get_glyphs().checkmark} Agent '{agent_name}' reset to {action_desc}",
|
|
134
191
|
style=COLORS["primary"],
|
|
@@ -136,12 +193,17 @@ def reset_agent(agent_name: str, source_agent: str | None = None) -> None:
|
|
|
136
193
|
console.print(f"Location: {agent_dir}\n", style=COLORS["dim"])
|
|
137
194
|
|
|
138
195
|
|
|
139
|
-
def get_system_prompt(
|
|
196
|
+
def get_system_prompt(
|
|
197
|
+
assistant_id: str,
|
|
198
|
+
sandbox_type: str | None = None,
|
|
199
|
+
*,
|
|
200
|
+
interactive: bool = True,
|
|
201
|
+
) -> str:
|
|
140
202
|
"""Get the base system prompt for the agent.
|
|
141
203
|
|
|
142
|
-
Loads the
|
|
204
|
+
Loads the base system prompt template from `system_prompt.md` and
|
|
143
205
|
interpolates dynamic sections (model identity, working directory,
|
|
144
|
-
skills path).
|
|
206
|
+
skills path, execution mode).
|
|
145
207
|
|
|
146
208
|
Args:
|
|
147
209
|
assistant_id: The agent identifier for path references
|
|
@@ -149,6 +211,8 @@ def get_system_prompt(assistant_id: str, sandbox_type: str | None = None) -> str
|
|
|
149
211
|
(`'daytona'`, `'langsmith'`, `'modal'`, `'runloop'`).
|
|
150
212
|
|
|
151
213
|
If `None`, agent is operating in local mode.
|
|
214
|
+
interactive: When `False`, the prompt is tailored for headless
|
|
215
|
+
non-interactive execution (no human in the loop).
|
|
152
216
|
|
|
153
217
|
Returns:
|
|
154
218
|
The system prompt string
|
|
@@ -166,6 +230,41 @@ def get_system_prompt(assistant_id: str, sandbox_type: str | None = None) -> str
|
|
|
166
230
|
|
|
167
231
|
skills_path = f"~/.deepagents/{assistant_id}/skills/"
|
|
168
232
|
|
|
233
|
+
if interactive:
|
|
234
|
+
mode_description = "an interactive CLI on the user's computer"
|
|
235
|
+
interactive_preamble = (
|
|
236
|
+
"The user sends you messages and you respond with text and tool "
|
|
237
|
+
"calls. Your tools run on the user's machine. The user can see "
|
|
238
|
+
"your responses and tool outputs in real time, so keep them "
|
|
239
|
+
"informed — but don't over-explain."
|
|
240
|
+
)
|
|
241
|
+
ambiguity_guidance = (
|
|
242
|
+
"- If the request is ambiguous, ask questions before acting.\n"
|
|
243
|
+
"- If asked how to approach something, explain first, then act."
|
|
244
|
+
)
|
|
245
|
+
else:
|
|
246
|
+
mode_description = (
|
|
247
|
+
"non-interactive (headless) mode — there is no human operator "
|
|
248
|
+
"monitoring your output in real time"
|
|
249
|
+
)
|
|
250
|
+
interactive_preamble = (
|
|
251
|
+
"You received a single task and must complete it fully and "
|
|
252
|
+
"autonomously. There is no human available to answer follow-up "
|
|
253
|
+
"questions, so do NOT ask for clarification — make reasonable "
|
|
254
|
+
"assumptions and proceed."
|
|
255
|
+
)
|
|
256
|
+
ambiguity_guidance = (
|
|
257
|
+
"- Do NOT ask clarifying questions — there is no human to answer "
|
|
258
|
+
"them. Make reasonable assumptions and proceed.\n"
|
|
259
|
+
"- If you encounter ambiguity, choose the most reasonable "
|
|
260
|
+
"interpretation and note your assumption briefly.\n"
|
|
261
|
+
"- Always use non-interactive command variants — no human is "
|
|
262
|
+
"available to respond to prompts. Examples: `npm init -y` not "
|
|
263
|
+
"`npm init`, `apt-get install -y` not `apt-get install`, "
|
|
264
|
+
"`yes |` or `--no-input`/`--non-interactive` flags where "
|
|
265
|
+
"available. Never run commands that block waiting for stdin."
|
|
266
|
+
)
|
|
267
|
+
|
|
169
268
|
# Build model identity section
|
|
170
269
|
model_identity_section = ""
|
|
171
270
|
if settings.model_name:
|
|
@@ -195,7 +294,14 @@ def get_system_prompt(assistant_id: str, sandbox_type: str | None = None) -> str
|
|
|
195
294
|
f"- Use `{working_dir}` as your working directory for all operations\n\n"
|
|
196
295
|
)
|
|
197
296
|
else:
|
|
198
|
-
|
|
297
|
+
try:
|
|
298
|
+
cwd = Path.cwd()
|
|
299
|
+
except OSError:
|
|
300
|
+
logger.warning(
|
|
301
|
+
"Could not determine working directory for system prompt",
|
|
302
|
+
exc_info=True,
|
|
303
|
+
)
|
|
304
|
+
cwd = Path()
|
|
199
305
|
working_dir_section = (
|
|
200
306
|
f"### Current Working Directory\n\n"
|
|
201
307
|
f"The filesystem backend is currently operating in: `{cwd}`\n\n"
|
|
@@ -208,12 +314,22 @@ def get_system_prompt(assistant_id: str, sandbox_type: str | None = None) -> str
|
|
|
208
314
|
f"- Never use relative paths - always construct full absolute paths\n\n"
|
|
209
315
|
)
|
|
210
316
|
|
|
211
|
-
|
|
212
|
-
template.replace("{
|
|
317
|
+
result = (
|
|
318
|
+
template.replace("{mode_description}", mode_description)
|
|
319
|
+
.replace("{interactive_preamble}", interactive_preamble)
|
|
320
|
+
.replace("{ambiguity_guidance}", ambiguity_guidance)
|
|
321
|
+
.replace("{model_identity_section}", model_identity_section)
|
|
213
322
|
.replace("{working_dir_section}", working_dir_section)
|
|
214
323
|
.replace("{skills_path}", skills_path)
|
|
215
324
|
)
|
|
216
325
|
|
|
326
|
+
# Detect unreplaced placeholders (defense-in-depth for template typos)
|
|
327
|
+
unreplaced = re.findall(r"\{[a-z_]+\}", result)
|
|
328
|
+
if unreplaced:
|
|
329
|
+
logger.warning("System prompt contains unreplaced placeholders: %s", unreplaced)
|
|
330
|
+
|
|
331
|
+
return result
|
|
332
|
+
|
|
217
333
|
|
|
218
334
|
def _format_write_file_description(
|
|
219
335
|
tool_call: ToolCall, _state: AgentState[Any], _runtime: Runtime[Any]
|
|
@@ -431,10 +547,12 @@ def create_cli_agent(
|
|
|
431
547
|
sandbox: SandboxBackendProtocol | None = None,
|
|
432
548
|
sandbox_type: str | None = None,
|
|
433
549
|
system_prompt: str | None = None,
|
|
550
|
+
interactive: bool = True,
|
|
434
551
|
auto_approve: bool = False,
|
|
435
552
|
enable_memory: bool = True,
|
|
436
553
|
enable_skills: bool = True,
|
|
437
554
|
enable_shell: bool = True,
|
|
555
|
+
enable_ask_user: bool = False,
|
|
438
556
|
checkpointer: BaseCheckpointSaver | None = None,
|
|
439
557
|
mcp_server_info: list[MCPServerInfo] | None = None,
|
|
440
558
|
) -> tuple[Pregel, CompositeBackend]:
|
|
@@ -456,7 +574,11 @@ def create_cli_agent(
|
|
|
456
574
|
Used for system prompt generation.
|
|
457
575
|
system_prompt: Override the default system prompt.
|
|
458
576
|
|
|
459
|
-
If `None`, generates one based on `sandbox_type
|
|
577
|
+
If `None`, generates one based on `sandbox_type`, `assistant_id`,
|
|
578
|
+
and `interactive`.
|
|
579
|
+
interactive: When `False`, the auto-generated system prompt is
|
|
580
|
+
tailored for headless non-interactive execution. Ignored when
|
|
581
|
+
`system_prompt` is provided explicitly.
|
|
460
582
|
auto_approve: If `True`, no tools trigger human-in-the-loop
|
|
461
583
|
interrupts — all calls (shell execution, file writes/edits,
|
|
462
584
|
web search, URL fetch) run automatically.
|
|
@@ -467,6 +589,7 @@ def create_cli_agent(
|
|
|
467
589
|
enable_skills: Enable `SkillsMiddleware` for custom agent skills
|
|
468
590
|
enable_shell: Enable shell execution via `LocalShellBackend`
|
|
469
591
|
(only in local mode). When enabled, the `execute` tool is available.
|
|
592
|
+
enable_ask_user: Enable the `ask_user` tool for interactive questioning.
|
|
470
593
|
checkpointer: Optional checkpointer for session persistence.
|
|
471
594
|
|
|
472
595
|
If `None`, uses `InMemorySaver` (no persistence across
|
|
@@ -523,6 +646,12 @@ def create_cli_agent(
|
|
|
523
646
|
# Build middleware stack based on enabled features
|
|
524
647
|
agent_middleware = []
|
|
525
648
|
|
|
649
|
+
# Add ask_user middleware (must be early so its tool is available)
|
|
650
|
+
if enable_ask_user:
|
|
651
|
+
from deepagents_cli.ask_user import AskUserMiddleware
|
|
652
|
+
|
|
653
|
+
agent_middleware.append(AskUserMiddleware())
|
|
654
|
+
|
|
526
655
|
# Add memory middleware
|
|
527
656
|
if enable_memory:
|
|
528
657
|
memory_sources = [str(settings.get_user_agent_md_path(assistant_id))]
|
|
@@ -592,7 +721,9 @@ def create_cli_agent(
|
|
|
592
721
|
# Get or use custom system prompt
|
|
593
722
|
if system_prompt is None:
|
|
594
723
|
system_prompt = get_system_prompt(
|
|
595
|
-
assistant_id=assistant_id,
|
|
724
|
+
assistant_id=assistant_id,
|
|
725
|
+
sandbox_type=sandbox_type,
|
|
726
|
+
interactive=interactive,
|
|
596
727
|
)
|
|
597
728
|
|
|
598
729
|
# Configure interrupt_on based on auto_approve setting
|
|
@@ -635,15 +766,10 @@ def create_cli_agent(
|
|
|
635
766
|
|
|
636
767
|
model = resolve_model(model)
|
|
637
768
|
|
|
638
|
-
from deepagents.middleware.summarization import
|
|
639
|
-
SummarizationToolMiddleware,
|
|
640
|
-
create_summarization_middleware,
|
|
641
|
-
)
|
|
769
|
+
from deepagents.middleware.summarization import create_summarization_tool_middleware
|
|
642
770
|
|
|
643
771
|
agent_middleware.append(
|
|
644
|
-
|
|
645
|
-
create_summarization_middleware(model, composite_backend)
|
|
646
|
-
)
|
|
772
|
+
create_summarization_tool_middleware(model, composite_backend)
|
|
647
773
|
)
|
|
648
774
|
|
|
649
775
|
# Create the agent
|