1-
21local store = require (' opencode.state.store' )
32
43--- @class OpencodeRendererStateMutations
5- --- @field set_messages fun ( messages : OpencodeMessage[] | nil )
6- --- @field set_current_message fun ( message : OpencodeMessage | nil )
7- --- @field set_last_user_message fun ( message : OpencodeMessage | nil )
8- --- @field set_pending_permissions fun ( permissions : OpencodePermission[] )
9- --- @field set_cost fun ( cost : number )
10- --- @field set_tokens_count fun ( count : number )
11- --- @field set_stats fun ( tokens_count : number , cost : number )
12- --- @field reset fun ()
13-
144local M = {}
155
166--- @param messages OpencodeMessage[] | nil
@@ -33,6 +23,10 @@ function M.set_pending_permissions(permissions)
3323 return store .set (' pending_permissions' , permissions )
3424end
3525
26+ --- @param mutator fun ( current_permissions : OpencodePermission[] ): OpencodePermission[]
27+ function M .update_pending_permissions (mutator )
28+ return store .mutate (' pending_permissions' , mutator )
29+ end
3630--- @param cost number
3731function M .set_cost (cost )
3832 return store .set (' cost' , cost )
4640--- @param tokens_count number
4741--- @param cost number
4842function M .set_stats (tokens_count , cost )
49- store .set (' tokens_count' , tokens_count )
50- store .set (' cost' , cost )
43+ return store .batch (function ()
44+ store .set (' tokens_count' , tokens_count )
45+ store .set (' cost' , cost )
46+ end )
5147end
5248
5349function M .reset ()
54- store .set (' messages' , {})
55- store .set (' last_user_message' , nil )
56- store .set (' tokens_count' , 0 )
57- store .set (' cost' , 0 )
58- store .set (' pending_permissions' , {})
50+ return store .batch (function ()
51+ store .set (' messages' , {})
52+ store .set (' current_message' , nil )
53+ store .set (' last_user_message' , nil )
54+ store .set (' tokens_count' , 0 )
55+ store .set (' cost' , 0 )
56+ store .set (' pending_permissions' , {})
57+ end )
5958end
6059
6160return M
0 commit comments