Commit graph

539 commits

Author SHA1 Message Date
DESKTOP-RTLN3BA\$punk
87b0ba86e4 feat: bumped version to 0.0.34 2026-07-17 19:42:10 -07:00
DESKTOP-RTLN3BA\$punk
2cbe6fc111 feat: bumped version to 0.0.33 2026-07-17 17:23:21 -07:00
DESKTOP-RTLN3BA\$punk
8a5d37a4db refactor: implement cross-country proxy rotation for Reddit and TikTok scrapers, enhancing resilience against IP blocks and improving search query handling 2026-07-17 16:30:26 -07:00
DESKTOP-RTLN3BA\$punk
c0ebb62fb2 chore: linting 2026-07-17 14:39:39 -07:00
DESKTOP-RTLN3BA\$punk
68d1832f10 refactor: enhance Google search scraping capabilities with warm sticky-IP pool and improved captcha handling 2026-07-17 03:27:43 -07:00
Rohan Verma
d1d839a491
Merge pull request #1604 from AnishSarkar22/feat/amazon-scraper
feat(amazon): add public multi-marketplace product scraping capability
2026-07-15 16:29:03 -07:00
Anish Sarkar
78fe22735e test(amazon): update proxy configuration in AmazonScrapeInput to use residential proxy 2026-07-15 16:04:02 +05:30
Anish Sarkar
22d5a42e8d test: update BookStack connector test to disable deprecated indexing 2026-07-15 15:59:44 +05:30
Anish Sarkar
505bc64c0b test: update Google Maps, Reddit, and YouTube capabilities to reflect billing units 2026-07-15 15:58:07 +05:30
Anish Sarkar
01308055dd chore: ran linting 2026-07-15 15:48:54 +05:30
Anish Sarkar
07fe0203e3 test(amazon): cover localized scraper flows 2026-07-15 15:32:50 +05:30
Anish Sarkar
799ec5a907 test(amazon): cover block detection and localized price parsing 2026-07-15 15:32:29 +05:30
Anish Sarkar
b47566c68d test(amazon): cover marketplace locale helpers 2026-07-15 15:31:59 +05:30
Anish Sarkar
e19c9b292f test(amazon): cover sticky proxy country rewrite 2026-07-15 15:31:48 +05:30
Anish Sarkar
b11fcfe57e test(proxy): cover dataimpulse geo country routing 2026-07-15 15:31:44 +05:30
Anish Sarkar
8331440f4b test(amazon): cover amazon subagent composition 2026-07-15 10:24:55 +05:30
Anish Sarkar
cdd9102cac test(amazon): cover capability schema, executor, registry 2026-07-15 01:57:41 +05:30
Anish Sarkar
b5b700c853 test(proxy): cover dataimpulse sticky-session urls 2026-07-15 01:57:12 +05:30
Anish Sarkar
f1ee166f19 test(amazon): cover orchestrator flows 2026-07-15 01:57:05 +05:30
Anish Sarkar
a7e854c815 test(amazon): cover html parsers against fixtures 2026-07-15 01:56:55 +05:30
Anish Sarkar
3dfcee697b test(amazon): cover schema and url-resolver contract 2026-07-15 01:56:45 +05:30
Anish Sarkar
e8d4d8a1f9 test(amazon): add offline html fixtures 2026-07-15 01:56:42 +05:30
Anish Sarkar
2d837ea18c Merge remote-tracking branch 'upstream/dev' into fix/onboarding 2026-07-14 10:18:03 +05:30
DESKTOP-RTLN3BA\$punk
2b018c4474 refactor: streamline TikTok and Instagram scraping logic by removing search_queries and enhancing documentation for clarity 2026-07-13 17:11:25 -07:00
DESKTOP-RTLN3BA\$punk
1131da5ed7 feat: bumped version to 0.0.32 2026-07-13 16:29:39 -07:00
Rohan Verma
d3da875658
Merge pull request #1599 from Thibaultjaigu/feat/requesty-provider
feat: add Requesty as a model provider
2026-07-13 13:03:20 -07:00
Rohan Verma
d1fa9306cb
Merge pull request #1597 from zzh-github/feature/openai-compatible-raw
Add raw OpenAI-compatible provider without /v1 normalization
2026-07-13 13:02:19 -07:00
Anish Sarkar
5ef944c574 test(model-connections): cover recovery stage and setup stamping 2026-07-14 00:14:59 +05:30
Thibault Jaigu
2ff7ea4cb6 feat: add Requesty as a model provider
Add Requesty (https://requesty.ai), an OpenAI-compatible LLM router, as a
model provider by mirroring the existing OpenRouter integration.

Backend:
- app/services/requesty_model_normalizer.py: normalizes Requesty's /v1/models
  catalogue, mapping its flat capability booleans (supports_tool_calling/
  supports_vision/supports_image_generation) and context_window field onto the
  shared normalized shape (Requesty differs from OpenRouter's architecture +
  supported_parameters + context_length layout)
- provider_registry.py: Requesty ProviderSpec (OpenAI-compatible, base URL
  https://router.requesty.ai/v1, REQUESTY_API_KEY bearer auth)
- model_connection_service.py: key verification + live model discovery
- quality_score.py: Requesty score entry
- unit tests mirroring the OpenRouter normalizer coverage

Frontend:
- Requesty provider icon + registration, metadata entry, and base-url hint

Signed-off-by: Thibault Jaigu <thibault.jaigu@gmail.com>
2026-07-13 09:42:30 +01:00
zzh
a172e9c162 Add raw OpenAI-compatible provider without /v1 normalization 2026-07-13 00:08:30 +08:00
Anish Sarkar
6a5b62de65 test(model-connections): cover compute_llm_setup_status matrix 2026-07-12 20:29:42 +05:30
Anish Sarkar
e38ca19b18 Merge remote-tracking branch 'upstream/dev' into feat/instagram-scraper 2026-07-11 04:31:11 +05:30
Anish Sarkar
75c3addd2b test(instagram): cover PolarisMedia relay parsing and enriched media fields 2026-07-11 03:44:33 +05:30
Anish Sarkar
457be1871c feat(instagram): improve parsing of Instagram media IDs and mentions
- Enhanced the regular expression for mentions to prevent trailing punctuation from being included in handles.
- Added support for extracting media IDs from deep-link meta tags in anonymous posts.
- Updated unit tests to validate the new media ID extraction and ensure proper handling of mentions.
2026-07-11 03:06:04 +05:30
Anish Sarkar
d41ccb7edd feat(instagram): enhance Open Graph parsing for anonymous posts
- Added support for extracting likes, comments, username, timestamp, and caption from Open Graph meta tags.
- Implemented fallback mechanisms to ensure graceful degradation when expected data is missing.
- Updated unit tests to validate new parsing logic and ensure robustness against unrecognized formats.
2026-07-11 02:56:29 +05:30
Anish Sarkar
4bd3ec275c delete(instagram): remove obsolete post fixture for Instagram tests 2026-07-11 02:50:26 +05:30
Anish Sarkar
ba70ae1f45 test(instagram): update platform tests and add discovery fixtures 2026-07-11 02:21:14 +05:30
Anish Sarkar
82a63043f7 test(instagram): update capability tests for schema changes 2026-07-11 02:21:11 +05:30
CREDO23
8f825b7b3c test(tiktok): cover item_list retry-on-empty loop 2026-07-10 17:25:48 +02:00
CREDO23
867e940911 Merge upstream/dev into feature/tiktok-scraper
Sync with the advanced dev tip so the PR compares against current dev
(drops already-merged commits from the diff). No history rewritten.
2026-07-09 20:15:20 +02:00
CREDO23
bcfc3a5c3a test(capabilities): expect export_run in the agent tool manifest
The run-reader set gained export_run (CSV export of a stored run), but this
manifest assertion still expected only read_run/search_run. Add export_run so
the agent-door test reflects the shipped readers.
2026-07-09 20:04:30 +02:00
CREDO23
67b5472b9f feat(tiktok): add tiktok.trending verb for the Explore feed
The Explore feed (/api/explore/item_list) is a global trending-video feed
served to anonymous sessions, and it returns the same itemStruct shape as the
other listings — so the verb reuses parse_video, the listing flow, the
TikTokVideoItem output, and the per-video billing meter wholesale. Adds a
browser-capture marker + fetch_trending, a synthetic-target orchestrator entry,
and the tiktok.trending capability, surfaced on the chat subagent.
2026-07-09 18:52:56 +02:00
CREDO23
7723b5b8b6 feat(tiktok): add tiktok.comments verb for public comment scraping
Comments load over a signed /api/comment/list XHR that TikTok serves to
anonymous sessions once the comments panel is opened (unlike profile-video and
general-search feeds), so this is a reliable verb. Given video URLs it returns
CommentItems (text, author, likes, reply counts; replies carry repliesToId),
deduped per video, capped, and degraded to an ErrorItem for empty/withheld
videos or a bad_url ErrorItem for non-video inputs.

Generalizes the browser capture over a pluggable interaction step so the
comments flow (open panel, scroll the panel to paginate) reuses the same
warm+capture scaffolding as listing/user-search. Billed per comment on a new
TIKTOK_COMMENT meter (TIKTOK_MICROS_PER_COMMENT, matching the per-comment
market), surfaced on the chat subagent alongside tiktok.scrape/user_search.
2026-07-09 18:35:26 +02:00
CREDO23
192b6dc31a feat(tiktok): add tiktok.user_search verb for account discovery
Video/general search is login-walled for anonymous sessions, but the Users
tab (/api/search/user) returns public account records without a redirect, so
this exposes the one reliably-unblocked search path. A keyword yields
TikTokProfileItems (name, followers, bio, verification), deduped per query,
capped, and degraded to an ErrorItem when a query is empty/withheld.

Reuses the browser capture (generalized over XHR markers + extractor) and the
shared profile item shape. Billed per account on a new TIKTOK_USER meter
(TIKTOK_MICROS_PER_USER), surfaced on the chat subagent alongside tiktok.scrape.
2026-07-09 18:00:40 +02:00
CREDO23
6652efd035 feat(tiktok): return profile metadata even when video listing is gated
A profile's account data (name, followers, bio, verification) lives in the
page's rehydration blob and loads over plain HTTP without a signed request,
so emit it first and always. The video listing needs a signed item_list XHR
that TikTok withholds from anonymous sessions, so it stays best-effort and
degrades to an ErrorItem. A blocked profile now yields its metadata instead
of only an ErrorItem.
2026-07-09 17:48:19 +02:00
Anish Sarkar
2c251f9e07 test(instagram): add tests for anonymous profile and hashtag discovery
Introduced new tests to validate the behavior of the Instagram scraper when discovering anonymous profiles and handling hashtag searches. The tests ensure that profile lookups succeed without requiring authentication, while hashtag searches correctly raise an error when access is blocked, enhancing the robustness of the scraper's functionality.
2026-07-09 20:26:18 +05:30
Anish Sarkar
0309e1d28a refactor(instagram): streamline login redirect handling in tests
Revised tests for handling login redirects to improve clarity and efficiency. The test for immediate failure on endpoint-level walls was updated to prevent unnecessary IP rotations. Additionally, new tests were added to ensure that partial results are returned when encountering blocked targets, enhancing the resilience of the scraper's batch processing.
2026-07-09 19:56:55 +05:30
Anish Sarkar
4af0b9dbbd test(instagram): add regression test for InstagramAccessBlockedError handling
Introduced a new test to ensure that InstagramAccessBlockedError is properly propagated without causing deadlocks in the scraper's fan_out function. This regression test verifies that the error surfaces correctly when a blocked job is encountered, enhancing the resilience of the fetch process.
2026-07-09 19:09:06 +05:30
Anish Sarkar
6384409b1d test(instagram): enhance fetch resilience tests for login redirects
Added tests to handle scenarios where a 200 status response is redirected to a login page, ensuring proper rotation of IPs and raising errors when persistent login redirects occur. Updated the _FakeSession class to support login wall detection.
2026-07-09 18:29:29 +05:30
Anish Sarkar
e151346fbe test(chat): include Instagram in subagent composition test 2026-07-09 16:03:23 +05:30