Fetch all domain data needed to render this article type.
Connected MCP client, or null when MCP is unavailable
ISO 8601 publication date (YYYY-MM-DD)
Populated article data payload
Build the article HTML body for the given language.
Data payload returned by fetchData
Target language code
Article body HTML string
Return title, subtitle, keywords, and sources for the given language.
Data payload returned by fetchData
Target language code
Article metadata
OptionalshouldOptional guard that lets a strategy opt out of generation when the
fetched data contains only placeholder / fallback values (e.g. MCP
unavailable). When true is returned the orchestrator skips writing
all language variants and logs a notice rather than publishing empty
placeholder articles.
Strategies that do not implement this method are treated as always
wanting to generate (i.e. the default is false).
Data payload returned by fetchData
true when all fetched data is placeholder and generation should be skipped
Non-generic base interface for ArticleStrategy used by the strategy registry. Expresses the common operations with ArticleData as the data payload type so that concrete strategies parameterised on a subtype can be stored in a single StrategyRegistry map without unsafe casts.
This interface deliberately relies on TypeScript's bivariant method-parameter checking: a concrete strategy whose methods accept a narrower
TData(extending ArticleData) still satisfies this interface structurally. That means the type is not fully sound — a caller that only sees ArticleStrategyBase could, in principle, pass an ArticleData value that does not match the concrete strategy's expectedTDatashape.To use this interface safely:
dataobject returned by a given strategy's own fetchData to that same strategy's buildContent and getMetadata methods.External callers that need strong typing for a specific strategy should prefer the generic ArticleStrategy interface, which preserves the concrete
TDatatype and avoids this intentional unsoundness. The ArticleStrategyBase interface is intended primarily for the internal orchestration / pipeline layer that manages a heterogeneous strategy registry.