class AiPlanAgent::StreamParser
Attributes
Public Class Methods
Source
# File lib/ai/plan_agent.rb, line 75 def initialize(model:) @model = model @questions = nil @result_event = nil @session_id = nil end
Public Instance Methods
Source
# File lib/ai/plan_agent.rb, line 82 def ingest_line(line) line = line.to_s.strip return if line.empty? event = JSON.parse(line) @session_id ||= event["session_id"] case event["type"] when "interaction_query" @questions = CursorAgentQuestions.extract_from_event(event) when "result" @result_event = event @session_id ||= event["session_id"] end rescue JSON::ParserError nil end
Source
# File lib/ai/plan_agent.rb, line 99 def to_result(status:) usage = @result_event&.dig("usage") || {} text = @result_event&.[]("result").to_s.strip ok = status&.success? && @result_event && @result_event["is_error"] != true questions = @questions needs_input = questions.is_a?(Array) && questions.any? PlanResult.new( success: ok || needs_input, text: text, model: @model, session_id: @session_id, questions: questions, needs_input: needs_input, input_tokens: usage["inputTokens"].to_i, output_tokens: usage["outputTokens"].to_i, duration_ms: @result_event&.[]("duration_ms").to_i, error: nil ) end