@jingyi0605/codingns4dsh 0.2.1-beta.4 → 0.2.1-beta.6
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.
- package/README.en.md +134 -159
- package/README.md +128 -261
- package/assets/provider-icons/doubao.png +0 -0
- package/data/build/dist/client/account-bar.d.ts +1 -1
- package/data/build/dist/client/account-bar.d.ts.map +1 -1
- package/data/build/dist/client/account-bar.js +22 -14
- package/data/build/dist/client/account-bar.js.map +1 -1
- package/data/build/dist/client/adapter-catalog-watch.d.ts +8 -0
- package/data/build/dist/client/adapter-catalog-watch.d.ts.map +1 -0
- package/data/build/dist/client/adapter-catalog-watch.js +79 -0
- package/data/build/dist/client/adapter-catalog-watch.js.map +1 -0
- package/data/build/dist/client/avatar/catalog-panel.d.ts +1 -1
- package/data/build/dist/client/avatar/catalog-panel.d.ts.map +1 -1
- package/data/build/dist/client/avatar/catalog-panel.js +13 -11
- package/data/build/dist/client/avatar/catalog-panel.js.map +1 -1
- package/data/build/dist/client/avatar/engine.d.ts.map +1 -1
- package/data/build/dist/client/avatar/engine.js +26 -7
- package/data/build/dist/client/avatar/engine.js.map +1 -1
- package/data/build/dist/client/avatar/live2d.d.ts +2 -0
- package/data/build/dist/client/avatar/live2d.d.ts.map +1 -1
- package/data/build/dist/client/avatar/live2d.js +16 -6
- package/data/build/dist/client/avatar/live2d.js.map +1 -1
- package/data/build/dist/client/avatar/manager.d.ts.map +1 -1
- package/data/build/dist/client/avatar/manager.js +8 -2
- package/data/build/dist/client/avatar/manager.js.map +1 -1
- package/data/build/dist/client/avatar/slot.d.ts.map +1 -1
- package/data/build/dist/client/avatar/slot.js +4 -1
- package/data/build/dist/client/avatar/slot.js.map +1 -1
- package/data/build/dist/client/bundle.js +48459 -98385
- package/data/build/dist/client/bundle.js.map +1 -1
- package/data/build/dist/client/cli-catalog.d.ts +5 -0
- package/data/build/dist/client/cli-catalog.d.ts.map +1 -1
- package/data/build/dist/client/cli-catalog.js +15 -0
- package/data/build/dist/client/cli-catalog.js.map +1 -1
- package/data/build/dist/client/cli-slots.d.ts.map +1 -1
- package/data/build/dist/client/cli-slots.js +7 -45
- package/data/build/dist/client/cli-slots.js.map +1 -1
- package/data/build/dist/client/client.assistant-configuration-view.js +4526 -0
- package/data/build/dist/client/client.assistant-configuration-view.js.map +1 -0
- package/data/build/dist/client/client.assistant-debug-workbench.js +764 -0
- package/data/build/dist/client/client.assistant-debug-workbench.js.map +1 -0
- package/data/build/dist/client/client.assistant-prompt-editor.js +76 -0
- package/data/build/dist/client/client.assistant-prompt-editor.js.map +1 -0
- package/data/build/dist/client/client.assistant-prompts.js +44 -0
- package/data/build/dist/client/client.assistant-prompts.js.map +1 -0
- package/data/build/dist/client/client.assistant-voice-sessions.js +144 -0
- package/data/build/dist/client/client.assistant-voice-sessions.js.map +1 -0
- package/data/build/dist/client/client.assistant-workbench.js +2929 -0
- package/data/build/dist/client/client.assistant-workbench.js.map +1 -0
- package/data/build/dist/client/client.delegate-command.js +1315 -0
- package/data/build/dist/client/client.delegate-command.js.map +1 -0
- package/data/build/dist/client/client.editor-engine.js +32486 -0
- package/data/build/dist/client/client.editor-engine.js.map +1 -0
- package/data/build/dist/client/client.manager.js +3454 -0
- package/data/build/dist/client/client.manager.js.map +1 -0
- package/data/build/dist/client/client.model-catalog-cache.js +543 -0
- package/data/build/dist/client/client.model-catalog-cache.js.map +1 -0
- package/data/build/dist/client/client.native-workspace-store.js +689 -0
- package/data/build/dist/client/client.native-workspace-store.js.map +1 -0
- package/data/build/dist/client/client.primitives-adapter.js +333 -0
- package/data/build/dist/client/client.primitives-adapter.js.map +1 -0
- package/data/build/dist/client/client.react-dom.js +7286 -0
- package/data/build/dist/client/client.react-dom.js.map +1 -0
- package/data/build/dist/client/client.rolldown-runtime.js +59 -0
- package/data/build/dist/client/client.theme.js +386 -0
- package/data/build/dist/client/client.theme.js.map +1 -0
- package/data/build/dist/client/client.transport.js +3323 -0
- package/data/build/dist/client/client.transport.js.map +1 -0
- package/data/build/dist/client/client.xterm-engine.js +13064 -0
- package/data/build/dist/client/client.xterm-engine.js.map +1 -0
- package/data/build/dist/client/debug/ui.d.ts.map +1 -1
- package/data/build/dist/client/debug/ui.js +14 -5
- package/data/build/dist/client/debug/ui.js.map +1 -1
- package/data/build/dist/client/desktop-assistant.js +19 -5
- package/data/build/dist/client/editor-engine.d.ts +4 -0
- package/data/build/dist/client/editor-engine.d.ts.map +1 -0
- package/data/build/dist/client/editor-engine.js +50 -0
- package/data/build/dist/client/editor-engine.js.map +1 -0
- package/data/build/dist/client/engine-loader.d.ts +5 -0
- package/data/build/dist/client/engine-loader.d.ts.map +1 -0
- package/data/build/dist/client/engine-loader.js +35 -0
- package/data/build/dist/client/engine-loader.js.map +1 -0
- package/data/build/dist/client/features/assistant-configuration-loader.d.ts +14 -0
- package/data/build/dist/client/features/assistant-configuration-loader.d.ts.map +1 -0
- package/data/build/dist/client/features/assistant-configuration-loader.js +13 -0
- package/data/build/dist/client/features/assistant-configuration-loader.js.map +1 -0
- package/data/build/dist/client/features/assistant-configuration-session.d.ts.map +1 -1
- package/data/build/dist/client/features/assistant-configuration-session.js +13 -4
- package/data/build/dist/client/features/assistant-configuration-session.js.map +1 -1
- package/data/build/dist/client/features/assistant-configuration-view.d.ts +66 -0
- package/data/build/dist/client/features/assistant-configuration-view.d.ts.map +1 -0
- package/data/build/dist/client/features/assistant-configuration-view.js +133 -0
- package/data/build/dist/client/features/assistant-configuration-view.js.map +1 -0
- package/data/build/dist/client/features/assistant-debug-workbench.d.ts +4 -11
- package/data/build/dist/client/features/assistant-debug-workbench.d.ts.map +1 -1
- package/data/build/dist/client/features/assistant-debug-workbench.js +41 -68
- package/data/build/dist/client/features/assistant-debug-workbench.js.map +1 -1
- package/data/build/dist/client/features/assistant-display-store.d.ts +57 -0
- package/data/build/dist/client/features/assistant-display-store.d.ts.map +1 -0
- package/data/build/dist/client/features/assistant-display-store.js +189 -0
- package/data/build/dist/client/features/assistant-display-store.js.map +1 -0
- package/data/build/dist/client/features/assistant-prompt-editor.d.ts +12 -0
- package/data/build/dist/client/features/assistant-prompt-editor.d.ts.map +1 -0
- package/data/build/dist/client/features/assistant-prompt-editor.js +14 -0
- package/data/build/dist/client/features/assistant-prompt-editor.js.map +1 -0
- package/data/build/dist/client/features/assistant-view-loader.d.ts +17 -0
- package/data/build/dist/client/features/assistant-view-loader.d.ts.map +1 -0
- package/data/build/dist/client/features/assistant-view-loader.js +49 -0
- package/data/build/dist/client/features/assistant-view-loader.js.map +1 -0
- package/data/build/dist/client/features/assistant-workbench.d.ts +1 -60
- package/data/build/dist/client/features/assistant-workbench.d.ts.map +1 -1
- package/data/build/dist/client/features/assistant-workbench.js +41 -169
- package/data/build/dist/client/features/assistant-workbench.js.map +1 -1
- package/data/build/dist/client/features/cli-adapters.d.ts.map +1 -1
- package/data/build/dist/client/features/cli-adapters.js +44 -13
- package/data/build/dist/client/features/cli-adapters.js.map +1 -1
- package/data/build/dist/client/features/global-voice-assistant.d.ts.map +1 -1
- package/data/build/dist/client/features/global-voice-assistant.js +33 -27
- package/data/build/dist/client/features/global-voice-assistant.js.map +1 -1
- package/data/build/dist/client/features/peer-host.d.ts +2 -1
- package/data/build/dist/client/features/peer-host.d.ts.map +1 -1
- package/data/build/dist/client/features/peer-host.js +124 -58
- package/data/build/dist/client/features/peer-host.js.map +1 -1
- package/data/build/dist/client/features/workspace-session-enhancement.d.ts.map +1 -1
- package/data/build/dist/client/features/workspace-session-enhancement.js +37 -10
- package/data/build/dist/client/features/workspace-session-enhancement.js.map +1 -1
- package/data/build/dist/client/file-management-dom.d.ts +3 -1
- package/data/build/dist/client/file-management-dom.d.ts.map +1 -1
- package/data/build/dist/client/file-management-dom.js +85 -79
- package/data/build/dist/client/file-management-dom.js.map +1 -1
- package/data/build/dist/client/git-management.d.ts +1 -1
- package/data/build/dist/client/git-management.d.ts.map +1 -1
- package/data/build/dist/client/git-management.js +46 -27
- package/data/build/dist/client/git-management.js.map +1 -1
- package/data/build/dist/client/locale.d.ts.map +1 -1
- package/data/build/dist/client/locale.js +10 -0
- package/data/build/dist/client/locale.js.map +1 -1
- package/data/build/dist/client/locales/assistantAvatar.d.ts +1 -1
- package/data/build/dist/client/locales/assistantAvatar.js +2 -2
- package/data/build/dist/client/locales/assistantAvatar.js.map +1 -1
- package/data/build/dist/client/locales/fileWorkspace.d.ts.map +1 -1
- package/data/build/dist/client/locales/fileWorkspace.js +2 -0
- package/data/build/dist/client/locales/fileWorkspace.js.map +1 -1
- package/data/build/dist/client/locales/peerHost.d.ts.map +1 -1
- package/data/build/dist/client/locales/peerHost.js +4 -0
- package/data/build/dist/client/locales/peerHost.js.map +1 -1
- package/data/build/dist/client/locales/peerHostWorkspace.js +2 -2
- package/data/build/dist/client/locales/peerHostWorkspace.js.map +1 -1
- package/data/build/dist/client/locales/usage.d.ts.map +1 -1
- package/data/build/dist/client/locales/usage.js +4 -0
- package/data/build/dist/client/locales/usage.js.map +1 -1
- package/data/build/dist/client/model-catalog-cache.d.ts.map +1 -1
- package/data/build/dist/client/model-catalog-cache.js +9 -2
- package/data/build/dist/client/model-catalog-cache.js.map +1 -1
- package/data/build/dist/client/peer-host-management-api.d.ts +2 -2
- package/data/build/dist/client/peer-host-management-api.d.ts.map +1 -1
- package/data/build/dist/client/peer-host-management-api.js +8 -5
- package/data/build/dist/client/peer-host-management-api.js.map +1 -1
- package/data/build/dist/client/provider-icon-assets.js +5 -39
- package/data/build/dist/client/provider-icon-assets.js.map +1 -1
- package/data/build/dist/client/provider-icon-bridge.d.ts +6 -0
- package/data/build/dist/client/provider-icon-bridge.d.ts.map +1 -0
- package/data/build/dist/client/provider-icon-bridge.js +65 -0
- package/data/build/dist/client/provider-icon-bridge.js.map +1 -0
- package/data/build/dist/client/provider-icons.d.ts +1 -0
- package/data/build/dist/client/provider-icons.d.ts.map +1 -1
- package/data/build/dist/client/provider-icons.js +2 -1
- package/data/build/dist/client/provider-icons.js.map +1 -1
- package/data/build/dist/client/remote-web-context.d.ts +2 -0
- package/data/build/dist/client/remote-web-context.d.ts.map +1 -1
- package/data/build/dist/client/remote-web-context.js +50 -2
- package/data/build/dist/client/remote-web-context.js.map +1 -1
- package/data/build/dist/client/rpc-call.d.ts +4 -0
- package/data/build/dist/client/rpc-call.d.ts.map +1 -0
- package/data/build/dist/client/rpc-call.js +23 -0
- package/data/build/dist/client/rpc-call.js.map +1 -0
- package/data/build/dist/client/serial-polling.d.ts +15 -0
- package/data/build/dist/client/serial-polling.d.ts.map +1 -0
- package/data/build/dist/client/serial-polling.js +48 -0
- package/data/build/dist/client/serial-polling.js.map +1 -0
- package/data/build/dist/client/session-adapter-cache.d.ts.map +1 -1
- package/data/build/dist/client/session-adapter-cache.js +11 -1
- package/data/build/dist/client/session-adapter-cache.js.map +1 -1
- package/data/build/dist/client/settings-section.js +8 -2
- package/data/build/dist/client/settings-section.js.map +1 -1
- package/data/build/dist/client/sherpa-voice-adapter.d.ts.map +1 -1
- package/data/build/dist/client/sherpa-voice-adapter.js +8 -8
- package/data/build/dist/client/sherpa-voice-adapter.js.map +1 -1
- package/data/build/dist/client/subscription-slot.d.ts +11 -0
- package/data/build/dist/client/subscription-slot.d.ts.map +1 -1
- package/data/build/dist/client/subscription-slot.js +42 -15
- package/data/build/dist/client/subscription-slot.js.map +1 -1
- package/data/build/dist/client/terminal/xterm-engine.d.ts +4 -0
- package/data/build/dist/client/terminal/xterm-engine.d.ts.map +1 -0
- package/data/build/dist/client/terminal/xterm-engine.js +5 -0
- package/data/build/dist/client/terminal/xterm-engine.js.map +1 -0
- package/data/build/dist/client/terminal/xterm-view.d.ts.map +1 -1
- package/data/build/dist/client/terminal/xterm-view.js +33 -25
- package/data/build/dist/client/terminal/xterm-view.js.map +1 -1
- package/data/build/dist/host/avatar/temporary-previews.d.ts +3 -1
- package/data/build/dist/host/avatar/temporary-previews.d.ts.map +1 -1
- package/data/build/dist/host/avatar/temporary-previews.js +7 -2
- package/data/build/dist/host/avatar/temporary-previews.js.map +1 -1
- package/data/build/dist/host/cli-adapters/acp-cli-driver.d.ts +1 -1
- package/data/build/dist/host/cli-adapters/acp-cli-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/acp-cli-driver.js +3 -10
- package/data/build/dist/host/cli-adapters/acp-cli-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/antigravity-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/antigravity-driver.js +2 -2
- package/data/build/dist/host/cli-adapters/antigravity-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/antigravity-subscription.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/antigravity-subscription.js +10 -10
- package/data/build/dist/host/cli-adapters/antigravity-subscription.js.map +1 -1
- package/data/build/dist/host/cli-adapters/binary-detection.d.ts +19 -0
- package/data/build/dist/host/cli-adapters/binary-detection.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/binary-detection.js +71 -0
- package/data/build/dist/host/cli-adapters/binary-detection.js.map +1 -0
- package/data/build/dist/host/cli-adapters/claude-driver.d.ts +2 -0
- package/data/build/dist/host/cli-adapters/claude-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/claude-driver.js +11 -5
- package/data/build/dist/host/cli-adapters/claude-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/claude-model-options.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/claude-model-options.js +2 -1
- package/data/build/dist/host/cli-adapters/claude-model-options.js.map +1 -1
- package/data/build/dist/host/cli-adapters/claude-process.d.ts +7 -0
- package/data/build/dist/host/cli-adapters/claude-process.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/claude-process.js +59 -0
- package/data/build/dist/host/cli-adapters/claude-process.js.map +1 -0
- package/data/build/dist/host/cli-adapters/codebuddy-driver.d.ts +3 -0
- package/data/build/dist/host/cli-adapters/codebuddy-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/codebuddy-driver.js +26 -12
- package/data/build/dist/host/cli-adapters/codebuddy-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/command-code-driver.d.ts +0 -1
- package/data/build/dist/host/cli-adapters/command-code-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/command-code-driver.js +10 -32
- package/data/build/dist/host/cli-adapters/command-code-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/cursor-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/cursor-driver.js +4 -3
- package/data/build/dist/host/cli-adapters/cursor-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/delegate-dispatch.js +1 -1
- package/data/build/dist/host/cli-adapters/delegate-dispatch.js.map +1 -1
- package/data/build/dist/host/cli-adapters/delegation-mention-rewrite.d.ts +2 -0
- package/data/build/dist/host/cli-adapters/delegation-mention-rewrite.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/delegation-mention-rewrite.js +5 -0
- package/data/build/dist/host/cli-adapters/delegation-mention-rewrite.js.map +1 -1
- package/data/build/dist/host/cli-adapters/desktop-app-runtime.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/desktop-app-runtime.js +2 -4
- package/data/build/dist/host/cli-adapters/desktop-app-runtime.js.map +1 -1
- package/data/build/dist/host/cli-adapters/doubao-app.d.ts +27 -0
- package/data/build/dist/host/cli-adapters/doubao-app.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/doubao-app.js +110 -0
- package/data/build/dist/host/cli-adapters/doubao-app.js.map +1 -0
- package/data/build/dist/host/cli-adapters/doubao-artifact-store.d.ts +16 -0
- package/data/build/dist/host/cli-adapters/doubao-artifact-store.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/doubao-artifact-store.js +142 -0
- package/data/build/dist/host/cli-adapters/doubao-artifact-store.js.map +1 -0
- package/data/build/dist/host/cli-adapters/doubao-artifacts.d.ts +16 -0
- package/data/build/dist/host/cli-adapters/doubao-artifacts.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/doubao-artifacts.js +34 -0
- package/data/build/dist/host/cli-adapters/doubao-artifacts.js.map +1 -0
- package/data/build/dist/host/cli-adapters/doubao-cdp.d.ts +49 -0
- package/data/build/dist/host/cli-adapters/doubao-cdp.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/doubao-cdp.js +177 -0
- package/data/build/dist/host/cli-adapters/doubao-cdp.js.map +1 -0
- package/data/build/dist/host/cli-adapters/doubao-driver.d.ts +33 -0
- package/data/build/dist/host/cli-adapters/doubao-driver.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/doubao-driver.js +291 -0
- package/data/build/dist/host/cli-adapters/doubao-driver.js.map +1 -0
- package/data/build/dist/host/cli-adapters/doubao-events.d.ts +21 -0
- package/data/build/dist/host/cli-adapters/doubao-events.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/doubao-events.js +126 -0
- package/data/build/dist/host/cli-adapters/doubao-events.js.map +1 -0
- package/data/build/dist/host/cli-adapters/doubao-runtime.d.ts +6 -0
- package/data/build/dist/host/cli-adapters/doubao-runtime.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/doubao-runtime.js +176 -0
- package/data/build/dist/host/cli-adapters/doubao-runtime.js.map +1 -0
- package/data/build/dist/host/cli-adapters/doubao-tools.d.ts +8 -0
- package/data/build/dist/host/cli-adapters/doubao-tools.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/doubao-tools.js +139 -0
- package/data/build/dist/host/cli-adapters/doubao-tools.js.map +1 -0
- package/data/build/dist/host/cli-adapters/driver.d.ts +4 -3
- package/data/build/dist/host/cli-adapters/driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/feature.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/feature.js +30 -36
- package/data/build/dist/host/cli-adapters/feature.js.map +1 -1
- package/data/build/dist/host/cli-adapters/grok-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/grok-driver.js +2 -1
- package/data/build/dist/host/cli-adapters/grok-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/json-rpc-process.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/json-rpc-process.js +3 -1
- package/data/build/dist/host/cli-adapters/json-rpc-process.js.map +1 -1
- package/data/build/dist/host/cli-adapters/kimi-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/kimi-driver.js +4 -3
- package/data/build/dist/host/cli-adapters/kimi-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/legacy-session-adapter.d.ts +2 -0
- package/data/build/dist/host/cli-adapters/legacy-session-adapter.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/legacy-session-adapter.js +11 -0
- package/data/build/dist/host/cli-adapters/legacy-session-adapter.js.map +1 -1
- package/data/build/dist/host/cli-adapters/log-files.d.ts +3 -0
- package/data/build/dist/host/cli-adapters/log-files.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/log-files.js +32 -0
- package/data/build/dist/host/cli-adapters/log-files.js.map +1 -0
- package/data/build/dist/host/cli-adapters/model-catalog.d.ts +2 -0
- package/data/build/dist/host/cli-adapters/model-catalog.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/model-catalog.js +10 -0
- package/data/build/dist/host/cli-adapters/model-catalog.js.map +1 -1
- package/data/build/dist/host/cli-adapters/native-team-subagent.js +1 -1
- package/data/build/dist/host/cli-adapters/native-team-subagent.js.map +1 -1
- package/data/build/dist/host/cli-adapters/opencode-driver.d.ts +11 -0
- package/data/build/dist/host/cli-adapters/opencode-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/opencode-driver.js +132 -49
- package/data/build/dist/host/cli-adapters/opencode-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/opencode-v2-protocol.d.ts +29 -0
- package/data/build/dist/host/cli-adapters/opencode-v2-protocol.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/opencode-v2-protocol.js +471 -0
- package/data/build/dist/host/cli-adapters/opencode-v2-protocol.js.map +1 -0
- package/data/build/dist/host/cli-adapters/pi-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/pi-driver.js +2 -1
- package/data/build/dist/host/cli-adapters/pi-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/process-utils.d.ts +12 -4
- package/data/build/dist/host/cli-adapters/process-utils.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/process-utils.js +151 -17
- package/data/build/dist/host/cli-adapters/process-utils.js.map +1 -1
- package/data/build/dist/host/cli-adapters/qoder-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/qoder-driver.js +63 -100
- package/data/build/dist/host/cli-adapters/qoder-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/qoder-subscription.d.ts +6 -1
- package/data/build/dist/host/cli-adapters/qoder-subscription.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/qoder-subscription.js +37 -10
- package/data/build/dist/host/cli-adapters/qoder-subscription.js.map +1 -1
- package/data/build/dist/host/cli-adapters/registry.d.ts +13 -21
- package/data/build/dist/host/cli-adapters/registry.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/registry.js +102 -131
- package/data/build/dist/host/cli-adapters/registry.js.map +1 -1
- package/data/build/dist/host/cli-adapters/rpc-driver-utils.d.ts +2 -10
- package/data/build/dist/host/cli-adapters/rpc-driver-utils.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/rpc-driver-utils.js +1 -28
- package/data/build/dist/host/cli-adapters/rpc-driver-utils.js.map +1 -1
- package/data/build/dist/host/cli-adapters/session-store.d.ts +5 -1
- package/data/build/dist/host/cli-adapters/session-store.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/session-store.js +68 -11
- package/data/build/dist/host/cli-adapters/session-store.js.map +1 -1
- package/data/build/dist/host/cli-adapters/standard-stream-driver.d.ts +3 -3
- package/data/build/dist/host/cli-adapters/standard-stream-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/standard-stream-driver.js +14 -38
- package/data/build/dist/host/cli-adapters/standard-stream-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/windows-command-environment.d.ts +12 -0
- package/data/build/dist/host/cli-adapters/windows-command-environment.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/windows-command-environment.js +53 -0
- package/data/build/dist/host/cli-adapters/windows-command-environment.js.map +1 -0
- package/data/build/dist/host/cli-bridge/dispatch.js +1 -1
- package/data/build/dist/host/cli-bridge/dispatch.js.map +1 -1
- package/data/build/dist/host/debug.d.ts.map +1 -1
- package/data/build/dist/host/debug.js +5 -4
- package/data/build/dist/host/debug.js.map +1 -1
- package/data/build/dist/host/dsh-runtime-version.d.ts +1 -1
- package/data/build/dist/host/dsh-runtime-version.d.ts.map +1 -1
- package/data/build/dist/host/dsh-runtime-version.js +22 -17
- package/data/build/dist/host/dsh-runtime-version.js.map +1 -1
- package/data/build/dist/host/features/assistant-avatar-runtime.d.ts.map +1 -1
- package/data/build/dist/host/features/assistant-avatar-runtime.js +43 -19
- package/data/build/dist/host/features/assistant-avatar-runtime.js.map +1 -1
- package/data/build/dist/host/features/assistant-background.d.ts +44 -0
- package/data/build/dist/host/features/assistant-background.d.ts.map +1 -0
- package/data/build/dist/host/features/assistant-background.js +116 -0
- package/data/build/dist/host/features/assistant-background.js.map +1 -0
- package/data/build/dist/host/features/assistant-index-updates.d.ts +5 -0
- package/data/build/dist/host/features/assistant-index-updates.d.ts.map +1 -1
- package/data/build/dist/host/features/assistant-index-updates.js +29 -6
- package/data/build/dist/host/features/assistant-index-updates.js.map +1 -1
- package/data/build/dist/host/features/assistant-source-cache.d.ts +12 -0
- package/data/build/dist/host/features/assistant-source-cache.d.ts.map +1 -0
- package/data/build/dist/host/features/assistant-source-cache.js +58 -0
- package/data/build/dist/host/features/assistant-source-cache.js.map +1 -0
- package/data/build/dist/host/features/global-voice-coordinator.d.ts.map +1 -1
- package/data/build/dist/host/features/global-voice-coordinator.js +15 -10
- package/data/build/dist/host/features/global-voice-coordinator.js.map +1 -1
- package/data/build/dist/host/features/global-voice-rpc.d.ts.map +1 -1
- package/data/build/dist/host/features/global-voice-rpc.js +288 -114
- package/data/build/dist/host/features/global-voice-rpc.js.map +1 -1
- package/data/build/dist/host/features/peer-host.d.ts.map +1 -1
- package/data/build/dist/host/features/peer-host.js +61 -21
- package/data/build/dist/host/features/peer-host.js.map +1 -1
- package/data/build/dist/host/features/sherpa-voice-worker.d.ts +18 -0
- package/data/build/dist/host/features/sherpa-voice-worker.d.ts.map +1 -0
- package/data/build/dist/host/features/sherpa-voice-worker.js +40 -0
- package/data/build/dist/host/features/sherpa-voice-worker.js.map +1 -0
- package/data/build/dist/host/features/sherpa-worker-runtime.d.ts +41 -0
- package/data/build/dist/host/features/sherpa-worker-runtime.d.ts.map +1 -0
- package/data/build/dist/host/features/sherpa-worker-runtime.js +200 -0
- package/data/build/dist/host/features/sherpa-worker-runtime.js.map +1 -0
- package/data/build/dist/host/features/types.d.ts +6 -4
- package/data/build/dist/host/features/types.d.ts.map +1 -1
- package/data/build/dist/host/index.d.ts +1 -1
- package/data/build/dist/host/index.d.ts.map +1 -1
- package/data/build/dist/host/index.js +31 -21
- package/data/build/dist/host/index.js.map +1 -1
- package/data/build/dist/host/lan-access-dsh.d.ts.map +1 -1
- package/data/build/dist/host/lan-access-dsh.js +5 -22
- package/data/build/dist/host/lan-access-dsh.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/host-api-proxy-service.d.ts +6 -46
- package/data/build/dist/host/modules/peer-host/host-api-proxy-service.d.ts.map +1 -1
- package/data/build/dist/host/modules/peer-host/host-api-proxy-service.js +48 -28
- package/data/build/dist/host/modules/peer-host/host-api-proxy-service.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-diagnostics.d.ts.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-diagnostics.js +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-diagnostics.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-handshake.d.ts.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-handshake.js +4 -1
- package/data/build/dist/host/modules/peer-host/peer-host-handshake.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-session.d.ts +7 -1
- package/data/build/dist/host/modules/peer-host/peer-host-session.d.ts.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-session.js +40 -13
- package/data/build/dist/host/modules/peer-host/peer-host-session.js.map +1 -1
- package/data/build/dist/host/provider-icon-assets.d.ts +5 -0
- package/data/build/dist/host/provider-icon-assets.d.ts.map +1 -0
- package/data/build/dist/host/provider-icon-assets.js +61 -0
- package/data/build/dist/host/provider-icon-assets.js.map +1 -0
- package/data/build/dist/host/rpc.js +2 -2
- package/data/build/dist/host/rpc.js.map +1 -1
- package/data/build/dist/host/session-migration-repair.d.ts +4 -0
- package/data/build/dist/host/session-migration-repair.d.ts.map +1 -1
- package/data/build/dist/host/session-migration-repair.js +75 -2
- package/data/build/dist/host/session-migration-repair.js.map +1 -1
- package/data/build/dist/host/terminal/backends/tmux-backend.d.ts +1 -1
- package/data/build/dist/host/terminal/backends/tmux-backend.d.ts.map +1 -1
- package/data/build/dist/host/terminal/backends/tmux-backend.js +15 -14
- package/data/build/dist/host/terminal/backends/tmux-backend.js.map +1 -1
- package/data/build/dist/shared/assistant-avatar-engine.d.ts +5 -0
- package/data/build/dist/shared/assistant-avatar-engine.d.ts.map +1 -1
- package/data/build/dist/shared/assistant-avatar-engine.js +14 -0
- package/data/build/dist/shared/assistant-avatar-engine.js.map +1 -1
- package/data/build/dist/shared/contracts/cli-adapter.d.ts +6 -0
- package/data/build/dist/shared/contracts/cli-adapter.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/errors.d.ts +1 -0
- package/data/build/dist/shared/contracts/errors.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/errors.js +1 -0
- package/data/build/dist/shared/contracts/errors.js.map +1 -1
- package/data/build/dist/shared/contracts/peer-host.d.ts +1 -0
- package/data/build/dist/shared/contracts/peer-host.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/peer-host.js +1 -0
- package/data/build/dist/shared/contracts/peer-host.js.map +1 -1
- package/data/build/dist/shared/contracts/version.d.ts +3 -1
- package/data/build/dist/shared/contracts/version.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/version.js +20 -7
- package/data/build/dist/shared/contracts/version.js.map +1 -1
- package/data/build/dist/shared/peer-host-http-routes.d.ts +62 -0
- package/data/build/dist/shared/peer-host-http-routes.d.ts.map +1 -0
- package/data/build/dist/shared/peer-host-http-routes.js +31 -0
- package/data/build/dist/shared/peer-host-http-routes.js.map +1 -0
- package/data/build/dist/shared/provider-icon-resources.d.ts +4 -0
- package/data/build/dist/shared/provider-icon-resources.d.ts.map +1 -0
- package/data/build/dist/shared/provider-icon-resources.js +24 -0
- package/data/build/dist/shared/provider-icon-resources.js.map +1 -0
- package/package.json +2 -2
- package/profile/README.md +2 -2
- package/profile/package.json +2 -2
- package/profile/version.json +1 -1
- package/version.json +1 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
import type { AssistantChatCatalog } from '../../shared/contracts/assistant.js';
|
|
3
|
+
import { normalizeAssistantAppearance } from '../../shared/assistant-avatar.js';
|
|
4
|
+
import type { AssistantTtsSnapshot } from '../../shared/assistant-tts.js';
|
|
5
|
+
import type { CodingNsTranslator } from '../locale.js';
|
|
6
|
+
import type { AssistantAvatarPreviewTargetProps } from '../avatar/catalog-panel.js';
|
|
7
|
+
import type { AssistantConfigurationTab } from './assistant-configuration-tabs.js';
|
|
8
|
+
import type { CodingNsClientServices } from './types.js';
|
|
9
|
+
import type { AssistantDraft } from './assistant-workbench.js';
|
|
10
|
+
import type { AssistantSettings } from '../../shared/contracts/config.js';
|
|
11
|
+
import type { NativeWorkspaceRecord } from '../native-workspace-store.js';
|
|
12
|
+
export declare function AssistantConfigurationFields({ draft, catalog, appearance, initializing, includeAvatar, services, t, disabled, onChange }: {
|
|
13
|
+
readonly draft: AssistantDraft;
|
|
14
|
+
readonly catalog: AssistantChatCatalog | undefined;
|
|
15
|
+
readonly appearance: ReturnType<typeof normalizeAssistantAppearance>;
|
|
16
|
+
readonly t: CodingNsTranslator;
|
|
17
|
+
readonly initializing?: boolean;
|
|
18
|
+
readonly includeAvatar?: boolean;
|
|
19
|
+
readonly services?: CodingNsClientServices;
|
|
20
|
+
readonly disabled: boolean;
|
|
21
|
+
readonly onChange: (patch: Partial<AssistantDraft>) => void;
|
|
22
|
+
}): ReactElement;
|
|
23
|
+
/** 创建后的各页只装配自己的字段;页面切换不持有或重置父级草稿。 */
|
|
24
|
+
export declare function AssistantConfigurationPage({ tab, active, services, value, draft, catalog, appearance, tts, workspaces, t, disabled, onChange, onDebug, onError, onReset, ...previewProps }: {
|
|
25
|
+
readonly tab: AssistantConfigurationTab;
|
|
26
|
+
readonly services: CodingNsClientServices;
|
|
27
|
+
readonly value: AssistantSettings;
|
|
28
|
+
readonly active?: boolean;
|
|
29
|
+
readonly draft: AssistantDraft;
|
|
30
|
+
readonly catalog: AssistantChatCatalog | undefined;
|
|
31
|
+
readonly appearance: ReturnType<typeof normalizeAssistantAppearance>;
|
|
32
|
+
readonly tts: AssistantTtsSnapshot | undefined;
|
|
33
|
+
readonly workspaces: readonly NativeWorkspaceRecord[];
|
|
34
|
+
readonly t: CodingNsTranslator;
|
|
35
|
+
readonly disabled: boolean;
|
|
36
|
+
readonly onChange: (patch: Partial<AssistantDraft>) => void;
|
|
37
|
+
readonly onDebug: () => void;
|
|
38
|
+
readonly onError: (error: string) => void;
|
|
39
|
+
readonly onReset?: () => void;
|
|
40
|
+
} & Omit<AssistantAvatarPreviewTargetProps, 'active'>): ReactElement;
|
|
41
|
+
/** 兼容原能力表单入口;实际配置页分别装配项目字段与声音字段。 */
|
|
42
|
+
export declare function AssistantCapabilityFields({ draft, tts, workspaces, t, disabled, onChange }: {
|
|
43
|
+
readonly draft: AssistantDraft;
|
|
44
|
+
readonly tts: AssistantTtsSnapshot | undefined;
|
|
45
|
+
readonly workspaces: readonly NativeWorkspaceRecord[];
|
|
46
|
+
readonly t: CodingNsTranslator;
|
|
47
|
+
readonly disabled: boolean;
|
|
48
|
+
readonly onChange: (patch: Partial<AssistantDraft>) => void;
|
|
49
|
+
}): ReactElement;
|
|
50
|
+
/** 项目范围放到更多设置,保留暂不可用项目以避免编辑时丢失原有选择。 */
|
|
51
|
+
export declare function AssistantWorkspaceFields({ draft, workspaces, t, disabled, onChange }: {
|
|
52
|
+
readonly draft: AssistantDraft;
|
|
53
|
+
readonly workspaces: readonly NativeWorkspaceRecord[];
|
|
54
|
+
readonly t: CodingNsTranslator;
|
|
55
|
+
readonly disabled: boolean;
|
|
56
|
+
readonly onChange: (patch: Partial<AssistantDraft>) => void;
|
|
57
|
+
}): ReactElement;
|
|
58
|
+
/** 没有安装 MOSS 时只有浏览器声音可选,不因标签拆分而放宽可用性校验。 */
|
|
59
|
+
export declare function AssistantVoiceFields({ draft, tts, t, disabled, onChange }: {
|
|
60
|
+
readonly draft: AssistantDraft;
|
|
61
|
+
readonly tts: AssistantTtsSnapshot | undefined;
|
|
62
|
+
readonly t: CodingNsTranslator;
|
|
63
|
+
readonly disabled: boolean;
|
|
64
|
+
readonly onChange: (patch: Partial<AssistantDraft>) => void;
|
|
65
|
+
}): ReactElement;
|
|
66
|
+
//# sourceMappingURL=assistant-configuration-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-configuration-view.d.ts","sourceRoot":"","sources":["../../../../../src/client/features/assistant-configuration-view.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { createElement, useEffect, useState } from 'react';
|
|
2
|
+
import { ASSISTANT_PERSONALITY_MAX_CHARS } from '../../shared/assistant-lifecycle.js';
|
|
3
|
+
import { listAssistantAvatars, normalizeAssistantAppearance } from '../../shared/assistant-avatar.js';
|
|
4
|
+
import { readAssistantPrompts } from '../../shared/assistant-prompts.js';
|
|
5
|
+
import { dshSettingsButtonStyle, dshSettingsFieldStyle, dshSettingsHelpStyle, dshThemeColor } from '../theme.js';
|
|
6
|
+
import { AssistantAvatarPortraitEditor } from '../avatar/portrait-editor.js';
|
|
7
|
+
import { AssistantAppearanceEditor } from '../avatar/settings-panel.js';
|
|
8
|
+
import { AssistantAvatarPicker, assistantAvatarChoices } from '../avatar/catalog-picker.js';
|
|
9
|
+
import { getAssistantAvatarManager } from '../avatar/manager.js';
|
|
10
|
+
import { AssistantAvatarEngineDialog, AssistantAvatarEngineProgress, useAssistantAvatarEngine } from '../avatar/engine.js';
|
|
11
|
+
import { AssistantVoiceSettings } from './assistant-voice-settings.js';
|
|
12
|
+
import { AssistantVoiceInitializationPanel } from './assistant-voice-initialization.js';
|
|
13
|
+
import { VoiceModelManagerPanel } from './voice-initialization-dialog.js';
|
|
14
|
+
import { AssistantPromptEditor } from './assistant-prompt-editor.js';
|
|
15
|
+
import { getGlobalVoiceAdapter } from '../global-voice-runtime-registry.js';
|
|
16
|
+
import { assistantSettingCheckboxStyle, assistantSettingFieldStyle } from '../assistant-settings-styles.js';
|
|
17
|
+
/** 创建与配置共用形象选择:选中 Live2D 时先确认引擎许可并自动安装,成功后才改草稿。 */
|
|
18
|
+
function AssistantAvatarSelectionField({ services, appearance, avatarId, avatars, includeLegacy, disabled, t, onChange }) {
|
|
19
|
+
const manager = getAssistantAvatarManager(services);
|
|
20
|
+
const engine = useAssistantAvatarEngine({ services, manager, appearance, disabled });
|
|
21
|
+
const choices = assistantAvatarChoices(appearance, [], t, includeLegacy);
|
|
22
|
+
const avatar = avatars.find((model) => model.id === avatarId);
|
|
23
|
+
const list = choices.some((choice) => choice.id === avatarId) ? choices
|
|
24
|
+
: [{ id: avatarId, label: t('awb.unavailableSelection', { id: avatarId }), thirdParty: false, disabled: true }, ...choices];
|
|
25
|
+
const choose = (choice) => {
|
|
26
|
+
if (disabled || !avatars.some((model) => model.id === choice.id))
|
|
27
|
+
return;
|
|
28
|
+
const model = avatars.find((item) => item.id === choice.id);
|
|
29
|
+
if (model?.renderer === 'live2d') {
|
|
30
|
+
void engine.ensure(() => onChange({ avatarId: choice.id }));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
onChange({ avatarId: choice.id });
|
|
34
|
+
};
|
|
35
|
+
return createElement('div', { style: { display: 'grid', gap: 8 } }, createElement(AssistantAvatarPicker, { label: t('awb.avatar'), value: avatarId, disabled: disabled || engine.installing, t, choices: list, onChoose: choose }), createElement(AssistantAvatarEngineProgress, { controller: engine, t }), createElement('p', { style: help }, t('avatar.externalHint')), avatar?.renderer !== 'live2d' ? null : createElement('p', { style: help }, t('avatar.live2dDependencyHint')), createElement(AssistantAvatarEngineDialog, { controller: engine, t }));
|
|
36
|
+
}
|
|
37
|
+
export function AssistantConfigurationFields({ draft, catalog, appearance, initializing = false, includeAvatar = true, services, t, disabled, onChange }) {
|
|
38
|
+
const models = catalog?.models ?? [];
|
|
39
|
+
const avatars = listAssistantAvatars(appearance, !initializing);
|
|
40
|
+
const avatar = avatars.find((model) => model.id === draft.avatarId);
|
|
41
|
+
const avatarChoices = assistantAvatarChoices(appearance, [], t, !initializing);
|
|
42
|
+
const input = (label, node) => createElement('label', { style: field }, createElement('span', null, label), node);
|
|
43
|
+
const select = (label, value, change, options) => input(label, createElement('select', { value, disabled, style: identityFieldStyle, onChange: (event) => change(event.currentTarget.value) }, ...options));
|
|
44
|
+
const missing = (id) => createElement('option', { key: id, value: id }, t('awb.unavailableSelection', { id }));
|
|
45
|
+
return createElement('div', { 'data-codingns-assistant-identity': true, style: { display: 'grid', gap: 11 } },
|
|
46
|
+
// 名称与头像始终左右排列,裁剪面板和本地保存说明跨两列展开。
|
|
47
|
+
createElement('div', { 'data-codingns-assistant-identity-row': true, style: { display: 'grid', alignItems: 'start',
|
|
48
|
+
gridTemplateColumns: services === undefined || avatar === undefined ? 'minmax(0, 1fr)' : 'minmax(0, 1fr) minmax(0, 176px)', columnGap: 16, rowGap: 8, minWidth: 0 } }, input(t('awb.name'), createElement('input', { value: draft.name, maxLength: 80, disabled, placeholder: t('awb.namePlaceholder'), style: identityFieldStyle, onChange: (event) => onChange({ name: event.currentTarget.value }) })), services === undefined || avatar === undefined ? null : createElement(AssistantAvatarPortraitEditor, { services, model: avatar, disabled, t })), select(t('awb.model'), draft.modelKey, (modelKey) => onChange({ modelKey }), [createElement('option', { key: '', value: '' }, t('awb.defaultModel')),
|
|
49
|
+
...(draft.modelKey && !models.some((model) => JSON.stringify([model.provider, model.model]) === draft.modelKey) ? [missing(draft.modelKey)] : []),
|
|
50
|
+
...models.map((model) => createElement('option', { key: JSON.stringify([model.provider, model.model]), value: JSON.stringify([model.provider, model.model]) }, `${model.label} · ${model.provider}`))]), catalog?.models.length === 0 ? createElement('p', { style: help }, t('awb.noModel'), ...catalog.errors.map((error) => createElement('span', { key: error, style: { display: 'block' } }, error))) : null, input(t('awb.personality'), createElement('textarea', { value: draft.personality, maxLength: ASSISTANT_PERSONALITY_MAX_CHARS, rows: 4, disabled, placeholder: t('awb.personalityPlaceholder'),
|
|
51
|
+
style: { ...identityFieldStyle, minHeight: 96, maxHeight: 200, resize: 'vertical', lineHeight: 1.65 }, onChange: (event) => onChange({ personality: event.currentTarget.value }) })), !includeAvatar ? null : services === undefined ? createElement('div', { style: { display: 'grid', gap: 8 } }, createElement(AssistantAvatarPicker, { label: t('awb.avatar'), value: draft.avatarId, disabled, t,
|
|
52
|
+
choices: avatarChoices.some((choice) => choice.id === draft.avatarId) ? avatarChoices
|
|
53
|
+
: [{ id: draft.avatarId, label: t('awb.unavailableSelection', { id: draft.avatarId }), thirdParty: false, disabled: true }, ...avatarChoices],
|
|
54
|
+
onChoose: (choice) => { if (avatars.some((avatar) => avatar.id === choice.id))
|
|
55
|
+
onChange({ avatarId: choice.id }); } }), createElement('p', { style: help }, t('avatar.externalHint')), avatar?.renderer !== 'live2d' ? null : createElement('p', { style: help }, t('avatar.live2dDependencyHint')))
|
|
56
|
+
: createElement(AssistantAvatarSelectionField, { services, appearance, avatarId: draft.avatarId, avatars, includeLegacy: !initializing, disabled, t, onChange }));
|
|
57
|
+
}
|
|
58
|
+
/** 创建后的各页只装配自己的字段;页面切换不持有或重置父级草稿。 */
|
|
59
|
+
export function AssistantConfigurationPage({ tab, active = true, services, value, draft, catalog, appearance, tts, workspaces, t, disabled, onChange, onDebug, onError, onReset, ...previewProps }) {
|
|
60
|
+
switch (tab) {
|
|
61
|
+
case 'basic': return createElement(AssistantConfigurationFields, { draft, catalog, appearance, includeAvatar: false, services, t, disabled, onChange });
|
|
62
|
+
case 'appearance': return createElement('div', { style: { display: 'grid', gap: 11 } }, createElement(AssistantAppearanceEditor, { services, enabled: !disabled, active, ...previewProps }));
|
|
63
|
+
case 'voice': return createElement('div', { style: { display: 'grid', gap: 11 } }, createElement(AssistantVoiceInitializationPanel, { services, enabled: !disabled, active,
|
|
64
|
+
inputSettings: (groupActive) => createElement('div', { style: { display: 'grid', gap: 11 } }, createElement(AssistantAudioDevice, { services, direction: 'input', active: groupActive, disabled, t, onError }), createElement(VoiceModelManagerPanel, { services, value: value.voice, enabled: !disabled, active: groupActive })),
|
|
65
|
+
outputSettings: (groupActive) => createElement('div', { style: { display: 'grid', gap: 11 } }, createElement(AssistantAudioDevice, { services, direction: 'output', active: groupActive, disabled, t, onError }), createElement(AssistantVoiceSettings, { services, enabled: !disabled, active: groupActive, embedded: true })) }));
|
|
66
|
+
case 'more': return createElement('div', { style: { display: 'grid', gap: 11 } }, createElement(AssistantWorkspaceFields, { draft, workspaces, t, disabled, onChange }), createElement(AssistantAdvancedSettings, { services, value, disabled, t, onDebug, onError }), createElement('div', { style: { paddingTop: 16, borderTop: `1px solid ${dshThemeColor.border}` } }, createElement('button', { type: 'button', 'data-codingns-assistant-reset': true, disabled: disabled || onReset === undefined,
|
|
67
|
+
style: { ...dshSettingsButtonStyle, color: dshThemeColor.error }, onClick: onReset }, t('awb.reset'))));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/** 兼容原能力表单入口;实际配置页分别装配项目字段与声音字段。 */
|
|
71
|
+
export function AssistantCapabilityFields({ draft, tts, workspaces, t, disabled, onChange }) {
|
|
72
|
+
return createElement('div', { style: { display: 'grid', gap: 18 } }, AssistantWorkspaceFields({ draft, workspaces, t, disabled, onChange }), AssistantVoiceFields({ draft, tts, t, disabled, onChange }));
|
|
73
|
+
}
|
|
74
|
+
/** 项目范围放到更多设置,保留暂不可用项目以避免编辑时丢失原有选择。 */
|
|
75
|
+
export function AssistantWorkspaceFields({ draft, workspaces, t, disabled, onChange }) {
|
|
76
|
+
const knownWorkspaces = new Set(workspaces.map((workspace) => workspace.workspaceId));
|
|
77
|
+
return createElement('fieldset', { 'data-codingns-assistant-projects': true, style: { border: 0, padding: 0, margin: 0, minWidth: 0 }, disabled }, createElement('legend', { style: { fontSize: 14, fontWeight: 600, padding: 0, marginBottom: 8 } }, t('awb.workspaces')), createElement('p', { style: help }, t('awb.scopeHint')), createElement('div', { style: { display: 'grid', gap: 8, maxHeight: 180, overflowY: 'auto', marginTop: 8 } }, ...[...workspaces, ...draft.managedWorkspaceIds.filter((id) => !knownWorkspaces.has(id)).map((workspaceId) => ({ workspaceId, title: t('awb.offlineWorkspace', { id: workspaceId }) }))].map((workspace) => createElement('label', { key: workspace.workspaceId, style: assistantSettingCheckboxStyle }, createElement('input', { type: 'checkbox', checked: draft.managedWorkspaceIds.includes(workspace.workspaceId), onChange: (event) => onChange({ managedWorkspaceIds: event.currentTarget.checked ? [...draft.managedWorkspaceIds, workspace.workspaceId] : draft.managedWorkspaceIds.filter((id) => id !== workspace.workspaceId) }) }), workspace.title))));
|
|
78
|
+
}
|
|
79
|
+
/** 没有安装 MOSS 时只有浏览器声音可选,不因标签拆分而放宽可用性校验。 */
|
|
80
|
+
export function AssistantVoiceFields({ draft, tts, t, disabled, onChange }) {
|
|
81
|
+
const mossReady = tts?.status.ready === true;
|
|
82
|
+
const voices = mossReady ? tts.voices : [];
|
|
83
|
+
return createElement('div', { 'data-codingns-assistant-voice-selection': true, style: { display: 'grid', gap: 10 } }, createElement('label', { style: field }, createElement('span', null, t('awb.voice')), createElement('select', { value: draft.ttsBackend === 'browser' || !mossReady ? 'browser' : draft.voiceId, disabled, style: identityFieldStyle,
|
|
84
|
+
onChange: (event) => { const voice = event.currentTarget.value; if (voice === 'browser')
|
|
85
|
+
onChange({ ttsBackend: 'browser' });
|
|
86
|
+
else if (mossReady && voices.some((item) => item.id === voice))
|
|
87
|
+
onChange({ ttsBackend: 'moss-onnx', voiceId: voice }); } }, createElement('option', { value: 'browser' }, t('awb.browserVoice')), ...voices.map((voice) => createElement('option', { key: voice.id, value: voice.id }, voice.name)))), mossReady ? null : createElement('p', { style: help }, t('awb.mossSetupHint')));
|
|
88
|
+
}
|
|
89
|
+
function AssistantAdvancedSettings({ services, value, disabled, t, onDebug, onError }) {
|
|
90
|
+
const defaults = readAssistantPrompts(value.prompts);
|
|
91
|
+
const prompts = services.configurationDraft ? { ...defaults, ...value.prompts } : defaults;
|
|
92
|
+
const savePrompt = async (kind, text) => {
|
|
93
|
+
// 提示词是单字段绝对值,不依赖旧快照计算;后台索引变化不应阻止保存。
|
|
94
|
+
try {
|
|
95
|
+
if (!await services.settings.mutate([{ op: 'set', path: ['assistant', 'prompts', kind], value: text }]))
|
|
96
|
+
throw new Error(t('settings.moduleWriteRejected'));
|
|
97
|
+
}
|
|
98
|
+
catch (cause) {
|
|
99
|
+
onError(message(cause));
|
|
100
|
+
throw cause;
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
return createElement('div', { style: { display: 'grid', gap: 14, marginTop: 14 } }, createElement('p', { style: help }, t('awb.moreHint')), ...['index', 'chat'].map((kind) => createElement(AssistantPromptEditor, { key: kind, kind, value: prompts[kind], disabled, onSave: savePrompt,
|
|
104
|
+
...(services.configurationDraft ? { onChange: savePrompt } : {}), t })), createElement('button', { type: 'button', disabled, style: dshSettingsButtonStyle, onClick: onDebug }, t('assistant.debug.open')));
|
|
105
|
+
}
|
|
106
|
+
/** 设备按输入、输出分组枚举,折叠时保留选择但停止设备查询。 */
|
|
107
|
+
function AssistantAudioDevice({ services, direction, active, disabled, t, onError }) {
|
|
108
|
+
const adapter = getGlobalVoiceAdapter(services);
|
|
109
|
+
const output = direction === 'output';
|
|
110
|
+
const [devices, setDevices] = useState([]);
|
|
111
|
+
const [selectedId, setSelectedId] = useState((output ? adapter?.outputDeviceId : adapter?.inputDeviceId) ?? '');
|
|
112
|
+
useEffect(() => {
|
|
113
|
+
if (!active || (output && !adapter?.outputDeviceSupported))
|
|
114
|
+
return undefined;
|
|
115
|
+
let stopped = false;
|
|
116
|
+
const refresh = () => { void (output ? adapter?.enumerateOutputDevices() : adapter?.enumerateInputDevices())?.then((devices) => { if (!stopped)
|
|
117
|
+
setDevices(devices); }).catch(() => undefined); };
|
|
118
|
+
refresh();
|
|
119
|
+
globalThis.navigator?.mediaDevices?.addEventListener?.('devicechange', refresh);
|
|
120
|
+
return () => { stopped = true; globalThis.navigator?.mediaDevices?.removeEventListener?.('devicechange', refresh); };
|
|
121
|
+
}, [active, adapter, output]);
|
|
122
|
+
if (output && !adapter?.outputDeviceSupported)
|
|
123
|
+
return null;
|
|
124
|
+
return createElement('label', { style: field }, t(output ? 'voice.outputDevice' : 'voice.inputDevice'), createElement('select', { disabled, value: selectedId, style: dshSettingsFieldStyle, onChange: (event) => {
|
|
125
|
+
const id = event.currentTarget.value;
|
|
126
|
+
void (output ? adapter?.selectOutputDevice(id) : adapter?.selectInputDevice(id))?.then(() => setSelectedId(id)).catch((cause) => onError(message(cause)));
|
|
127
|
+
} }, createElement('option', { value: '' }, t(output ? 'voice.defaultOutput' : 'voice.defaultMicrophone')), ...devices.map((device) => createElement('option', { key: device.deviceId, value: device.deviceId }, device.label || t(output ? 'voice.unnamedOutput' : 'voice.unnamedMicrophone')))));
|
|
128
|
+
}
|
|
129
|
+
function message(error) { return error instanceof Error ? error.message : String(error); }
|
|
130
|
+
const help = { ...dshSettingsHelpStyle, margin: 0 };
|
|
131
|
+
const field = assistantSettingFieldStyle;
|
|
132
|
+
const identityFieldStyle = { ...dshSettingsFieldStyle, borderRadius: 8 };
|
|
133
|
+
//# sourceMappingURL=assistant-configuration-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-configuration-view.js","sourceRoot":"","sources":["../../../../../src/client/features/assistant-configuration-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAG1D,OAAO,EAAE,+BAA+B,EAAE,MAAM,qCAAqC,CAAA;AACrF,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAA;AAErG,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AAExE,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChH,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAA;AAE5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAC3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAE1H,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAA;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAE3E,OAAO,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAO3G,mDAAmD;AACnD,SAAS,6BAA6B,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EASrH;IACC,MAAM,OAAO,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IACnD,MAAM,MAAM,GAAG,wBAAwB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAA;IACpF,MAAM,OAAO,GAAG,sBAAsB,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,aAAa,CAAC,CAAA;IACxE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAA;IAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO;QACrE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,0BAA0B,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,CAAA;IAC7H,MAAM,MAAM,GAAG,CAAC,MAA+B,EAAQ,EAAE;QACvD,IAAI,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;YAAE,OAAM;QACxE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAA;QAC3D,IAAI,KAAK,EAAE,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAAC,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QACzG,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;IACnC,CAAC,CAAA;IACD,OAAO,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAChE,aAAa,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAC9J,aAAa,CAAC,6BAA6B,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EACvE,aAAa,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAC7D,MAAM,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,6BAA6B,CAAC,CAAC,EAC5G,aAAa,CAAC,2BAA2B,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAC1E,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,GAAG,KAAK,EAAE,aAAa,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAOrJ;IACC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC;IAAC,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,CAAA;IACrG,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAA;IACnE,MAAM,aAAa,GAAG,sBAAsB,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;IAC9E,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,IAAkB,EAAgB,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;IACrJ,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,MAA+B,EAAE,OAAuB,EAAgB,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,KAA2C,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAA;IACxT,MAAM,OAAO,GAAG,CAAC,EAAU,EAAgB,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,0BAA0B,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IACpI,OAAO,aAAa,CAAC,KAAK,EAAE,EAAE,kCAAkC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;IAC3G,gCAAgC;IAChC,aAAa,CAAC,KAAK,EAAE,EAAE,sCAAsC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;YAChH,mBAAmB,EAAE,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,iCAAiC,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EACrK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,KAA2C,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EACxQ,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,6BAA6B,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EACjJ,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAClJ,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjJ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EACzM,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EACxM,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,aAAa,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,+BAA+B,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,4BAA4B,CAAC;QAC3L,KAAK,EAAE,EAAE,GAAG,kBAAkB,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,KAA2C,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAC5N,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAC1G,aAAa,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC/F,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa;YACnF,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,0BAA0B,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,aAAa,CAAC;QAC/I,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;YAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA,CAAC,CAAC,EAAE,CAAC,EACvH,aAAa,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAC7D,MAAM,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC;QAC7G,CAAC,CAAC,aAAa,CAAC,6BAA6B,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;AACvK,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,0BAA0B,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,YAAY,EAS3I;IACnD,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,OAAO,CAAC,CAAC,OAAO,aAAa,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;QACvJ,KAAK,YAAY,CAAC,CAAC,OAAO,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EACpF,aAAa,CAAC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC,CAAA;QACtG,KAAK,OAAO,CAAC,CAAC,OAAO,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAC/E,aAAa,CAAC,iCAAiC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM;YACrF,aAAa,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAC1F,aAAa,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAChH,aAAa,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YACnH,cAAc,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAC3F,aAAa,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EACjH,aAAa,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACvH,KAAK,MAAM,CAAC,CAAC,OAAO,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAC9E,aAAa,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EACrF,aAAa,CAAC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAC5F,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,aAAa,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,EAChG,aAAa,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,+BAA+B,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,IAAI,OAAO,KAAK,SAAS;YAC1H,KAAK,EAAE,EAAE,GAAG,sBAAsB,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/G,CAAC;AACH,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,yBAAyB,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAGxF;IACC,OAAO,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EACjE,wBAAwB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,oBAAoB,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;AACxI,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,wBAAwB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAGlF;IACC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAA;IACrF,OAAO,aAAa,CAAC,UAAU,EAAE,EAAE,kCAAkC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAC/I,aAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,EACvH,aAAa,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,EACvD,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAC1G,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,sBAAsB,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,WAAW,EAAE,KAAK,EAAE,6BAA6B,EAAE,EACrS,aAAa,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,KAA8C,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,mBAAmB,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5Y,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,oBAAoB,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAGvE;IACC,MAAM,SAAS,GAAG,GAAG,EAAE,MAAM,CAAC,KAAK,KAAK,IAAI,CAAA;IAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1C,OAAO,aAAa,CAAC,KAAK,EAAE,EAAE,yCAAyC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAClH,aAAa,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAClF,aAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB;QAC5I,QAAQ,EAAE,CAAC,KAA2C,EAAE,EAAE,GAAG,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,SAAS;YAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;aAAM,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC;YAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA,CAAC,CAAC,EAAE,EAC7R,aAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAC7K,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAA;AACnF,CAAC;AACD,SAAS,yBAAyB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAyN;IAC1S,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC1F,MAAM,UAAU,GAAG,KAAK,EAAE,IAAsB,EAAE,IAAY,EAAiB,EAAE;QAC/E,oCAAoC;QACpC,IAAI,CAAC;YAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAA;QAAC,CAAC;QACnK,OAAO,KAAK,EAAE,CAAC;YAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAAC,MAAM,KAAK,CAAA;QAAC,CAAC;IACxD,CAAC,CAAA;IACD,OAAO,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAChF,aAAa,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,EACtD,GAAI,CAAC,OAAO,EAAE,MAAM,CAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU;QACtJ,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACzE,aAAa,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAA;AACtI,CAAC;AAED,mCAAmC;AACnC,SAAS,oBAAoB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAGhF;IACC,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;IAC/C,MAAM,MAAM,GAAG,SAAS,KAAK,QAAQ,CAAA;IACrC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAiD,EAAE,CAAC,CAAA;IAC1F,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAA;IAC/G,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC;YAAE,OAAO,SAAS,CAAA;QAC5E,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,MAAM,OAAO,GAAG,GAAS,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO;YAAE,UAAU,CAAC,OAAO,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA,CAAC,CAAC,CAAA;QACrM,OAAO,EAAE,CAAC;QAAC,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;QAC1F,OAAO,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA,CAAC,CAAC,CAAA;IACrH,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IAC7B,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,qBAAqB;QAAE,OAAO,IAAI,CAAA;IAC1D,OAAO,aAAa,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,CAAC,EACpG,aAAa,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,qBAAqB,EAAE,QAAQ,EAAE,CAAC,KAA2C,EAAE,EAAE;YAC7I,MAAM,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAA;YACpC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC3J,CAAC,EAAE,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACtS,CAAC;AAED,SAAS,OAAO,CAAC,KAAc,IAAY,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC;AAC1G,MAAM,IAAI,GAAkB,EAAE,GAAG,oBAAoB,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;AAClE,MAAM,KAAK,GAAkB,0BAA0B,CAAA;AACvD,MAAM,kBAAkB,GAAkB,EAAE,GAAG,qBAAqB,EAAE,YAAY,EAAE,CAAC,EAAE,CAAA"}
|
|
@@ -2,21 +2,14 @@ import type { ReactElement } from 'react';
|
|
|
2
2
|
import type { AssistantChatMessage, AssistantChatRun, AssistantDebugSnapshot } from '../../shared/contracts/assistant.js';
|
|
3
3
|
import { type NativeWorkspaceRecord } from '../native-workspace-store.js';
|
|
4
4
|
import { type CodingNsTranslator } from '../locale.js';
|
|
5
|
-
import type { CodingNsClientServices } from './types.js';
|
|
5
|
+
import type { CodingNsClientServices, CodingNsRpcClient } from './types.js';
|
|
6
|
+
export { AssistantPromptEditor } from './assistant-prompt-editor.js';
|
|
6
7
|
/** 五个步骤各自处理范围、成员、结果、运行记录和 LLM 问答,不依赖语音。 */
|
|
7
|
-
export declare function AssistantDebugDialog({ services, onClose }: {
|
|
8
|
+
export declare function AssistantDebugDialog({ services, displayRpc, onClose }: {
|
|
8
9
|
readonly services: CodingNsClientServices;
|
|
10
|
+
readonly displayRpc?: CodingNsRpcClient;
|
|
9
11
|
readonly onClose: () => void;
|
|
10
12
|
}): ReactElement;
|
|
11
|
-
/** 草稿只在明确保存时写入;保存单个字段,不覆盖另一阶段的提示词。 */
|
|
12
|
-
export declare function AssistantPromptEditor({ kind, value, disabled, onSave, onChange, t }: {
|
|
13
|
-
readonly kind: 'index' | 'chat';
|
|
14
|
-
readonly value: string;
|
|
15
|
-
readonly disabled: boolean;
|
|
16
|
-
readonly onSave: (kind: 'index' | 'chat', value: string) => Promise<void>;
|
|
17
|
-
readonly onChange?: (kind: 'index' | 'chat', value: string) => Promise<void>;
|
|
18
|
-
readonly t: CodingNsTranslator;
|
|
19
|
-
}): ReactElement;
|
|
20
13
|
/** 范围成员与正文索引分开显示,空项目也必须出现在范围内。 */
|
|
21
14
|
export declare function AssistantScopeSessionsView({ snapshot, managedIds, t }: {
|
|
22
15
|
readonly snapshot: AssistantDebugSnapshot;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assistant-debug-workbench.d.ts","sourceRoot":"","sources":["../../../../../src/client/features/assistant-debug-workbench.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAA;AACxD,OAAO,KAAK,EAAwB,oBAAoB,EAAsB,gBAAgB,EAAE,sBAAsB,EAAsH,MAAM,qCAAqC,CAAA;AAIvR,OAAO,EAA6D,KAAK,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpI,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAE7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"assistant-debug-workbench.d.ts","sourceRoot":"","sources":["../../../../../src/client/features/assistant-debug-workbench.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAA;AACxD,OAAO,KAAK,EAAwB,oBAAoB,EAAsB,gBAAgB,EAAE,sBAAsB,EAAsH,MAAM,qCAAqC,CAAA;AAIvR,OAAO,EAA6D,KAAK,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpI,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAE7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAG3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAKpE,2CAA2C;AAC3C,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,UAAyB,EAAE,OAAO,EAAE,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,GAAG,YAAY,CAqNzN;AAED,kCAAkC;AAClC,wBAAgB,0BAA0B,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAAG,YAAY,CAQ3M;AAED,0CAA0C;AAC1C,wBAAgB,0BAA0B,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAAG,YAAY,CA4BvJ;AAqDD,wBAAgB,yBAAyB,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAAG,YAAY,CAatJ;AAED,wBAAgB,yBAAyB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAAG,YAAY,CAKrP;AAUD,qCAAqC;AACrC,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,SAAS,EAAE,MAAM,EAAE,SAAS,qBAAqB,EAAE,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,EAAE,CAOhP"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import { createElement, useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
-
import {
|
|
1
|
+
import { createElement, useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
2
|
+
import { readAssistantPrompts } from '../../shared/assistant-prompts.js';
|
|
3
3
|
import { CODINGNS_ASSISTANT_FIELD } from '../../shared/contracts/config.js';
|
|
4
4
|
import { CODINGNS_RPC_CHANNEL } from '../../shared/contracts/transport.js';
|
|
5
5
|
import { readNativeWorkspaceListStore, readNativeWorkspaceSnapshot } from '../native-workspace-store.js';
|
|
6
6
|
import { useCodingNsTranslator } from '../locale.js';
|
|
7
7
|
import { dshFieldStyle, dshSettingsButtonStyle, dshSettingsHelpStyle, dshSettingsPrimaryButtonStyle, dshThemeColor } from '../theme.js';
|
|
8
|
-
import {
|
|
8
|
+
import { assistantDisplayScope, getAssistantDisplayStore } from './assistant-display-store.js';
|
|
9
|
+
import { AssistantPromptEditor } from './assistant-prompt-editor.js';
|
|
10
|
+
export { AssistantPromptEditor } from './assistant-prompt-editor.js';
|
|
9
11
|
const TABS = ['scope', 'sessions', 'result', 'records', 'chat'];
|
|
10
12
|
/** 五个步骤各自处理范围、成员、结果、运行记录和 LLM 问答,不依赖语音。 */
|
|
11
|
-
export function AssistantDebugDialog({ services, onClose }) {
|
|
13
|
+
export function AssistantDebugDialog({ services, displayRpc = services.rpc, onClose }) {
|
|
12
14
|
const t = useCodingNsTranslator(services.locale);
|
|
13
15
|
const [tab, setTab] = useState('scope');
|
|
14
16
|
const [snapshot, setSnapshot] = useState();
|
|
@@ -33,7 +35,8 @@ export function AssistantDebugDialog({ services, onClose }) {
|
|
|
33
35
|
const summarizing = snapshot?.index.analysis?.state === 'running';
|
|
34
36
|
const busy = loading || saving || indexing || chatting || summarizing;
|
|
35
37
|
const managedIds = settings.value?.assistant.managedWorkspaceIds ?? [];
|
|
36
|
-
const scopeKey =
|
|
38
|
+
const scopeKey = assistantDisplayScope(managedIds);
|
|
39
|
+
const display = useMemo(() => getAssistantDisplayStore(displayRpc, scopeKey), [displayRpc, scopeKey]);
|
|
37
40
|
const workspaces = mergeDebugWorkspaces(snapshot, nativeWorkspaces, managedIds);
|
|
38
41
|
const prompts = readAssistantPrompts(settings.value?.assistant.prompts);
|
|
39
42
|
const call = useCallback(async (action, payload = {}, signal) => {
|
|
@@ -52,8 +55,9 @@ export function AssistantDebugDialog({ services, onClose }) {
|
|
|
52
55
|
try {
|
|
53
56
|
if (rebuild)
|
|
54
57
|
await call('assistant/index/rebuild', model ?? {}, abort.signal);
|
|
55
|
-
|
|
56
|
-
|
|
58
|
+
abort.signal.throwIfAborted();
|
|
59
|
+
const next = await display.debug.refresh({ force: true, afterPending: true });
|
|
60
|
+
if (!abort.signal.aborted && mounted.current && next)
|
|
57
61
|
setSnapshot(next);
|
|
58
62
|
}
|
|
59
63
|
catch (cause) {
|
|
@@ -66,7 +70,7 @@ export function AssistantDebugDialog({ services, onClose }) {
|
|
|
66
70
|
setIndexing(false);
|
|
67
71
|
}
|
|
68
72
|
}
|
|
69
|
-
}, [call]);
|
|
73
|
+
}, [call, display]);
|
|
70
74
|
const loadModels = useCallback(async () => {
|
|
71
75
|
setModelsLoading(true);
|
|
72
76
|
try {
|
|
@@ -87,7 +91,6 @@ export function AssistantDebugDialog({ services, onClose }) {
|
|
|
87
91
|
}, [call]);
|
|
88
92
|
useEffect(() => {
|
|
89
93
|
mounted.current = true;
|
|
90
|
-
void refresh();
|
|
91
94
|
void loadModels();
|
|
92
95
|
return () => {
|
|
93
96
|
mounted.current = false;
|
|
@@ -95,7 +98,7 @@ export function AssistantDebugDialog({ services, onClose }) {
|
|
|
95
98
|
if (activeChatId.current !== undefined)
|
|
96
99
|
void call('assistant/chat/cancel', { requestId: activeChatId.current }).catch(() => undefined);
|
|
97
100
|
};
|
|
98
|
-
}, [
|
|
101
|
+
}, [loadModels, call]);
|
|
99
102
|
useEffect(() => {
|
|
100
103
|
const model = catalog?.models.find((item) => selectionKey(item) === modelKey);
|
|
101
104
|
if (model === undefined)
|
|
@@ -122,27 +125,16 @@ export function AssistantDebugDialog({ services, onClose }) {
|
|
|
122
125
|
setSubmitted('');
|
|
123
126
|
}, [scopeKey, snapshot?.index.generation, modelKey, prompts.chat, call]);
|
|
124
127
|
useEffect(() => {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
return;
|
|
132
|
-
setSnapshot(next);
|
|
133
|
-
timer = setTimeout(() => { void poll(); }, next.index.analysis?.state === 'running' ? 600 : 1500);
|
|
134
|
-
}
|
|
135
|
-
catch (cause) {
|
|
136
|
-
if (!stopped && mounted.current) {
|
|
137
|
-
setError(errorMessage(cause));
|
|
138
|
-
timer = setTimeout(() => { void poll(); }, 1500);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
128
|
+
const changed = () => {
|
|
129
|
+
const next = display.debug.getSnapshot();
|
|
130
|
+
if (next.value)
|
|
131
|
+
setSnapshot(next.value);
|
|
132
|
+
if (next.error)
|
|
133
|
+
setError(errorMessage(next.error));
|
|
141
134
|
};
|
|
142
|
-
|
|
143
|
-
return ()
|
|
144
|
-
|
|
145
|
-
}, [summarizing, snapshot?.index.analysis?.requestId, call]);
|
|
135
|
+
changed();
|
|
136
|
+
return display.debug.subscribe(changed);
|
|
137
|
+
}, [display]);
|
|
146
138
|
useEffect(() => {
|
|
147
139
|
const onEscape = (event) => { if (event.key === 'Escape') {
|
|
148
140
|
event.stopImmediatePropagation();
|
|
@@ -155,39 +147,27 @@ export function AssistantDebugDialog({ services, onClose }) {
|
|
|
155
147
|
if (run?.state !== 'running')
|
|
156
148
|
return;
|
|
157
149
|
const id = run.requestId;
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
return;
|
|
165
|
-
setRun(next);
|
|
166
|
-
if (next.state === 'completed') {
|
|
167
|
-
activeChatId.current = undefined;
|
|
168
|
-
setHistory((previous) => [...previous, { role: 'user', text: submitted }, { role: 'assistant', text: next.text }]);
|
|
169
|
-
setSubmitted('');
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
if (next.state !== 'running') {
|
|
173
|
-
activeChatId.current = undefined;
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
timer = setTimeout(() => { void poll(); }, 600);
|
|
150
|
+
const resource = display.chat(id);
|
|
151
|
+
const changed = () => {
|
|
152
|
+
const snapshot = resource.getSnapshot();
|
|
153
|
+
if (snapshot.error) {
|
|
154
|
+
setError(errorMessage(snapshot.error));
|
|
155
|
+
return;
|
|
177
156
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
157
|
+
const next = snapshot.value;
|
|
158
|
+
if (!next || activeChatId.current !== id)
|
|
159
|
+
return;
|
|
160
|
+
setRun(next);
|
|
161
|
+
if (next.state === 'completed') {
|
|
162
|
+
setHistory((previous) => [...previous, { role: 'user', text: submitted }, { role: 'assistant', text: next.text }]);
|
|
163
|
+
setSubmitted('');
|
|
185
164
|
}
|
|
165
|
+
if (next.state !== 'running')
|
|
166
|
+
activeChatId.current = undefined;
|
|
186
167
|
};
|
|
187
|
-
|
|
188
|
-
return ()
|
|
189
|
-
|
|
190
|
-
}, [run?.requestId, run?.state, submitted, call]);
|
|
168
|
+
changed();
|
|
169
|
+
return resource.subscribe(changed);
|
|
170
|
+
}, [run?.requestId, run?.state, submitted, display]);
|
|
191
171
|
const updateScope = async (workspaceId, checked) => {
|
|
192
172
|
const next = new Set(services.settings.getSnapshot().value?.assistant.managedWorkspaceIds ?? []);
|
|
193
173
|
if (checked)
|
|
@@ -296,14 +276,7 @@ export function AssistantDebugDialog({ services, onClose }) {
|
|
|
296
276
|
};
|
|
297
277
|
const button = (label, action, disabled = busy, primary = false) => createElement('button', { type: 'button', disabled, onClick: action, style: primary ? dshSettingsPrimaryButtonStyle : dshSettingsButtonStyle }, t(label));
|
|
298
278
|
return createElement('div', { role: 'presentation', onPointerDown: onClose, style: { position: 'fixed', inset: 0, zIndex: 10010, padding: 12, display: 'flex', justifyContent: 'center', alignItems: 'center', background: dshThemeColor.overlay, boxSizing: 'border-box' } }, createElement('div', { role: 'dialog', 'aria-modal': true, 'aria-label': t('assistant.debug.title'), onPointerDown: (event) => event.stopPropagation(), style: { display: 'flex', flexDirection: 'column', gap: 16, width: 'min(960px, 100%)', maxHeight: 'calc(100dvh - 24px)', overflowY: 'auto', padding: 11, borderRadius: 12, border: `1px solid ${dshThemeColor.border}`, color: dshThemeColor.labelPrimary, background: dshThemeColor.menuBackground, boxSizing: 'border-box' } }, createElement('strong', { style: { fontSize: 18 } }, t('assistant.debug.title')), createElement('p', { style: { ...dshSettingsHelpStyle, margin: 0 } }, t('assistant.debug.stepsDescription')), createElement('div', { style: actionsStyle }, button('assistant.debug.viewRefresh', () => { void refresh(); }), button('assistant.debug.modelsRefresh', () => { void loadModels(); }, busy || modelsLoading), button(summarizing ? 'assistant.debug.summarizing' : indexing ? 'assistant.debug.indexing' : 'assistant.debug.build', () => { setTab('result'); void refresh(true, catalog?.models.find((model) => selectionKey(model) === modelKey)); }, busy || managedIds.length === 0 || modelKey === '', true), !summarizing ? null : button('assistant.debug.analysisStop', () => { void stopIndex(); }, false), button('assistant.debug.export', () => { if (snapshot !== undefined)
|
|
299
|
-
downloadSnapshot(snapshot); }, busy || snapshot === undefined), button('assistant.debug.close', onClose, false)), createElement('label', { style: { display: 'grid', gap: 8 } }, t('assistant.debug.sharedModel'), createElement('select', { 'aria-label': t('assistant.debug.sharedModel'), value: modelKey, disabled: busy || catalog === undefined, onChange: (event) => setModelKey(event.currentTarget.value), style: { ...dshFieldStyle, width: '100%', padding: 8 } }, createElement('option', { value: '', disabled: true }, t(catalog === undefined ? 'assistant.debug.modelsLoading' : 'assistant.debug.chooseModel')), ...(catalog?.models.map((model) => createElement('option', { key: selectionKey(model), value: selectionKey(model) }, model.label)) ?? []))), ...(catalog?.errors.map((message, index) => createElement('span', { key: index, role: 'alert' }, message)) ?? []), catalog?.models.length === 0 ? createElement('span', { role: 'status' }, t('assistant.debug.modelsEmpty')) : null, createElement('div', { role: 'tablist', 'aria-label': t('assistant.debug.steps'), style: actionsStyle }, ...TABS.map((item) => createElement('button', { key: item, id: `assistant-debug-tab-${item}`, type: 'button', role: 'tab', 'aria-selected': tab === item, 'aria-controls': `assistant-debug-panel-${item}`, onClick: () => setTab(item), style: tab === item ? dshSettingsPrimaryButtonStyle : dshSettingsButtonStyle }, t(`assistant.debug.tab.${item}`)))), loading || saving ? createElement('div', { role: 'status', style: dshSettingsHelpStyle }, t(indexing ? 'assistant.debug.indexing' : 'assistant.debug.loading')) : null, error === undefined ? null : createElement('div', { role: 'alert', style: { color: dshThemeColor.error, overflowWrap: 'anywhere' } }, error), createElement('div', { role: 'tabpanel', id: `assistant-debug-panel-${tab}`, 'aria-labelledby': `assistant-debug-tab-${tab}`, style: { display: 'grid', gap: 14, minWidth: 0 } }, tab !== 'scope' ? null : createElement('section', { style: sectionStyle }, createElement('strong', null, t('assistant.debug.tab.scope')), createElement('span', { style: dshSettingsHelpStyle }, t('assistant.debug.rangeHelp')), createElement('span', null, t('assistant.debug.selectedCount', { count: managedIds.length })), ...workspaces.map((workspace) => createElement('label', { key: workspace.workspaceId, style: { display: 'flex', alignItems: 'center', gap: 12 } }, createElement('input', { type: 'checkbox', 'aria-label': workspace.title, checked: managedIds.includes(workspace.workspaceId), disabled: busy || !settings.writable || settings.status === 'loading', onChange: (event) => { void updateScope(workspace.workspaceId, event.currentTarget.checked); } }), createElement('span', { style: { display: 'grid', gap: 3, minWidth: 0, overflowWrap: 'anywhere' } }, createElement('strong', null, workspace.title), createElement('span', { style: dshSettingsHelpStyle }, workspace.path ?? workspace.workspaceId), workspace.available ? null : createElement('span', null, t('assistant.debug.missingWorkspace'))))), workspaces.length === 0 ? createElement('span', null, t('assistant.noWorkspaces')) : null), tab !== 'sessions' || snapshot === undefined ? null : createElement(AssistantScopeSessionsView, { snapshot, managedIds, t }), tab !== 'result' ? null : createElement(AssistantPromptEditor, { kind: 'index', value: prompts.index, disabled: busy || !settings.writable || settings.status !== 'ready', onSave: savePrompt, t }), tab !== 'result' || snapshot === undefined ? null : createElement(AssistantDebugSnapshotView, { snapshot, t }), tab !== 'records' || snapshot === undefined ? null : createElement(AssistantIndexRecordsView, { snapshot, t }), tab !== 'chat' ? null : createElement('section', { style: sectionStyle }, createElement(AssistantPromptEditor, { kind: 'chat', value: prompts.chat, disabled: busy || !settings.writable || settings.status !== 'ready', onSave: savePrompt, t }), createElement('strong', null, t('assistant.debug.tab.chat')), createElement('span', { style: dshSettingsHelpStyle }, t('assistant.debug.chatHelp')), snapshot?.indexState !== 'ready' ? createElement('span', { role: 'status' }, t('assistant.debug.chatNeedsIndex')) : createElement('span', null, t('assistant.debug.chatGeneration', { generation: snapshot.index.generation })), createElement('div', { style: actionsStyle }, button('assistant.debug.chatClear', () => { setHistory([]); setRun(undefined); setSubmitted(''); }, chatting)), createElement(AssistantChatMessagesView, { history, submitted, run, t }), createElement('textarea', { 'aria-label': t('assistant.debug.chatInput'), placeholder: t('assistant.debug.chatPlaceholder'), maxLength: 8000, value: text, disabled: busy, onChange: (event) => setText(event.currentTarget.value), rows: 3, style: { ...dshFieldStyle, width: '100%', padding: 10, boxSizing: 'border-box', resize: 'vertical' } }), createElement('div', { style: actionsStyle }, button(chatting ? 'assistant.debug.chatGenerating' : 'assistant.debug.chatSend', () => { void send(); }, busy || modelsLoading || text.trim() === '' || modelKey === '' || snapshot?.indexState !== 'ready', true), !chatting ? null : button('assistant.debug.chatStop', () => { void stop(); }, starting))))));
|
|
300
|
-
}
|
|
301
|
-
/** 草稿只在明确保存时写入;保存单个字段,不覆盖另一阶段的提示词。 */
|
|
302
|
-
export function AssistantPromptEditor({ kind, value, disabled, onSave, onChange, t }) {
|
|
303
|
-
const [draft, setDraft] = useState(value);
|
|
304
|
-
useEffect(() => setDraft(value), [value]);
|
|
305
|
-
const change = (text) => { setDraft(text); void onChange?.(kind, text).catch(() => undefined); };
|
|
306
|
-
return createElement('details', { style: sectionStyle }, createElement('summary', { style: { ...assistantSettingTextStyle, cursor: 'pointer' } }, t(`assistant.debug.prompt.${kind}`)), createElement('span', { style: dshSettingsHelpStyle }, t('assistant.debug.promptHelp')), createElement('textarea', { 'aria-label': t(`assistant.debug.prompt.${kind}`), value: draft, disabled, maxLength: ASSISTANT_PROMPT_MAX_CHARS, rows: 5, onChange: (event) => change(event.currentTarget.value), style: { ...dshFieldStyle, ...assistantSettingTextStyle, width: '100%', padding: 10, boxSizing: 'border-box', resize: 'vertical' } }), createElement('div', { style: actionsStyle }, onChange === undefined ? createElement('button', { type: 'button', disabled: disabled || draft === value, style: dshSettingsPrimaryButtonStyle, onClick: () => { void onSave(kind, draft.trim() || DEFAULT_ASSISTANT_PROMPTS[kind]).catch(() => undefined); } }, t('assistant.debug.promptSave')) : null, createElement('button', { type: 'button', disabled, style: dshSettingsButtonStyle, onClick: () => change(DEFAULT_ASSISTANT_PROMPTS[kind]) }, t('assistant.debug.promptDefault'))));
|
|
279
|
+
downloadSnapshot(snapshot); }, busy || snapshot === undefined), button('assistant.debug.close', onClose, false)), createElement('label', { style: { display: 'grid', gap: 8 } }, t('assistant.debug.sharedModel'), createElement('select', { 'aria-label': t('assistant.debug.sharedModel'), value: modelKey, disabled: busy || catalog === undefined, onChange: (event) => setModelKey(event.currentTarget.value), style: { ...dshFieldStyle, width: '100%', padding: 8 } }, createElement('option', { value: '', disabled: true }, t(catalog === undefined ? 'assistant.debug.modelsLoading' : 'assistant.debug.chooseModel')), ...(catalog?.models.map((model) => createElement('option', { key: selectionKey(model), value: selectionKey(model) }, model.label)) ?? []))), ...(catalog?.errors.map((message, index) => createElement('span', { key: index, role: 'alert' }, message)) ?? []), catalog?.models.length === 0 ? createElement('span', { role: 'status' }, t('assistant.debug.modelsEmpty')) : null, createElement('div', { role: 'tablist', 'aria-label': t('assistant.debug.steps'), style: actionsStyle }, ...TABS.map((item) => createElement('button', { key: item, id: `assistant-debug-tab-${item}`, type: 'button', role: 'tab', 'aria-selected': tab === item, 'aria-controls': `assistant-debug-panel-${item}`, onClick: () => setTab(item), style: tab === item ? dshSettingsPrimaryButtonStyle : dshSettingsButtonStyle }, t(`assistant.debug.tab.${item}`)))), loading || saving || snapshot === undefined && error === undefined ? createElement('div', { role: 'status', style: dshSettingsHelpStyle }, t(indexing ? 'assistant.debug.indexing' : 'assistant.debug.loading')) : null, error === undefined ? null : createElement('div', { role: 'alert', style: { color: dshThemeColor.error, overflowWrap: 'anywhere' } }, error), createElement('div', { role: 'tabpanel', id: `assistant-debug-panel-${tab}`, 'aria-labelledby': `assistant-debug-tab-${tab}`, style: { display: 'grid', gap: 14, minWidth: 0 } }, tab !== 'scope' ? null : createElement('section', { style: sectionStyle }, createElement('strong', null, t('assistant.debug.tab.scope')), createElement('span', { style: dshSettingsHelpStyle }, t('assistant.debug.rangeHelp')), createElement('span', null, t('assistant.debug.selectedCount', { count: managedIds.length })), ...workspaces.map((workspace) => createElement('label', { key: workspace.workspaceId, style: { display: 'flex', alignItems: 'center', gap: 12 } }, createElement('input', { type: 'checkbox', 'aria-label': workspace.title, checked: managedIds.includes(workspace.workspaceId), disabled: busy || !settings.writable || settings.status === 'loading', onChange: (event) => { void updateScope(workspace.workspaceId, event.currentTarget.checked); } }), createElement('span', { style: { display: 'grid', gap: 3, minWidth: 0, overflowWrap: 'anywhere' } }, createElement('strong', null, workspace.title), createElement('span', { style: dshSettingsHelpStyle }, workspace.path ?? workspace.workspaceId), workspace.available ? null : createElement('span', null, t('assistant.debug.missingWorkspace'))))), workspaces.length === 0 ? createElement('span', null, t('assistant.noWorkspaces')) : null), tab !== 'sessions' || snapshot === undefined ? null : createElement(AssistantScopeSessionsView, { snapshot, managedIds, t }), tab !== 'result' ? null : createElement(AssistantPromptEditor, { kind: 'index', value: prompts.index, disabled: busy || !settings.writable || settings.status !== 'ready', onSave: savePrompt, t }), tab !== 'result' || snapshot === undefined ? null : createElement(AssistantDebugSnapshotView, { snapshot, t }), tab !== 'records' || snapshot === undefined ? null : createElement(AssistantIndexRecordsView, { snapshot, t }), tab !== 'chat' ? null : createElement('section', { style: sectionStyle }, createElement(AssistantPromptEditor, { kind: 'chat', value: prompts.chat, disabled: busy || !settings.writable || settings.status !== 'ready', onSave: savePrompt, t }), createElement('strong', null, t('assistant.debug.tab.chat')), createElement('span', { style: dshSettingsHelpStyle }, t('assistant.debug.chatHelp')), snapshot?.indexState !== 'ready' ? createElement('span', { role: 'status' }, t('assistant.debug.chatNeedsIndex')) : createElement('span', null, t('assistant.debug.chatGeneration', { generation: snapshot.index.generation })), createElement('div', { style: actionsStyle }, button('assistant.debug.chatClear', () => { setHistory([]); setRun(undefined); setSubmitted(''); }, chatting)), createElement(AssistantChatMessagesView, { history, submitted, run, t }), createElement('textarea', { 'aria-label': t('assistant.debug.chatInput'), placeholder: t('assistant.debug.chatPlaceholder'), maxLength: 8000, value: text, disabled: busy, onChange: (event) => setText(event.currentTarget.value), rows: 3, style: { ...dshFieldStyle, width: '100%', padding: 10, boxSizing: 'border-box', resize: 'vertical' } }), createElement('div', { style: actionsStyle }, button(chatting ? 'assistant.debug.chatGenerating' : 'assistant.debug.chatSend', () => { void send(); }, busy || modelsLoading || text.trim() === '' || modelKey === '' || snapshot?.indexState !== 'ready', true), !chatting ? null : button('assistant.debug.chatStop', () => { void stop(); }, starting))))));
|
|
307
280
|
}
|
|
308
281
|
/** 范围成员与正文索引分开显示,空项目也必须出现在范围内。 */
|
|
309
282
|
export function AssistantScopeSessionsView({ snapshot, managedIds, t }) {
|