feat: seed default user sources (#128)

This commit is contained in:
2026-06-14 14:26:10 +01:00
committed by GitHub
parent 112d482d55
commit 789b6a285b
10 changed files with 220 additions and 8 deletions

View File

@@ -18,7 +18,7 @@ describe("LocationSource", () => {
describe("FeedSource interface", () => {
test("has correct id", () => {
const source = new LocationSource()
expect(source.id).toBe("freya.location")
expect(source.id).toBe(LocationSource.id)
})
test("fetchItems always returns empty array", async () => {

View File

@@ -5,8 +5,6 @@ import { type } from "arktype"
import { Location, type LocationSourceOptions } from "./types.ts"
export const LocationKey: ContextKey<Location> = contextKey("freya.location", "location")
/**
* A FeedSource that provides location context.
*
@@ -16,7 +14,9 @@ export const LocationKey: ContextKey<Location> = contextKey("freya.location", "l
* Does not produce feed items - always returns empty array from `fetchItems`.
*/
export class LocationSource implements FeedSource {
readonly id = "freya.location"
static readonly id = "freya.location"
readonly id = LocationSource.id
private readonly historySize: number
private locations: Location[] = []
@@ -97,3 +97,5 @@ export class LocationSource implements FeedSource {
return []
}
}
export const LocationKey: ContextKey<Location> = contextKey(LocationSource.id, "location")

View File

@@ -37,7 +37,7 @@ describe("WebSearchSource", () => {
test("has correct id", () => {
const source = new WebSearchSource({ client: new RecordingSearchClient() })
expect(source.id).toBe("freya.web-search")
expect(source.id).toBe(WebSearchSource.id)
})
test("does not provide context or feed items", async () => {

View File

@@ -41,7 +41,9 @@ const SearchInput = type({
* action and receive structured web results.
*/
export class WebSearchSource implements FeedSource {
readonly id = "freya.web-search"
static readonly id = "freya.web-search"
readonly id = WebSearchSource.id
private readonly client: WebSearchClient