feat: add Koa2 BFF server, CLI management, sessions CLI integration, and logs page

- Add Koa2 BFF layer for API proxy, file upload, session management
- Auto-check and enable api_server in ~/.hermes/config.yaml on startup
- Integrate sessions with Hermes CLI (list, get, delete)
- Add Logs page with level filtering, log file selection, and search
- Add CLI commands: start/stop/restart/status for daemon management
- Unify package.json for frontend and server dependencies
- Default port changed to 8648

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
ekko
2026-04-11 21:33:04 +08:00
parent a2f8f6aec5
commit ee9f56dfbd
25 changed files with 1613 additions and 713 deletions
+6 -6
View File
@@ -12,6 +12,10 @@ const attachments = ref<Attachment[]>([])
const canSend = computed(() => inputText.value.trim() || attachments.value.length > 0)
function handleAttachClick() {
fileInputRef.value?.click()
}
function handleSend() {
const text = inputText.value.trim()
if (!text && attachments.value.length === 0) return
@@ -39,10 +43,6 @@ function handleInput(e: Event) {
el.style.height = Math.min(el.scrollHeight, 100) + 'px'
}
function handleAttachClick() {
fileInputRef.value?.click()
}
function handleFileChange(e: Event) {
const input = e.target as HTMLInputElement
const files = input.files
@@ -128,7 +128,7 @@ function isImage(type: string): boolean {
@input="handleInput"
></textarea>
<div class="input-actions">
<!-- <NTooltip trigger="hover">
<NTooltip trigger="hover">
<template #trigger>
<NButton quaternary size="small" @click="handleAttachClick" circle>
<template #icon>
@@ -137,7 +137,7 @@ function isImage(type: string): boolean {
</NButton>
</template>
Attach files
</NTooltip> -->
</NTooltip>
<NButton
v-if="chatStore.isStreaming"
size="small"