mirror of
https://github.com/qingchencloud/clawpanel.git
synced 2026-05-31 05:10:14 +08:00
feat(hermes): add browser advanced controls
This commit is contained in:
@@ -260,6 +260,11 @@ const BROWSER_DEFAULTS = {
|
||||
browserCommandTimeout: 30,
|
||||
browserRecordSessions: false,
|
||||
browserEngine: 'auto',
|
||||
browserAllowPrivateUrls: false,
|
||||
browserAutoLocalForPrivateUrls: true,
|
||||
browserCdpUrl: '',
|
||||
browserDialogPolicy: 'must_respond',
|
||||
browserDialogTimeout: 300,
|
||||
}
|
||||
|
||||
const STT_DEFAULTS = {
|
||||
@@ -298,6 +303,7 @@ const STREAMING_TRANSPORTS = ['edit', 'auto', 'draft', 'off']
|
||||
const CODE_EXECUTION_MODES = ['project', 'strict']
|
||||
const TERMINAL_BACKENDS = ['local', 'ssh', 'docker', 'singularity', 'modal', 'daytona', 'vercel_sandbox']
|
||||
const BROWSER_ENGINES = ['auto', 'lightpanda', 'chrome']
|
||||
const BROWSER_DIALOG_POLICIES = ['must_respond', 'auto_dismiss', 'auto_accept']
|
||||
const STT_PROVIDERS = ['auto', 'local', 'groq', 'openai', 'mistral']
|
||||
const STT_LOCAL_MODELS = ['tiny', 'base', 'small', 'medium', 'large-v3', 'turbo']
|
||||
const STT_OPENAI_MODELS = ['whisper-1', 'gpt-4o-mini-transcribe', 'gpt-4o-transcribe']
|
||||
@@ -1977,12 +1983,34 @@ export function render() {
|
||||
<span class="hm-field-label">${t('engine.hermesBrowserConfigCommandTimeout')}</span>
|
||||
<input id="hm-browser-command-timeout" class="hm-input" type="number" inputmode="numeric" min="5" max="3600" step="1" value="${esc(browserValues.browserCommandTimeout)}" ${disabled ? 'disabled' : ''}>
|
||||
</label>
|
||||
<label class="hm-field">
|
||||
<span class="hm-field-label">${t('engine.hermesBrowserConfigCdpUrl')}</span>
|
||||
<input id="hm-browser-cdp-url" class="hm-input" type="text" value="${esc(browserValues.browserCdpUrl)}" placeholder="${t('engine.hermesBrowserConfigCdpUrlPlaceholder')}" ${disabled ? 'disabled' : ''}>
|
||||
</label>
|
||||
<label class="hm-field">
|
||||
<span class="hm-field-label">${t('engine.hermesBrowserConfigDialogPolicy')}</span>
|
||||
<select id="hm-browser-dialog-policy" class="hm-input" ${disabled ? 'disabled' : ''}>
|
||||
${BROWSER_DIALOG_POLICIES.map(policy => option(`engine.hermesBrowserConfigDialogPolicy_${policy}`, policy, browserValues.browserDialogPolicy)).join('')}
|
||||
</select>
|
||||
</label>
|
||||
<label class="hm-field">
|
||||
<span class="hm-field-label">${t('engine.hermesBrowserConfigDialogTimeout')}</span>
|
||||
<input id="hm-browser-dialog-timeout" class="hm-input" type="number" inputmode="numeric" min="1" max="86400" step="1" value="${esc(browserValues.browserDialogTimeout)}" ${disabled ? 'disabled' : ''}>
|
||||
</label>
|
||||
</div>
|
||||
<div class="hm-config-check-grid">
|
||||
<label class="hm-channel-check">
|
||||
<input id="hm-browser-record-sessions" type="checkbox" ${browserValues.browserRecordSessions ? 'checked' : ''} ${disabled ? 'disabled' : ''}>
|
||||
<span>${t('engine.hermesBrowserConfigRecordSessions')}</span>
|
||||
</label>
|
||||
<label class="hm-channel-check">
|
||||
<input id="hm-browser-allow-private-urls" type="checkbox" ${browserValues.browserAllowPrivateUrls ? 'checked' : ''} ${disabled ? 'disabled' : ''}>
|
||||
<span>${t('engine.hermesBrowserConfigAllowPrivateUrls')}</span>
|
||||
</label>
|
||||
<label class="hm-channel-check">
|
||||
<input id="hm-browser-auto-local-for-private-urls" type="checkbox" ${browserValues.browserAutoLocalForPrivateUrls ? 'checked' : ''} ${disabled ? 'disabled' : ''}>
|
||||
<span>${t('engine.hermesBrowserConfigAutoLocalForPrivateUrls')}</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="hm-channel-footnote">${t('engine.hermesBrowserConfigFootnote')}</div>
|
||||
</div>
|
||||
@@ -3818,6 +3846,11 @@ export function render() {
|
||||
browserCommandTimeout: el.querySelector('#hm-browser-command-timeout')?.value || '30',
|
||||
browserRecordSessions: !!el.querySelector('#hm-browser-record-sessions')?.checked,
|
||||
browserEngine: el.querySelector('#hm-browser-engine')?.value || 'auto',
|
||||
browserAllowPrivateUrls: !!el.querySelector('#hm-browser-allow-private-urls')?.checked,
|
||||
browserAutoLocalForPrivateUrls: !!el.querySelector('#hm-browser-auto-local-for-private-urls')?.checked,
|
||||
browserCdpUrl: el.querySelector('#hm-browser-cdp-url')?.value || '',
|
||||
browserDialogPolicy: el.querySelector('#hm-browser-dialog-policy')?.value || 'must_respond',
|
||||
browserDialogTimeout: el.querySelector('#hm-browser-dialog-timeout')?.value || '300',
|
||||
}
|
||||
browserSaving = true
|
||||
browserError = null
|
||||
|
||||
@@ -672,7 +672,16 @@ export default {
|
||||
hermesBrowserConfigEngine_auto: _('自动选择', 'Auto select', '自動選擇'),
|
||||
hermesBrowserConfigEngine_lightpanda: _('Lightpanda 快速导航', 'Lightpanda fast navigation', 'Lightpanda 快速導覽'),
|
||||
hermesBrowserConfigEngine_chrome: _('Chrome 完整浏览器', 'Chrome full browser', 'Chrome 完整瀏覽器'),
|
||||
hermesBrowserConfigFootnote: _('Lightpanda 导航更快但不支持截图;录制会把 WebM 写入 Hermes browser_recordings 目录,请只在需要审计时开启。CDP、Dialog 和 Camofox 高级字段会保留在 raw YAML 中。', 'Lightpanda navigates faster but does not support screenshots. Recording writes WebM files into the Hermes browser_recordings directory, so enable it only for audits. Advanced CDP, Dialog, and Camofox fields stay in raw YAML.', 'Lightpanda 導覽更快但不支援截圖;錄製會把 WebM 寫入 Hermes browser_recordings 目錄,請只在需要稽核時開啟。CDP、Dialog 和 Camofox 進階欄位會保留在 raw YAML 中。'),
|
||||
hermesBrowserConfigAllowPrivateUrls: _('允许访问私网和本机地址', 'Allow private and localhost URLs', '允許存取私網和本機位址'),
|
||||
hermesBrowserConfigAutoLocalForPrivateUrls: _('私网地址自动切到本地浏览器', 'Use local browser automatically for private URLs', '私網位址自動切到本機瀏覽器'),
|
||||
hermesBrowserConfigCdpUrl: _('CDP 连接地址', 'CDP endpoint URL', 'CDP 連線位址'),
|
||||
hermesBrowserConfigCdpUrlPlaceholder: _('留空则自动创建浏览器', 'Leave empty to launch browser automatically', '留空則自動建立瀏覽器'),
|
||||
hermesBrowserConfigDialogPolicy: _('弹窗处理策略', 'Dialog handling policy', '彈窗處理策略'),
|
||||
hermesBrowserConfigDialogPolicy_must_respond: _('等待用户处理', 'Wait for user response', '等待使用者處理'),
|
||||
hermesBrowserConfigDialogPolicy_auto_dismiss: _('自动取消弹窗', 'Auto dismiss dialogs', '自動取消彈窗'),
|
||||
hermesBrowserConfigDialogPolicy_auto_accept: _('自动确认弹窗', 'Auto accept dialogs', '自動確認彈窗'),
|
||||
hermesBrowserConfigDialogTimeout: _('弹窗等待超时秒数', 'Dialog wait timeout seconds', '彈窗等待逾時秒數'),
|
||||
hermesBrowserConfigFootnote: _('Lightpanda 导航更快但不支持截图;录制会把 WebM 写入 Hermes browser_recordings 目录,请只在需要审计时开启。允许私网地址会放开 localhost / 192.168 等目标;CDP 地址留空表示自动创建浏览器;Camofox 嵌套高级字段会保留在 raw YAML 中。', 'Lightpanda navigates faster but does not support screenshots. Recording writes WebM files into the Hermes browser_recordings directory, so enable it only for audits. Allowing private URLs opens localhost / 192.168-style targets. Empty CDP URL means Hermes launches a browser automatically. Nested Camofox advanced fields stay in raw YAML.', 'Lightpanda 導覽更快但不支援截圖;錄製會把 WebM 寫入 Hermes browser_recordings 目錄,請只在需要稽核時開啟。允許私網位址會放開 localhost / 192.168 等目標;CDP 位址留空表示自動建立瀏覽器;Camofox 巢狀進階欄位會保留在 raw YAML 中。'),
|
||||
hermesSttConfigTitle: _('语音转写', 'Speech transcription', '語音轉寫'),
|
||||
hermesSttConfigDesc: _('控制消息平台语音消息是否自动转写,以及本地、OpenAI 和 Mistral 转写模型。适合需要处理语音反馈的渠道。', 'Control automatic voice-message transcription for messaging platforms, plus local, OpenAI, and Mistral transcription models. Useful for channels that receive voice feedback.', '控制訊息平台語音訊息是否自動轉寫,以及本機、OpenAI 和 Mistral 轉寫模型。適合需要處理語音回饋的渠道。'),
|
||||
hermesSttConfigStatusReady: _('结构化配置', 'structured settings', '結構化設定'),
|
||||
|
||||
Reference in New Issue
Block a user