deepagents-cli 0.0.27__tar.gz → 0.0.29__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.27 → deepagents_cli-0.0.29}/CHANGELOG.md +45 -14
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/PKG-INFO +3 -2
- deepagents_cli-0.0.29/deepagents_cli/_version.py +3 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/agent.py +47 -5
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/app.py +280 -137
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/app.tcss +0 -5
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/config.py +80 -18
- deepagents_cli-0.0.29/deepagents_cli/hooks.py +206 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/input.py +143 -33
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/local_context.py +54 -6
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/main.py +167 -2
- deepagents_cli-0.0.29/deepagents_cli/mcp_tools.py +598 -0
- deepagents_cli-0.0.29/deepagents_cli/mcp_trust.py +168 -0
- deepagents_cli-0.0.27/deepagents_cli/image_utils.py → deepagents_cli-0.0.29/deepagents_cli/media_utils.py +184 -9
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/non_interactive.py +121 -20
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/textual_adapter.py +28 -7
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/tool_display.py +59 -20
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/ui.py +13 -1
- deepagents_cli-0.0.29/deepagents_cli/unicode_security.py +516 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/widgets/_links.py +24 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/widgets/approval.py +86 -6
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/widgets/autocomplete.py +91 -25
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/widgets/chat_input.py +87 -61
- deepagents_cli-0.0.29/deepagents_cli/widgets/mcp_viewer.py +348 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/widgets/messages.py +6 -9
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/widgets/model_selector.py +18 -8
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/widgets/status.py +62 -31
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/widgets/welcome.py +13 -1
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/pyproject.toml +5 -2
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_agent.py +52 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_app.py +71 -71
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_approval.py +30 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_args.py +33 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_autocomplete.py +114 -2
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_chat_input.py +190 -57
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_compact.py +2 -2
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_config.py +24 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_exception_handling.py +16 -16
- deepagents_cli-0.0.29/tests/unit_tests/test_hooks.py +363 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_local_context.py +142 -0
- deepagents_cli-0.0.29/tests/unit_tests/test_mcp_tools.py +1344 -0
- deepagents_cli-0.0.29/tests/unit_tests/test_mcp_trust.py +112 -0
- deepagents_cli-0.0.29/tests/unit_tests/test_mcp_viewer.py +189 -0
- deepagents_cli-0.0.29/tests/unit_tests/test_media_utils.py +733 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_messages.py +16 -4
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_model_selector.py +83 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_model_switch.py +203 -1
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_non_interactive.py +159 -1
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_shell_allow_list.py +27 -1
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_ui.py +40 -0
- deepagents_cli-0.0.29/tests/unit_tests/test_unicode_security.py +246 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/uv.lock +280 -8
- deepagents_cli-0.0.27/deepagents_cli/_version.py +0 -3
- deepagents_cli-0.0.27/tests/unit_tests/test_image_utils.py +0 -360
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/.gitignore +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/Makefile +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/README.md +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/__init__.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/__main__.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/built_in_skills/__init__.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/built_in_skills/skill-creator/SKILL.md +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/clipboard.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/default_agent_prompt.md +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/file_ops.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/integrations/__init__.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/integrations/daytona.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/integrations/langsmith.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/integrations/modal.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/integrations/runloop.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/integrations/sandbox_factory.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/integrations/sandbox_provider.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/model_config.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/project_utils.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/py.typed +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/sessions.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/skills/__init__.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/skills/commands.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/skills/load.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/subagents.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/system_prompt.md +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/tools.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/update_check.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/widgets/__init__.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/widgets/diff.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/widgets/history.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/widgets/loading.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/widgets/message_store.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/widgets/thread_selector.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/widgets/tool_renderers.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/deepagents_cli/widgets/tool_widgets.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/images/cli.png +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/scripts/check_imports.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/README.md +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/integration_tests/__init__.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/integration_tests/benchmarks/__init__.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/integration_tests/conftest.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/integration_tests/test_sandbox_factory.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/integration_tests/test_sandbox_operations.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/__init__.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/conftest.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/skills/__init__.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/skills/test_commands.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/skills/test_load.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_charset.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_compact_tool.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_end_to_end.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_file_ops.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_history.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_imports.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_input_parsing.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_main.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_main_args.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_message_store.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_model_config.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_sessions.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_subagents.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_textual_adapter.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_thread_selector.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_token_tracker.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_update_check.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_version.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/test_welcome.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/tools/__init__.py +0 -0
- {deepagents_cli-0.0.27 → deepagents_cli-0.0.29}/tests/unit_tests/tools/test_fetch_url.py +0 -0
|
@@ -1,14 +1,45 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.0.29](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.28...deepagents-cli==0.0.29) (2026-03-06)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* `--model-params` flag on `/model` command ([#1679](https://github.com/langchain-ai/deepagents/issues/1679)) ([9b6433d](https://github.com/langchain-ai/deepagents/commit/9b6433d557e6e8b3d39c10577595b0ef6d741c94))
|
|
8
|
+
* `--shell-allow-list all` ([#1695](https://github.com/langchain-ai/deepagents/issues/1695)) ([4aec7b3](https://github.com/langchain-ai/deepagents/commit/4aec7b35caa7723b8bbda189c9ca1d213e0a9a6d))
|
|
9
|
+
* Hook dispatch for external tool integration ([#1553](https://github.com/langchain-ai/deepagents/issues/1553)) ([cdb2230](https://github.com/langchain-ai/deepagents/commit/cdb2230f04ce7a2b7ef0837cbbc223dcbf04b78e))
|
|
10
|
+
* Detect deceptive unicode in tool args and URLs ([#1694](https://github.com/langchain-ai/deepagents/issues/1694)) ([d4c8544](https://github.com/langchain-ai/deepagents/commit/d4c8544bd6bf3b6df50b99f8a0c7208c20f86bd9))
|
|
11
|
+
* MCP tool loading with auto-discovery ([#801](https://github.com/langchain-ai/deepagents/issues/801)) ([df0908e](https://github.com/langchain-ai/deepagents/commit/df0908ebed4e17f0fd904d83e9d4ea38dfc1207d))
|
|
12
|
+
* Surface mcp server/tool info in system prompt ([#1693](https://github.com/langchain-ai/deepagents/issues/1693)) ([068e075](https://github.com/langchain-ai/deepagents/commit/068e075ecd4a7f3e35219ae6b87707bd9dc3f785))
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* Anchor `ChatInput` below scrollable area ([#1671](https://github.com/langchain-ai/deepagents/issues/1671)) ([11105d9](https://github.com/langchain-ai/deepagents/commit/11105d93f593d802d5e120c095f16d771c674bef))
|
|
17
|
+
* Remove dead chat-spacer widget and resize handler ([#1686](https://github.com/langchain-ai/deepagents/issues/1686)) ([b6ecec5](https://github.com/langchain-ai/deepagents/commit/b6ecec5bd14677a878c92a1b51e950f61fabf8d3))
|
|
18
|
+
|
|
19
|
+
## [0.0.28](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.27...deepagents-cli==0.0.28) (2026-03-05)
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
* Video support to multimodal inputs ([#1521](https://github.com/langchain-ai/deepagents/issues/1521)) ([f9b49b7](https://github.com/langchain-ai/deepagents/commit/f9b49b7341bd42b5278a03496743e4709689598e))
|
|
24
|
+
* NVIDIA API key support and default model ([#1577](https://github.com/langchain-ai/deepagents/issues/1577)) ([9ce2660](https://github.com/langchain-ai/deepagents/commit/9ce2660a67c3497cff18d27131fb7ef49e85b310))
|
|
25
|
+
* Fuzzy search for slash command autocomplete ([#1660](https://github.com/langchain-ai/deepagents/issues/1660)) ([5f6e9c0](https://github.com/langchain-ai/deepagents/commit/5f6e9c014e6a99783b3113184cc12f0179a902f0))
|
|
26
|
+
* Tab autocomplete in model selector ([#1669](https://github.com/langchain-ai/deepagents/issues/1669)) ([28bd0aa](https://github.com/langchain-ai/deepagents/commit/28bd0aaca737b8bb194ecb9f6612989b9aacec02))
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
* Backspace at cursor position 0 exits mode even with text ([#1666](https://github.com/langchain-ai/deepagents/issues/1666)) ([dfa4c1f](https://github.com/langchain-ai/deepagents/commit/dfa4c1fedcecf2bb17d8ffef01cf50efe6c80fb0))
|
|
31
|
+
* Skip auto-approve toggle when modal screen is open ([#1668](https://github.com/langchain-ai/deepagents/issues/1668)) ([6597f0b](https://github.com/langchain-ai/deepagents/commit/6597f0b8da3c3bd701a42e228660d459cefe3f64))
|
|
32
|
+
* Truncate model name in status bar on narrow terminals ([#1665](https://github.com/langchain-ai/deepagents/issues/1665)) ([0e24a04](https://github.com/langchain-ai/deepagents/commit/0e24a04aa9e5894735522ce23295bb27fd2b8190))
|
|
33
|
+
|
|
3
34
|
## [0.0.27](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.26...deepagents-cli==0.0.27) (2026-03-04)
|
|
4
35
|
|
|
5
36
|
### Features
|
|
6
37
|
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
38
|
+
* Background PyPI update check ([#1648](https://github.com/langchain-ai/deepagents/issues/1648)) ([2e7a5e7](https://github.com/langchain-ai/deepagents/commit/2e7a5e7d97f64147ab2d000fae833fe681f1d6b2))
|
|
39
|
+
* Install script ([#1649](https://github.com/langchain-ai/deepagents/issues/1649)) ([68f6ef9](https://github.com/langchain-ai/deepagents/commit/68f6ef96e7d66b2c98d1371e91e5d25f107b80fe))
|
|
40
|
+
* Fuzzy search for model switcher ([#1266](https://github.com/langchain-ai/deepagents/issues/1266)) ([a6bbb18](https://github.com/langchain-ai/deepagents/commit/a6bbb182a2336ba748d93a06b9fcf27966321e20))
|
|
41
|
+
* Model usage stats display ([#1587](https://github.com/langchain-ai/deepagents/issues/1587)) ([a1208db](https://github.com/langchain-ai/deepagents/commit/a1208db096761eb54e0fe712a5aa922502575cb6))
|
|
42
|
+
* Substring matching in command history navigation ([#1301](https://github.com/langchain-ai/deepagents/issues/1301)) ([e276d5a](https://github.com/langchain-ai/deepagents/commit/e276d5a64bee9394f53ab993b01447023bcd4c7d))
|
|
12
43
|
|
|
13
44
|
### Bug Fixes
|
|
14
45
|
|
|
@@ -25,8 +56,8 @@
|
|
|
25
56
|
|
|
26
57
|
* Compaction hook ([#1420](https://github.com/langchain-ai/deepagents/issues/1420)) ([e87cdad](https://github.com/langchain-ai/deepagents/commit/e87cdaddb9a984c4fd189b4f71303881edb32cb2))
|
|
27
58
|
* `/compact` command ([#1579](https://github.com/langchain-ai/deepagents/issues/1579)) ([46e9e95](https://github.com/langchain-ai/deepagents/commit/46e9e950087e973175d49d6a863cfa9d2f241528))
|
|
28
|
-
*
|
|
29
|
-
*
|
|
59
|
+
* `--profile-override` CLI flag ([#1605](https://github.com/langchain-ai/deepagents/issues/1605)) ([1984099](https://github.com/langchain-ai/deepagents/commit/1984099ae9ac4b0c13dc08722abb9d56055da7b7))
|
|
60
|
+
* Model profile overrides in config ([#1603](https://github.com/langchain-ai/deepagents/issues/1603)) ([d3d6899](https://github.com/langchain-ai/deepagents/commit/d3d6899209b7cf97447da0eee642b3f55261ffbc))
|
|
30
61
|
* Show summarization status and notification ([#919](https://github.com/langchain-ai/deepagents/issues/919)) ([2e3cb74](https://github.com/langchain-ai/deepagents/commit/2e3cb743eff8e0a33b215359132cee13a673a4df))
|
|
31
62
|
|
|
32
63
|
### Bug Fixes
|
|
@@ -70,7 +101,7 @@
|
|
|
70
101
|
* Display model name and context window size using `/tokens` ([#1441](https://github.com/langchain-ai/deepagents/issues/1441)) ([ff7ef0f](https://github.com/langchain-ai/deepagents/commit/ff7ef0f87e6dfc6c581edb34b1a57be7ff6e059c))
|
|
71
102
|
* Refresh local context after summarization events ([#1384](https://github.com/langchain-ai/deepagents/issues/1384)) ([dcb9583](https://github.com/langchain-ai/deepagents/commit/dcb95839de360f03d2fc30c9144096874b24006f))
|
|
72
103
|
* Windowed thread hydration and configurable thread limit ([#1435](https://github.com/langchain-ai/deepagents/issues/1435)) ([9da8d0b](https://github.com/langchain-ai/deepagents/commit/9da8d0b5c86441e87b85ee6f8db1d23848a823ed))
|
|
73
|
-
*
|
|
104
|
+
* Per-command `timeout` override to `execute()` ([#1154](https://github.com/langchain-ai/deepagents/issues/1154)) ([49277d4](https://github.com/langchain-ai/deepagents/commit/49277d45a026c86b5bf176142dcb1dfc2c7643ae))
|
|
74
105
|
|
|
75
106
|
### Bug Fixes
|
|
76
107
|
|
|
@@ -83,7 +114,7 @@
|
|
|
83
114
|
### Features
|
|
84
115
|
|
|
85
116
|
* Add drag-and-drop image attachment to chat input ([#1386](https://github.com/langchain-ai/deepagents/issues/1386)) ([cd3d89b](https://github.com/langchain-ai/deepagents/commit/cd3d89b4419b4c164915ff745afff99cb11b55a5))
|
|
86
|
-
*
|
|
117
|
+
* Skill deletion command ([#580](https://github.com/langchain-ai/deepagents/issues/580)) ([40a8d86](https://github.com/langchain-ai/deepagents/commit/40a8d866f952e0cf8d856e2fa360de771721b99a))
|
|
87
118
|
* Add visual mode indicators to chat input ([#1371](https://github.com/langchain-ai/deepagents/issues/1371)) ([1ea6159](https://github.com/langchain-ai/deepagents/commit/1ea6159b068b8c7d721d90a5c196e2eb9877c1c5))
|
|
88
119
|
* Dismiss completion dropdown on `esc` ([#1362](https://github.com/langchain-ai/deepagents/issues/1362)) ([961b7fc](https://github.com/langchain-ai/deepagents/commit/961b7fc764a7fbf63466d78c1d80b154b5d1692b))
|
|
89
120
|
* Expand local context & implement via bash for sandbox support ([#1295](https://github.com/langchain-ai/deepagents/issues/1295)) ([de8bc7c](https://github.com/langchain-ai/deepagents/commit/de8bc7cbbd7780ef250b3838f61ace85d4465c0a))
|
|
@@ -123,10 +154,10 @@
|
|
|
123
154
|
### Features
|
|
124
155
|
|
|
125
156
|
* Support piped stdin as prompt input ([#1254](https://github.com/langchain-ai/deepagents/issues/1254)) ([cca61ff](https://github.com/langchain-ai/deepagents/commit/cca61ff5edb5e2424bfc54b2ac33b59a520fdd6a))
|
|
126
|
-
*
|
|
157
|
+
* `/threads` command switcher ([#1262](https://github.com/langchain-ai/deepagents/issues/1262)) ([45bf38d](https://github.com/langchain-ai/deepagents/commit/45bf38d7c5ca7ca05ec58c320494a692e419b632)), closes [#1111](https://github.com/langchain-ai/deepagents/issues/1111)
|
|
127
158
|
* Make thread link clickable when switching ([#1296](https://github.com/langchain-ai/deepagents/issues/1296)) ([9409520](https://github.com/langchain-ai/deepagents/commit/9409520d524c576c3b0b9686c96a1749ee9dcbbb)), closes [#1291](https://github.com/langchain-ai/deepagents/issues/1291)
|
|
128
|
-
*
|
|
129
|
-
*
|
|
159
|
+
* `/trace` command to open LangSmith thread, link in switcher ([#1291](https://github.com/langchain-ai/deepagents/issues/1291)) ([fbbd45b](https://github.com/langchain-ai/deepagents/commit/fbbd45b51be2cf09726a3cd0adfcb09cb2b1ff46))
|
|
160
|
+
* `/changelog`, `/feedback`, `/docs` ([#1261](https://github.com/langchain-ai/deepagents/issues/1261)) ([4561afb](https://github.com/langchain-ai/deepagents/commit/4561afbea17bb11f7fc02ae9f19db15229656280))
|
|
130
161
|
* Show langsmith thread url on session teardown ([#1285](https://github.com/langchain-ai/deepagents/issues/1285)) ([899fd1c](https://github.com/langchain-ai/deepagents/commit/899fd1cdea6f7b2003992abd3f6173d630849a90))
|
|
131
162
|
|
|
132
163
|
### Bug Fixes
|
|
@@ -163,7 +194,7 @@
|
|
|
163
194
|
### Features
|
|
164
195
|
|
|
165
196
|
* Add click support and hover styling to autocomplete popup ([#1130](https://github.com/langchain-ai/deepagents/issues/1130)) ([b1cc83d](https://github.com/langchain-ai/deepagents/commit/b1cc83d277e01614b0cc4141993cde40ce68d632))
|
|
166
|
-
*
|
|
197
|
+
* Per-command `timeout` override to `execute` tool ([#1158](https://github.com/langchain-ai/deepagents/issues/1158)) ([cb390ef](https://github.com/langchain-ai/deepagents/commit/cb390ef7a89966760f08c5aceb2211220e8653b8))
|
|
167
198
|
* Highlight file mentions and support CJK parsing ([#558](https://github.com/langchain-ai/deepagents/issues/558)) ([cebe333](https://github.com/langchain-ai/deepagents/commit/cebe333246f8bea6b04d6283985e102c2ed5d744))
|
|
168
199
|
* Make thread id in splash clickable ([#1159](https://github.com/langchain-ai/deepagents/issues/1159)) ([6087fb2](https://github.com/langchain-ai/deepagents/commit/6087fb276f39ed9a388d722ff1be88d94debf49f))
|
|
169
200
|
* Use LocalShellBackend, gives shell to subagents ([#1107](https://github.com/langchain-ai/deepagents/issues/1107)) ([b57ea39](https://github.com/langchain-ai/deepagents/commit/b57ea3906680818b94ecca88b92082d4dea63694))
|
|
@@ -183,7 +214,7 @@
|
|
|
183
214
|
|
|
184
215
|
### Features
|
|
185
216
|
|
|
186
|
-
*
|
|
217
|
+
* LangSmith sandbox integration ([#1077](https://github.com/langchain-ai/deepagents/issues/1077)) ([7d17be0](https://github.com/langchain-ai/deepagents/commit/7d17be00b59e586c55517eaca281342e1a6559ff))
|
|
187
218
|
* Resume thread enhancements ([#1065](https://github.com/langchain-ai/deepagents/issues/1065)) ([e6663b0](https://github.com/langchain-ai/deepagents/commit/e6663b0b314582583afd32cb906a6d502cd8f16b))
|
|
188
219
|
* Support .`agents/skills` dir alias ([#1059](https://github.com/langchain-ai/deepagents/issues/1059)) ([ec1db17](https://github.com/langchain-ai/deepagents/commit/ec1db172c12bc8b8f85bb03138e442353d4b1013))
|
|
189
220
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deepagents-cli
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.29
|
|
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/
|
|
@@ -25,7 +25,8 @@ Classifier: Topic :: Terminals
|
|
|
25
25
|
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
|
-
Requires-Dist: deepagents==0.4.
|
|
28
|
+
Requires-Dist: deepagents==0.4.7
|
|
29
|
+
Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.2.0
|
|
29
30
|
Requires-Dist: langchain-openai<2.0.0,>=1.1.8
|
|
30
31
|
Requires-Dist: langchain<2.0.0,>=1.2.10
|
|
31
32
|
Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.0.0
|
|
@@ -28,6 +28,8 @@ if TYPE_CHECKING:
|
|
|
28
28
|
from langgraph.pregel import Pregel
|
|
29
29
|
from langgraph.runtime import Runtime
|
|
30
30
|
|
|
31
|
+
from deepagents_cli.mcp_tools import MCPServerInfo
|
|
32
|
+
|
|
31
33
|
from deepagents_cli.config import (
|
|
32
34
|
COLORS,
|
|
33
35
|
config,
|
|
@@ -39,6 +41,14 @@ from deepagents_cli.config import (
|
|
|
39
41
|
from deepagents_cli.integrations.sandbox_factory import get_default_working_dir
|
|
40
42
|
from deepagents_cli.local_context import LocalContextMiddleware, _ExecutableBackend
|
|
41
43
|
from deepagents_cli.subagents import list_subagents
|
|
44
|
+
from deepagents_cli.unicode_security import (
|
|
45
|
+
check_url_safety,
|
|
46
|
+
detect_dangerous_unicode,
|
|
47
|
+
format_warning_detail,
|
|
48
|
+
render_with_unicode_markers,
|
|
49
|
+
strip_dangerous_unicode,
|
|
50
|
+
summarize_issues,
|
|
51
|
+
)
|
|
42
52
|
|
|
43
53
|
DEFAULT_AGENT_NAME = "agent"
|
|
44
54
|
"""The default agent name used when no `-a` flag is provided."""
|
|
@@ -266,12 +276,28 @@ def _format_fetch_url_description(
|
|
|
266
276
|
Formatted description string for the fetch_url tool call.
|
|
267
277
|
"""
|
|
268
278
|
args = tool_call["args"]
|
|
269
|
-
url = args.get("url", "unknown")
|
|
279
|
+
url = str(args.get("url", "unknown"))
|
|
280
|
+
display_url = strip_dangerous_unicode(url)
|
|
270
281
|
timeout = args.get("timeout", 30)
|
|
282
|
+
safety = check_url_safety(url)
|
|
283
|
+
|
|
284
|
+
warning_lines: list[str] = []
|
|
285
|
+
if not safety.safe:
|
|
286
|
+
detail = format_warning_detail(safety.warnings)
|
|
287
|
+
warning_lines.append(f"{get_glyphs().warning} URL warning: {detail}")
|
|
288
|
+
if safety.decoded_domain:
|
|
289
|
+
warning_lines.append(
|
|
290
|
+
f"{get_glyphs().warning} Decoded domain: {safety.decoded_domain}"
|
|
291
|
+
)
|
|
292
|
+
|
|
293
|
+
warning_block = "\n".join(warning_lines)
|
|
294
|
+
if warning_block:
|
|
295
|
+
warning_block = f"\n{warning_block}"
|
|
271
296
|
|
|
272
297
|
return (
|
|
273
|
-
f"URL: {
|
|
298
|
+
f"URL: {display_url}\nTimeout: {timeout}s\n\n"
|
|
274
299
|
f"{get_glyphs().warning} Will fetch and convert web content to markdown"
|
|
300
|
+
f"{warning_block}"
|
|
275
301
|
)
|
|
276
302
|
|
|
277
303
|
|
|
@@ -317,8 +343,20 @@ def _format_execute_description(
|
|
|
317
343
|
Formatted description string for the execute tool call.
|
|
318
344
|
"""
|
|
319
345
|
args = tool_call["args"]
|
|
320
|
-
|
|
321
|
-
|
|
346
|
+
command_raw = str(args.get("command", "N/A"))
|
|
347
|
+
command = strip_dangerous_unicode(command_raw)
|
|
348
|
+
lines = [f"Execute Command: {command}", f"Working Directory: {Path.cwd()}"]
|
|
349
|
+
|
|
350
|
+
issues = detect_dangerous_unicode(command_raw)
|
|
351
|
+
if issues:
|
|
352
|
+
summary = summarize_issues(issues)
|
|
353
|
+
lines.append(f"{get_glyphs().warning} Hidden Unicode detected: {summary}")
|
|
354
|
+
raw_marked = render_with_unicode_markers(command_raw)
|
|
355
|
+
if len(raw_marked) > 220: # noqa: PLR2004 # UI display truncation threshold
|
|
356
|
+
raw_marked = raw_marked[:220] + "..."
|
|
357
|
+
lines.append(f"Raw: {raw_marked}")
|
|
358
|
+
|
|
359
|
+
return "\n".join(lines)
|
|
322
360
|
|
|
323
361
|
|
|
324
362
|
def _add_interrupt_on() -> dict[str, InterruptOnConfig]:
|
|
@@ -398,6 +436,7 @@ def create_cli_agent(
|
|
|
398
436
|
enable_skills: bool = True,
|
|
399
437
|
enable_shell: bool = True,
|
|
400
438
|
checkpointer: BaseCheckpointSaver | None = None,
|
|
439
|
+
mcp_server_info: list[MCPServerInfo] | None = None,
|
|
401
440
|
) -> tuple[Pregel, CompositeBackend]:
|
|
402
441
|
"""Create a CLI-configured agent with flexible options.
|
|
403
442
|
|
|
@@ -432,6 +471,7 @@ def create_cli_agent(
|
|
|
432
471
|
|
|
433
472
|
If `None`, uses `InMemorySaver` (no persistence across
|
|
434
473
|
CLI invocations).
|
|
474
|
+
mcp_server_info: MCP server metadata to surface in the system prompt.
|
|
435
475
|
|
|
436
476
|
Returns:
|
|
437
477
|
2-tuple of `(agent_graph, backend)`
|
|
@@ -545,7 +585,9 @@ def create_cli_agent(
|
|
|
545
585
|
# Uses backend.execute() so it works in both local shell and remote sandbox modes.
|
|
546
586
|
# Only enabled when the backend supports shell execution.
|
|
547
587
|
if isinstance(backend, _ExecutableBackend):
|
|
548
|
-
agent_middleware.append(
|
|
588
|
+
agent_middleware.append(
|
|
589
|
+
LocalContextMiddleware(backend=backend, mcp_server_info=mcp_server_info)
|
|
590
|
+
)
|
|
549
591
|
|
|
550
592
|
# Get or use custom system prompt
|
|
551
593
|
if system_prompt is None:
|