Static ReadonlyAuthorizesTrue when the action authorizes its caller itself, so a public entry point such as the
RunAction mutation may run it for an authenticated user without an MJ: Action Authorizations link. Set it only on an action that either checks an authorization the caller
must hold, or reads and writes only with the caller's own permissions. Leave it false for an
action that acts with more authority than its caller, or that reaches data or sends messages
the caller chooses but could not otherwise reach.
The engine reads the marker only from the class that runs, never from its parent classes. A subclass that overrides a marked action must declare the marker again.
Whether this action can bound what it returns to an audience (RunActionParams.Audience): everyone
besides the caller who will see its output, such as the other participants of a shared conversation.
false by default, and the engine enforces it: when a run's audience adds a reader beyond the caller,
ActionEngineServer.RunAction refuses the action with result code AUDIENCE_UNSUPPORTED, without running
it. Override to return true only when the action honours the audience in full — every record, snippet
and count it returns is something every reader may see (pass the audience to the search engine, check each
reader's entitlement to anything it scopes by, and leave out aggregates computed before that filtering).
ProtectedFetchFetch, with a timeout and a size bound. Overridable for tests.
ProtectedInternalExecutes the feed read.
The action parameters containing:
{ name, url } (or a JSON string of one). Either this
or FeedURLs is requiredRanked articles, plus a per-feed status list
ProtectedNowThe current time. Overridable so tests can pin the clock.
Executes the action with the provided parameters.
The action execution parameters including context
Promise resolving to the action result
Action that reads one or more RSS or Atom feeds and returns their articles, optionally scored and ranked against a keyword list.
Feeds are fetched concurrently and a failing feed does not fail the action: its error is reported in
FeedStatuseswhile the other feeds still return their articles. A feed being unreachable is the normal case at any scale — one dead URL in a list of twenty should not cost the caller the other nineteen.No credential. These are public HTTP endpoints.
Scoring is a keyword-relevance weight (title 3, category 2, description 1) plus a recency decay across the time window, combined as
relevance * 10 + recency * 5so relevance dominates and recency breaks ties. The numeric scores come back on every article rather than being bucketed into labels, because what counts as "high" depends on the caller's corpus, not on this action's batch.Example