Skip to content

[pull] main from firecrawl:main - #466

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

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

Conversation

@pull

@pull pull Bot commented Sep 25, 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 : )

tomsideguide and others added 2 commits September 25, 2026 16:46
* feat: route browser and interact sessions through Hangar

* fix(browser): clean up failed upstream operations

* fix(python): normalize browser fields only on supported responses

* fix(browser): reserve concurrency before creating sessions

* fix(profiles): serialize deletion and save reconciliation

* chore: keep review validation in existing test cases

* fix(browser): persist billing receipts and reserve prompt credits

* fix(browser): coordinate and bound session reconciliation

* fix(interact): select the replay tab explicitly in agent-browser

* fix(profiles): reject cache-only scrapes with browser state

* fix(browser): retain reconciliation lease until the batch completes

* fix(profiles): reject malformed deletion tombstones

* fix(browser): log keyless usage when finalization completes

* fix(browser): bound reconciliation sweeps to a fixed endpoint

* docs(browser): clarify admission limits and prompt billing failures

* fix(browser): isolate per-session reconciliation state failures

* fix(browser): commit settlement debit with its receipt

* fix(browser): keep settlement retries stable and handle absent orgs

* ci: provide Redis for FoundationDB capacity checks

* fix(browser): serialize prompt rate changes with settlement

* Remove mocked Hangar adapter tests

* refactor(browser): bill through billTeam and drop settlement scaffolding

* fix(browser): bill after the settlement commit and validate profile names by bytes

* fix(browser): skip the prompt credit check once a session has used a prompt

* fix(browser): stop exposing the Hangar recording URL outside the replay routes

* refactor(browser): drop the always-true cleanupQueued delete field
…lds in gateway and SDKs (#4759)

* feat(agent): accept exchange.onTermsRequired and type the terms-required fields

The /v2/agent exchange schema is strict, so the dashboard's
onTermsRequired: "ask" (and any API caller's "skip" / "fail") was rejected
with a 400. Accept it as an optional enum and forward it unchanged; the
agent service owns the default ("skip") and thread inheritance.

Type the new fields the agent service already returns through the status
passthrough: exchange.onTermsRequired, skippedProviders, requiresAction
(accept_terms with the exact terms/show and terms/accept calls) and error,
plus pendingApproval.kind and terms. Mirror both in the JS and Python SDKs.

There is no auto-accept mode; accepting terms stays a human-authorized
terms/accept call.

Also drops an unused export that knip flags on main.

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

* feat(agent): accept exchange.decline.callIds for terms offers

extract-v3#182 (39ddf20a) lets a terms decline name the providers it
declines; omitted still declines the whole offer. Accept it in the strict
gateway schema and add it to the JS/Python SDK types, with tests.

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

* feat(agent): match extract-v3#182 at 67f40bb5 in gateway and SDK types

- requiresAction.approvalId is required: fail mode now also ends on a
  terms pendingApproval, so every requiresAction is answerable with
  exchange.approve / decline.
- requiresAction is documented as absent when the terms offer was deferred
  behind a paid-call approval; it comes on the next turn.
- PendingApproval is a union: a calls shape (kind "calls" or absent) and a
  terms shape (kind "terms", terms, empty calls). The JS SDK types the
  terms calls as never[] so existing calls[0] code still compiles; the
  Python SDK keeps one lenient model with an is_terms helper.
- approve/decline callIds: only listed ids count, [] names nobody,
  omitted means every provider offered.

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

* feat(agent): cut fail mode, terms deferral and decline.callIds; one digest shape

Scope cut matching extract-v3#182:
- onTermsRequired is "skip" | "ask"; exchange.error is gone.
- requiresAction is no longer documented as deferred behind a paid-call
  approval.
- decline.callIds is gone: a terms offer is accepted or declined as a whole.
  approve.callIds is back to exactly what main has.

Review fixes:
- The mode list is defined once (["skip", "ask"] as const); the zod enum
  and the AgentOnTermsRequired type both derive from it.
- digest is always present and nullable (string | null) on the terms gate,
  requiresAction.providers[] and accept.options, in the gateway and JS SDK.
- Tests cover "skip" forwarding in both SDKs and reject "fail".

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

* feat(agent): match the final extract-v3#182 contract (a0e877c0)

- Drop the per-provider id from requiresAction.providers[] and the terms
  gate, and publisher from the terms gate: the backend no longer sends them.
- Note that approve callIds/always are ignored on terms offers, and that
  the terms fields only appear while the terms gate is on for a thread.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@pull pull Bot locked and limited conversation to collaborators Sep 25, 2026
@pull pull Bot added the ⤵️ pull label Sep 25, 2026
@pull
pull Bot merged commit c144f05 into innFactory:main Sep 25, 2026
2 of 10 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.

2 participants