deepcode-hku 2.3.0__tar.gz → 2.3.1__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.
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/PKG-INFO +51 -5
- deepcode_hku-2.3.0/deepcode_hku.egg-info/PKG-INFO → deepcode_hku-2.3.1/README.md +48 -65
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/README_ZH.md +36 -3
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/blocking_client.py +14 -4
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/dispatcher.py +1 -4
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/native_client.py +46 -12
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/service.py +7 -2
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/service_state.py +11 -0
- deepcode_hku-2.3.0/app_server/web_assets/assets/Inspector-DJBT5qR-.js → deepcode_hku-2.3.1/app_server/web_assets/assets/Inspector-8Es-_51F.js +3 -3
- deepcode_hku-2.3.0/app_server/web_assets/assets/LocalMonacoEditor-DCwkx7R9.js → deepcode_hku-2.3.1/app_server/web_assets/assets/LocalMonacoEditor-DCuhGEPh.js +1 -1
- deepcode_hku-2.3.0/app_server/web_assets/assets/index-5xSnu27j.js → deepcode_hku-2.3.1/app_server/web_assets/assets/index-B4STS7MU.js +2 -2
- deepcode_hku-2.3.0/app_server/web_assets/assets/webMain-BbLSr8jA.js → deepcode_hku-2.3.1/app_server/web_assets/assets/webMain-DHoYpK8Q.js +3 -3
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/index.html +1 -1
- deepcode_hku-2.3.1/app_server/web_assets/web-build.json +1 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/websocket.py +3 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/service_cli.py +5 -1
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/service_events.py +40 -5
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/service_thread_client.py +86 -35
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/tui/app.py +278 -54
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/tui/commands.py +54 -5
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/tui/goal_controller.py +33 -29
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/tui/input.py +49 -4
- deepcode_hku-2.3.1/cli/tui/markdown_stream.py +184 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/tui/renderer.py +171 -30
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/tui/theme.py +4 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/compaction.py +9 -4
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/runner.py +8 -2
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/runtime.py +20 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/execution_registry.py +24 -1
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/git_service.py +7 -2
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/session_runtime.py +50 -10
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/turn_projection.py +75 -1
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/turn_service.py +20 -1
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/events/protocol.py +12 -1
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/events/session.py +3 -2
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/command_guard.py +1 -1
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/tools/search.py +5 -1
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/network/safe_http.py +18 -2
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/version.py +1 -1
- deepcode_hku-2.3.0/README.md → deepcode_hku-2.3.1/deepcode_hku.egg-info/PKG-INFO +111 -3
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/deepcode_hku.egg-info/SOURCES.txt +12 -4
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/deepcode_hku.egg-info/requires.txt +2 -1
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/requirements.txt +1 -1
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/setup.py +3 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_command_guard.py +47 -0
- deepcode_hku-2.3.1/tests/test_compaction_tool_call_budget.py +55 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_manual_compact.py +50 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_safe_http.py +32 -0
- deepcode_hku-2.3.1/tests/test_service_events.py +191 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_session_runtime.py +112 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_shell_search_tools.py +26 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_tui.py +5 -0
- deepcode_hku-2.3.1/tests/test_tui_input_safety.py +261 -0
- deepcode_hku-2.3.1/tests/test_tui_markdown_stream.py +243 -0
- deepcode_hku-2.3.1/tests/test_tui_resilience.py +366 -0
- deepcode_hku-2.3.1/tests/test_tui_responsiveness.py +146 -0
- deepcode_hku-2.3.1/tests/test_tui_transcript_order.py +189 -0
- deepcode_hku-2.3.0/app_server/web_assets/web-build.json +0 -1
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/LICENSE +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/MANIFEST.in +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/THIRD_PARTY_NOTICES.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/__main__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/browser_auth.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/config_watch.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/connection.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/errors.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/host.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/launchd.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/managed_entry.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/peer.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/protocol/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/protocol/codec.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/protocol/methods.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/protocol/models.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/protocol/notifications.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/protocol/retry.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/runtime_install.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/runtime_probe.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/server.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/service_client.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/state_backup.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/stdio_relay.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/systemd_user.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/Inspector-DypK0oEq.css +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/ManagementWorkspace-BJC9sMuB.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/MarkdownContent-BIoldQGd.css +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/MarkdownContent-khfmKOQ0.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/PluginsPage-CMshr5Pz.css +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/PluginsPage-DUG3WIqn.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/SettingsDialog-DCn47fGr.css +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/SettingsDialog-vGNFlrd5.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/ThreadConversation-DMQrKlux.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/ThreadConversation-DqZ9_3Ex.css +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/WorkflowComposer-6EHQGool.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/WorkflowComposer-DkLp3G33.css +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/addon-fit-DIOBYJe3.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/confirmAction-CndHH5nL.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/createLucideIcon-BQ7pep_N.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/css-DIMkf-bt.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/editor-CJEeZjoM.css +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/editor.api-DfsewISI.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/editor.worker-DSGwkeXF.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/flask-conical-B5W0AT8b.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/html-DmJuEt5_.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/ini-sBoK_t0W.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/itemPresentation-CpLiCTmA.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/javascript-MLwwUW_7.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/jsx-runtime-CIxEorsV.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/markdown-Cimd5fb3.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/python-DJ9JSdOX.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/reasoningPayload-C9Yeq9Ar.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/robot-aTY9e0LG.png +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/rolldown-runtime-QTnfLwEv.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/rust-DdL9SqIa.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/sparkles-DGUrvUnr.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/trash-2-DgbNN8mD.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/typescript-CGPudguY.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/useConnectionCatalog-CMQD5GS5.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/useSkillCatalog-CFGIrhRX.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/useSystemDarkMode-COxZJwQa.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/useTranslation-CYApFZ2x.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/webMain-u_hskv3e.css +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/x-CrqHGWEM.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/xterm-BrP-ENHg.css +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/xterm-U4TA8lIC.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_assets/assets/yaml-CZqRoqwh.js +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/web_surface.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/app_server/windows_task.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/automation_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/automation_foreground.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/config_errors.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/desktop_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/exec_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/execution_options.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/goal_runner.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/headless_turn.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/init_config.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/loop_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/mcp_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/mcp_server.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/plugin_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/project_trust.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/provider_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/rpc_models.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/schedule_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/service_automation.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/service_catalogs.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/service_turn.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/service_turns.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/session_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/skill_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/thread_client.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/transcript.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/tui/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/tui/__main__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/tui/animation.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/tui/domain_events.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/tui/picker.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/tui/session_bridge.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/tui/text.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/tui/thread_client.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/cli/web_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_presets/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_presets/builtin/code-reader.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_presets/builtin/minimal.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/context.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/evidence_ledger.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/goal_runtime.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/helpers.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/hook.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/injections.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/processes.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/pruner.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/repeat_guard.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/token_meter.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/tools/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/tools/alias.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/tools/base.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/tools/mcp.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/tools/registry.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_runtime/tools/semantic_hint.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/agent_setup.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/agent_adapter.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/application.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/application_lease.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/approval_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/automation_permission_policy.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/automation_schedule_policy.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/automation_scheduler.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/automation_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/config_store.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/diagnostics_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/dictation_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/errors.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/event_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/execution_admission.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/execution_coordinator.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/execution_handler_registry.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/execution_security_policy.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/extension_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/file_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/goal_extension.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/goal_prompts/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/goal_prompts/continuation.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/goal_turn_port.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/input_identity.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/interactive_turn_router.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/legacy_session_importer.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/llm_configuration_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/mcp_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/plugin_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/project_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/provider_verification.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/service_lifecycle.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/session_deletion_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/settings_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/skill_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/terminal_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/test_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/thread_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/turn_input_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/turn_usage.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/views.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/workflow_adapter.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/workflow_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/workspace_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/application/worktree_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/compat/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/compat/agent.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/compat/mcp_app.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/compat/parallel.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/compat/request_params.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/compat/runtime.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/config.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/dictation/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/dictation/audio.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/dictation/client.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/dictation/local_runner.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/domain/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/domain/approval.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/domain/artifact.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/domain/automation.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/domain/common.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/domain/event.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/domain/execution_permission.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/domain/execution_profile.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/domain/execution_security.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/domain/item.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/domain/message_provenance.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/domain/project.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/domain/runtime_coordination.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/domain/thread.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/domain/thread_goal.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/domain/turn.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/domain/workflow.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/events/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/events/llm_events.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/events/parts.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/file_lock.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/agents/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/agents/control.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/agents/external_backend.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/agents/structured_result.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/approval.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/code_mode/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/code_mode/_runner.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/code_mode/tool.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/collaboration.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/env_sanitize.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/hooks/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/hooks/discovery.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/hooks/engine.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/hooks/events.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/hooks/execution.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/memory.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/permissions.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/policy.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/sandbox.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/skills.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/snapshot.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/tools/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/tools/diagnostics.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/tools/files.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/tools/goal.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/tools/patch.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/tools/plan.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/tools/replace.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/tools/shell.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/tools/spawn_agent.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/tools/user_input.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/tools/web.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/harness/windows_sandbox.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/llm_runtime.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/loop/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/loop/autodream.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/mcp/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/mcp/connection.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/mcp/models.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/mcp/naming.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/mcp/oauth.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/mcp/presets.json +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/mcp/presets.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/mcp/probe.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/mcp/resolver.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/mcp/runtime.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/mcp/schema.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/mcp/tools.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/network/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/network/hostnames.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/observability/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/observability/bus.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/observability/context.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/observability/llmops.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/observability/records.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/persistence/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/persistence/automation_repository.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/persistence/coordination_repository.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/persistence/database.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/persistence/errors.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/persistence/event_repository.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/persistence/execution_repository.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/persistence/legacy_import_repository.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/persistence/migrations.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/persistence/project_repository.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/persistence/serde.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/persistence/thread_repository.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/persistence/workflow_repository.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/platform_compat.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/platform_file_lock.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/plugins/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/plugins/domain.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/plugins/formats/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/plugins/formats/agent_plugins_v1.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/plugins/host.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/plugins/mcp.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/plugins/registry.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/plugins/resolver.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/plugins/skill_provider.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/private_storage.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/anthropic.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/base.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/catalog.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/catalog_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/credentials.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/egress.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/model_compat.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/oauth.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/openai_compat.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/openai_responses/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/openai_responses/converters.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/openai_responses/parsing.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/profiles.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/protocol_config.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/reasoning.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/registry.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/revisions.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/providers/timeouts.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/reasoning.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/schedule/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/schedule/keepalive.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/schedule/monitor.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/schedule/scheduler.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/sessions/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/sessions/continuation.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/sessions/deletion.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/sessions/index.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/sessions/legacy_goal_decoder.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/sessions/models.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/sessions/store.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/sessions/thread_goal_store.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/sessions/transcript.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/aggregation.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/UPSTREAM_SOURCES.json +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/frontend-design/LICENSE.txt +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/frontend-design/SKILL.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/mcp-builder/LICENSE.txt +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/mcp-builder/SKILL.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/mcp-builder/reference/evaluation.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/mcp-builder/reference/mcp_best_practices.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/mcp-builder/reference/node_mcp_server.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/mcp-builder/reference/python_mcp_server.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/mcp-builder/scripts/connections.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/mcp-builder/scripts/evaluation.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/mcp-builder/scripts/example_evaluation.xml +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/mcp-builder/scripts/requirements.txt +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/review-agent/LICENSE.txt +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/review-agent/SKILL.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/review-agent/agents/openai.yaml +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-best-practices/LICENSE.txt +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-best-practices/SKILL.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-best-practices/agents/openai.yaml +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-best-practices/references/golang-general-backend-security.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-best-practices/references/javascript-express-web-server-security.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-best-practices/references/javascript-general-web-frontend-security.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-best-practices/references/javascript-jquery-web-frontend-security.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-best-practices/references/javascript-typescript-nextjs-web-server-security.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-best-practices/references/javascript-typescript-react-web-frontend-security.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-best-practices/references/javascript-typescript-vue-web-frontend-security.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-best-practices/references/python-django-web-server-security.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-best-practices/references/python-fastapi-web-server-security.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-best-practices/references/python-flask-web-server-security.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-ownership-map/LICENSE.txt +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-ownership-map/SKILL.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-ownership-map/agents/openai.yaml +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-ownership-map/references/neo4j-import.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-ownership-map/scripts/build_ownership_map.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-ownership-map/scripts/community_maintainers.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-ownership-map/scripts/query_ownership.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-ownership-map/scripts/run_ownership_map.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-threat-model/LICENSE.txt +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-threat-model/SKILL.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-threat-model/agents/openai.yaml +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-threat-model/references/prompt-template.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/security-threat-model/references/security-controls-and-assets.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/skill-creator/LICENSE.txt +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/skill-creator/SKILL.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/skill-creator/agents/openai.yaml +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/skill-creator/references/openai_yaml.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/skill-creator/scripts/generate_openai_yaml.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/skill-creator/scripts/init_skill.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/skill-creator/scripts/quick_validate.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/webapp-testing/LICENSE.txt +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/webapp-testing/SKILL.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/webapp-testing/examples/console_logging.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/webapp-testing/examples/element_discovery.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/webapp-testing/examples/static_html_automation.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin/webapp-testing/scripts/with_server.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/builtin_registry.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/capabilities.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/catalog.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/config.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/host.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/management.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/metadata.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/models.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/monitor.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/prompting.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/provider.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/resources.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/roots.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/skills/runtime.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/team/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/team/worktree.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/core/verification.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/deepcode.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/deepcode_hku.egg-info/dependency_links.txt +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/deepcode_hku.egg-info/entry_points.txt +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/deepcode_hku.egg-info/top_level.txt +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/eval/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/eval/swebench/README.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/eval/swebench/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/eval/swebench/dataset.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/eval/swebench/evaluate.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/eval/swebench/instance.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/eval/swebench/predict.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/eval/swebench/report.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/eval/swebench/run.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/prompts/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/prompts/code_prompts.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/protocol/app-server.schema.json +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/pyproject.toml +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/schema/mcp-agent.config.schema.json +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/setup.cfg +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_agent_presets.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_agent_runner_kernel.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_agent_session.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_apply_patch.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_autodream.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_automation_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_automation_foreground.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_bedrock_provider.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_catalog.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_ci_installation.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_ci_scope.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_cli_logging_bootstrap.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_code_implementation_workspace.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_code_indexer_concurrent.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_code_indexer_output.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_code_mode.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_collaboration.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_command_executor_native_fence.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_command_guard_egress.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_compaction_memory.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_compaction_retry_memo.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_config_errors.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_config_layering.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_config_layers.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_context_note_sink.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_context_window_overflow.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_cross_process_run_lease.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_desktop_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_desktop_release_scripts.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_diagnostics.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_dictation.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_dictation_local_runner.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_dictation_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_document_conversion.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_env_sanitize.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_evidence_ledger.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_exec_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_exec_sandbox_wiring.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_external_subagent_backend.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_forge_provider.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_fuzzy_replace.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_git_command_url.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_goal_runtime.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_harness_approval.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_harness_permissions.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_harness_policy.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_harness_sandbox.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_hooks.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_init_config.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_llm_events.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_llm_runtime_connections.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_llmops.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_loop_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_loop_detector.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_mcp_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_mcp_oauth.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_mcp_runtime.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_mcp_runtime_lazy.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_mcp_server.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_memory.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_memory_layers.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_model_catalog_service.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_model_compat.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_model_visible_is_logged.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_native_file_tools.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_openspace_recipe.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_opper_provider.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_parts.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_pdf_downloader_security.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_plan_tool.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_platform_compat.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_plugin_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_plugins.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_private_storage.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_private_storage_acl_once.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_private_storage_windows.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_provider_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_provider_credentials.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_provider_egress.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_provider_lifetime.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_provider_oauth.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_provider_protocols.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_provider_timeouts.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_python_distribution_release.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_reasoning.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_reasoning_capabilities.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_reasoning_catalog_alignment.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_reasoning_providers.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_repeat_call_reminder.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_requesty_provider.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_schedule.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_schedule_monitor.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_semantic_hint.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_session_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_session_compaction.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_session_end_lifecycle.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_session_index.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_session_run_lease.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_session_transcript.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_skill_capabilities.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_skill_cli.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_skill_host.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_skill_provider.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_skills.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_skills_product.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_snapshot.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_spawn_agent.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_stdlib_logging_bridge.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_subagent_composition.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_subagent_conversation.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_subagent_late_result.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_swebench_harness.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_team_worktree.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_thinking_requires_capable_model.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_token_meter.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_token_meter_wiring.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_tool_call_timeout.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_tool_description_quality.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_tool_result_pruner.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_transparency_log.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_tui_domain_events.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_tui_thread_client.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_turn_input_mailbox.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_turn_projection.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_turn_queue.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_turn_steering.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_unified_impl_workflow.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_user_input_tool.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_verification.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_version_metadata.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_web_tools.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_workflow_compatibility.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_workflow_interactions.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tests/test_zhipu_thinking_wire.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tools/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tools/code_implementation_server.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tools/code_indexer.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tools/code_reference_indexer.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tools/command_executor.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tools/document_conversion.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tools/document_segmentation_server.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tools/git_command.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tools/indexer_config.yaml +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tools/pdf_converter.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tools/pdf_downloader.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tools/pdf_downloader_server.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/tools/pdf_utils.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/utils/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/utils/file_processor.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/utils/llm_utils.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/utils/loop_detector.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/uv.lock +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/agent_orchestration_engine.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/agents/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/agents/code_implementation_agent.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/agents/document_segmentation_agent.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/agents/memory_agent_concise.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/agents/requirement_analysis_agent.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/code_implementation_workflow.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/codebase_index_workflow.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/environment.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/interactions/USAGE.md +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/interactions/__init__.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/interactions/base.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/interactions/integration.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/interactions/plan_review.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/interactions/requirement_analysis.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/plan_review_runtime.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/planning_runtime.py +0 -0
- {deepcode_hku-2.3.0 → deepcode_hku-2.3.1}/workflows/workflow_context.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deepcode-hku
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.1
|
|
4
4
|
Summary: Open agentic coding with durable sessions, goals, and verification
|
|
5
5
|
Home-page: https://github.com/HKUDS/DeepCode
|
|
6
6
|
Author: DeepCode Team
|
|
@@ -37,7 +37,7 @@ Requires-Dist: openapi
|
|
|
37
37
|
Requires-Dist: pathlib2
|
|
38
38
|
Requires-Dist: prompt_toolkit>=3.0.0
|
|
39
39
|
Requires-Dist: pydantic-settings>=2.14.2
|
|
40
|
-
Requires-Dist: pypdf>=6.
|
|
40
|
+
Requires-Dist: pypdf>=6.19.0
|
|
41
41
|
Requires-Dist: PyYAML>=6.0
|
|
42
42
|
Requires-Dist: reportlab>=3.5.0
|
|
43
43
|
Requires-Dist: rich>=13.0.0
|
|
@@ -47,6 +47,7 @@ Requires-Dist: docling>=2.113.0; extra == "advanced-documents"
|
|
|
47
47
|
Provides-Extra: test
|
|
48
48
|
Requires-Dist: pytest<10,>=8; extra == "test"
|
|
49
49
|
Requires-Dist: pytest-asyncio<2,>=1; extra == "test"
|
|
50
|
+
Requires-Dist: pyte<0.9,>=0.8.2; extra == "test"
|
|
50
51
|
Dynamic: author
|
|
51
52
|
Dynamic: classifier
|
|
52
53
|
Dynamic: description
|
|
@@ -220,6 +221,51 @@ Automations. Use `deepcode`, `deepcode desktop`, or `deepcode web`; see
|
|
|
220
221
|
|
|
221
222
|
## News
|
|
222
223
|
|
|
224
|
+
**2026-10-12 · DeepCode v2.3.1: Markdown answers in the TUI, a Windows service that stays up, `/compact` for coding sessions, and community fixes**
|
|
225
|
+
|
|
226
|
+
- **Answers render as Markdown while they stream.** Headings, lists, bold
|
|
227
|
+
text and tables are formatted as each line completes; code blocks are not
|
|
228
|
+
indented or wrapped by DeepCode, links show their address, and the line
|
|
229
|
+
still being written is previewed above the status line. `/raw` prints
|
|
230
|
+
answers exactly as written, for copying. The reasoning card now comes
|
|
231
|
+
before the answer, and `Ctrl+O` mid-answer no longer repeats or drops
|
|
232
|
+
lines. See [The terminal UI](docs/guide/the-tui.md).
|
|
233
|
+
- **The Windows service stays up.** On a Windows install in a virtual
|
|
234
|
+
environment, the background service no longer stops right after it starts,
|
|
235
|
+
whether the TUI, `deepcode service start`, or `deepcode web` launched it.
|
|
236
|
+
- **`/compact` handles coding sessions.** Tool-call arguments, such as the file
|
|
237
|
+
a `write_file` call carries, now count when compaction picks what to keep and
|
|
238
|
+
checks that the summary is smaller. Sessions that wrote large files compact
|
|
239
|
+
instead of being refused, and the report shows the characters actually
|
|
240
|
+
replaced. (#258)
|
|
241
|
+
- **Community fixes.** Diff lines that contain a Unicode line separator or a
|
|
242
|
+
form feed stay whole (#253); web fetch refuses private addresses tunnelled
|
|
243
|
+
through NAT64 or IPv4-compatible IPv6 (#254); the destructive-command screen
|
|
244
|
+
also catches absolute paths such as `/bin/rm -rf /` (#255); and `glob` finds
|
|
245
|
+
files when the project sits under a directory named `build` or `venv` (#256).
|
|
246
|
+
- **Security updates.** pypdf, PyJWT, urllib3, and multidict move to patched
|
|
247
|
+
releases.
|
|
248
|
+
|
|
249
|
+
**2026-10-10 · A steadier terminal UI: answers shown once, keys that keep your draft, and an orderly `/compact`**
|
|
250
|
+
|
|
251
|
+
- **Answers appear once.** The TUI no longer prints an answer a second time
|
|
252
|
+
when it finishes, and a stopped answer keeps the text already shown, in every
|
|
253
|
+
client.
|
|
254
|
+
- **Keys that keep your draft.** `Esc` interrupts only from an empty prompt and
|
|
255
|
+
otherwise closes a completion menu; `Ctrl+C` first clears what you are
|
|
256
|
+
typing. Stopping a command no longer closes the TUI. See
|
|
257
|
+
[The terminal UI](docs/guide/the-tui.md).
|
|
258
|
+
- **Calm when the service is slow.** Typing, completion, and `Ctrl+C` stay
|
|
259
|
+
responsive while the background service is busy; a slow answer is reported
|
|
260
|
+
instead of retried three times, and `/reconnect` brings your conversation
|
|
261
|
+
back after a restart.
|
|
262
|
+
- **`/compact` waits its turn.** A message sent during compaction waits for the
|
|
263
|
+
summary, the next reply no longer starts with a failed request, and a refusal
|
|
264
|
+
says why instead of "internal error". See [Sessions](docs/guide/sessions.md).
|
|
265
|
+
- **Current settings, safer Goals.** Default model and access changes show up
|
|
266
|
+
in the TUI, `/new` follows your defaults, and `/goal clear out …` sets a new
|
|
267
|
+
objective instead of clearing the Goal.
|
|
268
|
+
|
|
223
269
|
**2026-09-28 · DeepCode v2.3.0: voice dictation, Opper and Bedrock, Desktop polish, and opt-in hardening**
|
|
224
270
|
|
|
225
271
|
- **Dictate your prompt.** Add a `dictation` block to your config and the
|
|
@@ -243,6 +289,9 @@ Automations. Use `deepcode`, `deepcode desktop`, or `deepcode web`; see
|
|
|
243
289
|
DeepCode processes share it, and a round of Windows fixes landed. (#210,
|
|
244
290
|
#235, #236, #237)
|
|
245
291
|
|
|
292
|
+
<details>
|
|
293
|
+
<summary><strong>Earlier updates, August to early September 2026</strong></summary>
|
|
294
|
+
|
|
246
295
|
**2026-09-09 · TUI, Desktop, and Web share one local background service**
|
|
247
296
|
|
|
248
297
|
- **Choose your interface.** Run `deepcode` for the TUI, `deepcode desktop`
|
|
@@ -281,9 +330,6 @@ Start with the updated [Quick start](#quick-start) and
|
|
|
281
330
|
- **Appearance settings speak Simplified Chinese too**, completing the
|
|
282
331
|
Desktop shell's zh-CN coverage. (#202)
|
|
283
332
|
|
|
284
|
-
<details>
|
|
285
|
-
<summary><strong>Earlier updates, August to early September 2026</strong></summary>
|
|
286
|
-
|
|
287
333
|
**2026-09-03 · Desktop catalog race, an honest command screen, GLM-5.2, and two dependency bumps**
|
|
288
334
|
|
|
289
335
|
- **Switching projects no longer strands the MCP catalog.** A probe or
|
|
@@ -1,65 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: deepcode-hku
|
|
3
|
-
Version: 2.3.0
|
|
4
|
-
Summary: Open agentic coding with durable sessions, goals, and verification
|
|
5
|
-
Home-page: https://github.com/HKUDS/DeepCode
|
|
6
|
-
Author: DeepCode Team
|
|
7
|
-
License: MIT
|
|
8
|
-
Project-URL: Documentation, https://github.com/HKUDS/DeepCode#readme
|
|
9
|
-
Project-URL: Source, https://github.com/HKUDS/DeepCode
|
|
10
|
-
Project-URL: Tracker, https://github.com/HKUDS/DeepCode/issues
|
|
11
|
-
Classifier: Development Status :: 4 - Beta
|
|
12
|
-
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
-
Classifier: Operating System :: OS Independent
|
|
16
|
-
Classifier: Intended Audience :: Developers
|
|
17
|
-
Classifier: Intended Audience :: Science/Research
|
|
18
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
|
-
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
20
|
-
Classifier: Topic :: Text Processing :: Linguistic
|
|
21
|
-
Requires-Python: >=3.12
|
|
22
|
-
Description-Content-Type: text/markdown
|
|
23
|
-
License-File: LICENSE
|
|
24
|
-
Requires-Dist: aiofiles>=0.8.0
|
|
25
|
-
Requires-Dist: aiohttp>=3.14.3
|
|
26
|
-
Requires-Dist: anthropic>=0.40.0
|
|
27
|
-
Requires-Dist: asyncio-mqtt
|
|
28
|
-
Requires-Dist: google-genai
|
|
29
|
-
Requires-Dist: httpx>=0.27.0
|
|
30
|
-
Requires-Dist: json-repair>=0.30.0
|
|
31
|
-
Requires-Dist: loguru>=0.7.0
|
|
32
|
-
Requires-Dist: mcp<2,>=1.29
|
|
33
|
-
Requires-Dist: mcp-server-git
|
|
34
|
-
Requires-Dist: nest_asyncio
|
|
35
|
-
Requires-Dist: openai>=1.55.0
|
|
36
|
-
Requires-Dist: openapi
|
|
37
|
-
Requires-Dist: pathlib2
|
|
38
|
-
Requires-Dist: prompt_toolkit>=3.0.0
|
|
39
|
-
Requires-Dist: pydantic-settings>=2.14.2
|
|
40
|
-
Requires-Dist: pypdf>=6.16.1
|
|
41
|
-
Requires-Dist: PyYAML>=6.0
|
|
42
|
-
Requires-Dist: reportlab>=3.5.0
|
|
43
|
-
Requires-Dist: rich>=13.0.0
|
|
44
|
-
Provides-Extra: server
|
|
45
|
-
Provides-Extra: advanced-documents
|
|
46
|
-
Requires-Dist: docling>=2.113.0; extra == "advanced-documents"
|
|
47
|
-
Provides-Extra: test
|
|
48
|
-
Requires-Dist: pytest<10,>=8; extra == "test"
|
|
49
|
-
Requires-Dist: pytest-asyncio<2,>=1; extra == "test"
|
|
50
|
-
Dynamic: author
|
|
51
|
-
Dynamic: classifier
|
|
52
|
-
Dynamic: description
|
|
53
|
-
Dynamic: description-content-type
|
|
54
|
-
Dynamic: home-page
|
|
55
|
-
Dynamic: license
|
|
56
|
-
Dynamic: license-file
|
|
57
|
-
Dynamic: project-url
|
|
58
|
-
Dynamic: provides-extra
|
|
59
|
-
Dynamic: requires-dist
|
|
60
|
-
Dynamic: requires-python
|
|
61
|
-
Dynamic: summary
|
|
62
|
-
|
|
63
1
|
<div align="center">
|
|
64
2
|
|
|
65
3
|
<table style="border: none; margin: 0 auto; padding: 0; border-collapse: collapse;">
|
|
@@ -220,6 +158,51 @@ Automations. Use `deepcode`, `deepcode desktop`, or `deepcode web`; see
|
|
|
220
158
|
|
|
221
159
|
## News
|
|
222
160
|
|
|
161
|
+
**2026-10-12 · DeepCode v2.3.1: Markdown answers in the TUI, a Windows service that stays up, `/compact` for coding sessions, and community fixes**
|
|
162
|
+
|
|
163
|
+
- **Answers render as Markdown while they stream.** Headings, lists, bold
|
|
164
|
+
text and tables are formatted as each line completes; code blocks are not
|
|
165
|
+
indented or wrapped by DeepCode, links show their address, and the line
|
|
166
|
+
still being written is previewed above the status line. `/raw` prints
|
|
167
|
+
answers exactly as written, for copying. The reasoning card now comes
|
|
168
|
+
before the answer, and `Ctrl+O` mid-answer no longer repeats or drops
|
|
169
|
+
lines. See [The terminal UI](docs/guide/the-tui.md).
|
|
170
|
+
- **The Windows service stays up.** On a Windows install in a virtual
|
|
171
|
+
environment, the background service no longer stops right after it starts,
|
|
172
|
+
whether the TUI, `deepcode service start`, or `deepcode web` launched it.
|
|
173
|
+
- **`/compact` handles coding sessions.** Tool-call arguments, such as the file
|
|
174
|
+
a `write_file` call carries, now count when compaction picks what to keep and
|
|
175
|
+
checks that the summary is smaller. Sessions that wrote large files compact
|
|
176
|
+
instead of being refused, and the report shows the characters actually
|
|
177
|
+
replaced. (#258)
|
|
178
|
+
- **Community fixes.** Diff lines that contain a Unicode line separator or a
|
|
179
|
+
form feed stay whole (#253); web fetch refuses private addresses tunnelled
|
|
180
|
+
through NAT64 or IPv4-compatible IPv6 (#254); the destructive-command screen
|
|
181
|
+
also catches absolute paths such as `/bin/rm -rf /` (#255); and `glob` finds
|
|
182
|
+
files when the project sits under a directory named `build` or `venv` (#256).
|
|
183
|
+
- **Security updates.** pypdf, PyJWT, urllib3, and multidict move to patched
|
|
184
|
+
releases.
|
|
185
|
+
|
|
186
|
+
**2026-10-10 · A steadier terminal UI: answers shown once, keys that keep your draft, and an orderly `/compact`**
|
|
187
|
+
|
|
188
|
+
- **Answers appear once.** The TUI no longer prints an answer a second time
|
|
189
|
+
when it finishes, and a stopped answer keeps the text already shown, in every
|
|
190
|
+
client.
|
|
191
|
+
- **Keys that keep your draft.** `Esc` interrupts only from an empty prompt and
|
|
192
|
+
otherwise closes a completion menu; `Ctrl+C` first clears what you are
|
|
193
|
+
typing. Stopping a command no longer closes the TUI. See
|
|
194
|
+
[The terminal UI](docs/guide/the-tui.md).
|
|
195
|
+
- **Calm when the service is slow.** Typing, completion, and `Ctrl+C` stay
|
|
196
|
+
responsive while the background service is busy; a slow answer is reported
|
|
197
|
+
instead of retried three times, and `/reconnect` brings your conversation
|
|
198
|
+
back after a restart.
|
|
199
|
+
- **`/compact` waits its turn.** A message sent during compaction waits for the
|
|
200
|
+
summary, the next reply no longer starts with a failed request, and a refusal
|
|
201
|
+
says why instead of "internal error". See [Sessions](docs/guide/sessions.md).
|
|
202
|
+
- **Current settings, safer Goals.** Default model and access changes show up
|
|
203
|
+
in the TUI, `/new` follows your defaults, and `/goal clear out …` sets a new
|
|
204
|
+
objective instead of clearing the Goal.
|
|
205
|
+
|
|
223
206
|
**2026-09-28 · DeepCode v2.3.0: voice dictation, Opper and Bedrock, Desktop polish, and opt-in hardening**
|
|
224
207
|
|
|
225
208
|
- **Dictate your prompt.** Add a `dictation` block to your config and the
|
|
@@ -243,6 +226,9 @@ Automations. Use `deepcode`, `deepcode desktop`, or `deepcode web`; see
|
|
|
243
226
|
DeepCode processes share it, and a round of Windows fixes landed. (#210,
|
|
244
227
|
#235, #236, #237)
|
|
245
228
|
|
|
229
|
+
<details>
|
|
230
|
+
<summary><strong>Earlier updates, August to early September 2026</strong></summary>
|
|
231
|
+
|
|
246
232
|
**2026-09-09 · TUI, Desktop, and Web share one local background service**
|
|
247
233
|
|
|
248
234
|
- **Choose your interface.** Run `deepcode` for the TUI, `deepcode desktop`
|
|
@@ -281,9 +267,6 @@ Start with the updated [Quick start](#quick-start) and
|
|
|
281
267
|
- **Appearance settings speak Simplified Chinese too**, completing the
|
|
282
268
|
Desktop shell's zh-CN coverage. (#202)
|
|
283
269
|
|
|
284
|
-
<details>
|
|
285
|
-
<summary><strong>Earlier updates, August to early September 2026</strong></summary>
|
|
286
|
-
|
|
287
270
|
**2026-09-03 · Desktop catalog race, an honest command screen, GLM-5.2, and two dependency bumps**
|
|
288
271
|
|
|
289
272
|
- **Switching projects no longer strands the MCP catalog.** A probe or
|
|
@@ -157,6 +157,39 @@ DeepCode 提供 TUI、Desktop 和 Web 三种客户端,连接同一个本地共
|
|
|
157
157
|
|
|
158
158
|
## 新闻
|
|
159
159
|
|
|
160
|
+
**2026-10-12 · DeepCode v2.3.1:TUI 边输出边渲染 Markdown、Windows 后台服务不再自行退出、`/compact` 能压缩写代码的会话,以及社区修复**
|
|
161
|
+
|
|
162
|
+
- **回答边输出边渲染成 Markdown。** 标题、列表、粗体和表格在每行写完时排好;
|
|
163
|
+
代码块不缩进,DeepCode 也不会给它折行;链接显示完整地址;还没写完的那一行
|
|
164
|
+
先在状态行上方预览。`/raw` 按原文输出,方便复制。推理卡片现在显示在回答之前,
|
|
165
|
+
回答途中按 `Ctrl+O` 也不会再重复或丢行。参见[终端界面指南](docs/guide/the-tui.md)。
|
|
166
|
+
- **Windows 后台服务不再自行退出。** 在 Windows 上把 DeepCode 装在虚拟环境里时,
|
|
167
|
+
后台服务刚启动就会退出。现在无论由 TUI、`deepcode service start` 还是
|
|
168
|
+
`deepcode web` 启动,都能正常运行。
|
|
169
|
+
- **`/compact` 能压缩写代码的会话。** 压缩时,工具调用的参数(比如 `write_file`
|
|
170
|
+
写入的整个文件)也会计入:既用于决定保留哪些消息,也用于判断摘要是否更短。
|
|
171
|
+
写过大文件的会话不再被拒绝压缩,提示里的替换字数也准确了。(#258)
|
|
172
|
+
- **社区修复。** 含 Unicode 行分隔符或换页符的行在 diff 里不再被拆开(#253);
|
|
173
|
+
网页抓取会拒绝经 NAT64 或 IPv4 兼容 IPv6 地址访问内网(#254);危险命令筛查
|
|
174
|
+
也能识别 `/bin/rm -rf /` 这类绝对路径写法(#255);项目放在名为 `build` 或
|
|
175
|
+
`venv` 的目录下时,`glob` 也能找到文件(#256)。
|
|
176
|
+
- **安全更新。** pypdf、PyJWT、urllib3、multidict 升级到修补版本。
|
|
177
|
+
|
|
178
|
+
**2026-10-10 · 更稳的终端界面:回答只显示一次、按键不丢草稿、`/compact` 不再抢跑**
|
|
179
|
+
|
|
180
|
+
- **回答只显示一次。** 回答结束时,TUI 不再把整段重新打印一遍;被中断的回答
|
|
181
|
+
会保留已经输出的文字,各个客户端都一样。
|
|
182
|
+
- **按键不丢草稿。** 只有输入框为空时 `Esc` 才中断回合,补全菜单打开时只关闭
|
|
183
|
+
菜单;`Ctrl+C` 先清空正在输入的内容。用 `Ctrl+C` 停止命令不会再让 TUI 退出。
|
|
184
|
+
参见[终端界面指南](docs/guide/the-tui.md)。
|
|
185
|
+
- **后台服务变慢时依然顺畅。** 服务忙时,打字、补全和 `Ctrl+C` 照常响应;请求
|
|
186
|
+
超时会直接说明,不再连续重试三次;服务重启后,`/reconnect` 能接回原来的会话。
|
|
187
|
+
- **`/compact` 不再抢跑。** 压缩期间发来的消息会等摘要完成;压缩后的第一次回答
|
|
188
|
+
不再先失败一次;被拒绝时会说明原因,而不是 "internal error"。参见
|
|
189
|
+
[会话指南](docs/guide/sessions.md)。
|
|
190
|
+
- **设置及时生效,Goal 更安全。** 修改默认模型或权限后,TUI 会显示最新值;
|
|
191
|
+
`/new` 跟随默认设置;`/goal clear out …` 会设为新目标,而不是清掉当前 Goal。
|
|
192
|
+
|
|
160
193
|
**2026-09-28 · DeepCode v2.3.0:语音输入、Opper 与 Bedrock、Desktop 细节打磨,以及可选的安全加固**
|
|
161
194
|
|
|
162
195
|
- **用语音输入提示词。** 在配置中加入 `dictation` 后,Desktop 与 Web 的输入框
|
|
@@ -175,6 +208,9 @@ DeepCode 提供 TUI、Desktop 和 Web 三种客户端,连接同一个本地共
|
|
|
175
208
|
- **各平台更稳定。** 多个 DeepCode 进程共用状态数据库时不再丢失锁,另有一批
|
|
176
209
|
Windows 修复。(#210、#235、#236、#237)
|
|
177
210
|
|
|
211
|
+
<details>
|
|
212
|
+
<summary><strong>2026 年 8 月至 9 月初的更早更新</strong></summary>
|
|
213
|
+
|
|
178
214
|
**2026-09-09 · TUI、Desktop 与 Web 共用一个本地后台**
|
|
179
215
|
|
|
180
216
|
- **选择你习惯的界面。** 运行 `deepcode` 启动 TUI,`deepcode desktop`
|
|
@@ -204,9 +240,6 @@ DeepCode 提供 TUI、Desktop 和 Web 三种客户端,连接同一个本地共
|
|
|
204
240
|
闭合标签会被转义,被投毒的笔记无法伪造指令。(#204)
|
|
205
241
|
- **外观设置也说简体中文了**,Desktop 外壳的 zh-CN 覆盖至此完整。(#202)
|
|
206
242
|
|
|
207
|
-
<details>
|
|
208
|
-
<summary><strong>2026 年 8 月至 9 月初的更早更新</strong></summary>
|
|
209
|
-
|
|
210
243
|
**2026-09-03 · Desktop 目录竞态、更诚实的命令筛查、GLM-5.2 与两项依赖升级**
|
|
211
244
|
|
|
212
245
|
- **切换项目不再让 MCP 目录卡住。** 在一个项目里发起的探测或变更,不会再
|
|
@@ -9,7 +9,7 @@ import threading
|
|
|
9
9
|
import time
|
|
10
10
|
|
|
11
11
|
from app_server.errors import RpcError
|
|
12
|
-
from app_server.native_client import NativeRpcClient
|
|
12
|
+
from app_server.native_client import NativeRpcClient, request_timeout
|
|
13
13
|
from app_server.service_client import ServiceOperationError, ServiceUnavailable
|
|
14
14
|
from app_server.service_state import ServiceFiles
|
|
15
15
|
from core.application.errors import (
|
|
@@ -26,6 +26,7 @@ class RemoteApplicationError(ApplicationError):
|
|
|
26
26
|
super().__init__(str(error), details=error.data.get("details"))
|
|
27
27
|
self.code = error.stable_code
|
|
28
28
|
self.retryable = error.data.get("retryable", False)
|
|
29
|
+
self.timed_out = bool(error.data.get("timedOut", False))
|
|
29
30
|
|
|
30
31
|
|
|
31
32
|
class BlockingServiceClient:
|
|
@@ -95,7 +96,9 @@ class BlockingServiceClient:
|
|
|
95
96
|
raise error_type(str(exc), details=details) from exc
|
|
96
97
|
raise RemoteApplicationError(exc) from exc
|
|
97
98
|
|
|
98
|
-
def reconnect(self, previous=None):
|
|
99
|
+
def reconnect(self, previous=None, *, start: bool = False):
|
|
100
|
+
"""Replace the transport; ``start`` also launches a stopped service."""
|
|
101
|
+
|
|
99
102
|
with self._connection_lock:
|
|
100
103
|
if self._closed:
|
|
101
104
|
raise RuntimeError("Service client is closed")
|
|
@@ -113,7 +116,8 @@ class BlockingServiceClient:
|
|
|
113
116
|
"version": "1",
|
|
114
117
|
"surface": self.surface,
|
|
115
118
|
},
|
|
116
|
-
}
|
|
119
|
+
},
|
|
120
|
+
start=start,
|
|
117
121
|
)
|
|
118
122
|
)
|
|
119
123
|
self.client = candidate
|
|
@@ -142,11 +146,17 @@ class BlockingServiceClient:
|
|
|
142
146
|
)
|
|
143
147
|
return self.run(
|
|
144
148
|
self.client.request(method, original),
|
|
145
|
-
|
|
149
|
+
# Outlive the request's own budget so its error, not
|
|
150
|
+
# this wrapper's, reaches the caller.
|
|
151
|
+
timeout=request_timeout(method) + 15,
|
|
146
152
|
)
|
|
147
153
|
except RemoteApplicationError as exc:
|
|
154
|
+
# A timeout is not retried: the connection is fine and the
|
|
155
|
+
# service is slow, so reconnecting and asking again only
|
|
156
|
+
# tripled the wait (and dropped the event stream twice).
|
|
148
157
|
if (
|
|
149
158
|
not safe
|
|
159
|
+
or exc.timed_out
|
|
150
160
|
or exc.code
|
|
151
161
|
not in {
|
|
152
162
|
"CONNECTION_LOST",
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
import asyncio
|
|
6
5
|
from collections.abc import Callable
|
|
7
6
|
from typing import Any
|
|
8
7
|
|
|
@@ -1039,9 +1038,7 @@ class Dispatcher:
|
|
|
1039
1038
|
|
|
1040
1039
|
def _thread_context_compact(self, params: Params) -> dict[str, Any]:
|
|
1041
1040
|
params.only("threadId")
|
|
1042
|
-
return
|
|
1043
|
-
self.application.turns.compact_live_context(str(params.string("threadId")))
|
|
1044
|
-
)
|
|
1041
|
+
return self.application.turns.run_compaction(str(params.string("threadId")))
|
|
1045
1042
|
|
|
1046
1043
|
def _turn_list(self, params: Params) -> dict[str, Any]:
|
|
1047
1044
|
params.only("threadId", "limit", "offset", "state")
|
|
@@ -16,6 +16,22 @@ from app_server.service_state import ServiceFiles
|
|
|
16
16
|
from core.version import __version__
|
|
17
17
|
|
|
18
18
|
|
|
19
|
+
# Requests that wait on a model or an external process (a provider probe, a
|
|
20
|
+
# /compact summary, an MCP server start that may take up to its configured
|
|
21
|
+
# 300s) legitimately outlast the default budget; the server keeps working on
|
|
22
|
+
# them either way, so timing out early only hides a result that is coming.
|
|
23
|
+
_SLOW_METHOD_TIMEOUTS = {
|
|
24
|
+
"provider/test": 120.0,
|
|
25
|
+
"thread/context/compact": 600.0,
|
|
26
|
+
"mcp/probe": 330.0,
|
|
27
|
+
}
|
|
28
|
+
_DEFAULT_TIMEOUT = 25.0
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def request_timeout(method: str) -> float:
|
|
32
|
+
return _SLOW_METHOD_TIMEOUTS.get(method, _DEFAULT_TIMEOUT)
|
|
33
|
+
|
|
34
|
+
|
|
19
35
|
class NativeRpcClient:
|
|
20
36
|
"""One connection on one event loop; no implicit mutation replay or fallback."""
|
|
21
37
|
|
|
@@ -50,8 +66,10 @@ class NativeRpcClient:
|
|
|
50
66
|
if record.version != __version__:
|
|
51
67
|
raise RpcError(
|
|
52
68
|
-32003,
|
|
53
|
-
"The running service and this client have different versions
|
|
54
|
-
"
|
|
69
|
+
"The running service and this client have different versions "
|
|
70
|
+
f"(service {record.version}, client {__version__}). Finish active "
|
|
71
|
+
"work, then run `deepcode service restart` to start the service "
|
|
72
|
+
"from this installation.",
|
|
55
73
|
stable_code="SERVICE_VERSION_MISMATCH",
|
|
56
74
|
)
|
|
57
75
|
self._session = aiohttp.ClientSession(
|
|
@@ -111,12 +129,9 @@ class NativeRpcClient:
|
|
|
111
129
|
future = asyncio.get_running_loop().create_future()
|
|
112
130
|
self._pending[request_id] = future
|
|
113
131
|
sent = False
|
|
132
|
+
budget = timeout if timeout is not None else request_timeout(method)
|
|
114
133
|
try:
|
|
115
|
-
async with asyncio.timeout(
|
|
116
|
-
timeout
|
|
117
|
-
if timeout is not None
|
|
118
|
-
else (120 if method == "provider/test" else 25)
|
|
119
|
-
):
|
|
134
|
+
async with asyncio.timeout(budget):
|
|
120
135
|
# Once writing starts, failure cannot prove non-admission.
|
|
121
136
|
sent = True
|
|
122
137
|
await socket.send_str(encoded.decode())
|
|
@@ -126,13 +141,32 @@ class NativeRpcClient:
|
|
|
126
141
|
read_only = (
|
|
127
142
|
method in policy.get("readMethods", []) or method == "initialize"
|
|
128
143
|
)
|
|
144
|
+
known = read_only or not sent
|
|
145
|
+
# A timeout is a slow service, not a lost connection: the socket
|
|
146
|
+
# is still good and the answer may still come. Say so, and mark
|
|
147
|
+
# it so callers neither reconnect nor send it again.
|
|
148
|
+
timed_out = isinstance(exc, TimeoutError)
|
|
149
|
+
if not timed_out:
|
|
150
|
+
message = (
|
|
151
|
+
"Service response was lost. Reconnect and inspect the "
|
|
152
|
+
"current state before retrying."
|
|
153
|
+
)
|
|
154
|
+
elif known:
|
|
155
|
+
message = (
|
|
156
|
+
f"The DeepCode service did not answer within {budget:g}s; "
|
|
157
|
+
"it may be busy. Try again in a moment."
|
|
158
|
+
)
|
|
159
|
+
else:
|
|
160
|
+
message = (
|
|
161
|
+
f"The DeepCode service did not confirm this request within "
|
|
162
|
+
f"{budget:g}s; it may still complete. Check the current "
|
|
163
|
+
"state before retrying."
|
|
164
|
+
)
|
|
129
165
|
raise RpcError(
|
|
130
166
|
-32000,
|
|
131
|
-
|
|
132
|
-
stable_code="CONNECTION_LOST"
|
|
133
|
-
|
|
134
|
-
else "RESULT_UNKNOWN",
|
|
135
|
-
data={"retryable": read_only},
|
|
167
|
+
message,
|
|
168
|
+
stable_code="CONNECTION_LOST" if known else "RESULT_UNKNOWN",
|
|
169
|
+
data={"retryable": read_only, "timedOut": timed_out},
|
|
136
170
|
) from exc
|
|
137
171
|
finally:
|
|
138
172
|
self._pending.pop(request_id, None)
|
|
@@ -23,7 +23,12 @@ from app_server.host import ServiceHost
|
|
|
23
23
|
from app_server.errors import RpcError
|
|
24
24
|
from app_server.protocol.codec import decode_request
|
|
25
25
|
from app_server.service_client import ServiceClient, ServiceUnavailable
|
|
26
|
-
from app_server.service_state import
|
|
26
|
+
from app_server.service_state import (
|
|
27
|
+
ServiceFiles,
|
|
28
|
+
ServiceRecord,
|
|
29
|
+
identity_proof,
|
|
30
|
+
launched_instance_id,
|
|
31
|
+
)
|
|
27
32
|
from app_server.websocket import WebSocketTransport
|
|
28
33
|
from app_server.web_surface import WebSurface
|
|
29
34
|
from core.application.application import DeepCodeApplication
|
|
@@ -346,7 +351,7 @@ async def serve(files: ServiceFiles, port: int) -> None:
|
|
|
346
351
|
listener.listen(socket.SOMAXCONN)
|
|
347
352
|
listener.setblocking(False)
|
|
348
353
|
record = ServiceRecord(
|
|
349
|
-
|
|
354
|
+
launched_instance_id(),
|
|
350
355
|
str(files.database),
|
|
351
356
|
os.getpid(),
|
|
352
357
|
listener.getsockname()[1],
|
|
@@ -17,6 +17,17 @@ from core.version import __version__
|
|
|
17
17
|
|
|
18
18
|
SERVICE_PROTOCOL_VERSION = 1
|
|
19
19
|
SERVICE_WORKING_DIRECTORY = Path(__file__).resolve().parents[1]
|
|
20
|
+
# A detached start names the instance it launches, so it can tell its own
|
|
21
|
+
# service from a concurrent winner. PIDs cannot: on Windows a venv's python.exe
|
|
22
|
+
# runs the interpreter as a child, so the service's PID is not the launched one.
|
|
23
|
+
LAUNCH_INSTANCE_ENV = "DEEPCODE_SERVICE_INSTANCE"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def launched_instance_id() -> str:
|
|
27
|
+
value = os.environ.pop(LAUNCH_INSTANCE_ENV, "")
|
|
28
|
+
if len(value) == 32 and all(char in "0123456789abcdef" for char in value):
|
|
29
|
+
return value
|
|
30
|
+
return secrets.token_hex(16)
|
|
20
31
|
|
|
21
32
|
|
|
22
33
|
def service_command(files: ServiceFiles, port: int) -> list[str]:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/xterm-BrP-ENHg.css","assets/LocalMonacoEditor-
|
|
2
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/xterm-BrP-ENHg.css","assets/LocalMonacoEditor-DCuhGEPh.js","assets/rolldown-runtime-QTnfLwEv.js","assets/index-B4STS7MU.js","assets/editor.api-DfsewISI.js","assets/editor-CJEeZjoM.css","assets/jsx-runtime-CIxEorsV.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./index-B4STS7MU.js";import{n,t as r}from"./jsx-runtime-CIxEorsV.js";import{t as i}from"./x-CrqHGWEM.js";import{t as a}from"./useTranslation-CYApFZ2x.js";import{t as o}from"./confirmAction-CndHH5nL.js";import{t as s}from"./itemPresentation-CpLiCTmA.js";import{t as c}from"./useSystemDarkMode-COxZJwQa.js";var l=e(n(),1),u={panel:`_panel_iy7b9_1`,toolbar:`_toolbar_iy7b9_13`,error:`_error_iy7b9_39`,host:`_host_iy7b9_50`},d=class{runtime;terminal;write;truncate;exit;onError;offset=0;observedHead=0;revision=0;active=!0;ended=!1;pending=null;cancelWrite=null;constructor(e,t,n,r,i,a){this.runtime=e,this.terminal=t,this.write=n,this.truncate=r,this.exit=i,this.onError=a}stop(){this.active=!1,this.cancelWrite?.()}receive(e){!this.active||e<=this.offset||(this.observedHead=Math.max(this.observedHead,e),this.pending||this.recover().catch(this.onError))}recover(){return this.active?(this.revision++,this.pending||=this.read(),this.pending):Promise.resolve()}async read(){let e=16*1024;try{for(;this.active;){let t=this.revision,n=this.offset,r,i;for(;;){try{i=await this.runtime.request(`terminal/read`,{threadId:this.terminal.threadId,terminalId:this.terminal.terminalId,offset:this.offset,limit:e,...r===void 0?{}:{through:r}})}catch(t){if(!this.active)return;if(t?.code===`RESPONSE_TOO_LARGE`&&e>4){e=Math.max(4,Math.floor(e/2));continue}throw t}if(!this.active)return;let t=new TextEncoder().encode(i.data).length;if(i.terminalId!==this.terminal.terminalId||i.threadId!==this.terminal.threadId||i.offset<this.offset||!i.truncated&&i.offset!==this.offset||i.nextOffset!==i.offset+t||i.headOffset<i.nextOffset||i.hasMore&&t===0)throw Error(`Terminal output cursor is inconsistent; reopen the terminal view`);if(i.truncated&&this.truncate(),i.data&&await this.render(i.data),!this.active)return;if(this.offset=i.nextOffset,this.observedHead=Math.max(this.observedHead,i.headOffset),r??=i.headOffset,i.truncated&&(r=void 0),i.truncated&&!i.hasMore){this.revision++;break}if(!i.hasMore)break}if(this.observedHead>this.offset&&this.offset===n)throw Error(`Terminal output recovery made no progress`);if(i.exited&&this.offset===i.headOffset&&!i.truncated&&!this.ended&&(this.ended=!0,this.exit(i.exitCode)),t===this.revision&&this.observedHead<=this.offset)return}}finally{this.pending=null}}render(e){return new Promise((t,n)=>{let r=!1,i=e=>{r||(r=!0,this.cancelWrite=null,e===void 0?t():n(e))};this.cancelWrite=()=>i(),Promise.resolve().then(()=>this.active?this.write(e):void 0).then(()=>i(),i)})}},f=r();function p({runtime:e,threadId:n,enabled:r,active:i}){let a=(0,l.useRef)(null),o=(0,l.useRef)(null),s=(0,l.useRef)(null),c=(0,l.useRef)(null),p=(0,l.useRef)(i),m=(0,l.useRef)(null),h=(0,l.useRef)(null),g=(0,l.useRef)(!1),_=(0,l.useRef)(!1),v=(0,l.useRef)(null),y=(0,l.useRef)(!1),b=(0,l.useRef)(0),[x,S]=(0,l.useState)(null),[C,w]=(0,l.useState)(!1),[T,E]=(0,l.useState)(null),[D,O]=(0,l.useState)(!1),[k,A]=(0,l.useState)(!1),j=(0,l.useRef)(!1),M=(0,l.useCallback)(e=>{j.current=e,A(e)},[]),[N,P]=(0,l.useState)(!1),F=(0,l.useCallback)(e=>{E(e instanceof Error?e.message:String(e))},[]),I=(0,l.useCallback)(e=>{o.current?.write(`\r\n[process exited ${e??`unknown`}]\r\n`),w(!0),c.current=null,S(null)},[]),L=(0,l.useCallback)(async t=>{if(v.current?.stop(),v.current=null,o.current?.reset(),c.current=t,S(t),w(!1),!y.current)return;let n=new d(e,t,e=>new Promise(t=>{o.current?o.current.write(e,t):t()}),()=>{o.current?.reset(),o.current?.write(`[Earlier terminal output is no longer available]\r
|
|
3
3
|
`)},I,F);v.current=n,await n.recover()},[I,F,e]);(0,l.useEffect)(()=>{if(!i||!a.current||o.current||g.current)return;g.current=!0;let n=a.current;(async()=>{let[{Terminal:r},{FitAddon:i}]=await Promise.all([t(()=>import(`./xterm-U4TA8lIC.js`),[]),t(()=>import(`./addon-fit-DIOBYJe3.js`),[]),t(()=>Promise.resolve({}),__vite__mapDeps([0]))]);if(_.current)return;let a=new r({cursorBlink:!0,convertEol:!0,fontFamily:`"SFMono-Regular", Consolas, monospace`,fontSize:11,lineHeight:1.25,scrollback:4e3,theme:{background:`#151816`,foreground:`#e6eae7`,cursor:`#929cff`,selectionBackground:`#4d5bd555`}}),l=new i;a.loadAddon(l),a.open(n),o.current=a,s.current=l,h.current=a.onData(t=>{let n=c.current;n&&j.current&&e.request(`terminal/write`,{threadId:n.threadId,terminalId:n.terminalId,data:t}).catch(F)}),m.current=new ResizeObserver(()=>{!p.current||!c.current||!j.current||(l.fit(),e.request(`terminal/resize`,{threadId:c.current.threadId,terminalId:c.current.terminalId,columns:Math.max(20,a.cols),rows:Math.max(5,a.rows)}).catch(F))}),m.current.observe(n),O(!0)})().catch(e=>{g.current=!1,E(e instanceof Error?e.message:String(e))})},[i,F,e]),(0,l.useEffect)(()=>(_.current=!1,()=>{_.current=!0,m.current?.disconnect(),h.current?.dispose(),o.current?.dispose(),m.current=null,h.current=null,o.current=null,s.current=null}),[]),(0,l.useEffect)(()=>{p.current=i,i&&s.current?.fit()},[i]),(0,l.useEffect)(()=>{if(!D||!n)return;o.current?.reset();let t=!1,r=0,i=[],a=++b.current,s=async()=>{let i=++r,a=await e.status();if(t||i!==r)return;if(a.phase!==`ready`){M(!1);return}let s=a.serverInfo?.capabilities.methods??[];if(y.current=s.includes(`terminal/read`)&&s.includes(`terminal/list`),y.current){let{terminals:a}=await e.request(`terminal/list`,{threadId:n});if(t||i!==r)return;let s=v.current?.terminal.terminalId??c.current?.terminalId,l=a.find(e=>e.terminal.terminalId===s)??a.filter(e=>!e.exited).at(-1)??a.at(-1);l?v.current?.terminal.terminalId===l.terminal.terminalId?await v.current.recover():await L(l.terminal):s&&(v.current?.stop(),v.current=null,c.current=null,S(null),w(!0),o.current?.write(`\r
|
|
4
4
|
[Terminal session is no longer available]\r
|
|
5
|
-
`))}!t&&i===r&&M(!0)},l=async e=>{let n=await e;t?n():i.push(n)};return(async()=>{await l(e.onNotification(e=>{if(t)return;let r=v.current?.terminal??c.current;if(e.method===`server.warning`){e.params.replayRequired&&v.current?.recover().catch(F);return}!r||e.method!==`terminal.output`&&e.method!==`terminal.exit`||e.params.threadId!==n||e.params.terminalId!==r.terminalId||(e.method===`terminal.output`?v.current?v.current.receive(e.params.nextOffset??0):o.current?.write(e.params.data):v.current?v.current.recover().catch(F):I(e.params.exitCode))})),!t&&(w(!1),E(null),await l(e.onStatus(e=>{t||(e.phase===`ready`?s().catch(F):(r++,M(!1)))})),t||await s())})().catch(e=>{t||F(e)}),()=>{t=!0,b.current=a+1;for(let e of i)e();v.current?.stop(),v.current=null,c.current=null,S(null),M(!1),P(!1)}},[L,I,D,F,e,M,n]);let R=async()=>{if(!n||!r||N||!k)return;let t=b.current;P(!0),E(null),w(!1),o.current?.clear();try{s.current?.fit();let r=await e.request(`terminal/create`,{threadId:n,columns:Math.max(20,o.current?.cols??80),rows:Math.max(5,o.current?.rows??24)});if(t!==b.current)return;await L(r.terminal),o.current?.focus()}catch(e){t===b.current&&F(e)}finally{t===b.current&&P(!1)}},z=async()=>{let t=c.current;if(!t||N||!k)return;let n=b.current;P(!0);try{if(await e.request(`terminal/close`,{threadId:t.threadId,terminalId:t.terminalId}),n!==b.current)return;v.current?await v.current.recover():I(null)}catch(e){n===b.current&&F(e)}finally{n===b.current&&P(!1)}};return(0,f.jsxs)(`div`,{className:u.panel,"data-active":i,children:[(0,f.jsxs)(`div`,{className:u.toolbar,children:[(0,f.jsx)(`span`,{children:x?`PID ${x.pid}`:C?`Exited`:`No session`}),x?(0,f.jsx)(`button`,{type:`button`,disabled:N||!k,onClick:()=>void z(),children:`Close`}):(0,f.jsx)(`button`,{type:`button`,onClick:()=>void R(),disabled:!r||!D||!k||N,children:`Start terminal`})]}),T?(0,f.jsx)(`p`,{className:u.error,children:T}):null,(0,f.jsx)(`div`,{className:u.host,ref:a})]})}function m(e){return typeof e==`object`&&e&&`message`in e?String(e.message):e instanceof Error?e.message:String(e)}var h={entries:[],entriesTruncated:!1,git:null,diffs:[],tests:[],lastTestRun:null,file:null,draft:``,loading:!1,error:null,gitError:null,testError:null};function g(e,t){let[n,r]=(0,l.useState)(h),i=t?.id??null,a=t?.workspacePath??null,o=(0,l.useRef)(i),s=(0,l.useRef)(0),c=(0,l.useRef)(0);o.current=i;let u=(0,l.useCallback)(async()=>{let t=++s.current;if(!i){r(h);return}r(e=>({...e,loading:!0,error:null,gitError:null,testError:null}));let[n,a,c,l]=await Promise.allSettled([e.request(`file/list`,{threadId:i,depth:4,limit:750}),e.request(`git/status`,{threadId:i}),e.request(`git/diff`,{threadId:i,scope:`all`}),e.request(`test/discover`,{threadId:i})]);t!==s.current||o.current!==i||r(e=>({...e,entries:n.status===`fulfilled`?n.value.entries:[],entriesTruncated:n.status===`fulfilled`&&n.value.truncated,git:a.status===`fulfilled`?a.value.status:null,diffs:c.status===`fulfilled`?c.value.files:[],tests:l.status===`fulfilled`?l.value.commands:[],loading:!1,error:n.status===`rejected`?m(n.reason):null,gitError:a.status===`rejected`?m(a.reason):c.status===`rejected`?m(c.reason):null,testError:l.status===`rejected`?m(l.reason):null}))},[e,i]);(0,l.useEffect)(()=>{r(h),c.current+=1,u()},[u,a]);let d=(0,l.useCallback)(async t=>{if(!i)return;let n=++c.current;r(e=>({...e,loading:!0,error:null}));try{let a=await e.request(`file/read`,{threadId:i,path:t,maxBytes:128*1024});if(n!==c.current||o.current!==i)return;r(e=>({...e,file:a.file,draft:a.file.content,loading:!1}))}catch(e){if(n!==c.current||o.current!==i)return;r(t=>({...t,loading:!1,error:m(e)}))}},[e,i]),f=(0,l.useCallback)(async()=>{if(!i||!n.file||n.file.truncated)return;let t=++c.current,a=n.file.path,s=n.draft;r(e=>({...e,loading:!0,error:null}));try{let l=await e.request(`file/write`,{threadId:i,path:a,content:s,expectedSha256:n.file.sha256});if(t!==c.current||o.current!==i)return;r(e=>({...e,file:l.file,draft:e.draft===s?l.file.content:e.draft,loading:!1})),await u()}catch(e){if(t!==c.current||o.current!==i)return;r(t=>({...t,loading:!1,error:m(e)}))}},[u,e,n.draft,n.file,i]),p=(0,l.useCallback)(async(t,n)=>{if(i){r(e=>({...e,loading:!0,error:null}));try{let a=await e.request(`test/run`,{threadId:i,turnId:t,commandId:n,timeoutSeconds:600});if(o.current!==i)return;r(e=>({...e,lastTestRun:a,loading:!1,testError:null})),await u()}catch(e){if(o.current!==i)return;r(t=>({...t,loading:!1,testError:m(e)}))}}},[u,e,i]),g=(0,l.useCallback)(async t=>{if(i){r(e=>({...e,loading:!0,error:null}));try{if(await e.request(`git/discard`,{threadId:i,path:t.path,expectedRevision:t.revision}),o.current!==i)return;r(e=>({...e,loading:!1})),await u()}catch(e){if(o.current!==i)return;r(t=>({...t,loading:!1,error:m(e)}))}}},[u,e,i]),_=(0,l.useCallback)(async()=>{if(i){r(e=>({...e,loading:!0,error:null}));try{if(await e.request(`git/worktree/create`,{threadId:i}),o.current!==i)return;r(e=>({...e,loading:!1})),await u()}catch(e){if(o.current!==i)return;r(t=>({...t,loading:!1,error:m(e)}))}}},[u,e,i]),v=(0,l.useCallback)(async(t,n=!1)=>{if(i){r(e=>({...e,loading:!0,error:null}));try{if(await e.request(`git/worktree/remove`,{threadId:i,disposition:t,force:n,deleteBranch:!1}),o.current!==i)return;r(e=>({...e,loading:!1})),await u()}catch(e){if(o.current!==i)return;r(t=>({...t,loading:!1,error:m(e)}))}}},[u,e,i]);return(0,l.useMemo)(()=>({...n,refresh:u,openFile:d,setDraft:e=>r(t=>({...t,draft:e})),saveFile:f,runTest:p,discardChange:g,createWorktree:_,resolveWorktree:v}),[_,g,d,u,v,p,f,n])}var _={inspector:`_inspector_1lwv1_1`,tabs:`_tabs_1lwv1_12`,close:`_close_1lwv1_46`,panel:`_panel_1lwv1_64`,content:`_content_1lwv1_70`,artifactPreview:`_artifactPreview_1lwv1_96`,error:`_error_1lwv1_109`,heading:`_heading_1lwv1_125`,outlinedAction:`_outlinedAction_1lwv1_138`,worktreeControl:`_worktreeControl_1lwv1_139`,fileEditor:`_fileEditor_1lwv1_140`,eyebrow:`_eyebrow_1lwv1_158`,diffList:`_diffList_1lwv1_200`,fileDiff:`_fileDiff_1lwv1_205`,diffActions:`_diffActions_1lwv1_238`,binaryNotice:`_binaryNotice_1lwv1_259`,diffHunk:`_diffHunk_1lwv1_266`,hunkHeader:`_hunkHeader_1lwv1_270`,diffLine:`_diffLine_1lwv1_278`,filesView:`_filesView_1lwv1_308`,fileTree:`_fileTree_1lwv1_315`,treeNotice:`_treeNotice_1lwv1_347`,editorLoading:`_editorLoading_1lwv1_389`,editorNotice:`_editorNotice_1lwv1_396`,runStatus:`_runStatus_1lwv1_410`,panelError:`_panelError_1lwv1_429`,artifactList:`_artifactList_1lwv1_438`,testList:`_testList_1lwv1_487`,note:`_note_1lwv1_511`,testResult:`_testResult_1lwv1_521`,detailShortcut:`_detailShortcut_1lwv1_565`,metadata:`_metadata_1lwv1_582`,empty:`_empty_1lwv1_605`,emptyRule:`_emptyRule_1lwv1_625`};function v({label:e,compact:t=!1}){return(0,f.jsxs)(`div`,{className:_.empty,"data-compact":t,children:[(0,f.jsx)(`span`,{className:_.emptyRule,"aria-hidden":`true`}),(0,f.jsx)(`p`,{children:e})]})}function y(e){return{py:`python`,ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,rs:`rust`,json:`json`,md:`markdown`,css:`css`,html:`html`,yaml:`yaml`,yml:`yaml`,toml:`ini`}[e.split(`.`).pop()?.toLowerCase()??``]??`plaintext`}function b(e){return e===null?`directory`:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KiB`:`${(e/(1024*1024)).toFixed(1)} MiB`}function x({runtime:e,workflow:t,artifacts:n}){let[r,i]=(0,l.useState)(null),[a,o]=(0,l.useState)(null),s=async t=>{o(null);try{let n=await e.request(`artifact/read`,{artifactId:t.id});i({id:t.id,content:n.content,directory:n.directory,truncated:n.truncated})}catch(e){o(e instanceof Error?e.message:String(e))}};return(0,f.jsxs)(`div`,{className:_.content,children:[(0,f.jsxs)(`div`,{className:_.heading,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`p`,{className:_.eyebrow,children:`Workflow outputs`}),(0,f.jsx)(`h2`,{children:t?`Attempt ${t.attempt}`:`Artifacts`})]}),t?(0,f.jsx)(`span`,{className:_.runStatus,"data-status":t.status,children:t.status}):null]}),t?.errorMessage?(0,f.jsx)(`p`,{className:_.panelError,children:t.errorMessage}):null,a?(0,f.jsx)(`p`,{className:_.panelError,children:a}):null,n.length?(0,f.jsx)(`div`,{className:_.artifactList,children:n.map(e=>(0,f.jsxs)(`button`,{type:`button`,"data-active":r?.id===e.id,onClick:()=>void s(e),children:[(0,f.jsx)(`span`,{children:e.kind}),(0,f.jsx)(`strong`,{children:e.name}),(0,f.jsx)(`small`,{children:b(e.byteSize)})]},e.id))}):(0,f.jsx)(v,{label:`Verified workflow outputs will appear here.`,compact:!0}),r?(0,f.jsxs)(`div`,{className:_.artifactPreview,children:[r.directory?(0,f.jsx)(`p`,{children:`This artifact is a generated code directory. Browse it from Files.`}):r.content===null?(0,f.jsx)(`p`,{children:`Binary artifacts are recorded but not rendered as text.`}):(0,f.jsx)(`pre`,{children:r.content}),r.truncated?(0,f.jsx)(`small`,{children:`Preview truncated at 128 KiB.`}):null]}):null]})}function S({thread:e,trusted:t,hasActiveTurn:n,workbench:r,onOpenFile:i}){let a=async()=>{let e=!!r.git?.entries.length;e&&!await o(`This worktree has uncommitted changes. Permanently remove it and discard them?`,{confirmLabel:`Remove worktree`})||await r.resolveWorktree(`clean`,e)},s=async(e,t)=>{let n=r.diffs.find(n=>n.path===e&&n.revision===t);!n||!await o(`Discard every staged and unstaged change to ${e}? This cannot be undone.`,{confirmLabel:`Discard changes`})||await r.discardChange(n)};return(0,f.jsxs)(`div`,{className:_.content,children:[(0,f.jsxs)(`div`,{className:_.heading,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`p`,{className:_.eyebrow,children:`Git workspace`}),(0,f.jsx)(`h2`,{children:r.git?.branch??`No Git branch`})]}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>void r.refresh(),children:`Refresh`})]}),e?.worktreePath?(0,f.jsxs)(`div`,{className:_.worktreeControl,children:[(0,f.jsx)(`strong`,{children:`Isolated worktree`}),(0,f.jsx)(`span`,{children:e.worktreePath}),(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`button`,{type:`button`,disabled:!t||n||r.loading,onClick:()=>void r.resolveWorktree(`keep`),children:`Keep worktree`}),(0,f.jsx)(`button`,{type:`button`,disabled:!t||n||r.loading,onClick:()=>void a(),children:`Clean worktree`})]})]}):(0,f.jsx)(`button`,{className:_.outlinedAction,type:`button`,onClick:()=>void r.createWorktree(),disabled:!t||n||!r.git||r.loading,children:`Isolate this Session in a worktree`}),r.gitError?(0,f.jsx)(v,{label:r.gitError,compact:!0}):r.diffs.length?(0,f.jsx)(`div`,{className:_.diffList,children:r.diffs.map(e=>(0,f.jsxs)(`section`,{className:_.fileDiff,children:[(0,f.jsxs)(`header`,{children:[(0,f.jsx)(`strong`,{children:e.path}),(0,f.jsxs)(`span`,{children:[(0,f.jsxs)(`b`,{children:[`+`,e.additions]}),` `,(0,f.jsxs)(`i`,{children:[`−`,e.deletions]})]})]}),(0,f.jsxs)(`div`,{className:_.diffActions,children:[(0,f.jsx)(`button`,{type:`button`,disabled:e.binary||e.status===`deleted`,onClick:()=>i(e.path),children:`Open in editor`}),(0,f.jsx)(`button`,{type:`button`,disabled:!t||n||r.loading,onClick:()=>void s(e.path,e.revision),children:`Discard file`})]}),e.binary?(0,f.jsx)(`p`,{className:_.binaryNotice,children:`Binary file changed`}):e.hunks.map((t,n)=>(0,f.jsxs)(`div`,{className:_.diffHunk,children:[(0,f.jsxs)(`div`,{className:_.hunkHeader,children:[`−`,t.oldStart,`,`,t.oldLines,` +`,t.newStart,`,`,t.newLines]}),t.lines.map((e,t)=>(0,f.jsxs)(`div`,{className:_.diffLine,"data-kind":e.kind,children:[(0,f.jsx)(`span`,{children:e.oldLine??``}),(0,f.jsx)(`span`,{children:e.newLine??``}),(0,f.jsxs)(`code`,{children:[e.kind===`addition`?`+`:e.kind===`deletion`?`−`:` `,e.text]})]},`${e.kind}-${t}`))]},`${e.path}-${n}`))]},e.path))}):(0,f.jsx)(v,{label:`Working tree is clean.`,compact:!0}),n?(0,f.jsx)(`p`,{className:_.note,children:`File changes and worktree operations are locked while a Turn is active.`}):null]})}function C({selected:e,items:t,onSelectItem:n}){return e?(0,f.jsxs)(`div`,{className:_.content,children:[(0,f.jsx)(`p`,{className:_.eyebrow,children:s(e).stage}),(0,f.jsx)(`h2`,{children:e.summary}),(0,f.jsxs)(`dl`,{className:_.metadata,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`dt`,{children:`Kind`}),(0,f.jsx)(`dd`,{children:e.kind.replaceAll(`_`,` `)})]}),(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`dt`,{children:`Status`}),(0,f.jsx)(`dd`,{children:e.status.replaceAll(`_`,` `)})]}),(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`dt`,{children:`Item`}),(0,f.jsx)(`dd`,{children:e.id})]}),(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`dt`,{children:`Turn`}),(0,f.jsx)(`dd`,{children:e.turnId})]})]}),(0,f.jsx)(`h3`,{children:`Structured payload`}),(0,f.jsx)(`pre`,{children:JSON.stringify(e.payload,null,2)})]}):(0,f.jsxs)(`div`,{className:_.content,children:[(0,f.jsx)(v,{label:`Select an activity to inspect it.`,compact:!0}),t.slice(-5).map(e=>(0,f.jsx)(`button`,{className:_.detailShortcut,type:`button`,onClick:()=>n(e.id),children:e.summary},e.id))]})}var w=(0,l.lazy)(()=>t(()=>import(`./LocalMonacoEditor-DCwkx7R9.js`),__vite__mapDeps([1,2,3,4,5,6])));function T({trusted:e,hasActiveTurn:t,workbench:n,onDownload:r}){let[i,a]=(0,l.useState)(null),s=c(),u=!!(n.file&&n.draft!==n.file.content),d=async e=>{u&&!await o(`Discard the unsaved editor draft and open another file? Your edits cannot be recovered.`,{confirmLabel:`Discard draft`})||await n.openFile(e)};return(0,f.jsxs)(`div`,{className:_.filesView,children:[(0,f.jsxs)(`div`,{className:_.fileTree,"aria-label":`Workspace files`,children:[n.entries.map(e=>(0,f.jsxs)(`button`,{type:`button`,disabled:e.kind!==`file`,onClick:()=>void d(e.path),style:{paddingLeft:`${10+(e.path.split(`/`).length-1)*10}px`},children:[(0,f.jsx)(`span`,{"aria-hidden":`true`,children:e.kind===`directory`?`▾`:`·`}),e.name]},e.path)),n.entriesTruncated?(0,f.jsx)(`p`,{className:_.treeNotice,children:`File list limited to the first 750 entries.`}):null]}),n.file?(0,f.jsxs)(`div`,{className:_.fileEditor,children:[(0,f.jsxs)(`header`,{children:[(0,f.jsx)(`span`,{title:n.file.path,children:n.file.path}),(0,f.jsxs)(`div`,{children:[r&&(0,f.jsx)(`button`,{type:`button`,onClick:()=>{a(null),r(n.file.path).catch(e=>a(String(e)))},children:`Download`}),n.file.truncated?(0,f.jsx)(`small`,{children:`Truncated · read-only`}):u?(0,f.jsx)(`small`,{children:`Unsaved`}):null,(0,f.jsx)(`button`,{type:`button`,onClick:()=>void n.saveFile(),disabled:!e||t||n.file.truncated||!u||n.loading,children:`Save`})]})]}),i&&(0,f.jsx)(`p`,{role:`alert`,children:i}),(0,f.jsx)(l.Suspense,{fallback:(0,f.jsx)(`div`,{className:_.editorLoading,children:`Loading editor…`}),children:(0,f.jsx)(w,{height:`100%`,language:y(n.file.path),value:n.draft,onChange:e=>n.setDraft(e??``),theme:s?`vs-dark`:`vs-light`,options:{minimap:{enabled:!1},readOnly:!e||t||n.file.truncated,fontSize:12,lineHeight:20,renderLineHighlight:`line`,scrollBeyondLastLine:!1,wordWrap:`on`,automaticLayout:!0}})}),t?(0,f.jsx)(`p`,{className:_.editorNotice,children:`Editing is locked until the active Turn finishes.`}):null]}):(0,f.jsx)(v,{label:`Select a text file to inspect it.`})]})}function E({trusted:e,hasActiveTurn:t,latestTurn:n,workbench:r}){return(0,f.jsxs)(`div`,{className:_.content,children:[(0,f.jsx)(`p`,{className:_.eyebrow,children:`Verification`}),(0,f.jsx)(`h2`,{children:`Project test commands`}),r.tests.length?(0,f.jsx)(`div`,{className:_.testList,children:r.tests.map(i=>(0,f.jsxs)(`button`,{type:`button`,disabled:!e||t||!n||r.loading,onClick:()=>n&&void r.runTest(n.id,i.id),children:[(0,f.jsx)(`strong`,{children:i.label}),(0,f.jsx)(`code`,{children:i.argv.join(` `)})]},i.id))}):(0,f.jsx)(v,{label:`No supported test command was detected.`,compact:!0}),r.testError?(0,f.jsx)(`p`,{className:_.panelError,children:r.testError}):null,n?t?(0,f.jsx)(`p`,{className:_.note,children:`Verification is locked while a Turn is active.`}):null:(0,f.jsx)(`p`,{className:_.note,children:`Complete a Turn before attaching a durable TestResult.`}),r.lastTestRun?(0,f.jsxs)(`section`,{className:_.testResult,"data-passed":r.lastTestRun.exitCode===0&&!r.lastTestRun.timedOut,"aria-live":`polite`,children:[(0,f.jsxs)(`header`,{children:[(0,f.jsx)(`strong`,{children:r.lastTestRun.command.label}),(0,f.jsxs)(`span`,{children:[r.lastTestRun.timedOut?`Timed out`:`Exit ${r.lastTestRun.exitCode??`unknown`}`,` · `,r.lastTestRun.durationMs,` ms`]})]}),r.lastTestRun.stdout?(0,f.jsx)(`pre`,{children:r.lastTestRun.stdout}):null,r.lastTestRun.stderr?(0,f.jsx)(`pre`,{children:r.lastTestRun.stderr}):null,r.lastTestRun.outputTruncated?(0,f.jsx)(`small`,{children:`Output was truncated to the bounded tail.`}):null]}):null]})}var D=[`changes`,`files`,`artifacts`,`tests`,`terminal`,`details`];function O({runtime:e,thread:t,trusted:n,turns:r,items:o,workflows:s,artifacts:c,selectedItemId:u,tab:d,onSelectItem:m,onTabChange:h,onDirtyChange:v,onClose:y}){let{t:b}=a(),w=g(e,t),O=o.find(e=>e.id===u)??null,k=!!(w.file&&w.draft!==w.file.content),A=(0,l.useMemo)(()=>[...r].sort((e,t)=>t.ordinal-e.ordinal).find(e=>[`completed`,`failed`,`interrupted`].includes(e.status))??null,[r]),j=(0,l.useMemo)(()=>[...s].sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt))[0]??null,[s]),M=r.some(e=>[`queued`,`running`,`waiting_approval`].includes(e.status));(0,l.useEffect)(()=>{if(!k)return;let e=e=>{e.preventDefault(),e.returnValue=``};return window.addEventListener(`beforeunload`,e),()=>window.removeEventListener(`beforeunload`,e)},[k]),(0,l.useEffect)(()=>(v(k),()=>v(!1)),[k,v]);let N=e=>{h(`files`),w.openFile(e)},P=e=>e===`changes`?w.diffs.length||null:e===`artifacts`&&c.length||null,F={changes:b(`inspector.tab.changes`,`changes`),files:b(`inspector.tab.files`,`files`),artifacts:b(`inspector.tab.artifacts`,`artifacts`),tests:b(`inspector.tab.tests`,`tests`),terminal:b(`inspector.tab.terminal`,`terminal`),details:b(`inspector.tab.details`,`details`)};return(0,f.jsxs)(`aside`,{className:_.inspector,"aria-label":b(`inspector.label`,`Inspector`),children:[(0,f.jsx)(`div`,{className:_.tabs,role:`tablist`,"aria-label":b(`inspector.views`,`Inspector views`),children:D.map(e=>(0,f.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":d===e,onClick:()=>h(e),children:[F[e]??e,P(e)?` ${P(e)}`:``]},e))}),(0,f.jsx)(`button`,{className:_.close,type:`button`,onClick:y,"aria-label":b(`inspector.closeReview`,`Close review panel`),children:(0,f.jsx)(i,{size:16})}),(0,f.jsxs)(`div`,{className:_.panel,children:[w.error?(0,f.jsx)(`p`,{className:_.error,children:w.error}):null,d===`changes`?(0,f.jsx)(S,{thread:t,trusted:n,hasActiveTurn:M,workbench:w,onOpenFile:N}):null,d===`files`?(0,f.jsx)(T,{onDownload:e.downloadFile&&t?n=>e.downloadFile(t.id,n):void 0,trusted:n,hasActiveTurn:M,workbench:w}):null,d===`artifacts`?(0,f.jsx)(x,{runtime:e,workflow:j,artifacts:c},t?.id??`no-thread`):null,d===`tests`?(0,f.jsx)(E,{trusted:n,hasActiveTurn:M,latestTurn:A,workbench:w}):null,(0,f.jsx)(p,{runtime:e,threadId:t?.id??null,enabled:n,active:d===`terminal`},t?.id??`no-thread`),d===`details`?(0,f.jsx)(C,{selected:O,items:o,onSelectItem:m}):null]})]})}export{O as Inspector};
|
|
5
|
+
`))}!t&&i===r&&M(!0)},l=async e=>{let n=await e;t?n():i.push(n)};return(async()=>{await l(e.onNotification(e=>{if(t)return;let r=v.current?.terminal??c.current;if(e.method===`server.warning`){e.params.replayRequired&&v.current?.recover().catch(F);return}!r||e.method!==`terminal.output`&&e.method!==`terminal.exit`||e.params.threadId!==n||e.params.terminalId!==r.terminalId||(e.method===`terminal.output`?v.current?v.current.receive(e.params.nextOffset??0):o.current?.write(e.params.data):v.current?v.current.recover().catch(F):I(e.params.exitCode))})),!t&&(w(!1),E(null),await l(e.onStatus(e=>{t||(e.phase===`ready`?s().catch(F):(r++,M(!1)))})),t||await s())})().catch(e=>{t||F(e)}),()=>{t=!0,b.current=a+1;for(let e of i)e();v.current?.stop(),v.current=null,c.current=null,S(null),M(!1),P(!1)}},[L,I,D,F,e,M,n]);let R=async()=>{if(!n||!r||N||!k)return;let t=b.current;P(!0),E(null),w(!1),o.current?.clear();try{s.current?.fit();let r=await e.request(`terminal/create`,{threadId:n,columns:Math.max(20,o.current?.cols??80),rows:Math.max(5,o.current?.rows??24)});if(t!==b.current)return;await L(r.terminal),o.current?.focus()}catch(e){t===b.current&&F(e)}finally{t===b.current&&P(!1)}},z=async()=>{let t=c.current;if(!t||N||!k)return;let n=b.current;P(!0);try{if(await e.request(`terminal/close`,{threadId:t.threadId,terminalId:t.terminalId}),n!==b.current)return;v.current?await v.current.recover():I(null)}catch(e){n===b.current&&F(e)}finally{n===b.current&&P(!1)}};return(0,f.jsxs)(`div`,{className:u.panel,"data-active":i,children:[(0,f.jsxs)(`div`,{className:u.toolbar,children:[(0,f.jsx)(`span`,{children:x?`PID ${x.pid}`:C?`Exited`:`No session`}),x?(0,f.jsx)(`button`,{type:`button`,disabled:N||!k,onClick:()=>void z(),children:`Close`}):(0,f.jsx)(`button`,{type:`button`,onClick:()=>void R(),disabled:!r||!D||!k||N,children:`Start terminal`})]}),T?(0,f.jsx)(`p`,{className:u.error,children:T}):null,(0,f.jsx)(`div`,{className:u.host,ref:a})]})}function m(e){return typeof e==`object`&&e&&`message`in e?String(e.message):e instanceof Error?e.message:String(e)}var h={entries:[],entriesTruncated:!1,git:null,diffs:[],tests:[],lastTestRun:null,file:null,draft:``,loading:!1,error:null,gitError:null,testError:null};function g(e,t){let[n,r]=(0,l.useState)(h),i=t?.id??null,a=t?.workspacePath??null,o=(0,l.useRef)(i),s=(0,l.useRef)(0),c=(0,l.useRef)(0);o.current=i;let u=(0,l.useCallback)(async()=>{let t=++s.current;if(!i){r(h);return}r(e=>({...e,loading:!0,error:null,gitError:null,testError:null}));let[n,a,c,l]=await Promise.allSettled([e.request(`file/list`,{threadId:i,depth:4,limit:750}),e.request(`git/status`,{threadId:i}),e.request(`git/diff`,{threadId:i,scope:`all`}),e.request(`test/discover`,{threadId:i})]);t!==s.current||o.current!==i||r(e=>({...e,entries:n.status===`fulfilled`?n.value.entries:[],entriesTruncated:n.status===`fulfilled`&&n.value.truncated,git:a.status===`fulfilled`?a.value.status:null,diffs:c.status===`fulfilled`?c.value.files:[],tests:l.status===`fulfilled`?l.value.commands:[],loading:!1,error:n.status===`rejected`?m(n.reason):null,gitError:a.status===`rejected`?m(a.reason):c.status===`rejected`?m(c.reason):null,testError:l.status===`rejected`?m(l.reason):null}))},[e,i]);(0,l.useEffect)(()=>{r(h),c.current+=1,u()},[u,a]);let d=(0,l.useCallback)(async t=>{if(!i)return;let n=++c.current;r(e=>({...e,loading:!0,error:null}));try{let a=await e.request(`file/read`,{threadId:i,path:t,maxBytes:128*1024});if(n!==c.current||o.current!==i)return;r(e=>({...e,file:a.file,draft:a.file.content,loading:!1}))}catch(e){if(n!==c.current||o.current!==i)return;r(t=>({...t,loading:!1,error:m(e)}))}},[e,i]),f=(0,l.useCallback)(async()=>{if(!i||!n.file||n.file.truncated)return;let t=++c.current,a=n.file.path,s=n.draft;r(e=>({...e,loading:!0,error:null}));try{let l=await e.request(`file/write`,{threadId:i,path:a,content:s,expectedSha256:n.file.sha256});if(t!==c.current||o.current!==i)return;r(e=>({...e,file:l.file,draft:e.draft===s?l.file.content:e.draft,loading:!1})),await u()}catch(e){if(t!==c.current||o.current!==i)return;r(t=>({...t,loading:!1,error:m(e)}))}},[u,e,n.draft,n.file,i]),p=(0,l.useCallback)(async(t,n)=>{if(i){r(e=>({...e,loading:!0,error:null}));try{let a=await e.request(`test/run`,{threadId:i,turnId:t,commandId:n,timeoutSeconds:600});if(o.current!==i)return;r(e=>({...e,lastTestRun:a,loading:!1,testError:null})),await u()}catch(e){if(o.current!==i)return;r(t=>({...t,loading:!1,testError:m(e)}))}}},[u,e,i]),g=(0,l.useCallback)(async t=>{if(i){r(e=>({...e,loading:!0,error:null}));try{if(await e.request(`git/discard`,{threadId:i,path:t.path,expectedRevision:t.revision}),o.current!==i)return;r(e=>({...e,loading:!1})),await u()}catch(e){if(o.current!==i)return;r(t=>({...t,loading:!1,error:m(e)}))}}},[u,e,i]),_=(0,l.useCallback)(async()=>{if(i){r(e=>({...e,loading:!0,error:null}));try{if(await e.request(`git/worktree/create`,{threadId:i}),o.current!==i)return;r(e=>({...e,loading:!1})),await u()}catch(e){if(o.current!==i)return;r(t=>({...t,loading:!1,error:m(e)}))}}},[u,e,i]),v=(0,l.useCallback)(async(t,n=!1)=>{if(i){r(e=>({...e,loading:!0,error:null}));try{if(await e.request(`git/worktree/remove`,{threadId:i,disposition:t,force:n,deleteBranch:!1}),o.current!==i)return;r(e=>({...e,loading:!1})),await u()}catch(e){if(o.current!==i)return;r(t=>({...t,loading:!1,error:m(e)}))}}},[u,e,i]);return(0,l.useMemo)(()=>({...n,refresh:u,openFile:d,setDraft:e=>r(t=>({...t,draft:e})),saveFile:f,runTest:p,discardChange:g,createWorktree:_,resolveWorktree:v}),[_,g,d,u,v,p,f,n])}var _={inspector:`_inspector_1lwv1_1`,tabs:`_tabs_1lwv1_12`,close:`_close_1lwv1_46`,panel:`_panel_1lwv1_64`,content:`_content_1lwv1_70`,artifactPreview:`_artifactPreview_1lwv1_96`,error:`_error_1lwv1_109`,heading:`_heading_1lwv1_125`,outlinedAction:`_outlinedAction_1lwv1_138`,worktreeControl:`_worktreeControl_1lwv1_139`,fileEditor:`_fileEditor_1lwv1_140`,eyebrow:`_eyebrow_1lwv1_158`,diffList:`_diffList_1lwv1_200`,fileDiff:`_fileDiff_1lwv1_205`,diffActions:`_diffActions_1lwv1_238`,binaryNotice:`_binaryNotice_1lwv1_259`,diffHunk:`_diffHunk_1lwv1_266`,hunkHeader:`_hunkHeader_1lwv1_270`,diffLine:`_diffLine_1lwv1_278`,filesView:`_filesView_1lwv1_308`,fileTree:`_fileTree_1lwv1_315`,treeNotice:`_treeNotice_1lwv1_347`,editorLoading:`_editorLoading_1lwv1_389`,editorNotice:`_editorNotice_1lwv1_396`,runStatus:`_runStatus_1lwv1_410`,panelError:`_panelError_1lwv1_429`,artifactList:`_artifactList_1lwv1_438`,testList:`_testList_1lwv1_487`,note:`_note_1lwv1_511`,testResult:`_testResult_1lwv1_521`,detailShortcut:`_detailShortcut_1lwv1_565`,metadata:`_metadata_1lwv1_582`,empty:`_empty_1lwv1_605`,emptyRule:`_emptyRule_1lwv1_625`};function v({label:e,compact:t=!1}){return(0,f.jsxs)(`div`,{className:_.empty,"data-compact":t,children:[(0,f.jsx)(`span`,{className:_.emptyRule,"aria-hidden":`true`}),(0,f.jsx)(`p`,{children:e})]})}function y(e){return{py:`python`,ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,rs:`rust`,json:`json`,md:`markdown`,css:`css`,html:`html`,yaml:`yaml`,yml:`yaml`,toml:`ini`}[e.split(`.`).pop()?.toLowerCase()??``]??`plaintext`}function b(e){return e===null?`directory`:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KiB`:`${(e/(1024*1024)).toFixed(1)} MiB`}function x({runtime:e,workflow:t,artifacts:n}){let[r,i]=(0,l.useState)(null),[a,o]=(0,l.useState)(null),s=async t=>{o(null);try{let n=await e.request(`artifact/read`,{artifactId:t.id});i({id:t.id,content:n.content,directory:n.directory,truncated:n.truncated})}catch(e){o(e instanceof Error?e.message:String(e))}};return(0,f.jsxs)(`div`,{className:_.content,children:[(0,f.jsxs)(`div`,{className:_.heading,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`p`,{className:_.eyebrow,children:`Workflow outputs`}),(0,f.jsx)(`h2`,{children:t?`Attempt ${t.attempt}`:`Artifacts`})]}),t?(0,f.jsx)(`span`,{className:_.runStatus,"data-status":t.status,children:t.status}):null]}),t?.errorMessage?(0,f.jsx)(`p`,{className:_.panelError,children:t.errorMessage}):null,a?(0,f.jsx)(`p`,{className:_.panelError,children:a}):null,n.length?(0,f.jsx)(`div`,{className:_.artifactList,children:n.map(e=>(0,f.jsxs)(`button`,{type:`button`,"data-active":r?.id===e.id,onClick:()=>void s(e),children:[(0,f.jsx)(`span`,{children:e.kind}),(0,f.jsx)(`strong`,{children:e.name}),(0,f.jsx)(`small`,{children:b(e.byteSize)})]},e.id))}):(0,f.jsx)(v,{label:`Verified workflow outputs will appear here.`,compact:!0}),r?(0,f.jsxs)(`div`,{className:_.artifactPreview,children:[r.directory?(0,f.jsx)(`p`,{children:`This artifact is a generated code directory. Browse it from Files.`}):r.content===null?(0,f.jsx)(`p`,{children:`Binary artifacts are recorded but not rendered as text.`}):(0,f.jsx)(`pre`,{children:r.content}),r.truncated?(0,f.jsx)(`small`,{children:`Preview truncated at 128 KiB.`}):null]}):null]})}function S({thread:e,trusted:t,hasActiveTurn:n,workbench:r,onOpenFile:i}){let a=async()=>{let e=!!r.git?.entries.length;e&&!await o(`This worktree has uncommitted changes. Permanently remove it and discard them?`,{confirmLabel:`Remove worktree`})||await r.resolveWorktree(`clean`,e)},s=async(e,t)=>{let n=r.diffs.find(n=>n.path===e&&n.revision===t);!n||!await o(`Discard every staged and unstaged change to ${e}? This cannot be undone.`,{confirmLabel:`Discard changes`})||await r.discardChange(n)};return(0,f.jsxs)(`div`,{className:_.content,children:[(0,f.jsxs)(`div`,{className:_.heading,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`p`,{className:_.eyebrow,children:`Git workspace`}),(0,f.jsx)(`h2`,{children:r.git?.branch??`No Git branch`})]}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>void r.refresh(),children:`Refresh`})]}),e?.worktreePath?(0,f.jsxs)(`div`,{className:_.worktreeControl,children:[(0,f.jsx)(`strong`,{children:`Isolated worktree`}),(0,f.jsx)(`span`,{children:e.worktreePath}),(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`button`,{type:`button`,disabled:!t||n||r.loading,onClick:()=>void r.resolveWorktree(`keep`),children:`Keep worktree`}),(0,f.jsx)(`button`,{type:`button`,disabled:!t||n||r.loading,onClick:()=>void a(),children:`Clean worktree`})]})]}):(0,f.jsx)(`button`,{className:_.outlinedAction,type:`button`,onClick:()=>void r.createWorktree(),disabled:!t||n||!r.git||r.loading,children:`Isolate this Session in a worktree`}),r.gitError?(0,f.jsx)(v,{label:r.gitError,compact:!0}):r.diffs.length?(0,f.jsx)(`div`,{className:_.diffList,children:r.diffs.map(e=>(0,f.jsxs)(`section`,{className:_.fileDiff,children:[(0,f.jsxs)(`header`,{children:[(0,f.jsx)(`strong`,{children:e.path}),(0,f.jsxs)(`span`,{children:[(0,f.jsxs)(`b`,{children:[`+`,e.additions]}),` `,(0,f.jsxs)(`i`,{children:[`−`,e.deletions]})]})]}),(0,f.jsxs)(`div`,{className:_.diffActions,children:[(0,f.jsx)(`button`,{type:`button`,disabled:e.binary||e.status===`deleted`,onClick:()=>i(e.path),children:`Open in editor`}),(0,f.jsx)(`button`,{type:`button`,disabled:!t||n||r.loading,onClick:()=>void s(e.path,e.revision),children:`Discard file`})]}),e.binary?(0,f.jsx)(`p`,{className:_.binaryNotice,children:`Binary file changed`}):e.hunks.map((t,n)=>(0,f.jsxs)(`div`,{className:_.diffHunk,children:[(0,f.jsxs)(`div`,{className:_.hunkHeader,children:[`−`,t.oldStart,`,`,t.oldLines,` +`,t.newStart,`,`,t.newLines]}),t.lines.map((e,t)=>(0,f.jsxs)(`div`,{className:_.diffLine,"data-kind":e.kind,children:[(0,f.jsx)(`span`,{children:e.oldLine??``}),(0,f.jsx)(`span`,{children:e.newLine??``}),(0,f.jsxs)(`code`,{children:[e.kind===`addition`?`+`:e.kind===`deletion`?`−`:` `,e.text]})]},`${e.kind}-${t}`))]},`${e.path}-${n}`))]},e.path))}):(0,f.jsx)(v,{label:`Working tree is clean.`,compact:!0}),n?(0,f.jsx)(`p`,{className:_.note,children:`File changes and worktree operations are locked while a Turn is active.`}):null]})}function C({selected:e,items:t,onSelectItem:n}){return e?(0,f.jsxs)(`div`,{className:_.content,children:[(0,f.jsx)(`p`,{className:_.eyebrow,children:s(e).stage}),(0,f.jsx)(`h2`,{children:e.summary}),(0,f.jsxs)(`dl`,{className:_.metadata,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`dt`,{children:`Kind`}),(0,f.jsx)(`dd`,{children:e.kind.replaceAll(`_`,` `)})]}),(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`dt`,{children:`Status`}),(0,f.jsx)(`dd`,{children:e.status.replaceAll(`_`,` `)})]}),(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`dt`,{children:`Item`}),(0,f.jsx)(`dd`,{children:e.id})]}),(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`dt`,{children:`Turn`}),(0,f.jsx)(`dd`,{children:e.turnId})]})]}),(0,f.jsx)(`h3`,{children:`Structured payload`}),(0,f.jsx)(`pre`,{children:JSON.stringify(e.payload,null,2)})]}):(0,f.jsxs)(`div`,{className:_.content,children:[(0,f.jsx)(v,{label:`Select an activity to inspect it.`,compact:!0}),t.slice(-5).map(e=>(0,f.jsx)(`button`,{className:_.detailShortcut,type:`button`,onClick:()=>n(e.id),children:e.summary},e.id))]})}var w=(0,l.lazy)(()=>t(()=>import(`./LocalMonacoEditor-DCuhGEPh.js`),__vite__mapDeps([1,2,3,4,5,6])));function T({trusted:e,hasActiveTurn:t,workbench:n,onDownload:r}){let[i,a]=(0,l.useState)(null),s=c(),u=!!(n.file&&n.draft!==n.file.content),d=async e=>{u&&!await o(`Discard the unsaved editor draft and open another file? Your edits cannot be recovered.`,{confirmLabel:`Discard draft`})||await n.openFile(e)};return(0,f.jsxs)(`div`,{className:_.filesView,children:[(0,f.jsxs)(`div`,{className:_.fileTree,"aria-label":`Workspace files`,children:[n.entries.map(e=>(0,f.jsxs)(`button`,{type:`button`,disabled:e.kind!==`file`,onClick:()=>void d(e.path),style:{paddingLeft:`${10+(e.path.split(`/`).length-1)*10}px`},children:[(0,f.jsx)(`span`,{"aria-hidden":`true`,children:e.kind===`directory`?`▾`:`·`}),e.name]},e.path)),n.entriesTruncated?(0,f.jsx)(`p`,{className:_.treeNotice,children:`File list limited to the first 750 entries.`}):null]}),n.file?(0,f.jsxs)(`div`,{className:_.fileEditor,children:[(0,f.jsxs)(`header`,{children:[(0,f.jsx)(`span`,{title:n.file.path,children:n.file.path}),(0,f.jsxs)(`div`,{children:[r&&(0,f.jsx)(`button`,{type:`button`,onClick:()=>{a(null),r(n.file.path).catch(e=>a(String(e)))},children:`Download`}),n.file.truncated?(0,f.jsx)(`small`,{children:`Truncated · read-only`}):u?(0,f.jsx)(`small`,{children:`Unsaved`}):null,(0,f.jsx)(`button`,{type:`button`,onClick:()=>void n.saveFile(),disabled:!e||t||n.file.truncated||!u||n.loading,children:`Save`})]})]}),i&&(0,f.jsx)(`p`,{role:`alert`,children:i}),(0,f.jsx)(l.Suspense,{fallback:(0,f.jsx)(`div`,{className:_.editorLoading,children:`Loading editor…`}),children:(0,f.jsx)(w,{height:`100%`,language:y(n.file.path),value:n.draft,onChange:e=>n.setDraft(e??``),theme:s?`vs-dark`:`vs-light`,options:{minimap:{enabled:!1},readOnly:!e||t||n.file.truncated,fontSize:12,lineHeight:20,renderLineHighlight:`line`,scrollBeyondLastLine:!1,wordWrap:`on`,automaticLayout:!0}})}),t?(0,f.jsx)(`p`,{className:_.editorNotice,children:`Editing is locked until the active Turn finishes.`}):null]}):(0,f.jsx)(v,{label:`Select a text file to inspect it.`})]})}function E({trusted:e,hasActiveTurn:t,latestTurn:n,workbench:r}){return(0,f.jsxs)(`div`,{className:_.content,children:[(0,f.jsx)(`p`,{className:_.eyebrow,children:`Verification`}),(0,f.jsx)(`h2`,{children:`Project test commands`}),r.tests.length?(0,f.jsx)(`div`,{className:_.testList,children:r.tests.map(i=>(0,f.jsxs)(`button`,{type:`button`,disabled:!e||t||!n||r.loading,onClick:()=>n&&void r.runTest(n.id,i.id),children:[(0,f.jsx)(`strong`,{children:i.label}),(0,f.jsx)(`code`,{children:i.argv.join(` `)})]},i.id))}):(0,f.jsx)(v,{label:`No supported test command was detected.`,compact:!0}),r.testError?(0,f.jsx)(`p`,{className:_.panelError,children:r.testError}):null,n?t?(0,f.jsx)(`p`,{className:_.note,children:`Verification is locked while a Turn is active.`}):null:(0,f.jsx)(`p`,{className:_.note,children:`Complete a Turn before attaching a durable TestResult.`}),r.lastTestRun?(0,f.jsxs)(`section`,{className:_.testResult,"data-passed":r.lastTestRun.exitCode===0&&!r.lastTestRun.timedOut,"aria-live":`polite`,children:[(0,f.jsxs)(`header`,{children:[(0,f.jsx)(`strong`,{children:r.lastTestRun.command.label}),(0,f.jsxs)(`span`,{children:[r.lastTestRun.timedOut?`Timed out`:`Exit ${r.lastTestRun.exitCode??`unknown`}`,` · `,r.lastTestRun.durationMs,` ms`]})]}),r.lastTestRun.stdout?(0,f.jsx)(`pre`,{children:r.lastTestRun.stdout}):null,r.lastTestRun.stderr?(0,f.jsx)(`pre`,{children:r.lastTestRun.stderr}):null,r.lastTestRun.outputTruncated?(0,f.jsx)(`small`,{children:`Output was truncated to the bounded tail.`}):null]}):null]})}var D=[`changes`,`files`,`artifacts`,`tests`,`terminal`,`details`];function O({runtime:e,thread:t,trusted:n,turns:r,items:o,workflows:s,artifacts:c,selectedItemId:u,tab:d,onSelectItem:m,onTabChange:h,onDirtyChange:v,onClose:y}){let{t:b}=a(),w=g(e,t),O=o.find(e=>e.id===u)??null,k=!!(w.file&&w.draft!==w.file.content),A=(0,l.useMemo)(()=>[...r].sort((e,t)=>t.ordinal-e.ordinal).find(e=>[`completed`,`failed`,`interrupted`].includes(e.status))??null,[r]),j=(0,l.useMemo)(()=>[...s].sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt))[0]??null,[s]),M=r.some(e=>[`queued`,`running`,`waiting_approval`].includes(e.status));(0,l.useEffect)(()=>{if(!k)return;let e=e=>{e.preventDefault(),e.returnValue=``};return window.addEventListener(`beforeunload`,e),()=>window.removeEventListener(`beforeunload`,e)},[k]),(0,l.useEffect)(()=>(v(k),()=>v(!1)),[k,v]);let N=e=>{h(`files`),w.openFile(e)},P=e=>e===`changes`?w.diffs.length||null:e===`artifacts`&&c.length||null,F={changes:b(`inspector.tab.changes`,`changes`),files:b(`inspector.tab.files`,`files`),artifacts:b(`inspector.tab.artifacts`,`artifacts`),tests:b(`inspector.tab.tests`,`tests`),terminal:b(`inspector.tab.terminal`,`terminal`),details:b(`inspector.tab.details`,`details`)};return(0,f.jsxs)(`aside`,{className:_.inspector,"aria-label":b(`inspector.label`,`Inspector`),children:[(0,f.jsx)(`div`,{className:_.tabs,role:`tablist`,"aria-label":b(`inspector.views`,`Inspector views`),children:D.map(e=>(0,f.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":d===e,onClick:()=>h(e),children:[F[e]??e,P(e)?` ${P(e)}`:``]},e))}),(0,f.jsx)(`button`,{className:_.close,type:`button`,onClick:y,"aria-label":b(`inspector.closeReview`,`Close review panel`),children:(0,f.jsx)(i,{size:16})}),(0,f.jsxs)(`div`,{className:_.panel,children:[w.error?(0,f.jsx)(`p`,{className:_.error,children:w.error}):null,d===`changes`?(0,f.jsx)(S,{thread:t,trusted:n,hasActiveTurn:M,workbench:w,onOpenFile:N}):null,d===`files`?(0,f.jsx)(T,{onDownload:e.downloadFile&&t?n=>e.downloadFile(t.id,n):void 0,trusted:n,hasActiveTurn:M,workbench:w}):null,d===`artifacts`?(0,f.jsx)(x,{runtime:e,workflow:j,artifacts:c},t?.id??`no-thread`):null,d===`tests`?(0,f.jsx)(E,{trusted:n,hasActiveTurn:M,latestTurn:A,workbench:w}):null,(0,f.jsx)(p,{runtime:e,threadId:t?.id??null,enabled:n,active:d===`terminal`},t?.id??`no-thread`),d===`details`?(0,f.jsx)(C,{selected:O,items:o,onSelectItem:m}):null]})]})}export{O as Inspector};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/html-DmJuEt5_.js","assets/editor.api-DfsewISI.js","assets/rolldown-runtime-QTnfLwEv.js","assets/editor-CJEeZjoM.css","assets/javascript-MLwwUW_7.js","assets/typescript-CGPudguY.js","assets/python-DJ9JSdOX.js","assets/yaml-CZqRoqwh.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./index-
|
|
2
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./index-B4STS7MU.js";import{t as n}from"./editor.api-DfsewISI.js";import{n as r,t as i}from"./jsx-runtime-CIxEorsV.js";function a(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function o(e){if(Array.isArray(e))return e}function s(e,t,n){return(t=g(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t!==0)for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function l(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
3
3
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function d(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?u(Object(n),!0).forEach(function(t){s(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function f(e,t){if(e==null)return{};var n,r,i=p(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function p(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function m(e,t){return o(e)||c(e,t)||_(e,t)||l()}function h(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function g(e){var t=h(e,`string`);return typeof t==`symbol`?t:t+``}function _(e,t){if(e){if(typeof e==`string`)return a(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(e,t):void 0}}function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function b(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?y(Object(n),!0).forEach(function(t){v(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):y(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function x(){var e=[...arguments];return function(t){return e.reduceRight(function(e,t){return t(e)},t)}}function S(e){return function t(){var n=this,r=[...arguments];return r.length>=e.length?e.apply(this,r):function(){var e=[...arguments];return t.apply(n,[].concat(r,e))}}}function C(e){return{}.toString.call(e).includes(`Object`)}function w(e){return!Object.keys(e).length}function T(e){return typeof e==`function`}function E(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function D(e,t){return C(t)||j(`changeType`),Object.keys(t).some(function(t){return!E(e,t)})&&j(`changeField`),t}function O(e){T(e)||j(`selectorType`)}function k(e){T(e)||C(e)||j(`handlerType`),C(e)&&Object.values(e).some(function(e){return!T(e)})&&j(`handlersType`)}function A(e){e||j(`initialIsRequired`),C(e)||j(`initialType`),w(e)&&j(`initialContent`)}function ee(e,t){throw Error(e[t]||e.default)}var j=S(ee)({initialIsRequired:`initial state is required`,initialType:`initial state should be an object`,initialContent:`initial state shouldn't be an empty object`,handlerType:`handler should be an object or a function`,handlersType:`all handlers should be a functions`,selectorType:`selector should be a function`,changeType:`provided value of changes should be an object`,changeField:`it seams you want to change a field in the state which is not specified in the "initial" state`,default:"an unknown error accured in `state-local` package"}),M={changes:D,selector:O,handler:k,initial:A};function N(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};M.initial(e),M.handler(t);var n={current:e},r=S(te)(n,t),i=S(F)(n),a=S(M.changes)(e),o=S(P)(n);function s(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:function(e){return e};return M.selector(e),e(n.current)}function c(e){x(r,i,a,o)(e)}return[s,c]}function P(e,t){return T(t)?t(e.current):t}function F(e,t){return e.current=b(b({},e.current),t),t}function te(e,t,n){return T(t)?t(e.current):Object.keys(n).forEach(function(n){return t[n]?.call(t,e.current[n])}),n}var ne={create:N},re={paths:{vs:`https://cdn.jsdelivr.net/npm/monaco-editor@0.55.1/min/vs`}};function ie(e){return function t(){var n=this,r=[...arguments];return r.length>=e.length?e.apply(this,r):function(){var e=[...arguments];return t.apply(n,[].concat(r,e))}}}function ae(e){return{}.toString.call(e).includes(`Object`)}function oe(e){return e||L(`configIsRequired`),ae(e)||L(`configType`),e.urls?(se(),{paths:{vs:e.urls.monacoBase}}):e}function se(){console.warn(I.deprecation)}function ce(e,t){throw Error(e[t]||e.default)}var I={configIsRequired:`the configuration object is required`,configType:`the configuration object should be an object`,default:"an unknown error accured in `@monaco-editor/loader` package",deprecation:`Deprecation warning!
|
|
4
4
|
You are using deprecated way of configuration.
|
|
5
5
|
|