feat(web): align Claude effort options with Claude Code --effort levels (#731)

The Claude effort selector (New Session config + in-session composer) only
offered auto/medium/high/max, missing `low` and `xhigh` — yet `claude --effort`
actually accepts low/medium/high/xhigh/max. Add the two missing levels in both
places so the selector faithfully mirrors the CLI.

Extract the level list + labels into one shared constant
(@hapi/protocol: shared/src/effort.ts, mirroring CLAUDE_MODEL_PRESETS) so the
two UIs derive from a single source and can't drift again. No backend change:
the effort string is free-form end-to-end through to the --effort flag.

ultracode is intentionally excluded — it is a TUI-only /effort session setting,
not an --effort value (the CLI rejects `--effort ultracode`).
This commit is contained in:
hanger
2026-05-30 12:41:00 +08:00
committed by GitHub
parent ec3722aba9
commit 6200ae1370
8 changed files with 44 additions and 14 deletions
+2
View File
@@ -14,8 +14,10 @@ describe('normalizeClaudeSessionEffort', () => {
})
it('normalizes supported effort values', () => {
expect(normalizeClaudeSessionEffort('low')).toBe('low')
expect(normalizeClaudeSessionEffort('medium')).toBe('medium')
expect(normalizeClaudeSessionEffort('high')).toBe('high')
expect(normalizeClaudeSessionEffort('xhigh')).toBe('xhigh')
expect(normalizeClaudeSessionEffort('max')).toBe('max')
expect(normalizeClaudeSessionEffort(' High ')).toBe('high')
})