@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,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResearchInvestigateTool = void 0;
4
+ class ResearchInvestigateTool {
5
+ constructor(service) {
6
+ this.service = service;
7
+ this.id = 'researchInvestigate';
8
+ this.name = 'researchInvestigate';
9
+ this.displayName = 'Multi-Source Investigation';
10
+ this.description = 'Conduct a multi-source investigation with claim verification and cross-referencing across web, academic, social, and news sources.';
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: 'The research query or topic to investigate' },
18
+ sources: {
19
+ type: 'array',
20
+ items: { type: 'string', enum: ['web', 'academic', 'social', 'news'] },
21
+ description: 'Sources to search across (default: web, academic, news)',
22
+ },
23
+ maxResults: { type: 'number', description: 'Maximum results per source (default 10)' },
24
+ },
25
+ required: ['query'],
26
+ };
27
+ }
28
+ async execute(args) {
29
+ try {
30
+ const result = await this.service.investigate(args.query, args.sources ?? ['web', 'academic', 'news'], args.maxResults ?? 10);
31
+ return { success: true, data: result };
32
+ }
33
+ catch (err) {
34
+ return { success: false, error: err.message };
35
+ }
36
+ }
37
+ }
38
+ exports.ResearchInvestigateTool = ResearchInvestigateTool;
39
+ //# sourceMappingURL=investigate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"investigate.js","sourceRoot":"","sources":["../../src/tools/investigate.ts"],"names":[],"mappings":";;;AAGA,MAAa,uBAAuB;IAuBlC,YAAoB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;QAtBnC,OAAE,GAAG,qBAAqB,CAAC;QAC3B,SAAI,GAAG,qBAAqB,CAAC;QAC7B,gBAAW,GAAG,4BAA4B,CAAC;QAC3C,gBAAW,GAAG,oIAAoI,CAAC;QACnJ,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,4CAA4C,EAAE;gBACpF,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;oBACtE,WAAW,EAAE,yDAAyD;iBACvE;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,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAC3C,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAC3C,IAAI,CAAC,UAAU,IAAI,EAAE,CACtB,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,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,0DAyCC"}
@@ -0,0 +1,36 @@
1
+ import type { ResearchService } from '../ResearchService.js';
2
+ export declare class ResearchScrapeTool {
3
+ private service;
4
+ readonly id = "researchScrape";
5
+ readonly name = "researchScrape";
6
+ readonly displayName = "Content Scraper";
7
+ readonly description = "Platform-specific content extraction from YouTube, Wikipedia, blogs, and generic web pages.";
8
+ readonly category = "research";
9
+ readonly version = "0.1.0";
10
+ readonly hasSideEffects = false;
11
+ readonly inputSchema: {
12
+ type: "object";
13
+ properties: {
14
+ url: {
15
+ type: string;
16
+ description: string;
17
+ };
18
+ type: {
19
+ type: string;
20
+ enum: string[];
21
+ description: string;
22
+ };
23
+ };
24
+ required: string[];
25
+ };
26
+ constructor(service: ResearchService);
27
+ execute(args: {
28
+ url: string;
29
+ type?: 'youtube' | 'wikipedia' | 'blog' | 'generic';
30
+ }): Promise<{
31
+ success: boolean;
32
+ data?: any;
33
+ error?: string;
34
+ }>;
35
+ }
36
+ //# sourceMappingURL=scrape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrape.d.ts","sourceRoot":"","sources":["../../src/tools/scrape.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,qBAAa,kBAAkB;IAsBjB,OAAO,CAAC,OAAO;IArB3B,QAAQ,CAAC,EAAE,oBAAoB;IAC/B,QAAQ,CAAC,IAAI,oBAAoB;IACjC,QAAQ,CAAC,WAAW,qBAAqB;IACzC,QAAQ,CAAC,WAAW,iGAAiG;IACrH,QAAQ,CAAC,QAAQ,cAAc;IAC/B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,SAAS;IAEhC,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;MAWlB;gBAEkB,OAAO,EAAE,eAAe;IAEtC,OAAO,CAAC,IAAI,EAAE;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;KACrD,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAQ9D"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResearchScrapeTool = void 0;
4
+ class ResearchScrapeTool {
5
+ constructor(service) {
6
+ this.service = service;
7
+ this.id = 'researchScrape';
8
+ this.name = 'researchScrape';
9
+ this.displayName = 'Content Scraper';
10
+ this.description = 'Platform-specific content extraction from YouTube, Wikipedia, blogs, and generic web pages.';
11
+ this.category = 'research';
12
+ this.version = '0.1.0';
13
+ this.hasSideEffects = false;
14
+ this.inputSchema = {
15
+ type: 'object',
16
+ properties: {
17
+ url: { type: 'string', description: 'URL to scrape content from' },
18
+ type: {
19
+ type: 'string',
20
+ enum: ['youtube', 'wikipedia', 'blog', 'generic'],
21
+ description: 'Content type for platform-specific extraction (default: generic)',
22
+ },
23
+ },
24
+ required: ['url'],
25
+ };
26
+ }
27
+ async execute(args) {
28
+ try {
29
+ const result = await this.service.scrapeContent(args.url, args.type ?? 'generic');
30
+ return { success: true, data: result };
31
+ }
32
+ catch (err) {
33
+ return { success: false, error: err.message };
34
+ }
35
+ }
36
+ }
37
+ exports.ResearchScrapeTool = ResearchScrapeTool;
38
+ //# sourceMappingURL=scrape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrape.js","sourceRoot":"","sources":["../../src/tools/scrape.ts"],"names":[],"mappings":";;;AAGA,MAAa,kBAAkB;IAsB7B,YAAoB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;QArBnC,OAAE,GAAG,gBAAgB,CAAC;QACtB,SAAI,GAAG,gBAAgB,CAAC;QACxB,gBAAW,GAAG,iBAAiB,CAAC;QAChC,gBAAW,GAAG,6FAA6F,CAAC;QAC5G,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,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;gBAClE,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC;oBACjD,WAAW,EAAE,kEAAkE;iBAChF;aACF;YACD,QAAQ,EAAE,CAAC,KAAK,CAAC;SAClB,CAAC;IAE6C,CAAC;IAEhD,KAAK,CAAC,OAAO,CAAC,IAGb;QACC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;YAClF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,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;AAnCD,gDAmCC"}
@@ -0,0 +1,35 @@
1
+ import type { ResearchService } from '../ResearchService.js';
2
+ export declare class ResearchTrendingTool {
3
+ private service;
4
+ readonly id = "researchTrending";
5
+ readonly name = "researchTrending";
6
+ readonly displayName = "Trend Discovery";
7
+ readonly description = "Discover trending topics and content across platforms (Twitter, Reddit, YouTube, HackerNews).";
8
+ readonly category = "research";
9
+ readonly version = "0.1.0";
10
+ readonly hasSideEffects = false;
11
+ readonly inputSchema: {
12
+ type: "object";
13
+ properties: {
14
+ platform: {
15
+ type: string;
16
+ enum: string[];
17
+ description: string;
18
+ };
19
+ category: {
20
+ type: string;
21
+ description: string;
22
+ };
23
+ };
24
+ };
25
+ constructor(service: ResearchService);
26
+ execute(args: {
27
+ platform?: string;
28
+ category?: string;
29
+ }): Promise<{
30
+ success: boolean;
31
+ data?: any;
32
+ error?: string;
33
+ }>;
34
+ }
35
+ //# sourceMappingURL=trending.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trending.d.ts","sourceRoot":"","sources":["../../src/tools/trending.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,qBAAa,oBAAoB;IAqBnB,OAAO,CAAC,OAAO;IApB3B,QAAQ,CAAC,EAAE,sBAAsB;IACjC,QAAQ,CAAC,IAAI,sBAAsB;IACnC,QAAQ,CAAC,WAAW,qBAAqB;IACzC,QAAQ,CAAC,WAAW,mGAAmG;IACvH,QAAQ,CAAC,QAAQ,cAAc;IAC/B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,SAAS;IAEhC,QAAQ,CAAC,WAAW;;;;;;;;;;;;;MAUlB;gBAEkB,OAAO,EAAE,eAAe;IAEtC,OAAO,CAAC,IAAI,EAAE;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,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,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResearchTrendingTool = void 0;
4
+ class ResearchTrendingTool {
5
+ constructor(service) {
6
+ this.service = service;
7
+ this.id = 'researchTrending';
8
+ this.name = 'researchTrending';
9
+ this.displayName = 'Trend Discovery';
10
+ this.description = 'Discover trending topics and content across platforms (Twitter, Reddit, YouTube, HackerNews).';
11
+ this.category = 'research';
12
+ this.version = '0.1.0';
13
+ this.hasSideEffects = false;
14
+ this.inputSchema = {
15
+ type: 'object',
16
+ properties: {
17
+ platform: {
18
+ type: 'string',
19
+ enum: ['twitter', 'reddit', 'youtube', 'hackernews'],
20
+ description: 'Platform to discover trends from (default: hackernews)',
21
+ },
22
+ category: { type: 'string', description: 'Category or subreddit to filter trends (optional)' },
23
+ },
24
+ };
25
+ }
26
+ async execute(args) {
27
+ try {
28
+ const result = await this.service.discoverTrending(args.platform ?? 'hackernews', args.category);
29
+ return { success: true, data: result };
30
+ }
31
+ catch (err) {
32
+ return { success: false, error: err.message };
33
+ }
34
+ }
35
+ }
36
+ exports.ResearchTrendingTool = ResearchTrendingTool;
37
+ //# sourceMappingURL=trending.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trending.js","sourceRoot":"","sources":["../../src/tools/trending.ts"],"names":[],"mappings":";;;AAGA,MAAa,oBAAoB;IAqB/B,YAAoB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;QApBnC,OAAE,GAAG,kBAAkB,CAAC;QACxB,SAAI,GAAG,kBAAkB,CAAC;QAC1B,gBAAW,GAAG,iBAAiB,CAAC;QAChC,gBAAW,GAAG,+FAA+F,CAAC;QAC9G,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,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC;oBACpD,WAAW,EAAE,wDAAwD;iBACtE;gBACD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mDAAmD,EAAE;aAC/F;SACF,CAAC;IAE6C,CAAC;IAEhD,KAAK,CAAC,OAAO,CAAC,IAGb;QACC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAChD,IAAI,CAAC,QAAQ,IAAI,YAAY,EAC7B,IAAI,CAAC,QAAQ,CACd,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,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;AArCD,oDAqCC"}
package/manifest.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://agentos.sh/schemas/extension-manifest-v1.json",
3
+ "id": "com.framers.research.deep-research",
4
+ "name": "Deep Research Extension",
5
+ "version": "0.1.0",
6
+ "description": "Multi-source investigation engine with academic search, content scraping, aggregate search across engines, and trend discovery across platforms.",
7
+ "categories": ["research", "investigation"],
8
+ "sdk": "axios",
9
+ "extensions": [
10
+ { "kind": "tool", "id": "researchInvestigate", "displayName": "Multi-Source Investigation" },
11
+ { "kind": "tool", "id": "researchAcademic", "displayName": "Academic Paper Search" },
12
+ { "kind": "tool", "id": "researchScrape", "displayName": "Content Scraper" },
13
+ { "kind": "tool", "id": "researchAggregate", "displayName": "Aggregate Search" },
14
+ { "kind": "tool", "id": "researchTrending", "displayName": "Trend Discovery" }
15
+ ],
16
+ "requiredSecrets": ["serper.apiKey"],
17
+ "optionalSecrets": ["brave.apiKey", "serpapi.apiKey"],
18
+ "features": [
19
+ "Multi-source investigation with claim verification and cross-referencing",
20
+ "Academic paper search across arXiv, Google Scholar, and Semantic Scholar",
21
+ "Platform-specific content extraction (YouTube transcripts, Wikipedia, blogs)",
22
+ "Unified search across multiple engines (Serper, Brave, SerpAPI)",
23
+ "Trend discovery across Twitter, Reddit, YouTube, and HackerNews"
24
+ ]
25
+ }
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@framers/agentos-ext-deep-research",
3
+ "version": "0.1.0",
4
+ "description": "Deep research extension for AgentOS — multi-source investigation, academic search, content scraping, aggregate search, and trend discovery.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "manifest.json"
10
+ ],
11
+ "peerDependencies": {
12
+ "@framers/agentos": "^0.5.2"
13
+ },
14
+ "dependencies": {
15
+ "axios": "^1.7.0"
16
+ },
17
+ "devDependencies": {
18
+ "@framers/agentos": "^0.6.6",
19
+ "@types/node": "^20.0.0",
20
+ "typescript": "^5.0.0",
21
+ "vitest": "^1.0.0"
22
+ },
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "https://github.com/framersai/agentos-extensions",
26
+ "directory": "registry/curated/research/deep-research"
27
+ },
28
+ "scripts": {
29
+ "build": "tsc",
30
+ "dev": "tsc --watch",
31
+ "test": "vitest run",
32
+ "test:watch": "vitest watch",
33
+ "clean": "rm -rf dist"
34
+ }
35
+ }