deepagents-code 0.1.2__tar.gz → 0.1.3__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.2 → deepagents_code-0.1.3}/.gitignore +2 -0
- deepagents_code-0.1.3/AGENTS.md +95 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/CHANGELOG.md +14 -0
- deepagents_code-0.1.3/COMMANDS.md +44 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/Makefile +8 -1
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/PKG-INFO +2 -9
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/README.md +0 -7
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/__init__.py +1 -1
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/_version.py +1 -1
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/agent.py +3 -3
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/app.py +1150 -172
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/command_registry.py +15 -6
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/config.py +20 -2
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/mcp_auth.py +321 -90
- deepagents_code-0.1.3/deepagents_code/mcp_commands.py +174 -0
- deepagents_code-0.1.3/deepagents_code/mcp_disabled.py +182 -0
- deepagents_code-0.1.3/deepagents_code/mcp_login_service.py +281 -0
- deepagents_code-0.1.3/deepagents_code/mcp_oauth_ui.py +199 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/mcp_providers/base.py +20 -2
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/mcp_providers/github.py +14 -3
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/mcp_providers/slack.py +63 -33
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/mcp_tools.py +56 -19
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/model_config.py +24 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/textual_adapter.py +36 -71
- deepagents_code-0.1.3/deepagents_code/token_state.py +88 -0
- deepagents_code-0.1.3/deepagents_code/widgets/mcp_login.py +434 -0
- deepagents_code-0.1.3/deepagents_code/widgets/mcp_reconnect.py +208 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/mcp_viewer.py +463 -45
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/welcome.py +65 -7
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/pyproject.toml +2 -2
- deepagents_code-0.1.3/scripts/generate_commands_catalog.py +133 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_app.py +1484 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_command_registry.py +50 -2
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_config.py +8 -2
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_mcp_auth.py +500 -36
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_mcp_commands.py +14 -2
- deepagents_code-0.1.3/tests/unit_tests/test_mcp_disabled.py +125 -0
- deepagents_code-0.1.3/tests/unit_tests/test_mcp_login_modal.py +266 -0
- deepagents_code-0.1.3/tests/unit_tests/test_mcp_login_service.py +291 -0
- deepagents_code-0.1.3/tests/unit_tests/test_mcp_oauth_ui.py +422 -0
- deepagents_code-0.1.3/tests/unit_tests/test_mcp_reconnect.py +130 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_mcp_tools.py +112 -3
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_mcp_viewer.py +648 -7
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_offload.py +9 -6
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_textual_adapter.py +173 -0
- deepagents_code-0.1.3/tests/unit_tests/test_token_tracker.py +217 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_welcome.py +20 -2
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/uv.lock +5 -5
- deepagents_code-0.1.2/deepagents_code/mcp_commands.py +0 -204
- deepagents_code-0.1.2/deepagents_code/token_state.py +0 -31
- deepagents_code-0.1.2/tests/unit_tests/test_token_tracker.py +0 -150
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/DEV.md +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/THREAT_MODEL.md +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/__main__.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/_ask_user_types.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/_cli_context.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/_constants.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/_debug.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/_env_vars.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/_git.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/_server_config.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/_session_stats.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/_testing_models.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/_textual_patches.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/app.tcss +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/ask_user.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/auth_store.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/built_in_skills/__init__.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/clipboard.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/configurable_model.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/default_agent_prompt.md +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/editor.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/event_bus.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/extras_info.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/file_ops.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/formatting.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/hooks.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/input.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/integrations/__init__.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/integrations/sandbox_factory.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/integrations/sandbox_provider.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/local_context.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/main.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/mcp_providers/__init__.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/mcp_providers/_registry.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/mcp_trust.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/media_utils.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/non_interactive.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/notifications.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/offload.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/onboarding.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/output.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/project_utils.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/py.typed +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/remote_client.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/server.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/server_graph.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/server_manager.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/sessions.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/skills/__init__.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/skills/commands.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/skills/invocation.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/skills/load.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/state_migration.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/subagents.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/system_prompt.md +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/terminal_capabilities.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/terminal_escape.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/theme.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/tool_display.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/tools.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/ui.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/unicode_security.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/update_check.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/__init__.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/_links.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/agent_selector.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/approval.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/ask_user.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/auth.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/autocomplete.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/chat_input.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/diff.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/history.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/launch_init.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/loading.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/message_store.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/messages.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/model_selector.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/notification_center.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/notification_detail.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/notification_settings.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/status.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/theme_selector.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/thread_selector.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/tool_renderers.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/tool_widgets.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/update_available.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/deepagents_code/widgets/update_progress.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/images/tui.png +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/scripts/check_imports.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/scripts/debug_server.sh +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/scripts/install.sh +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/README.md +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/integration_tests/__init__.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/integration_tests/benchmarks/__init__.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/integration_tests/conftest.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/integration_tests/test_acp_mode.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/integration_tests/test_compact_resume.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/integration_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/integration_tests/test_sandbox_operations.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/__init__.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/conftest.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/skills/__init__.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/skills/test_commands.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/skills/test_load.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/skills/test_skills_json.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_agent.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_agent_friendly.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_agent_selector.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_approval.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_args.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_ask_user.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_ask_user_middleware.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_auth_store.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_auth_widgets.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_autocomplete.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_charset.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_chat_input.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_clipboard.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_compact_tool.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_configurable_model.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_debug.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_editor.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_end_to_end.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_env_vars.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_event_bus.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_exception_handling.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_extras_info.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_file_ops.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_formatting.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_git.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_history.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_hooks.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_imports.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_input_parsing.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_launch_init.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_links.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_loading.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_local_context.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_main.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_main_acp_mode.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_main_args.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_mcp_trust.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_media_utils.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_message_store.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_messages.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_model_config.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_model_selector.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_model_switch.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_non_interactive.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_notification_center.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_notification_detail.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_notifications.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_offload_dict_messages.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_onboarding.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_output.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_reload.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_remote_client.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_server.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_server_config.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_server_graph.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_server_helpers.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_server_manager.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_session_stats.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_sessions.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_shell_allow_list.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_skill_invocation.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_startup_fast_paths.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_state_migration.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_status.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_subagents.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_terminal_capabilities.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_terminal_escape.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_textual_patches.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_theme.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_thread_selector.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_tool_display.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_ui.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_unicode_security.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_update_available.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_update_check.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_update_progress.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/test_version.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/tools/__init__.py +0 -0
- {deepagents_code-0.1.2 → deepagents_code-0.1.3}/tests/unit_tests/tools/test_fetch_url.py +0 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# `libs/code` agent guide
|
|
2
|
+
|
|
3
|
+
`deepagents-code` is the interactive coding agent — the Textual REPL, headless `-x` mode, MCP integration, skills, sandbox bootstrap, and slash-command surface. Forked from `deepagents-cli` at the 0.1.0 split.
|
|
4
|
+
|
|
5
|
+
For monorepo-wide conventions (commit titles, lint, testing, docs, CI, benchmarks), see the root `AGENTS.md`.
|
|
6
|
+
|
|
7
|
+
## Textual (terminal UI framework)
|
|
8
|
+
|
|
9
|
+
`deepagents-code` uses [Textual](https://textual.textualize.io/).
|
|
10
|
+
|
|
11
|
+
**Key Textual resources:**
|
|
12
|
+
|
|
13
|
+
- **Guide:** https://textual.textualize.io/guide/
|
|
14
|
+
- **Widget gallery:** https://textual.textualize.io/widget_gallery/
|
|
15
|
+
- **CSS reference:** https://textual.textualize.io/styles/
|
|
16
|
+
- **API reference:** https://textual.textualize.io/api/
|
|
17
|
+
|
|
18
|
+
### Styled text in widgets
|
|
19
|
+
|
|
20
|
+
Prefer Textual's `Content` (`textual.content`) over Rich's `Text` for widget rendering. `Content` is immutable (like `str`) and integrates natively with Textual's rendering pipeline. Rich `Text` is still correct for code that renders via Rich's `Console.print()` (e.g., `non_interactive.py`, `main.py`).
|
|
21
|
+
|
|
22
|
+
IMPORTANT: `Content` requires **Textual's** `Style` (`textual.style.Style`) for rendering, not Rich's `Style` (`rich.style.Style`). Mixing Rich `Style` objects into `Content` spans will cause `TypeError` during widget rendering. String styles (`"bold cyan"`, `"dim"`) work for non-link styling. For links, use `TStyle(link=url)`.
|
|
23
|
+
|
|
24
|
+
**Never use f-string interpolation in Rich markup** (e.g., `f"[bold]{var}[/bold]"`). If `var` contains square brackets, the markup breaks or throws. Use `Content` methods instead:
|
|
25
|
+
|
|
26
|
+
- `Content.from_markup("[bold]$var[/bold]", var=value)` — for inline markup templates. `$var` substitution auto-escapes dynamic content. **Use when the variable is external/user-controlled** (tool args, file paths, user messages, diff content, error messages from exceptions).
|
|
27
|
+
- `Content.styled(text, "bold")` — single style applied to plain text. No markup parsing. Use for static strings or when the variable is internal/trusted (glyphs, ints, enum-like status values). Avoid `Content.styled(f"..{var}..", style)` when `var` is user-controlled — while `styled` doesn't parse markup, the f-string pattern is fragile and inconsistent with the `from_markup` convention.
|
|
28
|
+
- `Content.assemble("prefix: ", (text, "bold"), " ", other_content)` — for composing pre-built `Content` objects, `(text, style)` tuples, and plain strings. Plain strings are treated as plain text (no markup parsing). Use for structural composition, especially when parts use `TStyle(link=url)`.
|
|
29
|
+
- `content.join(parts)` — like `str.join()` for `Content` objects.
|
|
30
|
+
|
|
31
|
+
**Decision rule:** if the value could ever come from outside the codebase (user input, tool output, API responses, file contents), use `from_markup` with `$var`. If it's a hardcoded string, glyph, or computed int, `styled` is fine.
|
|
32
|
+
|
|
33
|
+
### `App.notify()` defaults to `markup=True`
|
|
34
|
+
|
|
35
|
+
Textual's `App.notify(message)` parses the message string as Rich markup by default. Any dynamic content (exception messages, file paths, user input, command strings) containing brackets `[]`, ANSI escape codes, or `=` will cause a `MarkupError` crash in Textual's Toast renderer. Always pass `markup=False` when the message contains f-string interpolated variables. Hardcoded string literals are safe with the default.
|
|
36
|
+
|
|
37
|
+
### Rich `console.print()` and number highlighting
|
|
38
|
+
|
|
39
|
+
`console.print()` defaults to `highlight=True`, which runs `ReprHighlighter` and auto-applies bold + cyan to any detected numbers. This visually overrides subtle styles like `dim` (bold cancels dim in most terminals). Pass `highlight=False` on any `console.print()` call where the content contains numbers and consistent dim/subtle styling matters.
|
|
40
|
+
|
|
41
|
+
### Textual patterns used in this codebase
|
|
42
|
+
|
|
43
|
+
- **Workers** (`@work` decorator) for async operations - see [Workers guide](https://textual.textualize.io/guide/workers/)
|
|
44
|
+
- **Message passing** for widget communication - see [Events guide](https://textual.textualize.io/guide/events/)
|
|
45
|
+
- **Reactive attributes** for state management - see [Reactivity guide](https://textual.textualize.io/guide/reactivity/)
|
|
46
|
+
|
|
47
|
+
### Testing Textual apps
|
|
48
|
+
|
|
49
|
+
- Use `textual.pilot` for async UI testing - see [Testing guide](https://textual.textualize.io/guide/testing/)
|
|
50
|
+
- Snapshot testing available for visual regression - see repo `notes/snapshot_testing.md`
|
|
51
|
+
|
|
52
|
+
## SDK dependency pin
|
|
53
|
+
|
|
54
|
+
`deepagents-code` pins an exact `deepagents==X.Y.Z` version in `pyproject.toml`. When developing features that depend on new SDK functionality, bump this pin as part of the same PR. A CI check verifies the pin matches the current SDK version at release time (unless bypassed with `dangerous-skip-sdk-pin-check`).
|
|
55
|
+
|
|
56
|
+
## Startup performance
|
|
57
|
+
|
|
58
|
+
`deepagents-code` must stay fast to launch. Never import heavy packages (e.g., `deepagents`, LangChain, LangGraph) at module level or in the argument-parsing path. These imports pull in large dependency trees and add seconds to every invocation, including trivial commands like `deepagents-code -v`.
|
|
59
|
+
|
|
60
|
+
- Keep top-level imports in `main.py` and other entry-point modules minimal.
|
|
61
|
+
- Defer heavy imports to the point where they are actually needed (inside functions/methods).
|
|
62
|
+
- To read another package's version without importing it, use `importlib.metadata.version("package-name")`.
|
|
63
|
+
- Feature-gate checks on the startup hot path (before background workers fire) must be lightweight — env var lookups, small file reads. Never pull in expensive modules just to decide whether to skip a feature.
|
|
64
|
+
- When adding logic that already exists elsewhere (e.g., editable-install detection), import the existing cached implementation rather than duplicating it.
|
|
65
|
+
- Features that run shell commands silently must be opt-in, never default-enabled. Gate behind an explicit env var or config key.
|
|
66
|
+
- Background workers that spawn subprocesses must set a timeout to avoid blocking indefinitely.
|
|
67
|
+
|
|
68
|
+
## CLI help screen
|
|
69
|
+
|
|
70
|
+
The `deepagents-code --help` screen is hand-maintained in `ui.show_help()`, separate from the argparse definitions in `main.parse_args()`. When adding a new CLI flag, update **both** files. A drift-detection test (`test_args.TestHelpScreenDrift`) fails if a flag is registered in argparse but missing from the help screen.
|
|
71
|
+
|
|
72
|
+
## Splash screen tips
|
|
73
|
+
|
|
74
|
+
When adding a user-facing CLI feature (new slash command, keybinding, workflow), add a corresponding tip to the `_TIPS` list in `deepagents_code/widgets/welcome.py`. Tips are shown randomly on startup to help users discover features. Keep tips short and action-oriented (e.g., `"Press ctrl+x to compose prompts in your external editor"`).
|
|
75
|
+
|
|
76
|
+
## Slash commands
|
|
77
|
+
|
|
78
|
+
Slash commands are defined as `SlashCommand` entries in the `COMMANDS` tuple in `deepagents_code/command_registry.py`. Each entry declares the command name, description, `bypass_tier` (queue-bypass classification), optional `hidden_keywords` for fuzzy matching, and optional `aliases`. Bypass-tier frozensets and the `SLASH_COMMANDS` autocomplete list are derived automatically — no other file should hard-code command metadata.
|
|
79
|
+
|
|
80
|
+
To add a new slash command: (1) add a `SlashCommand` entry to `COMMANDS`, (2) set the appropriate `bypass_tier`, (3) add a handler branch in `_handle_command` in `app.py`, (4) run `make lint && make test` — the drift test will catch any mismatch.
|
|
81
|
+
|
|
82
|
+
## Adding a new model provider
|
|
83
|
+
|
|
84
|
+
`deepagents-code` supports LangChain-based chat model providers as optional dependencies. To add a new provider, update these files (all entries alphabetically sorted):
|
|
85
|
+
|
|
86
|
+
1. `deepagents_code/model_config.py` — add `"provider_name": "ENV_VAR_NAME"` to `PROVIDER_API_KEY_ENV`
|
|
87
|
+
2. `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
|
|
88
|
+
3. `tests/unit_tests/test_model_config.py` — add `assert PROVIDER_API_KEY_ENV["provider_name"] == "ENV_VAR_NAME"` to `TestProviderApiKeyEnv.test_contains_major_providers`
|
|
89
|
+
|
|
90
|
+
**Not required** unless the provider's models have a distinctive name prefix (like `gpt-*`, `claude*`, `gemini*`):
|
|
91
|
+
|
|
92
|
+
- `detect_provider()` in `config.py` — only needed for auto-detection from bare model names
|
|
93
|
+
- `Settings.has_*` property in `config.py` — only needed if referenced by `detect_provider()` fallback logic
|
|
94
|
+
|
|
95
|
+
Model discovery, credential checking, and UI integration are automatic once `PROVIDER_API_KEY_ENV` is populated and the `langchain-*` package is installed.
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Deep Agents Code Changelog
|
|
2
2
|
|
|
3
|
+
## [0.1.3](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.2...deepagents-code==0.1.3) (2026-05-20)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* In-TUI MCP OAuth login with auto-refresh ([#3469](https://github.com/langchain-ai/deepagents/issues/3469)) ([20e38b8](https://github.com/langchain-ai/deepagents/commit/20e38b8ebd8d9aa4697334432f7832a0a07aea3a))
|
|
8
|
+
* Float unauthorized MCP servers to top and prompt before reconnect ([#3493](https://github.com/langchain-ai/deepagents/issues/3493)) ([2d66580](https://github.com/langchain-ai/deepagents/commit/2d665804131961dfa7e2849248047deec818e4ef))
|
|
9
|
+
* Disable MCP servers from TUI ([#3501](https://github.com/langchain-ai/deepagents/issues/3501)) ([5725de8](https://github.com/langchain-ai/deepagents/commit/5725de857722dbca768a95bc6d97af5b838a11a9))
|
|
10
|
+
* `/restart` hidden slash command ([#3514](https://github.com/langchain-ai/deepagents/issues/3514)) ([74bdd36](https://github.com/langchain-ai/deepagents/commit/74bdd3688948d8369cdd978590f5a822eabeb12c))
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* Persist `_context_tokens` via `after_model` middleware ([#3496](https://github.com/langchain-ai/deepagents/issues/3496)) ([e2bb284](https://github.com/langchain-ai/deepagents/commit/e2bb284e506e0e49a05169fc6de01bdf42350267))
|
|
15
|
+
* Refresh status bar model after recovering from failed startup ([#3511](https://github.com/langchain-ai/deepagents/issues/3511)) ([c96f822](https://github.com/langchain-ai/deepagents/commit/c96f822de187431404d093b852c4a855d3ab8d30))
|
|
16
|
+
|
|
3
17
|
## [0.1.2](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.1...deepagents-code==0.1.2) (2026-05-19)
|
|
4
18
|
|
|
5
19
|
### Features
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<!-- AUTO-GENERATED by scripts/generate_commands_catalog.py — do not edit manually. -->
|
|
2
|
+
# Slash command catalog
|
|
3
|
+
|
|
4
|
+
Canonical list of slash commands for `deepagents-code`, derived from
|
|
5
|
+
`deepagents_code/command_registry.py`. Run `make commands-catalog` to
|
|
6
|
+
regenerate after editing the registry.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## Public (25)
|
|
10
|
+
|
|
11
|
+
| Command | Aliases | Description |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
| `/agents` | | Browse and switch between available agents |
|
|
14
|
+
| `/auth` | `/connect` | Manage stored API keys for model providers |
|
|
15
|
+
| `/auto-update` | | Toggle automatic updates on or off |
|
|
16
|
+
| `/changelog` | | Open changelog in browser |
|
|
17
|
+
| `/clear` | | Clear chat and start new thread |
|
|
18
|
+
| `/copy` | | Copy latest assistant message to clipboard |
|
|
19
|
+
| `/docs` | | Open documentation in browser |
|
|
20
|
+
| `/editor` | | Open prompt in external editor ($EDITOR) |
|
|
21
|
+
| `/feedback` | | Submit a bug report or feature request |
|
|
22
|
+
| `/force-clear` | | Interrupt active work, clear chat, and start new thread |
|
|
23
|
+
| `/help` | | Show help |
|
|
24
|
+
| `/mcp` | | Show MCP servers; `/mcp login <server>` to authenticate, `/mcp reconnect` to load deferred logins, F2 in the viewer to disable/enable a server |
|
|
25
|
+
| `/model` | | Switch or configure model (--model-params, --default) |
|
|
26
|
+
| `/notifications` | | Configure startup warning preferences |
|
|
27
|
+
| `/offload` | `/compact` | Free up context window space by offloading older messages |
|
|
28
|
+
| `/quit` | `/q` | Exit app |
|
|
29
|
+
| `/reload` | | Reload config from environment variables and .env |
|
|
30
|
+
| `/remember` | | Update memory and skills from conversation |
|
|
31
|
+
| `/skill-creator` | | Guide for creating effective agent skills |
|
|
32
|
+
| `/theme` | | Switch color theme |
|
|
33
|
+
| `/threads` | | Browse and resume previous threads |
|
|
34
|
+
| `/tokens` | | Token usage |
|
|
35
|
+
| `/trace` | | Open current thread in LangSmith |
|
|
36
|
+
| `/update` | | Check for and install updates |
|
|
37
|
+
| `/version` | `/about` | Show version |
|
|
38
|
+
|
|
39
|
+
## Hidden (2)
|
|
40
|
+
|
|
41
|
+
Hidden commands not exposed in autocomplete or help. See the `HIDDEN_COMMANDS` docstring in the registry for context.
|
|
42
|
+
|
|
43
|
+
- `/debug-error`
|
|
44
|
+
- `/restart`
|
|
@@ -1,4 +1,4 @@
|
|
|
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
|
|
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
|
|
2
2
|
|
|
3
3
|
.DEFAULT_GOAL := help
|
|
4
4
|
|
|
@@ -66,6 +66,7 @@ lint lint_diff lint_package lint_tests:
|
|
|
66
66
|
[ "$(PYTHON_FILES)" = "" ] || uv run --all-groups ruff check $(PYTHON_FILES)
|
|
67
67
|
[ "$(PYTHON_FILES)" = "" ] || uv run --all-groups ruff format $(PYTHON_FILES) --diff
|
|
68
68
|
$(MAKE) type PYTHON_FILES="$(PYTHON_FILES)"
|
|
69
|
+
uv run --all-groups python scripts/generate_commands_catalog.py --check
|
|
69
70
|
|
|
70
71
|
type: ## Run type checker
|
|
71
72
|
type typecheck:
|
|
@@ -80,6 +81,12 @@ check_imports: ## Check imports
|
|
|
80
81
|
check_imports: $(shell find deepagents_code -name '*.py')
|
|
81
82
|
uv run --all-groups python ./scripts/check_imports.py $^
|
|
82
83
|
|
|
84
|
+
commands-catalog: ## Regenerate COMMANDS.md from the slash-command registry
|
|
85
|
+
uv run --all-groups python scripts/generate_commands_catalog.py
|
|
86
|
+
|
|
87
|
+
commands-catalog-check: ## Verify COMMANDS.md matches the slash-command registry
|
|
88
|
+
uv run --all-groups python scripts/generate_commands_catalog.py --check
|
|
89
|
+
|
|
83
90
|
######################
|
|
84
91
|
# HELP
|
|
85
92
|
######################
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deepagents-code
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.3
|
|
4
4
|
Summary: Terminal interface for Deep Agents - interactive AI agent with file operations, shell access, and sub-agent capabilities.
|
|
5
5
|
Project-URL: Homepage, https://docs.langchain.com/oss/python/deepagents/overview
|
|
6
6
|
Project-URL: Documentation, https://reference.langchain.com/python/deepagents/
|
|
@@ -27,7 +27,7 @@ Classifier: Topic :: Terminals
|
|
|
27
27
|
Requires-Python: <4.0,>=3.11
|
|
28
28
|
Requires-Dist: aiosqlite<1.0.0,>=0.19.0
|
|
29
29
|
Requires-Dist: deepagents-acp>=0.0.4
|
|
30
|
-
Requires-Dist: deepagents==0.6.
|
|
30
|
+
Requires-Dist: deepagents==0.6.3
|
|
31
31
|
Requires-Dist: httpx<1.0.0,>=0.28.1
|
|
32
32
|
Requires-Dist: langchain-anthropic<2.0.0,>=1.4.3
|
|
33
33
|
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2
|
|
@@ -154,13 +154,6 @@ curl -LsSf https://langch.in/dcode | bash
|
|
|
154
154
|
DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/dcode | bash
|
|
155
155
|
```
|
|
156
156
|
|
|
157
|
-
Or install directly with `uv`:
|
|
158
|
-
|
|
159
|
-
```bash
|
|
160
|
-
# Install with chosen model providers
|
|
161
|
-
uv tool install 'deepagents-code[nvidia,ollama]'
|
|
162
|
-
```
|
|
163
|
-
|
|
164
157
|
Run:
|
|
165
158
|
|
|
166
159
|
```bash
|
|
@@ -21,13 +21,6 @@ curl -LsSf https://langch.in/dcode | bash
|
|
|
21
21
|
DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/dcode | bash
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
Or install directly with `uv`:
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
# Install with chosen model providers
|
|
28
|
-
uv tool install 'deepagents-code[nvidia,ollama]'
|
|
29
|
-
```
|
|
30
|
-
|
|
31
24
|
Run:
|
|
32
25
|
|
|
33
26
|
```bash
|
|
@@ -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.3" # 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."""
|
|
@@ -1100,9 +1100,9 @@ def create_cli_agent(
|
|
|
1100
1100
|
agent_middleware = []
|
|
1101
1101
|
agent_middleware.append(ConfigurableModelMiddleware())
|
|
1102
1102
|
|
|
1103
|
-
# Token state:
|
|
1104
|
-
#
|
|
1105
|
-
#
|
|
1103
|
+
# Token state: declares the `_context_tokens` channel and writes it from
|
|
1104
|
+
# `after_model` based on the latest `AIMessage.usage_metadata`. The CLI
|
|
1105
|
+
# reads it back from `state_values` on thread resume.
|
|
1106
1106
|
from deepagents_code.token_state import TokenStateMiddleware
|
|
1107
1107
|
|
|
1108
1108
|
agent_middleware.append(TokenStateMiddleware())
|