fa7b962e51
Request contents.summary from Exa /search API and combine up to 3 non-empty summaries into SearchResponse.answer, replacing the previous 'No answer text returned' output. Changes: - Add contents.summary to every Exa search request body - Add summary field to ExaSearchResult interface - Export synthesizeAnswer() to build combined answer from summaries - Export buildExaRequestBody() for testability - Export normalizeSearchType() (was private) - Prefer summary over text/highlights for snippet field (falsy check) - Only synthesize answer from results that have a URL (mirrors sources filter) Tests: 37 new tests covering normalizeSearchType, buildExaRequestBody, synthesizeAnswer (pure unit tests) and searchExa (mocked fetch)