deepagents-cli 0.0.28__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.28 → deepagents_cli-0.0.29}/CHANGELOG.md +32 -16
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/PKG-INFO +3 -2
- deepagents_cli-0.0.29/deepagents_cli/_version.py +3 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/agent.py +47 -5
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/app.py +270 -134
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/app.tcss +0 -5
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/config.py +61 -15
- deepagents_cli-0.0.29/deepagents_cli/hooks.py +206 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/local_context.py +54 -6
- {deepagents_cli-0.0.28 → 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.28 → deepagents_cli-0.0.29}/deepagents_cli/non_interactive.py +121 -20
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/textual_adapter.py +17 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/tool_display.py +46 -18
- {deepagents_cli-0.0.28 → 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.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/_links.py +24 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/approval.py +86 -6
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/autocomplete.py +2 -1
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/chat_input.py +14 -15
- deepagents_cli-0.0.29/deepagents_cli/widgets/mcp_viewer.py +348 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/messages.py +6 -9
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/status.py +8 -8
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/welcome.py +13 -1
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/pyproject.toml +5 -2
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_agent.py +52 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_app.py +70 -70
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_approval.py +30 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_args.py +33 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_chat_input.py +47 -47
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_config.py +22 -0
- deepagents_cli-0.0.29/tests/unit_tests/test_hooks.py +363 -0
- {deepagents_cli-0.0.28 → 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.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_messages.py +16 -4
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_model_switch.py +203 -1
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_non_interactive.py +159 -1
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_shell_allow_list.py +27 -1
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_ui.py +12 -0
- deepagents_cli-0.0.29/tests/unit_tests/test_unicode_security.py +246 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/uv.lock +280 -8
- deepagents_cli-0.0.28/deepagents_cli/_version.py +0 -3
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/.gitignore +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/Makefile +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/README.md +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/__init__.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/__main__.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/built_in_skills/__init__.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/built_in_skills/skill-creator/SKILL.md +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/clipboard.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/default_agent_prompt.md +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/file_ops.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/input.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/integrations/__init__.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/integrations/daytona.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/integrations/langsmith.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/integrations/modal.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/integrations/runloop.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/integrations/sandbox_factory.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/integrations/sandbox_provider.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/media_utils.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/model_config.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/project_utils.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/py.typed +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/sessions.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/skills/__init__.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/skills/commands.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/skills/load.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/subagents.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/system_prompt.md +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/tools.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/update_check.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/__init__.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/diff.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/history.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/loading.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/message_store.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/model_selector.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/thread_selector.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/tool_renderers.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/tool_widgets.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/images/cli.png +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/scripts/check_imports.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/README.md +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/integration_tests/__init__.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/integration_tests/benchmarks/__init__.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/integration_tests/conftest.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/integration_tests/test_sandbox_factory.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/integration_tests/test_sandbox_operations.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/__init__.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/conftest.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/skills/__init__.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/skills/test_commands.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/skills/test_load.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_autocomplete.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_charset.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_compact.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_compact_tool.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_end_to_end.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_exception_handling.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_file_ops.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_history.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_imports.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_input_parsing.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_main.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_main_args.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_media_utils.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_message_store.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_model_config.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_model_selector.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_sessions.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_subagents.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_textual_adapter.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_thread_selector.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_token_tracker.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_update_check.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_version.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_welcome.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/tools/__init__.py +0 -0
- {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/tools/test_fetch_url.py +0 -0
|
@@ -1,11 +1,27 @@
|
|
|
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
|
+
|
|
3
19
|
## [0.0.28](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.27...deepagents-cli==0.0.28) (2026-03-05)
|
|
4
20
|
|
|
5
21
|
### Features
|
|
6
22
|
|
|
7
|
-
*
|
|
8
|
-
*
|
|
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))
|
|
9
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))
|
|
10
26
|
* Tab autocomplete in model selector ([#1669](https://github.com/langchain-ai/deepagents/issues/1669)) ([28bd0aa](https://github.com/langchain-ai/deepagents/commit/28bd0aaca737b8bb194ecb9f6612989b9aacec02))
|
|
11
27
|
|
|
@@ -19,11 +35,11 @@
|
|
|
19
35
|
|
|
20
36
|
### Features
|
|
21
37
|
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
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))
|
|
27
43
|
|
|
28
44
|
### Bug Fixes
|
|
29
45
|
|
|
@@ -40,8 +56,8 @@
|
|
|
40
56
|
|
|
41
57
|
* Compaction hook ([#1420](https://github.com/langchain-ai/deepagents/issues/1420)) ([e87cdad](https://github.com/langchain-ai/deepagents/commit/e87cdaddb9a984c4fd189b4f71303881edb32cb2))
|
|
42
58
|
* `/compact` command ([#1579](https://github.com/langchain-ai/deepagents/issues/1579)) ([46e9e95](https://github.com/langchain-ai/deepagents/commit/46e9e950087e973175d49d6a863cfa9d2f241528))
|
|
43
|
-
*
|
|
44
|
-
*
|
|
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))
|
|
45
61
|
* Show summarization status and notification ([#919](https://github.com/langchain-ai/deepagents/issues/919)) ([2e3cb74](https://github.com/langchain-ai/deepagents/commit/2e3cb743eff8e0a33b215359132cee13a673a4df))
|
|
46
62
|
|
|
47
63
|
### Bug Fixes
|
|
@@ -85,7 +101,7 @@
|
|
|
85
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))
|
|
86
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))
|
|
87
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))
|
|
88
|
-
*
|
|
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))
|
|
89
105
|
|
|
90
106
|
### Bug Fixes
|
|
91
107
|
|
|
@@ -98,7 +114,7 @@
|
|
|
98
114
|
### Features
|
|
99
115
|
|
|
100
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))
|
|
101
|
-
*
|
|
117
|
+
* Skill deletion command ([#580](https://github.com/langchain-ai/deepagents/issues/580)) ([40a8d86](https://github.com/langchain-ai/deepagents/commit/40a8d866f952e0cf8d856e2fa360de771721b99a))
|
|
102
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))
|
|
103
119
|
* Dismiss completion dropdown on `esc` ([#1362](https://github.com/langchain-ai/deepagents/issues/1362)) ([961b7fc](https://github.com/langchain-ai/deepagents/commit/961b7fc764a7fbf63466d78c1d80b154b5d1692b))
|
|
104
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))
|
|
@@ -138,10 +154,10 @@
|
|
|
138
154
|
### Features
|
|
139
155
|
|
|
140
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))
|
|
141
|
-
*
|
|
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)
|
|
142
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)
|
|
143
|
-
*
|
|
144
|
-
*
|
|
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))
|
|
145
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))
|
|
146
162
|
|
|
147
163
|
### Bug Fixes
|
|
@@ -178,7 +194,7 @@
|
|
|
178
194
|
### Features
|
|
179
195
|
|
|
180
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))
|
|
181
|
-
*
|
|
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))
|
|
182
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))
|
|
183
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))
|
|
184
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))
|
|
@@ -198,7 +214,7 @@
|
|
|
198
214
|
|
|
199
215
|
### Features
|
|
200
216
|
|
|
201
|
-
*
|
|
217
|
+
* LangSmith sandbox integration ([#1077](https://github.com/langchain-ai/deepagents/issues/1077)) ([7d17be0](https://github.com/langchain-ai/deepagents/commit/7d17be00b59e586c55517eaca281342e1a6559ff))
|
|
202
218
|
* Resume thread enhancements ([#1065](https://github.com/langchain-ai/deepagents/issues/1065)) ([e6663b0](https://github.com/langchain-ai/deepagents/commit/e6663b0b314582583afd32cb906a6d502cd8f16b))
|
|
203
219
|
* Support .`agents/skills` dir alias ([#1059](https://github.com/langchain-ai/deepagents/issues/1059)) ([ec1db17](https://github.com/langchain-ai/deepagents/commit/ec1db172c12bc8b8f85bb03138e442353d4b1013))
|
|
204
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:
|