Commit graph

483 commits

Author SHA1 Message Date
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
Anish Sarkar
458d223ef8 test(billing): cover Instagram item and comment billing 2026-07-09 16:02:54 +05:30
Anish Sarkar
2e66e714e2 test(instagram): add capability unit tests 2026-07-09 16:02:48 +05:30
Anish Sarkar
9da136070d test(instagram): add platform-layer unit tests 2026-07-09 16:02:41 +05:30
Rohan Verma
3eb485ff31
Merge pull request #1575 from SyntaxSawdust/feature/1354-embedding-base-url
Support separate embedding base URL configuration
2026-07-08 17:11:42 -07:00
Rohan Verma
d2ed0bb382
Merge pull request #1570 from pelazas/fix/scheduler-task-map-bookstack
fix: dispatch periodic BookStack indexing from the scheduler task_map
2026-07-08 15:07:38 -07:00
Dustin Persek
41edac7641 Merge remote-tracking branch 'upstream/dev' into feature/1354-embedding-base-url
# Conflicts:
#	surfsense_web/content/docs/docker-installation/docker-compose.mdx
#	surfsense_web/content/docs/manual-installation.mdx
2026-07-07 14:19:40 -04:00
DESKTOP-RTLN3BA\$punk
b477d33cba Merge commit 'fa7075fde6' into dev 2026-07-07 00:39:58 -07:00
DESKTOP-RTLN3BA\$punk
9a9a78e7ef refactor: improve session management and concurrency in Google Search fetcher
- Introduced a semaphore to limit concurrent page renders, enhancing resource management.
- Updated session handling to defer browser closure until all in-flight renders are complete.
- Improved comments for clarity on the behavior of concurrent fetches and session lifecycle.
- Cleaned up imports in alembic environment and migration flow scripts for consistency.
2026-07-06 22:33:40 -07:00
DESKTOP-RTLN3BA\$punk
1c9ab207ef chore: bumped version to 0.0.31 2026-07-06 21:43:15 -07:00
DESKTOP-RTLN3BA\$punk
1fd58752a3 feat: update environment variables and enhance scraping capabilities
- Adjusted Google Maps and YouTube micro pricing in the .env.example file for better cost management.
- Introduced new environment variables for captcha solving and stealth browser hardening to improve scraping resilience.
- Removed outdated smoke test for scraper API endpoints to streamline testing.
- Enhanced anonymous chat agent's system prompt to clarify capabilities and suggest account creation for advanced features.
- Updated Reddit fetch logic to prioritize new session handling and improve resilience against IP-related issues.
- Added compacting functionality for scraper results to optimize data handling and presentation.
- Improved workspace and document management tools with clearer descriptions and enhanced functionality.
- Introduced new UI components for agent setup guidance in the web application.
2026-07-06 20:27:36 -07:00
DESKTOP-RTLN3BA\$punk
271a21aee6 feat: docs and ui tweaks 2026-07-06 19:26:35 -07:00
DESKTOP-RTLN3BA\$punk
50f2d095aa feat: api playground, other tweaks 2026-07-06 16:45:04 -07:00
Anish Sarkar
cda232101f feat(workspace): remove AI file sorting feature and related components 2026-07-06 10:50:20 +05:30
Dustin Persek
6fafedca6a Support separate embedding base URL 2026-07-05 22:33:09 -04:00
DESKTOP-RTLN3BA\$punk
80927a2872 feat(billing): meter platform scrapers per item; consolidate web scraping onto web.crawl
Add per-item, per-platform billing for the platform-native connectors (Reddit, Google Search, Google Maps places/reviews, YouTube videos/comments) through the capability gate/charge seam. Rates are config-driven with a shared wallet-credit module (wallet_credit) and a dedicated PlatformScrapeCreditService; agent and REST capability runs now record cost_micros. Google Maps scrape dual-meters places and attached reviews.

Remove the main-agent scrape_webpage tool now that the web.crawl capability covers single-page (maxCrawlDepth=0) and site crawling. The main agent now reaches crawling via task(web_crawler, ...). Update prompts, tool catalog, receipts, skills, proprietary docs, and tests; drop the obsolete chat-turn crawl fold path.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-05 17:08:01 -07:00
DESKTOP-RTLN3BA\$punk
c600a2920b feat(crawler): harden web crawler and agent tooling for real-world research tasks
Crawler engine: escalate thin JS-shell pages past static fetch, repair
currency-lossy extractions, emit categorized link records with anchor
provenance, and decode percent-encoded mailto:/tel: contacts; site crawls
reuse the connector ladder via Scrapling's spider engine with URL pattern
filters. Agent layer: read_run gains char_offset paging, search_run gains
match excerpts, new export_run turns stored runs into CSV workspace docs;
reddit search fair-shares the item budget across queries and dedupes
cross-query hits. Subagent prompts and routing teach crawl-after-search,
full-run coverage before summarizing, and executing own-tool next steps
instead of returning partial.
2026-07-05 03:51:16 -07:00
DESKTOP-RTLN3BA\$punk
b6e378b070 feat(runs): introduce Run and ToolOutputSpill models for logging scraper invocations
- Added `Run` model to track scraper invocations, including metadata such as status, input, and output.
- Implemented `ToolOutputSpill` model to store context-editing spills separately from user-facing logs.
- Updated middleware to handle spill placeholders and integrate with the new models.
- Enhanced REST API to record runs and expose run history through new endpoints.
- Adjusted tests to validate the new run logging functionality and ensure proper integration with existing capabilities.
2026-07-04 22:55:55 -07:00
DESKTOP-RTLN3BA\$punk
ab747e7a49 feat(agents): consolidate connectors under mcp_discovery; route web search through google_search
MCP consolidation:
- Route all MCP-capable connectors (Slack, Jira, Linear, ClickUp, Airtable,
  Notion, Confluence, interim Gmail/Calendar, custom MCP) through a single
  `mcp_discovery` subagent. Drive/OneDrive/Dropbox stay native to enrich the KB.
- Deprecate Discord/Teams/Luma: no viable official MCP server.

Google-only web search:
- Remove the main-agent `web_search` tool and the SearXNG platform service;
  all public web search now flows through the `google_search` subagent via task().
- Deprecate the Tavily/SearXNG/Linkup/Baidu search connectors (HTTP 410 on
  create, "Deprecated" badge); guide heavy users to the custom MCP connector.
- Remove web search from anonymous chat (pure Q&A).
- Tear SearXNG out of docker compose + install scripts; drop tavily-python
  and linkup-sdk deps and their config/env vars.

Fix:
- metrics._package_version() now swallows any metadata lookup failure. A
  malformed editable-install distribution with no `Version` field raised
  KeyError deep in importlib.metadata, and since it runs on every
  record_subagent_invoke_duration call it was crashing every task()
  delegation. Verified end-to-end against live GPT-5.4.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-04 21:06:04 -07:00
DESKTOP-RTLN3BA\$punk
ff2e5f390f feat(reddit): implement Reddit scraping subagent and associated capabilities
- Added a new `reddit` subagent to scrape structured data from Reddit posts, comments, and users.
- Introduced `reddit.scrape` capability for fetching data using URLs and search queries.
- Implemented tools for scraping and parsing Reddit data, including handling pagination and rate limits.
- Created input/output models for the Reddit scraper to define request and response structures.
- Added documentation for the new Reddit scraping functionality and its usage.
- Integrated the Reddit subagent into the existing multi-agent chat framework.
2026-07-04 17:31:11 -07:00
DESKTOP-RTLN3BA\$punk
701f888b9e feat(proxy): refactor proxy configuration and add DataImpulse provider
- Updated proxy configuration in `.env.example` files to use `PROXY_URL` and `PROXY_URLS` instead of `CUSTOM_PROXY_URL` and `CUSTOM_PROXY_URLS`.
- Introduced `DataImpulseProvider` for proxy management, replacing the deprecated `AnonymousProxiesProvider`.
- Enhanced documentation to reflect changes in proxy setup and usage.
- Adjusted related code in the proxy registry and configuration files to support the new provider structure.
2026-07-04 17:18:40 -07:00
Rohan Verma
07ace7ff7d
Merge pull request #1571 from AnishSarkar22/feat/reddit-scraping
feat(scrapers): add anonymous Reddit scraper
2026-07-04 15:37:53 -07:00
Anish Sarkar
82141d8047 chore: fix docs 2026-07-04 17:45:43 +05:30
Anish Sarkar
0a83bf6192 test(native-connector): cover reddit schemas and url resolver 2026-07-04 17:28:21 +05:30
Anish Sarkar
0ef02c43cc test(native-connector): cover reddit parser mappings 2026-07-04 17:28:17 +05:30
Anish Sarkar
1b1e612e20 test(native-connector): cover reddit fetch resilience 2026-07-04 17:28:13 +05:30
Anish Sarkar
4d950ddcb5 test(native-connector): add reddit post fixture 2026-07-04 17:28:08 +05:30
Anish Sarkar
672f79d620 test(native-connector): add reddit listing fixture 2026-07-04 17:28:02 +05:30
Anish Sarkar
83f52b17b1 test(native-connector): add reddit comment fixture 2026-07-04 17:27:56 +05:30
Anish Sarkar
f14bf1f06d test(native-connector): add reddit scraper test package 2026-07-04 17:27:53 +05:30
pelazas
f44cb8a493 fix: dispatch periodic BookStack indexing from the scheduler task_map
BOOKSTACK_CONNECTOR was missing from check_periodic_schedules' task_map,
so connectors with periodic indexing enabled fell through to the
"No task found" warning branch every minute and never synced.

Fixes #891

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 09:53:51 +02:00
Rohan Verma
aa7388f2f7
Merge pull request #1563 from mvanhorn/fix/1531-video-presentation-fanin-barrier
fix: wire video_presentation fan-in as a barrier so generate_slide_scene_codes fires once
2026-07-03 22:26:32 -07:00
DESKTOP-RTLN3BA\$punk
0d83916cc5 feat(native-connector): added google search results scraper 2026-07-03 20:51:45 -07:00
CREDO23
b5d221c19c fix(capabilities): map any executor fault to 502 at the REST door 2026-07-03 17:57:07 +02:00
CREDO23
2c76ef1f57 feat(subagents): add google_maps builtin subagent 2026-07-03 17:56:53 +02:00
CREDO23
f31823f765 feat(google_maps): add scrape + reviews capability verbs 2026-07-03 17:56:43 +02:00
CREDO23
d5d673384f Merge upstream/ci_mvp (google maps scrapers) into feature-ci_phase-4-7
Resolve conflicts against the new native google-maps actor + repo-wide
ruff-format pass:
- Keep legacy webcrawler KB indexer + its test deleted (modify/delete).
- test_validators: keep WEBCRAWLER case removed (validator gone).
- test_fetch_resilience: keep platforms.youtube import path (our reorg).
- Relocate google_maps actor + tests scrapers/ -> platforms/ to match the
  reorg convention (youtube already there); rewrite imports + fixture paths.
- Add missing __init__.py across the capabilities/ test subtree so duplicate
  test basenames get unique module paths under importlib mode.

Note: google_maps fixture-backed tests error on ci_mvp too (fixtures/*.json
never committed upstream) - pre-existing, out of scope here.
2026-07-03 12:37:12 +02:00
CREDO23
817ec0e9f4 refactor(youtube): remove legacy KB ingestion; use actor get_youtube_video_id 2026-07-03 12:00:22 +02:00
CREDO23
ab6be6cbda refactor(connectors): remove legacy web-crawler KB indexer paths (keep enums) 2026-07-03 11:53:33 +02:00
CREDO23
e3ed3b2be3 refactor(subagents): remove dormant research subagent 2026-07-03 11:43:26 +02:00
CREDO23
c66b2f0e0e refactor(automations): remove phase-6 chat watch (watch service/routes + chat_message action) 2026-07-03 11:20:22 +02:00
CREDO23
5da624399d refactor(subagents): split scraping into web_crawler + youtube builtins 2026-07-03 11:20:09 +02:00
CREDO23
3312a442f3 refactor(proprietary): move scrapers/ -> platforms/ (one subpackage per platform) 2026-07-03 11:01:58 +02:00
CREDO23
9fe9c5b71d feat(capabilities): replace web.scrape/web.discover with unified web.crawl
web.crawl scrapes a single URL (maxCrawlDepth=0) or spiders a whole site,
backed by the proprietary site_crawler engine. Rewires the scraping subagent
tools and capability tests onto the new verb.
2026-07-03 10:51:05 +02:00
CREDO23
f82fae3973 feat(web-crawler): add site_crawler spider + url_policy over the fetch engine 2026-07-03 10:50:41 +02:00
DESKTOP-RTLN3BA\$punk
7185079bd6 feat(native-connector): added google maps places & reviews scrapers 2026-07-02 21:58:24 -07:00
CREDO23
5d0bd8125b test(capabilities): cover youtube verb schemas, executors, and registry 2026-07-02 20:18:53 +02:00