deepagents-code 0.1.21__tar.gz → 0.1.22__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.21 → deepagents_code-0.1.22}/CHANGELOG.md +19 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/COMMANDS.md +1 -1
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/DEVELOPMENT.md +13 -3
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/Makefile +25 -1
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/PKG-INFO +1 -1
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_version.py +1 -1
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/agent.py +26 -6
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/app.py +372 -62
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/auth_commands.py +52 -7
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/auth_display.py +0 -2
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/auth_store.py +65 -2
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/command_registry.py +4 -2
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/config.py +167 -45
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/main.py +62 -5
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/model_config.py +34 -8
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/ui.py +4 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/update_check.py +552 -60
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/auth.py +154 -55
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/chat_input.py +79 -1
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/launch_init.py +174 -55
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/model_selector.py +104 -42
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/notification_center.py +0 -1
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/thread_selector.py +46 -1
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/update_progress.py +44 -6
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/pyproject.toml +1 -1
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/scripts/install.sh +73 -12
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_agent.py +39 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_app.py +909 -20
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_auth_commands.py +82 -5
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_auth_display.py +1 -1
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_auth_store.py +61 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_auth_widgets.py +378 -4
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_chat_input.py +112 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_config.py +418 -49
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_install_command.py +133 -2
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_install_confirm.py +4 -4
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_install_script.py +310 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_launch_init.py +237 -13
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_main.py +105 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_main_args.py +82 -8
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_managed_tools.py +8 -1
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_model_config.py +43 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_model_selector.py +232 -19
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_non_interactive.py +12 -1
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_notification_center.py +4 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_openai_codex_integration.py +25 -2
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_startup_fast_paths.py +5 -2
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_thread_selector.py +14 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_update_check.py +1083 -47
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_update_progress.py +104 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_version.py +72 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_welcome.py +3 -3
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/uv.lock +1 -1
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/.gitignore +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/AGENTS.md +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/ARCHITECTURE.md +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/README.md +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/THREAT_MODEL.md +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/__init__.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/__main__.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_ask_user_types.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_cli_context.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_constants.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_debug.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_env_vars.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_git.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_paths.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_server_config.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_session_stats.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_startup_error.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_testing_models.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/_textual_patches.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/app.tcss +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/ask_user.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/built_in_skills/__init__.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/clipboard.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/config_commands.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/config_manifest.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/configurable_model.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/default_agent_prompt.md +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/doctor.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/editor.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/event_bus.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/extras_info.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/file_ops.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/filesystem_empty_result.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/formatting.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/hooks.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/input.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/integrations/__init__.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/integrations/openai_codex.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/integrations/sandbox_config.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/integrations/sandbox_factory.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/integrations/sandbox_provider.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/integrations/sandbox_registry.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/local_context.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/managed_tools.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_auth.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_commands.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_disabled.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_login_service.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_providers/__init__.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_providers/_registry.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_providers/base.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_providers/github.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_providers/slack.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_tools.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/mcp_trust.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/media_utils.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/memory_guard.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/non_interactive.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/notifications.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/offload.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/onboarding.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/output.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/project_utils.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/py.typed +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/remote_client.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/resume_state.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/server.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/server_graph.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/server_manager.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/sessions.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/skills/__init__.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/skills/commands.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/skills/invocation.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/skills/load.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/state_migration.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/subagents.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/system_prompt.md +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/terminal_capabilities.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/terminal_escape.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/textual_adapter.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/theme.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/tool_display.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/tools.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/unicode_security.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/__init__.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/_js_eval_display.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/_links.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/agent_selector.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/approval.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/ask_user.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/autocomplete.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/codex_auth.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/cwd_switch.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/diff.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/history.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/install_confirm.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/loading.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/mcp_login.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/mcp_reconnect.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/mcp_viewer.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/message_store.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/messages.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/notification_detail.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/notification_settings.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/restart_prompt.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/status.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/theme_selector.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/tool_renderers.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/tool_widgets.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/update_available.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/update_confirm.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/deepagents_code/widgets/welcome.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/images/tui.png +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/scripts/check_imports.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/scripts/debug_server.sh +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/scripts/generate_commands_catalog.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/README.md +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/__init__.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/benchmarks/__init__.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/conftest.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/test_acp_mode.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/test_compact_resume.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/integration_tests/test_sandbox_operations.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/__init__.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/conftest.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/skills/__init__.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/skills/test_commands.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/skills/test_load.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/skills/test_skills_json.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_agent_friendly.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_agent_selector.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_approval.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_args.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_ask_user.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_ask_user_middleware.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_autocomplete.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_charset.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_clipboard.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_command_registry.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_compact_tool.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_config_manifest.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_configurable_model.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_cursor_blink.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_cwd_switch.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_debug.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_doctor.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_editor.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_end_to_end.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_env_vars.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_event_bus.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_exception_handling.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_extras_info.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_file_ops.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_filesystem_empty_result.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_formatting.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_git.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_history.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_hooks.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_imports.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_input_parsing.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_links.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_loading.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_local_context.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_main_acp_mode.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_auth.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_commands.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_disabled.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_login_modal.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_login_service.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_reconnect.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_tools.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_trust.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_mcp_viewer.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_media_utils.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_memory_guard.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_message_store.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_messages.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_model_switch.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_notification_detail.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_notifications.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_offload.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_offload_dict_messages.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_onboarding.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_output.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_paths.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_reload.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_remote_client.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_restart_prompt.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_resume_state.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_sandbox_config.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_sandbox_provider.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_sandbox_registry.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_server.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_server_config.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_server_graph.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_server_helpers.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_server_manager.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_session_stats.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_sessions.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_shell_allow_list.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_skill_invocation.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_state_migration.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_status.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_subagents.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_terminal_capabilities.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_terminal_escape.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_textual_adapter.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_textual_patches.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_theme.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_tool_display.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_tracing_replicas.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_ui.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_unicode_security.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_update_available.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/test_update_confirm.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/tools/__init__.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/tools/test_current_thread.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/tools/test_fetch_url.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/widgets/__init__.py +0 -0
- {deepagents_code-0.1.21 → deepagents_code-0.1.22}/tests/unit_tests/widgets/test_diff.py +0 -0
|
@@ -2,6 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
# Deep Agents Code Changelog
|
|
4
4
|
|
|
5
|
+
## [0.1.22](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.21...deepagents-code==0.1.22) (2026-06-24)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* Add LangSmith tracing config to `/auth` ([#4193](https://github.com/langchain-ai/deepagents/issues/4193)) ([8e62957](https://github.com/langchain-ai/deepagents/commit/8e6295791093c2ddfec7e6ac57f0df7f12048447))
|
|
10
|
+
* Auto-retry credentials-blocked startup after `/auth` ([#4176](https://github.com/langchain-ai/deepagents/issues/4176)) ([d10ba3d](https://github.com/langchain-ai/deepagents/commit/d10ba3dc162e47cc71df56b8e3d0000b6e0ed847))
|
|
11
|
+
* Improve onboarding Installed Integrations screen ([#4195](https://github.com/langchain-ai/deepagents/issues/4195)) ([0827bf1](https://github.com/langchain-ai/deepagents/commit/0827bf1b635b825121740ac8946dd6d98c815c7d))
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* Exclude managed bin dir from agent picker ([#4190](https://github.com/langchain-ai/deepagents/issues/4190)) ([d869d1e](https://github.com/langchain-ai/deepagents/commit/d869d1e1fa8558510fb48e71f78fb74c69ca4840))
|
|
16
|
+
* Warn on `/trace` when thread has no messages ([#4162](https://github.com/langchain-ai/deepagents/issues/4162)) ([c338fc9](https://github.com/langchain-ai/deepagents/commit/c338fc914fcd383beb4b97c13f53dfb2684f8c90))
|
|
17
|
+
* Hide "Recent" section during onboarding model selection ([#4198](https://github.com/langchain-ai/deepagents/issues/4198)) ([af882e4](https://github.com/langchain-ai/deepagents/commit/af882e4f6c859878e350d8a37bb75b7bc01bb453))
|
|
18
|
+
* Keep auth modal interactive after install-on-select ([#4187](https://github.com/langchain-ai/deepagents/issues/4187)) ([afbc56a](https://github.com/langchain-ai/deepagents/commit/afbc56a1d9dbe8a89015f4c2f90bb87547d5c1d4))
|
|
19
|
+
* Generic "missing credentials" in model switcher ([#4182](https://github.com/langchain-ai/deepagents/issues/4182)) ([456ce5c](https://github.com/langchain-ai/deepagents/commit/456ce5c2f5487a754d1fea7046e32c03b7e27a17))
|
|
20
|
+
* Hide chat input action buttons in same frame as empty draft ([#4178](https://github.com/langchain-ai/deepagents/issues/4178)) ([f94d417](https://github.com/langchain-ai/deepagents/commit/f94d417d5ad9928db967777fe1d7bc2c37684fb9))
|
|
21
|
+
* Preserve uv tool context when installing extras ([#4201](https://github.com/langchain-ai/deepagents/issues/4201)) ([fcc616c](https://github.com/langchain-ai/deepagents/commit/fcc616cf9bc2bbc7b2dc2574ae8649e2f270dc53))
|
|
22
|
+
* Unpin uv self-updates and warn when a stale dcode shadows PATH ([#4185](https://github.com/langchain-ai/deepagents/issues/4185)) ([8ca0a18](https://github.com/langchain-ai/deepagents/commit/8ca0a185a15f800267cc057178a348fb5063df1e))
|
|
23
|
+
|
|
5
24
|
## [0.1.21](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.20...deepagents-code==0.1.21) (2026-06-23)
|
|
6
25
|
|
|
7
26
|
### Features
|
|
@@ -12,7 +12,7 @@ aliases, descriptions, visibility, or hidden-command metadata.
|
|
|
12
12
|
| Command | Aliases | Description |
|
|
13
13
|
| --- | --- | --- |
|
|
14
14
|
| `/agents` | | Browse and switch between available agents |
|
|
15
|
-
| `/auth` | `/connect` | Connect and manage
|
|
15
|
+
| `/auth` | `/connect` | Connect and manage provider and service credentials |
|
|
16
16
|
| `/auto-update` | | Turn automatic updates on or off |
|
|
17
17
|
| `/changelog` | | Open the changelog in a browser |
|
|
18
18
|
| `/clear` | | Clear the chat and start a new thread |
|
|
@@ -17,14 +17,16 @@ This package uses [`uv`](https://docs.astral.sh/uv/) for environment and depende
|
|
|
17
17
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
Clone the monorepo and
|
|
20
|
+
Clone the monorepo and bootstrap the `code` package. This creates the virtualenv, installs test dependencies, and installs local git hooks (`pre-commit` + `commit-msg`) so the same checks can run before you push:
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
23
|
git clone https://github.com/langchain-ai/deepagents.git
|
|
24
24
|
cd deepagents/libs/code
|
|
25
|
-
|
|
25
|
+
make bootstrap
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
+
If you only want to sync dependencies without installing hooks, run `uv sync --group test` instead.
|
|
29
|
+
|
|
28
30
|
Run the TUI from `libs/code` in your local checkout:
|
|
29
31
|
|
|
30
32
|
```bash
|
|
@@ -35,7 +37,15 @@ uv run deepagents-code
|
|
|
35
37
|
|
|
36
38
|
### Running the tests and linters
|
|
37
39
|
|
|
38
|
-
All commands run from `libs/code`.
|
|
40
|
+
All commands run from `libs/code`. Before opening a PR, run the full local check suite:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
make check
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
This runs linting, import checks, unit tests, and lockfile/version/extras checks.
|
|
47
|
+
|
|
48
|
+
For targeted checks while iterating:
|
|
39
49
|
|
|
40
50
|
```bash
|
|
41
51
|
# Unit tests (no network)
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
.PHONY: format lint type typecheck test tests integration_test integration_tests test_watch benchmark bench bench-memory help run lint_package lint_tests check_imports coverage commands-catalog commands-catalog-check
|
|
1
|
+
.PHONY: format lint type typecheck test tests integration_test integration_tests test_watch benchmark bench bench-memory help run lint_package lint_tests check_imports coverage commands-catalog commands-catalog-check check bootstrap
|
|
2
2
|
|
|
3
3
|
.DEFAULT_GOAL := help
|
|
4
4
|
|
|
5
5
|
.EXPORT_ALL_VARIABLES:
|
|
6
6
|
UV_FROZEN = true
|
|
7
7
|
|
|
8
|
+
REPO_ROOT := $(shell git rev-parse --show-toplevel)
|
|
9
|
+
|
|
8
10
|
######################
|
|
9
11
|
# TESTING AND COVERAGE
|
|
10
12
|
######################
|
|
@@ -87,6 +89,28 @@ commands-catalog: ## Regenerate COMMANDS.md from the slash-command registry
|
|
|
87
89
|
commands-catalog-check: ## Verify COMMANDS.md matches the slash-command registry
|
|
88
90
|
uv run --all-groups python scripts/generate_commands_catalog.py --check
|
|
89
91
|
|
|
92
|
+
######################
|
|
93
|
+
# LOCAL CI PARITY
|
|
94
|
+
######################
|
|
95
|
+
|
|
96
|
+
bootstrap: ## Install dev dependencies and git hooks for local development
|
|
97
|
+
uv sync --group test
|
|
98
|
+
cd "$(REPO_ROOT)" && uvx pre-commit install --install-hooks
|
|
99
|
+
@echo "✅ Dev environment ready: deps synced and git hooks installed."
|
|
100
|
+
|
|
101
|
+
check: ## Run the full local CI gauntlet (lint, types, imports, tests, repo gates)
|
|
102
|
+
check: lint check_imports test
|
|
103
|
+
@echo "🔍 Verifying extras stay in sync with required deps..."
|
|
104
|
+
uv run --all-groups python "$(REPO_ROOT)/.github/scripts/check_extras_sync.py" pyproject.toml
|
|
105
|
+
@echo "🔍 Verifying pyproject.toml and _version.py agree..."
|
|
106
|
+
uv run --all-groups python "$(REPO_ROOT)/.github/scripts/check_version_equality.py"
|
|
107
|
+
@echo "🔒 Verifying uv.lock is up-to-date..."
|
|
108
|
+
uv lock --check
|
|
109
|
+
@echo "🔗 Checking SDK pin against workspace SDK (advisory)..."
|
|
110
|
+
@uv run --all-groups python "$(REPO_ROOT)/.github/scripts/check_sdk_pin.py" || \
|
|
111
|
+
{ rc=$$?; [ $$rc -eq 1 ] && echo "⚠️ SDK pin drift (advisory, non-fatal)." || exit $$rc; }
|
|
112
|
+
@echo "✅ All local CI checks passed!"
|
|
113
|
+
|
|
90
114
|
######################
|
|
91
115
|
# HELP
|
|
92
116
|
######################
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deepagents-code
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.22
|
|
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/
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Keep the `x-release-please-version` annotation — release-please uses it to
|
|
4
4
|
# bump `__version__` in sync with `pyproject.toml` on every release PR.
|
|
5
|
-
__version__ = "0.1.
|
|
5
|
+
__version__ = "0.1.22" # x-release-please-version
|
|
6
6
|
|
|
7
7
|
DOCS_URL = "https://docs.langchain.com/oss/python/deepagents/code"
|
|
8
8
|
"""URL for `deepagents-code` documentation."""
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import functools
|
|
5
6
|
import logging
|
|
6
7
|
import os
|
|
7
8
|
import re
|
|
@@ -62,6 +63,7 @@ from deepagents_code.config import (
|
|
|
62
63
|
get_default_coding_instructions,
|
|
63
64
|
get_glyphs,
|
|
64
65
|
get_langsmith_project_name,
|
|
66
|
+
restore_user_tracing_env,
|
|
65
67
|
settings,
|
|
66
68
|
)
|
|
67
69
|
from deepagents_code.configurable_model import ConfigurableModelMiddleware
|
|
@@ -438,17 +440,32 @@ def load_async_subagents(config_path: Path | None = None) -> list[AsyncSubAgent]
|
|
|
438
440
|
return agents
|
|
439
441
|
|
|
440
442
|
|
|
443
|
+
@functools.lru_cache(maxsize=1)
|
|
444
|
+
def _reserved_agent_dir_names() -> frozenset[str]:
|
|
445
|
+
"""Return non-agent directory names reserved by the app under `~/.deepagents/`.
|
|
446
|
+
|
|
447
|
+
`bin/` holds the managed `rg` binary (`managed_tools.BIN_DIR`) and must
|
|
448
|
+
never appear in the agent picker. The name is derived from `BIN_DIR` so it
|
|
449
|
+
stays a single source of truth rather than being hardcoded here. The result
|
|
450
|
+
is cached since the reserved set is constant for the process.
|
|
451
|
+
"""
|
|
452
|
+
from deepagents_code.managed_tools import BIN_DIR
|
|
453
|
+
|
|
454
|
+
return frozenset({BIN_DIR.name})
|
|
455
|
+
|
|
456
|
+
|
|
441
457
|
def _is_agent_dir_entry(entry: Path) -> bool:
|
|
442
458
|
"""Return whether a `~/.deepagents/` entry should be listed as an agent.
|
|
443
459
|
|
|
444
|
-
Filters out symlinks (so dangling links don't masquerade as agents)
|
|
445
|
-
|
|
446
|
-
|
|
460
|
+
Filters out symlinks (so dangling links don't masquerade as agents),
|
|
461
|
+
dot-prefixed names — `.state/` (app internal state) plus any other
|
|
462
|
+
hidden directory the user may have placed there — and reserved names
|
|
463
|
+
the app owns (e.g. `bin/`, the managed-binary install dir).
|
|
447
464
|
|
|
448
465
|
`OSError` from `is_dir`/`is_symlink` propagates so callers can log
|
|
449
466
|
with the failing entry's name as context.
|
|
450
467
|
"""
|
|
451
|
-
if entry.name.startswith("."):
|
|
468
|
+
if entry.name.startswith(".") or entry.name in _reserved_agent_dir_names():
|
|
452
469
|
return False
|
|
453
470
|
return entry.is_dir() and not entry.is_symlink()
|
|
454
471
|
|
|
@@ -458,8 +475,9 @@ def get_available_agent_names() -> list[str]:
|
|
|
458
475
|
|
|
459
476
|
Scans the user's `.deepagents` directory and returns each real
|
|
460
477
|
subdirectory found there. Symlinks excluded so a dangling link does not
|
|
461
|
-
masquerade as an agent. Dot-prefixed entries (e.g., `.state/`)
|
|
462
|
-
|
|
478
|
+
masquerade as an agent. Dot-prefixed entries (e.g., `.state/`) and
|
|
479
|
+
reserved app-owned directories (e.g., `bin/`, the managed-binary install
|
|
480
|
+
dir) are skipped so internal state never appears as an agent.
|
|
463
481
|
|
|
464
482
|
Filesystem errors (missing parent, permission denied, broken entries) are
|
|
465
483
|
logged and surfaced as an empty list rather than raised — the caller shows
|
|
@@ -1506,6 +1524,7 @@ def create_cli_agent(
|
|
|
1506
1524
|
shell_env["LANGSMITH_PROJECT"] = settings.user_langchain_project
|
|
1507
1525
|
else:
|
|
1508
1526
|
shell_env.pop("LANGSMITH_PROJECT", None)
|
|
1527
|
+
restore_user_tracing_env(shell_env)
|
|
1509
1528
|
# Re-apply a launch-time PYTHONPATH that was stripped from the server
|
|
1510
1529
|
# interpreter but relayed for approval-gated `execute` commands.
|
|
1511
1530
|
_apply_inherited_pythonpath(shell_env)
|
|
@@ -1518,6 +1537,7 @@ def create_cli_agent(
|
|
|
1518
1537
|
# and resurrect the popped carrier var, leaking it into `execute`.
|
|
1519
1538
|
backend = LocalShellBackend(
|
|
1520
1539
|
root_dir=root_dir,
|
|
1540
|
+
virtual_mode=False,
|
|
1521
1541
|
inherit_env=False,
|
|
1522
1542
|
env=shell_env,
|
|
1523
1543
|
)
|