diff --git a/lua/opencode/config.lua b/lua/opencode/config.lua index 9815756b..bf1a506b 100644 --- a/lua/opencode/config.lua +++ b/lua/opencode/config.lua @@ -266,6 +266,7 @@ M.defaults = { on_session_loaded = nil, on_done_thinking = nil, on_permission_requested = nil, + on_question_asked = nil, }, quick_chat = { default_model = nil, diff --git a/lua/opencode/types.lua b/lua/opencode/types.lua index 45d14afe..d97403b8 100644 --- a/lua/opencode/types.lua +++ b/lua/opencode/types.lua @@ -213,6 +213,7 @@ ---@field on_session_loaded? fun(session: Session): nil ---@field on_done_thinking? fun(session: Session): nil ---@field on_permission_requested? fun(session: Session): nil +---@field on_question_asked? fun(session: Session, question_request: OpencodeQuestionRequest): nil ---@class OpencodeProviders ---@field [string] string[] diff --git a/lua/opencode/ui/renderer.lua b/lua/opencode/ui/renderer.lua index 1c1eb382..798f4027 100644 --- a/lua/opencode/ui/renderer.lua +++ b/lua/opencode/ui/renderer.lua @@ -1021,6 +1021,11 @@ function M.on_question_asked(properties) return end + if config.hooks and config.hooks.on_question_asked then + local session = state.active_session or {} + pcall(config.hooks.on_question_asked, session, properties) + end + local question_window = require('opencode.ui.question_window') question_window.show_question(properties) end