// Package sources defines feedkit's input-source abstraction. // // A source ingests upstream input and emits one or more event.Event values. // // feedkit supports two source modes: // - PollSource: scheduler invokes Poll on a cadence. // - StreamSource: source runs continuously and pushes events as input arrives. // // Source drivers are domain-specific and registered into Registry by driver name. // Registry can then build configured sources from config.SourceConfig. // // A single source may emit 0..N events per poll or stream iteration, and those // events may span multiple event kinds. // // HTTP-backed polling sources can share NewHTTPSource for generic HTTP config // parsing and conditional GET behavior. The helper understands: // - params.url // - params.user_agent // - params.conditional (optional, default true) // // When validators are available, NewHTTPSource prefers ETag/If-None-Match and // falls back to Last-Modified/If-Modified-Since. A 304 Not Modified response is // treated as a successful unchanged poll. package sources