Skip to content

[pull] main from firecrawl:main - #455

Merged
pull[bot] merged 6 commits into
innFactory:mainfrom
firecrawl:main
Sep 22, 2026
Merged

pull[bot] merged 6 commits into
innFactory:mainfrom
firecrawl:main

Conversation

@pull

@pull pull Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

developersdigest and others added 6 commits September 21, 2026 15:56
* feat(api): record provider scrapes in the activity log

Provider tool calls served through Scrape were logged to requests as scrape rows but
never got a scrapes row, so the activity log showed them without status or credits.
Write one, keyed by the same scrape id, with the alexandria: target as the url, the
served credits, elapsed time and item outcome. Monitors already share the scrapes
table this way. No document is involved, so the feedback job, job state, GCS copy
and change tracking that page scrapes trigger are skipped.

* fix(api): order provider activity log inserts

* fix(api): log provider outcomes asynchronously in order

* fix(api): capture key identity before background logging

* fix(api): limit activity inputs and cover failed provider outcomes

* Classify provider activity as Alexandria

* fix(api): safely inspect activity query in test

* fix(api): isolate Alexandria activity filter test setup
…ties (#4716)

* feat(api): refuse free-plan teams on paid-plan-only Exchange capabilities

Benzinga's Schedule C.4 allows full-text articles, WIIM and analyst ratings only in response to
an authenticated, paid request. The Alexandria path already refuses keyless callers, requires an
API key and Schedule acceptance, and reserves credits, but credits alone do not prove payment:
a free team spends signup credits.

The Exchange now lists the restricted addresses per provider as paidPlanOnlyCapabilities in
/v1/provider-terms/requirements (firecrawl/exchange#623), which authorizeProviders already reads
before every quote. When a call targets one of them, the team's Autumn rate-limit multiplier is
read from the cached entity fetch (no extra Autumn call); below the hobby floor the request is
refused with 403 paid_plan_required and nothing executes. Teams with bypassCreditChecks pass. A
team with no Autumn entity reads as free and is refused. An Exchange that does not publish the
field gates nothing, so deploy order is Exchange first.

Tests cover the refusal, a paid team, an ungated capability not consulting the plan, the bypass
flag, the absent field, and that the agreement check still runs first.

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(api): the paid-plan gate fails closed when the plan cannot be known

Review on #4716 was right: getRateLimitMultiplier answers the fail-open fallback (2500) for a
team with no org and on any Autumn error, so the plan gate admitted exactly the requests it
could not judge, and the comment claiming the opposite was wrong.

The entity read behind getEntityLimits now reports what happened instead of choosing a
fallback (readEntityLimits), and two readers sit on it: getEntityLimits keeps its fail-open
throttling behaviour unchanged, and the new getKnownRateLimitMultiplier answers the entitled
multiplier only when Autumn actually answered (1 for a missing entity or absent balance) and
null otherwise. The gate refuses null with 503 plan_verification_unavailable and a
below-hobby multiplier with 403 paid_plan_required, so a nameless org, a preview team and a
billing outage all refuse rather than deliver licensed content.

Tests: the free-team refusal now asserts a single requirements read and nothing else; a new
case covers the null answer; the Autumn service tests cover the strict reader across a live
entity, a 404, an empty balance, a 500, no org and a preview team, alongside the unchanged
fail-open reads. The comment no longer claims the read is free: a warm cache costs nothing, a
cold one costs the fetch the rate limiter would have made.

Co-Authored-By: Claude <noreply@anthropic.com>

* Reject missing organizations before reading cached plan entitlements

* Scope cached Autumn entitlements to organization and team

---------

Co-authored-by: Matthew Rodriguez <matthewrodriguez@Matthews-MacBook-Pro.local>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Developers Digest <124798203+developersdigest@users.noreply.github.com>
* Use Alexandria name in provider execution errors

* Correct stale Alexandria access documentation
@pull pull Bot locked and limited conversation to collaborators Sep 22, 2026
@pull pull Bot added the ⤵️ pull label Sep 22, 2026
@pull
pull Bot merged commit 024261b into innFactory:main Sep 22, 2026
2 of 9 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants