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.
Files changed (133) hide show
  1. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/CHANGELOG.md +32 -16
  2. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/PKG-INFO +3 -2
  3. deepagents_cli-0.0.29/deepagents_cli/_version.py +3 -0
  4. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/agent.py +47 -5
  5. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/app.py +270 -134
  6. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/app.tcss +0 -5
  7. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/config.py +61 -15
  8. deepagents_cli-0.0.29/deepagents_cli/hooks.py +206 -0
  9. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/local_context.py +54 -6
  10. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/main.py +167 -2
  11. deepagents_cli-0.0.29/deepagents_cli/mcp_tools.py +598 -0
  12. deepagents_cli-0.0.29/deepagents_cli/mcp_trust.py +168 -0
  13. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/non_interactive.py +121 -20
  14. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/textual_adapter.py +17 -0
  15. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/tool_display.py +46 -18
  16. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/ui.py +13 -1
  17. deepagents_cli-0.0.29/deepagents_cli/unicode_security.py +516 -0
  18. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/_links.py +24 -0
  19. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/approval.py +86 -6
  20. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/autocomplete.py +2 -1
  21. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/chat_input.py +14 -15
  22. deepagents_cli-0.0.29/deepagents_cli/widgets/mcp_viewer.py +348 -0
  23. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/messages.py +6 -9
  24. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/status.py +8 -8
  25. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/welcome.py +13 -1
  26. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/pyproject.toml +5 -2
  27. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_agent.py +52 -0
  28. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_app.py +70 -70
  29. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_approval.py +30 -0
  30. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_args.py +33 -0
  31. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_chat_input.py +47 -47
  32. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_config.py +22 -0
  33. deepagents_cli-0.0.29/tests/unit_tests/test_hooks.py +363 -0
  34. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_local_context.py +142 -0
  35. deepagents_cli-0.0.29/tests/unit_tests/test_mcp_tools.py +1344 -0
  36. deepagents_cli-0.0.29/tests/unit_tests/test_mcp_trust.py +112 -0
  37. deepagents_cli-0.0.29/tests/unit_tests/test_mcp_viewer.py +189 -0
  38. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_messages.py +16 -4
  39. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_model_switch.py +203 -1
  40. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_non_interactive.py +159 -1
  41. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_shell_allow_list.py +27 -1
  42. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_ui.py +12 -0
  43. deepagents_cli-0.0.29/tests/unit_tests/test_unicode_security.py +246 -0
  44. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/uv.lock +280 -8
  45. deepagents_cli-0.0.28/deepagents_cli/_version.py +0 -3
  46. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/.gitignore +0 -0
  47. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/Makefile +0 -0
  48. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/README.md +0 -0
  49. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/__init__.py +0 -0
  50. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/__main__.py +0 -0
  51. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/built_in_skills/__init__.py +0 -0
  52. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/built_in_skills/skill-creator/SKILL.md +0 -0
  53. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  54. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  55. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/clipboard.py +0 -0
  56. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/default_agent_prompt.md +0 -0
  57. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/file_ops.py +0 -0
  58. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/input.py +0 -0
  59. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/integrations/__init__.py +0 -0
  60. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/integrations/daytona.py +0 -0
  61. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/integrations/langsmith.py +0 -0
  62. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/integrations/modal.py +0 -0
  63. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/integrations/runloop.py +0 -0
  64. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/integrations/sandbox_factory.py +0 -0
  65. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/integrations/sandbox_provider.py +0 -0
  66. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/media_utils.py +0 -0
  67. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/model_config.py +0 -0
  68. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/project_utils.py +0 -0
  69. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/py.typed +0 -0
  70. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/sessions.py +0 -0
  71. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/skills/__init__.py +0 -0
  72. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/skills/commands.py +0 -0
  73. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/skills/load.py +0 -0
  74. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/subagents.py +0 -0
  75. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/system_prompt.md +0 -0
  76. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/tools.py +0 -0
  77. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/update_check.py +0 -0
  78. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/__init__.py +0 -0
  79. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/diff.py +0 -0
  80. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/history.py +0 -0
  81. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/loading.py +0 -0
  82. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/message_store.py +0 -0
  83. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/model_selector.py +0 -0
  84. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/thread_selector.py +0 -0
  85. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/tool_renderers.py +0 -0
  86. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/deepagents_cli/widgets/tool_widgets.py +0 -0
  87. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/examples/skills/arxiv-search/SKILL.md +0 -0
  88. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  89. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/examples/skills/langgraph-docs/SKILL.md +0 -0
  90. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/examples/skills/skill-creator/SKILL.md +0 -0
  91. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  92. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  93. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/examples/skills/web-research/SKILL.md +0 -0
  94. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/images/cli.png +0 -0
  95. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/scripts/check_imports.py +0 -0
  96. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/README.md +0 -0
  97. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/integration_tests/__init__.py +0 -0
  98. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/integration_tests/benchmarks/__init__.py +0 -0
  99. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
  100. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/integration_tests/conftest.py +0 -0
  101. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/integration_tests/test_sandbox_factory.py +0 -0
  102. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/integration_tests/test_sandbox_operations.py +0 -0
  103. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/__init__.py +0 -0
  104. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/conftest.py +0 -0
  105. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/skills/__init__.py +0 -0
  106. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/skills/test_commands.py +0 -0
  107. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/skills/test_load.py +0 -0
  108. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_autocomplete.py +0 -0
  109. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_charset.py +0 -0
  110. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_compact.py +0 -0
  111. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_compact_tool.py +0 -0
  112. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_end_to_end.py +0 -0
  113. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_exception_handling.py +0 -0
  114. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_file_ops.py +0 -0
  115. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_history.py +0 -0
  116. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_imports.py +0 -0
  117. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_input_parsing.py +0 -0
  118. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_main.py +0 -0
  119. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_main_args.py +0 -0
  120. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_media_utils.py +0 -0
  121. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_message_store.py +0 -0
  122. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_model_config.py +0 -0
  123. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_model_selector.py +0 -0
  124. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_sessions.py +0 -0
  125. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_subagents.py +0 -0
  126. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_textual_adapter.py +0 -0
  127. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_thread_selector.py +0 -0
  128. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_token_tracker.py +0 -0
  129. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_update_check.py +0 -0
  130. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_version.py +0 -0
  131. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/test_welcome.py +0 -0
  132. {deepagents_cli-0.0.28 → deepagents_cli-0.0.29}/tests/unit_tests/tools/__init__.py +0 -0
  133. {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
- * Add video support to multimodal inputs ([#1521](https://github.com/langchain-ai/deepagents/issues/1521)) ([f9b49b7](https://github.com/langchain-ai/deepagents/commit/f9b49b7341bd42b5278a03496743e4709689598e))
8
- * Add 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))
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
- * Add background PyPI update check ([#1648](https://github.com/langchain-ai/deepagents/issues/1648)) ([2e7a5e7](https://github.com/langchain-ai/deepagents/commit/2e7a5e7d97f64147ab2d000fae833fe681f1d6b2))
23
- * Add install script ([#1649](https://github.com/langchain-ai/deepagents/issues/1649)) ([68f6ef9](https://github.com/langchain-ai/deepagents/commit/68f6ef96e7d66b2c98d1371e91e5d25f107b80fe))
24
- * Add fuzzy search to model switcher ([#1266](https://github.com/langchain-ai/deepagents/issues/1266)) ([a6bbb18](https://github.com/langchain-ai/deepagents/commit/a6bbb182a2336ba748d93a06b9fcf27966321e20))
25
- * Add model usage stats display ([#1587](https://github.com/langchain-ai/deepagents/issues/1587)) ([a1208db](https://github.com/langchain-ai/deepagents/commit/a1208db096761eb54e0fe712a5aa922502575cb6))
26
- * Add substring matching to command history navigation ([#1301](https://github.com/langchain-ai/deepagents/issues/1301)) ([e276d5a](https://github.com/langchain-ai/deepagents/commit/e276d5a64bee9394f53ab993b01447023bcd4c7d))
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
- * Add `--profile-override` CLI flag ([#1605](https://github.com/langchain-ai/deepagents/issues/1605)) ([1984099](https://github.com/langchain-ai/deepagents/commit/1984099ae9ac4b0c13dc08722abb9d56055da7b7))
44
- * Add model profile overrides to config ([#1603](https://github.com/langchain-ai/deepagents/issues/1603)) ([d3d6899](https://github.com/langchain-ai/deepagents/commit/d3d6899209b7cf97447da0eee642b3f55261ffbc))
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
- * Add per-command `timeout` override to `execute()` ([#1154](https://github.com/langchain-ai/deepagents/issues/1154)) ([49277d4](https://github.com/langchain-ai/deepagents/commit/49277d45a026c86b5bf176142dcb1dfc2c7643ae))
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
- * Add skill deletion command ([#580](https://github.com/langchain-ai/deepagents/issues/580)) ([40a8d86](https://github.com/langchain-ai/deepagents/commit/40a8d866f952e0cf8d856e2fa360de771721b99a))
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
- * Add `/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)
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
- * Add `/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))
144
- * Add `/changelog`, `/feedback`, `/docs` ([#1261](https://github.com/langchain-ai/deepagents/issues/1261)) ([4561afb](https://github.com/langchain-ai/deepagents/commit/4561afbea17bb11f7fc02ae9f19db15229656280))
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
- * Add 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))
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
- * Add langsmith sandbox integration ([#1077](https://github.com/langchain-ai/deepagents/issues/1077)) ([7d17be0](https://github.com/langchain-ai/deepagents/commit/7d17be00b59e586c55517eaca281342e1a6559ff))
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.28
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.5
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
@@ -0,0 +1,3 @@
1
+ """Version information for `deepagents-cli`."""
2
+
3
+ __version__ = "0.0.29" # x-release-please-version
@@ -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: {url}\nTimeout: {timeout}s\n\n"
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
- command = args.get("command", "N/A")
321
- return f"Execute Command: {command}\nWorking Directory: {Path.cwd()}"
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(LocalContextMiddleware(backend=backend))
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: