@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,177 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { installDoubaoRuntime } from './doubao-runtime.js';
|
|
3
|
+
/** 仅接受当前配置的回环端口,防止 discovery 将登录态桥接到另一个服务。 */
|
|
4
|
+
export function doubaoBackgroundSocket(targets, port) {
|
|
5
|
+
if (!Array.isArray(targets))
|
|
6
|
+
throw new Error('豆包调试目标列表无效');
|
|
7
|
+
const matches = targets.filter((target) => target?.url === 'doubao://doubao-background/' || target?.url === 'chrome://doubao-background/');
|
|
8
|
+
if (matches.length !== 1)
|
|
9
|
+
throw new Error('未找到唯一的豆包原生后台页;请检查 App 版本,不会改用前台窗口');
|
|
10
|
+
const url = new URL(String(matches[0].webSocketDebuggerUrl));
|
|
11
|
+
if (url.protocol !== 'ws:' || url.hostname !== '127.0.0.1' || url.port !== String(port)
|
|
12
|
+
|| url.username || url.password || !url.pathname.startsWith('/devtools/page/'))
|
|
13
|
+
throw new Error('豆包调试地址不属于配置的本机端口');
|
|
14
|
+
return url.href;
|
|
15
|
+
}
|
|
16
|
+
/** CDP 仅负责豆包后台页请求,生命周期限定在单轮调用。 */
|
|
17
|
+
export class DoubaoCdp {
|
|
18
|
+
socket;
|
|
19
|
+
timeoutMs;
|
|
20
|
+
sequence = 0;
|
|
21
|
+
pending = new Map();
|
|
22
|
+
constructor(socket, timeoutMs) {
|
|
23
|
+
this.socket = socket;
|
|
24
|
+
this.timeoutMs = timeoutMs;
|
|
25
|
+
socket.addEventListener('message', ({ data }) => {
|
|
26
|
+
let message;
|
|
27
|
+
try {
|
|
28
|
+
message = JSON.parse(String(data));
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
this.fail(new Error('豆包 CDP 响应不是有效 JSON'));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const request = this.pending.get(message.id);
|
|
35
|
+
if (!request)
|
|
36
|
+
return;
|
|
37
|
+
clearTimeout(request.timer);
|
|
38
|
+
this.pending.delete(message.id);
|
|
39
|
+
if (message.error)
|
|
40
|
+
request.reject(new Error('豆包 CDP 请求失败'));
|
|
41
|
+
else
|
|
42
|
+
request.resolve(message.result);
|
|
43
|
+
});
|
|
44
|
+
socket.addEventListener('close', () => this.fail(new Error('豆包调试连接已关闭;本轮不会自动重发')));
|
|
45
|
+
socket.addEventListener('error', () => this.fail(new Error('豆包调试连接异常')));
|
|
46
|
+
}
|
|
47
|
+
static async connect(url, timeoutMs = 45_000) {
|
|
48
|
+
const socket = new WebSocket(url);
|
|
49
|
+
await new Promise((resolve, reject) => {
|
|
50
|
+
const timer = setTimeout(() => { cleanup(); socket.close(); reject(new Error('连接豆包调试端口超时')); }, Math.min(timeoutMs, 5_000));
|
|
51
|
+
const cleanup = () => { clearTimeout(timer); socket.removeEventListener('open', opened); socket.removeEventListener('error', failed); };
|
|
52
|
+
const opened = () => { cleanup(); resolve(); };
|
|
53
|
+
const failed = () => { cleanup(); socket.close(); reject(new Error('无法连接豆包调试端口')); };
|
|
54
|
+
socket.addEventListener('open', opened);
|
|
55
|
+
socket.addEventListener('error', failed);
|
|
56
|
+
});
|
|
57
|
+
return new DoubaoCdp(socket, timeoutMs);
|
|
58
|
+
}
|
|
59
|
+
request(method, params) {
|
|
60
|
+
if (this.socket.readyState !== WebSocket.OPEN)
|
|
61
|
+
return Promise.reject(new Error('豆包调试连接不可用'));
|
|
62
|
+
const id = ++this.sequence;
|
|
63
|
+
return new Promise((resolve, reject) => {
|
|
64
|
+
const timer = setTimeout(() => {
|
|
65
|
+
this.pending.delete(id);
|
|
66
|
+
reject(new Error('豆包后台请求超时;本轮不会自动重发'));
|
|
67
|
+
}, this.timeoutMs);
|
|
68
|
+
this.pending.set(id, { resolve, reject, timer });
|
|
69
|
+
try {
|
|
70
|
+
this.socket.send(JSON.stringify({ id, method, params }));
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
clearTimeout(timer);
|
|
74
|
+
this.pending.delete(id);
|
|
75
|
+
reject(new Error('豆包调试请求发送失败'));
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
async evaluate(expression) {
|
|
80
|
+
const result = await this.request('Runtime.evaluate', { expression, awaitPromise: true, returnByValue: true, userGesture: false });
|
|
81
|
+
if (result.exceptionDetails) {
|
|
82
|
+
// 不暴露 App 异常栈、签名 URL 或请求参数,只提取自有错误码。
|
|
83
|
+
const code = String(result.exceptionDetails.exception?.description ?? '').match(/DOUBAO_[A-Z_0-9]+/u)?.[0];
|
|
84
|
+
throw new Error(`豆包后台接口不可用${code ? `(${code})` : ',请检查登录状态和网络'}`);
|
|
85
|
+
}
|
|
86
|
+
return result.result?.value;
|
|
87
|
+
}
|
|
88
|
+
fail(error) {
|
|
89
|
+
for (const request of this.pending.values()) {
|
|
90
|
+
clearTimeout(request.timer);
|
|
91
|
+
request.reject(error);
|
|
92
|
+
}
|
|
93
|
+
this.pending.clear();
|
|
94
|
+
}
|
|
95
|
+
close() { this.fail(new Error('豆包调试连接已释放')); this.socket.close(); }
|
|
96
|
+
}
|
|
97
|
+
export class DoubaoCdpBridge {
|
|
98
|
+
cdp;
|
|
99
|
+
key = `__codingns_doubao_${randomUUID().replaceAll('-', '')}`;
|
|
100
|
+
closed = false;
|
|
101
|
+
constructor(cdp) {
|
|
102
|
+
this.cdp = cdp;
|
|
103
|
+
}
|
|
104
|
+
static async open(socket) {
|
|
105
|
+
const bridge = new DoubaoCdpBridge(await DoubaoCdp.connect(socket));
|
|
106
|
+
try {
|
|
107
|
+
await bridge.cdp.evaluate(`(${installDoubaoRuntime.toString()})(${JSON.stringify(bridge.key)})`);
|
|
108
|
+
return bridge;
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
await bridge.close();
|
|
112
|
+
throw error;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
call(method, ...args) {
|
|
116
|
+
return this.cdp.evaluate(`globalThis[${JSON.stringify(this.key)}].${method}(...${JSON.stringify(args)})`);
|
|
117
|
+
}
|
|
118
|
+
create(name) { return this.call('create', name); }
|
|
119
|
+
history(id) { return this.call('history', id); }
|
|
120
|
+
stop(id, reply) { return this.call('stop', id, reply); }
|
|
121
|
+
async cancel() { if (!this.closed)
|
|
122
|
+
await this.call('cancel'); }
|
|
123
|
+
/** 下载地址仅来自本轮文件块;App 侧再次限制来源且不携带登录凭据。 */
|
|
124
|
+
async download(url, maxBytes) {
|
|
125
|
+
const response = await this.call('download', url, maxBytes);
|
|
126
|
+
if (response.status !== 200) {
|
|
127
|
+
await this.cancel();
|
|
128
|
+
throw new Error(`豆包产物下载失败(HTTP ${response.status})`);
|
|
129
|
+
}
|
|
130
|
+
return this.response(response.mime);
|
|
131
|
+
}
|
|
132
|
+
fetch = async (input, init = {}) => {
|
|
133
|
+
if (String(input) !== 'https://www.doubao.com/chat/completion' || init.method !== 'POST' || typeof init.body !== 'string') {
|
|
134
|
+
throw new Error('豆包后台桥只接受对话请求');
|
|
135
|
+
}
|
|
136
|
+
const response = await this.call('start', JSON.parse(init.body));
|
|
137
|
+
if (response.status !== 200 || !response.mime.includes('text/event-stream')) {
|
|
138
|
+
await this.cancel();
|
|
139
|
+
throw new Error(`豆包未返回对话流(HTTP ${response.status});请检查登录状态和模式权限`);
|
|
140
|
+
}
|
|
141
|
+
return this.response(response.mime);
|
|
142
|
+
};
|
|
143
|
+
response(mime) {
|
|
144
|
+
const body = new ReadableStream({
|
|
145
|
+
pull: async (controller) => {
|
|
146
|
+
try {
|
|
147
|
+
const chunk = await this.call('read');
|
|
148
|
+
if (chunk === null)
|
|
149
|
+
controller.close();
|
|
150
|
+
else
|
|
151
|
+
controller.enqueue(Uint8Array.from(chunk));
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
controller.error(error);
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
cancel: () => this.cancel(),
|
|
158
|
+
}, { highWaterMark: 0 });
|
|
159
|
+
return new Response(body, { status: 200, headers: { 'content-type': mime } });
|
|
160
|
+
}
|
|
161
|
+
async close() {
|
|
162
|
+
if (this.closed)
|
|
163
|
+
return;
|
|
164
|
+
this.closed = true;
|
|
165
|
+
// 清理请求有独立上限;即使目标已崩溃,也必须及时释放 Host 连接。
|
|
166
|
+
let timer;
|
|
167
|
+
try {
|
|
168
|
+
await Promise.race([this.call('dispose'), new Promise((resolve) => { timer = setTimeout(resolve, 1_000); })]);
|
|
169
|
+
}
|
|
170
|
+
catch { /* App 关闭后无需继续清理页面变量。 */ }
|
|
171
|
+
finally {
|
|
172
|
+
clearTimeout(timer);
|
|
173
|
+
this.cdp.close();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=doubao-cdp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doubao-cdp.js","sourceRoot":"","sources":["../../../../../src/host/cli-adapters/doubao-cdp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { CodingNsAgentEvent, CodingNsCliTurnInput } from '../../shared/contracts/cli-adapter.js';
|
|
2
|
+
import type { CodingNsCliDriver, CodingNsCliSessionProbeInput, CodingNsCliSessionProbeResult } from './driver.js';
|
|
3
|
+
import { type DoubaoAppConnection } from './doubao-app.js';
|
|
4
|
+
import type { DoubaoConversation } from './doubao-cdp.js';
|
|
5
|
+
import { DOUBAO_CATALOG } from './model-catalog.js';
|
|
6
|
+
/** 产品档位并非可任意选择的基础模型;旧默认值仅映射到快速模式。 */
|
|
7
|
+
export declare function doubaoMode(input: CodingNsCliTurnInput): number;
|
|
8
|
+
/** 请求内只放任务内容;认证参数由 App 内桥接补齐。 */
|
|
9
|
+
export declare function doubaoRequest(conversation: DoubaoConversation, prompt: string, mode: number): Record<string, unknown>;
|
|
10
|
+
export declare class DoubaoAppDriver implements CodingNsCliDriver {
|
|
11
|
+
private readonly app;
|
|
12
|
+
readonly descriptor: {
|
|
13
|
+
readonly id: "doubao";
|
|
14
|
+
readonly name: "豆包 App";
|
|
15
|
+
readonly protocol: "http-sse";
|
|
16
|
+
readonly capabilities: readonly ["models", "stream", "resume", "reasoning", "tool-events", "interrupt"];
|
|
17
|
+
};
|
|
18
|
+
private readonly runs;
|
|
19
|
+
private readonly conversations;
|
|
20
|
+
private diagnostic;
|
|
21
|
+
constructor(app?: DoubaoAppConnection);
|
|
22
|
+
detect(): ReturnType<DoubaoAppConnection['detect']>;
|
|
23
|
+
getDiscoveryDiagnostic(): string | undefined;
|
|
24
|
+
listModels(): Promise<typeof DOUBAO_CATALOG>;
|
|
25
|
+
probeSession(input: CodingNsCliSessionProbeInput): Promise<CodingNsCliSessionProbeResult>;
|
|
26
|
+
executeTurn(input: CodingNsCliTurnInput): AsyncIterable<CodingNsAgentEvent>;
|
|
27
|
+
private saveArtifacts;
|
|
28
|
+
private requestCancel;
|
|
29
|
+
private stopIfReady;
|
|
30
|
+
interrupt(sessionId: string): Promise<void>;
|
|
31
|
+
dispose(): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=doubao-driver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doubao-driver.d.ts","sourceRoot":"","sources":["../../../../../src/host/cli-adapters/doubao-driver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AACrG,OAAO,KAAK,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AACjH,OAAO,EAAa,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,KAAK,EAAgB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAGvE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAmBnD,qCAAqC;AACrC,wBAAgB,UAAU,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAc9D;AAED,iCAAiC;AACjC,wBAAgB,aAAa,CAAC,YAAY,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgBrH;AAED,qBAAa,eAAgB,YAAW,iBAAiB;IAM3C,OAAO,CAAC,QAAQ,CAAC,GAAG;IALhC,QAAQ,CAAC,UAAU;;;;;MACwF;IAC3G,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,UAAU,CAAoB;gBACT,GAAG,GAAE,mBAAqC;IAEjE,MAAM,IAAI,UAAU,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAIzD,sBAAsB,IAAI,MAAM,GAAG,SAAS;IACtC,UAAU,IAAI,OAAO,CAAC,OAAO,cAAc,CAAC;IAE5C,YAAY,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAgBxF,WAAW,CAAC,KAAK,EAAE,oBAAoB,GAAG,aAAa,CAAC,kBAAkB,CAAC;YAwEnE,aAAa;YA6Bd,aAAa;YAwBb,WAAW;IAkBnB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { DoubaoApp } from './doubao-app.js';
|
|
3
|
+
import { DoubaoEventProjector } from './doubao-events.js';
|
|
4
|
+
import { HttpSseClient } from './http-sse-client.js';
|
|
5
|
+
import { DOUBAO_CATALOG } from './model-catalog.js';
|
|
6
|
+
import { doubaoArtifactDirectory, doubaoArtifactName, saveDoubaoArtifact } from './doubao-artifact-store.js';
|
|
7
|
+
/** 产品档位并非可任意选择的基础模型;旧默认值仅映射到快速模式。 */
|
|
8
|
+
export function doubaoMode(input) {
|
|
9
|
+
if (input.attachments?.length)
|
|
10
|
+
throw new Error('豆包 App 适配器暂不支持附件上传');
|
|
11
|
+
if (input.plan || input.forkSession || input.enableAskUserQuestion || input.skillPaths?.length)
|
|
12
|
+
throw new Error('豆包 App 暂不支持计划、fork、原生提问或 Skill 注入');
|
|
13
|
+
// 模型选择器用 default 显式清除上一个模型的档位;它不是自定义能力请求。
|
|
14
|
+
// 保留 Host 的清空语义,仅在豆包边界拒绝实际指定的非默认值。
|
|
15
|
+
const effort = input.effortId?.trim();
|
|
16
|
+
const serviceTier = input.serviceTierId?.trim();
|
|
17
|
+
if (effort && effort !== 'default')
|
|
18
|
+
throw new Error('豆包 App 不支持独立思考强度,请使用默认值并选择快速、专家或工作任务');
|
|
19
|
+
if (serviceTier && serviceTier !== 'default')
|
|
20
|
+
throw new Error('豆包 App 不支持自定义服务档位,请使用默认值');
|
|
21
|
+
if (Object.keys(input.runtimeEnv ?? {}).length)
|
|
22
|
+
throw new Error('豆包 App 不支持运行环境注入');
|
|
23
|
+
const modes = { 'provider-default': 0, 'doubao-fast': 0, 'doubao-expert': 3, 'doubao-work': 4 };
|
|
24
|
+
const mode = modes[input.modelId ?? 'doubao-fast'];
|
|
25
|
+
if (mode === undefined)
|
|
26
|
+
throw new Error('未知豆包产品档位,请选择快速、专家或工作任务');
|
|
27
|
+
return mode;
|
|
28
|
+
}
|
|
29
|
+
/** 请求内只放任务内容;认证参数由 App 内桥接补齐。 */
|
|
30
|
+
export function doubaoRequest(conversation, prompt, mode) {
|
|
31
|
+
const localId = randomUUID();
|
|
32
|
+
return {
|
|
33
|
+
client_meta: { local_conversation_id: '', conversation_id: conversation.id, last_section_id: conversation.section, last_message_index: conversation.index },
|
|
34
|
+
messages: [{ local_message_id: localId, content_block: [{ block_type: 10000, block_id: randomUUID(), parent_id: '',
|
|
35
|
+
content: { text_block: { text: prompt, icon_url: '', icon_url_dark: '', summary: '' }, pc_event_block: '' }, meta_info: [], append_fields: [] }], message_status: 0 }],
|
|
36
|
+
option: { send_message_scene: '', create_time_ms: Date.now(), collect_id: '', is_audio: false, answer_with_suggest: false,
|
|
37
|
+
tts_switch: false, need_deep_think: mode, click_clear_context: false, from_suggest: false, is_regen: false,
|
|
38
|
+
is_replace: false, is_from_click_option: false, disable_sse_cache: false, select_text_action: '', is_select_text: false,
|
|
39
|
+
resend_for_regen: false, scene_type: 0, unique_key: randomUUID(), start_seq: 0, need_create_conversation: false,
|
|
40
|
+
conversation_init_option: { need_ack_conversation: true }, regen_query_id: [], edit_query_id: [], regen_instruction: '',
|
|
41
|
+
no_replace_for_regen: false, message_from: 0, shared_app_name: '', shared_app_id: '', sse_recv_event_options: { support_chunk_delta: true },
|
|
42
|
+
is_ai_playground: false, is_old_user: true, recovery_option: { is_recovery: false, req_create_time_sec: Math.floor(Date.now() / 1000), append_sse_event_scene: 0 },
|
|
43
|
+
message_storage_type: 0, ...(mode === 4 ? { general_task_param: { action: 0, thread_local_message_id: [localId] } } : {}) },
|
|
44
|
+
ext: { use_deep_think: String(mode), collection_id: '', commerce_credit_config_enable: '0' },
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export class DoubaoAppDriver {
|
|
48
|
+
app;
|
|
49
|
+
descriptor = { id: 'doubao', name: '豆包 App', protocol: 'http-sse',
|
|
50
|
+
capabilities: ['models', 'stream', 'resume', 'reasoning', 'tool-events', 'interrupt'] };
|
|
51
|
+
runs = new Map();
|
|
52
|
+
conversations = new Set();
|
|
53
|
+
diagnostic;
|
|
54
|
+
constructor(app = new DoubaoApp()) {
|
|
55
|
+
this.app = app;
|
|
56
|
+
}
|
|
57
|
+
async detect() {
|
|
58
|
+
try {
|
|
59
|
+
const result = await this.app.detect();
|
|
60
|
+
this.diagnostic = result.installed ? undefined : '未找到豆包 App;Windows 可指定安装路径或先开启调试端口';
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
this.diagnostic = error instanceof Error ? error.message : '豆包 App 检测失败';
|
|
65
|
+
return { installed: false, version: null, command: null };
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
getDiscoveryDiagnostic() { return this.diagnostic; }
|
|
69
|
+
async listModels() { return DOUBAO_CATALOG; }
|
|
70
|
+
async probeSession(input) {
|
|
71
|
+
if (!input.providerSessionId)
|
|
72
|
+
return { state: 'unknown', reason: '尚未绑定豆包会话' };
|
|
73
|
+
if (!/^\d+$/u.test(input.providerSessionId))
|
|
74
|
+
return { state: 'corrupt', reason: '豆包会话标识格式无效' };
|
|
75
|
+
let bridge;
|
|
76
|
+
const abort = () => { void bridge?.close(); };
|
|
77
|
+
input.signal?.addEventListener('abort', abort, { once: true });
|
|
78
|
+
try {
|
|
79
|
+
bridge = await this.app.connect(false, input.signal);
|
|
80
|
+
input.signal?.throwIfAborted();
|
|
81
|
+
const info = await bridge.history(input.providerSessionId);
|
|
82
|
+
return info.found ? { state: 'available', reason: '豆包已返回该会话的消息记录' }
|
|
83
|
+
: { state: 'unknown', reason: '豆包未返回消息,不能据此断言会话不存在' };
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
return { state: 'unreachable', reason: error instanceof Error ? error.message : '无法读取豆包会话' };
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
input.signal?.removeEventListener('abort', abort);
|
|
90
|
+
await bridge?.close();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async *executeTurn(input) {
|
|
94
|
+
const mode = doubaoMode(input);
|
|
95
|
+
if (this.runs.has(input.sessionId))
|
|
96
|
+
throw new Error('该豆包会话已有运行中的回合');
|
|
97
|
+
if (input.providerSessionId && !/^\d+$/u.test(input.providerSessionId))
|
|
98
|
+
throw new Error('豆包会话标识格式无效');
|
|
99
|
+
if (!input.prompt.trim())
|
|
100
|
+
throw new Error('豆包消息不能为空');
|
|
101
|
+
const run = { mode, sent: false, cancelRequested: false, cancelled: false, saving: new AbortController() };
|
|
102
|
+
this.runs.set(input.sessionId, run);
|
|
103
|
+
const abort = () => { void this.requestCancel(run).catch((error) => { run.cancelError = error instanceof Error ? error : new Error('豆包取消失败'); }); };
|
|
104
|
+
input.signal?.addEventListener('abort', abort, { once: true });
|
|
105
|
+
let lockedId;
|
|
106
|
+
try {
|
|
107
|
+
if (input.signal?.aborted) {
|
|
108
|
+
run.cancelRequested = true;
|
|
109
|
+
run.cancelled = true;
|
|
110
|
+
return yield { type: 'finish', reason: 'cancel' };
|
|
111
|
+
}
|
|
112
|
+
run.bridge = await this.app.connect(true, input.signal);
|
|
113
|
+
if (run.cancelRequested) {
|
|
114
|
+
run.cancelled = true;
|
|
115
|
+
return yield { type: 'finish', reason: 'cancel' };
|
|
116
|
+
}
|
|
117
|
+
if (input.providerSessionId) {
|
|
118
|
+
if (this.conversations.has(input.providerSessionId))
|
|
119
|
+
throw new Error('同一个豆包原始会话已被另一回合占用');
|
|
120
|
+
lockedId = input.providerSessionId;
|
|
121
|
+
this.conversations.add(lockedId);
|
|
122
|
+
run.conversation = await run.bridge.history(lockedId);
|
|
123
|
+
// SSE 关闭早于历史落库;短暂只读等待,避免刚结束的回答被误判为仍在运行。
|
|
124
|
+
for (let attempt = 0; run.conversation.busy && attempt < 6 && !run.cancelRequested; attempt += 1) {
|
|
125
|
+
await new Promise((resolve) => setTimeout(resolve, 300));
|
|
126
|
+
run.conversation = await run.bridge.history(lockedId);
|
|
127
|
+
}
|
|
128
|
+
if (!run.conversation.found)
|
|
129
|
+
throw new Error('豆包会话没有可恢复消息;不会自动改用其他会话或重发历史');
|
|
130
|
+
if (run.conversation.busy)
|
|
131
|
+
throw new Error('豆包会话仍有未结束回答,请在 App 中确认状态后再继续');
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
run.conversation = await run.bridge.create(`CodingNS ${input.sessionId.slice(0, 40)}`);
|
|
135
|
+
if (typeof run.conversation.id !== 'string' || !/^\d+$/u.test(run.conversation.id))
|
|
136
|
+
throw new Error('豆包没有返回有效的新会话标识');
|
|
137
|
+
if (this.conversations.has(run.conversation.id))
|
|
138
|
+
throw new Error('豆包返回了正在使用的会话,拒绝发送');
|
|
139
|
+
lockedId = run.conversation.id;
|
|
140
|
+
this.conversations.add(lockedId);
|
|
141
|
+
}
|
|
142
|
+
const conversation = run.conversation;
|
|
143
|
+
if (!/^\d+$/u.test(conversation.id) || !/^\d+$/u.test(conversation.section) || !Number.isSafeInteger(conversation.index))
|
|
144
|
+
throw new Error('豆包会话元数据不完整,未发送消息');
|
|
145
|
+
if (input.providerSessionId && conversation.id !== input.providerSessionId)
|
|
146
|
+
throw new Error('豆包历史会话标识不匹配');
|
|
147
|
+
yield { type: 'session-binding', providerSessionId: conversation.id };
|
|
148
|
+
if (run.cancelRequested) {
|
|
149
|
+
run.cancelled = true;
|
|
150
|
+
return yield { type: 'finish', reason: 'cancel' };
|
|
151
|
+
}
|
|
152
|
+
run.projector = new DoubaoEventProjector(conversation.id);
|
|
153
|
+
const client = new HttpSseClient({ fetch: run.bridge.fetch });
|
|
154
|
+
run.sent = true;
|
|
155
|
+
const prompt = mode === 4 ? `${input.prompt}\n\n交付约定:任务需要文件时,请在云端生成并交付可下载的文件产物。适配器会在任务结束后将产物保存到当前项目根目录下的 Doubao 目录;不要仅回复代码或云端路径,也不要声称已经操作本机文件。` : input.prompt;
|
|
156
|
+
for await (const frame of client.sse('https://www.doubao.com/chat/completion', { method: 'POST', body: JSON.stringify(doubaoRequest(conversation, prompt, mode)) })) {
|
|
157
|
+
for (const event of run.projector.accept(frame))
|
|
158
|
+
yield event;
|
|
159
|
+
if (run.cancelRequested)
|
|
160
|
+
await this.stopIfReady(run);
|
|
161
|
+
if (run.cancelled || run.cancelError)
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
if (run.cancelError)
|
|
165
|
+
throw run.cancelError;
|
|
166
|
+
if (!run.cancelled && (!run.projector.acknowledged || !run.projector.ended))
|
|
167
|
+
throw new Error('豆包流提前关闭,云端状态尚未确认;本轮不会自动重发');
|
|
168
|
+
run.cloudFinished = true;
|
|
169
|
+
if (!run.cancelled)
|
|
170
|
+
yield* this.saveArtifacts(run, input);
|
|
171
|
+
run.finished = true;
|
|
172
|
+
yield { type: 'finish', reason: run.cancelled ? 'cancel' : 'stop' };
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
run.finished = true;
|
|
176
|
+
yield run.cancelled ? { type: 'finish', reason: 'cancel' } : { type: 'finish', reason: 'error', failure: {
|
|
177
|
+
message: run.cancelError?.message ?? (error instanceof Error ? error.message : '豆包调用失败'),
|
|
178
|
+
code: run.cloudFinished ? 'DOUBAO_ARTIFACT_SAVE_FAILED' : 'DOUBAO_TURN_FAILED'
|
|
179
|
+
} };
|
|
180
|
+
}
|
|
181
|
+
finally {
|
|
182
|
+
input.signal?.removeEventListener('abort', abort);
|
|
183
|
+
clearTimeout(run.timer);
|
|
184
|
+
// 消费方提前丢弃迭代器时尽力停止普通回答;工作任务不能假称已停止。
|
|
185
|
+
if (run.sent && !run.projector?.ended && !run.cancelled && mode !== 4) {
|
|
186
|
+
run.cancelRequested = true;
|
|
187
|
+
try {
|
|
188
|
+
await this.stopIfReady(run);
|
|
189
|
+
}
|
|
190
|
+
catch { /* 原错误已经由终态报告。 */ }
|
|
191
|
+
}
|
|
192
|
+
await run.bridge?.close();
|
|
193
|
+
if (lockedId)
|
|
194
|
+
this.conversations.delete(lockedId);
|
|
195
|
+
this.runs.delete(input.sessionId);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
async *saveArtifacts(run, input) {
|
|
199
|
+
const artifacts = run.projector.artifacts.list();
|
|
200
|
+
if (!artifacts.length)
|
|
201
|
+
return;
|
|
202
|
+
const root = await doubaoArtifactDirectory(input);
|
|
203
|
+
let failures = 0;
|
|
204
|
+
for (const artifact of artifacts) {
|
|
205
|
+
if (run.cancelled)
|
|
206
|
+
break;
|
|
207
|
+
const callId = `doubao-save-${artifact.id}`;
|
|
208
|
+
const toolName = '保存豆包产物';
|
|
209
|
+
const name = doubaoArtifactName(artifact.name);
|
|
210
|
+
// 只公开目标目录和安全文件名;签名地址不得进入事件和原生工具历史。
|
|
211
|
+
yield { type: 'tool-event', callId, toolName, status: 'started', input: JSON.stringify({ directory: root, file: name }), detail: '下载并保存到当前项目的 Doubao 目录' };
|
|
212
|
+
try {
|
|
213
|
+
const saved = await saveDoubaoArtifact(run.bridge, artifact, root, run.saving.signal);
|
|
214
|
+
yield { type: 'tool-event', callId, toolName, status: 'completed', output: JSON.stringify(saved), outputMode: 'snapshot' };
|
|
215
|
+
const label = pathLabel(saved.path);
|
|
216
|
+
yield { type: 'text-delta', text: `\n\n已保存到项目的 Doubao 目录:[${label}](<${saved.path.replaceAll('%', '%25').replaceAll('<', '%3C').replaceAll('>', '%3E')}>)(${saved.size} 字节)。` };
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
const message = run.cancelled ? '已取消本地下载;云端任务已完成,未发布不完整文件'
|
|
220
|
+
: error instanceof Error ? error.message : '豆包产物保存失败,请在豆包 App 下载';
|
|
221
|
+
yield { type: 'tool-event', callId, toolName, status: 'failed', error: message, output: message, outputMode: 'snapshot' };
|
|
222
|
+
if (run.cancelled)
|
|
223
|
+
break;
|
|
224
|
+
failures++;
|
|
225
|
+
yield { type: 'text-delta', text: `\n\n产物「${name}」未保存:${message}。` };
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
if (failures)
|
|
229
|
+
throw new Error(`豆包云端任务已完成,但 ${failures} 个产物未保存;已成功保存的文件保留,失败详情见保存工具记录,请在豆包 App 下载`);
|
|
230
|
+
}
|
|
231
|
+
async requestCancel(run) {
|
|
232
|
+
if (run.cancelled || run.finished)
|
|
233
|
+
return;
|
|
234
|
+
if (run.cloudFinished) {
|
|
235
|
+
run.cancelRequested = true;
|
|
236
|
+
run.cancelled = true;
|
|
237
|
+
run.saving.abort();
|
|
238
|
+
await run.bridge?.cancel();
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
if (run.mode === 4 && run.sent) {
|
|
242
|
+
const error = new Error('已停止接收豆包工作任务;云端工具可能继续,请到豆包 App 确认并停止任务');
|
|
243
|
+
run.cancelError = error;
|
|
244
|
+
await run.bridge?.cancel();
|
|
245
|
+
throw error;
|
|
246
|
+
}
|
|
247
|
+
run.cancelRequested = true;
|
|
248
|
+
if (!run.sent)
|
|
249
|
+
return;
|
|
250
|
+
run.timer ??= setTimeout(() => {
|
|
251
|
+
run.cancelError = new Error('未能确认豆包普通回答已停止;请在 App 中核实,本轮不会重发');
|
|
252
|
+
void run.bridge?.cancel().catch(() => undefined);
|
|
253
|
+
}, 10_000);
|
|
254
|
+
await this.stopIfReady(run);
|
|
255
|
+
}
|
|
256
|
+
async stopIfReady(run) {
|
|
257
|
+
if (!run.bridge || !run.conversation || !run.projector?.replyId || !run.cancelRequested)
|
|
258
|
+
return;
|
|
259
|
+
const bridge = run.bridge;
|
|
260
|
+
const id = run.conversation.id;
|
|
261
|
+
const reply = run.projector.replyId;
|
|
262
|
+
run.stopping ??= (async () => {
|
|
263
|
+
await bridge.stop(id, reply);
|
|
264
|
+
run.cancelled = true;
|
|
265
|
+
clearTimeout(run.timer);
|
|
266
|
+
await bridge.cancel();
|
|
267
|
+
})();
|
|
268
|
+
try {
|
|
269
|
+
await run.stopping;
|
|
270
|
+
}
|
|
271
|
+
catch (error) {
|
|
272
|
+
run.cancelError = error instanceof Error ? error : new Error('豆包停止失败');
|
|
273
|
+
await bridge.cancel();
|
|
274
|
+
throw run.cancelError;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
async interrupt(sessionId) { const run = this.runs.get(sessionId); if (run)
|
|
278
|
+
await this.requestCancel(run); }
|
|
279
|
+
async dispose() {
|
|
280
|
+
await Promise.allSettled([...this.runs.values()].map(async (run) => { try {
|
|
281
|
+
await this.requestCancel(run);
|
|
282
|
+
}
|
|
283
|
+
finally {
|
|
284
|
+
await run.bridge?.close();
|
|
285
|
+
} }));
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
function pathLabel(value) {
|
|
289
|
+
return value.replaceAll('\\', '/').split('/').at(-1).replace(/[\[\]\\]/gu, '\\$&');
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=doubao-driver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doubao-driver.js","sourceRoot":"","sources":["../../../../../src/host/cli-adapters/doubao-driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { CodingNsAgentEvent } from '../../shared/contracts/cli-adapter.js';
|
|
2
|
+
import type { SseEvent } from './http-sse-client.js';
|
|
3
|
+
import { DoubaoArtifactCollector } from './doubao-artifacts.js';
|
|
4
|
+
/** 每个回合一个投影器;只处理白名单字段,绝不把原始响应作为工具输出。 */
|
|
5
|
+
export declare class DoubaoEventProjector {
|
|
6
|
+
private readonly conversationId;
|
|
7
|
+
private readonly blocks;
|
|
8
|
+
private readonly tools;
|
|
9
|
+
readonly artifacts: DoubaoArtifactCollector;
|
|
10
|
+
private currentBlock;
|
|
11
|
+
private emitted;
|
|
12
|
+
replyId: string | undefined;
|
|
13
|
+
acknowledged: boolean;
|
|
14
|
+
ended: boolean;
|
|
15
|
+
constructor(conversationId: string);
|
|
16
|
+
accept(event: SseEvent): CodingNsAgentEvent[];
|
|
17
|
+
private applyBlock;
|
|
18
|
+
private isReasoning;
|
|
19
|
+
private projectText;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=doubao-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doubao-events.d.ts","sourceRoot":"","sources":["../../../../../src/host/cli-adapters/doubao-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAEpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAU/D,wCAAwC;AACxC,qBAAa,oBAAoB;IAUnB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAT3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4B;IAClD,QAAQ,CAAC,SAAS,0BAAgC;IAClD,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,YAAY,UAAQ;IACpB,KAAK,UAAQ;gBAEgB,cAAc,EAAE,MAAM;IAEnD,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,kBAAkB,EAAE;IAmC7C,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,WAAW;CAgBpB"}
|