11local store = require (' opencode.state.store' )
22
3+ --- @class OpencodeModelStateMutations
4+ --- @field set_mode fun ( mode : string | nil )
5+ --- @field clear_mode fun ()
6+ --- @field set_model fun ( model : string | nil )
7+ --- @field clear_model fun ()
8+ --- @field clear fun ()
9+ --- @field set_model_info fun ( info : table | nil )
10+ --- @field set_variant fun ( variant : string | nil )
11+ --- @field clear_variant fun ()
12+ --- @field set_mode_model_map fun ( mode_map : table<string , string> )
13+ --- @field set_mode_model_override fun ( mode : string , model : string )
14+
315local M = {}
416
517--- @param mode string | nil
@@ -20,6 +32,12 @@ function M.clear_model()
2032 return store .set (' current_model' , nil )
2133end
2234
35+ function M .clear ()
36+ store .set (' current_model' , nil )
37+ store .set (' current_mode' , nil )
38+ store .set (' current_variant' , nil )
39+ end
40+
2341--- @param info table | nil
2442function M .set_model_info (info )
2543 return store .set (' current_model_info' , info )
4260--- @param mode string
4361--- @param model string
4462function M .set_mode_model_override (mode , model )
45- local state = store .state ()
46- local mode_map = vim .deepcopy (state .user_mode_model_map )
47- mode_map [mode ] = model
48- return store .set (' user_mode_model_map' , mode_map )
63+ return store .update (' user_mode_model_map' , function (current )
64+ local updated = vim .deepcopy (current )
65+ updated [mode ] = model
66+ return updated
67+ end )
4968end
5069
5170return M
0 commit comments