/**
* Hermes Agent 配置编辑
*/
import { t } from '../../../lib/i18n.js'
import { api } from '../../../lib/tauri-api.js'
import { toast } from '../../../components/toast.js'
import { humanizeError } from '../../../lib/humanize-error.js'
export function render() {
const el = document.createElement('div')
el.className = 'page'
el.dataset.engine = 'hermes'
let yaml = ''
let loading = true
let saving = false
let error = ''
function esc(value) {
return String(value || '')
.replace(/&/g, '&')
.replace(//g, '>')
.replace(/"/g, '"')
}
function draw() {
el.innerHTML = `
${t('engine.hermesConfigEyebrow')}
${t('engine.hermesConfigTitle')}
~/.hermes/config.yaml
${error ? `
${esc(error)}
` : ''}
`
el.querySelector('#hm-config-reload')?.addEventListener('click', load)
el.querySelector('#hm-config-save')?.addEventListener('click', save)
}
async function load() {
loading = true
error = ''
draw()
try {
const data = await api.hermesConfigRawRead()
yaml = data?.yaml || ''
} catch (err) {
error = humanizeError(err, t('engine.hermesConfigLoadFailed') || 'Load config failed')
} finally {
loading = false
draw()
}
}
async function save() {
const textarea = el.querySelector('#hm-config-yaml')
yaml = textarea?.value || ''
saving = true
error = ''
draw()
try {
await api.hermesConfigRawWrite(yaml)
toast(t('engine.hermesConfigSaveSuccess'), 'success')
} catch (err) {
error = humanizeError(err, t('engine.hermesConfigSaveFailed') || 'Save failed')
toast(error, 'error')
} finally {
saving = false
draw()
}
}
draw()
load()
return el
}