Skip to content

Commit 6c48c89

Browse files
committed
feat(hooks): add on_question_asked user hook
Introduce a new `on_question_asked` hook in the config, allowing users to execute custom logic when a question is asked. Updated types and renderer to support this hook, passing the session and question request to the user-defined function.
1 parent 9c58098 commit 6c48c89

3 files changed

Lines changed: 7 additions & 0 deletions

File tree

lua/opencode/config.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ M.defaults = {
266266
on_session_loaded = nil,
267267
on_done_thinking = nil,
268268
on_permission_requested = nil,
269+
on_question_asked = nil,
269270
},
270271
quick_chat = {
271272
default_model = nil,

lua/opencode/types.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@
213213
---@field on_session_loaded? fun(session: Session): nil
214214
---@field on_done_thinking? fun(session: Session): nil
215215
---@field on_permission_requested? fun(session: Session): nil
216+
---@field on_question_asked? fun(session: Session, question_request: OpencodeQuestionRequest): nil
216217

217218
---@class OpencodeProviders
218219
---@field [string] string[]

lua/opencode/ui/renderer.lua

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,6 +1021,11 @@ function M.on_question_asked(properties)
10211021
return
10221022
end
10231023

1024+
if config.hooks and config.hooks.on_question_asked then
1025+
local session = state.active_session or {}
1026+
pcall(config.hooks.on_question_asked, session, properties)
1027+
end
1028+
10241029
local question_window = require('opencode.ui.question_window')
10251030
question_window.show_question(properties)
10261031
end

0 commit comments

Comments
 (0)