deepagents-code 0.1.66__tar.gz → 0.1.67__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.66 → deepagents_code-0.1.67}/.gitignore +1 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/CHANGELOG.md +18 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/DEVELOPMENT.md +2 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/PKG-INFO +6 -6
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_build_info.py +1 -1
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_constants.py +15 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_env_vars.py +14 -3
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_server_config.py +189 -6
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_version.py +1 -1
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/agent.py +68 -39
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/app.py +784 -271
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/auto_mode.py +30 -8
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/client/launch/server.py +38 -14
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/client/launch/server_manager.py +2 -2
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/client/remote_client.py +70 -13
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/config.py +1164 -399
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/config_manifest.py +133 -19
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/configurable_model.py +75 -47
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/configuration/providers.py +56 -13
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/configuration/service.py +4 -1
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/goal_rubric.py +10 -1
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/integrations/sandbox_factory.py +251 -51
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/mcp_config.py +4 -2
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/model_config.py +108 -34
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/offload_api.py +103 -18
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/offload_middleware.py +29 -12
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/server_graph.py +352 -92
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/sessions.py +21 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tools.py +119 -10
- deepagents_code-0.1.67/deepagents_code/tui/modals/resume_blocked.py +184 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/message_store.py +24 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/model_selector.py +1 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/update_check.py +8 -2
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/workspace.py +132 -20
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/pyproject.toml +5 -5
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/scripts/check_process_cwd.py +9 -4
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/conftest.py +3 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_agent.py +150 -32
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_app.py +978 -72
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_auto_mode.py +48 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_config.py +1350 -172
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_config_manifest.py +194 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_configurable_model.py +26 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_configuration_resolution.py +4 -0
- deepagents_code-0.1.67/tests/unit_tests/test_extra_skills_dirs.py +34 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_model_config.py +95 -3
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_offload_api.py +343 -8
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_reload.py +40 -17
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_remote_client.py +60 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_sandbox_factory.py +499 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_server_config.py +62 -0
- deepagents_code-0.1.67/tests/unit_tests/test_server_graph.py +1162 -0
- deepagents_code-0.1.67/tests/unit_tests/test_server_helpers.py +279 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_server_manager.py +52 -0
- deepagents_code-0.1.67/tests/unit_tests/test_server_tracing.py +193 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_sessions.py +28 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_update_check.py +20 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_workspace.py +91 -6
- deepagents_code-0.1.67/tests/unit_tests/tools/test_web_search.py +81 -0
- deepagents_code-0.1.67/tests/unit_tests/tui/modals/test_resume_blocked.py +61 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_auth_widgets.py +4 -3
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_message_store.py +48 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_thread_selector.py +22 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/uv.lock +87 -80
- deepagents_code-0.1.66/tests/unit_tests/test_server_graph.py +0 -404
- deepagents_code-0.1.66/tests/unit_tests/test_server_helpers.py +0 -125
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/AGENTS.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/ARCHITECTURE.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/COMMANDS.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/EXTENSIONS.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/HOOKS.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/LICENSE +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/Makefile +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/PRICING.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/README.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/THREAT_MODEL.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/__main__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_ask_user_types.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_cli_context.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_content_blocks.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_debug.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_debug_buffer.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_dep_floor_check.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_fake_models.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_git.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_glm_5p2_profile.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_home_error.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_invocation.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_markdown.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_paths.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_repository_bounds.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_reserved_names.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_session_stats.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_startup_error.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_terminal_stderr.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_testing_models.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_textual_patches.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_tool_stream.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/_tracing.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/acp.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/app.tcss +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/approval_mode.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/ask_user.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/auth_display.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/auth_store.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/built_in_skills/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/built_in_skills/deepagents-thread-inspector/SKILL.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/built_in_skills/deepagents-thread-inspector/scripts/inspect_sessions.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/bundled_prices.README.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/bundled_prices.json +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/client/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/client/commands/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/client/commands/auth.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/client/commands/config.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/client/commands/extras.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/client/commands/mcp.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/client/commands/tools.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/client/launch/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/client/non_interactive.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/clipboard.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/cold_cache.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/command_registry.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/configuration/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/configuration/interpreter.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/configuration/paths.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/configuration/provider.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/configuration/resolver.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/configuration/theme_resolution.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/configuration/types.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/configuration/writer.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/context_doctor.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/cost_tracking.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/default_agent_prompt.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/diff_utils.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/doctor.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/editor.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/event_bus.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/extensions/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/extensions/api.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/extensions/discovery.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/extensions/hosting.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/extensions/loader.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/extensions/registry.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/extensions/runtime.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/extensions/settings.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/extensions/trust.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/extras_info.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/file_ops.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/formatting.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/goal_state_limits.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/goal_state_notice.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/goal_tools.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/capabilities.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/client.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/client_lifecycle.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/context.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/engine.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/env.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/envelope.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/interrupt.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/legacy.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/loading.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/manager.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/migration.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/models/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/models/adapters.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/models/config.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/models/domain.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/models/transport.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/models/wire.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/permissions.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/presenter.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/projection.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/reducer.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/runner.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/runtime.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/server_middleware.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/snapshot.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/tools.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/transcript.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/trust.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/hooks/validate_terminal_sequence.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/input.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/integrations/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/integrations/openai_codex.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/integrations/sandbox_config.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/integrations/sandbox_provider.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/integrations/sandbox_registry.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/json_types.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/local_context.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/main.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/managed_tools.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/mcp_auth.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/mcp_disabled.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/mcp_login_service.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/mcp_providers/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/mcp_providers/_registry.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/mcp_providers/base.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/mcp_providers/github.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/mcp_providers/slack.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/mcp_tools.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/media_utils.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/memory_guard.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/model_retry.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/notifications.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/offload.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/onboarding.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/output.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/paste_collapse.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/plugins/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/plugins/_json.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/plugins/adapters/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/plugins/adapters/hooks.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/plugins/adapters/mcp.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/plugins/adapters/skills.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/plugins/adapters/skills_middleware.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/plugins/commands_cli.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/plugins/discovery.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/plugins/manifest.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/plugins/marketplace.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/plugins/models.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/plugins/store.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/plugins/substitution.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/project_utils.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/py.typed +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/reasoning_effort.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/reliable_rubric.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/resume_state.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/skills/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/skills/commands.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/skills/invocation.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/skills/load.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/skills/merge.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/skills/trust.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/state_migration.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/subagents.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/system_prompt.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/terminal_capabilities.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/terminal_escape.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/theme.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tool_catalog.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tool_display.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/key_hints.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/modals/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/modals/cold_cache.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/modals/model_switch.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/modals/plugin_manager/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/modals/plugin_manager/content.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/modals/plugin_manager/models.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/modals/plugin_manager/plugin_manager.tcss +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/modals/plugin_manager/state.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/modals/plugin_manager/tabs.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/modals/prompt_clipboard.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/modals/prompt_clipboard.tcss +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/modals/resume_compact.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/screens/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/textual_adapter.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/_copy_spans.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/_inline_prompt.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/_js_eval_display.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/_links.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/_paste_textarea.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/agent_selector.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/approval.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/ask_user.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/auth.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/auto_mode_notice.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/autocomplete.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/chat_input.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/codex_auth.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/context_usage.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/cwd_switch.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/debug_console.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/diff.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/effort_selector.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/goal_review.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/goal_status.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/history.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/install_confirm.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/launch_init.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/loading.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/mcp_login.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/mcp_reconnect.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/mcp_viewer.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/messages.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/notification_center.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/notification_detail.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/notification_settings.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/prompt_search.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/restart_prompt.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/skill_trust.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/startup_tip.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/status.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/subagent_panel.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/theme_selector.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/thread_agent_switch.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/thread_selector.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/tool_renderers.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/tool_widgets.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/update_available.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/update_confirm.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/update_progress.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/welcome.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/tui/widgets/yolo_mode_notice.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/ui.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/deepagents_code/unicode_security.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/examples/extensions/memory_store.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/hatch_build.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/images/model-stream-retry.png +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/images/tui.png +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/scripts/check_imports.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/scripts/debug_server.sh +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/scripts/generate_commands_catalog.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/scripts/install.sh +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/README.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/integration_tests/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/integration_tests/benchmarks/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/integration_tests/benchmarks/test_local_context_benchmarks.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/integration_tests/conftest.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/integration_tests/test_acp_mode.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/integration_tests/test_auto_approve_remote.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/integration_tests/test_compact_resume.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/integration_tests/test_offload_server_side.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/integration_tests/test_pending_work_recovery.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/integration_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/integration_tests/test_sandbox_operations.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/client/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/client/commands/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/client/commands/test_auth.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/client/commands/test_extras.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/client/commands/test_mcp.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/client/commands/test_tools.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/data/coding_agent_v1_validator.json +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/hooks/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/hooks/models/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/hooks/models/test_models.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/hooks/test_client_lifecycle.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/hooks/test_configuration.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/hooks/test_engine.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/hooks/test_execution.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/hooks/test_manager.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/hooks/test_presenter.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/hooks/test_server_lifecycle.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/hooks/test_transcript.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/hooks/test_trust.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/plugins/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/plugins/test_marketplace.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/plugins/test_plugin_hooks.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/plugins/test_plugins_p0.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/skills/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/skills/test_commands.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/skills/test_load.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/skills/test_merge.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/skills/test_skill_trust.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/skills/test_skills_json.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/skills/test_thread_inspector.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/smoke_tests/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/smoke_tests/conftest.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/smoke_tests/snapshots/system_prompt_interactive_local.md +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/smoke_tests/test_system_prompt.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test__tool_stream.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_acp.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_agent_friendly.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_approval_mode.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_args.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_ask_user_middleware.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_ask_user_types.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_auth_display.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_auth_store.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_auth_web_search_restart.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_charset.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_cli_provider.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_clipboard.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_coding_agent_metadata.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_cold_cache.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_command_registry.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_compact_tool.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_configuration.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_configuration_resolver.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_context_doctor.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_cost_tracking.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_cursor_style.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_debug.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_debug_buffer.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_debug_console.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_dep_floor_check.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_diff_utils.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_doctor.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_editor.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_end_to_end.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_env_vars.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_event_bus.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_exception_handling.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_extension_api.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_extension_cli_trust.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_extension_config_manifest.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_extension_discovery.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_extension_display.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_extension_host_runtime.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_extension_hosting.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_extension_runtime.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_extras_info.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_file_ops.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_formatting.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_git.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_glm_5p2_profile.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_goal_criteria_client.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_goal_rubric.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_goal_state_limits.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_goal_state_notice.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_goal_state_persistence.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_goal_tools.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_hatch_build.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_hooks.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_imports.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_input_parsing.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_install_command.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_install_script.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_invocation.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_json_types.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_local_context.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_main.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_main_acp_mode.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_main_args.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_managed_tools.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_mcp_auth.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_mcp_config.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_mcp_disabled.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_mcp_login_service.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_mcp_tools.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_media_utils.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_memory_guard.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_model_retry.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_model_switch.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_non_interactive.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_notifications.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_offload.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_onboarding.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_openai_codex_integration.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_output.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_paths.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_process_cwd_check.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_reasoning_effort.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_reliable_rubric.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_repository_bounds.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_resume_compaction_recovery.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_resume_state.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_rubric_cli.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_sandbox_config.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_sandbox_provider.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_sandbox_registry.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_server.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_session_stats.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_shell_allow_list.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_skill_invocation.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_startup_fast_paths.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_state_migration.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_subagents.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_terminal_capabilities.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_terminal_escape.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_terminal_stderr.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_textual_patches.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_theme.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_threads_resume.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_tool_catalog.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_tool_display.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_tracing.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_tracing_replicas.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_transcript_virtualization.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_ui.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_unicode_security.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_uninstall_command.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/test_version.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tools/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tools/test_current_thread.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tools/test_fetch_url.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tools/test_tool_arg_schemas.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/modals/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/modals/plugin_manager/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/modals/plugin_manager/test_structure.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/modals/test_cold_cache.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/modals/test_model_switch.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/modals/test_prompt_clipboard.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/test_key_hints.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/test_modal_footer_layout.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/test_subagent_stream.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/test_textual_adapter.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/__init__.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_agent_selector.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_approval.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_ask_user.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_auto_mode_notice.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_autocomplete.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_chat_input.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_copy_spans.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_cwd_switch.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_diff.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_goal_review.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_history.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_inline_prompt.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_install_confirm.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_launch_init.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_links.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_loading.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_mcp_login_modal.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_mcp_reconnect.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_mcp_viewer.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_messages.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_model_selector.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_notification_center.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_notification_detail.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_notification_settings.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_prompt_search.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_restart_prompt.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_skill_trust_screen.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_startup_tip.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_status.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_subagent_panel.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_thread_agent_switch.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_tool_renderers.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_update_available.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_update_confirm.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_update_progress.py +0 -0
- {deepagents_code-0.1.66 → deepagents_code-0.1.67}/tests/unit_tests/tui/widgets/test_welcome.py +0 -0
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
# Deep Agents Code Changelog
|
|
4
4
|
|
|
5
|
+
## [0.1.67](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.66...deepagents-code==0.1.67) (2026-09-09)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
- Added `GPT-6 Astra` support ([#6141](https://github.com/langchain-ai/deepagents/issues/6141)).
|
|
10
|
+
- Reuses the server across workspace switches ([#6152](https://github.com/langchain-ai/deepagents/issues/6152)).
|
|
11
|
+
- Limits thread resume age ([#6068](https://github.com/langchain-ai/deepagents/issues/6068)).
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
- Improved workspace isolation by resolving project policy per workspace, scoping project dotenv to workspaces, and isolating LangSmith auth and workspace tracing ([#6064](https://github.com/langchain-ai/deepagents/issues/6064), [#5980](https://github.com/langchain-ai/deepagents/issues/5980), [#6061](https://github.com/langchain-ai/deepagents/issues/6061)).
|
|
16
|
+
- Improved transcript tail reconciliation by bounding and serializing reconciliation work ([#6057](https://github.com/langchain-ai/deepagents/issues/6057), [#6143](https://github.com/langchain-ai/deepagents/issues/6143)).
|
|
17
|
+
- Refuses a second sandbox workspace and moves sandbox creation and entry off the guarded event loop ([#5979](https://github.com/langchain-ai/deepagents/issues/5979), [#6017](https://github.com/langchain-ai/deepagents/issues/6017)).
|
|
18
|
+
- Surfaces stale updates in-session ([#6063](https://github.com/langchain-ai/deepagents/issues/6063)).
|
|
19
|
+
- Surfaces the LangSmith credential in `dcode config` ([#6083](https://github.com/langchain-ai/deepagents/issues/6083)).
|
|
20
|
+
- Offloads server config imports ([#6089](https://github.com/langchain-ai/deepagents/issues/6089)).
|
|
21
|
+
- Correctly parses extra skill directories with the platform separator ([#6151](https://github.com/langchain-ai/deepagents/issues/6151)).
|
|
22
|
+
|
|
5
23
|
## [0.1.66](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.65...deepagents-code==0.1.66) (2026-09-03)
|
|
6
24
|
|
|
7
25
|
### Features
|
|
@@ -89,6 +89,8 @@ Set the same override for [local dev installs](#local-dev-installs) (`dcode-dev`
|
|
|
89
89
|
|
|
90
90
|
When onboarding a new tracing project to Engine, capture the nature of that project first: a production/GA app warrants high-priority alerts, while a staging or active-dev project should use looser thresholds (or stay off Engine) so it does not generate false positives.
|
|
91
91
|
|
|
92
|
+
A server keeps the first workspace's tracing configuration for its lifetime. Workspaces sharing that server must use matching tracing credentials, projects, endpoints, profile selectors, tracing flags, and redaction policy. A conflicting workspace is refused before its settings can affect cached or concurrent runs; start a separate server for that workspace. Restart the server to change its tracing configuration.
|
|
93
|
+
|
|
92
94
|
## Debugging
|
|
93
95
|
|
|
94
96
|
Deep Agents Code runs as two processes: the **Textual TUI** you interact with, and a **`langgraph dev` subprocess** that hosts the agent graph. Each writes its own log, and a single switch turns both on:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: deepagents-code
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.67
|
|
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
|
|
@@ -37,14 +37,14 @@ Requires-Dist: httpx<1.0.0,>=0.28.1
|
|
|
37
37
|
Requires-Dist: langchain-anthropic<2.0.0,>=1.7.1
|
|
38
38
|
Requires-Dist: langchain-google-genai<5.0.0,>=4.4.0
|
|
39
39
|
Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.3.2
|
|
40
|
-
Requires-Dist: langchain-openai<2.0.0,>=1.6.
|
|
40
|
+
Requires-Dist: langchain-openai<2.0.0,>=1.6.1
|
|
41
41
|
Requires-Dist: langchain-quickjs<0.4.0,>=0.3.4
|
|
42
42
|
Requires-Dist: langchain<2.0.0,>=1.4.0
|
|
43
43
|
Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.1.1
|
|
44
44
|
Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.31
|
|
45
|
-
Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.
|
|
45
|
+
Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.34.0
|
|
46
46
|
Requires-Dist: langgraph-sdk<1.0.0,>=0.4.4
|
|
47
|
-
Requires-Dist: langsmith[sandbox]>=0.12.
|
|
47
|
+
Requires-Dist: langsmith[sandbox]>=0.12.2
|
|
48
48
|
Requires-Dist: markdownify<2.0.0,>=1.2.3
|
|
49
49
|
Requires-Dist: mcp<2.0.0,>=1.28.1
|
|
50
50
|
Requires-Dist: packaging>=26.2
|
|
@@ -82,7 +82,7 @@ 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
83
|
Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.3; 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.6.
|
|
85
|
+
Requires-Dist: langchain-openai<2.0.0,>=1.6.1; extra == 'all-providers'
|
|
86
86
|
Requires-Dist: langchain-openrouter<2.0.0,>=0.2.8; 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'
|
|
@@ -132,7 +132,7 @@ Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.3; extra == 'nvidia'
|
|
|
132
132
|
Provides-Extra: ollama
|
|
133
133
|
Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'ollama'
|
|
134
134
|
Provides-Extra: openai
|
|
135
|
-
Requires-Dist: langchain-openai<2.0.0,>=1.6.
|
|
135
|
+
Requires-Dist: langchain-openai<2.0.0,>=1.6.1; extra == 'openai'
|
|
136
136
|
Provides-Extra: openrouter
|
|
137
137
|
Requires-Dist: langchain-openrouter<2.0.0,>=0.2.8; extra == 'openrouter'
|
|
138
138
|
Provides-Extra: perplexity
|
|
@@ -44,6 +44,21 @@ is the drift guard that fails when the two diverge.
|
|
|
44
44
|
FIREWORKS_PROVIDER_ID_PREFIX: Final[str] = "accounts/fireworks/"
|
|
45
45
|
"""Prefix used to infer Fireworks from fully-qualified IDs."""
|
|
46
46
|
|
|
47
|
+
LANGSMITH_API_KEY_ENV: Final[str] = "LANGSMITH_API_KEY"
|
|
48
|
+
"""Primary env var the LangSmith SDK reads for its API key."""
|
|
49
|
+
|
|
50
|
+
LANGSMITH_API_KEY_FALLBACK_ENV_VARS: Final[tuple[str, ...]] = ("LANGCHAIN_API_KEY",)
|
|
51
|
+
"""Legacy env vars the LangSmith SDK accepts after `LANGSMITH_API_KEY_ENV`."""
|
|
52
|
+
|
|
53
|
+
LANGSMITH_API_KEY_ENV_VARS: Final[tuple[str, ...]] = (
|
|
54
|
+
LANGSMITH_API_KEY_ENV,
|
|
55
|
+
*LANGSMITH_API_KEY_FALLBACK_ENV_VARS,
|
|
56
|
+
)
|
|
57
|
+
"""Env vars LangSmith reads for its API key, in precedence order.
|
|
58
|
+
|
|
59
|
+
Mirrors the SDK's own `LANGSMITH_`-then-`LANGCHAIN_` lookup.
|
|
60
|
+
"""
|
|
61
|
+
|
|
47
62
|
FIREWORKS_MODEL_ID_PREFIXES: Final[tuple[str, ...]] = (
|
|
48
63
|
"accounts/fireworks/models/",
|
|
49
64
|
"accounts/fireworks/routers/",
|
|
@@ -24,6 +24,10 @@ ever renamed, only the value here changes.
|
|
|
24
24
|
from __future__ import annotations
|
|
25
25
|
|
|
26
26
|
import os
|
|
27
|
+
from typing import TYPE_CHECKING
|
|
28
|
+
|
|
29
|
+
if TYPE_CHECKING:
|
|
30
|
+
from collections.abc import Mapping
|
|
27
31
|
|
|
28
32
|
# ---------------------------------------------------------------------------
|
|
29
33
|
# Constants — import these instead of bare string literals.
|
|
@@ -285,7 +289,7 @@ EXTERNAL_EVENT_SOCKET_PATH = "DEEPAGENTS_CODE_EXTERNAL_EVENT_SOCKET_PATH"
|
|
|
285
289
|
"""Override the default Unix-socket path for the external event listener."""
|
|
286
290
|
|
|
287
291
|
EXTRA_SKILLS_DIRS = "DEEPAGENTS_CODE_EXTRA_SKILLS_DIRS"
|
|
288
|
-
"""
|
|
292
|
+
"""Paths added to the skill containment allowlist, split with `os.pathsep`."""
|
|
289
293
|
|
|
290
294
|
GOAL_AUTO_ACCEPT_CRITERIA = "DEEPAGENTS_CODE_GOAL_AUTO_ACCEPT_CRITERIA"
|
|
291
295
|
"""Apply generated goal criteria automatically in Auto mode.
|
|
@@ -694,7 +698,12 @@ def classify_env_bool(raw: str) -> bool | None:
|
|
|
694
698
|
return None
|
|
695
699
|
|
|
696
700
|
|
|
697
|
-
def is_env_truthy(
|
|
701
|
+
def is_env_truthy(
|
|
702
|
+
name: str,
|
|
703
|
+
*,
|
|
704
|
+
default: bool = False,
|
|
705
|
+
environ: Mapping[str, str] | None = None,
|
|
706
|
+
) -> bool:
|
|
698
707
|
"""Return whether env var *name* is set to a recognizably truthy value.
|
|
699
708
|
|
|
700
709
|
Unlike `bool(os.environ.get(name))`, this does not treat `"0"` or
|
|
@@ -706,12 +715,14 @@ def is_env_truthy(name: str, *, default: bool = False) -> bool:
|
|
|
706
715
|
constant from this module).
|
|
707
716
|
default: Value returned when the variable is unset OR set to a
|
|
708
717
|
value that is neither recognizably truthy nor falsy.
|
|
718
|
+
environ: Environment to read, defaulting to the process environment.
|
|
719
|
+
Pass a workspace snapshot to keep the read scoped.
|
|
709
720
|
|
|
710
721
|
Returns:
|
|
711
722
|
`True` for `1`/`true`/`yes`/`on` (case-insensitive), `False` for
|
|
712
723
|
`0`/`false`/`no`/`off`/empty string, or `default` otherwise.
|
|
713
724
|
"""
|
|
714
|
-
raw = os.environ.get(name)
|
|
725
|
+
raw = (os.environ if environ is None else environ).get(name)
|
|
715
726
|
if raw is None:
|
|
716
727
|
return default
|
|
717
728
|
classified = classify_env_bool(raw)
|
|
@@ -12,8 +12,9 @@ with `from_env()`.
|
|
|
12
12
|
from __future__ import annotations
|
|
13
13
|
|
|
14
14
|
import json
|
|
15
|
+
import logging
|
|
15
16
|
import os
|
|
16
|
-
from dataclasses import dataclass
|
|
17
|
+
from dataclasses import dataclass, replace
|
|
17
18
|
from pathlib import Path
|
|
18
19
|
from typing import TYPE_CHECKING, Any, cast
|
|
19
20
|
|
|
@@ -21,10 +22,92 @@ from deepagents_code._constants import DEFAULT_AGENT_NAME as DEFAULT_ASSISTANT_I
|
|
|
21
22
|
from deepagents_code._env_vars import SERVER_ENV_PREFIX
|
|
22
23
|
|
|
23
24
|
if TYPE_CHECKING:
|
|
25
|
+
from collections.abc import Mapping
|
|
26
|
+
|
|
24
27
|
from deepagents import FsToolName
|
|
25
28
|
|
|
26
29
|
from deepagents_code.project_utils import ProjectContext
|
|
27
30
|
|
|
31
|
+
logger = logging.getLogger(__name__)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
SESSION_WORKSPACE_FIELDS = frozenset(
|
|
35
|
+
{
|
|
36
|
+
"allow_fs_tools",
|
|
37
|
+
"assistant_id",
|
|
38
|
+
"auto_approve",
|
|
39
|
+
"enable_ask_user",
|
|
40
|
+
"enable_interpreter",
|
|
41
|
+
"enable_memory",
|
|
42
|
+
"enable_shell",
|
|
43
|
+
"enable_skills",
|
|
44
|
+
"interactive",
|
|
45
|
+
"interpreter_ptc",
|
|
46
|
+
"interpreter_ptc_acknowledge_unsafe",
|
|
47
|
+
"interrupt_shell_only",
|
|
48
|
+
"no_mcp",
|
|
49
|
+
"recursion_limit",
|
|
50
|
+
"sandbox_id",
|
|
51
|
+
"sandbox_snapshot_name",
|
|
52
|
+
"sandbox_type",
|
|
53
|
+
"shell_allow_list",
|
|
54
|
+
}
|
|
55
|
+
)
|
|
56
|
+
"""Policy a managed client may claim for its own command invocation.
|
|
57
|
+
|
|
58
|
+
These come from the client's own CLI flags, so the client already knows them
|
|
59
|
+
and claiming them proves only that both sides agree. Together with
|
|
60
|
+
`PROJECT_WORKSPACE_FIELDS` this must partition `to_workspace_payload()`
|
|
61
|
+
exactly: a payload field in neither set is never verified against a client
|
|
62
|
+
claim and never checked for project drift.
|
|
63
|
+
`test_workspace_claim_partitions_every_policy_field` pins that.
|
|
64
|
+
"""
|
|
65
|
+
PROJECT_WORKSPACE_FIELDS = frozenset(
|
|
66
|
+
{
|
|
67
|
+
"extension_paths",
|
|
68
|
+
"mcp_config_path",
|
|
69
|
+
"sandbox_setup",
|
|
70
|
+
"trust_project_extensions",
|
|
71
|
+
"trust_project_mcp",
|
|
72
|
+
}
|
|
73
|
+
)
|
|
74
|
+
"""Policy the server must resolve per project directory, never accept.
|
|
75
|
+
|
|
76
|
+
Each of these grants code execution scoped to a checkout -- MCP servers,
|
|
77
|
+
sandbox setup commands, Python extensions. A client that could claim them could
|
|
78
|
+
execute one directory's configuration against another directory's trust
|
|
79
|
+
decision.
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def _same_workspace_project(first: str | None, second: str) -> bool:
|
|
84
|
+
"""Whether two paths name the same project directory.
|
|
85
|
+
|
|
86
|
+
Fails closed: an unset launch root, a missing path, or an undecidable
|
|
87
|
+
comparison counts as *different*, so the caller drops project policy rather
|
|
88
|
+
than carrying it across an unverified boundary. `_same_directory` compares
|
|
89
|
+
by device and inode, so a symlinked or differently cased spelling of one
|
|
90
|
+
directory still compares equal.
|
|
91
|
+
|
|
92
|
+
Returns:
|
|
93
|
+
`True` only when both paths name the same directory.
|
|
94
|
+
"""
|
|
95
|
+
if first is None:
|
|
96
|
+
return False
|
|
97
|
+
from deepagents_code._paths import DeepAgentsHomeError, _same_directory
|
|
98
|
+
|
|
99
|
+
try:
|
|
100
|
+
return _same_directory(Path(first), Path(second))
|
|
101
|
+
except DeepAgentsHomeError:
|
|
102
|
+
logger.warning(
|
|
103
|
+
"Could not compare project directories %s and %s; treating as "
|
|
104
|
+
"separate projects, so project-scoped policy will not apply",
|
|
105
|
+
first,
|
|
106
|
+
second,
|
|
107
|
+
exc_info=True,
|
|
108
|
+
)
|
|
109
|
+
return False
|
|
110
|
+
|
|
28
111
|
|
|
29
112
|
def _read_env_bool(suffix: str, *, default: bool = False) -> bool:
|
|
30
113
|
"""Read a `DEEPAGENTS_CODE_SERVER_*` boolean from the environment.
|
|
@@ -452,19 +535,119 @@ class ServerConfig:
|
|
|
452
535
|
"extension_paths": list(self.extension_paths),
|
|
453
536
|
}
|
|
454
537
|
|
|
455
|
-
def
|
|
456
|
-
"""
|
|
538
|
+
def to_session_workspace_claim(self) -> dict[str, Any]:
|
|
539
|
+
"""Return the command-scoped policy a managed client may claim.
|
|
540
|
+
|
|
541
|
+
Returns:
|
|
542
|
+
The session-scoped subset of the workspace policy.
|
|
543
|
+
"""
|
|
544
|
+
return {
|
|
545
|
+
key: value
|
|
546
|
+
for key, value in self.to_workspace_payload().items()
|
|
547
|
+
if key in SESSION_WORKSPACE_FIELDS
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
def to_project_workspace_policy(self) -> dict[str, Any]:
|
|
551
|
+
"""Return policy that must be resolved for each project directory.
|
|
552
|
+
|
|
553
|
+
Returns:
|
|
554
|
+
The project-scoped subset of the workspace policy.
|
|
555
|
+
"""
|
|
556
|
+
return {
|
|
557
|
+
key: value
|
|
558
|
+
for key, value in self.to_workspace_payload().items()
|
|
559
|
+
if key in PROJECT_WORKSPACE_FIELDS
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
def session_workspace_fingerprint(self) -> str:
|
|
563
|
+
"""Fingerprint the exact client-claimable session policy.
|
|
457
564
|
|
|
458
565
|
Returns:
|
|
459
566
|
The canonical SHA-256 fingerprint.
|
|
460
567
|
"""
|
|
461
|
-
import
|
|
568
|
+
from deepagents_code.workspace import canonical_fingerprint
|
|
569
|
+
|
|
570
|
+
return canonical_fingerprint(self.to_session_workspace_claim())
|
|
571
|
+
|
|
572
|
+
def resolve_workspace(
|
|
573
|
+
self,
|
|
574
|
+
cwd: str,
|
|
575
|
+
project_root: str | None,
|
|
576
|
+
) -> ServerConfig:
|
|
577
|
+
"""Resolve directory-bound policy for one server workspace.
|
|
578
|
+
|
|
579
|
+
Project-scoped policy (`PROJECT_WORKSPACE_FIELDS`) is valid only for
|
|
580
|
+
the directory it was resolved against: it came from the launch-time CLI
|
|
581
|
+
and that project's trust decisions. Reusing it for another directory
|
|
582
|
+
would apply one project's MCP servers, sandbox setup, and extensions to
|
|
583
|
+
a different, possibly untrusted, checkout.
|
|
584
|
+
|
|
585
|
+
So the launch project keeps its policy verbatim, and any other project
|
|
586
|
+
starts from nothing: MCP and sandbox setup are *dropped* rather than
|
|
587
|
+
rediscovered, and extension trust is re-read from the trust store for
|
|
588
|
+
that project. `_same_workspace_project` fails closed, so an
|
|
589
|
+
unresolvable path also takes the drop branch.
|
|
590
|
+
|
|
591
|
+
Args:
|
|
592
|
+
cwd: Absolute, canonical working directory for the workspace.
|
|
593
|
+
project_root: Canonical project root, or `None` when the workspace
|
|
594
|
+
has none. The launch cwd uses the server's explicit root when
|
|
595
|
+
configured. Otherwise, extension trust is keyed on `cwd` when
|
|
596
|
+
no root exists.
|
|
597
|
+
|
|
598
|
+
Returns:
|
|
599
|
+
A config whose session policy is unchanged and whose project policy
|
|
600
|
+
is either the launch project's or empty.
|
|
601
|
+
"""
|
|
602
|
+
if self.project_root is not None and _same_workspace_project(self.cwd, cwd):
|
|
603
|
+
project_root = str(Path(self.project_root).expanduser().resolve())
|
|
604
|
+
launch_root = self.project_root or self.cwd
|
|
605
|
+
target_root = project_root or cwd
|
|
606
|
+
if _same_workspace_project(launch_root, target_root):
|
|
607
|
+
return replace(self, cwd=cwd, project_root=project_root)
|
|
608
|
+
from deepagents_code.extensions.trust import is_project_extensions_trusted
|
|
609
|
+
|
|
610
|
+
return replace(
|
|
611
|
+
self,
|
|
612
|
+
cwd=cwd,
|
|
613
|
+
project_root=project_root,
|
|
614
|
+
sandbox_setup=None,
|
|
615
|
+
mcp_config_path=None,
|
|
616
|
+
trust_project_mcp=None,
|
|
617
|
+
trust_project_extensions=is_project_extensions_trusted(target_root),
|
|
618
|
+
extension_paths=(),
|
|
619
|
+
)
|
|
620
|
+
|
|
621
|
+
def preserve_bound_extension_trust(
|
|
622
|
+
self, bound_policy: Mapping[str, object]
|
|
623
|
+
) -> ServerConfig:
|
|
624
|
+
"""Keep an existing thread's extension trust when a new grant appears.
|
|
625
|
+
|
|
626
|
+
Args:
|
|
627
|
+
bound_policy: Server policy persisted when the thread was bound.
|
|
628
|
+
|
|
629
|
+
Returns:
|
|
630
|
+
A config that defers new grants to new threads. Revocations remain
|
|
631
|
+
visible so binding and runtime validation can reject them.
|
|
632
|
+
"""
|
|
633
|
+
if bound_policy.get("trust_project_extensions") is False and (
|
|
634
|
+
self.trust_project_extensions is True
|
|
635
|
+
):
|
|
636
|
+
return replace(self, trust_project_extensions=False)
|
|
637
|
+
return self
|
|
462
638
|
|
|
639
|
+
def workspace_fingerprint(self) -> str:
|
|
640
|
+
"""Fingerprint the resolved runtime config except workspace identity.
|
|
641
|
+
|
|
642
|
+
Returns:
|
|
643
|
+
The canonical SHA-256 fingerprint.
|
|
644
|
+
"""
|
|
463
645
|
values = self.to_env()
|
|
464
646
|
values.pop("CWD")
|
|
465
647
|
values.pop("PROJECT_ROOT")
|
|
466
|
-
|
|
467
|
-
|
|
648
|
+
from deepagents_code.workspace import canonical_fingerprint
|
|
649
|
+
|
|
650
|
+
return canonical_fingerprint(values)
|
|
468
651
|
|
|
469
652
|
def __post_init__(self) -> None:
|
|
470
653
|
"""Normalize fields and validate invariants.
|
|
@@ -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.67" # 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."""
|