@decodo/mcp-server 1.3.1 → 1.4.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 (102) hide show
  1. package/README.md +10 -4
  2. package/build/clients/scraper-api-client.js +63 -15
  3. package/build/clients/scraper-api-client.js.map +1 -1
  4. package/build/server/app.js +2 -1
  5. package/build/server/app.js.map +1 -1
  6. package/build/server/hidden-tools.js +28 -0
  7. package/build/server/hidden-tools.js.map +1 -0
  8. package/build/server/sapi-base-server.js +20 -11
  9. package/build/server/sapi-base-server.js.map +1 -1
  10. package/build/server/sapi-http-server.js +8 -2
  11. package/build/server/sapi-http-server.js.map +1 -1
  12. package/build/server.js +6 -1
  13. package/build/server.js.map +1 -1
  14. package/build/tools/amazon-bestsellers/amazon-bestsellers-tool.js +3 -1
  15. package/build/tools/amazon-bestsellers/amazon-bestsellers-tool.js.map +1 -1
  16. package/build/tools/amazon-pricing/amazon-pricing-tool.js +3 -1
  17. package/build/tools/amazon-pricing/amazon-pricing-tool.js.map +1 -1
  18. package/build/tools/amazon-product/amazon-product-tool.js +3 -1
  19. package/build/tools/amazon-product/amazon-product-tool.js.map +1 -1
  20. package/build/tools/amazon-search/amazon-search-tool.js +3 -1
  21. package/build/tools/amazon-search/amazon-search-tool.js.map +1 -1
  22. package/build/tools/amazon-sellers/amazon-sellers-tool.js +3 -1
  23. package/build/tools/amazon-sellers/amazon-sellers-tool.js.map +1 -1
  24. package/build/tools/bing-search/bing-search-tool.js +3 -1
  25. package/build/tools/bing-search/bing-search-tool.js.map +1 -1
  26. package/build/tools/chatgpt/chatgpt-tool.js +4 -1
  27. package/build/tools/chatgpt/chatgpt-tool.js.map +1 -1
  28. package/build/tools/crawl-cancel/crawl-cancel-tool.js +41 -0
  29. package/build/tools/crawl-cancel/crawl-cancel-tool.js.map +1 -0
  30. package/build/tools/crawl-cancel/index.js +18 -0
  31. package/build/tools/crawl-cancel/index.js.map +1 -0
  32. package/build/tools/crawl-results/crawl-results-tool.js +172 -0
  33. package/build/tools/crawl-results/crawl-results-tool.js.map +1 -0
  34. package/build/tools/crawl-results/index.js +18 -0
  35. package/build/tools/crawl-results/index.js.map +1 -0
  36. package/build/tools/crawl-start/crawl-start-tool.js +74 -0
  37. package/build/tools/crawl-start/crawl-start-tool.js.map +1 -0
  38. package/build/tools/crawl-start/index.js +18 -0
  39. package/build/tools/crawl-start/index.js.map +1 -0
  40. package/build/tools/crawl-status/crawl-status-tool.js +40 -0
  41. package/build/tools/crawl-status/crawl-status-tool.js.map +1 -0
  42. package/build/tools/crawl-status/index.js +18 -0
  43. package/build/tools/crawl-status/index.js.map +1 -0
  44. package/build/tools/google-ads/google-ads-tool.js +3 -1
  45. package/build/tools/google-ads/google-ads-tool.js.map +1 -1
  46. package/build/tools/google-ai-mode/google-ai-mode-tool.js +3 -1
  47. package/build/tools/google-ai-mode/google-ai-mode-tool.js.map +1 -1
  48. package/build/tools/google-lens/google-lens-tool.js +3 -1
  49. package/build/tools/google-lens/google-lens-tool.js.map +1 -1
  50. package/build/tools/google-search/google-search-tool.js +3 -1
  51. package/build/tools/google-search/google-search-tool.js.map +1 -1
  52. package/build/tools/google-travel-hotels/google-travel-hotels-tool.js +3 -1
  53. package/build/tools/google-travel-hotels/google-travel-hotels-tool.js.map +1 -1
  54. package/build/tools/index.js +6 -0
  55. package/build/tools/index.js.map +1 -1
  56. package/build/tools/map/index.js +18 -0
  57. package/build/tools/map/index.js.map +1 -0
  58. package/build/tools/map/map-tool.js +66 -0
  59. package/build/tools/map/map-tool.js.map +1 -0
  60. package/build/tools/perplexity/perplexity-tool.js +4 -1
  61. package/build/tools/perplexity/perplexity-tool.js.map +1 -1
  62. package/build/tools/reddit-post/reddit-post-tool.js +3 -1
  63. package/build/tools/reddit-post/reddit-post-tool.js.map +1 -1
  64. package/build/tools/reddit-subreddit/reddit-subreddit-tool.js +3 -1
  65. package/build/tools/reddit-subreddit/reddit-subreddit-tool.js.map +1 -1
  66. package/build/tools/reddit-user/reddit-user-tool.js +3 -1
  67. package/build/tools/reddit-user/reddit-user-tool.js.map +1 -1
  68. package/build/tools/scrape-as-markdown/scrape-as-markdown-tool.js +3 -1
  69. package/build/tools/scrape-as-markdown/scrape-as-markdown-tool.js.map +1 -1
  70. package/build/tools/screenshot/screenshot-tool.js +3 -1
  71. package/build/tools/screenshot/screenshot-tool.js.map +1 -1
  72. package/build/tools/search/index.js +18 -0
  73. package/build/tools/search/index.js.map +1 -0
  74. package/build/tools/search/search-tool.js +62 -0
  75. package/build/tools/search/search-tool.js.map +1 -0
  76. package/build/tools/target-product/target-product-tool.js +3 -1
  77. package/build/tools/target-product/target-product-tool.js.map +1 -1
  78. package/build/tools/target-search/target-search-tool.js +3 -1
  79. package/build/tools/target-search/target-search-tool.js.map +1 -1
  80. package/build/tools/tiktok-post/tiktok-post-tool.js +3 -1
  81. package/build/tools/tiktok-post/tiktok-post-tool.js.map +1 -1
  82. package/build/tools/tiktok-shop-product/tiktok-shop-product-tool.js +3 -1
  83. package/build/tools/tiktok-shop-product/tiktok-shop-product-tool.js.map +1 -1
  84. package/build/tools/tiktok-shop-search/tiktok-shop-search-tool.js +3 -1
  85. package/build/tools/tiktok-shop-search/tiktok-shop-search-tool.js.map +1 -1
  86. package/build/tools/tiktok-shop-url/tiktok-shop-url-tool.js +3 -1
  87. package/build/tools/tiktok-shop-url/tiktok-shop-url-tool.js.map +1 -1
  88. package/build/tools/walmart-product/walmart-product-tool.js +3 -1
  89. package/build/tools/walmart-product/walmart-product-tool.js.map +1 -1
  90. package/build/tools/walmart-search/walmart-search-tool.js +3 -1
  91. package/build/tools/walmart-search/walmart-search-tool.js.map +1 -1
  92. package/build/tools/youtube-channel/youtube-channel-tool.js +3 -1
  93. package/build/tools/youtube-channel/youtube-channel-tool.js.map +1 -1
  94. package/build/tools/youtube-metadata/youtube-metadata-tool.js +3 -1
  95. package/build/tools/youtube-metadata/youtube-metadata-tool.js.map +1 -1
  96. package/build/tools/youtube-search/youtube-search-tool.js +3 -1
  97. package/build/tools/youtube-search/youtube-search-tool.js.map +1 -1
  98. package/build/tools/youtube-subtitles/youtube-subtitles-tool.js +3 -1
  99. package/build/tools/youtube-subtitles/youtube-subtitles-tool.js.map +1 -1
  100. package/build/zod/zod-types.js +25 -1
  101. package/build/zod/zod-types.js.map +1 -1
  102. package/package.json +2 -2
@@ -0,0 +1,41 @@
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.CrawlCancelTool = void 0;
7
+ const zod_1 = __importDefault(require("zod"));
8
+ const constants_1 = require("../../constants");
9
+ const tool_1 = require("../tool");
10
+ class CrawlCancelTool extends tool_1.Tool {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.toolset = constants_1.TOOLSET.WEB;
14
+ this.transformResponse = ({ data }) => ({
15
+ data: JSON.stringify({ crawl_id: data.crawl_id, status: data.status, url: data.url }),
16
+ });
17
+ this.register = ({ server, sapiClient, auth }) => {
18
+ server.registerTool('crawl_cancel', {
19
+ title: 'Cancel Crawl',
20
+ description: 'Stop a crawl started with crawl_start so it crawls no more pages. ' +
21
+ 'Pages crawled before the cancel stay readable with crawl_results.',
22
+ inputSchema: {
23
+ crawlId: zod_1.default.string().describe('Crawl id returned by crawl_start'),
24
+ },
25
+ annotations: {
26
+ title: 'Cancel Crawl',
27
+ readOnlyHint: false,
28
+ destructiveHint: true,
29
+ idempotentHint: true,
30
+ openWorldHint: true,
31
+ },
32
+ }, async ({ crawlId }, extra) => {
33
+ const data = await sapiClient.cancelCrawl({ auth, crawlId, extra });
34
+ const { data: text } = this.transformResponse({ data });
35
+ return { content: [{ type: 'text', text }] };
36
+ });
37
+ };
38
+ }
39
+ }
40
+ exports.CrawlCancelTool = CrawlCancelTool;
41
+ //# sourceMappingURL=crawl-cancel-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crawl-cancel-tool.js","sourceRoot":"","sources":["../../../src/tools/crawl-cancel/crawl-cancel-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AAEpB,+CAA0C;AAE1C,kCAAqD;AAErD,MAAa,eAAgB,SAAQ,WAAI;IAAzC;;QACE,YAAO,GAAG,mBAAO,CAAC,GAAG,CAAC;QAEtB,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAiC,EAAE,EAAE,CAAC,CAAC;YAChE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;SACtF,CAAC,CAAC;QAEH,aAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;gBACE,KAAK,EAAE,cAAc;gBACrB,WAAW,EACT,oEAAoE;oBACpE,mEAAmE;gBACrE,WAAW,EAAE;oBACX,OAAO,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;iBACjE;gBACD,WAAW,EAAE;oBACX,KAAK,EAAE,cAAc;oBACrB,YAAY,EAAE,KAAK;oBACnB,eAAe,EAAE,IAAI;oBACrB,cAAc,EAAE,IAAI;oBACpB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAuB,EAAE,KAAoB,EAAE,EAAE;gBAC/D,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAEpE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAExD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC/C,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CAAA;AAnCD,0CAmCC"}
@@ -0,0 +1,18 @@
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("./crawl-cancel-tool"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/crawl-cancel/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC"}
@@ -0,0 +1,172 @@
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.CrawlResultsTool = void 0;
7
+ const zod_1 = __importDefault(require("zod"));
8
+ const constants_1 = require("../../constants");
9
+ const zod_types_1 = require("../../zod/zod-types");
10
+ const tool_1 = require("../tool");
11
+ const PAGES_BUDGET_BYTES = 49000;
12
+ const zodResultsPosition = zod_1.default
13
+ .object({
14
+ upstreamCursor: zod_1.default.string().optional(),
15
+ offset: zod_1.default.number().int().min(0),
16
+ contentOffset: zod_1.default.number().int().min(0),
17
+ returned: zod_1.default.number().int().min(0),
18
+ })
19
+ .strict();
20
+ const START_POSITION = { offset: 0, contentOffset: 0, returned: 0 };
21
+ const INVALID_CURSOR_MESSAGE = 'Invalid cursor: pass the nextCursor value from a previous crawl_results call.';
22
+ const encodeCursor = (position) => Buffer.from(JSON.stringify(position)).toString('base64url');
23
+ const parseCursorJson = (cursor) => {
24
+ try {
25
+ return JSON.parse(Buffer.from(cursor, 'base64url').toString());
26
+ }
27
+ catch (_a) {
28
+ throw new Error(INVALID_CURSOR_MESSAGE);
29
+ }
30
+ };
31
+ const decodeCursor = (cursor) => {
32
+ if (!cursor) {
33
+ return START_POSITION;
34
+ }
35
+ const position = zodResultsPosition.safeParse(parseCursorJson(cursor));
36
+ if (!position.success) {
37
+ throw new Error(INVALID_CURSOR_MESSAGE);
38
+ }
39
+ return position.data;
40
+ };
41
+ const serializedBytes = (text) => Buffer.byteLength(JSON.stringify(text));
42
+ const isHighSurrogate = (char) => /[\uD800-\uDBFF]/.test(char);
43
+ const prefixWithinBudget = (text, budgetBytes) => {
44
+ let fits = 0;
45
+ let tooLong = Math.min(text.length, budgetBytes) + 1;
46
+ while (tooLong - fits > 1) {
47
+ const middle = Math.floor((fits + tooLong) / 2);
48
+ if (serializedBytes(text.slice(0, middle)) <= budgetBytes) {
49
+ fits = middle;
50
+ }
51
+ else {
52
+ tooLong = middle;
53
+ }
54
+ }
55
+ return isHighSurrogate(text.charAt(fits - 1)) ? text.slice(0, fits - 1) : text.slice(0, fits);
56
+ };
57
+ const pageSummary = (page) => ({
58
+ url: page.url,
59
+ depth: page.depth,
60
+ status: page.status,
61
+ contentError: page.content_error,
62
+ });
63
+ const entryOverheadBytes = (summary) => Buffer.byteLength(JSON.stringify(Object.assign(Object.assign({}, summary), { content: '', contentPart: {
64
+ start: Number.MAX_SAFE_INTEGER,
65
+ end: Number.MAX_SAFE_INTEGER,
66
+ totalLength: Number.MAX_SAFE_INTEGER,
67
+ } }))) + 1;
68
+ const collectPages = ({ data, position, limit, }) => {
69
+ var _a;
70
+ const pages = [];
71
+ let { offset, contentOffset, returned } = position;
72
+ let budgetBytes = PAGES_BUDGET_BYTES;
73
+ while (offset < data.pages.length && pages.length < limit) {
74
+ const page = data.pages[offset];
75
+ const summary = pageSummary(page);
76
+ const overheadBytes = entryOverheadBytes(summary);
77
+ const content = (_a = page.content) !== null && _a !== void 0 ? _a : '';
78
+ const remaining = content.slice(contentOffset);
79
+ const chunk = prefixWithinBudget(remaining, Math.max(0, budgetBytes - overheadBytes));
80
+ const fitsWhole = overheadBytes <= budgetBytes && chunk.length === remaining.length;
81
+ if (!fitsWhole && pages.length > 0) {
82
+ break;
83
+ }
84
+ const isSplit = contentOffset > 0 || chunk.length < remaining.length;
85
+ const entry = Object.assign(Object.assign(Object.assign({}, summary), { content: page.content === undefined ? undefined : chunk }), (isSplit && {
86
+ contentPart: {
87
+ start: contentOffset,
88
+ end: contentOffset + chunk.length,
89
+ totalLength: content.length,
90
+ },
91
+ }));
92
+ pages.push(entry);
93
+ budgetBytes -= Buffer.byteLength(JSON.stringify(entry)) + 1;
94
+ if (chunk.length < remaining.length) {
95
+ contentOffset += chunk.length;
96
+ break;
97
+ }
98
+ offset += 1;
99
+ contentOffset = 0;
100
+ returned += 1;
101
+ }
102
+ return {
103
+ pages,
104
+ stoppedAt: { upstreamCursor: position.upstreamCursor, offset, contentOffset, returned },
105
+ };
106
+ };
107
+ const nextPosition = ({ data, stoppedAt, }) => {
108
+ if (stoppedAt.offset < data.pages.length) {
109
+ return stoppedAt;
110
+ }
111
+ if (data.total !== undefined && stoppedAt.returned >= data.total) {
112
+ return undefined;
113
+ }
114
+ if (data.next) {
115
+ return Object.assign(Object.assign({}, START_POSITION), { upstreamCursor: data.next, returned: stoppedAt.returned });
116
+ }
117
+ return undefined;
118
+ };
119
+ class CrawlResultsTool extends tool_1.Tool {
120
+ constructor() {
121
+ super(...arguments);
122
+ this.toolset = constants_1.TOOLSET.WEB;
123
+ this.transformResponse = ({ data, position, limit, }) => {
124
+ const { pages, stoppedAt } = collectPages({ data, position, limit });
125
+ const next = nextPosition({ data, stoppedAt });
126
+ return {
127
+ data: JSON.stringify({
128
+ pages,
129
+ nextCursor: next && encodeCursor(next),
130
+ total: data.total,
131
+ }),
132
+ };
133
+ };
134
+ this.register = ({ server, sapiClient, auth }) => {
135
+ server.registerTool('crawl_results', {
136
+ title: 'Crawl Results',
137
+ description: 'Return crawled pages as Markdown from a crawl started with crawl_start, a few at a time. ' +
138
+ 'Call it once crawl_status reports the crawl is no longer "pending". ' +
139
+ 'Crawled pages can be long and overflow your context, so each call returns at most about 50 KB and up to `limit` pages (10 by default). ' +
140
+ 'A page too long for one call is split across calls; each part carries contentPart with its character range. ' +
141
+ 'Pass nextCursor back to get the rest; when it is missing, you have every page. ' +
142
+ 'For precise work, prefer map plus scrape_as_markdown on the pages you need.',
143
+ inputSchema: {
144
+ crawlId: zod_1.default.string().describe('Crawl id returned by crawl_start'),
145
+ cursor: zod_1.default
146
+ .string()
147
+ .describe('nextCursor from a previous crawl_results call; omit for the first pages')
148
+ .optional(),
149
+ limit: (0, zod_types_1.zodLimit)({ limitedItems: 'pages to return', max: 100 }),
150
+ },
151
+ annotations: {
152
+ title: 'Crawl Results',
153
+ readOnlyHint: true,
154
+ destructiveHint: false,
155
+ openWorldHint: true,
156
+ },
157
+ }, async ({ crawlId, cursor, limit }, extra) => {
158
+ const position = decodeCursor(cursor);
159
+ const data = await sapiClient.listCrawlPages({
160
+ auth,
161
+ crawlId,
162
+ cursor: position.upstreamCursor,
163
+ extra,
164
+ });
165
+ const { data: text } = this.transformResponse({ data, position, limit });
166
+ return { content: [{ type: 'text', text }] };
167
+ });
168
+ };
169
+ }
170
+ }
171
+ exports.CrawlResultsTool = CrawlResultsTool;
172
+ //# sourceMappingURL=crawl-results-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crawl-results-tool.js","sourceRoot":"","sources":["../../../src/tools/crawl-results/crawl-results-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
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("./crawl-results-tool"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/crawl-results/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.CrawlStartTool = void 0;
18
+ const zod_1 = __importDefault(require("zod"));
19
+ const constants_1 = require("../../constants");
20
+ const zod_types_1 = require("../../zod/zod-types");
21
+ const tool_1 = require("../tool");
22
+ class CrawlStartTool extends tool_1.Tool {
23
+ constructor() {
24
+ super(...arguments);
25
+ this.toolset = constants_1.TOOLSET.WEB;
26
+ this.transformResponse = ({ data }) => ({
27
+ data: JSON.stringify({ crawl_id: data.crawl_id, status: data.status, url: data.url }),
28
+ });
29
+ this.register = ({ server, sapiClient, auth }) => {
30
+ server.registerTool('crawl_start', {
31
+ title: 'Start Crawl',
32
+ description: 'Start crawling a website and return the crawl id right away, without waiting for it to finish. ' +
33
+ 'Check progress with crawl_status, read pages with crawl_results and stop it early with crawl_cancel. ' +
34
+ 'Crawled content can overflow your context, so `limit` defaults to 10 pages. ' +
35
+ 'For precise work, prefer map plus scrape_as_markdown on the pages you need.',
36
+ inputSchema: {
37
+ url: zod_1.default.string().describe('Website URL to start crawling from'),
38
+ limit: (0, zod_types_1.zodLimit)({ limitedItems: 'pages to crawl', max: 100 }),
39
+ maxDepth: zod_1.default
40
+ .number()
41
+ .int()
42
+ .min(1)
43
+ .max(10000)
44
+ .describe('How many links deep to follow from the start URL')
45
+ .optional(),
46
+ sitemap: zod_types_1.zodSitemap,
47
+ domainFilter: zod_types_1.zodDomainFilter,
48
+ selectPaths: zod_types_1.zodSelectPaths,
49
+ excludePaths: zod_types_1.zodExcludePaths,
50
+ geo: zod_types_1.zodGeo,
51
+ locale: zod_types_1.zodLocale,
52
+ },
53
+ annotations: {
54
+ title: 'Start Crawl',
55
+ readOnlyHint: false,
56
+ destructiveHint: false,
57
+ idempotentHint: false,
58
+ openWorldHint: true,
59
+ },
60
+ }, async (_a, extra) => {
61
+ var { maxDepth, domainFilter, selectPaths, excludePaths } = _a, params = __rest(_a, ["maxDepth", "domainFilter", "selectPaths", "excludePaths"]);
62
+ const data = await sapiClient.startCrawl({
63
+ auth,
64
+ params: Object.assign(Object.assign({}, params), { output: 'markdown', max_depth: maxDepth, domain_filter: domainFilter, select_paths: selectPaths, exclude_paths: excludePaths }),
65
+ extra,
66
+ });
67
+ const { data: text } = this.transformResponse({ data });
68
+ return { content: [{ type: 'text', text }] };
69
+ });
70
+ };
71
+ }
72
+ }
73
+ exports.CrawlStartTool = CrawlStartTool;
74
+ //# sourceMappingURL=crawl-start-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crawl-start-tool.js","sourceRoot":"","sources":["../../../src/tools/crawl-start/crawl-start-tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8CAAoB;AAEpB,+CAA0C;AAE1C,mDAQ6B;AAC7B,kCAAqD;AAcrD,MAAa,cAAe,SAAQ,WAAI;IAAxC;;QACE,YAAO,GAAG,mBAAO,CAAC,GAAG,CAAC;QAEtB,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAgC,EAAE,EAAE,CAAC,CAAC;YAC/D,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;SACtF,CAAC,CAAC;QAEH,aAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;gBACE,KAAK,EAAE,aAAa;gBACpB,WAAW,EACT,iGAAiG;oBACjG,uGAAuG;oBACvG,8EAA8E;oBAC9E,6EAA6E;gBAC/E,WAAW,EAAE;oBACX,GAAG,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;oBAC9D,KAAK,EAAE,IAAA,oBAAQ,EAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;oBAC7D,QAAQ,EAAE,aAAC;yBACR,MAAM,EAAE;yBACR,GAAG,EAAE;yBACL,GAAG,CAAC,CAAC,CAAC;yBACN,GAAG,CAAC,KAAK,CAAC;yBACV,QAAQ,CAAC,kDAAkD,CAAC;yBAC5D,QAAQ,EAAE;oBACb,OAAO,EAAE,sBAAU;oBACnB,YAAY,EAAE,2BAAe;oBAC7B,WAAW,EAAE,0BAAc;oBAC3B,YAAY,EAAE,2BAAe;oBAC7B,GAAG,EAAE,kBAAM;oBACX,MAAM,EAAE,qBAAS;iBAClB;gBACD,WAAW,EAAE;oBACX,KAAK,EAAE,aAAa;oBACpB,YAAY,EAAE,KAAK;oBACnB,eAAe,EAAE,KAAK;oBACtB,cAAc,EAAE,KAAK;oBACrB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EACH,EAAkF,EAClF,KAAoB,EACpB,EAAE;oBAFF,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,OAA+B,EAA1B,MAAM,cAA9D,2DAAgE,CAAF;gBAG9D,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC;oBACvC,IAAI;oBACJ,MAAM,kCACD,MAAM,KACT,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,QAAQ,EACnB,aAAa,EAAE,YAAY,EAC3B,YAAY,EAAE,WAAW,EACzB,aAAa,EAAE,YAAY,GAC5B;oBACD,KAAK;iBACN,CAAC,CAAC;gBAEH,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAExD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC/C,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CAAA;AAjED,wCAiEC"}
@@ -0,0 +1,18 @@
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("./crawl-start-tool"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/crawl-start/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC"}
@@ -0,0 +1,40 @@
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.CrawlStatusTool = void 0;
7
+ const zod_1 = __importDefault(require("zod"));
8
+ const constants_1 = require("../../constants");
9
+ const tool_1 = require("../tool");
10
+ class CrawlStatusTool extends tool_1.Tool {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.toolset = constants_1.TOOLSET.WEB;
14
+ this.transformResponse = ({ data }) => ({
15
+ data: JSON.stringify(data),
16
+ });
17
+ this.register = ({ server, sapiClient, auth }) => {
18
+ server.registerTool('crawl_status', {
19
+ title: 'Crawl Status',
20
+ description: 'Report the progress of a crawl started with crawl_start: its status and how many pages were discovered, completed and failed. ' +
21
+ 'The crawl is finished once status is no longer "pending".',
22
+ inputSchema: {
23
+ crawlId: zod_1.default.string().describe('Crawl id returned by crawl_start'),
24
+ },
25
+ annotations: {
26
+ title: 'Crawl Status',
27
+ readOnlyHint: true,
28
+ destructiveHint: false,
29
+ openWorldHint: true,
30
+ },
31
+ }, async ({ crawlId }, extra) => {
32
+ const data = await sapiClient.getCrawlStatus({ auth, crawlId, extra });
33
+ const { data: text } = this.transformResponse({ data });
34
+ return { content: [{ type: 'text', text }] };
35
+ });
36
+ };
37
+ }
38
+ }
39
+ exports.CrawlStatusTool = CrawlStatusTool;
40
+ //# sourceMappingURL=crawl-status-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crawl-status-tool.js","sourceRoot":"","sources":["../../../src/tools/crawl-status/crawl-status-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AAEpB,+CAA0C;AAE1C,kCAAqD;AAErD,MAAa,eAAgB,SAAQ,WAAI;IAAzC;;QACE,YAAO,GAAG,mBAAO,CAAC,GAAG,CAAC;QAEtB,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoC,EAAE,EAAE,CAAC,CAAC;YACnE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QAEH,aAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;gBACE,KAAK,EAAE,cAAc;gBACrB,WAAW,EACT,gIAAgI;oBAChI,2DAA2D;gBAC7D,WAAW,EAAE;oBACX,OAAO,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;iBACjE;gBACD,WAAW,EAAE;oBACX,KAAK,EAAE,cAAc;oBACrB,YAAY,EAAE,IAAI;oBAClB,eAAe,EAAE,KAAK;oBACtB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAuB,EAAE,KAAoB,EAAE,EAAE;gBAC/D,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAEvE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAExD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC/C,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CAAA;AAlCD,0CAkCC"}
@@ -0,0 +1,18 @@
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("./crawl-status-tool"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/crawl-status/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC"}
@@ -27,7 +27,9 @@ class GoogleAdsTool extends tool_1.Tool {
27
27
  this.register = ({ server, sapiClient, auth }) => {
28
28
  server.registerTool('google_ads', {
29
29
  title: 'Google Ads',
30
- description: 'Scrape Google Ads search results with automatic parsing',
30
+ description: 'Search Google through the Decodo Web Scraping API (`google_ads` target) and return the paid Google Ads shown for a query, parsed as JSON. ' +
31
+ 'Use it to see which advertisers bid on a keyword and what their ads say. ' +
32
+ 'Docs: https://help.decodo.com/docs/web-scraping-api-google-ads',
31
33
  inputSchema: {
32
34
  query: zod_1.default.string().describe('Search query for Google Ads (e.g., "laptop")'),
33
35
  geo: zod_types_1.zodGeo,
@@ -1 +1 @@
1
- {"version":3,"file":"google-ads-tool.js","sourceRoot":"","sources":["../../../src/tools/google-ads/google-ads-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,2CAAwC;AAExC,+CAA0C;AAC1C,uCAAuE;AACvE,mDAAoF;AACpF,kCAAqD;AAErD,MAAM,WAAW,GAAG,aAAC;KAClB,MAAM,EAAE;KACR,QAAQ,CAAC,qCAAqC,CAAC;KAC/C,QAAQ,EAAE,CAAC;AAEd,MAAa,aAAc,SAAQ,WAAI;IAAvC;;QACE,YAAO,GAAG,mBAAO,CAAC,MAAM,CAAC;QAIzB,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;YACjD,KAAK,MAAM,aAAa,IAAI,aAAa,CAAC,2BAA2B,EAAE,CAAC;gBACtE,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,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;gBACE,KAAK,EAAE,YAAY;gBACnB,WAAW,EAAE,yDAAyD;gBACtE,WAAW,EAAE;oBACX,KAAK,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;oBAC1E,GAAG,EAAE,kBAAM;oBACX,MAAM,EAAE,qBAAS;oBACjB,QAAQ,EAAE,uBAAW;oBACrB,UAAU,EAAE,yBAAa;oBACzB,QAAQ,EAAE,WAAW;iBACtB;gBACD,WAAW,EAAE;oBACX,KAAK,EAAE,YAAY;oBACnB,YAAY,EAAE,IAAI;oBAClB,eAAe,EAAE,KAAK;oBACtB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,cAAiC,EAAE,KAAoB,EAAE,EAAE;gBAChE,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,eAAM,CAAC,SAAS,EACxB,KAAK,EAAE,IAAI,GACe,CAAC;gBAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAE1F,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;;AAxDD,sCAwDC;AArDgB,yCAA2B,GAAG,CAAC,KAAK,CAAC,AAAV,CAAW"}
1
+ {"version":3,"file":"google-ads-tool.js","sourceRoot":"","sources":["../../../src/tools/google-ads/google-ads-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,2CAAwC;AAExC,+CAA0C;AAC1C,uCAAuE;AACvE,mDAAoF;AACpF,kCAAqD;AAErD,MAAM,WAAW,GAAG,aAAC;KAClB,MAAM,EAAE;KACR,QAAQ,CAAC,qCAAqC,CAAC;KAC/C,QAAQ,EAAE,CAAC;AAEd,MAAa,aAAc,SAAQ,WAAI;IAAvC;;QACE,YAAO,GAAG,mBAAO,CAAC,MAAM,CAAC;QAIzB,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;YACjD,KAAK,MAAM,aAAa,IAAI,aAAa,CAAC,2BAA2B,EAAE,CAAC;gBACtE,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,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;gBACE,KAAK,EAAE,YAAY;gBACnB,WAAW,EACT,4IAA4I;oBAC5I,2EAA2E;oBAC3E,gEAAgE;gBAClE,WAAW,EAAE;oBACX,KAAK,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;oBAC1E,GAAG,EAAE,kBAAM;oBACX,MAAM,EAAE,qBAAS;oBACjB,QAAQ,EAAE,uBAAW;oBACrB,UAAU,EAAE,yBAAa;oBACzB,QAAQ,EAAE,WAAW;iBACtB;gBACD,WAAW,EAAE;oBACX,KAAK,EAAE,YAAY;oBACnB,YAAY,EAAE,IAAI;oBAClB,eAAe,EAAE,KAAK;oBACtB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,cAAiC,EAAE,KAAoB,EAAE,EAAE;gBAChE,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,eAAM,CAAC,SAAS,EACxB,KAAK,EAAE,IAAI,GACe,CAAC;gBAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAE1F,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;;AA3DD,sCA2DC;AAxDgB,yCAA2B,GAAG,CAAC,KAAK,CAAC,AAAV,CAAW"}
@@ -23,7 +23,9 @@ class GoogleAiModeTool extends tool_1.Tool {
23
23
  this.register = ({ server, sapiClient, auth }) => {
24
24
  server.registerTool('google_ai_mode', {
25
25
  title: 'Google AI Mode',
26
- description: 'Scrape Google AI Mode (Search with AI) results with automatic parsing',
26
+ description: 'Ask Google AI Mode a question through the Decodo Web Scraping API (`google_ai_mode` target) and return its AI answer as JSON. ' +
27
+ "Use it to see what Google's AI search says about a query. " +
28
+ 'Docs: https://help.decodo.com/docs/web-scraping-api-google-ai-mode',
27
29
  inputSchema: {
28
30
  query: zod_1.default
29
31
  .string()
@@ -1 +1 @@
1
- {"version":3,"file":"google-ai-mode-tool.js","sourceRoot":"","sources":["../../../src/tools/google-ai-mode/google-ai-mode-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,2CAAwC;AAExC,+CAA0C;AAC1C,kCAAqD;AAGrD,MAAM,aAAa,GAAG,aAAC;KACpB,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;KAC3B,QAAQ,CAAC,wCAAwC,CAAC;KAClD,QAAQ,EAAE,CAAC;AAEd,MAAM,MAAM,GAAG,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC,CAAC,QAAQ,EAAE,CAAC;AAEpG,MAAa,gBAAiB,SAAQ,WAAI;IAA1C;;QACE,YAAO,GAAG,mBAAO,CAAC,EAAE,CAAC;QAErB,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;YACjD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,CAAC,CAAC;QAEF,aAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;gBACE,KAAK,EAAE,gBAAgB;gBACvB,WAAW,EAAE,uEAAuE;gBACpF,WAAW,EAAE;oBACX,KAAK,EAAE,aAAC;yBACL,MAAM,EAAE;yBACR,QAAQ,CACP,8EAA8E,CAC/E;oBACH,GAAG,EAAE,MAAM;oBACX,UAAU,EAAE,aAAa;iBAC1B;gBACD,WAAW,EAAE;oBACX,KAAK,EAAE,gBAAgB;oBACvB,YAAY,EAAE,IAAI;oBAClB,eAAe,EAAE,KAAK;oBACtB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,cAAiC,EAAE,KAAoB,EAAE,EAAE;gBAChE,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,eAAM,CAAC,YAAY,EAC3B,KAAK,EAAE,IAAI,GACe,CAAC;gBAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAE1F,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;yBAC3B;qBACF;iBACF,CAAC;YACJ,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CAAA;AAjDD,4CAiDC"}
1
+ {"version":3,"file":"google-ai-mode-tool.js","sourceRoot":"","sources":["../../../src/tools/google-ai-mode/google-ai-mode-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,2CAAwC;AAExC,+CAA0C;AAC1C,kCAAqD;AAGrD,MAAM,aAAa,GAAG,aAAC;KACpB,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;KAC3B,QAAQ,CAAC,wCAAwC,CAAC;KAClD,QAAQ,EAAE,CAAC;AAEd,MAAM,MAAM,GAAG,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC,CAAC,QAAQ,EAAE,CAAC;AAEpG,MAAa,gBAAiB,SAAQ,WAAI;IAA1C;;QACE,YAAO,GAAG,mBAAO,CAAC,EAAE,CAAC;QAErB,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;YACjD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,CAAC,CAAC;QAEF,aAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;gBACE,KAAK,EAAE,gBAAgB;gBACvB,WAAW,EACT,gIAAgI;oBAChI,4DAA4D;oBAC5D,oEAAoE;gBACtE,WAAW,EAAE;oBACX,KAAK,EAAE,aAAC;yBACL,MAAM,EAAE;yBACR,QAAQ,CACP,8EAA8E,CAC/E;oBACH,GAAG,EAAE,MAAM;oBACX,UAAU,EAAE,aAAa;iBAC1B;gBACD,WAAW,EAAE;oBACX,KAAK,EAAE,gBAAgB;oBACvB,YAAY,EAAE,IAAI;oBAClB,eAAe,EAAE,KAAK;oBACtB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,cAAiC,EAAE,KAAoB,EAAE,EAAE;gBAChE,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,eAAM,CAAC,YAAY,EAC3B,KAAK,EAAE,IAAI,GACe,CAAC;gBAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAE1F,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;yBAC3B;qBACF;iBACF,CAAC;YACJ,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CAAA;AApDD,4CAoDC"}
@@ -23,7 +23,9 @@ class GoogleLensTool extends tool_1.Tool {
23
23
  this.register = ({ server, sapiClient, auth }) => {
24
24
  server.registerTool('google_lens', {
25
25
  title: 'Google Lens',
26
- description: 'Scrape Google Lens image search results with automatic parsing',
26
+ description: 'Run a Google Lens image search for an image URL through the Decodo Web Scraping API (`google_lens` target) and return the parsed visual matches as JSON. ' +
27
+ 'Use it to identify what an image shows or find pages where it appears. ' +
28
+ 'Docs: https://help.decodo.com/docs/web-scraping-api-google-lens',
27
29
  inputSchema: {
28
30
  query: zod_1.default.string().describe('Image URL for Google Lens search (e.g., "https://example.com/image.jpg")'),
29
31
  jsRender: zod_types_1.zodJsRender,
@@ -1 +1 @@
1
- {"version":3,"file":"google-lens-tool.js","sourceRoot":"","sources":["../../../src/tools/google-lens/google-lens-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,2CAAwC;AAExC,+CAA0C;AAC1C,uCAAuE;AACvE,mDAAiE;AACjE,kCAAqD;AAErD,MAAa,cAAe,SAAQ,WAAI;IAAxC;;QACE,YAAO,GAAG,mBAAO,CAAC,MAAM,CAAC;QAIzB,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;YACjD,KAAK,MAAM,aAAa,IAAI,cAAc,CAAC,2BAA2B,EAAE,CAAC;gBACvE,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,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;gBACE,KAAK,EAAE,aAAa;gBACpB,WAAW,EAAE,gEAAgE;gBAC7E,WAAW,EAAE;oBACX,KAAK,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;oBACtG,QAAQ,EAAE,uBAAW;oBACrB,UAAU,EAAE,yBAAa;iBAC1B;gBACD,WAAW,EAAE;oBACX,KAAK,EAAE,aAAa;oBACpB,YAAY,EAAE,IAAI;oBAClB,eAAe,EAAE,KAAK;oBACtB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,cAAiC,EAAE,KAAoB,EAAE,EAAE;gBAChE,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,eAAM,CAAC,UAAU,EACzB,KAAK,EAAE,IAAI,GACe,CAAC;gBAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAE1F,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;;AArDD,wCAqDC;AAlDgB,0CAA2B,GAAG,CAAC,eAAe,CAAC,AAApB,CAAqB"}
1
+ {"version":3,"file":"google-lens-tool.js","sourceRoot":"","sources":["../../../src/tools/google-lens/google-lens-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,2CAAwC;AAExC,+CAA0C;AAC1C,uCAAuE;AACvE,mDAAiE;AACjE,kCAAqD;AAErD,MAAa,cAAe,SAAQ,WAAI;IAAxC;;QACE,YAAO,GAAG,mBAAO,CAAC,MAAM,CAAC;QAIzB,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;YACjD,KAAK,MAAM,aAAa,IAAI,cAAc,CAAC,2BAA2B,EAAE,CAAC;gBACvE,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,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;gBACE,KAAK,EAAE,aAAa;gBACpB,WAAW,EACT,2JAA2J;oBAC3J,yEAAyE;oBACzE,iEAAiE;gBACnE,WAAW,EAAE;oBACX,KAAK,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;oBACtG,QAAQ,EAAE,uBAAW;oBACrB,UAAU,EAAE,yBAAa;iBAC1B;gBACD,WAAW,EAAE;oBACX,KAAK,EAAE,aAAa;oBACpB,YAAY,EAAE,IAAI;oBAClB,eAAe,EAAE,KAAK;oBACtB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,cAAiC,EAAE,KAAoB,EAAE,EAAE;gBAChE,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,eAAM,CAAC,UAAU,EACzB,KAAK,EAAE,IAAI,GACe,CAAC;gBAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAE1F,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;;AAxDD,wCAwDC;AArDgB,0CAA2B,GAAG,CAAC,eAAe,CAAC,AAApB,CAAqB"}
@@ -23,7 +23,9 @@ class GoogleSearchTool extends tool_1.Tool {
23
23
  this.register = ({ server, sapiClient, auth }) => {
24
24
  server.registerTool('google_search', {
25
25
  title: 'Google Search',
26
- description: 'Scrape Google Search results with automatic parsing',
26
+ description: 'Search Google through the Decodo Web Scraping API (`google_search` target) and return the parsed results page as JSON, including organic results. ' +
27
+ 'Use it for fresh web results or Google rankings for a query. ' +
28
+ 'Docs: https://help.decodo.com/docs/web-scraping-api-google-search',
27
29
  inputSchema: {
28
30
  query: zod_1.default.string().describe('Search query'),
29
31
  geo: zod_types_1.zodGeo,
@@ -1 +1 @@
1
- {"version":3,"file":"google-search-tool.js","sourceRoot":"","sources":["../../../src/tools/google-search/google-search-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,2CAAwC;AAExC,+CAA0C;AAC1C,uCAAuE;AACvE,mDAAqE;AACrE,kCAAqD;AAErD,MAAa,gBAAiB,SAAQ,WAAI;IAA1C;;QACE,YAAO,GAAG,mBAAO,CAAC,MAAM,CAAC;QAWzB,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;YACjD,KAAK,MAAM,aAAa,IAAI,gBAAgB,CAAC,2BAA2B,EAAE,CAAC;gBACzE,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,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;gBACE,KAAK,EAAE,eAAe;gBACtB,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,KAAK,EAAE,eAAe;oBACtB,YAAY,EAAE,IAAI;oBAClB,eAAe,EAAE,KAAK;oBACtB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,cAAiC,EAAE,KAAoB,EAAE,EAAE;gBAChE,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,eAAM,CAAC,YAAY,EAC3B,KAAK,EAAE,IAAI,GACe,CAAC;gBAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAE1F,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;;AA7DD,4CA6DC;AA1DQ,4CAA2B,GAAG;IACnC,QAAQ;IACR,YAAY;IACZ,uBAAuB;IACvB,UAAU;IACV,sBAAsB;IACtB,wBAAwB;CACzB,AAPiC,CAOhC"}
1
+ {"version":3,"file":"google-search-tool.js","sourceRoot":"","sources":["../../../src/tools/google-search/google-search-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,2CAAwC;AAExC,+CAA0C;AAC1C,uCAAuE;AACvE,mDAAqE;AACrE,kCAAqD;AAErD,MAAa,gBAAiB,SAAQ,WAAI;IAA1C;;QACE,YAAO,GAAG,mBAAO,CAAC,MAAM,CAAC;QAWzB,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;YACjD,KAAK,MAAM,aAAa,IAAI,gBAAgB,CAAC,2BAA2B,EAAE,CAAC;gBACzE,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,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;gBACE,KAAK,EAAE,eAAe;gBACtB,WAAW,EACT,oJAAoJ;oBACpJ,+DAA+D;oBAC/D,mEAAmE;gBACrE,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,KAAK,EAAE,eAAe;oBACtB,YAAY,EAAE,IAAI;oBAClB,eAAe,EAAE,KAAK;oBACtB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,cAAiC,EAAE,KAAoB,EAAE,EAAE;gBAChE,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,eAAM,CAAC,YAAY,EAC3B,KAAK,EAAE,IAAI,GACe,CAAC;gBAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAE1F,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;;AAhED,4CAgEC;AA7DQ,4CAA2B,GAAG;IACnC,QAAQ;IACR,YAAY;IACZ,uBAAuB;IACvB,UAAU;IACV,sBAAsB;IACtB,wBAAwB;CACzB,AAPiC,CAOhC"}
@@ -23,7 +23,9 @@ class GoogleTravelHotelsTool extends tool_1.Tool {
23
23
  this.register = ({ server, sapiClient, auth }) => {
24
24
  server.registerTool('google_travel_hotels', {
25
25
  title: 'Google Travel Hotels',
26
- description: 'Scrape Google Travel Hotels search results',
26
+ description: 'Search Google Travel for hotels through the Decodo Web Scraping API (`google_travel_hotels` target) and return the listings as Markdown. ' +
27
+ 'Use it to find hotel options and prices for a destination. ' +
28
+ 'Docs: https://help.decodo.com/docs/web-scraping-api-google-travel-hotels',
27
29
  inputSchema: {
28
30
  query: zod_1.default.string().describe('Hotel search query (e.g., "trivago", "hotels in Paris")'),
29
31
  jsRender: zod_types_1.zodJsRender,
@@ -1 +1 @@
1
- {"version":3,"file":"google-travel-hotels-tool.js","sourceRoot":"","sources":["../../../src/tools/google-travel-hotels/google-travel-hotels-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,2CAAwC;AAExC,+CAA0C;AAC1C,mDAA4E;AAC5E,kCAAqD;AAGrD,MAAM,WAAW,GAAG,aAAC;KAClB,MAAM,EAAE;KACR,QAAQ,CAAC,qCAAqC,CAAC;KAC/C,QAAQ,EAAE,CAAC;AAEd,MAAa,sBAAuB,SAAQ,WAAI;IAAhD;;QACE,YAAO,GAAG,mBAAO,CAAC,MAAM,CAAC;QAEzB,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;YACjD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,CAAC,CAAC;QAEF,aAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;gBACE,KAAK,EAAE,sBAAsB;gBAC7B,WAAW,EAAE,4CAA4C;gBACzD,WAAW,EAAE;oBACX,KAAK,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;oBACrF,QAAQ,EAAE,uBAAW;oBACrB,MAAM,EAAE,qBAAS;oBACjB,UAAU,EAAE,yBAAa;oBACzB,QAAQ,EAAE,WAAW;iBACtB;gBACD,WAAW,EAAE;oBACX,KAAK,EAAE,sBAAsB;oBAC7B,YAAY,EAAE,IAAI;oBAClB,eAAe,EAAE,KAAK;oBACtB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,cAAiC,EAAE,KAAoB,EAAE,EAAE;gBAChE,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,eAAM,CAAC,kBAAkB,EACjC,QAAQ,EAAE,IAAI,GACY,CAAC;gBAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAE1F,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;yBAC3B;qBACF;iBACF,CAAC;YACJ,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CAAA;AA/CD,wDA+CC"}
1
+ {"version":3,"file":"google-travel-hotels-tool.js","sourceRoot":"","sources":["../../../src/tools/google-travel-hotels/google-travel-hotels-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,2CAAwC;AAExC,+CAA0C;AAC1C,mDAA4E;AAC5E,kCAAqD;AAGrD,MAAM,WAAW,GAAG,aAAC;KAClB,MAAM,EAAE;KACR,QAAQ,CAAC,qCAAqC,CAAC;KAC/C,QAAQ,EAAE,CAAC;AAEd,MAAa,sBAAuB,SAAQ,WAAI;IAAhD;;QACE,YAAO,GAAG,mBAAO,CAAC,MAAM,CAAC;QAEzB,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;YACjD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,CAAC,CAAC;QAEF,aAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;gBACE,KAAK,EAAE,sBAAsB;gBAC7B,WAAW,EACT,2IAA2I;oBAC3I,6DAA6D;oBAC7D,0EAA0E;gBAC5E,WAAW,EAAE;oBACX,KAAK,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;oBACrF,QAAQ,EAAE,uBAAW;oBACrB,MAAM,EAAE,qBAAS;oBACjB,UAAU,EAAE,yBAAa;oBACzB,QAAQ,EAAE,WAAW;iBACtB;gBACD,WAAW,EAAE;oBACX,KAAK,EAAE,sBAAsB;oBAC7B,YAAY,EAAE,IAAI;oBAClB,eAAe,EAAE,KAAK;oBACtB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,cAAiC,EAAE,KAAoB,EAAE,EAAE;gBAChE,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,eAAM,CAAC,kBAAkB,EACjC,QAAQ,EAAE,IAAI,GACY,CAAC;gBAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAE1F,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;yBAC3B;qBACF;iBACF,CAAC;YACJ,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CAAA;AAlDD,wDAkDC"}
@@ -44,4 +44,10 @@ __exportStar(require("./youtube-subtitles"), exports);
44
44
  __exportStar(require("./youtube-search"), exports);
45
45
  __exportStar(require("./scrape-as-markdown"), exports);
46
46
  __exportStar(require("./screenshot"), exports);
47
+ __exportStar(require("./search"), exports);
48
+ __exportStar(require("./map"), exports);
49
+ __exportStar(require("./crawl-start"), exports);
50
+ __exportStar(require("./crawl-status"), exports);
51
+ __exportStar(require("./crawl-results"), exports);
52
+ __exportStar(require("./crawl-cancel"), exports);
47
53
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,mDAAiC;AACjC,mDAAiC;AACjC,mDAAiC;AACjC,uDAAqC;AACrC,gDAA8B;AAC9B,4CAA0B;AAC1B,kDAAgC;AAChC,+CAA6B;AAC7B,gDAA8B;AAC9B,mDAAiC;AACjC,yDAAuC;AACvC,+CAA6B;AAC7B,gDAA8B;AAC9B,qDAAmC;AACnC,gDAA8B;AAC9B,kDAAgC;AAChC,mDAAiC;AACjC,gDAA8B;AAC9B,uDAAqC;AACrC,wDAAsC;AACtC,oDAAkC;AAClC,mDAAiC;AACjC,oDAAkC;AAClC,qDAAmC;AACnC,oDAAkC;AAClC,sDAAoC;AACpC,mDAAiC;AACjC,uDAAqC;AACrC,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,mDAAiC;AACjC,mDAAiC;AACjC,mDAAiC;AACjC,uDAAqC;AACrC,gDAA8B;AAC9B,4CAA0B;AAC1B,kDAAgC;AAChC,+CAA6B;AAC7B,gDAA8B;AAC9B,mDAAiC;AACjC,yDAAuC;AACvC,+CAA6B;AAC7B,gDAA8B;AAC9B,qDAAmC;AACnC,gDAA8B;AAC9B,kDAAgC;AAChC,mDAAiC;AACjC,gDAA8B;AAC9B,uDAAqC;AACrC,wDAAsC;AACtC,oDAAkC;AAClC,mDAAiC;AACjC,oDAAkC;AAClC,qDAAmC;AACnC,oDAAkC;AAClC,sDAAoC;AACpC,mDAAiC;AACjC,uDAAqC;AACrC,+CAA6B;AAC7B,2CAAyB;AACzB,wCAAsB;AACtB,gDAA8B;AAC9B,iDAA+B;AAC/B,kDAAgC;AAChC,iDAA+B"}
@@ -0,0 +1,18 @@
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("./map-tool"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/map/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B"}