deepagents-code 0.1.17__tar.gz → 0.1.18__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.17 → deepagents_code-0.1.18}/AGENTS.md +2 -1
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/CHANGELOG.md +6 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/PKG-INFO +2 -2
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/_version.py +1 -1
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/auth_display.py +3 -3
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/config.py +6 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/model_config.py +63 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/auth.py +422 -53
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/codex_auth.py +11 -2
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/mcp_login.py +13 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/thread_selector.py +17 -1
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/pyproject.toml +3 -3
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_app.py +8 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_auth_display.py +4 -2
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_auth_widgets.py +478 -11
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_mcp_login_modal.py +41 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_model_config.py +67 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_thread_selector.py +29 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/uv.lock +161 -161
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/.gitignore +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/COMMANDS.md +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/DEV.md +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/Makefile +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/README.md +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/THREAT_MODEL.md +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/__init__.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/__main__.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/_ask_user_types.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/_cli_context.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/_constants.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/_debug.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/_env_vars.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/_git.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/_server_config.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/_session_stats.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/_startup_error.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/_testing_models.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/_textual_patches.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/agent.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/app.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/app.tcss +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/ask_user.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/auth_commands.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/auth_store.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/built_in_skills/__init__.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/clipboard.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/command_registry.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/config_commands.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/config_manifest.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/configurable_model.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/default_agent_prompt.md +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/editor.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/event_bus.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/extras_info.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/file_ops.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/filesystem_empty_result.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/formatting.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/hooks.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/input.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/integrations/__init__.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/integrations/openai_codex.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/integrations/sandbox_config.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/integrations/sandbox_factory.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/integrations/sandbox_provider.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/integrations/sandbox_registry.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/local_context.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/main.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/managed_tools.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/mcp_auth.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/mcp_commands.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/mcp_disabled.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/mcp_login_service.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/mcp_providers/__init__.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/mcp_providers/_registry.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/mcp_providers/base.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/mcp_providers/github.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/mcp_providers/slack.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/mcp_tools.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/mcp_trust.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/media_utils.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/memory_guard.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/non_interactive.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/notifications.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/offload.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/onboarding.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/output.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/project_utils.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/py.typed +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/remote_client.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/resume_state.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/server.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/server_graph.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/server_manager.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/sessions.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/skills/__init__.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/skills/commands.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/skills/invocation.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/skills/load.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/state_migration.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/subagents.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/system_prompt.md +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/terminal_capabilities.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/terminal_escape.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/textual_adapter.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/theme.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/tool_display.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/tools.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/ui.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/unicode_security.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/update_check.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/__init__.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/_links.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/agent_selector.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/approval.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/ask_user.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/autocomplete.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/chat_input.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/cwd_switch.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/diff.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/history.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/install_confirm.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/launch_init.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/loading.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/mcp_reconnect.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/mcp_viewer.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/message_store.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/messages.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/model_selector.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/notification_center.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/notification_detail.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/notification_settings.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/restart_prompt.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/status.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/theme_selector.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/tool_renderers.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/tool_widgets.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/update_available.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/update_progress.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/deepagents_code/widgets/welcome.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/images/tui.png +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/scripts/check_imports.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/scripts/debug_server.sh +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/scripts/generate_commands_catalog.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/scripts/install.sh +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/README.md +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/integration_tests/__init__.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/integration_tests/benchmarks/__init__.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/integration_tests/conftest.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/integration_tests/test_acp_mode.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/integration_tests/test_compact_resume.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/integration_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/integration_tests/test_sandbox_operations.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/__init__.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/conftest.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/skills/__init__.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/skills/test_commands.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/skills/test_load.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/skills/test_skills_json.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_agent.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_agent_friendly.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_agent_selector.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_approval.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_args.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_ask_user.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_ask_user_middleware.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_auth_commands.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_auth_store.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_autocomplete.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_charset.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_chat_input.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_clipboard.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_command_registry.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_compact_tool.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_config.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_config_manifest.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_configurable_model.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_cursor_blink.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_cwd_switch.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_debug.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_editor.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_end_to_end.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_env_vars.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_event_bus.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_exception_handling.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_extras_info.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_file_ops.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_filesystem_empty_result.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_formatting.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_git.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_history.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_hooks.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_imports.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_input_parsing.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_install_command.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_install_confirm.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_install_script.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_launch_init.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_links.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_loading.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_local_context.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_main.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_main_acp_mode.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_main_args.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_managed_tools.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_mcp_auth.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_mcp_commands.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_mcp_disabled.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_mcp_login_service.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_mcp_reconnect.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_mcp_tools.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_mcp_trust.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_mcp_viewer.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_media_utils.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_memory_guard.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_message_store.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_messages.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_model_selector.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_model_switch.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_non_interactive.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_notification_center.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_notification_detail.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_notifications.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_offload.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_offload_dict_messages.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_onboarding.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_openai_codex_integration.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_output.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_reload.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_remote_client.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_restart_prompt.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_resume_state.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_sandbox_config.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_sandbox_provider.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_sandbox_registry.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_server.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_server_config.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_server_graph.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_server_helpers.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_server_manager.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_session_stats.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_sessions.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_shell_allow_list.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_skill_invocation.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_startup_fast_paths.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_state_migration.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_status.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_subagents.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_terminal_capabilities.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_terminal_escape.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_textual_adapter.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_textual_patches.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_theme.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_tool_display.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_ui.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_unicode_security.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_update_available.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_update_check.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_update_progress.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_version.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/test_welcome.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/tools/__init__.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/tools/test_current_thread.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/tools/test_fetch_url.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/widgets/__init__.py +0 -0
- {deepagents_code-0.1.17 → deepagents_code-0.1.18}/tests/unit_tests/widgets/test_diff.py +0 -0
|
@@ -148,7 +148,8 @@ To add a new slash command: (1) add a `SlashCommand` entry to `COMMANDS`, (2) se
|
|
|
148
148
|
2. `deepagents_code/model_config.py` — if the provider reads a *dedicated* endpoint env var, add `"provider_name": ("CANONICAL_BASE_URL", "ALTERNATE", ...)` to `PROVIDER_BASE_URL_ENV` (see guidelines below); omit the provider entirely when it has no provider-specific endpoint variable
|
|
149
149
|
3. `pyproject.toml` — add `provider = ["langchain-provider>=X.Y.Z,<N.0.0"]` to `[project.optional-dependencies]` and include it in the `all-providers` composite extra
|
|
150
150
|
4. `deepagents_code/model_config.py` — add `"provider_name"` to `RETRY_PARAM_BY_PROVIDER` if the provider's chat model accepts `max_retries`
|
|
151
|
-
5. `
|
|
151
|
+
5. `deepagents_code/widgets/auth.py` — add `"provider_name": "Display Name"` to `PROVIDER_DISPLAY_NAMES` so the `/auth` UI shows a branded label instead of the title-cased key, and (if the provider issues API keys from a self-serve page) `"provider_name": "https://…"` to `PROVIDER_API_KEY_URLS` so the prompt links straight to the key page
|
|
152
|
+
6. `tests/unit_tests/test_model_config.py` — add `assert PROVIDER_API_KEY_ENV["provider_name"] == "ENV_VAR_NAME"` to `TestProviderApiKeyEnv.test_contains_major_providers`, and pin any `PROVIDER_BASE_URL_ENV` entry with a matching assertion
|
|
152
153
|
|
|
153
154
|
### `PROVIDER_BASE_URL_ENV` guidelines
|
|
154
155
|
|
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
# Deep Agents Code Changelog
|
|
4
4
|
|
|
5
|
+
## [0.1.18](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.17...deepagents-code==0.1.18) (2026-06-16)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* Add provider-specific auth guidance ([#4004](https://github.com/langchain-ai/deepagents/issues/4004)) ([6a39247](https://github.com/langchain-ai/deepagents/commit/6a392471ba30089b1a63135494873d55209bb081))
|
|
10
|
+
|
|
5
11
|
## [0.1.17](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.16...deepagents-code==0.1.17) (2026-06-16)
|
|
6
12
|
|
|
7
13
|
### Features
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deepagents-code
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.18
|
|
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/
|
|
@@ -122,7 +122,7 @@ Requires-Dist: langchain-openrouter<2.0.0,>=0.2.3; extra == 'openrouter'
|
|
|
122
122
|
Provides-Extra: perplexity
|
|
123
123
|
Requires-Dist: langchain-perplexity<2.0.0,>=1.4.0; extra == 'perplexity'
|
|
124
124
|
Provides-Extra: quickjs
|
|
125
|
-
Requires-Dist: langchain-quickjs<0.
|
|
125
|
+
Requires-Dist: langchain-quickjs<0.3.0,>=0.2.0; extra == 'quickjs'
|
|
126
126
|
Provides-Extra: runloop
|
|
127
127
|
Requires-Dist: langchain-runloop>=0.0.6; extra == 'runloop'
|
|
128
128
|
Provides-Extra: together
|
|
@@ -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.18" # 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."""
|
|
@@ -22,7 +22,7 @@ def format_auth_badge(status: ProviderAuthStatus) -> Content:
|
|
|
22
22
|
"""Format an auth manager badge for a provider.
|
|
23
23
|
|
|
24
24
|
Used by the `/auth` manager, where each provider renders a bracketed,
|
|
25
|
-
styled badge (e.g. `[stored]`, `[env: ANTHROPIC_API_KEY]`, `[missing]`).
|
|
25
|
+
styled badge (e.g. `[stored]`, `[env set: ANTHROPIC_API_KEY]`, `[missing]`).
|
|
26
26
|
|
|
27
27
|
Args:
|
|
28
28
|
status: Provider auth/readiness status.
|
|
@@ -160,7 +160,7 @@ def _format_configured_badge(status: ProviderAuthStatus) -> Content:
|
|
|
160
160
|
status: A `CONFIGURED` provider auth status.
|
|
161
161
|
|
|
162
162
|
Returns:
|
|
163
|
-
A styled badge naming the credential source (`[stored]` or `[env: …]`).
|
|
163
|
+
A styled badge naming the credential source (`[stored]` or `[env set: …]`).
|
|
164
164
|
|
|
165
165
|
Raises:
|
|
166
166
|
ValueError: If the status carries no source. `ProviderAuthStatus`
|
|
@@ -173,7 +173,7 @@ def _format_configured_badge(status: ProviderAuthStatus) -> Content:
|
|
|
173
173
|
case ProviderAuthSource.ENV:
|
|
174
174
|
if status.env_var:
|
|
175
175
|
return Content.assemble(
|
|
176
|
-
("[env: ", "$text-muted"),
|
|
176
|
+
("[env set: ", "$text-muted"),
|
|
177
177
|
Content.styled(
|
|
178
178
|
resolved_env_var_name(status.env_var), "$text-muted"
|
|
179
179
|
),
|
|
@@ -654,6 +654,8 @@ class Glyphs:
|
|
|
654
654
|
arrow_down: str # down arrow vs v
|
|
655
655
|
bullet: str # bullet vs -
|
|
656
656
|
cursor: str # cursor vs >
|
|
657
|
+
disclosure_collapsed: str # ▸ vs >
|
|
658
|
+
disclosure_expanded: str # ▾ vs v
|
|
657
659
|
|
|
658
660
|
# Box-drawing characters
|
|
659
661
|
box_vertical: str # │ vs |
|
|
@@ -684,6 +686,8 @@ UNICODE_GLYPHS = Glyphs(
|
|
|
684
686
|
arrow_down="↓",
|
|
685
687
|
bullet="•",
|
|
686
688
|
cursor="›", # noqa: RUF001 # Intentional Unicode glyph
|
|
689
|
+
disclosure_collapsed="▸",
|
|
690
|
+
disclosure_expanded="▾",
|
|
687
691
|
# Box-drawing characters
|
|
688
692
|
box_vertical="│",
|
|
689
693
|
box_horizontal="─",
|
|
@@ -710,6 +714,8 @@ ASCII_GLYPHS = Glyphs(
|
|
|
710
714
|
arrow_down="v",
|
|
711
715
|
bullet="-",
|
|
712
716
|
cursor=">",
|
|
717
|
+
disclosure_collapsed=">",
|
|
718
|
+
disclosure_expanded="v",
|
|
713
719
|
# Box-drawing characters
|
|
714
720
|
box_vertical="|",
|
|
715
721
|
box_horizontal="-",
|
|
@@ -430,6 +430,22 @@ class ProviderConfig(TypedDict, total=False):
|
|
|
430
430
|
creation.
|
|
431
431
|
"""
|
|
432
432
|
|
|
433
|
+
display_name: str
|
|
434
|
+
"""Human-readable provider name shown in auth UI.
|
|
435
|
+
|
|
436
|
+
Useful for arbitrary providers whose config key is optimized for machine use
|
|
437
|
+
(e.g., `my_gateway`) but whose UI label should include spaces or brand
|
|
438
|
+
capitalization.
|
|
439
|
+
"""
|
|
440
|
+
|
|
441
|
+
api_key_url: str
|
|
442
|
+
"""Provider page where users can create or manage API keys.
|
|
443
|
+
|
|
444
|
+
Used by `/auth` as an acquisition link before the API-key input. The value is
|
|
445
|
+
a URL, not a credential. Must use an `http` or `https` scheme to render as a
|
|
446
|
+
clickable link; values with other schemes are ignored with a warning.
|
|
447
|
+
"""
|
|
448
|
+
|
|
433
449
|
base_url: str
|
|
434
450
|
"""Custom base URL."""
|
|
435
451
|
|
|
@@ -2239,6 +2255,27 @@ class ModelConfig:
|
|
|
2239
2255
|
enabled,
|
|
2240
2256
|
)
|
|
2241
2257
|
|
|
2258
|
+
# `display_name`/`api_key_url` also originate from untyped TOML; cast
|
|
2259
|
+
# to `object` so the runtime non-string checks stay reachable (the
|
|
2260
|
+
# TypedDict types them as `str`).
|
|
2261
|
+
display_name = cast("object", provider.get("display_name"))
|
|
2262
|
+
if display_name is not None and not isinstance(display_name, str):
|
|
2263
|
+
logger.warning(
|
|
2264
|
+
"Provider '%s' has non-string 'display_name' value %r "
|
|
2265
|
+
"(expected a string). Falling back to the default label.",
|
|
2266
|
+
name,
|
|
2267
|
+
display_name,
|
|
2268
|
+
)
|
|
2269
|
+
|
|
2270
|
+
api_key_url = cast("object", provider.get("api_key_url"))
|
|
2271
|
+
if api_key_url is not None and not isinstance(api_key_url, str):
|
|
2272
|
+
logger.warning(
|
|
2273
|
+
"Provider '%s' has non-string 'api_key_url' value %r "
|
|
2274
|
+
"(expected a string). Ignoring it.",
|
|
2275
|
+
name,
|
|
2276
|
+
api_key_url,
|
|
2277
|
+
)
|
|
2278
|
+
|
|
2242
2279
|
class_path = provider.get("class_path")
|
|
2243
2280
|
if class_path and ":" not in class_path:
|
|
2244
2281
|
logger.warning(
|
|
@@ -2400,6 +2437,32 @@ class ModelConfig:
|
|
|
2400
2437
|
provider = self.providers.get(provider_name)
|
|
2401
2438
|
return provider.get("api_key_env") if provider else None
|
|
2402
2439
|
|
|
2440
|
+
def get_provider_display_name(self, provider_name: str) -> str | None:
|
|
2441
|
+
"""Get the configured display name for a provider.
|
|
2442
|
+
|
|
2443
|
+
Args:
|
|
2444
|
+
provider_name: The provider to look up.
|
|
2445
|
+
|
|
2446
|
+
Returns:
|
|
2447
|
+
Human-readable display name if configured, None otherwise.
|
|
2448
|
+
"""
|
|
2449
|
+
provider = self.providers.get(provider_name)
|
|
2450
|
+
name = provider.get("display_name") if provider else None
|
|
2451
|
+
return name if isinstance(name, str) else None
|
|
2452
|
+
|
|
2453
|
+
def get_provider_api_key_url(self, provider_name: str) -> str | None:
|
|
2454
|
+
"""Get the configured API-key management URL for a provider.
|
|
2455
|
+
|
|
2456
|
+
Args:
|
|
2457
|
+
provider_name: The provider to look up.
|
|
2458
|
+
|
|
2459
|
+
Returns:
|
|
2460
|
+
API-key management URL if configured, None otherwise.
|
|
2461
|
+
"""
|
|
2462
|
+
provider = self.providers.get(provider_name)
|
|
2463
|
+
url = provider.get("api_key_url") if provider else None
|
|
2464
|
+
return url if isinstance(url, str) else None
|
|
2465
|
+
|
|
2403
2466
|
def get_base_url_env(self, provider_name: str) -> str | None:
|
|
2404
2467
|
"""Get the environment variable name for a provider's base URL.
|
|
2405
2468
|
|