@framers/agentos-ext-deep-research 0.1.0

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 (59) hide show
  1. package/LICENSE +98 -0
  2. package/dist/ResearchService.d.ts +106 -0
  3. package/dist/ResearchService.d.ts.map +1 -0
  4. package/dist/ResearchService.js +450 -0
  5. package/dist/ResearchService.js.map +1 -0
  6. package/dist/engine/DeepResearchEngine.d.ts +40 -0
  7. package/dist/engine/DeepResearchEngine.d.ts.map +1 -0
  8. package/dist/engine/DeepResearchEngine.js +557 -0
  9. package/dist/engine/DeepResearchEngine.js.map +1 -0
  10. package/dist/engine/DeepResearchTool.d.ts +27 -0
  11. package/dist/engine/DeepResearchTool.d.ts.map +1 -0
  12. package/dist/engine/DeepResearchTool.js +118 -0
  13. package/dist/engine/DeepResearchTool.js.map +1 -0
  14. package/dist/engine/FirecrawlClient.d.ts +49 -0
  15. package/dist/engine/FirecrawlClient.d.ts.map +1 -0
  16. package/dist/engine/FirecrawlClient.js +101 -0
  17. package/dist/engine/FirecrawlClient.js.map +1 -0
  18. package/dist/engine/ResearchBudgetTracker.d.ts +36 -0
  19. package/dist/engine/ResearchBudgetTracker.d.ts.map +1 -0
  20. package/dist/engine/ResearchBudgetTracker.js +68 -0
  21. package/dist/engine/ResearchBudgetTracker.js.map +1 -0
  22. package/dist/engine/index.d.ts +9 -0
  23. package/dist/engine/index.d.ts.map +1 -0
  24. package/dist/engine/index.js +34 -0
  25. package/dist/engine/index.js.map +1 -0
  26. package/dist/engine/prompts.d.ts +14 -0
  27. package/dist/engine/prompts.d.ts.map +1 -0
  28. package/dist/engine/prompts.js +67 -0
  29. package/dist/engine/prompts.js.map +1 -0
  30. package/dist/engine/types.d.ts +133 -0
  31. package/dist/engine/types.d.ts.map +1 -0
  32. package/dist/engine/types.js +18 -0
  33. package/dist/engine/types.js.map +1 -0
  34. package/dist/index.d.ts +53 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +161 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/tools/academic.d.ts +41 -0
  39. package/dist/tools/academic.d.ts.map +1 -0
  40. package/dist/tools/academic.js +42 -0
  41. package/dist/tools/academic.js.map +1 -0
  42. package/dist/tools/aggregate.d.ts +44 -0
  43. package/dist/tools/aggregate.d.ts.map +1 -0
  44. package/dist/tools/aggregate.js +39 -0
  45. package/dist/tools/aggregate.js.map +1 -0
  46. package/dist/tools/investigate.d.ts +44 -0
  47. package/dist/tools/investigate.d.ts.map +1 -0
  48. package/dist/tools/investigate.js +39 -0
  49. package/dist/tools/investigate.js.map +1 -0
  50. package/dist/tools/scrape.d.ts +36 -0
  51. package/dist/tools/scrape.d.ts.map +1 -0
  52. package/dist/tools/scrape.js +38 -0
  53. package/dist/tools/scrape.js.map +1 -0
  54. package/dist/tools/trending.d.ts +35 -0
  55. package/dist/tools/trending.d.ts.map +1 -0
  56. package/dist/tools/trending.js +37 -0
  57. package/dist/tools/trending.js.map +1 -0
  58. package/manifest.json +25 -0
  59. package/package.json +35 -0
@@ -0,0 +1,133 @@
1
+ /**
2
+ * @fileoverview Type definitions for the Deep Research Engine.
3
+ */
4
+ export type ResearchDepth = 'quick' | 'moderate' | 'deep';
5
+ export interface ResearchBudget {
6
+ maxSearchQueries: number;
7
+ maxPageExtractions: number;
8
+ maxLLMCalls: number;
9
+ maxTotalTimeMs: number;
10
+ maxOutputTokens: number;
11
+ }
12
+ export declare const BUDGET_DEFAULTS: Record<ResearchDepth, ResearchBudget>;
13
+ export declare const ITERATION_DEFAULTS: Record<ResearchDepth, number>;
14
+ export interface Finding {
15
+ claim: string;
16
+ evidence: string;
17
+ sources: string[];
18
+ confidence: number;
19
+ category: string;
20
+ }
21
+ export interface ExtractedContent {
22
+ url: string;
23
+ title: string;
24
+ content: string;
25
+ wordCount: number;
26
+ type: 'web' | 'pdf' | 'youtube' | 'wikipedia' | 'academic';
27
+ extractedAt: string;
28
+ }
29
+ export interface SearchResultItem {
30
+ title: string;
31
+ url: string;
32
+ snippet: string;
33
+ }
34
+ export type NodeStatus = 'pending' | 'searching' | 'extracting' | 'complete' | 'failed';
35
+ export interface ResearchNode {
36
+ id: string;
37
+ query: string;
38
+ parentId: string | null;
39
+ depth: number;
40
+ status: NodeStatus;
41
+ searchResults: SearchResultItem[];
42
+ extractedContent: ExtractedContent[];
43
+ findings: Finding[];
44
+ subQueries: string[];
45
+ children: string[];
46
+ confidenceScore: number;
47
+ gapAnalysis: string[];
48
+ }
49
+ export interface ResearchTree {
50
+ rootQuery: string;
51
+ rootId: string;
52
+ nodes: Record<string, ResearchNode>;
53
+ maxDepth: number;
54
+ iterations: number;
55
+ }
56
+ export interface SourceCitation {
57
+ url: string;
58
+ title: string;
59
+ relevance: number;
60
+ confidence: number;
61
+ citedInFindings: string[];
62
+ }
63
+ export type ResearchPhase = 'decomposing' | 'searching' | 'extracting' | 'analyzing_gaps' | 'synthesizing' | 'complete';
64
+ export interface ResearchProgressEvent {
65
+ phase: ResearchPhase;
66
+ iteration: number;
67
+ totalIterations: number;
68
+ currentQuery?: string;
69
+ findingsCount: number;
70
+ sourcesCount: number;
71
+ elapsedMs: number;
72
+ budget: {
73
+ searchesUsed: number;
74
+ extractionsUsed: number;
75
+ llmCallsUsed: number;
76
+ };
77
+ }
78
+ export interface DeepResearchInput {
79
+ query: string;
80
+ depth?: ResearchDepth;
81
+ maxIterations?: number;
82
+ sources?: Array<'web' | 'academic' | 'news' | 'social'>;
83
+ focusAreas?: string[];
84
+ budget?: Partial<ResearchBudget>;
85
+ }
86
+ export interface DeepResearchOutput {
87
+ executiveSummary: string;
88
+ detailedFindings: Finding[];
89
+ sources: SourceCitation[];
90
+ knowledgeGaps: string[];
91
+ researchTree: ResearchTree;
92
+ metadata: {
93
+ query: string;
94
+ depth: ResearchDepth;
95
+ totalSearches: number;
96
+ totalExtractions: number;
97
+ totalLLMCalls: number;
98
+ totalTimeMs: number;
99
+ iterations: number;
100
+ };
101
+ }
102
+ /** Async function that calls an LLM and returns the text response. */
103
+ export type LLMInvoker = (prompt: string) => Promise<string>;
104
+ export interface DeepResearchEngineConfig {
105
+ /** Cheap LLM for decomposition & gap analysis (e.g. gpt-4o-mini). */
106
+ smallInvoker: LLMInvoker;
107
+ /** Mid-tier LLM for final synthesis (e.g. gpt-4o). */
108
+ synthesisInvoker: LLMInvoker;
109
+ /** Optional web search service. Engine creates a minimal one if not provided. */
110
+ searchFn?: (query: string, maxResults?: number) => Promise<SearchResultItem[]>;
111
+ /** Optional content extraction function. */
112
+ extractFn?: (url: string) => Promise<{
113
+ title: string;
114
+ content: string;
115
+ wordCount: number;
116
+ }>;
117
+ /** Optional progress callback. */
118
+ onProgress?: (event: ResearchProgressEvent) => void;
119
+ /** Firecrawl API key for enhanced content extraction. */
120
+ firecrawlApiKey?: string;
121
+ /** Firecrawl configuration. */
122
+ firecrawl?: {
123
+ /** Use Firecrawl /scrape instead of raw fetch in iterate phase. Default: true when API key present. */
124
+ scrapeForIterate?: boolean;
125
+ /** Enable /crawl for deep research depth. Default: false. */
126
+ enableCrawl?: boolean;
127
+ /** Max pages per crawl job. Default: 10. */
128
+ maxCrawlPages?: number;
129
+ };
130
+ /** Optional reranker function — runs on findings before synthesis. */
131
+ rerankFindingsFn?: (query: string, findings: Finding[]) => Promise<Finding[]>;
132
+ }
133
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ // @ts-nocheck
3
+ /**
4
+ * @fileoverview Type definitions for the Deep Research Engine.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ITERATION_DEFAULTS = exports.BUDGET_DEFAULTS = void 0;
8
+ exports.BUDGET_DEFAULTS = {
9
+ quick: { maxSearchQueries: 10, maxPageExtractions: 5, maxLLMCalls: 3, maxTotalTimeMs: 30000, maxOutputTokens: 2000 },
10
+ moderate: { maxSearchQueries: 20, maxPageExtractions: 10, maxLLMCalls: 8, maxTotalTimeMs: 120000, maxOutputTokens: 8000 },
11
+ deep: { maxSearchQueries: 50, maxPageExtractions: 25, maxLLMCalls: 20, maxTotalTimeMs: 540000, maxOutputTokens: 20000 },
12
+ };
13
+ exports.ITERATION_DEFAULTS = {
14
+ quick: 1,
15
+ moderate: 3,
16
+ deep: 6,
17
+ };
18
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":";AAAA,cAAc;AACd;;GAEG;;;AAgBU,QAAA,eAAe,GAA0C;IACpE,KAAK,EAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAG,WAAW,EAAE,CAAC,EAAG,cAAc,EAAE,KAAM,EAAG,eAAe,EAAE,IAAK,EAAE;IAC5H,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAG,cAAc,EAAE,MAAO,EAAE,eAAe,EAAE,IAAK,EAAE;IAC5H,IAAI,EAAM,EAAE,gBAAgB,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,cAAc,EAAE,MAAO,EAAE,eAAe,EAAE,KAAM,EAAE;CAC9H,CAAC;AAEW,QAAA,kBAAkB,GAAkC;IAC/D,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @fileoverview Deep Research Extension for AgentOS.
3
+ *
4
+ * Provides 5 tools for multi-source investigation, academic search,
5
+ * content scraping, aggregate search, and trend discovery.
6
+ *
7
+ * @module @framers/agentos-ext-deep-research
8
+ */
9
+ export interface DeepResearchOptions {
10
+ serperApiKey?: string;
11
+ braveApiKey?: string;
12
+ serpApiKey?: string;
13
+ secrets?: Record<string, string>;
14
+ /** OpenAI-compatible API key for LLM calls (decomposition, gap analysis, synthesis). */
15
+ openaiApiKey?: string;
16
+ /** OpenRouter API key — used as fallback if openaiApiKey is not set. */
17
+ openrouterApiKey?: string;
18
+ /** Primary LLM provider: 'openai' | 'openrouter' | 'ollama'. Defaults to 'openai'. */
19
+ primaryProvider?: string;
20
+ /** Small model for decomposition/gap analysis (default: gpt-4o-mini). */
21
+ smallModel?: string;
22
+ /** Synthesis model (default: gpt-4o). */
23
+ synthesisModel?: string;
24
+ }
25
+ export interface ExtensionContext {
26
+ options?: Record<string, unknown>;
27
+ secrets?: Record<string, string>;
28
+ }
29
+ export interface ExtensionPack {
30
+ name: string;
31
+ version: string;
32
+ descriptors: Array<{
33
+ id: string;
34
+ kind: string;
35
+ priority?: number;
36
+ payload: unknown;
37
+ }>;
38
+ onActivate?: () => Promise<void>;
39
+ onDeactivate?: () => Promise<void>;
40
+ }
41
+ export declare function createExtensionPack(context: ExtensionContext): ExtensionPack;
42
+ export { ResearchService } from './ResearchService.js';
43
+ export type { ResearchConfig, InvestigationResult, AcademicResult, ScrapeResult, AggregateResult, TrendingResult, } from './ResearchService.js';
44
+ export { ResearchInvestigateTool } from './tools/investigate.js';
45
+ export { ResearchAcademicTool } from './tools/academic.js';
46
+ export { ResearchScrapeTool } from './tools/scrape.js';
47
+ export { ResearchAggregateTool } from './tools/aggregate.js';
48
+ export { ResearchTrendingTool } from './tools/trending.js';
49
+ export { DeepResearchEngine } from './engine/DeepResearchEngine.js';
50
+ export { DeepResearchTool } from './engine/DeepResearchTool.js';
51
+ export { ResearchBudgetTracker } from './engine/ResearchBudgetTracker.js';
52
+ export type { DeepResearchInput, DeepResearchOutput, ResearchDepth, ResearchBudget, LLMInvoker, DeepResearchEngineConfig, } from './engine/types.js';
53
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAiBH,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,wFAAwF;IACxF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sFAAsF;IACtF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA8ED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACtF,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAMD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,aAAa,CAqE5E;AAMD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,UAAU,EACV,wBAAwB,GACzB,MAAM,mBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ // @ts-nocheck
3
+ /**
4
+ * @fileoverview Deep Research Extension for AgentOS.
5
+ *
6
+ * Provides 5 tools for multi-source investigation, academic search,
7
+ * content scraping, aggregate search, and trend discovery.
8
+ *
9
+ * @module @framers/agentos-ext-deep-research
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ResearchBudgetTracker = exports.DeepResearchTool = exports.DeepResearchEngine = exports.ResearchTrendingTool = exports.ResearchAggregateTool = exports.ResearchScrapeTool = exports.ResearchAcademicTool = exports.ResearchInvestigateTool = exports.ResearchService = void 0;
13
+ exports.createExtensionPack = createExtensionPack;
14
+ const ResearchService_js_1 = require("./ResearchService.js");
15
+ const investigate_js_1 = require("./tools/investigate.js");
16
+ const academic_js_1 = require("./tools/academic.js");
17
+ const scrape_js_1 = require("./tools/scrape.js");
18
+ const aggregate_js_1 = require("./tools/aggregate.js");
19
+ const trending_js_1 = require("./tools/trending.js");
20
+ const DeepResearchEngine_js_1 = require("./engine/DeepResearchEngine.js");
21
+ const DeepResearchTool_js_1 = require("./engine/DeepResearchTool.js");
22
+ // ---------------------------------------------------------------------------
23
+ // Secret Resolution
24
+ // ---------------------------------------------------------------------------
25
+ function resolveConfig(opts, secrets) {
26
+ return {
27
+ serperApiKey: opts.serperApiKey ?? secrets['serper.apiKey'] ?? process.env.SERPER_API_KEY ?? '',
28
+ braveApiKey: opts.braveApiKey ?? secrets['brave.apiKey'] ?? process.env.BRAVE_API_KEY,
29
+ serpApiKey: opts.serpApiKey ?? secrets['serpapi.apiKey'] ?? process.env.SERPAPI_API_KEY,
30
+ };
31
+ }
32
+ function buildInvoker(cfg) {
33
+ return async (prompt) => {
34
+ const resp = await fetch(`${cfg.baseUrl}/chat/completions`, {
35
+ method: 'POST',
36
+ headers: {
37
+ 'Content-Type': 'application/json',
38
+ 'Authorization': `Bearer ${cfg.apiKey}`,
39
+ },
40
+ body: JSON.stringify({
41
+ model: cfg.model,
42
+ messages: [{ role: 'user', content: prompt }],
43
+ temperature: 0.1,
44
+ max_tokens: cfg.maxTokens,
45
+ }),
46
+ });
47
+ if (!resp.ok) {
48
+ throw new Error(`LLM API error ${resp.status}: ${await resp.text().catch(() => 'unknown')}`);
49
+ }
50
+ const data = await resp.json();
51
+ return data.choices?.[0]?.message?.content ?? '';
52
+ };
53
+ }
54
+ function resolveLLMConfig(opts, secrets) {
55
+ const provider = opts.primaryProvider ?? 'openai';
56
+ const apiKey = opts.openaiApiKey ??
57
+ secrets['openai.apiKey'] ??
58
+ opts.openrouterApiKey ??
59
+ secrets['openrouter.apiKey'] ??
60
+ process.env.OPENAI_API_KEY ??
61
+ process.env.OPENROUTER_API_KEY ??
62
+ '';
63
+ let baseUrl;
64
+ if (provider === 'openrouter' || (!opts.openaiApiKey && (opts.openrouterApiKey || process.env.OPENROUTER_API_KEY))) {
65
+ baseUrl = 'https://openrouter.ai/api/v1';
66
+ }
67
+ else if (provider === 'ollama') {
68
+ baseUrl = 'http://localhost:11434/v1';
69
+ }
70
+ else {
71
+ baseUrl = 'https://api.openai.com/v1';
72
+ }
73
+ const smallModel = opts.smallModel ?? 'gpt-4o-mini';
74
+ const synthesisModel = opts.synthesisModel ?? 'gpt-4o';
75
+ return { apiKey, baseUrl, smallModel, synthesisModel };
76
+ }
77
+ // ---------------------------------------------------------------------------
78
+ // Factory
79
+ // ---------------------------------------------------------------------------
80
+ function createExtensionPack(context) {
81
+ const opts = (context.options ?? {});
82
+ const secrets = opts.secrets ?? context.secrets ?? {};
83
+ const config = resolveConfig(opts, secrets);
84
+ const service = new ResearchService_js_1.ResearchService(config);
85
+ const investigateTool = new investigate_js_1.ResearchInvestigateTool(service);
86
+ const academicTool = new academic_js_1.ResearchAcademicTool(service);
87
+ const scrapeTool = new scrape_js_1.ResearchScrapeTool(service);
88
+ const aggregateTool = new aggregate_js_1.ResearchAggregateTool(service);
89
+ const trendingTool = new trending_js_1.ResearchTrendingTool(service);
90
+ // ── Deep Research Engine ──
91
+ const llmConfig = resolveLLMConfig(opts, secrets);
92
+ const hasLLMKey = llmConfig.apiKey.length > 0;
93
+ const smallInvoker = hasLLMKey
94
+ ? buildInvoker({ apiKey: llmConfig.apiKey, baseUrl: llmConfig.baseUrl, model: llmConfig.smallModel, maxTokens: 1000 })
95
+ : async () => '[]'; // No-op fallback — engine will use raw query
96
+ const synthesisInvoker = hasLLMKey
97
+ ? buildInvoker({ apiKey: llmConfig.apiKey, baseUrl: llmConfig.baseUrl, model: llmConfig.synthesisModel, maxTokens: 4000 })
98
+ : async () => ''; // No-op fallback — engine will use fallbackSynthesis
99
+ // Wire search function to use the existing SearchProviderService if web-search extension is loaded,
100
+ // otherwise fall back to engine's built-in DDG scraping
101
+ const searchFn = async (query, maxResults) => {
102
+ try {
103
+ const results = await service.aggregateSearch(query, ['serper', 'brave', 'serpapi'], maxResults ?? 10);
104
+ return results.flatMap((r) => r.results.map((item) => ({ title: item.title, url: item.url, snippet: item.snippet })));
105
+ }
106
+ catch {
107
+ return []; // Engine will fall back to DDG scraping
108
+ }
109
+ };
110
+ const engine = new DeepResearchEngine_js_1.DeepResearchEngine({
111
+ smallInvoker,
112
+ synthesisInvoker,
113
+ searchFn: config.serperApiKey ? searchFn : undefined, // Only use searchFn if we have API keys
114
+ onProgress: (event) => {
115
+ if (process.env.DEBUG) {
116
+ console.log(`[DeepResearch] ${event.phase} — iteration ${event.iteration}/${event.totalIterations}, findings: ${event.findingsCount}, sources: ${event.sourcesCount}`);
117
+ }
118
+ },
119
+ });
120
+ const deepResearchTool = new DeepResearchTool_js_1.DeepResearchTool(engine);
121
+ return {
122
+ name: '@framers/agentos-ext-deep-research',
123
+ version: '0.2.0',
124
+ descriptors: [
125
+ { id: 'researchInvestigate', kind: 'tool', priority: 50, payload: investigateTool },
126
+ { id: 'researchAcademic', kind: 'tool', priority: 50, payload: academicTool },
127
+ { id: 'researchScrape', kind: 'tool', priority: 50, payload: scrapeTool },
128
+ { id: 'researchAggregate', kind: 'tool', priority: 50, payload: aggregateTool },
129
+ { id: 'researchTrending', kind: 'tool', priority: 50, payload: trendingTool },
130
+ { id: 'deepResearch', kind: 'tool', priority: 90, payload: deepResearchTool },
131
+ ],
132
+ onActivate: async () => {
133
+ await service.initialize();
134
+ },
135
+ onDeactivate: async () => {
136
+ await service.shutdown();
137
+ },
138
+ };
139
+ }
140
+ // ---------------------------------------------------------------------------
141
+ // Public exports
142
+ // ---------------------------------------------------------------------------
143
+ var ResearchService_js_2 = require("./ResearchService.js");
144
+ Object.defineProperty(exports, "ResearchService", { enumerable: true, get: function () { return ResearchService_js_2.ResearchService; } });
145
+ var investigate_js_2 = require("./tools/investigate.js");
146
+ Object.defineProperty(exports, "ResearchInvestigateTool", { enumerable: true, get: function () { return investigate_js_2.ResearchInvestigateTool; } });
147
+ var academic_js_2 = require("./tools/academic.js");
148
+ Object.defineProperty(exports, "ResearchAcademicTool", { enumerable: true, get: function () { return academic_js_2.ResearchAcademicTool; } });
149
+ var scrape_js_2 = require("./tools/scrape.js");
150
+ Object.defineProperty(exports, "ResearchScrapeTool", { enumerable: true, get: function () { return scrape_js_2.ResearchScrapeTool; } });
151
+ var aggregate_js_2 = require("./tools/aggregate.js");
152
+ Object.defineProperty(exports, "ResearchAggregateTool", { enumerable: true, get: function () { return aggregate_js_2.ResearchAggregateTool; } });
153
+ var trending_js_2 = require("./tools/trending.js");
154
+ Object.defineProperty(exports, "ResearchTrendingTool", { enumerable: true, get: function () { return trending_js_2.ResearchTrendingTool; } });
155
+ var DeepResearchEngine_js_2 = require("./engine/DeepResearchEngine.js");
156
+ Object.defineProperty(exports, "DeepResearchEngine", { enumerable: true, get: function () { return DeepResearchEngine_js_2.DeepResearchEngine; } });
157
+ var DeepResearchTool_js_2 = require("./engine/DeepResearchTool.js");
158
+ Object.defineProperty(exports, "DeepResearchTool", { enumerable: true, get: function () { return DeepResearchTool_js_2.DeepResearchTool; } });
159
+ var ResearchBudgetTracker_js_1 = require("./engine/ResearchBudgetTracker.js");
160
+ Object.defineProperty(exports, "ResearchBudgetTracker", { enumerable: true, get: function () { return ResearchBudgetTracker_js_1.ResearchBudgetTracker; } });
161
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { ResearchService } from '../ResearchService.js';
2
+ export declare class ResearchAcademicTool {
3
+ private service;
4
+ readonly id = "researchAcademic";
5
+ readonly name = "researchAcademic";
6
+ readonly displayName = "Academic Paper Search";
7
+ readonly description = "Search academic papers on arXiv, Google Scholar, and Semantic Scholar.";
8
+ readonly category = "research";
9
+ readonly version = "0.1.0";
10
+ readonly hasSideEffects = false;
11
+ readonly inputSchema: {
12
+ type: "object";
13
+ properties: {
14
+ query: {
15
+ type: string;
16
+ description: string;
17
+ };
18
+ source: {
19
+ type: string;
20
+ enum: string[];
21
+ description: string;
22
+ };
23
+ maxResults: {
24
+ type: string;
25
+ description: string;
26
+ };
27
+ };
28
+ required: string[];
29
+ };
30
+ constructor(service: ResearchService);
31
+ execute(args: {
32
+ query: string;
33
+ source?: 'arxiv' | 'scholar' | 'semantic';
34
+ maxResults?: number;
35
+ }): Promise<{
36
+ success: boolean;
37
+ data?: any;
38
+ error?: string;
39
+ }>;
40
+ }
41
+ //# sourceMappingURL=academic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"academic.d.ts","sourceRoot":"","sources":["../../src/tools/academic.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,qBAAa,oBAAoB;IAuBnB,OAAO,CAAC,OAAO;IAtB3B,QAAQ,CAAC,EAAE,sBAAsB;IACjC,QAAQ,CAAC,IAAI,sBAAsB;IACnC,QAAQ,CAAC,WAAW,2BAA2B;IAC/C,QAAQ,CAAC,WAAW,4EAA4E;IAChG,QAAQ,CAAC,QAAQ,cAAc;IAC/B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,SAAS;IAEhC,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;MAYlB;gBAEkB,OAAO,EAAE,eAAe;IAEtC,OAAO,CAAC,IAAI,EAAE;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;QAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAW9D"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResearchAcademicTool = void 0;
4
+ class ResearchAcademicTool {
5
+ constructor(service) {
6
+ this.service = service;
7
+ this.id = 'researchAcademic';
8
+ this.name = 'researchAcademic';
9
+ this.displayName = 'Academic Paper Search';
10
+ this.description = 'Search academic papers on arXiv, Google Scholar, and Semantic Scholar.';
11
+ this.category = 'research';
12
+ this.version = '0.1.0';
13
+ this.hasSideEffects = false;
14
+ this.inputSchema = {
15
+ type: 'object',
16
+ properties: {
17
+ query: { type: 'string', description: 'Academic search query (keywords, paper title, author name)' },
18
+ source: {
19
+ type: 'string',
20
+ enum: ['arxiv', 'scholar', 'semantic'],
21
+ description: 'Academic source to search (default: arxiv)',
22
+ },
23
+ maxResults: { type: 'number', description: 'Maximum number of papers to return (default 10)' },
24
+ },
25
+ required: ['query'],
26
+ };
27
+ }
28
+ async execute(args) {
29
+ try {
30
+ const results = await this.service.searchAcademic(args.query, {
31
+ source: args.source,
32
+ maxResults: args.maxResults,
33
+ });
34
+ return { success: true, data: results };
35
+ }
36
+ catch (err) {
37
+ return { success: false, error: err.message };
38
+ }
39
+ }
40
+ }
41
+ exports.ResearchAcademicTool = ResearchAcademicTool;
42
+ //# sourceMappingURL=academic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"academic.js","sourceRoot":"","sources":["../../src/tools/academic.ts"],"names":[],"mappings":";;;AAGA,MAAa,oBAAoB;IAuB/B,YAAoB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;QAtBnC,OAAE,GAAG,kBAAkB,CAAC;QACxB,SAAI,GAAG,kBAAkB,CAAC;QAC1B,gBAAW,GAAG,uBAAuB,CAAC;QACtC,gBAAW,GAAG,wEAAwE,CAAC;QACvF,aAAQ,GAAG,UAAU,CAAC;QACtB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,KAAK,CAAC;QAEvB,gBAAW,GAAG;YACrB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4DAA4D,EAAE;gBACpG,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC;oBACtC,WAAW,EAAE,4CAA4C;iBAC1D;gBACD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iDAAiD,EAAE;aAC/F;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB,CAAC;IAE6C,CAAC;IAEhD,KAAK,CAAC,OAAO,CAAC,IAIb;QACC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE;gBAC5D,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF;AAxCD,oDAwCC"}
@@ -0,0 +1,44 @@
1
+ import type { ResearchService } from '../ResearchService.js';
2
+ export declare class ResearchAggregateTool {
3
+ private service;
4
+ readonly id = "researchAggregate";
5
+ readonly name = "researchAggregate";
6
+ readonly displayName = "Aggregate Search";
7
+ readonly description = "Unified search across multiple engines (Serper, Brave, SerpAPI) with merged results.";
8
+ readonly category = "research";
9
+ readonly version = "0.1.0";
10
+ readonly hasSideEffects = false;
11
+ readonly inputSchema: {
12
+ type: "object";
13
+ properties: {
14
+ query: {
15
+ type: string;
16
+ description: string;
17
+ };
18
+ engines: {
19
+ type: string;
20
+ items: {
21
+ type: string;
22
+ enum: string[];
23
+ };
24
+ description: string;
25
+ };
26
+ maxResults: {
27
+ type: string;
28
+ description: string;
29
+ };
30
+ };
31
+ required: string[];
32
+ };
33
+ constructor(service: ResearchService);
34
+ execute(args: {
35
+ query: string;
36
+ engines?: string[];
37
+ maxResults?: number;
38
+ }): Promise<{
39
+ success: boolean;
40
+ data?: any;
41
+ error?: string;
42
+ }>;
43
+ }
44
+ //# sourceMappingURL=aggregate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../src/tools/aggregate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,qBAAa,qBAAqB;IAuBpB,OAAO,CAAC,OAAO;IAtB3B,QAAQ,CAAC,EAAE,uBAAuB;IAClC,QAAQ,CAAC,IAAI,uBAAuB;IACpC,QAAQ,CAAC,WAAW,sBAAsB;IAC1C,QAAQ,CAAC,WAAW,0FAA0F;IAC9G,QAAQ,CAAC,QAAQ,cAAc;IAC/B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,SAAS;IAEhC,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;MAYlB;gBAEkB,OAAO,EAAE,eAAe;IAEtC,OAAO,CAAC,IAAI,EAAE;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAY9D"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResearchAggregateTool = void 0;
4
+ class ResearchAggregateTool {
5
+ constructor(service) {
6
+ this.service = service;
7
+ this.id = 'researchAggregate';
8
+ this.name = 'researchAggregate';
9
+ this.displayName = 'Aggregate Search';
10
+ this.description = 'Unified search across multiple engines (Serper, Brave, SerpAPI) with merged results.';
11
+ this.category = 'research';
12
+ this.version = '0.1.0';
13
+ this.hasSideEffects = false;
14
+ this.inputSchema = {
15
+ type: 'object',
16
+ properties: {
17
+ query: { type: 'string', description: 'Search query' },
18
+ engines: {
19
+ type: 'array',
20
+ items: { type: 'string', enum: ['serper', 'brave', 'serpapi'] },
21
+ description: 'Search engines to query (default: serper)',
22
+ },
23
+ maxResults: { type: 'number', description: 'Maximum results per engine (default 10)' },
24
+ },
25
+ required: ['query'],
26
+ };
27
+ }
28
+ async execute(args) {
29
+ try {
30
+ const results = await this.service.aggregateSearch(args.query, args.engines ?? ['serper'], args.maxResults ?? 10);
31
+ return { success: true, data: results };
32
+ }
33
+ catch (err) {
34
+ return { success: false, error: err.message };
35
+ }
36
+ }
37
+ }
38
+ exports.ResearchAggregateTool = ResearchAggregateTool;
39
+ //# sourceMappingURL=aggregate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../src/tools/aggregate.ts"],"names":[],"mappings":";;;AAGA,MAAa,qBAAqB;IAuBhC,YAAoB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;QAtBnC,OAAE,GAAG,mBAAmB,CAAC;QACzB,SAAI,GAAG,mBAAmB,CAAC;QAC3B,gBAAW,GAAG,kBAAkB,CAAC;QACjC,gBAAW,GAAG,sFAAsF,CAAC;QACrG,aAAQ,GAAG,UAAU,CAAC;QACtB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,KAAK,CAAC;QAEvB,gBAAW,GAAG;YACrB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;gBACtD,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE;oBAC/D,WAAW,EAAE,2CAA2C;iBACzD;gBACD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;aACvF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB,CAAC;IAE6C,CAAC;IAEhD,KAAK,CAAC,OAAO,CAAC,IAIb;QACC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAChD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,EAC1B,IAAI,CAAC,UAAU,IAAI,EAAE,CACtB,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF;AAzCD,sDAyCC"}
@@ -0,0 +1,44 @@
1
+ import type { ResearchService } from '../ResearchService.js';
2
+ export declare class ResearchInvestigateTool {
3
+ private service;
4
+ readonly id = "researchInvestigate";
5
+ readonly name = "researchInvestigate";
6
+ readonly displayName = "Multi-Source Investigation";
7
+ readonly description = "Conduct a multi-source investigation with claim verification and cross-referencing across web, academic, social, and news sources.";
8
+ readonly category = "research";
9
+ readonly version = "0.1.0";
10
+ readonly hasSideEffects = false;
11
+ readonly inputSchema: {
12
+ type: "object";
13
+ properties: {
14
+ query: {
15
+ type: string;
16
+ description: string;
17
+ };
18
+ sources: {
19
+ type: string;
20
+ items: {
21
+ type: string;
22
+ enum: string[];
23
+ };
24
+ description: string;
25
+ };
26
+ maxResults: {
27
+ type: string;
28
+ description: string;
29
+ };
30
+ };
31
+ required: string[];
32
+ };
33
+ constructor(service: ResearchService);
34
+ execute(args: {
35
+ query: string;
36
+ sources?: string[];
37
+ maxResults?: number;
38
+ }): Promise<{
39
+ success: boolean;
40
+ data?: any;
41
+ error?: string;
42
+ }>;
43
+ }
44
+ //# sourceMappingURL=investigate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"investigate.d.ts","sourceRoot":"","sources":["../../src/tools/investigate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,qBAAa,uBAAuB;IAuBtB,OAAO,CAAC,OAAO;IAtB3B,QAAQ,CAAC,EAAE,yBAAyB;IACpC,QAAQ,CAAC,IAAI,yBAAyB;IACtC,QAAQ,CAAC,WAAW,gCAAgC;IACpD,QAAQ,CAAC,WAAW,wIAAwI;IAC5J,QAAQ,CAAC,QAAQ,cAAc;IAC/B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,SAAS;IAEhC,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;MAYlB;gBAEkB,OAAO,EAAE,eAAe;IAEtC,OAAO,CAAC,IAAI,EAAE;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAY9D"}