module CursorAgentQuestions
CursorAgentQuestions — parse askQuestion events from cursor-agent stream-json output. Public: extract_from_event, normalize Depends: (none) Tests: test/lib/cursor_agent_questions_test.rb
Public Instance Methods
Source
# File lib/cursor_agent_questions.rb, line 11 def extract_from_event(event) return nil unless event.is_a?(Hash) return nil unless event["type"] == "interaction_query" return nil unless event["subtype"] == "request" return nil unless event["query_type"] == "askQuestionInteractionQuery" args = event.dig("query", "askQuestionInteractionQuery", "args") || event.dig("tool_call", "askQuestionToolCall", "args") return nil unless args raw_questions = args["questions"] return nil unless raw_questions.is_a?(Array) && raw_questions.any? raw_questions.map { |question| normalize(question) } end
Source
# File lib/cursor_agent_questions.rb, line 27 def normalize(question) options = Array(question["options"]).map do |option| { id: option["id"].to_s, label: option["label"].to_s.strip } end.reject { |option| option[:label].empty? && option[:id].empty? } { id: question["id"].to_s, prompt: question["prompt"].to_s.strip, options: options, allow_multiple: question["allowMultiple"] == true } end