@mastra/parallel 0.0.0-om-continuation-hints-20260824180431 → 0.0.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.
package/CHANGELOG.md CHANGED
@@ -1,22 +1,5 @@
1
1
  # @mastra/parallel
2
2
 
3
- ## 0.0.0-om-continuation-hints-20260824180431
4
-
5
- ### Minor Changes
6
-
7
- - Added Parallel Search and Extract tools for Mastra agents through the new `@mastra/parallel` package. ([#22070](https://github.com/mastra-ai/mastra/pull/22070))
8
-
9
- ```typescript
10
- import { createParallelTools } from '@mastra/parallel';
11
-
12
- const tools = createParallelTools();
13
- ```
14
-
15
- ### Patch Changes
16
-
17
- - Updated dependencies [[`79f04a7`](https://github.com/mastra-ai/mastra/commit/79f04a7f6c6829da541139f638f2f1d267916e08), [`65edab1`](https://github.com/mastra-ai/mastra/commit/65edab1c233d17b8f163bad12fca410d0e6f16b1), [`1e47b75`](https://github.com/mastra-ai/mastra/commit/1e47b7520cab4cfaa8daed52f17e2e6d14ff7539), [`ab20a38`](https://github.com/mastra-ai/mastra/commit/ab20a38d0275f8d85e0f3833bd87ef487bcc609f), [`fd4d5fe`](https://github.com/mastra-ai/mastra/commit/fd4d5fe4f943699b85db5e74404f190d5a6b8c2a), [`ae8790c`](https://github.com/mastra-ai/mastra/commit/ae8790c4bfaa088d2ab279d1dcc06f326b9fd109), [`2c85f42`](https://github.com/mastra-ai/mastra/commit/2c85f428e04ccd63ea31a7ec80b5b327afdad555), [`11bbeb9`](https://github.com/mastra-ai/mastra/commit/11bbeb9b108ef2264e05acefc6dafb9cbb342921), [`1a485f3`](https://github.com/mastra-ai/mastra/commit/1a485f3538f5ec64d58bd8b5e1e99de0c695c87b), [`0d37487`](https://github.com/mastra-ai/mastra/commit/0d37487d9f349388a3f1cef6a536cf9dcc4b6273), [`8661d7d`](https://github.com/mastra-ai/mastra/commit/8661d7d7179f0a024456aabdd8679bcecd09ac28), [`dbbfeb8`](https://github.com/mastra-ai/mastra/commit/dbbfeb85ec949dc9ebc0755e1ad262e4f5eba8db), [`575e343`](https://github.com/mastra-ai/mastra/commit/575e343900451021d96110916497d334af7bc252), [`3cc9d00`](https://github.com/mastra-ai/mastra/commit/3cc9d00b2b4333e0377a5e9df5eff92c17ce7630), [`cacb839`](https://github.com/mastra-ai/mastra/commit/cacb8392d9e74189b56d857290b0615f98a2683d), [`c8e4cea`](https://github.com/mastra-ai/mastra/commit/c8e4ceac9a390d78c8327dff3cdb2861dd71957f), [`ed01e9a`](https://github.com/mastra-ai/mastra/commit/ed01e9a807514a904374bf687a7b8f18750f6f78), [`b47b26e`](https://github.com/mastra-ai/mastra/commit/b47b26e6fe95cb8a3482be2c5e52de157fe59d0b), [`0d37487`](https://github.com/mastra-ai/mastra/commit/0d37487d9f349388a3f1cef6a536cf9dcc4b6273), [`733a537`](https://github.com/mastra-ai/mastra/commit/733a537489a858b5880b2e98809334fba895a221), [`9207dfa`](https://github.com/mastra-ai/mastra/commit/9207dfab8062e5fc68b751684797ff86fe0b4e70), [`e737014`](https://github.com/mastra-ai/mastra/commit/e737014e0fc7035759762bb5b48baef1d6c0f6a7), [`f591643`](https://github.com/mastra-ai/mastra/commit/f591643becdf0be9bddce6ba1748e64bc30d77f1), [`b1ad324`](https://github.com/mastra-ai/mastra/commit/b1ad324d657f3544b0701332aef7eb10e9a36258), [`61c566d`](https://github.com/mastra-ai/mastra/commit/61c566dd2f2cde2b23ed8f139924e530d4202214), [`12c61d2`](https://github.com/mastra-ai/mastra/commit/12c61d280c8cb208bc3c8dbcbe5dcc60cf9d1cd0), [`c46eb09`](https://github.com/mastra-ai/mastra/commit/c46eb09ce4987509af57a0ac582c61241a6dd2f1), [`4e9a228`](https://github.com/mastra-ai/mastra/commit/4e9a2283d5fd6ed1b70a2751eb3dc2cbf82ada20), [`d6ce34a`](https://github.com/mastra-ai/mastra/commit/d6ce34aeceb06ddf3d595a1eed5cc74f481a46a1), [`f95f468`](https://github.com/mastra-ai/mastra/commit/f95f468cf1e7c2b924a13826494f98b8f2ccd581), [`30ed33e`](https://github.com/mastra-ai/mastra/commit/30ed33ee14084a26019aba15fceadda6d6ddefaf), [`9a12ef3`](https://github.com/mastra-ai/mastra/commit/9a12ef3fccf3f4186db0f294f4ee1f02cf4d8db2), [`91ad69d`](https://github.com/mastra-ai/mastra/commit/91ad69d64994c89199b0c55399e64ed91c61df2f), [`8dc408d`](https://github.com/mastra-ai/mastra/commit/8dc408d34438f9e13297f792c11a5cfd6cf952e1), [`c92def1`](https://github.com/mastra-ai/mastra/commit/c92def10a13c822972c96f0a4ca6ffc1f4258aed), [`63041eb`](https://github.com/mastra-ai/mastra/commit/63041eb4c50b520a0a80e03d4cd6ea99f67715a0), [`c5eaec5`](https://github.com/mastra-ai/mastra/commit/c5eaec5a860d80d0e3805e67db0414b87ac8cbed), [`e6f8450`](https://github.com/mastra-ai/mastra/commit/e6f845074d478527026b18d85031b23353e1d0a4), [`e66b2ba`](https://github.com/mastra-ai/mastra/commit/e66b2ba100db63eaeab6e21e1ea34b113f2ec781)]:
18
- - @mastra/core@0.0.0-om-continuation-hints-20260824180431
19
-
20
3
  ## 0.1.0-alpha.0
21
4
 
22
5
  ### Minor Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/parallel",
3
- "version": "0.0.0-om-continuation-hints-20260824180431",
3
+ "version": "0.0.0",
4
4
  "description": "Parallel web search and extract tools for Mastra agents",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -22,6 +22,13 @@
22
22
  },
23
23
  "./package.json": "./package.json"
24
24
  },
25
+ "scripts": {
26
+ "build:lib": "tsdown --silent --config tsdown.config.ts",
27
+ "build:watch": "pnpm build:lib --watch",
28
+ "lint": "oxlint . && eslint .",
29
+ "lint:fix": "oxlint --fix . && eslint --fix .",
30
+ "test": "vitest run"
31
+ },
25
32
  "keywords": [
26
33
  "mastra",
27
34
  "parallel",
@@ -47,23 +54,16 @@
47
54
  "parallel-web": "^1.3.0"
48
55
  },
49
56
  "peerDependencies": {
50
- "zod": ">=3.0.0 || >=4.0.0",
51
- "@mastra/core": "0.0.0-om-continuation-hints-20260824180431"
57
+ "@mastra/core": ">=1.0.0-0 <2.0.0-0",
58
+ "zod": ">=3.0.0 || >=4.0.0"
52
59
  },
53
60
  "devDependencies": {
61
+ "@internal/lint": "workspace:*",
62
+ "@internal/types-builder": "workspace:*",
63
+ "@mastra/core": "workspace:*",
54
64
  "tsdown": "0.22.9",
55
- "typescript": "^6.0.3",
56
- "vitest": "4.1.10",
57
- "zod": "^4.4.3",
58
- "@internal/types-builder": "0.0.0-om-continuation-hints-20260824180431",
59
- "@mastra/core": "0.0.0-om-continuation-hints-20260824180431",
60
- "@internal/lint": "0.0.0-om-continuation-hints-20260824180431"
61
- },
62
- "scripts": {
63
- "build:lib": "tsdown --silent --config tsdown.config.ts",
64
- "build:watch": "pnpm build:lib --watch",
65
- "lint": "oxlint . && eslint .",
66
- "lint:fix": "oxlint --fix . && eslint --fix .",
67
- "test": "vitest run"
65
+ "typescript": "catalog:",
66
+ "vitest": "catalog:",
67
+ "zod": "catalog:"
68
68
  }
69
- }
69
+ }
package/LICENSE.md DELETED
@@ -1,30 +0,0 @@
1
- Portions of this software are licensed as follows:
2
-
3
- - All content that resides under any directory named "ee/" within this
4
- repository, including but not limited to:
5
- - `packages/core/src/auth/ee/`
6
- - `packages/server/src/server/auth/ee/`
7
- is licensed under the license defined in `ee/LICENSE`.
8
-
9
- - All third-party components incorporated into the Mastra Software are
10
- licensed under the original license provided by the owner of the
11
- applicable component.
12
-
13
- - Content outside of the above-mentioned directories or restrictions is
14
- available under the "Apache License 2.0" as defined below.
15
-
16
- # Apache License 2.0
17
-
18
- Copyright (c) 2025 Kepler Software, Inc.
19
-
20
- Licensed under the Apache License, Version 2.0 (the "License");
21
- you may not use this file except in compliance with the License.
22
- You may obtain a copy of the License at
23
-
24
- http://www.apache.org/licenses/LICENSE-2.0
25
-
26
- Unless required by applicable law or agreed to in writing, software
27
- distributed under the License is distributed on an "AS IS" BASIS,
28
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29
- See the License for the specific language governing permissions and
30
- limitations under the License.
package/dist/client.d.ts DELETED
@@ -1,7 +0,0 @@
1
- import Parallel from 'parallel-web';
2
- import type { ClientOptions } from 'parallel-web';
3
- export type ParallelClientOptions = ClientOptions;
4
- export type ParallelClient = Parallel;
5
- export declare function getParallelClient(config?: ParallelClientOptions): ParallelClient;
6
- export declare function createLazyParallelClient(config?: ParallelClientOptions): () => ParallelClient;
7
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAClD,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEtC,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,cAAc,CAOhF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,MAAM,cAAc,CAO7F"}
package/dist/extract.d.ts DELETED
@@ -1,42 +0,0 @@
1
- import type { ParallelClientOptions } from './client.js';
2
- export declare function createParallelExtractTool(config?: ParallelClientOptions): import("@mastra/core/tools").Tool<{
3
- urls: string[];
4
- objective?: string | undefined;
5
- searchQueries?: string[] | undefined;
6
- excerptMaxCharsPerResult?: number | undefined;
7
- clientModel?: string | undefined;
8
- fullContent?: number | boolean | undefined;
9
- maxCharsTotal?: number | undefined;
10
- fetchPolicy?: {
11
- maxAgeSeconds?: number | undefined;
12
- timeoutSeconds?: number | undefined;
13
- disableCacheFallback?: boolean | undefined;
14
- } | undefined;
15
- sessionId?: string | undefined;
16
- }, {
17
- extractId: string;
18
- sessionId: string;
19
- results: {
20
- url: string;
21
- excerpts: string[];
22
- title?: string | undefined;
23
- publishDate?: string | undefined;
24
- fullContent?: string | undefined;
25
- }[];
26
- errors: {
27
- url: string;
28
- errorType: string;
29
- httpStatusCode?: number | undefined;
30
- content?: string | undefined;
31
- }[];
32
- usage?: {
33
- name: string;
34
- count: number;
35
- }[] | undefined;
36
- warnings?: {
37
- type: string;
38
- message: string;
39
- detail?: Record<string, unknown> | undefined;
40
- }[] | undefined;
41
- }, unknown, unknown, import("@mastra/core/tools").ToolExecutionContext<unknown, unknown, unknown>, "parallel-extract", unknown>;
42
- //# sourceMappingURL=extract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAuGzD,wBAAgB,yBAAyB,CAAC,MAAM,CAAC,EAAE,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gIAqCvE"}
package/dist/index.cjs DELETED
@@ -1,290 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- //#region \0rolldown/runtime.js
3
- var __create = Object.create;
4
- var __defProp = Object.defineProperty;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getProtoOf = Object.getPrototypeOf;
8
- var __hasOwnProp = Object.prototype.hasOwnProperty;
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
- key = keys[i];
12
- if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
13
- get: ((k) => from[k]).bind(null, key),
14
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
- });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
20
- value: mod,
21
- enumerable: true
22
- }) : target, mod));
23
- //#endregion
24
- let parallel_web = require("parallel-web");
25
- parallel_web = __toESM(parallel_web, 1);
26
- let _mastra_core_tools = require("@mastra/core/tools");
27
- let zod = require("zod");
28
- //#region src/client.ts
29
- function getParallelClient(config) {
30
- const apiKey = config?.apiKey ?? process.env.PARALLEL_API_KEY;
31
- if (!apiKey) throw new Error("Parallel API key is required. Pass { apiKey } or set the PARALLEL_API_KEY environment variable.");
32
- return new parallel_web.default({
33
- ...config,
34
- apiKey
35
- });
36
- }
37
- function createLazyParallelClient(config) {
38
- let client;
39
- return () => {
40
- client ??= getParallelClient(config);
41
- return client;
42
- };
43
- }
44
- //#endregion
45
- //#region src/schemas.ts
46
- const usageItemSchema = zod.z.object({
47
- name: zod.z.string(),
48
- count: zod.z.number()
49
- });
50
- const warningSchema = zod.z.object({
51
- type: zod.z.string(),
52
- message: zod.z.string(),
53
- detail: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
54
- });
55
- const searchResultSchema = zod.z.object({
56
- url: zod.z.string(),
57
- title: zod.z.string().optional(),
58
- publishDate: zod.z.string().optional(),
59
- excerpts: zod.z.array(zod.z.string())
60
- });
61
- const fetchPolicySchema = zod.z.object({
62
- maxAgeSeconds: zod.z.number().int().min(600).optional().describe("Maximum cached-content age in seconds before Parallel attempts a live fetch (minimum 600)."),
63
- timeoutSeconds: zod.z.number().int().positive().optional().describe("Timeout in seconds for a live fetch."),
64
- disableCacheFallback: zod.z.boolean().optional().describe("Return an error instead of older cached content when a live fetch fails or times out.")
65
- });
66
- //#endregion
67
- //#region src/search.ts
68
- const ISO_3166_ALPHA_2_CODES = new Set(`AD AE AF AG AI AL AM AO AQ AR AS AT AU AW AX AZ
69
- BA BB BD BE BF BG BH BI BJ BL BM BN BO BQ BR BS BT BV BW BY BZ
70
- CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CW CX CY CZ
71
- DE DJ DK DM DO DZ EC EE EG EH ER ES ET FI FJ FK FM FO FR
72
- GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY
73
- HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP
74
- KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY
75
- MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ
76
- NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY
77
- QA RE RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR SS ST SV SX SY SZ
78
- TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ
79
- VA VC VE VG VI VN VU WF WS YE YT ZA ZM ZW`.split(/\s+/));
80
- function isValidCalendarDate(value) {
81
- const [yearText, monthText, dayText] = value.split("-");
82
- if (yearText === void 0 || monthText === void 0 || dayText === void 0) return false;
83
- const year = Number(yearText);
84
- const month = Number(monthText);
85
- const day = Number(dayText);
86
- const daysInMonth = [
87
- 31,
88
- year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) ? 29 : 28,
89
- 31,
90
- 30,
91
- 31,
92
- 30,
93
- 31,
94
- 31,
95
- 30,
96
- 31,
97
- 30,
98
- 31
99
- ];
100
- return month >= 1 && month <= 12 && day >= 1 && day <= daysInMonth[month - 1];
101
- }
102
- const inputSchema$1 = zod.z.object({
103
- searchQueries: zod.z.array(zod.z.string().min(1)).min(1).describe("Concise keyword search queries, ideally 3-6 words each. Provide 2-3 queries for best results."),
104
- objective: zod.z.string().optional().describe("A self-contained natural-language description of the goal driving the search."),
105
- mode: zod.z.enum([
106
- "turbo",
107
- "fast",
108
- "basic",
109
- "advanced"
110
- ]).optional().describe("Search mode. Defaults to advanced when omitted."),
111
- clientModel: zod.z.string().optional().describe("Model that will consume the results, used by Parallel to tailor response defaults."),
112
- maxResults: zod.z.number().int().positive().optional().describe("Maximum number of results to return."),
113
- excerptMaxCharsPerResult: zod.z.number().int().positive().optional().describe("Maximum excerpt characters to return for each result."),
114
- maxCharsTotal: zod.z.number().int().positive().optional().describe("Maximum total excerpt characters across all results."),
115
- location: zod.z.string().refine((value) => ISO_3166_ALPHA_2_CODES.has(value.toUpperCase()), { message: "location must be a valid ISO 3166-1 alpha-2 country code." }).optional().describe("ISO 3166-1 alpha-2 country code for geo-targeted results."),
116
- includeDomains: zod.z.array(zod.z.string()).max(200).optional().describe("Only return results from these domains."),
117
- excludeDomains: zod.z.array(zod.z.string()).max(200).optional().describe("Exclude results from these domains."),
118
- afterDate: zod.z.string().regex(/^\d{4}-\d{2}-\d{2}$/).refine(isValidCalendarDate, { message: "afterDate must be a valid calendar date in YYYY-MM-DD format." }).optional().describe("Only return content published on or after this YYYY-MM-DD date."),
119
- fetchPolicy: fetchPolicySchema.optional().describe("Live-fetch and cached-content policy for search results."),
120
- sessionId: zod.z.string().optional().describe("Session identifier shared across related Search and Extract calls.")
121
- }).refine((input) => (input.includeDomains?.length ?? 0) + (input.excludeDomains?.length ?? 0) <= 200, {
122
- message: "includeDomains and excludeDomains can contain at most 200 domains combined.",
123
- path: ["includeDomains"]
124
- });
125
- const outputSchema$1 = zod.z.object({
126
- searchId: zod.z.string(),
127
- sessionId: zod.z.string(),
128
- results: zod.z.array(searchResultSchema),
129
- usage: zod.z.array(usageItemSchema).optional(),
130
- warnings: zod.z.array(warningSchema).optional()
131
- });
132
- function toFetchPolicy$1(input) {
133
- return {
134
- max_age_seconds: input.maxAgeSeconds,
135
- timeout_seconds: input.timeoutSeconds,
136
- disable_cache_fallback: input.disableCacheFallback
137
- };
138
- }
139
- function toSearchParams(input) {
140
- const params = { search_queries: input.searchQueries };
141
- if (input.objective !== void 0) params.objective = input.objective;
142
- if (input.mode !== void 0) params.mode = input.mode;
143
- if (input.clientModel !== void 0) params.client_model = input.clientModel;
144
- if (input.maxCharsTotal !== void 0) params.max_chars_total = input.maxCharsTotal;
145
- if (input.sessionId !== void 0) params.session_id = input.sessionId;
146
- const sourcePolicy = input.includeDomains !== void 0 || input.excludeDomains !== void 0 || input.afterDate !== void 0 ? {
147
- include_domains: input.includeDomains,
148
- exclude_domains: input.excludeDomains,
149
- after_date: input.afterDate
150
- } : void 0;
151
- if (input.maxResults !== void 0 || input.excerptMaxCharsPerResult !== void 0 || input.location !== void 0 || sourcePolicy !== void 0 || input.fetchPolicy !== void 0) params.advanced_settings = {
152
- max_results: input.maxResults,
153
- excerpt_settings: input.excerptMaxCharsPerResult === void 0 ? void 0 : { max_chars_per_result: input.excerptMaxCharsPerResult },
154
- location: input.location,
155
- source_policy: sourcePolicy,
156
- fetch_policy: input.fetchPolicy === void 0 ? void 0 : toFetchPolicy$1(input.fetchPolicy)
157
- };
158
- return params;
159
- }
160
- function createParallelSearchTool(config) {
161
- const getClient = createLazyParallelClient(config);
162
- return (0, _mastra_core_tools.createTool)({
163
- id: "parallel-search",
164
- description: "Search the web with Parallel. Returns ranked URLs and token-efficient excerpts focused on the search objective.",
165
- inputSchema: inputSchema$1,
166
- outputSchema: outputSchema$1,
167
- execute: async (input) => {
168
- const response = await getClient().search(toSearchParams(input));
169
- return {
170
- searchId: response.search_id,
171
- sessionId: response.session_id,
172
- results: response.results.map((result) => ({
173
- url: result.url,
174
- title: result.title ?? void 0,
175
- publishDate: result.publish_date ?? void 0,
176
- excerpts: result.excerpts
177
- })),
178
- usage: response.usage ?? void 0,
179
- warnings: response.warnings?.map((warning) => ({
180
- type: warning.type,
181
- message: warning.message,
182
- detail: warning.detail ?? void 0
183
- }))
184
- };
185
- }
186
- });
187
- }
188
- //#endregion
189
- //#region src/extract.ts
190
- const inputSchema = zod.z.object({
191
- urls: zod.z.array(zod.z.string().url()).min(1).max(20).describe("URLs to extract content from (1-20)."),
192
- objective: zod.z.string().optional().describe("A natural-language description of the information to focus on while extracting."),
193
- searchQueries: zod.z.array(zod.z.string().min(1)).min(1).optional().describe("Optional keyword queries used with the objective to focus excerpts."),
194
- excerptMaxCharsPerResult: zod.z.number().int().positive().optional().describe("Maximum excerpt characters to return for each URL."),
195
- clientModel: zod.z.string().optional().describe("Model that will consume the results, used by Parallel to tailor response defaults."),
196
- fullContent: zod.z.union([zod.z.boolean(), zod.z.number().int().positive()]).optional().describe("Return full page content. Pass a character limit instead of true to cap content per URL."),
197
- maxCharsTotal: zod.z.number().int().positive().optional().describe("Maximum total characters across all extracted results."),
198
- fetchPolicy: fetchPolicySchema.optional().describe("Live-fetch and cached-content policy for extracted URLs."),
199
- sessionId: zod.z.string().optional().describe("Session identifier shared across related Search and Extract calls.")
200
- });
201
- const outputSchema = zod.z.object({
202
- extractId: zod.z.string(),
203
- sessionId: zod.z.string(),
204
- results: zod.z.array(zod.z.object({
205
- url: zod.z.string(),
206
- title: zod.z.string().optional(),
207
- publishDate: zod.z.string().optional(),
208
- excerpts: zod.z.array(zod.z.string()),
209
- fullContent: zod.z.string().optional()
210
- })),
211
- errors: zod.z.array(zod.z.object({
212
- url: zod.z.string(),
213
- errorType: zod.z.string(),
214
- httpStatusCode: zod.z.number().optional(),
215
- content: zod.z.string().optional()
216
- })),
217
- usage: zod.z.array(usageItemSchema).optional(),
218
- warnings: zod.z.array(warningSchema).optional()
219
- });
220
- function toFetchPolicy(input) {
221
- return {
222
- max_age_seconds: input.maxAgeSeconds,
223
- timeout_seconds: input.timeoutSeconds,
224
- disable_cache_fallback: input.disableCacheFallback
225
- };
226
- }
227
- function toExtractParams(input) {
228
- const params = { urls: input.urls };
229
- if (input.objective !== void 0) params.objective = input.objective;
230
- if (input.searchQueries !== void 0) params.search_queries = input.searchQueries;
231
- if (input.clientModel !== void 0) params.client_model = input.clientModel;
232
- if (input.maxCharsTotal !== void 0) params.max_chars_total = input.maxCharsTotal;
233
- if (input.sessionId !== void 0) params.session_id = input.sessionId;
234
- if (input.excerptMaxCharsPerResult !== void 0 || input.fullContent !== void 0 || input.fetchPolicy !== void 0) params.advanced_settings = {
235
- excerpt_settings: input.excerptMaxCharsPerResult === void 0 ? void 0 : { max_chars_per_result: input.excerptMaxCharsPerResult },
236
- full_content: typeof input.fullContent === "number" ? { max_chars_per_result: input.fullContent } : input.fullContent,
237
- fetch_policy: input.fetchPolicy === void 0 ? void 0 : toFetchPolicy(input.fetchPolicy)
238
- };
239
- return params;
240
- }
241
- function createParallelExtractTool(config) {
242
- const getClient = createLazyParallelClient(config);
243
- return (0, _mastra_core_tools.createTool)({
244
- id: "parallel-extract",
245
- description: "Extract relevant excerpts or full page content from URLs with Parallel. Returns successful results and per-URL errors.",
246
- inputSchema,
247
- outputSchema,
248
- execute: async (input) => {
249
- const response = await getClient().extract(toExtractParams(input));
250
- return {
251
- extractId: response.extract_id,
252
- sessionId: response.session_id,
253
- results: response.results.map((result) => ({
254
- url: result.url,
255
- title: result.title ?? void 0,
256
- publishDate: result.publish_date ?? void 0,
257
- excerpts: result.excerpts,
258
- fullContent: result.full_content ?? void 0
259
- })),
260
- errors: response.errors.map((error) => ({
261
- url: error.url,
262
- errorType: error.error_type,
263
- httpStatusCode: error.http_status_code ?? void 0,
264
- content: error.content ?? void 0
265
- })),
266
- usage: response.usage ?? void 0,
267
- warnings: response.warnings?.map((warning) => ({
268
- type: warning.type,
269
- message: warning.message,
270
- detail: warning.detail ?? void 0
271
- }))
272
- };
273
- }
274
- });
275
- }
276
- //#endregion
277
- //#region src/tools.ts
278
- function createParallelTools(config) {
279
- return {
280
- parallelSearch: createParallelSearchTool(config),
281
- parallelExtract: createParallelExtractTool(config)
282
- };
283
- }
284
- //#endregion
285
- exports.createParallelExtractTool = createParallelExtractTool;
286
- exports.createParallelSearchTool = createParallelSearchTool;
287
- exports.createParallelTools = createParallelTools;
288
- exports.getParallelClient = getParallelClient;
289
-
290
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","names":["Parallel","z","inputSchema","z","outputSchema","toFetchPolicy","z"],"sources":["../src/client.ts","../src/schemas.ts","../src/search.ts","../src/extract.ts","../src/tools.ts"],"sourcesContent":["import Parallel from 'parallel-web';\nimport type { ClientOptions } from 'parallel-web';\n\nexport type ParallelClientOptions = ClientOptions;\nexport type ParallelClient = Parallel;\n\nexport function getParallelClient(config?: ParallelClientOptions): ParallelClient {\n const apiKey = config?.apiKey ?? process.env.PARALLEL_API_KEY;\n if (!apiKey) {\n throw new Error('Parallel API key is required. Pass { apiKey } or set the PARALLEL_API_KEY environment variable.');\n }\n\n return new Parallel({ ...config, apiKey });\n}\n\nexport function createLazyParallelClient(config?: ParallelClientOptions): () => ParallelClient {\n let client: ParallelClient | undefined;\n\n return () => {\n client ??= getParallelClient(config);\n return client;\n };\n}\n","import { z } from 'zod';\n\nexport const usageItemSchema = z.object({\n name: z.string(),\n count: z.number(),\n});\n\nexport const warningSchema = z.object({\n type: z.string(),\n message: z.string(),\n detail: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const searchResultSchema = z.object({\n url: z.string(),\n title: z.string().optional(),\n publishDate: z.string().optional(),\n excerpts: z.array(z.string()),\n});\n\nexport const fetchPolicySchema = z.object({\n maxAgeSeconds: z\n .number()\n .int()\n .min(600)\n .optional()\n .describe('Maximum cached-content age in seconds before Parallel attempts a live fetch (minimum 600).'),\n timeoutSeconds: z.number().int().positive().optional().describe('Timeout in seconds for a live fetch.'),\n disableCacheFallback: z\n .boolean()\n .optional()\n .describe('Return an error instead of older cached content when a live fetch fails or times out.'),\n});\n\nexport type FetchPolicyInput = z.infer<typeof fetchPolicySchema>;\n","import { createTool } from '@mastra/core/tools';\nimport type Parallel from 'parallel-web';\nimport { z } from 'zod';\n\nimport { createLazyParallelClient } from './client.js';\nimport type { ParallelClientOptions } from './client.js';\nimport { fetchPolicySchema, searchResultSchema, usageItemSchema, warningSchema } from './schemas.js';\nimport type { FetchPolicyInput } from './schemas.js';\n\nconst ISO_3166_ALPHA_2_CODES = new Set(\n `AD AE AF AG AI AL AM AO AQ AR AS AT AU AW AX AZ\nBA BB BD BE BF BG BH BI BJ BL BM BN BO BQ BR BS BT BV BW BY BZ\nCA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CW CX CY CZ\nDE DJ DK DM DO DZ EC EE EG EH ER ES ET FI FJ FK FM FO FR\nGA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY\nHK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP\nKE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY\nMA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ\nNA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY\nQA RE RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR SS ST SV SX SY SZ\nTC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ\nVA VC VE VG VI VN VU WF WS YE YT ZA ZM ZW`\n .split(/\\s+/),\n);\n\nfunction isValidCalendarDate(value: string): boolean {\n const [yearText, monthText, dayText] = value.split('-');\n if (yearText === undefined || monthText === undefined || dayText === undefined) return false;\n\n const year = Number(yearText);\n const month = Number(monthText);\n const day = Number(dayText);\n const daysInMonth = [\n 31,\n year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) ? 29 : 28,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31,\n ];\n\n return month >= 1 && month <= 12 && day >= 1 && day <= daysInMonth[month - 1]!;\n}\n\nconst inputSchema = z\n .object({\n searchQueries: z\n .array(z.string().min(1))\n .min(1)\n .describe('Concise keyword search queries, ideally 3-6 words each. Provide 2-3 queries for best results.'),\n objective: z\n .string()\n .optional()\n .describe('A self-contained natural-language description of the goal driving the search.'),\n mode: z\n .enum(['turbo', 'fast', 'basic', 'advanced'])\n .optional()\n .describe('Search mode. Defaults to advanced when omitted.'),\n clientModel: z\n .string()\n .optional()\n .describe('Model that will consume the results, used by Parallel to tailor response defaults.'),\n maxResults: z.number().int().positive().optional().describe('Maximum number of results to return.'),\n excerptMaxCharsPerResult: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Maximum excerpt characters to return for each result.'),\n maxCharsTotal: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Maximum total excerpt characters across all results.'),\n location: z\n .string()\n .refine(value => ISO_3166_ALPHA_2_CODES.has(value.toUpperCase()), {\n message: 'location must be a valid ISO 3166-1 alpha-2 country code.',\n })\n .optional()\n .describe('ISO 3166-1 alpha-2 country code for geo-targeted results.'),\n includeDomains: z.array(z.string()).max(200).optional().describe('Only return results from these domains.'),\n excludeDomains: z.array(z.string()).max(200).optional().describe('Exclude results from these domains.'),\n afterDate: z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/)\n .refine(isValidCalendarDate, { message: 'afterDate must be a valid calendar date in YYYY-MM-DD format.' })\n .optional()\n .describe('Only return content published on or after this YYYY-MM-DD date.'),\n fetchPolicy: fetchPolicySchema.optional().describe('Live-fetch and cached-content policy for search results.'),\n sessionId: z.string().optional().describe('Session identifier shared across related Search and Extract calls.'),\n })\n .refine(input => (input.includeDomains?.length ?? 0) + (input.excludeDomains?.length ?? 0) <= 200, {\n message: 'includeDomains and excludeDomains can contain at most 200 domains combined.',\n path: ['includeDomains'],\n });\n\nconst outputSchema = z.object({\n searchId: z.string(),\n sessionId: z.string(),\n results: z.array(searchResultSchema),\n usage: z.array(usageItemSchema).optional(),\n warnings: z.array(warningSchema).optional(),\n});\n\ntype SearchInput = z.infer<typeof inputSchema>;\n\nfunction toFetchPolicy(input: FetchPolicyInput): Parallel.FetchPolicy {\n return {\n max_age_seconds: input.maxAgeSeconds,\n timeout_seconds: input.timeoutSeconds,\n disable_cache_fallback: input.disableCacheFallback,\n };\n}\n\nfunction toSearchParams(input: SearchInput): Parallel.SearchParams {\n const params: Parallel.SearchParams = {\n search_queries: input.searchQueries,\n };\n\n if (input.objective !== undefined) params.objective = input.objective;\n if (input.mode !== undefined) params.mode = input.mode;\n if (input.clientModel !== undefined) params.client_model = input.clientModel;\n if (input.maxCharsTotal !== undefined) params.max_chars_total = input.maxCharsTotal;\n if (input.sessionId !== undefined) params.session_id = input.sessionId;\n\n const sourcePolicy =\n input.includeDomains !== undefined || input.excludeDomains !== undefined || input.afterDate !== undefined\n ? {\n include_domains: input.includeDomains,\n exclude_domains: input.excludeDomains,\n after_date: input.afterDate,\n }\n : undefined;\n\n if (\n input.maxResults !== undefined ||\n input.excerptMaxCharsPerResult !== undefined ||\n input.location !== undefined ||\n sourcePolicy !== undefined ||\n input.fetchPolicy !== undefined\n ) {\n params.advanced_settings = {\n max_results: input.maxResults,\n excerpt_settings:\n input.excerptMaxCharsPerResult === undefined\n ? undefined\n : { max_chars_per_result: input.excerptMaxCharsPerResult },\n location: input.location,\n source_policy: sourcePolicy,\n fetch_policy: input.fetchPolicy === undefined ? undefined : toFetchPolicy(input.fetchPolicy),\n };\n }\n\n return params;\n}\n\nexport function createParallelSearchTool(config?: ParallelClientOptions) {\n const getClient = createLazyParallelClient(config);\n\n return createTool({\n id: 'parallel-search',\n description:\n 'Search the web with Parallel. Returns ranked URLs and token-efficient excerpts focused on the search objective.',\n inputSchema,\n outputSchema,\n execute: async input => {\n const response = await getClient().search(toSearchParams(input));\n\n return {\n searchId: response.search_id,\n sessionId: response.session_id,\n results: response.results.map(result => ({\n url: result.url,\n title: result.title ?? undefined,\n publishDate: result.publish_date ?? undefined,\n excerpts: result.excerpts,\n })),\n usage: response.usage ?? undefined,\n warnings: response.warnings?.map(warning => ({\n type: warning.type,\n message: warning.message,\n detail: warning.detail ?? undefined,\n })),\n };\n },\n });\n}\n","import { createTool } from '@mastra/core/tools';\nimport type Parallel from 'parallel-web';\nimport { z } from 'zod';\n\nimport { createLazyParallelClient } from './client.js';\nimport type { ParallelClientOptions } from './client.js';\nimport { fetchPolicySchema, usageItemSchema, warningSchema } from './schemas.js';\nimport type { FetchPolicyInput } from './schemas.js';\n\nconst inputSchema = z.object({\n urls: z.array(z.string().url()).min(1).max(20).describe('URLs to extract content from (1-20).'),\n objective: z\n .string()\n .optional()\n .describe('A natural-language description of the information to focus on while extracting.'),\n searchQueries: z\n .array(z.string().min(1))\n .min(1)\n .optional()\n .describe('Optional keyword queries used with the objective to focus excerpts.'),\n excerptMaxCharsPerResult: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Maximum excerpt characters to return for each URL.'),\n clientModel: z\n .string()\n .optional()\n .describe('Model that will consume the results, used by Parallel to tailor response defaults.'),\n fullContent: z\n .union([z.boolean(), z.number().int().positive()])\n .optional()\n .describe('Return full page content. Pass a character limit instead of true to cap content per URL.'),\n maxCharsTotal: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Maximum total characters across all extracted results.'),\n fetchPolicy: fetchPolicySchema.optional().describe('Live-fetch and cached-content policy for extracted URLs.'),\n sessionId: z.string().optional().describe('Session identifier shared across related Search and Extract calls.'),\n});\n\nconst outputSchema = z.object({\n extractId: z.string(),\n sessionId: z.string(),\n results: z.array(\n z.object({\n url: z.string(),\n title: z.string().optional(),\n publishDate: z.string().optional(),\n excerpts: z.array(z.string()),\n fullContent: z.string().optional(),\n }),\n ),\n errors: z.array(\n z.object({\n url: z.string(),\n errorType: z.string(),\n httpStatusCode: z.number().optional(),\n content: z.string().optional(),\n }),\n ),\n usage: z.array(usageItemSchema).optional(),\n warnings: z.array(warningSchema).optional(),\n});\n\ntype ExtractInput = z.infer<typeof inputSchema>;\n\nfunction toFetchPolicy(input: FetchPolicyInput): Parallel.FetchPolicy {\n return {\n max_age_seconds: input.maxAgeSeconds,\n timeout_seconds: input.timeoutSeconds,\n disable_cache_fallback: input.disableCacheFallback,\n };\n}\n\nfunction toExtractParams(input: ExtractInput): Parallel.ExtractParams {\n const params: Parallel.ExtractParams = {\n urls: input.urls,\n };\n\n if (input.objective !== undefined) params.objective = input.objective;\n if (input.searchQueries !== undefined) params.search_queries = input.searchQueries;\n if (input.clientModel !== undefined) params.client_model = input.clientModel;\n if (input.maxCharsTotal !== undefined) params.max_chars_total = input.maxCharsTotal;\n if (input.sessionId !== undefined) params.session_id = input.sessionId;\n\n if (\n input.excerptMaxCharsPerResult !== undefined ||\n input.fullContent !== undefined ||\n input.fetchPolicy !== undefined\n ) {\n params.advanced_settings = {\n excerpt_settings:\n input.excerptMaxCharsPerResult === undefined\n ? undefined\n : { max_chars_per_result: input.excerptMaxCharsPerResult },\n full_content:\n typeof input.fullContent === 'number' ? { max_chars_per_result: input.fullContent } : input.fullContent,\n fetch_policy: input.fetchPolicy === undefined ? undefined : toFetchPolicy(input.fetchPolicy),\n };\n }\n\n return params;\n}\n\nexport function createParallelExtractTool(config?: ParallelClientOptions) {\n const getClient = createLazyParallelClient(config);\n\n return createTool({\n id: 'parallel-extract',\n description:\n 'Extract relevant excerpts or full page content from URLs with Parallel. Returns successful results and per-URL errors.',\n inputSchema,\n outputSchema,\n execute: async input => {\n const response = await getClient().extract(toExtractParams(input));\n\n return {\n extractId: response.extract_id,\n sessionId: response.session_id,\n results: response.results.map(result => ({\n url: result.url,\n title: result.title ?? undefined,\n publishDate: result.publish_date ?? undefined,\n excerpts: result.excerpts,\n fullContent: result.full_content ?? undefined,\n })),\n errors: response.errors.map(error => ({\n url: error.url,\n errorType: error.error_type,\n httpStatusCode: error.http_status_code ?? undefined,\n content: error.content ?? undefined,\n })),\n usage: response.usage ?? undefined,\n warnings: response.warnings?.map(warning => ({\n type: warning.type,\n message: warning.message,\n detail: warning.detail ?? undefined,\n })),\n };\n },\n });\n}\n","import type { ParallelClientOptions } from './client.js';\nimport { createParallelExtractTool } from './extract.js';\nimport { createParallelSearchTool } from './search.js';\n\nexport function createParallelTools(config?: ParallelClientOptions) {\n return {\n parallelSearch: createParallelSearchTool(config),\n parallelExtract: createParallelExtractTool(config),\n };\n}\n"],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export { getParallelClient, type ParallelClientOptions, type ParallelClient } from './client.js';
2
- export { createParallelSearchTool } from './search.js';
3
- export { createParallelExtractTool } from './extract.js';
4
- export { createParallelTools } from './tools.js';
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACjG,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js DELETED
@@ -1,263 +0,0 @@
1
- import Parallel from "parallel-web";
2
- import { createTool } from "@mastra/core/tools";
3
- import { z } from "zod";
4
- //#region src/client.ts
5
- function getParallelClient(config) {
6
- const apiKey = config?.apiKey ?? process.env.PARALLEL_API_KEY;
7
- if (!apiKey) throw new Error("Parallel API key is required. Pass { apiKey } or set the PARALLEL_API_KEY environment variable.");
8
- return new Parallel({
9
- ...config,
10
- apiKey
11
- });
12
- }
13
- function createLazyParallelClient(config) {
14
- let client;
15
- return () => {
16
- client ??= getParallelClient(config);
17
- return client;
18
- };
19
- }
20
- //#endregion
21
- //#region src/schemas.ts
22
- const usageItemSchema = z.object({
23
- name: z.string(),
24
- count: z.number()
25
- });
26
- const warningSchema = z.object({
27
- type: z.string(),
28
- message: z.string(),
29
- detail: z.record(z.string(), z.unknown()).optional()
30
- });
31
- const searchResultSchema = z.object({
32
- url: z.string(),
33
- title: z.string().optional(),
34
- publishDate: z.string().optional(),
35
- excerpts: z.array(z.string())
36
- });
37
- const fetchPolicySchema = z.object({
38
- maxAgeSeconds: z.number().int().min(600).optional().describe("Maximum cached-content age in seconds before Parallel attempts a live fetch (minimum 600)."),
39
- timeoutSeconds: z.number().int().positive().optional().describe("Timeout in seconds for a live fetch."),
40
- disableCacheFallback: z.boolean().optional().describe("Return an error instead of older cached content when a live fetch fails or times out.")
41
- });
42
- //#endregion
43
- //#region src/search.ts
44
- const ISO_3166_ALPHA_2_CODES = new Set(`AD AE AF AG AI AL AM AO AQ AR AS AT AU AW AX AZ
45
- BA BB BD BE BF BG BH BI BJ BL BM BN BO BQ BR BS BT BV BW BY BZ
46
- CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CW CX CY CZ
47
- DE DJ DK DM DO DZ EC EE EG EH ER ES ET FI FJ FK FM FO FR
48
- GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY
49
- HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP
50
- KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY
51
- MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ
52
- NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY
53
- QA RE RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR SS ST SV SX SY SZ
54
- TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ
55
- VA VC VE VG VI VN VU WF WS YE YT ZA ZM ZW`.split(/\s+/));
56
- function isValidCalendarDate(value) {
57
- const [yearText, monthText, dayText] = value.split("-");
58
- if (yearText === void 0 || monthText === void 0 || dayText === void 0) return false;
59
- const year = Number(yearText);
60
- const month = Number(monthText);
61
- const day = Number(dayText);
62
- const daysInMonth = [
63
- 31,
64
- year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) ? 29 : 28,
65
- 31,
66
- 30,
67
- 31,
68
- 30,
69
- 31,
70
- 31,
71
- 30,
72
- 31,
73
- 30,
74
- 31
75
- ];
76
- return month >= 1 && month <= 12 && day >= 1 && day <= daysInMonth[month - 1];
77
- }
78
- const inputSchema$1 = z.object({
79
- searchQueries: z.array(z.string().min(1)).min(1).describe("Concise keyword search queries, ideally 3-6 words each. Provide 2-3 queries for best results."),
80
- objective: z.string().optional().describe("A self-contained natural-language description of the goal driving the search."),
81
- mode: z.enum([
82
- "turbo",
83
- "fast",
84
- "basic",
85
- "advanced"
86
- ]).optional().describe("Search mode. Defaults to advanced when omitted."),
87
- clientModel: z.string().optional().describe("Model that will consume the results, used by Parallel to tailor response defaults."),
88
- maxResults: z.number().int().positive().optional().describe("Maximum number of results to return."),
89
- excerptMaxCharsPerResult: z.number().int().positive().optional().describe("Maximum excerpt characters to return for each result."),
90
- maxCharsTotal: z.number().int().positive().optional().describe("Maximum total excerpt characters across all results."),
91
- location: z.string().refine((value) => ISO_3166_ALPHA_2_CODES.has(value.toUpperCase()), { message: "location must be a valid ISO 3166-1 alpha-2 country code." }).optional().describe("ISO 3166-1 alpha-2 country code for geo-targeted results."),
92
- includeDomains: z.array(z.string()).max(200).optional().describe("Only return results from these domains."),
93
- excludeDomains: z.array(z.string()).max(200).optional().describe("Exclude results from these domains."),
94
- afterDate: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).refine(isValidCalendarDate, { message: "afterDate must be a valid calendar date in YYYY-MM-DD format." }).optional().describe("Only return content published on or after this YYYY-MM-DD date."),
95
- fetchPolicy: fetchPolicySchema.optional().describe("Live-fetch and cached-content policy for search results."),
96
- sessionId: z.string().optional().describe("Session identifier shared across related Search and Extract calls.")
97
- }).refine((input) => (input.includeDomains?.length ?? 0) + (input.excludeDomains?.length ?? 0) <= 200, {
98
- message: "includeDomains and excludeDomains can contain at most 200 domains combined.",
99
- path: ["includeDomains"]
100
- });
101
- const outputSchema$1 = z.object({
102
- searchId: z.string(),
103
- sessionId: z.string(),
104
- results: z.array(searchResultSchema),
105
- usage: z.array(usageItemSchema).optional(),
106
- warnings: z.array(warningSchema).optional()
107
- });
108
- function toFetchPolicy$1(input) {
109
- return {
110
- max_age_seconds: input.maxAgeSeconds,
111
- timeout_seconds: input.timeoutSeconds,
112
- disable_cache_fallback: input.disableCacheFallback
113
- };
114
- }
115
- function toSearchParams(input) {
116
- const params = { search_queries: input.searchQueries };
117
- if (input.objective !== void 0) params.objective = input.objective;
118
- if (input.mode !== void 0) params.mode = input.mode;
119
- if (input.clientModel !== void 0) params.client_model = input.clientModel;
120
- if (input.maxCharsTotal !== void 0) params.max_chars_total = input.maxCharsTotal;
121
- if (input.sessionId !== void 0) params.session_id = input.sessionId;
122
- const sourcePolicy = input.includeDomains !== void 0 || input.excludeDomains !== void 0 || input.afterDate !== void 0 ? {
123
- include_domains: input.includeDomains,
124
- exclude_domains: input.excludeDomains,
125
- after_date: input.afterDate
126
- } : void 0;
127
- if (input.maxResults !== void 0 || input.excerptMaxCharsPerResult !== void 0 || input.location !== void 0 || sourcePolicy !== void 0 || input.fetchPolicy !== void 0) params.advanced_settings = {
128
- max_results: input.maxResults,
129
- excerpt_settings: input.excerptMaxCharsPerResult === void 0 ? void 0 : { max_chars_per_result: input.excerptMaxCharsPerResult },
130
- location: input.location,
131
- source_policy: sourcePolicy,
132
- fetch_policy: input.fetchPolicy === void 0 ? void 0 : toFetchPolicy$1(input.fetchPolicy)
133
- };
134
- return params;
135
- }
136
- function createParallelSearchTool(config) {
137
- const getClient = createLazyParallelClient(config);
138
- return createTool({
139
- id: "parallel-search",
140
- description: "Search the web with Parallel. Returns ranked URLs and token-efficient excerpts focused on the search objective.",
141
- inputSchema: inputSchema$1,
142
- outputSchema: outputSchema$1,
143
- execute: async (input) => {
144
- const response = await getClient().search(toSearchParams(input));
145
- return {
146
- searchId: response.search_id,
147
- sessionId: response.session_id,
148
- results: response.results.map((result) => ({
149
- url: result.url,
150
- title: result.title ?? void 0,
151
- publishDate: result.publish_date ?? void 0,
152
- excerpts: result.excerpts
153
- })),
154
- usage: response.usage ?? void 0,
155
- warnings: response.warnings?.map((warning) => ({
156
- type: warning.type,
157
- message: warning.message,
158
- detail: warning.detail ?? void 0
159
- }))
160
- };
161
- }
162
- });
163
- }
164
- //#endregion
165
- //#region src/extract.ts
166
- const inputSchema = z.object({
167
- urls: z.array(z.string().url()).min(1).max(20).describe("URLs to extract content from (1-20)."),
168
- objective: z.string().optional().describe("A natural-language description of the information to focus on while extracting."),
169
- searchQueries: z.array(z.string().min(1)).min(1).optional().describe("Optional keyword queries used with the objective to focus excerpts."),
170
- excerptMaxCharsPerResult: z.number().int().positive().optional().describe("Maximum excerpt characters to return for each URL."),
171
- clientModel: z.string().optional().describe("Model that will consume the results, used by Parallel to tailor response defaults."),
172
- fullContent: z.union([z.boolean(), z.number().int().positive()]).optional().describe("Return full page content. Pass a character limit instead of true to cap content per URL."),
173
- maxCharsTotal: z.number().int().positive().optional().describe("Maximum total characters across all extracted results."),
174
- fetchPolicy: fetchPolicySchema.optional().describe("Live-fetch and cached-content policy for extracted URLs."),
175
- sessionId: z.string().optional().describe("Session identifier shared across related Search and Extract calls.")
176
- });
177
- const outputSchema = z.object({
178
- extractId: z.string(),
179
- sessionId: z.string(),
180
- results: z.array(z.object({
181
- url: z.string(),
182
- title: z.string().optional(),
183
- publishDate: z.string().optional(),
184
- excerpts: z.array(z.string()),
185
- fullContent: z.string().optional()
186
- })),
187
- errors: z.array(z.object({
188
- url: z.string(),
189
- errorType: z.string(),
190
- httpStatusCode: z.number().optional(),
191
- content: z.string().optional()
192
- })),
193
- usage: z.array(usageItemSchema).optional(),
194
- warnings: z.array(warningSchema).optional()
195
- });
196
- function toFetchPolicy(input) {
197
- return {
198
- max_age_seconds: input.maxAgeSeconds,
199
- timeout_seconds: input.timeoutSeconds,
200
- disable_cache_fallback: input.disableCacheFallback
201
- };
202
- }
203
- function toExtractParams(input) {
204
- const params = { urls: input.urls };
205
- if (input.objective !== void 0) params.objective = input.objective;
206
- if (input.searchQueries !== void 0) params.search_queries = input.searchQueries;
207
- if (input.clientModel !== void 0) params.client_model = input.clientModel;
208
- if (input.maxCharsTotal !== void 0) params.max_chars_total = input.maxCharsTotal;
209
- if (input.sessionId !== void 0) params.session_id = input.sessionId;
210
- if (input.excerptMaxCharsPerResult !== void 0 || input.fullContent !== void 0 || input.fetchPolicy !== void 0) params.advanced_settings = {
211
- excerpt_settings: input.excerptMaxCharsPerResult === void 0 ? void 0 : { max_chars_per_result: input.excerptMaxCharsPerResult },
212
- full_content: typeof input.fullContent === "number" ? { max_chars_per_result: input.fullContent } : input.fullContent,
213
- fetch_policy: input.fetchPolicy === void 0 ? void 0 : toFetchPolicy(input.fetchPolicy)
214
- };
215
- return params;
216
- }
217
- function createParallelExtractTool(config) {
218
- const getClient = createLazyParallelClient(config);
219
- return createTool({
220
- id: "parallel-extract",
221
- description: "Extract relevant excerpts or full page content from URLs with Parallel. Returns successful results and per-URL errors.",
222
- inputSchema,
223
- outputSchema,
224
- execute: async (input) => {
225
- const response = await getClient().extract(toExtractParams(input));
226
- return {
227
- extractId: response.extract_id,
228
- sessionId: response.session_id,
229
- results: response.results.map((result) => ({
230
- url: result.url,
231
- title: result.title ?? void 0,
232
- publishDate: result.publish_date ?? void 0,
233
- excerpts: result.excerpts,
234
- fullContent: result.full_content ?? void 0
235
- })),
236
- errors: response.errors.map((error) => ({
237
- url: error.url,
238
- errorType: error.error_type,
239
- httpStatusCode: error.http_status_code ?? void 0,
240
- content: error.content ?? void 0
241
- })),
242
- usage: response.usage ?? void 0,
243
- warnings: response.warnings?.map((warning) => ({
244
- type: warning.type,
245
- message: warning.message,
246
- detail: warning.detail ?? void 0
247
- }))
248
- };
249
- }
250
- });
251
- }
252
- //#endregion
253
- //#region src/tools.ts
254
- function createParallelTools(config) {
255
- return {
256
- parallelSearch: createParallelSearchTool(config),
257
- parallelExtract: createParallelExtractTool(config)
258
- };
259
- }
260
- //#endregion
261
- export { createParallelExtractTool, createParallelSearchTool, createParallelTools, getParallelClient };
262
-
263
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["inputSchema","outputSchema","toFetchPolicy"],"sources":["../src/client.ts","../src/schemas.ts","../src/search.ts","../src/extract.ts","../src/tools.ts"],"sourcesContent":["import Parallel from 'parallel-web';\nimport type { ClientOptions } from 'parallel-web';\n\nexport type ParallelClientOptions = ClientOptions;\nexport type ParallelClient = Parallel;\n\nexport function getParallelClient(config?: ParallelClientOptions): ParallelClient {\n const apiKey = config?.apiKey ?? process.env.PARALLEL_API_KEY;\n if (!apiKey) {\n throw new Error('Parallel API key is required. Pass { apiKey } or set the PARALLEL_API_KEY environment variable.');\n }\n\n return new Parallel({ ...config, apiKey });\n}\n\nexport function createLazyParallelClient(config?: ParallelClientOptions): () => ParallelClient {\n let client: ParallelClient | undefined;\n\n return () => {\n client ??= getParallelClient(config);\n return client;\n };\n}\n","import { z } from 'zod';\n\nexport const usageItemSchema = z.object({\n name: z.string(),\n count: z.number(),\n});\n\nexport const warningSchema = z.object({\n type: z.string(),\n message: z.string(),\n detail: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const searchResultSchema = z.object({\n url: z.string(),\n title: z.string().optional(),\n publishDate: z.string().optional(),\n excerpts: z.array(z.string()),\n});\n\nexport const fetchPolicySchema = z.object({\n maxAgeSeconds: z\n .number()\n .int()\n .min(600)\n .optional()\n .describe('Maximum cached-content age in seconds before Parallel attempts a live fetch (minimum 600).'),\n timeoutSeconds: z.number().int().positive().optional().describe('Timeout in seconds for a live fetch.'),\n disableCacheFallback: z\n .boolean()\n .optional()\n .describe('Return an error instead of older cached content when a live fetch fails or times out.'),\n});\n\nexport type FetchPolicyInput = z.infer<typeof fetchPolicySchema>;\n","import { createTool } from '@mastra/core/tools';\nimport type Parallel from 'parallel-web';\nimport { z } from 'zod';\n\nimport { createLazyParallelClient } from './client.js';\nimport type { ParallelClientOptions } from './client.js';\nimport { fetchPolicySchema, searchResultSchema, usageItemSchema, warningSchema } from './schemas.js';\nimport type { FetchPolicyInput } from './schemas.js';\n\nconst ISO_3166_ALPHA_2_CODES = new Set(\n `AD AE AF AG AI AL AM AO AQ AR AS AT AU AW AX AZ\nBA BB BD BE BF BG BH BI BJ BL BM BN BO BQ BR BS BT BV BW BY BZ\nCA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CW CX CY CZ\nDE DJ DK DM DO DZ EC EE EG EH ER ES ET FI FJ FK FM FO FR\nGA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY\nHK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP\nKE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY\nMA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ\nNA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY\nQA RE RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR SS ST SV SX SY SZ\nTC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ\nVA VC VE VG VI VN VU WF WS YE YT ZA ZM ZW`\n .split(/\\s+/),\n);\n\nfunction isValidCalendarDate(value: string): boolean {\n const [yearText, monthText, dayText] = value.split('-');\n if (yearText === undefined || monthText === undefined || dayText === undefined) return false;\n\n const year = Number(yearText);\n const month = Number(monthText);\n const day = Number(dayText);\n const daysInMonth = [\n 31,\n year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) ? 29 : 28,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31,\n ];\n\n return month >= 1 && month <= 12 && day >= 1 && day <= daysInMonth[month - 1]!;\n}\n\nconst inputSchema = z\n .object({\n searchQueries: z\n .array(z.string().min(1))\n .min(1)\n .describe('Concise keyword search queries, ideally 3-6 words each. Provide 2-3 queries for best results.'),\n objective: z\n .string()\n .optional()\n .describe('A self-contained natural-language description of the goal driving the search.'),\n mode: z\n .enum(['turbo', 'fast', 'basic', 'advanced'])\n .optional()\n .describe('Search mode. Defaults to advanced when omitted.'),\n clientModel: z\n .string()\n .optional()\n .describe('Model that will consume the results, used by Parallel to tailor response defaults.'),\n maxResults: z.number().int().positive().optional().describe('Maximum number of results to return.'),\n excerptMaxCharsPerResult: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Maximum excerpt characters to return for each result.'),\n maxCharsTotal: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Maximum total excerpt characters across all results.'),\n location: z\n .string()\n .refine(value => ISO_3166_ALPHA_2_CODES.has(value.toUpperCase()), {\n message: 'location must be a valid ISO 3166-1 alpha-2 country code.',\n })\n .optional()\n .describe('ISO 3166-1 alpha-2 country code for geo-targeted results.'),\n includeDomains: z.array(z.string()).max(200).optional().describe('Only return results from these domains.'),\n excludeDomains: z.array(z.string()).max(200).optional().describe('Exclude results from these domains.'),\n afterDate: z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/)\n .refine(isValidCalendarDate, { message: 'afterDate must be a valid calendar date in YYYY-MM-DD format.' })\n .optional()\n .describe('Only return content published on or after this YYYY-MM-DD date.'),\n fetchPolicy: fetchPolicySchema.optional().describe('Live-fetch and cached-content policy for search results.'),\n sessionId: z.string().optional().describe('Session identifier shared across related Search and Extract calls.'),\n })\n .refine(input => (input.includeDomains?.length ?? 0) + (input.excludeDomains?.length ?? 0) <= 200, {\n message: 'includeDomains and excludeDomains can contain at most 200 domains combined.',\n path: ['includeDomains'],\n });\n\nconst outputSchema = z.object({\n searchId: z.string(),\n sessionId: z.string(),\n results: z.array(searchResultSchema),\n usage: z.array(usageItemSchema).optional(),\n warnings: z.array(warningSchema).optional(),\n});\n\ntype SearchInput = z.infer<typeof inputSchema>;\n\nfunction toFetchPolicy(input: FetchPolicyInput): Parallel.FetchPolicy {\n return {\n max_age_seconds: input.maxAgeSeconds,\n timeout_seconds: input.timeoutSeconds,\n disable_cache_fallback: input.disableCacheFallback,\n };\n}\n\nfunction toSearchParams(input: SearchInput): Parallel.SearchParams {\n const params: Parallel.SearchParams = {\n search_queries: input.searchQueries,\n };\n\n if (input.objective !== undefined) params.objective = input.objective;\n if (input.mode !== undefined) params.mode = input.mode;\n if (input.clientModel !== undefined) params.client_model = input.clientModel;\n if (input.maxCharsTotal !== undefined) params.max_chars_total = input.maxCharsTotal;\n if (input.sessionId !== undefined) params.session_id = input.sessionId;\n\n const sourcePolicy =\n input.includeDomains !== undefined || input.excludeDomains !== undefined || input.afterDate !== undefined\n ? {\n include_domains: input.includeDomains,\n exclude_domains: input.excludeDomains,\n after_date: input.afterDate,\n }\n : undefined;\n\n if (\n input.maxResults !== undefined ||\n input.excerptMaxCharsPerResult !== undefined ||\n input.location !== undefined ||\n sourcePolicy !== undefined ||\n input.fetchPolicy !== undefined\n ) {\n params.advanced_settings = {\n max_results: input.maxResults,\n excerpt_settings:\n input.excerptMaxCharsPerResult === undefined\n ? undefined\n : { max_chars_per_result: input.excerptMaxCharsPerResult },\n location: input.location,\n source_policy: sourcePolicy,\n fetch_policy: input.fetchPolicy === undefined ? undefined : toFetchPolicy(input.fetchPolicy),\n };\n }\n\n return params;\n}\n\nexport function createParallelSearchTool(config?: ParallelClientOptions) {\n const getClient = createLazyParallelClient(config);\n\n return createTool({\n id: 'parallel-search',\n description:\n 'Search the web with Parallel. Returns ranked URLs and token-efficient excerpts focused on the search objective.',\n inputSchema,\n outputSchema,\n execute: async input => {\n const response = await getClient().search(toSearchParams(input));\n\n return {\n searchId: response.search_id,\n sessionId: response.session_id,\n results: response.results.map(result => ({\n url: result.url,\n title: result.title ?? undefined,\n publishDate: result.publish_date ?? undefined,\n excerpts: result.excerpts,\n })),\n usage: response.usage ?? undefined,\n warnings: response.warnings?.map(warning => ({\n type: warning.type,\n message: warning.message,\n detail: warning.detail ?? undefined,\n })),\n };\n },\n });\n}\n","import { createTool } from '@mastra/core/tools';\nimport type Parallel from 'parallel-web';\nimport { z } from 'zod';\n\nimport { createLazyParallelClient } from './client.js';\nimport type { ParallelClientOptions } from './client.js';\nimport { fetchPolicySchema, usageItemSchema, warningSchema } from './schemas.js';\nimport type { FetchPolicyInput } from './schemas.js';\n\nconst inputSchema = z.object({\n urls: z.array(z.string().url()).min(1).max(20).describe('URLs to extract content from (1-20).'),\n objective: z\n .string()\n .optional()\n .describe('A natural-language description of the information to focus on while extracting.'),\n searchQueries: z\n .array(z.string().min(1))\n .min(1)\n .optional()\n .describe('Optional keyword queries used with the objective to focus excerpts.'),\n excerptMaxCharsPerResult: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Maximum excerpt characters to return for each URL.'),\n clientModel: z\n .string()\n .optional()\n .describe('Model that will consume the results, used by Parallel to tailor response defaults.'),\n fullContent: z\n .union([z.boolean(), z.number().int().positive()])\n .optional()\n .describe('Return full page content. Pass a character limit instead of true to cap content per URL.'),\n maxCharsTotal: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Maximum total characters across all extracted results.'),\n fetchPolicy: fetchPolicySchema.optional().describe('Live-fetch and cached-content policy for extracted URLs.'),\n sessionId: z.string().optional().describe('Session identifier shared across related Search and Extract calls.'),\n});\n\nconst outputSchema = z.object({\n extractId: z.string(),\n sessionId: z.string(),\n results: z.array(\n z.object({\n url: z.string(),\n title: z.string().optional(),\n publishDate: z.string().optional(),\n excerpts: z.array(z.string()),\n fullContent: z.string().optional(),\n }),\n ),\n errors: z.array(\n z.object({\n url: z.string(),\n errorType: z.string(),\n httpStatusCode: z.number().optional(),\n content: z.string().optional(),\n }),\n ),\n usage: z.array(usageItemSchema).optional(),\n warnings: z.array(warningSchema).optional(),\n});\n\ntype ExtractInput = z.infer<typeof inputSchema>;\n\nfunction toFetchPolicy(input: FetchPolicyInput): Parallel.FetchPolicy {\n return {\n max_age_seconds: input.maxAgeSeconds,\n timeout_seconds: input.timeoutSeconds,\n disable_cache_fallback: input.disableCacheFallback,\n };\n}\n\nfunction toExtractParams(input: ExtractInput): Parallel.ExtractParams {\n const params: Parallel.ExtractParams = {\n urls: input.urls,\n };\n\n if (input.objective !== undefined) params.objective = input.objective;\n if (input.searchQueries !== undefined) params.search_queries = input.searchQueries;\n if (input.clientModel !== undefined) params.client_model = input.clientModel;\n if (input.maxCharsTotal !== undefined) params.max_chars_total = input.maxCharsTotal;\n if (input.sessionId !== undefined) params.session_id = input.sessionId;\n\n if (\n input.excerptMaxCharsPerResult !== undefined ||\n input.fullContent !== undefined ||\n input.fetchPolicy !== undefined\n ) {\n params.advanced_settings = {\n excerpt_settings:\n input.excerptMaxCharsPerResult === undefined\n ? undefined\n : { max_chars_per_result: input.excerptMaxCharsPerResult },\n full_content:\n typeof input.fullContent === 'number' ? { max_chars_per_result: input.fullContent } : input.fullContent,\n fetch_policy: input.fetchPolicy === undefined ? undefined : toFetchPolicy(input.fetchPolicy),\n };\n }\n\n return params;\n}\n\nexport function createParallelExtractTool(config?: ParallelClientOptions) {\n const getClient = createLazyParallelClient(config);\n\n return createTool({\n id: 'parallel-extract',\n description:\n 'Extract relevant excerpts or full page content from URLs with Parallel. Returns successful results and per-URL errors.',\n inputSchema,\n outputSchema,\n execute: async input => {\n const response = await getClient().extract(toExtractParams(input));\n\n return {\n extractId: response.extract_id,\n sessionId: response.session_id,\n results: response.results.map(result => ({\n url: result.url,\n title: result.title ?? undefined,\n publishDate: result.publish_date ?? undefined,\n excerpts: result.excerpts,\n fullContent: result.full_content ?? undefined,\n })),\n errors: response.errors.map(error => ({\n url: error.url,\n errorType: error.error_type,\n httpStatusCode: error.http_status_code ?? undefined,\n content: error.content ?? undefined,\n })),\n usage: response.usage ?? undefined,\n warnings: response.warnings?.map(warning => ({\n type: warning.type,\n message: warning.message,\n detail: warning.detail ?? undefined,\n })),\n };\n },\n });\n}\n","import type { ParallelClientOptions } from './client.js';\nimport { createParallelExtractTool } from './extract.js';\nimport { createParallelSearchTool } from './search.js';\n\nexport function createParallelTools(config?: ParallelClientOptions) {\n return {\n parallelSearch: createParallelSearchTool(config),\n parallelExtract: createParallelExtractTool(config),\n };\n}\n"],"mappings":"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"}
package/dist/schemas.d.ts DELETED
@@ -1,23 +0,0 @@
1
- import { z } from 'zod';
2
- export declare const usageItemSchema: z.ZodObject<{
3
- name: z.ZodString;
4
- count: z.ZodNumber;
5
- }, z.core.$strip>;
6
- export declare const warningSchema: z.ZodObject<{
7
- type: z.ZodString;
8
- message: z.ZodString;
9
- detail: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
10
- }, z.core.$strip>;
11
- export declare const searchResultSchema: z.ZodObject<{
12
- url: z.ZodString;
13
- title: z.ZodOptional<z.ZodString>;
14
- publishDate: z.ZodOptional<z.ZodString>;
15
- excerpts: z.ZodArray<z.ZodString>;
16
- }, z.core.$strip>;
17
- export declare const fetchPolicySchema: z.ZodObject<{
18
- maxAgeSeconds: z.ZodOptional<z.ZodNumber>;
19
- timeoutSeconds: z.ZodOptional<z.ZodNumber>;
20
- disableCacheFallback: z.ZodOptional<z.ZodBoolean>;
21
- }, z.core.$strip>;
22
- export type FetchPolicyInput = z.infer<typeof fetchPolicySchema>;
23
- //# sourceMappingURL=schemas.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe;;;iBAG1B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;iBAIxB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;iBAK7B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;iBAY5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
package/dist/search.d.ts DELETED
@@ -1,39 +0,0 @@
1
- import type { ParallelClientOptions } from './client.js';
2
- export declare function createParallelSearchTool(config?: ParallelClientOptions): import("@mastra/core/tools").Tool<{
3
- searchQueries: string[];
4
- objective?: string | undefined;
5
- mode?: "turbo" | "fast" | "basic" | "advanced" | undefined;
6
- clientModel?: string | undefined;
7
- maxResults?: number | undefined;
8
- excerptMaxCharsPerResult?: number | undefined;
9
- maxCharsTotal?: number | undefined;
10
- location?: string | undefined;
11
- includeDomains?: string[] | undefined;
12
- excludeDomains?: string[] | undefined;
13
- afterDate?: string | undefined;
14
- fetchPolicy?: {
15
- maxAgeSeconds?: number | undefined;
16
- timeoutSeconds?: number | undefined;
17
- disableCacheFallback?: boolean | undefined;
18
- } | undefined;
19
- sessionId?: string | undefined;
20
- }, {
21
- searchId: string;
22
- sessionId: string;
23
- results: {
24
- url: string;
25
- excerpts: string[];
26
- title?: string | undefined;
27
- publishDate?: string | undefined;
28
- }[];
29
- usage?: {
30
- name: string;
31
- count: number;
32
- }[] | undefined;
33
- warnings?: {
34
- type: string;
35
- message: string;
36
- detail?: Record<string, unknown> | undefined;
37
- }[] | undefined;
38
- }, unknown, unknown, import("@mastra/core/tools").ToolExecutionContext<unknown, unknown, unknown>, "parallel-search", unknown>;
39
- //# sourceMappingURL=search.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AA+JzD,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+HA8BtE"}
package/dist/tools.d.ts DELETED
@@ -1,81 +0,0 @@
1
- import type { ParallelClientOptions } from './client.js';
2
- export declare function createParallelTools(config?: ParallelClientOptions): {
3
- parallelSearch: import("@mastra/core/tools").Tool<{
4
- searchQueries: string[];
5
- objective?: string | undefined;
6
- mode?: "turbo" | "fast" | "basic" | "advanced" | undefined;
7
- clientModel?: string | undefined;
8
- maxResults?: number | undefined;
9
- excerptMaxCharsPerResult?: number | undefined;
10
- maxCharsTotal?: number | undefined;
11
- location?: string | undefined;
12
- includeDomains?: string[] | undefined;
13
- excludeDomains?: string[] | undefined;
14
- afterDate?: string | undefined;
15
- fetchPolicy?: {
16
- maxAgeSeconds?: number | undefined;
17
- timeoutSeconds?: number | undefined;
18
- disableCacheFallback?: boolean | undefined;
19
- } | undefined;
20
- sessionId?: string | undefined;
21
- }, {
22
- searchId: string;
23
- sessionId: string;
24
- results: {
25
- url: string;
26
- excerpts: string[];
27
- title?: string | undefined;
28
- publishDate?: string | undefined;
29
- }[];
30
- usage?: {
31
- name: string;
32
- count: number;
33
- }[] | undefined;
34
- warnings?: {
35
- type: string;
36
- message: string;
37
- detail?: Record<string, unknown> | undefined;
38
- }[] | undefined;
39
- }, unknown, unknown, import("@mastra/core/tools").ToolExecutionContext<unknown, unknown, unknown>, "parallel-search", unknown>;
40
- parallelExtract: import("@mastra/core/tools").Tool<{
41
- urls: string[];
42
- objective?: string | undefined;
43
- searchQueries?: string[] | undefined;
44
- excerptMaxCharsPerResult?: number | undefined;
45
- clientModel?: string | undefined;
46
- fullContent?: number | boolean | undefined;
47
- maxCharsTotal?: number | undefined;
48
- fetchPolicy?: {
49
- maxAgeSeconds?: number | undefined;
50
- timeoutSeconds?: number | undefined;
51
- disableCacheFallback?: boolean | undefined;
52
- } | undefined;
53
- sessionId?: string | undefined;
54
- }, {
55
- extractId: string;
56
- sessionId: string;
57
- results: {
58
- url: string;
59
- excerpts: string[];
60
- title?: string | undefined;
61
- publishDate?: string | undefined;
62
- fullContent?: string | undefined;
63
- }[];
64
- errors: {
65
- url: string;
66
- errorType: string;
67
- httpStatusCode?: number | undefined;
68
- content?: string | undefined;
69
- }[];
70
- usage?: {
71
- name: string;
72
- count: number;
73
- }[] | undefined;
74
- warnings?: {
75
- type: string;
76
- message: string;
77
- detail?: Record<string, unknown> | undefined;
78
- }[] | undefined;
79
- }, unknown, unknown, import("@mastra/core/tools").ToolExecutionContext<unknown, unknown, unknown>, "parallel-extract", unknown>;
80
- };
81
- //# sourceMappingURL=tools.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAIzD,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKjE"}