@framers/agentos-ext-deep-research 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +128 -0
  2. package/manifest.json +1 -1
  3. package/package.json +2 -2
package/README.md ADDED
@@ -0,0 +1,128 @@
1
+ # Deep research
2
+
3
+ This pack gives an agent investigation, academic search, scraping, aggregate search, trend discovery and iterative research tools. It uses `axios` for search and content APIs, DuckDuckGo HTML search, and OpenAI-compatible chat completion endpoints for query decomposition and report synthesis.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @framers/agentos-ext-deep-research
9
+ ```
10
+
11
+ Peer dependency: `@framers/agentos` with range `>=0.10.40`.
12
+
13
+ ## Usage
14
+
15
+ ```ts
16
+ import { AgentOS } from '@framers/agentos';
17
+
18
+ const agentos = await AgentOS.create({
19
+ extensionManifest: {
20
+ packs: [
21
+ {
22
+ package: '@framers/agentos-ext-deep-research',
23
+ options: {
24
+ serperApiKey: process.env.SERPER_API_KEY,
25
+ braveApiKey: process.env.BRAVE_API_KEY,
26
+ serpApiKey: process.env.SERPAPI_API_KEY,
27
+ openaiApiKey: process.env.OPENAI_API_KEY,
28
+ openrouterApiKey: process.env.OPENROUTER_API_KEY,
29
+ },
30
+ },
31
+ ],
32
+ },
33
+ });
34
+ ```
35
+
36
+ ## Configuration
37
+
38
+ | Option | Secret id | Environment variable | Required | Default |
39
+ | --- | --- | --- | --- | --- |
40
+ | `serperApiKey` | `serper.apiKey` | `SERPER_API_KEY` | yes, manifest | Empty string |
41
+ | `braveApiKey` | `brave.apiKey` | `BRAVE_API_KEY` | no | Unset |
42
+ | `serpApiKey` | `serpapi.apiKey` | `SERPAPI_API_KEY` | no | Unset |
43
+ | `openaiApiKey` | `openai.apiKey` | `OPENAI_API_KEY`, then `OPENROUTER_API_KEY` in the shared key chain | no | Shared key chain, then empty string |
44
+ | `openrouterApiKey` | `openrouter.apiKey` | `OPENAI_API_KEY`, then `OPENROUTER_API_KEY` in the shared key chain | no | Shared key chain, then empty string |
45
+ | `primaryProvider` | None | None | no | `openai` |
46
+ | `smallModel` | None | None | no | `gpt-4o-mini` |
47
+ | `synthesisModel` | None | None | no | `gpt-4o` |
48
+ | `secrets` | Secret map | None | no | Context `secrets`, then an empty object |
49
+ | None | None | `DEBUG` | no | Unset |
50
+
51
+ Search keys resolve from options, then the selected secret map, then the environment. `options.secrets` replaces context `secrets`. The LLM key resolves from `openaiApiKey`, `openai.apiKey`, `openrouterApiKey`, `openrouter.apiKey`, `OPENAI_API_KEY`, then `OPENROUTER_API_KEY`.
52
+
53
+ `primaryProvider` selects `openai`, `openrouter` or `ollama`. An OpenRouter option or environment key also selects the OpenRouter endpoint when `openaiApiKey` is absent. The Ollama endpoint is local. A nonempty `DEBUG` enables console progress logging unless a per-call progress callback takes precedence.
54
+
55
+ ## Tools
56
+
57
+ | Tool | What it does |
58
+ | --- | --- |
59
+ | `researchInvestigate` | Investigates a topic across web, academic, social and news sources with cross-references. |
60
+ | `researchAcademic` | Searches academic papers on arXiv, Google Scholar or Semantic Scholar. |
61
+ | `researchScrape` | Extracts content from YouTube, Wikipedia, blogs and generic pages. |
62
+ | `researchAggregate` | Searches Serper, Brave and SerpAPI and returns results grouped by engine. |
63
+ | `researchTrending` | Retrieves trends from Twitter, Reddit, YouTube or Hacker News. |
64
+ | `deep_research` | Decomposes a query, searches and extracts sources, analyzes gaps and synthesizes a report with citations. |
65
+
66
+ ### `researchInvestigate`
67
+
68
+ | Parameter | Type | Required | Description |
69
+ | --- | --- | --- | --- |
70
+ | `query` | string | yes | The research query or topic to investigate |
71
+ | `sources` | array of strings, enum: `web`, `academic`, `social`, `news` | no | Sources to search across (default: `web`, `academic`, `news`) |
72
+ | `maxResults` | number | no | Maximum results per source (default `10`) |
73
+
74
+ ### `researchAcademic`
75
+
76
+ | Parameter | Type | Required | Description |
77
+ | --- | --- | --- | --- |
78
+ | `query` | string | yes | Academic search query (keywords, paper title, author name) |
79
+ | `source` | string, enum: `arxiv`, `scholar`, `semantic` | no | Academic source to search (default: `arxiv`) |
80
+ | `maxResults` | number | no | Maximum number of papers to return (default `10`) |
81
+
82
+ ### `researchScrape`
83
+
84
+ | Parameter | Type | Required | Description |
85
+ | --- | --- | --- | --- |
86
+ | `url` | string | yes | URL to scrape content from |
87
+ | `type` | string, enum: `youtube`, `wikipedia`, `blog`, `generic` | no | Content type for platform-specific extraction (default: `generic`) |
88
+
89
+ ### `researchAggregate`
90
+
91
+ | Parameter | Type | Required | Description |
92
+ | --- | --- | --- | --- |
93
+ | `query` | string | yes | Search query |
94
+ | `engines` | array of strings, enum: `serper`, `brave`, `serpapi` | no | Search engines to query (default: `serper`) |
95
+ | `maxResults` | number | no | Maximum results per engine (default `10`) |
96
+
97
+ ### `researchTrending`
98
+
99
+ | Parameter | Type | Required | Description |
100
+ | --- | --- | --- | --- |
101
+ | `platform` | string, enum: `twitter`, `reddit`, `youtube`, `hackernews` | no | Platform to discover trends from (default: `hackernews`) |
102
+ | `category` | string | no | Category or subreddit to filter trends (optional) |
103
+
104
+ ### `deep_research`
105
+
106
+ | Parameter | Type | Required | Description |
107
+ | --- | --- | --- | --- |
108
+ | `query` | string | yes | Research question or topic to investigate |
109
+ | `depth` | string, enum: `quick`, `moderate`, `deep`; default: `moderate` | no | Research depth: quick (`30000` ms, `10` searches), moderate (`120000` ms, `20` searches), deep (`540000` ms, `50` searches) |
110
+ | `maxIterations` | integer, minimum `1`, maximum `10` | no | Maximum search-extract-analyze iterations |
111
+ | `sources` | array of strings, enum: `web`, `academic`, `news`, `social` | no | Source types to search |
112
+ | `focusAreas` | array of strings | no | Specific aspects to focus on |
113
+
114
+ ## Notes
115
+
116
+ The manifest requires `serper.apiKey`, but the factory does not reject a missing key. Without it, `deep_research` uses DuckDuckGo HTML search. With it, the engine uses aggregate search; empty provider results do not trigger DuckDuckGo. Brave and SerpAPI are skipped when their keys are absent. Investigation and aggregate search skip failed sources or engines.
117
+
118
+ Service-backed tools require activation. `deep_research` declares `capability:web_search` and validates that `query` has at least `3` characters. Its `sources` input is passed to the search method but does not filter searches. Without an LLM key, the engine searches the original query; when it collects content and has LLM budget remaining, its no-op synthesis returns an empty summary. Configured LLM calls send research prompts and source evidence to the selected endpoint.
119
+
120
+ YouTube scraping returns oEmbed metadata, not transcripts. Wikipedia scraping uses the English summary endpoint. Investigation cross-references match shared title words. Trend `category` affects Reddit; the other providers ignore it.
121
+
122
+ Service HTTP requests use a `30000` ms timeout; generic scraping and engine page extraction use `15000` ms. Generic scraping truncates text to `10000` characters. The engine tracks search, extraction, LLM and elapsed-time budgets, with default iteration limits of `1` for `quick`, `3` for `moderate` and `6` for `deep`. These checks do not cancel an in-flight search or LLM request.
123
+
124
+ Firecrawl support exists in the engine, but the pack factory does not pass Firecrawl settings to it.
125
+
126
+ ## License
127
+
128
+ Apache-2.0
package/manifest.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://agentos.sh/schemas/extension-manifest-v1.json",
3
3
  "id": "com.framers.research.deep-research",
4
4
  "name": "Deep Research Extension",
5
- "version": "0.2.2",
5
+ "version": "0.2.3",
6
6
  "description": "Multi-source investigation engine with academic search, content scraping, aggregate search across engines, and trend discovery across platforms.",
7
7
  "categories": ["research", "investigation"],
8
8
  "sdk": "axios",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@framers/agentos-ext-deep-research",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "Deep research extension for AgentOS — multi-source investigation, academic search, content scraping, aggregate search, and trend discovery.",
5
5
  "license": "Apache-2.0",
6
6
  "main": "dist/index.js",
@@ -19,7 +19,7 @@
19
19
  "@types/node": "^20.0.0",
20
20
  "typescript": "^5.0.0",
21
21
  "vitest": "^3.2.7",
22
- "@framers/agentos": "^0.13.40"
22
+ "@framers/agentos": "^0.13.47"
23
23
  },
24
24
  "repository": {
25
25
  "type": "git",