deepagents-code 0.1.8__tar.gz → 0.1.9__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.8 → deepagents_code-0.1.9}/CHANGELOG.md +6 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/PKG-INFO +48 -48
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/README.md +1 -1
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_version.py +1 -1
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/app.py +62 -20
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/pyproject.toml +48 -34
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_app.py +83 -0
- deepagents_code-0.1.9/tests/unit_tests/test_terminal_progress_preference.py +68 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/uv.lock +352 -441
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/.gitignore +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/AGENTS.md +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/COMMANDS.md +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/DEV.md +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/Makefile +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/THREAT_MODEL.md +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/__init__.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/__main__.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_ask_user_types.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_cli_context.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_constants.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_debug.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_env_vars.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_git.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_server_config.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_session_stats.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_startup_error.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_testing_models.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/_textual_patches.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/agent.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/app.tcss +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/ask_user.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/auth_store.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/built_in_skills/__init__.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/clipboard.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/command_registry.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/config.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/configurable_model.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/default_agent_prompt.md +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/editor.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/event_bus.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/extras_info.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/file_ops.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/filesystem_empty_result.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/formatting.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/hooks.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/input.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/integrations/__init__.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/integrations/sandbox_factory.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/integrations/sandbox_provider.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/local_context.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/main.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_auth.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_commands.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_disabled.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_login_service.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_providers/__init__.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_providers/_registry.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_providers/base.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_providers/github.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_providers/slack.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_tools.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/mcp_trust.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/media_utils.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/model_config.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/non_interactive.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/notifications.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/offload.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/onboarding.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/output.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/project_utils.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/py.typed +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/remote_client.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/resume_state.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/server.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/server_graph.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/server_manager.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/sessions.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/skills/__init__.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/skills/commands.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/skills/invocation.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/skills/load.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/state_migration.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/subagents.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/system_prompt.md +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/terminal_capabilities.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/terminal_escape.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/textual_adapter.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/theme.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/tool_display.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/tools.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/ui.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/unicode_security.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/update_check.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/__init__.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/_links.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/agent_selector.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/approval.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/ask_user.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/auth.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/autocomplete.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/chat_input.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/diff.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/history.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/launch_init.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/loading.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/mcp_login.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/mcp_reconnect.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/mcp_viewer.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/message_store.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/messages.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/model_selector.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/notification_center.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/notification_detail.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/notification_settings.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/status.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/theme_selector.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/thread_selector.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/tool_renderers.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/tool_widgets.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/update_available.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/update_progress.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/deepagents_code/widgets/welcome.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/images/tui.png +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/scripts/check_imports.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/scripts/debug_server.sh +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/scripts/generate_commands_catalog.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/scripts/install.sh +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/README.md +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/__init__.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/benchmarks/__init__.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/conftest.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/test_acp_mode.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/test_compact_resume.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/integration_tests/test_sandbox_operations.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/__init__.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/conftest.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/skills/__init__.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/skills/test_commands.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/skills/test_load.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/skills/test_skills_json.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_agent.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_agent_friendly.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_agent_selector.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_approval.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_args.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_ask_user.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_ask_user_middleware.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_auth_store.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_auth_widgets.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_autocomplete.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_charset.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_chat_input.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_clipboard.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_command_registry.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_compact_tool.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_config.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_configurable_model.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_cursor_blink.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_debug.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_editor.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_end_to_end.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_env_vars.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_event_bus.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_exception_handling.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_extras_info.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_file_ops.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_filesystem_empty_result.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_formatting.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_git.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_history.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_hooks.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_imports.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_input_parsing.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_install_command.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_launch_init.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_links.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_loading.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_local_context.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_main.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_main_acp_mode.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_main_args.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_auth.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_commands.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_disabled.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_login_modal.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_login_service.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_reconnect.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_tools.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_trust.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_mcp_viewer.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_media_utils.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_message_store.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_messages.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_model_config.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_model_selector.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_model_switch.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_non_interactive.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_notification_center.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_notification_detail.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_notifications.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_offload.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_offload_dict_messages.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_onboarding.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_output.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_reload.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_remote_client.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_resume_state.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_server.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_server_config.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_server_graph.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_server_helpers.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_server_manager.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_session_stats.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_sessions.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_shell_allow_list.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_skill_invocation.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_startup_fast_paths.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_state_migration.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_status.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_subagents.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_terminal_capabilities.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_terminal_escape.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_textual_adapter.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_textual_patches.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_theme.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_thread_selector.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_tool_display.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_ui.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_unicode_security.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_update_available.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_update_check.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_update_progress.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_version.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/test_welcome.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/tools/__init__.py +0 -0
- {deepagents_code-0.1.8 → deepagents_code-0.1.9}/tests/unit_tests/tools/test_fetch_url.py +0 -0
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
# Deep Agents Code Changelog
|
|
4
4
|
|
|
5
|
+
## [0.1.9](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.8...deepagents-code==0.1.9) (2026-06-03)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* Add terminal progress preference ([#3728](https://github.com/langchain-ai/deepagents/issues/3728)) ([d9e4976](https://github.com/langchain-ai/deepagents/commit/d9e4976826ae2281e90e06facb5a70a785703029))
|
|
10
|
+
|
|
5
11
|
## [0.1.8](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.7...deepagents-code==0.1.8) (2026-06-02)
|
|
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.9
|
|
4
4
|
Summary: Terminal interface for Deep Agents - interactive AI agent with file operations, shell access, and sub-agent capabilities.
|
|
5
5
|
Project-URL: Homepage, https://docs.langchain.com/oss/python/deepagents/overview
|
|
6
6
|
Project-URL: Documentation, https://reference.langchain.com/python/deepagents/
|
|
@@ -25,105 +25,105 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
|
25
25
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
26
26
|
Classifier: Topic :: Terminals
|
|
27
27
|
Requires-Python: <4.0,>=3.11
|
|
28
|
-
Requires-Dist: aiosqlite<1.0.0,>=0.
|
|
29
|
-
Requires-Dist: deepagents-acp
|
|
30
|
-
Requires-Dist: deepagents==0.6.
|
|
28
|
+
Requires-Dist: aiosqlite<1.0.0,>=0.22.1
|
|
29
|
+
Requires-Dist: deepagents-acp<1.0.0,>=0.0.7
|
|
30
|
+
Requires-Dist: deepagents==0.6.8
|
|
31
31
|
Requires-Dist: httpx<1.0.0,>=0.28.1
|
|
32
|
-
Requires-Dist: langchain-anthropic<2.0.0,>=1.4.
|
|
33
|
-
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.
|
|
32
|
+
Requires-Dist: langchain-anthropic<2.0.0,>=1.4.4
|
|
33
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.4
|
|
34
34
|
Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.2.2
|
|
35
|
-
Requires-Dist: langchain-openai<2.0.0,>=1.2.
|
|
35
|
+
Requires-Dist: langchain-openai<2.0.0,>=1.2.2
|
|
36
36
|
Requires-Dist: langchain<2.0.0,>=1.3.4
|
|
37
37
|
Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.1.0
|
|
38
|
-
Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.
|
|
39
|
-
Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.
|
|
40
|
-
Requires-Dist: langgraph-sdk<1.0.0,>=0.
|
|
41
|
-
Requires-Dist: langsmith[sandbox]>=0.8.
|
|
42
|
-
Requires-Dist: markdownify<2.0.0,>=
|
|
43
|
-
Requires-Dist: packaging>=
|
|
44
|
-
Requires-Dist: pillow<13.0.0,>=
|
|
38
|
+
Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.27
|
|
39
|
+
Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.29.0
|
|
40
|
+
Requires-Dist: langgraph-sdk<1.0.0,>=0.4.2
|
|
41
|
+
Requires-Dist: langsmith[sandbox]>=0.8.8
|
|
42
|
+
Requires-Dist: markdownify<2.0.0,>=1.2.2
|
|
43
|
+
Requires-Dist: packaging>=26.2
|
|
44
|
+
Requires-Dist: pillow<13.0.0,>=12.2.0
|
|
45
45
|
Requires-Dist: prompt-toolkit<4.0.0,>=3.0.52
|
|
46
46
|
Requires-Dist: pyperclip<2.0.0,>=1.11.0
|
|
47
47
|
Requires-Dist: python-dotenv<2.0.0,>=1.2.2
|
|
48
48
|
Requires-Dist: pyyaml>=6.0.0
|
|
49
|
-
Requires-Dist: requests<3.0.0,>=2.
|
|
50
|
-
Requires-Dist: rich<16.0.0,>=14.
|
|
51
|
-
Requires-Dist: tavily-python<1.0.0,>=0.7.
|
|
49
|
+
Requires-Dist: requests<3.0.0,>=2.34.2
|
|
50
|
+
Requires-Dist: rich<16.0.0,>=14.0.0
|
|
51
|
+
Requires-Dist: tavily-python<1.0.0,>=0.7.25
|
|
52
52
|
Requires-Dist: textual-autocomplete<5.0.0,>=4.0.6
|
|
53
53
|
Requires-Dist: textual-speedups<1.0.0,>=0.2.1
|
|
54
|
-
Requires-Dist: textual<9.0.0,>=8.2.
|
|
55
|
-
Requires-Dist: tomli-w<2.0.0,>=1.
|
|
56
|
-
Requires-Dist: uuid-utils<1.0.0,>=0.
|
|
54
|
+
Requires-Dist: textual<9.0.0,>=8.2.7
|
|
55
|
+
Requires-Dist: tomli-w<2.0.0,>=1.2.0
|
|
56
|
+
Requires-Dist: uuid-utils<1.0.0,>=0.16.0
|
|
57
57
|
Provides-Extra: agentcore
|
|
58
|
-
Requires-Dist: langchain-agentcore-codeinterpreter
|
|
58
|
+
Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.3; extra == 'agentcore'
|
|
59
59
|
Provides-Extra: all-providers
|
|
60
|
-
Requires-Dist: langchain-anthropic<2.0.0,>=1.4.
|
|
61
|
-
Requires-Dist: langchain-aws<2.0.0,>=1.
|
|
60
|
+
Requires-Dist: langchain-anthropic<2.0.0,>=1.4.4; extra == 'all-providers'
|
|
61
|
+
Requires-Dist: langchain-aws<2.0.0,>=1.5.0; extra == 'all-providers'
|
|
62
62
|
Requires-Dist: langchain-baseten<1.0.0,>=0.2.0; extra == 'all-providers'
|
|
63
|
-
Requires-Dist: langchain-cohere<1.0.0,>=0.
|
|
63
|
+
Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'all-providers'
|
|
64
64
|
Requires-Dist: langchain-deepseek<2.0.0,>=1.0.1; extra == 'all-providers'
|
|
65
|
-
Requires-Dist: langchain-fireworks<2.0.0,>=1.
|
|
66
|
-
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.
|
|
65
|
+
Requires-Dist: langchain-fireworks<2.0.0,>=1.4.2; extra == 'all-providers'
|
|
66
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.4; extra == 'all-providers'
|
|
67
67
|
Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.3; extra == 'all-providers'
|
|
68
68
|
Requires-Dist: langchain-groq<2.0.0,>=1.1.2; extra == 'all-providers'
|
|
69
69
|
Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'all-providers'
|
|
70
|
-
Requires-Dist: langchain-ibm<2.0.0,>=1.0
|
|
70
|
+
Requires-Dist: langchain-ibm<2.0.0,>=1.1.0; extra == 'all-providers'
|
|
71
71
|
Requires-Dist: langchain-litellm<2.0.0,>=0.6.6; extra == 'all-providers'
|
|
72
72
|
Requires-Dist: langchain-mistralai<2.0.0,>=1.1.4; extra == 'all-providers'
|
|
73
|
-
Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.
|
|
73
|
+
Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.0; extra == 'all-providers'
|
|
74
74
|
Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'all-providers'
|
|
75
|
-
Requires-Dist: langchain-openai<2.0.0,>=1.2.
|
|
75
|
+
Requires-Dist: langchain-openai<2.0.0,>=1.2.2; extra == 'all-providers'
|
|
76
76
|
Requires-Dist: langchain-openrouter<2.0.0,>=0.2.3; extra == 'all-providers'
|
|
77
|
-
Requires-Dist: langchain-perplexity<2.0.0,>=1.
|
|
77
|
+
Requires-Dist: langchain-perplexity<2.0.0,>=1.3.1; extra == 'all-providers'
|
|
78
78
|
Requires-Dist: langchain-together<2.0.0,>=0.4.0; extra == 'all-providers'
|
|
79
79
|
Requires-Dist: langchain-xai<2.0.0,>=1.2.2; extra == 'all-providers'
|
|
80
80
|
Provides-Extra: all-sandboxes
|
|
81
|
-
Requires-Dist: langchain-agentcore-codeinterpreter
|
|
82
|
-
Requires-Dist: langchain-daytona>=0.0.
|
|
83
|
-
Requires-Dist: langchain-modal>=0.0.
|
|
84
|
-
Requires-Dist: langchain-runloop>=0.0.
|
|
81
|
+
Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.3; extra == 'all-sandboxes'
|
|
82
|
+
Requires-Dist: langchain-daytona>=0.0.6; extra == 'all-sandboxes'
|
|
83
|
+
Requires-Dist: langchain-modal>=0.0.4; extra == 'all-sandboxes'
|
|
84
|
+
Requires-Dist: langchain-runloop>=0.0.5; extra == 'all-sandboxes'
|
|
85
85
|
Provides-Extra: anthropic
|
|
86
|
-
Requires-Dist: langchain-anthropic<2.0.0,>=1.4.
|
|
86
|
+
Requires-Dist: langchain-anthropic<2.0.0,>=1.4.4; extra == 'anthropic'
|
|
87
87
|
Provides-Extra: baseten
|
|
88
88
|
Requires-Dist: langchain-baseten<1.0.0,>=0.2.0; extra == 'baseten'
|
|
89
89
|
Provides-Extra: bedrock
|
|
90
|
-
Requires-Dist: langchain-aws<2.0.0,>=1.
|
|
90
|
+
Requires-Dist: langchain-aws<2.0.0,>=1.5.0; extra == 'bedrock'
|
|
91
91
|
Provides-Extra: cohere
|
|
92
|
-
Requires-Dist: langchain-cohere<1.0.0,>=0.
|
|
92
|
+
Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'cohere'
|
|
93
93
|
Provides-Extra: daytona
|
|
94
|
-
Requires-Dist: langchain-daytona>=0.0.
|
|
94
|
+
Requires-Dist: langchain-daytona>=0.0.6; extra == 'daytona'
|
|
95
95
|
Provides-Extra: deepseek
|
|
96
96
|
Requires-Dist: langchain-deepseek<2.0.0,>=1.0.1; extra == 'deepseek'
|
|
97
97
|
Provides-Extra: fireworks
|
|
98
|
-
Requires-Dist: langchain-fireworks<2.0.0,>=1.
|
|
98
|
+
Requires-Dist: langchain-fireworks<2.0.0,>=1.4.2; extra == 'fireworks'
|
|
99
99
|
Provides-Extra: google-genai
|
|
100
|
-
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.
|
|
100
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.4; extra == 'google-genai'
|
|
101
101
|
Provides-Extra: groq
|
|
102
102
|
Requires-Dist: langchain-groq<2.0.0,>=1.1.2; extra == 'groq'
|
|
103
103
|
Provides-Extra: huggingface
|
|
104
104
|
Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'huggingface'
|
|
105
105
|
Provides-Extra: ibm
|
|
106
|
-
Requires-Dist: langchain-ibm<2.0.0,>=1.0
|
|
106
|
+
Requires-Dist: langchain-ibm<2.0.0,>=1.1.0; extra == 'ibm'
|
|
107
107
|
Provides-Extra: litellm
|
|
108
108
|
Requires-Dist: langchain-litellm<2.0.0,>=0.6.6; extra == 'litellm'
|
|
109
109
|
Provides-Extra: mistralai
|
|
110
110
|
Requires-Dist: langchain-mistralai<2.0.0,>=1.1.4; extra == 'mistralai'
|
|
111
111
|
Provides-Extra: modal
|
|
112
|
-
Requires-Dist: langchain-modal>=0.0.
|
|
112
|
+
Requires-Dist: langchain-modal>=0.0.4; extra == 'modal'
|
|
113
113
|
Provides-Extra: nvidia
|
|
114
|
-
Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.
|
|
114
|
+
Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.0; extra == 'nvidia'
|
|
115
115
|
Provides-Extra: ollama
|
|
116
116
|
Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'ollama'
|
|
117
117
|
Provides-Extra: openai
|
|
118
|
-
Requires-Dist: langchain-openai<2.0.0,>=1.2.
|
|
118
|
+
Requires-Dist: langchain-openai<2.0.0,>=1.2.2; extra == 'openai'
|
|
119
119
|
Provides-Extra: openrouter
|
|
120
120
|
Requires-Dist: langchain-openrouter<2.0.0,>=0.2.3; extra == 'openrouter'
|
|
121
121
|
Provides-Extra: perplexity
|
|
122
|
-
Requires-Dist: langchain-perplexity<2.0.0,>=1.
|
|
122
|
+
Requires-Dist: langchain-perplexity<2.0.0,>=1.3.1; extra == 'perplexity'
|
|
123
123
|
Provides-Extra: quickjs
|
|
124
|
-
Requires-Dist: langchain-quickjs<0.2.0,>=0.1.
|
|
124
|
+
Requires-Dist: langchain-quickjs<0.2.0,>=0.1.3; extra == 'quickjs'
|
|
125
125
|
Provides-Extra: runloop
|
|
126
|
-
Requires-Dist: langchain-runloop>=0.0.
|
|
126
|
+
Requires-Dist: langchain-runloop>=0.0.5; extra == 'runloop'
|
|
127
127
|
Provides-Extra: together
|
|
128
128
|
Requires-Dist: langchain-together<2.0.0,>=0.4.0; extra == 'together'
|
|
129
129
|
Provides-Extra: vertex
|
|
@@ -152,7 +152,7 @@ curl -LsSf https://langch.in/dcode | bash
|
|
|
152
152
|
```bash
|
|
153
153
|
# With model provider extras
|
|
154
154
|
# OpenAI, Anthropic, and Gemini are included by default
|
|
155
|
-
|
|
155
|
+
DEEPAGENTS_CODE_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/dcode | bash
|
|
156
156
|
```
|
|
157
157
|
|
|
158
158
|
Run:
|
|
@@ -18,7 +18,7 @@ curl -LsSf https://langch.in/dcode | bash
|
|
|
18
18
|
```bash
|
|
19
19
|
# With model provider extras
|
|
20
20
|
# OpenAI, Anthropic, and Gemini are included by default
|
|
21
|
-
|
|
21
|
+
DEEPAGENTS_CODE_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/dcode | bash
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
Run:
|
|
@@ -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.9" # 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."""
|
|
@@ -560,16 +560,21 @@ def save_theme_preference(name: str) -> bool:
|
|
|
560
560
|
return _save_theme_preference_result(name).ok
|
|
561
561
|
|
|
562
562
|
|
|
563
|
-
def
|
|
564
|
-
"""Load
|
|
563
|
+
def _load_bool_ui_preference(key: str, *, log_label: str) -> bool:
|
|
564
|
+
"""Load a boolean `[ui]` preference from `~/.deepagents/config.toml`.
|
|
565
565
|
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
566
|
+
These preferences have no in-app command; the file is edited manually. The
|
|
567
|
+
loader is intentionally forgiving: any problem reading or parsing the config
|
|
568
|
+
falls back to `True` (the feature stays on) after logging a warning, so a
|
|
569
|
+
typo in a cosmetic setting never breaks startup.
|
|
570
|
+
|
|
571
|
+
Args:
|
|
572
|
+
key: The key to read from the `[ui]` table.
|
|
573
|
+
log_label: Human-readable name of the preference, used in warning logs.
|
|
569
574
|
|
|
570
575
|
Returns:
|
|
571
|
-
The saved `[ui]
|
|
572
|
-
|
|
576
|
+
The saved `[ui].<key>` value, or `True` when unset, unreadable,
|
|
577
|
+
or malformed.
|
|
573
578
|
"""
|
|
574
579
|
import tomllib
|
|
575
580
|
|
|
@@ -581,28 +586,60 @@ def _load_cursor_blink_preference() -> bool:
|
|
|
581
586
|
with DEFAULT_CONFIG_PATH.open("rb") as f:
|
|
582
587
|
data = tomllib.load(f)
|
|
583
588
|
except (tomllib.TOMLDecodeError, PermissionError, OSError) as exc:
|
|
584
|
-
logger.warning("Could not read config for
|
|
589
|
+
logger.warning("Could not read config for %s preference: %s", log_label, exc)
|
|
585
590
|
return True
|
|
586
591
|
|
|
587
592
|
ui = data.get("ui", {})
|
|
588
593
|
if not isinstance(ui, dict):
|
|
589
594
|
logger.warning(
|
|
590
|
-
"[ui] should be a table; got %s while loading
|
|
595
|
+
"[ui] should be a table; got %s while loading %s preference",
|
|
591
596
|
type(ui).__name__,
|
|
597
|
+
log_label,
|
|
592
598
|
)
|
|
593
599
|
return True
|
|
594
600
|
|
|
595
|
-
value = ui.get(
|
|
601
|
+
value = ui.get(key)
|
|
596
602
|
if isinstance(value, bool):
|
|
597
603
|
return value
|
|
598
604
|
if value is not None:
|
|
599
605
|
logger.warning(
|
|
600
|
-
"[ui]
|
|
606
|
+
"[ui].%s should be a boolean; got %s",
|
|
607
|
+
key,
|
|
601
608
|
type(value).__name__,
|
|
602
609
|
)
|
|
603
610
|
return True
|
|
604
611
|
|
|
605
612
|
|
|
613
|
+
def _load_cursor_blink_preference() -> bool:
|
|
614
|
+
"""Load the saved cursor-blink preference from `~/.deepagents/config.toml`.
|
|
615
|
+
|
|
616
|
+
The chat input cursor blink can be turned off by setting
|
|
617
|
+
`[ui].cursor_blink = false` in the config file. There is no in-app command
|
|
618
|
+
for this; the file is edited manually.
|
|
619
|
+
|
|
620
|
+
Returns:
|
|
621
|
+
The saved `[ui].cursor_blink` value, or `True` (blink on) when unset,
|
|
622
|
+
unreadable, or malformed.
|
|
623
|
+
"""
|
|
624
|
+
return _load_bool_ui_preference("cursor_blink", log_label="cursor blink")
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
def _load_terminal_progress_preference() -> bool:
|
|
628
|
+
"""Load the `OSC 9;4` progress preference from `~/.deepagents/config.toml`.
|
|
629
|
+
|
|
630
|
+
The terminal taskbar/dock/tab progress indicator (where supported) can be
|
|
631
|
+
turned off by setting `[ui].terminal_progress = false` in the config file.
|
|
632
|
+
There is no in-app command for this; the file is edited manually. The
|
|
633
|
+
`DEEPAGENTS_CODE_NO_TERMINAL_ESCAPE` environment variable still disables all
|
|
634
|
+
terminal escapes regardless of this value.
|
|
635
|
+
|
|
636
|
+
Returns:
|
|
637
|
+
The saved `[ui].terminal_progress` value, or `True` (progress on) when
|
|
638
|
+
unset, unreadable, or malformed.
|
|
639
|
+
"""
|
|
640
|
+
return _load_bool_ui_preference("terminal_progress", log_label="terminal progress")
|
|
641
|
+
|
|
642
|
+
|
|
606
643
|
def _save_terminal_theme_mapping_result(
|
|
607
644
|
term_program: str,
|
|
608
645
|
name: str,
|
|
@@ -1410,6 +1447,9 @@ class DeepAgentsApp(App):
|
|
|
1410
1447
|
self._cursor_blink_enabled = _load_cursor_blink_preference()
|
|
1411
1448
|
"""Whether the chat input cursor should blink (user preference)."""
|
|
1412
1449
|
|
|
1450
|
+
self._terminal_progress_enabled = _load_terminal_progress_preference()
|
|
1451
|
+
"""Whether to emit `OSC 9;4` taskbar progress (user preference)."""
|
|
1452
|
+
|
|
1413
1453
|
self.sync_terminal_background()
|
|
1414
1454
|
|
|
1415
1455
|
# Injected session config
|
|
@@ -3948,18 +3988,20 @@ class DeepAgentsApp(App):
|
|
|
3948
3988
|
if self._loading_widget:
|
|
3949
3989
|
await self._loading_widget.remove()
|
|
3950
3990
|
self._loading_widget = None
|
|
3991
|
+
if self._terminal_progress_enabled:
|
|
3992
|
+
try:
|
|
3993
|
+
clear_terminal_progress()
|
|
3994
|
+
except Exception:
|
|
3995
|
+
# Cosmetic only — must never break spinner lifecycle.
|
|
3996
|
+
logger.exception("clear_terminal_progress raised unexpectedly")
|
|
3997
|
+
return
|
|
3998
|
+
|
|
3999
|
+
if self._terminal_progress_enabled:
|
|
3951
4000
|
try:
|
|
3952
|
-
|
|
4001
|
+
set_terminal_progress(state=TerminalProgressState.INDETERMINATE)
|
|
3953
4002
|
except Exception:
|
|
3954
4003
|
# Cosmetic only — must never break spinner lifecycle.
|
|
3955
|
-
logger.exception("
|
|
3956
|
-
return
|
|
3957
|
-
|
|
3958
|
-
try:
|
|
3959
|
-
set_terminal_progress(state=TerminalProgressState.INDETERMINATE)
|
|
3960
|
-
except Exception:
|
|
3961
|
-
# Cosmetic only — must never break spinner lifecycle.
|
|
3962
|
-
logger.exception("set_terminal_progress raised unexpectedly")
|
|
4004
|
+
logger.exception("set_terminal_progress raised unexpectedly")
|
|
3963
4005
|
|
|
3964
4006
|
try:
|
|
3965
4007
|
messages = self.query_one("#messages", Container)
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "deepagents-code"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.9"
|
|
8
8
|
description = "Terminal interface for Deep Agents - interactive AI agent with file operations, shell access, and sub-agent capabilities."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
@@ -26,79 +26,79 @@ classifiers = [
|
|
|
26
26
|
]
|
|
27
27
|
dependencies = [
|
|
28
28
|
# Framework
|
|
29
|
-
"deepagents==0.6.
|
|
29
|
+
"deepagents==0.6.8",
|
|
30
30
|
"langchain>=1.3.4,<2.0.0",
|
|
31
31
|
"langgraph-checkpoint-sqlite>=3.1.0,<4.0.0",
|
|
32
32
|
|
|
33
33
|
# Client-server architecture
|
|
34
|
-
"langgraph-sdk>=0.
|
|
35
|
-
"langgraph-cli[inmem]>=0.4.
|
|
36
|
-
"langgraph-runtime-inmem>=0.
|
|
34
|
+
"langgraph-sdk>=0.4.2,<1.0.0",
|
|
35
|
+
"langgraph-cli[inmem]>=0.4.27,<1.0.0",
|
|
36
|
+
"langgraph-runtime-inmem>=0.29.0,<1.0.0",
|
|
37
37
|
"httpx>=0.28.1,<1.0.0",
|
|
38
38
|
|
|
39
39
|
# Core model providers - others are added as optional
|
|
40
|
-
"langchain-anthropic>=1.4.
|
|
41
|
-
"langchain-google-genai>=4.2.
|
|
42
|
-
"langchain-openai>=1.2.
|
|
40
|
+
"langchain-anthropic>=1.4.4,<2.0.0",
|
|
41
|
+
"langchain-google-genai>=4.2.4,<5.0.0",
|
|
42
|
+
"langchain-openai>=1.2.2,<2.0.0",
|
|
43
43
|
|
|
44
44
|
# UI/Terminal
|
|
45
45
|
# Workaround for Textualize/textual#6378 lives in `_textual_patches.py`.
|
|
46
46
|
# On bump, run `tests/unit_tests/test_textual_patches.py` and delete the
|
|
47
47
|
# patch if the upstream issue is fixed.
|
|
48
|
-
"textual>=8.2.
|
|
48
|
+
"textual>=8.2.7,<9.0.0",
|
|
49
49
|
"textual-autocomplete>=4.0.6,<5.0.0",
|
|
50
50
|
"textual-speedups>=0.2.1,<1.0.0",
|
|
51
51
|
"prompt-toolkit>=3.0.52,<4.0.0",
|
|
52
|
-
"rich>=14.
|
|
53
|
-
"markdownify>=
|
|
52
|
+
"rich>=14.0.0,<16.0.0",
|
|
53
|
+
"markdownify>=1.2.2,<2.0.0",
|
|
54
54
|
|
|
55
55
|
# Sandbox integrations
|
|
56
|
-
"langsmith[sandbox]>=0.8.
|
|
56
|
+
"langsmith[sandbox]>=0.8.8",
|
|
57
57
|
|
|
58
58
|
# Tools
|
|
59
|
-
"tavily-python>=0.7.
|
|
59
|
+
"tavily-python>=0.7.25,<1.0.0",
|
|
60
60
|
|
|
61
61
|
# Clipboard
|
|
62
62
|
"pyperclip>=1.11.0,<2.0.0",
|
|
63
63
|
|
|
64
64
|
# Version parsing
|
|
65
|
-
"packaging>=
|
|
65
|
+
"packaging>=26.2",
|
|
66
66
|
|
|
67
67
|
# Utilities
|
|
68
|
-
"uuid-utils>=0.
|
|
68
|
+
"uuid-utils>=0.16.0,<1.0.0",
|
|
69
69
|
"python-dotenv>=1.2.2,<2.0.0",
|
|
70
|
-
"requests>=2.
|
|
71
|
-
"pillow>=
|
|
70
|
+
"requests>=2.34.2,<3.0.0",
|
|
71
|
+
"pillow>=12.2.0,<13.0.0",
|
|
72
72
|
"pyyaml>=6.0.0",
|
|
73
|
-
"aiosqlite>=0.
|
|
74
|
-
"tomli-w>=1.
|
|
73
|
+
"aiosqlite>=0.22.1,<1.0.0",
|
|
74
|
+
"tomli-w>=1.2.0,<2.0.0",
|
|
75
75
|
|
|
76
76
|
# MCP
|
|
77
77
|
"langchain-mcp-adapters>=0.2.2,<1.0.0",
|
|
78
78
|
|
|
79
79
|
# ACP
|
|
80
|
-
"deepagents-acp>=0.0.
|
|
80
|
+
"deepagents-acp>=0.0.7,<1.0.0",
|
|
81
81
|
]
|
|
82
82
|
|
|
83
83
|
[project.optional-dependencies]
|
|
84
84
|
# Model providers
|
|
85
|
-
anthropic = ["langchain-anthropic>=1.4.
|
|
85
|
+
anthropic = ["langchain-anthropic>=1.4.4,<2.0.0"]
|
|
86
86
|
baseten = ["langchain-baseten>=0.2.0,<1.0.0"]
|
|
87
|
-
bedrock = ["langchain-aws>=1.
|
|
88
|
-
cohere = ["langchain-cohere>=0.
|
|
87
|
+
bedrock = ["langchain-aws>=1.5.0,<2.0.0"]
|
|
88
|
+
cohere = ["langchain-cohere>=0.6.0,<1.0.0"]
|
|
89
89
|
deepseek = ["langchain-deepseek>=1.0.1,<2.0.0"]
|
|
90
|
-
fireworks = ["langchain-fireworks>=1.
|
|
91
|
-
google-genai = ["langchain-google-genai>=4.2.
|
|
90
|
+
fireworks = ["langchain-fireworks>=1.4.2,<2.0.0"]
|
|
91
|
+
google-genai = ["langchain-google-genai>=4.2.4,<5.0.0"]
|
|
92
92
|
groq = ["langchain-groq>=1.1.2,<2.0.0"]
|
|
93
93
|
huggingface = ["langchain-huggingface>=1.2.2,<2.0.0"]
|
|
94
|
-
ibm = ["langchain-ibm>=1.0
|
|
94
|
+
ibm = ["langchain-ibm>=1.1.0,<2.0.0"]
|
|
95
95
|
litellm = ["langchain-litellm>=0.6.6,<2.0.0"]
|
|
96
96
|
mistralai = ["langchain-mistralai>=1.1.4,<2.0.0"]
|
|
97
|
-
nvidia = ["langchain-nvidia-ai-endpoints>=1.
|
|
97
|
+
nvidia = ["langchain-nvidia-ai-endpoints>=1.4.0,<2.0.0"]
|
|
98
98
|
ollama = ["langchain-ollama>=1.1.0,<2.0.0"]
|
|
99
|
-
openai = ["langchain-openai>=1.2.
|
|
99
|
+
openai = ["langchain-openai>=1.2.2,<2.0.0"]
|
|
100
100
|
openrouter = ["langchain-openrouter>=0.2.3,<2.0.0"]
|
|
101
|
-
perplexity = ["langchain-perplexity>=1.
|
|
101
|
+
perplexity = ["langchain-perplexity>=1.3.1,<2.0.0"]
|
|
102
102
|
together = ["langchain-together>=0.4.0,<2.0.0"]
|
|
103
103
|
vertex = ["langchain-google-vertexai>=3.2.3,<4.0.0"]
|
|
104
104
|
xai = ["langchain-xai>=1.2.2,<2.0.0"]
|
|
@@ -107,16 +107,16 @@ all-providers = [
|
|
|
107
107
|
]
|
|
108
108
|
|
|
109
109
|
# Sandbox providers
|
|
110
|
-
agentcore = ["langchain-agentcore-codeinterpreter>=0.0.
|
|
111
|
-
daytona = ["langchain-daytona>=0.0.
|
|
112
|
-
modal = ["langchain-modal>=0.0.
|
|
113
|
-
runloop = ["langchain-runloop>=0.0.
|
|
110
|
+
agentcore = ["langchain-agentcore-codeinterpreter>=0.0.3,<1.0.0"]
|
|
111
|
+
daytona = ["langchain-daytona>=0.0.6"]
|
|
112
|
+
modal = ["langchain-modal>=0.0.4"]
|
|
113
|
+
runloop = ["langchain-runloop>=0.0.5"]
|
|
114
114
|
all-sandboxes = [
|
|
115
115
|
"deepagents-code[agentcore,daytona,modal,runloop]",
|
|
116
116
|
]
|
|
117
117
|
|
|
118
118
|
# Standalone integrations (not part of any composite extra)
|
|
119
|
-
quickjs = ["langchain-quickjs>=0.1.
|
|
119
|
+
quickjs = ["langchain-quickjs>=0.1.3,<0.2.0"]
|
|
120
120
|
|
|
121
121
|
|
|
122
122
|
[project.scripts]
|
|
@@ -166,6 +166,20 @@ include = [
|
|
|
166
166
|
"deepagents_code/default_agent_prompt.md" = "deepagents_code/default_agent_prompt.md"
|
|
167
167
|
"deepagents_code/*.tcss" = "deepagents_code/"
|
|
168
168
|
|
|
169
|
+
[tool.uv]
|
|
170
|
+
# langchain-fireworks depends on fireworks-ai>=1.2.0a71 (a pre-release). Scope
|
|
171
|
+
# the pre-release opt-in to fireworks-ai only so every other package still
|
|
172
|
+
# resolves to stable releases.
|
|
173
|
+
#
|
|
174
|
+
# deepagents-acp's `server` module uses the agent-client-protocol v0.9 schema
|
|
175
|
+
# (e.g. `SetSessionConfigOptionResponse`) but its published floor is still
|
|
176
|
+
# `>=0.8.0`, so the lock can resolve to 0.8.x and break the import. Floor it to
|
|
177
|
+
# 0.9.0 here until deepagents-acp bumps its own dependency pin.
|
|
178
|
+
constraint-dependencies = [
|
|
179
|
+
"fireworks-ai>=1.2.0a71",
|
|
180
|
+
"agent-client-protocol>=0.9.0",
|
|
181
|
+
]
|
|
182
|
+
|
|
169
183
|
[tool.uv.sources]
|
|
170
184
|
deepagents = { path = "../deepagents", editable = true }
|
|
171
185
|
langchain-daytona = { path = "../partners/daytona", editable = true }
|
|
@@ -9200,6 +9200,21 @@ from deepagents_code.command_registry import BypassTier # noqa: E402
|
|
|
9200
9200
|
class TestSetSpinnerTerminalProgress:
|
|
9201
9201
|
"""`_set_spinner` should drive the `OSC 9;4` terminal progress indicator."""
|
|
9202
9202
|
|
|
9203
|
+
@pytest.fixture(autouse=True)
|
|
9204
|
+
def _isolate_config(self, tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None:
|
|
9205
|
+
"""Point the config path at an empty temp dir.
|
|
9206
|
+
|
|
9207
|
+
Without this, `_load_terminal_progress_preference` reads the developer's
|
|
9208
|
+
real `~/.deepagents/config.toml` during `DeepAgentsApp.__init__`, so a
|
|
9209
|
+
local `[ui].terminal_progress = false` would silently flip the
|
|
9210
|
+
positive-path tests below to failing. Tests that need a specific config
|
|
9211
|
+
write to and re-point at this same path.
|
|
9212
|
+
"""
|
|
9213
|
+
monkeypatch.setattr(
|
|
9214
|
+
"deepagents_code.model_config.DEFAULT_CONFIG_PATH",
|
|
9215
|
+
tmp_path / "config.toml",
|
|
9216
|
+
)
|
|
9217
|
+
|
|
9203
9218
|
async def test_status_triggers_indeterminate_progress(
|
|
9204
9219
|
self, monkeypatch: pytest.MonkeyPatch
|
|
9205
9220
|
) -> None:
|
|
@@ -9263,6 +9278,74 @@ class TestSetSpinnerTerminalProgress:
|
|
|
9263
9278
|
|
|
9264
9279
|
assert "clear" in calls
|
|
9265
9280
|
|
|
9281
|
+
async def test_config_opt_out_suppresses_progress(
|
|
9282
|
+
self, tmp_path: Path, monkeypatch: pytest.MonkeyPatch
|
|
9283
|
+
) -> None:
|
|
9284
|
+
"""`[ui].terminal_progress = false` should suppress progress escapes."""
|
|
9285
|
+
from deepagents_code import terminal_escape
|
|
9286
|
+
|
|
9287
|
+
config = tmp_path / "config.toml"
|
|
9288
|
+
config.write_text("[ui]\nterminal_progress = false\n", encoding="utf-8")
|
|
9289
|
+
monkeypatch.setattr("deepagents_code.model_config.DEFAULT_CONFIG_PATH", config)
|
|
9290
|
+
|
|
9291
|
+
calls: list[str] = []
|
|
9292
|
+
|
|
9293
|
+
def _record_set(*_args: object, **_kwargs: object) -> bool:
|
|
9294
|
+
calls.append("set")
|
|
9295
|
+
return True
|
|
9296
|
+
|
|
9297
|
+
def _record_clear() -> bool:
|
|
9298
|
+
calls.append("clear")
|
|
9299
|
+
return True
|
|
9300
|
+
|
|
9301
|
+
monkeypatch.setattr(terminal_escape, "set_terminal_progress", _record_set)
|
|
9302
|
+
monkeypatch.setattr(terminal_escape, "clear_terminal_progress", _record_clear)
|
|
9303
|
+
|
|
9304
|
+
app = DeepAgentsApp(agent=MagicMock(), thread_id="thread-osc-disabled")
|
|
9305
|
+
async with app.run_test() as pilot:
|
|
9306
|
+
await pilot.pause()
|
|
9307
|
+
await app._set_spinner("Thinking")
|
|
9308
|
+
await pilot.pause()
|
|
9309
|
+
await app._set_spinner(None)
|
|
9310
|
+
await pilot.pause()
|
|
9311
|
+
|
|
9312
|
+
assert calls == []
|
|
9313
|
+
|
|
9314
|
+
async def test_config_opt_in_emits_progress(
|
|
9315
|
+
self, tmp_path: Path, monkeypatch: pytest.MonkeyPatch
|
|
9316
|
+
) -> None:
|
|
9317
|
+
"""`[ui].terminal_progress = true` should emit set and clear escapes."""
|
|
9318
|
+
from deepagents_code import terminal_escape
|
|
9319
|
+
|
|
9320
|
+
config = tmp_path / "config.toml"
|
|
9321
|
+
config.write_text("[ui]\nterminal_progress = true\n", encoding="utf-8")
|
|
9322
|
+
monkeypatch.setattr("deepagents_code.model_config.DEFAULT_CONFIG_PATH", config)
|
|
9323
|
+
|
|
9324
|
+
calls: list[str] = []
|
|
9325
|
+
|
|
9326
|
+
def _record_set(*_args: object, **_kwargs: object) -> bool:
|
|
9327
|
+
calls.append("set")
|
|
9328
|
+
return True
|
|
9329
|
+
|
|
9330
|
+
def _record_clear() -> bool:
|
|
9331
|
+
calls.append("clear")
|
|
9332
|
+
return True
|
|
9333
|
+
|
|
9334
|
+
monkeypatch.setattr(terminal_escape, "set_terminal_progress", _record_set)
|
|
9335
|
+
monkeypatch.setattr(terminal_escape, "clear_terminal_progress", _record_clear)
|
|
9336
|
+
|
|
9337
|
+
app = DeepAgentsApp(agent=MagicMock(), thread_id="thread-osc-enabled")
|
|
9338
|
+
async with app.run_test() as pilot:
|
|
9339
|
+
await pilot.pause()
|
|
9340
|
+
calls.clear()
|
|
9341
|
+
await app._set_spinner("Thinking")
|
|
9342
|
+
await pilot.pause()
|
|
9343
|
+
await app._set_spinner(None)
|
|
9344
|
+
await pilot.pause()
|
|
9345
|
+
|
|
9346
|
+
assert "set" in calls
|
|
9347
|
+
assert "clear" in calls
|
|
9348
|
+
|
|
9266
9349
|
async def test_consecutive_set_spinner_calls_keep_emitting(
|
|
9267
9350
|
self, monkeypatch: pytest.MonkeyPatch
|
|
9268
9351
|
) -> None:
|