@vauban-org/agent-sources
v0.1.1
Published
Vauban external data source fetchers: RSS, HackerNews, GitHub Issues — sanitized + rate-aware
Readme
@vauban-org/agent-sources
External data source fetchers for Vauban agents (MarketRadar and siblings).
Provides three zero-dependency clients returning normalized, sanitized items:
| Fetcher | Source | Notes |
|---------|--------|-------|
| fetchRssFeed | Arbitrary RSS/Atom feeds | Regex-based parser, no XML library |
| fetchHackerNewsItems | HN Firebase API | Zero-auth, keyword-filtered |
| fetchGitHubIssues | GitHub Search API | Requires GITHUB_TOKEN; skips if absent |
All fetchers:
- Return
[]on any failure (network, HTTP, parse) — never throw. - Enforce a per-call
AbortControllertimeout (default 10s). - Run output through
keepSafeOnlyfrom@vauban-org/agent-sdk(prompt-injection defence). - Accept an optional
LoggerPortfor structured logging (defaults to a noop logger).
Install
pnpm add @vauban-org/agent-sourcesUsage
import {
fetchRssFeed,
fetchHackerNewsItems,
fetchGitHubIssues,
getDefaultRssFeeds,
getHackerNewsKeywords,
} from "@vauban-org/agent-sources";
import pino from "pino";
const logger = pino();
for (const feed of getDefaultRssFeeds()) {
const items = await fetchRssFeed(feed.url, { label: feed.label, logger });
console.log(feed.label, items.length);
}
const hn = await fetchHackerNewsItems({
keywords: getHackerNewsKeywords(),
logger,
});
const gh = await fetchGitHubIssues({ query: "starknet", logger });Contract
- Public function signatures are stable within a major version.
- Output item shape (
RssItem,HnItem,GhItem) is additive-only — new optional fields may appear; existing fields never change type. MAX_ITEMS_PER_RUN/MAX_ITEMS_PER_SOURCEare re-exported caps; callers can override via per-callmaxItems.
