feat(hermes): add worktree session setting

This commit is contained in:
晴天
2026-05-26 05:50:12 +08:00
parent 51be3ab4ca
commit 975613416d
6 changed files with 68 additions and 2 deletions

View File

@@ -9,6 +9,20 @@ function extractEngineKeys() {
return [...source.matchAll(/['"](engine\.[A-Za-z0-9_.-]+)['"]/g)].map(match => match[1])
}
test('Hermes 配置页会暴露会话安全结构化配置字段', () => {
for (const id of [
'hm-runtime-save',
'hm-session-reset-mode',
'hm-session-idle-minutes',
'hm-session-at-hour',
'hm-group-sessions-per-user',
'hm-thread-sessions-per-user',
'hm-worktree-enabled',
]) {
assert.match(source, new RegExp(`id="${id}"`), `缺少 ${id}`)
}
})
test('Hermes 配置页会暴露工具循环防护结构化配置字段', () => {
for (const id of [
'hm-tool-guardrails-save',
@@ -430,7 +444,8 @@ test('Hermes 配置页新增结构化配置不会暴露翻译 key', () => {
key.includes('CheckpointsConfig') ||
key.includes('ApprovalsConfig') ||
key.includes('CronConfig') ||
key.includes('LoggingConfig')
key.includes('LoggingConfig') ||
key.includes('Worktree')
)))
assert.ok(keys.size > 0, '应能提取新增结构化配置用到的 engine 翻译 key')

View File

@@ -15,6 +15,7 @@ test('Hermes 会话运行时配置读取会提供稳定表单默认值', () => {
atHour: 4,
groupSessionsPerUser: true,
threadSessionsPerUser: false,
worktreeEnabled: false,
})
})
@@ -27,6 +28,7 @@ test('Hermes 会话运行时配置读取会回显 session_reset 与隔离开关'
},
group_sessions_per_user: false,
thread_sessions_per_user: true,
worktree: true,
})
assert.equal(values.sessionResetMode, 'daily')
@@ -34,6 +36,7 @@ test('Hermes 会话运行时配置读取会回显 session_reset 与隔离开关'
assert.equal(values.atHour, 3)
assert.equal(values.groupSessionsPerUser, false)
assert.equal(values.threadSessionsPerUser, true)
assert.equal(values.worktreeEnabled, true)
})
test('Hermes 会话运行时配置保存会保留无关 YAML 并写入 snake_case 字段', () => {
@@ -51,6 +54,7 @@ test('Hermes 会话运行时配置保存会保留无关 YAML 并写入 snake_cas
atHour: '6',
groupSessionsPerUser: false,
threadSessionsPerUser: true,
worktreeEnabled: true,
})
assert.deepEqual(next.model, { provider: 'anthropic', default: 'claude-sonnet-4-6' })
@@ -61,6 +65,7 @@ test('Hermes 会话运行时配置保存会保留无关 YAML 并写入 snake_cas
assert.equal(next.session_reset.custom_flag, 'keep-me')
assert.equal(next.group_sessions_per_user, false)
assert.equal(next.thread_sessions_per_user, true)
assert.equal(next.worktree, true)
})
test('Hermes 会话运行时配置保存会拒绝非法模式和范围', () => {