deepagents-code 0.1.55__tar.gz → 0.1.56__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.55 → deepagents_code-0.1.56}/CHANGELOG.md +14 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/PKG-INFO +17 -17
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_build_info.py +1 -1
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_version.py +1 -1
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/app.py +12 -4
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/app.tcss +1 -6
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/command_registry.py +1 -1
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/editor.py +36 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/main.py +4 -4
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/offload_middleware.py +10 -4
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/ask_user.py +21 -8
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/chat_input.py +1 -1
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/goal_review.py +12 -3
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/startup_tip.py +17 -10
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/status.py +1 -1
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/pyproject.toml +13 -13
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/conftest.py +77 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_app.py +49 -4
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_command_registry.py +2 -2
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_compact_tool.py +2 -2
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_debug.py +51 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_dep_floor_check.py +24 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_editor.py +60 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_end_to_end.py +4 -3
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_install_script.py +31 -10
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_main_acp_mode.py +4 -4
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_server.py +8 -1
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_ask_user.py +47 -7
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_chat_input.py +1 -1
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_goal_review.py +21 -3
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_startup_tip.py +22 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_status.py +1 -1
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/uv.lock +50 -49
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/.gitignore +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/AGENTS.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/ARCHITECTURE.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/COMMANDS.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/DEVELOPMENT.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/HOOKS.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/LICENSE +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/Makefile +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/PRICING.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/README.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/THREAT_MODEL.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/__main__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_ask_user_types.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_cli_context.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_constants.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_debug.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_debug_buffer.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_dep_floor_check.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_env_vars.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_fake_models.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_git.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_glm_5p2_profile.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_invocation.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_markdown.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_paths.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_repository_bounds.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_server_config.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_session_stats.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_startup_error.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_testing_models.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_textual_patches.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/_tool_stream.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/agent.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/approval_mode.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/ask_user.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/auth_display.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/auth_store.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/auto_mode.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/built_in_skills/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/built_in_skills/deepagents-thread-inspector/SKILL.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/built_in_skills/deepagents-thread-inspector/scripts/inspect_sessions.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/bundled_prices.README.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/bundled_prices.json +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/client/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/client/commands/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/client/commands/auth.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/client/commands/config.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/client/commands/extras.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/client/commands/mcp.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/client/commands/tools.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/client/launch/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/client/launch/server.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/client/launch/server_manager.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/client/non_interactive.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/client/remote_client.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/clipboard.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/config.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/config_manifest.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/configurable_model.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/cost_tracking.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/default_agent_prompt.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/diff_utils.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/doctor.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/event_bus.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/extras_info.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/file_ops.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/formatting.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/goal_rubric.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/goal_state_notice.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/goal_tools.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/capabilities.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/client.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/client_lifecycle.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/context.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/engine.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/env.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/envelope.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/interrupt.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/legacy.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/loading.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/manager.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/migration.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/models/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/models/adapters.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/models/config.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/models/domain.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/models/transport.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/models/wire.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/permissions.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/presenter.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/projection.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/reducer.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/runner.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/runtime.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/server_middleware.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/snapshot.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/tools.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/transcript.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/trust.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/hooks/validate_terminal_sequence.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/input.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/integrations/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/integrations/openai_codex.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/integrations/sandbox_config.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/integrations/sandbox_factory.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/integrations/sandbox_provider.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/integrations/sandbox_registry.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/json_types.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/local_context.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/managed_tools.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/mcp_auth.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/mcp_config.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/mcp_disabled.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/mcp_login_service.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/mcp_providers/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/mcp_providers/_registry.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/mcp_providers/base.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/mcp_providers/github.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/mcp_providers/slack.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/mcp_tools.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/media_utils.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/memory_guard.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/model_config.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/notifications.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/offload.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/onboarding.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/output.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/paste_collapse.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/plugins/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/plugins/_json.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/plugins/adapters/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/plugins/adapters/hooks.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/plugins/adapters/mcp.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/plugins/adapters/skills.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/plugins/adapters/skills_middleware.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/plugins/commands_cli.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/plugins/discovery.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/plugins/manifest.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/plugins/marketplace.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/plugins/models.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/plugins/store.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/plugins/substitution.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/project_utils.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/py.typed +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/reasoning_effort.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/reliable_rubric.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/resume_state.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/server_graph.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/sessions.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/skills/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/skills/commands.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/skills/invocation.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/skills/load.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/skills/merge.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/skills/trust.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/state_migration.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/subagents.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/system_prompt.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/terminal_capabilities.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/terminal_escape.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/theme.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tool_catalog.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tool_display.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tools.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/modals/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/modals/plugin_manager/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/modals/plugin_manager/content.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/modals/plugin_manager/models.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/modals/plugin_manager/plugin_manager.tcss +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/modals/plugin_manager/state.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/modals/plugin_manager/tabs.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/modals/resume_compact.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/screens/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/textual_adapter.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/_copy_spans.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/_inline_prompt.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/_js_eval_display.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/_links.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/_paste_textarea.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/agent_selector.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/approval.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/auth.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/auto_mode_notice.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/autocomplete.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/codex_auth.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/context_usage.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/cwd_switch.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/debug_console.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/diff.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/effort_selector.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/goal_status.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/history.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/install_confirm.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/launch_init.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/loading.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/mcp_login.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/mcp_reconnect.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/mcp_viewer.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/message_store.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/messages.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/model_selector.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/notification_center.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/notification_detail.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/notification_settings.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/plugin_reload.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/restart_prompt.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/skill_trust.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/subagent_panel.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/theme_selector.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/thread_agent_switch.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/thread_selector.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/tool_renderers.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/tool_widgets.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/update_available.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/update_confirm.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/update_progress.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/welcome.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/yolo_mode_notice.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/ui.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/unicode_security.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/update_check.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/hatch_build.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/images/tui.png +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/scripts/check_imports.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/scripts/debug_server.sh +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/scripts/generate_commands_catalog.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/scripts/install.sh +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/README.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/integration_tests/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/integration_tests/benchmarks/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/integration_tests/benchmarks/test_local_context_benchmarks.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/integration_tests/conftest.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/integration_tests/test_acp_mode.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/integration_tests/test_auto_approve_remote.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/integration_tests/test_compact_resume.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/integration_tests/test_goal_criteria_remote.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/integration_tests/test_offload_server_side.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/integration_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/integration_tests/test_sandbox_operations.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/client/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/client/commands/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/client/commands/test_auth.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/client/commands/test_extras.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/client/commands/test_mcp.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/client/commands/test_tools.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/data/coding_agent_v1_validator.json +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/hooks/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/hooks/models/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/hooks/models/test_models.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/hooks/test_client_lifecycle.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/hooks/test_configuration.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/hooks/test_engine.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/hooks/test_execution.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/hooks/test_manager.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/hooks/test_presenter.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/hooks/test_server_lifecycle.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/hooks/test_transcript.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/hooks/test_trust.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/plugins/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/plugins/test_marketplace.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/plugins/test_plugin_hooks.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/plugins/test_plugins_p0.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/plugins/test_store.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/skills/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/skills/test_commands.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/skills/test_load.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/skills/test_merge.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/skills/test_skill_trust.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/skills/test_skills_json.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/skills/test_thread_inspector.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/smoke_tests/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/smoke_tests/conftest.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/smoke_tests/snapshots/system_prompt_interactive_local.md +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/smoke_tests/test_system_prompt.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test__tool_stream.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_agent.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_agent_friendly.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_approval_mode.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_args.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_ask_user_middleware.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_ask_user_types.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_auth_display.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_auth_store.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_auth_web_search_restart.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_auto_mode.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_charset.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_clipboard.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_coding_agent_metadata.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_config.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_config_manifest.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_config_recursion_limit.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_configurable_model.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_cost_tracking.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_cursor_blink.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_cursor_style.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_debug_buffer.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_debug_console.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_diff_utils.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_doctor.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_env_vars.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_event_bus.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_exception_handling.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_extras_info.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_file_ops.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_formatting.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_git.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_glm_5p2_profile.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_goal_criteria_client.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_goal_rubric.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_goal_state_notice.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_goal_state_persistence.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_goal_tools.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_hatch_build.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_hooks.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_imports.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_input_parsing.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_install_command.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_invocation.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_json_types.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_local_context.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_main.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_main_args.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_managed_tools.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_mcp_auth.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_mcp_config.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_mcp_disabled.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_mcp_login_service.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_mcp_tools.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_media_utils.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_memory_guard.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_model_config.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_model_switch.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_non_interactive.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_notifications.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_offload.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_onboarding.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_openai_codex_integration.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_output.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_paths.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_reasoning_effort.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_reliable_rubric.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_reload.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_remote_client.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_repository_bounds.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_resume_state.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_rubric_cli.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_sandbox_config.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_sandbox_provider.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_sandbox_registry.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_server_config.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_server_graph.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_server_helpers.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_server_manager.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_session_stats.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_sessions.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_shell_allow_list.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_skill_invocation.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_startup_blocking.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_startup_fast_paths.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_state_migration.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_subagents.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_terminal_capabilities.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_terminal_escape.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_textual_patches.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_theme.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_threads_resume.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_tool_catalog.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_tool_display.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_tracing_replicas.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_transcript_virtualization.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_ui.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_unicode_security.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_update_check.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/test_version.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tools/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tools/test_current_thread.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tools/test_fetch_url.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tools/test_tool_arg_schemas.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/modals/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/modals/plugin_manager/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/modals/plugin_manager/test_structure.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/test_subagent_stream.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/test_textual_adapter.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/__init__.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_agent_selector.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_approval.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_auth_widgets.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_auto_mode_notice.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_autocomplete.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_copy_spans.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_cwd_switch.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_diff.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_history.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_inline_prompt.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_install_confirm.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_launch_init.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_links.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_loading.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_mcp_login_modal.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_mcp_reconnect.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_mcp_viewer.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_message_store.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_messages.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_model_selector.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_notification_center.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_notification_detail.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_notification_settings.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_plugin_reload.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_restart_prompt.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_skill_trust_screen.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_subagent_panel.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_thread_agent_switch.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_thread_selector.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_tool_renderers.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_update_available.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_update_confirm.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_update_progress.py +0 -0
- {deepagents_code-0.1.55 → deepagents_code-0.1.56}/tests/unit_tests/tui/widgets/test_welcome.py +0 -0
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
# Deep Agents Code Changelog
|
|
4
4
|
|
|
5
|
+
## [0.1.56](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.55...deepagents-code==0.1.56) (2026-08-14)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
- Personalized external editor hints to better match your setup ([#5445](https://github.com/langchain-ai/deepagents/issues/5445))
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
- Improved dependency warning, Auto classifier, and paste expansion messages for clearer, more concise prompts and toasts ([#5489](https://github.com/langchain-ai/deepagents/issues/5489), [#5446](https://github.com/langchain-ai/deepagents/issues/5446), [#5443](https://github.com/langchain-ai/deepagents/issues/5443))
|
|
14
|
+
- Queued `/copy` commands while generation is active so they run at the right time ([#5447](https://github.com/langchain-ai/deepagents/issues/5447))
|
|
15
|
+
- Hid invalid cache metrics from the UI ([#5475](https://github.com/langchain-ai/deepagents/issues/5475))
|
|
16
|
+
- Fixed forced-compaction forks by preserving the `session_id` ([#5492](https://github.com/langchain-ai/deepagents/issues/5492))
|
|
17
|
+
- Stopped passing the removed `checkpoint_metadata` field ([#5473](https://github.com/langchain-ai/deepagents/issues/5473))
|
|
18
|
+
|
|
5
19
|
## [0.1.55](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.54...deepagents-code==0.1.55) (2026-08-12)
|
|
6
20
|
|
|
7
21
|
### Features
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: deepagents-code
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.56
|
|
4
4
|
Summary: Terminal coding agent built on the Deep Agents SDK - works with any model, with persistent memory, customizable skills, subagents, and approval controls.
|
|
5
5
|
Project-URL: Homepage, https://docs.langchain.com/oss/python/deepagents/overview
|
|
6
6
|
Project-URL: Documentation, https://reference.langchain.com/python/deepagents/
|
|
@@ -29,21 +29,21 @@ Requires-Python: <4.0,>=3.11
|
|
|
29
29
|
Requires-Dist: aiosqlite<1.0.0,>=0.22.1
|
|
30
30
|
Requires-Dist: anyio<5.0.0,>=4.14.2
|
|
31
31
|
Requires-Dist: deepagents-acp<1.0.0,>=0.0.10
|
|
32
|
-
Requires-Dist: deepagents==0.7.
|
|
32
|
+
Requires-Dist: deepagents==0.7.6
|
|
33
33
|
Requires-Dist: filelock<3.30,>=3.29.7
|
|
34
34
|
Requires-Dist: genai-prices<0.2.0,>=0.1.1
|
|
35
35
|
Requires-Dist: httpx<1.0.0,>=0.28.1
|
|
36
|
-
Requires-Dist: langchain-anthropic<2.0.0,>=1.5.
|
|
37
|
-
Requires-Dist: langchain-google-genai<5.0.0,>=4.3.
|
|
38
|
-
Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.3.
|
|
39
|
-
Requires-Dist: langchain-openai<2.0.0,>=1.
|
|
36
|
+
Requires-Dist: langchain-anthropic<2.0.0,>=1.5.6
|
|
37
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.3.3
|
|
38
|
+
Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.3.2
|
|
39
|
+
Requires-Dist: langchain-openai<2.0.0,>=1.5.0
|
|
40
40
|
Requires-Dist: langchain-quickjs<0.4.0,>=0.3.4
|
|
41
|
-
Requires-Dist: langchain<2.0.0,>=1.3.
|
|
41
|
+
Requires-Dist: langchain<2.0.0,>=1.3.15
|
|
42
42
|
Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.1.1
|
|
43
43
|
Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.31
|
|
44
|
-
Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.
|
|
44
|
+
Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.32.4
|
|
45
45
|
Requires-Dist: langgraph-sdk<1.0.0,>=0.4.2
|
|
46
|
-
Requires-Dist: langsmith[sandbox]>=0.10.
|
|
46
|
+
Requires-Dist: langsmith[sandbox]>=0.10.18
|
|
47
47
|
Requires-Dist: markdownify<2.0.0,>=1.2.3
|
|
48
48
|
Requires-Dist: mcp<2.0.0,>=1.28.1
|
|
49
49
|
Requires-Dist: packaging>=26.2
|
|
@@ -65,13 +65,13 @@ Provides-Extra: agentcore
|
|
|
65
65
|
Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.5; extra == 'agentcore'
|
|
66
66
|
Provides-Extra: all-providers
|
|
67
67
|
Requires-Dist: aiohttp<3.15.0,>=3.14.3; extra == 'all-providers'
|
|
68
|
-
Requires-Dist: langchain-anthropic<2.0.0,>=1.5.
|
|
69
|
-
Requires-Dist: langchain-aws<2.0.0,>=1.
|
|
68
|
+
Requires-Dist: langchain-anthropic<2.0.0,>=1.5.6; extra == 'all-providers'
|
|
69
|
+
Requires-Dist: langchain-aws<2.0.0,>=1.7.0; extra == 'all-providers'
|
|
70
70
|
Requires-Dist: langchain-baseten<1.0.0,>=0.2.3; extra == 'all-providers'
|
|
71
71
|
Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'all-providers'
|
|
72
72
|
Requires-Dist: langchain-deepseek<2.0.0,>=1.1.0; extra == 'all-providers'
|
|
73
73
|
Requires-Dist: langchain-fireworks<2.0.0,>=1.5.2; extra == 'all-providers'
|
|
74
|
-
Requires-Dist: langchain-google-genai<5.0.0,>=4.3.
|
|
74
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.3.3; extra == 'all-providers'
|
|
75
75
|
Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.4; extra == 'all-providers'
|
|
76
76
|
Requires-Dist: langchain-groq<2.0.0,>=1.1.3; extra == 'all-providers'
|
|
77
77
|
Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'all-providers'
|
|
@@ -81,7 +81,7 @@ Requires-Dist: langchain-meta<2.0.0,>=0.5.0; extra == 'all-providers'
|
|
|
81
81
|
Requires-Dist: langchain-mistralai<2.0.0,>=1.1.6; extra == 'all-providers'
|
|
82
82
|
Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.3; extra == 'all-providers'
|
|
83
83
|
Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'all-providers'
|
|
84
|
-
Requires-Dist: langchain-openai<2.0.0,>=1.
|
|
84
|
+
Requires-Dist: langchain-openai<2.0.0,>=1.5.0; extra == 'all-providers'
|
|
85
85
|
Requires-Dist: langchain-openrouter<2.0.0,>=0.2.7; extra == 'all-providers'
|
|
86
86
|
Requires-Dist: langchain-perplexity<2.0.0,>=1.4.0; extra == 'all-providers'
|
|
87
87
|
Requires-Dist: langchain-together<2.0.0,>=0.4.0; extra == 'all-providers'
|
|
@@ -93,11 +93,11 @@ Requires-Dist: langchain-modal>=0.0.5; extra == 'all-sandboxes'
|
|
|
93
93
|
Requires-Dist: langchain-runloop>=0.0.6; extra == 'all-sandboxes'
|
|
94
94
|
Requires-Dist: langchain-vercel-sandbox>=0.0.1; extra == 'all-sandboxes'
|
|
95
95
|
Provides-Extra: anthropic
|
|
96
|
-
Requires-Dist: langchain-anthropic<2.0.0,>=1.5.
|
|
96
|
+
Requires-Dist: langchain-anthropic<2.0.0,>=1.5.6; extra == 'anthropic'
|
|
97
97
|
Provides-Extra: baseten
|
|
98
98
|
Requires-Dist: langchain-baseten<1.0.0,>=0.2.3; extra == 'baseten'
|
|
99
99
|
Provides-Extra: bedrock
|
|
100
|
-
Requires-Dist: langchain-aws<2.0.0,>=1.
|
|
100
|
+
Requires-Dist: langchain-aws<2.0.0,>=1.7.0; extra == 'bedrock'
|
|
101
101
|
Provides-Extra: cohere
|
|
102
102
|
Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'cohere'
|
|
103
103
|
Provides-Extra: daytona
|
|
@@ -107,7 +107,7 @@ Requires-Dist: langchain-deepseek<2.0.0,>=1.1.0; extra == 'deepseek'
|
|
|
107
107
|
Provides-Extra: fireworks
|
|
108
108
|
Requires-Dist: langchain-fireworks<2.0.0,>=1.5.2; extra == 'fireworks'
|
|
109
109
|
Provides-Extra: google-genai
|
|
110
|
-
Requires-Dist: langchain-google-genai<5.0.0,>=4.3.
|
|
110
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.3.3; extra == 'google-genai'
|
|
111
111
|
Provides-Extra: groq
|
|
112
112
|
Requires-Dist: langchain-groq<2.0.0,>=1.1.3; extra == 'groq'
|
|
113
113
|
Provides-Extra: huggingface
|
|
@@ -131,7 +131,7 @@ Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.3; extra == 'nvidia'
|
|
|
131
131
|
Provides-Extra: ollama
|
|
132
132
|
Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'ollama'
|
|
133
133
|
Provides-Extra: openai
|
|
134
|
-
Requires-Dist: langchain-openai<2.0.0,>=1.
|
|
134
|
+
Requires-Dist: langchain-openai<2.0.0,>=1.5.0; extra == 'openai'
|
|
135
135
|
Provides-Extra: openrouter
|
|
136
136
|
Requires-Dist: langchain-openrouter<2.0.0,>=0.2.7; extra == 'openrouter'
|
|
137
137
|
Provides-Extra: perplexity
|
|
@@ -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.56" # 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."""
|
|
@@ -7750,6 +7750,8 @@ class DeepAgentsApp(App):
|
|
|
7750
7750
|
inputs += self._inflight_turn_stats.input_tokens
|
|
7751
7751
|
reads += self._inflight_turn_stats.cache_read_tokens
|
|
7752
7752
|
writes += self._inflight_turn_stats.cache_write_tokens
|
|
7753
|
+
cache_display = self._status_bar.query_one("#cache-display")
|
|
7754
|
+
cache_display.visible = self._thread_has_completed_turn and writes > 0
|
|
7753
7755
|
self._status_bar.set_cache_tokens(reads, writes, input_tokens=inputs)
|
|
7754
7756
|
|
|
7755
7757
|
def _set_session_cost(
|
|
@@ -14050,17 +14052,24 @@ class DeepAgentsApp(App):
|
|
|
14050
14052
|
elif cmd == "/help":
|
|
14051
14053
|
await self._mount_message(UserMessage(command))
|
|
14052
14054
|
from deepagents_code.command_registry import get_slash_commands
|
|
14055
|
+
from deepagents_code.editor import editor_display_name
|
|
14053
14056
|
|
|
14054
14057
|
command_names = ", ".join(
|
|
14055
14058
|
f"{entry.name} {entry.argument_hint}".rstrip()
|
|
14056
14059
|
for entry in get_slash_commands()
|
|
14057
14060
|
)
|
|
14061
|
+
editor = editor_display_name()
|
|
14062
|
+
editor_help = (
|
|
14063
|
+
f"Open prompt in {editor}"
|
|
14064
|
+
if editor is not None
|
|
14065
|
+
else "Open prompt in external editor"
|
|
14066
|
+
)
|
|
14058
14067
|
help_body = (
|
|
14059
14068
|
f"Commands: {command_names}, /skill:<name>\n\n"
|
|
14060
14069
|
"Interactive Features:\n"
|
|
14061
14070
|
" Enter Submit your message\n"
|
|
14062
14071
|
f" {newline_shortcut():<15} Insert newline\n"
|
|
14063
|
-
" Ctrl+X
|
|
14072
|
+
f" Ctrl+X {editor_help}\n"
|
|
14064
14073
|
" Ctrl+N Review pending notifications\n"
|
|
14065
14074
|
" Ctrl+\\ Toggle the debug console\n"
|
|
14066
14075
|
" Shift+Tab Toggle auto-approve mode\n"
|
|
@@ -14185,7 +14194,7 @@ class DeepAgentsApp(App):
|
|
|
14185
14194
|
success, error = copy_text_to_clipboard(self, content)
|
|
14186
14195
|
if success:
|
|
14187
14196
|
await self._mount_message(
|
|
14188
|
-
AppMessage("Copied latest
|
|
14197
|
+
AppMessage("Copied latest response to clipboard."),
|
|
14189
14198
|
)
|
|
14190
14199
|
else:
|
|
14191
14200
|
fail_msg = (
|
|
@@ -19815,8 +19824,7 @@ class DeepAgentsApp(App):
|
|
|
19815
19824
|
else:
|
|
19816
19825
|
message = (
|
|
19817
19826
|
f"Auto classifier model set to {display}{revalidated}; it "
|
|
19818
|
-
"reviews gated actions from the next turn
|
|
19819
|
-
"the default for future sessions."
|
|
19827
|
+
"reviews gated actions from the next turn."
|
|
19820
19828
|
)
|
|
19821
19829
|
else:
|
|
19822
19830
|
message = (
|
|
@@ -369,16 +369,11 @@ ToolCallMessage.-ascii:hover {
|
|
|
369
369
|
.ask-user-menu .ask-user-question {
|
|
370
370
|
height: auto;
|
|
371
371
|
margin-bottom: 1;
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
.ask-user-menu .ask-user-question-active {
|
|
375
|
-
border-left: thick $success;
|
|
376
|
-
padding-left: 1;
|
|
372
|
+
padding-left: 2;
|
|
377
373
|
}
|
|
378
374
|
|
|
379
375
|
.ask-user-menu .ask-user-question-inactive {
|
|
380
376
|
opacity: 0.5;
|
|
381
|
-
padding-left: 2;
|
|
382
377
|
}
|
|
383
378
|
|
|
384
379
|
.ask-user-menu .ask-user-question-text {
|
|
@@ -122,7 +122,7 @@ COMMANDS: tuple[SlashCommand, ...] = (
|
|
|
122
122
|
SlashCommand(
|
|
123
123
|
name="/copy",
|
|
124
124
|
description="Copy the latest assistant message to clipboard",
|
|
125
|
-
bypass_tier=BypassTier.
|
|
125
|
+
bypass_tier=BypassTier.QUEUED,
|
|
126
126
|
),
|
|
127
127
|
SlashCommand(
|
|
128
128
|
name="/context",
|
|
@@ -26,6 +26,9 @@ GUI_WAIT_FLAG: dict[str, str] = {
|
|
|
26
26
|
VIM_EDITORS = {"vi", "vim", "nvim"}
|
|
27
27
|
"""Set of vim-family editor base names that receive the `-i NONE` flag."""
|
|
28
28
|
|
|
29
|
+
EDITOR_DISPLAY_NAME_MAX_LENGTH = 20
|
|
30
|
+
"""Maximum editor name length that remains readable in compact hints."""
|
|
31
|
+
|
|
29
32
|
|
|
30
33
|
class ExternalEditorError(RuntimeError):
|
|
31
34
|
"""Raised when an external editor cannot be opened or read."""
|
|
@@ -49,6 +52,39 @@ def resolve_editor() -> list[str] | None:
|
|
|
49
52
|
return tokens or None
|
|
50
53
|
|
|
51
54
|
|
|
55
|
+
def editor_display_name() -> str | None:
|
|
56
|
+
"""Return a safe configured editor name for user-facing hints.
|
|
57
|
+
|
|
58
|
+
Returns:
|
|
59
|
+
The configured editor executable's short name, or `None` when no editor
|
|
60
|
+
is configured or its name is unsuitable for compact terminal output.
|
|
61
|
+
"""
|
|
62
|
+
editor = os.environ.get("VISUAL") or os.environ.get("EDITOR")
|
|
63
|
+
if not editor:
|
|
64
|
+
return None
|
|
65
|
+
try:
|
|
66
|
+
tokens = shlex.split(editor)
|
|
67
|
+
except ValueError:
|
|
68
|
+
return None
|
|
69
|
+
if not tokens:
|
|
70
|
+
return None
|
|
71
|
+
|
|
72
|
+
name = Path(tokens[0]).stem
|
|
73
|
+
allowed_punctuation = "._+-"
|
|
74
|
+
if (
|
|
75
|
+
not name
|
|
76
|
+
or len(name) > EDITOR_DISPLAY_NAME_MAX_LENGTH
|
|
77
|
+
or not any(character.isascii() and character.isalnum() for character in name)
|
|
78
|
+
or any(
|
|
79
|
+
not character.isascii()
|
|
80
|
+
or not (character.isalnum() or character in allowed_punctuation)
|
|
81
|
+
for character in name
|
|
82
|
+
)
|
|
83
|
+
):
|
|
84
|
+
return None
|
|
85
|
+
return name
|
|
86
|
+
|
|
87
|
+
|
|
52
88
|
def _prepare_command(cmd: list[str], filepath: str) -> list[str]:
|
|
53
89
|
"""Build the full command list with appropriate flags.
|
|
54
90
|
|
|
@@ -3006,7 +3006,6 @@ async def _run_acp_cli_async(
|
|
|
3006
3006
|
build_agent,
|
|
3007
3007
|
models=models,
|
|
3008
3008
|
load_sessions=True,
|
|
3009
|
-
checkpoint_metadata={"agent_name": assistant_id},
|
|
3010
3009
|
)
|
|
3011
3010
|
await run_acp_agent(server)
|
|
3012
3011
|
except KeyboardInterrupt:
|
|
@@ -3470,16 +3469,17 @@ def prompt_for_dep_floor_mismatch(
|
|
|
3470
3469
|
console.print(f" - {escape(v.describe())}", highlight=False)
|
|
3471
3470
|
refresh = refresh_command()
|
|
3472
3471
|
console.print(
|
|
3473
|
-
f"
|
|
3472
|
+
f"\nRefresh the active environment:\n {escape(refresh)}", highlight=False
|
|
3474
3473
|
)
|
|
3475
3474
|
console.print(
|
|
3476
|
-
"[yellow]
|
|
3475
|
+
"[yellow]\nRunning stale source against older dependencies can break "
|
|
3477
3476
|
"behavior in hard-to-diagnose ways.[/yellow]",
|
|
3478
3477
|
highlight=False,
|
|
3479
3478
|
)
|
|
3479
|
+
console.print()
|
|
3480
3480
|
return _select_trust_action(
|
|
3481
3481
|
console,
|
|
3482
|
-
remember_label="
|
|
3482
|
+
remember_label="Continue and hide until versions change",
|
|
3483
3483
|
allow_label="Continue this session only",
|
|
3484
3484
|
deny_label="Abort launch",
|
|
3485
3485
|
deny_first=True,
|
|
@@ -705,17 +705,20 @@ class CLICompactionMiddleware(SummarizationToolMiddleware):
|
|
|
705
705
|
if cutoff == 0:
|
|
706
706
|
return self._nothing_to_compact(tool_call_id)
|
|
707
707
|
|
|
708
|
+
session_id = summarization._get_session_id(runtime.state)
|
|
708
709
|
to_summarize, _ = summarization._partition_messages(effective, cutoff)
|
|
709
710
|
summary = summarization._create_summary(to_summarize)
|
|
710
711
|
backend = self._guarded_backend()
|
|
711
|
-
file_path = summarization._offload_to_backend(
|
|
712
|
+
file_path = summarization._offload_to_backend(
|
|
713
|
+
backend, to_summarize, session_id
|
|
714
|
+
)
|
|
712
715
|
# The inherited `_build_compact_result` produces the same event and
|
|
713
716
|
# tool message as the SDK's gated path via model-independent helpers
|
|
714
717
|
# (string formatting + a staticmethod), so the runtime-selected
|
|
715
718
|
# summarizer is not needed to build it. Kept inside the `try` so a
|
|
716
719
|
# failure here still returns a ToolMessage rather than raising.
|
|
717
720
|
return self._build_compact_result(
|
|
718
|
-
runtime, to_summarize, summary, file_path, event, cutoff
|
|
721
|
+
runtime, to_summarize, summary, file_path, event, cutoff, session_id
|
|
719
722
|
)
|
|
720
723
|
except Exception as exc: # tool errors must surface as ToolMessages
|
|
721
724
|
logger.exception("forced compact_conversation failed")
|
|
@@ -740,14 +743,17 @@ class CLICompactionMiddleware(SummarizationToolMiddleware):
|
|
|
740
743
|
if cutoff == 0:
|
|
741
744
|
return self._nothing_to_compact(tool_call_id)
|
|
742
745
|
|
|
746
|
+
session_id = summarization._get_session_id(runtime.state)
|
|
743
747
|
to_summarize, _ = summarization._partition_messages(effective, cutoff)
|
|
744
748
|
summary = await summarization._acreate_summary(to_summarize)
|
|
745
749
|
backend = self._guarded_backend()
|
|
746
|
-
file_path = await summarization._aoffload_to_backend(
|
|
750
|
+
file_path = await summarization._aoffload_to_backend(
|
|
751
|
+
backend, to_summarize, session_id
|
|
752
|
+
)
|
|
747
753
|
# See `_run_forced_compact` for why the inherited builder is reused
|
|
748
754
|
# and why it stays inside the `try`.
|
|
749
755
|
return self._build_compact_result(
|
|
750
|
-
runtime, to_summarize, summary, file_path, event, cutoff
|
|
756
|
+
runtime, to_summarize, summary, file_path, event, cutoff, session_id
|
|
751
757
|
)
|
|
752
758
|
except Exception as exc: # tool errors must surface as ToolMessages
|
|
753
759
|
logger.exception("forced compact_conversation failed")
|
|
@@ -24,6 +24,7 @@ if TYPE_CHECKING:
|
|
|
24
24
|
)
|
|
25
25
|
|
|
26
26
|
from deepagents_code.config import get_glyphs
|
|
27
|
+
from deepagents_code.editor import editor_display_name
|
|
27
28
|
from deepagents_code.tui.widgets._inline_prompt import (
|
|
28
29
|
InlinePromptCompletion,
|
|
29
30
|
InlinePromptOption,
|
|
@@ -169,7 +170,7 @@ class AskUserMenu(Container):
|
|
|
169
170
|
|
|
170
171
|
with Vertical(classes="ask-user-questions"):
|
|
171
172
|
for i, q in enumerate(self._questions):
|
|
172
|
-
qw = _QuestionWidget(q, index=i)
|
|
173
|
+
qw = _QuestionWidget(q, index=i, show_number=count > 1)
|
|
173
174
|
self._question_widgets.append(qw)
|
|
174
175
|
yield qw
|
|
175
176
|
|
|
@@ -183,9 +184,8 @@ class AskUserMenu(Container):
|
|
|
183
184
|
def _render_help(self) -> str:
|
|
184
185
|
"""Build the footer hint text for the current menu state.
|
|
185
186
|
|
|
186
|
-
The `Ctrl+X
|
|
187
|
-
|
|
188
|
-
`App.action_open_editor`.
|
|
187
|
+
The `Ctrl+X` editor hint is included only while one of this menu's text
|
|
188
|
+
areas holds focus, matching the routing in `App.action_open_editor`.
|
|
189
189
|
|
|
190
190
|
Returns:
|
|
191
191
|
The bullet-joined footer hint string.
|
|
@@ -197,7 +197,12 @@ class AskUserMenu(Container):
|
|
|
197
197
|
newline_hint(),
|
|
198
198
|
]
|
|
199
199
|
if self._show_editor_hint():
|
|
200
|
-
|
|
200
|
+
editor = editor_display_name()
|
|
201
|
+
parts.append(
|
|
202
|
+
f"Ctrl+X edit in {editor}"
|
|
203
|
+
if editor is not None
|
|
204
|
+
else "Ctrl+X external editor"
|
|
205
|
+
)
|
|
201
206
|
if len(self._questions) > 1:
|
|
202
207
|
parts.append("Tab/Shift+Tab switch question")
|
|
203
208
|
parts.append("Esc to cancel")
|
|
@@ -387,11 +392,19 @@ class _QuestionWidget(Vertical):
|
|
|
387
392
|
can_focus = True
|
|
388
393
|
can_focus_children = True
|
|
389
394
|
|
|
390
|
-
def __init__(
|
|
395
|
+
def __init__(
|
|
396
|
+
self,
|
|
397
|
+
question: Question,
|
|
398
|
+
index: int,
|
|
399
|
+
*,
|
|
400
|
+
show_number: bool = True,
|
|
401
|
+
**kwargs: Any,
|
|
402
|
+
) -> None:
|
|
391
403
|
super().__init__(classes="ask-user-question", **kwargs)
|
|
392
404
|
question_type = question.get("type", "text")
|
|
393
405
|
self._question: Question = question
|
|
394
406
|
self._index: int = index
|
|
407
|
+
self._show_number = show_number
|
|
395
408
|
self._q_type: Literal["text", "multiple_choice"] = (
|
|
396
409
|
"multiple_choice" if question_type == "multiple_choice" else "text"
|
|
397
410
|
)
|
|
@@ -405,11 +418,11 @@ class _QuestionWidget(Vertical):
|
|
|
405
418
|
|
|
406
419
|
def compose(self) -> ComposeResult:
|
|
407
420
|
q_text = _TRAILING_ANNOTATION_RE.sub("", self._question.get("question", ""))
|
|
408
|
-
|
|
421
|
+
prefix = f"**{self._index + 1}.** " if self._show_number else ""
|
|
409
422
|
suffix = " *(required)*" if self._required else ""
|
|
410
423
|
# q_text is agent-authored; rendered as markdown intentionally so
|
|
411
424
|
# agents can use inline formatting, links, and code spans in questions.
|
|
412
|
-
yield Markdown(f"
|
|
425
|
+
yield Markdown(f"{prefix}{q_text}{suffix}", classes="ask-user-question-text")
|
|
413
426
|
|
|
414
427
|
if self._q_type == "multiple_choice" and self._choices:
|
|
415
428
|
for i, choice in enumerate(self._choices):
|
|
@@ -120,7 +120,7 @@ def _should_collapse_chat_paste(text: str) -> bool:
|
|
|
120
120
|
return detect_mode_prefix(text) is None and should_collapse_paste(text)
|
|
121
121
|
|
|
122
122
|
|
|
123
|
-
_PASTE_COLLAPSED_TOAST = "Large paste collapsed. Paste again to expand
|
|
123
|
+
_PASTE_COLLAPSED_TOAST = "Large paste collapsed. Paste again to expand."
|
|
124
124
|
"""Toast shown when a paste collapses into a `[Pasted text #N]` placeholder.
|
|
125
125
|
|
|
126
126
|
Emitted only for a new collapse, not when a repeat paste expands an existing
|
{deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/goal_review.py
RENAMED
|
@@ -17,6 +17,7 @@ if TYPE_CHECKING:
|
|
|
17
17
|
from textual.app import ComposeResult
|
|
18
18
|
|
|
19
19
|
from deepagents_code.config import get_glyphs
|
|
20
|
+
from deepagents_code.editor import editor_display_name
|
|
20
21
|
from deepagents_code.tui.widgets._inline_prompt import (
|
|
21
22
|
InlinePromptCompletion,
|
|
22
23
|
InlinePromptOption,
|
|
@@ -36,6 +37,14 @@ _OPTIONS: tuple[tuple[str, str], ...] = (
|
|
|
36
37
|
)
|
|
37
38
|
|
|
38
39
|
|
|
40
|
+
def _editor_hint() -> str:
|
|
41
|
+
"""Return the current editor shortcut hint."""
|
|
42
|
+
editor = editor_display_name()
|
|
43
|
+
return (
|
|
44
|
+
f"Ctrl+X edit in {editor}" if editor is not None else "Ctrl+X external editor"
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
|
|
39
48
|
class GoalReviewAccepted(TypedDict):
|
|
40
49
|
"""Widget result when the generated criteria are accepted unchanged."""
|
|
41
50
|
|
|
@@ -364,7 +373,7 @@ class GoalReviewMenu(Container):
|
|
|
364
373
|
glyphs = get_glyphs()
|
|
365
374
|
self._help_widget.update(
|
|
366
375
|
f"Enter some {what}, or press Esc to go back {glyphs.bullet} "
|
|
367
|
-
f"{newline_hint()} {glyphs.bullet}
|
|
376
|
+
f"{newline_hint()} {glyphs.bullet} {_editor_hint()}"
|
|
368
377
|
)
|
|
369
378
|
|
|
370
379
|
def _submit(self, result: GoalReviewResult) -> None:
|
|
@@ -390,14 +399,14 @@ class GoalReviewMenu(Container):
|
|
|
390
399
|
self._help_widget.update(
|
|
391
400
|
f"Enter save edits {glyphs.bullet} "
|
|
392
401
|
f"{newline_hint()} {glyphs.bullet} "
|
|
393
|
-
f"
|
|
402
|
+
f"{_editor_hint()} {glyphs.bullet} Esc back"
|
|
394
403
|
)
|
|
395
404
|
return
|
|
396
405
|
if self._input_mode == "reject":
|
|
397
406
|
self._help_widget.update(
|
|
398
407
|
f"Enter regenerate {glyphs.bullet} "
|
|
399
408
|
f"{newline_hint()} {glyphs.bullet} "
|
|
400
|
-
f"
|
|
409
|
+
f"{_editor_hint()} {glyphs.bullet} Esc back"
|
|
401
410
|
)
|
|
402
411
|
return
|
|
403
412
|
self._help_widget.update(
|
{deepagents_code-0.1.55 → deepagents_code-0.1.56}/deepagents_code/tui/widgets/startup_tip.py
RENAMED
|
@@ -9,6 +9,10 @@ from textual.content import Content
|
|
|
9
9
|
from textual.widgets import Static
|
|
10
10
|
|
|
11
11
|
from deepagents_code._env_vars import HIDE_SPLASH_TIPS, is_env_truthy
|
|
12
|
+
from deepagents_code.editor import editor_display_name
|
|
13
|
+
|
|
14
|
+
_TIP_EXTERNAL_EDITOR = "Press ctrl+x to compose prompts in your external editor"
|
|
15
|
+
"""Generic editor tip replaced at construction when an editor is configured."""
|
|
12
16
|
|
|
13
17
|
_TIP_SHIFT_TAB_WITH_YOLO = "Press Shift+Tab to cycle Manual, Auto, and YOLO modes"
|
|
14
18
|
"""Tip used when `startup.yolo_switcher` keeps YOLO in the approval cycle."""
|
|
@@ -28,7 +32,7 @@ _TIPS: dict[str, int] = {
|
|
|
28
32
|
"Use /remember to save learnings from this conversation": 1,
|
|
29
33
|
"Use /model to switch models mid-conversation": 2,
|
|
30
34
|
"Use /effort to change the current model's reasoning effort": 1,
|
|
31
|
-
|
|
35
|
+
_TIP_EXTERNAL_EDITOR: 1,
|
|
32
36
|
"Use /skill:<name> to invoke a skill directly": 1,
|
|
33
37
|
"Use /theme to customize the TUI's colors": 1,
|
|
34
38
|
"Use /skill-creator to build reusable agent skills": 1,
|
|
@@ -76,15 +80,18 @@ def _active_tips(*, yolo_switcher_enabled: bool | None = None) -> dict[str, int]
|
|
|
76
80
|
yolo_switcher_enabled = is_yolo_switcher_enabled()
|
|
77
81
|
|
|
78
82
|
tips = dict(_TIPS)
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
83
|
+
editor = editor_display_name()
|
|
84
|
+
if editor is not None:
|
|
85
|
+
weight = tips.pop(_TIP_EXTERNAL_EDITOR)
|
|
86
|
+
tips[f"Press ctrl+x to compose prompts in {editor}"] = weight
|
|
87
|
+
|
|
88
|
+
if not yolo_switcher_enabled:
|
|
89
|
+
# Replace the YOLO cycle tip with the Manual/Auto-only wording so the
|
|
90
|
+
# splash never claims Shift+Tab can enter unrestricted mode when policy
|
|
91
|
+
# has removed that entry from the switcher.
|
|
92
|
+
weight = tips.pop(_TIP_SHIFT_TAB_WITH_YOLO, None)
|
|
93
|
+
if weight is not None:
|
|
94
|
+
tips[_TIP_SHIFT_TAB_WITHOUT_YOLO] = weight
|
|
88
95
|
return tips
|
|
89
96
|
|
|
90
97
|
|
|
@@ -864,7 +864,7 @@ class StatusBar(Vertical):
|
|
|
864
864
|
color = colors.muted
|
|
865
865
|
hit_rate = Content.styled(f"{percent:.0f}% hit", color)
|
|
866
866
|
elif not self.cache_read_tokens and not self.cache_write_tokens:
|
|
867
|
-
|
|
867
|
+
return Content("")
|
|
868
868
|
details = (
|
|
869
869
|
f"{_compact_tokens(self.cache_read_tokens)} read"
|
|
870
870
|
f" / {_compact_tokens(self.cache_write_tokens)} write"
|
|
@@ -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.56"
|
|
8
8
|
description = "Terminal coding agent built on the Deep Agents SDK - works with any model, with persistent memory, customizable skills, subagents, and approval controls."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
@@ -26,20 +26,20 @@ classifiers = [
|
|
|
26
26
|
]
|
|
27
27
|
dependencies = [
|
|
28
28
|
# Framework
|
|
29
|
-
"deepagents==0.7.
|
|
30
|
-
"langchain>=1.3.
|
|
29
|
+
"deepagents==0.7.6",
|
|
30
|
+
"langchain>=1.3.15,<2.0.0",
|
|
31
31
|
"langgraph-checkpoint-sqlite>=3.1.1,<4.0.0",
|
|
32
32
|
|
|
33
33
|
# Client-server architecture
|
|
34
34
|
"langgraph-sdk>=0.4.2,<1.0.0",
|
|
35
35
|
"langgraph-cli[inmem]>=0.4.31,<1.0.0",
|
|
36
|
-
"langgraph-runtime-inmem>=0.
|
|
36
|
+
"langgraph-runtime-inmem>=0.32.4,<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.5.
|
|
41
|
-
"langchain-google-genai>=4.3.
|
|
42
|
-
"langchain-openai>=1.
|
|
40
|
+
"langchain-anthropic>=1.5.6,<2.0.0",
|
|
41
|
+
"langchain-google-genai>=4.3.3,<5.0.0",
|
|
42
|
+
"langchain-openai>=1.5.0,<2.0.0",
|
|
43
43
|
"pydantic>=2.12.5,<2.14.0a0",
|
|
44
44
|
|
|
45
45
|
# UI/Terminal
|
|
@@ -54,7 +54,7 @@ dependencies = [
|
|
|
54
54
|
"markdownify>=1.2.3,<2.0.0",
|
|
55
55
|
|
|
56
56
|
# Sandbox integrations
|
|
57
|
-
"langsmith[sandbox]>=0.10.
|
|
57
|
+
"langsmith[sandbox]>=0.10.18",
|
|
58
58
|
|
|
59
59
|
# Tools
|
|
60
60
|
"tavily-python>=0.7.26,<1.0.0",
|
|
@@ -85,7 +85,7 @@ dependencies = [
|
|
|
85
85
|
"tomli-w>=1.2.0,<2.0.0",
|
|
86
86
|
|
|
87
87
|
# MCP
|
|
88
|
-
"langchain-mcp-adapters>=0.3.
|
|
88
|
+
"langchain-mcp-adapters>=0.3.2,<1.0.0",
|
|
89
89
|
# Cross-process lock serializing MCP OAuth token refreshes.
|
|
90
90
|
# Capped below 3.30: it runs a blocking temp-dir probe at import time
|
|
91
91
|
# (_probe_link_follow_symlinks), which trips Blockbuster's os.getcwd guard
|
|
@@ -103,13 +103,13 @@ dependencies = [
|
|
|
103
103
|
|
|
104
104
|
[project.optional-dependencies]
|
|
105
105
|
# Model providers
|
|
106
|
-
anthropic = ["langchain-anthropic>=1.5.
|
|
106
|
+
anthropic = ["langchain-anthropic>=1.5.6,<2.0.0"]
|
|
107
107
|
baseten = ["langchain-baseten>=0.2.3,<1.0.0"]
|
|
108
|
-
bedrock = ["langchain-aws>=1.
|
|
108
|
+
bedrock = ["langchain-aws>=1.7.0,<2.0.0"]
|
|
109
109
|
cohere = ["langchain-cohere>=0.6.0,<1.0.0"]
|
|
110
110
|
deepseek = ["langchain-deepseek>=1.1.0,<2.0.0"]
|
|
111
111
|
fireworks = ["langchain-fireworks>=1.5.2,<2.0.0"]
|
|
112
|
-
google-genai = ["langchain-google-genai>=4.3.
|
|
112
|
+
google-genai = ["langchain-google-genai>=4.3.3,<5.0.0"]
|
|
113
113
|
groq = ["langchain-groq>=1.1.3,<2.0.0"]
|
|
114
114
|
huggingface = ["langchain-huggingface>=1.2.2,<2.0.0"]
|
|
115
115
|
ibm = ["langchain-ibm>=1.1.0,<2.0.0"]
|
|
@@ -121,7 +121,7 @@ nvidia = [
|
|
|
121
121
|
"langchain-nvidia-ai-endpoints>=1.4.3,<2.0.0",
|
|
122
122
|
]
|
|
123
123
|
ollama = ["langchain-ollama>=1.1.0,<2.0.0"]
|
|
124
|
-
openai = ["langchain-openai>=1.
|
|
124
|
+
openai = ["langchain-openai>=1.5.0,<2.0.0"]
|
|
125
125
|
openrouter = ["langchain-openrouter>=0.2.7,<2.0.0"]
|
|
126
126
|
perplexity = ["langchain-perplexity>=1.4.0,<2.0.0"]
|
|
127
127
|
together = ["langchain-together>=0.4.0,<2.0.0"]
|