Repository navigation
Add Parallel public-web search - #37
Merged
Merged
Conversation
shriyatheunicorn
marked this pull request as ready for review
October 30, 2026 02:38
Parallel URL filtering and extract timeouts
shubh24
approved these changes
Oct 30, 2026
A recovery scan that ran past the worker's work budget threw away its place, so the next attempt refetched the same pages from the newest one. A watch with more missed history than one budget could never finish, and after eight such attempts the job was marked failed. Scheduled checks skip failed jobs, so automatic recovery stopped for that watch until an operator requeued it by hand. Check the budget between pages and save the scan's place in the job payload: the next page cursor, the start time, the newest identity seen, whether prior coverage was found, and the distinct runs counted so far. Each claim fetches at least one whole page, so a saved cursor never splits a page and the next run picks up where this one stopped. Stored event IDs keep deduplicating, so resuming cannot resend an alert. Saving progress is no longer treated as a failure. It releases the attempt it consumed and clears the job's last error, so a long recovery does not walk into the eight-attempt limit. Resuming stays bounded: the scan only continues while its cursor moves forward, and for at most twenty resumes, after which it reports an exceeded budget as before. A scan that did reach the failed state is restarted, keeping its saved progress, by the next scheduled check for that watch. Co-authored-by: George Pickett <georgeatparallel@users.noreply.github.com>
watch_list returned the 50 newest watches and nothing else, with
cancelled ones counted against that limit. One active watch followed by
50 newer cancelled ones therefore dropped off the result entirely, and a
fresh conversation had no way to recover its ID to stop it or change its
frequency.
Order watches with the open ones first - anything not cancelled or
failed - and newest first within each group, so a running watch stays on
the first page however many watches were cancelled after it. Keep 50 per
page and return a next_cursor when older watches remain. The cursor is a
keyset marker over that same order rather than an offset, so pages do
not shift when a watch changes status between calls, and an unusable one
is rejected instead of silently reading from the start.
watch_list now takes an optional cursor and an optional status of all,
open, or closed, and returns { watches, next_cursor } in place of a bare
array. Document both in the tool description, the agent instructions,
and docs/monitors.md.
Co-authored-by: George Pickett <georgeatparallel@users.noreply.github.com>
Add persistent Parallel watches
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Integrate Parallel Search and Extract into BELL. Research returns sources for citations and hands interactive browser work to the existing browser tools, with bounded responses, cancellation, and sanitized provider errors.
Adds automated regression coverage for research, citations, interrupted streams, concurrent conversations, authenticated browser handoff, and resource cleanup. No dependency versions, lockfile, or browser lifecycle changes.
Validation: 433 tests passed (7 opt-in tests skipped); typecheck, lint, and production build passed. Authenticated local production E2E passed against live Parallel and Browserbase with main's unpatched Stagehand SDK. Hosted staging was not verified.