feat: add exa web search source

This commit is contained in:
2026-06-13 00:34:09 +01:00
parent 6b1db0b3d3
commit b024a4ba4d
15 changed files with 906 additions and 36 deletions

View File

@@ -0,0 +1,30 @@
import { WebSearchSource, type WebSearchClient } from "@freya/source-web-search"
import type { FeedSourceProvider } from "../session/feed-source-provider.ts"
export type WebSearchSourceProviderOptions =
| { apiKey: string | undefined; client?: never }
| { apiKey?: never; client: WebSearchClient }
export class WebSearchSourceProvider implements FeedSourceProvider {
readonly sourceId = "freya.web-search"
private readonly apiKey: string | undefined
private readonly client: WebSearchClient | undefined
constructor(options: WebSearchSourceProviderOptions) {
this.apiKey = "apiKey" in options ? options.apiKey : undefined
this.client = "client" in options ? options.client : undefined
}
async feedSourceForUser(
_userId: string,
_config: unknown,
_credentials: unknown,
): Promise<WebSearchSource> {
return new WebSearchSource({
apiKey: this.apiKey,
client: this.client,
})
}
}