2828--- @field clear_active fun ( opts ?: OpencodeProtectedStateSetOptions )
2929--- @field set_restore_points fun ( points : RestorePoint[] , opts ?: OpencodeProtectedStateSetOptions )
3030--- @field reset_restore_points fun ( opts ?: OpencodeProtectedStateSetOptions )
31+ --- @field set_last_sent_context fun ( context : OpencodeContext | nil )
32+ --- @field set_user_message_count fun ( count : table<string , number> )
3133
3234--- @class OpencodeJobStateMutations
3335--- @field increment_count fun ( delta ?: integer , opts ?: OpencodeProtectedStateSetOptions )
3436--- @field decrement_count fun ( delta ?: integer , opts ?: OpencodeProtectedStateSetOptions )
3537--- @field set_count fun ( count : integer , opts ?: OpencodeProtectedStateSetOptions )
3638--- @field set_server fun ( server : OpencodeServer | nil , opts ?: OpencodeProtectedStateSetOptions )
3739--- @field clear_server fun ( opts ?: OpencodeProtectedStateSetOptions )
40+ --- @field set_api_client fun ( client : OpencodeApiClient | nil )
41+ --- @field set_event_manager fun ( manager : EventManager | nil )
42+ --- @field set_opencode_cli_version fun ( version : string | nil )
3843
3944--- @class OpencodeUiStateMutations
4045--- @field set_windows fun ( windows : OpencodeWindowState | nil )
4853--- @field set_current_code_buf fun ( bufnr : integer | nil )
4954--- @field set_last_window_width_ratio fun ( ratio : number | nil )
5055--- @field clear_last_window_width_ratio fun ()
56+ --- @field set_input_content fun ( lines : table )
57+ --- @field set_saved_window_options fun ( opts : table | nil )
58+ --- @field set_pre_zoom_width fun ( width : integer | nil )
5159
5260--- @class OpencodeModelStateMutations
5361--- @field set_mode fun ( mode : string | nil )
6068--- @field set_mode_model_map fun ( mode_map : table<string , string> )
6169--- @field set_mode_model_override fun ( mode : string , model : string )
6270
71+ --- @class OpencodeRendererStateMutations
72+ --- @field set_messages fun ( messages : OpencodeMessage[] | nil )
73+ --- @field set_current_message fun ( message : OpencodeMessage | nil )
74+ --- @field set_last_user_message fun ( message : OpencodeMessage | nil )
75+ --- @field set_pending_permissions fun ( permissions : OpencodePermission[] )
76+ --- @field set_cost fun ( cost : number )
77+ --- @field set_tokens_count fun ( count : number )
78+
79+ --- @class OpencodeContextStateMutations
80+ --- @field set_current_context_config fun ( config : OpencodeContextConfig | nil )
81+ --- @field set_context_updated_at fun ( timestamp : number | nil )
82+ --- @field set_current_cwd fun ( cwd : string | nil )
83+
6384--- @class OpencodeState
6485--- @field windows OpencodeWindowState | nil
6586--- @field is_opening boolean
109130--- @field jobs OpencodeJobStateMutations
110131--- @field ui OpencodeUiStateMutations
111132--- @field model OpencodeModelStateMutations
133+ --- @field renderer OpencodeRendererStateMutations
134+ --- @field context OpencodeContextStateMutations
112135
113136local store = require (' opencode.state.store' )
114137local session = require (' opencode.state.session' )
115138local jobs = require (' opencode.state.jobs' )
116139local ui = require (' opencode.state.ui' )
117140local model = require (' opencode.state.model' )
118- local test_helpers = require (' opencode.state.test_helpers' )
141+ local renderer = require (' opencode.state.renderer' )
142+ local context = require (' opencode.state.context' )
119143
120144local M = {
121145 store = store ,
122146 session = session ,
123147 jobs = jobs ,
124148 ui = ui ,
125149 model = model ,
126- test_helpers = test_helpers ,
150+ renderer = renderer ,
151+ context = context ,
127152 subscribe = store .subscribe ,
128153 unsubscribe = store .unsubscribe ,
129154 notify = store .notify ,
130155 append = store .append ,
131156 remove = store .remove ,
132- set_raw = store .set_raw ,
133- allow_raw_writes_for_tests = test_helpers .allow_raw_writes_for_tests ,
134- silence_protected_writes = test_helpers .silence_protected_writes ,
135157}
136158
137159function M .is_running ()
@@ -142,8 +164,8 @@ return setmetatable(M, {
142164 __index = function (_ , key )
143165 return store .get (key )
144166 end ,
145- __newindex = function (_ , key , value )
146- store . set ( key , value , { source = ' raw ' } )
167+ __newindex = function (_ , key , _value )
168+ error ( string.format ( ' Direct write to state key `%s` is not allowed; use a state domain setter ' , key ), 2 )
147169 end ,
148170 __pairs = function ()
149171 return pairs (store .state ())
0 commit comments