deepagents-code 0.1.31__tar.gz → 0.1.33__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/CHANGELOG.md +34 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/PKG-INFO +5 -5
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/THREAT_MODEL.md +1 -1
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/_build_info.py +1 -1
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/_env_vars.py +64 -8
- deepagents_code-0.1.33/deepagents_code/_fake_models.py +66 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/_testing_models.py +22 -34
- deepagents_code-0.1.33/deepagents_code/_tool_stream.py +656 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/_version.py +1 -1
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/agent.py +16 -9
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/app.py +405 -65
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/auth_commands.py +48 -5
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/config.py +212 -19
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/config_manifest.py +69 -15
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/doctor.py +76 -1
- deepagents_code-0.1.33/deepagents_code/hooks.py +348 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/input.py +198 -12
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/main.py +91 -8
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/mcp_auth.py +6 -13
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/mcp_disabled.py +52 -22
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/mcp_tools.py +263 -66
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/media_utils.py +137 -3
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/model_config.py +243 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/non_interactive.py +361 -54
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/sessions.py +206 -36
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/skills/commands.py +172 -2
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/skills/invocation.py +9 -0
- deepagents_code-0.1.33/deepagents_code/skills/trust.py +547 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/subagents.py +61 -23
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/textual_adapter.py +489 -113
- deepagents_code-0.1.33/deepagents_code/tool_catalog.py +354 -0
- deepagents_code-0.1.33/deepagents_code/tools_commands.py +402 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/ui.py +54 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/auth.py +238 -6
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/chat_input.py +121 -8
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/messages.py +25 -0
- deepagents_code-0.1.33/deepagents_code/widgets/skill_trust.py +131 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/status.py +128 -24
- deepagents_code-0.1.33/deepagents_code/widgets/welcome.py +494 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/pyproject.toml +4 -4
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/scripts/install.sh +434 -29
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/skills/test_commands.py +287 -0
- deepagents_code-0.1.33/tests/unit_tests/skills/test_skill_trust.py +528 -0
- deepagents_code-0.1.33/tests/unit_tests/test__tool_stream.py +503 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_app.py +454 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_auth_commands.py +156 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_auth_widgets.py +289 -4
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_chat_input.py +276 -1
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_config.py +220 -1
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_config_manifest.py +26 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_doctor.py +121 -1
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_hooks.py +253 -10
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_install_script.py +323 -18
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_main.py +221 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_mcp_disabled.py +59 -2
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_mcp_tools.py +462 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_media_utils.py +369 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_messages.py +90 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_model_config.py +323 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_non_interactive.py +1514 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_reload.py +205 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_sessions.py +204 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_skill_invocation.py +407 -4
- deepagents_code-0.1.33/tests/unit_tests/test_skill_trust_screen.py +78 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_startup_fast_paths.py +1 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_status.py +213 -13
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_subagents.py +133 -1
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_textual_adapter.py +2771 -24
- deepagents_code-0.1.33/tests/unit_tests/test_tool_catalog.py +334 -0
- deepagents_code-0.1.33/tests/unit_tests/test_tools_commands.py +527 -0
- deepagents_code-0.1.33/tests/unit_tests/test_welcome.py +641 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/uv.lock +6 -6
- deepagents_code-0.1.31/deepagents_code/hooks.py +0 -209
- deepagents_code-0.1.31/deepagents_code/tools_commands.py +0 -191
- deepagents_code-0.1.31/deepagents_code/widgets/welcome.py +0 -524
- deepagents_code-0.1.31/tests/unit_tests/test_tools_commands.py +0 -144
- deepagents_code-0.1.31/tests/unit_tests/test_welcome.py +0 -820
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/.gitignore +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/AGENTS.md +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/ARCHITECTURE.md +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/COMMANDS.md +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/DEVELOPMENT.md +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/Makefile +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/README.md +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/__init__.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/__main__.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/_ask_user_types.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/_cli_context.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/_constants.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/_debug.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/_git.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/_paths.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/_server_config.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/_session_stats.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/_startup_error.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/_textual_patches.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/app.tcss +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/approval_mode.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/ask_user.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/auth_display.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/auth_store.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/built_in_skills/__init__.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/clipboard.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/command_registry.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/config_commands.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/configurable_model.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/default_agent_prompt.md +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/editor.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/event_bus.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/extras_info.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/file_ops.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/formatting.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/goal_rubric.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/goal_tools.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/integrations/__init__.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/integrations/openai_codex.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/integrations/sandbox_config.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/integrations/sandbox_factory.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/integrations/sandbox_provider.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/integrations/sandbox_registry.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/local_context.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/managed_tools.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/mcp_commands.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/mcp_login_service.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/mcp_providers/__init__.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/mcp_providers/_registry.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/mcp_providers/base.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/mcp_providers/github.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/mcp_providers/slack.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/mcp_trust.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/memory_guard.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/notifications.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/offload.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/onboarding.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/output.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/paste_collapse.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/project_utils.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/py.typed +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/reasoning_effort.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/remote_client.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/resume_state.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/server.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/server_graph.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/server_manager.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/skills/__init__.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/skills/load.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/state_migration.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/system_prompt.md +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/terminal_capabilities.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/terminal_escape.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/theme.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/tool_display.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/tools.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/unicode_security.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/update_check.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/__init__.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/_js_eval_display.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/_links.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/agent_selector.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/approval.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/ask_user.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/autocomplete.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/codex_auth.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/cwd_switch.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/diff.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/effort_selector.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/goal_review.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/history.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/install_confirm.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/launch_init.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/loading.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/mcp_login.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/mcp_reconnect.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/mcp_viewer.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/message_store.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/model_selector.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/notification_center.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/notification_detail.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/notification_settings.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/restart_prompt.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/subagent_panel.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/theme_selector.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/thread_selector.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/tool_renderers.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/tool_widgets.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/update_available.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/update_confirm.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/deepagents_code/widgets/update_progress.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/hatch_build.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/images/tui.png +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/scripts/check_imports.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/scripts/debug_server.sh +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/scripts/generate_commands_catalog.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/README.md +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/integration_tests/__init__.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/integration_tests/benchmarks/__init__.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/integration_tests/conftest.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/integration_tests/test_acp_mode.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/integration_tests/test_auto_approve_remote.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/integration_tests/test_compact_resume.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/integration_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/integration_tests/test_sandbox_operations.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/__init__.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/conftest.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/data/coding_agent_v1_validator.json +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/skills/__init__.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/skills/test_load.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/skills/test_skills_json.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/smoke_tests/__init__.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/smoke_tests/conftest.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/smoke_tests/snapshots/system_prompt_interactive_local.md +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/smoke_tests/test_system_prompt.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_agent.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_agent_friendly.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_agent_selector.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_approval.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_approval_mode.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_args.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_ask_user.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_ask_user_middleware.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_auth_display.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_auth_store.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_autocomplete.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_charset.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_clipboard.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_coding_agent_metadata.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_command_registry.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_compact_tool.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_configurable_model.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_cursor_blink.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_cwd_switch.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_debug.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_editor.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_end_to_end.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_env_vars.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_event_bus.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_exception_handling.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_extras_info.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_file_ops.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_formatting.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_git.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_goal_review.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_goal_rubric.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_goal_tools.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_hatch_build.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_history.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_imports.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_input_parsing.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_install_command.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_install_confirm.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_launch_init.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_links.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_loading.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_local_context.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_main_acp_mode.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_main_args.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_managed_tools.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_mcp_auth.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_mcp_commands.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_mcp_login_modal.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_mcp_login_service.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_mcp_reconnect.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_mcp_trust.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_mcp_viewer.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_memory_guard.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_message_store.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_model_selector.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_model_switch.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_notification_center.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_notification_detail.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_notifications.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_offload.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_offload_dict_messages.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_onboarding.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_openai_codex_integration.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_output.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_paths.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_reasoning_effort.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_remote_client.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_restart_prompt.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_resume_state.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_rubric_cli.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_sandbox_config.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_sandbox_provider.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_sandbox_registry.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_server.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_server_config.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_server_graph.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_server_helpers.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_server_manager.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_session_stats.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_shell_allow_list.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_state_migration.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_subagent_panel.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_subagent_stream.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_terminal_capabilities.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_terminal_escape.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_textual_patches.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_theme.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_thread_selector.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_tool_display.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_tool_renderers.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_tracing_replicas.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_ui.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_unicode_security.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_update_available.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_update_check.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_update_confirm.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_update_progress.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/test_version.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/tools/__init__.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/tools/test_current_thread.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/tools/test_fetch_url.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/widgets/__init__.py +0 -0
- {deepagents_code-0.1.31 → deepagents_code-0.1.33}/tests/unit_tests/widgets/test_diff.py +0 -0
|
@@ -2,6 +2,40 @@
|
|
|
2
2
|
|
|
3
3
|
# Deep Agents Code Changelog
|
|
4
4
|
|
|
5
|
+
## [0.1.33](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.32...deepagents-code==0.1.33) (2026-07-06)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* In-the-moment trust prompt for symlinked skills ([#4200](https://github.com/langchain-ai/deepagents/issues/4200)) ([a4431e4](https://github.com/langchain-ai/deepagents/commit/a4431e4339348431e91533cb2b177259ab94b083))
|
|
10
|
+
* Selective per-server project MCP trust ([#4507](https://github.com/langchain-ai/deepagents/issues/4507)) ([aaa22a9](https://github.com/langchain-ai/deepagents/commit/aaa22a9340cb3d2c8e9ce1a921957d0a9121da20))
|
|
11
|
+
* Add `dcode tools list` command ([#4461](https://github.com/langchain-ai/deepagents/issues/4461)) ([1402d0e](https://github.com/langchain-ai/deepagents/commit/1402d0e735a1580503f240457c77db76fcd779d7))
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* Strip media placeholders from model-facing message text ([#4462](https://github.com/langchain-ai/deepagents/issues/4462)) ([aa0ae36](https://github.com/langchain-ai/deepagents/commit/aa0ae36b00df6411a9200610a9075ef2dc28b1af))
|
|
16
|
+
* Re-apply theme preference on `/reload` ([#4514](https://github.com/langchain-ai/deepagents/issues/4514)) ([5d1c392](https://github.com/langchain-ai/deepagents/commit/5d1c3928f7ca0ea97f28fd4d34ae1a4ee885e888))
|
|
17
|
+
|
|
18
|
+
## [0.1.32](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.31...deepagents-code==0.1.32) (2026-07-06)
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* Simplify welcome banner to compact box ([#4482](https://github.com/langchain-ai/deepagents/issues/4482)) ([b7f46e9](https://github.com/langchain-ai/deepagents/commit/b7f46e931807f86476c9c2d661dcd4e9623c10a2))
|
|
23
|
+
* Add LangSmith base URL to `/auth` ([#4228](https://github.com/langchain-ai/deepagents/issues/4228)) ([88d167f](https://github.com/langchain-ai/deepagents/commit/88d167f9ceec1cfadd7c3feac6f63c0da7c893f1))
|
|
24
|
+
* `tool.use` and `tool.result` hook events ([#3954](https://github.com/langchain-ai/deepagents/issues/3954)) ([ba1979d](https://github.com/langchain-ai/deepagents/commit/ba1979d64c3ed5e96ebc896197bc8f97f6f84bac))
|
|
25
|
+
* Fall back to folder name for subagents ([#4504](https://github.com/langchain-ai/deepagents/issues/4504)) ([9db3db5](https://github.com/langchain-ai/deepagents/commit/9db3db5f31a93fb8598a5dc5bedf4fe61fe92c94))
|
|
26
|
+
* Report tracing gateway in `dcode doctor` ([#4466](https://github.com/langchain-ai/deepagents/issues/4466)) ([a912427](https://github.com/langchain-ai/deepagents/commit/a9124275504bc1af5f76dfdd9a6c558c98eea92d))
|
|
27
|
+
* Gate paste auto-collapse behind `display.collapse_pastes` ([#4473](https://github.com/langchain-ai/deepagents/issues/4473)) ([ff5dd56](https://github.com/langchain-ai/deepagents/commit/ff5dd564a3a590e7d2d521b20df495b5e1512e12))
|
|
28
|
+
|
|
29
|
+
### Bug Fixes
|
|
30
|
+
|
|
31
|
+
* Keep footer branch visible and ellipsized instead of hiding when narrow ([#4506](https://github.com/langchain-ai/deepagents/issues/4506)) ([ccf30c3](https://github.com/langchain-ai/deepagents/commit/ccf30c342e5ead677aafd196d8f1ddd2bdf95196))
|
|
32
|
+
* Remove MCP OAuth success page message shift ([#4463](https://github.com/langchain-ai/deepagents/issues/4463)) ([69bb06c](https://github.com/langchain-ai/deepagents/commit/69bb06c0680fa6d37b917deb6b70927c3eff9c09))
|
|
33
|
+
* Prevent `UnicodeEncodeError` crash in non-interactive mode on legacy Windows consoles ([#4478](https://github.com/langchain-ai/deepagents/issues/4478)) ([b1b16cd](https://github.com/langchain-ai/deepagents/commit/b1b16cd114d4ee4f077cf5824a0176cd94ebd851))
|
|
34
|
+
|
|
35
|
+
### Performance Improvements
|
|
36
|
+
|
|
37
|
+
* Make `threads list` faster on large session databases ([#4005](https://github.com/langchain-ai/deepagents/issues/4005)) ([85ca01a](https://github.com/langchain-ai/deepagents/commit/85ca01a43b002c2bdb4205f48fac5fa6f66a3276))
|
|
38
|
+
|
|
5
39
|
## [0.1.31](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.30...deepagents-code==0.1.31) (2026-07-03)
|
|
6
40
|
|
|
7
41
|
### Features
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deepagents-code
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.33
|
|
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/
|
|
@@ -27,10 +27,10 @@ Classifier: Topic :: Terminals
|
|
|
27
27
|
Requires-Python: <4.0,>=3.11
|
|
28
28
|
Requires-Dist: aiosqlite<1.0.0,>=0.22.1
|
|
29
29
|
Requires-Dist: deepagents-acp<1.0.0,>=0.0.8
|
|
30
|
-
Requires-Dist: deepagents==0.7.
|
|
30
|
+
Requires-Dist: deepagents==0.7.0a4
|
|
31
31
|
Requires-Dist: httpx<1.0.0,>=0.28.1
|
|
32
32
|
Requires-Dist: langchain-anthropic<2.0.0,>=1.4.7
|
|
33
|
-
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.
|
|
33
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.7
|
|
34
34
|
Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.3.0
|
|
35
35
|
Requires-Dist: langchain-openai<2.0.0,>=1.3.3
|
|
36
36
|
Requires-Dist: langchain-quickjs<0.4.0,>=0.3.2
|
|
@@ -67,7 +67,7 @@ Requires-Dist: langchain-baseten<1.0.0,>=0.2.1; extra == 'all-providers'
|
|
|
67
67
|
Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'all-providers'
|
|
68
68
|
Requires-Dist: langchain-deepseek<2.0.0,>=1.1.0; extra == 'all-providers'
|
|
69
69
|
Requires-Dist: langchain-fireworks<2.0.0,>=1.4.3; extra == 'all-providers'
|
|
70
|
-
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.
|
|
70
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.7; extra == 'all-providers'
|
|
71
71
|
Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.4; extra == 'all-providers'
|
|
72
72
|
Requires-Dist: langchain-groq<2.0.0,>=1.1.3; extra == 'all-providers'
|
|
73
73
|
Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'all-providers'
|
|
@@ -102,7 +102,7 @@ Requires-Dist: langchain-deepseek<2.0.0,>=1.1.0; extra == 'deepseek'
|
|
|
102
102
|
Provides-Extra: fireworks
|
|
103
103
|
Requires-Dist: langchain-fireworks<2.0.0,>=1.4.3; extra == 'fireworks'
|
|
104
104
|
Provides-Extra: google-genai
|
|
105
|
-
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.
|
|
105
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.7; extra == 'google-genai'
|
|
106
106
|
Provides-Extra: groq
|
|
107
107
|
Requires-Dist: langchain-groq<2.0.0,>=1.1.3; extra == 'groq'
|
|
108
108
|
Provides-Extra: huggingface
|
|
@@ -232,7 +232,7 @@
|
|
|
232
232
|
|
|
233
233
|
#### TB4: MCP Config → Process / Network
|
|
234
234
|
|
|
235
|
-
- **Inside**: `mcp_tools._validate_server_config` validates JSON structure and field types. `mcp_trust.compute_config_fingerprint` computes SHA-256 over config file contents. Project-level stdio servers require trust approval (fingerprint prompt) unless `--trust-project-mcp` is set.
|
|
235
|
+
- **Inside**: `mcp_tools._validate_server_config` validates JSON structure and field types. `mcp_trust.compute_config_fingerprint` computes SHA-256 over config file contents. Project-level stdio servers require trust approval (fingerprint prompt) unless `--trust-project-mcp` is set. A user can selectively pre-approve or reject individual project servers by name via `[mcp].enabled_project_servers` / `disabled_project_servers` (or the `DEEPAGENTS_CODE_ENABLED_PROJECT_MCP_SERVERS` / `..._DISABLED_...` env vars); reject wins over approval and over full trust. These lists are read by `model_config.load_mcp_server_trust_lists` only from user-controlled sources — the user-level `~/.deepagents/config.toml`, the global `~/.deepagents/.env`, and shell-exported env — never from `.mcp.json` or any repo-committed file, so a committed config cannot self-approve its own servers. In particular, the env forms (`DEEPAGENTS_CODE_ENABLED_PROJECT_MCP_SERVERS` / `..._DISABLED_...`) are added to `config._PROJECT_DOTENV_DENIED_ENV_KEYS`, so a committed *project* `.env` cannot inject them into `os.environ` even though it is loaded at bootstrap. Enabled resolves env-over-TOML, but disabled *unions* TOML and env so a deny can never be silently emptied by the other source. If the user's `config.toml` exists but cannot be read or parsed, the loader fails closed (project configs are treated as untrusted and the error is surfaced) rather than proceeding with an empty deny list. Only allowlisted (or fully trusted) names survive into the merged config, so a non-allowlisted remote entry is never preflighted and its interpolated headers are never resolved. Note that the allow list binds by server *name*, not by fingerprint: an allowlisted name is loaded whatever definition the repo currently gives it, bypassing the fingerprint change-detection that re-prompts on full-config trust — so users should only allowlist names in repos they would otherwise trust.
|
|
236
236
|
- **Outside**: Stdio server `command`, `args`, and `env` fields are user-controlled strings passed directly to `StdioConnection`. The `env` dict from MCP config is forwarded without filtering — users can set arbitrary environment variables (including `PATH`, `LD_PRELOAD`, `PYTHONPATH`) for the MCP subprocess.
|
|
237
237
|
- **Crossing mechanism**: `subprocess.Popen` (via `langchain_mcp_adapters`) for stdio; HTTP/SSE for remote servers.
|
|
238
238
|
|
|
@@ -34,10 +34,15 @@ AUTO_UPDATE = "DEEPAGENTS_CODE_AUTO_UPDATE"
|
|
|
34
34
|
"""Toggle automatic app updates. Enabled by default; set to a falsy value
|
|
35
35
|
('0', 'false', 'no', 'off', or empty) to opt out."""
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
COLLAPSE_PASTES = "DEEPAGENTS_CODE_COLLAPSE_PASTES"
|
|
38
|
+
"""Collapse large chat-input pastes into `[Pasted text #N +M lines]` placeholders.
|
|
39
|
+
|
|
40
|
+
Enabled by default; set to a falsy value (`0`, `false`, `no`, `off`, or empty)
|
|
41
|
+
to disable auto-collapsing so pasted text is inserted verbatim. Parsed by
|
|
42
|
+
`classify_env_bool` (an unrecognized value falls through to the config value
|
|
43
|
+
rather than forcing the default). Also settable via `[ui].collapse_pastes` in
|
|
44
|
+
config.toml.
|
|
45
|
+
"""
|
|
41
46
|
|
|
42
47
|
DEBUG = "DEEPAGENTS_CODE_DEBUG"
|
|
43
48
|
"""Enable verbose debug logging and preserve the server subprocess log.
|
|
@@ -88,6 +93,42 @@ real PyPI release.
|
|
|
88
93
|
Any non-empty value enables the flag (including `"0"` or `"false"`).
|
|
89
94
|
"""
|
|
90
95
|
|
|
96
|
+
DISABLED_PROJECT_MCP_SERVERS = "DEEPAGENTS_CODE_DISABLED_PROJECT_MCP_SERVERS"
|
|
97
|
+
"""Comma-separated project MCP server names to always reject by name.
|
|
98
|
+
|
|
99
|
+
A user-level equivalent of `[mcp].disabled_project_servers`.
|
|
100
|
+
|
|
101
|
+
Rejection wins over approval: a name listed here is dropped even when it also
|
|
102
|
+
appears in `ENABLED_PROJECT_MCP_SERVERS` (or `[mcp].enabled_project_servers`)
|
|
103
|
+
and even when the project config is otherwise trusted. Unlike the enabled list,
|
|
104
|
+
this env var *unions* with (rather than replaces)
|
|
105
|
+
`[mcp].disabled_project_servers` — denies accumulate across sources, so neither
|
|
106
|
+
can silently empty a deny set in the other. This is process env the user
|
|
107
|
+
controls, not a repo file, so it does not weaken the user-level-only
|
|
108
|
+
trust boundary: a committed *project* `.env` is blocked from setting it
|
|
109
|
+
(see `config._PROJECT_DOTENV_DENIED_ENV_KEYS`); only the user's shell,
|
|
110
|
+
launch env, or global `~/.deepagents/.env` can.
|
|
111
|
+
"""
|
|
112
|
+
|
|
113
|
+
ENABLED_PROJECT_MCP_SERVERS = "DEEPAGENTS_CODE_ENABLED_PROJECT_MCP_SERVERS"
|
|
114
|
+
"""Comma-separated project MCP server names to pre-approve by name.
|
|
115
|
+
|
|
116
|
+
A user-level equivalent of `[mcp].enabled_project_servers`.
|
|
117
|
+
|
|
118
|
+
Servers named here load from an otherwise-untrusted project `.mcp.json` without
|
|
119
|
+
prompting (they are omitted from the interactive approval prompt), while
|
|
120
|
+
non-listed servers stay dropped. Like `DISABLED_PROJECT_MCP_SERVERS`, this is
|
|
121
|
+
user-controlled process env, not a repo file, so it does not weaken
|
|
122
|
+
the user-level-only trust boundary (a committed *project* `.env` cannot set it;
|
|
123
|
+
see `config._PROJECT_DOTENV_DENIED_ENV_KEYS`). This contract is name-based:
|
|
124
|
+
a project command or URL change under the same server name still matches.
|
|
125
|
+
|
|
126
|
+
When set, this replaces (takes precedence over) the
|
|
127
|
+
`[mcp].enabled_project_servers` TOML list.
|
|
128
|
+
(`DISABLED_PROJECT_MCP_SERVERS` instead *unions* with its TOML list, so a deny
|
|
129
|
+
is never silently emptied.)
|
|
130
|
+
"""
|
|
131
|
+
|
|
91
132
|
EXTERNAL_EVENT_SOCKET = "DEEPAGENTS_CODE_EXTERNAL_EVENT_SOCKET"
|
|
92
133
|
"""Enable the local Unix-socket external event listener.
|
|
93
134
|
|
|
@@ -102,7 +143,12 @@ EXTRA_SKILLS_DIRS = "DEEPAGENTS_CODE_EXTRA_SKILLS_DIRS"
|
|
|
102
143
|
"""Colon-separated paths added to the skill containment allowlist."""
|
|
103
144
|
|
|
104
145
|
HIDE_CWD = "DEEPAGENTS_CODE_HIDE_CWD"
|
|
105
|
-
"""Hide local path displays in the TUI footer and
|
|
146
|
+
"""Hide local path displays in the TUI footer and the editable-install path in
|
|
147
|
+
the startup splash when enabled.
|
|
148
|
+
|
|
149
|
+
Does not control the splash working-directory row, which is gated solely by
|
|
150
|
+
`SPLASH_SHOW_CWD`.
|
|
151
|
+
"""
|
|
106
152
|
|
|
107
153
|
HIDE_GIT_BRANCH = "DEEPAGENTS_CODE_HIDE_GIT_BRANCH"
|
|
108
154
|
"""Hide the current git branch in the TUI footer when enabled."""
|
|
@@ -110,9 +156,6 @@ HIDE_GIT_BRANCH = "DEEPAGENTS_CODE_HIDE_GIT_BRANCH"
|
|
|
110
156
|
HIDE_LANGSMITH_TRACING = "DEEPAGENTS_CODE_HIDE_LANGSMITH_TRACING"
|
|
111
157
|
"""Hide LangSmith tracing project/thread info in the startup splash when enabled."""
|
|
112
158
|
|
|
113
|
-
HIDE_SPLASH_TIPS = "DEEPAGENTS_CODE_HIDE_SPLASH_TIPS"
|
|
114
|
-
"""Hide rotating tips in the startup splash when enabled."""
|
|
115
|
-
|
|
116
159
|
HIDE_SPLASH_VERSION = "DEEPAGENTS_CODE_HIDE_SPLASH_VERSION"
|
|
117
160
|
"""Hide version and local-install details in the splash screen when enabled."""
|
|
118
161
|
|
|
@@ -225,6 +268,19 @@ Defaults to enabled; set to a falsy value (`0`, `false`, `no`, `off`, or empty)
|
|
|
225
268
|
to suppress the success toast while still opening URLs normally.
|
|
226
269
|
"""
|
|
227
270
|
|
|
271
|
+
SPLASH_SHOW_CWD = "DEEPAGENTS_CODE_SPLASH_SHOW_CWD"
|
|
272
|
+
"""Show the working-directory row in the startup welcome banner when enabled.
|
|
273
|
+
|
|
274
|
+
Off by default and independent of the status bar's `HIDE_CWD`.
|
|
275
|
+
"""
|
|
276
|
+
|
|
277
|
+
SPLASH_SHOW_MODEL = "DEEPAGENTS_CODE_SPLASH_SHOW_MODEL"
|
|
278
|
+
"""Show the active model row in the startup welcome banner when enabled.
|
|
279
|
+
|
|
280
|
+
Off by default; the model is always visible in the status bar, so the banner
|
|
281
|
+
row is opt-in to avoid duplicating it.
|
|
282
|
+
"""
|
|
283
|
+
|
|
228
284
|
SUPPRESS_ENV_OVERRIDE_WARNING = "DEEPAGENTS_CODE_SUPPRESS_ENV_OVERRIDE_WARNING"
|
|
229
285
|
"""Silence the startup warning emitted when a `DEEPAGENTS_CODE_`-prefixed
|
|
230
286
|
LangSmith variable overrides its canonical counterpart (e.g. both
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"""Fake chat model base shared by integration tests and tool enumeration.
|
|
2
|
+
|
|
3
|
+
Holds the tool-binding base that both the local integration-test fakes
|
|
4
|
+
(`_testing_models`) and the `dcode tools list` tool-enumeration path
|
|
5
|
+
(`tool_catalog._CatalogModel`) build on. It lives in a use-neutral module — not
|
|
6
|
+
under a `_testing_`-prefixed name — so a production import path never depends on
|
|
7
|
+
something that reads as test-only and might be pruned or excluded from the wheel.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
from typing import TYPE_CHECKING, Any
|
|
13
|
+
|
|
14
|
+
from langchain_core.language_models.fake_chat_models import GenericFakeChatModel
|
|
15
|
+
from pydantic import Field
|
|
16
|
+
|
|
17
|
+
if TYPE_CHECKING:
|
|
18
|
+
from collections.abc import Callable, Sequence
|
|
19
|
+
|
|
20
|
+
from langchain_core.language_models import LanguageModelInput
|
|
21
|
+
from langchain_core.messages import AIMessage
|
|
22
|
+
from langchain_core.runnables import Runnable
|
|
23
|
+
from langchain_core.tools import BaseTool
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
_TOOL_BINDING_MODEL_PROFILE: dict[str, Any] = {
|
|
27
|
+
"tool_calling": True,
|
|
28
|
+
"max_input_tokens": 8000,
|
|
29
|
+
}
|
|
30
|
+
"""Minimal capability profile the agent runtime reads while compiling a model.
|
|
31
|
+
|
|
32
|
+
Only `tool_calling` is load-bearing — the agent negotiates tool support at
|
|
33
|
+
setup. `max_input_tokens` is part of the profile surface but inert here: these
|
|
34
|
+
models are compiled to bind tools and are never invoked, so no token budget ever
|
|
35
|
+
applies. Defined once so both the integration-test fakes and
|
|
36
|
+
`tool_catalog._CatalogModel` share a single source of truth.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class _ToolBindingFakeModel(GenericFakeChatModel):
|
|
41
|
+
"""Base for fake chat models that must bind tools but are never invoked.
|
|
42
|
+
|
|
43
|
+
The agent runtime calls `model.bind_tools(schemas)` and reads `model.profile`
|
|
44
|
+
while compiling the graph, and a bare `GenericFakeChatModel` cannot be
|
|
45
|
+
compiled into an agent graph: it inherits `BaseChatModel.bind_tools`, which
|
|
46
|
+
raises `NotImplementedError`, and its `profile` is `None`, which breaks
|
|
47
|
+
capability negotiation. This base supplies a no-op `bind_tools` passthrough
|
|
48
|
+
and a minimal `profile`, leaving subclasses to add generation behavior
|
|
49
|
+
(tests) or nothing at all (tool enumeration).
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
# Required by `GenericFakeChatModel`, but subclasses never consume it.
|
|
53
|
+
messages: object = Field(default_factory=lambda: iter(()))
|
|
54
|
+
profile: dict[str, Any] | None = Field(
|
|
55
|
+
default_factory=lambda: dict(_TOOL_BINDING_MODEL_PROFILE)
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
def bind_tools(
|
|
59
|
+
self,
|
|
60
|
+
tools: Sequence[dict[str, Any] | type | Callable | BaseTool], # noqa: ARG002
|
|
61
|
+
*,
|
|
62
|
+
tool_choice: str | None = None, # noqa: ARG002
|
|
63
|
+
**kwargs: Any, # noqa: ARG002
|
|
64
|
+
) -> Runnable[LanguageModelInput, AIMessage]:
|
|
65
|
+
"""Return self so the agent can bind tool schemas without a real model."""
|
|
66
|
+
return self
|
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
"""Internal chat models
|
|
1
|
+
"""Internal fake chat models for local integration tests.
|
|
2
|
+
|
|
3
|
+
The tool-binding base these build on (`_fake_models._ToolBindingFakeModel`) is
|
|
4
|
+
factored out into a use-neutral module so the `dcode tools list` enumeration
|
|
5
|
+
path can reuse it without importing this test-named module.
|
|
6
|
+
"""
|
|
2
7
|
|
|
3
8
|
from __future__ import annotations
|
|
4
9
|
|
|
5
10
|
from typing import TYPE_CHECKING, Any
|
|
6
11
|
|
|
7
|
-
from langchain_core.language_models.fake_chat_models import GenericFakeChatModel
|
|
8
12
|
from langchain_core.messages import AIMessage, BaseMessage
|
|
9
13
|
from langchain_core.outputs import ChatGeneration, ChatResult
|
|
10
|
-
|
|
14
|
+
|
|
15
|
+
from deepagents_code._fake_models import _ToolBindingFakeModel
|
|
11
16
|
|
|
12
17
|
if TYPE_CHECKING:
|
|
13
|
-
from collections.abc import Callable
|
|
18
|
+
from collections.abc import Callable
|
|
14
19
|
|
|
15
20
|
from langchain_core.callbacks import CallbackManagerForLLMRun
|
|
16
|
-
from langchain_core.language_models import LanguageModelInput
|
|
17
|
-
from langchain_core.runnables import Runnable
|
|
18
|
-
from langchain_core.tools import BaseTool
|
|
19
21
|
|
|
20
22
|
|
|
21
23
|
# Prompt markers that drive `ToolCallingIntegrationChatModel`. Each marker is the
|
|
@@ -33,13 +35,13 @@ TOP_LEVEL_WRITE_CONTENT = "auto-approved"
|
|
|
33
35
|
SUBAGENT_WRITE_CONTENT = "auto-approved-subagent"
|
|
34
36
|
|
|
35
37
|
|
|
36
|
-
class DeterministicIntegrationChatModel(
|
|
38
|
+
class DeterministicIntegrationChatModel(_ToolBindingFakeModel):
|
|
37
39
|
"""Deterministic chat model for integration tests.
|
|
38
40
|
|
|
39
|
-
This subclasses
|
|
40
|
-
stays aligned with the core fake-chat-model test surface,
|
|
41
|
-
generation to remain prompt-driven and restart-safe for real
|
|
42
|
-
integration tests.
|
|
41
|
+
This subclasses `_ToolBindingFakeModel` (itself a `GenericFakeChatModel`) so
|
|
42
|
+
the implementation stays aligned with the core fake-chat-model test surface,
|
|
43
|
+
while overriding generation to remain prompt-driven and restart-safe for real
|
|
44
|
+
CLI server integration tests.
|
|
43
45
|
|
|
44
46
|
Why the existing `langchain_core` fakes cannot be reused here:
|
|
45
47
|
|
|
@@ -53,13 +55,15 @@ class DeterministicIntegrationChatModel(GenericFakeChatModel):
|
|
|
53
55
|
identical output regardless of process lifecycle.
|
|
54
56
|
|
|
55
57
|
2. The agent runtime calls `model.bind_tools(schemas)` during
|
|
56
|
-
initialization.
|
|
57
|
-
|
|
58
|
+
initialization. A bare `GenericFakeChatModel` inherits
|
|
59
|
+
`BaseChatModel.bind_tools`, which raises `NotImplementedError` in any
|
|
60
|
+
agent-loop context. The inherited `_ToolBindingFakeModel` supplies a
|
|
58
61
|
no-op passthrough.
|
|
59
62
|
|
|
60
63
|
3. The app server reads `model.profile` for capability negotiation (e.g.
|
|
61
|
-
`tool_calling`, `max_input_tokens`).
|
|
62
|
-
causing
|
|
64
|
+
`tool_calling`, `max_input_tokens`). A bare fake's `profile` is `None`,
|
|
65
|
+
causing silent misconfiguration at runtime. The inherited
|
|
66
|
+
`_ToolBindingFakeModel` supplies a minimal profile.
|
|
63
67
|
|
|
64
68
|
Additionally, the compact middleware issues summarization prompts mid-
|
|
65
69
|
conversation. A list-based model cannot distinguish these from normal user
|
|
@@ -68,24 +72,8 @@ class DeterministicIntegrationChatModel(GenericFakeChatModel):
|
|
|
68
72
|
"""
|
|
69
73
|
|
|
70
74
|
model: str = "fake"
|
|
71
|
-
#
|
|
72
|
-
|
|
73
|
-
profile: dict[str, Any] | None = Field(
|
|
74
|
-
default_factory=lambda: {
|
|
75
|
-
"tool_calling": True,
|
|
76
|
-
"max_input_tokens": 8000,
|
|
77
|
-
}
|
|
78
|
-
)
|
|
79
|
-
|
|
80
|
-
def bind_tools(
|
|
81
|
-
self,
|
|
82
|
-
tools: Sequence[dict[str, Any] | type | Callable | BaseTool], # noqa: ARG002
|
|
83
|
-
*,
|
|
84
|
-
tool_choice: str | None = None, # noqa: ARG002
|
|
85
|
-
**kwargs: Any, # noqa: ARG002
|
|
86
|
-
) -> Runnable[LanguageModelInput, AIMessage]:
|
|
87
|
-
"""Return self so the agent can bind tool schemas during tests."""
|
|
88
|
-
return self
|
|
75
|
+
# `messages`, `profile`, and the `bind_tools` passthrough are inherited from
|
|
76
|
+
# `_ToolBindingFakeModel`; this model adds only prompt-driven generation.
|
|
89
77
|
|
|
90
78
|
def _generate(
|
|
91
79
|
self,
|