loadRecentMessages($sessionId); logger('context builder loaded messages', [ 'session_id' => $sessionId, 'run_id' => $runId, 'message_count' => $messages->count(), 'message_types' => $messages->pluck('type', 'seq')->toArray(), ]); return new AgentContext( $runId, $sessionId, 'You are an agent inside ARS. Respond concisely in markdown format. Use the following conversation context.', $messages->map(function (Message $message) { return [ 'message_id' => $message->message_id, 'role' => $message->role, 'type' => $message->type, 'content' => $message->content, 'payload' => $message->payload, 'seq' => $message->seq, ]; })->values()->all() ); } private function loadRecentMessages(string $sessionId): Collection { return Message::query() ->where('session_id', $sessionId) ->whereIn('role', [Message::ROLE_USER, Message::ROLE_AGENT, Message::ROLE_TOOL]) ->whereIn('type', ['user.prompt', 'agent.message', 'tool.call', 'tool.result']) ->orderByDesc('seq') ->limit($this->limit) ->get() ->sortBy('seq') ->values(); } }