make web ui state directory configurable (#764)

This commit is contained in:
ekko
2026-05-15 17:30:27 +08:00
committed by GitHub
parent fbb0236af4
commit e0bfa828cb
17 changed files with 121 additions and 2228 deletions
+1 -6
View File
@@ -9,11 +9,6 @@ vi.mock('../../packages/server/src/db/hermes/session-store', () => ({
getSessionDetailPaginated: vi.fn(),
createSession: vi.fn(),
updateSessionStats: vi.fn(),
useLocalSessionStore: vi.fn(() => false),
}))
vi.mock('../../packages/server/src/db/hermes/sessions-db', () => ({
getSessionDetailFromDb: vi.fn(),
}))
vi.mock('../../packages/server/src/services/logger', () => ({
@@ -44,7 +39,7 @@ vi.mock('../../packages/server/src/db/hermes/usage-store', () => ({
updateUsage: vi.fn(),
}))
// --- Types mirroring chat-run-socket.ts ---
// --- Types mirroring run-chat response flushing ---
interface SessionMessage {
id: number | string
+15 -1
View File
@@ -1,5 +1,7 @@
import { describe, expect, it } from 'vitest'
import { getListenHost } from '../../packages/server/src/config'
import { homedir } from 'os'
import { join, resolve } from 'path'
import { getListenHost, getWebUiHome } from '../../packages/server/src/config'
describe('server config', () => {
it('defaults to an IPv4 bind host', () => {
@@ -13,4 +15,16 @@ describe('server config', () => {
it('ignores blank BIND_HOST values', () => {
expect(getListenHost({ BIND_HOST: ' ' })).toBe('0.0.0.0')
})
it('defaults web-ui home to ~/.hermes-web-ui', () => {
expect(getWebUiHome({})).toBe(join(homedir(), '.hermes-web-ui'))
})
it('uses HERMES_WEB_UI_HOME when provided', () => {
expect(getWebUiHome({ HERMES_WEB_UI_HOME: ' ./tmp/hermes-ui ' })).toBe(resolve('./tmp/hermes-ui'))
})
it('uses HERMES_WEBUI_STATE_DIR as a compatibility alias', () => {
expect(getWebUiHome({ HERMES_WEBUI_STATE_DIR: ' ./tmp/hermes-state ' })).toBe(resolve('./tmp/hermes-state'))
})
})
-2
View File
@@ -49,9 +49,7 @@ vi.mock('../../packages/server/src/db/hermes/sessions-db', () => ({
getUsageStatsFromDb: getUsageStatsFromDbMock,
}))
// Mock useLocalSessionStore to return false so we test the CLI path
vi.mock('../../packages/server/src/db/hermes/session-store', () => ({
useLocalSessionStore: () => false,
listSessions: localListSessionsMock,
searchSessions: localSearchSessionsMock,
getSessionDetail: localGetSessionDetailMock,