deepagents-code 0.1.84__tar.gz → 0.1.86__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.84 → deepagents_code-0.1.86}/AGENTS.md +3 -1
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/CHANGELOG.md +27 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/COMMANDS.md +1 -1
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/PKG-INFO +24 -21
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_build_info.py +1 -1
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_server_config.py +8 -4
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_version.py +1 -1
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/app.py +92 -22
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/app.tcss +10 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/command_registry.py +5 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/configuration/interpreter.py +10 -1
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/extras_info.py +1 -1
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/integrations/sandbox_factory.py +110 -3
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/integrations/sandbox_registry.py +7 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/main.py +2 -1
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/model_retry.py +40 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/_cost_breakdown.py +37 -38
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/cost_breakdown.py +6 -9
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/auto_mode_notice.py +1 -1
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/autocomplete.py +5 -2
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/chat_input.py +16 -2
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/messages.py +1 -1
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/startup_tip.py +1 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/status.py +7 -2
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/yolo_mode_notice.py +1 -1
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/pyproject.toml +18 -17
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/scripts/install.sh +1 -3
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/conftest.py +23 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_app.py +108 -8
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_cache_expiry.py +99 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_clipboard.py +22 -0
- deepagents_code-0.1.86/tests/unit_tests/test_cost_breakdown.py +35 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_debug_console.py +7 -6
- deepagents_code-0.1.86/tests/unit_tests/test_groq_tool_limit.py +216 -0
- deepagents_code-0.1.86/tests/unit_tests/test_interpreter_workspace_policy.py +219 -0
- deepagents_code-0.1.86/tests/unit_tests/test_resume_workspace_errors.py +111 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_sandbox_factory.py +91 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_thread_naming_app.py +9 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_threads_resume.py +9 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/test_textual_adapter.py +105 -92
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_autocomplete.py +9 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_status.py +12 -2
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_thread_selector.py +8 -8
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/uv.lock +115 -77
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/.gitignore +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/ARCHITECTURE.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/DEVELOPMENT.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/EXTENSIONS.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/HOOKS.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/LICENSE +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/Makefile +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/PRICING.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/README.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/THREAT_MODEL.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/__main__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_ask_user_types.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_async.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_cli_context.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_constants.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_content_blocks.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_debug.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_debug_buffer.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_dep_floor_check.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_env_vars.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_fake_models.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_git.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_glm_5p2_profile.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_home_error.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_invocation.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_js_cost.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_markdown.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_paths.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_repository_bounds.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_reserved_names.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_session_stats.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_startup_error.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_terminal_stderr.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_testing_models.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_textual_patches.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_tool_free.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_tool_stream.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/_tracing.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/acp.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/agent.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/approval_mode.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/ask_user.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/auth_display.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/auth_store.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/auto_mode.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/btw.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/btw_api.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/btw_cost.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/built_in_skills/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/built_in_skills/deepagents-plugin-discovery/SKILL.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/built_in_skills/deepagents-thread-inspector/SKILL.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/built_in_skills/deepagents-thread-inspector/scripts/inspect_sessions.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/bundled_prices.README.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/bundled_prices.json +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/client/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/client/commands/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/client/commands/auth.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/client/commands/config.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/client/commands/extras.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/client/commands/mcp.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/client/commands/tools.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/client/launch/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/client/launch/server.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/client/launch/server_manager.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/client/non_interactive.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/client/remote_client.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/client/session_cost.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/clipboard.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/cold_cache.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/config.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/config_manifest.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/configurable_model.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/configuration/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/configuration/paths.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/configuration/provider.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/configuration/providers.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/configuration/resolver.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/configuration/service.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/configuration/theme_resolution.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/configuration/types.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/configuration/writer.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/context_doctor.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/cost_tracking.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/default_agent_prompt.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/diff_utils.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/doctor.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/editor.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/event_bus.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/extensions/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/extensions/api.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/extensions/discovery.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/extensions/hosting.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/extensions/loader.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/extensions/registry.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/extensions/runtime.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/extensions/settings.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/extensions/trust.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/file_ops.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/formatting.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/goal_rubric.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/goal_state_limits.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/goal_state_notice.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/goal_tools.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/capabilities.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/client.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/client_lifecycle.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/context.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/engine.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/env.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/envelope.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/interrupt.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/legacy.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/loading.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/manager.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/migration.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/models/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/models/adapters.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/models/config.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/models/domain.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/models/transport.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/models/wire.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/permissions.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/presenter.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/projection.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/reducer.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/runner.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/runtime.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/server_middleware.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/snapshot.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/tools.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/transcript.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/trust.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/hooks/validate_terminal_sequence.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/input.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/integrations/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/integrations/openai_codex.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/integrations/sandbox_config.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/integrations/sandbox_provider.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/json_types.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/local_context.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/managed_tools.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/mcp_auth.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/mcp_config.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/mcp_disabled.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/mcp_login_service.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/mcp_middleware.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/mcp_providers/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/mcp_providers/_registry.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/mcp_providers/base.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/mcp_providers/github.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/mcp_providers/slack.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/mcp_proxy.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/mcp_tools.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/media_utils.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/memory_guard.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/model_api.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/model_catalog.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/model_config.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/model_metadata.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/notifications.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/offload.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/offload_api.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/offload_middleware.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/onboarding.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/output.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/paste_collapse.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/plugins/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/plugins/_json.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/plugins/adapters/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/plugins/adapters/hooks.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/plugins/adapters/mcp.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/plugins/adapters/skills.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/plugins/adapters/skills_middleware.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/plugins/commands_cli.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/plugins/discovery.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/plugins/manifest.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/plugins/marketplace.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/plugins/models.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/plugins/store.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/plugins/substitution.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/project_utils.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/py.typed +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/reasoning_effort.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/reliable_rubric.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/resume_state.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/server_graph.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/sessions.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/skills/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/skills/commands.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/skills/invocation.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/skills/load.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/skills/load_errors.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/skills/merge.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/skills/trust.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/state_migration.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/subagents.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/system_prompt.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/terminal_capabilities.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/terminal_escape.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/terminal_title.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/theme.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/thread_ownership.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/thread_titles.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tool_catalog.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tool_display.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tools.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/key_hints.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/btw.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/btw.tcss +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/cold_cache.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/mcp_servers.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/mcp_servers.tcss +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/model_switch.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/plugin_manager/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/plugin_manager/content.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/plugin_manager/models.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/plugin_manager/plugin_manager.tcss +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/plugin_manager/state.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/plugin_manager/tabs.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/prompt_clipboard.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/prompt_clipboard.tcss +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/resume_blocked.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/resume_compact.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/session_cost.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/session_cost.tcss +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/thread_name.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/modals/thread_name.tcss +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/screens/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/textual_adapter.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/_condense_path.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/_copy_spans.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/_inline_prompt.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/_js_eval_display.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/_links.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/_paste_textarea.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/agent_selector.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/approval.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/ask_user.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/auth.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/codex_auth.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/context_usage.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/cwd_switch.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/debug_console.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/diff.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/effort_selector.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/goal_review.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/goal_status.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/history.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/install_confirm.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/launch_init.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/loading.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/mcp_login.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/mcp_reconnect.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/mcp_viewer.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/message_store.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/model_selector.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/notification_center.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/notification_detail.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/notification_settings.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/prompt_search.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/restart_prompt.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/skill_trust.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/subagent_panel.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/theme_selector.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/thread_agent_switch.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/thread_selector.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/tool_renderers.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/tool_widgets.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/update_available.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/update_confirm.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/update_progress.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/tui/widgets/welcome.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/ui.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/unicode_security.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/update_check.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/workspace.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/workspace_diagnostics.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/examples/extensions/memory_store.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/hatch_build.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/images/debug-console-cost-breakdown.png +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/images/model-stream-retry.png +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/images/tui.png +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/scripts/check_imports.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/scripts/check_process_cwd.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/scripts/debug_server.sh +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/scripts/generate_commands_catalog.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/README.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/integration_tests/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/integration_tests/benchmarks/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/integration_tests/benchmarks/test_local_context_benchmarks.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/integration_tests/benchmarks/test_thread_loading_benchmarks.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/integration_tests/conftest.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/integration_tests/test_acp_mode.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/integration_tests/test_auto_approve_remote.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/integration_tests/test_compact_resume.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/integration_tests/test_offload_server_side.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/integration_tests/test_pending_work_recovery.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/integration_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/integration_tests/test_sandbox_operations.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/client/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/client/commands/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/client/commands/test_auth.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/client/commands/test_extras.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/client/commands/test_mcp.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/client/commands/test_tools.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/data/coding_agent_v1_validator.json +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/hooks/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/hooks/models/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/hooks/models/test_models.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/hooks/test_client_lifecycle.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/hooks/test_configuration.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/hooks/test_engine.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/hooks/test_execution.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/hooks/test_manager.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/hooks/test_presenter.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/hooks/test_server_lifecycle.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/hooks/test_transcript.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/hooks/test_trust.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/plugins/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/plugins/test_marketplace.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/plugins/test_plugin_hooks.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/plugins/test_plugins_p0.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/skills/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/skills/test_commands.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/skills/test_load.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/skills/test_merge.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/skills/test_pinned_skills.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/skills/test_skill_trust.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/skills/test_skills_json.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/skills/test_thread_inspector.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/smoke_tests/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/smoke_tests/conftest.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/smoke_tests/snapshots/system_prompt_headless_local.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/smoke_tests/snapshots/system_prompt_interactive_local.md +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/smoke_tests/test_system_prompt.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test__tool_stream.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_acp.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_agent.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_agent_friendly.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_agent_mcp_timeout.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_app_thread_ownership.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_approval_mode.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_args.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_ask_user_middleware.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_ask_user_types.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_auth_display.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_auth_store.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_auth_web_search_restart.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_auto_mode.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_btw.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_btw_api.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_charset.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_cli_provider.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_coding_agent_metadata.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_cold_cache.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_command_registry.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_compact_tool.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_config.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_config_manifest.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_configurable_model.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_configuration.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_configuration_resolution.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_configuration_resolver.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_context_doctor.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_cost_tracking.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_cursor_style.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_debug.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_debug_buffer.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_dep_floor_check.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_diff_utils.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_doctor.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_editor.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_end_to_end.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_env_vars.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_event_bus.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_exception_handling.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_extension_api.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_extension_cli_trust.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_extension_config_manifest.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_extension_discovery.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_extension_display.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_extension_host_runtime.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_extension_hosting.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_extension_runtime.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_extra_skills_dirs.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_extras_info.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_file_ops.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_fork_goal_notice.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_formatting.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_git.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_glm_5p2_profile.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_goal_criteria_client.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_goal_rubric.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_goal_state_limits.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_goal_state_notice.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_goal_state_persistence.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_goal_tools.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_hatch_build.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_hooks.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_imports.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_input_parsing.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_install_command.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_install_script.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_invocation.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_js_cost_sync.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_js_cost_tracking.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_json_types.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_local_context.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_main.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_main_acp_mode.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_main_args.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_managed_tools.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_mcp_auth.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_mcp_config.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_mcp_disabled.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_mcp_lifecycle.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_mcp_login_service.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_mcp_middleware.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_mcp_proxy.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_mcp_schema.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_mcp_tools.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_media_utils.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_memory_guard.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_model_catalog.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_model_config.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_model_metadata.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_model_retry.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_model_switch.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_non_interactive.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_notifications.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_offload.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_offload_api.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_onboarding.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_openai_codex_integration.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_output.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_paths.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_process_cwd_check.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_reasoning_effort.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_reliable_rubric.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_reload.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_remote_client.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_repository_bounds.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_resume_compaction_recovery.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_resume_state.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_rubric_cli.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_sandbox_config.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_sandbox_provider.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_sandbox_registry.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_server.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_server_config.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_server_graph.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_server_helpers.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_server_manager.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_server_tracing.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_session_stats.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_sessions.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_shell_allow_list.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_skill_invocation.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_startup_fast_paths.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_state_migration.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_subagents.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_terminal_capabilities.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_terminal_escape.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_terminal_stderr.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_terminal_title.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_text_encoding.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_textual_patches.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_theme.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_thread_ownership.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_thread_ownership_transitions.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_thread_titles.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_tool_catalog.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_tool_display.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_tracing.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_tracing_replicas.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_transcript_virtualization.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_ui.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_unicode_security.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_uninstall_command.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_update_check.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_version.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_workspace.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/test_workspace_diagnostics.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tools/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tools/test_current_thread.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tools/test_fetch_url.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tools/test_tool_arg_schemas.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tools/test_web_search.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/modals/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/modals/plugin_manager/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/modals/plugin_manager/test_inspection.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/modals/plugin_manager/test_structure.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/modals/test_cold_cache.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/modals/test_model_switch.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/modals/test_prompt_clipboard.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/modals/test_resume_blocked.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/modals/test_session_cost.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/test_key_hints.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/test_modal_footer_layout.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/test_subagent_stream.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/__init__.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_agent_selector.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_approval.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_ask_user.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_auth_widgets.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_auto_mode_notice.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_chat_input.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_condense_path.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_copy_spans.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_cwd_switch.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_diff.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_goal_review.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_history.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_inline_prompt.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_install_confirm.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_launch_init.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_links.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_loading.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_mcp_login_modal.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_mcp_reconnect.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_mcp_viewer.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_message_store.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_messages.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_model_selector.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_notification_center.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_notification_detail.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_notification_settings.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_prompt_search.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_restart_prompt.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_skill_trust_screen.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_startup_tip.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_subagent_panel.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_thread_agent_switch.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_tool_renderers.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_update_available.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_update_confirm.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_update_progress.py +0 -0
- {deepagents_code-0.1.84 → deepagents_code-0.1.86}/tests/unit_tests/tui/widgets/test_welcome.py +0 -0
|
@@ -143,7 +143,9 @@ Hints that tell the user to run something (for example the teardown `-r <thread>
|
|
|
143
143
|
|
|
144
144
|
## Splash screen tips
|
|
145
145
|
|
|
146
|
-
|
|
146
|
+
Treat the `_TIPS` dict in `deepagents_code/tui/widgets/startup_tip.py` as a curated, limited-attention surface, not a feature changelog. Do not add a tip by default when adding a feature. One tip is chosen at random above the chat input on startup, so each addition competes with existing tips.
|
|
147
|
+
|
|
148
|
+
Add a tip only for a broadly useful, frequently applicable action that is hard to discover through existing help or UI and can be explained accurately in one short, action-oriented sentence (e.g., `"Press ctrl+g to compose prompts in your external editor"`). Niche or advanced configuration, experimental or opt-in tuning, and features requiring caveats about cost, quality, or tradeoffs belong in documentation or contextual help, not startup tips. If the value to most users is unclear, leave the list unchanged. Before adding one, check for overlap and explain why it earns space over existing tips in the PR. Map accepted tip text to a relative selection weight (higher = shown more often); do not increase weight merely because a feature is new.
|
|
147
149
|
|
|
148
150
|
## Slash commands
|
|
149
151
|
|
|
@@ -2,6 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
# Deep Agents Code Changelog
|
|
4
4
|
|
|
5
|
+
## [0.1.86](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.85...deepagents-code==0.1.86) (2026-10-16)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
- Add NVIDIA OpenShell as a sandbox provider ([#6999](https://github.com/langchain-ai/deepagents/pull/6999)).
|
|
10
|
+
- Show a banner when a prompt cache expires ([#6957](https://github.com/langchain-ai/deepagents/pull/6957)).
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
- Add `/resume` as an alias and improve how alias matches are ranked ([#6988](https://github.com/langchain-ai/deepagents/pull/6988)).
|
|
15
|
+
- Report workspace refusals accurately when resuming a thread ([#6992](https://github.com/langchain-ai/deepagents/pull/6992)).
|
|
16
|
+
- Replace repeated thread-resume errors ([#6990](https://github.com/langchain-ai/deepagents/pull/6990)).
|
|
17
|
+
- Replace the chat input when recalling a prompt ([#6994](https://github.com/langchain-ai/deepagents/pull/6994)).
|
|
18
|
+
- Show an expired prompt cache in the footer ([#6970](https://github.com/langchain-ai/deepagents/pull/6970)).
|
|
19
|
+
- Provide actionable errors when Groq tool limits are reached ([#6996](https://github.com/langchain-ai/deepagents/pull/6996)).
|
|
20
|
+
- Compare effective interpreter permissions ([#6993](https://github.com/langchain-ai/deepagents/pull/6993)).
|
|
21
|
+
|
|
22
|
+
## [0.1.85](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.84...deepagents-code==0.1.85) (2026-10-14)
|
|
23
|
+
|
|
24
|
+
### Bug Fixes
|
|
25
|
+
|
|
26
|
+
- Suppress ownership warnings for root installs.
|
|
27
|
+
|
|
28
|
+
### Performance Improvements
|
|
29
|
+
|
|
30
|
+
- Avoid restyling transcript history when inserting messages.
|
|
31
|
+
|
|
5
32
|
## [0.1.84](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.83...deepagents-code==0.1.84) (2026-10-12)
|
|
6
33
|
|
|
7
34
|
### Features
|
|
@@ -49,7 +49,7 @@ aliases, descriptions, visibility, or hidden-command metadata.
|
|
|
49
49
|
| `/scrollbar` | | Show or hide the chat scrollbar |
|
|
50
50
|
| `/skill-creator` | | Create or refine agent skills |
|
|
51
51
|
| `/theme` | | Change color theme |
|
|
52
|
-
| `/threads` |
|
|
52
|
+
| `/threads` | `/resume` | Browse and resume past threads |
|
|
53
53
|
| `/timestamps` | | Show or hide message timestamps |
|
|
54
54
|
| `/tokens` | | Show token usage |
|
|
55
55
|
| `/tools` | | List the tools available to the agent |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: deepagents-code
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.86
|
|
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://www.langchain.com/dcode
|
|
6
6
|
Project-URL: Documentation, https://docs.langchain.com/oss/deepagents/code/overview
|
|
@@ -30,21 +30,21 @@ Requires-Python: <4.0,>=3.12
|
|
|
30
30
|
Requires-Dist: aiosqlite<1.0.0,>=0.22.1
|
|
31
31
|
Requires-Dist: anyio<5.0.0,>=4.14.2
|
|
32
32
|
Requires-Dist: deepagents-acp<1.0.0,>=0.0.10
|
|
33
|
-
Requires-Dist: deepagents==0.7.
|
|
33
|
+
Requires-Dist: deepagents==0.7.28
|
|
34
34
|
Requires-Dist: fastmcp<5.0.0,>=4.0.0b4
|
|
35
35
|
Requires-Dist: filelock<3.30,>=3.29.7
|
|
36
|
-
Requires-Dist: genai-prices<0.2.0,>=0.1.
|
|
36
|
+
Requires-Dist: genai-prices<0.2.0,>=0.1.13
|
|
37
37
|
Requires-Dist: httpx<1.0.0,>=0.28.1
|
|
38
38
|
Requires-Dist: langchain-anthropic<2.0.0,>=1.7.6
|
|
39
|
-
Requires-Dist: langchain-google-genai<5.0.0,>=4.4.
|
|
40
|
-
Requires-Dist: langchain-openai<2.0.0,>=1.7.
|
|
39
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.4.2
|
|
40
|
+
Requires-Dist: langchain-openai<2.0.0,>=1.7.2
|
|
41
41
|
Requires-Dist: langchain-quickjs<0.4.0,>=0.3.4
|
|
42
|
-
Requires-Dist: langchain<2.0.0,>=1.4.
|
|
43
|
-
Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.1.
|
|
44
|
-
Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.
|
|
45
|
-
Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.36.
|
|
46
|
-
Requires-Dist: langgraph-sdk<1.0.0,>=0.4.
|
|
47
|
-
Requires-Dist: langsmith[sandbox]>=0.14.
|
|
42
|
+
Requires-Dist: langchain<2.0.0,>=1.4.6
|
|
43
|
+
Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.1.2
|
|
44
|
+
Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.35
|
|
45
|
+
Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.36.1
|
|
46
|
+
Requires-Dist: langgraph-sdk<1.0.0,>=0.4.7
|
|
47
|
+
Requires-Dist: langsmith[sandbox]>=0.14.11
|
|
48
48
|
Requires-Dist: markdownify<2.0.0,>=1.2.3
|
|
49
49
|
Requires-Dist: mcp<3.0.0,>=2.0.0
|
|
50
50
|
Requires-Dist: packaging>=26.2
|
|
@@ -67,22 +67,22 @@ Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.5; extra == 'agen
|
|
|
67
67
|
Provides-Extra: all-providers
|
|
68
68
|
Requires-Dist: aiohttp<3.15.0,>=3.14.3; extra == 'all-providers'
|
|
69
69
|
Requires-Dist: langchain-anthropic<2.0.0,>=1.7.6; extra == 'all-providers'
|
|
70
|
-
Requires-Dist: langchain-aws<2.0.0,>=1.
|
|
70
|
+
Requires-Dist: langchain-aws<2.0.0,>=1.9.0; extra == 'all-providers'
|
|
71
71
|
Requires-Dist: langchain-baseten<1.0.0,>=0.2.5; extra == 'all-providers'
|
|
72
72
|
Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'all-providers'
|
|
73
73
|
Requires-Dist: langchain-deepseek<2.0.0,>=1.1.1; extra == 'all-providers'
|
|
74
74
|
Requires-Dist: langchain-fireworks<2.0.0,>=1.7.1; extra == 'all-providers'
|
|
75
|
-
Requires-Dist: langchain-google-genai<5.0.0,>=4.4.
|
|
75
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.4.2; extra == 'all-providers'
|
|
76
76
|
Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.4; extra == 'all-providers'
|
|
77
77
|
Requires-Dist: langchain-groq<2.0.0,>=1.1.3; extra == 'all-providers'
|
|
78
78
|
Requires-Dist: langchain-huggingface<2.0.0,>=1.2.3; extra == 'all-providers'
|
|
79
79
|
Requires-Dist: langchain-ibm<2.0.0,>=1.1.2; extra == 'all-providers'
|
|
80
|
-
Requires-Dist: langchain-litellm<2.0.0,>=0.11.
|
|
80
|
+
Requires-Dist: langchain-litellm<2.0.0,>=0.11.1; extra == 'all-providers'
|
|
81
81
|
Requires-Dist: langchain-meta<2.0.0,>=0.5.0; extra == 'all-providers'
|
|
82
82
|
Requires-Dist: langchain-mistralai<2.0.0,>=1.1.6; extra == 'all-providers'
|
|
83
|
-
Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.
|
|
83
|
+
Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.5.0; extra == 'all-providers'
|
|
84
84
|
Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'all-providers'
|
|
85
|
-
Requires-Dist: langchain-openai<2.0.0,>=1.7.
|
|
85
|
+
Requires-Dist: langchain-openai<2.0.0,>=1.7.2; extra == 'all-providers'
|
|
86
86
|
Requires-Dist: langchain-openrouter<2.0.0,>=0.2.9; extra == 'all-providers'
|
|
87
87
|
Requires-Dist: langchain-perplexity<2.0.0,>=1.4.1; extra == 'all-providers'
|
|
88
88
|
Requires-Dist: langchain-together<2.0.0,>=0.4.0; extra == 'all-providers'
|
|
@@ -91,6 +91,7 @@ Provides-Extra: all-sandboxes
|
|
|
91
91
|
Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.5; extra == 'all-sandboxes'
|
|
92
92
|
Requires-Dist: langchain-daytona>=0.0.7; extra == 'all-sandboxes'
|
|
93
93
|
Requires-Dist: langchain-modal>=0.0.5; extra == 'all-sandboxes'
|
|
94
|
+
Requires-Dist: langchain-nvidia-openshell>=0.1.1; extra == 'all-sandboxes'
|
|
94
95
|
Requires-Dist: langchain-runloop>=0.0.6; extra == 'all-sandboxes'
|
|
95
96
|
Requires-Dist: langchain-vercel-sandbox>=0.0.1; extra == 'all-sandboxes'
|
|
96
97
|
Provides-Extra: anthropic
|
|
@@ -98,7 +99,7 @@ Requires-Dist: langchain-anthropic<2.0.0,>=1.7.6; extra == 'anthropic'
|
|
|
98
99
|
Provides-Extra: baseten
|
|
99
100
|
Requires-Dist: langchain-baseten<1.0.0,>=0.2.5; extra == 'baseten'
|
|
100
101
|
Provides-Extra: bedrock
|
|
101
|
-
Requires-Dist: langchain-aws<2.0.0,>=1.
|
|
102
|
+
Requires-Dist: langchain-aws<2.0.0,>=1.9.0; extra == 'bedrock'
|
|
102
103
|
Provides-Extra: cohere
|
|
103
104
|
Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'cohere'
|
|
104
105
|
Provides-Extra: daytona
|
|
@@ -108,7 +109,7 @@ Requires-Dist: langchain-deepseek<2.0.0,>=1.1.1; extra == 'deepseek'
|
|
|
108
109
|
Provides-Extra: fireworks
|
|
109
110
|
Requires-Dist: langchain-fireworks<2.0.0,>=1.7.1; extra == 'fireworks'
|
|
110
111
|
Provides-Extra: google-genai
|
|
111
|
-
Requires-Dist: langchain-google-genai<5.0.0,>=4.4.
|
|
112
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.4.2; extra == 'google-genai'
|
|
112
113
|
Provides-Extra: groq
|
|
113
114
|
Requires-Dist: langchain-groq<2.0.0,>=1.1.3; extra == 'groq'
|
|
114
115
|
Provides-Extra: huggingface
|
|
@@ -116,7 +117,7 @@ Requires-Dist: langchain-huggingface<2.0.0,>=1.2.3; extra == 'huggingface'
|
|
|
116
117
|
Provides-Extra: ibm
|
|
117
118
|
Requires-Dist: langchain-ibm<2.0.0,>=1.1.2; extra == 'ibm'
|
|
118
119
|
Provides-Extra: litellm
|
|
119
|
-
Requires-Dist: langchain-litellm<2.0.0,>=0.11.
|
|
120
|
+
Requires-Dist: langchain-litellm<2.0.0,>=0.11.1; extra == 'litellm'
|
|
120
121
|
Provides-Extra: media
|
|
121
122
|
Requires-Dist: av<19.0.0,>=18.0.0; extra == 'media'
|
|
122
123
|
Requires-Dist: pillow<13.0.0,>=12.3.0; extra == 'media'
|
|
@@ -128,13 +129,15 @@ Provides-Extra: modal
|
|
|
128
129
|
Requires-Dist: langchain-modal>=0.0.5; extra == 'modal'
|
|
129
130
|
Provides-Extra: nvidia
|
|
130
131
|
Requires-Dist: aiohttp<3.15.0,>=3.14.3; extra == 'nvidia'
|
|
131
|
-
Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.
|
|
132
|
+
Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.5.0; extra == 'nvidia'
|
|
132
133
|
Provides-Extra: ollama
|
|
133
134
|
Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'ollama'
|
|
134
135
|
Provides-Extra: openai
|
|
135
|
-
Requires-Dist: langchain-openai<2.0.0,>=1.7.
|
|
136
|
+
Requires-Dist: langchain-openai<2.0.0,>=1.7.2; extra == 'openai'
|
|
136
137
|
Provides-Extra: openrouter
|
|
137
138
|
Requires-Dist: langchain-openrouter<2.0.0,>=0.2.9; extra == 'openrouter'
|
|
139
|
+
Provides-Extra: openshell
|
|
140
|
+
Requires-Dist: langchain-nvidia-openshell>=0.1.1; extra == 'openshell'
|
|
138
141
|
Provides-Extra: perplexity
|
|
139
142
|
Requires-Dist: langchain-perplexity<2.0.0,>=1.4.1; extra == 'perplexity'
|
|
140
143
|
Provides-Extra: quickjs
|
|
@@ -563,6 +563,12 @@ class ServerConfig:
|
|
|
563
563
|
|
|
564
564
|
def to_workspace_payload(self) -> dict[str, Any]:
|
|
565
565
|
"""Return non-secret resource policy for a durable workspace binding."""
|
|
566
|
+
from deepagents_code.configuration.interpreter import InterpreterConfig
|
|
567
|
+
|
|
568
|
+
interpreter = InterpreterConfig.from_resolver(
|
|
569
|
+
ptc=self.interpreter_ptc,
|
|
570
|
+
ptc_acknowledge_unsafe=self.interpreter_ptc_acknowledge_unsafe,
|
|
571
|
+
)
|
|
566
572
|
return {
|
|
567
573
|
"assistant_id": self.assistant_id,
|
|
568
574
|
"auto_approve": self.auto_approve,
|
|
@@ -574,10 +580,8 @@ class ServerConfig:
|
|
|
574
580
|
"enable_memory": self.enable_memory,
|
|
575
581
|
"enable_skills": self.enable_skills,
|
|
576
582
|
"enable_interpreter": self.enable_interpreter,
|
|
577
|
-
"interpreter_ptc":
|
|
578
|
-
"interpreter_ptc_acknowledge_unsafe":
|
|
579
|
-
self.interpreter_ptc_acknowledge_unsafe
|
|
580
|
-
),
|
|
583
|
+
"interpreter_ptc": interpreter.ptc,
|
|
584
|
+
"interpreter_ptc_acknowledge_unsafe": interpreter.ptc_acknowledge_unsafe,
|
|
581
585
|
"allow_fs_tools": self.allow_fs_tools,
|
|
582
586
|
"recursion_limit": self.recursion_limit,
|
|
583
587
|
"sandbox_type": self.sandbox_type,
|
|
@@ -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.86" # 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."""
|
|
@@ -2641,6 +2641,38 @@ def _langsmith_gateway_key_mismatch(provider: str | None) -> str | None:
|
|
|
2641
2641
|
return resolved_env_var_name(key_env)
|
|
2642
2642
|
|
|
2643
2643
|
|
|
2644
|
+
def _build_resume_workspace_error_body(exc: BaseException) -> str | Content:
|
|
2645
|
+
"""Return markup-safe workspace refusal guidance with allowlisted field names."""
|
|
2646
|
+
from deepagents_code.client.remote_client import workspace_conflict_diagnostics
|
|
2647
|
+
from deepagents_code.workspace_diagnostics import (
|
|
2648
|
+
SAFE_SNAPSHOT_FIELDS,
|
|
2649
|
+
FieldChange,
|
|
2650
|
+
WorkspaceDiagnostics,
|
|
2651
|
+
format_diagnostics_content,
|
|
2652
|
+
)
|
|
2653
|
+
|
|
2654
|
+
text = (
|
|
2655
|
+
"Couldn't restore this thread's workspace because the server refused its "
|
|
2656
|
+
"configuration. Model restoration was not attempted. Restore the original "
|
|
2657
|
+
"settings or start a separate server with matching configuration, then "
|
|
2658
|
+
"retry resume."
|
|
2659
|
+
)
|
|
2660
|
+
diagnostics = workspace_conflict_diagnostics(exc)
|
|
2661
|
+
if diagnostics is None:
|
|
2662
|
+
return text
|
|
2663
|
+
safe = WorkspaceDiagnostics(
|
|
2664
|
+
category="unknown",
|
|
2665
|
+
reason="workspace configuration conflict",
|
|
2666
|
+
changes=tuple(
|
|
2667
|
+
FieldChange(name=change.name, state="values_unavailable")
|
|
2668
|
+
for change in diagnostics.changes
|
|
2669
|
+
if change.name in SAFE_SNAPSHOT_FIELDS
|
|
2670
|
+
),
|
|
2671
|
+
snapshot_status=diagnostics.snapshot_status,
|
|
2672
|
+
)
|
|
2673
|
+
return Content.assemble(text, "\n\n", format_diagnostics_content(safe))
|
|
2674
|
+
|
|
2675
|
+
|
|
2644
2676
|
def _build_agent_error_body(
|
|
2645
2677
|
text: str, exc: BaseException, *, key_env: str | None = None
|
|
2646
2678
|
) -> str | Content:
|
|
@@ -2911,6 +2943,7 @@ _SANDBOX_DISPLAY_NAMES: dict[str, str] = {
|
|
|
2911
2943
|
"daytona": "Daytona",
|
|
2912
2944
|
"langsmith": "LangSmith",
|
|
2913
2945
|
"modal": "Modal",
|
|
2946
|
+
"openshell": "OpenShell",
|
|
2914
2947
|
"runloop": "Runloop",
|
|
2915
2948
|
}
|
|
2916
2949
|
"""Human-readable display names for sandbox providers."""
|
|
@@ -4340,6 +4373,7 @@ class DeepAgentsApp(App):
|
|
|
4340
4373
|
state and must not appear in scrollback or serialized history.
|
|
4341
4374
|
"""
|
|
4342
4375
|
|
|
4376
|
+
self._thread_switch_error_widget: ErrorMessage | None = None
|
|
4343
4377
|
self._startup_failure_widget: ErrorMessage | None = None
|
|
4344
4378
|
"""Transient chat surface for the most recent server-startup failure.
|
|
4345
4379
|
Mounted by `on_deep_agents_app_server_start_failed`; removed on
|
|
@@ -4877,6 +4911,7 @@ class DeepAgentsApp(App):
|
|
|
4877
4911
|
header = _StaticHeader(id="app-header")
|
|
4878
4912
|
header.display = self._header_should_display()
|
|
4879
4913
|
yield header
|
|
4914
|
+
yield Static("Prompt cache expired", id="cache-expired-banner")
|
|
4880
4915
|
# Main chat area with scrollable messages
|
|
4881
4916
|
# VerticalScroll tracks user scroll intent for better auto-scroll behavior.
|
|
4882
4917
|
# `_ChatScroll` keeps clicks on messages from stealing input focus.
|
|
@@ -9716,12 +9751,26 @@ class DeepAgentsApp(App):
|
|
|
9716
9751
|
except Exception:
|
|
9717
9752
|
logger.debug("Cache-expiring notification failed", exc_info=True)
|
|
9718
9753
|
|
|
9754
|
+
def _refresh_cache_expiry_banner(self) -> None:
|
|
9755
|
+
"""Show reconciled cache expiry independently of handoff preferences."""
|
|
9756
|
+
if not self.screen_stack:
|
|
9757
|
+
return
|
|
9758
|
+
banners = self.screen_stack[0].query("#cache-expired-banner")
|
|
9759
|
+
if banners:
|
|
9760
|
+
expires_at = self._status_bar.cache_expires_at if self._status_bar else None
|
|
9761
|
+
banners.first().display = (
|
|
9762
|
+
not self._cache_reconciliation_pending
|
|
9763
|
+
and expires_at is not None
|
|
9764
|
+
and datetime.now(UTC) >= expires_at
|
|
9765
|
+
)
|
|
9766
|
+
|
|
9719
9767
|
def _check_cache_expiry(self) -> None:
|
|
9720
9768
|
"""Offer a handoff once per expired cache window, only when idle.
|
|
9721
9769
|
|
|
9722
9770
|
Polled every second from `on_mount`. Acts only when
|
|
9723
9771
|
`warnings.cache_prompt` is `expiry` and no cold-cache opt-out applies.
|
|
9724
9772
|
"""
|
|
9773
|
+
self._refresh_cache_expiry_banner()
|
|
9725
9774
|
expires_at = self._status_bar.cache_expires_at if self._status_bar else None
|
|
9726
9775
|
thread_id = self._lc_thread_id
|
|
9727
9776
|
if (
|
|
@@ -17723,7 +17772,9 @@ class DeepAgentsApp(App):
|
|
|
17723
17772
|
raise
|
|
17724
17773
|
elif cmd == "/rename" or cmd.startswith("/rename "):
|
|
17725
17774
|
await self._rename_current_thread(command.partition(" ")[2])
|
|
17726
|
-
elif cmd
|
|
17775
|
+
elif cmd in {"/threads", "/resume"} or cmd.startswith(
|
|
17776
|
+
("/threads ", "/resume ")
|
|
17777
|
+
):
|
|
17727
17778
|
await self._handle_threads_command(command)
|
|
17728
17779
|
elif cmd == "/trace":
|
|
17729
17780
|
await self._handle_trace_command(command)
|
|
@@ -21954,6 +22005,7 @@ class DeepAgentsApp(App):
|
|
|
21954
22005
|
self._last_cache_write = activity
|
|
21955
22006
|
await self._refresh_cache_timing()
|
|
21956
22007
|
self._cache_reconciliation_pending = pending
|
|
22008
|
+
self._refresh_cache_expiry_banner()
|
|
21957
22009
|
|
|
21958
22010
|
def _set_active_message(self, message_id: str | None) -> None:
|
|
21959
22011
|
"""Set the active streaming message (won't be pruned).
|
|
@@ -24651,7 +24703,7 @@ class DeepAgentsApp(App):
|
|
|
24651
24703
|
severity="warning",
|
|
24652
24704
|
)
|
|
24653
24705
|
return
|
|
24654
|
-
if result is not None and not current_input.
|
|
24706
|
+
if result is not None and not current_input.replace_with_prompt(result):
|
|
24655
24707
|
self.notify(
|
|
24656
24708
|
"Could not insert the prompt: the composer is unavailable",
|
|
24657
24709
|
severity="warning",
|
|
@@ -29952,7 +30004,24 @@ class DeepAgentsApp(App):
|
|
|
29952
30004
|
"Use /threads to try again.",
|
|
29953
30005
|
exc,
|
|
29954
30006
|
)
|
|
29955
|
-
await self.
|
|
30007
|
+
await self._mount_thread_switch_error(body)
|
|
30008
|
+
|
|
30009
|
+
async def _mount_thread_switch_error(self, body: str | Content) -> None:
|
|
30010
|
+
"""Replace transient thread-switch failures without storing them in history."""
|
|
30011
|
+
async with self._transcript_mutation_lock:
|
|
30012
|
+
prior = self._thread_switch_error_widget
|
|
30013
|
+
self._thread_switch_error_widget = None
|
|
30014
|
+
if prior is not None and prior.is_attached:
|
|
30015
|
+
await prior.remove()
|
|
30016
|
+
try:
|
|
30017
|
+
messages = self.query_one("#messages", Container)
|
|
30018
|
+
except NoMatches:
|
|
30019
|
+
return
|
|
30020
|
+
if not messages.is_attached:
|
|
30021
|
+
return
|
|
30022
|
+
widget = ErrorMessage(body)
|
|
30023
|
+
await self._mount_before_queued(messages, widget)
|
|
30024
|
+
self._thread_switch_error_widget = widget
|
|
29956
30025
|
|
|
29957
30026
|
async def _resolve_threads_resume_target(
|
|
29958
30027
|
self, requested_id: str | None
|
|
@@ -30189,11 +30258,9 @@ class DeepAgentsApp(App):
|
|
|
30189
30258
|
"Failed to prefetch cross-agent thread %s",
|
|
30190
30259
|
target.thread_id,
|
|
30191
30260
|
)
|
|
30192
|
-
await self.
|
|
30193
|
-
|
|
30194
|
-
|
|
30195
|
-
"Staying on the current agent."
|
|
30196
|
-
)
|
|
30261
|
+
await self._mount_thread_switch_error(
|
|
30262
|
+
f"Could not load thread {target.thread_id}: {exc}. "
|
|
30263
|
+
"Staying on the current agent."
|
|
30197
30264
|
)
|
|
30198
30265
|
return
|
|
30199
30266
|
|
|
@@ -30233,11 +30300,9 @@ class DeepAgentsApp(App):
|
|
|
30233
30300
|
target.thread_id,
|
|
30234
30301
|
target.agent_name,
|
|
30235
30302
|
)
|
|
30236
|
-
await self.
|
|
30237
|
-
|
|
30238
|
-
|
|
30239
|
-
f"thread {target.thread_id}."
|
|
30240
|
-
)
|
|
30303
|
+
await self._mount_thread_switch_error(
|
|
30304
|
+
f"Could not switch to agent {target.agent_name!r} and resume "
|
|
30305
|
+
f"thread {target.thread_id}."
|
|
30241
30306
|
)
|
|
30242
30307
|
|
|
30243
30308
|
def _open_thread_reference_selector(self, initial_query: str) -> None:
|
|
@@ -31468,11 +31533,9 @@ class DeepAgentsApp(App):
|
|
|
31468
31533
|
await self._restore_cwd_after_failed_thread_switch(prev_cwd)
|
|
31469
31534
|
if isinstance(exc, asyncio.CancelledError):
|
|
31470
31535
|
raise
|
|
31471
|
-
await self.
|
|
31472
|
-
|
|
31473
|
-
|
|
31474
|
-
"Use /threads to try again.",
|
|
31475
|
-
),
|
|
31536
|
+
await self._mount_thread_switch_error(
|
|
31537
|
+
f"Failed to switch to thread {thread_id}: {exc}. "
|
|
31538
|
+
"Use /threads to try again."
|
|
31476
31539
|
)
|
|
31477
31540
|
return
|
|
31478
31541
|
logger.exception("Failed to switch to thread %s", thread_id)
|
|
@@ -31520,7 +31583,7 @@ class DeepAgentsApp(App):
|
|
|
31520
31583
|
if rollback_restore_failed:
|
|
31521
31584
|
error_message += " Previous thread history could not be restored."
|
|
31522
31585
|
error_message += " Use /threads to try again."
|
|
31523
|
-
await self.
|
|
31586
|
+
await self._mount_thread_switch_error(error_message)
|
|
31524
31587
|
finally:
|
|
31525
31588
|
if self._chat_input:
|
|
31526
31589
|
self._chat_input.set_cursor_active(active=not self._agent_running)
|
|
@@ -31949,9 +32012,16 @@ class DeepAgentsApp(App):
|
|
|
31949
32012
|
except Exception as exc:
|
|
31950
32013
|
logger.exception("Failed to resolve model metadata for %s", display)
|
|
31951
32014
|
if from_resume:
|
|
31952
|
-
|
|
31953
|
-
|
|
31954
|
-
)
|
|
32015
|
+
from langgraph_sdk.errors import ConflictError
|
|
32016
|
+
|
|
32017
|
+
if isinstance(exc, ConflictError):
|
|
32018
|
+
await self._mount_message(
|
|
32019
|
+
ErrorMessage(_build_resume_workspace_error_body(exc))
|
|
32020
|
+
)
|
|
32021
|
+
else:
|
|
32022
|
+
await self._mount_resume_adoption_failure(
|
|
32023
|
+
display, "the model could not be initialized"
|
|
32024
|
+
)
|
|
31955
32025
|
else:
|
|
31956
32026
|
await self._mount_message(
|
|
31957
32027
|
ErrorMessage(_build_model_switch_error_body(exc)),
|
|
@@ -19,6 +19,16 @@ Screen {
|
|
|
19
19
|
visibility: hidden;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
#cache-expired-banner {
|
|
23
|
+
display: none;
|
|
24
|
+
height: 1;
|
|
25
|
+
width: 100%;
|
|
26
|
+
background: $error;
|
|
27
|
+
color: $text;
|
|
28
|
+
text-align: center;
|
|
29
|
+
text-style: bold;
|
|
30
|
+
}
|
|
31
|
+
|
|
22
32
|
/* Main content goes on base layer by default */
|
|
23
33
|
|
|
24
34
|
.message-timestamp-footer {
|
|
@@ -71,6 +71,7 @@ class SlashCommand:
|
|
|
71
71
|
description=self.description,
|
|
72
72
|
hidden_keywords=self.hidden_keywords,
|
|
73
73
|
argument_hint=self.argument_hint,
|
|
74
|
+
aliases=self.aliases,
|
|
74
75
|
)
|
|
75
76
|
|
|
76
77
|
|
|
@@ -254,6 +255,7 @@ COMMANDS: tuple[SlashCommand, ...] = (
|
|
|
254
255
|
bypass_tier=BypassTier.IMMEDIATE_UI,
|
|
255
256
|
hidden_keywords="continue history sessions resume back previous",
|
|
256
257
|
argument_hint="[-r [ID]]",
|
|
258
|
+
aliases=("/resume",),
|
|
257
259
|
),
|
|
258
260
|
SlashCommand(
|
|
259
261
|
name="/trace",
|
|
@@ -482,6 +484,9 @@ class CommandEntry(NamedTuple):
|
|
|
482
484
|
(e.g. `/skill:my-plugin:review`). Falls back to `name` when empty.
|
|
483
485
|
"""
|
|
484
486
|
|
|
487
|
+
aliases: tuple[str, ...] = ()
|
|
488
|
+
"""Alternative command names used for autocomplete ranking."""
|
|
489
|
+
|
|
485
490
|
def label(self) -> str:
|
|
486
491
|
"""Return the popup label, preferring `display_name` over `name`.
|
|
487
492
|
|
{deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/configuration/interpreter.py
RENAMED
|
@@ -6,7 +6,10 @@ from dataclasses import dataclass
|
|
|
6
6
|
from typing import TYPE_CHECKING, cast
|
|
7
7
|
|
|
8
8
|
from deepagents_code.config_manifest import _emit_ranked_diagnostics, get_option
|
|
9
|
-
from deepagents_code.configuration.resolver import
|
|
9
|
+
from deepagents_code.configuration.resolver import (
|
|
10
|
+
CLI_RANK,
|
|
11
|
+
get_config_resolver,
|
|
12
|
+
)
|
|
10
13
|
|
|
11
14
|
if TYPE_CHECKING:
|
|
12
15
|
from collections.abc import Mapping
|
|
@@ -77,6 +80,12 @@ class InterpreterConfig:
|
|
|
77
80
|
"""
|
|
78
81
|
values = _resolved_values(resolver or get_config_resolver())
|
|
79
82
|
resolved_ptc = cast("str | bool | list[str]", values["interpreter.ptc"].value)
|
|
83
|
+
ptc_policy = values["interpreter.ptc"]
|
|
84
|
+
acknowledgement = values["interpreter.ptc_acknowledge_unsafe"]
|
|
85
|
+
if any(rank < CLI_RANK for rank in ptc_policy.ranks):
|
|
86
|
+
ptc = None
|
|
87
|
+
if any(rank < CLI_RANK for rank in acknowledgement.ranks):
|
|
88
|
+
ptc_acknowledge_unsafe = False
|
|
80
89
|
return cls(
|
|
81
90
|
timeout_seconds=cast("float", values["interpreter.timeout_seconds"].value),
|
|
82
91
|
memory_limit_mb=cast("int", values["interpreter.memory_limit_mb"].value),
|
|
@@ -1027,7 +1027,7 @@ Keep in sync with `[project.optional-dependencies]` in `pyproject.toml`.
|
|
|
1027
1027
|
"""
|
|
1028
1028
|
|
|
1029
1029
|
SANDBOX_EXTRAS: frozenset[str] = frozenset(
|
|
1030
|
-
{"agentcore", "daytona", "modal", "runloop", "vercel"}
|
|
1030
|
+
{"agentcore", "daytona", "modal", "openshell", "runloop", "vercel"}
|
|
1031
1031
|
)
|
|
1032
1032
|
"""Optional extras that add sandbox integrations."""
|
|
1033
1033
|
|
{deepagents_code-0.1.84 → deepagents_code-0.1.86}/deepagents_code/integrations/sandbox_factory.py
RENAMED
|
@@ -99,9 +99,9 @@ def create_sandbox(
|
|
|
99
99
|
|
|
100
100
|
Args:
|
|
101
101
|
provider: Sandbox provider name. Built-ins (`'agentcore'`, `'daytona'`,
|
|
102
|
-
`'langsmith'`, `'modal'`, `'runloop'`, `'vercel'`),
|
|
103
|
-
providers, and config-declared providers are all
|
|
104
|
-
the registry.
|
|
102
|
+
`'langsmith'`, `'modal'`, `'openshell'`, `'runloop'`, `'vercel'`),
|
|
103
|
+
entry-point providers, and config-declared providers are all
|
|
104
|
+
resolved through the registry.
|
|
105
105
|
sandbox_id: Optional existing sandbox ID to reuse
|
|
106
106
|
snapshot_name: Optional sandbox snapshot name to use or create.
|
|
107
107
|
Honored by providers whose metadata sets `supports_snapshot_name`
|
|
@@ -1365,6 +1365,113 @@ class _VercelProvider(SandboxProvider):
|
|
|
1365
1365
|
raise RuntimeError(msg) from exc
|
|
1366
1366
|
|
|
1367
1367
|
|
|
1368
|
+
_OPENSHELL_DEFAULT_WORKSPACE = "default"
|
|
1369
|
+
"""Workspace the OpenShell CLI uses when `OPENSHELL_WORKSPACE` is unset."""
|
|
1370
|
+
|
|
1371
|
+
|
|
1372
|
+
class _OpenShellProvider(SandboxProvider):
|
|
1373
|
+
"""NVIDIA OpenShell sandbox provider, bound to the active gateway.
|
|
1374
|
+
|
|
1375
|
+
Credentials come from the OpenShell CLI's on-disk gateway state, so no
|
|
1376
|
+
token is read here. `OPENSHELL_GATEWAY` and `OPENSHELL_WORKSPACE` select
|
|
1377
|
+
the gateway and workspace, as they do for the CLI.
|
|
1378
|
+
"""
|
|
1379
|
+
|
|
1380
|
+
def __init__(self) -> None:
|
|
1381
|
+
"""Connect to the active OpenShell gateway.
|
|
1382
|
+
|
|
1383
|
+
Raises:
|
|
1384
|
+
RuntimeError: If no gateway is configured or it cannot be reached.
|
|
1385
|
+
"""
|
|
1386
|
+
openshell = _import_provider_module(
|
|
1387
|
+
"openshell",
|
|
1388
|
+
provider="openshell",
|
|
1389
|
+
package="langchain-nvidia-openshell",
|
|
1390
|
+
)
|
|
1391
|
+
|
|
1392
|
+
from deepagents_code.model_config import resolve_env_var
|
|
1393
|
+
|
|
1394
|
+
try:
|
|
1395
|
+
self._client = openshell.SandboxClient.from_active_cluster(
|
|
1396
|
+
cluster=resolve_env_var("OPENSHELL_GATEWAY")
|
|
1397
|
+
)
|
|
1398
|
+
except Exception as exc: # OpenShell SDK exception types vary by version
|
|
1399
|
+
# Generic message avoids leaking gateway auth state; chain keeps cause.
|
|
1400
|
+
msg = (
|
|
1401
|
+
"Failed to connect to the active OpenShell gateway. Run "
|
|
1402
|
+
"`openshell gateway select` or set OPENSHELL_GATEWAY."
|
|
1403
|
+
)
|
|
1404
|
+
raise RuntimeError(msg) from exc
|
|
1405
|
+
self._workspace = (
|
|
1406
|
+
resolve_env_var("OPENSHELL_WORKSPACE") or _OPENSHELL_DEFAULT_WORKSPACE
|
|
1407
|
+
)
|
|
1408
|
+
self._names: dict[str, str] = {}
|
|
1409
|
+
"""Sandbox name by id; the SDK deletes by name, callers delete by id."""
|
|
1410
|
+
|
|
1411
|
+
def get_or_create(
|
|
1412
|
+
self,
|
|
1413
|
+
*,
|
|
1414
|
+
sandbox_id: str | None = None,
|
|
1415
|
+
timeout: int = 180,
|
|
1416
|
+
**kwargs: Any, # noqa: ARG002
|
|
1417
|
+
) -> SandboxBackendProtocol:
|
|
1418
|
+
"""Attach to an OpenShell sandbox by name, or create one.
|
|
1419
|
+
|
|
1420
|
+
Args:
|
|
1421
|
+
sandbox_id: Existing sandbox name, as the OpenShell CLI shows it.
|
|
1422
|
+
timeout: Seconds to wait for a new sandbox to become ready.
|
|
1423
|
+
**kwargs: Unused.
|
|
1424
|
+
|
|
1425
|
+
Returns:
|
|
1426
|
+
`OpenShellSandbox` instance.
|
|
1427
|
+
"""
|
|
1428
|
+
backend = _import_provider_module(
|
|
1429
|
+
"langchain_nvidia_openshell",
|
|
1430
|
+
provider="openshell",
|
|
1431
|
+
package="langchain-nvidia-openshell",
|
|
1432
|
+
)
|
|
1433
|
+
session = self._attach(sandbox_id) if sandbox_id else self._create(timeout)
|
|
1434
|
+
self._names[session.id] = session.sandbox.name
|
|
1435
|
+
return backend.OpenShellSandbox(sandbox=session)
|
|
1436
|
+
|
|
1437
|
+
def delete(self, *, sandbox_id: str, **kwargs: Any) -> None: # noqa: ARG002
|
|
1438
|
+
"""Delete an OpenShell sandbox by id, or by name if it was not created here."""
|
|
1439
|
+
name = self._names.pop(sandbox_id, sandbox_id)
|
|
1440
|
+
self._client.delete(name, workspace=self._workspace, allow_missing=True)
|
|
1441
|
+
|
|
1442
|
+
def _attach(self, name: str) -> Any: # noqa: ANN401 # `openshell.SandboxSession`; SDK is optional
|
|
1443
|
+
try:
|
|
1444
|
+
return self._client.get_session(name, workspace=self._workspace)
|
|
1445
|
+
except Exception as exc:
|
|
1446
|
+
code = getattr(exc, "code", None)
|
|
1447
|
+
if callable(code) and getattr(code(), "name", None) == "NOT_FOUND":
|
|
1448
|
+
raise SandboxNotFoundError(name) from exc
|
|
1449
|
+
raise
|
|
1450
|
+
|
|
1451
|
+
def _create(self, timeout: int) -> Any: # noqa: ANN401 # `openshell.SandboxSession`; SDK is optional
|
|
1452
|
+
session = self._client.create_session(workspace=self._workspace)
|
|
1453
|
+
name = session.sandbox.name
|
|
1454
|
+
try:
|
|
1455
|
+
self._client.wait_ready(
|
|
1456
|
+
name, workspace=self._workspace, timeout_seconds=timeout
|
|
1457
|
+
)
|
|
1458
|
+
except Exception as exc:
|
|
1459
|
+
self._discard(name)
|
|
1460
|
+
msg = (
|
|
1461
|
+
f"OpenShell sandbox {name} did not become ready within "
|
|
1462
|
+
f"{timeout} seconds."
|
|
1463
|
+
)
|
|
1464
|
+
raise RuntimeError(msg) from exc
|
|
1465
|
+
return session
|
|
1466
|
+
|
|
1467
|
+
def _discard(self, name: str) -> None:
|
|
1468
|
+
"""Delete a sandbox that failed to start; `create_sandbox` never saw it."""
|
|
1469
|
+
try:
|
|
1470
|
+
self._client.delete(name, workspace=self._workspace, allow_missing=True)
|
|
1471
|
+
except Exception: # Cleanup must not mask the startup failure
|
|
1472
|
+
logger.warning("Could not delete OpenShell sandbox %s", name, exc_info=True)
|
|
1473
|
+
|
|
1474
|
+
|
|
1368
1475
|
def _get_provider(
|
|
1369
1476
|
provider_name: str,
|
|
1370
1477
|
registry: SandboxRegistry | None = None,
|