deepagents-code 0.1.67__tar.gz → 0.1.69__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.67 → deepagents_code-0.1.69}/CHANGELOG.md +36 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/PKG-INFO +11 -11
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_build_info.py +1 -1
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_env_vars.py +3 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_session_stats.py +201 -10
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_version.py +1 -1
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/app.py +237 -73
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/auto_mode.py +17 -1
- deepagents_code-0.1.69/deepagents_code/bundled_prices.json +39 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/client/commands/config.py +54 -3
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/client/non_interactive.py +7 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/client/remote_client.py +20 -7
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/cold_cache.py +103 -40
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/config.py +124 -1
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/configurable_model.py +18 -5
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/local_context.py +24 -4
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/offload_api.py +46 -23
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/sessions.py +11 -9
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/theme.py +2 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/textual_adapter.py +34 -5
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/cwd_switch.py +28 -2
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/debug_console.py +14 -3
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/effort_selector.py +4 -1
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/loading.py +8 -2
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/messages.py +60 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/model_selector.py +10 -5
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/status.py +16 -9
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/thread_selector.py +2 -2
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/pyproject.toml +8 -8
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/scripts/check_process_cwd.py +3 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/conftest.py +30 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_app.py +698 -28
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_auto_mode.py +78 -5
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_cold_cache.py +110 -1
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_config.py +352 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_configurable_model.py +107 -4
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_debug_console.py +45 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_formatting.py +27 -3
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_local_context.py +36 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_non_interactive.py +47 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_offload_api.py +35 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_reasoning_effort.py +40 -1
- deepagents_code-0.1.69/tests/unit_tests/test_session_stats.py +1282 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_theme.py +9 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/test_textual_adapter.py +117 -2
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_cwd_switch.py +36 -1
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_messages.py +126 -54
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_status.py +31 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/uv.lock +29 -29
- deepagents_code-0.1.67/deepagents_code/bundled_prices.json +0 -21
- deepagents_code-0.1.67/tests/unit_tests/test_session_stats.py +0 -573
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/.gitignore +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/AGENTS.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/ARCHITECTURE.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/COMMANDS.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/DEVELOPMENT.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/EXTENSIONS.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/HOOKS.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/LICENSE +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/Makefile +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/PRICING.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/README.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/THREAT_MODEL.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/__main__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_ask_user_types.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_cli_context.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_constants.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_content_blocks.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_debug.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_debug_buffer.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_dep_floor_check.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_fake_models.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_git.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_glm_5p2_profile.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_home_error.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_invocation.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_markdown.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_paths.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_repository_bounds.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_reserved_names.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_server_config.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_startup_error.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_terminal_stderr.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_testing_models.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_textual_patches.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_tool_stream.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/_tracing.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/acp.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/agent.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/app.tcss +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/approval_mode.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/ask_user.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/auth_display.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/auth_store.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/built_in_skills/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/built_in_skills/deepagents-thread-inspector/SKILL.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/built_in_skills/deepagents-thread-inspector/scripts/inspect_sessions.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/bundled_prices.README.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/client/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/client/commands/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/client/commands/auth.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/client/commands/extras.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/client/commands/mcp.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/client/commands/tools.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/client/launch/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/client/launch/server.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/client/launch/server_manager.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/clipboard.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/command_registry.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/config_manifest.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/configuration/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/configuration/interpreter.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/configuration/paths.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/configuration/provider.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/configuration/providers.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/configuration/resolver.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/configuration/service.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/configuration/theme_resolution.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/configuration/types.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/configuration/writer.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/context_doctor.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/cost_tracking.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/default_agent_prompt.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/diff_utils.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/doctor.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/editor.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/event_bus.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/extensions/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/extensions/api.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/extensions/discovery.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/extensions/hosting.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/extensions/loader.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/extensions/registry.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/extensions/runtime.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/extensions/settings.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/extensions/trust.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/extras_info.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/file_ops.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/formatting.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/goal_rubric.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/goal_state_limits.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/goal_state_notice.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/goal_tools.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/capabilities.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/client.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/client_lifecycle.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/context.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/engine.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/env.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/envelope.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/interrupt.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/legacy.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/loading.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/manager.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/migration.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/models/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/models/adapters.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/models/config.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/models/domain.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/models/transport.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/models/wire.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/permissions.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/presenter.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/projection.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/reducer.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/runner.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/runtime.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/server_middleware.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/snapshot.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/tools.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/transcript.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/trust.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/hooks/validate_terminal_sequence.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/input.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/integrations/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/integrations/openai_codex.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/integrations/sandbox_config.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/integrations/sandbox_factory.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/integrations/sandbox_provider.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/integrations/sandbox_registry.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/json_types.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/main.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/managed_tools.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/mcp_auth.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/mcp_config.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/mcp_disabled.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/mcp_login_service.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/mcp_providers/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/mcp_providers/_registry.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/mcp_providers/base.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/mcp_providers/github.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/mcp_providers/slack.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/mcp_tools.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/media_utils.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/memory_guard.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/model_config.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/model_retry.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/notifications.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/offload.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/offload_middleware.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/onboarding.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/output.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/paste_collapse.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/plugins/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/plugins/_json.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/plugins/adapters/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/plugins/adapters/hooks.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/plugins/adapters/mcp.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/plugins/adapters/skills.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/plugins/adapters/skills_middleware.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/plugins/commands_cli.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/plugins/discovery.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/plugins/manifest.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/plugins/marketplace.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/plugins/models.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/plugins/store.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/plugins/substitution.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/project_utils.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/py.typed +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/reasoning_effort.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/reliable_rubric.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/resume_state.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/server_graph.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/skills/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/skills/commands.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/skills/invocation.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/skills/load.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/skills/merge.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/skills/trust.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/state_migration.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/subagents.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/system_prompt.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/terminal_capabilities.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/terminal_escape.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tool_catalog.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tool_display.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tools.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/key_hints.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/modals/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/modals/cold_cache.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/modals/model_switch.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/modals/plugin_manager/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/modals/plugin_manager/content.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/modals/plugin_manager/models.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/modals/plugin_manager/plugin_manager.tcss +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/modals/plugin_manager/state.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/modals/plugin_manager/tabs.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/modals/prompt_clipboard.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/modals/prompt_clipboard.tcss +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/modals/resume_blocked.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/modals/resume_compact.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/screens/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/_copy_spans.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/_inline_prompt.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/_js_eval_display.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/_links.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/_paste_textarea.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/agent_selector.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/approval.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/ask_user.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/auth.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/auto_mode_notice.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/autocomplete.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/chat_input.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/codex_auth.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/context_usage.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/diff.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/goal_review.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/goal_status.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/history.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/install_confirm.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/launch_init.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/mcp_login.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/mcp_reconnect.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/mcp_viewer.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/message_store.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/notification_center.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/notification_detail.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/notification_settings.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/prompt_search.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/restart_prompt.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/skill_trust.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/startup_tip.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/subagent_panel.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/theme_selector.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/thread_agent_switch.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/tool_renderers.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/tool_widgets.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/update_available.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/update_confirm.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/update_progress.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/welcome.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/tui/widgets/yolo_mode_notice.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/ui.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/unicode_security.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/update_check.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/deepagents_code/workspace.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/examples/extensions/memory_store.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/hatch_build.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/images/model-stream-retry.png +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/images/tui.png +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/scripts/check_imports.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/scripts/debug_server.sh +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/scripts/generate_commands_catalog.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/scripts/install.sh +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/README.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/integration_tests/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/integration_tests/benchmarks/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/integration_tests/benchmarks/test_local_context_benchmarks.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/integration_tests/conftest.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/integration_tests/test_acp_mode.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/integration_tests/test_auto_approve_remote.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/integration_tests/test_compact_resume.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/integration_tests/test_offload_server_side.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/integration_tests/test_pending_work_recovery.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/integration_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/integration_tests/test_sandbox_operations.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/client/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/client/commands/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/client/commands/test_auth.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/client/commands/test_extras.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/client/commands/test_mcp.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/client/commands/test_tools.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/data/coding_agent_v1_validator.json +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/hooks/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/hooks/models/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/hooks/models/test_models.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/hooks/test_client_lifecycle.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/hooks/test_configuration.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/hooks/test_engine.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/hooks/test_execution.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/hooks/test_manager.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/hooks/test_presenter.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/hooks/test_server_lifecycle.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/hooks/test_transcript.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/hooks/test_trust.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/plugins/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/plugins/test_marketplace.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/plugins/test_plugin_hooks.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/plugins/test_plugins_p0.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/skills/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/skills/test_commands.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/skills/test_load.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/skills/test_merge.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/skills/test_skill_trust.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/skills/test_skills_json.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/skills/test_thread_inspector.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/smoke_tests/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/smoke_tests/conftest.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/smoke_tests/snapshots/system_prompt_interactive_local.md +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/smoke_tests/test_system_prompt.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test__tool_stream.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_acp.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_agent.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_agent_friendly.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_approval_mode.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_args.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_ask_user_middleware.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_ask_user_types.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_auth_display.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_auth_store.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_auth_web_search_restart.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_charset.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_cli_provider.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_clipboard.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_coding_agent_metadata.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_command_registry.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_compact_tool.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_config_manifest.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_configuration.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_configuration_resolution.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_configuration_resolver.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_context_doctor.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_cost_tracking.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_cursor_style.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_debug.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_debug_buffer.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_dep_floor_check.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_diff_utils.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_doctor.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_editor.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_end_to_end.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_env_vars.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_event_bus.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_exception_handling.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_extension_api.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_extension_cli_trust.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_extension_config_manifest.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_extension_discovery.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_extension_display.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_extension_host_runtime.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_extension_hosting.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_extension_runtime.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_extra_skills_dirs.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_extras_info.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_file_ops.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_git.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_glm_5p2_profile.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_goal_criteria_client.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_goal_rubric.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_goal_state_limits.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_goal_state_notice.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_goal_state_persistence.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_goal_tools.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_hatch_build.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_hooks.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_imports.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_input_parsing.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_install_command.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_install_script.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_invocation.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_json_types.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_main.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_main_acp_mode.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_main_args.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_managed_tools.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_mcp_auth.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_mcp_config.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_mcp_disabled.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_mcp_login_service.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_mcp_tools.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_media_utils.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_memory_guard.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_model_config.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_model_retry.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_model_switch.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_notifications.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_offload.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_onboarding.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_openai_codex_integration.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_output.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_paths.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_process_cwd_check.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_reliable_rubric.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_reload.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_remote_client.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_repository_bounds.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_resume_compaction_recovery.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_resume_state.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_rubric_cli.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_sandbox_config.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_sandbox_provider.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_sandbox_registry.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_server.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_server_config.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_server_graph.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_server_helpers.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_server_manager.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_server_tracing.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_sessions.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_shell_allow_list.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_skill_invocation.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_startup_fast_paths.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_state_migration.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_subagents.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_terminal_capabilities.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_terminal_escape.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_terminal_stderr.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_textual_patches.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_threads_resume.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_tool_catalog.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_tool_display.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_tracing.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_tracing_replicas.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_transcript_virtualization.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_ui.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_unicode_security.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_uninstall_command.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_update_check.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_version.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/test_workspace.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tools/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tools/test_current_thread.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tools/test_fetch_url.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tools/test_tool_arg_schemas.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tools/test_web_search.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/modals/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/modals/plugin_manager/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/modals/plugin_manager/test_structure.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/modals/test_cold_cache.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/modals/test_model_switch.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/modals/test_prompt_clipboard.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/modals/test_resume_blocked.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/test_key_hints.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/test_modal_footer_layout.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/test_subagent_stream.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/__init__.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_agent_selector.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_approval.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_ask_user.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_auth_widgets.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_auto_mode_notice.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_autocomplete.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_chat_input.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_copy_spans.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_diff.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_goal_review.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_history.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_inline_prompt.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_install_confirm.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_launch_init.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_links.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_loading.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_mcp_login_modal.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_mcp_reconnect.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_mcp_viewer.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_message_store.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_model_selector.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_notification_center.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_notification_detail.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_notification_settings.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_prompt_search.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_restart_prompt.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_skill_trust_screen.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_startup_tip.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_subagent_panel.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_thread_agent_switch.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_thread_selector.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_tool_renderers.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_update_available.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_update_confirm.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_update_progress.py +0 -0
- {deepagents_code-0.1.67 → deepagents_code-0.1.69}/tests/unit_tests/tui/widgets/test_welcome.py +0 -0
|
@@ -2,6 +2,42 @@
|
|
|
2
2
|
|
|
3
3
|
# Deep Agents Code Changelog
|
|
4
4
|
|
|
5
|
+
## [0.1.69](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.68...deepagents-code==0.1.69) (2026-09-14)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
- Update `read_file` output formatting. ([#5648](https://github.com/langchain-ai/deepagents/pull/5648))
|
|
10
|
+
- Surface DeepSeek V4.1 Flash in the model picker. ([#6254](https://github.com/langchain-ai/deepagents/pull/6254))
|
|
11
|
+
- Surface locally tracked GitHub stacks in agent context. ([#6290](https://github.com/langchain-ai/deepagents/pull/6290))
|
|
12
|
+
- Copy a model slug with Ctrl+click. ([#6243](https://github.com/langchain-ai/deepagents/pull/6243))
|
|
13
|
+
- Show session length in the Debug Console. ([#6224](https://github.com/langchain-ai/deepagents/pull/6224))
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
- Price nested usage with its own model and honor completions. ([#6251](https://github.com/langchain-ai/deepagents/pull/6251))
|
|
18
|
+
- Drop stale Anthropic thinking blocks. ([#6300](https://github.com/langchain-ai/deepagents/pull/6300))
|
|
19
|
+
- Isolate credentials used for user shell tracing. ([#6242](https://github.com/langchain-ai/deepagents/pull/6242))
|
|
20
|
+
- Attribute dotenv configuration sources. ([#6222](https://github.com/langchain-ai/deepagents/pull/6222))
|
|
21
|
+
- Expose unknown reasoning effort values. ([#6241](https://github.com/langchain-ai/deepagents/pull/6241))
|
|
22
|
+
- Open the Debug Console at the bottom of the log. ([#6218](https://github.com/langchain-ai/deepagents/pull/6218))
|
|
23
|
+
- Order Debug Console log filters. ([#6217](https://github.com/langchain-ai/deepagents/pull/6217))
|
|
24
|
+
- Show the spinner during pre-stream turn setup. ([#6253](https://github.com/langchain-ai/deepagents/pull/6253))
|
|
25
|
+
- Demote no-output hint suppression messages to debug logging. ([#6245](https://github.com/langchain-ai/deepagents/pull/6245))
|
|
26
|
+
|
|
27
|
+
## [0.1.68](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.67...deepagents-code==0.1.68) (2026-09-10)
|
|
28
|
+
|
|
29
|
+
### Features
|
|
30
|
+
|
|
31
|
+
- Recommended GLM 5.3 models are now available in code workflows ([#6211](https://github.com/langchain-ai/deepagents/pull/6211)).
|
|
32
|
+
|
|
33
|
+
### Bug Fixes
|
|
34
|
+
|
|
35
|
+
- Added pricing support for Fireworks GLM-5.3 and GLM-5.3 Flash usage ([#6221](https://github.com/langchain-ai/deepagents/pull/6221), [#6223](https://github.com/langchain-ai/deepagents/pull/6223)).
|
|
36
|
+
- Workspace switches now ask for confirmation before restarting the server ([#6178](https://github.com/langchain-ai/deepagents/pull/6178)).
|
|
37
|
+
- Effort changes are now included in cache identity for OpenAI and Anthropic requests ([#6196](https://github.com/langchain-ai/deepagents/pull/6196)).
|
|
38
|
+
- Standardized the recent-thread environment variable ([#6205](https://github.com/langchain-ai/deepagents/pull/6205)).
|
|
39
|
+
- Silenced warnings when the themes config is absent ([#6220](https://github.com/langchain-ai/deepagents/pull/6220)).
|
|
40
|
+
|
|
5
41
|
## [0.1.67](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.66...deepagents-code==0.1.67) (2026-09-09)
|
|
6
42
|
|
|
7
43
|
### Features
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: deepagents-code
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.69
|
|
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.14
|
|
34
34
|
Requires-Dist: filelock<3.30,>=3.29.7
|
|
35
35
|
Requires-Dist: genai-prices<0.2.0,>=0.1.6
|
|
36
36
|
Requires-Dist: httpx<1.0.0,>=0.28.1
|
|
37
|
-
Requires-Dist: langchain-anthropic<2.0.0,>=1.7.
|
|
37
|
+
Requires-Dist: langchain-anthropic<2.0.0,>=1.7.2
|
|
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.2
|
|
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
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.4
|
|
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
|
|
@@ -66,8 +66,8 @@ Provides-Extra: agentcore
|
|
|
66
66
|
Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.5; extra == 'agentcore'
|
|
67
67
|
Provides-Extra: all-providers
|
|
68
68
|
Requires-Dist: aiohttp<3.15.0,>=3.14.3; extra == 'all-providers'
|
|
69
|
-
Requires-Dist: langchain-anthropic<2.0.0,>=1.7.
|
|
70
|
-
Requires-Dist: langchain-aws<2.0.0,>=1.7.
|
|
69
|
+
Requires-Dist: langchain-anthropic<2.0.0,>=1.7.2; extra == 'all-providers'
|
|
70
|
+
Requires-Dist: langchain-aws<2.0.0,>=1.7.6; extra == 'all-providers'
|
|
71
71
|
Requires-Dist: langchain-baseten<1.0.0,>=0.2.4; 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.0; extra == 'all-providers'
|
|
@@ -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.2; 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'
|
|
@@ -94,11 +94,11 @@ Requires-Dist: langchain-modal>=0.0.5; extra == 'all-sandboxes'
|
|
|
94
94
|
Requires-Dist: langchain-runloop>=0.0.6; extra == 'all-sandboxes'
|
|
95
95
|
Requires-Dist: langchain-vercel-sandbox>=0.0.1; extra == 'all-sandboxes'
|
|
96
96
|
Provides-Extra: anthropic
|
|
97
|
-
Requires-Dist: langchain-anthropic<2.0.0,>=1.7.
|
|
97
|
+
Requires-Dist: langchain-anthropic<2.0.0,>=1.7.2; extra == 'anthropic'
|
|
98
98
|
Provides-Extra: baseten
|
|
99
99
|
Requires-Dist: langchain-baseten<1.0.0,>=0.2.4; extra == 'baseten'
|
|
100
100
|
Provides-Extra: bedrock
|
|
101
|
-
Requires-Dist: langchain-aws<2.0.0,>=1.7.
|
|
101
|
+
Requires-Dist: langchain-aws<2.0.0,>=1.7.6; extra == 'bedrock'
|
|
102
102
|
Provides-Extra: cohere
|
|
103
103
|
Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'cohere'
|
|
104
104
|
Provides-Extra: daytona
|
|
@@ -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.2; 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
|
|
@@ -506,6 +506,9 @@ hostile values the dotenv denylist does not yet enumerate. The global
|
|
|
506
506
|
repo file, so a project `.env` cannot disable itself.
|
|
507
507
|
"""
|
|
508
508
|
|
|
509
|
+
RECENT_THREADS = "DEEPAGENTS_CODE_RECENT_THREADS"
|
|
510
|
+
"""Maximum number of recent threads loaded and displayed (default: 20)."""
|
|
511
|
+
|
|
509
512
|
RECURSION_LIMIT = "DEEPAGENTS_CODE_RECURSION_LIMIT"
|
|
510
513
|
"""Override the main agent's LangGraph `recursion_limit` (graph step budget).
|
|
511
514
|
|
|
@@ -149,6 +149,32 @@ class RecordedUsage:
|
|
|
149
149
|
request_tokens: int
|
|
150
150
|
"""Running token total for the request after applying this message."""
|
|
151
151
|
|
|
152
|
+
request_id: str | None = None
|
|
153
|
+
"""Opaque key naming the request this delta belongs to, when known.
|
|
154
|
+
|
|
155
|
+
Keys each correction to the request it applies to. A late revision then
|
|
156
|
+
cannot subtract spend that belongs to other requests. `None` when the
|
|
157
|
+
message carried no usable ID, which is also when the ledger refuses to key
|
|
158
|
+
the request at all.
|
|
159
|
+
|
|
160
|
+
Built by `_provisional_bucket_key`, so it separates retry attempts exactly
|
|
161
|
+
as the ledger does. Treat it as a bucket key, not as a provider message ID.
|
|
162
|
+
"""
|
|
163
|
+
|
|
164
|
+
is_correction: bool = False
|
|
165
|
+
"""Whether this delta only revises spend already reported for the request.
|
|
166
|
+
|
|
167
|
+
A correction re-states what an earlier delta already contributed: a
|
|
168
|
+
completion replacing its chunks, or a request re-priced under the model it
|
|
169
|
+
finally named. New spend is not a correction, even when it arrives on a
|
|
170
|
+
request that already has a record, because the tokens themselves are new.
|
|
171
|
+
|
|
172
|
+
Lets the consumer drop a correction whose subject is gone -- a backend
|
|
173
|
+
total has already absorbed that request -- whatever the correction's sign.
|
|
174
|
+
A stale *positive* correction would otherwise re-inflate a display the
|
|
175
|
+
total had just settled.
|
|
176
|
+
"""
|
|
177
|
+
|
|
152
178
|
|
|
153
179
|
UsageLedgerKey = str | tuple[Hashable, str]
|
|
154
180
|
"""Key of the recorded-request ledger: a message ID, optionally scoped.
|
|
@@ -460,6 +486,36 @@ def finalize_recorded_requests(
|
|
|
460
486
|
recorded_requests[request_id[1]] = closed
|
|
461
487
|
|
|
462
488
|
|
|
489
|
+
def _provisional_bucket_key(request_id: UsageLedgerKey | None) -> str | None:
|
|
490
|
+
"""Return a string key naming the request a provisional delta belongs to.
|
|
491
|
+
|
|
492
|
+
The consumer keys a pool of provisional dollars by this value, so it must
|
|
493
|
+
separate exactly what the ledger separates. An attempt-scoped key therefore
|
|
494
|
+
keeps its scope: two attempts that reuse one provider message ID are
|
|
495
|
+
distinct requests, and collapsing them to the bare ID would let one
|
|
496
|
+
attempt's late retraction draw on the other attempt's deposit.
|
|
497
|
+
|
|
498
|
+
Scope cannot change under a request while it still reports deltas. A chunk
|
|
499
|
+
or completion whose record is already finalized is rejected before any
|
|
500
|
+
delta is built, and `finalize_recorded_requests` closes every entry at the
|
|
501
|
+
end of a stream round -- so one request's deltas all carry one scope, and
|
|
502
|
+
the key stays stable for as long as the pool holds its money.
|
|
503
|
+
|
|
504
|
+
Args:
|
|
505
|
+
request_id: Ledger key for the request, or `None` when the message
|
|
506
|
+
carried no usable ID.
|
|
507
|
+
|
|
508
|
+
Returns:
|
|
509
|
+
An opaque bucket key, or `None` when there is no ledger key to name.
|
|
510
|
+
"""
|
|
511
|
+
if request_id is None:
|
|
512
|
+
return None
|
|
513
|
+
if isinstance(request_id, tuple):
|
|
514
|
+
attempt_scope, message_id = request_id
|
|
515
|
+
return f"{attempt_scope!r}\x00{message_id}"
|
|
516
|
+
return request_id
|
|
517
|
+
|
|
518
|
+
|
|
463
519
|
def _names_a_model(message: object) -> bool:
|
|
464
520
|
"""Report whether a message's own metadata names the model that served it.
|
|
465
521
|
|
|
@@ -630,21 +686,24 @@ def _resolve_usage_model(
|
|
|
630
686
|
The `(model_name, provider)` pair to record and price under.
|
|
631
687
|
"""
|
|
632
688
|
from deepagents_code.cost_tracking import (
|
|
689
|
+
_CONFIGURED_MODEL_METADATA_KEY,
|
|
633
690
|
_CONFIGURED_PROVIDER_METADATA_KEY,
|
|
634
691
|
resolve_message_model,
|
|
635
692
|
)
|
|
636
693
|
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
if request_metadata is not None
|
|
640
|
-
else None
|
|
641
|
-
)
|
|
694
|
+
request_metadata = request_metadata or {}
|
|
695
|
+
configured_provider = request_metadata.get(_CONFIGURED_PROVIDER_METADATA_KEY)
|
|
642
696
|
has_request_provider = isinstance(configured_provider, str) and bool(
|
|
643
697
|
configured_provider
|
|
644
698
|
)
|
|
699
|
+
configured_model = request_metadata.get(_CONFIGURED_MODEL_METADATA_KEY)
|
|
700
|
+
has_request_model = isinstance(configured_model, str) and bool(configured_model)
|
|
645
701
|
return resolve_message_model(
|
|
646
702
|
message,
|
|
647
|
-
|
|
703
|
+
# The request's own configured model describes this very call, so unlike
|
|
704
|
+
# the caller's fallback it is valid for nested calls too; it only
|
|
705
|
+
# replaces the parent-fallback step, ahead of the existing chain.
|
|
706
|
+
fallback_model=configured_model if has_request_model else fallback_model,
|
|
648
707
|
fallback_provider=(
|
|
649
708
|
configured_provider if has_request_provider else fallback_provider
|
|
650
709
|
),
|
|
@@ -733,6 +792,117 @@ def _move_request_to_named_model(
|
|
|
733
792
|
)
|
|
734
793
|
|
|
735
794
|
|
|
795
|
+
def _finalize_from_completed(
|
|
796
|
+
stats: SessionStats,
|
|
797
|
+
message: object,
|
|
798
|
+
previous: RecordedRequest,
|
|
799
|
+
*,
|
|
800
|
+
usage: Mapping[str, Any],
|
|
801
|
+
recorded_requests: dict[UsageLedgerKey, RecordedRequest],
|
|
802
|
+
request_id: UsageLedgerKey,
|
|
803
|
+
fallback_model: str,
|
|
804
|
+
fallback_provider: str,
|
|
805
|
+
request_metadata: Mapping[str, Any] | None,
|
|
806
|
+
kind: UsageKind,
|
|
807
|
+
) -> RecordedUsage | None:
|
|
808
|
+
"""Replace a chunk-built request record with a completed message's usage.
|
|
809
|
+
|
|
810
|
+
Chunks report incremental deltas, so a request recorded mid-stream holds
|
|
811
|
+
partial tokens priced under whatever model was known then. The completed
|
|
812
|
+
message carries the whole usage; it must replace the partial record rather
|
|
813
|
+
than join it, or corrected token counts, cache details, and model
|
|
814
|
+
attribution never reach the stats.
|
|
815
|
+
|
|
816
|
+
Args:
|
|
817
|
+
stats: Accumulator holding the partial request.
|
|
818
|
+
message: The completed message with the request's whole usage.
|
|
819
|
+
previous: The partial ledger entry to supersede.
|
|
820
|
+
usage: The completed message's whole usage metadata.
|
|
821
|
+
recorded_requests: Ledger to update in place.
|
|
822
|
+
request_id: Message ID keying the ledger entry.
|
|
823
|
+
fallback_model: Model to use when response metadata does not name one.
|
|
824
|
+
fallback_provider: Provider to use when response metadata omits it.
|
|
825
|
+
request_metadata: Stream metadata for this specific request, if any.
|
|
826
|
+
kind: Request class used by the type breakdown.
|
|
827
|
+
|
|
828
|
+
Returns:
|
|
829
|
+
The signed cost change the replacement applied, for the caller's
|
|
830
|
+
provisional display, or `None` when nothing changed.
|
|
831
|
+
"""
|
|
832
|
+
from deepagents_code.cost_tracking import cache_token_counts, estimate_cost
|
|
833
|
+
|
|
834
|
+
model_name, provider = _resolve_usage_model(
|
|
835
|
+
message,
|
|
836
|
+
fallback_model=fallback_model,
|
|
837
|
+
fallback_provider=fallback_provider,
|
|
838
|
+
request_metadata=request_metadata,
|
|
839
|
+
kind=kind,
|
|
840
|
+
)
|
|
841
|
+
if not _names_a_model(message):
|
|
842
|
+
# An earlier chunk may already have upgraded the record off the
|
|
843
|
+
# caller's fallback. A completion that names no model of its own must
|
|
844
|
+
# not undo that, or the request goes back to the parent's pricing --
|
|
845
|
+
# the very mis-attribution the chunk path guards against.
|
|
846
|
+
model_name, provider = previous.model_name, previous.provider
|
|
847
|
+
input_count, output_count = _display_token_counts(usage)
|
|
848
|
+
cost_usd = estimate_cost(usage, model_name, provider)
|
|
849
|
+
cache_reads, cache_writes = cache_token_counts(usage)
|
|
850
|
+
|
|
851
|
+
if (
|
|
852
|
+
not input_count
|
|
853
|
+
and not output_count
|
|
854
|
+
and _carries_token_counts(previous.usage_metadata)
|
|
855
|
+
):
|
|
856
|
+
# A completion that corrects its chunks downward is ordinary -- the
|
|
857
|
+
# provider revises an over-counted prompt. Reporting *no* token field
|
|
858
|
+
# at all is not: it normalizes to zero and wipes a request the chunks
|
|
859
|
+
# had counted. Replace the record regardless, since the completion is
|
|
860
|
+
# authoritative, but say so rather than losing the tokens quietly.
|
|
861
|
+
logger.warning(
|
|
862
|
+
"A completed message states no token counts, so it replaces its "
|
|
863
|
+
"chunks with zero. request_id=%r dropped=%d/%d",
|
|
864
|
+
request_id,
|
|
865
|
+
previous.input_tokens,
|
|
866
|
+
previous.output_tokens,
|
|
867
|
+
)
|
|
868
|
+
stats.retract_request(previous)
|
|
869
|
+
stats.record_request(
|
|
870
|
+
model_name,
|
|
871
|
+
input_count,
|
|
872
|
+
output_count,
|
|
873
|
+
provider,
|
|
874
|
+
cost_usd=cost_usd,
|
|
875
|
+
kind=kind,
|
|
876
|
+
cache_read_tokens=cache_reads,
|
|
877
|
+
cache_write_tokens=sum(cache_writes),
|
|
878
|
+
)
|
|
879
|
+
recorded_requests[request_id] = RecordedRequest(
|
|
880
|
+
model_name=model_name,
|
|
881
|
+
provider=provider,
|
|
882
|
+
kind=kind,
|
|
883
|
+
input_tokens=input_count,
|
|
884
|
+
output_tokens=output_count,
|
|
885
|
+
cache_read_tokens=cache_reads,
|
|
886
|
+
cache_write_tokens=sum(cache_writes),
|
|
887
|
+
cost_usd=cost_usd,
|
|
888
|
+
usage_metadata=usage,
|
|
889
|
+
finalized=True,
|
|
890
|
+
)
|
|
891
|
+
return RecordedUsage(
|
|
892
|
+
input_tokens=input_count - previous.input_tokens,
|
|
893
|
+
output_tokens=output_count - previous.output_tokens,
|
|
894
|
+
cost_usd=_cost_delta(
|
|
895
|
+
previous.cost_usd,
|
|
896
|
+
cost_usd,
|
|
897
|
+
model_name=model_name,
|
|
898
|
+
previous_model_name=previous.model_name,
|
|
899
|
+
),
|
|
900
|
+
request_tokens=input_count + output_count,
|
|
901
|
+
request_id=_provisional_bucket_key(request_id),
|
|
902
|
+
is_correction=True,
|
|
903
|
+
)
|
|
904
|
+
|
|
905
|
+
|
|
736
906
|
def record_message_usage(
|
|
737
907
|
stats: SessionStats,
|
|
738
908
|
message: object,
|
|
@@ -810,10 +980,28 @@ def record_message_usage(
|
|
|
810
980
|
request_id = (attempt_scope, request_id)
|
|
811
981
|
is_chunk = isinstance(message, AIMessageChunk)
|
|
812
982
|
if request_id is not None and request_id in recorded_requests and not is_chunk:
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
983
|
+
previous = recorded_requests[request_id]
|
|
984
|
+
if previous.finalized:
|
|
985
|
+
# A completed message repeats the whole request, and a completed
|
|
986
|
+
# record already holds it in full. Whether this entry was built
|
|
987
|
+
# from an identical earlier completion or re-records one, it is
|
|
988
|
+
# already accounted for.
|
|
989
|
+
return None
|
|
990
|
+
# A partial ledger entry was built only from incremental chunks; this
|
|
991
|
+
# completion carries the request's whole usage and must *replace* it.
|
|
992
|
+
# Retry-attempt scoping keeps this keyed to its own attempt's entry.
|
|
993
|
+
return _finalize_from_completed(
|
|
994
|
+
stats,
|
|
995
|
+
message,
|
|
996
|
+
previous,
|
|
997
|
+
usage=usage,
|
|
998
|
+
recorded_requests=recorded_requests,
|
|
999
|
+
request_id=request_id,
|
|
1000
|
+
fallback_model=fallback_model,
|
|
1001
|
+
fallback_provider=fallback_provider,
|
|
1002
|
+
request_metadata=request_metadata,
|
|
1003
|
+
kind=kind,
|
|
1004
|
+
)
|
|
817
1005
|
|
|
818
1006
|
input_count, output_count = _display_token_counts(usage)
|
|
819
1007
|
previous = recorded_requests.get(request_id) if request_id is not None else None
|
|
@@ -850,6 +1038,8 @@ def record_message_usage(
|
|
|
850
1038
|
output_tokens=0,
|
|
851
1039
|
cost_usd=reprice_delta,
|
|
852
1040
|
request_tokens=previous.input_tokens + previous.output_tokens,
|
|
1041
|
+
request_id=_provisional_bucket_key(request_id),
|
|
1042
|
+
is_correction=True,
|
|
853
1043
|
)
|
|
854
1044
|
return None
|
|
855
1045
|
|
|
@@ -925,6 +1115,7 @@ def record_message_usage(
|
|
|
925
1115
|
previous_model_name=previous.model_name if previous else model_name,
|
|
926
1116
|
),
|
|
927
1117
|
request_tokens=input_count + output_count,
|
|
1118
|
+
request_id=_provisional_bucket_key(request_id),
|
|
928
1119
|
)
|
|
929
1120
|
|
|
930
1121
|
|
|
@@ -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.69" # 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."""
|