@decodo/mcp-server 1.1.0 → 1.2.1

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 (39) hide show
  1. package/README.md +91 -51
  2. package/build/index.js +5 -6
  3. package/build/index.js.map +1 -1
  4. package/build/server/sapi-base-server.js +1 -1
  5. package/build/utils/progress.js +285 -0
  6. package/build/utils/progress.js.map +1 -0
  7. package/package.json +22 -9
  8. package/build/sapi-mcp-server.js +0 -40
  9. package/build/sapi-mcp-server.js.map +0 -1
  10. package/build/tools/amazon-search-parsed/amazon-search-parsed-tool.js +0 -53
  11. package/build/tools/amazon-search-parsed/amazon-search-parsed-tool.js.map +0 -1
  12. package/build/tools/amazon-search-parsed/index.js +0 -18
  13. package/build/tools/amazon-search-parsed/index.js.map +0 -1
  14. package/build/tools/amazon-search-parsed-tool.js +0 -52
  15. package/build/tools/amazon-search-parsed-tool.js.map +0 -1
  16. package/build/tools/chatgpt-tool.js +0 -43
  17. package/build/tools/chatgpt-tool.js.map +0 -1
  18. package/build/tools/constants.js +0 -23
  19. package/build/tools/constants.js.map +0 -1
  20. package/build/tools/google-search-parsed/google-search-parsed-tool.js +0 -61
  21. package/build/tools/google-search-parsed/google-search-parsed-tool.js.map +0 -1
  22. package/build/tools/google-search-parsed/index.js +0 -18
  23. package/build/tools/google-search-parsed/index.js.map +0 -1
  24. package/build/tools/google-search-parsed-tool.js +0 -60
  25. package/build/tools/google-search-parsed-tool.js.map +0 -1
  26. package/build/tools/perplexity-tool.js +0 -42
  27. package/build/tools/perplexity-tool.js.map +0 -1
  28. package/build/tools/reddit-post-tool.js +0 -40
  29. package/build/tools/reddit-post-tool.js.map +0 -1
  30. package/build/tools/reddit-subreddit-tool.js +0 -40
  31. package/build/tools/reddit-subreddit-tool.js.map +0 -1
  32. package/build/tools/scrape-as-markdown-tool.js +0 -78
  33. package/build/tools/scrape-as-markdown-tool.js.map +0 -1
  34. package/build/tools/screenshot-tool.js +0 -44
  35. package/build/tools/screenshot-tool.js.map +0 -1
  36. package/build/tools/youtube-video/index.js +0 -18
  37. package/build/tools/youtube-video/index.js.map +0 -1
  38. package/build/tools/youtube-video/youtube-video-tool.js +0 -45
  39. package/build/tools/youtube-video/youtube-video-tool.js.map +0 -1
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ScraperAPIMCPServer = void 0;
4
- const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
5
- const scraper_api_client_1 = require("./clients/scraper-api-client");
6
- const tools_1 = require("./tools");
7
- class ScraperAPIMCPServer {
8
- constructor({ sapiUsername, sapiPassword }) {
9
- this.server = new mcp_js_1.McpServer({
10
- name: 'decodo',
11
- version: '0.1.0',
12
- capabilities: {
13
- logging: {},
14
- resources: {},
15
- tools: {},
16
- },
17
- });
18
- const auth = Buffer.from(`${sapiUsername}:${sapiPassword}`).toString('base64');
19
- this.sapiClient = new scraper_api_client_1.ScraperApiClient({ auth });
20
- this.registerTools();
21
- this.registerResources();
22
- }
23
- connect(transport) {
24
- this.server.connect(transport);
25
- }
26
- registerTools() {
27
- // scrape
28
- tools_1.ScrapeAsMarkdownTool.register({ server: this.server, sapiClient: this.sapiClient });
29
- // targets
30
- tools_1.GoogleSearchParsedTool.register({ server: this.server, sapiClient: this.sapiClient });
31
- tools_1.AmazonSearchParsedTool.register({ server: this.server, sapiClient: this.sapiClient });
32
- tools_1.RedditPostTool.register({ server: this.server, sapiClient: this.sapiClient });
33
- tools_1.RedditSubredditTool.register({ server: this.server, sapiClient: this.sapiClient });
34
- }
35
- registerResources() {
36
- // todo: expose info about all targets available
37
- }
38
- }
39
- exports.ScraperAPIMCPServer = ScraperAPIMCPServer;
40
- //# sourceMappingURL=sapi-mcp-server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sapi-mcp-server.js","sourceRoot":"","sources":["../src/sapi-mcp-server.ts"],"names":[],"mappings":";;;AAAA,oEAAoE;AAEpE,qEAAgE;AAChE,mCAMiB;AAEjB,MAAa,mBAAmB;IAK9B,YAAY,EAAE,YAAY,EAAE,YAAY,EAAkD;QACxF,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAS,CAAC;YAC1B,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE;gBACZ,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,EAAE;gBACb,KAAK,EAAE,EAAE;aACV;SACF,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,IAAI,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE/E,IAAI,CAAC,UAAU,GAAG,IAAI,qCAAgB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjD,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,SAA+B;QACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,aAAa;QACX,SAAS;QACT,4BAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAEpF,UAAU;QACV,8BAAsB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACtF,8BAAsB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACtF,sBAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9E,2BAAmB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,iBAAiB;QACf,gDAAgD;IAClD,CAAC;CACF;AA1CD,kDA0CC"}
@@ -1,53 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.AmazonSearchParsedTool = void 0;
7
- const zod_1 = __importDefault(require("zod"));
8
- const constants_1 = require("../../constants");
9
- const utils_1 = require("../../utils");
10
- const zod_types_1 = require("../../zod/zod-types");
11
- const tool_1 = require("../tool");
12
- class AmazonSearchParsedTool extends tool_1.Tool {
13
- constructor() {
14
- super(...arguments);
15
- this.toolset = constants_1.TOOLSET.ECOMMERCE;
16
- this.transformResponse = ({ data }) => {
17
- for (const fieldToRemove of AmazonSearchParsedTool.FIELDS_WITH_HIGH_CHAR_COUNT) {
18
- data = (0, utils_1.removeKeyFromNestedObject)({ obj: data, keyToRemove: fieldToRemove });
19
- }
20
- return { data: JSON.stringify(data) };
21
- };
22
- this.register = ({ server, sapiClient, getAuthToken }) => {
23
- server.registerTool('amazon_search_parsed', {
24
- description: 'Scrape Amazon Search results with automatic parsing',
25
- inputSchema: {
26
- query: zod_1.default.string().describe('Search query'),
27
- geo: zod_types_1.zodGeo,
28
- jsRender: zod_types_1.zodJsRender,
29
- },
30
- annotations: {
31
- readOnlyHint: true,
32
- openWorldHint: true,
33
- },
34
- }, async (scrapingParams) => {
35
- const params = Object.assign(Object.assign({}, scrapingParams), { target: constants_1.SCRAPER_API_TARGETS.AMAZON_SEARCH, parse: true });
36
- const auth = getAuthToken();
37
- const { data } = await sapiClient.scrape({ auth, scrapingParams: params });
38
- const { data: text } = this.transformResponse({ data });
39
- return {
40
- content: [
41
- {
42
- type: 'text',
43
- text,
44
- },
45
- ],
46
- };
47
- });
48
- };
49
- }
50
- }
51
- exports.AmazonSearchParsedTool = AmazonSearchParsedTool;
52
- AmazonSearchParsedTool.FIELDS_WITH_HIGH_CHAR_COUNT = ['suggested', 'amazons_choices', 'refinements'];
53
- //# sourceMappingURL=amazon-search-parsed-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"amazon-search-parsed-tool.js","sourceRoot":"","sources":["../../../src/tools/amazon-search-parsed/amazon-search-parsed-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AAEpB,+CAA+D;AAC/D,uCAAwD;AACxD,mDAA0D;AAC1D,kCAAqD;AAErD,MAAa,sBAAuB,SAAQ,WAAI;IAAhD;;QACE,YAAO,GAAG,mBAAO,CAAC,SAAS,CAAC;QAI5B,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;YACjD,KAAK,MAAM,aAAa,IAAI,sBAAsB,CAAC,2BAA2B,EAAE,CAAC;gBAC/E,IAAI,GAAG,IAAA,iCAAyB,EAAC,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;YAC9E,CAAC;YAED,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,CAAC,CAAC;QAEF,aAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAwB,EAAE,EAAE;YACxE,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;gBACE,WAAW,EAAE,qDAAqD;gBAClE,WAAW,EAAE;oBACX,KAAK,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;oBAC1C,GAAG,EAAE,kBAAM;oBACX,QAAQ,EAAE,uBAAW;iBACtB;gBACD,WAAW,EAAE;oBACX,YAAY,EAAE,IAAI;oBAClB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;gBAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,aAAa,EACzC,KAAK,EAAE,IAAI,GACe,CAAC;gBAE7B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;gBAE5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;gBAEnF,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAExD,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI;yBACL;qBACF;iBACF,CAAC;YACJ,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;;AApDD,wDAoDC;AAjDgB,kDAA2B,GAAG,CAAC,WAAW,EAAE,iBAAiB,EAAE,aAAa,CAAC,AAAlD,CAAmD"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./amazon-search-parsed-tool"), exports);
18
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/amazon-search-parsed/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C"}
@@ -1,52 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- var _a;
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.AmazonSearchParsedTool = void 0;
8
- const zod_1 = __importDefault(require("zod"));
9
- const constants_1 = require("../constants");
10
- const utils_1 = require("../utils");
11
- const zod_types_1 = require("../zod/zod-types");
12
- class AmazonSearchParsedTool {
13
- }
14
- exports.AmazonSearchParsedTool = AmazonSearchParsedTool;
15
- _a = AmazonSearchParsedTool;
16
- AmazonSearchParsedTool.toolset = constants_1.TOOLSET.ECOMMERCE;
17
- AmazonSearchParsedTool.FIELDS_WITH_HIGH_CHAR_COUNT = ['suggested', 'amazons_choices', 'refinements'];
18
- AmazonSearchParsedTool.transformAutoParsedResponse = ({ obj }) => {
19
- for (const fieldToRemove of _a.FIELDS_WITH_HIGH_CHAR_COUNT) {
20
- obj = (0, utils_1.removeKeyFromNestedObject)({ obj, keyToRemove: fieldToRemove });
21
- }
22
- const text = JSON.stringify(obj);
23
- return text;
24
- };
25
- AmazonSearchParsedTool.register = ({ server, sapiClient, getAuthToken, }) => {
26
- server.registerTool('amazon_search_parsed', {
27
- description: 'Scrape Amazon Search results with automatic parsing',
28
- inputSchema: {
29
- query: zod_1.default.string().describe('Search query'),
30
- geo: zod_types_1.zodGeo,
31
- jsRender: zod_types_1.zodJsRender,
32
- },
33
- annotations: {
34
- readOnlyHint: true,
35
- openWorldHint: true,
36
- },
37
- }, async (scrapingParams) => {
38
- const params = Object.assign(Object.assign({}, scrapingParams), { target: constants_1.SCRAPER_API_TARGETS.AMAZON_SEARCH, parse: true });
39
- const auth = getAuthToken();
40
- const { data } = await sapiClient.scrape({ auth, scrapingParams: params });
41
- const text = _a.transformAutoParsedResponse({ obj: data });
42
- return {
43
- content: [
44
- {
45
- type: 'text',
46
- text,
47
- },
48
- ],
49
- };
50
- });
51
- };
52
- //# sourceMappingURL=amazon-search-parsed-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"amazon-search-parsed-tool.js","sourceRoot":"","sources":["../../src/tools/amazon-search-parsed-tool.ts"],"names":[],"mappings":";;;;;;;AAAA,8CAAoB;AAIpB,4CAA4D;AAC5D,oCAAqD;AACrD,gDAAuD;AAEvD,MAAa,sBAAsB;;AAAnC,wDA6DC;;AA5DQ,8BAAO,GAAG,mBAAO,CAAC,SAAS,AAApB,CAAqB;AAC5B,kDAA2B,GAAG,CAAC,WAAW,EAAE,iBAAiB,EAAE,aAAa,CAAC,AAAlD,CAAmD;AAE9E,kDAA2B,GAAG,CAAC,EAAE,GAAG,EAAmB,EAAU,EAAE;IACxE,KAAK,MAAM,aAAa,IAAI,EAAsB,CAAC,2BAA2B,EAAE,CAAC;QAC/E,GAAG,GAAG,IAAA,iCAAyB,EAAC,EAAE,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAEjC,OAAO,IAAI,CAAC;AACd,CAAC,AARiC,CAQhC;AAEK,+BAAQ,GAAG,CAAC,EACjB,MAAM,EACN,UAAU,EACV,YAAY,GAKb,EAAE,EAAE;IACH,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE;YACX,KAAK,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC1C,GAAG,EAAE,kBAAM;YACX,QAAQ,EAAE,uBAAW;SACtB;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,aAAa,EACzC,KAAK,EAAE,IAAI,GACe,CAAC;QAE7B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;QAE5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnF,MAAM,IAAI,GAAG,EAAI,CAAC,2BAA2B,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI;iBACL;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,AA9Cc,CA8Cb"}
@@ -1,43 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- var _a;
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ChatGPTTool = void 0;
8
- const zod_1 = __importDefault(require("zod"));
9
- const constants_1 = require("../constants");
10
- const zod_types_1 = require("../zod/zod-types");
11
- class ChatGPTTool {
12
- }
13
- exports.ChatGPTTool = ChatGPTTool;
14
- _a = ChatGPTTool;
15
- ChatGPTTool.toolset = constants_1.TOOLSET.AI;
16
- ChatGPTTool.register = ({ server, sapiClient, getAuthToken, }) => {
17
- server.registerTool('chatgpt', {
18
- description: 'Search and interact with ChatGPT for AI-powered responses and conversations',
19
- inputSchema: {
20
- prompt: zod_1.default.string().describe('Prompt to send to ChatGPT'),
21
- search: zod_1.default.boolean().describe("Activates ChatGPT's web search functionality").optional(),
22
- geo: zod_types_1.zodGeo,
23
- },
24
- annotations: {
25
- readOnlyHint: true,
26
- openWorldHint: true,
27
- },
28
- }, async (scrapingParams) => {
29
- const params = Object.assign(Object.assign({}, scrapingParams), { target: constants_1.SCRAPER_API_TARGETS.CHATGPT, parse: true });
30
- const auth = getAuthToken();
31
- const { data } = await sapiClient.scrape({ auth, scrapingParams: params });
32
- const text = JSON.stringify(data, null, 2);
33
- return {
34
- content: [
35
- {
36
- type: 'text',
37
- text,
38
- },
39
- ],
40
- };
41
- });
42
- };
43
- //# sourceMappingURL=chatgpt-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chatgpt-tool.js","sourceRoot":"","sources":["../../src/tools/chatgpt-tool.ts"],"names":[],"mappings":";;;;;;;AAAA,8CAAoB;AAIpB,4CAA4D;AAC5D,gDAA0C;AAE1C,MAAa,WAAW;;AAAxB,kCAiDC;;AAhDQ,mBAAO,GAAG,mBAAO,CAAC,EAAE,AAAb,CAAc;AACrB,oBAAQ,GAAG,CAAC,EACjB,MAAM,EACN,UAAU,EACV,YAAY,GAKb,EAAE,EAAE;IACH,MAAM,CAAC,YAAY,CACjB,SAAS,EACT;QACE,WAAW,EAAE,6EAA6E;QAC1F,WAAW,EAAE;YACX,MAAM,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACxD,MAAM,EAAE,aAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC,CAAC,QAAQ,EAAE;YACvF,GAAG,EAAE,kBAAM;SACZ;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,OAAO,EACnC,KAAK,EAAE,IAAI,GACe,CAAC;QAE7B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;QAE5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE3C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI;iBACL;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,AA9Cc,CA8Cb"}
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SCRAPER_API_TARGETS = exports.TOOLSET = void 0;
4
- var TOOLSET;
5
- (function (TOOLSET) {
6
- TOOLSET["WEB"] = "web";
7
- TOOLSET["SEARCH"] = "search";
8
- TOOLSET["ECOMMERCE"] = "ecommerce";
9
- TOOLSET["SOCIAL_MEDIA"] = "social_media";
10
- TOOLSET["AI"] = "ai";
11
- })(TOOLSET || (exports.TOOLSET = TOOLSET = {}));
12
- // todo: utils
13
- var SCRAPER_API_TARGETS;
14
- (function (SCRAPER_API_TARGETS) {
15
- SCRAPER_API_TARGETS["GOOGLE_SEARCH"] = "google_search";
16
- SCRAPER_API_TARGETS["AMAZON_SEARCH"] = "amazon_search";
17
- SCRAPER_API_TARGETS["REDDIT_POST"] = "reddit_post";
18
- SCRAPER_API_TARGETS["REDDIT_SUBREDDIT"] = "reddit_subreddit";
19
- SCRAPER_API_TARGETS["REDDIT_USER"] = "reddit_user";
20
- SCRAPER_API_TARGETS["CHATGPT"] = "chatgpt";
21
- SCRAPER_API_TARGETS["PERPLEXITY"] = "perplexity";
22
- })(SCRAPER_API_TARGETS || (exports.SCRAPER_API_TARGETS = SCRAPER_API_TARGETS = {}));
23
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/tools/constants.ts"],"names":[],"mappings":";;;AAAA,IAAY,OAMX;AAND,WAAY,OAAO;IACjB,sBAAW,CAAA;IACX,4BAAiB,CAAA;IACjB,kCAAuB,CAAA;IACvB,wCAA6B,CAAA;IAC7B,oBAAS,CAAA;AACX,CAAC,EANW,OAAO,uBAAP,OAAO,QAMlB;AAED,cAAc;AACd,IAAY,mBAUX;AAVD,WAAY,mBAAmB;IAC7B,sDAA+B,CAAA;IAC/B,sDAA+B,CAAA;IAE/B,kDAA2B,CAAA;IAC3B,4DAAqC,CAAA;IACrC,kDAA2B,CAAA;IAE3B,0CAAmB,CAAA;IACnB,gDAAyB,CAAA;AAC3B,CAAC,EAVW,mBAAmB,mCAAnB,mBAAmB,QAU9B"}
@@ -1,61 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.GoogleSearchParsedTool = void 0;
7
- const zod_1 = __importDefault(require("zod"));
8
- const constants_1 = require("src/tools/constants");
9
- const utils_1 = require("../../utils");
10
- const zod_types_1 = require("../../zod/zod-types");
11
- const tool_1 = require("../tool");
12
- class GoogleSearchParsedTool extends tool_1.Tool {
13
- constructor() {
14
- super(...arguments);
15
- this.toolset = constants_1.TOOLSET.SEARCH;
16
- this.transformResponse = ({ data }) => {
17
- for (const fieldToRemove of GoogleSearchParsedTool.FIELDS_WITH_HIGH_CHAR_COUNT) {
18
- data = (0, utils_1.removeKeyFromNestedObject)({ obj: data, keyToRemove: fieldToRemove });
19
- }
20
- return { data: JSON.stringify(data) };
21
- };
22
- this.register = ({ server, sapiClient, getAuthToken }) => {
23
- server.registerTool('google_search_parsed', {
24
- description: 'Scrape Google Search results with automatic parsing',
25
- inputSchema: {
26
- query: zod_1.default.string().describe('Search query'),
27
- geo: zod_types_1.zodGeo,
28
- locale: zod_types_1.zodLocale,
29
- jsRender: zod_types_1.zodJsRender,
30
- },
31
- annotations: {
32
- readOnlyHint: true,
33
- openWorldHint: true,
34
- },
35
- }, async (scrapingParams) => {
36
- const params = Object.assign(Object.assign({}, scrapingParams), { target: constants_1.SCRAPER_API_TARGETS.GOOGLE_SEARCH, parse: true });
37
- const auth = getAuthToken();
38
- const { data } = await sapiClient.scrape({ auth, scrapingParams: params });
39
- const { data: text } = this.transformResponse({ data });
40
- return {
41
- content: [
42
- {
43
- type: 'text',
44
- text,
45
- },
46
- ],
47
- };
48
- });
49
- };
50
- }
51
- }
52
- exports.GoogleSearchParsedTool = GoogleSearchParsedTool;
53
- GoogleSearchParsedTool.FIELDS_WITH_HIGH_CHAR_COUNT = [
54
- 'images',
55
- 'image_data',
56
- 'related_searches_urls',
57
- 'factoids',
58
- 'people_also_buy_from',
59
- 'what_people_are_saying',
60
- ];
61
- //# sourceMappingURL=google-search-parsed-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"google-search-parsed-tool.js","sourceRoot":"","sources":["../../../src/tools/google-search-parsed/google-search-parsed-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AAEpB,mDAAmE;AACnE,uCAAwD;AACxD,mDAAqE;AACrE,kCAAqD;AAErD,MAAa,sBAAuB,SAAQ,WAAI;IAAhD;;QACE,YAAO,GAAG,mBAAO,CAAC,MAAM,CAAC;QAWzB,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;YACjD,KAAK,MAAM,aAAa,IAAI,sBAAsB,CAAC,2BAA2B,EAAE,CAAC;gBAC/E,IAAI,GAAG,IAAA,iCAAyB,EAAC,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;YAC9E,CAAC;YAED,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,CAAC,CAAC;QAEF,aAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAwB,EAAE,EAAE;YACxE,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;gBACE,WAAW,EAAE,qDAAqD;gBAClE,WAAW,EAAE;oBACX,KAAK,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;oBAC1C,GAAG,EAAE,kBAAM;oBACX,MAAM,EAAE,qBAAS;oBACjB,QAAQ,EAAE,uBAAW;iBACtB;gBACD,WAAW,EAAE;oBACX,YAAY,EAAE,IAAI;oBAClB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;gBAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,aAAa,EACzC,KAAK,EAAE,IAAI,GACe,CAAC;gBAE7B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;gBAE5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;gBAEnF,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAExD,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI;yBACL;qBACF;iBACF,CAAC;YACJ,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;;AA5DD,wDA4DC;AAzDQ,kDAA2B,GAAG;IACnC,QAAQ;IACR,YAAY;IACZ,uBAAuB;IACvB,UAAU;IACV,sBAAsB;IACtB,wBAAwB;CACzB,AAPiC,CAOhC"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./google-search-parsed-tool"), exports);
18
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/google-search-parsed/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C"}
@@ -1,60 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- var _a;
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.GoogleSearchParsedTool = void 0;
8
- const zod_1 = __importDefault(require("zod"));
9
- const constants_1 = require("../constants");
10
- const utils_1 = require("../utils");
11
- const zod_types_1 = require("../zod/zod-types");
12
- class GoogleSearchParsedTool {
13
- }
14
- exports.GoogleSearchParsedTool = GoogleSearchParsedTool;
15
- _a = GoogleSearchParsedTool;
16
- GoogleSearchParsedTool.toolset = constants_1.TOOLSET.WEB;
17
- GoogleSearchParsedTool.FIELDS_WITH_HIGH_CHAR_COUNT = [
18
- 'images',
19
- 'image_data',
20
- 'related_searches_urls',
21
- 'factoids',
22
- 'people_also_buy_from',
23
- 'what_people_are_saying',
24
- ];
25
- GoogleSearchParsedTool.transformAutoParsedResponse = ({ obj }) => {
26
- for (const fieldToRemove of _a.FIELDS_WITH_HIGH_CHAR_COUNT) {
27
- obj = (0, utils_1.removeKeyFromNestedObject)({ obj, keyToRemove: fieldToRemove });
28
- }
29
- const text = JSON.stringify(obj);
30
- return text;
31
- };
32
- GoogleSearchParsedTool.register = ({ server, sapiClient, getAuthToken, }) => {
33
- server.registerTool('google_search_parsed', {
34
- description: 'Scrape Google Search results with automatic parsing',
35
- inputSchema: {
36
- query: zod_1.default.string().describe('Search query'),
37
- geo: zod_types_1.zodGeo,
38
- locale: zod_types_1.zodLocale,
39
- jsRender: zod_types_1.zodJsRender,
40
- },
41
- annotations: {
42
- readOnlyHint: true,
43
- openWorldHint: true,
44
- },
45
- }, async (scrapingParams) => {
46
- const params = Object.assign(Object.assign({}, scrapingParams), { target: constants_1.SCRAPER_API_TARGETS.GOOGLE_SEARCH, parse: true });
47
- const auth = getAuthToken();
48
- const { data } = await sapiClient.scrape({ auth, scrapingParams: params });
49
- const text = _a.transformAutoParsedResponse({ obj: data });
50
- return {
51
- content: [
52
- {
53
- type: 'text',
54
- text,
55
- },
56
- ],
57
- };
58
- });
59
- };
60
- //# sourceMappingURL=google-search-parsed-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"google-search-parsed-tool.js","sourceRoot":"","sources":["../../src/tools/google-search-parsed-tool.ts"],"names":[],"mappings":";;;;;;;AAAA,8CAAoB;AAIpB,4CAA4D;AAC5D,oCAAqD;AACrD,gDAAkE;AAElE,MAAa,sBAAsB;;AAAnC,wDAqEC;;AApEQ,8BAAO,GAAG,mBAAO,CAAC,GAAG,AAAd,CAAe;AACtB,kDAA2B,GAAG;IACnC,QAAQ;IACR,YAAY;IACZ,uBAAuB;IACvB,UAAU;IACV,sBAAsB;IACtB,wBAAwB;CACzB,AAPiC,CAOhC;AAEK,kDAA2B,GAAG,CAAC,EAAE,GAAG,EAAmB,EAAU,EAAE;IACxE,KAAK,MAAM,aAAa,IAAI,EAAsB,CAAC,2BAA2B,EAAE,CAAC;QAC/E,GAAG,GAAG,IAAA,iCAAyB,EAAC,EAAE,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAEjC,OAAO,IAAI,CAAC;AACd,CAAC,AARiC,CAQhC;AAEK,+BAAQ,GAAG,CAAC,EACjB,MAAM,EACN,UAAU,EACV,YAAY,GAKb,EAAE,EAAE;IACH,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE;YACX,KAAK,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC1C,GAAG,EAAE,kBAAM;YACX,MAAM,EAAE,qBAAS;YACjB,QAAQ,EAAE,uBAAW;SACtB;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,aAAa,EACzC,KAAK,EAAE,IAAI,GACe,CAAC;QAE7B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;QAE5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnF,MAAM,IAAI,GAAG,EAAI,CAAC,2BAA2B,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI;iBACL;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,AA/Cc,CA+Cb"}
@@ -1,42 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- var _a;
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.PerplexityTool = void 0;
8
- const zod_1 = __importDefault(require("zod"));
9
- const constants_1 = require("../constants");
10
- const zod_types_1 = require("../zod/zod-types");
11
- class PerplexityTool {
12
- }
13
- exports.PerplexityTool = PerplexityTool;
14
- _a = PerplexityTool;
15
- PerplexityTool.toolset = constants_1.TOOLSET.AI;
16
- PerplexityTool.register = ({ server, sapiClient, getAuthToken, }) => {
17
- server.registerTool('perplexity', {
18
- description: 'Search and interact with Perplexity for AI-powered responses and conversations',
19
- inputSchema: {
20
- prompt: zod_1.default.string().describe('Prompt to send to Perplexity'),
21
- geo: zod_types_1.zodGeo,
22
- },
23
- annotations: {
24
- readOnlyHint: true,
25
- openWorldHint: true,
26
- },
27
- }, async (scrapingParams) => {
28
- const params = Object.assign(Object.assign({}, scrapingParams), { target: constants_1.SCRAPER_API_TARGETS.PERPLEXITY, parse: true });
29
- const auth = getAuthToken();
30
- const { data } = await sapiClient.scrape({ auth, scrapingParams: params });
31
- const text = JSON.stringify(data, null, 2);
32
- return {
33
- content: [
34
- {
35
- type: 'text',
36
- text,
37
- },
38
- ],
39
- };
40
- });
41
- };
42
- //# sourceMappingURL=perplexity-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"perplexity-tool.js","sourceRoot":"","sources":["../../src/tools/perplexity-tool.ts"],"names":[],"mappings":";;;;;;;AAAA,8CAAoB;AAIpB,4CAA4D;AAC5D,gDAA0C;AAE1C,MAAa,cAAc;;AAA3B,wCAiDC;;AAhDQ,sBAAO,GAAG,mBAAO,CAAC,EAAE,AAAb,CAAc;AACrB,uBAAQ,GAAG,CAAC,EACjB,MAAM,EACN,UAAU,EACV,YAAY,GAKb,EAAE,EAAE;IACH,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,WAAW,EACT,gFAAgF;QAClF,WAAW,EAAE;YACX,MAAM,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YAC3D,GAAG,EAAE,kBAAM;SACZ;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,UAAU,EACtC,KAAK,EAAE,IAAI,GACe,CAAC;QAE7B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;QAE5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE3C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI;iBACL;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,AA9Cc,CA8Cb"}
@@ -1,40 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- var _a;
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.RedditPostTool = void 0;
8
- const zod_1 = __importDefault(require("zod"));
9
- const constants_1 = require("../constants");
10
- class RedditPostTool {
11
- }
12
- exports.RedditPostTool = RedditPostTool;
13
- _a = RedditPostTool;
14
- RedditPostTool.toolset = constants_1.TOOLSET.SOCIAL_MEDIA;
15
- RedditPostTool.register = ({ server, sapiClient, getAuthToken, }) => {
16
- server.registerTool('reddit_post', {
17
- description: 'Scrape a specific Reddit post',
18
- inputSchema: {
19
- url: zod_1.default.string().describe('reddit post URL'),
20
- },
21
- annotations: {
22
- readOnlyHint: true,
23
- openWorldHint: true,
24
- },
25
- }, async (scrapingParams) => {
26
- const params = Object.assign(Object.assign({}, scrapingParams), { target: constants_1.SCRAPER_API_TARGETS.REDDIT_POST });
27
- const auth = getAuthToken();
28
- const { data } = await sapiClient.scrape({ auth, scrapingParams: params });
29
- const text = JSON.stringify(data, null, 2);
30
- return {
31
- content: [
32
- {
33
- type: 'text',
34
- text,
35
- },
36
- ],
37
- };
38
- });
39
- };
40
- //# sourceMappingURL=reddit-post-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reddit-post-tool.js","sourceRoot":"","sources":["../../src/tools/reddit-post-tool.ts"],"names":[],"mappings":";;;;;;;AAAA,8CAAoB;AAIpB,4CAA4D;AAE5D,MAAa,cAAc;;AAA3B,wCA8CC;;AA7CQ,sBAAO,GAAG,mBAAO,CAAC,YAAY,AAAvB,CAAwB;AAC/B,uBAAQ,GAAG,CAAC,EACjB,MAAM,EACN,UAAU,EACV,YAAY,GAKb,EAAE,EAAE;IACH,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EAAE,+BAA+B;QAC5C,WAAW,EAAE;YACX,GAAG,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;SAC5C;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,WAAW,GACb,CAAC;QAE7B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;QAE5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE3C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI;iBACL;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,AA3Cc,CA2Cb"}
@@ -1,40 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- var _a;
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.RedditSubredditTool = void 0;
8
- const zod_1 = __importDefault(require("zod"));
9
- const constants_1 = require("../constants");
10
- class RedditSubredditTool {
11
- }
12
- exports.RedditSubredditTool = RedditSubredditTool;
13
- _a = RedditSubredditTool;
14
- RedditSubredditTool.toolset = constants_1.TOOLSET.SOCIAL_MEDIA;
15
- RedditSubredditTool.register = ({ server, sapiClient, getAuthToken, }) => {
16
- server.registerTool('reddit_subreddit', {
17
- description: 'Scrape Reddit subreddit results with automatic parsing',
18
- inputSchema: {
19
- url: zod_1.default.string().describe('URL to subreddit'),
20
- },
21
- annotations: {
22
- readOnlyHint: true,
23
- openWorldHint: true,
24
- },
25
- }, async (scrapingParams) => {
26
- const params = Object.assign(Object.assign({}, scrapingParams), { target: constants_1.SCRAPER_API_TARGETS.REDDIT_SUBREDDIT });
27
- const auth = getAuthToken();
28
- const { data } = await sapiClient.scrape({ auth, scrapingParams: params });
29
- const text = JSON.stringify(data, null, 2);
30
- return {
31
- content: [
32
- {
33
- type: 'text',
34
- text,
35
- },
36
- ],
37
- };
38
- });
39
- };
40
- //# sourceMappingURL=reddit-subreddit-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reddit-subreddit-tool.js","sourceRoot":"","sources":["../../src/tools/reddit-subreddit-tool.ts"],"names":[],"mappings":";;;;;;;AAAA,8CAAoB;AAIpB,4CAA4D;AAE5D,MAAa,mBAAmB;;AAAhC,kDA8CC;;AA7CQ,2BAAO,GAAG,mBAAO,CAAC,YAAY,AAAvB,CAAwB;AAC/B,4BAAQ,GAAG,CAAC,EACjB,MAAM,EACN,UAAU,EACV,YAAY,GAKb,EAAE,EAAE;IACH,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EAAE,wDAAwD;QACrE,WAAW,EAAE;YACX,GAAG,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;SAC7C;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,gBAAgB,GAClB,CAAC;QAE7B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;QAE5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE3C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI;iBACL;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,AA3Cc,CA2Cb"}
@@ -1,78 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- var _a;
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ScrapeAsMarkdownTool = void 0;
8
- const zod_1 = __importDefault(require("zod"));
9
- const node_html_markdown_1 = require("node-html-markdown");
10
- const zod_types_1 = require("../zod/zod-types");
11
- const constants_1 = require("../constants");
12
- class ScrapeAsMarkdownTool {
13
- }
14
- exports.ScrapeAsMarkdownTool = ScrapeAsMarkdownTool;
15
- _a = ScrapeAsMarkdownTool;
16
- ScrapeAsMarkdownTool.toolset = constants_1.TOOLSET.WEB;
17
- ScrapeAsMarkdownTool.LARGE_CONTENT_SYMBOL_COUNT = 100000;
18
- ScrapeAsMarkdownTool.isResponseOverLimit = (content) => {
19
- return content.length > _a.LARGE_CONTENT_SYMBOL_COUNT;
20
- };
21
- ScrapeAsMarkdownTool.truncateResponse = ({ content, limit }) => {
22
- return content.substring(0, limit);
23
- };
24
- ScrapeAsMarkdownTool.transformResponse = ({ html, tokenLimit }) => {
25
- let markdown;
26
- try {
27
- markdown = node_html_markdown_1.NodeHtmlMarkdown.translate(html, {});
28
- }
29
- catch (_b) {
30
- markdown = html;
31
- }
32
- if (tokenLimit || _a.isResponseOverLimit(markdown)) {
33
- const truncated = _a.truncateResponse({
34
- content: markdown,
35
- limit: tokenLimit || _a.LARGE_CONTENT_SYMBOL_COUNT,
36
- });
37
- return { markdown: truncated, isTruncated: true };
38
- }
39
- return { markdown, isTruncated: false };
40
- };
41
- ScrapeAsMarkdownTool.register = ({ server, sapiClient, getAuthToken, }) => {
42
- server.registerTool('scrape_as_markdown', {
43
- description: 'Scrape the contents of a website and return Markdown-formatted results',
44
- inputSchema: {
45
- url: zod_1.default.string().describe('URL to scrape'),
46
- geo: zod_types_1.zodGeo,
47
- locale: zod_types_1.zodLocale,
48
- jsRender: zod_types_1.zodJsRender,
49
- tokenLimit: zod_types_1.zodTokenLimit,
50
- },
51
- annotations: {
52
- readOnlyHint: true,
53
- openWorldHint: true,
54
- },
55
- }, async (scrapingParams) => {
56
- const auth = getAuthToken();
57
- const { data } = await sapiClient.scrape({ auth, scrapingParams });
58
- const { markdown, isTruncated } = _a.transformResponse({
59
- html: data,
60
- tokenLimit: scrapingParams.tokenLimit,
61
- });
62
- return {
63
- content: [
64
- {
65
- type: 'text',
66
- text: isTruncated
67
- ? `The website content is over ${_a.LARGE_CONTENT_SYMBOL_COUNT} symbols, therefore, the content has been truncated. If you wish to obtain the full response, just say "full response". Alternatively, you say a specific token limit in the prompt.`
68
- : 'Full website content retrieved.',
69
- },
70
- {
71
- type: 'text',
72
- text: markdown,
73
- },
74
- ],
75
- };
76
- });
77
- };
78
- //# sourceMappingURL=scrape-as-markdown-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scrape-as-markdown-tool.js","sourceRoot":"","sources":["../../src/tools/scrape-as-markdown-tool.ts"],"names":[],"mappings":";;;;;;;AAAA,8CAAoB;AAIpB,2DAAsD;AACtD,gDAAiF;AACjF,4CAAuC;AAEvC,MAAa,oBAAoB;;AAAjC,oDAoFC;;AAnFQ,4BAAO,GAAG,mBAAO,CAAC,GAAG,AAAd,CAAe;AACtB,+CAA0B,GAAG,MAAO,AAAV,CAAW;AAErC,wCAAmB,GAAG,CAAC,OAAe,EAAE,EAAE;IAC/C,OAAO,OAAO,CAAC,MAAM,GAAG,EAAI,CAAC,0BAA0B,CAAC;AAC1D,CAAC,AAFyB,CAExB;AAEK,qCAAgB,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAsC,EAAE,EAAE;IACnF,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC,AAFsB,CAErB;AAEK,sCAAiB,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAyC,EAAE,EAAE;IACzF,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,qCAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IAAC,WAAM,CAAC;QACP,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,IAAI,UAAU,IAAI,EAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,MAAM,SAAS,GAAG,EAAI,CAAC,gBAAgB,CAAC;YACtC,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU,IAAI,EAAI,CAAC,0BAA0B;SACrD,CAAC,CAAC;QAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACpD,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAC1C,CAAC,AAlBuB,CAkBtB;AAEK,6BAAQ,GAAG,CAAC,EACjB,MAAM,EACN,UAAU,EACV,YAAY,GAKb,EAAE,EAAE;IACH,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,WAAW,EAAE,wEAAwE;QACrF,WAAW,EAAE;YACX,GAAG,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YACzC,GAAG,EAAE,kBAAM;YACX,MAAM,EAAE,qBAAS;YACjB,QAAQ,EAAE,uBAAW;YACrB,UAAU,EAAE,yBAAa;SAC1B;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;QAE5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAEnE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAI,CAAC,iBAAiB,CAAC;YACvD,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,cAAc,CAAC,UAAU;SACtC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,WAAW;wBACf,CAAC,CAAC,+BAA+B,EAAI,CAAC,0BAA0B,sLAAsL;wBACtP,CAAC,CAAC,iCAAiC;iBACtC;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,QAAQ;iBACf;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,AAnDc,CAmDb"}