feat/p8-011-preferences
main
IMMUTABLE_KEYS
GET /api/preferences
POST /api/preferences
DELETE /api/preferences/:key
/system
SystemOverrideService
prompt()
Closes #164
pnpm typecheck
pnpm lint
pnpm format:check
pnpm test
🤖 Generated with Claude Code
- PreferencesService: platform defaults, user overrides, IMMUTABLE_KEYS enforcement - PreferencesController: GET /api/preferences, POST /api/preferences, DELETE /api/preferences/:key - PreferencesModule: global module exporting PreferencesService and SystemOverrideService - SystemOverrideService: Valkey-backed session-scoped system prompt override with 5-min TTL + renew - CommandRegistryService: register /system command (socket execution) - CommandExecutorService: handle /system command via SystemOverrideService - AgentService: inject system override before each prompt turn, renew TTL; store userId in session - ChatGateway: pass userId when creating agent sessions - PreferencesService unit tests: 11 tests covering defaults, overrides, enforcement wins, immutable key errors Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
No dependencies set.
The note is not visible to the blocked user.
Summary
IMMUTABLE_KEYSenforcementGET /api/preferences,POST /api/preferences,DELETE /api/preferences/:key/systemcommand: registered and handled viaSystemOverrideServiceprompt()call, renews TTLCloses #164
Test plan
pnpm typecheck— 32/32 passpnpm lint— 18/18 passpnpm format:check— cleanpnpm test— 52 tests pass🤖 Generated with Claude Code